@jsonic/multisource 1.9.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/multisource.d.ts +4 -2
- package/dist/multisource.js +37 -3
- package/dist/multisource.js.map +1 -1
- package/dist/resolver/file.js +43 -9
- package/dist/resolver/file.js.map +1 -1
- package/dist/resolver/mem.js +0 -3
- package/dist/resolver/mem.js.map +1 -1
- package/dist/resolver/pkg.d.ts +3 -1
- package/dist/resolver/pkg.js +27 -18
- package/dist/resolver/pkg.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/src/multisource.ts +10 -3
- package/src/resolver/file.ts +15 -9
- package/src/resolver/mem.ts +0 -4
- package/src/resolver/pkg.ts +45 -19
package/dist/multisource.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import * as SystemFs from 'node:fs';
|
|
1
2
|
import { Jsonic, Context, Rule, Plugin } from 'jsonic';
|
|
3
|
+
type FST = typeof SystemFs;
|
|
2
4
|
interface MultiSourceMeta {
|
|
3
5
|
path?: string;
|
|
4
6
|
parents?: string[];
|
|
@@ -41,9 +43,9 @@ type DependencyMap = {
|
|
|
41
43
|
};
|
|
42
44
|
declare const TOP: unique symbol;
|
|
43
45
|
declare const MultiSource: Plugin;
|
|
44
|
-
declare function resolvePathSpec(popts: MultiSourceOptions, ctx: Context, spec: any, resolvefolder: (path: string) => string): PathSpec;
|
|
46
|
+
declare function resolvePathSpec(popts: MultiSourceOptions, ctx: Context, spec: any, resolvefolder: (path: string, fs: FST) => string): PathSpec;
|
|
45
47
|
declare const meta: {
|
|
46
48
|
name: string;
|
|
47
49
|
};
|
|
48
|
-
export type { Resolver, Resolution, Processor, MultiSourceOptions, Dependency, DependencyMap, MultiSourceMeta, PathSpec, };
|
|
50
|
+
export type { Resolver, Resolution, Processor, MultiSourceOptions, Dependency, DependencyMap, MultiSourceMeta, PathSpec, FST, };
|
|
49
51
|
export { MultiSource, resolvePathSpec, NONE, TOP, meta };
|
package/dist/multisource.js
CHANGED
|
@@ -1,8 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/* Copyright (c)
|
|
2
|
+
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
3
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
37
|
exports.meta = exports.TOP = exports.NONE = exports.MultiSource = void 0;
|
|
5
38
|
exports.resolvePathSpec = resolvePathSpec;
|
|
39
|
+
const SystemFs = __importStar(require("node:fs"));
|
|
6
40
|
const jsonic_1 = require("jsonic");
|
|
7
41
|
const directive_1 = require("@jsonic/directive");
|
|
8
42
|
const jsonic_2 = require("./processor/jsonic");
|
|
@@ -96,7 +130,6 @@ const MultiSource = (jsonic, popts) => {
|
|
|
96
130
|
meta,
|
|
97
131
|
};
|
|
98
132
|
let proc = processor[res.kind] || processor[NONE];
|
|
99
|
-
// console.log('FROM', from, 'PROC', proc, processor, ctxproc.meta)
|
|
100
133
|
proc(res, popts, rule, ctxproc, jsonic);
|
|
101
134
|
// Handle the {@foo} case, injecting keys into parent map.
|
|
102
135
|
if ('pair' === from) {
|
|
@@ -187,8 +220,9 @@ MultiSource.defaults = {
|
|
|
187
220
|
implictExt: ['jsonic', 'jsc', 'json', 'js'],
|
|
188
221
|
};
|
|
189
222
|
function resolvePathSpec(popts, ctx, spec, resolvefolder) {
|
|
223
|
+
const fs = ctx.meta?.fs || SystemFs;
|
|
190
224
|
let msmeta = ctx.meta?.multisource;
|
|
191
|
-
let base = resolvefolder(null == msmeta || null == msmeta.path ? popts.path : msmeta.path);
|
|
225
|
+
let base = resolvefolder(null == msmeta || null == msmeta.path ? popts.path : msmeta.path, fs);
|
|
192
226
|
let path = 'string' === typeof spec
|
|
193
227
|
? spec
|
|
194
228
|
: null != spec.path
|
package/dist/multisource.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multisource.js","sourceRoot":"","sources":["../src/multisource.ts"],"names":[],"mappings":";AAAA,oDAAoD
|
|
1
|
+
{"version":3,"file":"multisource.js","sourceRoot":"","sources":["../src/multisource.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6V9B,0CAAe;AA3VrC,kDAAmC;AAEnC,mCAAsD;AACtD,iDAA+D;AAE/D,+CAAwD;AACxD,uCAAwD;AAaxD,2CAA2C;AAC3C,MAAM,IAAI,GAAG,EAAE,CAAA;AAuUwB,oBAAI;AA5Q3C,kCAAkC;AAClC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;AA2QoB,kBAAG;AAzQhD,MAAM,WAAW,GAAW,CAAC,MAAc,EAAE,KAAyB,EAAE,EAAE;IACxE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAkB,CAAA;IACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAoB,CAAA;IAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,SAA0C,CAAA;IAElE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,CAAA;IAE5B,mDAAmD;IACnD,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAa,CAAA;IACvD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QACpD,IAAI,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAC1B,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAA;IAC1D,CAAC;IAED,MAAM,CAAC,OAAO,CAAC;QACb,KAAK,EAAE;YACL,qBAAqB,EAAE,0BAA0B;SAClD;QACD,IAAI,EAAE;YACJ,4DAA4D;YAC5D,gDAAgD;YAChD,qBAAqB,EACnB,qEAAqE;SACxE;KACF,CAAC,CAAA;IAEF,kEAAkE;IAClE,IAAI,KAAK,GAAqB;QAC5B,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,GAAG,EAAE,EAAE;gBACP,IAAI,EAAE;oBACJ,CAAC,EAAE,CAAC,CAAO,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;iBAC5B;aACF;SACF;QACD,MAAM,EAAE,SAAS,sBAAsB,CAAC,IAAU,EAAE,GAAY;YAC9D,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;YAC3B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;YAE1B,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;YAElD,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,uBAAuB,EAAE;oBAClD,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;oBACd,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;iBACnD,CAAC,CAAA;YACJ,CAAC;YAED,IAAI,QAAQ,GACV,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;YAEvE,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAA;YAE7C,2BAA2B;YAC3B,IAAI,MAAM,GAAoB,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAA;YACzD,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;YAClC,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC3B,CAAC;YAED,IAAI,IAAI,GAAQ;gBACd,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;gBACnB,QAAQ,EAAE,GAAG,CAAC,IAAI;gBAClB,WAAW,EAAE;oBACX,GAAG,MAAM;oBACT,OAAO;oBACP,IAAI,EAAE,GAAG,CAAC,IAAI;iBACf;aACF,CAAA;YAED,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;YAC5C,CAAC;YAED,gCAAgC;YAChC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,IAAI,MAAM,GAAG,MAAM,CAAC,IAAqB,CAAA;gBACzC,IAAI,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAW,CAAA;gBAC3C,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;oBACnB,IAAI,GAAG,GAAe;wBACpB,GAAG,EAAE,MAAM;wBACX,GAAG,EAAE,QAAQ;wBACb,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;qBAChB,CAAA;oBACD,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;oBACrC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAA;gBAChC,CAAC;YACH,CAAC;YAED,kBAAkB;YAClB,IAAI,OAAO,GAAG;gBACZ,GAAG,GAAG;gBACN,IAAI;aACL,CAAA;YAED,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;YACjD,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;YAEvC,0DAA0D;YAC1D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oBACtB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EACvB,GAAG,CAAC,GAAG,EACP,IAAI,EACJ,GAAG,CACJ,CAAA;gBACH,CAAC;qBAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;oBAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;gBAClE,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;gBAC1C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAA;YACrB,CAAC;YAED,sBAAsB;YAEtB,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,MAAM,EAAE,CAAC,MAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAO,EAAE,EAAE;YAC9C,yDAAyD;YACzD,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;gBACxB,EAAE,CAAC,IAAI,CAAC;oBACN;wBACE,CAAC,EAAE,CAAC,IAAI,CAAC;wBACT,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI;wBAC/C,CAAC,EAAE,CAAC;wBACJ,CAAC,EAAE,IAAI,GAAG,SAAS;qBACpB;oBACD,AADE;oBAEF;wBACE,CAAC,EAAE,CAAC,IAAI,CAAC;wBACT,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;wBACnB,CAAC,EAAE,KAAK;wBACR,CAAC,EAAE,CAAC;wBACJ,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE;qBAC1B;iBAAC,CACH,CAAA;YACH,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;gBACxB,EAAE,CAAC,IAAI,CAAC;oBACN,CAAC,EAAE,CAAC,IAAI,CAAC;oBACT,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;oBAC/C,CAAC,EAAE,MAAM;oBACT,CAAC,EAAE,CAAC;iBACL,CAAC,CAAC,KAAK,CAAC;oBACP,CAAC,EAAE,CAAC,IAAI,CAAC;oBACT,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;oBACpB,CAAC,EAAE,CAAC;oBACJ,CAAC,EAAE,IAAI,GAAG,SAAS;iBACpB,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;gBACzB,EAAE,CAAC,KAAK,CAAC;oBACP,CAAC,EAAE,CAAC,IAAI,CAAC;oBACT,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;oBACpB,CAAC,EAAE,CAAC;oBACJ,CAAC,EAAE,IAAI,GAAG,SAAS;iBACpB,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QAEJ,CAAC;KACF,CAAA;IAED,MAAM,CAAC,GAAG,CAAC,qBAAS,EAAE,KAAK,CAAC,CAAA;AAC9B,CAAC,CAAA;AA6FQ,kCAAW;AA3FpB,mCAAmC;AACnC,SAAS,aAAa,CAAC,OAA8C;IACnE,OAAO,CAAC,GAAe,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAa,EAAE,GAAG,CAAC,CAAC,CAAA;AACzE,CAAC;AAED,uDAAuD;AACvD,MAAM,gBAAgB,GAAG,aAAa,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;AAE5D,MAAM,gBAAgB,GAAG,eAAM,CAAC,IAAI,CAAC,MAAa,CAAC,CAAA;AAEnD,kDAAkD;AAClD,MAAM,aAAa,GAAG,aAAa,CAAC,CAAC,GAAW,EAAE,GAAe,EAAE,EAAE;AACnE,4CAA4C;AAC5C,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CACxE,CAAA;AAED,MAAM,eAAe,GAAG,IAAA,4BAAmB,GAAE,CAAA;AAC7C,MAAM,WAAW,GAAG,IAAA,4BAAuB,GAAE,CAAA;AAE7C,WAAW,CAAC,QAAQ,GAAG;IACrB,QAAQ,EAAE,GAAG;IACb,SAAS,EAAE;QACT,CAAC,IAAI,CAAC,EAAE,gBAAgB;QACxB,MAAM,EAAE,eAAe;QACvB,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,aAAa;QACnB,EAAE,EAAE,WAAW;KAChB;IACD,UAAU,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;CAC5C,CAAA;AAED,SAAS,eAAe,CACtB,KAAyB,EACzB,GAAY,EACZ,IAAS,EACT,aAAgD;IAEhD,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,QAAQ,CAAA;IACnC,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,WAAW,CAAA;IAClC,IAAI,IAAI,GAAG,aAAa,CACtB,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAChE,EAAE,CACH,CAAA;IAED,IAAI,IAAI,GACN,QAAQ,KAAK,OAAO,IAAI;QACtB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;YACjB,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI;YAChB,CAAC,CAAC,SAAS,CAAA;IAEjB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7D,IAAI,IAAI,GAAG,GAAG;QACZ,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI;YAC1B,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI;gBAC1B,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI;gBACnB,CAAC,CAAC,IAAI;YACR,CAAC,CAAC,SAAS,CAAA;IAEf,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE9E,IAAI,GAAG,GAAe;QACpB,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,KAAK,EAAE,KAAK;KACb,CAAA;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,mBAAmB;AACnB,MAAM,IAAI,GAAG;IACX,IAAI,EAAE,aAAa;CACpB,CAAA;AAciD,oBAAI"}
|
package/dist/resolver/file.js
CHANGED
|
@@ -1,28 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
39
|
exports.makeFileResolver = makeFileResolver;
|
|
7
|
-
const
|
|
40
|
+
const SystemFs = __importStar(require("node:fs"));
|
|
8
41
|
const path_1 = __importDefault(require("path"));
|
|
9
42
|
const multisource_1 = require("../multisource");
|
|
10
43
|
const mem_1 = require("./mem");
|
|
11
44
|
function makeFileResolver(pathfinder) {
|
|
12
45
|
return function FileResolver(spec, popts, _rule, ctx) {
|
|
13
|
-
|
|
14
|
-
|
|
46
|
+
const fs = ctx.meta?.fs || SystemFs;
|
|
47
|
+
const foundSpec = pathfinder ? pathfinder(spec) : spec;
|
|
48
|
+
const ps = (0, multisource_1.resolvePathSpec)(popts, ctx, foundSpec, resolvefolder);
|
|
15
49
|
let src = undefined;
|
|
16
50
|
let search = [];
|
|
17
51
|
if (null != ps.full) {
|
|
18
52
|
ps.full = path_1.default.resolve(ps.full);
|
|
19
53
|
search.push(ps.full);
|
|
20
|
-
src = load(ps.full);
|
|
54
|
+
src = load(ps.full, fs);
|
|
21
55
|
if (null == src && multisource_1.NONE === ps.kind) {
|
|
22
56
|
let potentials = (0, mem_1.buildPotentials)(ps, popts, (...s) => path_1.default.resolve(s.reduce((a, p) => path_1.default.join(a, p))));
|
|
23
57
|
search.push(...potentials);
|
|
24
58
|
for (let path of potentials) {
|
|
25
|
-
if (null != (src = load(path))) {
|
|
59
|
+
if (null != (src = load(path, fs))) {
|
|
26
60
|
ps.full = path;
|
|
27
61
|
ps.kind = (path.match(/\.([^.]*)$/) || [multisource_1.NONE, multisource_1.NONE])[1];
|
|
28
62
|
break;
|
|
@@ -39,12 +73,12 @@ function makeFileResolver(pathfinder) {
|
|
|
39
73
|
return res;
|
|
40
74
|
};
|
|
41
75
|
}
|
|
42
|
-
function resolvefolder(path) {
|
|
76
|
+
function resolvefolder(path, fs) {
|
|
43
77
|
if ('string' !== typeof path) {
|
|
44
78
|
return path;
|
|
45
79
|
}
|
|
46
80
|
let folder = path;
|
|
47
|
-
let pathstats =
|
|
81
|
+
let pathstats = fs.statSync(path);
|
|
48
82
|
if (pathstats.isFile()) {
|
|
49
83
|
let pathdesc = path_1.default.parse(path);
|
|
50
84
|
folder = pathdesc.dir;
|
|
@@ -52,9 +86,9 @@ function resolvefolder(path) {
|
|
|
52
86
|
return folder;
|
|
53
87
|
}
|
|
54
88
|
// TODO: in multisource.ts, generate an error token if cannot resolve
|
|
55
|
-
function load(path) {
|
|
89
|
+
function load(path, fs) {
|
|
56
90
|
try {
|
|
57
|
-
return
|
|
91
|
+
return fs.readFileSync(path).toString();
|
|
58
92
|
}
|
|
59
93
|
catch (e) {
|
|
60
94
|
// NOTE: don't need this, as in all cases, we consider failed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/resolver/file.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/resolver/file.ts"],"names":[],"mappings":"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"}
|
package/dist/resolver/mem.js
CHANGED
|
@@ -36,9 +36,7 @@ function makeresolvefolder(filemap) {
|
|
|
36
36
|
folder = (path
|
|
37
37
|
.replace(/[\\\/]+$/, '')
|
|
38
38
|
.match(/[\\\/]+([^\\\/]+)$/) || ['', ''])[1];
|
|
39
|
-
// console.log('PF', path, folder)
|
|
40
39
|
}
|
|
41
|
-
// console.log('RF', folder)
|
|
42
40
|
return folder;
|
|
43
41
|
};
|
|
44
42
|
}
|
|
@@ -69,7 +67,6 @@ function buildPotentials(ps, popts, pathjoin) {
|
|
|
69
67
|
}
|
|
70
68
|
}
|
|
71
69
|
}
|
|
72
|
-
// console.log('POT', potentials)
|
|
73
70
|
return potentials;
|
|
74
71
|
}
|
|
75
72
|
//# sourceMappingURL=mem.js.map
|
package/dist/resolver/mem.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mem.js","sourceRoot":"","sources":["../../src/resolver/mem.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"mem.js","sourceRoot":"","sources":["../../src/resolver/mem.ts"],"names":[],"mappings":"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"}
|
package/dist/resolver/pkg.d.ts
CHANGED
package/dist/resolver/pkg.js
CHANGED
|
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.makePkgResolver = makePkgResolver;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
9
|
const multisource_1 = require("../multisource");
|
|
10
10
|
const mem_1 = require("./mem");
|
|
11
11
|
function makePkgResolver(options) {
|
|
@@ -25,7 +25,10 @@ function makePkgResolver(options) {
|
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
27
|
return function PkgResolver(spec, popts, _rule, ctx) {
|
|
28
|
+
let fs = node_fs_1.default;
|
|
28
29
|
// TODO: support pathfinder as file.ts
|
|
30
|
+
// TODO: support virtual fs
|
|
31
|
+
// const base = ctx.meta?.multisource?.path ?? ctx.meta?.path
|
|
29
32
|
let foundSpec = spec;
|
|
30
33
|
let ps = (0, multisource_1.resolvePathSpec)(popts, ctx, foundSpec, resolvefolder);
|
|
31
34
|
let src = undefined;
|
|
@@ -34,7 +37,7 @@ function makePkgResolver(options) {
|
|
|
34
37
|
try {
|
|
35
38
|
ps.full = useRequire.resolve(ps.path, requireOptions);
|
|
36
39
|
if (null != ps.full) {
|
|
37
|
-
src = load(ps.full);
|
|
40
|
+
src = load(ps.full, fs);
|
|
38
41
|
ps.kind = (ps.full.match(/\.([^.]*)$/) || [multisource_1.NONE, multisource_1.NONE])[1];
|
|
39
42
|
}
|
|
40
43
|
}
|
|
@@ -43,30 +46,36 @@ function makePkgResolver(options) {
|
|
|
43
46
|
// search.push(...(requireOptions?.paths || (useRequire.resolve.paths(ps.path)
|
|
44
47
|
// .map((p: string) => Path.join(p, (ps.path as string))))))
|
|
45
48
|
let potentials = [];
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
if (null == ctx.meta?.fs) {
|
|
50
|
+
let localpath = node_path_1.default.join(process.cwd(), 'NIL');
|
|
51
|
+
let localparts;
|
|
52
|
+
do {
|
|
53
|
+
localparts = node_path_1.default.parse(localpath);
|
|
54
|
+
localpath = localparts.dir;
|
|
55
|
+
potentials.push(node_path_1.default.join(localpath, 'node_modules', ps.path));
|
|
56
|
+
} while (localparts.root !== localparts.dir);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
potentials.push(ps.path);
|
|
60
|
+
}
|
|
53
61
|
if (null != ps.path && 'string' === typeof ps.path) {
|
|
54
62
|
const pspath = ps.path;
|
|
55
63
|
// Add the main paths of the current require
|
|
56
|
-
potentials.push(...useRequire.main.paths.map((p) =>
|
|
64
|
+
potentials.push(...useRequire.main.paths.map((p) => node_path_1.default.join(p, pspath)));
|
|
57
65
|
// Remove module name prefix
|
|
58
66
|
const subpath = ps.path.replace(/^(@[^/]+\/)?[^/]+\//, '');
|
|
59
67
|
potentials.push(...useRequire.main.paths
|
|
60
68
|
.map((p) => p.replace(/node_modules$/, subpath)));
|
|
61
69
|
}
|
|
62
|
-
potentials.push(...(0, mem_1.buildPotentials)(ps, popts, (...s) =>
|
|
70
|
+
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)))));
|
|
63
71
|
// Check longest paths first
|
|
64
72
|
potentials.sort((a, b) => b.length - a.length);
|
|
73
|
+
requireOptions = { paths: ['/'] };
|
|
65
74
|
for (let path of potentials) {
|
|
66
75
|
try {
|
|
67
76
|
ps.full = useRequire.resolve(path, requireOptions);
|
|
68
77
|
if (null != ps.full) {
|
|
69
|
-
src = load(ps.full);
|
|
78
|
+
src = load(ps.full, fs);
|
|
70
79
|
ps.kind = (ps.full.match(/\.([^.]*)$/) || [multisource_1.NONE, multisource_1.NONE])[1];
|
|
71
80
|
break;
|
|
72
81
|
}
|
|
@@ -88,22 +97,22 @@ function makePkgResolver(options) {
|
|
|
88
97
|
return res;
|
|
89
98
|
};
|
|
90
99
|
}
|
|
91
|
-
function resolvefolder(path) {
|
|
100
|
+
function resolvefolder(path, fs) {
|
|
92
101
|
if ('string' !== typeof path) {
|
|
93
102
|
return path;
|
|
94
103
|
}
|
|
95
104
|
let folder = path;
|
|
96
|
-
let pathstats =
|
|
105
|
+
let pathstats = fs.statSync(path);
|
|
97
106
|
if (pathstats.isFile()) {
|
|
98
|
-
let pathdesc =
|
|
107
|
+
let pathdesc = node_path_1.default.parse(path);
|
|
99
108
|
folder = pathdesc.dir;
|
|
100
109
|
}
|
|
101
110
|
return folder;
|
|
102
111
|
}
|
|
103
112
|
// TODO: in multisource.ts, generate an error token if cannot resolve
|
|
104
|
-
function load(path) {
|
|
113
|
+
function load(path, fs) {
|
|
105
114
|
try {
|
|
106
|
-
return
|
|
115
|
+
return fs.readFileSync(path).toString();
|
|
107
116
|
}
|
|
108
117
|
catch (e) {
|
|
109
118
|
// NOTE: don't need this, as in all cases, we consider failed
|
package/dist/resolver/pkg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../src/resolver/pkg.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../src/resolver/pkg.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/multisource.ts","../src/processor/js.ts","../src/processor/jsonic.ts","../src/resolver/file.ts","../src/resolver/mem.ts","../src/resolver/pkg.ts"],"version":"5.
|
|
1
|
+
{"root":["../src/multisource.ts","../src/processor/js.ts","../src/processor/jsonic.ts","../src/resolver/file.ts","../src/resolver/mem.ts","../src/resolver/pkg.ts"],"version":"5.9.2"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsonic/multisource",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/multisource.js",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -19,10 +19,9 @@
|
|
|
19
19
|
"url": "git://github.com/jsonicjs/multisource.git"
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
|
-
"test": "node --enable-source-maps --test dist-test",
|
|
23
|
-
"test22": "node --enable-source-maps --test \"dist-test/*.test.js\"",
|
|
22
|
+
"test": "node --enable-source-maps --test \"dist-test/*.test.js\"",
|
|
24
23
|
"test-cov": "rm -rf ./coverage && mkdir -p ./coverage && node --experimental-test-coverage --test-reporter=spec --test-reporter-destination=stdout --test-reporter=lcov --test-reporter-destination=coverage/lcov.info --enable-source-maps --test \"dist-test/*.test.js\"",
|
|
25
|
-
"test-some": "node --enable-source-maps --test-name-pattern=\"$npm_config_pattern\" --test dist-test",
|
|
24
|
+
"test-some": "node --enable-source-maps --test-name-pattern=\"$npm_config_pattern\" --test \"dist-test/*.test.js\"",
|
|
26
25
|
"watch": "tsc --build src test -w",
|
|
27
26
|
"build": "tsc --build src test",
|
|
28
27
|
"clean": "rm -rf dist dist-test node_modules yarn.lock package-lock.json",
|
|
@@ -49,13 +48,14 @@
|
|
|
49
48
|
"devDependencies": {
|
|
50
49
|
"@hapi/code": "^9.0.3",
|
|
51
50
|
"@jsonic/doc": "^0.0.9",
|
|
52
|
-
"@types/node": "^
|
|
51
|
+
"@types/node": "^24.3.0",
|
|
53
52
|
"jsonic-multisource-pkg-test": "^0.0.1",
|
|
54
|
-
"
|
|
53
|
+
"memfs": "^4.38.2",
|
|
54
|
+
"typescript": "^5.9.2"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
|
-
"@jsonic/path": ">=1.3.0",
|
|
58
57
|
"@jsonic/directive": ">=1.1.0",
|
|
58
|
+
"@jsonic/path": ">=1.4.0",
|
|
59
59
|
"jsonic": ">=2.16.0"
|
|
60
60
|
}
|
|
61
61
|
}
|
package/src/multisource.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
/* Copyright (c)
|
|
1
|
+
/* Copyright (c) 2025 Richard Rodger, MIT License */
|
|
2
|
+
|
|
3
|
+
import * as SystemFs from 'node:fs'
|
|
2
4
|
|
|
3
5
|
import { Jsonic, Context, Rule, Plugin } from 'jsonic'
|
|
4
6
|
import { Directive, DirectiveOptions } from '@jsonic/directive'
|
|
@@ -6,6 +8,8 @@ import { Directive, DirectiveOptions } from '@jsonic/directive'
|
|
|
6
8
|
import { makeJsonicProcessor } from './processor/jsonic'
|
|
7
9
|
import { makeJavaScriptProcessor } from './processor/js'
|
|
8
10
|
|
|
11
|
+
type FST = typeof SystemFs
|
|
12
|
+
|
|
9
13
|
// TODO: jsonic-cli should provide basepath
|
|
10
14
|
|
|
11
15
|
// Jsonic parsing meta data. In this case, storing the dependency tree.
|
|
@@ -177,7 +181,6 @@ const MultiSource: Plugin = (jsonic: Jsonic, popts: MultiSourceOptions) => {
|
|
|
177
181
|
}
|
|
178
182
|
|
|
179
183
|
let proc = processor[res.kind] || processor[NONE]
|
|
180
|
-
// console.log('FROM', from, 'PROC', proc, processor, ctxproc.meta)
|
|
181
184
|
proc(res, popts, rule, ctxproc, jsonic)
|
|
182
185
|
|
|
183
186
|
// Handle the {@foo} case, injecting keys into parent map.
|
|
@@ -288,11 +291,13 @@ function resolvePathSpec(
|
|
|
288
291
|
popts: MultiSourceOptions,
|
|
289
292
|
ctx: Context,
|
|
290
293
|
spec: any,
|
|
291
|
-
resolvefolder: (path: string) => string,
|
|
294
|
+
resolvefolder: (path: string, fs: FST) => string,
|
|
292
295
|
): PathSpec {
|
|
296
|
+
const fs = ctx.meta?.fs || SystemFs
|
|
293
297
|
let msmeta = ctx.meta?.multisource
|
|
294
298
|
let base = resolvefolder(
|
|
295
299
|
null == msmeta || null == msmeta.path ? popts.path : msmeta.path,
|
|
300
|
+
fs
|
|
296
301
|
)
|
|
297
302
|
|
|
298
303
|
let path =
|
|
@@ -339,6 +344,8 @@ export type {
|
|
|
339
344
|
DependencyMap,
|
|
340
345
|
MultiSourceMeta,
|
|
341
346
|
PathSpec,
|
|
347
|
+
FST,
|
|
342
348
|
}
|
|
343
349
|
|
|
344
350
|
export { MultiSource, resolvePathSpec, NONE, TOP, meta }
|
|
351
|
+
|
package/src/resolver/file.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
import * as SystemFs from 'node:fs'
|
|
2
3
|
import Path from 'path'
|
|
3
4
|
|
|
5
|
+
import type {
|
|
6
|
+
FST
|
|
7
|
+
} from '../multisource'
|
|
8
|
+
|
|
4
9
|
import { Rule, Context } from 'jsonic'
|
|
5
10
|
|
|
6
11
|
import {
|
|
@@ -27,9 +32,10 @@ function makeFileResolver(pathfinder?: PathFinder): Resolver {
|
|
|
27
32
|
_rule: Rule,
|
|
28
33
|
ctx: Context,
|
|
29
34
|
): Resolution {
|
|
30
|
-
|
|
35
|
+
const fs = ctx.meta?.fs || SystemFs
|
|
36
|
+
const foundSpec = pathfinder ? pathfinder(spec) : spec
|
|
31
37
|
|
|
32
|
-
|
|
38
|
+
const ps = resolvePathSpec(popts, ctx, foundSpec, resolvefolder)
|
|
33
39
|
let src = undefined
|
|
34
40
|
|
|
35
41
|
let search: string[] = []
|
|
@@ -38,7 +44,7 @@ function makeFileResolver(pathfinder?: PathFinder): Resolver {
|
|
|
38
44
|
ps.full = Path.resolve(ps.full)
|
|
39
45
|
|
|
40
46
|
search.push(ps.full)
|
|
41
|
-
src = load(ps.full)
|
|
47
|
+
src = load(ps.full, fs)
|
|
42
48
|
|
|
43
49
|
if (null == src && NONE === ps.kind) {
|
|
44
50
|
let potentials =
|
|
@@ -47,7 +53,7 @@ function makeFileResolver(pathfinder?: PathFinder): Resolver {
|
|
|
47
53
|
search.push(...potentials)
|
|
48
54
|
|
|
49
55
|
for (let path of potentials) {
|
|
50
|
-
if (null != (src = load(path))) {
|
|
56
|
+
if (null != (src = load(path, fs))) {
|
|
51
57
|
ps.full = path
|
|
52
58
|
ps.kind = (path.match(/\.([^.]*)$/) || [NONE, NONE])[1]
|
|
53
59
|
break
|
|
@@ -67,13 +73,13 @@ function makeFileResolver(pathfinder?: PathFinder): Resolver {
|
|
|
67
73
|
}
|
|
68
74
|
}
|
|
69
75
|
|
|
70
|
-
function resolvefolder(path: string) {
|
|
76
|
+
function resolvefolder(path: string, fs: FST) {
|
|
71
77
|
if ('string' !== typeof path) {
|
|
72
78
|
return path
|
|
73
79
|
}
|
|
74
80
|
|
|
75
81
|
let folder = path
|
|
76
|
-
let pathstats =
|
|
82
|
+
let pathstats = fs.statSync(path)
|
|
77
83
|
|
|
78
84
|
if (pathstats.isFile()) {
|
|
79
85
|
let pathdesc = Path.parse(path)
|
|
@@ -85,9 +91,9 @@ function resolvefolder(path: string) {
|
|
|
85
91
|
|
|
86
92
|
|
|
87
93
|
// TODO: in multisource.ts, generate an error token if cannot resolve
|
|
88
|
-
function load(path: string) {
|
|
94
|
+
function load(path: string, fs: FST) {
|
|
89
95
|
try {
|
|
90
|
-
return
|
|
96
|
+
return fs.readFileSync(path).toString()
|
|
91
97
|
}
|
|
92
98
|
catch (e) {
|
|
93
99
|
// NOTE: don't need this, as in all cases, we consider failed
|
package/src/resolver/mem.ts
CHANGED
|
@@ -61,9 +61,7 @@ function makeresolvefolder(filemap: { [fullpath: string]: string }) {
|
|
|
61
61
|
folder = (path
|
|
62
62
|
.replace(/[\\\/]+$/, '')
|
|
63
63
|
.match(/[\\\/]+([^\\\/]+)$/) || ['', ''])[1]
|
|
64
|
-
// console.log('PF', path, folder)
|
|
65
64
|
}
|
|
66
|
-
// console.log('RF', folder)
|
|
67
65
|
return folder
|
|
68
66
|
}
|
|
69
67
|
}
|
|
@@ -103,8 +101,6 @@ function buildPotentials(
|
|
|
103
101
|
}
|
|
104
102
|
}
|
|
105
103
|
|
|
106
|
-
// console.log('POT', potentials)
|
|
107
|
-
|
|
108
104
|
return potentials
|
|
109
105
|
}
|
|
110
106
|
|
package/src/resolver/pkg.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import Path from 'path'
|
|
1
|
+
import SystemFs from 'node:fs'
|
|
2
|
+
import Path from 'node:path'
|
|
3
|
+
// import Module from 'node:module'
|
|
4
|
+
|
|
5
|
+
import type {
|
|
6
|
+
FST
|
|
7
|
+
} from '../multisource'
|
|
8
|
+
|
|
3
9
|
|
|
4
10
|
import { Rule, Context } from 'jsonic'
|
|
5
11
|
|
|
@@ -17,12 +23,20 @@ import {
|
|
|
17
23
|
} from './mem'
|
|
18
24
|
|
|
19
25
|
|
|
20
|
-
function makePkgResolver(options:
|
|
21
|
-
|
|
26
|
+
function makePkgResolver(options: {
|
|
27
|
+
require: Function | string | string[]
|
|
28
|
+
}): Resolver {
|
|
29
|
+
let useRequire: {
|
|
30
|
+
resolve: (target: string, options?: any) => any
|
|
31
|
+
main: {
|
|
32
|
+
paths: string[]
|
|
33
|
+
}
|
|
34
|
+
} = require as any
|
|
35
|
+
|
|
22
36
|
let requireOptions: any = undefined
|
|
23
37
|
|
|
24
38
|
if ('function' === typeof options.require) {
|
|
25
|
-
useRequire = options.require
|
|
39
|
+
useRequire = options.require as any
|
|
26
40
|
}
|
|
27
41
|
else if (Array.isArray(options.require)) {
|
|
28
42
|
requireOptions = {
|
|
@@ -41,8 +55,13 @@ function makePkgResolver(options: any): Resolver {
|
|
|
41
55
|
_rule: Rule,
|
|
42
56
|
ctx: Context,
|
|
43
57
|
): Resolution {
|
|
58
|
+
let fs = SystemFs
|
|
59
|
+
|
|
44
60
|
// TODO: support pathfinder as file.ts
|
|
45
61
|
|
|
62
|
+
// TODO: support virtual fs
|
|
63
|
+
// const base = ctx.meta?.multisource?.path ?? ctx.meta?.path
|
|
64
|
+
|
|
46
65
|
let foundSpec = spec
|
|
47
66
|
|
|
48
67
|
let ps = resolvePathSpec(popts, ctx, foundSpec, resolvefolder)
|
|
@@ -53,7 +72,7 @@ function makePkgResolver(options: any): Resolver {
|
|
|
53
72
|
try {
|
|
54
73
|
ps.full = useRequire.resolve(ps.path, requireOptions)
|
|
55
74
|
if (null != ps.full) {
|
|
56
|
-
src = load(ps.full)
|
|
75
|
+
src = load(ps.full, fs)
|
|
57
76
|
ps.kind = (ps.full.match(/\.([^.]*)$/) || [NONE, NONE])[1]
|
|
58
77
|
}
|
|
59
78
|
}
|
|
@@ -64,15 +83,19 @@ function makePkgResolver(options: any): Resolver {
|
|
|
64
83
|
|
|
65
84
|
let potentials = []
|
|
66
85
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
86
|
+
if (null == ctx.meta?.fs) {
|
|
87
|
+
let localpath = Path.join(process.cwd(), 'NIL')
|
|
88
|
+
let localparts
|
|
89
|
+
do {
|
|
90
|
+
localparts = Path.parse(localpath)
|
|
91
|
+
localpath = localparts.dir
|
|
92
|
+
potentials.push(Path.join(localpath, 'node_modules', ps.path))
|
|
93
|
+
}
|
|
94
|
+
while (localparts.root !== localparts.dir)
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
potentials.push(ps.path)
|
|
73
98
|
}
|
|
74
|
-
while (localparts.root !== localparts.dir)
|
|
75
|
-
|
|
76
99
|
|
|
77
100
|
if (null != ps.path && 'string' === typeof ps.path) {
|
|
78
101
|
const pspath = ps.path
|
|
@@ -95,11 +118,13 @@ function makePkgResolver(options: any): Resolver {
|
|
|
95
118
|
potentials.sort((a, b) => b.length - a.length)
|
|
96
119
|
|
|
97
120
|
|
|
121
|
+
requireOptions = { paths: ['/'] }
|
|
122
|
+
|
|
98
123
|
for (let path of potentials) {
|
|
99
124
|
try {
|
|
100
125
|
ps.full = useRequire.resolve(path, requireOptions)
|
|
101
126
|
if (null != ps.full) {
|
|
102
|
-
src = load(ps.full)
|
|
127
|
+
src = load(ps.full, fs)
|
|
103
128
|
ps.kind = (ps.full.match(/\.([^.]*)$/) || [NONE, NONE])[1]
|
|
104
129
|
break
|
|
105
130
|
}
|
|
@@ -125,13 +150,13 @@ function makePkgResolver(options: any): Resolver {
|
|
|
125
150
|
}
|
|
126
151
|
|
|
127
152
|
|
|
128
|
-
function resolvefolder(path: string) {
|
|
153
|
+
function resolvefolder(path: string, fs: FST) {
|
|
129
154
|
if ('string' !== typeof path) {
|
|
130
155
|
return path
|
|
131
156
|
}
|
|
132
157
|
|
|
133
158
|
let folder = path
|
|
134
|
-
let pathstats =
|
|
159
|
+
let pathstats = fs.statSync(path)
|
|
135
160
|
|
|
136
161
|
if (pathstats.isFile()) {
|
|
137
162
|
let pathdesc = Path.parse(path)
|
|
@@ -143,9 +168,9 @@ function resolvefolder(path: string) {
|
|
|
143
168
|
|
|
144
169
|
|
|
145
170
|
// TODO: in multisource.ts, generate an error token if cannot resolve
|
|
146
|
-
function load(path: string) {
|
|
171
|
+
function load(path: string, fs: FST) {
|
|
147
172
|
try {
|
|
148
|
-
return
|
|
173
|
+
return fs.readFileSync(path).toString()
|
|
149
174
|
}
|
|
150
175
|
catch (e) {
|
|
151
176
|
// NOTE: don't need this, as in all cases, we consider failed
|
|
@@ -154,6 +179,7 @@ function load(path: string) {
|
|
|
154
179
|
}
|
|
155
180
|
|
|
156
181
|
|
|
182
|
+
|
|
157
183
|
export {
|
|
158
184
|
makePkgResolver,
|
|
159
185
|
}
|