@jsonic/multisource 0.1.0 → 0.4.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.js +3 -2
- package/dist/multisource.js.map +1 -1
- package/dist/multisource.min.js +1 -1
- package/dist/resolver/file.d.ts +2 -1
- package/dist/resolver/file.js +6 -4
- package/dist/resolver/file.js.map +1 -1
- package/jest.config.js +4 -2
- package/package.json +11 -8
- package/src/multisource.ts +3 -3
- package/src/resolver/file.ts +10 -5
- package/src/resolver/file.ts.off +0 -49
package/dist/multisource.js
CHANGED
|
@@ -26,7 +26,9 @@ const MultiSource = (jsonic, popts) => {
|
|
|
26
26
|
multisource_not_found: 'source not found: $path',
|
|
27
27
|
},
|
|
28
28
|
hint: {
|
|
29
|
-
|
|
29
|
+
// TODO: use $details for more explanation in error message.
|
|
30
|
+
// In particular to show resolved absolute path.
|
|
31
|
+
multisource_not_found: 'The source path $path was not found.',
|
|
30
32
|
},
|
|
31
33
|
});
|
|
32
34
|
// Define a directive that can load content from multiple sources.
|
|
@@ -96,7 +98,6 @@ function resolvePathSpec(popts, ctx, spec, resolvefolder) {
|
|
|
96
98
|
abs,
|
|
97
99
|
found: false,
|
|
98
100
|
};
|
|
99
|
-
// console.log('RES', res)
|
|
100
101
|
return res;
|
|
101
102
|
}
|
|
102
103
|
exports.resolvePathSpec = resolvePathSpec;
|
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;AA8Lb,oBAAI;AApIN,kCAAkC;AAClC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;AAoIvB,kBAAG;AAlIL,MAAM,WAAW,GAAW,CAAC,MAAc,EAAE,KAAyB,EAAE,EAAE;IACxE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAkB,CAAA;IACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAoB,CAAA;IAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,SAA0C,CAAA;IAElE,mDAAmD;IACnD,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAa,CAAA;IACvD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACnD,IAAI,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAC1B,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAA;KACzD;IAED,MAAM,CAAC,OAAO,CAAC;QACb,KAAK,EAAE;YACL,qBAAqB,EAAE,yBAAyB;SACjD;QACD,IAAI,EAAE;YACJ,qBAAqB,EAAE,
|
|
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 t;return function(o){return t||e(t={exports:{},parent:o},t.exports),t.exports}},_$multisource_1=createModuleFactory((function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TOP=t.NONE=t.resolvePathSpec=t.MultiSource=void 0;const o=_$jsonic_3({});t.NONE="";const n=Symbol("TOP");t.TOP=n;const l=(e,t)=>{const o=t.markchar,n=t.resolver,l=t.processor,i=t.implictExt||[];for(let s=0;s<i.length;s++){let e=i[s];i[s]=e.startsWith(".")?e:"."+e}e.options({error:{multisource_not_found:"source not found: $path"},hint:{multisource_not_found:"
|
|
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 t;return function(o){return t||e(t={exports:{},parent:o},t.exports),t.exports}},_$multisource_1=createModuleFactory((function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TOP=t.NONE=t.resolvePathSpec=t.MultiSource=void 0;const o=_$jsonic_3({});t.NONE="";const n=Symbol("TOP");t.TOP=n;const l=(e,t)=>{const o=t.markchar,n=t.resolver,l=t.processor,i=t.implictExt||[];for(let s=0;s<i.length;s++){let e=i[s];i[s]=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."}});let r={name:"multisource",open:o,action:(o,i)=>{var r;let s=o.child.node,u=n(s,t,o,i,e);if(!u.found)return null===(r=o.parent)||void 0===r?void 0:r.o0.bad("multisource_not_found",{...u});u.kind=null==u.kind?"":u.kind,(l[u.kind]||l[""])(u,t,o,i,e),o.node=u.val}};e.use(_$directiveMin_4.Directive,r)};function i(e){return t=>t.val=e(t.src,t)}t.MultiSource=l;const r=i(e=>e),s=i(e=>null==e?void 0:JSON.parse(e)),u=(0,o.makeJsonicProcessor)(),c=(0,_$js_2.makeJavaScriptProcessor)();l.defaults={markchar:"@",processor:{"":r,jsonic:u,jsc:u,json:s,js:c},implictExt:["jsonic","jsc","json","js"]},t.resolvePathSpec=function(e,t,o,n){var l;let i=null===(l=t.meta)||void 0===l?void 0:l.multisource,r=n(null==i||null==i.path?e.path:i.path),s="string"==typeof o?o:null!=o.path?""+o.path:void 0,u=!(!(null==s?void 0:s.startsWith("/"))&&!(null==s?void 0:s.startsWith("\\"))),c=u?s:null!=s&&""!=s?null!=r&&""!=r?r+"/"+s:s:void 0;return{kind:null==c?"":(c.match(/\.([^.]*)$/)||["",""])[1],path:s,full:c,base:r,abs:u,found:!1}}})),_$jsonic_3=createModuleFactory((function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.makeJsonicProcessor=void 0;const o=_$multisource_1({});t.makeJsonicProcessor=function(){return function(e,t,n,l,i){var r;if(null!=e.src&&null!=e.full){let t=(null===(r=l.meta)||void 0===r?void 0:r.multisource)||{},n={...l.meta||{},multisource:{...t,path:e.full}};if(e.val=i(e.src,n),t.deps){let n=t.deps,l=t.path||o.TOP;if(null!=l){let t={tar:l,src:e.full,wen:Date.now()};n[l]=n[l]||{},n[l][e.full]=t}}}}}})),_$directiveMin_4={exports:{}};(function(e){(function(){!function(t){"object"==typeof _$directiveMin_4.exports?_$directiveMin_4.exports=t():"function"==typeof define&&define.amd?define([],t):("undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:this).JsonicDirective=t()}((function(){var e={};Object.defineProperty(e,"__esModule",{value:!0}),e.Directive=void 0;const t=(e,t)=>{let o=("string"==typeof t.rules?t.rules.split(/\s*,\s*/):t.rules||[]).filter(e=>""!==e),n=t.name,l=t.open,i=t.close,r=t.action;if("string"==typeof r){let t=r;r=o=>o.node=e.util.prop(e.options,t)}let s={},u="#D_open_"+n,c="#D_close_"+n,a=e.fixed(l),d=null==i?null:e.fixed(i);if(null!=a)throw new Error("Directive open token already in use: "+l);s[u]=l,null==d&&null!=i&&(s[c]=i),e.options({fixed:{token:s},error:{[n+"_close"]:null==i?null:"directive "+n+' close "'+i+'" without open "'+l+'"'},hint:{[n+"_close"]:null==i?null:`\nThe ${n} directive must start with the characters "${l}" and end\nwith the characters "${i}". The end characters "${i}" may not\nappear without the start characters "${l}" appearing first:\n"${l}...${i}".\n`}});let f=e.token.CA;a=e.fixed(l),d=null==i?null:e.fixed(i),o.forEach(t=>{e.rule(t,e=>(e.open({s:[a],p:n,n:{dr:1}}),null!=i&&(e.open([{s:[d],c:{n:{dr:0}},e:(e,t)=>t.t0.bad(n+"_close")},{s:[d],b:1}]),e.close({s:[d],b:1})),e))}),e.rule(n,e=>e.clear().bo(e=>e.node={}).open([{p:"val",n:null==i?{}:{pk:-1,il:0}}]).bc((...e)=>r(...e)).close(null!=i?[{s:[d]},{s:[f,d]}]:[]))};return e.Directive=t,t.defaults={rules:"val,pair,elem"},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 t=t=>{t.val=evaluate(t,e)};return t.opts=e,t}function evaluate(res,opts){let out=void 0;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.d.ts
CHANGED
package/dist/resolver/file.js
CHANGED
|
@@ -8,11 +8,11 @@ const fs_1 = __importDefault(require("fs"));
|
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const multisource_1 = require("../multisource");
|
|
10
10
|
const mem_1 = require("./mem");
|
|
11
|
-
function makeFileResolver() {
|
|
11
|
+
function makeFileResolver(pathfinder) {
|
|
12
12
|
return function FileResolver(spec, popts, _rule, ctx) {
|
|
13
|
-
let
|
|
13
|
+
let foundSpec = pathfinder ? pathfinder(spec) : spec;
|
|
14
|
+
let ps = (0, multisource_1.resolvePathSpec)(popts, ctx, foundSpec, resolvefolder);
|
|
14
15
|
let src = undefined;
|
|
15
|
-
// console.log(ps)
|
|
16
16
|
if (null != ps.full) {
|
|
17
17
|
ps.full = path_1.default.resolve(ps.full);
|
|
18
18
|
src = load(ps.full);
|
|
@@ -37,6 +37,9 @@ function makeFileResolver() {
|
|
|
37
37
|
}
|
|
38
38
|
exports.makeFileResolver = makeFileResolver;
|
|
39
39
|
function resolvefolder(path) {
|
|
40
|
+
if ('string' !== typeof path) {
|
|
41
|
+
return path;
|
|
42
|
+
}
|
|
40
43
|
let folder = path;
|
|
41
44
|
let pathstats = fs_1.default.statSync(path);
|
|
42
45
|
if (pathstats.isFile()) {
|
|
@@ -47,7 +50,6 @@ function resolvefolder(path) {
|
|
|
47
50
|
}
|
|
48
51
|
// TODO: in multisource.ts, generate an error token if cannot resolve
|
|
49
52
|
function load(path) {
|
|
50
|
-
// console.log('LOAD', path)
|
|
51
53
|
try {
|
|
52
54
|
return fs_1.default.readFileSync(path).toString();
|
|
53
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/resolver/file.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAmB;AACnB,gDAAuB;AAIvB,gDAMuB;AAGvB,+BAEc;
|
|
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;YAEnB,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;gBAEtD,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;SACnB,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/jest.config.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/** @type {import('@ts-jest/dist/types').InitialOptionsTsJest} */
|
|
2
2
|
module.exports = {
|
|
3
|
-
|
|
3
|
+
transform: {
|
|
4
|
+
"^.+\\.tsx?$": "esbuild-jest"
|
|
5
|
+
},
|
|
4
6
|
testEnvironment: 'node',
|
|
5
7
|
testMatch: ['**/test/**/*.test.ts'],
|
|
6
8
|
watchPathIgnorePatterns: ['.*.js$'],
|
|
7
|
-
}
|
|
9
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsonic/multisource",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/multisource.js",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"reset": "npm run clean && npm i && npm test",
|
|
30
30
|
"repo-tag": "REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo TAG: v$REPO_VERSION && git commit -a -m v$REPO_VERSION && git push && git tag v$REPO_VERSION && git push --tags;",
|
|
31
31
|
"repo-publish": "npm run clean && npm i && npm run repo-publish-quick",
|
|
32
|
-
"repo-publish-quick": "npm run prettier && npm run build && npm run test && npm run repo-tag && npm publish --access public --registry
|
|
32
|
+
"repo-publish-quick": "npm run prettier && npm run build && npm run test && npm run repo-tag && npm publish --access public --registry https://registry.npmjs.org "
|
|
33
33
|
},
|
|
34
34
|
"license": "MIT",
|
|
35
35
|
"files": [
|
|
@@ -41,15 +41,18 @@
|
|
|
41
41
|
"dist"
|
|
42
42
|
],
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@types/jest": "^27.
|
|
45
|
-
"
|
|
44
|
+
"@types/jest": "^27.4.1",
|
|
45
|
+
"browserify": "^17.0.0",
|
|
46
|
+
"esbuild": "^0.14.29",
|
|
47
|
+
"esbuild-jest": "^0.5.0",
|
|
48
|
+
"jest": "^27.5.1",
|
|
46
49
|
"jsonic": "github:jsonicjs/jsonic#nextgen",
|
|
47
|
-
"prettier": "^2.
|
|
50
|
+
"prettier": "^2.6.1",
|
|
48
51
|
"tinyify": "^3.0.0",
|
|
49
|
-
"ts-jest": "^27.
|
|
50
|
-
"typescript": "^4.
|
|
52
|
+
"ts-jest": "^27.1.4",
|
|
53
|
+
"typescript": "^4.6.3"
|
|
51
54
|
},
|
|
52
55
|
"dependencies": {
|
|
53
|
-
"@jsonic/directive": "^0.
|
|
56
|
+
"@jsonic/directive": "^0.5.0"
|
|
54
57
|
}
|
|
55
58
|
}
|
package/src/multisource.ts
CHANGED
|
@@ -93,7 +93,9 @@ const MultiSource: Plugin = (jsonic: Jsonic, popts: MultiSourceOptions) => {
|
|
|
93
93
|
multisource_not_found: 'source not found: $path',
|
|
94
94
|
},
|
|
95
95
|
hint: {
|
|
96
|
-
|
|
96
|
+
// TODO: use $details for more explanation in error message.
|
|
97
|
+
// In particular to show resolved absolute path.
|
|
98
|
+
multisource_not_found: 'The source path $path was not found.',
|
|
97
99
|
},
|
|
98
100
|
})
|
|
99
101
|
|
|
@@ -186,8 +188,6 @@ function resolvePathSpec(
|
|
|
186
188
|
found: false,
|
|
187
189
|
}
|
|
188
190
|
|
|
189
|
-
// console.log('RES', res)
|
|
190
|
-
|
|
191
191
|
return res
|
|
192
192
|
}
|
|
193
193
|
|
package/src/resolver/file.ts
CHANGED
|
@@ -17,7 +17,9 @@ import {
|
|
|
17
17
|
} from './mem'
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
type PathFinder = (spec: any) => string
|
|
21
|
+
|
|
22
|
+
function makeFileResolver(pathfinder?: PathFinder): Resolver {
|
|
21
23
|
|
|
22
24
|
return function FileResolver(
|
|
23
25
|
spec: any,
|
|
@@ -25,10 +27,10 @@ function makeFileResolver(): Resolver {
|
|
|
25
27
|
_rule: Rule,
|
|
26
28
|
ctx: Context,
|
|
27
29
|
): Resolution {
|
|
28
|
-
let
|
|
29
|
-
let src = undefined
|
|
30
|
+
let foundSpec = pathfinder ? pathfinder(spec) : spec
|
|
30
31
|
|
|
31
|
-
|
|
32
|
+
let ps = resolvePathSpec(popts, ctx, foundSpec, resolvefolder)
|
|
33
|
+
let src = undefined
|
|
32
34
|
|
|
33
35
|
if (null != ps.full) {
|
|
34
36
|
ps.full = Path.resolve(ps.full)
|
|
@@ -61,6 +63,10 @@ function makeFileResolver(): Resolver {
|
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
function resolvefolder(path: string) {
|
|
66
|
+
if ('string' !== typeof path) {
|
|
67
|
+
return path
|
|
68
|
+
}
|
|
69
|
+
|
|
64
70
|
let folder = path
|
|
65
71
|
let pathstats = Fs.statSync(path)
|
|
66
72
|
|
|
@@ -75,7 +81,6 @@ function resolvefolder(path: string) {
|
|
|
75
81
|
|
|
76
82
|
// TODO: in multisource.ts, generate an error token if cannot resolve
|
|
77
83
|
function load(path: string) {
|
|
78
|
-
// console.log('LOAD', path)
|
|
79
84
|
try {
|
|
80
85
|
return Fs.readFileSync(path).toString()
|
|
81
86
|
}
|
package/src/resolver/file.ts.off
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Fs from 'fs'
|
|
3
|
-
import Path from 'path'
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
import { Context } from 'jsonic'
|
|
8
|
-
import { Resolver, Resolution } from '../multisource'
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
function makeFileResolver(): Resolver {
|
|
12
|
-
|
|
13
|
-
return function FileResolver(path: string, ctx?: Context): Resolution {
|
|
14
|
-
let msmeta = ctx && ctx.meta && ctx.meta.multisource || {}
|
|
15
|
-
let popts = ctx && ctx.opts && ctx.opts &&
|
|
16
|
-
ctx.opts.plugin && ctx.opts.plugin.multisource || {}
|
|
17
|
-
|
|
18
|
-
let basefile =
|
|
19
|
-
null == msmeta.path ?
|
|
20
|
-
null == popts.path ?
|
|
21
|
-
path : popts.path : msmeta.path
|
|
22
|
-
|
|
23
|
-
let fstats = Fs.statSync(basefile)
|
|
24
|
-
let basepath = basefile
|
|
25
|
-
|
|
26
|
-
if (fstats.isFile()) {
|
|
27
|
-
let basedesc = Path.parse(basefile)
|
|
28
|
-
basepath = basedesc.dir
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
let isabsolute = Path.isAbsolute(path)
|
|
32
|
-
let fullpath = isabsolute ? path :
|
|
33
|
-
(null == basepath ? path : Path.resolve(basepath, path))
|
|
34
|
-
|
|
35
|
-
let src = Fs.readFileSync(fullpath).toString()
|
|
36
|
-
|
|
37
|
-
return {
|
|
38
|
-
path: path,
|
|
39
|
-
full: fullpath,
|
|
40
|
-
base: basepath,
|
|
41
|
-
src,
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
export {
|
|
48
|
-
makeFileResolver
|
|
49
|
-
}
|