Files
scriptc/tests/corpus/6850-node-island-shared-singleton/plugin.mjs
T
Malte UblandClaude 5.5 13c18782a6 Bind an exported function declaration into island shared modules
An exported function declaration is a mutable binding, so its module can
replace it; the hooks treated only `let` and `var` exports as live and
snapshotted the function, leaving island imports on the first function.
Bind function exports like `var`, and cover a reassigned function export
in the shared-singleton corpus program.

Co-Authored-By: Claude 5.5 <noreply@anthropic.com>
2026-10-27 19:14:14 -07:00

42 lines
1.0 KiB
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, describe } 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();
}
export function describeNow() {
return describe();
}