Files
scriptc/tests/corpus/process-builtin-values.js
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

47 lines
2.5 KiB
JavaScript

import { join, basename } from "node:path";
import { platform } from "node:os";
const load = process.getBuiltinModule;
console.log(typeof load, load === process.getBuiltinModule);
const copy = load;
console.log(copy === load, copy === process.getBuiltinModule);
try { copy(null); } catch (error) { console.log(error.code, error.message); }
function localLoader() {
const local = process.getBuiltinModule;
console.log(local === process.getBuiltinModule, local("missing"));
try { local(42); } catch (error) { console.log(error.code, error.message); }
var mutable = process.getBuiltinModule;
console.log(mutable === local);
try { mutable(); } catch (error) { console.log(error.code, error.message); }
mutable = (id) => "custom:" + id;
console.log(mutable("path"));
}
localLoader();
const path = load("path");
console.log(path === load("node:path"), path === load("path/posix"), path.win32 === load("path/win32"));
console.log(path.posix === path, path.win32.posix === path, path.win32.win32 === path.win32);
console.log(path.join("a", "b", "..", "c"), path.basename("/a/file.ts", ".ts"));
console.log(path.normalize("/a/../b"), path.dirname("/a/file.ts"), path.extname("a.ts"));
console.log(path.isAbsolute("/a"), path.relative("/a", "/a/b"));
console.log(path.win32.join("a", "b"), path.win32.isAbsolute("C:\\a"));
console.log(path.sep, path.delimiter, path.win32.sep, path.win32.delimiter);
const stored = path.join;
console.log(stored === path.join, stored === join, path.basename === basename, stored("a", "b"));
const original = path.basename;
path.basename = (name) => "changed:" + name;
console.log(load("path").basename("x"), original("/a/x"));
path.basename = original;
const os = load("os");
console.log(os.platform() === platform(), os === load("node:os"), typeof os.homedir(), typeof os.totalmem());
const worker = load("node:worker_threads");
console.log(worker === load("worker_threads"), worker.isMainThread, worker.isInternalThread, worker.threadId, worker.parentPort, worker.workerData);
console.log(load("missing"), load("node:missing"), load("node:node:path"), load("node:node:test"), load("./path"), load("test"));
for (const id of [undefined, null, 42, {}, [], true]) {
try { load(id); } catch (error) { console.log(error.name, error.code, error.message); }
}
let effects = "";
function extra() { effects += "e"; return 1; }
try { process.getBuiltinModule(null, extra()); } catch (error) { console.log(error.code, effects); }
function local(process) { return process.getBuiltinModule("custom"); }
console.log(local({ getBuiltinModule(name) { return name + "!"; } }));