mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-02 08:35:07 +08:00
- Keep cached native class instances callable, including inherited methods and JavaScript arguments. - Support plain-object Proxy traps with live receivers, enumeration, and data-property invariants. - Compile untyped addition, computed environment keys, and text-codec startup storage natively.
28 lines
1.0 KiB
JavaScript
28 lines
1.0 KiB
JavaScript
const name = JSON.parse('"SCRIPTC_COMPUTED_ENV"');
|
|
process.env[name] = "first";
|
|
console.log(process.env[name]);
|
|
process.env[name] = "second";
|
|
console.log(process.env.SCRIPTC_COMPUTED_ENV);
|
|
delete process.env[name];
|
|
console.log(process.env[name] === undefined);
|
|
process.env[918273] = "number";
|
|
process.env[true] = "boolean";
|
|
console.log(process.env[918273], process.env[true]);
|
|
delete process.env[918273];
|
|
delete process.env[true];
|
|
console.log(process.env[918273] === undefined, process.env[true] === undefined);
|
|
let calls = 0;
|
|
function key() { calls++; return name; }
|
|
process.env[key()] = "once";
|
|
console.log(process.env[key()], calls);
|
|
delete process.env[key()];
|
|
console.log(calls);
|
|
const objectKey = JSON.parse('{}');
|
|
objectKey.toString = () => { calls++; return "SCRIPTC_COERCED_ENV"; };
|
|
process.env[objectKey] = "coerced";
|
|
console.log(process.env[objectKey], calls);
|
|
delete process.env[objectKey];
|
|
objectKey.toString = () => { throw new Error("key failed"); };
|
|
try { console.log(process.env[objectKey]); }
|
|
catch (error) { console.log(error.message, calls); }
|