mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-21 05:50:55 +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.
47 lines
2.5 KiB
JavaScript
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 + "!"; } }));
|