@kubb/core 3.0.0-alpha.1 → 3.0.0-alpha.10
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-EVJig-LT.d.ts → FileManager-BbUCeEyv.d.cts} +108 -94
- package/dist/{FileManager-DSLZ6ps7.d.cts → FileManager-CpuFz6eH.d.ts} +108 -94
- package/dist/chunk-2EU7DMPM.js +97 -0
- package/dist/chunk-2EU7DMPM.js.map +1 -0
- package/dist/chunk-5E2I6KH4.cjs +1071 -0
- package/dist/chunk-5E2I6KH4.cjs.map +1 -0
- package/dist/{chunk-67C6RBGQ.cjs → chunk-A6PCLWEY.cjs} +5 -5
- package/dist/{chunk-67C6RBGQ.cjs.map → chunk-A6PCLWEY.cjs.map} +1 -1
- package/dist/chunk-DID47EQD.cjs +102 -0
- package/dist/chunk-DID47EQD.cjs.map +1 -0
- package/dist/chunk-HBQM723K.js +1063 -0
- package/dist/chunk-HBQM723K.js.map +1 -0
- package/dist/chunk-L6YLVCKM.js +929 -0
- package/dist/chunk-L6YLVCKM.js.map +1 -0
- package/dist/{chunk-LM2YQC3T.cjs → chunk-M7NLNCSM.cjs} +71 -38
- package/dist/chunk-M7NLNCSM.cjs.map +1 -0
- package/dist/{chunk-3OXCZ5DJ.js → chunk-MU3CBCQT.js} +59 -35
- package/dist/chunk-MU3CBCQT.js.map +1 -0
- package/dist/chunk-NB4JMN75.cjs +1548 -0
- package/dist/chunk-NB4JMN75.cjs.map +1 -0
- package/dist/{chunk-XCPFG6DO.cjs → chunk-SEH6NUCX.cjs} +4 -28
- package/dist/chunk-SEH6NUCX.cjs.map +1 -0
- package/dist/index.cjs +496 -552
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -19
- package/dist/index.d.ts +6 -19
- package/dist/index.js +438 -492
- package/dist/index.js.map +1 -1
- package/dist/{logger-DChjnJMn.d.cts → logger-DvbHXjIO.d.cts} +29 -19
- package/dist/{logger-DChjnJMn.d.ts → logger-DvbHXjIO.d.ts} +29 -19
- package/dist/logger.cjs +4 -5
- package/dist/logger.cjs.map +1 -1
- package/dist/logger.d.cts +1 -2
- package/dist/logger.d.ts +1 -2
- package/dist/logger.js +2 -4
- package/dist/mocks.cjs +25 -19
- package/dist/mocks.cjs.map +1 -1
- package/dist/mocks.d.cts +6 -9
- package/dist/mocks.d.ts +6 -9
- package/dist/mocks.js +21 -16
- package/dist/mocks.js.map +1 -1
- package/dist/prompt-DVQN7JTN.cjs +760 -0
- package/dist/prompt-DVQN7JTN.cjs.map +1 -0
- package/dist/prompt-WQQUN22Z.js +754 -0
- package/dist/prompt-WQQUN22Z.js.map +1 -0
- package/dist/transformers.cjs +198 -42
- package/dist/transformers.cjs.map +1 -1
- package/dist/transformers.d.cts +1 -3
- package/dist/transformers.d.ts +1 -3
- package/dist/transformers.js +155 -14
- package/dist/transformers.js.map +1 -1
- package/dist/utils.cjs +12 -4
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +31 -3
- package/dist/utils.d.ts +31 -3
- package/dist/utils.js +11 -4
- package/package.json +10 -10
- package/src/BarrelManager.ts +93 -107
- package/src/{Generator.ts → BaseGenerator.ts} +1 -1
- package/src/FileManager.ts +198 -297
- package/src/PackageManager.ts +1 -1
- package/src/PluginManager.ts +152 -101
- package/src/__snapshots__/barrel.json +91 -0
- package/src/__snapshots__/grouped.json +114 -0
- package/src/__snapshots__/ordered.json +62 -0
- package/src/build.ts +86 -171
- package/src/errors.ts +0 -11
- package/src/index.ts +1 -2
- package/src/logger.ts +76 -34
- package/src/plugin.ts +3 -3
- package/src/transformers/index.ts +2 -3
- package/src/transformers/trim.ts +0 -4
- package/src/types.ts +35 -35
- package/src/utils/TreeNode.ts +132 -50
- package/src/utils/executeStrategies.ts +1 -1
- package/src/utils/index.ts +2 -1
- package/src/utils/parser.ts +157 -0
- package/dist/chunk-3OXCZ5DJ.js.map +0 -1
- package/dist/chunk-5JZNFPUP.js +0 -309
- package/dist/chunk-5JZNFPUP.js.map +0 -1
- package/dist/chunk-ADC5UNZ5.cjs +0 -1227
- package/dist/chunk-ADC5UNZ5.cjs.map +0 -1
- package/dist/chunk-HMLY7DHA.js +0 -16
- package/dist/chunk-HMLY7DHA.js.map +0 -1
- package/dist/chunk-JKZG2IJR.js +0 -283
- package/dist/chunk-JKZG2IJR.js.map +0 -1
- package/dist/chunk-LM2YQC3T.cjs.map +0 -1
- package/dist/chunk-PZT4CTBV.cjs +0 -299
- package/dist/chunk-PZT4CTBV.cjs.map +0 -1
- package/dist/chunk-SA2GZKXS.js +0 -596
- package/dist/chunk-SA2GZKXS.js.map +0 -1
- package/dist/chunk-XCPFG6DO.cjs.map +0 -1
- package/dist/chunk-YTSNYMHW.cjs +0 -320
- package/dist/chunk-YTSNYMHW.cjs.map +0 -1
- package/schema.json +0 -86
- package/src/utils/getParser.ts +0 -17
package/dist/transformers.js
CHANGED
|
@@ -1,29 +1,171 @@
|
|
|
1
1
|
import {
|
|
2
|
+
transformReservedWord
|
|
3
|
+
} from "./chunk-2EU7DMPM.js";
|
|
4
|
+
import {
|
|
5
|
+
camelCase,
|
|
6
|
+
orderBy,
|
|
7
|
+
pascalCase,
|
|
8
|
+
pathCase
|
|
9
|
+
} from "./chunk-4X5FFJPJ.js";
|
|
10
|
+
|
|
11
|
+
// src/transformers/index.ts
|
|
12
|
+
import { merge } from "remeda";
|
|
13
|
+
|
|
14
|
+
// src/transformers/combineCodes.ts
|
|
15
|
+
function combineCodes(codes) {
|
|
16
|
+
return codes.join("\n");
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// src/transformers/createJSDocBlockText.ts
|
|
20
|
+
function createJSDocBlockText({ comments }) {
|
|
21
|
+
const filteredComments = comments.filter(Boolean);
|
|
22
|
+
if (!filteredComments.length) {
|
|
23
|
+
return "";
|
|
24
|
+
}
|
|
25
|
+
return `/**
|
|
26
|
+
* ${filteredComments.join("\n * ")}
|
|
27
|
+
*/`;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// src/transformers/escape.ts
|
|
31
|
+
function escape(text) {
|
|
32
|
+
return text ? text.replaceAll("`", "\\`") : "";
|
|
33
|
+
}
|
|
34
|
+
function jsStringEscape(input) {
|
|
35
|
+
return `${input}`.replace(/["'\\\n\r\u2028\u2029]/g, (character) => {
|
|
36
|
+
switch (character) {
|
|
37
|
+
case '"':
|
|
38
|
+
case "'":
|
|
39
|
+
case "\\":
|
|
40
|
+
return `\\${character}`;
|
|
41
|
+
case "\n":
|
|
42
|
+
return "\\n";
|
|
43
|
+
case "\r":
|
|
44
|
+
return "\\r";
|
|
45
|
+
case "\u2028":
|
|
46
|
+
return "\\u2028";
|
|
47
|
+
case "\u2029":
|
|
48
|
+
return "\\u2029";
|
|
49
|
+
default:
|
|
50
|
+
return "";
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// src/transformers/indent.ts
|
|
56
|
+
function createIndent(size) {
|
|
57
|
+
return Array.from({ length: size + 1 }).join(" ");
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// src/transformers/nameSorter.ts
|
|
61
|
+
function nameSorter(a, b) {
|
|
62
|
+
if (a.name < b.name) {
|
|
63
|
+
return -1;
|
|
64
|
+
}
|
|
65
|
+
if (a.name > b.name) {
|
|
66
|
+
return 1;
|
|
67
|
+
}
|
|
68
|
+
return 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// src/transformers/searchAndReplace.ts
|
|
72
|
+
function searchAndReplace(options) {
|
|
73
|
+
const { text, replaceBy, prefix = "", key } = options;
|
|
74
|
+
const searchValues = options.searchValues?.(prefix, key) || [
|
|
75
|
+
`${prefix}["${key}"]`,
|
|
76
|
+
`${prefix}['${key}']`,
|
|
77
|
+
`${prefix}[\`${key}\`]`,
|
|
78
|
+
`${prefix}"${key}"`,
|
|
79
|
+
`${prefix}'${key}'`,
|
|
80
|
+
`${prefix}\`${key}\``,
|
|
81
|
+
new RegExp(`${prefix}${key}`, "g")
|
|
82
|
+
];
|
|
83
|
+
return searchValues.reduce((prev, searchValue) => {
|
|
84
|
+
return prev.toString().replaceAll(searchValue, replaceBy);
|
|
85
|
+
}, text);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// src/transformers/trim.ts
|
|
89
|
+
function trim(text) {
|
|
90
|
+
return text.replaceAll(/\n/g, "").trim();
|
|
91
|
+
}
|
|
92
|
+
function trimQuotes(text) {
|
|
93
|
+
if (text.match(/^"(.*)"$/)) {
|
|
94
|
+
return text.replace(/^"(.*)"$/, "$1");
|
|
95
|
+
}
|
|
96
|
+
if (text.match(/^'(.*)'$/)) {
|
|
97
|
+
return text.replace(/^'(.*)'$/, "$1");
|
|
98
|
+
}
|
|
99
|
+
if (text.match(/^`(.*)`$/)) {
|
|
100
|
+
return text.replace(/^`(.*)`$/, "$1");
|
|
101
|
+
}
|
|
102
|
+
return text;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// src/transformers/stringify.ts
|
|
106
|
+
function stringify(value) {
|
|
107
|
+
if (value === void 0 || value === null) {
|
|
108
|
+
return '""';
|
|
109
|
+
}
|
|
110
|
+
return JSON.stringify(trimQuotes(value.toString()));
|
|
111
|
+
}
|
|
112
|
+
function stringifyObject(value) {
|
|
113
|
+
const items = Object.entries(value).map(([key, value2]) => {
|
|
114
|
+
if (typeof value2 === "object") {
|
|
115
|
+
return `${key}: {
|
|
116
|
+
${stringifyObject(value2)}
|
|
117
|
+
}`;
|
|
118
|
+
}
|
|
119
|
+
return `${key}: ${value2}`;
|
|
120
|
+
}).filter(Boolean);
|
|
121
|
+
return items.join(",\n");
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// src/transformers/toRegExp.ts
|
|
125
|
+
function stringToRegex(text) {
|
|
126
|
+
const isStartWithSlash = text.startsWith("/");
|
|
127
|
+
const isEndWithSlash = text.endsWith("/");
|
|
128
|
+
return new RegExp(text.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : void 0));
|
|
129
|
+
}
|
|
130
|
+
function toRegExp(text) {
|
|
131
|
+
if (typeof text === "string") {
|
|
132
|
+
const source = trimQuotes(text);
|
|
133
|
+
return stringToRegex(source);
|
|
134
|
+
}
|
|
135
|
+
return stringToRegex(text.toString());
|
|
136
|
+
}
|
|
137
|
+
function toRegExpString(text, func = "RegExp") {
|
|
138
|
+
const isStartWithSlash = text.startsWith("/");
|
|
139
|
+
const isEndWithSlash = text.endsWith("/");
|
|
140
|
+
const regexp = `new ${func}('${jsStringEscape(text.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : void 0))}')`;
|
|
141
|
+
return regexp;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// src/transformers/index.ts
|
|
145
|
+
import { merge as merge2 } from "remeda";
|
|
146
|
+
var transformers_default = {
|
|
2
147
|
combineCodes,
|
|
3
|
-
createIndent,
|
|
4
|
-
createJSDocBlockText,
|
|
5
148
|
escape,
|
|
6
149
|
jsStringEscape,
|
|
7
|
-
|
|
150
|
+
createIndent,
|
|
151
|
+
transformReservedWord,
|
|
8
152
|
nameSorter,
|
|
9
153
|
searchAndReplace,
|
|
10
154
|
stringify,
|
|
11
155
|
stringifyObject,
|
|
12
156
|
toRegExp,
|
|
13
157
|
toRegExpString,
|
|
14
|
-
transformReservedWord,
|
|
15
|
-
transformers_default,
|
|
16
158
|
trim,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
camelCase,
|
|
159
|
+
trimQuotes,
|
|
160
|
+
JSDoc: {
|
|
161
|
+
createJSDocBlockText
|
|
162
|
+
},
|
|
22
163
|
orderBy,
|
|
164
|
+
merge,
|
|
165
|
+
camelCase,
|
|
23
166
|
pascalCase,
|
|
24
167
|
pathCase
|
|
25
|
-
}
|
|
26
|
-
import "./chunk-HMLY7DHA.js";
|
|
168
|
+
};
|
|
27
169
|
export {
|
|
28
170
|
camelCase,
|
|
29
171
|
combineCodes,
|
|
@@ -32,7 +174,7 @@ export {
|
|
|
32
174
|
transformers_default as default,
|
|
33
175
|
escape,
|
|
34
176
|
jsStringEscape,
|
|
35
|
-
merge,
|
|
177
|
+
merge2 as merge,
|
|
36
178
|
nameSorter,
|
|
37
179
|
orderBy,
|
|
38
180
|
pascalCase,
|
|
@@ -44,7 +186,6 @@ export {
|
|
|
44
186
|
toRegExpString,
|
|
45
187
|
transformReservedWord,
|
|
46
188
|
trim,
|
|
47
|
-
trimExtName,
|
|
48
189
|
trimQuotes
|
|
49
190
|
};
|
|
50
191
|
//# sourceMappingURL=transformers.js.map
|
package/dist/transformers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/transformers/index.ts","../src/transformers/combineCodes.ts","../src/transformers/createJSDocBlockText.ts","../src/transformers/escape.ts","../src/transformers/indent.ts","../src/transformers/nameSorter.ts","../src/transformers/searchAndReplace.ts","../src/transformers/trim.ts","../src/transformers/stringify.ts","../src/transformers/toRegExp.ts"],"sourcesContent":["import { orderBy } from 'natural-orderby'\nimport { merge } from 'remeda'\n\nimport { camelCase, pascalCase, pathCase } from './casing.ts'\nimport { combineCodes } from './combineCodes.ts'\nimport { createJSDocBlockText } from './createJSDocBlockText.ts'\nimport { escape, jsStringEscape } from './escape.ts'\nimport { createIndent } from './indent.ts'\nimport { nameSorter } from './nameSorter.ts'\nimport { searchAndReplace } from './searchAndReplace.ts'\nimport { stringify, stringifyObject } from './stringify.ts'\nimport { toRegExp, toRegExpString } from './toRegExp.ts'\nimport { transformReservedWord } from './transformReservedWord.ts'\nimport { trim, trimQuotes } from './trim.ts'\n\nexport { camelCase, pascalCase, pathCase } from './casing.ts'\nexport { combineCodes } from './combineCodes.ts'\nexport { createJSDocBlockText } from './createJSDocBlockText.ts'\nexport { escape, jsStringEscape } from './escape.ts'\nexport { createIndent } from './indent.ts'\nexport { nameSorter } from './nameSorter.ts'\nexport { searchAndReplace } from './searchAndReplace.ts'\nexport { stringify, stringifyObject } from './stringify.ts'\nexport { toRegExp, toRegExpString } from './toRegExp.ts'\nexport { transformReservedWord } from './transformReservedWord.ts'\nexport { trim, trimQuotes } from './trim.ts'\nexport { merge } from 'remeda'\nexport { orderBy } from 'natural-orderby'\n\nexport default {\n combineCodes,\n escape,\n jsStringEscape,\n createIndent,\n transformReservedWord,\n nameSorter,\n searchAndReplace,\n stringify,\n stringifyObject,\n toRegExp,\n toRegExpString,\n trim,\n trimQuotes,\n JSDoc: {\n createJSDocBlockText,\n },\n orderBy,\n merge,\n camelCase,\n pascalCase,\n pathCase,\n} as const\n","export function combineCodes(codes: string[]): string {\n return codes.join('\\n')\n}\n","export function createJSDocBlockText({ comments }: { comments: Array<string> }): string {\n const filteredComments = comments.filter(Boolean)\n\n if (!filteredComments.length) {\n return ''\n }\n\n return `/**\\n * ${filteredComments.join('\\n * ')}\\n */`\n}\n","export function escape(text?: string): string {\n return text ? text.replaceAll('`', '\\\\`') : ''\n}\n\n/**\n * Escape all characters not included in SingleStringCharacters and DoubleStringCharacters on\n * @link http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4\n * @link https://github.com/joliss/js-string-escape/blob/master/index.js\n */\n\nexport function jsStringEscape(input: any): string {\n return `${input}`.replace(/[\"'\\\\\\n\\r\\u2028\\u2029]/g, (character) => {\n switch (character) {\n case '\"':\n case \"'\":\n case '\\\\':\n return `\\\\${character}`\n // Four possible LineTerminator characters need to be escaped:\n case '\\n':\n return '\\\\n'\n case '\\r':\n return '\\\\r'\n case '\\u2028':\n return '\\\\u2028'\n case '\\u2029':\n return '\\\\u2029'\n default:\n return ''\n }\n })\n}\n\nexport function escapeStringRegexp(string: string) {\n if (typeof string !== 'string') {\n throw new TypeError('Expected a string')\n }\n\n // Escape characters with special meaning either inside or outside character sets.\n // Use a simple backslash escape when it’s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.\n return string.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d')\n}\n","export function createIndent(size: number): string {\n return Array.from({ length: size + 1 }).join(' ')\n}\n","export function nameSorter<T extends { name: string }>(a: T, b: T): 0 | 1 | -1 {\n if (a.name < b.name) {\n return -1\n }\n if (a.name > b.name) {\n return 1\n }\n return 0\n}\n","type Options = {\n text: string\n replaceBy: string\n prefix?: string\n key: string\n searchValues?: (prefix: string, key: string) => Array<RegExp | string>\n}\n\nexport function searchAndReplace(options: Options): string {\n const { text, replaceBy, prefix = '', key } = options\n\n const searchValues = options.searchValues?.(prefix, key) || [\n `${prefix}[\"${key}\"]`,\n `${prefix}['${key}']`,\n `${prefix}[\\`${key}\\`]`,\n `${prefix}\"${key}\"`,\n `${prefix}'${key}'`,\n `${prefix}\\`${key}\\``,\n new RegExp(`${prefix}${key}`, 'g'),\n ]\n\n return searchValues.reduce((prev, searchValue) => {\n return prev.toString().replaceAll(searchValue, replaceBy)\n }, text) as string\n}\n","export function trim(text: string): string {\n return text.replaceAll(/\\n/g, '').trim()\n}\n\nexport function trimQuotes(text: string): string {\n if (text.match(/^\"(.*)\"$/)) {\n return text.replace(/^\"(.*)\"$/, '$1')\n }\n if (text.match(/^'(.*)'$/)) {\n return text.replace(/^'(.*)'$/, '$1')\n }\n\n if (text.match(/^`(.*)`$/)) {\n return text.replace(/^`(.*)`$/, '$1')\n }\n\n return text\n}\n","import { trimQuotes } from './trim'\n\nexport function stringify(value: string | number | undefined): string {\n if (value === undefined || value === null) {\n return '\"\"'\n }\n\n return JSON.stringify(trimQuotes(value.toString()))\n}\n\nexport function stringifyObject(value: object): string {\n const items = Object.entries(value)\n .map(([key, value]) => {\n if (typeof value === 'object') {\n return `${key}: {\n ${stringifyObject(value)}\n }`\n }\n\n return `${key}: ${value}`\n })\n .filter(Boolean)\n\n return items.join(',\\n')\n}\n","import { jsStringEscape } from './escape'\nimport { trimQuotes } from './trim'\n\nfunction stringToRegex(text: string) {\n const isStartWithSlash = text.startsWith('/')\n const isEndWithSlash = text.endsWith('/')\n\n return new RegExp(text.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : undefined))\n}\n\n/**\n * @experimental\n */\nexport function toRegExp(text: string | RegExp): RegExp {\n if (typeof text === 'string') {\n const source = trimQuotes(text)\n\n return stringToRegex(source)\n }\n\n return stringToRegex(text.toString())\n}\n\nexport function toRegExpString(text: string, func = 'RegExp'): string {\n const isStartWithSlash = text.startsWith('/')\n const isEndWithSlash = text.endsWith('/')\n\n const regexp = `new ${func}('${jsStringEscape(text.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : undefined))}')`\n\n return regexp\n}\n"],"mappings":"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","names":["value","merge"]}
|
package/dist/utils.cjs
CHANGED
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var _chunkYTSNYMHWcjs = require('./chunk-YTSNYMHW.cjs');
|
|
13
|
-
require('./chunk-67C6RBGQ.cjs');
|
|
14
|
-
require('./chunk-XCPFG6DO.cjs');
|
|
15
12
|
|
|
16
13
|
|
|
17
14
|
|
|
18
15
|
|
|
16
|
+
var _chunkNB4JMN75cjs = require('./chunk-NB4JMN75.cjs');
|
|
17
|
+
require('./chunk-A6PCLWEY.cjs');
|
|
18
|
+
require('./chunk-SEH6NUCX.cjs');
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
|
|
@@ -23,5 +23,13 @@ require('./chunk-XCPFG6DO.cjs');
|
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
exports.FunctionParams = _chunkNB4JMN75cjs.FunctionParams; exports.URLPath = _chunkNB4JMN75cjs.URLPath; exports.createFile = _chunkNB4JMN75cjs.createFile; exports.createFileExport = _chunkNB4JMN75cjs.createFileExport; exports.createFileImport = _chunkNB4JMN75cjs.createFileImport; exports.createFileParser = _chunkNB4JMN75cjs.createFileParser; exports.getFileParser = _chunkNB4JMN75cjs.getFileParser; exports.getUniqueName = _chunkNB4JMN75cjs.getUniqueName; exports.isPromise = _chunkNB4JMN75cjs.isPromise; exports.isPromiseFulfilledResult = _chunkNB4JMN75cjs.isPromiseFulfilledResult; exports.isPromiseRejectedResult = _chunkNB4JMN75cjs.isPromiseRejectedResult; exports.renderTemplate = _chunkNB4JMN75cjs.renderTemplate; exports.setUniqueName = _chunkNB4JMN75cjs.setUniqueName; exports.timeout = _chunkNB4JMN75cjs.timeout;
|
|
27
35
|
//# sourceMappingURL=utils.cjs.map
|
package/dist/utils.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/core/dist/utils.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/kubb/kubb/packages/core/dist/utils.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,uzBAAC","file":"/home/runner/work/kubb/kubb/packages/core/dist/utils.cjs"}
|
package/dist/utils.d.cts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { PossiblePromise } from '@kubb/types';
|
|
2
|
-
import * as
|
|
2
|
+
import * as KubbFile from '@kubb/fs/types';
|
|
3
|
+
import { L as Logger } from './logger-DvbHXjIO.cjs';
|
|
4
|
+
import 'consola';
|
|
3
5
|
|
|
4
6
|
type FunctionParamsASTWithoutType = {
|
|
5
7
|
name?: string;
|
|
@@ -101,6 +103,32 @@ declare class URLPath {
|
|
|
101
103
|
toURLPath(): string;
|
|
102
104
|
}
|
|
103
105
|
|
|
104
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Helper to create a file with name and id set
|
|
108
|
+
*/
|
|
109
|
+
declare function createFile<TMeta extends object = object>(file: KubbFile.File<TMeta>): KubbFile.ResolvedFile<TMeta>;
|
|
110
|
+
/**
|
|
111
|
+
* Helper to create a fileImport with extName set
|
|
112
|
+
*/
|
|
113
|
+
declare function createFileImport(imp: KubbFile.Import): KubbFile.ResolvedImport;
|
|
114
|
+
/**
|
|
115
|
+
* Helper to create a fileExport with extName set
|
|
116
|
+
*/
|
|
117
|
+
declare function createFileExport(exp: KubbFile.Export): KubbFile.ResolvedExport;
|
|
118
|
+
type ParserModule<TMeta extends object = object> = {
|
|
119
|
+
/**
|
|
120
|
+
* By default @kubb/react is used
|
|
121
|
+
*/
|
|
122
|
+
render: (item: any) => any;
|
|
123
|
+
/**
|
|
124
|
+
* Convert a file to string
|
|
125
|
+
*/
|
|
126
|
+
print: (file: KubbFile.ResolvedFile<TMeta>, options: PrintOptions) => Promise<string>;
|
|
127
|
+
};
|
|
128
|
+
declare function createFileParser<TMeta extends object = object>(parser: ParserModule<TMeta>): ParserModule<TMeta>;
|
|
129
|
+
type PrintOptions = {
|
|
130
|
+
logger?: Logger;
|
|
131
|
+
};
|
|
132
|
+
declare function getFileParser<TMeta extends object = object>(extName: KubbFile.Extname | undefined): Promise<ParserModule<TMeta>>;
|
|
105
133
|
|
|
106
|
-
export { FunctionParams, type FunctionParamsAST, type URLObject, URLPath,
|
|
134
|
+
export { FunctionParams, type FunctionParamsAST, type ParserModule, type URLObject, URLPath, createFile, createFileExport, createFileImport, createFileParser, getFileParser, getUniqueName, isPromise, isPromiseFulfilledResult, isPromiseRejectedResult, renderTemplate, setUniqueName, timeout };
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { PossiblePromise } from '@kubb/types';
|
|
2
|
-
import * as
|
|
2
|
+
import * as KubbFile from '@kubb/fs/types';
|
|
3
|
+
import { L as Logger } from './logger-DvbHXjIO.js';
|
|
4
|
+
import 'consola';
|
|
3
5
|
|
|
4
6
|
type FunctionParamsASTWithoutType = {
|
|
5
7
|
name?: string;
|
|
@@ -101,6 +103,32 @@ declare class URLPath {
|
|
|
101
103
|
toURLPath(): string;
|
|
102
104
|
}
|
|
103
105
|
|
|
104
|
-
|
|
106
|
+
/**
|
|
107
|
+
* Helper to create a file with name and id set
|
|
108
|
+
*/
|
|
109
|
+
declare function createFile<TMeta extends object = object>(file: KubbFile.File<TMeta>): KubbFile.ResolvedFile<TMeta>;
|
|
110
|
+
/**
|
|
111
|
+
* Helper to create a fileImport with extName set
|
|
112
|
+
*/
|
|
113
|
+
declare function createFileImport(imp: KubbFile.Import): KubbFile.ResolvedImport;
|
|
114
|
+
/**
|
|
115
|
+
* Helper to create a fileExport with extName set
|
|
116
|
+
*/
|
|
117
|
+
declare function createFileExport(exp: KubbFile.Export): KubbFile.ResolvedExport;
|
|
118
|
+
type ParserModule<TMeta extends object = object> = {
|
|
119
|
+
/**
|
|
120
|
+
* By default @kubb/react is used
|
|
121
|
+
*/
|
|
122
|
+
render: (item: any) => any;
|
|
123
|
+
/**
|
|
124
|
+
* Convert a file to string
|
|
125
|
+
*/
|
|
126
|
+
print: (file: KubbFile.ResolvedFile<TMeta>, options: PrintOptions) => Promise<string>;
|
|
127
|
+
};
|
|
128
|
+
declare function createFileParser<TMeta extends object = object>(parser: ParserModule<TMeta>): ParserModule<TMeta>;
|
|
129
|
+
type PrintOptions = {
|
|
130
|
+
logger?: Logger;
|
|
131
|
+
};
|
|
132
|
+
declare function getFileParser<TMeta extends object = object>(extName: KubbFile.Extname | undefined): Promise<ParserModule<TMeta>>;
|
|
105
133
|
|
|
106
|
-
export { FunctionParams, type FunctionParamsAST, type URLObject, URLPath,
|
|
134
|
+
export { FunctionParams, type FunctionParamsAST, type ParserModule, type URLObject, URLPath, createFile, createFileExport, createFileImport, createFileParser, getFileParser, getUniqueName, isPromise, isPromiseFulfilledResult, isPromiseRejectedResult, renderTemplate, setUniqueName, timeout };
|
package/dist/utils.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FunctionParams,
|
|
3
3
|
URLPath,
|
|
4
|
-
|
|
4
|
+
createFile,
|
|
5
|
+
createFileExport,
|
|
6
|
+
createFileImport,
|
|
7
|
+
createFileParser,
|
|
8
|
+
getFileParser,
|
|
5
9
|
getUniqueName,
|
|
6
10
|
isPromise,
|
|
7
11
|
isPromiseFulfilledResult,
|
|
@@ -9,13 +13,16 @@ import {
|
|
|
9
13
|
renderTemplate,
|
|
10
14
|
setUniqueName,
|
|
11
15
|
timeout
|
|
12
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-L6YLVCKM.js";
|
|
13
17
|
import "./chunk-4X5FFJPJ.js";
|
|
14
|
-
import "./chunk-HMLY7DHA.js";
|
|
15
18
|
export {
|
|
16
19
|
FunctionParams,
|
|
17
20
|
URLPath,
|
|
18
|
-
|
|
21
|
+
createFile,
|
|
22
|
+
createFileExport,
|
|
23
|
+
createFileImport,
|
|
24
|
+
createFileParser,
|
|
25
|
+
getFileParser,
|
|
19
26
|
getUniqueName,
|
|
20
27
|
isPromise,
|
|
21
28
|
isPromiseFulfilledResult,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubb/core",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.10",
|
|
4
4
|
"description": "Generator core",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -76,31 +76,31 @@
|
|
|
76
76
|
],
|
|
77
77
|
"dependencies": {
|
|
78
78
|
"change-case": "^5.4.4",
|
|
79
|
-
"directory-tree": "^3.5.2",
|
|
80
79
|
"find-up": "^7.0.0",
|
|
81
80
|
"natural-orderby": "^3.0.2",
|
|
81
|
+
"object-hash": "^3.0.0",
|
|
82
82
|
"p-queue": "^8.0.1",
|
|
83
83
|
"remeda": "^2.11.0",
|
|
84
84
|
"seedrandom": "^3.0.5",
|
|
85
85
|
"semver": "^7.6.3",
|
|
86
86
|
"unraw": "^3.0.0",
|
|
87
|
-
"@kubb/fs": "3.0.0-alpha.
|
|
88
|
-
"@kubb/parser-ts": "3.0.0-alpha.
|
|
89
|
-
"@kubb/types": "3.0.0-alpha.
|
|
87
|
+
"@kubb/fs": "3.0.0-alpha.10",
|
|
88
|
+
"@kubb/parser-ts": "3.0.0-alpha.10",
|
|
89
|
+
"@kubb/types": "3.0.0-alpha.10"
|
|
90
90
|
},
|
|
91
91
|
"devDependencies": {
|
|
92
|
-
"@types/
|
|
92
|
+
"@types/object-hash": "^3.0.6",
|
|
93
|
+
"@types/react": "^18.3.5",
|
|
93
94
|
"@types/seedrandom": "^3.0.8",
|
|
94
95
|
"@types/semver": "^7.5.8",
|
|
95
96
|
"consola": "^3.2.3",
|
|
96
|
-
"ora": "^8.0.1",
|
|
97
97
|
"prettier": "^3.3.3",
|
|
98
98
|
"tinyrainbow": "^1.2.0",
|
|
99
99
|
"tsup": "^8.2.4",
|
|
100
100
|
"typescript": "^5.5.4",
|
|
101
|
-
"@kubb/config-biome": "3.0.0-alpha.
|
|
102
|
-
"@kubb/config-ts": "3.0.0-alpha.
|
|
103
|
-
"@kubb/config-tsup": "3.0.0-alpha.
|
|
101
|
+
"@kubb/config-biome": "3.0.0-alpha.10",
|
|
102
|
+
"@kubb/config-ts": "3.0.0-alpha.10",
|
|
103
|
+
"@kubb/config-tsup": "3.0.0-alpha.10"
|
|
104
104
|
},
|
|
105
105
|
"engines": {
|
|
106
106
|
"node": ">=20"
|
package/src/BarrelManager.ts
CHANGED
|
@@ -1,20 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { join } from 'node:path'
|
|
2
2
|
|
|
3
|
-
import path from 'node:path'
|
|
4
|
-
|
|
5
|
-
import { trimExtName } from './transformers/trim.ts'
|
|
6
3
|
import { TreeNode } from './utils/TreeNode.ts'
|
|
7
4
|
|
|
5
|
+
import { getRelativePath } from '@kubb/fs'
|
|
8
6
|
import type * as KubbFile from '@kubb/fs/types'
|
|
9
|
-
import type {
|
|
7
|
+
import type { Logger } from './logger.ts'
|
|
8
|
+
import type { FileMetaBase } from './FileManager.ts'
|
|
10
9
|
|
|
11
10
|
export type BarrelManagerOptions = {
|
|
12
|
-
|
|
13
|
-
isTypeOnly?: boolean
|
|
14
|
-
/**
|
|
15
|
-
* Add .ts or .js
|
|
16
|
-
*/
|
|
17
|
-
extName?: KubbFile.Extname
|
|
11
|
+
logger?: Logger
|
|
18
12
|
}
|
|
19
13
|
|
|
20
14
|
export class BarrelManager {
|
|
@@ -26,116 +20,108 @@ export class BarrelManager {
|
|
|
26
20
|
return this
|
|
27
21
|
}
|
|
28
22
|
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
if (!exportedNames) {
|
|
33
|
-
return [item]
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return exportedNames.reduce(
|
|
37
|
-
(prev, curr) => {
|
|
38
|
-
if (!prev[0]?.name || !prev[1]?.name) {
|
|
39
|
-
return prev
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (curr.isTypeOnly) {
|
|
43
|
-
prev[1] = { ...prev[1], name: [...prev[1].name, curr.name] }
|
|
44
|
-
} else {
|
|
45
|
-
prev[0] = { ...prev[0], name: [...prev[0].name, curr.name] }
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return prev
|
|
49
|
-
},
|
|
50
|
-
[
|
|
51
|
-
{
|
|
52
|
-
...item,
|
|
53
|
-
name: [],
|
|
54
|
-
isTypeOnly: false,
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
...item,
|
|
58
|
-
name: [],
|
|
59
|
-
isTypeOnly: true,
|
|
60
|
-
},
|
|
61
|
-
] as KubbFile.Export[],
|
|
62
|
-
)
|
|
63
|
-
}
|
|
23
|
+
getFiles({ files: generatedFiles, root, meta }: { files: KubbFile.File[]; root?: string; meta?: FileMetaBase | undefined }): Array<KubbFile.File> {
|
|
24
|
+
const { logger } = this.#options
|
|
64
25
|
|
|
65
|
-
|
|
66
|
-
return exports?.flatMap((item) => {
|
|
67
|
-
return this.getNamedExport(root, item)
|
|
68
|
-
})
|
|
69
|
-
}
|
|
26
|
+
const cachedFiles = new Map<KubbFile.Path, KubbFile.File>()
|
|
70
27
|
|
|
71
|
-
|
|
72
|
-
const { treeNode = {}, isTypeOnly, extName } = this.#options
|
|
73
|
-
const tree = TreeNode.build(root, treeNode)
|
|
28
|
+
logger?.emit('debug', { date: new Date(), logs: [`Start barrel generation for pluginKey ${meta?.pluginKey?.join('.')} and root '${root}'`] })
|
|
74
29
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
30
|
+
TreeNode.build(generatedFiles, root)?.forEach((treeNode) => {
|
|
31
|
+
if (!treeNode || !treeNode.children || !treeNode.parent?.data.path) {
|
|
32
|
+
return undefined
|
|
33
|
+
}
|
|
78
34
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
35
|
+
const barrelFile: KubbFile.File = {
|
|
36
|
+
path: join(treeNode.parent?.data.path, 'index.ts') as KubbFile.Path,
|
|
37
|
+
baseName: 'index.ts',
|
|
38
|
+
exports: [],
|
|
39
|
+
sources: [],
|
|
82
40
|
}
|
|
41
|
+
const previousBarrelFile = cachedFiles.get(barrelFile.path)
|
|
42
|
+
const leaves = treeNode.leaves
|
|
83
43
|
|
|
84
|
-
|
|
85
|
-
|
|
44
|
+
leaves.forEach((item) => {
|
|
45
|
+
if (!item.data.name) {
|
|
46
|
+
return undefined
|
|
47
|
+
}
|
|
86
48
|
|
|
87
|
-
const
|
|
88
|
-
.filter(Boolean)
|
|
89
|
-
.map((file) => {
|
|
90
|
-
const importPath: string = file.data.type === 'split' ? `./${file.data.name}/index` : `./${trimExtName(file.data.name)}`
|
|
49
|
+
const sources = item.data.file?.sources || []
|
|
91
50
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
51
|
+
if (!sources.some((source) => source.isIndexable)) {
|
|
52
|
+
logger?.emit(
|
|
53
|
+
'warning',
|
|
54
|
+
`No isIndexable source found(source should have a name and isIndexable):\nFile: ${JSON.stringify(item.data.file, undefined, 2)}`,
|
|
55
|
+
)
|
|
56
|
+
}
|
|
95
57
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
58
|
+
sources.forEach((source) => {
|
|
59
|
+
if (!item.data.file?.path || !source.isIndexable || !source.name) {
|
|
60
|
+
return undefined
|
|
61
|
+
}
|
|
62
|
+
const alreadyContainInPreviousBarrelFile = previousBarrelFile?.sources.some((item) => item.name === source.name)
|
|
63
|
+
|
|
64
|
+
if (alreadyContainInPreviousBarrelFile) {
|
|
65
|
+
return undefined
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (!barrelFile.exports) {
|
|
69
|
+
barrelFile.exports = []
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// true when we have a subdirectory that also contains barrel files
|
|
73
|
+
const isSubExport = !!treeNode.parent?.data.path?.split?.('/')?.length
|
|
74
|
+
|
|
75
|
+
if (isSubExport) {
|
|
76
|
+
barrelFile.exports.push({
|
|
77
|
+
name: [source.name],
|
|
78
|
+
path: getRelativePath(treeNode.parent?.data.path, item.data.path),
|
|
79
|
+
isTypeOnly: source.isTypeOnly,
|
|
80
|
+
})
|
|
81
|
+
} else {
|
|
82
|
+
barrelFile.exports.push({
|
|
83
|
+
name: [source.name],
|
|
84
|
+
path: `./${item.data.file.baseName}`,
|
|
85
|
+
isTypeOnly: source.isTypeOnly,
|
|
86
|
+
})
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
barrelFile.sources.push({
|
|
90
|
+
name: source.name,
|
|
91
|
+
isTypeOnly: source.isTypeOnly,
|
|
92
|
+
//TODO use parser to generate import
|
|
93
|
+
value: '',
|
|
94
|
+
isExportable: false,
|
|
95
|
+
isIndexable: false,
|
|
100
96
|
})
|
|
101
|
-
.filter(Boolean)
|
|
102
|
-
|
|
103
|
-
files.push({
|
|
104
|
-
path: indexPath,
|
|
105
|
-
baseName: 'index.ts',
|
|
106
|
-
source: '',
|
|
107
|
-
exports,
|
|
108
|
-
exportable: true,
|
|
109
97
|
})
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
path: extName ? `${importPath}${extName}` : importPath,
|
|
119
|
-
isTypeOnly,
|
|
120
|
-
},
|
|
121
|
-
]
|
|
122
|
-
|
|
123
|
-
files.push({
|
|
124
|
-
path: indexPath,
|
|
125
|
-
baseName: 'index.ts',
|
|
126
|
-
source: '',
|
|
127
|
-
exports,
|
|
128
|
-
exportable: true,
|
|
129
|
-
})
|
|
130
|
-
}
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
logger?.emit('debug', {
|
|
101
|
+
date: new Date(),
|
|
102
|
+
logs: [
|
|
103
|
+
`Generating barrelFile '${getRelativePath(root, barrelFile.path)}' for '${getRelativePath(root, treeNode.data?.path)}' with ${barrelFile.sources.length} indexable exports: '${barrelFile.sources?.map((source) => source.name).join(', ')}'`,
|
|
104
|
+
],
|
|
105
|
+
})
|
|
131
106
|
|
|
132
|
-
|
|
133
|
-
|
|
107
|
+
logger?.emit('debug', {
|
|
108
|
+
date: new Date(),
|
|
109
|
+
logs: [
|
|
110
|
+
`Generated barrelFile '${getRelativePath(root, barrelFile.path)}' for '${getRelativePath(root, treeNode.data?.path)}' with exports: '${cachedFiles
|
|
111
|
+
.get(barrelFile.path)
|
|
112
|
+
?.sources?.map((source) => source.name)
|
|
113
|
+
.join(', ')}'`,
|
|
114
|
+
],
|
|
134
115
|
})
|
|
135
116
|
|
|
136
|
-
|
|
137
|
-
|
|
117
|
+
if (previousBarrelFile) {
|
|
118
|
+
previousBarrelFile.sources.push(...barrelFile.sources)
|
|
119
|
+
previousBarrelFile.exports?.push(...(barrelFile.exports || []))
|
|
120
|
+
} else {
|
|
121
|
+
cachedFiles.set(barrelFile.path, barrelFile)
|
|
122
|
+
}
|
|
123
|
+
})
|
|
138
124
|
|
|
139
|
-
return
|
|
125
|
+
return [...cachedFiles.values()]
|
|
140
126
|
}
|
|
141
127
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Abstract class that contains the building blocks for plugins to create their own Generator
|
|
3
3
|
* @link idea based on https://github.com/colinhacks/zod/blob/master/src/types.ts#L137
|
|
4
4
|
*/
|
|
5
|
-
export abstract class
|
|
5
|
+
export abstract class BaseGenerator<TOptions = unknown, TContext = unknown> {
|
|
6
6
|
#options: TOptions = {} as TOptions
|
|
7
7
|
#context: TContext = {} as TContext
|
|
8
8
|
|