@kubb/core 3.0.0-alpha.5 → 3.0.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/{FileManager-tzl0YsYE.d.ts → FileManager-Ceski1W9.d.ts} +46 -33
  2. package/dist/{FileManager-jZpqETKU.d.cts → FileManager-wyXRkgIk.d.cts} +46 -33
  3. package/dist/chunk-2EU7DMPM.js +97 -0
  4. package/dist/chunk-2EU7DMPM.js.map +1 -0
  5. package/dist/chunk-5HN4LW3R.cjs +102 -0
  6. package/dist/chunk-5HN4LW3R.cjs.map +1 -0
  7. package/dist/{chunk-Z5CHJQJB.js → chunk-76UEJFFE.js} +1 -4
  8. package/dist/chunk-76UEJFFE.js.map +1 -0
  9. package/dist/{chunk-5JZNFPUP.js → chunk-AWAZR3D5.js} +61 -10
  10. package/dist/chunk-AWAZR3D5.js.map +1 -0
  11. package/dist/{chunk-FWU62YO5.cjs → chunk-DCZQYCCO.cjs} +216 -326
  12. package/dist/chunk-DCZQYCCO.cjs.map +1 -0
  13. package/dist/{chunk-YTSNYMHW.cjs → chunk-L3JJLZ5Q.cjs} +62 -11
  14. package/dist/chunk-L3JJLZ5Q.cjs.map +1 -0
  15. package/dist/{chunk-RBP2ASUX.cjs → chunk-LOLEBOMW.cjs} +1 -4
  16. package/dist/chunk-LOLEBOMW.cjs.map +1 -0
  17. package/dist/chunk-RIEGCND2.js +525 -0
  18. package/dist/chunk-RIEGCND2.js.map +1 -0
  19. package/dist/index.cjs +80 -69
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +4 -6
  22. package/dist/index.d.ts +4 -6
  23. package/dist/index.js +67 -58
  24. package/dist/index.js.map +1 -1
  25. package/dist/{logger-BnWJh6Yq.d.cts → logger-BWFeedRk.d.cts} +15 -5
  26. package/dist/{logger-BnWJh6Yq.d.ts → logger-BWFeedRk.d.ts} +15 -5
  27. package/dist/logger.cjs +2 -2
  28. package/dist/logger.d.cts +1 -2
  29. package/dist/logger.d.ts +1 -2
  30. package/dist/logger.js +1 -1
  31. package/dist/mocks.cjs +4 -6
  32. package/dist/mocks.cjs.map +1 -1
  33. package/dist/mocks.d.cts +3 -5
  34. package/dist/mocks.d.ts +3 -5
  35. package/dist/mocks.js +3 -5
  36. package/dist/mocks.js.map +1 -1
  37. package/dist/transformers.cjs +189 -33
  38. package/dist/transformers.cjs.map +1 -1
  39. package/dist/transformers.d.cts +1 -3
  40. package/dist/transformers.d.ts +1 -3
  41. package/dist/transformers.js +156 -14
  42. package/dist/transformers.js.map +1 -1
  43. package/dist/utils.cjs +6 -2
  44. package/dist/utils.cjs.map +1 -1
  45. package/dist/utils.d.cts +30 -3
  46. package/dist/utils.d.ts +30 -3
  47. package/dist/utils.js +7 -3
  48. package/package.json +9 -8
  49. package/src/BarrelManager.ts +24 -99
  50. package/src/FileManager.ts +156 -281
  51. package/src/PackageManager.ts +1 -1
  52. package/src/PluginManager.ts +89 -57
  53. package/src/build.ts +6 -19
  54. package/src/logger.ts +6 -8
  55. package/src/transformers/index.ts +2 -3
  56. package/src/transformers/trim.ts +0 -4
  57. package/src/types.ts +1 -1
  58. package/src/utils/TreeNode.ts +91 -26
  59. package/src/utils/executeStrategies.ts +1 -1
  60. package/src/utils/index.ts +2 -1
  61. package/src/utils/parser.ts +96 -0
  62. package/dist/chunk-5JZNFPUP.js.map +0 -1
  63. package/dist/chunk-CEWT73XF.js +0 -637
  64. package/dist/chunk-CEWT73XF.js.map +0 -1
  65. package/dist/chunk-FWU62YO5.cjs.map +0 -1
  66. package/dist/chunk-JKZG2IJR.js +0 -283
  67. package/dist/chunk-JKZG2IJR.js.map +0 -1
  68. package/dist/chunk-PZT4CTBV.cjs +0 -299
  69. package/dist/chunk-PZT4CTBV.cjs.map +0 -1
  70. package/dist/chunk-RBP2ASUX.cjs.map +0 -1
  71. package/dist/chunk-YTSNYMHW.cjs.map +0 -1
  72. package/dist/chunk-Z5CHJQJB.js.map +0 -1
  73. package/src/utils/getParser.ts +0 -17
@@ -1,29 +1,172 @@
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
+ import "./chunk-HMLY7DHA.js";
11
+
12
+ // src/transformers/index.ts
13
+ import { merge } from "remeda";
14
+
15
+ // src/transformers/combineCodes.ts
16
+ function combineCodes(codes) {
17
+ return codes.join("\n");
18
+ }
19
+
20
+ // src/transformers/createJSDocBlockText.ts
21
+ function createJSDocBlockText({ comments }) {
22
+ const filteredComments = comments.filter(Boolean);
23
+ if (!filteredComments.length) {
24
+ return "";
25
+ }
26
+ return `/**
27
+ * ${filteredComments.join("\n * ")}
28
+ */`;
29
+ }
30
+
31
+ // src/transformers/escape.ts
32
+ function escape(text) {
33
+ return text ? text.replaceAll("`", "\\`") : "";
34
+ }
35
+ function jsStringEscape(input) {
36
+ return `${input}`.replace(/["'\\\n\r\u2028\u2029]/g, (character) => {
37
+ switch (character) {
38
+ case '"':
39
+ case "'":
40
+ case "\\":
41
+ return `\\${character}`;
42
+ case "\n":
43
+ return "\\n";
44
+ case "\r":
45
+ return "\\r";
46
+ case "\u2028":
47
+ return "\\u2028";
48
+ case "\u2029":
49
+ return "\\u2029";
50
+ default:
51
+ return "";
52
+ }
53
+ });
54
+ }
55
+
56
+ // src/transformers/indent.ts
57
+ function createIndent(size) {
58
+ return Array.from({ length: size + 1 }).join(" ");
59
+ }
60
+
61
+ // src/transformers/nameSorter.ts
62
+ function nameSorter(a, b) {
63
+ if (a.name < b.name) {
64
+ return -1;
65
+ }
66
+ if (a.name > b.name) {
67
+ return 1;
68
+ }
69
+ return 0;
70
+ }
71
+
72
+ // src/transformers/searchAndReplace.ts
73
+ function searchAndReplace(options) {
74
+ const { text, replaceBy, prefix = "", key } = options;
75
+ const searchValues = options.searchValues?.(prefix, key) || [
76
+ `${prefix}["${key}"]`,
77
+ `${prefix}['${key}']`,
78
+ `${prefix}[\`${key}\`]`,
79
+ `${prefix}"${key}"`,
80
+ `${prefix}'${key}'`,
81
+ `${prefix}\`${key}\``,
82
+ new RegExp(`${prefix}${key}`, "g")
83
+ ];
84
+ return searchValues.reduce((prev, searchValue) => {
85
+ return prev.toString().replaceAll(searchValue, replaceBy);
86
+ }, text);
87
+ }
88
+
89
+ // src/transformers/trim.ts
90
+ function trim(text) {
91
+ return text.replaceAll(/\n/g, "").trim();
92
+ }
93
+ function trimQuotes(text) {
94
+ if (text.match(/^"(.*)"$/)) {
95
+ return text.replace(/^"(.*)"$/, "$1");
96
+ }
97
+ if (text.match(/^'(.*)'$/)) {
98
+ return text.replace(/^'(.*)'$/, "$1");
99
+ }
100
+ if (text.match(/^`(.*)`$/)) {
101
+ return text.replace(/^`(.*)`$/, "$1");
102
+ }
103
+ return text;
104
+ }
105
+
106
+ // src/transformers/stringify.ts
107
+ function stringify(value) {
108
+ if (value === void 0 || value === null) {
109
+ return '""';
110
+ }
111
+ return JSON.stringify(trimQuotes(value.toString()));
112
+ }
113
+ function stringifyObject(value) {
114
+ const items = Object.entries(value).map(([key, value2]) => {
115
+ if (typeof value2 === "object") {
116
+ return `${key}: {
117
+ ${stringifyObject(value2)}
118
+ }`;
119
+ }
120
+ return `${key}: ${value2}`;
121
+ }).filter(Boolean);
122
+ return items.join(",\n");
123
+ }
124
+
125
+ // src/transformers/toRegExp.ts
126
+ function stringToRegex(text) {
127
+ const isStartWithSlash = text.startsWith("/");
128
+ const isEndWithSlash = text.endsWith("/");
129
+ return new RegExp(text.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : void 0));
130
+ }
131
+ function toRegExp(text) {
132
+ if (typeof text === "string") {
133
+ const source = trimQuotes(text);
134
+ return stringToRegex(source);
135
+ }
136
+ return stringToRegex(text.toString());
137
+ }
138
+ function toRegExpString(text, func = "RegExp") {
139
+ const isStartWithSlash = text.startsWith("/");
140
+ const isEndWithSlash = text.endsWith("/");
141
+ const regexp = `new ${func}('${jsStringEscape(text.slice(isStartWithSlash ? 1 : 0, isEndWithSlash ? -1 : void 0))}')`;
142
+ return regexp;
143
+ }
144
+
145
+ // src/transformers/index.ts
146
+ import { merge as merge2 } from "remeda";
147
+ var transformers_default = {
2
148
  combineCodes,
3
- createIndent,
4
- createJSDocBlockText,
5
149
  escape,
6
150
  jsStringEscape,
7
- merge,
151
+ createIndent,
152
+ transformReservedWord,
8
153
  nameSorter,
9
154
  searchAndReplace,
10
155
  stringify,
11
156
  stringifyObject,
12
157
  toRegExp,
13
158
  toRegExpString,
14
- transformReservedWord,
15
- transformers_default,
16
159
  trim,
17
- trimExtName,
18
- trimQuotes
19
- } from "./chunk-JKZG2IJR.js";
20
- import {
21
- camelCase,
160
+ trimQuotes,
161
+ JSDoc: {
162
+ createJSDocBlockText
163
+ },
22
164
  orderBy,
165
+ merge,
166
+ camelCase,
23
167
  pascalCase,
24
168
  pathCase
25
- } from "./chunk-4X5FFJPJ.js";
26
- import "./chunk-HMLY7DHA.js";
169
+ };
27
170
  export {
28
171
  camelCase,
29
172
  combineCodes,
@@ -32,7 +175,7 @@ export {
32
175
  transformers_default as default,
33
176
  escape,
34
177
  jsStringEscape,
35
- merge,
178
+ merge2 as merge,
36
179
  nameSorter,
37
180
  orderBy,
38
181
  pascalCase,
@@ -44,7 +187,6 @@ export {
44
187
  toRegExpString,
45
188
  transformReservedWord,
46
189
  trim,
47
- trimExtName,
48
190
  trimQuotes
49
191
  };
50
192
  //# sourceMappingURL=transformers.js.map
@@ -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,7 +9,9 @@
9
9
 
10
10
 
11
11
 
12
- var _chunkYTSNYMHWcjs = require('./chunk-YTSNYMHW.cjs');
12
+
13
+
14
+ var _chunkL3JJLZ5Qcjs = require('./chunk-L3JJLZ5Q.cjs');
13
15
  require('./chunk-67C6RBGQ.cjs');
14
16
  require('./chunk-XCPFG6DO.cjs');
15
17
 
@@ -23,5 +25,7 @@ require('./chunk-XCPFG6DO.cjs');
23
25
 
24
26
 
25
27
 
26
- exports.FunctionParams = _chunkYTSNYMHWcjs.FunctionParams; exports.URLPath = _chunkYTSNYMHWcjs.URLPath; exports.getParser = _chunkYTSNYMHWcjs.getParser; exports.getUniqueName = _chunkYTSNYMHWcjs.getUniqueName; exports.isPromise = _chunkYTSNYMHWcjs.isPromise; exports.isPromiseFulfilledResult = _chunkYTSNYMHWcjs.isPromiseFulfilledResult; exports.isPromiseRejectedResult = _chunkYTSNYMHWcjs.isPromiseRejectedResult; exports.renderTemplate = _chunkYTSNYMHWcjs.renderTemplate; exports.setUniqueName = _chunkYTSNYMHWcjs.setUniqueName; exports.timeout = _chunkYTSNYMHWcjs.timeout;
28
+
29
+
30
+ exports.FunctionParams = _chunkL3JJLZ5Qcjs.FunctionParams; exports.URLPath = _chunkL3JJLZ5Qcjs.URLPath; exports.createFile = _chunkL3JJLZ5Qcjs.createFile; exports.createFileParser = _chunkL3JJLZ5Qcjs.createFileParser; exports.getFileParser = _chunkL3JJLZ5Qcjs.getFileParser; exports.getUniqueName = _chunkL3JJLZ5Qcjs.getUniqueName; exports.isPromise = _chunkL3JJLZ5Qcjs.isPromise; exports.isPromiseFulfilledResult = _chunkL3JJLZ5Qcjs.isPromiseFulfilledResult; exports.isPromiseRejectedResult = _chunkL3JJLZ5Qcjs.isPromiseRejectedResult; exports.renderTemplate = _chunkL3JJLZ5Qcjs.renderTemplate; exports.setUniqueName = _chunkL3JJLZ5Qcjs.setUniqueName; exports.timeout = _chunkL3JJLZ5Qcjs.timeout;
27
31
  //# sourceMappingURL=utils.cjs.map
@@ -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,+jBAAC","file":"/home/runner/work/kubb/kubb/packages/core/dist/utils.cjs"}
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;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yrBAAC","file":"/home/runner/work/kubb/kubb/packages/core/dist/utils.cjs"}
package/dist/utils.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { PossiblePromise } from '@kubb/types';
2
- import * as _kubb_parser_ts from '@kubb/parser-ts';
2
+ import * as KubbFile from '@kubb/fs/types';
3
3
 
4
4
  type FunctionParamsASTWithoutType = {
5
5
  name?: string;
@@ -101,6 +101,33 @@ declare class URLPath {
101
101
  toURLPath(): string;
102
102
  }
103
103
 
104
- declare function getParser(language: string | undefined): Promise<typeof _kubb_parser_ts>;
104
+ /**
105
+ * Helper to create a file with name and id set
106
+ */
107
+ declare function createFile<TMeta extends object = object>(file: KubbFile.File<TMeta>): KubbFile.ResolvedFile<TMeta>;
108
+ type ParserModule<TImport = unknown, TExport = unknown> = {
109
+ createImport: (props: {
110
+ name: string | Array<string | {
111
+ propertyName: string;
112
+ name?: string;
113
+ }>;
114
+ path: string;
115
+ isTypeOnly?: boolean;
116
+ isNameSpace?: boolean;
117
+ }) => TImport | undefined;
118
+ createExport: (props: {
119
+ path: string;
120
+ asAlias?: boolean;
121
+ isTypeOnly?: boolean;
122
+ name?: string | Array<string>;
123
+ }) => TExport | undefined;
124
+ print: (props: {
125
+ imports: Array<TImport>;
126
+ exports: Array<TExport>;
127
+ source: string;
128
+ }) => string;
129
+ };
130
+ declare function createFileParser<TImport = unknown, TExport = unknown>(parser: ParserModule<TImport, TExport>): ParserModule<TImport, TExport>;
131
+ declare function getFileParser(extName: string | undefined): Promise<ParserModule<any, any>>;
105
132
 
106
- export { FunctionParams, type FunctionParamsAST, type URLObject, URLPath, getParser, getUniqueName, isPromise, isPromiseFulfilledResult, isPromiseRejectedResult, renderTemplate, setUniqueName, timeout };
133
+ export { FunctionParams, type FunctionParamsAST, type ParserModule, type URLObject, URLPath, createFile, createFileParser, getFileParser, getUniqueName, isPromise, isPromiseFulfilledResult, isPromiseRejectedResult, renderTemplate, setUniqueName, timeout };
package/dist/utils.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { PossiblePromise } from '@kubb/types';
2
- import * as _kubb_parser_ts from '@kubb/parser-ts';
2
+ import * as KubbFile from '@kubb/fs/types';
3
3
 
4
4
  type FunctionParamsASTWithoutType = {
5
5
  name?: string;
@@ -101,6 +101,33 @@ declare class URLPath {
101
101
  toURLPath(): string;
102
102
  }
103
103
 
104
- declare function getParser(language: string | undefined): Promise<typeof _kubb_parser_ts>;
104
+ /**
105
+ * Helper to create a file with name and id set
106
+ */
107
+ declare function createFile<TMeta extends object = object>(file: KubbFile.File<TMeta>): KubbFile.ResolvedFile<TMeta>;
108
+ type ParserModule<TImport = unknown, TExport = unknown> = {
109
+ createImport: (props: {
110
+ name: string | Array<string | {
111
+ propertyName: string;
112
+ name?: string;
113
+ }>;
114
+ path: string;
115
+ isTypeOnly?: boolean;
116
+ isNameSpace?: boolean;
117
+ }) => TImport | undefined;
118
+ createExport: (props: {
119
+ path: string;
120
+ asAlias?: boolean;
121
+ isTypeOnly?: boolean;
122
+ name?: string | Array<string>;
123
+ }) => TExport | undefined;
124
+ print: (props: {
125
+ imports: Array<TImport>;
126
+ exports: Array<TExport>;
127
+ source: string;
128
+ }) => string;
129
+ };
130
+ declare function createFileParser<TImport = unknown, TExport = unknown>(parser: ParserModule<TImport, TExport>): ParserModule<TImport, TExport>;
131
+ declare function getFileParser(extName: string | undefined): Promise<ParserModule<any, any>>;
105
132
 
106
- export { FunctionParams, type FunctionParamsAST, type URLObject, URLPath, getParser, getUniqueName, isPromise, isPromiseFulfilledResult, isPromiseRejectedResult, renderTemplate, setUniqueName, timeout };
133
+ export { FunctionParams, type FunctionParamsAST, type ParserModule, type URLObject, URLPath, createFile, createFileParser, getFileParser, getUniqueName, isPromise, isPromiseFulfilledResult, isPromiseRejectedResult, renderTemplate, setUniqueName, timeout };
package/dist/utils.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import {
2
2
  FunctionParams,
3
3
  URLPath,
4
- getParser,
4
+ createFile,
5
+ createFileParser,
6
+ getFileParser,
5
7
  getUniqueName,
6
8
  isPromise,
7
9
  isPromiseFulfilledResult,
@@ -9,13 +11,15 @@ import {
9
11
  renderTemplate,
10
12
  setUniqueName,
11
13
  timeout
12
- } from "./chunk-5JZNFPUP.js";
14
+ } from "./chunk-AWAZR3D5.js";
13
15
  import "./chunk-4X5FFJPJ.js";
14
16
  import "./chunk-HMLY7DHA.js";
15
17
  export {
16
18
  FunctionParams,
17
19
  URLPath,
18
- getParser,
20
+ createFile,
21
+ createFileParser,
22
+ getFileParser,
19
23
  getUniqueName,
20
24
  isPromise,
21
25
  isPromiseFulfilledResult,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/core",
3
- "version": "3.0.0-alpha.5",
3
+ "version": "3.0.0-alpha.6",
4
4
  "description": "Generator core",
5
5
  "keywords": [
6
6
  "typescript",
@@ -76,19 +76,20 @@
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.5",
88
- "@kubb/parser-ts": "3.0.0-alpha.5",
89
- "@kubb/types": "3.0.0-alpha.5"
87
+ "@kubb/fs": "3.0.0-alpha.6",
88
+ "@kubb/parser-ts": "3.0.0-alpha.6",
89
+ "@kubb/types": "3.0.0-alpha.6"
90
90
  },
91
91
  "devDependencies": {
92
+ "@types/object-hash": "^3.0.6",
92
93
  "@types/react": "^18.3.4",
93
94
  "@types/seedrandom": "^3.0.8",
94
95
  "@types/semver": "^7.5.8",
@@ -97,9 +98,9 @@
97
98
  "tinyrainbow": "^1.2.0",
98
99
  "tsup": "^8.2.4",
99
100
  "typescript": "^5.5.4",
100
- "@kubb/config-biome": "3.0.0-alpha.5",
101
- "@kubb/config-ts": "3.0.0-alpha.5",
102
- "@kubb/config-tsup": "3.0.0-alpha.5"
101
+ "@kubb/config-biome": "3.0.0-alpha.6",
102
+ "@kubb/config-ts": "3.0.0-alpha.6",
103
+ "@kubb/config-tsup": "3.0.0-alpha.6"
103
104
  },
104
105
  "engines": {
105
106
  "node": ">=20"
@@ -1,20 +1,16 @@
1
- import { getExports } from '@kubb/parser-ts'
2
-
3
1
  import path from 'node:path'
4
2
 
5
- import { trimExtName } from './transformers/trim.ts'
6
3
  import { TreeNode } from './utils/TreeNode.ts'
7
4
 
8
5
  import type * as KubbFile from '@kubb/fs/types'
9
- import type { DirectoryTreeOptions } from 'directory-tree'
6
+ import { trimExtName } from '@kubb/fs'
10
7
 
11
8
  export type BarrelManagerOptions = {
12
- treeNode?: DirectoryTreeOptions
13
9
  isTypeOnly?: boolean
14
10
  /**
15
11
  * Add .ts or .js
16
12
  */
17
- extName?: KubbFile.Extname
13
+ extName?: string
18
14
  }
19
15
 
20
16
  /**
@@ -29,57 +25,9 @@ export class BarrelManager {
29
25
  return this
30
26
  }
31
27
 
32
- /**
33
- * Loop through the file and find all exports(with the help of the ts printer)
34
- * Important: a real file is needed(cannot work from memory/FileManager)
35
- */
36
- getNamedExport(root: string, item: KubbFile.Export): KubbFile.Export[] {
37
- const exportedNames = getExports(path.resolve(root, item.path))
38
-
39
- if (!exportedNames) {
40
- return [item]
41
- }
42
-
43
- const exports = exportedNames.reduce(
44
- (prev, curr) => {
45
- if (!prev[0]?.name || !prev[1]?.name) {
46
- return prev
47
- }
48
-
49
- if (curr.isTypeOnly) {
50
- prev[1] = { ...prev[1], name: [...prev[1].name, curr.name] }
51
- } else {
52
- prev[0] = { ...prev[0], name: [...prev[0].name, curr.name] }
53
- }
54
-
55
- return prev
56
- },
57
- [
58
- {
59
- ...item,
60
- name: [],
61
- isTypeOnly: false,
62
- },
63
- {
64
- ...item,
65
- name: [],
66
- isTypeOnly: true,
67
- },
68
- ] as KubbFile.Export[],
69
- )
70
-
71
- return exports
72
- }
73
-
74
- getNamedExports(root: string, exports: KubbFile.Export[]): KubbFile.Export[] {
75
- return exports?.flatMap((item) => {
76
- return this.getNamedExport(root, item)
77
- })
78
- }
79
-
80
- getIndexes(root: string): Array<KubbFile.File> | null {
81
- const { treeNode = {}, isTypeOnly, extName } = this.#options
82
- const tree = TreeNode.build(root, treeNode)
28
+ getIndexes(generatedFiles: KubbFile.File[], root: string): Array<KubbFile.File> | null {
29
+ const { isTypeOnly, extName } = this.#options
30
+ const tree = TreeNode.build(generatedFiles, root)
83
31
 
84
32
  if (!tree) {
85
33
  return null
@@ -90,53 +38,30 @@ export class BarrelManager {
90
38
  return []
91
39
  }
92
40
 
93
- if (treeNode.children.length > 1) {
94
- const indexPath: KubbFile.Path = path.resolve(treeNode.data.path, 'index.ts')
95
-
96
- const exports: Array<KubbFile.Export> = treeNode.children
97
- .filter(Boolean)
98
- .map((file) => {
99
- const importPath: string = file.data.type === 'split' ? `./${file.data.name}/index` : `./${trimExtName(file.data.name)}`
100
-
101
- if (importPath.endsWith('index') && file.data.type === 'single') {
102
- return undefined
103
- }
104
-
105
- return {
106
- path: extName ? `${importPath}${extName}` : importPath,
107
- isTypeOnly,
108
- } as KubbFile.Export
109
- })
110
- .filter(Boolean)
111
-
112
- files.push({
113
- path: indexPath,
114
- baseName: 'index.ts',
115
- source: '',
116
- exports,
117
- exportable: true,
118
- })
119
- } else if (treeNode.children.length === 1) {
120
- const [treeNodeChild] = treeNode.children as [TreeNode]
41
+ const indexPath: KubbFile.Path = path.resolve(treeNode.data.path, 'index.ts')
42
+
43
+ const exports: Array<KubbFile.Export> = treeNode.children
44
+ .filter((item) => !!item.data.name)
45
+ .map((treeNode) => {
46
+ const importPath: string = treeNode.data.file ? `./${trimExtName(treeNode.data.name)}` : `./${treeNode.data.name}/index`
121
47
 
122
- const indexPath = path.resolve(treeNode.data.path, 'index.ts')
123
- const importPath = treeNodeChild.data.type === 'split' ? `./${treeNodeChild.data.name}/index` : `./${trimExtName(treeNodeChild.data.name)}`
48
+ if (importPath.endsWith('index') && treeNode.data.file) {
49
+ return undefined
50
+ }
124
51
 
125
- const exports = [
126
- {
52
+ return {
127
53
  path: extName ? `${importPath}${extName}` : importPath,
128
54
  isTypeOnly,
129
- },
130
- ]
131
-
132
- files.push({
133
- path: indexPath,
134
- baseName: 'index.ts',
135
- source: '',
136
- exports,
137
- exportable: true,
55
+ } as KubbFile.Export
138
56
  })
139
- }
57
+ .filter(Boolean)
58
+
59
+ files.push({
60
+ path: indexPath,
61
+ baseName: 'index.ts',
62
+ exports,
63
+ sources: [],
64
+ })
140
65
 
141
66
  treeNode.children.forEach((childItem) => {
142
67
  fileReducer(files, childItem)