@jsonic/multisource 0.10.0 → 0.11.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 +1 -0
- package/dist/multisource.js +5 -2
- package/dist/multisource.js.map +1 -1
- package/dist/multisource.min.js +1 -1
- package/dist/resolver/file.js +5 -1
- package/dist/resolver/file.js.map +1 -1
- package/dist/resolver/mem.js +21 -17
- package/dist/resolver/mem.js.map +1 -1
- package/dist/resolver/pkg.d.ts +3 -0
- package/dist/resolver/pkg.js +75 -0
- package/dist/resolver/pkg.js.map +1 -0
- package/package.json +11 -11
- package/src/multisource.ts +7 -2
- package/src/resolver/file.ts +7 -1
- package/src/resolver/mem.ts +21 -17
- package/src/resolver/pkg.ts +108 -0
package/dist/multisource.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ type Resolution = PathSpec & {
|
|
|
24
24
|
src?: string;
|
|
25
25
|
val?: any;
|
|
26
26
|
found: boolean;
|
|
27
|
+
search?: string[];
|
|
27
28
|
};
|
|
28
29
|
type Resolver = (spec: PathSpec, popts: MultiSourceOptions, rule: Rule, ctx: Context, jsonic: Jsonic) => Resolution;
|
|
29
30
|
type Processor = (res: Resolution, popts: MultiSourceOptions, rule: Rule, ctx: Context, jsonic: Jsonic) => void;
|
package/dist/multisource.js
CHANGED
|
@@ -29,7 +29,7 @@ const MultiSource = (jsonic, popts) => {
|
|
|
29
29
|
hint: {
|
|
30
30
|
// TODO: use $details for more explanation in error message.
|
|
31
31
|
// In particular to show resolved absolute path.
|
|
32
|
-
multisource_not_found: 'The source path $path was not found
|
|
32
|
+
multisource_not_found: 'The source path $path was not found.\n\nSearch paths:\n${searchstr}',
|
|
33
33
|
},
|
|
34
34
|
});
|
|
35
35
|
// Define a directive that can load content from multiple sources.
|
|
@@ -46,7 +46,10 @@ const MultiSource = (jsonic, popts) => {
|
|
|
46
46
|
// console.log('SRC', from, spec)
|
|
47
47
|
let res = resolver(spec, popts, rule, ctx, jsonic);
|
|
48
48
|
if (!res.found) {
|
|
49
|
-
return (_a = rule.parent) === null || _a === void 0 ? void 0 : _a.o0.bad('multisource_not_found', {
|
|
49
|
+
return (_a = rule.parent) === null || _a === void 0 ? void 0 : _a.o0.bad('multisource_not_found', {
|
|
50
|
+
...res,
|
|
51
|
+
searchstr: ((res === null || res === void 0 ? void 0 : res.search) || [res.full]).join('\n'),
|
|
52
|
+
});
|
|
50
53
|
}
|
|
51
54
|
res.kind = null == res.kind ? NONE : res.kind;
|
|
52
55
|
let proc = processor[res.kind] || processor[NONE];
|
package/dist/multisource.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multisource.js","sourceRoot":"","sources":["../src/multisource.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;AAGpD,iDAA+D;AAE/D,+CAAwD;AACxD,uCAAwD;AAUxD,2CAA2C;AAC3C,MAAM,IAAI,GAAG,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"multisource.js","sourceRoot":"","sources":["../src/multisource.ts"],"names":[],"mappings":"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"}
|
package/dist/multisource.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).JsonicMultiSource=e()}}((function(){var define,module,exports,createModuleFactory=function(e){var
|
|
1
|
+
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).JsonicMultiSource=e()}}((function(){var define,module,exports,createModuleFactory=function(e){var n;return function(t){return n||e(n={exports:{},parent:t},n.exports),n.exports}},_$multisource_1=createModuleFactory((function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.TOP=n.NONE=n.resolvePathSpec=n.MultiSource=void 0;const t=_$jsonic_3({});n.NONE="";const o=Symbol("TOP");n.TOP=o;const l=(e,n)=>{const t=n.markchar,o=n.resolver,l=n.processor,{deep:r}=e.util,i=n.implictExt||[];for(let u=0;u<i.length;u++){let e=i[u];i[u]=e.startsWith(".")?e:"."+e}e.options({error:{multisource_not_found:"source not found: $path"},hint:{multisource_not_found:"The source path $path was not found.\n\nSearch paths:\n${searchstr}"}});let s={name:"multisource",open:t,rules:{open:"val,pair"},action:function(t,i){var s;let u=t.parent.name,a=t.child.node,c=o(a,n,t,i,e);if(!c.found)return null===(s=t.parent)||void 0===s?void 0:s.o0.bad("multisource_not_found",{...c,searchstr:((null==c?void 0:c.search)||[c.full]).join("\n")});c.kind=null==c.kind?"":c.kind,(l[c.kind]||l[""])(c,n,t,i,e),"pair"===u?i.cfg.map.merge?t.parent.parent.node=i.cfg.map.merge(t.parent.parent.node,c.val,t,i):i.cfg.map.extend?t.parent.parent.node=r(t.parent.parent.node,c.val):Object.assign(t.parent.node,c.val):t.node=c.val},custom:(e,{OPEN:n,name:t})=>{e.rule("val",e=>{e.open({s:[n],c:e=>0===e.d,p:"map",b:1,n:{[t+"_top"]:1}})}),e.rule("map",e=>{e.open({s:[n],c:e=>1===e.d&&1===e.n[t+"_top"],p:"pair",b:1})})}};e.use(_$directiveMin_4.Directive,s)};function r(e){return n=>n.val=e(n.src,n)}n.MultiSource=l;const i=r(e=>e),s=r(e=>null==e?void 0:JSON.parse(e)),u=(0,t.makeJsonicProcessor)(),a=(0,_$js_2.makeJavaScriptProcessor)();l.defaults={markchar:"@",processor:{"":i,jsonic:u,jsc:u,json:s,js:a},implictExt:["jsonic","jsc","json","js"]},n.resolvePathSpec=function(e,n,t,o){var l;let r=null===(l=n.meta)||void 0===l?void 0:l.multisource,i=o(null==r||null==r.path?e.path:r.path),s="string"==typeof t?t:null!=t.path?""+t.path:void 0,u=!(!(null==s?void 0:s.startsWith("/"))&&!(null==s?void 0:s.startsWith("\\"))),a=u?s:null!=s&&""!=s?null!=i&&""!=i?i+"/"+s:s:void 0;return{kind:null==a?"":(a.match(/\.([^.]*)$/)||["",""])[1],path:s,full:a,base:i,abs:u,found:!1}}})),_$jsonic_3=createModuleFactory((function(e,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.makeJsonicProcessor=void 0;const t=_$multisource_1({});n.makeJsonicProcessor=function(){return function(e,n,o,l,r){var i;if(null!=e.src&&null!=e.full){let n=(null===(i=l.meta)||void 0===i?void 0:i.multisource)||{},o={...l.meta||{},multisource:{...n,path:e.full}};if(e.val=r(e.src,o),n.deps){let o=n.deps,l=n.path||t.TOP;if(null!=l){let n={tar:l,src:e.full,wen:Date.now()};o[l]=o[l]||{},o[l][e.full]=n}}}}}})),_$directiveMin_4={exports:{}};(function(e){(function(){!function(n){"object"==typeof _$directiveMin_4.exports?_$directiveMin_4.exports=n():"function"==typeof define&&define.amd?define([],n):("undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:this).JsonicDirective=n()}((function(){var e={};Object.defineProperty(e,"__esModule",{value:!0}),e.Directive=void 0;const n=e=>("string"==typeof e?e.split(/\s*,\s*/):e||[]).filter(e=>null!=e&&""!==e),t=(e,t)=>{var o,l;let r,i={open:n(null===(o=null==t?void 0:t.rules)||void 0===o?void 0:o.open),close:n(null===(l=null==t?void 0:t.rules)||void 0===l?void 0:l.close)},s=t.name,u=t.open,a=t.close,c=t.custom;if("string"==typeof t.action){let n=t.action;r=t=>t.node=e.util.prop(e.options,n)}else r=t.action;let d={},p="#OD_"+s,f="#CD_"+s,v=e.fixed(u),_=null==a?null:e.fixed(a);if(null!=v)throw new Error("Directive open token already in use: "+u);d[p]=u,null==_&&null!=a&&(d[f]=a),e.options({fixed:{token:d},error:{[s+"_close"]:null==a?null:"directive "+s+' close "'+a+'" without open "'+u+'"'},hint:{[s+"_close"]:null==a?null:`\nThe ${s} directive must start with the characters "${u}" and end\nwith the characters "${a}". The end characters "${a}" may not\nappear without the start characters "${u}" appearing first:\n"${u}...${a}".\n`}});let m=e.token.CA;v=e.fixed(u),_=null==a?null:e.fixed(a),i.open.forEach(n=>{e.rule(n,e=>(e.open({s:[v],p:s,n:{["dr_"+s]:1},g:"start"}),null!=a&&(e.open({s:[v,_],b:1,p:s,n:{["dr_"+s]:1},g:"start,end"}),e.close({s:[_],b:1,g:"end"})),e))}),null!=a&&i.close.forEach(n=>{e.rule(n,e=>{e.close([{s:[_],c:e=>1===e.n["dr_"+s],b:1,g:"end"},{s:[m,_],c:e=>1===e.n["dr_"+s],b:1,g:"end,comma"}])})}),e.rule(s,e=>e.clear().bo(e=>{e.node={}}).open([null!=a?{s:[_],b:1}:null,{p:"val",n:null==a?{dlist:1,dmap:1}:{dlist:0,dmap:0}}]).bc((function(e,n,t,o){let l=r.call(this,e,n,t,o);if(null==l?void 0:l.isToken)return l})).close(null!=a?[{s:[_]},{s:[m,_]}]:[])),c&&c(e,{OPEN:v,CLOSE:_,name:s})};return e.Directive=t,t.defaults={rules:{open:"val",close:"list,elem,map,pair"}},e}))}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}),_$directiveMin_4=_$directiveMin_4.exports;var _$js_2={};function makeJavaScriptProcessor(e){const n=n=>{n.val=evaluate(n,e)};return n.opts=e,n}function evaluate(res,opts){let out;if(!0!==(null==opts?void 0:opts.evalOnly))out=require(res.full);else{let exports=null,module={exports:exports};eval(res.src),out=module.exports}return out}return Object.defineProperty(_$js_2,"__esModule",{value:!0}),_$js_2.makeJavaScriptProcessor=void 0,_$js_2.makeJavaScriptProcessor=makeJavaScriptProcessor,_$multisource_1(),_$multisource_1}));
|
package/dist/resolver/file.js
CHANGED
|
@@ -13,11 +13,14 @@ function makeFileResolver(pathfinder) {
|
|
|
13
13
|
let foundSpec = pathfinder ? pathfinder(spec) : spec;
|
|
14
14
|
let ps = (0, multisource_1.resolvePathSpec)(popts, ctx, foundSpec, resolvefolder);
|
|
15
15
|
let src = undefined;
|
|
16
|
+
let search = [];
|
|
16
17
|
if (null != ps.full) {
|
|
17
18
|
ps.full = path_1.default.resolve(ps.full);
|
|
19
|
+
search.push(ps.full);
|
|
18
20
|
src = load(ps.full);
|
|
19
21
|
if (null == src && multisource_1.NONE === ps.kind) {
|
|
20
22
|
let potentials = (0, mem_1.buildPotentials)(ps, popts, (...s) => path_1.default.resolve(s.reduce((a, p) => path_1.default.join(a, p))));
|
|
23
|
+
search.push(...potentials);
|
|
21
24
|
for (let path of potentials) {
|
|
22
25
|
if (null != (src = load(path))) {
|
|
23
26
|
ps.full = path;
|
|
@@ -30,7 +33,8 @@ function makeFileResolver(pathfinder) {
|
|
|
30
33
|
let res = {
|
|
31
34
|
...ps,
|
|
32
35
|
src,
|
|
33
|
-
found: null != src
|
|
36
|
+
found: null != src,
|
|
37
|
+
search,
|
|
34
38
|
};
|
|
35
39
|
return res;
|
|
36
40
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/resolver/file.ts"],"names":[],"mappings":";;;;;;AAAA,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,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE;YACnB,EAAE,CAAC,IAAI,GAAG,cAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;YAE/B,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/resolver/file.ts"],"names":[],"mappings":";;;;;;AAAA,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;YACnB,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;YAGnB,IAAI,IAAI,IAAI,GAAG,IAAI,kBAAI,KAAK,EAAE,CAAC,IAAI,EAAE;gBACnC,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;oBAC3B,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;wBAC9B,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;qBACN;iBACF;aACF;SACF;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;AAgCC,4CAAgB;AA9BlB,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,QAAQ,KAAK,OAAO,IAAI,EAAE;QAC5B,OAAO,IAAI,CAAA;KACZ;IAED,IAAI,MAAM,GAAG,IAAI,CAAA;IACjB,IAAI,SAAS,GAAG,YAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAEjC,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE;QACtB,IAAI,QAAQ,GAAG,cAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC/B,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAA;KACtB;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAGD,qEAAqE;AACrE,SAAS,IAAI,CAAC,IAAY;IACxB,IAAI;QACF,OAAO,YAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAA;KACxC;IACD,OAAO,CAAC,EAAE;QACR,6DAA6D;QAC7D,mCAAmC;KACpC;AACH,CAAC"}
|
package/dist/resolver/mem.js
CHANGED
|
@@ -45,26 +45,30 @@ function buildPotentials(ps, popts, pathjoin) {
|
|
|
45
45
|
let full = ps.full;
|
|
46
46
|
let potentials = [];
|
|
47
47
|
let implictExt = popts.implictExt || [];
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
48
|
+
let hasExt = full.match(implictExt.join('|') + '$');
|
|
49
|
+
// TODO: use Jsonic.util.escre
|
|
50
|
+
if (!hasExt) {
|
|
51
|
+
// Implicit extensions.
|
|
52
|
+
for (let ext of implictExt) {
|
|
53
|
+
potentials.push(full + ext);
|
|
54
|
+
}
|
|
55
|
+
// Folder index file.
|
|
56
|
+
for (let ext of implictExt) {
|
|
57
|
+
potentials.push(pathjoin(full, 'index' + ext));
|
|
58
|
+
}
|
|
59
|
+
// Folder index file (includes folder name).
|
|
60
|
+
if (null != ps.path) {
|
|
61
|
+
let folder = (ps.path
|
|
62
|
+
.replace(/[\\\/]+$/, '')
|
|
63
|
+
.match(/[^\\\/]+$/) || [])[0];
|
|
64
|
+
if (null != folder) {
|
|
65
|
+
for (let ext of implictExt) {
|
|
66
|
+
potentials.push(pathjoin(full, 'index.' + folder + ext));
|
|
67
|
+
}
|
|
64
68
|
}
|
|
65
69
|
}
|
|
66
70
|
}
|
|
67
|
-
// console.log(potentials)
|
|
71
|
+
// console.log('POT', potentials)
|
|
68
72
|
return potentials;
|
|
69
73
|
}
|
|
70
74
|
exports.buildPotentials = buildPotentials;
|
package/dist/resolver/mem.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mem.js","sourceRoot":"","sources":["../../src/resolver/mem.ts"],"names":[],"mappings":";;;AAIA,gDAOuB;AAGvB,SAAS,eAAe,CAAC,OAAuC;IAE9D,OAAO,SAAS,WAAW,CACzB,IAAS,EACT,KAAyB,EACzB,KAAW,EACX,GAAY;QAEZ,IAAI,EAAE,GAAG,IAAA,6BAAe,EAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAA;QACtE,IAAI,GAAG,GAAG,SAAS,CAAA;QAEnB,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE;YACnB,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;YAEtB,IAAI,IAAI,IAAI,GAAG,IAAI,kBAAI,KAAK,EAAE,CAAC,IAAI,EAAE;gBACnC,IAAI,UAAU,GACZ,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAClC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;gBAEpC,KAAK,IAAI,IAAI,IAAI,UAAU,EAAE;oBAC3B,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;wBACjC,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;qBACN;iBACF;aACF;SACF;QAED,IAAI,GAAG,GAAe;YACpB,GAAG,EAAE;YACL,GAAG;YACH,KAAK,EAAE,IAAI,IAAI,GAAG;SACnB,CAAA;QAED,OAAO,GAAG,CAAA;IACZ,CAAC,CAAA;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"mem.js","sourceRoot":"","sources":["../../src/resolver/mem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.makePkgResolver = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const multisource_1 = require("../multisource");
|
|
10
|
+
const mem_1 = require("./mem");
|
|
11
|
+
function makePkgResolver(options) {
|
|
12
|
+
const useRequire = options.require || require;
|
|
13
|
+
return function PkgResolver(spec, popts, _rule, ctx) {
|
|
14
|
+
let foundSpec = spec;
|
|
15
|
+
let ps = (0, multisource_1.resolvePathSpec)(popts, ctx, foundSpec, resolvefolder);
|
|
16
|
+
let src = undefined;
|
|
17
|
+
let search = [];
|
|
18
|
+
if (null != ps.path) {
|
|
19
|
+
try {
|
|
20
|
+
ps.full = useRequire.resolve(ps.path);
|
|
21
|
+
if (null != ps.full) {
|
|
22
|
+
src = load(ps.full);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (me) {
|
|
26
|
+
search.push(...(useRequire.resolve.paths(ps.path)
|
|
27
|
+
.map((p) => path_1.default.join(p, ps.path))));
|
|
28
|
+
let potentials = (0, mem_1.buildPotentials)(ps, popts, (...s) => path_1.default.resolve(s.reduce((a, p) => path_1.default.join(a, p))));
|
|
29
|
+
for (let path of potentials) {
|
|
30
|
+
try {
|
|
31
|
+
ps.full = useRequire.resolve(path);
|
|
32
|
+
if (null != ps.full) {
|
|
33
|
+
src = load(ps.full);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (me) {
|
|
37
|
+
search.push(...(useRequire.resolve.paths(path)
|
|
38
|
+
.map((p) => path_1.default.join(p, path))));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
let res = {
|
|
44
|
+
...ps,
|
|
45
|
+
src,
|
|
46
|
+
found: null != src,
|
|
47
|
+
search,
|
|
48
|
+
};
|
|
49
|
+
return res;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
exports.makePkgResolver = makePkgResolver;
|
|
53
|
+
function resolvefolder(path) {
|
|
54
|
+
if ('string' !== typeof path) {
|
|
55
|
+
return path;
|
|
56
|
+
}
|
|
57
|
+
let folder = path;
|
|
58
|
+
let pathstats = fs_1.default.statSync(path);
|
|
59
|
+
if (pathstats.isFile()) {
|
|
60
|
+
let pathdesc = path_1.default.parse(path);
|
|
61
|
+
folder = pathdesc.dir;
|
|
62
|
+
}
|
|
63
|
+
return folder;
|
|
64
|
+
}
|
|
65
|
+
// TODO: in multisource.ts, generate an error token if cannot resolve
|
|
66
|
+
function load(path) {
|
|
67
|
+
try {
|
|
68
|
+
return fs_1.default.readFileSync(path).toString();
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
// NOTE: don't need this, as in all cases, we consider failed
|
|
72
|
+
// reads to indicate non-existence.
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=pkg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pkg.js","sourceRoot":"","sources":["../../src/resolver/pkg.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsonic/multisource",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/multisource.js",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -41,19 +41,19 @@
|
|
|
41
41
|
"dist"
|
|
42
42
|
],
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@types/jest": "^29.
|
|
44
|
+
"@types/jest": "^29.5.0",
|
|
45
45
|
"browserify": "^17.0.0",
|
|
46
|
-
"
|
|
46
|
+
"es-jest": "^2.1.0",
|
|
47
|
+
"esbuild": "^0.17.12",
|
|
47
48
|
"esbuild-jest": "^0.5.0",
|
|
48
|
-
"jest": "^29.
|
|
49
|
-
"prettier": "^2.8.
|
|
49
|
+
"jest": "^29.5.0",
|
|
50
|
+
"prettier": "^2.8.5",
|
|
50
51
|
"tinyify": "^4.0.0",
|
|
51
|
-
"
|
|
52
|
-
"
|
|
52
|
+
"typescript": "^5.0.2",
|
|
53
|
+
"jsonic-multisource-pkg-test": "^0.0.1"
|
|
53
54
|
},
|
|
54
55
|
"peerDependencies": {
|
|
55
|
-
"@jsonic/
|
|
56
|
-
"@jsonic/
|
|
57
|
-
}
|
|
58
|
-
"dependencies": {}
|
|
56
|
+
"@jsonic/directive": ">=0.11.0",
|
|
57
|
+
"@jsonic/jsonic-next": ">=2.10.0"
|
|
58
|
+
}
|
|
59
59
|
}
|
package/src/multisource.ts
CHANGED
|
@@ -40,6 +40,7 @@ type Resolution = PathSpec & {
|
|
|
40
40
|
src?: string // Undefined if no resolution
|
|
41
41
|
val?: any // Undefined if no resolution
|
|
42
42
|
found: boolean // True if source file was found
|
|
43
|
+
search?: string[] // List of searched paths.
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
// Resolve the source.
|
|
@@ -97,7 +98,8 @@ const MultiSource: Plugin = (jsonic: Jsonic, popts: MultiSourceOptions) => {
|
|
|
97
98
|
hint: {
|
|
98
99
|
// TODO: use $details for more explanation in error message.
|
|
99
100
|
// In particular to show resolved absolute path.
|
|
100
|
-
multisource_not_found:
|
|
101
|
+
multisource_not_found:
|
|
102
|
+
'The source path $path was not found.\n\nSearch paths:\n${searchstr}',
|
|
101
103
|
},
|
|
102
104
|
})
|
|
103
105
|
|
|
@@ -115,7 +117,10 @@ const MultiSource: Plugin = (jsonic: Jsonic, popts: MultiSourceOptions) => {
|
|
|
115
117
|
|
|
116
118
|
let res = resolver(spec, popts, rule, ctx, jsonic)
|
|
117
119
|
if (!res.found) {
|
|
118
|
-
return rule.parent?.o0.bad('multisource_not_found', {
|
|
120
|
+
return rule.parent?.o0.bad('multisource_not_found', {
|
|
121
|
+
...res,
|
|
122
|
+
searchstr: (res?.search || [res.full]).join('\n'),
|
|
123
|
+
})
|
|
119
124
|
}
|
|
120
125
|
|
|
121
126
|
res.kind = null == res.kind ? NONE : res.kind
|
package/src/resolver/file.ts
CHANGED
|
@@ -32,15 +32,20 @@ function makeFileResolver(pathfinder?: PathFinder): Resolver {
|
|
|
32
32
|
let ps = resolvePathSpec(popts, ctx, foundSpec, resolvefolder)
|
|
33
33
|
let src = undefined
|
|
34
34
|
|
|
35
|
+
let search: string[] = []
|
|
36
|
+
|
|
35
37
|
if (null != ps.full) {
|
|
36
38
|
ps.full = Path.resolve(ps.full)
|
|
37
39
|
|
|
40
|
+
search.push(ps.full)
|
|
38
41
|
src = load(ps.full)
|
|
39
42
|
|
|
43
|
+
|
|
40
44
|
if (null == src && NONE === ps.kind) {
|
|
41
45
|
let potentials =
|
|
42
46
|
buildPotentials(ps, popts, (...s) =>
|
|
43
47
|
Path.resolve(s.reduce((a, p) => Path.join(a, p))))
|
|
48
|
+
search.push(...potentials)
|
|
44
49
|
|
|
45
50
|
for (let path of potentials) {
|
|
46
51
|
if (null != (src = load(path))) {
|
|
@@ -55,7 +60,8 @@ function makeFileResolver(pathfinder?: PathFinder): Resolver {
|
|
|
55
60
|
let res: Resolution = {
|
|
56
61
|
...ps,
|
|
57
62
|
src,
|
|
58
|
-
found: null != src
|
|
63
|
+
found: null != src,
|
|
64
|
+
search,
|
|
59
65
|
}
|
|
60
66
|
|
|
61
67
|
return res
|
package/src/resolver/mem.ts
CHANGED
|
@@ -74,30 +74,34 @@ function buildPotentials(
|
|
|
74
74
|
let full = (ps.full as string)
|
|
75
75
|
let potentials: string[] = []
|
|
76
76
|
let implictExt: string[] = popts.implictExt || []
|
|
77
|
+
let hasExt = full.match(implictExt.join('|') + '$')
|
|
77
78
|
|
|
78
|
-
//
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
// TODO: use Jsonic.util.escre
|
|
80
|
+
if (!hasExt) {
|
|
81
|
+
// Implicit extensions.
|
|
82
|
+
for (let ext of implictExt) {
|
|
83
|
+
potentials.push(full + ext)
|
|
84
|
+
}
|
|
82
85
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
// Folder index file.
|
|
87
|
+
for (let ext of implictExt) {
|
|
88
|
+
potentials.push(pathjoin(full, 'index' + ext))
|
|
89
|
+
}
|
|
87
90
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
91
|
+
// Folder index file (includes folder name).
|
|
92
|
+
if (null != ps.path) {
|
|
93
|
+
let folder = (ps.path
|
|
94
|
+
.replace(/[\\\/]+$/, '')
|
|
95
|
+
.match(/[^\\\/]+$/) || [])[0]
|
|
96
|
+
if (null != folder) {
|
|
97
|
+
for (let ext of implictExt) {
|
|
98
|
+
potentials.push(pathjoin(full, 'index.' + folder + ext))
|
|
99
|
+
}
|
|
96
100
|
}
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
103
|
|
|
100
|
-
// console.log(potentials)
|
|
104
|
+
// console.log('POT', potentials)
|
|
101
105
|
|
|
102
106
|
return potentials
|
|
103
107
|
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import Fs from 'fs'
|
|
2
|
+
import Path from 'path'
|
|
3
|
+
|
|
4
|
+
import { Rule, Context } from '@jsonic/jsonic-next'
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
MultiSourceOptions,
|
|
8
|
+
Resolver,
|
|
9
|
+
Resolution,
|
|
10
|
+
resolvePathSpec,
|
|
11
|
+
// NONE,
|
|
12
|
+
} from '../multisource'
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
import {
|
|
16
|
+
buildPotentials
|
|
17
|
+
} from './mem'
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
function makePkgResolver(options: any): Resolver {
|
|
21
|
+
const useRequire = options.require || require
|
|
22
|
+
|
|
23
|
+
return function PkgResolver(
|
|
24
|
+
spec: any,
|
|
25
|
+
popts: MultiSourceOptions,
|
|
26
|
+
_rule: Rule,
|
|
27
|
+
ctx: Context,
|
|
28
|
+
): Resolution {
|
|
29
|
+
let foundSpec = spec
|
|
30
|
+
|
|
31
|
+
let ps = resolvePathSpec(popts, ctx, foundSpec, resolvefolder)
|
|
32
|
+
let src = undefined
|
|
33
|
+
let search: string[] = []
|
|
34
|
+
|
|
35
|
+
if (null != ps.path) {
|
|
36
|
+
try {
|
|
37
|
+
ps.full = useRequire.resolve(ps.path)
|
|
38
|
+
if (null != ps.full) {
|
|
39
|
+
src = load(ps.full)
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (me: any) {
|
|
43
|
+
search.push(...(useRequire.resolve.paths(ps.path)
|
|
44
|
+
.map((p: string) => Path.join(p, (ps.path as string)))))
|
|
45
|
+
|
|
46
|
+
let potentials =
|
|
47
|
+
buildPotentials(ps, popts, (...s) =>
|
|
48
|
+
Path.resolve(s.reduce((a, p) => Path.join(a, p))))
|
|
49
|
+
|
|
50
|
+
for (let path of potentials) {
|
|
51
|
+
try {
|
|
52
|
+
ps.full = useRequire.resolve(path)
|
|
53
|
+
if (null != ps.full) {
|
|
54
|
+
src = load(ps.full)
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (me: any) {
|
|
58
|
+
search.push(...(useRequire.resolve.paths(path)
|
|
59
|
+
.map((p: string) => Path.join(p, (path as string)))))
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
let res: Resolution = {
|
|
66
|
+
...ps,
|
|
67
|
+
src,
|
|
68
|
+
found: null != src,
|
|
69
|
+
search,
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return res
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
function resolvefolder(path: string) {
|
|
78
|
+
if ('string' !== typeof path) {
|
|
79
|
+
return path
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
let folder = path
|
|
83
|
+
let pathstats = Fs.statSync(path)
|
|
84
|
+
|
|
85
|
+
if (pathstats.isFile()) {
|
|
86
|
+
let pathdesc = Path.parse(path)
|
|
87
|
+
folder = pathdesc.dir
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return folder
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
// TODO: in multisource.ts, generate an error token if cannot resolve
|
|
95
|
+
function load(path: string) {
|
|
96
|
+
try {
|
|
97
|
+
return Fs.readFileSync(path).toString()
|
|
98
|
+
}
|
|
99
|
+
catch (e) {
|
|
100
|
+
// NOTE: don't need this, as in all cases, we consider failed
|
|
101
|
+
// reads to indicate non-existence.
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
export {
|
|
107
|
+
makePkgResolver,
|
|
108
|
+
}
|