Files
scriptc/tests/corpus/checked-byte-storage/main.ts
Chris Tate f668fc4bfd Support native runtime values used by OpenTUI
- 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.
2026-09-28 19:01:50 -05:00

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));