@@ -9,8 +9,18 @@ import { resolveMinerVersion } from "./version.js";
99// this laptop set up correctly). Both are read-only and 100% local — no repo-scanning, no coding-agent invocation,
1010// no GitHub writes, and no network calls of any kind. Later phases add the real discover/plan/manage loop.
1111
12- const require = createRequire ( import . meta. url ) ;
13- const moduleDir = import . meta. dirname ;
12+ // Lazy, not module-scope: mirrors the gittensory-engine repo-map.ts fix -- this file is CLI-only today, but
13+ // an eager createRequire(import.meta.url)/import.meta.dirname at module scope would crash on import in any
14+ // bundler context where import.meta is unavailable (e.g. if a future import chain pulls this into a Worker
15+ // bundle, the way repo-map.ts was). Deferring construction to first real use keeps this import-safe.
16+ let cachedRequire = null ;
17+ function requireFromHere ( ) {
18+ return ( cachedRequire ??= createRequire ( import . meta. url ) ) ;
19+ }
20+ let cachedModuleDir = null ;
21+ function moduleDir ( ) {
22+ return ( cachedModuleDir ??= import . meta. dirname ) ;
23+ }
1424
1525const PACKAGE_NAME = "@jsonbored/gittensory-miner" ;
1626const ENGINE_PACKAGE = "@jsonbored/gittensory-engine" ;
@@ -40,7 +50,7 @@ export function resolveMinerStateDir(env = process.env) {
4050// be absent depending on build order, so the declared-dependency version is the reliable, always-available source.)
4151function readEngineVersion ( ) {
4252 try {
43- return require ( "../package.json" ) . dependencies ?. [ ENGINE_PACKAGE ] ?? null ;
53+ return requireFromHere ( ) ( "../package.json" ) . dependencies ?. [ ENGINE_PACKAGE ] ?? null ;
4454 } catch {
4555 return null ;
4656 }
@@ -75,11 +85,11 @@ export function readInstalledEnginePackageVersionFromPaths(
7585export function readInstalledEnginePackageVersion ( ) {
7686 try {
7787 return readInstalledEnginePackageVersionFromPaths (
78- require . resolve ( ENGINE_PACKAGE ) ,
79- join ( moduleDir , "../../gittensory-engine/package.json" ) ,
88+ requireFromHere ( ) . resolve ( ENGINE_PACKAGE ) ,
89+ join ( moduleDir ( ) , "../../gittensory-engine/package.json" ) ,
8090 ) ;
8191 } catch {
82- const workspacePkg = join ( moduleDir , "../../gittensory-engine/package.json" ) ;
92+ const workspacePkg = join ( moduleDir ( ) , "../../gittensory-engine/package.json" ) ;
8393 if ( existsSync ( workspacePkg ) ) {
8494 try {
8595 return JSON . parse ( readFileSync ( workspacePkg , "utf8" ) ) . version ?? null ;
@@ -114,8 +124,8 @@ export function readExpectedEnginePackageVersionFromPaths(
114124
115125export function readExpectedEnginePackageVersion ( ) {
116126 return readExpectedEnginePackageVersionFromPaths (
117- join ( moduleDir , "../../gittensory-engine/package.json" ) ,
118- join ( moduleDir , "../expected-engine.version" ) ,
127+ join ( moduleDir ( ) , "../../gittensory-engine/package.json" ) ,
128+ join ( moduleDir ( ) , "../expected-engine.version" ) ,
119129 ) ;
120130}
121131
@@ -170,7 +180,7 @@ function checkEngineVersionSkew() {
170180
171181/** The minimum Node major version from the package's `engines.node` floor (e.g. ">=22.13.0" → 22). */
172182function requiredNodeMajor ( ) {
173- const engines = require ( "../package.json" ) . engines ;
183+ const engines = requireFromHere ( ) ( "../package.json" ) . engines ;
174184 const match = typeof engines ?. node === "string" ? engines . node . match ( / ( \d + ) / ) : null ;
175185 return match ? Number ( match [ 1 ] ) : 0 ;
176186}
0 commit comments