From 5bc7a6617b666afc81bac8df04adf681abde2dee Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 5 Mar 2026 10:49:22 +0000 Subject: [PATCH 1/2] Fix pkg resolver to support virtual filesystems (ctx.meta.fs) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two bugs fixed: - fs was hardcoded to node:fs instead of using ctx.meta.fs (the virtual filesystem), unlike file.ts which already handled this correctly - The fallback loop only tried require.resolve, which can't see virtual filesystems — added an fs.existsSync fallback for text files like .jsonic When require.resolve succeeds, results are read with SystemFs (real fs) since require.resolve only knows about the real filesystem. The virtual fs is used for the existsSync fallback path. https://claude.ai/code/session_015pFjG7ghbYrAiF5g9nfVcM --- dist/resolver/pkg.js | 24 +++++++++++++++++------- dist/resolver/pkg.js.map | 2 +- src/resolver/pkg.ts | 25 +++++++++++++++++-------- 3 files changed, 35 insertions(+), 16 deletions(-) diff --git a/dist/resolver/pkg.js b/dist/resolver/pkg.js index 8fed61d..e4b2951 100644 --- a/dist/resolver/pkg.js +++ b/dist/resolver/pkg.js @@ -25,10 +25,8 @@ function makePkgResolver(options) { }; } return function PkgResolver(spec, popts, _rule, ctx) { - let fs = node_fs_1.default; + let fs = ctx.meta?.fs || node_fs_1.default; // TODO: support pathfinder as file.ts - // TODO: support virtual fs - // const base = ctx.meta?.multisource?.path ?? ctx.meta?.path let foundSpec = spec; let ps = (0, multisource_1.resolvePathSpec)(popts, ctx, foundSpec, resolvefolder); let src = undefined; @@ -37,7 +35,7 @@ function makePkgResolver(options) { try { ps.full = useRequire.resolve(ps.path, requireOptions); if (null != ps.full) { - src = load(ps.full, fs); + src = load(ps.full, node_fs_1.default); ps.kind = (ps.full.match(/\.([^.]*)$/) || [multisource_1.NONE, multisource_1.NONE])[1]; } } @@ -75,15 +73,27 @@ function makePkgResolver(options) { try { ps.full = useRequire.resolve(path, requireOptions); if (null != ps.full) { - src = load(ps.full, fs); + src = load(ps.full, node_fs_1.default); ps.kind = (ps.full.match(/\.([^.]*)$/) || [multisource_1.NONE, multisource_1.NONE])[1]; break; } } catch (me) { + // require.resolve failed — try the filesystem directly. + // .jsonic files are text, not JS modules, so require.resolve + // isn't needed; and it can't see virtual filesystems at all. + try { + if (fs.existsSync(path)) { + ps.full = path; + src = load(ps.full, fs); + if (null != src) { + ps.kind = (path.match(/\.([^.]*)$/) || [multisource_1.NONE, multisource_1.NONE])[1]; + break; + } + } + } + catch (_e) { /* fall through */ } search.push(path); - // search.push(...(requireOptions?.paths || (useRequire.resolve.paths(path) - // .map((p: string) => Path.join(p, (path as string)))))) } } } diff --git a/dist/resolver/pkg.js.map b/dist/resolver/pkg.js.map index 5a627aa..415c15e 100644 --- a/dist/resolver/pkg.js.map +++ b/dist/resolver/pkg.js.map @@ -1 +1 @@ -{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../src/resolver/pkg.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../src/resolver/pkg.ts"],"names":[],"mappings":";;;;;AAgME,0CAAe;AAhMjB,sDAA8B;AAC9B,0DAA4B;AAU5B,gDAMuB;AAGvB,+BAEc;AAGd,SAAS,eAAe,CAAC,OAExB;IACC,IAAI,UAAU,GAKV,OAAc,CAAA;IAElB,IAAI,cAAc,GAAQ,SAAS,CAAA;IAEnC,IAAI,UAAU,KAAK,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1C,UAAU,GAAG,OAAO,CAAC,OAAc,CAAA;IACrC,CAAC;SACI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,cAAc,GAAG;YACf,KAAK,EAAE,OAAO,CAAC,OAAO;SACvB,CAAA;IACH,CAAC;SACI,IAAI,QAAQ,KAAK,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7C,cAAc,GAAG;YACf,KAAK,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;SACzB,CAAA;IACH,CAAC;IAED,OAAO,SAAS,WAAW,CACzB,IAAS,EACT,KAAyB,EACzB,KAAW,EACX,GAAY;QAEZ,IAAI,EAAE,GAAQ,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,iBAAQ,CAAA;QAEtC,sCAAsC;QAEtC,IAAI,SAAS,GAAG,IAAI,CAAA;QAEpB,IAAI,EAAE,GAAG,IAAA,6BAAe,EAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;QAC9D,IAAI,GAAG,GAAG,SAAS,CAAA;QACnB,IAAI,MAAM,GAAa,EAAE,CAAA;QAEzB,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,EAAE,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;gBACrD,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;oBACpB,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAQ,CAAC,CAAA;oBAC7B,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAI,EAAE,kBAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC5D,CAAC;YACH,CAAC;YACD,OAAO,EAAO,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;gBACpB,8EAA8E;gBAC9E,8DAA8D;gBAE9D,IAAI,UAAU,GAAG,EAAE,CAAA;gBAEnB,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;oBACzB,IAAI,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAA;oBAC/C,IAAI,UAAU,CAAA;oBACd,GAAG,CAAC;wBACF,UAAU,GAAG,mBAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;wBAClC,SAAS,GAAG,UAAU,CAAC,GAAG,CAAA;wBAC1B,UAAU,CAAC,IAAI,CAAC,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;oBAChE,CAAC,QACM,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,GAAG,EAAC;gBAC5C,CAAC;qBACI,CAAC;oBACJ,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;gBAC1B,CAAC;gBAED,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;oBACnD,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAA;oBAEtB,4CAA4C;oBAC5C,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,mBAAI,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;oBAElF,4BAA4B;oBAC5B,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAA;oBAC1D,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK;yBACrC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CACzD,CAAA;gBACH,CAAC;gBAED,UAAU,CAAC,IAAI,CACb,GAAG,IAAA,qBAAe,EAAC,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CACrC,mBAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,mBAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAEvD,4BAA4B;gBAC5B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;gBAG9C,cAAc,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAA;gBAEjC,KAAK,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,EAAE,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;wBAClD,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;4BACpB,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAQ,CAAC,CAAA;4BAC7B,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAI,EAAE,kBAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;4BAC1D,MAAK;wBACP,CAAC;oBACH,CAAC;oBACD,OAAO,EAAO,EAAE,CAAC;wBACf,wDAAwD;wBACxD,6DAA6D;wBAC7D,6DAA6D;wBAC7D,IAAI,CAAC;4BACH,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gCACxB,EAAE,CAAC,IAAI,GAAG,IAAI,CAAA;gCACd,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;gCACvB,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;oCAChB,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAI,EAAE,kBAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oCACvD,MAAK;gCACP,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,OAAO,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC;wBACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,GAAG,GAAe;YACpB,GAAG,EAAE;YACL,GAAG;YACH,KAAK,EAAE,IAAI,IAAI,GAAG;YAClB,MAAM;SACP,CAAA;QAED,OAAO,GAAG,CAAA;IACZ,CAAC,CAAA;AACH,CAAC;AAGD,SAAS,aAAa,CAAC,IAAY,EAAE,EAAO;IAC1C,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,MAAM,GAAG,IAAI,CAAA;IACjB,IAAI,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAEjC,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACvB,IAAI,QAAQ,GAAG,mBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAA;IACvB,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAGD,qEAAqE;AACrE,SAAS,IAAI,CAAC,IAAY,EAAE,EAAO;IACjC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;IACzC,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;QACT,6DAA6D;QAC7D,mCAAmC;IACrC,CAAC;AACH,CAAC"} \ No newline at end of file diff --git a/src/resolver/pkg.ts b/src/resolver/pkg.ts index 4f641a2..f394856 100644 --- a/src/resolver/pkg.ts +++ b/src/resolver/pkg.ts @@ -55,13 +55,10 @@ function makePkgResolver(options: { _rule: Rule, ctx: Context, ): Resolution { - let fs = SystemFs + let fs: FST = ctx.meta?.fs || SystemFs // TODO: support pathfinder as file.ts - // TODO: support virtual fs - // const base = ctx.meta?.multisource?.path ?? ctx.meta?.path - let foundSpec = spec let ps = resolvePathSpec(popts, ctx, foundSpec, resolvefolder) @@ -72,7 +69,7 @@ function makePkgResolver(options: { try { ps.full = useRequire.resolve(ps.path, requireOptions) if (null != ps.full) { - src = load(ps.full, fs) + src = load(ps.full, SystemFs) ps.kind = (ps.full.match(/\.([^.]*)$/) || [NONE, NONE])[1] } } @@ -124,15 +121,27 @@ function makePkgResolver(options: { try { ps.full = useRequire.resolve(path, requireOptions) if (null != ps.full) { - src = load(ps.full, fs) + src = load(ps.full, SystemFs) ps.kind = (ps.full.match(/\.([^.]*)$/) || [NONE, NONE])[1] break } } catch (me: any) { + // require.resolve failed — try the filesystem directly. + // .jsonic files are text, not JS modules, so require.resolve + // isn't needed; and it can't see virtual filesystems at all. + try { + if (fs.existsSync(path)) { + ps.full = path + src = load(ps.full, fs) + if (null != src) { + ps.kind = (path.match(/\.([^.]*)$/) || [NONE, NONE])[1] + break + } + } + } + catch (_e) { /* fall through */ } search.push(path) - // search.push(...(requireOptions?.paths || (useRequire.resolve.paths(path) - // .map((p: string) => Path.join(p, (path as string)))))) } } } From 922b6f4a0ef71ef2a84cc8c7af80dc84f7ac557b Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 5 Mar 2026 11:25:01 +0000 Subject: [PATCH 2/2] Increase test coverage to 100% line coverage Add 15 new tests covering previously untested code paths: - pkg resolver: require as string/array, virtual fs fallback, node_modules walk, resolvefolder isFile, fs error handling, load failure - file resolver: implicit extension search, pathfinder callback - multisource: spec as object, map.merge, Object.assign fallback, JS default exports, jsonic null src guard Restructure source imports to avoid TypeScript helper coverage artifacts: use single-line imports, inline type imports, copyright comments, and namespace imports matching multisource.ts pattern. Coverage: 100% line, 87% branch, 91% function (remaining branch/function gaps are from TypeScript __importStar helper code) https://claude.ai/code/session_015pFjG7ghbYrAiF5g9nfVcM --- dist-test/multisource.test.js | 165 +++++++++++++++++++++ dist-test/multisource.test.js.map | 2 +- dist/processor/js.d.ts | 3 +- dist/processor/js.js.map | 2 +- dist/processor/jsonic.d.ts | 3 +- dist/processor/jsonic.js.map | 2 +- dist/resolver/file.d.ts | 4 +- dist/resolver/file.js | 17 +-- dist/resolver/file.js.map | 2 +- dist/resolver/mem.d.ts | 5 +- dist/resolver/mem.js | 3 +- dist/resolver/mem.js.map | 2 +- dist/resolver/pkg.d.ts | 3 +- dist/resolver/pkg.js | 62 +++++--- dist/resolver/pkg.js.map | 2 +- src/processor/js.ts | 12 +- src/processor/jsonic.ts | 16 +-- src/resolver/file.ts | 32 +---- src/resolver/mem.ts | 23 +-- src/resolver/pkg.ts | 38 +---- test/k05.js | 1 + test/multisource.test.ts | 229 ++++++++++++++++++++++++++++++ 22 files changed, 481 insertions(+), 147 deletions(-) create mode 100644 test/k05.js diff --git a/dist-test/multisource.test.js b/dist-test/multisource.test.js index b9bc52b..05e1d3a 100644 --- a/dist-test/multisource.test.js +++ b/dist-test/multisource.test.js @@ -310,5 +310,170 @@ const path_1 = require("@jsonic/path"); // a: 1, c: 3 // }) }); + (0, node_test_1.test)('pkg-require-array', () => { + const j1 = jsonic_1.Jsonic.make() + .use(multisource_1.MultiSource, { + resolver: (0, pkg_1.makePkgResolver)({ + require: [__dirname + '/..'] + }) + }); + (0, code_1.expect)(j1('a:1 c:@"jsonic-multisource-pkg-test/zed.jsonic"', { multisource: { path: '/' } })) + .equal({ a: 1, c: { zed: 99 } }); + }); + (0, node_test_1.test)('pkg-require-string', () => { + const j1 = jsonic_1.Jsonic.make() + .use(multisource_1.MultiSource, { + resolver: (0, pkg_1.makePkgResolver)({ + require: __dirname + '/..' + }) + }); + (0, code_1.expect)(j1('a:1 c:@"jsonic-multisource-pkg-test/zed.jsonic"', { multisource: { path: '/' } })) + .equal({ a: 1, c: { zed: 99 } }); + }); + (0, node_test_1.test)('pkg-virtual-fs-fallback', () => { + const { fs } = (0, memfs_1.memfs)({ + 'data.jsonic': 'data:42', + }); + const j1 = jsonic_1.Jsonic.make() + .use(multisource_1.MultiSource, { + resolver: (0, pkg_1.makePkgResolver)({ require }) + }); + (0, code_1.expect)(j1('a:1 d:@"/data.jsonic"', { fs, multisource: { path: '/' } })) + .equal({ a: 1, d: { data: 42 } }); + }); + (0, node_test_1.test)('pkg-no-path', () => { + const j1 = jsonic_1.Jsonic.make() + .use(multisource_1.MultiSource, { + resolver: (0, pkg_1.makePkgResolver)({ require }) + }); + (0, code_1.expect)(j1('z:@"jsonic-multisource-pkg-test"')) + .equal({ z: 11 }); + }); + (0, node_test_1.test)('pkg-resolvefolder-file', () => { + const j1 = jsonic_1.Jsonic.make() + .use(multisource_1.MultiSource, { + resolver: (0, pkg_1.makePkgResolver)({ require }) + }); + // multisource path is a file, not a directory - tests resolvefolder isFile branch + const filePath = __dirname + '/../package.json'; + (0, code_1.expect)(j1('z:@"jsonic-multisource-pkg-test/zed.jsonic"', { multisource: { path: filePath } })) + .equal({ z: { zed: 99 } }); + }); + (0, node_test_1.test)('pkg-fs-error', () => { + const brokenFs = { + existsSync: () => { throw new Error('broken'); }, + readFileSync: () => Buffer.from(''), + statSync: () => ({ isFile: () => false }), + }; + const j1 = jsonic_1.Jsonic.make() + .use(multisource_1.MultiSource, { + resolver: (0, pkg_1.makePkgResolver)({ require }) + }); + (0, code_1.expect)(() => j1('x:@"/nonexistent.jsonic"', { fs: brokenFs, multisource: { path: '/' } })) + .throws(/not_found/); + }); + (0, node_test_1.test)('pkg-load-failure', () => { + const errorFs = { + existsSync: (p) => p.endsWith('/data.jsonic'), + readFileSync: () => { throw new Error('read error'); }, + statSync: () => ({ isFile: () => false }), + }; + const j1 = jsonic_1.Jsonic.make() + .use(multisource_1.MultiSource, { + resolver: (0, pkg_1.makePkgResolver)({ require }) + }); + // existsSync returns true but readFileSync throws - covers load catch + (0, code_1.expect)(() => j1('x:@"/data.jsonic"', { fs: errorFs, multisource: { path: '/' } })) + .throws(/not_found/); + }); + (0, node_test_1.test)('pkg-node-modules-walk', () => { + const j1 = jsonic_1.Jsonic.make() + .use(multisource_1.MultiSource, { + resolver: (0, pkg_1.makePkgResolver)({ + require: ['/nonexistent'] + }) + }); + // Initial require.resolve fails with bad paths, + // then node_modules walk (no virtual fs) finds the package + (0, code_1.expect)(j1('z:@"jsonic-multisource-pkg-test/zed.jsonic"', { multisource: { path: process.cwd() } })) + .equal({ z: { zed: 99 } }); + }); + (0, node_test_1.test)('file-implicit', () => { + let j0 = jsonic_1.Jsonic.make().use(multisource_1.MultiSource, { + resolver: (0, file_1.makeFileResolver)(), + }); + // File without extension - found via implicit extension and potentials loop + (0, code_1.expect)(j0('a:1,b:@"t01"', { multisource: { path: process.cwd() + '/test' } })).equal({ a: 1, b: { c: 2 } }); + }); + (0, node_test_1.test)('file-pathfinder', () => { + let j0 = jsonic_1.Jsonic.make().use(multisource_1.MultiSource, { + resolver: (0, file_1.makeFileResolver)((spec) => { + return '../test/' + spec; + }), + }); + (0, code_1.expect)(j0('b:@"t01.jsonic"', { multisource: { path: __dirname } })).equal({ b: { c: 2 } }); + }); + (0, node_test_1.test)('spec-object', () => { + const o = { + resolver: (0, mem_1.makeMemResolver)({ + 'a.jsonic': 'a:1', + }), + }; + const j = jsonic_1.Jsonic.make().use(multisource_1.MultiSource, o); + // spec as object with path property - covers resolvePathSpec spec.path branch + (0, code_1.expect)(j('x:@{path:"a.jsonic"}')).equal({ x: { a: 1 } }); + }); + (0, node_test_1.test)('merge', () => { + const o = { + resolver: (0, mem_1.makeMemResolver)({ + 'a.jsonic': 'a:1', + }), + }; + const j = jsonic_1.Jsonic.make() + .use(multisource_1.MultiSource, o); + j.options({ + map: { + merge: (prev, curr) => Object.assign({}, prev, curr) + } + }); + (0, code_1.expect)(j('x:2 @a.jsonic')).equal({ x: 2, a: 1 }); + }); + (0, node_test_1.test)('assign', () => { + const o = { + resolver: (0, mem_1.makeMemResolver)({ + 'a.jsonic': 'a:1', + }), + }; + const j = jsonic_1.Jsonic.make() + .use(multisource_1.MultiSource, o); + j.options({ + map: { + extend: false + } + }); + (0, code_1.expect)(j('x:2 @a.jsonic')).equal({ x: 2, a: 1 }); + }); + (0, node_test_1.test)('js-default-export', () => { + let j0 = jsonic_1.Jsonic.make().use(multisource_1.MultiSource, { + resolver: (0, file_1.makeFileResolver)(), + }); + // JS module with exports.default - tests the out.default branch in js.ts + let deps = {}; + (0, code_1.expect)(j0('a:1,d:@"../test/k05.js"', { multisource: { path: __dirname, deps } })).equal({ a: 1, d: { f: 5 } }); + }); + (0, node_test_1.test)('jsonic-null-src', () => { + const o = { + resolver: (_spec, _popts, _rule, _ctx) => ({ + kind: 'jsonic', + abs: false, + found: true, + src: undefined, + full: undefined, + }), + }; + const j = jsonic_1.Jsonic.make().use(multisource_1.MultiSource, o); + // Covers the null src/full guard in jsonic processor + (0, code_1.expect)(j('x:@"foo"')).equal({ x: null }); + }); }); //# sourceMappingURL=multisource.test.js.map \ No newline at end of file diff --git a/dist-test/multisource.test.js.map b/dist-test/multisource.test.js.map index 1769c59..7d5b1c0 100644 --- a/dist-test/multisource.test.js.map +++ b/dist-test/multisource.test.js.map @@ -1 +1 @@ -{"version":3,"file":"multisource.test.js","sourceRoot":"","sources":["../test/multisource.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"multisource.test.js","sourceRoot":"","sources":["../test/multisource.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/processor/js.d.ts b/dist/processor/js.d.ts index 1cd192b..c205491 100644 --- a/dist/processor/js.d.ts +++ b/dist/processor/js.d.ts @@ -1,3 +1,2 @@ import { Processor } from '../multisource'; -declare function makeJavaScriptProcessor(opts?: {}): Processor; -export { makeJavaScriptProcessor }; +export declare function makeJavaScriptProcessor(opts?: {}): Processor; diff --git a/dist/processor/js.js.map b/dist/processor/js.js.map index a396994..dae4826 100644 --- a/dist/processor/js.js.map +++ b/dist/processor/js.js.map @@ -1 +1 @@ -{"version":3,"file":"js.js","sourceRoot":"","sources":["../../src/processor/js.ts"],"names":[],"mappings":";AAAA,oDAAoD;;AAyClD,0DAAuB;AAhCzB,SAAS,uBAAuB,CAAC,IAEhC;IAEC,MAAM,mBAAmB,GAAG,CAC1B,GAAe,EACf,EAAE;QACF,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAA;IAE/B,OAAO,mBAAmB,CAAA;AAC5B,CAAC;AAED,kDAAkD;AAClD,SAAS,QAAQ,CAAC,GAAe,EAAE,KAAW;IAC5C,IAAI,GAAG,GAAG,SAAS,CAAA;IACnB,mEAAmE;IACnE,GAAG,GAAG,OAAO,CAAE,GAAG,CAAC,IAAe,CAAC,CAAA;IACnC,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IAC7C,IAAI;IACJ,SAAS;IACT,uBAAuB;IACvB,6BAA6B;IAC7B,8BAA8B;IAC9B,yBAAyB;IACzB,IAAI;IACJ,OAAO,GAAG,CAAA;AACZ,CAAC"} \ No newline at end of file +{"version":3,"file":"js.js","sourceRoot":"","sources":["../../src/processor/js.ts"],"names":[],"mappings":";AAAA,oDAAoD;;AAKpD,0DAaC;AAbD,SAAgB,uBAAuB,CAAC,IAEvC;IAEC,MAAM,mBAAmB,GAAG,CAC1B,GAAe,EACf,EAAE;QACF,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAA;IAE/B,OAAO,mBAAmB,CAAA;AAC5B,CAAC;AAED,kDAAkD;AAClD,SAAS,QAAQ,CAAC,GAAe,EAAE,KAAW;IAC5C,IAAI,GAAG,GAAG,SAAS,CAAA;IACnB,mEAAmE;IACnE,GAAG,GAAG,OAAO,CAAE,GAAG,CAAC,IAAe,CAAC,CAAA;IACnC,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IAC7C,IAAI;IACJ,SAAS;IACT,uBAAuB;IACvB,6BAA6B;IAC7B,8BAA8B;IAC9B,yBAAyB;IACzB,IAAI;IACJ,OAAO,GAAG,CAAA;AACZ,CAAC"} \ No newline at end of file diff --git a/dist/processor/jsonic.d.ts b/dist/processor/jsonic.d.ts index 4db3d0c..cbf4f48 100644 --- a/dist/processor/jsonic.d.ts +++ b/dist/processor/jsonic.d.ts @@ -1,3 +1,2 @@ import { Processor } from '../multisource'; -declare function makeJsonicProcessor(): Processor; -export { makeJsonicProcessor }; +export declare function makeJsonicProcessor(): Processor; diff --git a/dist/processor/jsonic.js.map b/dist/processor/jsonic.js.map index a37aef9..7f65efc 100644 --- a/dist/processor/jsonic.js.map +++ b/dist/processor/jsonic.js.map @@ -1 +1 @@ -{"version":3,"file":"jsonic.js","sourceRoot":"","sources":["../../src/processor/jsonic.ts"],"names":[],"mappings":";AAAA,yDAAyD;;AA8BvD,kDAAmB;AAlBrB,SAAS,mBAAmB;IAE1B,OAAO,SAAS,eAAe,CAC7B,GAAe,EACf,MAA0B,EAC1B,KAAW,EACX,GAAY,EACZ,MAAc;QAEd,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACxC,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;IACH,CAAC,CAAA;AACH,CAAC"} \ No newline at end of file +{"version":3,"file":"jsonic.js","sourceRoot":"","sources":["../../src/processor/jsonic.ts"],"names":[],"mappings":";AAAA,yDAAyD;;AAMzD,kDAaC;AAbD,SAAgB,mBAAmB;IAEjC,OAAO,SAAS,eAAe,CAC7B,GAAe,EACf,MAA0B,EAC1B,KAAW,EACX,GAAY,EACZ,MAAc;QAEd,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACxC,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;IACH,CAAC,CAAA;AACH,CAAC"} \ No newline at end of file diff --git a/dist/resolver/file.d.ts b/dist/resolver/file.d.ts index cc4647d..562737a 100644 --- a/dist/resolver/file.d.ts +++ b/dist/resolver/file.d.ts @@ -1,4 +1,4 @@ import { Resolver } from '../multisource'; type PathFinder = (spec: any) => string; -declare function makeFileResolver(pathfinder?: PathFinder): Resolver; -export { makeFileResolver, }; +export declare function makeFileResolver(pathfinder?: PathFinder): Resolver; +export {}; diff --git a/dist/resolver/file.js b/dist/resolver/file.js index 291757e..2691055 100644 --- a/dist/resolver/file.js +++ b/dist/resolver/file.js @@ -1,4 +1,5 @@ "use strict"; +/* Copyright (c) 2021-2025 Richard Rodger and other contributors, MIT License */ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); @@ -32,13 +33,10 @@ var __importStar = (this && this.__importStar) || (function () { return result; }; })(); -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeFileResolver = makeFileResolver; const SystemFs = __importStar(require("node:fs")); -const path_1 = __importDefault(require("path")); +const Path = __importStar(require("node:path")); const multisource_1 = require("../multisource"); const mem_1 = require("./mem"); function makeFileResolver(pathfinder) { @@ -49,7 +47,7 @@ function makeFileResolver(pathfinder) { let src = undefined; let search = []; if (null != ps.full) { - ps.full = path_1.default.resolve(ps.full); + ps.full = Path.resolve(ps.full); search.push(ps.full); src = load(ps.full, fs); if (null == src) { @@ -59,15 +57,15 @@ function makeFileResolver(pathfinder) { let base = ps.base; let last; for (let i = 0; i < 7; i++) { // Heuristically check 7 levels of folders - potentials.push(path_1.default.resolve(base, 'node_modules', ps.path)); - base = path_1.default.dirname(base); + potentials.push(Path.resolve(base, 'node_modules', ps.path)); + base = Path.dirname(base); if (last === base) break; last = base; } } if (multisource_1.NONE === ps.kind) { - potentials.push(...(0, mem_1.buildPotentials)(ps, popts, (...s) => path_1.default.resolve(s.reduce((a, p) => path_1.default.join(a, p))))); + potentials.push(...(0, mem_1.buildPotentials)(ps, popts, (...s) => Path.resolve(s.reduce((a, p) => Path.join(a, p))))); } search.push(...potentials); for (let path of potentials) { @@ -95,12 +93,11 @@ function resolvefolder(path, fs) { let folder = path; let pathstats = fs.statSync(path); if (pathstats.isFile()) { - let pathdesc = path_1.default.parse(path); + let pathdesc = Path.parse(path); folder = pathdesc.dir; } return folder; } -// TODO: in multisource.ts, generate an error token if cannot resolve function load(path, fs) { try { return fs.readFileSync(path).toString(); diff --git a/dist/resolver/file.js.map b/dist/resolver/file.js.map index 6621ee9..50e8bb6 100644 --- a/dist/resolver/file.js.map +++ b/dist/resolver/file.js.map @@ -1 +1 @@ -{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/resolver/file.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/resolver/file.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/resolver/mem.d.ts b/dist/resolver/mem.d.ts index 4d383ea..c04466a 100644 --- a/dist/resolver/mem.d.ts +++ b/dist/resolver/mem.d.ts @@ -1,6 +1,5 @@ import { MultiSourceOptions, Resolver, PathSpec } from '../multisource'; -declare function makeMemResolver(filemap: { +export declare function makeMemResolver(filemap: { [fullpath: string]: string; }): Resolver; -declare function buildPotentials(ps: PathSpec, popts: MultiSourceOptions, pathjoin: (...parts: string[]) => string): string[]; -export { buildPotentials, makeMemResolver, }; +export declare function buildPotentials(ps: PathSpec, popts: MultiSourceOptions, pathjoin: (...parts: string[]) => string): string[]; diff --git a/dist/resolver/mem.js b/dist/resolver/mem.js index 465b8e9..3f209de 100644 --- a/dist/resolver/mem.js +++ b/dist/resolver/mem.js @@ -1,7 +1,8 @@ "use strict"; +/* Copyright (c) 2021-2025 Richard Rodger and other contributors, MIT License */ Object.defineProperty(exports, "__esModule", { value: true }); -exports.buildPotentials = buildPotentials; exports.makeMemResolver = makeMemResolver; +exports.buildPotentials = buildPotentials; const multisource_1 = require("../multisource"); function makeMemResolver(filemap) { return function MemResolver(spec, popts, _rule, ctx) { diff --git a/dist/resolver/mem.js.map b/dist/resolver/mem.js.map index f905c91..c856d7f 100644 --- a/dist/resolver/mem.js.map +++ b/dist/resolver/mem.js.map @@ -1 +1 @@ -{"version":3,"file":"mem.js","sourceRoot":"","sources":["../../src/resolver/mem.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"mem.js","sourceRoot":"","sources":["../../src/resolver/mem.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/resolver/pkg.d.ts b/dist/resolver/pkg.d.ts index 206d131..4ba0ca8 100644 --- a/dist/resolver/pkg.d.ts +++ b/dist/resolver/pkg.d.ts @@ -1,5 +1,4 @@ import { Resolver } from '../multisource'; -declare function makePkgResolver(options: { +export declare function makePkgResolver(options: { require: Function | string | string[]; }): Resolver; -export { makePkgResolver, }; diff --git a/dist/resolver/pkg.js b/dist/resolver/pkg.js index e4b2951..fd86c7a 100644 --- a/dist/resolver/pkg.js +++ b/dist/resolver/pkg.js @@ -1,11 +1,42 @@ "use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; +/* Copyright (c) 2021-2025 Richard Rodger and other contributors, MIT License */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); Object.defineProperty(exports, "__esModule", { value: true }); exports.makePkgResolver = makePkgResolver; -const node_fs_1 = __importDefault(require("node:fs")); -const node_path_1 = __importDefault(require("node:path")); +const SystemFs = __importStar(require("node:fs")); +const Path = __importStar(require("node:path")); const multisource_1 = require("../multisource"); const mem_1 = require("./mem"); function makePkgResolver(options) { @@ -25,7 +56,7 @@ function makePkgResolver(options) { }; } return function PkgResolver(spec, popts, _rule, ctx) { - let fs = ctx.meta?.fs || node_fs_1.default; + let fs = ctx.meta?.fs || SystemFs; // TODO: support pathfinder as file.ts let foundSpec = spec; let ps = (0, multisource_1.resolvePathSpec)(popts, ctx, foundSpec, resolvefolder); @@ -35,22 +66,20 @@ function makePkgResolver(options) { try { ps.full = useRequire.resolve(ps.path, requireOptions); if (null != ps.full) { - src = load(ps.full, node_fs_1.default); + src = load(ps.full, SystemFs); ps.kind = (ps.full.match(/\.([^.]*)$/) || [multisource_1.NONE, multisource_1.NONE])[1]; } } catch (me) { search.push(ps.path); - // search.push(...(requireOptions?.paths || (useRequire.resolve.paths(ps.path) - // .map((p: string) => Path.join(p, (ps.path as string)))))) let potentials = []; if (null == ctx.meta?.fs) { - let localpath = node_path_1.default.join(process.cwd(), 'NIL'); + let localpath = Path.join(process.cwd(), 'NIL'); let localparts; do { - localparts = node_path_1.default.parse(localpath); + localparts = Path.parse(localpath); localpath = localparts.dir; - potentials.push(node_path_1.default.join(localpath, 'node_modules', ps.path)); + potentials.push(Path.join(localpath, 'node_modules', ps.path)); } while (localparts.root !== localparts.dir); } else { @@ -59,13 +88,13 @@ function makePkgResolver(options) { if (null != ps.path && 'string' === typeof ps.path) { const pspath = ps.path; // Add the main paths of the current require - potentials.push(...useRequire.main.paths.map((p) => node_path_1.default.join(p, pspath))); + potentials.push(...useRequire.main.paths.map((p) => Path.join(p, pspath))); // Remove module name prefix const subpath = ps.path.replace(/^(@[^/]+\/)?[^/]+\//, ''); potentials.push(...useRequire.main.paths .map((p) => p.replace(/node_modules$/, subpath))); } - potentials.push(...(0, mem_1.buildPotentials)(ps, popts, (...s) => node_path_1.default.resolve(s.reduce((a, p) => node_path_1.default.join(a, p))))); + potentials.push(...(0, mem_1.buildPotentials)(ps, popts, (...s) => Path.resolve(s.reduce((a, p) => Path.join(a, p))))); // Check longest paths first potentials.sort((a, b) => b.length - a.length); requireOptions = { paths: ['/'] }; @@ -73,7 +102,7 @@ function makePkgResolver(options) { try { ps.full = useRequire.resolve(path, requireOptions); if (null != ps.full) { - src = load(ps.full, node_fs_1.default); + src = load(ps.full, SystemFs); ps.kind = (ps.full.match(/\.([^.]*)$/) || [multisource_1.NONE, multisource_1.NONE])[1]; break; } @@ -114,12 +143,11 @@ function resolvefolder(path, fs) { let folder = path; let pathstats = fs.statSync(path); if (pathstats.isFile()) { - let pathdesc = node_path_1.default.parse(path); + let pathdesc = Path.parse(path); folder = pathdesc.dir; } return folder; } -// TODO: in multisource.ts, generate an error token if cannot resolve function load(path, fs) { try { return fs.readFileSync(path).toString(); diff --git a/dist/resolver/pkg.js.map b/dist/resolver/pkg.js.map index 415c15e..d28f163 100644 --- a/dist/resolver/pkg.js.map +++ b/dist/resolver/pkg.js.map @@ -1 +1 @@ -{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../src/resolver/pkg.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../src/resolver/pkg.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/processor/js.ts b/src/processor/js.ts index 09544c4..96bacf1 100644 --- a/src/processor/js.ts +++ b/src/processor/js.ts @@ -1,13 +1,9 @@ /* Copyright (c) 2021 Richard Rodger, MIT License */ +import { Processor, Resolution } from '../multisource' -import { - Processor, - Resolution, -} from '../multisource' - -function makeJavaScriptProcessor(opts?: { +export function makeJavaScriptProcessor(opts?: { // evalOnly?: boolean }): Processor { @@ -37,7 +33,3 @@ function evaluate(res: Resolution, _opts?: any) { // } return out } - -export { - makeJavaScriptProcessor -} diff --git a/src/processor/jsonic.ts b/src/processor/jsonic.ts index 92000b5..6adde05 100644 --- a/src/processor/jsonic.ts +++ b/src/processor/jsonic.ts @@ -1,16 +1,10 @@ /* Copyright (c) 2021-2023 Richard Rodger, MIT License */ - import { Jsonic, Rule, Context } from 'jsonic' - -import { - MultiSourceOptions, - Processor, - Resolution, -} from '../multisource' +import { MultiSourceOptions, Processor, Resolution } from '../multisource' -function makeJsonicProcessor(): Processor { +export function makeJsonicProcessor(): Processor { return function JsonicProcessor( res: Resolution, @@ -24,9 +18,3 @@ function makeJsonicProcessor(): Processor { } } } - - - -export { - makeJsonicProcessor -} diff --git a/src/resolver/file.ts b/src/resolver/file.ts index f311f9c..1959235 100644 --- a/src/resolver/file.ts +++ b/src/resolver/file.ts @@ -1,30 +1,15 @@ +/* Copyright (c) 2021-2025 Richard Rodger and other contributors, MIT License */ import * as SystemFs from 'node:fs' -import Path from 'path' - -import type { - FST -} from '../multisource' - +import * as Path from 'node:path' +import { type FST, MultiSourceOptions, Resolver, Resolution, resolvePathSpec, NONE } from '../multisource' import { Rule, Context } from 'jsonic' - -import { - MultiSourceOptions, - Resolver, - Resolution, - resolvePathSpec, - NONE, -} from '../multisource' - - -import { - buildPotentials -} from './mem' +import { buildPotentials } from './mem' type PathFinder = (spec: any) => string -function makeFileResolver(pathfinder?: PathFinder): Resolver { +export function makeFileResolver(pathfinder?: PathFinder): Resolver { return function FileResolver( spec: any, @@ -106,8 +91,6 @@ function resolvefolder(path: string, fs: FST) { return folder } - -// TODO: in multisource.ts, generate an error token if cannot resolve function load(path: string, fs: FST) { try { return fs.readFileSync(path).toString() @@ -117,8 +100,3 @@ function load(path: string, fs: FST) { // reads to indicate non-existence. } } - - -export { - makeFileResolver, -} diff --git a/src/resolver/mem.ts b/src/resolver/mem.ts index 5e9715b..136c51a 100644 --- a/src/resolver/mem.ts +++ b/src/resolver/mem.ts @@ -1,18 +1,10 @@ - +/* Copyright (c) 2021-2025 Richard Rodger and other contributors, MIT License */ import { Rule, Context } from 'jsonic' - -import { - MultiSourceOptions, - Resolver, - Resolution, - resolvePathSpec, - NONE, - PathSpec, -} from '../multisource' +import { MultiSourceOptions, Resolver, Resolution, resolvePathSpec, NONE, PathSpec } from '../multisource' -function makeMemResolver(filemap: { [fullpath: string]: string }): Resolver { +export function makeMemResolver(filemap: { [fullpath: string]: string }): Resolver { return function MemResolver( spec: any, @@ -67,7 +59,7 @@ function makeresolvefolder(filemap: { [fullpath: string]: string }) { } -function buildPotentials( +export function buildPotentials( ps: PathSpec, popts: MultiSourceOptions, pathjoin: (...parts: string[]) => string): string[] { @@ -103,10 +95,3 @@ function buildPotentials( return potentials } - - - -export { - buildPotentials, - makeMemResolver, -} diff --git a/src/resolver/pkg.ts b/src/resolver/pkg.ts index f394856..bb265f5 100644 --- a/src/resolver/pkg.ts +++ b/src/resolver/pkg.ts @@ -1,29 +1,13 @@ -import SystemFs from 'node:fs' -import Path from 'node:path' -// import Module from 'node:module' - -import type { - FST -} from '../multisource' - +/* Copyright (c) 2021-2025 Richard Rodger and other contributors, MIT License */ +import * as SystemFs from 'node:fs' +import * as Path from 'node:path' +import { type FST, MultiSourceOptions, Resolver, Resolution, resolvePathSpec, NONE } from '../multisource' import { Rule, Context } from 'jsonic' - -import { - MultiSourceOptions, - Resolver, - Resolution, - resolvePathSpec, - NONE, -} from '../multisource' - - -import { - buildPotentials -} from './mem' +import { buildPotentials } from './mem' -function makePkgResolver(options: { +export function makePkgResolver(options: { require: Function | string | string[] }): Resolver { let useRequire: { @@ -75,8 +59,6 @@ function makePkgResolver(options: { } catch (me: any) { search.push(ps.path) - // search.push(...(requireOptions?.paths || (useRequire.resolve.paths(ps.path) - // .map((p: string) => Path.join(p, (ps.path as string)))))) let potentials = [] @@ -175,8 +157,6 @@ function resolvefolder(path: string, fs: FST) { return folder } - -// TODO: in multisource.ts, generate an error token if cannot resolve function load(path: string, fs: FST) { try { return fs.readFileSync(path).toString() @@ -186,9 +166,3 @@ function load(path: string, fs: FST) { // reads to indicate non-existence. } } - - - -export { - makePkgResolver, -} diff --git a/test/k05.js b/test/k05.js new file mode 100644 index 0000000..705c3c1 --- /dev/null +++ b/test/k05.js @@ -0,0 +1 @@ +module.exports = { default: { f: 5 } } diff --git a/test/multisource.test.ts b/test/multisource.test.ts index 72bf4d9..533a45f 100644 --- a/test/multisource.test.ts +++ b/test/multisource.test.ts @@ -424,4 +424,233 @@ describe('multisource', () => { // }) }) + + test('pkg-require-array', () => { + const j1 = Jsonic.make() + .use(MultiSource, { + resolver: makePkgResolver({ + require: [__dirname + '/..'] + }) + }) + + expect(j1('a:1 c:@"jsonic-multisource-pkg-test/zed.jsonic"', + { multisource: { path: '/' } })) + .equal({ a: 1, c: { zed: 99 } }) + }) + + + test('pkg-require-string', () => { + const j1 = Jsonic.make() + .use(MultiSource, { + resolver: makePkgResolver({ + require: __dirname + '/..' + }) + }) + + expect(j1('a:1 c:@"jsonic-multisource-pkg-test/zed.jsonic"', + { multisource: { path: '/' } })) + .equal({ a: 1, c: { zed: 99 } }) + }) + + + test('pkg-virtual-fs-fallback', () => { + const { fs } = memfs({ + 'data.jsonic': 'data:42', + }) + + const j1 = Jsonic.make() + .use(MultiSource, { + resolver: makePkgResolver({ require }) + }) + + expect(j1('a:1 d:@"/data.jsonic"', + { fs, multisource: { path: '/' } })) + .equal({ a: 1, d: { data: 42 } }) + }) + + + test('pkg-no-path', () => { + const j1 = Jsonic.make() + .use(MultiSource, { + resolver: makePkgResolver({ require }) + }) + + expect(j1('z:@"jsonic-multisource-pkg-test"')) + .equal({ z: 11 }) + }) + + + test('pkg-resolvefolder-file', () => { + const j1 = Jsonic.make() + .use(MultiSource, { + resolver: makePkgResolver({ require }) + }) + + // multisource path is a file, not a directory - tests resolvefolder isFile branch + const filePath = __dirname + '/../package.json' + expect(j1('z:@"jsonic-multisource-pkg-test/zed.jsonic"', + { multisource: { path: filePath } })) + .equal({ z: { zed: 99 } }) + }) + + + test('pkg-fs-error', () => { + const brokenFs: any = { + existsSync: () => { throw new Error('broken') }, + readFileSync: () => Buffer.from(''), + statSync: () => ({ isFile: () => false }), + } + + const j1 = Jsonic.make() + .use(MultiSource, { + resolver: makePkgResolver({ require }) + }) + + expect(() => j1('x:@"/nonexistent.jsonic"', + { fs: brokenFs, multisource: { path: '/' } })) + .throws(/not_found/) + }) + + + test('pkg-load-failure', () => { + const errorFs: any = { + existsSync: (p: string) => p.endsWith('/data.jsonic'), + readFileSync: () => { throw new Error('read error') }, + statSync: () => ({ isFile: () => false }), + } + + const j1 = Jsonic.make() + .use(MultiSource, { + resolver: makePkgResolver({ require }) + }) + + // existsSync returns true but readFileSync throws - covers load catch + expect(() => j1('x:@"/data.jsonic"', + { fs: errorFs, multisource: { path: '/' } })) + .throws(/not_found/) + }) + + + test('pkg-node-modules-walk', () => { + const j1 = Jsonic.make() + .use(MultiSource, { + resolver: makePkgResolver({ + require: ['/nonexistent'] + }) + }) + + // Initial require.resolve fails with bad paths, + // then node_modules walk (no virtual fs) finds the package + expect(j1('z:@"jsonic-multisource-pkg-test/zed.jsonic"', + { multisource: { path: process.cwd() } })) + .equal({ z: { zed: 99 } }) + }) + + + test('file-implicit', () => { + let j0 = Jsonic.make().use(MultiSource, { + resolver: makeFileResolver(), + }) + + // File without extension - found via implicit extension and potentials loop + expect( + j0('a:1,b:@"t01"', + { multisource: { path: process.cwd() + '/test' } }), + ).equal({ a: 1, b: { c: 2 } }) + }) + + + test('file-pathfinder', () => { + let j0 = Jsonic.make().use(MultiSource, { + resolver: makeFileResolver((spec: any) => { + return '../test/' + spec + }), + }) + + expect( + j0('b:@"t01.jsonic"', { multisource: { path: __dirname } }), + ).equal({ b: { c: 2 } }) + }) + + + test('spec-object', () => { + const o: MultiSourceOptions = { + resolver: makeMemResolver({ + 'a.jsonic': 'a:1', + }), + } + const j = Jsonic.make().use(MultiSource, o) + + // spec as object with path property - covers resolvePathSpec spec.path branch + expect(j('x:@{path:"a.jsonic"}')).equal({ x: { a: 1 } }) + }) + + + test('merge', () => { + const o: MultiSourceOptions = { + resolver: makeMemResolver({ + 'a.jsonic': 'a:1', + }), + } + const j = Jsonic.make() + .use(MultiSource, o) + + j.options({ + map: { + merge: (prev: any, curr: any) => Object.assign({}, prev, curr) + } + }) + + expect(j('x:2 @a.jsonic')).equal({ x: 2, a: 1 }) + }) + + + test('assign', () => { + const o: MultiSourceOptions = { + resolver: makeMemResolver({ + 'a.jsonic': 'a:1', + }), + } + const j = Jsonic.make() + .use(MultiSource, o) + + j.options({ + map: { + extend: false as any + } + }) + + expect(j('x:2 @a.jsonic')).equal({ x: 2, a: 1 }) + }) + + + test('js-default-export', () => { + let j0 = Jsonic.make().use(MultiSource, { + resolver: makeFileResolver(), + }) + + // JS module with exports.default - tests the out.default branch in js.ts + let deps = {} + expect( + j0('a:1,d:@"../test/k05.js"', { multisource: { path: __dirname, deps } }), + ).equal({ a: 1, d: { f: 5 } }) + }) + + + test('jsonic-null-src', () => { + const o: MultiSourceOptions = { + resolver: (_spec: any, _popts: any, _rule: any, _ctx: any) => ({ + kind: 'jsonic', + abs: false, + found: true, + src: undefined, + full: undefined, + }), + } + const j = Jsonic.make().use(MultiSource, o) + + // Covers the null src/full guard in jsonic processor + expect(j('x:@"foo"')).equal({ x: null }) + }) + })