@kubb/core 3.18.3 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{FileManager-BeN5TYKI.js → FileManager-BDisPxtH.js} +28 -45
- package/dist/FileManager-BDisPxtH.js.map +1 -0
- package/dist/{FileManager-CZyWLgbQ.cjs → FileManager-qDcTVN6G.cjs} +34 -48
- package/dist/FileManager-qDcTVN6G.cjs.map +1 -0
- package/dist/{PluginManager-H8G0i6KS.d.ts → PluginManager-BSUDeUfP.d.ts} +2 -2
- package/dist/{PluginManager-C62HGihR.d.cts → PluginManager-a3RiDAFC.d.cts} +2 -2
- package/dist/{acorn-Biw1D1Ce.cjs → acorn-Cg_eXN51.cjs} +15 -37
- package/dist/{acorn-Biw1D1Ce.cjs.map → acorn-Cg_eXN51.cjs.map} +1 -1
- package/dist/{acorn-3HQnxDj2.js → acorn-Z0oy0vSt.js} +15 -37
- package/dist/{acorn-3HQnxDj2.js.map → acorn-Z0oy0vSt.js.map} +1 -1
- package/dist/{angular-n5qYWkcx.js → angular-BUlb_iaU.js} +6 -7
- package/dist/{angular-n5qYWkcx.js.map → angular-BUlb_iaU.js.map} +1 -1
- package/dist/{angular-B3ddRl90.cjs → angular-nBly58h0.cjs} +6 -7
- package/dist/{angular-B3ddRl90.cjs.map → angular-nBly58h0.cjs.map} +1 -1
- package/dist/{babel-BrKqHp9Q.cjs → babel-5qXjvTGO.cjs} +34 -45
- package/dist/{babel-BrKqHp9Q.cjs.map → babel-5qXjvTGO.cjs.map} +1 -1
- package/dist/{babel-mOBF3g2e.js → babel-DfXTN9QX.js} +34 -45
- package/dist/{babel-mOBF3g2e.js.map → babel-DfXTN9QX.js.map} +1 -1
- package/dist/{chunk-DoeelZqw.cjs → chunk-CZg_9w7l.cjs} +3 -1
- package/dist/{chunk-DbvY3SJr.js → chunk-kPDogv7o.js} +3 -1
- package/dist/{estree-QGbwcVbp.js → estree-Bt3vRtV3.js} +6 -9
- package/dist/{estree-QGbwcVbp.js.map → estree-Bt3vRtV3.js.map} +1 -1
- package/dist/{estree-D6ftINJ3.cjs → estree-DyiFjXDy.cjs} +6 -9
- package/dist/{estree-D6ftINJ3.cjs.map → estree-DyiFjXDy.cjs.map} +1 -1
- package/dist/{flow-C1RsRESZ.js → flow-Bb8_yYns.js} +466 -573
- package/dist/{flow-C1RsRESZ.js.map → flow-Bb8_yYns.js.map} +1 -1
- package/dist/{flow-BWEc100n.cjs → flow-DdtBrX0O.cjs} +466 -573
- package/dist/{flow-BWEc100n.cjs.map → flow-DdtBrX0O.cjs.map} +1 -1
- package/dist/{fs-DkMVXz_s.js → fs-BNC5Fj6t.js} +3 -5
- package/dist/{fs-DkMVXz_s.js.map → fs-BNC5Fj6t.js.map} +1 -1
- package/dist/{fs-CeOer54w.cjs → fs-Bi2kuxAm.cjs} +10 -9
- package/dist/{fs-CeOer54w.cjs.map → fs-Bi2kuxAm.cjs.map} +1 -1
- package/dist/fs.cjs +2 -2
- package/dist/fs.d.cts +1 -1
- package/dist/fs.d.ts +1 -1
- package/dist/fs.js +2 -2
- package/dist/{glimmer-CwkHq8v_.cjs → glimmer-BuCRLjbI.cjs} +20 -38
- package/dist/{glimmer-CwkHq8v_.cjs.map → glimmer-BuCRLjbI.cjs.map} +1 -1
- package/dist/{glimmer-DZXQWVfc.js → glimmer-By8WZPkK.js} +20 -38
- package/dist/{glimmer-DZXQWVfc.js.map → glimmer-By8WZPkK.js.map} +1 -1
- package/dist/{graphql-DWNpg5AH.js → graphql-DsrNefXx.js} +3 -4
- package/dist/{graphql-DWNpg5AH.js.map → graphql-DsrNefXx.js.map} +1 -1
- package/dist/{graphql-ftPsRNd8.cjs → graphql-TN0hv-fx.cjs} +3 -4
- package/dist/{graphql-ftPsRNd8.cjs.map → graphql-TN0hv-fx.cjs.map} +1 -1
- package/dist/{html-DMFSHL-z.cjs → html-1W4-2_9J.cjs} +7 -9
- package/dist/{html-DMFSHL-z.cjs.map → html-1W4-2_9J.cjs.map} +1 -1
- package/dist/{html-Lx7YOmUI.js → html-Y5KDc150.js} +7 -9
- package/dist/{html-Lx7YOmUI.js.map → html-Y5KDc150.js.map} +1 -1
- package/dist/{index-DERUIhQK.d.cts → index-B7KKQHG8.d.cts} +3 -3
- package/dist/{index-B428LQ0Z.d.ts → index-BhFFCWR1.d.ts} +3 -3
- package/dist/{index-3smcdUnJ.d.ts → index-CGJ3tdk-.d.ts} +1 -4
- package/dist/{index-Bglrijef.d.cts → index-CWX6_-da.d.cts} +1 -4
- package/dist/index.cjs +42 -44
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +23 -34
- package/dist/index.js.map +1 -1
- package/dist/{logger-M0gDQMDh.js → logger-BKPT4rkB.js} +11 -19
- package/dist/logger-BKPT4rkB.js.map +1 -0
- package/dist/{logger-OgWv9Jyy.cjs → logger-DBJsdlpZ.cjs} +26 -27
- package/dist/logger-DBJsdlpZ.cjs.map +1 -0
- package/dist/logger.cjs +2 -2
- package/dist/logger.js +2 -2
- package/dist/{markdown-BYsFO1cu.cjs → markdown-Bltb-uzO.cjs} +3 -5
- package/dist/{markdown-BYsFO1cu.cjs.map → markdown-Bltb-uzO.cjs.map} +1 -1
- package/dist/{markdown-Dt7fmgWb.js → markdown-Drl4Cbq5.js} +3 -5
- package/dist/{markdown-Dt7fmgWb.js.map → markdown-Drl4Cbq5.js.map} +1 -1
- package/dist/{meriyah-BA-YCwVg.cjs → meriyah-CdG8HPS2.cjs} +3 -5
- package/dist/meriyah-CdG8HPS2.cjs.map +1 -0
- package/dist/{meriyah-CEYm-XS7.js → meriyah-Cz9whwp-.js} +3 -5
- package/dist/meriyah-Cz9whwp-.js.map +1 -0
- package/dist/mocks.cjs +206 -333
- package/dist/mocks.cjs.map +1 -1
- package/dist/mocks.d.cts +2 -2
- package/dist/mocks.d.ts +2 -2
- package/dist/mocks.js +186 -323
- package/dist/mocks.js.map +1 -1
- package/dist/{postcss-BQcSCAcI.cjs → postcss-B7n9zUIy.cjs} +32 -53
- package/dist/postcss-B7n9zUIy.cjs.map +1 -0
- package/dist/{postcss-CI4qZzdL.js → postcss-Dfx_9buT.js} +32 -53
- package/dist/postcss-Dfx_9buT.js.map +1 -0
- package/dist/{prompt-D3dP3KNu.js → prompt-BMs_Y-vT.js} +5 -8
- package/dist/{prompt-D3dP3KNu.js.map → prompt-BMs_Y-vT.js.map} +1 -1
- package/dist/{prompt-DslNpUPc.cjs → prompt-BXlYKArM.cjs} +14 -13
- package/dist/{prompt-DslNpUPc.cjs.map → prompt-BXlYKArM.cjs.map} +1 -1
- package/dist/{transformers-BL8vcCaM.js → transformers-CXIKOVl0.js} +13 -22
- package/dist/{transformers-BL8vcCaM.js.map → transformers-CXIKOVl0.js.map} +1 -1
- package/dist/{transformers-BUNfHgNe.cjs → transformers-TDFgAyi8.cjs} +15 -23
- package/dist/{transformers-BUNfHgNe.cjs.map → transformers-TDFgAyi8.cjs.map} +1 -1
- package/dist/transformers.cjs +4 -3
- package/dist/transformers.js +1 -1
- package/dist/typescript-BY9-7pw9.js +3 -0
- package/dist/{typescript-eE7YJ2-c.js → typescript-C8iCxnaF.js} +15 -70
- package/dist/{typescript-eE7YJ2-c.js.map → typescript-C8iCxnaF.js.map} +1 -1
- package/dist/{typescript-DDBRxbn7.cjs → typescript-Evf8GXVW.cjs} +15 -70
- package/dist/{typescript-DDBRxbn7.cjs.map → typescript-Evf8GXVW.cjs.map} +1 -1
- package/dist/typescript-PxlX-TH7.cjs +4 -0
- package/dist/utils.cjs +4 -4
- package/dist/utils.d.cts +3 -3
- package/dist/utils.d.ts +3 -3
- package/dist/utils.js +4 -4
- package/dist/{write-cvT4uBev.cjs → write-BJfM7G1_.cjs} +11 -10
- package/dist/{write-cvT4uBev.cjs.map → write-BJfM7G1_.cjs.map} +1 -1
- package/dist/{write-CLTPlucv.js → write-O9QWtBJ_.js} +4 -6
- package/dist/{write-CLTPlucv.js.map → write-O9QWtBJ_.js.map} +1 -1
- package/dist/{yaml-v1i11ZlS.cjs → yaml-B2qeXFgu.cjs} +37 -116
- package/dist/yaml-B2qeXFgu.cjs.map +1 -0
- package/dist/{yaml-DZASOrDL.js → yaml-Bi_nSoU_.js} +37 -116
- package/dist/yaml-Bi_nSoU_.js.map +1 -0
- package/package.json +7 -7
- package/dist/FileManager-BeN5TYKI.js.map +0 -1
- package/dist/FileManager-CZyWLgbQ.cjs.map +0 -1
- package/dist/logger-M0gDQMDh.js.map +0 -1
- package/dist/logger-OgWv9Jyy.cjs.map +0 -1
- package/dist/meriyah-BA-YCwVg.cjs.map +0 -1
- package/dist/meriyah-CEYm-XS7.js.map +0 -1
- package/dist/postcss-BQcSCAcI.cjs.map +0 -1
- package/dist/postcss-CI4qZzdL.js.map +0 -1
- package/dist/typescript-Bq-hjiJ0.js +0 -3
- package/dist/typescript-DvVkagAX.cjs +0 -4
- package/dist/yaml-DZASOrDL.js.map +0 -1
- package/dist/yaml-v1i11ZlS.cjs.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubb/core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Core functionality for Kubb's plugin-based code generation system, providing the foundation for transforming OpenAPI specifications.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -82,27 +82,27 @@
|
|
|
82
82
|
"dependencies": {
|
|
83
83
|
"camelcase": "^8.0.0",
|
|
84
84
|
"find-up": "^7.0.0",
|
|
85
|
-
"fs-extra": "^11.3.
|
|
85
|
+
"fs-extra": "^11.3.2",
|
|
86
86
|
"js-runtime": "^0.0.8",
|
|
87
87
|
"natural-orderby": "^5.0.0",
|
|
88
88
|
"object-hash": "^3.0.0",
|
|
89
89
|
"p-limit": "^7.1.1",
|
|
90
90
|
"picocolors": "^1.1.1",
|
|
91
|
-
"remeda": "^2.
|
|
91
|
+
"remeda": "^2.32.0",
|
|
92
92
|
"seedrandom": "^3.0.5",
|
|
93
93
|
"semver": "^7.7.2",
|
|
94
|
-
"@kubb/parser-ts": "
|
|
94
|
+
"@kubb/parser-ts": "4.0.0"
|
|
95
95
|
},
|
|
96
96
|
"devDependencies": {
|
|
97
97
|
"@types/fs-extra": "^11.0.4",
|
|
98
98
|
"@types/object-hash": "^3.0.6",
|
|
99
99
|
"@types/seedrandom": "^3.0.8",
|
|
100
|
-
"@types/semver": "^7.7.
|
|
100
|
+
"@types/semver": "^7.7.1",
|
|
101
101
|
"consola": "^3.4.2",
|
|
102
102
|
"tsdown": "^0.14.2",
|
|
103
103
|
"typescript": "^5.9.2",
|
|
104
|
-
"zod": "^4.1.
|
|
105
|
-
"@kubb/config-ts": "
|
|
104
|
+
"zod": "^4.1.9",
|
|
105
|
+
"@kubb/config-ts": "4.0.0"
|
|
106
106
|
},
|
|
107
107
|
"engines": {
|
|
108
108
|
"node": ">=20"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FileManager-BeN5TYKI.js","names":["#head","#tail","#size","resolve","#cachedLeaves","leaves: TreeNode[]","root: DirectoryTree","path","currentLevel: DirectoryTree[]","#options","barrelFile: KubbFile.File","item","#items","#orderItems","#addParams","type: string[]","name: string[]","item","path","#options","params: Record<string, string>","extname","trimExtName","parsers: Record<KubbFile.Extname, ParserModule<any>>","#buffer","resolvedFiles: KubbFile.ResolvedFile[]","#cache","path","#limit","extname","name"],"sources":["../../../node_modules/.pnpm/yocto-queue@1.2.1/node_modules/yocto-queue/index.js","../../../node_modules/.pnpm/p-limit@7.1.1/node_modules/p-limit/index.js","../src/utils/TreeNode.ts","../src/BarrelManager.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/utils/Cache.ts","../src/FileManager.ts"],"sourcesContent":["/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n\n\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\n\t\t}\n\t}\n}\n","import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tvalidateConcurrency(concurrency);\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst resumeNext = () => {\n\t\t// Process the next queued function if we're under the concurrency limit\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tactiveCount++;\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\t// Execute the function and capture the result promise\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\t// Resolve immediately with the promise (don't wait for completion)\n\t\tresolve(result);\n\n\t\t// Wait for the function to complete (success or failure)\n\t\t// We catch errors here to prevent unhandled rejections,\n\t\t// but the original promise rejection is preserved for the caller\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\t// Decrement active count and process next queued function\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue the internal resolve function instead of the run function\n\t\t// to preserve the asynchronous execution context.\n\t\tnew Promise(internalResolve => { // eslint-disable-line promise/param-names\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(run.bind(undefined, function_, resolve, arguments_)); // eslint-disable-line promise/prefer-await-to-then\n\n\t\t// Start processing immediately if we haven't reached the concurrency limit\n\t\tif (activeCount < concurrency) {\n\t\t\tresumeNext();\n\t\t}\n\t};\n\n\tconst generator = (function_, ...arguments_) => new Promise(resolve => {\n\t\tenqueue(function_, resolve, arguments_);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue() {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t\tconcurrency: {\n\t\t\tget: () => concurrency,\n\n\t\t\tset(newConcurrency) {\n\t\t\t\tvalidateConcurrency(newConcurrency);\n\t\t\t\tconcurrency = newConcurrency;\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t// eslint-disable-next-line no-unmodified-loop-condition\n\t\t\t\t\twhile (activeCount < concurrency && queue.size > 0) {\n\t\t\t\t\t\tresumeNext();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\tmap: {\n\t\t\tasync value(array, function_) {\n\t\t\t\tconst promises = array.map((value, index) => this(function_, value, index));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nexport function limitFunction(function_, options) {\n\tconst {concurrency} = options;\n\tconst limit = pLimit(concurrency);\n\n\treturn (...arguments_) => limit(() => function_(...arguments_));\n}\n\nfunction validateConcurrency(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n}\n","import { FileManager } from '../FileManager.ts'\nimport type { KubbFile } from '../fs/index.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) => {\n recurse(treeNode, child)\n })\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\nconst normalizePath = (p: string): string => p.replace(/\\\\/g, '/')\n\nexport function buildDirectoryTree(files: Array<KubbFile.File>, rootFolder = ''): DirectoryTree | null {\n const normalizedRootFolder = normalizePath(rootFolder)\n const rootPrefix = normalizedRootFolder.endsWith('/') ? normalizedRootFolder : `${normalizedRootFolder}/`\n\n const filteredFiles = files.filter((file) => {\n const normalizedFilePath = normalizePath(file.path)\n return rootFolder ? normalizedFilePath.startsWith(rootPrefix) && !normalizedFilePath.endsWith('.json') : !normalizedFilePath.endsWith('.json')\n })\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","/** biome-ignore-all lint/suspicious/useIterableCallbackReturn: not needed */\nimport { join } from 'node:path'\nimport type { FileMetaBase } from './FileManager.ts'\nimport type { KubbFile } from './fs/index.ts'\nimport { getRelativePath } from './fs/index.ts'\nimport type { Logger } from './logger.ts'\nimport { TreeNode } from './utils/TreeNode.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 }: { 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 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(\n (item) => item.name === source.name && item.isTypeOnly === source.isTypeOnly,\n )\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 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 { 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) => {\n this.#items.push(it)\n })\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 './types.ts'\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({ prefix = '', replacer }: { prefix?: string; 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 `\\`${prefix}${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 hash from 'object-hash'\nimport { combineExports, combineImports, combineSources } from '../FileManager.ts'\nimport type { KubbFile } from '../fs/index.ts'\nimport { getRelativePath } from '../fs/index.ts'\nimport type { Logger } from '../logger.ts'\nimport type { Config } from '../types.ts'\n\n/**\n * Generate a default banner for files created by Kubb\n * @returns A string with the default banner\n */\nexport function getDefaultBanner({ title, description, version, config }: { title?: string; description?: string; version?: string; config: Config }): string {\n try {\n let source = ''\n if ('path' in config.input) {\n source = path.basename(config.input.path)\n } else if ('data' in config.input) {\n source = 'text content'\n }\n\n let banner = '/**\\n* Generated by Kubb (https://kubb.dev/).\\n* Do not edit manually.\\n'\n\n if (config.output.defaultBanner === 'simple') {\n banner += '*/\\n'\n return banner\n }\n\n if (source) {\n banner += `* Source: ${source}\\n`\n }\n\n if (title) {\n banner += `* Title: ${title}\\n`\n }\n\n if (description) {\n const formattedDescription = description.replace(/\\n/gm, '\\n* ')\n banner += `* Description: ${formattedDescription}\\n`\n }\n\n if (version) {\n banner += `* OpenAPI spec version: ${version}\\n`\n }\n\n banner += '*/\\n'\n return banner\n } catch (_error) {\n // If there's any error in parsing the Oas data, return a simpler banner\n return '/**\\n* Generated by Kubb (https://kubb.dev/).\\n* Do not edit manually.\\n*/'\n }\n}\n\n/**\n * Helper to create a file with name and id set\n */\nexport function createFile<TMeta extends object = object>(file: KubbFile.File<TMeta>): KubbFile.ResolvedFile<TMeta> {\n const extname = path.extname(file.baseName) as KubbFile.Extname\n if (!extname) {\n throw new Error(`No extname found for ${file.baseName}`)\n }\n\n const source = file.sources.map((item) => item.value).join('\\n\\n')\n const exports = file.exports?.length ? combineExports(file.exports) : []\n const imports = file.imports?.length && source ? combineImports(file.imports, exports, source) : []\n const sources = file.sources?.length ? combineSources(file.sources) : []\n\n return {\n ...file,\n id: hash({ path: file.path }),\n name: trimExtName(file.baseName),\n extname,\n imports: imports.map(createFileImport),\n exports: exports.map(createFileExport),\n sources: sources.map(createFileSource),\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 /**\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 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}` : item.root ? trimExtName(importPath) : 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 const code = [file.banner, module.print([...importNodes, ...exportNodes]), source, file.footer].join('\\n')\n\n return code\n },\n})\n\nconst tsxParser = createFileParser({\n async print(file, options = { extname: '.tsx' }) {\n return typeScriptParser.print(file, options)\n },\n})\n\nconst defaultParser = createFileParser({\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","export class Cache<T> {\n #buffer = new Map<string, T>()\n\n async get(key: string): Promise<T | null> {\n return this.#buffer.get(key) ?? null\n }\n\n async set(key: string, value: T): Promise<void> {\n this.#buffer.set(key, value)\n }\n\n async delete(key: string): Promise<void> {\n this.#buffer.delete(key)\n }\n\n async clear(): Promise<void> {\n this.#buffer.clear()\n }\n\n async keys(): Promise<string[]> {\n return [...this.#buffer.keys()]\n }\n\n async values(): Promise<T[]> {\n return [...this.#buffer.values()]\n }\n\n async flush(): Promise<void> {\n // No-op for base cache\n }\n}\n","import { extname, join, relative } from 'node:path'\n\nimport { orderBy } from 'natural-orderby'\nimport pLimit from 'p-limit'\nimport { isDeepEqual, uniqueBy } from 'remeda'\n\nimport { BarrelManager } from './BarrelManager.ts'\n\nimport type { KubbFile } from './fs/index.ts'\nimport { trimExtName, write } from './fs/index.ts'\nimport type { ResolvedFile } from './fs/types.ts'\nimport type { Logger } from './logger.ts'\nimport type { BarrelType, Config, Plugin } from './types.ts'\nimport { createFile, getFileParser } from './utils'\nimport { Cache } from './utils/Cache.ts'\nimport type { GreaterThan } from './utils/types.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 /**\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\ntype WriteFilesProps = {\n root: Config['root']\n extension?: Record<KubbFile.Extname, KubbFile.Extname | ''>\n logger?: Logger\n dryRun?: boolean\n}\n\nexport class FileManager {\n #cache = new Cache<KubbFile.ResolvedFile>()\n #limit = pLimit(100)\n\n constructor() {\n return this\n }\n\n async add<T extends Array<KubbFile.File> = Array<KubbFile.File>>(...files: T): AddResult<T> {\n const resolvedFiles: KubbFile.ResolvedFile[] = []\n\n const mergedFiles = new Map<string, KubbFile.File>()\n\n files.forEach((file) => {\n const existing = mergedFiles.get(file.path)\n if (existing) {\n mergedFiles.set(file.path, mergeFile(existing, file))\n } else {\n mergedFiles.set(file.path, file)\n }\n })\n\n for (const file of mergedFiles.values()) {\n const existing = await this.#cache.get(file.path)\n\n const merged = existing ? mergeFile(existing, file) : file\n const resolvedFile = createFile(merged)\n\n await this.#cache.set(resolvedFile.path, resolvedFile)\n await this.#cache.flush()\n\n resolvedFiles.push(resolvedFile)\n }\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 getByPath(path: KubbFile.Path): Promise<KubbFile.ResolvedFile | null> {\n return this.#cache.get(path)\n }\n\n async deleteByPath(path: KubbFile.Path): Promise<void> {\n await this.#cache.delete(path)\n }\n\n async clear(): Promise<void> {\n await this.#cache.clear()\n }\n\n async getFiles(): Promise<Array<KubbFile.ResolvedFile>> {\n const cachedKeys = await this.#cache.keys()\n\n // order by path length and if file is a barrel file\n const keys = orderBy(cachedKeys, [(v) => v.length, (v) => trimExtName(v).endsWith('index')])\n\n const filesTasks = keys.map((key) =>\n this.#limit(async () => {\n const file = await this.#cache.get(key)\n return file as KubbFile.ResolvedFile\n }),\n )\n\n const files = await Promise.all(filesTasks)\n\n return files.filter(Boolean)\n }\n\n async processFiles({ dryRun, root, extension, logger }: WriteFilesProps): Promise<Array<KubbFile.ResolvedFile>> {\n const files = await this.getFiles()\n\n logger?.emit('progress_start', { id: 'files', size: files.length, message: 'Writing files ...' })\n\n const promises = files.map((file) => {\n return this.#limit(async () => {\n const message = file ? `Writing ${relative(root, file.path)}` : ''\n const extname = extension?.[file.extname] || undefined\n\n if (!dryRun) {\n const source = await getSource(file, { logger, extname })\n await write(file.path, source, { sanity: false })\n }\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 return files\n }\n async getBarrelFiles({ type, meta = {}, root, output, logger }: AddIndexesProps): Promise<KubbFile.File[]> {\n if (!type || type === 'propagate') {\n return []\n }\n\n const barrelManager = new BarrelManager({ logger })\n const files = await this.getFiles()\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 // 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\n return parser.print(file, { logger, extname })\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 uniqueBy(sources, (obj) => [obj.name, obj.isExportable, obj.isTypeOnly] as const)\n}\n\nexport function combineExports(exports: Array<KubbFile.Export>): Array<KubbFile.Export> {\n return orderBy(exports, [\n (v) => !!Array.isArray(v.name),\n (v) => !v.isTypeOnly,\n (v) => v.path,\n (v) => !!v.name,\n (v) => (Array.isArray(v.name) ? orderBy(v.name) : v.name),\n ]).reduce(\n (prev, curr) => {\n const name = curr.name\n const prevByPath = prev.findLast((imp) => imp.path === curr.path)\n const prevByPathAndIsTypeOnly = prev.findLast((imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly)\n\n if (prevByPathAndIsTypeOnly) {\n // we already have an export that has the same path but uses `isTypeOnly` (export type ...)\n return prev\n }\n\n const uniquePrev = prev.findLast(\n (imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly === curr.isTypeOnly && imp.asAlias === curr.asAlias,\n )\n\n // we already have an item that was unique enough or name field is empty or prev asAlias is set but current has no changes\n if (uniquePrev || (Array.isArray(name) && !name.length) || (prevByPath?.asAlias && !curr.asAlias)) {\n return prev\n }\n\n if (!prevByPath) {\n return [\n ...prev,\n {\n ...curr,\n name: Array.isArray(name) ? [...new Set(name)] : name,\n },\n ]\n }\n\n // merge all names when prev and current both have the same isTypeOnly set\n if (prevByPath && Array.isArray(prevByPath.name) && Array.isArray(curr.name) && prevByPath.isTypeOnly === curr.isTypeOnly) {\n prevByPath.name = [...new Set([...prevByPath.name, ...curr.name])]\n\n return prev\n }\n\n return [...prev, curr]\n },\n [] as Array<KubbFile.Export>,\n )\n}\n\nexport function combineImports(imports: Array<KubbFile.Import>, exports: Array<KubbFile.Export>, source?: string): Array<KubbFile.Import> {\n return orderBy(imports, [\n (v) => !!Array.isArray(v.name),\n (v) => !v.isTypeOnly,\n (v) => v.path,\n (v) => !!v.name,\n (v) => (Array.isArray(v.name) ? orderBy(v.name) : v.name),\n ]).reduce(\n (prev, curr) => {\n let name = Array.isArray(curr.name) ? [...new Set(curr.name)] : curr.name\n\n const hasImportInSource = (importName: string) => {\n if (!source) {\n return true\n }\n\n const checker = (name?: string) => {\n return name && source.includes(name)\n }\n\n return checker(importName) || exports.some(({ name }) => (Array.isArray(name) ? name.some(checker) : checker(name)))\n }\n\n if (curr.path === curr.root) {\n // root and path are the same file, remove the \"./\" import\n return prev\n }\n\n // merge all names and check if the importName is being used in the generated source and if not filter those imports out\n if (Array.isArray(name)) {\n name = name.filter((item) => (typeof item === 'string' ? hasImportInSource(item) : hasImportInSource(item.propertyName)))\n }\n\n const prevByPath = prev.findLast((imp) => imp.path === curr.path && imp.isTypeOnly === curr.isTypeOnly)\n const uniquePrev = prev.findLast((imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly === curr.isTypeOnly)\n const prevByPathNameAndIsTypeOnly = prev.findLast((imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly)\n\n if (prevByPathNameAndIsTypeOnly) {\n // we already have an export that has the same path but uses `isTypeOnly` (import type ...)\n return prev\n }\n\n // already unique enough or name is empty\n if (uniquePrev || (Array.isArray(name) && !name.length)) {\n return prev\n }\n\n // new item, append name\n if (!prevByPath) {\n return [\n ...prev,\n {\n ...curr,\n name,\n },\n ]\n }\n\n // merge all names when prev and current both have the same isTypeOnly set\n if (prevByPath && Array.isArray(prevByPath.name) && Array.isArray(name) && prevByPath.isTypeOnly === curr.isTypeOnly) {\n prevByPath.name = [...new Set([...prevByPath.name, ...name])]\n\n return prev\n }\n\n // no import was found in the source, ignore import\n if (!Array.isArray(name) && name && !hasImportInSource(name)) {\n return prev\n }\n\n return [...prev, curr]\n },\n [] as Array<KubbFile.Import>,\n )\n}\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FileManager-CZyWLgbQ.cjs","names":["#head","#tail","#size","#cachedLeaves","leaves: TreeNode[]","root: DirectoryTree","path","currentLevel: DirectoryTree[]","#options","barrelFile: KubbFile.File","item","getRelativePath","#items","#orderItems","#addParams","camelCase","type: string[]","name: string[]","item","path","#options","isValidVarName","camelCase","params: Record<string, string>","path","extname","exports","trimExtName","module","getRelativePath","parsers: Record<KubbFile.Extname, ParserModule<any>>","#buffer","resolvedFiles: KubbFile.ResolvedFile[]","#cache","path","trimExtName","#limit","extname","write","exports","name"],"sources":["../../../node_modules/.pnpm/yocto-queue@1.2.1/node_modules/yocto-queue/index.js","../../../node_modules/.pnpm/p-limit@7.1.1/node_modules/p-limit/index.js","../src/utils/TreeNode.ts","../src/BarrelManager.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/utils/Cache.ts","../src/FileManager.ts"],"sourcesContent":["/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n\n\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\n\t\t}\n\t}\n}\n","import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tvalidateConcurrency(concurrency);\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst resumeNext = () => {\n\t\t// Process the next queued function if we're under the concurrency limit\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tactiveCount++;\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\t// Execute the function and capture the result promise\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\t// Resolve immediately with the promise (don't wait for completion)\n\t\tresolve(result);\n\n\t\t// Wait for the function to complete (success or failure)\n\t\t// We catch errors here to prevent unhandled rejections,\n\t\t// but the original promise rejection is preserved for the caller\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\t// Decrement active count and process next queued function\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue the internal resolve function instead of the run function\n\t\t// to preserve the asynchronous execution context.\n\t\tnew Promise(internalResolve => { // eslint-disable-line promise/param-names\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(run.bind(undefined, function_, resolve, arguments_)); // eslint-disable-line promise/prefer-await-to-then\n\n\t\t// Start processing immediately if we haven't reached the concurrency limit\n\t\tif (activeCount < concurrency) {\n\t\t\tresumeNext();\n\t\t}\n\t};\n\n\tconst generator = (function_, ...arguments_) => new Promise(resolve => {\n\t\tenqueue(function_, resolve, arguments_);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue() {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t\tconcurrency: {\n\t\t\tget: () => concurrency,\n\n\t\t\tset(newConcurrency) {\n\t\t\t\tvalidateConcurrency(newConcurrency);\n\t\t\t\tconcurrency = newConcurrency;\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t// eslint-disable-next-line no-unmodified-loop-condition\n\t\t\t\t\twhile (activeCount < concurrency && queue.size > 0) {\n\t\t\t\t\t\tresumeNext();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\tmap: {\n\t\t\tasync value(array, function_) {\n\t\t\t\tconst promises = array.map((value, index) => this(function_, value, index));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nexport function limitFunction(function_, options) {\n\tconst {concurrency} = options;\n\tconst limit = pLimit(concurrency);\n\n\treturn (...arguments_) => limit(() => function_(...arguments_));\n}\n\nfunction validateConcurrency(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n}\n","import { FileManager } from '../FileManager.ts'\nimport type { KubbFile } from '../fs/index.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) => {\n recurse(treeNode, child)\n })\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\nconst normalizePath = (p: string): string => p.replace(/\\\\/g, '/')\n\nexport function buildDirectoryTree(files: Array<KubbFile.File>, rootFolder = ''): DirectoryTree | null {\n const normalizedRootFolder = normalizePath(rootFolder)\n const rootPrefix = normalizedRootFolder.endsWith('/') ? normalizedRootFolder : `${normalizedRootFolder}/`\n\n const filteredFiles = files.filter((file) => {\n const normalizedFilePath = normalizePath(file.path)\n return rootFolder ? normalizedFilePath.startsWith(rootPrefix) && !normalizedFilePath.endsWith('.json') : !normalizedFilePath.endsWith('.json')\n })\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","/** biome-ignore-all lint/suspicious/useIterableCallbackReturn: not needed */\nimport { join } from 'node:path'\nimport type { FileMetaBase } from './FileManager.ts'\nimport type { KubbFile } from './fs/index.ts'\nimport { getRelativePath } from './fs/index.ts'\nimport type { Logger } from './logger.ts'\nimport { TreeNode } from './utils/TreeNode.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 }: { 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 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(\n (item) => item.name === source.name && item.isTypeOnly === source.isTypeOnly,\n )\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 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 { 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) => {\n this.#items.push(it)\n })\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 './types.ts'\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({ prefix = '', replacer }: { prefix?: string; 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 `\\`${prefix}${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 hash from 'object-hash'\nimport { combineExports, combineImports, combineSources } from '../FileManager.ts'\nimport type { KubbFile } from '../fs/index.ts'\nimport { getRelativePath } from '../fs/index.ts'\nimport type { Logger } from '../logger.ts'\nimport type { Config } from '../types.ts'\n\n/**\n * Generate a default banner for files created by Kubb\n * @returns A string with the default banner\n */\nexport function getDefaultBanner({ title, description, version, config }: { title?: string; description?: string; version?: string; config: Config }): string {\n try {\n let source = ''\n if ('path' in config.input) {\n source = path.basename(config.input.path)\n } else if ('data' in config.input) {\n source = 'text content'\n }\n\n let banner = '/**\\n* Generated by Kubb (https://kubb.dev/).\\n* Do not edit manually.\\n'\n\n if (config.output.defaultBanner === 'simple') {\n banner += '*/\\n'\n return banner\n }\n\n if (source) {\n banner += `* Source: ${source}\\n`\n }\n\n if (title) {\n banner += `* Title: ${title}\\n`\n }\n\n if (description) {\n const formattedDescription = description.replace(/\\n/gm, '\\n* ')\n banner += `* Description: ${formattedDescription}\\n`\n }\n\n if (version) {\n banner += `* OpenAPI spec version: ${version}\\n`\n }\n\n banner += '*/\\n'\n return banner\n } catch (_error) {\n // If there's any error in parsing the Oas data, return a simpler banner\n return '/**\\n* Generated by Kubb (https://kubb.dev/).\\n* Do not edit manually.\\n*/'\n }\n}\n\n/**\n * Helper to create a file with name and id set\n */\nexport function createFile<TMeta extends object = object>(file: KubbFile.File<TMeta>): KubbFile.ResolvedFile<TMeta> {\n const extname = path.extname(file.baseName) as KubbFile.Extname\n if (!extname) {\n throw new Error(`No extname found for ${file.baseName}`)\n }\n\n const source = file.sources.map((item) => item.value).join('\\n\\n')\n const exports = file.exports?.length ? combineExports(file.exports) : []\n const imports = file.imports?.length && source ? combineImports(file.imports, exports, source) : []\n const sources = file.sources?.length ? combineSources(file.sources) : []\n\n return {\n ...file,\n id: hash({ path: file.path }),\n name: trimExtName(file.baseName),\n extname,\n imports: imports.map(createFileImport),\n exports: exports.map(createFileExport),\n sources: sources.map(createFileSource),\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 /**\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 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}` : item.root ? trimExtName(importPath) : 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 const code = [file.banner, module.print([...importNodes, ...exportNodes]), source, file.footer].join('\\n')\n\n return code\n },\n})\n\nconst tsxParser = createFileParser({\n async print(file, options = { extname: '.tsx' }) {\n return typeScriptParser.print(file, options)\n },\n})\n\nconst defaultParser = createFileParser({\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","export class Cache<T> {\n #buffer = new Map<string, T>()\n\n async get(key: string): Promise<T | null> {\n return this.#buffer.get(key) ?? null\n }\n\n async set(key: string, value: T): Promise<void> {\n this.#buffer.set(key, value)\n }\n\n async delete(key: string): Promise<void> {\n this.#buffer.delete(key)\n }\n\n async clear(): Promise<void> {\n this.#buffer.clear()\n }\n\n async keys(): Promise<string[]> {\n return [...this.#buffer.keys()]\n }\n\n async values(): Promise<T[]> {\n return [...this.#buffer.values()]\n }\n\n async flush(): Promise<void> {\n // No-op for base cache\n }\n}\n","import { extname, join, relative } from 'node:path'\n\nimport { orderBy } from 'natural-orderby'\nimport pLimit from 'p-limit'\nimport { isDeepEqual, uniqueBy } from 'remeda'\n\nimport { BarrelManager } from './BarrelManager.ts'\n\nimport type { KubbFile } from './fs/index.ts'\nimport { trimExtName, write } from './fs/index.ts'\nimport type { ResolvedFile } from './fs/types.ts'\nimport type { Logger } from './logger.ts'\nimport type { BarrelType, Config, Plugin } from './types.ts'\nimport { createFile, getFileParser } from './utils'\nimport { Cache } from './utils/Cache.ts'\nimport type { GreaterThan } from './utils/types.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 /**\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\ntype WriteFilesProps = {\n root: Config['root']\n extension?: Record<KubbFile.Extname, KubbFile.Extname | ''>\n logger?: Logger\n dryRun?: boolean\n}\n\nexport class FileManager {\n #cache = new Cache<KubbFile.ResolvedFile>()\n #limit = pLimit(100)\n\n constructor() {\n return this\n }\n\n async add<T extends Array<KubbFile.File> = Array<KubbFile.File>>(...files: T): AddResult<T> {\n const resolvedFiles: KubbFile.ResolvedFile[] = []\n\n const mergedFiles = new Map<string, KubbFile.File>()\n\n files.forEach((file) => {\n const existing = mergedFiles.get(file.path)\n if (existing) {\n mergedFiles.set(file.path, mergeFile(existing, file))\n } else {\n mergedFiles.set(file.path, file)\n }\n })\n\n for (const file of mergedFiles.values()) {\n const existing = await this.#cache.get(file.path)\n\n const merged = existing ? mergeFile(existing, file) : file\n const resolvedFile = createFile(merged)\n\n await this.#cache.set(resolvedFile.path, resolvedFile)\n await this.#cache.flush()\n\n resolvedFiles.push(resolvedFile)\n }\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 getByPath(path: KubbFile.Path): Promise<KubbFile.ResolvedFile | null> {\n return this.#cache.get(path)\n }\n\n async deleteByPath(path: KubbFile.Path): Promise<void> {\n await this.#cache.delete(path)\n }\n\n async clear(): Promise<void> {\n await this.#cache.clear()\n }\n\n async getFiles(): Promise<Array<KubbFile.ResolvedFile>> {\n const cachedKeys = await this.#cache.keys()\n\n // order by path length and if file is a barrel file\n const keys = orderBy(cachedKeys, [(v) => v.length, (v) => trimExtName(v).endsWith('index')])\n\n const filesTasks = keys.map((key) =>\n this.#limit(async () => {\n const file = await this.#cache.get(key)\n return file as KubbFile.ResolvedFile\n }),\n )\n\n const files = await Promise.all(filesTasks)\n\n return files.filter(Boolean)\n }\n\n async processFiles({ dryRun, root, extension, logger }: WriteFilesProps): Promise<Array<KubbFile.ResolvedFile>> {\n const files = await this.getFiles()\n\n logger?.emit('progress_start', { id: 'files', size: files.length, message: 'Writing files ...' })\n\n const promises = files.map((file) => {\n return this.#limit(async () => {\n const message = file ? `Writing ${relative(root, file.path)}` : ''\n const extname = extension?.[file.extname] || undefined\n\n if (!dryRun) {\n const source = await getSource(file, { logger, extname })\n await write(file.path, source, { sanity: false })\n }\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 return files\n }\n async getBarrelFiles({ type, meta = {}, root, output, logger }: AddIndexesProps): Promise<KubbFile.File[]> {\n if (!type || type === 'propagate') {\n return []\n }\n\n const barrelManager = new BarrelManager({ logger })\n const files = await this.getFiles()\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 // 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\n return parser.print(file, { logger, extname })\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 uniqueBy(sources, (obj) => [obj.name, obj.isExportable, obj.isTypeOnly] as const)\n}\n\nexport function combineExports(exports: Array<KubbFile.Export>): Array<KubbFile.Export> {\n return orderBy(exports, [\n (v) => !!Array.isArray(v.name),\n (v) => !v.isTypeOnly,\n (v) => v.path,\n (v) => !!v.name,\n (v) => (Array.isArray(v.name) ? orderBy(v.name) : v.name),\n ]).reduce(\n (prev, curr) => {\n const name = curr.name\n const prevByPath = prev.findLast((imp) => imp.path === curr.path)\n const prevByPathAndIsTypeOnly = prev.findLast((imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly)\n\n if (prevByPathAndIsTypeOnly) {\n // we already have an export that has the same path but uses `isTypeOnly` (export type ...)\n return prev\n }\n\n const uniquePrev = prev.findLast(\n (imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly === curr.isTypeOnly && imp.asAlias === curr.asAlias,\n )\n\n // we already have an item that was unique enough or name field is empty or prev asAlias is set but current has no changes\n if (uniquePrev || (Array.isArray(name) && !name.length) || (prevByPath?.asAlias && !curr.asAlias)) {\n return prev\n }\n\n if (!prevByPath) {\n return [\n ...prev,\n {\n ...curr,\n name: Array.isArray(name) ? [...new Set(name)] : name,\n },\n ]\n }\n\n // merge all names when prev and current both have the same isTypeOnly set\n if (prevByPath && Array.isArray(prevByPath.name) && Array.isArray(curr.name) && prevByPath.isTypeOnly === curr.isTypeOnly) {\n prevByPath.name = [...new Set([...prevByPath.name, ...curr.name])]\n\n return prev\n }\n\n return [...prev, curr]\n },\n [] as Array<KubbFile.Export>,\n )\n}\n\nexport function combineImports(imports: Array<KubbFile.Import>, exports: Array<KubbFile.Export>, source?: string): Array<KubbFile.Import> {\n return orderBy(imports, [\n (v) => !!Array.isArray(v.name),\n (v) => !v.isTypeOnly,\n (v) => v.path,\n (v) => !!v.name,\n (v) => (Array.isArray(v.name) ? orderBy(v.name) : v.name),\n ]).reduce(\n (prev, curr) => {\n let name = Array.isArray(curr.name) ? [...new Set(curr.name)] : curr.name\n\n const hasImportInSource = (importName: string) => {\n if (!source) {\n return true\n }\n\n const checker = (name?: string) => {\n return name && source.includes(name)\n }\n\n return checker(importName) || exports.some(({ name }) => (Array.isArray(name) ? name.some(checker) : checker(name)))\n }\n\n if (curr.path === curr.root) {\n // root and path are the same file, remove the \"./\" import\n return prev\n }\n\n // merge all names and check if the importName is being used in the generated source and if not filter those imports out\n if (Array.isArray(name)) {\n name = name.filter((item) => (typeof item === 'string' ? hasImportInSource(item) : hasImportInSource(item.propertyName)))\n }\n\n const prevByPath = prev.findLast((imp) => imp.path === curr.path && imp.isTypeOnly === curr.isTypeOnly)\n const uniquePrev = prev.findLast((imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly === curr.isTypeOnly)\n const prevByPathNameAndIsTypeOnly = prev.findLast((imp) => imp.path === curr.path && isDeepEqual(imp.name, name) && imp.isTypeOnly)\n\n if (prevByPathNameAndIsTypeOnly) {\n // we already have an export that has the same path but uses `isTypeOnly` (import type ...)\n return prev\n }\n\n // already unique enough or name is empty\n if (uniquePrev || (Array.isArray(name) && !name.length)) {\n return prev\n }\n\n // new item, append name\n if (!prevByPath) {\n return [\n ...prev,\n {\n ...curr,\n name,\n },\n ]\n }\n\n // merge all names when prev and current both have the same isTypeOnly set\n if (prevByPath && Array.isArray(prevByPath.name) && Array.isArray(name) && prevByPath.isTypeOnly === curr.isTypeOnly) {\n prevByPath.name = [...new Set([...prevByPath.name, ...name])]\n\n return prev\n }\n\n // no import was found in the source, ignore import\n if (!Array.isArray(name) && name && !hasImportInSource(name)) {\n return prev\n }\n\n return [...prev, curr]\n },\n [] as Array<KubbFile.Import>,\n )\n}\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger-M0gDQMDh.js","names":["c","i","createConsola","l","write","getColor","ansiRegex","i","s","stripAnsi","env","c","stripAnsi$1","EventEmitter","#emitter","NodeEventEmitter","EventEmitter","consola","logger: Logger","files: Record<string, string[]>"],"sources":["../../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/core.mjs","../../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/shared/consola.DRwqZj3T.mjs","../../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/shared/consola.DXBYu-KD.mjs","../../../node_modules/.pnpm/consola@3.4.2/node_modules/consola/dist/index.mjs","../src/utils/EventEmitter.ts","../src/logger.ts"],"sourcesContent":["const LogLevels = {\n silent: Number.NEGATIVE_INFINITY,\n fatal: 0,\n error: 0,\n warn: 1,\n log: 2,\n info: 3,\n success: 3,\n fail: 3,\n ready: 3,\n start: 3,\n box: 3,\n debug: 4,\n trace: 5,\n verbose: Number.POSITIVE_INFINITY\n};\nconst LogTypes = {\n // Silent\n silent: {\n level: -1\n },\n // Level 0\n fatal: {\n level: LogLevels.fatal\n },\n error: {\n level: LogLevels.error\n },\n // Level 1\n warn: {\n level: LogLevels.warn\n },\n // Level 2\n log: {\n level: LogLevels.log\n },\n // Level 3\n info: {\n level: LogLevels.info\n },\n success: {\n level: LogLevels.success\n },\n fail: {\n level: LogLevels.fail\n },\n ready: {\n level: LogLevels.info\n },\n start: {\n level: LogLevels.info\n },\n box: {\n level: LogLevels.info\n },\n // Level 4\n debug: {\n level: LogLevels.debug\n },\n // Level 5\n trace: {\n level: LogLevels.trace\n },\n // Verbose\n verbose: {\n level: LogLevels.verbose\n }\n};\n\nfunction isPlainObject$1(value) {\n if (value === null || typeof value !== \"object\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {\n return false;\n }\n if (Symbol.iterator in value) {\n return false;\n }\n if (Symbol.toStringTag in value) {\n return Object.prototype.toString.call(value) === \"[object Module]\";\n }\n return true;\n}\n\nfunction _defu(baseObject, defaults, namespace = \".\", merger) {\n if (!isPlainObject$1(defaults)) {\n return _defu(baseObject, {}, namespace, merger);\n }\n const object = Object.assign({}, defaults);\n for (const key in baseObject) {\n if (key === \"__proto__\" || key === \"constructor\") {\n continue;\n }\n const value = baseObject[key];\n if (value === null || value === void 0) {\n continue;\n }\n if (merger && merger(object, key, value, namespace)) {\n continue;\n }\n if (Array.isArray(value) && Array.isArray(object[key])) {\n object[key] = [...value, ...object[key]];\n } else if (isPlainObject$1(value) && isPlainObject$1(object[key])) {\n object[key] = _defu(\n value,\n object[key],\n (namespace ? `${namespace}.` : \"\") + key.toString(),\n merger\n );\n } else {\n object[key] = value;\n }\n }\n return object;\n}\nfunction createDefu(merger) {\n return (...arguments_) => (\n // eslint-disable-next-line unicorn/no-array-reduce\n arguments_.reduce((p, c) => _defu(p, c, \"\", merger), {})\n );\n}\nconst defu = createDefu();\n\nfunction isPlainObject(obj) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n}\nfunction isLogObj(arg) {\n if (!isPlainObject(arg)) {\n return false;\n }\n if (!arg.message && !arg.args) {\n return false;\n }\n if (arg.stack) {\n return false;\n }\n return true;\n}\n\nlet paused = false;\nconst queue = [];\nclass Consola {\n options;\n _lastLog;\n _mockFn;\n /**\n * Creates an instance of Consola with specified options or defaults.\n *\n * @param {Partial<ConsolaOptions>} [options={}] - Configuration options for the Consola instance.\n */\n constructor(options = {}) {\n const types = options.types || LogTypes;\n this.options = defu(\n {\n ...options,\n defaults: { ...options.defaults },\n level: _normalizeLogLevel(options.level, types),\n reporters: [...options.reporters || []]\n },\n {\n types: LogTypes,\n throttle: 1e3,\n throttleMin: 5,\n formatOptions: {\n date: true,\n colors: false,\n compact: true\n }\n }\n );\n for (const type in types) {\n const defaults = {\n type,\n ...this.options.defaults,\n ...types[type]\n };\n this[type] = this._wrapLogFn(defaults);\n this[type].raw = this._wrapLogFn(\n defaults,\n true\n );\n }\n if (this.options.mockFn) {\n this.mockTypes();\n }\n this._lastLog = {};\n }\n /**\n * Gets the current log level of the Consola instance.\n *\n * @returns {number} The current log level.\n */\n get level() {\n return this.options.level;\n }\n /**\n * Sets the minimum log level that will be output by the instance.\n *\n * @param {number} level - The new log level to set.\n */\n set level(level) {\n this.options.level = _normalizeLogLevel(\n level,\n this.options.types,\n this.options.level\n );\n }\n /**\n * Displays a prompt to the user and returns the response.\n * Throw an error if `prompt` is not supported by the current configuration.\n *\n * @template T\n * @param {string} message - The message to display in the prompt.\n * @param {T} [opts] - Optional options for the prompt. See {@link PromptOptions}.\n * @returns {promise<T>} A promise that infer with the prompt options. See {@link PromptOptions}.\n */\n prompt(message, opts) {\n if (!this.options.prompt) {\n throw new Error(\"prompt is not supported!\");\n }\n return this.options.prompt(message, opts);\n }\n /**\n * Creates a new instance of Consola, inheriting options from the current instance, with possible overrides.\n *\n * @param {Partial<ConsolaOptions>} options - Optional overrides for the new instance. See {@link ConsolaOptions}.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n create(options) {\n const instance = new Consola({\n ...this.options,\n ...options\n });\n if (this._mockFn) {\n instance.mockTypes(this._mockFn);\n }\n return instance;\n }\n /**\n * Creates a new Consola instance with the specified default log object properties.\n *\n * @param {InputLogObject} defaults - Default properties to include in any log from the new instance. See {@link InputLogObject}.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n withDefaults(defaults) {\n return this.create({\n ...this.options,\n defaults: {\n ...this.options.defaults,\n ...defaults\n }\n });\n }\n /**\n * Creates a new Consola instance with a specified tag, which will be included in every log.\n *\n * @param {string} tag - The tag to include in each log of the new instance.\n * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.\n */\n withTag(tag) {\n return this.withDefaults({\n tag: this.options.defaults.tag ? this.options.defaults.tag + \":\" + tag : tag\n });\n }\n /**\n * Adds a custom reporter to the Consola instance.\n * Reporters will be called for each log message, depending on their implementation and log level.\n *\n * @param {ConsolaReporter} reporter - The reporter to add. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n addReporter(reporter) {\n this.options.reporters.push(reporter);\n return this;\n }\n /**\n * Removes a custom reporter from the Consola instance.\n * If no reporter is specified, all reporters will be removed.\n *\n * @param {ConsolaReporter} reporter - The reporter to remove. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n removeReporter(reporter) {\n if (reporter) {\n const i = this.options.reporters.indexOf(reporter);\n if (i !== -1) {\n return this.options.reporters.splice(i, 1);\n }\n } else {\n this.options.reporters.splice(0);\n }\n return this;\n }\n /**\n * Replaces all reporters of the Consola instance with the specified array of reporters.\n *\n * @param {ConsolaReporter[]} reporters - The new reporters to set. See {@link ConsolaReporter}.\n * @returns {Consola} The current Consola instance.\n */\n setReporters(reporters) {\n this.options.reporters = Array.isArray(reporters) ? reporters : [reporters];\n return this;\n }\n wrapAll() {\n this.wrapConsole();\n this.wrapStd();\n }\n restoreAll() {\n this.restoreConsole();\n this.restoreStd();\n }\n /**\n * Overrides console methods with Consola logging methods for consistent logging.\n */\n wrapConsole() {\n for (const type in this.options.types) {\n if (!console[\"__\" + type]) {\n console[\"__\" + type] = console[type];\n }\n console[type] = this[type].raw;\n }\n }\n /**\n * Restores the original console methods, removing Consola overrides.\n */\n restoreConsole() {\n for (const type in this.options.types) {\n if (console[\"__\" + type]) {\n console[type] = console[\"__\" + type];\n delete console[\"__\" + type];\n }\n }\n }\n /**\n * Overrides standard output and error streams to redirect them through Consola.\n */\n wrapStd() {\n this._wrapStream(this.options.stdout, \"log\");\n this._wrapStream(this.options.stderr, \"log\");\n }\n _wrapStream(stream, type) {\n if (!stream) {\n return;\n }\n if (!stream.__write) {\n stream.__write = stream.write;\n }\n stream.write = (data) => {\n this[type].raw(String(data).trim());\n };\n }\n /**\n * Restores the original standard output and error streams, removing the Consola redirection.\n */\n restoreStd() {\n this._restoreStream(this.options.stdout);\n this._restoreStream(this.options.stderr);\n }\n _restoreStream(stream) {\n if (!stream) {\n return;\n }\n if (stream.__write) {\n stream.write = stream.__write;\n delete stream.__write;\n }\n }\n /**\n * Pauses logging, queues incoming logs until resumed.\n */\n pauseLogs() {\n paused = true;\n }\n /**\n * Resumes logging, processing any queued logs.\n */\n resumeLogs() {\n paused = false;\n const _queue = queue.splice(0);\n for (const item of _queue) {\n item[0]._logFn(item[1], item[2]);\n }\n }\n /**\n * Replaces logging methods with mocks if a mock function is provided.\n *\n * @param {ConsolaOptions[\"mockFn\"]} mockFn - The function to use for mocking logging methods. See {@link ConsolaOptions[\"mockFn\"]}.\n */\n mockTypes(mockFn) {\n const _mockFn = mockFn || this.options.mockFn;\n this._mockFn = _mockFn;\n if (typeof _mockFn !== \"function\") {\n return;\n }\n for (const type in this.options.types) {\n this[type] = _mockFn(type, this.options.types[type]) || this[type];\n this[type].raw = this[type];\n }\n }\n _wrapLogFn(defaults, isRaw) {\n return (...args) => {\n if (paused) {\n queue.push([this, defaults, args, isRaw]);\n return;\n }\n return this._logFn(defaults, args, isRaw);\n };\n }\n _logFn(defaults, args, isRaw) {\n if ((defaults.level || 0) > this.level) {\n return false;\n }\n const logObj = {\n date: /* @__PURE__ */ new Date(),\n args: [],\n ...defaults,\n level: _normalizeLogLevel(defaults.level, this.options.types)\n };\n if (!isRaw && args.length === 1 && isLogObj(args[0])) {\n Object.assign(logObj, args[0]);\n } else {\n logObj.args = [...args];\n }\n if (logObj.message) {\n logObj.args.unshift(logObj.message);\n delete logObj.message;\n }\n if (logObj.additional) {\n if (!Array.isArray(logObj.additional)) {\n logObj.additional = logObj.additional.split(\"\\n\");\n }\n logObj.args.push(\"\\n\" + logObj.additional.join(\"\\n\"));\n delete logObj.additional;\n }\n logObj.type = typeof logObj.type === \"string\" ? logObj.type.toLowerCase() : \"log\";\n logObj.tag = typeof logObj.tag === \"string\" ? logObj.tag : \"\";\n const resolveLog = (newLog = false) => {\n const repeated = (this._lastLog.count || 0) - this.options.throttleMin;\n if (this._lastLog.object && repeated > 0) {\n const args2 = [...this._lastLog.object.args];\n if (repeated > 1) {\n args2.push(`(repeated ${repeated} times)`);\n }\n this._log({ ...this._lastLog.object, args: args2 });\n this._lastLog.count = 1;\n }\n if (newLog) {\n this._lastLog.object = logObj;\n this._log(logObj);\n }\n };\n clearTimeout(this._lastLog.timeout);\n const diffTime = this._lastLog.time && logObj.date ? logObj.date.getTime() - this._lastLog.time.getTime() : 0;\n this._lastLog.time = logObj.date;\n if (diffTime < this.options.throttle) {\n try {\n const serializedLog = JSON.stringify([\n logObj.type,\n logObj.tag,\n logObj.args\n ]);\n const isSameLog = this._lastLog.serialized === serializedLog;\n this._lastLog.serialized = serializedLog;\n if (isSameLog) {\n this._lastLog.count = (this._lastLog.count || 0) + 1;\n if (this._lastLog.count > this.options.throttleMin) {\n this._lastLog.timeout = setTimeout(\n resolveLog,\n this.options.throttle\n );\n return;\n }\n }\n } catch {\n }\n }\n resolveLog(true);\n }\n _log(logObj) {\n for (const reporter of this.options.reporters) {\n reporter.log(logObj, {\n options: this.options\n });\n }\n }\n}\nfunction _normalizeLogLevel(input, types = {}, defaultLevel = 3) {\n if (input === void 0) {\n return defaultLevel;\n }\n if (typeof input === \"number\") {\n return input;\n }\n if (types[input] && types[input].level !== void 0) {\n return types[input].level;\n }\n return defaultLevel;\n}\nConsola.prototype.add = Consola.prototype.addReporter;\nConsola.prototype.remove = Consola.prototype.removeReporter;\nConsola.prototype.clear = Consola.prototype.removeReporter;\nConsola.prototype.withScope = Consola.prototype.withTag;\nConsola.prototype.mock = Consola.prototype.mockTypes;\nConsola.prototype.pause = Consola.prototype.pauseLogs;\nConsola.prototype.resume = Consola.prototype.resumeLogs;\nfunction createConsola(options = {}) {\n return new Consola(options);\n}\n\nexport { Consola, LogLevels, LogTypes, createConsola };\n","import { formatWithOptions } from 'node:util';\nimport { sep } from 'node:path';\n\nfunction parseStack(stack, message) {\n const cwd = process.cwd() + sep;\n const lines = stack.split(\"\\n\").splice(message.split(\"\\n\").length).map((l) => l.trim().replace(\"file://\", \"\").replace(cwd, \"\"));\n return lines;\n}\n\nfunction writeStream(data, stream) {\n const write = stream.__write || stream.write;\n return write.call(stream, data);\n}\n\nconst bracket = (x) => x ? `[${x}]` : \"\";\nclass BasicReporter {\n formatStack(stack, message, opts) {\n const indent = \" \".repeat((opts?.errorLevel || 0) + 1);\n return indent + parseStack(stack, message).join(`\n${indent}`);\n }\n formatError(err, opts) {\n const message = err.message ?? formatWithOptions(opts, err);\n const stack = err.stack ? this.formatStack(err.stack, message, opts) : \"\";\n const level = opts?.errorLevel || 0;\n const causedPrefix = level > 0 ? `${\" \".repeat(level)}[cause]: ` : \"\";\n const causedError = err.cause ? \"\\n\\n\" + this.formatError(err.cause, { ...opts, errorLevel: level + 1 }) : \"\";\n return causedPrefix + message + \"\\n\" + stack + causedError;\n }\n formatArgs(args, opts) {\n const _args = args.map((arg) => {\n if (arg && typeof arg.stack === \"string\") {\n return this.formatError(arg, opts);\n }\n return arg;\n });\n return formatWithOptions(opts, ..._args);\n }\n formatDate(date, opts) {\n return opts.date ? date.toLocaleTimeString() : \"\";\n }\n filterAndJoin(arr) {\n return arr.filter(Boolean).join(\" \");\n }\n formatLogObj(logObj, opts) {\n const message = this.formatArgs(logObj.args, opts);\n if (logObj.type === \"box\") {\n return \"\\n\" + [\n bracket(logObj.tag),\n logObj.title && logObj.title,\n ...message.split(\"\\n\")\n ].filter(Boolean).map((l) => \" > \" + l).join(\"\\n\") + \"\\n\";\n }\n return this.filterAndJoin([\n bracket(logObj.type),\n bracket(logObj.tag),\n message\n ]);\n }\n log(logObj, ctx) {\n const line = this.formatLogObj(logObj, {\n columns: ctx.options.stdout.columns || 0,\n ...ctx.options.formatOptions\n });\n return writeStream(\n line + \"\\n\",\n logObj.level < 2 ? ctx.options.stderr || process.stderr : ctx.options.stdout || process.stdout\n );\n }\n}\n\nexport { BasicReporter as B, parseStack as p };\n","import * as tty from 'node:tty';\n\nconst {\n env = {},\n argv = [],\n platform = \"\"\n} = typeof process === \"undefined\" ? {} : process;\nconst isDisabled = \"NO_COLOR\" in env || argv.includes(\"--no-color\");\nconst isForced = \"FORCE_COLOR\" in env || argv.includes(\"--color\");\nconst isWindows = platform === \"win32\";\nconst isDumbTerminal = env.TERM === \"dumb\";\nconst isCompatibleTerminal = tty && tty.isatty && tty.isatty(1) && env.TERM && !isDumbTerminal;\nconst isCI = \"CI\" in env && (\"GITHUB_ACTIONS\" in env || \"GITLAB_CI\" in env || \"CIRCLECI\" in env);\nconst isColorSupported = !isDisabled && (isForced || isWindows && !isDumbTerminal || isCompatibleTerminal || isCI);\nfunction replaceClose(index, string, close, replace, head = string.slice(0, Math.max(0, index)) + replace, tail = string.slice(Math.max(0, index + close.length)), next = tail.indexOf(close)) {\n return head + (next < 0 ? tail : replaceClose(next, tail, close, replace));\n}\nfunction clearBleed(index, string, open, close, replace) {\n return index < 0 ? open + string + close : open + replaceClose(index, string, close, replace) + close;\n}\nfunction filterEmpty(open, close, replace = open, at = open.length + 1) {\n return (string) => string || !(string === \"\" || string === void 0) ? clearBleed(\n (\"\" + string).indexOf(close, at),\n string,\n open,\n close,\n replace\n ) : \"\";\n}\nfunction init(open, close, replace) {\n return filterEmpty(`\\x1B[${open}m`, `\\x1B[${close}m`, replace);\n}\nconst colorDefs = {\n reset: init(0, 0),\n bold: init(1, 22, \"\\x1B[22m\\x1B[1m\"),\n dim: init(2, 22, \"\\x1B[22m\\x1B[2m\"),\n italic: init(3, 23),\n underline: init(4, 24),\n inverse: init(7, 27),\n hidden: init(8, 28),\n strikethrough: init(9, 29),\n black: init(30, 39),\n red: init(31, 39),\n green: init(32, 39),\n yellow: init(33, 39),\n blue: init(34, 39),\n magenta: init(35, 39),\n cyan: init(36, 39),\n white: init(37, 39),\n gray: init(90, 39),\n bgBlack: init(40, 49),\n bgRed: init(41, 49),\n bgGreen: init(42, 49),\n bgYellow: init(43, 49),\n bgBlue: init(44, 49),\n bgMagenta: init(45, 49),\n bgCyan: init(46, 49),\n bgWhite: init(47, 49),\n blackBright: init(90, 39),\n redBright: init(91, 39),\n greenBright: init(92, 39),\n yellowBright: init(93, 39),\n blueBright: init(94, 39),\n magentaBright: init(95, 39),\n cyanBright: init(96, 39),\n whiteBright: init(97, 39),\n bgBlackBright: init(100, 49),\n bgRedBright: init(101, 49),\n bgGreenBright: init(102, 49),\n bgYellowBright: init(103, 49),\n bgBlueBright: init(104, 49),\n bgMagentaBright: init(105, 49),\n bgCyanBright: init(106, 49),\n bgWhiteBright: init(107, 49)\n};\nfunction createColors(useColor = isColorSupported) {\n return useColor ? colorDefs : Object.fromEntries(Object.keys(colorDefs).map((key) => [key, String]));\n}\nconst colors = createColors();\nfunction getColor(color, fallback = \"reset\") {\n return colors[color] || colors[fallback];\n}\nfunction colorize(color, text) {\n return getColor(color)(text);\n}\n\nconst ansiRegex = [\n String.raw`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)`,\n String.raw`(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))`\n].join(\"|\");\nfunction stripAnsi(text) {\n return text.replace(new RegExp(ansiRegex, \"g\"), \"\");\n}\nfunction centerAlign(str, len, space = \" \") {\n const free = len - str.length;\n if (free <= 0) {\n return str;\n }\n const freeLeft = Math.floor(free / 2);\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < freeLeft || i >= freeLeft + str.length ? space : str[i - freeLeft];\n }\n return _str;\n}\nfunction rightAlign(str, len, space = \" \") {\n const free = len - str.length;\n if (free <= 0) {\n return str;\n }\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < free ? space : str[i - free];\n }\n return _str;\n}\nfunction leftAlign(str, len, space = \" \") {\n let _str = \"\";\n for (let i = 0; i < len; i++) {\n _str += i < str.length ? str[i] : space;\n }\n return _str;\n}\nfunction align(alignment, str, len, space = \" \") {\n switch (alignment) {\n case \"left\": {\n return leftAlign(str, len, space);\n }\n case \"right\": {\n return rightAlign(str, len, space);\n }\n case \"center\": {\n return centerAlign(str, len, space);\n }\n default: {\n return str;\n }\n }\n}\n\nconst boxStylePresets = {\n solid: {\n tl: \"\\u250C\",\n tr: \"\\u2510\",\n bl: \"\\u2514\",\n br: \"\\u2518\",\n h: \"\\u2500\",\n v: \"\\u2502\"\n },\n double: {\n tl: \"\\u2554\",\n tr: \"\\u2557\",\n bl: \"\\u255A\",\n br: \"\\u255D\",\n h: \"\\u2550\",\n v: \"\\u2551\"\n },\n doubleSingle: {\n tl: \"\\u2553\",\n tr: \"\\u2556\",\n bl: \"\\u2559\",\n br: \"\\u255C\",\n h: \"\\u2500\",\n v: \"\\u2551\"\n },\n doubleSingleRounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2500\",\n v: \"\\u2551\"\n },\n singleThick: {\n tl: \"\\u250F\",\n tr: \"\\u2513\",\n bl: \"\\u2517\",\n br: \"\\u251B\",\n h: \"\\u2501\",\n v: \"\\u2503\"\n },\n singleDouble: {\n tl: \"\\u2552\",\n tr: \"\\u2555\",\n bl: \"\\u2558\",\n br: \"\\u255B\",\n h: \"\\u2550\",\n v: \"\\u2502\"\n },\n singleDoubleRounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2550\",\n v: \"\\u2502\"\n },\n rounded: {\n tl: \"\\u256D\",\n tr: \"\\u256E\",\n bl: \"\\u2570\",\n br: \"\\u256F\",\n h: \"\\u2500\",\n v: \"\\u2502\"\n }\n};\nconst defaultStyle = {\n borderColor: \"white\",\n borderStyle: \"rounded\",\n valign: \"center\",\n padding: 2,\n marginLeft: 1,\n marginTop: 1,\n marginBottom: 1\n};\nfunction box(text, _opts = {}) {\n const opts = {\n ..._opts,\n style: {\n ...defaultStyle,\n ..._opts.style\n }\n };\n const textLines = text.split(\"\\n\");\n const boxLines = [];\n const _color = getColor(opts.style.borderColor);\n const borderStyle = {\n ...typeof opts.style.borderStyle === \"string\" ? boxStylePresets[opts.style.borderStyle] || boxStylePresets.solid : opts.style.borderStyle\n };\n if (_color) {\n for (const key in borderStyle) {\n borderStyle[key] = _color(\n borderStyle[key]\n );\n }\n }\n const paddingOffset = opts.style.padding % 2 === 0 ? opts.style.padding : opts.style.padding + 1;\n const height = textLines.length + paddingOffset;\n const width = Math.max(\n ...textLines.map((line) => stripAnsi(line).length),\n opts.title ? stripAnsi(opts.title).length : 0\n ) + paddingOffset;\n const widthOffset = width + paddingOffset;\n const leftSpace = opts.style.marginLeft > 0 ? \" \".repeat(opts.style.marginLeft) : \"\";\n if (opts.style.marginTop > 0) {\n boxLines.push(\"\".repeat(opts.style.marginTop));\n }\n if (opts.title) {\n const title = _color ? _color(opts.title) : opts.title;\n const left = borderStyle.h.repeat(\n Math.floor((width - stripAnsi(opts.title).length) / 2)\n );\n const right = borderStyle.h.repeat(\n width - stripAnsi(opts.title).length - stripAnsi(left).length + paddingOffset\n );\n boxLines.push(\n `${leftSpace}${borderStyle.tl}${left}${title}${right}${borderStyle.tr}`\n );\n } else {\n boxLines.push(\n `${leftSpace}${borderStyle.tl}${borderStyle.h.repeat(widthOffset)}${borderStyle.tr}`\n );\n }\n const valignOffset = opts.style.valign === \"center\" ? Math.floor((height - textLines.length) / 2) : opts.style.valign === \"top\" ? height - textLines.length - paddingOffset : height - textLines.length;\n for (let i = 0; i < height; i++) {\n if (i < valignOffset || i >= valignOffset + textLines.length) {\n boxLines.push(\n `${leftSpace}${borderStyle.v}${\" \".repeat(widthOffset)}${borderStyle.v}`\n );\n } else {\n const line = textLines[i - valignOffset];\n const left = \" \".repeat(paddingOffset);\n const right = \" \".repeat(width - stripAnsi(line).length);\n boxLines.push(\n `${leftSpace}${borderStyle.v}${left}${line}${right}${borderStyle.v}`\n );\n }\n }\n boxLines.push(\n `${leftSpace}${borderStyle.bl}${borderStyle.h.repeat(widthOffset)}${borderStyle.br}`\n );\n if (opts.style.marginBottom > 0) {\n boxLines.push(\"\".repeat(opts.style.marginBottom));\n }\n return boxLines.join(\"\\n\");\n}\n\nexport { centerAlign as a, align as b, colorize as c, box as d, colors as e, getColor as g, leftAlign as l, rightAlign as r, stripAnsi as s };\n","import { createConsola as createConsola$1, LogLevels } from './core.mjs';\nexport { Consola, LogTypes } from './core.mjs';\nimport { B as BasicReporter, p as parseStack } from './shared/consola.DRwqZj3T.mjs';\nimport g$1 from 'node:process';\nimport { e as colors, d as box, s as stripAnsi$1 } from './shared/consola.DXBYu-KD.mjs';\nimport 'node:util';\nimport 'node:path';\nimport 'node:tty';\n\nconst r=Object.create(null),i=e=>globalThis.process?.env||import.meta.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?r:globalThis),o=new Proxy(r,{get(e,s){return i()[s]??r[s]},has(e,s){const E=i();return s in E||s in r},set(e,s,E){const B=i(true);return B[s]=E,true},deleteProperty(e,s){if(!s)return false;const E=i(true);return delete E[s],true},ownKeys(){const e=i(true);return Object.keys(e)}}),t=typeof process<\"u\"&&process.env&&process.env.NODE_ENV||\"\",f=[[\"APPVEYOR\"],[\"AWS_AMPLIFY\",\"AWS_APP_ID\",{ci:true}],[\"AZURE_PIPELINES\",\"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI\"],[\"AZURE_STATIC\",\"INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN\"],[\"APPCIRCLE\",\"AC_APPCIRCLE\"],[\"BAMBOO\",\"bamboo_planKey\"],[\"BITBUCKET\",\"BITBUCKET_COMMIT\"],[\"BITRISE\",\"BITRISE_IO\"],[\"BUDDY\",\"BUDDY_WORKSPACE_ID\"],[\"BUILDKITE\"],[\"CIRCLE\",\"CIRCLECI\"],[\"CIRRUS\",\"CIRRUS_CI\"],[\"CLOUDFLARE_PAGES\",\"CF_PAGES\",{ci:true}],[\"CODEBUILD\",\"CODEBUILD_BUILD_ARN\"],[\"CODEFRESH\",\"CF_BUILD_ID\"],[\"DRONE\"],[\"DRONE\",\"DRONE_BUILD_EVENT\"],[\"DSARI\"],[\"GITHUB_ACTIONS\"],[\"GITLAB\",\"GITLAB_CI\"],[\"GITLAB\",\"CI_MERGE_REQUEST_ID\"],[\"GOCD\",\"GO_PIPELINE_LABEL\"],[\"LAYERCI\"],[\"HUDSON\",\"HUDSON_URL\"],[\"JENKINS\",\"JENKINS_URL\"],[\"MAGNUM\"],[\"NETLIFY\"],[\"NETLIFY\",\"NETLIFY_LOCAL\",{ci:false}],[\"NEVERCODE\"],[\"RENDER\"],[\"SAIL\",\"SAILCI\"],[\"SEMAPHORE\"],[\"SCREWDRIVER\"],[\"SHIPPABLE\"],[\"SOLANO\",\"TDDIUM\"],[\"STRIDER\"],[\"TEAMCITY\",\"TEAMCITY_VERSION\"],[\"TRAVIS\"],[\"VERCEL\",\"NOW_BUILDER\"],[\"VERCEL\",\"VERCEL\",{ci:false}],[\"VERCEL\",\"VERCEL_ENV\",{ci:false}],[\"APPCENTER\",\"APPCENTER_BUILD_ID\"],[\"CODESANDBOX\",\"CODESANDBOX_SSE\",{ci:false}],[\"CODESANDBOX\",\"CODESANDBOX_HOST\",{ci:false}],[\"STACKBLITZ\"],[\"STORMKIT\"],[\"CLEAVR\"],[\"ZEABUR\"],[\"CODESPHERE\",\"CODESPHERE_APP_ID\",{ci:true}],[\"RAILWAY\",\"RAILWAY_PROJECT_ID\"],[\"RAILWAY\",\"RAILWAY_SERVICE_ID\"],[\"DENO-DEPLOY\",\"DENO_DEPLOYMENT_ID\"],[\"FIREBASE_APP_HOSTING\",\"FIREBASE_APP_HOSTING\",{ci:true}]];function b(){if(globalThis.process?.env)for(const e of f){const s=e[1]||e[0];if(globalThis.process?.env[s])return {name:e[0].toLowerCase(),...e[2]}}return globalThis.process?.env?.SHELL===\"/bin/jsh\"&&globalThis.process?.versions?.webcontainer?{name:\"stackblitz\",ci:false}:{name:\"\",ci:false}}const l=b();l.name;function n(e){return e?e!==\"false\":false}const I=globalThis.process?.platform||\"\",T=n(o.CI)||l.ci!==false,a=n(globalThis.process?.stdout&&globalThis.process?.stdout.isTTY),g=n(o.DEBUG),R=t===\"test\"||n(o.TEST);n(o.MINIMAL)||T||R||!a;const A=/^win/i.test(I);!n(o.NO_COLOR)&&(n(o.FORCE_COLOR)||(a||A)&&o.TERM!==\"dumb\"||T);const C=(globalThis.process?.versions?.node||\"\").replace(/^v/,\"\")||null;Number(C?.split(\".\")[0])||null;const y=globalThis.process||Object.create(null),_={versions:{}};new Proxy(y,{get(e,s){if(s===\"env\")return o;if(s in e)return e[s];if(s in _)return _[s]}});const c=globalThis.process?.release?.name===\"node\",O=!!globalThis.Bun||!!globalThis.process?.versions?.bun,D=!!globalThis.Deno,L=!!globalThis.fastly,S=!!globalThis.Netlify,u=!!globalThis.EdgeRuntime,N=globalThis.navigator?.userAgent===\"Cloudflare-Workers\",F=[[S,\"netlify\"],[u,\"edge-light\"],[N,\"workerd\"],[L,\"fastly\"],[D,\"deno\"],[O,\"bun\"],[c,\"node\"]];function G(){const e=F.find(s=>s[0]);if(e)return {name:e[1]}}const P=G();P?.name||\"\";\n\nfunction ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n\nconst regex = ansiRegex();\n\nfunction stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n\n// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2630 && x <= 0x2637\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x >= 0x268A && x <= 0x268F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E5\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x === 0x16FF0\n\t\t|| x === 0x16FF1\n\t\t|| x >= 0x17000 && x <= 0x187F7\n\t\t|| x >= 0x18800 && x <= 0x18CD5\n\t\t|| x >= 0x18CFF && x <= 0x18D08\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x >= 0x1D300 && x <= 0x1D356\n\t\t|| x >= 0x1D360 && x <= 0x1D376\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D7\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA89\n\t\t|| x >= 0x1FA8F && x <= 0x1FAC6\n\t\t|| x >= 0x1FACE && x <= 0x1FADC\n\t\t|| x >= 0x1FADF && x <= 0x1FAE9\n\t\t|| x >= 0x1FAF0 && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nfunction eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\nconst emojiRegex = () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE89\\uDE8F-\\uDEC2\\uDEC6\\uDECE-\\uDEDC\\uDEDF-\\uDEE9]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n\nconst segmenter = globalThis.Intl?.Segmenter ? new Intl.Segmenter() : { segment: (str) => str.split('') };\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nfunction stringWidth$1(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore zero-width characters\n\t\tif (\n\t\t\t(codePoint >= 0x20_0B && codePoint <= 0x20_0F) // Zero-width space, non-joiner, joiner, left-to-right mark, right-to-left mark\n\t\t\t|| codePoint === 0xFE_FF // Zero-width no-break space\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (\n\t\t\t(codePoint >= 0x3_00 && codePoint <= 0x3_6F) // Combining diacritical marks\n\t\t\t|| (codePoint >= 0x1A_B0 && codePoint <= 0x1A_FF) // Combining diacritical marks extended\n\t\t\t|| (codePoint >= 0x1D_C0 && codePoint <= 0x1D_FF) // Combining diacritical marks supplement\n\t\t\t|| (codePoint >= 0x20_D0 && codePoint <= 0x20_FF) // Combining diacritical marks for symbols\n\t\t\t|| (codePoint >= 0xFE_20 && codePoint <= 0xFE_2F) // Combining half marks\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore surrogate pairs\n\t\tif (codePoint >= 0xD8_00 && codePoint <= 0xDF_FF) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore variation selectors\n\t\tif (codePoint >= 0xFE_00 && codePoint <= 0xFE_0F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// This covers some of the above cases, but we still keep them for performance reasons.\n\t\tif (defaultIgnorableCodePointRegex.test(character)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: Use `/\\p{RGI_Emoji}/v` when targeting Node.js 20.\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n\nfunction isUnicodeSupported() {\n\tconst {env} = g$1;\n\tconst {TERM, TERM_PROGRAM} = env;\n\n\tif (g$1.platform !== 'win32') {\n\t\treturn TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| TERM_PROGRAM === 'vscode'\n\t\t|| TERM === 'xterm-256color'\n\t\t|| TERM === 'alacritty'\n\t\t|| TERM === 'rxvt-unicode'\n\t\t|| TERM === 'rxvt-unicode-256color'\n\t\t|| env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n\nconst TYPE_COLOR_MAP = {\n info: \"cyan\",\n fail: \"red\",\n success: \"green\",\n ready: \"green\",\n start: \"magenta\"\n};\nconst LEVEL_COLOR_MAP = {\n 0: \"red\",\n 1: \"yellow\"\n};\nconst unicode = isUnicodeSupported();\nconst s = (c, fallback) => unicode ? c : fallback;\nconst TYPE_ICONS = {\n error: s(\"\\u2716\", \"\\xD7\"),\n fatal: s(\"\\u2716\", \"\\xD7\"),\n ready: s(\"\\u2714\", \"\\u221A\"),\n warn: s(\"\\u26A0\", \"\\u203C\"),\n info: s(\"\\u2139\", \"i\"),\n success: s(\"\\u2714\", \"\\u221A\"),\n debug: s(\"\\u2699\", \"D\"),\n trace: s(\"\\u2192\", \"\\u2192\"),\n fail: s(\"\\u2716\", \"\\xD7\"),\n start: s(\"\\u25D0\", \"o\"),\n log: \"\"\n};\nfunction stringWidth(str) {\n const hasICU = typeof Intl === \"object\";\n if (!hasICU || !Intl.Segmenter) {\n return stripAnsi$1(str).length;\n }\n return stringWidth$1(str);\n}\nclass FancyReporter extends BasicReporter {\n formatStack(stack, message, opts) {\n const indent = \" \".repeat((opts?.errorLevel || 0) + 1);\n return `\n${indent}` + parseStack(stack, message).map(\n (line) => \" \" + line.replace(/^at +/, (m) => colors.gray(m)).replace(/\\((.+)\\)/, (_, m) => `(${colors.cyan(m)})`)\n ).join(`\n${indent}`);\n }\n formatType(logObj, isBadge, opts) {\n const typeColor = TYPE_COLOR_MAP[logObj.type] || LEVEL_COLOR_MAP[logObj.level] || \"gray\";\n if (isBadge) {\n return getBgColor(typeColor)(\n colors.black(` ${logObj.type.toUpperCase()} `)\n );\n }\n const _type = typeof TYPE_ICONS[logObj.type] === \"string\" ? TYPE_ICONS[logObj.type] : logObj.icon || logObj.type;\n return _type ? getColor(typeColor)(_type) : \"\";\n }\n formatLogObj(logObj, opts) {\n const [message, ...additional] = this.formatArgs(logObj.args, opts).split(\n \"\\n\"\n );\n if (logObj.type === \"box\") {\n return box(\n characterFormat(\n message + (additional.length > 0 ? \"\\n\" + additional.join(\"\\n\") : \"\")\n ),\n {\n title: logObj.title ? characterFormat(logObj.title) : void 0,\n style: logObj.style\n }\n );\n }\n const date = this.formatDate(logObj.date, opts);\n const coloredDate = date && colors.gray(date);\n const isBadge = logObj.badge ?? logObj.level < 2;\n const type = this.formatType(logObj, isBadge, opts);\n const tag = logObj.tag ? colors.gray(logObj.tag) : \"\";\n let line;\n const left = this.filterAndJoin([type, characterFormat(message)]);\n const right = this.filterAndJoin(opts.columns ? [tag, coloredDate] : [tag]);\n const space = (opts.columns || 0) - stringWidth(left) - stringWidth(right) - 2;\n line = space > 0 && (opts.columns || 0) >= 80 ? left + \" \".repeat(space) + right : (right ? `${colors.gray(`[${right}]`)} ` : \"\") + left;\n line += characterFormat(\n additional.length > 0 ? \"\\n\" + additional.join(\"\\n\") : \"\"\n );\n if (logObj.type === \"trace\") {\n const _err = new Error(\"Trace: \" + logObj.message);\n line += this.formatStack(_err.stack || \"\", _err.message);\n }\n return isBadge ? \"\\n\" + line + \"\\n\" : line;\n }\n}\nfunction characterFormat(str) {\n return str.replace(/`([^`]+)`/gm, (_, m) => colors.cyan(m)).replace(/\\s+_([^_]+)_\\s+/gm, (_, m) => ` ${colors.underline(m)} `);\n}\nfunction getColor(color = \"white\") {\n return colors[color] || colors.white;\n}\nfunction getBgColor(color = \"bgWhite\") {\n return colors[`bg${color[0].toUpperCase()}${color.slice(1)}`] || colors.bgWhite;\n}\n\nfunction createConsola(options = {}) {\n let level = _getDefaultLogLevel();\n if (process.env.CONSOLA_LEVEL) {\n level = Number.parseInt(process.env.CONSOLA_LEVEL) ?? level;\n }\n const consola2 = createConsola$1({\n level,\n defaults: { level },\n stdout: process.stdout,\n stderr: process.stderr,\n prompt: (...args) => import('./chunks/prompt.mjs').then((m) => m.prompt(...args)),\n reporters: options.reporters || [\n options.fancy ?? !(T || R) ? new FancyReporter() : new BasicReporter()\n ],\n ...options\n });\n return consola2;\n}\nfunction _getDefaultLogLevel() {\n if (g) {\n return LogLevels.debug;\n }\n if (R) {\n return LogLevels.warn;\n }\n return LogLevels.info;\n}\nconst consola = createConsola();\n\nexport { LogLevels, consola, createConsola, consola as default };\n","import { EventEmitter as NodeEventEmitter } from 'node:events'\n\nexport class EventEmitter<TEvents extends Record<string, any>> {\n constructor() {\n this.#emitter.setMaxListeners(100)\n }\n #emitter = new NodeEventEmitter()\n\n emit<TEventName extends keyof TEvents & string>(eventName: TEventName, ...eventArg: TEvents[TEventName]): void {\n this.#emitter.emit(eventName, ...(eventArg as any))\n }\n\n on<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void {\n this.#emitter.on(eventName, handler as any)\n }\n\n off<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void {\n this.#emitter.off(eventName, handler as any)\n }\n removeAll(): void {\n this.#emitter.removeAllListeners()\n }\n}\n","import { resolve } from 'node:path'\nimport type { ConsolaInstance, LogLevel } from 'consola'\nimport { createConsola } from 'consola'\nimport pc from 'picocolors'\nimport seedrandom from 'seedrandom'\nimport { write } from './fs/write.ts'\nimport { EventEmitter } from './utils/EventEmitter.ts'\n\ntype DebugEvent = { date: Date; logs: string[]; fileName?: string }\n\ntype Events = {\n start: [message: string]\n success: [message: string]\n error: [message: string, cause: Error]\n warning: [message: string]\n debug: [DebugEvent]\n info: [message: string]\n progress_start: [{ id: string; size: number; message?: string }]\n progressed: [{ id: string; message?: string }]\n progress_stop: [{ id: string }]\n}\n\nexport const LogMapper = {\n silent: Number.NEGATIVE_INFINITY,\n info: 3,\n debug: 4,\n} as const\n\nexport type Logger = {\n /**\n * Optional config name to show in CLI output\n */\n name?: string\n logLevel: LogLevel\n consola?: ConsolaInstance\n on: EventEmitter<Events>['on']\n emit: EventEmitter<Events>['emit']\n writeLogs: () => Promise<string[]>\n}\n\ntype Props = {\n name?: string\n logLevel?: LogLevel\n consola?: ConsolaInstance\n}\n\nexport function createLogger({ logLevel = 3, name, consola: _consola }: Props = {}): Logger {\n const events = new EventEmitter<Events>()\n const startDate = Date.now()\n const cachedLogs = new Set<DebugEvent>()\n\n const consola =\n _consola ||\n createConsola({\n level: logLevel,\n formatOptions: {\n colors: true,\n date: true,\n columns: 80,\n compact: logLevel !== LogMapper.debug,\n },\n }).withTag(name ? randomCliColour(name) : '')\n\n consola?.wrapConsole()\n\n events.on('start', (message) => {\n consola.start(message)\n })\n\n events.on('success', (message) => {\n consola.success(message)\n })\n\n events.on('warning', (message) => {\n consola.warn(pc.yellow(message))\n })\n\n events.on('info', (message) => {\n consola.info(pc.yellow(message))\n })\n\n events.on('debug', (message) => {\n if (message.logs.join('\\n\\n').length <= 100 && logLevel === LogMapper.debug) {\n console.log(message.logs.join('\\n\\n'))\n }\n\n cachedLogs.add(message)\n })\n\n events.on('error', (message, cause) => {\n const error = new Error(message || 'Something went wrong')\n error.cause = cause\n\n throw error\n })\n\n if (consola) {\n consola.level = logLevel\n }\n\n const logger: Logger = {\n name,\n logLevel,\n consola,\n on(...args) {\n return events.on(...args)\n },\n emit(...args) {\n return events.emit(...args)\n },\n async writeLogs() {\n const files: Record<string, string[]> = {}\n\n cachedLogs.forEach((log) => {\n const fileName = resolve(process.cwd(), '.kubb', log.fileName || `kubb-${startDate}.log`)\n\n if (!files[fileName]) {\n files[fileName] = []\n }\n\n files[fileName] = [...files[fileName], `[${log.date.toLocaleString()}]: ${log.logs.join('\\n\\n')}`]\n })\n await Promise.all(\n Object.entries(files).map(async ([fileName, logs]) => {\n return write(fileName, logs.join('\\n'))\n }),\n )\n\n return Object.keys(files)\n },\n }\n\n return logger\n}\n\nexport function randomColour(text?: string): 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white' | 'gray' {\n if (!text) {\n return 'white'\n }\n\n const defaultColours = ['black', 'red', 'green', 'yellow', 'blue', 'red', 'green', 'magenta', 'cyan', 'gray'] as const\n\n const random = seedrandom(text)\n const colour = defaultColours.at(Math.floor(random() * defaultColours.length)) || 'white'\n\n return colour\n}\n\nexport function randomCliColour(text?: string): string {\n if (!text) {\n return ''\n }\n\n const colour = randomColour(text)\n\n const fn = pc[colour]\n return fn ? fn(text) : text\n}\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM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"}
|