I hereby claim:
- I am josepedrodias on github.
- I am josepedrodias (https://keybase.io/josepedrodias) on keybase.
- I have a public key ASAK1PVQv74qCAcdG8fz1yGPHE1WIExSVThhfHRlFKzhfAo
To claim this, I am signing this object:
const fs = require('fs'); | |
const readline = require('readline'); | |
async function* readJsonlGen(filename) { | |
const lineReader = readline.createInterface({ | |
input: fs.createReadStream(filename), | |
}); | |
let i = 0; | |
for await (const line of lineReader) { |
function spy(fn, prot = fn.prototype) { | |
function proxy() { | |
const args = Array.prototype.slice.call(arguments); | |
proxy.calls.push(args); | |
proxy.called = true; | |
return fn.apply(this, args); | |
} | |
proxy.prototype = prot; |
I hereby claim:
To claim this, I am signing this object:
// yarn list --json > modules.json | |
const fs = require('fs'); | |
const O = require('./modules.json'); | |
function visit(o) { | |
if (typeof o === 'object' && o !== null) { | |
if (o instanceof Array) { | |
// change array (noop) |
// s1 contains all elements of s2 | |
function setContains(s1, s2) { | |
return new Set([...s2].every(x => s1.has(x))); | |
} | |
// elements in both s1 and s2 | |
function setIntersection(s1, s2) { | |
return new Set([...s1].filter(x => s2.has(x))); | |
} |
social twist:
jsonlines and similar formats where each payload is stored as unindented JSON chunks divided by newlines are great for complex systems.
My application is more to aid in exploring large JSON files and copying/pasting, chunks in the editor, therefore made this small JSON stringifier that breaks the 1st level of arrays and objects with newlines,while returning valid JSON.
The placement of commas is intentional. This way one can find the item, right, shift+end, copy.
jsonlishStringify([4,true,'yay'])
`[
4
So we we're using an API which returns a JSON response. One of its attributes is a numeric key. Due to historical reasons we're now being served longer number (longs) so the server, which is not based on JavaScript, started returning long integers.
I had heard about issues like this but hadn't cross against a real use case before.
So what started happening on our JavaScript clients (browser and React Native alike) is that the primitive value we get back once we get the fetch json promise resolved is an overflown number.
JavaScript engines commonly have the symbol Number.MAX_SAFE_INTEGER
so one can retrieve the number above which problems start to appear (it is 9007199254740991
).