{"data":{"metadata":{"platform":"senf.in","chain":"a","seqNo":10,"timestamp":"2026-05-24T12:12:27Z","type":"user/post","payment":{"amount":1,"unit":"min"},"location":"https://www.rfc-editor.org/rfc/rfc8785#name-ecmascript-sample-canonical","previousCi":"907d9d6e5c8fe21d35393de6e8ade0d5eadf7eb323155b5fa4bc405487b0558a"},"content":{"data":"@https://www.rfc-editor.org/rfc/rfc8785#name-ecmascript-sample-canonical\nsenf.in 2026-05-24T12:11:17Z 1min\nThere is a bug in the ECMAScript Sample Canonicalizer. Properties of objects \nwith their own §` toJSON§` implementation will not be sorted.\n\n§\n\nTo fix it replace \n\n§\n\nwith \n\n§","signatures":[]}},"signatures":[{"signature":"JmzBGcgXhOs/UDVs1wJOku/rvaLEw60mOMD8tCPGr4VXyp1bgO2N0+tVBjxAiRjnOYZCBc395pqAXMeEq77xCg==","keyId":"8MKcAXiCKzwbthlZl5OAGkb8edlIsQ3t7leVsjO_a0A"}]} {"data":{"metadata":{"platform":"senf.in","chain":"a","seqNo":11,"timestamp":"2026-05-24T12:13:28Z","type":"user/post","payment":{"amount":1,"unit":"min"},"location":"https://peggyjs.org/documentation.html#grammar-syntax-and-semantics","previousCi":"8ab38a94fcee592e998de08d0e2a935190093dbda8e05c62c2fa8894636f3859"},"content":{"data":"@https://peggyjs.org/documentation.html#grammar-syntax-and-semantics\nsenf.in 2026-05-24T12:12:17Z 1min\nThe parser generated by Peggy for a context-free grammar §$G§$ does not\nnecessarily recognize §$ L(G)§$ as one might expect. For example:\n§\n\nThere seems to be no backtracking for a sequence of expressions, i.e.\nfor a rule §` X = Y Z§` the parser consumes the first match for §` Y§`\nand if the rest of the input does not match §` Z§` it fails to match\n§` X§` instead of trying to see if there is an alternative match for\n§` Y§`.\n\nIf the problematic rule is just an alternative of terminals as above\nit suffices to sort them in descending order:\n§\n\nThis ensures that no terminal in §` X§` is a prefix of any terminal\nthat comes after it thereby eliminating the need for backtracking.","signatures":[]}},"signatures":[{"signature":"VQMIZcSA90D2VeYjFq8SF/6dJg1203CDyoExNusY5xzeOnxj9q6hFyv/wNTbL8o8eWsv6CuPpGyMvhLbq6/NCg==","keyId":"8MKcAXiCKzwbthlZl5OAGkb8edlIsQ3t7leVsjO_a0A"}]} {"data":{"metadata":{"platform":"senf.in","chain":"a","seqNo":12,"timestamp":"2026-05-24T12:14:29Z","type":"user/post","payment":{"amount":1,"unit":"min"},"location":"https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams","previousCi":"a7177ffa563b632893de88131945502881ba4d157e1c1cb7f20502042336cb83"},"content":{"data":"@https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams\nsenf.in 2026-05-24T12:13:17Z 1min\nHere's an example of how to construct a §`javascript ReadableStream§` from an async generator function that yields byte arrays.\n\n§ {\n const res = await gen.next()\n if (res.done) controller.close()\n controller.enqueue(res.value)\n },\n type: \"bytes\"\n })\n}\n\nasync function* exampleGenerator(arr) {\n const te = new TextEncoder()\n for(const el of arr) {\n yield te.encode(el)\n }\n}\n\nconst rs = asyncGeneratorToStream(exampleGenerator([\"line1\",\"line2\"]))\n§>","signatures":[]}},"signatures":[{"signature":"M5nr/dpXt70RTwPO/ZWmfKlrMEIEuK5KIBFX+0ViNUHGRPFroNKA62DepBFmF9xqpopq8qBdN5dbjqVxq0RrDQ==","keyId":"8MKcAXiCKzwbthlZl5OAGkb8edlIsQ3t7leVsjO_a0A"}]}