@jsonic/multisource 1.9.0 → 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 +37 -2
- 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 +7 -7
- package/src/multisource.ts +10 -2
- 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");
|
|
@@ -187,8 +221,9 @@ MultiSource.defaults = {
|
|
|
187
221
|
implictExt: ['jsonic', 'jsc', 'json', 'js'],
|
|
188
222
|
};
|
|
189
223
|
function resolvePathSpec(popts, ctx, spec, resolvefolder) {
|
|
224
|
+
const fs = ctx.meta?.fs || SystemFs;
|
|
190
225
|
let msmeta = ctx.meta?.multisource;
|
|
191
|
-
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);
|
|
192
227
|
let path = 'string' === typeof spec
|
|
193
228
|
? spec
|
|
194
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":"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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,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/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.
|
|
@@ -288,11 +292,13 @@ function resolvePathSpec(
|
|
|
288
292
|
popts: MultiSourceOptions,
|
|
289
293
|
ctx: Context,
|
|
290
294
|
spec: any,
|
|
291
|
-
resolvefolder: (path: string) => string,
|
|
295
|
+
resolvefolder: (path: string, fs: FST) => string,
|
|
292
296
|
): PathSpec {
|
|
297
|
+
const fs = ctx.meta?.fs || SystemFs
|
|
293
298
|
let msmeta = ctx.meta?.multisource
|
|
294
299
|
let base = resolvefolder(
|
|
295
300
|
null == msmeta || null == msmeta.path ? popts.path : msmeta.path,
|
|
301
|
+
fs
|
|
296
302
|
)
|
|
297
303
|
|
|
298
304
|
let path =
|
|
@@ -339,6 +345,8 @@ export type {
|
|
|
339
345
|
DependencyMap,
|
|
340
346
|
MultiSourceMeta,
|
|
341
347
|
PathSpec,
|
|
348
|
+
FST,
|
|
342
349
|
}
|
|
343
350
|
|
|
344
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
|
}
|