MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1function flightReviver(key, value) {
2 if (typeof value === 'string' && value[0] === '$' && value.length > 1) {
3 return {
4 ref: value,
5 holderIsArray: Array.isArray(this),
6 holderKeys: Object.keys(this).join(',')
7 };
8 }
9
10 return value;
11}
12
13const topLevelArray = JSON.parse('["$5","$8"]', flightReviver);
14console.log(`top0:${topLevelArray[0].ref}:${topLevelArray[0].holderIsArray}:${topLevelArray[0].holderKeys}`);
15console.log(`top1:${topLevelArray[1].ref}:${topLevelArray[1].holderIsArray}:${topLevelArray[1].holderKeys}`);
16
17const nested = JSON.parse('{"root":["$5","$8"]}', flightReviver);
18console.log(`nested0:${nested.root[0].ref}:${nested.root[0].holderIsArray}:${nested.root[0].holderKeys}`);
19console.log(`nested1:${nested.root[1].ref}:${nested.root[1].holderIsArray}:${nested.root[1].holderKeys}`);
20
21const escaped = JSON.parse('{"literal":"$$escaped"}', flightReviver);
22console.log(`escaped:${escaped.literal.ref || escaped.literal}`);