@jsonic/multisource 1.8.1 → 2.0.0
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 +72 -12
- 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/pkg.d.ts +3 -1
- package/dist/resolver/pkg.js +30 -18
- package/dist/resolver/pkg.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/src/multisource.ts +48 -12
- package/src/resolver/file.ts +15 -9
- package/src/resolver/pkg.ts +49 -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");
|
|
@@ -39,14 +73,17 @@ const MultiSource = (jsonic, popts) => {
|
|
|
39
73
|
name: 'multisource',
|
|
40
74
|
open: markchar,
|
|
41
75
|
rules: {
|
|
42
|
-
open:
|
|
76
|
+
open: {
|
|
77
|
+
val: {},
|
|
78
|
+
pair: {
|
|
79
|
+
c: (r) => r.lte('pk')
|
|
80
|
+
},
|
|
81
|
+
}
|
|
43
82
|
},
|
|
44
83
|
action: function multisourceStateAction(rule, ctx) {
|
|
45
84
|
let from = rule.parent.name;
|
|
46
85
|
let spec = rule.child.node;
|
|
47
|
-
// console.log('SRC', from, spec)
|
|
48
86
|
let res = resolver(spec, popts, rule, ctx, jsonic);
|
|
49
|
-
// console.log('RES', res)
|
|
50
87
|
if (null == res || !res.found) {
|
|
51
88
|
return rule.parent?.o0.bad('multisource_not_found', {
|
|
52
89
|
...(res || {}),
|
|
@@ -116,13 +153,22 @@ const MultiSource = (jsonic, popts) => {
|
|
|
116
153
|
custom: (jsonic, { OPEN, name }) => {
|
|
117
154
|
// Handle special case of @foo first token - assume a map
|
|
118
155
|
jsonic.rule('val', (rs) => {
|
|
119
|
-
rs.open(
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
156
|
+
rs.open([
|
|
157
|
+
{
|
|
158
|
+
s: [OPEN],
|
|
159
|
+
c: (r) => 0 < r.n.pk && 'pair' != r.parent.name,
|
|
160
|
+
b: 1,
|
|
161
|
+
g: name + '_undive',
|
|
162
|
+
},
|
|
163
|
+
,
|
|
164
|
+
{
|
|
165
|
+
s: [OPEN],
|
|
166
|
+
c: (r) => 0 === r.d,
|
|
167
|
+
p: 'map',
|
|
168
|
+
b: 1,
|
|
169
|
+
n: { [name + '_top']: 1 },
|
|
170
|
+
}
|
|
171
|
+
]);
|
|
126
172
|
});
|
|
127
173
|
jsonic.rule('map', (rs) => {
|
|
128
174
|
rs.open({
|
|
@@ -130,6 +176,19 @@ const MultiSource = (jsonic, popts) => {
|
|
|
130
176
|
c: (r) => 1 === r.d && 1 === r.n[name + '_top'],
|
|
131
177
|
p: 'pair',
|
|
132
178
|
b: 1,
|
|
179
|
+
}).close({
|
|
180
|
+
s: [OPEN],
|
|
181
|
+
c: (r) => 0 < r.n.pk,
|
|
182
|
+
b: 1,
|
|
183
|
+
g: name + '_undive',
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
jsonic.rule('pair', (rs) => {
|
|
187
|
+
rs.close({
|
|
188
|
+
s: [OPEN],
|
|
189
|
+
c: (r) => 0 < r.n.pk,
|
|
190
|
+
b: 1,
|
|
191
|
+
g: name + '_undive',
|
|
133
192
|
});
|
|
134
193
|
});
|
|
135
194
|
},
|
|
@@ -162,8 +221,9 @@ MultiSource.defaults = {
|
|
|
162
221
|
implictExt: ['jsonic', 'jsc', 'json', 'js'],
|
|
163
222
|
};
|
|
164
223
|
function resolvePathSpec(popts, ctx, spec, resolvefolder) {
|
|
224
|
+
const fs = ctx.meta?.fs || SystemFs;
|
|
165
225
|
let msmeta = ctx.meta?.multisource;
|
|
166
|
-
let base = resolvefolder(null == msmeta || null == msmeta.path ? popts.path : msmeta.path);
|
|
226
|
+
let base = resolvefolder(null == msmeta || null == msmeta.path ? popts.path : msmeta.path, fs);
|
|
167
227
|
let path = 'string' === typeof spec
|
|
168
228
|
? spec
|
|
169
229
|
: 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":"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"}
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyGE,4CAAgB;AAxGlB,kDAAmC;AACnC,gDAAuB;AAQvB,gDAMuB;AAGvB,+BAEc;AAKd,SAAS,gBAAgB,CAAC,UAAuB;IAE/C,OAAO,SAAS,YAAY,CAC1B,IAAS,EACT,KAAyB,EACzB,KAAW,EACX,GAAY;QAEZ,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,QAAQ,CAAA;QACnC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAEtD,MAAM,EAAE,GAAG,IAAA,6BAAe,EAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;QAChE,IAAI,GAAG,GAAG,SAAS,CAAA;QAEnB,IAAI,MAAM,GAAa,EAAE,CAAA;QAEzB,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACpB,EAAE,CAAC,IAAI,GAAG,cAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;YAE/B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;YACpB,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YAEvB,IAAI,IAAI,IAAI,GAAG,IAAI,kBAAI,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;gBACpC,IAAI,UAAU,GACZ,IAAA,qBAAe,EAAC,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAClC,cAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACtD,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAA;gBAE1B,KAAK,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;oBAC5B,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;wBACnC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAA;wBACd,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAI,EAAE,kBAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;wBACvD,MAAK;oBACP,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;AAED,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,cAAI,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"}
|
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,35 +46,44 @@ 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
|
+
console.log('POT', potentials);
|
|
74
|
+
requireOptions = { paths: ['/'] };
|
|
65
75
|
for (let path of potentials) {
|
|
66
76
|
try {
|
|
67
77
|
ps.full = useRequire.resolve(path, requireOptions);
|
|
78
|
+
console.log('REQ', path, ps);
|
|
68
79
|
if (null != ps.full) {
|
|
69
|
-
src = load(ps.full);
|
|
80
|
+
src = load(ps.full, fs);
|
|
70
81
|
ps.kind = (ps.full.match(/\.([^.]*)$/) || [multisource_1.NONE, multisource_1.NONE])[1];
|
|
71
82
|
break;
|
|
72
83
|
}
|
|
73
84
|
}
|
|
74
85
|
catch (me) {
|
|
86
|
+
console.log(me);
|
|
75
87
|
search.push(path);
|
|
76
88
|
// search.push(...(requireOptions?.paths || (useRequire.resolve.paths(path)
|
|
77
89
|
// .map((p: string) => Path.join(p, (path as string))))))
|
|
@@ -88,22 +100,22 @@ function makePkgResolver(options) {
|
|
|
88
100
|
return res;
|
|
89
101
|
};
|
|
90
102
|
}
|
|
91
|
-
function resolvefolder(path) {
|
|
103
|
+
function resolvefolder(path, fs) {
|
|
92
104
|
if ('string' !== typeof path) {
|
|
93
105
|
return path;
|
|
94
106
|
}
|
|
95
107
|
let folder = path;
|
|
96
|
-
let pathstats =
|
|
108
|
+
let pathstats = fs.statSync(path);
|
|
97
109
|
if (pathstats.isFile()) {
|
|
98
|
-
let pathdesc =
|
|
110
|
+
let pathdesc = node_path_1.default.parse(path);
|
|
99
111
|
folder = pathdesc.dir;
|
|
100
112
|
}
|
|
101
113
|
return folder;
|
|
102
114
|
}
|
|
103
115
|
// TODO: in multisource.ts, generate an error token if cannot resolve
|
|
104
|
-
function load(path) {
|
|
116
|
+
function load(path, fs) {
|
|
105
117
|
try {
|
|
106
|
-
return
|
|
118
|
+
return fs.readFileSync(path).toString();
|
|
107
119
|
}
|
|
108
120
|
catch (e) {
|
|
109
121
|
// 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.0",
|
|
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/
|
|
58
|
-
"@jsonic/
|
|
59
|
-
"jsonic": ">=2.
|
|
57
|
+
"@jsonic/directive": ">=1.1.0",
|
|
58
|
+
"@jsonic/path": ">=1.4.0",
|
|
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.
|
|
@@ -109,15 +113,18 @@ const MultiSource: Plugin = (jsonic: Jsonic, popts: MultiSourceOptions) => {
|
|
|
109
113
|
name: 'multisource',
|
|
110
114
|
open: markchar,
|
|
111
115
|
rules: {
|
|
112
|
-
open:
|
|
116
|
+
open: {
|
|
117
|
+
val: {},
|
|
118
|
+
pair: {
|
|
119
|
+
c: (r: Rule) => r.lte('pk')
|
|
120
|
+
},
|
|
121
|
+
}
|
|
113
122
|
},
|
|
114
123
|
action: function multisourceStateAction(rule: Rule, ctx: Context) {
|
|
115
124
|
let from = rule.parent.name
|
|
116
125
|
let spec = rule.child.node
|
|
117
|
-
// console.log('SRC', from, spec)
|
|
118
126
|
|
|
119
127
|
let res = resolver(spec, popts, rule, ctx, jsonic)
|
|
120
|
-
// console.log('RES', res)
|
|
121
128
|
|
|
122
129
|
if (null == res || !res.found) {
|
|
123
130
|
return rule.parent?.o0.bad('multisource_not_found', {
|
|
@@ -199,16 +206,26 @@ const MultiSource: Plugin = (jsonic: Jsonic, popts: MultiSourceOptions) => {
|
|
|
199
206
|
|
|
200
207
|
return undefined
|
|
201
208
|
},
|
|
209
|
+
|
|
202
210
|
custom: (jsonic: Jsonic, { OPEN, name }: any) => {
|
|
203
211
|
// Handle special case of @foo first token - assume a map
|
|
204
212
|
jsonic.rule('val', (rs) => {
|
|
205
|
-
rs.open(
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
213
|
+
rs.open([
|
|
214
|
+
{
|
|
215
|
+
s: [OPEN],
|
|
216
|
+
c: (r) => 0 < r.n.pk && 'pair' != r.parent.name,
|
|
217
|
+
b: 1,
|
|
218
|
+
g: name + '_undive',
|
|
219
|
+
},
|
|
220
|
+
,
|
|
221
|
+
{
|
|
222
|
+
s: [OPEN],
|
|
223
|
+
c: (r) => 0 === r.d,
|
|
224
|
+
p: 'map',
|
|
225
|
+
b: 1,
|
|
226
|
+
n: { [name + '_top']: 1 },
|
|
227
|
+
}]
|
|
228
|
+
)
|
|
212
229
|
})
|
|
213
230
|
|
|
214
231
|
jsonic.rule('map', (rs) => {
|
|
@@ -217,8 +234,23 @@ const MultiSource: Plugin = (jsonic: Jsonic, popts: MultiSourceOptions) => {
|
|
|
217
234
|
c: (r) => 1 === r.d && 1 === r.n[name + '_top'],
|
|
218
235
|
p: 'pair',
|
|
219
236
|
b: 1,
|
|
237
|
+
}).close({
|
|
238
|
+
s: [OPEN],
|
|
239
|
+
c: (r) => 0 < r.n.pk,
|
|
240
|
+
b: 1,
|
|
241
|
+
g: name + '_undive',
|
|
220
242
|
})
|
|
221
243
|
})
|
|
244
|
+
|
|
245
|
+
jsonic.rule('pair', (rs) => {
|
|
246
|
+
rs.close({
|
|
247
|
+
s: [OPEN],
|
|
248
|
+
c: (r) => 0 < r.n.pk,
|
|
249
|
+
b: 1,
|
|
250
|
+
g: name + '_undive',
|
|
251
|
+
})
|
|
252
|
+
})
|
|
253
|
+
|
|
222
254
|
},
|
|
223
255
|
}
|
|
224
256
|
|
|
@@ -260,11 +292,13 @@ function resolvePathSpec(
|
|
|
260
292
|
popts: MultiSourceOptions,
|
|
261
293
|
ctx: Context,
|
|
262
294
|
spec: any,
|
|
263
|
-
resolvefolder: (path: string) => string,
|
|
295
|
+
resolvefolder: (path: string, fs: FST) => string,
|
|
264
296
|
): PathSpec {
|
|
297
|
+
const fs = ctx.meta?.fs || SystemFs
|
|
265
298
|
let msmeta = ctx.meta?.multisource
|
|
266
299
|
let base = resolvefolder(
|
|
267
300
|
null == msmeta || null == msmeta.path ? popts.path : msmeta.path,
|
|
301
|
+
fs
|
|
268
302
|
)
|
|
269
303
|
|
|
270
304
|
let path =
|
|
@@ -311,6 +345,8 @@ export type {
|
|
|
311
345
|
DependencyMap,
|
|
312
346
|
MultiSourceMeta,
|
|
313
347
|
PathSpec,
|
|
348
|
+
FST,
|
|
314
349
|
}
|
|
315
350
|
|
|
316
351
|
export { MultiSource, resolvePathSpec, NONE, TOP, meta }
|
|
352
|
+
|
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/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,16 +118,22 @@ function makePkgResolver(options: any): Resolver {
|
|
|
95
118
|
potentials.sort((a, b) => b.length - a.length)
|
|
96
119
|
|
|
97
120
|
|
|
121
|
+
console.log('POT', potentials)
|
|
122
|
+
|
|
123
|
+
requireOptions = { paths: ['/'] }
|
|
124
|
+
|
|
98
125
|
for (let path of potentials) {
|
|
99
126
|
try {
|
|
100
127
|
ps.full = useRequire.resolve(path, requireOptions)
|
|
128
|
+
console.log('REQ', path, ps)
|
|
101
129
|
if (null != ps.full) {
|
|
102
|
-
src = load(ps.full)
|
|
130
|
+
src = load(ps.full, fs)
|
|
103
131
|
ps.kind = (ps.full.match(/\.([^.]*)$/) || [NONE, NONE])[1]
|
|
104
132
|
break
|
|
105
133
|
}
|
|
106
134
|
}
|
|
107
135
|
catch (me: any) {
|
|
136
|
+
console.log(me)
|
|
108
137
|
search.push(path)
|
|
109
138
|
// search.push(...(requireOptions?.paths || (useRequire.resolve.paths(path)
|
|
110
139
|
// .map((p: string) => Path.join(p, (path as string))))))
|
|
@@ -125,13 +154,13 @@ function makePkgResolver(options: any): Resolver {
|
|
|
125
154
|
}
|
|
126
155
|
|
|
127
156
|
|
|
128
|
-
function resolvefolder(path: string) {
|
|
157
|
+
function resolvefolder(path: string, fs: FST) {
|
|
129
158
|
if ('string' !== typeof path) {
|
|
130
159
|
return path
|
|
131
160
|
}
|
|
132
161
|
|
|
133
162
|
let folder = path
|
|
134
|
-
let pathstats =
|
|
163
|
+
let pathstats = fs.statSync(path)
|
|
135
164
|
|
|
136
165
|
if (pathstats.isFile()) {
|
|
137
166
|
let pathdesc = Path.parse(path)
|
|
@@ -143,9 +172,9 @@ function resolvefolder(path: string) {
|
|
|
143
172
|
|
|
144
173
|
|
|
145
174
|
// TODO: in multisource.ts, generate an error token if cannot resolve
|
|
146
|
-
function load(path: string) {
|
|
175
|
+
function load(path: string, fs: FST) {
|
|
147
176
|
try {
|
|
148
|
-
return
|
|
177
|
+
return fs.readFileSync(path).toString()
|
|
149
178
|
}
|
|
150
179
|
catch (e) {
|
|
151
180
|
// NOTE: don't need this, as in all cases, we consider failed
|
|
@@ -154,6 +183,7 @@ function load(path: string) {
|
|
|
154
183
|
}
|
|
155
184
|
|
|
156
185
|
|
|
186
|
+
|
|
157
187
|
export {
|
|
158
188
|
makePkgResolver,
|
|
159
189
|
}
|