locter 0.7.0 → 0.8.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/index.cjs CHANGED
@@ -1,2 +1,472 @@
1
- "use strict";var t=require("ebec"),r=require("node:url"),e=require("glob"),n=require("node:util"),o=require("node:path"),i=require("node:fs");function a(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,n)}return e}function c(t){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?a(Object(e),!0).forEach((function(r){l(t,r,e[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):a(Object(e)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}))}return t}function u(){u=function(){return t};var t={},r=Object.prototype,e=r.hasOwnProperty,n=Object.defineProperty||function(t,r,e){t[r]=e.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function s(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{s({},"")}catch(t){s=function(t,r,e){return t[r]=e}}function f(t,r,e,o){var i=r&&r.prototype instanceof h?r:h,a=Object.create(i.prototype),c=new j(o||[]);return n(a,"_invoke",{value:E(t,e,c)}),a}function p(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}t.wrap=f;var l={};function h(){}function y(){}function d(){}var v={};s(v,i,(function(){return this}));var g=Object.getPrototypeOf,b=g&&g(g(k([])));b&&b!==r&&e.call(b,i)&&(v=b);var w=d.prototype=h.prototype=Object.create(v);function x(t){["next","throw","return"].forEach((function(r){s(t,r,(function(t){return this._invoke(r,t)}))}))}function m(t,r){function o(n,i,a,c){var u=p(t[n],t,i);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==typeof f&&e.call(f,"__await")?r.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):r.resolve(f).then((function(t){s.value=t,a(s)}),(function(t){return o("throw",t,a,c)}))}c(u.arg)}var i;n(this,"_invoke",{value:function(t,e){function n(){return new r((function(r,n){o(t,e,r,n)}))}return i=i?i.then(n,n):n()}})}function E(t,r,e){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return _()}for(e.method=o,e.arg=i;;){var a=e.delegate;if(a){var c=O(a,e);if(c){if(c===l)continue;return c}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if("suspendedStart"===n)throw n="completed",e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);n="executing";var u=p(t,r,e);if("normal"===u.type){if(n=e.done?"completed":"suspendedYield",u.arg===l)continue;return{value:u.arg,done:e.done}}"throw"===u.type&&(n="completed",e.method="throw",e.arg=u.arg)}}}function O(t,r){var e=r.method,n=t.iterator[e];if(void 0===n)return r.delegate=null,"throw"===e&&t.iterator.return&&(r.method="return",r.arg=void 0,O(t,r),"throw"===r.method)||"return"!==e&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+e+"' method")),l;var o=p(n,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,l;var i=o.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=void 0),r.delegate=null,l):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,l)}function L(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function S(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function j(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(L,this),this.reset(!0)}function k(t){if(t){var r=t[i];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function r(){for(;++n<t.length;)if(e.call(t,n))return r.value=t[n],r.done=!1,r;return r.value=void 0,r.done=!0,r};return o.next=o}}return{next:_}}function _(){return{value:void 0,done:!0}}return y.prototype=d,n(w,"constructor",{value:d,configurable:!0}),n(d,"constructor",{value:y,configurable:!0}),y.displayName=s(d,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var r="function"==typeof t&&t.constructor;return!!r&&(r===y||"GeneratorFunction"===(r.displayName||r.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,d):(t.__proto__=d,s(t,c,"GeneratorFunction")),t.prototype=Object.create(w),t},t.awrap=function(t){return{__await:t}},x(m.prototype),s(m.prototype,a,(function(){return this})),t.AsyncIterator=m,t.async=function(r,e,n,o,i){void 0===i&&(i=Promise);var a=new m(f(r,e,n,o),i);return t.isGeneratorFunction(e)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},x(w),s(w,c,"Generator"),s(w,i,(function(){return this})),s(w,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var r=Object(t),e=[];for(var n in r)e.push(n);return e.reverse(),function t(){for(;e.length;){var n=e.pop();if(n in r)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=k,j.prototype={constructor:j,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(S),!t)for(var r in this)"t"===r.charAt(0)&&e.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function n(e,n){return a.type="throw",a.arg=t,r.next=e,n&&(r.method="next",r.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=e.call(i,"catchLoc"),u=e.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,r){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&e.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=r&&r<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=r,i?(this.method="next",this.next=i.finallyLoc,l):this.complete(a)},complete:function(t,r){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&r&&(this.next=r),l},finish:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),S(e),l}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;S(e)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,e){return this.delegate={iterator:k(t),resultName:r,nextLoc:e},"next"===this.method&&(this.arg=void 0),l}},t}function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function f(t,r,e,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void e(t)}c.done?r(u):Promise.resolve(u).then(n,o)}function p(t){return function(){var r=this,e=arguments;return new Promise((function(n,o){var i=t.apply(r,e);function a(t){f(i,n,o,a,c,"next",t)}function c(t){f(i,n,o,a,c,"throw",t)}a(void 0)}))}}function l(t,r,e){return(r=function(t){var r=function(t,r){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,r||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==typeof r?r:String(r)}(r))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function h(t){if(t instanceof Error)throw t;if("string"==typeof t)throw new Error(t);throw new Error("Cannot determine file loading error.")}function y(t,r){return Object.prototype.hasOwnProperty.call(t,r)}function d(t,r){return y(t,r)&&"string"==typeof t[r]}function v(t){return!!t&&"object"===s(t)&&!Array.isArray(t)}function g(t){return Array.isArray(t)?t:[t]}function b(t){var r,e;return(t=t||{}).path=t.path||[],t.path=g(t.path),0===t.path.length&&t.path.push(process.cwd()),null!==(e=(r=t).ignore)&&void 0!==e||(r.ignore=[]),t}function w(t,r){r||o.isAbsolute(t)||(t=o.resolve(process.cwd(),t));var e=o.parse(t);return{path:e.dir.split("/").join(o.sep),name:e.name,extension:e.ext}}var x=n.promisify(e);function m(){return(m=p(u().mark((function t(r,e){var n,o,i,a,c,s;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e=b(e),n=Array.isArray(r)?r:[r],o=[],i=0;case 4:if(!(i<n.length)){t.next=17;break}a=0;case 6:if(!(a<e.path.length)){t.next=14;break}return t.next=9,x(n[i],{absolute:!0,cwd:e.path[a],nodir:!0,ignore:e.ignore});case 9:for(c=t.sent,s=0;s<c.length;s++)o.push(w(c[s],!0));case 11:a++,t.next=6;break;case 14:i++,t.next=4;break;case 17:return t.abrupt("return",o);case 18:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function E(){return(E=p(u().mark((function t(r,e){var n,o,i,a,c;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:e=b(e),n=Array.isArray(r)?r:[r],o=0;case 3:if(!(o<n.length)){t.next=18;break}i=0;case 5:if(!(i<e.path.length)){t.next=15;break}return t.next=8,x(n[o],{absolute:!0,cwd:e.path[i],nodir:!0,ignore:e.ignore});case 8:if(a=t.sent,!(c=a.shift())){t.next=12;break}return t.abrupt("return",w(c,!0));case 12:i++,t.next=5;break;case 15:o++,t.next=3;break;case 18:return t.abrupt("return",void 0);case 19:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function O(t,r){return r?o.join(t.path,t.name)+t.extension:o.join(t.path,t.name)}function L(r,e){if(e){for(var n=Object.keys(r),o=0;o<n.length;o++)if(e(n[o],r[n[o]]))return{key:n[o],value:r[n[o]]};throw new t.BaseError("Cannot find specific module export.")}return{key:"default",value:y(r,"default")?r.default:r}}function S(t,r){return j.apply(this,arguments)}function j(){return(j=p(u().mark((function e(n,o){var i,a;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i="string"==typeof n?w(n):n,a=O(i,(o=o||{}).withExtension),o.withFilePrefix&&(a=r.pathToFileURL(a).href),e.prev=4,e.next=7,import(a);case 7:return e.abrupt("return",e.sent);case 10:if(e.prev=10,e.t0=e.catch(4),!v(e.t0)||!d(e.t0,"code")){e.next=18;break}if(o.withExtension||"ERR_MODULE_NOT_FOUND"!==e.t0.code&&"MODULE_NOT_FOUND"!==e.t0.code){e.next=15;break}return e.abrupt("return",S(i,c(c({},o),{},{withExtension:!0})));case 15:if(o.withFilePrefix||"ERR_UNSUPPORTED_ESM_URL_SCHEME"!==e.t0.code&&"UNSUPPORTED_ESM_URL_SCHEME"!==e.t0.code){e.next=17;break}return e.abrupt("return",S(i,c(c({},o),{},{withFilePrefix:!0})));case 17:throw new t.BaseError({code:e.t0.code,message:d(e.t0,"message")?e.t0.message:void 0,stack:d(e.t0,"stack")?e.t0.stack:void 0});case 18:return e.abrupt("return",h(e.t0));case 19:case"end":return e.stop()}}),e,null,[[4,10]])})))).apply(this,arguments)}function k(){return(k=p(u().mark((function r(e,n){var o;return u().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,S(e);case 2:if("object"!==s(o=r.sent)||!o){r.next=5;break}return r.abrupt("return",L(o,n));case 5:throw new t.BaseError("Cannot extract specific module export");case 6:case"end":return r.stop()}}),r)})))).apply(this,arguments)}function _(r,e){var n,o=O(n="string"==typeof r?w(r):r,(e=e||{}).withExtension);try{return require(o)}catch(r){if(v(r)&&d(r,"code")){if(!e.withExtension&&("ERR_MODULE_NOT_FOUND"===r.code||"MODULE_NOT_FOUND"===r.code))return _(n,c(c({},e),{},{withExtension:!0}));throw new t.BaseError({code:r.code,message:d(r,"message")?r.message:void 0,stack:d(r,"stack")?r.stack:void 0})}return h(r)}}function P(t){return F.apply(this,arguments)}function F(){return(F=p(u().mark((function t(r){var e,n;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e="string"==typeof r?o.isAbsolute(r)?r:o.resolve(process.cwd(),r):O(r,!0),t.prev=1,t.next=4,i.promises.readFile(e);case 4:return n=t.sent,t.abrupt("return",JSON.parse(n.toString("utf-8")));case 8:return t.prev=8,t.t0=t.catch(1),t.abrupt("return",h(t.t0));case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))).apply(this,arguments)}function N(t){var r;r="string"==typeof t?o.isAbsolute(t)?t:o.resolve(process.cwd(),t):O(t,!0);try{var e=i.readFileSync(r);return JSON.parse(e.toString("utf-8"))}catch(t){return h(t)}}function A(){return(A=p(u().mark((function t(r){var e;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(".json"!==(e="string"==typeof r?w(r):r).extension){t.next=3;break}return t.abrupt("return",P(e));case 3:return t.abrupt("return",S(e));case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}exports.buildLoaderFilePath=O,exports.buildLocatorOptions=b,exports.getExportItem=L,exports.handleFileLoadError=h,exports.hasOwnProperty=y,exports.hasStringProperty=d,exports.isObject=v,exports.loadFile=function(t){return A.apply(this,arguments)},exports.loadFileSync=function(t){var r;return".json"===(r="string"==typeof t?w(t):t).extension?N(r):_(r)},exports.loadJsonFile=P,exports.loadJsonFileSync=N,exports.loadScriptFile=S,exports.loadScriptFileExport=function(t,r){return k.apply(this,arguments)},exports.loadScriptFileExportSync=function(r,e){var n=_(r);if("object"===s(n)&&n)return L(n,e);throw new t.BaseError("Cannot extract specific module export")},exports.loadScriptFileSync=_,exports.locateFile=function(t,r){return E.apply(this,arguments)},exports.locateFileSync=function(t,r){r=b(r);for(var n=Array.isArray(t)?t:[t],o=0;o<n.length;o++)for(var i=0;i<r.path.length;i++){var a=e.sync(n[o],{absolute:!0,cwd:r.path[i],nodir:!0,ignore:r.ignore}).shift();if(a)return w(a,!0)}},exports.locateFiles=function(t,r){return m.apply(this,arguments)},exports.locateFilesSync=function(t,r){r=b(r);for(var n=Array.isArray(t)?t:[t],o=[],i=0;i<n.length;i++)for(var a=0;a<r.path.length;a++)for(var c=e.sync(n[i],{absolute:!0,cwd:r.path[a],nodir:!0,ignore:r.ignore}),u=0;u<c.length;u++)o.push(w(c[u],!0));return o},exports.pathToLocatorInfo=w,exports.removeFileNameExtension=function(t,r){if(t.includes(".")){var e=t.lastIndexOf("."),n=t.substring(e,t.length);void 0!==r&&-1===r.indexOf(n)||(t=t.substring(0,e))}return t},exports.toArray=g;
1
+ 'use strict';
2
+
3
+ var ebec = require('ebec');
4
+ var createJITI = require('jiti');
5
+ var node_url = require('node:url');
6
+ var glob = require('glob');
7
+ var node_util = require('node:util');
8
+ var path = require('node:path');
9
+ var fs = require('node:fs');
10
+
11
+ /*
12
+ * Copyright (c) 2022.
13
+ * Author Peter Placzek (tada5hi)
14
+ * For the full copyright and license information,
15
+ * view the LICENSE file that was distributed with this source code.
16
+ */ /* istanbul ignore next */ function handleFileLoadError(e) {
17
+ if (e instanceof Error) {
18
+ throw e;
19
+ }
20
+ if (typeof e === 'string') {
21
+ throw new Error(e);
22
+ }
23
+ throw new Error('Cannot determine file loading error.');
24
+ }
25
+
26
+ /*
27
+ * Copyright (c) 2022.
28
+ * Author Peter Placzek (tada5hi)
29
+ * For the full copyright and license information,
30
+ * view the LICENSE file that was distributed with this source code.
31
+ */ function removeFileNameExtension(input, extensions) {
32
+ if (input.includes('.')) {
33
+ const position = input.lastIndexOf('.');
34
+ const extension = input.substring(position, input.length);
35
+ if (typeof extensions === 'undefined' || extensions.indexOf(extension) !== -1) {
36
+ input = input.substring(0, position);
37
+ }
38
+ }
39
+ return input;
40
+ }
41
+
42
+ function hasOwnProperty(obj, prop) {
43
+ return Object.prototype.hasOwnProperty.call(obj, prop);
44
+ }
45
+ function hasStringProperty(obj, prop) {
46
+ return hasOwnProperty(obj, prop) && typeof obj[prop] === 'string';
47
+ }
48
+
49
+ /*
50
+ * Copyright (c) 2022.
51
+ * Author Peter Placzek (tada5hi)
52
+ * For the full copyright and license information,
53
+ * view the LICENSE file that was distributed with this source code.
54
+ */ function isObject(item) {
55
+ return !!item && typeof item === 'object' && !Array.isArray(item);
56
+ }
57
+
58
+ /*
59
+ * Copyright (c) 2022.
60
+ * Author Peter Placzek (tada5hi)
61
+ * For the full copyright and license information,
62
+ * view the LICENSE file that was distributed with this source code.
63
+ */ function toArray(input) {
64
+ return Array.isArray(input) ? input : [
65
+ input
66
+ ];
67
+ }
68
+
69
+ /*
70
+ * Copyright (c) 2022.
71
+ * Author Peter Placzek (tada5hi)
72
+ * For the full copyright and license information,
73
+ * view the LICENSE file that was distributed with this source code.
74
+ */ var _options, _options1;
75
+ function buildLocatorOptions(options) {
76
+ options = options || {};
77
+ options.path = options.path || [];
78
+ options.path = toArray(options.path);
79
+ if (options.path.length === 0) {
80
+ options.path.push(process.cwd());
81
+ }
82
+ (_options = options).soft ?? (_options.soft = true);
83
+ (_options1 = options).ignore ?? (_options1.ignore = []);
84
+ return options;
85
+ }
86
+ function pathToLocatorInfo(input, skipResolve) {
87
+ if (!skipResolve && !path.isAbsolute(input)) {
88
+ input = path.resolve(process.cwd(), input);
89
+ }
90
+ const info = path.parse(input);
91
+ return {
92
+ path: info.dir.split('/').join(path.sep),
93
+ name: info.name,
94
+ extension: info.ext
95
+ };
96
+ }
97
+
98
+ const globAsync = node_util.promisify(glob);
99
+ async function locateFiles(pattern, options) {
100
+ options = buildLocatorOptions(options);
101
+ const patterns = Array.isArray(pattern) ? pattern : [
102
+ pattern
103
+ ];
104
+ const items = [];
105
+ for(let i = 0; i < patterns.length; i++){
106
+ for(let j = 0; j < options.path.length; j++){
107
+ const files = await globAsync(patterns[i], {
108
+ absolute: true,
109
+ cwd: options.path[j],
110
+ nodir: true,
111
+ ignore: options.ignore
112
+ });
113
+ for(let k = 0; k < files.length; k++){
114
+ items.push(pathToLocatorInfo(files[k], true));
115
+ }
116
+ }
117
+ }
118
+ return items;
119
+ }
120
+ async function locateFile(pattern, options) {
121
+ options = buildLocatorOptions(options);
122
+ const patterns = Array.isArray(pattern) ? pattern : [
123
+ pattern
124
+ ];
125
+ for(let i = 0; i < patterns.length; i++){
126
+ for(let j = 0; j < options.path.length; j++){
127
+ const files = await globAsync(patterns[i], {
128
+ absolute: true,
129
+ cwd: options.path[j],
130
+ nodir: true,
131
+ ignore: options.ignore
132
+ });
133
+ const element = files.shift();
134
+ if (element) {
135
+ return pathToLocatorInfo(element, true);
136
+ }
137
+ }
138
+ }
139
+ if (!options.soft) {
140
+ throw new Error('The file could not be located.');
141
+ }
142
+ return undefined;
143
+ }
144
+
145
+ function locateFilesSync(pattern, options) {
146
+ options = buildLocatorOptions(options);
147
+ const patterns = Array.isArray(pattern) ? pattern : [
148
+ pattern
149
+ ];
150
+ const items = [];
151
+ for(let i = 0; i < patterns.length; i++){
152
+ for(let j = 0; j < options.path.length; j++){
153
+ const files = glob.sync(patterns[i], {
154
+ absolute: true,
155
+ cwd: options.path[j],
156
+ nodir: true,
157
+ ignore: options.ignore
158
+ });
159
+ for(let k = 0; k < files.length; k++){
160
+ items.push(pathToLocatorInfo(files[k], true));
161
+ }
162
+ }
163
+ }
164
+ return items;
165
+ }
166
+ function locateFileSync(pattern, options) {
167
+ options = buildLocatorOptions(options);
168
+ const patterns = Array.isArray(pattern) ? pattern : [
169
+ pattern
170
+ ];
171
+ for(let i = 0; i < patterns.length; i++){
172
+ for(let j = 0; j < options.path.length; j++){
173
+ const files = glob.sync(patterns[i], {
174
+ absolute: true,
175
+ cwd: options.path[j],
176
+ nodir: true,
177
+ ignore: options.ignore
178
+ });
179
+ const element = files.shift();
180
+ if (element) {
181
+ return pathToLocatorInfo(element, true);
182
+ }
183
+ }
184
+ }
185
+ return undefined;
186
+ }
187
+
188
+ function buildLoaderFilePath(info, withExtension) {
189
+ if (withExtension) {
190
+ return path.join(info.path, info.name) + info.extension;
191
+ }
192
+ return path.join(info.path, info.name);
193
+ }
194
+
195
+ class ScriptLoader {
196
+ async execute(info) {
197
+ const filePath = buildLoaderFilePath(info);
198
+ let output;
199
+ try {
200
+ output = await this.load(info);
201
+ } catch (e) {
202
+ output = this.jiti(filePath);
203
+ }
204
+ return output;
205
+ }
206
+ executeSync(info) {
207
+ const filePath = buildLoaderFilePath(info);
208
+ let output;
209
+ try {
210
+ output = this.loadSync(info);
211
+ } catch (e) {
212
+ output = this.jiti(filePath);
213
+ }
214
+ return output;
215
+ }
216
+ // ---------------------------------------------------------------------------
217
+ async load(data, options) {
218
+ let locatorInfo;
219
+ if (typeof data === 'string') {
220
+ locatorInfo = pathToLocatorInfo(data);
221
+ } else {
222
+ locatorInfo = data;
223
+ }
224
+ options = options || {};
225
+ let filePath = buildLoaderFilePath(locatorInfo, options.withExtension);
226
+ if (options.withFilePrefix) {
227
+ filePath = node_url.pathToFileURL(filePath).href;
228
+ }
229
+ try {
230
+ return await import(filePath);
231
+ } catch (e) {
232
+ /* istanbul ignore next */ if (isObject(e) && hasStringProperty(e, 'code')) {
233
+ if (!options.withExtension && (e.code === 'ERR_MODULE_NOT_FOUND' || e.code === 'MODULE_NOT_FOUND')) {
234
+ return this.load(locatorInfo, {
235
+ ...options,
236
+ withExtension: true
237
+ });
238
+ }
239
+ if (!options.withFilePrefix && (e.code === 'ERR_UNSUPPORTED_ESM_URL_SCHEME' || e.code === 'UNSUPPORTED_ESM_URL_SCHEME')) {
240
+ return this.load(locatorInfo, {
241
+ ...options,
242
+ withFilePrefix: true
243
+ });
244
+ }
245
+ throw new ebec.BaseError({
246
+ code: e.code,
247
+ message: hasStringProperty(e, 'message') ? e.message : undefined,
248
+ stack: hasStringProperty(e, 'stack') ? e.stack : undefined
249
+ });
250
+ }
251
+ /* istanbul ignore next */ return handleFileLoadError(e);
252
+ }
253
+ }
254
+ loadSync(data, options) {
255
+ let locatorInfo;
256
+ if (typeof data === 'string') {
257
+ locatorInfo = pathToLocatorInfo(data);
258
+ } else {
259
+ locatorInfo = data;
260
+ }
261
+ options = options || {};
262
+ const filePath = buildLoaderFilePath(locatorInfo, options.withExtension);
263
+ try {
264
+ // eslint-disable-next-line global-require,import/no-dynamic-require
265
+ return require(filePath);
266
+ } catch (e) {
267
+ /* istanbul ignore next */ if (isObject(e) && hasStringProperty(e, 'code')) {
268
+ if (!options.withExtension && (e.code === 'ERR_MODULE_NOT_FOUND' || e.code === 'MODULE_NOT_FOUND')) {
269
+ return this.loadSync(locatorInfo, {
270
+ ...options,
271
+ withExtension: true
272
+ });
273
+ }
274
+ throw new ebec.BaseError({
275
+ code: e.code,
276
+ message: hasStringProperty(e, 'message') ? e.message : undefined,
277
+ stack: hasStringProperty(e, 'stack') ? e.stack : undefined
278
+ });
279
+ }
280
+ return handleFileLoadError(e);
281
+ }
282
+ }
283
+ constructor(){
284
+ /*
285
+ const loaderMap : Record<string, ESLoader> = {
286
+ '.mjs': 'js',
287
+ '.js': 'js',
288
+ '.jsx': 'jsx',
289
+ '.ts': 'ts',
290
+ '.tsx': 'tsx',
291
+ };
292
+ */ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
293
+ // @ts-ignore
294
+ this.jiti = createJITI(undefined, {
295
+ esmResolve: true
296
+ });
297
+ }
298
+ }
299
+
300
+ function getExportItem(data, filterFn) {
301
+ if (filterFn) {
302
+ const keys = Object.keys(data);
303
+ for(let i = 0; i < keys.length; i++){
304
+ if (filterFn(keys[i], data[keys[i]])) {
305
+ return {
306
+ key: keys[i],
307
+ value: data[keys[i]]
308
+ };
309
+ }
310
+ }
311
+ throw new ebec.BaseError('Cannot find specific module export.');
312
+ }
313
+ return {
314
+ key: 'default',
315
+ value: hasOwnProperty(data, 'default') ? data.default : data
316
+ };
317
+ }
318
+
319
+ class JSONLoader {
320
+ async execute(input) {
321
+ const filePath = buildLoaderFilePath(input, true);
322
+ try {
323
+ const file = await fs.promises.readFile(filePath);
324
+ return JSON.parse(file.toString('utf-8'));
325
+ } catch (e) {
326
+ return handleFileLoadError(e);
327
+ }
328
+ }
329
+ executeSync(input) {
330
+ const filePath = buildLoaderFilePath(input, true);
331
+ try {
332
+ const file = fs.readFileSync(filePath);
333
+ return JSON.parse(file.toString('utf-8'));
334
+ } catch (e) {
335
+ return handleFileLoadError(e);
336
+ }
337
+ }
338
+ }
339
+
340
+ class LoaderManager {
341
+ register(rule) {
342
+ this.rules.push(rule);
343
+ }
344
+ async execute(info) {
345
+ const rule = this.findRule(info);
346
+ if (!rule) {
347
+ throw new Error(`No loader registered for extension: "${info.extension}"`);
348
+ }
349
+ const loader = this.resolve(rule.loader);
350
+ return loader.execute(info);
351
+ }
352
+ executeSync(info) {
353
+ const rule = this.findRule(info);
354
+ if (!rule) {
355
+ throw new Error(`No loader registered for extension: ${info.extension || 'unknown'}`);
356
+ }
357
+ const loader = this.resolve(rule.loader);
358
+ return loader.executeSync(info);
359
+ }
360
+ findRule(info) {
361
+ for(let i = 0; i < this.rules.length; i++){
362
+ const { test } = this.rules[i];
363
+ if (Array.isArray(test)) {
364
+ if (test.indexOf(info.extension) !== -1) {
365
+ return this.rules[i];
366
+ }
367
+ } else if (test.test(buildLoaderFilePath(info))) {
368
+ return this.rules[i];
369
+ }
370
+ }
371
+ return undefined;
372
+ }
373
+ /**
374
+ * Resolve loader by id.
375
+ *
376
+ * @param id
377
+ */ resolve(id) {
378
+ if (typeof id !== 'string') {
379
+ return id;
380
+ }
381
+ if (this.loaders[id]) {
382
+ return this.loaders[id];
383
+ }
384
+ let loader;
385
+ switch(id){
386
+ case 'script':
387
+ {
388
+ loader = new ScriptLoader();
389
+ break;
390
+ }
391
+ case 'json':
392
+ {
393
+ loader = new JSONLoader();
394
+ break;
395
+ }
396
+ }
397
+ if (typeof loader !== 'undefined') {
398
+ return loader;
399
+ }
400
+ throw new Error(`The loader ${id} could not be resolved.`);
401
+ }
402
+ constructor(){
403
+ this.loaders = {};
404
+ this.rules = [
405
+ {
406
+ test: [
407
+ '.js',
408
+ '.mjs',
409
+ '.cjs',
410
+ '.ts'
411
+ ],
412
+ loader: 'script'
413
+ },
414
+ {
415
+ test: [
416
+ '.json'
417
+ ],
418
+ loader: 'json'
419
+ }
420
+ ];
421
+ }
422
+ }
423
+
424
+ let instance;
425
+ function useLoaderManager() {
426
+ if (typeof instance !== 'undefined') {
427
+ return instance;
428
+ }
429
+ instance = new LoaderManager();
430
+ return instance;
431
+ }
432
+
433
+ async function loadFile(input) {
434
+ let info;
435
+ if (typeof input === 'string') {
436
+ info = pathToLocatorInfo(input);
437
+ } else {
438
+ info = input;
439
+ }
440
+ const manager = useLoaderManager();
441
+ return manager.execute(info);
442
+ }
443
+ function loadFileSync(input) {
444
+ let info;
445
+ if (typeof input === 'string') {
446
+ info = pathToLocatorInfo(input);
447
+ } else {
448
+ info = input;
449
+ }
450
+ const manager = useLoaderManager();
451
+ return manager.executeSync(info);
452
+ }
453
+
454
+ exports.JSONLoader = JSONLoader;
455
+ exports.ScriptLoader = ScriptLoader;
456
+ exports.buildLoaderFilePath = buildLoaderFilePath;
457
+ exports.buildLocatorOptions = buildLocatorOptions;
458
+ exports.getExportItem = getExportItem;
459
+ exports.handleFileLoadError = handleFileLoadError;
460
+ exports.hasOwnProperty = hasOwnProperty;
461
+ exports.hasStringProperty = hasStringProperty;
462
+ exports.isObject = isObject;
463
+ exports.loadFile = loadFile;
464
+ exports.loadFileSync = loadFileSync;
465
+ exports.locateFile = locateFile;
466
+ exports.locateFileSync = locateFileSync;
467
+ exports.locateFiles = locateFiles;
468
+ exports.locateFilesSync = locateFilesSync;
469
+ exports.pathToLocatorInfo = pathToLocatorInfo;
470
+ exports.removeFileNameExtension = removeFileNameExtension;
471
+ exports.toArray = toArray;
2
472
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/utils/error.ts","../src/utils/has-property.ts","../src/utils/object.ts","../src/utils/to-array.ts","../src/locator/utils.ts","../src/locator/async.ts","../src/loader/utils.ts","../src/loader/file-type/script/utils.ts","../src/loader/file-type/script/async.ts","../src/loader/file-type/script/sync.ts","../src/loader/file-type/json.ts","../src/loader/module.ts","../src/locator/sync.ts","../src/utils/file-name.ts"],"sourcesContent":["/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\n/* istanbul ignore next */\nexport function handleFileLoadError(e: unknown) : void {\n if (e instanceof Error) {\n throw e;\n }\n\n if (typeof e === 'string') {\n throw new Error(e);\n }\n\n throw new Error('Cannot determine file loading error.');\n}\n","export function hasOwnProperty<X extends Record<string, any>, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function hasStringProperty<X extends Record<string, any>, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, string> {\n return hasOwnProperty(obj, prop) && typeof obj[prop] === 'string';\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isObject(item: unknown) : item is Record<string, any> {\n return (\n !!item &&\n typeof item === 'object' &&\n !Array.isArray(item)\n );\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function toArray(input: string | string[]) : string[] {\n return Array.isArray(input) ? input : [input];\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport { LocatorInfo, LocatorOptions } from './type';\nimport { toArray } from '../utils';\n\nexport function buildLocatorOptions(options?: Partial<LocatorOptions>) : LocatorOptions {\n options = options || {};\n\n options.path = options.path || [];\n options.path = toArray(options.path);\n if (options.path.length === 0) {\n options.path.push(process.cwd());\n }\n\n options.ignore ??= [];\n\n return options as LocatorOptions;\n}\n\nexport function pathToLocatorInfo(\n input: string,\n skipResolve?: boolean,\n) : LocatorInfo {\n if (!skipResolve && !path.isAbsolute(input)) {\n input = path.resolve(process.cwd(), input);\n }\n\n const info = path.parse(input);\n\n return {\n path: info.dir.split('/').join(path.sep),\n name: info.name,\n extension: info.ext,\n };\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport glob from 'glob';\nimport { promisify } from 'node:util';\nimport { LocatorInfo, LocatorOptions } from './type';\nimport { buildLocatorOptions, pathToLocatorInfo } from './utils';\n\nconst globAsync = promisify(glob);\n\nexport async function locateFiles(\n pattern: string | string[],\n options?: Partial<LocatorOptions>,\n) : Promise<LocatorInfo[]> {\n options = buildLocatorOptions(options);\n\n const patterns = Array.isArray(pattern) ?\n pattern :\n [pattern];\n\n const items : LocatorInfo[] = [];\n\n for (let i = 0; i < patterns.length; i++) {\n for (let j = 0; j < (options as LocatorOptions).path.length; j++) {\n const files = await globAsync(patterns[i] as string, {\n absolute: true,\n cwd: (options as LocatorOptions).path[j],\n nodir: true,\n ignore: options.ignore,\n });\n\n for (let k = 0; k < files.length; k++) {\n items.push(pathToLocatorInfo(files[k] as string, true));\n }\n }\n }\n\n return items;\n}\n\nexport async function locateFile(\n pattern: string | string[],\n options?: Partial<LocatorOptions>,\n) : Promise<LocatorInfo | undefined> {\n options = buildLocatorOptions(options);\n\n const patterns = Array.isArray(pattern) ?\n pattern :\n [pattern];\n\n for (let i = 0; i < patterns.length; i++) {\n for (let j = 0; j < (options as LocatorOptions).path.length; j++) {\n const files = await globAsync(patterns[i] as string, {\n absolute: true,\n cwd: (options as LocatorOptions).path[j],\n nodir: true,\n ignore: options.ignore,\n });\n\n const element = files.shift();\n if (element) {\n return pathToLocatorInfo(element, true);\n }\n }\n }\n\n return undefined;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport { LocatorInfo } from '../locator';\n\nexport function buildLoaderFilePath(info: LocatorInfo, withExtension?: boolean) {\n if (withExtension) {\n return path.join(info.path, info.name) + info.extension;\n }\n\n return path.join(info.path, info.name);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BaseError } from 'ebec';\nimport { hasOwnProperty } from '../../../utils';\nimport { LoaderFilterFn, ScriptFileExportItem } from './type';\n\nexport function getExportItem(\n data: Record<string, any>,\n filterFn?: LoaderFilterFn,\n) : ScriptFileExportItem {\n if (filterFn) {\n const keys = Object.keys(data);\n for (let i = 0; i < keys.length; i++) {\n if (filterFn(keys[i] as string, data[keys[i] as string])) {\n return {\n key: keys[i] as string,\n value: data[keys[i] as string],\n };\n }\n }\n\n throw new BaseError('Cannot find specific module export.');\n }\n\n return {\n key: 'default',\n value: hasOwnProperty(data, 'default') ? data.default : data,\n };\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BaseError } from 'ebec';\nimport { pathToFileURL } from 'node:url';\nimport { LocatorInfo, pathToLocatorInfo } from '../../../locator';\nimport {\n handleFileLoadError, hasStringProperty, isObject,\n} from '../../../utils';\nimport { buildLoaderFilePath } from '../../utils';\nimport { LoaderFilterFn, ScriptFileExportItem, ScriptFileLoadOptions } from './type';\nimport { getExportItem } from './utils';\n\nexport async function loadScriptFile(\n data: LocatorInfo | string,\n options?: ScriptFileLoadOptions,\n) : Promise<unknown> {\n let locatorInfo : LocatorInfo;\n\n if (typeof data === 'string') {\n locatorInfo = pathToLocatorInfo(data);\n } else {\n locatorInfo = data;\n }\n\n options = options || {};\n\n let filePath = buildLoaderFilePath(locatorInfo, options.withExtension);\n if (options.withFilePrefix) {\n filePath = pathToFileURL(filePath).href;\n }\n\n try {\n return await import(filePath);\n } catch (e) {\n /* istanbul ignore next */\n if (\n isObject(e) &&\n hasStringProperty(e, 'code')\n ) {\n if (\n !options.withExtension &&\n (\n e.code === 'ERR_MODULE_NOT_FOUND' ||\n e.code === 'MODULE_NOT_FOUND'\n )\n ) {\n return loadScriptFile(locatorInfo, {\n ...options,\n withExtension: true,\n });\n }\n\n if (\n !options.withFilePrefix &&\n (\n e.code === 'ERR_UNSUPPORTED_ESM_URL_SCHEME' ||\n e.code === 'UNSUPPORTED_ESM_URL_SCHEME'\n )\n ) {\n return loadScriptFile(locatorInfo, {\n ...options,\n withFilePrefix: true,\n });\n }\n\n throw new BaseError({\n code: e.code,\n message: hasStringProperty(e, 'message') ? e.message : undefined,\n stack: hasStringProperty(e, 'stack') ? e.stack : undefined,\n });\n }\n\n /* istanbul ignore next */\n return handleFileLoadError(e);\n }\n}\n\nexport async function loadScriptFileExport(\n data: LocatorInfo | string,\n filterFn?: LoaderFilterFn,\n) : Promise<ScriptFileExportItem> {\n const output = await loadScriptFile(data);\n\n if (typeof output === 'object' && !!output) {\n return getExportItem(output, filterFn);\n }\n\n throw new BaseError('Cannot extract specific module export');\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BaseError } from 'ebec';\nimport { LoaderFilterFn, ScriptFileExportItem, ScriptFileLoadOptions } from './type';\nimport { getExportItem } from './utils';\nimport { LocatorInfo, pathToLocatorInfo } from '../../../locator';\nimport { buildLoaderFilePath } from '../../utils';\nimport {\n handleFileLoadError, hasStringProperty, isObject,\n} from '../../../utils';\n\nexport function loadScriptFileSync(\n data: LocatorInfo | string,\n options?: ScriptFileLoadOptions,\n) : unknown {\n let locatorInfo : LocatorInfo;\n\n if (typeof data === 'string') {\n locatorInfo = pathToLocatorInfo(data);\n } else {\n locatorInfo = data;\n }\n\n options = options || {};\n\n const filePath = buildLoaderFilePath(locatorInfo, options.withExtension);\n\n try {\n // eslint-disable-next-line global-require,import/no-dynamic-require\n return require(filePath);\n } catch (e) {\n /* istanbul ignore next */\n if (\n isObject(e) &&\n hasStringProperty(e, 'code')\n ) {\n if (\n !options.withExtension &&\n (\n e.code === 'ERR_MODULE_NOT_FOUND' ||\n e.code === 'MODULE_NOT_FOUND'\n )\n ) {\n return loadScriptFileSync(locatorInfo, {\n ...options,\n withExtension: true,\n });\n }\n\n throw new BaseError({\n code: e.code,\n message: hasStringProperty(e, 'message') ? e.message : undefined,\n stack: hasStringProperty(e, 'stack') ? e.stack : undefined,\n });\n }\n\n return handleFileLoadError(e);\n }\n}\n\nexport function loadScriptFileExportSync(\n data: LocatorInfo | string,\n filterFn?: LoaderFilterFn,\n) : ScriptFileExportItem {\n const output = loadScriptFileSync(data);\n\n if (typeof output === 'object' && !!output) {\n return getExportItem(output, filterFn);\n }\n\n throw new BaseError('Cannot extract specific module export');\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { LocatorInfo } from '../../locator';\nimport { handleFileLoadError } from '../../utils';\nimport { buildLoaderFilePath } from '../utils';\n\nexport async function loadJsonFile(input: LocatorInfo | string) : Promise<unknown> {\n let filePath : string;\n\n if (typeof input === 'string') {\n filePath = path.isAbsolute(input) ? input : path.resolve(process.cwd(), input);\n } else {\n filePath = buildLoaderFilePath(input, true);\n }\n\n try {\n const file = await fs.promises.readFile(filePath);\n return JSON.parse(file.toString('utf-8'));\n } catch (e) {\n return handleFileLoadError(e);\n }\n}\n\nexport function loadJsonFileSync(input: LocatorInfo | string) : unknown {\n let filePath : string;\n\n if (typeof input === 'string') {\n filePath = path.isAbsolute(input) ? input : path.resolve(process.cwd(), input);\n } else {\n filePath = buildLoaderFilePath(input, true);\n }\n\n try {\n const file = fs.readFileSync(filePath);\n return JSON.parse(file.toString('utf-8'));\n } catch (e) {\n return handleFileLoadError(e);\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { LocatorInfo, pathToLocatorInfo } from '../locator';\nimport {\n loadJsonFile,\n loadJsonFileSync,\n loadScriptFile,\n loadScriptFileSync,\n} from './file-type';\n\nexport async function loadFile(input: LocatorInfo | string) : Promise<unknown> {\n let info : LocatorInfo;\n if (typeof input === 'string') {\n info = pathToLocatorInfo(input);\n } else {\n info = input;\n }\n\n if (info.extension === '.json') {\n return loadJsonFile(info);\n }\n\n return loadScriptFile(info);\n}\n\nexport function loadFileSync(input: LocatorInfo | string) : unknown {\n let info : LocatorInfo;\n if (typeof input === 'string') {\n info = pathToLocatorInfo(input);\n } else {\n info = input;\n }\n\n if (info.extension === '.json') {\n return loadJsonFileSync(info);\n }\n\n return loadScriptFileSync(info);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport glob from 'glob';\nimport { LocatorInfo, LocatorOptions } from './type';\nimport { buildLocatorOptions, pathToLocatorInfo } from './utils';\n\nexport function locateFilesSync(\n pattern: string | string[],\n options?: Partial<LocatorOptions>,\n) : LocatorInfo[] {\n options = buildLocatorOptions(options);\n\n const patterns = Array.isArray(pattern) ?\n pattern :\n [pattern];\n\n const items : LocatorInfo[] = [];\n\n for (let i = 0; i < patterns.length; i++) {\n for (let j = 0; j < (options as LocatorOptions).path.length; j++) {\n const files = glob.sync(patterns[i] as string, {\n absolute: true,\n cwd: (options as LocatorOptions).path[j],\n nodir: true,\n ignore: options.ignore,\n });\n\n for (let k = 0; k < files.length; k++) {\n items.push(pathToLocatorInfo(files[k] as string, true));\n }\n }\n }\n\n return items;\n}\n\nexport function locateFileSync(\n pattern: string | string[],\n options?: Partial<LocatorOptions>,\n) : LocatorInfo | undefined {\n options = buildLocatorOptions(options);\n\n const patterns = Array.isArray(pattern) ?\n pattern :\n [pattern];\n\n for (let i = 0; i < patterns.length; i++) {\n for (let j = 0; j < (options as LocatorOptions).path.length; j++) {\n const files = glob.sync(patterns[i] as string, {\n absolute: true,\n cwd: (options as LocatorOptions).path[j],\n nodir: true,\n ignore: options.ignore,\n });\n\n const element = files.shift();\n if (element) {\n return pathToLocatorInfo(element, true);\n }\n }\n }\n\n return undefined;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function removeFileNameExtension(\n input: string,\n extensions?: string[],\n) {\n if (input.includes('.')) {\n const position = input.lastIndexOf('.');\n const extension = input.substring(\n position,\n input.length,\n );\n\n if (\n typeof extensions === 'undefined' ||\n extensions.indexOf(extension) !== -1\n ) {\n input = input.substring(0, position);\n }\n }\n\n return input;\n}\n"],"names":["handleFileLoadError","e","Error","hasOwnProperty","obj","prop","Object","prototype","call","hasStringProperty","isObject","item","_typeof","Array","isArray","toArray","input","buildLocatorOptions","options","_options","_options$ignore","path","length","push","process","cwd","ignore","pathToLocatorInfo","skipResolve","isAbsolute","resolve","info","parse","dir","split","join","sep","name","extension","ext","globAsync","promisify","glob","_locateFiles","_asyncToGenerator","_regeneratorRuntime","mark","_callee","pattern","patterns","items","i","j","files","k","wrap","_context","prev","next","absolute","nodir","sent","abrupt","stop","apply","this","arguments","_locateFile","_callee2","element","_context2","shift","undefined","buildLoaderFilePath","withExtension","getExportItem","data","filterFn","keys","key","value","BaseError","loadScriptFile","_x","_x2","_loadScriptFile","locatorInfo","filePath","withFilePrefix","pathToFileURL","href","import","t0","code","_objectSpread","message","stack","_loadScriptFileExport","output","loadScriptFileSync","require","loadJsonFile","_loadJsonFile","file","fs","promises","readFile","JSON","toString","loadJsonFileSync","readFileSync","_loadFile","_x3","_x4","sync","extensions","includes","position","lastIndexOf","substring","indexOf"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/utils/error.ts","../src/utils/file-name.ts","../src/utils/has-property.ts","../src/utils/object.ts","../src/utils/to-array.ts","../src/locator/utils.ts","../src/locator/async.ts","../src/locator/sync.ts","../src/loader/utils.ts","../src/loader/built-in/script/module.ts","../src/loader/built-in/script/utils.ts","../src/loader/built-in/json/module.ts","../src/loader/module.ts","../src/loader/singleton.ts","../src/loader/helpers.ts"],"sourcesContent":["/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\n/* istanbul ignore next */\nexport function handleFileLoadError(e: unknown) : void {\n if (e instanceof Error) {\n throw e;\n }\n\n if (typeof e === 'string') {\n throw new Error(e);\n }\n\n throw new Error('Cannot determine file loading error.');\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function removeFileNameExtension(\n input: string,\n extensions?: string[],\n) {\n if (input.includes('.')) {\n const position = input.lastIndexOf('.');\n const extension = input.substring(\n position,\n input.length,\n );\n\n if (\n typeof extensions === 'undefined' ||\n extensions.indexOf(extension) !== -1\n ) {\n input = input.substring(0, position);\n }\n }\n\n return input;\n}\n","export function hasOwnProperty<X extends Record<string, any>, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function hasStringProperty<X extends Record<string, any>, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, string> {\n return hasOwnProperty(obj, prop) && typeof obj[prop] === 'string';\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isObject(item: unknown) : item is Record<string, any> {\n return (\n !!item &&\n typeof item === 'object' &&\n !Array.isArray(item)\n );\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function toArray(input: string | string[]) : string[] {\n return Array.isArray(input) ? input : [input];\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport { LocatorInfo, LocatorOptions } from './type';\nimport { toArray } from '../utils';\n\nexport function buildLocatorOptions(options?: Partial<LocatorOptions>) : LocatorOptions {\n options = options || {};\n\n options.path = options.path || [];\n options.path = toArray(options.path);\n if (options.path.length === 0) {\n options.path.push(process.cwd());\n }\n\n options.soft ??= true;\n options.ignore ??= [];\n\n return options as LocatorOptions;\n}\n\nexport function pathToLocatorInfo(\n input: string,\n skipResolve?: boolean,\n) : LocatorInfo {\n if (!skipResolve && !path.isAbsolute(input)) {\n input = path.resolve(process.cwd(), input);\n }\n\n const info = path.parse(input);\n\n return {\n path: info.dir.split('/').join(path.sep),\n name: info.name,\n extension: info.ext,\n };\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport glob from 'glob';\nimport { promisify } from 'node:util';\nimport { LocatorInfo, LocatorOptions } from './type';\nimport { buildLocatorOptions, pathToLocatorInfo } from './utils';\n\nconst globAsync = promisify(glob);\n\nexport async function locateFiles(\n pattern: string | string[],\n options?: Partial<LocatorOptions>,\n) : Promise<LocatorInfo[]> {\n options = buildLocatorOptions(options);\n\n const patterns = Array.isArray(pattern) ?\n pattern :\n [pattern];\n\n const items : LocatorInfo[] = [];\n\n for (let i = 0; i < patterns.length; i++) {\n for (let j = 0; j < (options as LocatorOptions).path.length; j++) {\n const files = await globAsync(patterns[i] as string, {\n absolute: true,\n cwd: (options as LocatorOptions).path[j],\n nodir: true,\n ignore: options.ignore,\n });\n\n for (let k = 0; k < files.length; k++) {\n items.push(pathToLocatorInfo(files[k] as string, true));\n }\n }\n }\n\n return items;\n}\n\nexport async function locateFile(\n pattern: string | string[],\n options: Partial<LocatorOptions> & { soft: false }\n) : Promise<LocatorInfo>;\nexport async function locateFile(\n pattern: string | string[],\n options?: Partial<LocatorOptions>,\n) : Promise<LocatorInfo | undefined>;\nexport async function locateFile(\n pattern: string | string[],\n options?: Partial<LocatorOptions>,\n) : Promise<any> {\n options = buildLocatorOptions(options);\n\n const patterns = Array.isArray(pattern) ?\n pattern :\n [pattern];\n\n for (let i = 0; i < patterns.length; i++) {\n for (let j = 0; j < (options as LocatorOptions).path.length; j++) {\n const files = await globAsync(patterns[i] as string, {\n absolute: true,\n cwd: (options as LocatorOptions).path[j],\n nodir: true,\n ignore: options.ignore,\n });\n\n const element = files.shift();\n if (element) {\n return pathToLocatorInfo(element, true);\n }\n }\n }\n\n if (!options.soft) {\n throw new Error('The file could not be located.');\n }\n\n return undefined;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport glob from 'glob';\nimport { LocatorInfo, LocatorOptions } from './type';\nimport { buildLocatorOptions, pathToLocatorInfo } from './utils';\n\nexport function locateFilesSync(\n pattern: string | string[],\n options?: Partial<LocatorOptions>,\n) : LocatorInfo[] {\n options = buildLocatorOptions(options);\n\n const patterns = Array.isArray(pattern) ?\n pattern :\n [pattern];\n\n const items : LocatorInfo[] = [];\n\n for (let i = 0; i < patterns.length; i++) {\n for (let j = 0; j < (options as LocatorOptions).path.length; j++) {\n const files = glob.sync(patterns[i] as string, {\n absolute: true,\n cwd: (options as LocatorOptions).path[j],\n nodir: true,\n ignore: options.ignore,\n });\n\n for (let k = 0; k < files.length; k++) {\n items.push(pathToLocatorInfo(files[k] as string, true));\n }\n }\n }\n\n return items;\n}\n\nexport function locateFileSync(\n pattern: string | string[],\n options?: Partial<LocatorOptions>,\n) : LocatorInfo | undefined {\n options = buildLocatorOptions(options);\n\n const patterns = Array.isArray(pattern) ?\n pattern :\n [pattern];\n\n for (let i = 0; i < patterns.length; i++) {\n for (let j = 0; j < (options as LocatorOptions).path.length; j++) {\n const files = glob.sync(patterns[i] as string, {\n absolute: true,\n cwd: (options as LocatorOptions).path[j],\n nodir: true,\n ignore: options.ignore,\n });\n\n const element = files.shift();\n if (element) {\n return pathToLocatorInfo(element, true);\n }\n }\n }\n\n return undefined;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport { LocatorInfo } from '../locator';\n\nexport function buildLoaderFilePath(info: LocatorInfo, withExtension?: boolean) {\n if (withExtension) {\n return path.join(info.path, info.name) + info.extension;\n }\n\n return path.join(info.path, info.name);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BaseError } from 'ebec';\nimport type { JITI } from 'jiti';\nimport createJITI from 'jiti';\nimport { pathToFileURL } from 'node:url';\nimport { LocatorInfo, pathToLocatorInfo } from '../../../locator';\nimport { handleFileLoadError, hasStringProperty, isObject } from '../../../utils';\nimport { Loader } from '../../type';\nimport { buildLoaderFilePath } from '../../utils';\nimport { ScriptFileLoadOptions } from './type';\n\nexport class ScriptLoader implements Loader {\n protected jiti : JITI;\n\n constructor() {\n /*\n const loaderMap : Record<string, ESLoader> = {\n '.mjs': 'js',\n '.js': 'js',\n '.jsx': 'jsx',\n '.ts': 'ts',\n '.tsx': 'tsx',\n };\n */\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this.jiti = createJITI(undefined, {\n esmResolve: true,\n /*\n transform: (options) => {\n let loader : ESLoader = 'ts';\n if (options.filename) {\n const info = pathToLocatorInfo(options.filename, true);\n if (loaderMap[info.extension]) {\n loader = loaderMap[info.extension] as ESLoader;\n }\n }\n\n return transformSync(options.source, {\n target: 'ES2020',\n jsx: 'transform',\n format: 'cjs',\n loader,\n });\n },\n\n */\n });\n }\n\n async execute(info: LocatorInfo) {\n const filePath = buildLoaderFilePath(info);\n\n let output : any;\n\n try {\n output = await this.load(info);\n } catch (e) {\n output = this.jiti(filePath);\n }\n\n return output;\n }\n\n executeSync(info: LocatorInfo) {\n const filePath = buildLoaderFilePath(info);\n\n let output : any;\n\n try {\n output = this.loadSync(info);\n } catch (e) {\n output = this.jiti(filePath);\n }\n\n return output;\n }\n\n // ---------------------------------------------------------------------------\n\n async load(\n data: LocatorInfo | string,\n options?: ScriptFileLoadOptions,\n ) : Promise<unknown> {\n let locatorInfo : LocatorInfo;\n\n if (typeof data === 'string') {\n locatorInfo = pathToLocatorInfo(data);\n } else {\n locatorInfo = data;\n }\n\n options = options || {};\n\n let filePath = buildLoaderFilePath(locatorInfo, options.withExtension);\n if (options.withFilePrefix) {\n filePath = pathToFileURL(filePath).href;\n }\n\n try {\n return await import(filePath);\n } catch (e) {\n /* istanbul ignore next */\n if (\n isObject(e) &&\n hasStringProperty(e, 'code')\n ) {\n if (\n !options.withExtension &&\n (\n e.code === 'ERR_MODULE_NOT_FOUND' ||\n e.code === 'MODULE_NOT_FOUND'\n )\n ) {\n return this.load(locatorInfo, {\n ...options,\n withExtension: true,\n });\n }\n\n if (\n !options.withFilePrefix &&\n (\n e.code === 'ERR_UNSUPPORTED_ESM_URL_SCHEME' ||\n e.code === 'UNSUPPORTED_ESM_URL_SCHEME'\n )\n ) {\n return this.load(locatorInfo, {\n ...options,\n withFilePrefix: true,\n });\n }\n\n throw new BaseError({\n code: e.code,\n message: hasStringProperty(e, 'message') ? e.message : undefined,\n stack: hasStringProperty(e, 'stack') ? e.stack : undefined,\n });\n }\n\n /* istanbul ignore next */\n return handleFileLoadError(e);\n }\n }\n\n loadSync(\n data: LocatorInfo | string,\n options?: ScriptFileLoadOptions,\n ) : unknown {\n let locatorInfo : LocatorInfo;\n\n if (typeof data === 'string') {\n locatorInfo = pathToLocatorInfo(data);\n } else {\n locatorInfo = data;\n }\n\n options = options || {};\n\n const filePath = buildLoaderFilePath(locatorInfo, options.withExtension);\n\n try {\n // eslint-disable-next-line global-require,import/no-dynamic-require\n return require(filePath);\n } catch (e) {\n /* istanbul ignore next */\n if (\n isObject(e) &&\n hasStringProperty(e, 'code')\n ) {\n if (\n !options.withExtension &&\n (\n e.code === 'ERR_MODULE_NOT_FOUND' ||\n e.code === 'MODULE_NOT_FOUND'\n )\n ) {\n return this.loadSync(locatorInfo, {\n ...options,\n withExtension: true,\n });\n }\n\n throw new BaseError({\n code: e.code,\n message: hasStringProperty(e, 'message') ? e.message : undefined,\n stack: hasStringProperty(e, 'stack') ? e.stack : undefined,\n });\n }\n\n return handleFileLoadError(e);\n }\n }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BaseError } from 'ebec';\nimport { hasOwnProperty } from '../../../utils';\nimport { LoaderFilterFn, ScriptFileExportItem } from './type';\n\nexport function getExportItem(\n data: Record<string, any>,\n filterFn?: LoaderFilterFn,\n) : ScriptFileExportItem {\n if (filterFn) {\n const keys = Object.keys(data);\n for (let i = 0; i < keys.length; i++) {\n if (filterFn(keys[i] as string, data[keys[i] as string])) {\n return {\n key: keys[i] as string,\n value: data[keys[i] as string],\n };\n }\n }\n\n throw new BaseError('Cannot find specific module export.');\n }\n\n return {\n key: 'default',\n value: hasOwnProperty(data, 'default') ? data.default : data,\n };\n}\n","/*\n * Copyright (c) 2022-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport fs from 'node:fs';\nimport { LocatorInfo } from '../../../locator';\nimport { handleFileLoadError } from '../../../utils';\nimport { Loader } from '../../type';\nimport { buildLoaderFilePath } from '../../utils';\n\nexport class JSONLoader implements Loader {\n async execute(input: LocatorInfo) {\n const filePath = buildLoaderFilePath(input, true);\n\n try {\n const file = await fs.promises.readFile(filePath);\n return JSON.parse(file.toString('utf-8'));\n } catch (e) {\n return handleFileLoadError(e);\n }\n }\n\n executeSync(input: LocatorInfo) {\n const filePath = buildLoaderFilePath(input, true);\n\n try {\n const file = fs.readFileSync(filePath);\n return JSON.parse(file.toString('utf-8'));\n } catch (e) {\n return handleFileLoadError(e);\n }\n }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { LocatorInfo } from '../locator';\nimport { JSONLoader, ScriptLoader } from './built-in';\nimport { Loader, Rule } from './type';\nimport { buildLoaderFilePath } from './utils';\n\nexport class LoaderManager {\n protected loaders : Record<string, Loader>;\n\n protected rules : Rule[];\n\n constructor() {\n this.loaders = {};\n this.rules = [\n { test: ['.js', '.mjs', '.cjs', '.ts'], loader: 'script' },\n { test: ['.json'], loader: 'json' },\n ];\n }\n\n register(rule: Rule) {\n this.rules.push(rule);\n }\n\n async execute(info: LocatorInfo) : Promise<any> {\n const rule = this.findRule(info);\n if (!rule) {\n throw new Error(`No loader registered for extension: \"${info.extension}\"`);\n }\n\n const loader = this.resolve(rule.loader);\n return loader.execute(info);\n }\n\n executeSync(info: LocatorInfo) : any {\n const rule = this.findRule(info);\n if (!rule) {\n throw new Error(`No loader registered for extension: ${info.extension || 'unknown'}`);\n }\n\n const loader = this.resolve(rule.loader);\n return loader.executeSync(info);\n }\n\n findRule(info: LocatorInfo) : Rule | undefined {\n for (let i = 0; i < this.rules.length; i++) {\n const { test } = this.rules[i] as Rule;\n if (Array.isArray(test)) {\n if (test.indexOf(info.extension) !== -1) {\n return this.rules[i];\n }\n } else if (test.test(buildLoaderFilePath(info))) {\n return this.rules[i];\n }\n }\n\n return undefined;\n }\n\n /**\n * Resolve loader by id.\n *\n * @param id\n */\n resolve(id: string | Loader) : Loader {\n if (typeof id !== 'string') {\n return id;\n }\n\n if (this.loaders[id]) {\n return this.loaders[id] as Loader;\n }\n\n let loader : Loader | undefined;\n\n switch (id) {\n case 'script': {\n loader = new ScriptLoader();\n break;\n }\n case 'json': {\n loader = new JSONLoader();\n break;\n }\n }\n\n if (typeof loader !== 'undefined') {\n return loader;\n }\n\n throw new Error(`The loader ${id} could not be resolved.`);\n }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { LoaderManager } from './module';\n\nlet instance : LoaderManager;\nexport function useLoaderManager() {\n if (typeof instance !== 'undefined') {\n return instance;\n }\n\n instance = new LoaderManager();\n\n return instance;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { LocatorInfo, pathToLocatorInfo } from '../locator';\nimport { useLoaderManager } from './singleton';\n\nexport async function loadFile(input: LocatorInfo | string) : Promise<unknown> {\n let info : LocatorInfo;\n if (typeof input === 'string') {\n info = pathToLocatorInfo(input);\n } else {\n info = input;\n }\n\n const manager = useLoaderManager();\n\n return manager.execute(info);\n}\n\nexport function loadFileSync(input: LocatorInfo | string) : unknown {\n let info : LocatorInfo;\n if (typeof input === 'string') {\n info = pathToLocatorInfo(input);\n } else {\n info = input;\n }\n\n const manager = useLoaderManager();\n\n return manager.executeSync(info);\n}\n"],"names":["handleFileLoadError","e","Error","removeFileNameExtension","input","extensions","includes","position","lastIndexOf","extension","substring","length","indexOf","hasOwnProperty","obj","prop","Object","prototype","call","hasStringProperty","isObject","item","Array","isArray","toArray","options","buildLocatorOptions","path","push","process","cwd","soft","ignore","pathToLocatorInfo","skipResolve","isAbsolute","resolve","info","parse","dir","split","join","sep","name","ext","globAsync","promisify","glob","locateFiles","pattern","patterns","items","i","j","files","absolute","nodir","k","locateFile","element","shift","undefined","locateFilesSync","sync","locateFileSync","buildLoaderFilePath","withExtension","ScriptLoader","execute","filePath","output","load","jiti","executeSync","loadSync","data","locatorInfo","withFilePrefix","pathToFileURL","href","code","BaseError","message","stack","require","constructor","createJITI","esmResolve","getExportItem","filterFn","keys","key","value","default","JSONLoader","file","fs","promises","readFile","JSON","toString","readFileSync","LoaderManager","register","rule","rules","findRule","loader","test","id","loaders","instance","useLoaderManager","loadFile","manager","loadFileSync"],"mappings":"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"}