@kubb/core 2.11.1 → 2.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/{chunk-4GE2JRAA.cjs → chunk-33S7A7ZE.cjs} +28 -5
  2. package/dist/chunk-33S7A7ZE.cjs.map +1 -0
  3. package/dist/{chunk-CH2676BL.js → chunk-4BZD7YTT.js} +2 -2
  4. package/dist/{chunk-G7EQ47A4.js → chunk-ALE7CO7I.js} +26 -3
  5. package/dist/chunk-ALE7CO7I.js.map +1 -0
  6. package/dist/{chunk-WAIHMG76.cjs → chunk-F4TSJHGA.cjs} +3 -3
  7. package/dist/chunk-FOWWV3PP.js +41 -0
  8. package/dist/chunk-FOWWV3PP.js.map +1 -0
  9. package/dist/{chunk-XZZ2F3LK.cjs → chunk-IBUMXAET.cjs} +3 -3
  10. package/dist/{chunk-WXV3UNEP.js → chunk-IP732R22.js} +1 -29
  11. package/dist/chunk-IP732R22.js.map +1 -0
  12. package/dist/chunk-KPXUT3DG.cjs +143 -0
  13. package/dist/chunk-KPXUT3DG.cjs.map +1 -0
  14. package/dist/{chunk-UYADU5OY.js → chunk-L2OHRGUS.js} +7 -3
  15. package/dist/chunk-L2OHRGUS.js.map +1 -0
  16. package/dist/{chunk-JDIEEDDB.cjs → chunk-OMX2RMAX.cjs} +3 -3
  17. package/dist/{chunk-TJHTFTXA.cjs → chunk-OVLOS3IJ.cjs} +267 -347
  18. package/dist/chunk-OVLOS3IJ.cjs.map +1 -0
  19. package/dist/{chunk-KOQSM5X7.cjs → chunk-VHRZO2NC.cjs} +20 -20
  20. package/dist/chunk-VHRZO2NC.cjs.map +1 -0
  21. package/dist/chunk-YYCT7ZB7.cjs +94 -0
  22. package/dist/chunk-YYCT7ZB7.cjs.map +1 -0
  23. package/dist/{chunk-H7U5WQ3I.js → chunk-Z5N655B7.js} +20 -20
  24. package/dist/chunk-Z5N655B7.js.map +1 -0
  25. package/dist/{chunk-DOELQNBO.cjs → chunk-ZS3YTJ2L.cjs} +3 -133
  26. package/dist/chunk-ZS3YTJ2L.cjs.map +1 -0
  27. package/dist/fs.cjs +5 -4
  28. package/dist/fs.cjs.map +1 -1
  29. package/dist/fs.js +3 -3
  30. package/dist/index.cjs +2672 -83
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.d.cts +6 -1
  33. package/dist/index.d.ts +6 -1
  34. package/dist/index.js +1981 -52
  35. package/dist/index.js.map +1 -1
  36. package/dist/logger.cjs +4 -3
  37. package/dist/logger.js +2 -2
  38. package/dist/mocks.cjs +6 -10
  39. package/dist/mocks.cjs.map +1 -1
  40. package/dist/mocks.js +1 -6
  41. package/dist/mocks.js.map +1 -1
  42. package/dist/transformers.cjs +34 -21
  43. package/dist/transformers.cjs.map +1 -1
  44. package/dist/transformers.d.cts +4 -2
  45. package/dist/transformers.d.ts +4 -2
  46. package/dist/transformers.js +24 -11
  47. package/dist/transformers.js.map +1 -1
  48. package/dist/utils.cjs +32 -27
  49. package/dist/utils.cjs.map +1 -1
  50. package/dist/utils.js +33 -28
  51. package/dist/utils.js.map +1 -1
  52. package/package.json +4 -3
  53. package/src/BarrelManager.ts +33 -31
  54. package/src/FileManager.ts +176 -137
  55. package/src/PackageManager.ts +4 -4
  56. package/src/PluginManager.ts +62 -52
  57. package/src/build.ts +28 -9
  58. package/src/config.ts +3 -3
  59. package/src/fs/write.ts +6 -2
  60. package/src/index.ts +1 -1
  61. package/src/transformers/casing.ts +11 -5
  62. package/src/transformers/escape.ts +2 -4
  63. package/src/transformers/index.ts +3 -2
  64. package/src/transformers/stringify.ts +19 -3
  65. package/src/transformers/toNumber.ts +1 -1
  66. package/src/transformers/toRegExp.ts +1 -5
  67. package/src/types.ts +67 -71
  68. package/src/utils/FunctionParams.ts +28 -24
  69. package/src/utils/TreeNode.ts +15 -4
  70. package/src/utils/URLPath.ts +2 -6
  71. package/src/utils/executeStrategies.ts +7 -7
  72. package/src/utils/index.ts +5 -1
  73. package/dist/chunk-4GE2JRAA.cjs.map +0 -1
  74. package/dist/chunk-B7DTFNR4.js +0 -30
  75. package/dist/chunk-B7DTFNR4.js.map +0 -1
  76. package/dist/chunk-DOELQNBO.cjs.map +0 -1
  77. package/dist/chunk-G7EQ47A4.js.map +0 -1
  78. package/dist/chunk-H7U5WQ3I.js.map +0 -1
  79. package/dist/chunk-KOQSM5X7.cjs.map +0 -1
  80. package/dist/chunk-TJHTFTXA.cjs.map +0 -1
  81. package/dist/chunk-UIWHEBZA.cjs +0 -2549
  82. package/dist/chunk-UIWHEBZA.cjs.map +0 -1
  83. package/dist/chunk-UUBXTHJG.cjs +0 -30
  84. package/dist/chunk-UUBXTHJG.cjs.map +0 -1
  85. package/dist/chunk-UYADU5OY.js.map +0 -1
  86. package/dist/chunk-WXV3UNEP.js.map +0 -1
  87. package/dist/chunk-ZNYG4U5D.js +0 -1888
  88. package/dist/chunk-ZNYG4U5D.js.map +0 -1
  89. /package/dist/{chunk-CH2676BL.js.map → chunk-4BZD7YTT.js.map} +0 -0
  90. /package/dist/{chunk-WAIHMG76.cjs.map → chunk-F4TSJHGA.cjs.map} +0 -0
  91. /package/dist/{chunk-XZZ2F3LK.cjs.map → chunk-IBUMXAET.cjs.map} +0 -0
  92. /package/dist/{chunk-JDIEEDDB.cjs.map → chunk-OMX2RMAX.cjs.map} +0 -0
package/dist/utils.js CHANGED
@@ -1,14 +1,14 @@
1
1
  import {
2
- URLPath
3
- } from "./chunk-G7EQ47A4.js";
4
- import {
2
+ URLPath,
5
3
  getUniqueName,
6
4
  setUniqueName
7
- } from "./chunk-B7DTFNR4.js";
5
+ } from "./chunk-ALE7CO7I.js";
8
6
  import {
9
- camelCase,
10
7
  orderBy
11
- } from "./chunk-WXV3UNEP.js";
8
+ } from "./chunk-IP732R22.js";
9
+ import {
10
+ camelCase
11
+ } from "./chunk-FOWWV3PP.js";
12
12
  import {
13
13
  __privateAdd,
14
14
  __privateGet,
@@ -56,21 +56,25 @@ var _FunctionParams = class _FunctionParams {
56
56
  });
57
57
  return {
58
58
  name: `{ ${name.join(", ")} }`,
59
- type: type.length ? `{ ${type.join(", ")} }` : void 0,
59
+ type: type.length ? `{ ${type.join("; ")} }` : void 0,
60
60
  enabled,
61
61
  required
62
62
  };
63
63
  }
64
64
  static toString(items) {
65
- const sortedData = __privateMethod(this, _orderItems, orderItems_fn).call(this, items);
65
+ var _a;
66
+ const sortedData = __privateMethod(_a = _FunctionParams, _orderItems, orderItems_fn).call(_a, items);
66
67
  return sortedData.reduce((acc, item) => {
67
- var _a, _b;
68
+ var _a2, _b, _c;
68
69
  if (Array.isArray(item)) {
69
- const subItems = __privateMethod(this, _orderItems, orderItems_fn).call(this, item);
70
+ if (item.length <= 0) {
71
+ return acc;
72
+ }
73
+ const subItems = __privateMethod(_a2 = _FunctionParams, _orderItems, orderItems_fn).call(_a2, item);
70
74
  const objectItem = _FunctionParams.toObject(subItems);
71
- return __privateMethod(_a = _FunctionParams, _addParams, addParams_fn).call(_a, acc, objectItem);
75
+ return __privateMethod(_b = _FunctionParams, _addParams, addParams_fn).call(_b, acc, objectItem);
72
76
  }
73
- return __privateMethod(_b = _FunctionParams, _addParams, addParams_fn).call(_b, acc, item);
77
+ return __privateMethod(_c = _FunctionParams, _addParams, addParams_fn).call(_c, acc, item);
74
78
  }, []).join(", ");
75
79
  }
76
80
  toObject() {
@@ -87,23 +91,24 @@ var _FunctionParams = class _FunctionParams {
87
91
  _items = new WeakMap();
88
92
  _orderItems = new WeakSet();
89
93
  orderItems_fn = function(items) {
90
- return orderBy(items.filter(Boolean), [
91
- (v) => {
92
- if (Array.isArray(v)) {
93
- return void 0;
94
- }
95
- return !v.default;
96
- },
97
- (v) => {
98
- if (Array.isArray(v)) {
99
- return void 0;
94
+ return orderBy(
95
+ items.filter(Boolean),
96
+ [
97
+ (v) => {
98
+ if (Array.isArray(v)) {
99
+ return void 0;
100
+ }
101
+ return !v.default;
102
+ },
103
+ (v) => {
104
+ if (Array.isArray(v)) {
105
+ return void 0;
106
+ }
107
+ return v.required ?? true;
100
108
  }
101
- return v.required ?? true;
102
- }
103
- ], [
104
- "desc",
105
- "desc"
106
- ]);
109
+ ],
110
+ ["desc", "desc"]
111
+ );
107
112
  };
108
113
  _addParams = new WeakSet();
109
114
  addParams_fn = function(acc, item) {
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/index.ts","../src/utils/FunctionParams.ts","../src/utils/promise.ts","../src/utils/renderTemplate.ts","../src/utils/timeout.ts"],"sourcesContent":["export type { FunctionParamsAST } from './FunctionParams.ts'\nexport { FunctionParams } from './FunctionParams.ts'\nexport { isPromise, isPromiseFulfilledResult, isPromiseRejectedResult } from './promise.ts'\nexport { renderTemplate } from './renderTemplate.ts'\nexport { timeout } from './timeout.ts'\nexport { getUniqueName, setUniqueName } from './uniqueName.ts'\nexport type { URLObject } from './URLPath.ts'\nexport { URLPath } from './URLPath.ts'\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\nexport type FunctionParamsAST = FunctionParamsASTWithoutType | FunctionParamsASTWithType\nexport class FunctionParams {\n type?: 'generics' | 'typed'\n #items: Array<FunctionParamsAST | FunctionParamsAST[]> = []\n constructor(type?: 'generics' | 'typed') {\n this.type = type\n\n return this\n }\n\n get items(): FunctionParamsAST[] {\n return this.#items.flat()\n }\n\n add(item: FunctionParamsAST | Array<FunctionParamsAST | FunctionParamsAST[] | undefined> | undefined): FunctionParams {\n if (!item) {\n return this\n }\n\n if (Array.isArray(item)) {\n item.filter(Boolean).forEach((it) => this.#items.push(it))\n return this\n }\n this.#items.push(item)\n\n return this\n }\n static #orderItems(items: Array<FunctionParamsAST | FunctionParamsAST[]>) {\n return orderBy(items.filter(Boolean), [\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',\n '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 = this.#orderItems(items)\n\n return sortedData\n .reduce((acc, item) => {\n if (Array.isArray(item)) {\n const subItems = this.#orderItems(item) as FunctionParamsAST[]\n const objectItem = FunctionParams.toObject(subItems)\n\n return FunctionParams.#addParams(acc, objectItem)\n }\n\n return FunctionParams.#addParams(acc, item)\n }, [] as string[])\n .join(', ')\n }\n\n toObject(): FunctionParamsAST {\n const items = FunctionParams.#orderItems(this.#items).flat()\n\n return FunctionParams.toObject(items)\n }\n\n toString(): string {\n const items = FunctionParams.#orderItems(this.#items)\n\n return FunctionParams.toString(items)\n }\n}\n","import type { PossiblePromise } from '@kubb/types'\n\nexport function isPromise<T>(result: PossiblePromise<T>): result is Promise<T> {\n return !!result && typeof (result as Promise<unknown>)?.then === 'function'\n}\n\nexport function isPromiseFulfilledResult<T = unknown>(result: PromiseSettledResult<unknown>): result is PromiseFulfilledResult<T> {\n return result.status === 'fulfilled'\n}\n\nexport function isPromiseRejectedResult<T>(result: PromiseSettledResult<unknown>): result is Omit<PromiseRejectedResult, 'reason'> & { reason: T } {\n return result.status === 'rejected'\n}\n","export function renderTemplate<TData extends Record<string, unknown> = Record<string, unknown>>(template: string, data: TData | undefined = undefined): string {\n if (!data || !Object.keys(data).length) {\n return template.replace(/{{(.*?)}}/g, '')\n }\n\n const matches = template.match(/{{(.*?)}}/g)\n\n return (\n matches?.reduce((prev, curr) => {\n const index = curr.split(/{{|}}/).filter(Boolean)[0]?.trim()\n if (index === undefined) {\n return prev\n }\n const value = data[index]\n\n if (value === undefined) {\n return prev\n }\n\n return prev\n .replace(curr, () => {\n if (typeof value === 'boolean') {\n return `${value.toString()}` || 'false'\n }\n\n return (value as string) || ''\n })\n .trim()\n }, template) || ''\n )\n}\n","export async function timeout(ms: number): Promise<unknown> {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true)\n }, ms)\n })\n}\n"],"mappings":"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","names":["item"]}
1
+ {"version":3,"sources":["../src/utils/index.ts","../src/utils/FunctionParams.ts","../src/utils/promise.ts","../src/utils/renderTemplate.ts","../src/utils/timeout.ts"],"sourcesContent":["export type { FunctionParamsAST } from './FunctionParams.ts'\nexport { FunctionParams } from './FunctionParams.ts'\nexport {\n isPromise,\n isPromiseFulfilledResult,\n isPromiseRejectedResult,\n} from './promise.ts'\nexport { renderTemplate } from './renderTemplate.ts'\nexport { timeout } from './timeout.ts'\nexport { getUniqueName, setUniqueName } from './uniqueName.ts'\nexport type { URLObject } from './URLPath.ts'\nexport { URLPath } from './URLPath.ts'\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\nexport type FunctionParamsAST = FunctionParamsASTWithoutType | FunctionParamsASTWithType\nexport class FunctionParams {\n type?: 'generics' | 'typed'\n #items: Array<FunctionParamsAST | FunctionParamsAST[]> = []\n constructor(type?: 'generics' | 'typed') {\n this.type = type\n\n return this\n }\n\n get items(): FunctionParamsAST[] {\n return this.#items.flat()\n }\n\n add(item: FunctionParamsAST | Array<FunctionParamsAST | FunctionParamsAST[] | undefined> | undefined): FunctionParams {\n if (!item) {\n return this\n }\n\n if (Array.isArray(item)) {\n item.filter(Boolean).forEach((it) => this.#items.push(it))\n return this\n }\n this.#items.push(item)\n\n return this\n }\n static #orderItems(items: Array<FunctionParamsAST | FunctionParamsAST[]>) {\n return orderBy(\n items.filter(Boolean),\n [\n (v) => {\n if (Array.isArray(v)) {\n return undefined\n }\n return !v.default\n },\n (v) => {\n if (Array.isArray(v)) {\n return undefined\n }\n return v.required ?? true\n },\n ],\n ['desc', 'desc'],\n )\n }\n\n static #addParams(acc: string[], item: FunctionParamsAST) {\n const { enabled = true, name, type, required = true, ...rest } = item\n\n if (!enabled) {\n return acc\n }\n\n if (!name) {\n // when name is not se we will use TypeScript generics\n acc.push(`${type}${rest.default ? ` = ${rest.default}` : ''}`)\n\n return acc\n }\n // TODO check whey we still need the camelcase here\n const parameterName = name.startsWith('{') ? name : camelCase(name)\n\n if (type) {\n if (required) {\n acc.push(`${parameterName}: ${type}${rest.default ? ` = ${rest.default}` : ''}`)\n } else {\n acc.push(`${parameterName}?: ${type}`)\n }\n } else {\n acc.push(`${parameterName}`)\n }\n\n return acc\n }\n\n static toObject(items: FunctionParamsAST[]): FunctionParamsAST {\n let type: string[] = []\n let name: string[] = []\n\n const enabled = items.every((item) => item.enabled) ? items.at(0)?.enabled : true\n const required = items.every((item) => item.required) ?? true\n\n items.forEach((item) => {\n name = FunctionParams.#addParams(name, { ...item, type: undefined })\n if (items.some((item) => item.type)) {\n type = FunctionParams.#addParams(type, item)\n }\n })\n\n return {\n name: `{ ${name.join(', ')} }`,\n type: type.length ? `{ ${type.join('; ')} }` : undefined,\n enabled,\n required,\n }\n }\n\n static toString(items: (FunctionParamsAST | FunctionParamsAST[])[]): string {\n const sortedData = FunctionParams.#orderItems(items)\n\n return sortedData\n .reduce((acc, item) => {\n if (Array.isArray(item)) {\n if (item.length <= 0) {\n return acc\n }\n const subItems = FunctionParams.#orderItems(item) as FunctionParamsAST[]\n const objectItem = FunctionParams.toObject(subItems)\n\n return FunctionParams.#addParams(acc, objectItem)\n }\n\n return FunctionParams.#addParams(acc, item)\n }, [] as string[])\n .join(', ')\n }\n\n toObject(): FunctionParamsAST {\n const items = FunctionParams.#orderItems(this.#items).flat()\n\n return FunctionParams.toObject(items)\n }\n\n toString(): string {\n const items = FunctionParams.#orderItems(this.#items)\n\n return FunctionParams.toString(items)\n }\n}\n","import type { PossiblePromise } from '@kubb/types'\n\nexport function isPromise<T>(result: PossiblePromise<T>): result is Promise<T> {\n return !!result && typeof (result as Promise<unknown>)?.then === 'function'\n}\n\nexport function isPromiseFulfilledResult<T = unknown>(result: PromiseSettledResult<unknown>): result is PromiseFulfilledResult<T> {\n return result.status === 'fulfilled'\n}\n\nexport function isPromiseRejectedResult<T>(result: PromiseSettledResult<unknown>): result is Omit<PromiseRejectedResult, 'reason'> & { reason: T } {\n return result.status === 'rejected'\n}\n","export function renderTemplate<TData extends Record<string, unknown> = Record<string, unknown>>(template: string, data: TData | undefined = undefined): string {\n if (!data || !Object.keys(data).length) {\n return template.replace(/{{(.*?)}}/g, '')\n }\n\n const matches = template.match(/{{(.*?)}}/g)\n\n return (\n matches?.reduce((prev, curr) => {\n const index = curr.split(/{{|}}/).filter(Boolean)[0]?.trim()\n if (index === undefined) {\n return prev\n }\n const value = data[index]\n\n if (value === undefined) {\n return prev\n }\n\n return prev\n .replace(curr, () => {\n if (typeof value === 'boolean') {\n return `${value.toString()}` || 'false'\n }\n\n return (value as string) || ''\n })\n .trim()\n }, template) || ''\n )\n}\n","export async function timeout(ms: number): Promise<unknown> {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true)\n }, ms)\n })\n}\n"],"mappings":"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","names":["item","_a"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/core",
3
- "version": "2.11.1",
3
+ "version": "2.12.1",
4
4
  "description": "Generator core",
5
5
  "keywords": [
6
6
  "typescript",
@@ -97,8 +97,8 @@
97
97
  "seedrandom": "^3.0.5",
98
98
  "semver": "^7.6.0",
99
99
  "unraw": "^3.0.0",
100
- "@kubb/parser": "2.11.1",
101
- "@kubb/types": "2.11.1"
100
+ "@kubb/parser": "2.12.1",
101
+ "@kubb/types": "2.12.1"
102
102
  },
103
103
  "devDependencies": {
104
104
  "@types/fs-extra": "^11.0.4",
@@ -112,6 +112,7 @@
112
112
  "lodash.isequal": "^4.5.0",
113
113
  "lodash.tonumber": "^4.0.3",
114
114
  "ora": "^8.0.1",
115
+ "prettier": "^3.2.5",
115
116
  "tinyrainbow": "^1.1.1",
116
117
  "tsup": "^8.0.2",
117
118
  "typescript": "^5.4.3",
@@ -1,6 +1,6 @@
1
1
  import { getExports } from '@kubb/parser'
2
2
 
3
- import path from 'path'
3
+ import path from 'node:path'
4
4
 
5
5
  import { trimExtName } from './transformers/trim.ts'
6
6
  import { TreeNode } from './utils/TreeNode.ts'
@@ -33,38 +33,42 @@ export class BarrelManager {
33
33
  return [item]
34
34
  }
35
35
 
36
- return exportedNames.reduce((prev, curr) => {
37
- if (!prev[0]?.name || !prev[1]?.name) {
38
- return prev
39
- }
36
+ return exportedNames.reduce(
37
+ (prev, curr) => {
38
+ if (!prev[0]?.name || !prev[1]?.name) {
39
+ return prev
40
+ }
40
41
 
41
- if (curr.isTypeOnly) {
42
- prev[1] = { ...prev[1], name: [...prev[1].name, curr.name] }
43
- } else {
44
- prev[0] = { ...prev[0], name: [...prev[0].name, curr.name] }
45
- }
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
+ }
46
47
 
47
- return prev
48
- }, [{
49
- ...item,
50
- name: [],
51
- isTypeOnly: false,
52
- }, {
53
- ...item,
54
- name: [],
55
- isTypeOnly: true,
56
- }] as KubbFile.Export[])
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
+ )
57
63
  }
58
64
 
59
65
  getNamedExports(root: string, exports: KubbFile.Export[]): KubbFile.Export[] {
60
- return exports?.map(item => {
66
+ return exports?.flatMap((item) => {
61
67
  return this.getNamedExport(root, item)
62
- }).flat()
68
+ })
63
69
  }
64
70
 
65
- getIndexes(
66
- root: string,
67
- ): Array<KubbFile.File> | null {
71
+ getIndexes(root: string): Array<KubbFile.File> | null {
68
72
  const { treeNode = {}, isTypeOnly, extName } = this.#options
69
73
  const tree = TreeNode.build(root, treeNode)
70
74
 
@@ -101,20 +105,17 @@ export class BarrelManager {
101
105
  baseName: 'index.ts',
102
106
  source: '',
103
107
  exports,
108
+ exportable: true,
104
109
  })
105
110
  } else if (treeNode.children.length === 1) {
106
111
  const [treeNodeChild] = treeNode.children as [TreeNode]
107
112
 
108
113
  const indexPath = path.resolve(treeNode.data.path, 'index.ts')
109
- const importPath = treeNodeChild.data.type === 'directory'
110
- ? `./${treeNodeChild.data.name}/index`
111
- : `./${trimExtName(treeNodeChild.data.name)}`
114
+ const importPath = treeNodeChild.data.type === 'directory' ? `./${treeNodeChild.data.name}/index` : `./${trimExtName(treeNodeChild.data.name)}`
112
115
 
113
116
  const exports = [
114
117
  {
115
- path: extName
116
- ? `${importPath}${extName}`
117
- : importPath,
118
+ path: extName ? `${importPath}${extName}` : importPath,
118
119
  isTypeOnly,
119
120
  },
120
121
  ]
@@ -124,6 +125,7 @@ export class BarrelManager {
124
125
  baseName: 'index.ts',
125
126
  source: '',
126
127
  exports,
128
+ exportable: true,
127
129
  })
128
130
  }
129
131