mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-23 06:10:02 +08:00
- Add shared ArrayBuffer storage and native Unicode grapheme segmentation. - Preserve builtin modules, globals, and byte views across JavaScript bindings. - Compile package initialization expressions and optional native callables.
33 lines
1.3 KiB
TypeScript
33 lines
1.3 KiB
TypeScript
import { alias, metadata, subarray, slice, change, same, clone, describe, coerceWrites } from "./values.js";
|
|
|
|
const storage = new ArrayBuffer(12);
|
|
const bytes = new Uint8Array(storage, 3, 6);
|
|
bytes[0] = 11;
|
|
const stored: Uint8Array = alias(bytes);
|
|
console.log(stored === bytes, same(bytes, bytes), same(bytes, bytes.subarray(0)));
|
|
metadata(stored, storage);
|
|
change(stored, 0, 37);
|
|
console.log(bytes[0], stored[0]);
|
|
const view: Uint8Array = subarray(stored, 1, 4);
|
|
console.log(view.byteOffset, view.byteLength, view.buffer === storage);
|
|
view[0] = 19;
|
|
console.log(bytes[1]);
|
|
const independent: Uint8Array = slice(stored, 1, 4);
|
|
independent[0] = 99;
|
|
console.log(independent.buffer !== storage, bytes[1], independent[0]);
|
|
const copied: Uint8Array = clone(stored);
|
|
copied[0] = 55;
|
|
console.log(copied !== bytes, copied.buffer !== storage, bytes[0], copied[0]);
|
|
const buffer = Buffer.alloc(6);
|
|
buffer[0] = 3;
|
|
const bufferView: Uint8Array = slice(buffer, 0, 2);
|
|
bufferView[0] = 17;
|
|
console.log(buffer[0], bufferView[0]);
|
|
const retained: Uint8Array = alias(new Uint8Array([4, 5, 6]));
|
|
console.log(retained[0], retained[1], retained[2]);
|
|
coerceWrites(retained);
|
|
describe(Buffer.from("hi"));
|
|
describe(new Uint8Array([104, 105]));
|
|
describe(clone(Buffer.from("hi")));
|
|
describe(slice(Buffer.from("hi"), 0, 1));
|