singularity-forge/scripts/dist-test-resolve.mjs
ace-pm f92ee8d64c
Rename @sf-run/* → @singularity-forge/* package scope
- All 373 source files updated
- Package.json scopes in all workspace packages
- Loader workspace symlink dir updated
- RpcClient import unified from pi-coding-agent (fixes type mismatch)
- Scripts, configs, flake.nix updated
- Workspace symlinks rebuilt
2026-04-15 22:56:33 +02:00

46 lines
2 KiB
JavaScript

/**
* Minimal Node.js import hook for running tests from dist-test/.
*
* esbuild with bundle:false preserves import specifiers verbatim, so compiled
* .js files still import '../foo.ts'. This hook redirects those to '.js' so
* Node can find the compiled output.
*
* Also redirects @sf bare imports to their compiled counterparts in dist-test.
*/
import { fileURLToPath, pathToFileURL } from 'node:url';
import { existsSync } from 'node:fs';
import { join } from 'node:path';
// dist-test root — everything compiled lands here
const DIST_TEST = new URL('../dist-test/', import.meta.url).href;
// Absolute paths to compiled @singularity-forge/* entry points
const SF_ALIASES = {
'@singularity-forge/pi-coding-agent': new URL('../dist-test/packages/pi-coding-agent/src/index.js', import.meta.url).href,
'@singularity-forge/pi-ai/oauth': new URL('../dist-test/packages/pi-ai/src/utils/oauth/index.js', import.meta.url).href,
'@singularity-forge/pi-ai': new URL('../dist-test/packages/pi-ai/src/index.js', import.meta.url).href,
'@singularity-forge/pi-agent-core': new URL('../dist-test/packages/pi-agent-core/src/index.js', import.meta.url).href,
'@singularity-forge/pi-tui': new URL('../dist-test/packages/pi-tui/src/index.js', import.meta.url).href,
'@singularity-forge/native': new URL('../dist-test/packages/native/src/index.js', import.meta.url).href,
};
export function resolve(specifier, context, nextResolve) {
// 1. @singularity-forge/* bare imports → compiled dist-test counterpart
if (specifier in SF_ALIASES) {
return nextResolve(SF_ALIASES[specifier], context);
}
// 2. .ts relative imports inside dist-test → .js
if (
specifier.endsWith('.ts') &&
(specifier.startsWith('./') || specifier.startsWith('../')) &&
context.parentURL &&
context.parentURL.startsWith(DIST_TEST)
) {
const jsSpecifier = specifier.slice(0, -3) + '.js';
return nextResolve(jsSpecifier, context);
}
return nextResolve(specifier, context);
}