@kubb/core 3.2.0 → 3.3.1

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.
Files changed (34) hide show
  1. package/dist/{chunk-2PVOSONX.cjs → chunk-332TL45M.cjs} +10 -10
  2. package/dist/{chunk-2PVOSONX.cjs.map → chunk-332TL45M.cjs.map} +1 -1
  3. package/dist/{chunk-VIC3WIWV.js → chunk-44OM74QT.js} +4 -4
  4. package/dist/chunk-44OM74QT.js.map +1 -0
  5. package/dist/{chunk-QIFPRGH2.cjs → chunk-J3TPOTFY.cjs} +35 -32
  6. package/dist/chunk-J3TPOTFY.cjs.map +1 -0
  7. package/dist/{chunk-5MBX6RKL.cjs → chunk-JPDOTVWM.cjs} +4 -4
  8. package/dist/{chunk-5MBX6RKL.cjs.map → chunk-JPDOTVWM.cjs.map} +1 -1
  9. package/dist/{chunk-T2FGDLUG.js → chunk-MDXPT7LL.js} +20 -17
  10. package/dist/chunk-MDXPT7LL.js.map +1 -0
  11. package/dist/{chunk-BDMDALIW.cjs → chunk-YAD5ZLE7.cjs} +8 -8
  12. package/dist/{chunk-BDMDALIW.cjs.map → chunk-YAD5ZLE7.cjs.map} +1 -1
  13. package/dist/{chunk-4C4XO7FN.cjs → chunk-YHVALC4L.cjs} +36 -36
  14. package/dist/chunk-YHVALC4L.cjs.map +1 -0
  15. package/dist/index.cjs +35 -35
  16. package/dist/index.js +3 -3
  17. package/dist/logger.cjs +7 -7
  18. package/dist/mocks.cjs +9 -9
  19. package/dist/mocks.js +2 -2
  20. package/dist/{prompt-N5L57K2F.cjs → prompt-ANPBQKUT.cjs} +62 -62
  21. package/dist/{prompt-N5L57K2F.cjs.map → prompt-ANPBQKUT.cjs.map} +1 -1
  22. package/dist/transformers.cjs +23 -23
  23. package/dist/transformers.d.cts +1 -1
  24. package/dist/transformers.d.ts +1 -1
  25. package/dist/transformers.js +1 -1
  26. package/dist/utils.cjs +17 -17
  27. package/dist/utils.js +2 -2
  28. package/package.json +7 -7
  29. package/src/transformers/toRegExp.ts +5 -1
  30. package/src/utils/parser.ts +1 -1
  31. package/dist/chunk-4C4XO7FN.cjs.map +0 -1
  32. package/dist/chunk-QIFPRGH2.cjs.map +0 -1
  33. package/dist/chunk-T2FGDLUG.js.map +0 -1
  34. package/dist/chunk-VIC3WIWV.js.map +0 -1
@@ -51,7 +51,7 @@ declare function stringifyObject(value: object): string;
51
51
  * @experimental
52
52
  */
53
53
  declare function toRegExp(text: string | RegExp): RegExp;
54
- declare function toRegExpString(text: string, func?: string): string;
54
+ declare function toRegExpString(text: string, func?: string | null): string;
55
55
 
56
56
  declare function transformReservedWord(word: string): string;
57
57
  declare function isValidVarName(name: string): boolean;
@@ -1,3 +1,3 @@
1
- export { camelCase, combineCodes, createIndent, createJSDocBlockText, transformers_default as default, escape, isValidVarName, jsStringEscape, merge, nameSorter, orderBy, pascalCase, pathCase, searchAndReplace, stringify, stringifyObject, toRegExp, toRegExpString, transformReservedWord, trim, trimQuotes } from './chunk-T2FGDLUG.js';
1
+ export { camelCase, combineCodes, createIndent, createJSDocBlockText, transformers_default as default, escape, isValidVarName, jsStringEscape, merge, nameSorter, orderBy, pascalCase, pathCase, searchAndReplace, stringify, stringifyObject, toRegExp, toRegExpString, transformReservedWord, trim, trimQuotes } from './chunk-MDXPT7LL.js';
2
2
  //# sourceMappingURL=transformers.js.map
3
3
  //# sourceMappingURL=transformers.js.map
package/dist/utils.cjs CHANGED
@@ -1,66 +1,66 @@
1
1
  'use strict';
2
2
 
3
- var chunk4C4XO7FN_cjs = require('./chunk-4C4XO7FN.cjs');
4
- require('./chunk-QIFPRGH2.cjs');
5
- require('./chunk-5MBX6RKL.cjs');
3
+ var chunkYHVALC4L_cjs = require('./chunk-YHVALC4L.cjs');
4
+ require('./chunk-J3TPOTFY.cjs');
5
+ require('./chunk-JPDOTVWM.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "FunctionParams", {
10
10
  enumerable: true,
11
- get: function () { return chunk4C4XO7FN_cjs.FunctionParams; }
11
+ get: function () { return chunkYHVALC4L_cjs.FunctionParams; }
12
12
  });
13
13
  Object.defineProperty(exports, "URLPath", {
14
14
  enumerable: true,
15
- get: function () { return chunk4C4XO7FN_cjs.URLPath; }
15
+ get: function () { return chunkYHVALC4L_cjs.URLPath; }
16
16
  });
17
17
  Object.defineProperty(exports, "createFile", {
18
18
  enumerable: true,
19
- get: function () { return chunk4C4XO7FN_cjs.createFile; }
19
+ get: function () { return chunkYHVALC4L_cjs.createFile; }
20
20
  });
21
21
  Object.defineProperty(exports, "createFileExport", {
22
22
  enumerable: true,
23
- get: function () { return chunk4C4XO7FN_cjs.createFileExport; }
23
+ get: function () { return chunkYHVALC4L_cjs.createFileExport; }
24
24
  });
25
25
  Object.defineProperty(exports, "createFileImport", {
26
26
  enumerable: true,
27
- get: function () { return chunk4C4XO7FN_cjs.createFileImport; }
27
+ get: function () { return chunkYHVALC4L_cjs.createFileImport; }
28
28
  });
29
29
  Object.defineProperty(exports, "createFileParser", {
30
30
  enumerable: true,
31
- get: function () { return chunk4C4XO7FN_cjs.createFileParser; }
31
+ get: function () { return chunkYHVALC4L_cjs.createFileParser; }
32
32
  });
33
33
  Object.defineProperty(exports, "getFileParser", {
34
34
  enumerable: true,
35
- get: function () { return chunk4C4XO7FN_cjs.getFileParser; }
35
+ get: function () { return chunkYHVALC4L_cjs.getFileParser; }
36
36
  });
37
37
  Object.defineProperty(exports, "getUniqueName", {
38
38
  enumerable: true,
39
- get: function () { return chunk4C4XO7FN_cjs.getUniqueName; }
39
+ get: function () { return chunkYHVALC4L_cjs.getUniqueName; }
40
40
  });
41
41
  Object.defineProperty(exports, "isPromise", {
42
42
  enumerable: true,
43
- get: function () { return chunk4C4XO7FN_cjs.isPromise; }
43
+ get: function () { return chunkYHVALC4L_cjs.isPromise; }
44
44
  });
45
45
  Object.defineProperty(exports, "isPromiseFulfilledResult", {
46
46
  enumerable: true,
47
- get: function () { return chunk4C4XO7FN_cjs.isPromiseFulfilledResult; }
47
+ get: function () { return chunkYHVALC4L_cjs.isPromiseFulfilledResult; }
48
48
  });
49
49
  Object.defineProperty(exports, "isPromiseRejectedResult", {
50
50
  enumerable: true,
51
- get: function () { return chunk4C4XO7FN_cjs.isPromiseRejectedResult; }
51
+ get: function () { return chunkYHVALC4L_cjs.isPromiseRejectedResult; }
52
52
  });
53
53
  Object.defineProperty(exports, "renderTemplate", {
54
54
  enumerable: true,
55
- get: function () { return chunk4C4XO7FN_cjs.renderTemplate; }
55
+ get: function () { return chunkYHVALC4L_cjs.renderTemplate; }
56
56
  });
57
57
  Object.defineProperty(exports, "setUniqueName", {
58
58
  enumerable: true,
59
- get: function () { return chunk4C4XO7FN_cjs.setUniqueName; }
59
+ get: function () { return chunkYHVALC4L_cjs.setUniqueName; }
60
60
  });
61
61
  Object.defineProperty(exports, "timeout", {
62
62
  enumerable: true,
63
- get: function () { return chunk4C4XO7FN_cjs.timeout; }
63
+ get: function () { return chunkYHVALC4L_cjs.timeout; }
64
64
  });
65
65
  //# sourceMappingURL=utils.cjs.map
66
66
  //# sourceMappingURL=utils.cjs.map
package/dist/utils.js CHANGED
@@ -1,4 +1,4 @@
1
- export { FunctionParams, URLPath, createFile, createFileExport, createFileImport, createFileParser, getFileParser, getUniqueName, isPromise, isPromiseFulfilledResult, isPromiseRejectedResult, renderTemplate, setUniqueName, timeout } from './chunk-VIC3WIWV.js';
2
- import './chunk-T2FGDLUG.js';
1
+ export { FunctionParams, URLPath, createFile, createFileExport, createFileImport, createFileParser, getFileParser, getUniqueName, isPromise, isPromiseFulfilledResult, isPromiseRejectedResult, renderTemplate, setUniqueName, timeout } from './chunk-44OM74QT.js';
2
+ import './chunk-MDXPT7LL.js';
3
3
  //# sourceMappingURL=utils.js.map
4
4
  //# sourceMappingURL=utils.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/core",
3
- "version": "3.2.0",
3
+ "version": "3.3.1",
4
4
  "description": "Generator core",
5
5
  "keywords": [
6
6
  "typescript",
@@ -77,15 +77,15 @@
77
77
  "dependencies": {
78
78
  "change-case": "^5.4.4",
79
79
  "find-up": "^7.0.0",
80
- "natural-orderby": "^4.0.0",
80
+ "natural-orderby": "^5.0.0",
81
81
  "object-hash": "^3.0.0",
82
82
  "p-queue": "^8.0.1",
83
83
  "remeda": "^2.17.4",
84
84
  "seedrandom": "^3.0.5",
85
85
  "semver": "^7.6.3",
86
- "@kubb/fs": "3.2.0",
87
- "@kubb/parser-ts": "3.2.0",
88
- "@kubb/types": "3.2.0"
86
+ "@kubb/fs": "3.3.1",
87
+ "@kubb/parser-ts": "3.3.1",
88
+ "@kubb/types": "3.3.1"
89
89
  },
90
90
  "devDependencies": {
91
91
  "@types/object-hash": "^3.0.6",
@@ -96,8 +96,8 @@
96
96
  "tinyrainbow": "^1.2.0",
97
97
  "tsup": "^8.3.5",
98
98
  "typescript": "^5.7.2",
99
- "@kubb/config-ts": "3.2.0",
100
- "@kubb/config-tsup": "3.2.0"
99
+ "@kubb/config-ts": "3.3.1",
100
+ "@kubb/config-tsup": "3.3.1"
101
101
  },
102
102
  "engines": {
103
103
  "node": ">=20"
@@ -21,10 +21,14 @@ export function toRegExp(text: string | RegExp): RegExp {
21
21
  return stringToRegex(text.toString())
22
22
  }
23
23
 
24
- export function toRegExpString(text: string, func = 'RegExp'): string {
24
+ export function toRegExpString(text: string, func: string | null = 'RegExp'): string {
25
25
  const isStartWithSlash = text.startsWith('/')
26
26
  const isEndWithSlash = text.endsWith('/')
27
27
 
28
+ if (func === null) {
29
+ return `/${text.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : undefined).replaceAll('/', '\\/')}/`
30
+ }
31
+
28
32
  const regexp = `new ${func}('${jsStringEscape(text.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : undefined))}')`
29
33
 
30
34
  return regexp
@@ -122,7 +122,7 @@ const tsxParser = createFileParser({
122
122
  async format(source) {
123
123
  const module = await import('@kubb/parser-ts')
124
124
  //4 = tsx
125
- return module.format(source, { scriptKind: 4 })
125
+ return module.format(source)
126
126
  },
127
127
  async print(file, options = { extname: '.tsx' }) {
128
128
  return typeScriptParser.print(file, options)
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.js","../src/utils/index.ts","../src/utils/FunctionParams.ts","../src/utils/promise.ts","../src/utils/renderTemplate.ts","../src/utils/timeout.ts","../src/utils/uniqueName.ts","../src/utils/URLPath.ts","../src/utils/parser.ts","../src/FileManager.ts","../src/BarrelManager.ts","../src/utils/TreeNode.ts","../../../node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/index.js","../../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.mjs","../../../node_modules/.pnpm/p-timeout@6.1.2/node_modules/p-timeout/index.js","../../../node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/priority-queue.js","../../../node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/lower-bound.js"],"names":["__commonJS","init_cjs_shims","EventEmitter","orderBy","camelCase","item","path","isValidVarName","join","getRelativePath","__toESM","trimExtName","write","read","extname","isDeepEqual","name","relative","hash"],"mappings":"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","file":"chunk-4C4XO7FN.cjs","sourcesContent":["'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","export type { FunctionParamsAST } from './FunctionParams.ts'\nexport { FunctionParams } from './FunctionParams.ts'\nexport {\n isPromise,\n isPromiseFulfilledResult,\n isPromiseRejectedResult,\n} from './promise.ts'\nexport { renderTemplate } from './renderTemplate.ts'\nexport { timeout } from './timeout.ts'\nexport { getUniqueName, setUniqueName } from './uniqueName.ts'\nexport type { URLObject } from './URLPath.ts'\nexport { URLPath } from './URLPath.ts'\nexport { getFileParser, createFileImport, createFileExport, createFile, createFileParser } from './parser.ts'\nexport type { ParserModule } from './parser.ts'\n","import { orderBy } from 'natural-orderby'\n\nimport { camelCase } from '../transformers/casing.ts'\n\ntype FunctionParamsASTWithoutType = {\n name?: string\n type?: string\n /**\n * @default true\n */\n required?: boolean\n /**\n * @default true\n */\n enabled?: boolean\n default?: string\n}\n\ntype FunctionParamsASTWithType = {\n name?: never\n type: string\n /**\n * @default true\n */\n required?: boolean\n /**\n * @default true\n */\n enabled?: boolean\n default?: string\n}\n/**\n * @deprecated\n */\nexport type FunctionParamsAST = FunctionParamsASTWithoutType | FunctionParamsASTWithType\n\n/**\n * @deprecated\n */\nexport class FunctionParams {\n #items: Array<FunctionParamsAST | FunctionParamsAST[]> = []\n constructor() {\n return this\n }\n\n get items(): FunctionParamsAST[] {\n return this.#items.flat()\n }\n\n add(item: FunctionParamsAST | Array<FunctionParamsAST | FunctionParamsAST[] | undefined> | undefined): FunctionParams {\n if (!item) {\n return this\n }\n\n if (Array.isArray(item)) {\n item.filter(Boolean).forEach((it) => this.#items.push(it))\n return this\n }\n this.#items.push(item)\n\n return this\n }\n static #orderItems(items: Array<FunctionParamsAST | FunctionParamsAST[]>) {\n return orderBy(\n items.filter(Boolean),\n [\n (v) => {\n if (Array.isArray(v)) {\n return undefined\n }\n return !v.default\n },\n (v) => {\n if (Array.isArray(v)) {\n return undefined\n }\n return v.required ?? true\n },\n ],\n ['desc', 'desc'],\n )\n }\n\n static #addParams(acc: string[], item: FunctionParamsAST) {\n const { enabled = true, name, type, required = true, ...rest } = item\n\n if (!enabled) {\n return acc\n }\n\n if (!name) {\n // when name is not se we will use TypeScript generics\n acc.push(`${type}${rest.default ? ` = ${rest.default}` : ''}`)\n\n return acc\n }\n // TODO check whey we still need the camelcase here\n const parameterName = name.startsWith('{') ? name : camelCase(name)\n\n if (type) {\n if (required) {\n acc.push(`${parameterName}: ${type}${rest.default ? ` = ${rest.default}` : ''}`)\n } else {\n acc.push(`${parameterName}?: ${type}`)\n }\n } else {\n acc.push(`${parameterName}`)\n }\n\n return acc\n }\n\n static toObject(items: FunctionParamsAST[]): FunctionParamsAST {\n let type: string[] = []\n let name: string[] = []\n\n const enabled = items.every((item) => item.enabled) ? items.at(0)?.enabled : true\n const required = items.every((item) => item.required) ?? true\n\n items.forEach((item) => {\n name = FunctionParams.#addParams(name, { ...item, type: undefined })\n if (items.some((item) => item.type)) {\n type = FunctionParams.#addParams(type, item)\n }\n })\n\n return {\n name: `{ ${name.join(', ')} }`,\n type: type.length ? `{ ${type.join('; ')} }` : undefined,\n enabled,\n required,\n }\n }\n\n static toString(items: (FunctionParamsAST | FunctionParamsAST[])[]): string {\n const sortedData = FunctionParams.#orderItems(items)\n\n return sortedData\n .reduce((acc, item) => {\n if (Array.isArray(item)) {\n if (item.length <= 0) {\n return acc\n }\n const subItems = FunctionParams.#orderItems(item) as FunctionParamsAST[]\n const objectItem = FunctionParams.toObject(subItems)\n\n return FunctionParams.#addParams(acc, objectItem)\n }\n\n return FunctionParams.#addParams(acc, item)\n }, [] as string[])\n .join(', ')\n }\n\n toObject(): FunctionParamsAST {\n const items = FunctionParams.#orderItems(this.#items).flat()\n\n return FunctionParams.toObject(items)\n }\n\n toString(): string {\n const items = FunctionParams.#orderItems(this.#items)\n\n return FunctionParams.toString(items)\n }\n}\n","import type { PossiblePromise } from '@kubb/types'\n\nexport function isPromise<T>(result: PossiblePromise<T>): result is Promise<T> {\n return !!result && typeof (result as Promise<unknown>)?.then === 'function'\n}\n\nexport function isPromiseFulfilledResult<T = unknown>(result: PromiseSettledResult<unknown>): result is PromiseFulfilledResult<T> {\n return result.status === 'fulfilled'\n}\n\nexport function isPromiseRejectedResult<T>(result: PromiseSettledResult<unknown>): result is Omit<PromiseRejectedResult, 'reason'> & { reason: T } {\n return result.status === 'rejected'\n}\n","export function renderTemplate<TData extends Record<string, unknown> = Record<string, unknown>>(template: string, data: TData | undefined = undefined): string {\n if (!data || !Object.keys(data).length) {\n return template.replace(/{{(.*?)}}/g, '')\n }\n\n const matches = template.match(/{{(.*?)}}/g)\n\n return (\n matches?.reduce((prev, curr) => {\n const index = curr.split(/{{|}}/).filter(Boolean)[0]?.trim()\n if (index === undefined) {\n return prev\n }\n const value = data[index]\n\n if (value === undefined) {\n return prev\n }\n\n return prev\n .replace(curr, () => {\n if (typeof value === 'boolean') {\n return `${value.toString()}` || 'false'\n }\n\n return (value as string) || ''\n })\n .trim()\n }, template) || ''\n )\n}\n","export async function timeout(ms: number): Promise<unknown> {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true)\n }, ms)\n })\n}\n","export function getUniqueName(originalName: string, data: Record<string, number>): string {\n let used = data[originalName] || 0\n if (used) {\n data[originalName] = ++used\n originalName += used\n }\n data[originalName] = 1\n return originalName\n}\n\nexport function setUniqueName(originalName: string, data: Record<string, number>): string {\n let used = data[originalName] || 0\n if (used) {\n data[originalName] = ++used\n\n return originalName\n }\n data[originalName] = 1\n return originalName\n}\n","import { camelCase, isValidVarName } from '../transformers'\n\nexport type URLObject = {\n url: string\n params?: Record<string, string>\n}\n\ntype ObjectOptions = {\n type?: 'path' | 'template'\n replacer?: (pathParam: string) => string\n stringify?: boolean\n}\n\ntype Options = {\n casing?: 'camelcase'\n}\n\nexport class URLPath {\n path: string\n #options: Options\n\n constructor(path: string, options: Options = {}) {\n this.path = path\n this.#options = options\n\n return this\n }\n\n /**\n * Convert Swagger path to URLPath(syntax of Express)\n * @example /pet/{petId} => /pet/:petId\n */\n get URL(): string {\n return this.toURLPath()\n }\n get isURL(): boolean {\n try {\n const url = new URL(this.path)\n if (url?.href) {\n return true\n }\n } catch (error) {\n return false\n }\n return false\n }\n\n /**\n * Convert Swagger path to template literals/ template strings(camelcase)\n * @example /pet/{petId} => `/pet/${petId}`\n * @example /account/monetary-accountID => `/account/${monetaryAccountId}`\n * @example /account/userID => `/account/${userId}`\n */\n get template(): string {\n return this.toTemplateString()\n }\n get object(): URLObject | string {\n return this.toObject()\n }\n get params(): Record<string, string> | undefined {\n return this.getParams()\n }\n\n toObject({ type = 'path', replacer, stringify }: ObjectOptions = {}): URLObject | string {\n const object = {\n url: type === 'path' ? this.toURLPath() : this.toTemplateString(replacer),\n params: this.getParams(),\n }\n\n if (stringify) {\n if (type === 'template') {\n return JSON.stringify(object).replaceAll(\"'\", '').replaceAll(`\"`, '')\n }\n\n if (object.params) {\n return `{ url: '${object.url}', params: ${JSON.stringify(object.params).replaceAll(\"'\", '').replaceAll(`\"`, '')} }`\n }\n\n return `{ url: '${object.url}' }`\n }\n\n return object\n }\n\n /**\n * Convert Swagger path to template literals/ template strings(camelcase)\n * @example /pet/{petId} => `/pet/${petId}`\n * @example /account/monetary-accountID => `/account/${monetaryAccountId}`\n * @example /account/userID => `/account/${userId}`\n */\n toTemplateString(replacer?: (pathParam: string) => string): string {\n const regex = /{(\\w|-)*}/g\n const found = this.path.match(regex)\n let newPath = this.path.replaceAll('{', '${')\n\n if (found) {\n newPath = found.reduce((prev, path) => {\n const pathWithoutBrackets = path.replaceAll('{', '').replaceAll('}', '')\n\n let param = isValidVarName(pathWithoutBrackets) ? pathWithoutBrackets : camelCase(pathWithoutBrackets)\n\n if (this.#options.casing === 'camelcase') {\n param = camelCase(param)\n }\n\n return prev.replace(path, `\\${${replacer ? replacer(param) : param}}`)\n }, this.path)\n }\n\n return `\\`${newPath}\\``\n }\n\n getParams(replacer?: (pathParam: string) => string): Record<string, string> | undefined {\n const regex = /{(\\w|-)*}/g\n const found = this.path.match(regex)\n\n if (!found) {\n return undefined\n }\n\n const params: Record<string, string> = {}\n found.forEach((item) => {\n item = item.replaceAll('{', '').replaceAll('}', '')\n\n let param = isValidVarName(item) ? item : camelCase(item)\n\n if (this.#options.casing === 'camelcase') {\n param = camelCase(param)\n }\n\n const key = replacer ? replacer(param) : param\n\n params[key] = key\n }, this.path)\n\n return params\n }\n\n /**\n * Convert Swagger path to URLPath(syntax of Express)\n * @example /pet/{petId} => /pet/:petId\n */\n toURLPath(): string {\n return this.path.replaceAll('{', ':').replaceAll('}', '')\n }\n}\n","import path from 'node:path'\nimport type * as KubbFile from '@kubb/fs/types'\n\nimport { getRelativePath } from '@kubb/fs'\nimport hash from 'object-hash'\nimport { combineExports, combineImports, combineSources } from '../FileManager.ts'\nimport type { Logger } from '../logger.ts'\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\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 ? combineExports(file.exports) : []\n const imports = file.imports && source ? combineImports(file.imports, exports, source) : []\n const sources = file.sources ? combineSources(file.sources) : []\n\n return {\n ...file,\n id: hash({ path: file.path }),\n name: trimExtName(file.baseName),\n extname,\n imports: imports.map((item) => createFileImport(item)),\n exports: exports.map((item) => createFileExport(item)),\n sources: sources.map((item) => createFileSource(item)),\n meta: file.meta || ({} as TMeta),\n }\n}\n\n/**\n * Helper to create a fileImport with extname set\n */\nfunction createFileSource(source: KubbFile.Source): KubbFile.Source {\n return source\n}\n\n/**\n * Helper to create a fileImport with extname set\n */\nexport function createFileImport(imp: KubbFile.Import): KubbFile.ResolvedImport {\n return {\n ...imp,\n }\n}\n\n/**\n * Helper to create a fileExport with extname set\n */\nexport function createFileExport(exp: KubbFile.Export): KubbFile.ResolvedExport {\n return {\n ...exp,\n }\n}\n\nexport type ParserModule<TMeta extends object = object> = {\n format: (source: string) => Promise<string>\n /**\n * Convert a file to string\n */\n print: (file: KubbFile.ResolvedFile<TMeta>, options: PrintOptions) => Promise<string>\n}\n\nexport function createFileParser<TMeta extends object = object>(parser: ParserModule<TMeta>): ParserModule<TMeta> {\n return parser\n}\n\ntype PrintOptions = {\n extname?: KubbFile.Extname\n logger?: Logger\n}\n\nconst typeScriptParser = createFileParser({\n async format(source) {\n const module = await import('@kubb/parser-ts')\n\n return module.format(source)\n },\n async print(file, options = { extname: '.ts' }) {\n const module = await import('@kubb/parser-ts')\n\n const source = file.sources.map((item) => item.value).join('\\n\\n')\n\n const importNodes = file.imports\n .map((item) => {\n const importPath = item.root ? getRelativePath(item.root, item.path) : item.path\n const hasExtname = !!path.extname(importPath)\n\n return module.factory.createImportDeclaration({\n name: item.name,\n path: options.extname && hasExtname ? `${trimExtName(importPath)}${options.extname}` : trimExtName(importPath),\n isTypeOnly: item.isTypeOnly,\n })\n })\n .filter(Boolean)\n\n const exportNodes = file.exports\n .map((item) => {\n const exportPath = item.path\n\n const hasExtname = !!path.extname(exportPath)\n\n return module.factory.createExportDeclaration({\n name: item.name,\n path: options.extname && hasExtname ? `${trimExtName(item.path)}${options.extname}` : trimExtName(item.path),\n isTypeOnly: item.isTypeOnly,\n asAlias: item.asAlias,\n })\n })\n .filter(Boolean)\n\n return [file.banner, module.print([...importNodes, ...exportNodes]), source, file.footer].join('\\n')\n },\n})\n\nconst tsxParser = createFileParser({\n async format(source) {\n const module = await import('@kubb/parser-ts')\n //4 = tsx\n return module.format(source, { scriptKind: 4 })\n },\n async print(file, options = { extname: '.tsx' }) {\n return typeScriptParser.print(file, options)\n },\n})\n\nconst defaultParser = createFileParser({\n async format(source) {\n return source\n },\n async print(file) {\n return file.sources.map((item) => item.value).join('\\n\\n')\n },\n})\n\nconst parsers: Record<KubbFile.Extname, ParserModule<any>> = {\n '.ts': typeScriptParser,\n '.js': typeScriptParser,\n '.jsx': tsxParser,\n '.tsx': tsxParser,\n '.json': defaultParser,\n}\n\nexport async function getFileParser<TMeta extends object = object>(extname: KubbFile.Extname | undefined): Promise<ParserModule<TMeta>> {\n if (!extname) {\n return defaultParser\n }\n\n const parser = parsers[extname]\n\n if (!parser) {\n console.warn(`[parser] No parser found for ${extname}, default parser will be used`)\n }\n\n return parser || defaultParser\n}\n\nfunction trimExtName(text: string): string {\n const extname = text.split('.').pop()\n\n return text.replace(`.${extname}`, '')\n}\n","import { extname, join, relative } from 'node:path'\n\nimport { orderBy } from 'natural-orderby'\nimport { isDeepEqual } from 'remeda'\n\nimport { read, write } from '@kubb/fs'\nimport { BarrelManager } from './BarrelManager.ts'\n\nimport type * as KubbFile from '@kubb/fs/types'\n\nimport { trimExtName } from '@kubb/fs'\nimport type { ResolvedFile } from '@kubb/fs/types'\nimport type { GreaterThan } from '@kubb/types'\nimport PQueue from 'p-queue'\nimport type { Logger } from './logger.ts'\nimport type { BarrelType, Config, Plugin } from './types.ts'\nimport { createFile, getFileParser } from './utils'\nimport { type DirectoryTree, TreeNode, buildDirectoryTree } from './utils/TreeNode.ts'\n\nexport type FileMetaBase = {\n pluginKey?: Plugin['key']\n}\n\ntype AddResult<T extends Array<KubbFile.File>> = Promise<Awaited<GreaterThan<T['length'], 1> extends true ? Promise<ResolvedFile[]> : Promise<ResolvedFile>>>\n\ntype AddIndexesProps = {\n type: BarrelType | false | undefined\n /**\n * Root based on root and output.path specified in the config\n */\n root: string\n files: KubbFile.File[]\n /**\n * Output for plugin\n */\n output: {\n path: string\n }\n group?: {\n output: string\n exportAs: string\n }\n logger?: Logger\n\n meta?: FileMetaBase\n}\n\nexport class FileManager {\n #filesByPath: Map<KubbFile.Path, KubbFile.ResolvedFile> = new Map()\n constructor() {\n return this\n }\n\n get files(): Array<KubbFile.ResolvedFile> {\n return [...this.#filesByPath.values()]\n }\n\n get orderedFiles(): Array<KubbFile.ResolvedFile> {\n return orderBy(\n [...this.#filesByPath.values()],\n [\n (v) => v?.meta && 'pluginKey' in v.meta && !v.meta.pluginKey,\n (v) => v.path.length,\n (v) => trimExtName(v.path).endsWith('index'),\n (v) => trimExtName(v.baseName),\n (v) => v.path.split('.').pop(),\n ],\n )\n }\n\n get groupedFiles(): DirectoryTree | null {\n return buildDirectoryTree([...this.#filesByPath.values()])\n }\n\n get treeNode(): TreeNode | null {\n return TreeNode.build([...this.#filesByPath.values()])\n }\n\n async add<T extends Array<KubbFile.File> = Array<KubbFile.File>>(...files: T): AddResult<T> {\n const promises = files.map((file) => {\n if (file.override) {\n return this.#add(file)\n }\n\n return this.#addOrAppend(file)\n })\n\n const resolvedFiles = await Promise.all(promises)\n\n if (files.length > 1) {\n return resolvedFiles as unknown as AddResult<T>\n }\n\n return resolvedFiles[0] as unknown as AddResult<T>\n }\n\n async #add(file: KubbFile.File): Promise<ResolvedFile> {\n const resolvedFile = createFile(file)\n\n this.#filesByPath.set(resolvedFile.path, resolvedFile)\n\n return resolvedFile\n }\n\n clear() {\n this.#filesByPath.clear()\n }\n\n async #addOrAppend(file: KubbFile.File): Promise<ResolvedFile> {\n const previousFile = this.#filesByPath.get(file.path)\n\n if (previousFile) {\n this.#filesByPath.delete(previousFile.path)\n\n return this.#add(mergeFile(previousFile, file))\n }\n return this.#add(file)\n }\n\n getCacheById(id: string): KubbFile.File | undefined {\n return [...this.#filesByPath.values()].find((file) => file.id === id)\n }\n\n getByPath(path: KubbFile.Path): KubbFile.ResolvedFile | undefined {\n return this.#filesByPath.get(path)\n }\n\n deleteByPath(path: KubbFile.Path): void {\n const cacheItem = this.getByPath(path)\n if (!cacheItem) {\n return\n }\n\n this.#filesByPath.delete(path)\n }\n\n async getBarrelFiles({ type, files, meta = {}, root, output, logger }: AddIndexesProps): Promise<KubbFile.File[]> {\n if (!type || type === 'propagate') {\n return []\n }\n\n const barrelManager = new BarrelManager({ logger })\n\n const pathToBuildFrom = join(root, output.path)\n\n if (trimExtName(pathToBuildFrom).endsWith('index')) {\n logger?.emit('warning', 'Output has the same fileName as the barrelFiles, please disable barrel generation')\n\n return []\n }\n\n const barrelFiles = barrelManager.getFiles({ files, root: pathToBuildFrom, meta })\n\n if (type === 'all') {\n return barrelFiles.map((file) => {\n return {\n ...file,\n exports: file.exports?.map((exportItem) => {\n return {\n ...exportItem,\n name: undefined,\n }\n }),\n }\n })\n }\n\n return barrelFiles.map((indexFile) => {\n return {\n ...indexFile,\n meta,\n }\n })\n }\n\n async write(...params: Parameters<typeof write>): ReturnType<typeof write> {\n return write(...params)\n }\n\n async read(...params: Parameters<typeof read>): ReturnType<typeof read> {\n return read(...params)\n }\n\n // statics\n static getMode(path: string | undefined | null): KubbFile.Mode {\n if (!path) {\n return 'split'\n }\n return extname(path) ? 'single' : 'split'\n }\n}\n\ntype GetSourceOptions = {\n extname?: KubbFile.Extname\n logger?: Logger\n}\n\nexport async function getSource<TMeta extends FileMetaBase = FileMetaBase>(\n file: ResolvedFile<TMeta>,\n { logger, extname }: GetSourceOptions = {},\n): Promise<string> {\n const parser = await getFileParser(file.extname)\n const source = await parser.print(file, { logger, extname })\n\n return parser.format(source)\n}\n\nfunction mergeFile<TMeta extends FileMetaBase = FileMetaBase>(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\nexport function combineSources(sources: Array<KubbFile.Source>): Array<KubbFile.Source> {\n return sources.reduce(\n (prev, curr) => {\n const prevByName = prev.findLast((imp) => imp.name && imp.name === curr.name)\n const prevByPathAndIsExportable = prev.findLast((imp) => imp.name === curr.name && imp.isExportable)\n\n if (prevByPathAndIsExportable) {\n // we already have an export that has the same name but uses `isExportable` (export type ...)\n return [...prev, curr]\n }\n\n if (prevByName) {\n prevByName.value = curr.value\n prevByName.isExportable = curr.isExportable\n prevByName.isTypeOnly = curr.isTypeOnly\n prevByName.isIndexable = curr.isIndexable\n\n return prev\n }\n\n return [...prev, curr]\n },\n [] as Array<KubbFile.Source>,\n )\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\ntype WriteFilesProps = {\n root: Config['root']\n files: Array<KubbFile.ResolvedFile>\n extension?: Record<KubbFile.Extname, KubbFile.Extname | ''>\n logger?: Logger\n dryRun?: boolean\n}\n/**\n * Global queue\n */\nconst queue = new PQueue({ concurrency: 100 })\n\nexport async function processFiles({ dryRun, root, extension, logger, files }: WriteFilesProps) {\n const orderedFiles = orderBy(files, [\n (v) => v?.meta && 'pluginKey' in v.meta && !v.meta.pluginKey,\n (v) => v.path.length,\n (v) => trimExtName(v.path).endsWith('index'),\n ])\n\n logger?.emit('debug', {\n date: new Date(),\n logs: [JSON.stringify({ files: orderedFiles }, null, 2)],\n fileName: 'kubb-files.log',\n })\n\n if (!dryRun) {\n const size = orderedFiles.length\n\n logger?.emit('progress_start', { id: 'files', size, message: 'Writing files ...' })\n const promises = orderedFiles.map(async (file) => {\n await queue.add(async () => {\n const message = file ? `Writing ${relative(root, file.path)}` : ''\n const extname = extension?.[file.extname] || undefined\n\n const source = await getSource(file, { logger, extname })\n\n await write(file.path, source, { sanity: false })\n\n logger?.emit('progressed', { id: 'files', message })\n })\n })\n\n await Promise.all(promises)\n\n logger?.emit('progress_stop', { id: 'files' })\n }\n\n return files\n}\n","import { join } from 'node:path'\n\nimport { TreeNode } from './utils/TreeNode.ts'\n\nimport { getRelativePath } from '@kubb/fs'\nimport type * as KubbFile from '@kubb/fs/types'\nimport type { FileMetaBase } from './FileManager.ts'\nimport type { Logger } from './logger.ts'\n\ntype BarrelManagerOptions = {\n logger?: Logger\n}\n\nexport class BarrelManager {\n #options: BarrelManagerOptions\n\n constructor(options: BarrelManagerOptions = {}) {\n this.#options = options\n\n return this\n }\n\n getFiles({ files: generatedFiles, root, meta }: { files: KubbFile.File[]; root?: string; meta?: FileMetaBase | undefined }): Array<KubbFile.File> {\n const { logger } = this.#options\n\n const cachedFiles = new Map<KubbFile.Path, KubbFile.File>()\n\n logger?.emit('debug', { date: new Date(), logs: [`Start barrel generation for pluginKey ${meta?.pluginKey?.join('.')} and root '${root}'`] })\n\n TreeNode.build(generatedFiles, root)?.forEach((treeNode) => {\n if (!treeNode || !treeNode.children || !treeNode.parent?.data.path) {\n return undefined\n }\n\n const barrelFile: KubbFile.File = {\n path: join(treeNode.parent?.data.path, 'index.ts') as KubbFile.Path,\n baseName: 'index.ts',\n exports: [],\n sources: [],\n }\n const previousBarrelFile = cachedFiles.get(barrelFile.path)\n const leaves = treeNode.leaves\n\n leaves.forEach((item) => {\n if (!item.data.name) {\n return undefined\n }\n\n const sources = item.data.file?.sources || []\n\n if (!sources.some((source) => source.isIndexable)) {\n logger?.emit(\n 'warning',\n `No isIndexable source found(source should have a name and isIndexable):\\nFile: ${JSON.stringify(item.data.file, undefined, 2)}`,\n )\n }\n\n sources.forEach((source) => {\n if (!item.data.file?.path || !source.isIndexable || !source.name) {\n return undefined\n }\n const alreadyContainInPreviousBarrelFile = previousBarrelFile?.sources.some((item) => item.name === source.name)\n\n if (alreadyContainInPreviousBarrelFile) {\n return undefined\n }\n\n if (!barrelFile.exports) {\n barrelFile.exports = []\n }\n\n // true when we have a subdirectory that also contains barrel files\n const isSubExport = !!treeNode.parent?.data.path?.split?.('/')?.length\n\n if (isSubExport) {\n barrelFile.exports.push({\n name: [source.name],\n path: getRelativePath(treeNode.parent?.data.path, item.data.path),\n isTypeOnly: source.isTypeOnly,\n })\n } else {\n barrelFile.exports.push({\n name: [source.name],\n path: `./${item.data.file.baseName}`,\n isTypeOnly: source.isTypeOnly,\n })\n }\n\n barrelFile.sources.push({\n name: source.name,\n isTypeOnly: source.isTypeOnly,\n //TODO use parser to generate import\n value: '',\n isExportable: false,\n isIndexable: false,\n })\n })\n })\n\n logger?.emit('debug', {\n date: new Date(),\n logs: [\n `Generating barrelFile '${getRelativePath(root, barrelFile.path)}' for '${getRelativePath(root, treeNode.data?.path)}' with ${barrelFile.sources.length} indexable exports: '${barrelFile.sources?.map((source) => source.name).join(', ')}'`,\n ],\n })\n\n logger?.emit('debug', {\n date: new Date(),\n logs: [\n `Generated barrelFile '${getRelativePath(root, barrelFile.path)}' for '${getRelativePath(root, treeNode.data?.path)}' with exports: '${cachedFiles\n .get(barrelFile.path)\n ?.sources?.map((source) => source.name)\n .join(', ')}'`,\n ],\n })\n\n if (previousBarrelFile) {\n previousBarrelFile.sources.push(...barrelFile.sources)\n previousBarrelFile.exports?.push(...(barrelFile.exports || []))\n } else {\n cachedFiles.set(barrelFile.path, barrelFile)\n }\n })\n\n return [...cachedFiles.values()]\n }\n}\n","import type * as KubbFile from '@kubb/fs/types'\nimport { FileManager } from '../FileManager.ts'\n\ntype BarrelData = {\n file?: KubbFile.File\n /**\n * @deprecated use file instead\n */\n type: KubbFile.Mode\n path: string\n name: string\n}\n\nexport class TreeNode {\n data: BarrelData\n parent?: TreeNode\n children: Array<TreeNode> = []\n #cachedLeaves?: Array<TreeNode> = undefined\n\n constructor(data: BarrelData, parent?: TreeNode) {\n this.data = data\n this.parent = parent\n return this\n }\n\n addChild(data: BarrelData): TreeNode {\n const child = new TreeNode(data, this)\n if (!this.children) {\n this.children = []\n }\n this.children.push(child)\n return child\n }\n\n get root(): TreeNode {\n if (!this.parent) {\n return this\n }\n return this.parent.root\n }\n\n get leaves(): Array<TreeNode> {\n if (!this.children || this.children.length === 0) {\n // this is a leaf\n return [this]\n }\n\n if (this.#cachedLeaves) {\n return this.#cachedLeaves\n }\n\n // if not a leaf, return all children's leaves recursively\n const leaves: TreeNode[] = []\n if (this.children) {\n for (let i = 0, { length } = this.children; i < length; i++) {\n leaves.push.apply(leaves, this.children[i]!.leaves)\n }\n }\n\n this.#cachedLeaves = leaves\n\n return leaves\n }\n\n forEach(callback: (treeNode: TreeNode) => void): this {\n if (typeof callback !== 'function') {\n throw new TypeError('forEach() callback must be a function')\n }\n\n // run this node through function\n callback(this)\n\n // do the same for all children\n if (this.children) {\n for (let i = 0, { length } = this.children; i < length; i++) {\n this.children[i]?.forEach(callback)\n }\n }\n\n return this\n }\n\n findDeep(predicate?: (value: TreeNode, index: number, obj: TreeNode[]) => boolean): TreeNode | undefined {\n if (typeof predicate !== 'function') {\n throw new TypeError('find() predicate must be a function')\n }\n\n return this.leaves.find(predicate)\n }\n\n forEachDeep(callback: (treeNode: TreeNode) => void): void {\n if (typeof callback !== 'function') {\n throw new TypeError('forEach() callback must be a function')\n }\n\n this.leaves.forEach(callback)\n }\n\n filterDeep(callback: (treeNode: TreeNode) => boolean): Array<TreeNode> {\n if (typeof callback !== 'function') {\n throw new TypeError('filter() callback must be a function')\n }\n\n return this.leaves.filter(callback)\n }\n\n mapDeep<T>(callback: (treeNode: TreeNode) => T): Array<T> {\n if (typeof callback !== 'function') {\n throw new TypeError('map() callback must be a function')\n }\n\n return this.leaves.map(callback)\n }\n\n public static build(files: KubbFile.File[], root?: string): TreeNode | null {\n try {\n const filteredTree = buildDirectoryTree(files, root)\n\n if (!filteredTree) {\n return null\n }\n\n const treeNode = new TreeNode({\n name: filteredTree.name,\n path: filteredTree.path,\n file: filteredTree.file,\n type: FileManager.getMode(filteredTree.path),\n })\n\n const recurse = (node: typeof treeNode, item: DirectoryTree) => {\n const subNode = node.addChild({\n name: item.name,\n path: item.path,\n file: item.file,\n type: FileManager.getMode(item.path),\n })\n\n if (item.children?.length) {\n item.children?.forEach((child) => {\n recurse(subNode, child)\n })\n }\n }\n\n filteredTree.children?.forEach((child) => recurse(treeNode, child))\n\n return treeNode\n } catch (e) {\n throw new Error('Something went wrong with creating barrel files with the TreeNode class', { cause: e })\n }\n }\n}\n\nexport type DirectoryTree = {\n name: string\n path: string\n file?: KubbFile.File\n children: Array<DirectoryTree>\n}\n\nexport function buildDirectoryTree(files: Array<KubbFile.File>, rootFolder = ''): DirectoryTree | null {\n const rootPrefix = rootFolder.endsWith('/') ? rootFolder : `${rootFolder}/`\n const filteredFiles = files.filter((file) => (rootFolder ? file.path.startsWith(rootPrefix) && !file.path.endsWith('.json') : !file.path.endsWith('.json')))\n\n if (filteredFiles.length === 0) {\n return null // No files match the root folder\n }\n\n const root: DirectoryTree = {\n name: rootFolder || '',\n path: rootFolder || '',\n children: [],\n }\n\n filteredFiles.forEach((file) => {\n const path = file.path.slice(rootFolder.length)\n const parts = path.split('/')\n let currentLevel: DirectoryTree[] = root.children\n let currentPath = rootFolder\n\n parts.forEach((part, index) => {\n if (index !== 0) {\n currentPath += `/${part}`\n } else {\n currentPath += `${part}`\n }\n\n let existingNode = currentLevel.find((node) => node.name === part)\n\n if (!existingNode) {\n if (index === parts.length - 1) {\n // If it's the last part, it's a file\n existingNode = {\n name: part,\n file,\n path: currentPath,\n } as DirectoryTree\n } else {\n // Otherwise, it's a folder\n existingNode = {\n name: part,\n path: currentPath,\n children: [],\n } as DirectoryTree\n }\n currentLevel.push(existingNode)\n }\n\n // Move to the next level if it's a folder\n if (!existingNode.file) {\n currentLevel = existingNode.children\n }\n })\n })\n\n return root\n}\n","import { EventEmitter } from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverConcurrencyCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #interval;\n #intervalEnd = 0;\n #intervalId;\n #timeoutId;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n #throwOnTimeout;\n /**\n Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n\n Applies to each future operation.\n */\n timeout;\n // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverConcurrencyCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n this.#carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n this.timeout = options.timeout;\n this.#throwOnTimeout = options.throwOnTimeout === true;\n this.#isPaused = options.autoStart === false;\n }\n get #doesIntervalAllowAnother() {\n return this.#isIntervalIgnored || this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n this.#timeoutId = undefined;\n }\n get #isIntervalPaused() {\n const now = Date.now();\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n this.#intervalCount = (this.#carryoverConcurrencyCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n if (this.#timeoutId === undefined) {\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n return true;\n }\n }\n return false;\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n }\n this.#intervalId = undefined;\n this.emit('empty');\n if (this.#pending === 0) {\n this.emit('idle');\n }\n return false;\n }\n if (!this.#isPaused) {\n const canInitializeInterval = !this.#isIntervalPaused;\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!job) {\n return false;\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n return true;\n }\n }\n return false;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n this.#intervalCount = this.#carryoverConcurrencyCount ? this.#pending : 0;\n this.#processQueue();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n async #throwOnAbort(signal) {\n return new Promise((_resolve, reject) => {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n }, { once: true });\n });\n }\n async add(function_, options = {}) {\n options = {\n timeout: this.timeout,\n throwOnTimeout: this.#throwOnTimeout,\n ...options,\n };\n return new Promise((resolve, reject) => {\n this.#queue.enqueue(async () => {\n this.#pending++;\n this.#intervalCount++;\n try {\n options.signal?.throwIfAborted();\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), { milliseconds: options.timeout });\n }\n if (options.signal) {\n operation = Promise.race([operation, this.#throwOnAbort(options.signal)]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n if (error instanceof TimeoutError && !options.throwOnTimeout) {\n resolve();\n return;\n }\n reject(error);\n this.emit('error', error);\n }\n finally {\n this.#next();\n }\n }, options);\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n this.#queue = new this.#queueClass();\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (this.#queue.size < limit) {\n return;\n }\n await this.#onEvent('next', () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n async #onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n}\n","import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n","export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined\n\t? new AbortError(errorMessage)\n\t: new DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined\n\t\t? getDOMException('This operation was aborted.')\n\t\t: signal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t} = options;\n\n\tlet timer;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t});\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tpromise.then(resolve, reject);\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t})();\n\t});\n\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","import lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n #queue = [];\n enqueue(run, options) {\n options = {\n priority: 0,\n ...options,\n };\n const element = {\n priority: options.priority,\n run,\n };\n if (this.size && this.#queue[this.size - 1].priority >= options.priority) {\n this.#queue.push(element);\n return;\n }\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return this.#queue.length;\n }\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/transformers/index.ts","../../../node_modules/.pnpm/natural-orderby@4.0.0/node_modules/natural-orderby/dist/index.js","../src/transformers/casing.ts","../../../node_modules/.pnpm/change-case@5.4.4/node_modules/change-case/src/index.ts","../src/transformers/combineCodes.ts","../src/transformers/createJSDocBlockText.ts","../src/transformers/escape.ts","../src/transformers/indent.ts","../src/transformers/nameSorter.ts","../src/transformers/searchAndReplace.ts","../src/transformers/stringify.ts","../src/transformers/trim.ts","../src/transformers/toRegExp.ts","../src/transformers/transformReservedWord.ts"],"names":["init_cjs_shims","compareNumbers","compareUnicode","stringCompare","compareChunks","compareOtherTypes","compareValues","normalizeAlphaChunk","parseNumber","normalizeNumericChunk","createChunkMap","createChunks","createChunkMaps","isFunction","isNaN","isNull","isObject","isSymbol","isUndefined","parseDate","numberify","stringify","getMappedValueRecord","compareMultiple","createIdentifierFn","getElementByIndex","getValueByIdentifier","baseOrderBy","getIdentifiers","getOrders","camelCase","pascalCase","pathCase","value","merge"],"mappings":"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","file":"chunk-QIFPRGH2.cjs","sourcesContent":["import { orderBy } from 'natural-orderby'\nimport { merge } from 'remeda'\n\nimport { camelCase, pascalCase, pathCase } from './casing.ts'\nimport { combineCodes } from './combineCodes.ts'\nimport { createJSDocBlockText } from './createJSDocBlockText.ts'\nimport { escape, jsStringEscape } from './escape.ts'\nimport { createIndent } from './indent.ts'\nimport { nameSorter } from './nameSorter.ts'\nimport { searchAndReplace } from './searchAndReplace.ts'\nimport { stringify, stringifyObject } from './stringify.ts'\nimport { toRegExp, toRegExpString } from './toRegExp.ts'\nimport { isValidVarName, transformReservedWord } from './transformReservedWord.ts'\nimport { trim, trimQuotes } from './trim.ts'\n\nexport { camelCase, pascalCase, pathCase } from './casing.ts'\nexport { combineCodes } from './combineCodes.ts'\nexport { createJSDocBlockText } from './createJSDocBlockText.ts'\nexport { escape, jsStringEscape } from './escape.ts'\nexport { createIndent } from './indent.ts'\nexport { nameSorter } from './nameSorter.ts'\nexport { searchAndReplace } from './searchAndReplace.ts'\nexport { stringify, stringifyObject } from './stringify.ts'\nexport { toRegExp, toRegExpString } from './toRegExp.ts'\nexport { transformReservedWord, isValidVarName } from './transformReservedWord.ts'\nexport { trim, trimQuotes } from './trim.ts'\nexport { merge } from 'remeda'\nexport { orderBy } from 'natural-orderby'\n\nexport default {\n combineCodes,\n escape,\n jsStringEscape,\n createIndent,\n transformReservedWord,\n isValidVarName,\n nameSorter,\n searchAndReplace,\n stringify,\n stringifyObject,\n toRegExp,\n toRegExpString,\n trim,\n trimQuotes,\n JSDoc: {\n createJSDocBlockText,\n },\n orderBy,\n merge,\n camelCase,\n pascalCase,\n pathCase,\n} as const\n","/**\n * natural-orderby v4.0.0\n *\n * Copyright (c) Olaf Ennen\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nvar compareNumbers = function compareNumbers(numberA, numberB) {\n if (numberA < numberB) {\n return -1;\n }\n if (numberA > numberB) {\n return 1;\n }\n return 0;\n};\n\nvar compareUnicode = function compareUnicode(stringA, stringB) {\n var result = stringA.localeCompare(stringB);\n return result ? result / Math.abs(result) : 0;\n};\n\nvar RE_NUMBERS = /(^0x[\\da-fA-F]+$|^([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?(?!\\.\\d+)(?=\\D|\\s|$))|\\d+)/g;\nvar RE_LEADING_OR_TRAILING_WHITESPACES = /^\\s+|\\s+$/g; // trim pre-post whitespace\nvar RE_WHITESPACES = /\\s+/g; // normalize all whitespace to single ' ' character\nvar RE_INT_OR_FLOAT = /^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/; // identify integers and floats\nvar RE_DATE = /(^([\\w ]+,?[\\w ]+)?[\\w ]+,?[\\w ]+\\d+:\\d+(:\\d+)?[\\w ]?|^\\d{1,4}[/-]\\d{1,4}[/-]\\d{1,4}|^\\w+, \\w+ \\d+, \\d{4})/; // identify date strings\nvar RE_LEADING_ZERO = /^0+[1-9]{1}[0-9]*$/;\n// eslint-disable-next-line no-control-regex\nvar RE_UNICODE_CHARACTERS = /[^\\x00-\\x80]/;\n\nvar stringCompare = function stringCompare(stringA, stringB) {\n if (stringA < stringB) {\n return -1;\n }\n if (stringA > stringB) {\n return 1;\n }\n return 0;\n};\n\nvar compareChunks = function compareChunks(chunksA, chunksB) {\n var lengthA = chunksA.length;\n var lengthB = chunksB.length;\n var size = Math.min(lengthA, lengthB);\n for (var i = 0; i < size; i++) {\n var chunkA = chunksA[i];\n var chunkB = chunksB[i];\n if (chunkA.normalizedString !== chunkB.normalizedString) {\n if (chunkA.normalizedString === '' !== (chunkB.normalizedString === '')) {\n // empty strings have lowest value\n return chunkA.normalizedString === '' ? -1 : 1;\n }\n if (chunkA.parsedNumber !== undefined && chunkB.parsedNumber !== undefined) {\n // compare numbers\n var result = compareNumbers(chunkA.parsedNumber, chunkB.parsedNumber);\n if (result === 0) {\n // compare string value, if parsed numbers are equal\n // Example:\n // chunkA = { parsedNumber: 1, normalizedString: \"001\" }\n // chunkB = { parsedNumber: 1, normalizedString: \"01\" }\n // chunkA.parsedNumber === chunkB.parsedNumber\n // chunkA.normalizedString < chunkB.normalizedString\n return stringCompare(chunkA.normalizedString, chunkB.normalizedString);\n }\n return result;\n } else if (chunkA.parsedNumber !== undefined || chunkB.parsedNumber !== undefined) {\n // number < string\n return chunkA.parsedNumber !== undefined ? -1 : 1;\n } else if (RE_UNICODE_CHARACTERS.test(chunkA.normalizedString + chunkB.normalizedString)) {\n // use locale comparison only if one of the chunks contains unicode characters\n return compareUnicode(chunkA.normalizedString, chunkB.normalizedString);\n } else {\n // use common string comparison for performance reason\n return stringCompare(chunkA.normalizedString, chunkB.normalizedString);\n }\n }\n }\n // if the chunks are equal so far, the one which has more chunks is greater than the other one\n if (lengthA > size || lengthB > size) {\n return lengthA <= size ? -1 : 1;\n }\n return 0;\n};\n\nvar compareOtherTypes = function compareOtherTypes(valueA, valueB) {\n if (!valueA.chunks ? valueB.chunks : !valueB.chunks) {\n return !valueA.chunks ? 1 : -1;\n }\n if (valueA.isNaN ? !valueB.isNaN : valueB.isNaN) {\n return valueA.isNaN ? -1 : 1;\n }\n if (valueA.isSymbol ? !valueB.isSymbol : valueB.isSymbol) {\n return valueA.isSymbol ? -1 : 1;\n }\n if (valueA.isObject ? !valueB.isObject : valueB.isObject) {\n return valueA.isObject ? -1 : 1;\n }\n if (valueA.isArray ? !valueB.isArray : valueB.isArray) {\n return valueA.isArray ? -1 : 1;\n }\n if (valueA.isFunction ? !valueB.isFunction : valueB.isFunction) {\n return valueA.isFunction ? -1 : 1;\n }\n if (valueA.isNull ? !valueB.isNull : valueB.isNull) {\n return valueA.isNull ? -1 : 1;\n }\n return 0;\n};\n\nvar compareValues = function compareValues(valueA, valueB) {\n if (valueA.value === valueB.value) {\n return 0;\n }\n if (valueA.parsedNumber !== undefined && valueB.parsedNumber !== undefined) {\n return compareNumbers(valueA.parsedNumber, valueB.parsedNumber);\n }\n if (valueA.chunks && valueB.chunks) {\n return compareChunks(valueA.chunks, valueB.chunks);\n }\n return compareOtherTypes(valueA, valueB);\n};\n\nvar normalizeAlphaChunk = function normalizeAlphaChunk(chunk) {\n return chunk.replace(RE_WHITESPACES, ' ').replace(RE_LEADING_OR_TRAILING_WHITESPACES, '');\n};\n\nvar parseNumber = function parseNumber(value) {\n if (value.length !== 0) {\n var parsedNumber = Number(value);\n if (!Number.isNaN(parsedNumber)) {\n return parsedNumber;\n }\n }\n return undefined;\n};\n\nvar normalizeNumericChunk = function normalizeNumericChunk(chunk, index, chunks) {\n if (RE_INT_OR_FLOAT.test(chunk)) {\n // don´t parse a number, if there´s a preceding decimal point\n // to keep significance\n // e.g. 1.0020, 1.020\n if (!RE_LEADING_ZERO.test(chunk) || index === 0 || chunks[index - 1] !== '.') {\n return parseNumber(chunk) || 0;\n }\n }\n return undefined;\n};\n\nvar createChunkMap = function createChunkMap(chunk, index, chunks) {\n return {\n parsedNumber: normalizeNumericChunk(chunk, index, chunks),\n normalizedString: normalizeAlphaChunk(chunk)\n };\n};\n\nvar createChunks = function createChunks(value) {\n return value.replace(RE_NUMBERS, '\\0$1\\0').replace(/\\0$/, '').replace(/^\\0/, '').split('\\0');\n};\n\nvar createChunkMaps = function createChunkMaps(value) {\n var chunksMaps = createChunks(value).map(createChunkMap);\n return chunksMaps;\n};\n\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n\nvar isNaN = function isNaN(value) {\n return Number.isNaN(value) || value instanceof Number && Number.isNaN(value.valueOf());\n};\n\nvar isNull = function isNull(value) {\n return value === null;\n};\n\nvar isObject = function isObject(value) {\n return value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Number) && !(value instanceof String) && !(value instanceof Boolean) && !(value instanceof Date);\n};\n\nvar isSymbol = function isSymbol(value) {\n return typeof value === 'symbol';\n};\n\nvar isUndefined = function isUndefined(value) {\n return value === undefined;\n};\n\nvar parseDate = function parseDate(value) {\n try {\n var parsedDate = Date.parse(value);\n if (!Number.isNaN(parsedDate)) {\n if (RE_DATE.test(value)) {\n return parsedDate;\n }\n }\n return undefined;\n } catch (_unused) {\n return undefined;\n }\n};\n\nvar numberify = function numberify(value) {\n var parsedNumber = parseNumber(value);\n if (parsedNumber !== undefined) {\n return parsedNumber;\n }\n return parseDate(value);\n};\n\nvar stringify = function stringify(value) {\n if (typeof value === 'boolean' || value instanceof Boolean) {\n return Number(value).toString();\n }\n if (typeof value === 'number' || value instanceof Number) {\n return value.toString();\n }\n if (value instanceof Date) {\n return value.getTime().toString();\n }\n if (typeof value === 'string' || value instanceof String) {\n return value.toLowerCase().replace(RE_LEADING_OR_TRAILING_WHITESPACES, '');\n }\n return '';\n};\n\nvar getMappedValueRecord = function getMappedValueRecord(value) {\n if (typeof value === 'string' || value instanceof String || (typeof value === 'number' || value instanceof Number) && !isNaN(value) || typeof value === 'boolean' || value instanceof Boolean || value instanceof Date) {\n var stringValue = stringify(value);\n var parsedNumber = numberify(stringValue);\n var chunks = createChunkMaps(parsedNumber ? \"\" + parsedNumber : stringValue);\n return {\n parsedNumber: parsedNumber,\n chunks: chunks,\n value: value\n };\n }\n return {\n isArray: Array.isArray(value),\n isFunction: isFunction(value),\n isNaN: isNaN(value),\n isNull: isNull(value),\n isObject: isObject(value),\n isSymbol: isSymbol(value),\n isUndefined: isUndefined(value),\n value: value\n };\n};\n\nvar baseCompare = function baseCompare(options) {\n return function (valueA, valueB) {\n var a = getMappedValueRecord(valueA);\n var b = getMappedValueRecord(valueB);\n var result = compareValues(a, b);\n return result * (options.order === 'desc' ? -1 : 1);\n };\n};\n\nvar isValidOrder = function isValidOrder(value) {\n return typeof value === 'string' && (value === 'asc' || value === 'desc');\n};\nvar getOptions = function getOptions(customOptions) {\n var order = 'asc';\n if (typeof customOptions === 'string' && isValidOrder(customOptions)) {\n order = customOptions;\n } else if (customOptions && typeof customOptions === 'object' && customOptions.order && isValidOrder(customOptions.order)) {\n order = customOptions.order;\n }\n return {\n order: order\n };\n};\n\n/**\n * Creates a compare function that defines the natural sort order considering\n * the given `options` which may be passed to [`Array.prototype.sort()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort).\n */\nfunction compare(options) {\n var validatedOptions = getOptions(options);\n return baseCompare(validatedOptions);\n}\n\nvar compareMultiple = function compareMultiple(recordA, recordB, orders) {\n var indexA = recordA.index,\n valuesA = recordA.values;\n var indexB = recordB.index,\n valuesB = recordB.values;\n var length = valuesA.length;\n var ordersLength = orders.length;\n for (var i = 0; i < length; i++) {\n var order = i < ordersLength ? orders[i] : null;\n if (order && typeof order === 'function') {\n var result = order(valuesA[i].value, valuesB[i].value);\n if (result) {\n return result;\n }\n } else {\n var _result = compareValues(valuesA[i], valuesB[i]);\n if (_result) {\n return _result * (order === 'desc' ? -1 : 1);\n }\n }\n }\n return indexA - indexB;\n};\n\nvar createIdentifierFn = function createIdentifierFn(identifier) {\n if (typeof identifier === 'function') {\n // identifier is already a lookup function\n return identifier;\n }\n return function (value) {\n if (Array.isArray(value)) {\n var index = Number(identifier);\n if (Number.isInteger(index)) {\n return value[index];\n }\n } else if (value && typeof value === 'object') {\n var result = Object.getOwnPropertyDescriptor(value, identifier);\n return result == null ? void 0 : result.value;\n }\n return value;\n };\n};\n\nvar getElementByIndex = function getElementByIndex(collection, index) {\n return collection[index];\n};\n\nvar getValueByIdentifier = function getValueByIdentifier(value, getValue) {\n return getValue(value);\n};\n\nvar baseOrderBy = function baseOrderBy(collection, identifiers, orders) {\n var identifierFns = identifiers.length ? identifiers.map(createIdentifierFn) : [function (value) {\n return value;\n }];\n\n // temporary array holds elements with position and sort-values\n var mappedCollection = collection.map(function (element, index) {\n var values = identifierFns.map(function (identifier) {\n return getValueByIdentifier(element, identifier);\n }).map(getMappedValueRecord);\n return {\n index: index,\n values: values\n };\n });\n\n // iterate over values and compare values until a != b or last value reached\n mappedCollection.sort(function (recordA, recordB) {\n return compareMultiple(recordA, recordB, orders);\n });\n return mappedCollection.map(function (element) {\n return getElementByIndex(collection, element.index);\n });\n};\n\nvar getIdentifiers = function getIdentifiers(identifiers) {\n if (!identifiers) {\n return [];\n }\n var identifierList = !Array.isArray(identifiers) ? [identifiers] : [].concat(identifiers);\n if (identifierList.some(function (identifier) {\n return typeof identifier !== 'string' && typeof identifier !== 'number' && typeof identifier !== 'function';\n })) {\n return [];\n }\n return identifierList;\n};\n\nvar getOrders = function getOrders(orders) {\n if (!orders) {\n return [];\n }\n var orderList = !Array.isArray(orders) ? [orders] : [].concat(orders);\n if (orderList.some(function (order) {\n return order !== 'asc' && order !== 'desc' && typeof order !== 'function';\n })) {\n return [];\n }\n return orderList;\n};\n\n/**\n * Creates an array of elements, natural sorted by specified identifiers and\n * the corresponding sort orders. This method implements a stable sort\n * algorithm, which means the original sort order of equal elements is\n * preserved.\n */\nfunction orderBy(collection, identifiers, orders) {\n if (!collection || !Array.isArray(collection)) {\n return [];\n }\n var validatedIdentifiers = getIdentifiers(identifiers);\n var validatedOrders = getOrders(orders);\n return baseOrderBy(collection, validatedIdentifiers, validatedOrders);\n}\n\nexport { compare, orderBy };\n","import { camelCase as changeCamelCase, pascalCase as changePascalCase, pathCase as changePathCase } from 'change-case'\n\ntype Options = {\n /**\n * When set it will replace all `.` with `/`.\n */\n isFile?: boolean\n prefix?: string\n suffix?: string\n}\n\nexport function camelCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n if (isFile) {\n const splitArray = text.split('.')\n return splitArray.map((item, i) => (i === splitArray.length - 1 ? camelCase(item, { prefix, suffix }) : camelCase(item))).join('/')\n }\n\n return changeCamelCase(`${prefix} ${text} ${suffix}`, {\n delimiter: '',\n mergeAmbiguousCharacters: true,\n })\n}\n\nexport function pascalCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n if (isFile) {\n const splitArray = text.split('.')\n return splitArray.map((item, i) => (i === splitArray.length - 1 ? pascalCase(item, { prefix, suffix }) : camelCase(item))).join('/')\n }\n\n return changePascalCase(`${prefix} ${text} ${suffix}`, {\n delimiter: '',\n mergeAmbiguousCharacters: true,\n })\n}\n\nexport function pathCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n if (isFile) {\n const splitArray = text.split('.')\n return splitArray.map((item, i) => (i === splitArray.length - 1 ? pathCase(item, { prefix, suffix }) : camelCase(item))).join('/')\n }\n\n return changePathCase(`${prefix} ${text} ${suffix}`, { delimiter: '' })\n}\n","// Regexps involved with splitting words in various case formats.\nconst SPLIT_LOWER_UPPER_RE = /([\\p{Ll}\\d])(\\p{Lu})/gu;\nconst SPLIT_UPPER_UPPER_RE = /(\\p{Lu})([\\p{Lu}][\\p{Ll}])/gu;\n\n// Used to iterate over the initial split result and separate numbers.\nconst SPLIT_SEPARATE_NUMBER_RE = /(\\d)\\p{Ll}|(\\p{L})\\d/u;\n\n// Regexp involved with stripping non-word characters from the result.\nconst DEFAULT_STRIP_REGEXP = /[^\\p{L}\\d]+/giu;\n\n// The replacement value for splits.\nconst SPLIT_REPLACE_VALUE = \"$1\\0$2\";\n\n// The default characters to keep after transforming case.\nconst DEFAULT_PREFIX_SUFFIX_CHARACTERS = \"\";\n\n/**\n * Supported locale values. Use `false` to ignore locale.\n * Defaults to `undefined`, which uses the host environment.\n */\nexport type Locale = string[] | string | false | undefined;\n\n/**\n * Options used for converting strings to pascal/camel case.\n */\nexport interface PascalCaseOptions extends Options {\n mergeAmbiguousCharacters?: boolean;\n}\n\n/**\n * Options used for converting strings to any case.\n */\nexport interface Options {\n locale?: Locale;\n split?: (value: string) => string[];\n /** @deprecated Pass `split: splitSeparateNumbers` instead. */\n separateNumbers?: boolean;\n delimiter?: string;\n prefixCharacters?: string;\n suffixCharacters?: string;\n}\n\n/**\n * Split any cased input strings into an array of words.\n */\nexport function split(value: string) {\n let result = value.trim();\n\n result = result\n .replace(SPLIT_LOWER_UPPER_RE, SPLIT_REPLACE_VALUE)\n .replace(SPLIT_UPPER_UPPER_RE, SPLIT_REPLACE_VALUE);\n\n result = result.replace(DEFAULT_STRIP_REGEXP, \"\\0\");\n\n let start = 0;\n let end = result.length;\n\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\") start++;\n if (start === end) return [];\n while (result.charAt(end - 1) === \"\\0\") end--;\n\n return result.slice(start, end).split(/\\0/g);\n}\n\n/**\n * Split the input string into an array of words, separating numbers.\n */\nexport function splitSeparateNumbers(value: string) {\n const words = split(value);\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n const match = SPLIT_SEPARATE_NUMBER_RE.exec(word);\n if (match) {\n const offset = match.index + (match[1] ?? match[2]).length;\n words.splice(i, 1, word.slice(0, offset), word.slice(offset));\n }\n }\n return words;\n}\n\n/**\n * Convert a string to space separated lower case (`foo bar`).\n */\nexport function noCase(input: string, options?: Options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n return (\n prefix +\n words.map(lowerFactory(options?.locale)).join(options?.delimiter ?? \" \") +\n suffix\n );\n}\n\n/**\n * Convert a string to camel case (`fooBar`).\n */\nexport function camelCase(input: string, options?: PascalCaseOptions) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = options?.mergeAmbiguousCharacters\n ? capitalCaseTransformFactory(lower, upper)\n : pascalCaseTransformFactory(lower, upper);\n return (\n prefix +\n words\n .map((word, index) => {\n if (index === 0) return lower(word);\n return transform(word, index);\n })\n .join(options?.delimiter ?? \"\") +\n suffix\n );\n}\n\n/**\n * Convert a string to pascal case (`FooBar`).\n */\nexport function pascalCase(input: string, options?: PascalCaseOptions) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = options?.mergeAmbiguousCharacters\n ? capitalCaseTransformFactory(lower, upper)\n : pascalCaseTransformFactory(lower, upper);\n return prefix + words.map(transform).join(options?.delimiter ?? \"\") + suffix;\n}\n\n/**\n * Convert a string to pascal snake case (`Foo_Bar`).\n */\nexport function pascalSnakeCase(input: string, options?: Options) {\n return capitalCase(input, { delimiter: \"_\", ...options });\n}\n\n/**\n * Convert a string to capital case (`Foo Bar`).\n */\nexport function capitalCase(input: string, options?: Options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n return (\n prefix +\n words\n .map(capitalCaseTransformFactory(lower, upper))\n .join(options?.delimiter ?? \" \") +\n suffix\n );\n}\n\n/**\n * Convert a string to constant case (`FOO_BAR`).\n */\nexport function constantCase(input: string, options?: Options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n return (\n prefix +\n words.map(upperFactory(options?.locale)).join(options?.delimiter ?? \"_\") +\n suffix\n );\n}\n\n/**\n * Convert a string to dot case (`foo.bar`).\n */\nexport function dotCase(input: string, options?: Options) {\n return noCase(input, { delimiter: \".\", ...options });\n}\n\n/**\n * Convert a string to kebab case (`foo-bar`).\n */\nexport function kebabCase(input: string, options?: Options) {\n return noCase(input, { delimiter: \"-\", ...options });\n}\n\n/**\n * Convert a string to path case (`foo/bar`).\n */\nexport function pathCase(input: string, options?: Options) {\n return noCase(input, { delimiter: \"/\", ...options });\n}\n\n/**\n * Convert a string to path case (`Foo bar`).\n */\nexport function sentenceCase(input: string, options?: Options) {\n const [prefix, words, suffix] = splitPrefixSuffix(input, options);\n const lower = lowerFactory(options?.locale);\n const upper = upperFactory(options?.locale);\n const transform = capitalCaseTransformFactory(lower, upper);\n return (\n prefix +\n words\n .map((word, index) => {\n if (index === 0) return transform(word);\n return lower(word);\n })\n .join(options?.delimiter ?? \" \") +\n suffix\n );\n}\n\n/**\n * Convert a string to snake case (`foo_bar`).\n */\nexport function snakeCase(input: string, options?: Options) {\n return noCase(input, { delimiter: \"_\", ...options });\n}\n\n/**\n * Convert a string to header case (`Foo-Bar`).\n */\nexport function trainCase(input: string, options?: Options) {\n return capitalCase(input, { delimiter: \"-\", ...options });\n}\n\nfunction lowerFactory(locale: Locale): (input: string) => string {\n return locale === false\n ? (input: string) => input.toLowerCase()\n : (input: string) => input.toLocaleLowerCase(locale);\n}\n\nfunction upperFactory(locale: Locale): (input: string) => string {\n return locale === false\n ? (input: string) => input.toUpperCase()\n : (input: string) => input.toLocaleUpperCase(locale);\n}\n\nfunction capitalCaseTransformFactory(\n lower: (input: string) => string,\n upper: (input: string) => string,\n) {\n return (word: string) => `${upper(word[0])}${lower(word.slice(1))}`;\n}\n\nfunction pascalCaseTransformFactory(\n lower: (input: string) => string,\n upper: (input: string) => string,\n) {\n return (word: string, index: number) => {\n const char0 = word[0];\n const initial =\n index > 0 && char0 >= \"0\" && char0 <= \"9\" ? \"_\" + char0 : upper(char0);\n return initial + lower(word.slice(1));\n };\n}\n\nfunction splitPrefixSuffix(\n input: string,\n options: Options = {},\n): [string, string[], string] {\n const splitFn =\n options.split ?? (options.separateNumbers ? splitSeparateNumbers : split);\n const prefixCharacters =\n options.prefixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n const suffixCharacters =\n options.suffixCharacters ?? DEFAULT_PREFIX_SUFFIX_CHARACTERS;\n let prefixIndex = 0;\n let suffixIndex = input.length;\n\n while (prefixIndex < input.length) {\n const char = input.charAt(prefixIndex);\n if (!prefixCharacters.includes(char)) break;\n prefixIndex++;\n }\n\n while (suffixIndex > prefixIndex) {\n const index = suffixIndex - 1;\n const char = input.charAt(index);\n if (!suffixCharacters.includes(char)) break;\n suffixIndex = index;\n }\n\n return [\n input.slice(0, prefixIndex),\n splitFn(input.slice(prefixIndex, suffixIndex)),\n input.slice(suffixIndex),\n ];\n}\n","export function combineCodes(codes: string[]): string {\n return codes.join('\\n')\n}\n","export function createJSDocBlockText({ comments }: { comments: Array<string> }): string {\n const filteredComments = comments.filter(Boolean)\n\n if (!filteredComments.length) {\n return ''\n }\n\n return `/**\\n * ${filteredComments.join('\\n * ')}\\n */`\n}\n","export function escape(text?: string): string {\n return text ? text.replaceAll('`', '\\\\`') : ''\n}\n\n/**\n * Escape all characters not included in SingleStringCharacters and DoubleStringCharacters on\n * @link http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4\n * @link https://github.com/joliss/js-string-escape/blob/master/index.js\n */\n\nexport function jsStringEscape(input: any): string {\n return `${input}`.replace(/[\"'\\\\\\n\\r\\u2028\\u2029]/g, (character) => {\n switch (character) {\n case '\"':\n case \"'\":\n case '\\\\':\n return `\\\\${character}`\n // Four possible LineTerminator characters need to be escaped:\n case '\\n':\n return '\\\\n'\n case '\\r':\n return '\\\\r'\n case '\\u2028':\n return '\\\\u2028'\n case '\\u2029':\n return '\\\\u2029'\n default:\n return ''\n }\n })\n}\n","export function createIndent(size: number): string {\n return Array.from({ length: size + 1 }).join(' ')\n}\n","export function nameSorter<T extends { name: string }>(a: T, b: T): 0 | 1 | -1 {\n if (a.name < b.name) {\n return -1\n }\n if (a.name > b.name) {\n return 1\n }\n return 0\n}\n","type Options = {\n text: string\n replaceBy: string\n prefix?: string\n key: string\n searchValues?: (prefix: string, key: string) => Array<RegExp | string>\n}\n\nexport function searchAndReplace(options: Options): string {\n const { text, replaceBy, prefix = '', key } = options\n\n const searchValues = options.searchValues?.(prefix, key) || [\n `${prefix}[\"${key}\"]`,\n `${prefix}['${key}']`,\n `${prefix}[\\`${key}\\`]`,\n `${prefix}\"${key}\"`,\n `${prefix}'${key}'`,\n `${prefix}\\`${key}\\``,\n new RegExp(`${prefix}${key}`, 'g'),\n ]\n\n return searchValues.reduce((prev, searchValue) => {\n return prev.toString().replaceAll(searchValue, replaceBy)\n }, text) as string\n}\n","import { trimQuotes } from './trim'\n\nexport function stringify(value: string | number | boolean | undefined): string {\n if (value === undefined || value === null) {\n return '\"\"'\n }\n\n return JSON.stringify(trimQuotes(value.toString()))\n}\n\nexport function stringifyObject(value: object): string {\n const items = Object.entries(value)\n .map(([key, value]) => {\n if (typeof value === 'object') {\n return `${key}: {\n ${stringifyObject(value)}\n }`\n }\n\n return `${key}: ${value}`\n })\n .filter(Boolean)\n\n return items.join(',\\n')\n}\n","export function trim(text: string): string {\n return text.replaceAll(/\\n/g, '').trim()\n}\n\nexport function trimQuotes(text: string): string {\n if (text.match(/^\"(.*)\"$/)) {\n return text.replace(/^\"(.*)\"$/, '$1')\n }\n if (text.match(/^'(.*)'$/)) {\n return text.replace(/^'(.*)'$/, '$1')\n }\n\n if (text.match(/^`(.*)`$/)) {\n return text.replace(/^`(.*)`$/, '$1')\n }\n\n return text\n}\n","import { jsStringEscape } from './escape'\nimport { trimQuotes } from './trim'\n\nfunction stringToRegex(text: string) {\n const isStartWithSlash = text.startsWith('/')\n const isEndWithSlash = text.endsWith('/')\n\n return new RegExp(text.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : undefined))\n}\n\n/**\n * @experimental\n */\nexport function toRegExp(text: string | RegExp): RegExp {\n if (typeof text === 'string') {\n const source = trimQuotes(text)\n\n return stringToRegex(source)\n }\n\n return stringToRegex(text.toString())\n}\n\nexport function toRegExpString(text: string, func = 'RegExp'): string {\n const isStartWithSlash = text.startsWith('/')\n const isEndWithSlash = text.endsWith('/')\n\n const regexp = `new ${func}('${jsStringEscape(text.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : undefined))}')`\n\n return regexp\n}\n","/**\n * @link https://github.com/jonschlinkert/reserved/blob/master/index.js\n */\nconst reservedWords = [\n 'abstract',\n 'arguments',\n 'boolean',\n 'break',\n 'byte',\n 'case',\n 'catch',\n 'char',\n 'class',\n 'const',\n 'continue',\n 'debugger',\n 'default',\n 'delete',\n 'do',\n 'double',\n 'else',\n 'enum',\n 'eval',\n 'export',\n 'extends',\n 'false',\n 'final',\n 'finally',\n 'float',\n 'for',\n 'function',\n 'goto',\n 'if',\n 'implements',\n 'import',\n 'in',\n 'instanceof',\n 'int',\n 'interface',\n 'let',\n 'long',\n 'native',\n 'new',\n 'null',\n 'package',\n 'private',\n 'protected',\n 'public',\n 'return',\n 'short',\n 'static',\n 'super',\n 'switch',\n 'synchronized',\n 'this',\n 'throw',\n 'throws',\n 'transient',\n 'true',\n 'try',\n 'typeof',\n 'var',\n 'void',\n 'volatile',\n 'while',\n 'with',\n 'yield',\n\n 'Array',\n 'Date',\n 'eval',\n 'function',\n 'hasOwnProperty',\n 'Infinity',\n 'isFinite',\n 'isNaN',\n 'isPrototypeOf',\n 'length',\n 'Math',\n 'name',\n 'NaN',\n 'Number',\n 'Object',\n 'prototype',\n 'String',\n 'toString',\n 'undefined',\n 'valueOf',\n]\n\nexport function transformReservedWord(word: string): string {\n if ((word && reservedWords.includes(word)) || word?.match(/^\\d/)) {\n return `_${word}`\n }\n\n return word\n}\n\nexport function isValidVarName(name: string) {\n try {\n Function(`var ${name}`)\n } catch (e) {\n return false\n }\n return true\n}\n"]}