@kubb/fabric-core 0.1.4 → 0.1.6
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/{App-D3DHa4Il.d.cts → App-Cplfh8QA.d.cts} +21 -18
- package/dist/{App-BxAl3dNP.d.ts → App-Dvetv2V_.d.ts} +21 -18
- package/dist/createParser-17uGjfu3.js +11 -0
- package/dist/createParser-17uGjfu3.js.map +1 -0
- package/dist/createParser-C4IkyTs5.cjs +17 -0
- package/dist/createParser-C4IkyTs5.cjs.map +1 -0
- package/dist/{defaultParser-vwyTb1XT.js → defaultParser--HzU9LPa.js} +2 -2
- package/dist/{defaultParser-vwyTb1XT.js.map → defaultParser--HzU9LPa.js.map} +1 -1
- package/dist/{defaultParser-Dl-OrbH1.cjs → defaultParser-n9VW2iVf.cjs} +2 -2
- package/dist/{defaultParser-Dl-OrbH1.cjs.map → defaultParser-n9VW2iVf.cjs.map} +1 -1
- package/dist/defineProperty-3OJdpith.js +168 -0
- package/dist/defineProperty-3OJdpith.js.map +1 -0
- package/dist/defineProperty-CjCLDutJ.cjs +201 -0
- package/dist/defineProperty-CjCLDutJ.cjs.map +1 -0
- package/dist/getRelativePath-C6lvNCs7.cjs +26 -0
- package/dist/getRelativePath-C6lvNCs7.cjs.map +1 -0
- package/dist/getRelativePath-CERJmYkp.js +19 -0
- package/dist/getRelativePath-CERJmYkp.js.map +1 -0
- package/dist/index-Agz-2M75.d.ts +18 -0
- package/dist/index-C3GyFwE1.d.cts +18 -0
- package/dist/index.cjs +56 -205
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -14
- package/dist/index.d.ts +3 -14
- package/dist/index.js +28 -174
- package/dist/index.js.map +1 -1
- package/dist/parsers/typescript.cjs +4 -2
- package/dist/parsers/typescript.d.cts +2 -2
- package/dist/parsers/typescript.d.ts +2 -2
- package/dist/parsers/typescript.js +4 -2
- package/dist/parsers.cjs +5 -3
- package/dist/parsers.cjs.map +1 -1
- package/dist/parsers.d.cts +3 -3
- package/dist/parsers.d.ts +3 -3
- package/dist/parsers.js +5 -3
- package/dist/parsers.js.map +1 -1
- package/dist/plugins.cjs +207 -17
- package/dist/plugins.cjs.map +1 -1
- package/dist/plugins.d.cts +40 -7
- package/dist/plugins.d.ts +40 -7
- package/dist/plugins.js +194 -4
- package/dist/plugins.js.map +1 -1
- package/dist/{chunk-CUT6urMc.cjs → trimExtName-Bb4zGVF1.cjs} +14 -1
- package/dist/trimExtName-Bb4zGVF1.cjs.map +1 -0
- package/dist/trimExtName-CeOVQVbu.js +8 -0
- package/dist/trimExtName-CeOVQVbu.js.map +1 -0
- package/dist/types.d.cts +2 -2
- package/dist/types.d.ts +2 -2
- package/dist/{typescriptParser-CctRhsng.d.ts → typescriptParser-B49WHoGL.d.ts} +2 -2
- package/dist/{typescriptParser-JawJ8wET.cjs → typescriptParser-CNHO6H2_.cjs} +10 -24
- package/dist/typescriptParser-CNHO6H2_.cjs.map +1 -0
- package/dist/{typescriptParser-CrzOv_Aw.js → typescriptParser-CWT7zCJy.js} +5 -18
- package/dist/typescriptParser-CWT7zCJy.js.map +1 -0
- package/dist/{typescriptParser--N0n8KFn.d.cts → typescriptParser-CxGhFQXh.d.cts} +2 -2
- package/package.json +1 -1
- package/src/App.ts +28 -19
- package/src/FileManager.ts +8 -1
- package/src/FileProcessor.ts +7 -1
- package/src/defineApp.ts +7 -7
- package/src/parsers/createParser.ts +1 -1
- package/src/parsers/types.ts +2 -2
- package/src/plugins/barrelPlugin.ts +189 -0
- package/src/plugins/createPlugin.ts +1 -1
- package/src/plugins/fsPlugin.ts +19 -3
- package/src/plugins/index.ts +1 -0
- package/src/plugins/types.ts +4 -4
- package/src/utils/AsyncEventEmitter.ts +8 -0
- package/src/utils/EventEmitter.ts +8 -0
- package/src/utils/TreeNode.ts +118 -0
- package/dist/createParser-B_RpW6sx.js +0 -17
- package/dist/createParser-B_RpW6sx.js.map +0 -1
- package/dist/createParser-DZB5qExa.cjs +0 -29
- package/dist/createParser-DZB5qExa.cjs.map +0 -1
- package/dist/defineApp-B9W1A5SV.d.ts +0 -9
- package/dist/defineApp-BP97CT5p.d.cts +0 -9
- package/dist/typescriptParser-CrzOv_Aw.js.map +0 -1
- package/dist/typescriptParser-JawJ8wET.cjs.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,175 +1,54 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
|
|
1
|
+
const require_trimExtName = require('./trimExtName-Bb4zGVF1.cjs');
|
|
2
|
+
const require_defineProperty = require('./defineProperty-CjCLDutJ.cjs');
|
|
3
|
+
require('./createParser-C4IkyTs5.cjs');
|
|
4
|
+
const require_defaultParser = require('./defaultParser-n9VW2iVf.cjs');
|
|
4
5
|
let natural_orderby = require("natural-orderby");
|
|
5
|
-
natural_orderby =
|
|
6
|
-
let node_crypto = require("node:crypto");
|
|
7
|
-
node_crypto = require_chunk.__toESM(node_crypto);
|
|
8
|
-
let node_path = require("node:path");
|
|
9
|
-
node_path = require_chunk.__toESM(node_path);
|
|
6
|
+
natural_orderby = require_trimExtName.__toESM(natural_orderby);
|
|
10
7
|
let remeda = require("remeda");
|
|
11
|
-
remeda =
|
|
8
|
+
remeda = require_trimExtName.__toESM(remeda);
|
|
12
9
|
let p_limit = require("p-limit");
|
|
13
|
-
p_limit =
|
|
10
|
+
p_limit = require_trimExtName.__toESM(p_limit);
|
|
14
11
|
let node_events = require("node:events");
|
|
15
|
-
node_events =
|
|
12
|
+
node_events = require_trimExtName.__toESM(node_events);
|
|
16
13
|
|
|
17
|
-
//#region \0@oxc-project+runtime@0.95.0/helpers/checkPrivateRedeclaration.js
|
|
18
|
-
function _checkPrivateRedeclaration(e, t) {
|
|
19
|
-
if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object");
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
//#endregion
|
|
23
|
-
//#region \0@oxc-project+runtime@0.95.0/helpers/classPrivateFieldInitSpec.js
|
|
24
|
-
function _classPrivateFieldInitSpec(e, t, a) {
|
|
25
|
-
_checkPrivateRedeclaration(e, t), t.set(e, a);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
//#endregion
|
|
29
|
-
//#region \0@oxc-project+runtime@0.95.0/helpers/assertClassBrand.js
|
|
30
|
-
function _assertClassBrand(e, t, n) {
|
|
31
|
-
if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;
|
|
32
|
-
throw new TypeError("Private element is not present on this object");
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
//#endregion
|
|
36
|
-
//#region \0@oxc-project+runtime@0.95.0/helpers/classPrivateFieldGet2.js
|
|
37
|
-
function _classPrivateFieldGet2(s, a) {
|
|
38
|
-
return s.get(_assertClassBrand(s, a));
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
//#endregion
|
|
42
14
|
//#region src/utils/Cache.ts
|
|
43
15
|
var _buffer = /* @__PURE__ */ new WeakMap();
|
|
44
16
|
var Cache = class {
|
|
45
17
|
constructor() {
|
|
46
|
-
_classPrivateFieldInitSpec(this, _buffer, /* @__PURE__ */ new Map());
|
|
18
|
+
require_defineProperty._classPrivateFieldInitSpec(this, _buffer, /* @__PURE__ */ new Map());
|
|
47
19
|
}
|
|
48
20
|
get(key) {
|
|
49
21
|
var _this$buffer$get;
|
|
50
|
-
return (_this$buffer$get = _classPrivateFieldGet2(_buffer, this).get(key)) !== null && _this$buffer$get !== void 0 ? _this$buffer$get : null;
|
|
22
|
+
return (_this$buffer$get = require_defineProperty._classPrivateFieldGet2(_buffer, this).get(key)) !== null && _this$buffer$get !== void 0 ? _this$buffer$get : null;
|
|
51
23
|
}
|
|
52
24
|
set(key, value) {
|
|
53
|
-
_classPrivateFieldGet2(_buffer, this).set(key, value);
|
|
25
|
+
require_defineProperty._classPrivateFieldGet2(_buffer, this).set(key, value);
|
|
54
26
|
}
|
|
55
27
|
delete(key) {
|
|
56
|
-
_classPrivateFieldGet2(_buffer, this).delete(key);
|
|
28
|
+
require_defineProperty._classPrivateFieldGet2(_buffer, this).delete(key);
|
|
57
29
|
}
|
|
58
30
|
clear() {
|
|
59
|
-
_classPrivateFieldGet2(_buffer, this).clear();
|
|
31
|
+
require_defineProperty._classPrivateFieldGet2(_buffer, this).clear();
|
|
60
32
|
}
|
|
61
33
|
keys() {
|
|
62
|
-
return [..._classPrivateFieldGet2(_buffer, this).keys()];
|
|
34
|
+
return [...require_defineProperty._classPrivateFieldGet2(_buffer, this).keys()];
|
|
63
35
|
}
|
|
64
36
|
values() {
|
|
65
|
-
return [..._classPrivateFieldGet2(_buffer, this).values()];
|
|
37
|
+
return [...require_defineProperty._classPrivateFieldGet2(_buffer, this).values()];
|
|
66
38
|
}
|
|
67
39
|
flush() {}
|
|
68
40
|
};
|
|
69
41
|
|
|
70
|
-
//#endregion
|
|
71
|
-
//#region src/createFile.ts
|
|
72
|
-
function hashObject(obj) {
|
|
73
|
-
const str = JSON.stringify(obj, Object.keys(obj).sort());
|
|
74
|
-
return (0, node_crypto.createHash)("sha256").update(str).digest("hex");
|
|
75
|
-
}
|
|
76
|
-
function combineSources(sources) {
|
|
77
|
-
return (0, remeda.uniqueBy)(sources, (obj) => [
|
|
78
|
-
obj.name,
|
|
79
|
-
obj.isExportable,
|
|
80
|
-
obj.isTypeOnly
|
|
81
|
-
]);
|
|
82
|
-
}
|
|
83
|
-
function combineExports(exports$1) {
|
|
84
|
-
return (0, natural_orderby.orderBy)(exports$1, [
|
|
85
|
-
(v) => !!Array.isArray(v.name),
|
|
86
|
-
(v) => !v.isTypeOnly,
|
|
87
|
-
(v) => v.path,
|
|
88
|
-
(v) => !!v.name,
|
|
89
|
-
(v) => Array.isArray(v.name) ? (0, natural_orderby.orderBy)(v.name) : v.name
|
|
90
|
-
]).reduce((prev, curr) => {
|
|
91
|
-
const name = curr.name;
|
|
92
|
-
const prevByPath = prev.findLast((imp) => imp.path === curr.path);
|
|
93
|
-
if (prev.findLast((imp) => imp.path === curr.path && (0, remeda.isDeepEqual)(imp.name, name) && imp.isTypeOnly)) return prev;
|
|
94
|
-
if (prev.findLast((imp) => imp.path === curr.path && (0, remeda.isDeepEqual)(imp.name, name) && imp.isTypeOnly === curr.isTypeOnly && imp.asAlias === curr.asAlias) || Array.isArray(name) && !name.length || (prevByPath === null || prevByPath === void 0 ? void 0 : prevByPath.asAlias) && !curr.asAlias) return prev;
|
|
95
|
-
if (!prevByPath) return [...prev, {
|
|
96
|
-
...curr,
|
|
97
|
-
name: Array.isArray(name) ? [...new Set(name)] : name
|
|
98
|
-
}];
|
|
99
|
-
if (prevByPath && Array.isArray(prevByPath.name) && Array.isArray(curr.name) && prevByPath.isTypeOnly === curr.isTypeOnly) {
|
|
100
|
-
prevByPath.name = [...new Set([...prevByPath.name, ...curr.name])];
|
|
101
|
-
return prev;
|
|
102
|
-
}
|
|
103
|
-
return [...prev, curr];
|
|
104
|
-
}, []);
|
|
105
|
-
}
|
|
106
|
-
function combineImports(imports, exports$1, source) {
|
|
107
|
-
return (0, natural_orderby.orderBy)(imports, [
|
|
108
|
-
(v) => !!Array.isArray(v.name),
|
|
109
|
-
(v) => !v.isTypeOnly,
|
|
110
|
-
(v) => v.path,
|
|
111
|
-
(v) => !!v.name,
|
|
112
|
-
(v) => Array.isArray(v.name) ? (0, natural_orderby.orderBy)(v.name) : v.name
|
|
113
|
-
]).reduce((prev, curr) => {
|
|
114
|
-
let name = Array.isArray(curr.name) ? [...new Set(curr.name)] : curr.name;
|
|
115
|
-
const hasImportInSource = (importName) => {
|
|
116
|
-
if (!source) return true;
|
|
117
|
-
const checker = (name$1) => {
|
|
118
|
-
return name$1 && source.includes(name$1);
|
|
119
|
-
};
|
|
120
|
-
return checker(importName) || exports$1.some(({ name: name$1 }) => Array.isArray(name$1) ? name$1.some(checker) : checker(name$1));
|
|
121
|
-
};
|
|
122
|
-
if (curr.path === curr.root) return prev;
|
|
123
|
-
if (Array.isArray(name)) name = name.filter((item) => typeof item === "string" ? hasImportInSource(item) : hasImportInSource(item.propertyName));
|
|
124
|
-
const prevByPath = prev.findLast((imp) => imp.path === curr.path && imp.isTypeOnly === curr.isTypeOnly);
|
|
125
|
-
const uniquePrev = prev.findLast((imp) => imp.path === curr.path && (0, remeda.isDeepEqual)(imp.name, name) && imp.isTypeOnly === curr.isTypeOnly);
|
|
126
|
-
if (prev.findLast((imp) => imp.path === curr.path && (0, remeda.isDeepEqual)(imp.name, name) && imp.isTypeOnly)) return prev;
|
|
127
|
-
if (uniquePrev || Array.isArray(name) && !name.length) return prev;
|
|
128
|
-
if (!prevByPath) return [...prev, {
|
|
129
|
-
...curr,
|
|
130
|
-
name
|
|
131
|
-
}];
|
|
132
|
-
if (prevByPath && Array.isArray(prevByPath.name) && Array.isArray(name) && prevByPath.isTypeOnly === curr.isTypeOnly) {
|
|
133
|
-
prevByPath.name = [...new Set([...prevByPath.name, ...name])];
|
|
134
|
-
return prev;
|
|
135
|
-
}
|
|
136
|
-
if (!Array.isArray(name) && name && !hasImportInSource(name)) return prev;
|
|
137
|
-
return [...prev, curr];
|
|
138
|
-
}, []);
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Helper to create a file with name and id set
|
|
142
|
-
*/
|
|
143
|
-
function createFile(file) {
|
|
144
|
-
var _file$exports, _file$imports, _file$sources;
|
|
145
|
-
const extname = node_path.default.extname(file.baseName);
|
|
146
|
-
if (!extname) throw new Error(`No extname found for ${file.baseName}`);
|
|
147
|
-
const source = file.sources.map((item) => item.value).join("\n\n");
|
|
148
|
-
const exports$1 = ((_file$exports = file.exports) === null || _file$exports === void 0 ? void 0 : _file$exports.length) ? combineExports(file.exports) : [];
|
|
149
|
-
const imports = ((_file$imports = file.imports) === null || _file$imports === void 0 ? void 0 : _file$imports.length) && source ? combineImports(file.imports, exports$1, source) : [];
|
|
150
|
-
const sources = ((_file$sources = file.sources) === null || _file$sources === void 0 ? void 0 : _file$sources.length) ? combineSources(file.sources) : [];
|
|
151
|
-
return {
|
|
152
|
-
...file,
|
|
153
|
-
id: hashObject({ path: file.path }),
|
|
154
|
-
name: require_createParser.trimExtName(file.baseName),
|
|
155
|
-
extname,
|
|
156
|
-
imports,
|
|
157
|
-
exports: exports$1,
|
|
158
|
-
sources,
|
|
159
|
-
meta: file.meta || {}
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
|
|
163
42
|
//#endregion
|
|
164
43
|
//#region src/utils/AsyncEventEmitter.ts
|
|
165
44
|
var _emitter = /* @__PURE__ */ new WeakMap();
|
|
166
45
|
var AsyncEventEmitter = class {
|
|
167
46
|
constructor(maxListener = 100) {
|
|
168
|
-
_classPrivateFieldInitSpec(this, _emitter, new node_events.EventEmitter());
|
|
169
|
-
_classPrivateFieldGet2(_emitter, this).setMaxListeners(maxListener);
|
|
47
|
+
require_defineProperty._classPrivateFieldInitSpec(this, _emitter, new node_events.EventEmitter());
|
|
48
|
+
require_defineProperty._classPrivateFieldGet2(_emitter, this).setMaxListeners(maxListener);
|
|
170
49
|
}
|
|
171
50
|
async emit(eventName, ...eventArgs) {
|
|
172
|
-
const listeners = _classPrivateFieldGet2(_emitter, this).listeners(eventName);
|
|
51
|
+
const listeners = require_defineProperty._classPrivateFieldGet2(_emitter, this).listeners(eventName);
|
|
173
52
|
if (listeners.length === 0) return;
|
|
174
53
|
await Promise.all(listeners.map(async (listener) => {
|
|
175
54
|
try {
|
|
@@ -180,70 +59,39 @@ var AsyncEventEmitter = class {
|
|
|
180
59
|
}));
|
|
181
60
|
}
|
|
182
61
|
on(eventName, handler) {
|
|
183
|
-
_classPrivateFieldGet2(_emitter, this).on(eventName, handler);
|
|
62
|
+
require_defineProperty._classPrivateFieldGet2(_emitter, this).on(eventName, handler);
|
|
63
|
+
}
|
|
64
|
+
onOnce(eventName, handler) {
|
|
65
|
+
const wrapper = (...args) => {
|
|
66
|
+
this.off(eventName, wrapper);
|
|
67
|
+
handler(...args);
|
|
68
|
+
};
|
|
69
|
+
this.on(eventName, wrapper);
|
|
184
70
|
}
|
|
185
71
|
off(eventName, handler) {
|
|
186
|
-
_classPrivateFieldGet2(_emitter, this).off(eventName, handler);
|
|
72
|
+
require_defineProperty._classPrivateFieldGet2(_emitter, this).off(eventName, handler);
|
|
187
73
|
}
|
|
188
74
|
removeAll() {
|
|
189
|
-
_classPrivateFieldGet2(_emitter, this).removeAllListeners();
|
|
75
|
+
require_defineProperty._classPrivateFieldGet2(_emitter, this).removeAllListeners();
|
|
190
76
|
}
|
|
191
77
|
};
|
|
192
78
|
|
|
193
|
-
//#endregion
|
|
194
|
-
//#region \0@oxc-project+runtime@0.95.0/helpers/typeof.js
|
|
195
|
-
function _typeof(o) {
|
|
196
|
-
"@babel/helpers - typeof";
|
|
197
|
-
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o$1) {
|
|
198
|
-
return typeof o$1;
|
|
199
|
-
} : function(o$1) {
|
|
200
|
-
return o$1 && "function" == typeof Symbol && o$1.constructor === Symbol && o$1 !== Symbol.prototype ? "symbol" : typeof o$1;
|
|
201
|
-
}, _typeof(o);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
//#endregion
|
|
205
|
-
//#region \0@oxc-project+runtime@0.95.0/helpers/toPrimitive.js
|
|
206
|
-
function toPrimitive(t, r) {
|
|
207
|
-
if ("object" != _typeof(t) || !t) return t;
|
|
208
|
-
var e = t[Symbol.toPrimitive];
|
|
209
|
-
if (void 0 !== e) {
|
|
210
|
-
var i = e.call(t, r || "default");
|
|
211
|
-
if ("object" != _typeof(i)) return i;
|
|
212
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
213
|
-
}
|
|
214
|
-
return ("string" === r ? String : Number)(t);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
//#endregion
|
|
218
|
-
//#region \0@oxc-project+runtime@0.95.0/helpers/toPropertyKey.js
|
|
219
|
-
function toPropertyKey(t) {
|
|
220
|
-
var i = toPrimitive(t, "string");
|
|
221
|
-
return "symbol" == _typeof(i) ? i : i + "";
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
//#endregion
|
|
225
|
-
//#region \0@oxc-project+runtime@0.95.0/helpers/defineProperty.js
|
|
226
|
-
function _defineProperty(e, r, t) {
|
|
227
|
-
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
228
|
-
value: t,
|
|
229
|
-
enumerable: !0,
|
|
230
|
-
configurable: !0,
|
|
231
|
-
writable: !0
|
|
232
|
-
}) : e[r] = t, e;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
79
|
//#endregion
|
|
236
80
|
//#region src/FileProcessor.ts
|
|
237
81
|
var _limit = /* @__PURE__ */ new WeakMap();
|
|
238
82
|
var FileProcessor = class {
|
|
239
83
|
constructor({ events = new AsyncEventEmitter() } = {}) {
|
|
240
|
-
_classPrivateFieldInitSpec(this, _limit, (0, p_limit.default)(100));
|
|
241
|
-
_defineProperty(this, "events", void 0);
|
|
84
|
+
require_defineProperty._classPrivateFieldInitSpec(this, _limit, (0, p_limit.default)(100));
|
|
85
|
+
require_defineProperty._defineProperty(this, "events", void 0);
|
|
242
86
|
this.events = events;
|
|
243
87
|
return this;
|
|
244
88
|
}
|
|
245
|
-
async parse(file, { parsers
|
|
89
|
+
async parse(file, { parsers, extension } = {}) {
|
|
246
90
|
const parseExtName = (extension === null || extension === void 0 ? void 0 : extension[file.extname]) || void 0;
|
|
91
|
+
if (!parsers) {
|
|
92
|
+
console.warn("No parsers provided, using default parser. If you want to use a specific parser, please provide it in the options.");
|
|
93
|
+
return require_defaultParser.defaultParser.parse(file, { extname: parseExtName });
|
|
94
|
+
}
|
|
247
95
|
if (!file.extname) return require_defaultParser.defaultParser.parse(file, { extname: parseExtName });
|
|
248
96
|
let parser;
|
|
249
97
|
for (const item of parsers) {
|
|
@@ -260,7 +108,7 @@ var FileProcessor = class {
|
|
|
260
108
|
await this.events.emit("process:start", { files });
|
|
261
109
|
let processed = 0;
|
|
262
110
|
const total = files.length;
|
|
263
|
-
const promises = files.map((resolvedFile, index) => _classPrivateFieldGet2(_limit, this).call(this, async () => {
|
|
111
|
+
const promises = files.map((resolvedFile, index) => require_defineProperty._classPrivateFieldGet2(_limit, this).call(this, async () => {
|
|
264
112
|
await this.events.emit("file:start", {
|
|
265
113
|
file: resolvedFile,
|
|
266
114
|
index,
|
|
@@ -308,9 +156,11 @@ function mergeFile(a, b) {
|
|
|
308
156
|
var _cache = /* @__PURE__ */ new WeakMap();
|
|
309
157
|
var FileManager = class {
|
|
310
158
|
constructor({ events = new AsyncEventEmitter() } = {}) {
|
|
311
|
-
_classPrivateFieldInitSpec(this, _cache, new Cache());
|
|
312
|
-
_defineProperty(this, "
|
|
159
|
+
require_defineProperty._classPrivateFieldInitSpec(this, _cache, new Cache());
|
|
160
|
+
require_defineProperty._defineProperty(this, "events", void 0);
|
|
161
|
+
require_defineProperty._defineProperty(this, "processor", void 0);
|
|
313
162
|
this.processor = new FileProcessor({ events });
|
|
163
|
+
this.events = events;
|
|
314
164
|
return this;
|
|
315
165
|
}
|
|
316
166
|
async add(...files) {
|
|
@@ -322,31 +172,33 @@ var FileManager = class {
|
|
|
322
172
|
else mergedFiles.set(file.path, file);
|
|
323
173
|
});
|
|
324
174
|
for (const file of mergedFiles.values()) {
|
|
325
|
-
const existing = _classPrivateFieldGet2(_cache, this).get(file.path);
|
|
326
|
-
const resolvedFile = createFile(existing ? mergeFile(existing, file) : file);
|
|
327
|
-
_classPrivateFieldGet2(_cache, this).set(resolvedFile.path, resolvedFile);
|
|
175
|
+
const existing = require_defineProperty._classPrivateFieldGet2(_cache, this).get(file.path);
|
|
176
|
+
const resolvedFile = require_defineProperty.createFile(existing ? mergeFile(existing, file) : file);
|
|
177
|
+
require_defineProperty._classPrivateFieldGet2(_cache, this).set(resolvedFile.path, resolvedFile);
|
|
328
178
|
this.flush();
|
|
329
179
|
resolvedFiles.push(resolvedFile);
|
|
330
180
|
}
|
|
331
181
|
return resolvedFiles;
|
|
332
182
|
}
|
|
333
183
|
flush() {
|
|
334
|
-
_classPrivateFieldGet2(_cache, this).flush();
|
|
184
|
+
require_defineProperty._classPrivateFieldGet2(_cache, this).flush();
|
|
335
185
|
}
|
|
336
|
-
getByPath(path
|
|
337
|
-
return _classPrivateFieldGet2(_cache, this).get(path
|
|
186
|
+
getByPath(path) {
|
|
187
|
+
return require_defineProperty._classPrivateFieldGet2(_cache, this).get(path);
|
|
338
188
|
}
|
|
339
|
-
deleteByPath(path
|
|
340
|
-
_classPrivateFieldGet2(_cache, this).delete(path
|
|
189
|
+
deleteByPath(path) {
|
|
190
|
+
require_defineProperty._classPrivateFieldGet2(_cache, this).delete(path);
|
|
341
191
|
}
|
|
342
192
|
clear() {
|
|
343
|
-
_classPrivateFieldGet2(_cache, this).clear();
|
|
193
|
+
require_defineProperty._classPrivateFieldGet2(_cache, this).clear();
|
|
344
194
|
}
|
|
345
195
|
get files() {
|
|
346
|
-
return (0, natural_orderby.orderBy)(_classPrivateFieldGet2(_cache, this).keys(), [(v) => v.length, (v) =>
|
|
196
|
+
return (0, natural_orderby.orderBy)(require_defineProperty._classPrivateFieldGet2(_cache, this).keys(), [(v) => v.length, (v) => require_trimExtName.trimExtName(v).endsWith("index")]).map((key) => require_defineProperty._classPrivateFieldGet2(_cache, this).get(key)).filter(Boolean);
|
|
347
197
|
}
|
|
348
198
|
async write(options) {
|
|
349
|
-
|
|
199
|
+
const resolvedFiles = await this.processor.run(this.files, options);
|
|
200
|
+
this.clear();
|
|
201
|
+
return resolvedFiles;
|
|
350
202
|
}
|
|
351
203
|
};
|
|
352
204
|
|
|
@@ -372,7 +224,7 @@ function defineApp(instance) {
|
|
|
372
224
|
async addFile(...newFiles) {
|
|
373
225
|
await fileManager.add(...newFiles);
|
|
374
226
|
},
|
|
375
|
-
use(pluginOrParser, ...options$1) {
|
|
227
|
+
async use(pluginOrParser, ...options$1) {
|
|
376
228
|
const args = options$1;
|
|
377
229
|
if (pluginOrParser.type === "plugin") {
|
|
378
230
|
if (installedPlugins.has(pluginOrParser)) console.warn("Plugin has already been applied to target app.");
|
|
@@ -387,12 +239,11 @@ function defineApp(instance) {
|
|
|
387
239
|
else installedParsers.add(pluginOrParser);
|
|
388
240
|
if (pluginOrParser && (0, remeda.isFunction)(pluginOrParser.install)) {
|
|
389
241
|
const installer = pluginOrParser.install;
|
|
390
|
-
installer(app, ...args);
|
|
242
|
+
await installer(app, ...args);
|
|
391
243
|
}
|
|
392
244
|
return app;
|
|
393
245
|
}
|
|
394
246
|
};
|
|
395
|
-
events.emit("start", { app });
|
|
396
247
|
if (instance) instance(app);
|
|
397
248
|
return app;
|
|
398
249
|
}
|
|
@@ -407,6 +258,6 @@ const createApp = defineApp();
|
|
|
407
258
|
exports.FileManager = FileManager;
|
|
408
259
|
exports.FileProcessor = FileProcessor;
|
|
409
260
|
exports.createApp = createApp;
|
|
410
|
-
exports.createFile = createFile;
|
|
261
|
+
exports.createFile = require_defineProperty.createFile;
|
|
411
262
|
exports.defineApp = defineApp;
|
|
412
263
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["exports","name","path","trimExtName","NodeEventEmitter","defaultParser","parser: Parser | undefined","resolvedFiles: Array<KubbFile.ResolvedFile>","path","trimExtName","createApp","options"],"sources":["../src/utils/Cache.ts","../src/createFile.ts","../src/utils/AsyncEventEmitter.ts","../src/FileProcessor.ts","../src/FileManager.ts","../src/defineApp.ts","../src/createApp.ts"],"sourcesContent":["export class Cache<T> {\n #buffer = new Map<string, T>()\n\n get(key: string): T | null {\n return this.#buffer.get(key) ?? null\n }\n\n set(key: string, value: T): void {\n this.#buffer.set(key, value)\n }\n\n delete(key: string): void {\n this.#buffer.delete(key)\n }\n\n clear(): void {\n this.#buffer.clear()\n }\n\n keys(): string[] {\n return [...this.#buffer.keys()]\n }\n\n values(): Array<T> {\n return [...this.#buffer.values()]\n }\n\n flush(): void {\n // No-op for base cache\n }\n}\n","import type * as KubbFile from './KubbFile.ts'\nimport { trimExtName } from './utils/trimExtName.ts'\nimport { createHash } from 'node:crypto'\nimport path from 'node:path'\nimport { isDeepEqual, uniqueBy } from 'remeda'\nimport { orderBy } from 'natural-orderby'\n\nfunction hashObject(obj: Record<string, unknown>): string {\n const str = JSON.stringify(obj, Object.keys(obj).sort())\n return createHash('sha256').update(str).digest('hex')\n}\n\nexport function combineSources(sources: Array<KubbFile.Source>): Array<KubbFile.Source> {\n return uniqueBy(sources, (obj) => [obj.name, obj.isExportable, obj.isTypeOnly] as const)\n}\n\nexport function combineExports(exports: Array<KubbFile.Export>): Array<KubbFile.Export> {\n return orderBy(exports, [\n (v) => !!Array.isArray(v.name),\n (v) => !v.isTypeOnly,\n (v) => v.path,\n (v) => !!v.name,\n (v) => (Array.isArray(v.name) ? orderBy(v.name) : v.name),\n ]).reduce(\n (prev, curr) => {\n const name = curr.name\n const prevByPath = prev.findLast((imp) => imp.path === curr.path)\n const prevByPathAndIsTypeOnly = prev.findLast((imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly)\n\n if (prevByPathAndIsTypeOnly) {\n // we already have an export that has the same path but uses `isTypeOnly` (export type ...)\n return prev\n }\n\n const uniquePrev = prev.findLast(\n (imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly === curr.isTypeOnly && imp.asAlias === curr.asAlias,\n )\n\n // we already have an item that was unique enough or name field is empty or prev asAlias is set but current has no changes\n if (uniquePrev || (Array.isArray(name) && !name.length) || (prevByPath?.asAlias && !curr.asAlias)) {\n return prev\n }\n\n if (!prevByPath) {\n return [\n ...prev,\n {\n ...curr,\n name: Array.isArray(name) ? [...new Set(name)] : name,\n },\n ]\n }\n\n // merge all names when prev and current both have the same isTypeOnly set\n if (prevByPath && Array.isArray(prevByPath.name) && Array.isArray(curr.name) && prevByPath.isTypeOnly === curr.isTypeOnly) {\n prevByPath.name = [...new Set([...prevByPath.name, ...curr.name])]\n\n return prev\n }\n\n return [...prev, curr]\n },\n [] as Array<KubbFile.Export>,\n )\n}\n\nexport function combineImports(imports: Array<KubbFile.Import>, exports: Array<KubbFile.Export>, source?: string): Array<KubbFile.Import> {\n return orderBy(imports, [\n (v) => !!Array.isArray(v.name),\n (v) => !v.isTypeOnly,\n (v) => v.path,\n (v) => !!v.name,\n (v) => (Array.isArray(v.name) ? orderBy(v.name) : v.name),\n ]).reduce(\n (prev, curr) => {\n let name = Array.isArray(curr.name) ? [...new Set(curr.name)] : curr.name\n\n const hasImportInSource = (importName: string) => {\n if (!source) {\n return true\n }\n\n const checker = (name?: string) => {\n return name && source.includes(name)\n }\n\n return checker(importName) || exports.some(({ name }) => (Array.isArray(name) ? name.some(checker) : checker(name)))\n }\n\n if (curr.path === curr.root) {\n // root and path are the same file, remove the \"./\" import\n return prev\n }\n\n // merge all names and check if the importName is being used in the generated source and if not filter those imports out\n if (Array.isArray(name)) {\n name = name.filter((item) => (typeof item === 'string' ? hasImportInSource(item) : hasImportInSource(item.propertyName)))\n }\n\n const prevByPath = prev.findLast((imp) => imp.path === curr.path && imp.isTypeOnly === curr.isTypeOnly)\n const uniquePrev = prev.findLast((imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly === curr.isTypeOnly)\n const prevByPathNameAndIsTypeOnly = prev.findLast((imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly)\n\n if (prevByPathNameAndIsTypeOnly) {\n // we already have an export that has the same path but uses `isTypeOnly` (import type ...)\n return prev\n }\n\n // already unique enough or name is empty\n if (uniquePrev || (Array.isArray(name) && !name.length)) {\n return prev\n }\n\n // new item, append name\n if (!prevByPath) {\n return [\n ...prev,\n {\n ...curr,\n name,\n },\n ]\n }\n\n // merge all names when prev and current both have the same isTypeOnly set\n if (prevByPath && Array.isArray(prevByPath.name) && Array.isArray(name) && prevByPath.isTypeOnly === curr.isTypeOnly) {\n prevByPath.name = [...new Set([...prevByPath.name, ...name])]\n\n return prev\n }\n\n // no import was found in the source, ignore import\n if (!Array.isArray(name) && name && !hasImportInSource(name)) {\n return prev\n }\n\n return [...prev, curr]\n },\n [] as Array<KubbFile.Import>,\n )\n}\n\n/**\n * Helper to create a file with name and id set\n */\nexport function createFile<TMeta extends object = object>(file: KubbFile.File<TMeta>): KubbFile.ResolvedFile<TMeta> {\n const extname = path.extname(file.baseName) as KubbFile.Extname\n if (!extname) {\n throw new Error(`No extname found for ${file.baseName}`)\n }\n\n const source = file.sources.map((item) => item.value).join('\\n\\n')\n const exports = file.exports?.length ? combineExports(file.exports) : []\n const imports = file.imports?.length && source ? combineImports(file.imports, exports, source) : []\n const sources = file.sources?.length ? combineSources(file.sources) : []\n\n return {\n ...file,\n id: hashObject({ path: file.path }),\n name: trimExtName(file.baseName),\n extname,\n imports: imports,\n exports: exports,\n sources: sources,\n meta: file.meta || ({} as TMeta),\n }\n}\n","import { EventEmitter as NodeEventEmitter } from 'node:events'\n\nexport class AsyncEventEmitter<TEvents extends Record<string, any>> {\n constructor(maxListener = 100) {\n this.#emitter.setMaxListeners(maxListener)\n }\n #emitter = new NodeEventEmitter()\n\n async emit<TEventName extends keyof TEvents & string>(eventName: TEventName, ...eventArgs: TEvents[TEventName]): Promise<void> {\n const listeners = this.#emitter.listeners(eventName) as Array<(...args: TEvents[TEventName]) => any>\n\n if (listeners.length === 0) {\n return undefined\n }\n\n await Promise.all(\n listeners.map(async (listener) => {\n try {\n return await listener(...eventArgs)\n } catch (err) {\n console.error(`Error in async listener for \"${eventName}\":`, err)\n }\n }),\n )\n }\n\n on<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void {\n this.#emitter.on(eventName, handler as any)\n }\n\n off<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void {\n this.#emitter.off(eventName, handler as any)\n }\n removeAll(): void {\n this.#emitter.removeAllListeners()\n }\n}\n","import type * as KubbFile from './KubbFile.ts'\nimport pLimit from 'p-limit'\n\nimport type { Parser } from './parsers/types.ts'\nimport { defaultParser } from './parsers/defaultParser.ts'\nimport { AsyncEventEmitter } from './utils/AsyncEventEmitter.ts'\nimport type { AppEvents } from './App.ts'\n\nexport type ProcessFilesProps = {\n parsers?: Set<Parser>\n extension?: Record<KubbFile.Extname, KubbFile.Extname | ''>\n dryRun?: boolean\n}\n\ntype GetParseOptions = {\n parsers?: Set<Parser>\n extension?: Record<KubbFile.Extname, KubbFile.Extname | ''>\n}\n\ntype Options = {\n events?: AsyncEventEmitter<AppEvents>\n}\n\nexport class FileProcessor {\n #limit = pLimit(100)\n events: AsyncEventEmitter<AppEvents>\n\n constructor({ events = new AsyncEventEmitter<AppEvents>() }: Options = {}) {\n this.events = events\n\n return this\n }\n\n async parse(file: KubbFile.ResolvedFile, { parsers = new Set(), extension }: GetParseOptions = {}): Promise<string> {\n const parseExtName = extension?.[file.extname] || undefined\n\n if (!file.extname) {\n return defaultParser.parse(file, { extname: parseExtName })\n }\n\n let parser: Parser | undefined\n for (const item of parsers) {\n if (item.extNames?.includes(file.extname)) {\n parser = item\n break\n }\n }\n\n if (!parser) {\n return defaultParser.parse(file, { extname: parseExtName })\n }\n\n return parser.parse(file, { extname: parseExtName })\n }\n\n async run(files: Array<KubbFile.ResolvedFile>, { parsers, dryRun, extension }: ProcessFilesProps = {}): Promise<KubbFile.ResolvedFile[]> {\n await this.events.emit('process:start', { files })\n\n let processed = 0\n const total = files.length\n\n const promises = files.map((resolvedFile, index) =>\n this.#limit(async () => {\n await this.events.emit('file:start', { file: resolvedFile, index, total })\n\n if (!dryRun) {\n const source = await this.parse(resolvedFile, { extension, parsers })\n const nextProcessed = processed + 1\n const percentage = (nextProcessed / total) * 100\n processed = nextProcessed\n await this.events.emit('process:progress', { file: resolvedFile, source, processed, percentage, total })\n }\n\n await this.events.emit('file:end', { file: resolvedFile, index, total })\n\n processed++\n }),\n )\n\n await Promise.all(promises)\n\n await this.events.emit('process:end', { files })\n\n return files\n }\n}\n","import type * as KubbFile from './KubbFile.ts'\nimport { Cache } from './utils/Cache.ts'\nimport { trimExtName } from './utils/trimExtName.ts'\nimport { orderBy } from 'natural-orderby'\nimport { createFile } from './createFile.ts'\nimport { FileProcessor, type ProcessFilesProps } from './FileProcessor.ts'\nimport { AsyncEventEmitter } from './utils/AsyncEventEmitter.ts'\nimport type { AppEvents } from './App.ts'\n\nfunction mergeFile<TMeta extends object = object>(a: KubbFile.File<TMeta>, b: KubbFile.File<TMeta>): KubbFile.File<TMeta> {\n return {\n ...a,\n sources: [...(a.sources || []), ...(b.sources || [])],\n imports: [...(a.imports || []), ...(b.imports || [])],\n exports: [...(a.exports || []), ...(b.exports || [])],\n }\n}\n\ntype Options = {\n events?: AsyncEventEmitter<AppEvents>\n}\n\nexport class FileManager {\n #cache = new Cache<KubbFile.ResolvedFile>()\n processor: FileProcessor\n\n constructor({ events = new AsyncEventEmitter<AppEvents>() }: Options = {}) {\n this.processor = new FileProcessor({ events })\n return this\n }\n\n async add(...files: Array<KubbFile.File>) {\n const resolvedFiles: Array<KubbFile.ResolvedFile> = []\n\n const mergedFiles = new Map<string, KubbFile.File>()\n\n files.forEach((file) => {\n const existing = mergedFiles.get(file.path)\n if (existing) {\n mergedFiles.set(file.path, mergeFile(existing, file))\n } else {\n mergedFiles.set(file.path, file)\n }\n })\n\n for (const file of mergedFiles.values()) {\n const existing = this.#cache.get(file.path)\n\n const merged = existing ? mergeFile(existing, file) : file\n const resolvedFile = createFile(merged)\n\n this.#cache.set(resolvedFile.path, resolvedFile)\n this.flush()\n\n resolvedFiles.push(resolvedFile)\n }\n\n return resolvedFiles\n }\n\n flush() {\n this.#cache.flush()\n }\n\n getByPath(path: KubbFile.Path): KubbFile.ResolvedFile | null {\n return this.#cache.get(path)\n }\n\n deleteByPath(path: KubbFile.Path): void {\n this.#cache.delete(path)\n }\n\n clear(): void {\n this.#cache.clear()\n }\n\n get files(): Array<KubbFile.ResolvedFile> {\n const cachedKeys = this.#cache.keys()\n\n // order by path length and if file is a barrel file\n const keys = orderBy(cachedKeys, [(v) => v.length, (v) => trimExtName(v).endsWith('index')])\n\n const files = keys.map((key) => this.#cache.get(key))\n\n return files.filter(Boolean)\n }\n\n async write(options: ProcessFilesProps): Promise<KubbFile.ResolvedFile[]> {\n return this.processor.run(this.files, options)\n }\n}\n","import { FileManager } from './FileManager.ts'\nimport { isFunction } from 'remeda'\nimport type { Plugin } from './plugins/types.ts'\nimport type { Parser } from './parsers/types.ts'\nimport { AsyncEventEmitter } from './utils/AsyncEventEmitter.ts'\nimport type { App, AppContext, Component, AppEvents } from './App.ts'\n\ntype RootRenderFunction<TApp extends App> = (app: TApp) => void | Promise<void>\n\nexport type DefineApp<TOptions> = (rootComponent?: Component, options?: TOptions) => App\n\nexport function defineApp<TOptions = unknown>(instance?: RootRenderFunction<App<TOptions>>): DefineApp<TOptions> {\n function createApp(options?: TOptions): App {\n const events = new AsyncEventEmitter<AppEvents>()\n const installedPlugins = new Set<Plugin>()\n const installedParsers = new Set<Parser>()\n const fileManager = new FileManager({ events })\n const context = {\n events,\n options,\n fileManager,\n installedPlugins,\n installedParsers,\n } as AppContext<TOptions>\n\n const app = {\n context,\n get files() {\n return fileManager.files\n },\n async addFile(...newFiles) {\n await fileManager.add(...newFiles)\n },\n use(pluginOrParser, ...options) {\n const args = options\n\n if (pluginOrParser.type === 'plugin') {\n if (installedPlugins.has(pluginOrParser)) {\n console.warn('Plugin has already been applied to target app.')\n } else {\n installedPlugins.add(pluginOrParser)\n }\n\n if (pluginOrParser.inject && isFunction(pluginOrParser.inject)) {\n const injecter = pluginOrParser.inject\n\n const extraApp = (injecter as any)(app, ...args)\n Object.assign(app, extraApp)\n }\n }\n if (pluginOrParser.type === 'parser') {\n if (installedParsers.has(pluginOrParser)) {\n console.warn('Parser has already been applied to target app.')\n } else {\n installedParsers.add(pluginOrParser)\n }\n }\n\n if (pluginOrParser && isFunction(pluginOrParser.install)) {\n const installer = pluginOrParser.install\n\n ;(installer as any)(app, ...args)\n }\n\n return app\n },\n } as App<TOptions>\n\n // start\n events.emit('start', { app })\n if (instance) {\n instance(app)\n }\n\n return app\n }\n\n return createApp\n}\n","import { defineApp } from './defineApp.ts'\n\nexport const createApp = defineApp()\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["NodeEventEmitter","defaultParser","parser: Parser | undefined","resolvedFiles: Array<KubbFile.ResolvedFile>","createFile","trimExtName","createApp","options"],"sources":["../src/utils/Cache.ts","../src/utils/AsyncEventEmitter.ts","../src/FileProcessor.ts","../src/FileManager.ts","../src/defineApp.ts","../src/createApp.ts"],"sourcesContent":["export class Cache<T> {\n #buffer = new Map<string, T>()\n\n get(key: string): T | null {\n return this.#buffer.get(key) ?? null\n }\n\n set(key: string, value: T): void {\n this.#buffer.set(key, value)\n }\n\n delete(key: string): void {\n this.#buffer.delete(key)\n }\n\n clear(): void {\n this.#buffer.clear()\n }\n\n keys(): string[] {\n return [...this.#buffer.keys()]\n }\n\n values(): Array<T> {\n return [...this.#buffer.values()]\n }\n\n flush(): void {\n // No-op for base cache\n }\n}\n","import { EventEmitter as NodeEventEmitter } from 'node:events'\n\nexport class AsyncEventEmitter<TEvents extends Record<string, any>> {\n constructor(maxListener = 100) {\n this.#emitter.setMaxListeners(maxListener)\n }\n #emitter = new NodeEventEmitter()\n\n async emit<TEventName extends keyof TEvents & string>(eventName: TEventName, ...eventArgs: TEvents[TEventName]): Promise<void> {\n const listeners = this.#emitter.listeners(eventName) as Array<(...args: TEvents[TEventName]) => any>\n\n if (listeners.length === 0) {\n return undefined\n }\n\n await Promise.all(\n listeners.map(async (listener) => {\n try {\n return await listener(...eventArgs)\n } catch (err) {\n console.error(`Error in async listener for \"${eventName}\":`, err)\n }\n }),\n )\n }\n\n on<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void {\n this.#emitter.on(eventName, handler as any)\n }\n\n onOnce<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArgs: TEvents[TEventName]) => void): void {\n const wrapper = (...args: TEvents[TEventName]) => {\n this.off(eventName, wrapper)\n handler(...args)\n }\n this.on(eventName, wrapper)\n }\n\n off<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void {\n this.#emitter.off(eventName, handler as any)\n }\n removeAll(): void {\n this.#emitter.removeAllListeners()\n }\n}\n","import type * as KubbFile from './KubbFile.ts'\nimport pLimit from 'p-limit'\n\nimport type { Parser } from './parsers/types.ts'\nimport { defaultParser } from './parsers/defaultParser.ts'\nimport { AsyncEventEmitter } from './utils/AsyncEventEmitter.ts'\nimport type { AppEvents } from './App.ts'\n\nexport type ProcessFilesProps = {\n parsers?: Set<Parser>\n extension?: Record<KubbFile.Extname, KubbFile.Extname | ''>\n dryRun?: boolean\n}\n\ntype GetParseOptions = {\n parsers?: Set<Parser>\n extension?: Record<KubbFile.Extname, KubbFile.Extname | ''>\n}\n\ntype Options = {\n events?: AsyncEventEmitter<AppEvents>\n}\n\nexport class FileProcessor {\n #limit = pLimit(100)\n events: AsyncEventEmitter<AppEvents>\n\n constructor({ events = new AsyncEventEmitter<AppEvents>() }: Options = {}) {\n this.events = events\n\n return this\n }\n\n async parse(file: KubbFile.ResolvedFile, { parsers, extension }: GetParseOptions = {}): Promise<string> {\n const parseExtName = extension?.[file.extname] || undefined\n\n if (!parsers) {\n console.warn('No parsers provided, using default parser. If you want to use a specific parser, please provide it in the options.')\n\n return defaultParser.parse(file, { extname: parseExtName })\n }\n\n if (!file.extname) {\n return defaultParser.parse(file, { extname: parseExtName })\n }\n\n let parser: Parser | undefined\n for (const item of parsers) {\n if (item.extNames?.includes(file.extname)) {\n parser = item\n break\n }\n }\n\n if (!parser) {\n return defaultParser.parse(file, { extname: parseExtName })\n }\n\n return parser.parse(file, { extname: parseExtName })\n }\n\n async run(files: Array<KubbFile.ResolvedFile>, { parsers, dryRun, extension }: ProcessFilesProps = {}): Promise<KubbFile.ResolvedFile[]> {\n await this.events.emit('process:start', { files })\n\n let processed = 0\n const total = files.length\n\n const promises = files.map((resolvedFile, index) =>\n this.#limit(async () => {\n await this.events.emit('file:start', { file: resolvedFile, index, total })\n\n if (!dryRun) {\n const source = await this.parse(resolvedFile, { extension, parsers })\n const nextProcessed = processed + 1\n const percentage = (nextProcessed / total) * 100\n processed = nextProcessed\n await this.events.emit('process:progress', { file: resolvedFile, source, processed, percentage, total })\n }\n\n await this.events.emit('file:end', { file: resolvedFile, index, total })\n\n processed++\n }),\n )\n\n await Promise.all(promises)\n\n await this.events.emit('process:end', { files })\n\n return files\n }\n}\n","import type * as KubbFile from './KubbFile.ts'\nimport { Cache } from './utils/Cache.ts'\nimport { trimExtName } from './utils/trimExtName.ts'\nimport { orderBy } from 'natural-orderby'\nimport { createFile } from './createFile.ts'\nimport { FileProcessor, type ProcessFilesProps } from './FileProcessor.ts'\nimport { AsyncEventEmitter } from './utils/AsyncEventEmitter.ts'\nimport type { AppEvents } from './App.ts'\n\nfunction mergeFile<TMeta extends object = object>(a: KubbFile.File<TMeta>, b: KubbFile.File<TMeta>): KubbFile.File<TMeta> {\n return {\n ...a,\n sources: [...(a.sources || []), ...(b.sources || [])],\n imports: [...(a.imports || []), ...(b.imports || [])],\n exports: [...(a.exports || []), ...(b.exports || [])],\n }\n}\n\ntype Options = {\n events?: AsyncEventEmitter<AppEvents>\n}\n\nexport class FileManager {\n #cache = new Cache<KubbFile.ResolvedFile>()\n events: AsyncEventEmitter<AppEvents>\n processor: FileProcessor\n\n constructor({ events = new AsyncEventEmitter<AppEvents>() }: Options = {}) {\n this.processor = new FileProcessor({ events })\n\n this.events = events\n return this\n }\n\n async add(...files: Array<KubbFile.File>) {\n const resolvedFiles: Array<KubbFile.ResolvedFile> = []\n\n const mergedFiles = new Map<string, KubbFile.File>()\n\n files.forEach((file) => {\n const existing = mergedFiles.get(file.path)\n if (existing) {\n mergedFiles.set(file.path, mergeFile(existing, file))\n } else {\n mergedFiles.set(file.path, file)\n }\n })\n\n for (const file of mergedFiles.values()) {\n const existing = this.#cache.get(file.path)\n\n const merged = existing ? mergeFile(existing, file) : file\n const resolvedFile = createFile(merged)\n\n this.#cache.set(resolvedFile.path, resolvedFile)\n this.flush()\n\n resolvedFiles.push(resolvedFile)\n }\n\n return resolvedFiles\n }\n\n flush() {\n this.#cache.flush()\n }\n\n getByPath(path: KubbFile.Path): KubbFile.ResolvedFile | null {\n return this.#cache.get(path)\n }\n\n deleteByPath(path: KubbFile.Path): void {\n this.#cache.delete(path)\n }\n\n clear(): void {\n this.#cache.clear()\n }\n\n get files(): Array<KubbFile.ResolvedFile> {\n const cachedKeys = this.#cache.keys()\n\n // order by path length and if file is a barrel file\n const keys = orderBy(cachedKeys, [(v) => v.length, (v) => trimExtName(v).endsWith('index')])\n\n const files = keys.map((key) => this.#cache.get(key))\n\n return files.filter(Boolean)\n }\n\n async write(options: ProcessFilesProps): Promise<KubbFile.ResolvedFile[]> {\n const resolvedFiles = await this.processor.run(this.files, options)\n\n this.clear()\n\n return resolvedFiles\n }\n}\n","import { FileManager } from './FileManager.ts'\nimport { isFunction } from 'remeda'\nimport type { Plugin } from './plugins/types.ts'\nimport type { Parser } from './parsers/types.ts'\nimport { AsyncEventEmitter } from './utils/AsyncEventEmitter.ts'\nimport type { AppContext, Component, AppEvents } from './App.ts'\n\nimport type { App } from './index.ts'\n\ntype RootRenderFunction<TApp extends App> = (app: TApp) => void | Promise<void>\n\nexport type DefineApp<TOptions> = (rootComponent?: Component, options?: TOptions) => App\n\nexport function defineApp<TOptions = unknown>(instance?: RootRenderFunction<App<TOptions>>): DefineApp<TOptions> {\n function createApp(options?: TOptions): App {\n const events = new AsyncEventEmitter<AppEvents>()\n const installedPlugins = new Set<Plugin<any>>()\n const installedParsers = new Set<Parser<any>>()\n const fileManager = new FileManager({ events })\n const context = {\n events,\n options,\n fileManager,\n installedPlugins,\n installedParsers,\n } as AppContext<TOptions>\n\n const app = {\n context,\n get files() {\n return fileManager.files\n },\n async addFile(...newFiles) {\n await fileManager.add(...newFiles)\n },\n async use(pluginOrParser, ...options) {\n const args = options\n\n if (pluginOrParser.type === 'plugin') {\n if (installedPlugins.has(pluginOrParser)) {\n console.warn('Plugin has already been applied to target app.')\n } else {\n installedPlugins.add(pluginOrParser)\n }\n\n if (pluginOrParser.inject && isFunction(pluginOrParser.inject)) {\n const injecter = pluginOrParser.inject\n\n const extraApp = (injecter as any)(app, ...args)\n Object.assign(app, extraApp)\n }\n }\n if (pluginOrParser.type === 'parser') {\n if (installedParsers.has(pluginOrParser)) {\n console.warn('Parser has already been applied to target app.')\n } else {\n installedParsers.add(pluginOrParser)\n }\n }\n\n if (pluginOrParser && isFunction(pluginOrParser.install)) {\n const installer = pluginOrParser.install\n\n await (installer as any)(app, ...args)\n }\n\n return app\n },\n } as App<TOptions>\n\n if (instance) {\n instance(app)\n }\n\n return app\n }\n\n return createApp\n}\n","import { defineApp } from './defineApp.ts'\n\nexport const createApp = defineApp()\n"],"mappings":"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"}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
import { a as FileProcessor,
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
//#region src/createApp.d.ts
|
|
5
|
-
declare const createApp: DefineApp<unknown>;
|
|
6
|
-
//#endregion
|
|
7
|
-
//#region src/createFile.d.ts
|
|
8
|
-
/**
|
|
9
|
-
* Helper to create a file with name and id set
|
|
10
|
-
*/
|
|
11
|
-
declare function createFile<TMeta extends object = object>(file: File<TMeta>): ResolvedFile<TMeta>;
|
|
12
|
-
//#endregion
|
|
13
|
-
export { type App, FileManager, FileProcessor, createApp, createFile, defineApp };
|
|
14
|
-
//# sourceMappingURL=index.d.cts.map
|
|
1
|
+
import { a as FileProcessor, i as FileManager, t as App } from "./App-Cplfh8QA.cjs";
|
|
2
|
+
import { i as defineApp, n as createApp, t as createFile } from "./index-C3GyFwE1.cjs";
|
|
3
|
+
export { App, FileManager, FileProcessor, createApp, createFile, defineApp };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
import { a as FileProcessor,
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
//#region src/createApp.d.ts
|
|
5
|
-
declare const createApp: DefineApp<unknown>;
|
|
6
|
-
//#endregion
|
|
7
|
-
//#region src/createFile.d.ts
|
|
8
|
-
/**
|
|
9
|
-
* Helper to create a file with name and id set
|
|
10
|
-
*/
|
|
11
|
-
declare function createFile<TMeta extends object = object>(file: File<TMeta>): ResolvedFile<TMeta>;
|
|
12
|
-
//#endregion
|
|
13
|
-
export { type App, FileManager, FileProcessor, createApp, createFile, defineApp };
|
|
14
|
-
//# sourceMappingURL=index.d.ts.map
|
|
1
|
+
import { a as FileProcessor, i as FileManager, t as App } from "./App-Dvetv2V_.js";
|
|
2
|
+
import { i as defineApp, n as createApp, t as createFile } from "./index-Agz-2M75.js";
|
|
3
|
+
export { App, FileManager, FileProcessor, createApp, createFile, defineApp };
|