Files
scriptc/tests/corpus/6850-node-island-shared-singleton/plugin.mjs
T
Malte UblandClaude Opus 5.5 5fa44d9243 Share modules between a program and its Node islands through loader hooks (NI-6)
Node islands stack, part 5 of 11 (scriptc-perf/results/islands-prs/PLAN.md).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 18:49:53 -07:00

38 lines
1008 B
JavaScript

// Island code (loaded with requireModule): imports the shared module by
// named imports, by namespace, and through require().
import { createRequire } from "node:module";
import * as ns from "./state.mjs";
import { config, count, entries, record } from "./state.mjs";
const require = createRequire(import.meta.url);
record("island-1");
export const startup = `count=${count} ns=${ns.count} entries=${entries()}`;
export function report() {
return `count=${count} ns=${ns.count} entries=${entries()}`;
}
export function bump(name) {
const before = count;
const after = record(name);
return `${before}->${after} live=${count}`;
}
export function configure(mode) {
config.mode = mode;
}
export function describeConfig() {
return `${config.mode}/${config.owner}`;
}
export function sameRecord(fn) {
return fn === record && fn === ns.record;
}
export function requireSees() {
const viaRequire = require("./state.mjs");
return viaRequire === ns && viaRequire.entries() === entries();
}