@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.
@@ -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 };
@@ -1,8 +1,42 @@
1
1
  "use strict";
2
- /* Copyright (c) 2021 Richard Rodger, MIT License */
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: 'val,pair',
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
- s: [OPEN],
121
- c: (r) => 0 === r.d,
122
- p: 'map',
123
- b: 1,
124
- n: { [name + '_top']: 1 },
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
@@ -1 +1 @@
1
- {"version":3,"file":"multisource.js","sourceRoot":"","sources":["../src/multisource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multisource.js","sourceRoot":"","sources":["../src/multisource.ts"],"names":[],"mappings":"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"}
@@ -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 fs_1 = __importDefault(require("fs"));
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
- let foundSpec = pathfinder ? pathfinder(spec) : spec;
14
- let ps = (0, multisource_1.resolvePathSpec)(popts, ctx, foundSpec, resolvefolder);
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 = fs_1.default.statSync(path);
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 fs_1.default.readFileSync(path).toString();
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":";;;;;AAmGE,4CAAgB;AAnGlB,4CAAmB;AACnB,gDAAuB;AAIvB,gDAMuB;AAGvB,+BAEc;AAKd,SAAS,gBAAgB,CAAC,UAAuB;IAE/C,OAAO,SAAS,YAAY,CAC1B,IAAS,EACT,KAAyB,EACzB,KAAW,EACX,GAAY;QAEZ,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAEpD,IAAI,EAAE,GAAG,IAAA,6BAAe,EAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;QAC9D,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,CAAC,CAAA;YAEnB,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,CAAC,CAAC,EAAE,CAAC;wBAC/B,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;IACjC,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,MAAM,GAAG,IAAI,CAAA;IACjB,IAAI,SAAS,GAAG,YAAE,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;IACxB,IAAI,CAAC;QACH,OAAO,YAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;IACzC,CAAC;IACD,OAAO,CAAC,EAAE,CAAC;QACT,6DAA6D;QAC7D,mCAAmC;IACrC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/resolver/file.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
1
  import { Resolver } from '../multisource';
2
- declare function makePkgResolver(options: any): Resolver;
2
+ declare function makePkgResolver(options: {
3
+ require: Function | string | string[];
4
+ }): Resolver;
3
5
  export { makePkgResolver, };
@@ -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 fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
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
- let localpath = path_1.default.join(process.cwd(), 'NIL');
47
- let localparts;
48
- do {
49
- localparts = path_1.default.parse(localpath);
50
- localpath = localparts.dir;
51
- potentials.push(path_1.default.join(localpath, 'node_modules', ps.path));
52
- } while (localparts.root !== localparts.dir);
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) => path_1.default.join(p, pspath)));
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) => path_1.default.resolve(s.reduce((a, p) => path_1.default.join(a, p)))));
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 = fs_1.default.statSync(path);
108
+ let pathstats = fs.statSync(path);
97
109
  if (pathstats.isFile()) {
98
- let pathdesc = path_1.default.parse(path);
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 fs_1.default.readFileSync(path).toString();
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
@@ -1 +1 @@
1
- {"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../src/resolver/pkg.ts"],"names":[],"mappings":"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"}
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.7.2"}
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": "1.8.1",
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": "^22.9.3",
51
+ "@types/node": "^24.3.0",
53
52
  "jsonic-multisource-pkg-test": "^0.0.1",
54
- "typescript": "^5.7.2"
53
+ "memfs": "^4.38.2",
54
+ "typescript": "^5.9.2"
55
55
  },
56
56
  "peerDependencies": {
57
- "@jsonic/path": ">=1.0.0",
58
- "@jsonic/directive": ">=1.0.1",
59
- "jsonic": ">=2.15.2"
57
+ "@jsonic/directive": ">=1.1.0",
58
+ "@jsonic/path": ">=1.4.0",
59
+ "jsonic": ">=2.16.0"
60
60
  }
61
61
  }
@@ -1,4 +1,6 @@
1
- /* Copyright (c) 2021 Richard Rodger, MIT License */
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: 'val,pair',
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
- s: [OPEN],
207
- c: (r) => 0 === r.d,
208
- p: 'map',
209
- b: 1,
210
- n: { [name + '_top']: 1 },
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
+
@@ -1,6 +1,11 @@
1
- import Fs from 'fs'
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
- let foundSpec = pathfinder ? pathfinder(spec) : spec
35
+ const fs = ctx.meta?.fs || SystemFs
36
+ const foundSpec = pathfinder ? pathfinder(spec) : spec
31
37
 
32
- let ps = resolvePathSpec(popts, ctx, foundSpec, resolvefolder)
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 = Fs.statSync(path)
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 Fs.readFileSync(path).toString()
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
@@ -1,5 +1,11 @@
1
- import Fs from 'fs'
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: any): Resolver {
21
- let useRequire: any = require
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
- let localpath = Path.join(process.cwd(), 'NIL')
68
- let localparts
69
- do {
70
- localparts = Path.parse(localpath)
71
- localpath = localparts.dir
72
- potentials.push(Path.join(localpath, 'node_modules', ps.path))
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 = Fs.statSync(path)
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 Fs.readFileSync(path).toString()
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
  }