@kubb/core 4.3.1 → 4.4.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 (147) hide show
  1. package/dist/{URLPath-BYceu_vY.js → URLPath-DbWtfVa1.js} +2 -3
  2. package/dist/{URLPath-BYceu_vY.js.map → URLPath-DbWtfVa1.js.map} +1 -1
  3. package/dist/{URLPath-8WVzHBnA.cjs → URLPath-Dir2mxRT.cjs} +6 -7
  4. package/dist/{URLPath-8WVzHBnA.cjs.map → URLPath-Dir2mxRT.cjs.map} +1 -1
  5. package/dist/{chunk-CZg_9w7l.cjs → chunk-CUT6urMc.cjs} +0 -23
  6. package/dist/hooks.cjs +6 -6
  7. package/dist/hooks.cjs.map +1 -1
  8. package/dist/hooks.d.cts +5 -5
  9. package/dist/hooks.d.ts +5 -5
  10. package/dist/hooks.js +1 -1
  11. package/dist/hooks.js.map +1 -1
  12. package/dist/index.cjs +128 -62
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.cts +22 -18
  15. package/dist/index.d.ts +22 -18
  16. package/dist/index.js +116 -53
  17. package/dist/index.js.map +1 -1
  18. package/dist/{logger-BXL0YCrv.cjs → logger-BIzTtBYJ.cjs} +48 -5
  19. package/dist/logger-BIzTtBYJ.cjs.map +1 -0
  20. package/dist/{logger-DpoDtxfo.d.cts → logger-BjfDkvkn.d.cts} +1 -1
  21. package/dist/{logger-BA-za85-.d.ts → logger-BwhJWK-H.d.ts} +1 -1
  22. package/dist/{logger-CDxSrFkR.js → logger-Bxe022ug.js} +39 -4
  23. package/dist/logger-Bxe022ug.js.map +1 -0
  24. package/dist/logger.cjs +1 -2
  25. package/dist/logger.d.cts +1 -1
  26. package/dist/logger.d.ts +1 -1
  27. package/dist/logger.js +1 -2
  28. package/dist/{prompt-DgONOpPH.cjs → prompt-D5DZPtWc.cjs} +2 -2
  29. package/dist/{prompt-DgONOpPH.cjs.map → prompt-D5DZPtWc.cjs.map} +1 -1
  30. package/dist/{prompt-DBVnG4Me.js → prompt-xM0onfy8.js} +1 -1
  31. package/dist/{prompt-DBVnG4Me.js.map → prompt-xM0onfy8.js.map} +1 -1
  32. package/dist/transformers-CeNW0G32.js +339 -0
  33. package/dist/transformers-CeNW0G32.js.map +1 -0
  34. package/dist/transformers-DWLXDYKb.cjs +443 -0
  35. package/dist/transformers-DWLXDYKb.cjs.map +1 -0
  36. package/dist/transformers.cjs +7 -6
  37. package/dist/transformers.js +1 -3
  38. package/dist/{types-DPeNK0FO.d.ts → types-CVONMhN_.d.cts} +51 -53
  39. package/dist/{types-DNxlynJr.d.cts → types-CyDeSlGF.d.ts} +51 -53
  40. package/dist/{types-BzI9JlV8.d.ts → types-DCR_QgGt.d.ts} +1 -1
  41. package/dist/{types-C3ea5qNG.d.cts → types-DueAg3XP.d.cts} +1 -1
  42. package/dist/utils.cjs +7 -7
  43. package/dist/utils.cjs.map +1 -1
  44. package/dist/utils.d.cts +1 -1
  45. package/dist/utils.d.ts +1 -1
  46. package/dist/utils.js +4 -6
  47. package/dist/utils.js.map +1 -1
  48. package/package.json +15 -20
  49. package/src/BarrelManager.ts +1 -1
  50. package/src/FileManager.ts +5 -2
  51. package/src/PluginManager.ts +4 -8
  52. package/src/build.ts +39 -42
  53. package/src/fs/index.ts +0 -7
  54. package/src/hooks/useMode.ts +2 -2
  55. package/src/hooks/usePlugin.ts +1 -1
  56. package/src/hooks/usePluginManager.ts +1 -1
  57. package/src/plugin.ts +10 -5
  58. package/src/types.ts +3 -2
  59. package/src/utils/TreeNode.ts +1 -1
  60. package/dist/acorn-BAVXZMtK.cjs +0 -5082
  61. package/dist/acorn-BAVXZMtK.cjs.map +0 -1
  62. package/dist/acorn-D-VhIOLw.js +0 -5080
  63. package/dist/acorn-D-VhIOLw.js.map +0 -1
  64. package/dist/angular-Bp0XO9db.cjs +0 -3631
  65. package/dist/angular-Bp0XO9db.cjs.map +0 -1
  66. package/dist/angular-Czhp4eq5.js +0 -3629
  67. package/dist/angular-Czhp4eq5.js.map +0 -1
  68. package/dist/babel-DCR_B4Qn.js +0 -10033
  69. package/dist/babel-DCR_B4Qn.js.map +0 -1
  70. package/dist/babel-NI0v59ga.cjs +0 -10035
  71. package/dist/babel-NI0v59ga.cjs.map +0 -1
  72. package/dist/casing-BSeq_teY.js +0 -100
  73. package/dist/casing-BSeq_teY.js.map +0 -1
  74. package/dist/casing-CP-9GGdK.cjs +0 -112
  75. package/dist/casing-CP-9GGdK.cjs.map +0 -1
  76. package/dist/chunk-1SJ2vVWa.js +0 -35
  77. package/dist/estree-C3BZPlpU.cjs +0 -6930
  78. package/dist/estree-C3BZPlpU.cjs.map +0 -1
  79. package/dist/estree-DU2NummP.js +0 -6926
  80. package/dist/estree-DU2NummP.js.map +0 -1
  81. package/dist/flow-CWUBUkoi.cjs +0 -52252
  82. package/dist/flow-CWUBUkoi.cjs.map +0 -1
  83. package/dist/flow-JiEbweKj.js +0 -52250
  84. package/dist/flow-JiEbweKj.js.map +0 -1
  85. package/dist/fs-BIPMUfpW.js +0 -90
  86. package/dist/fs-BIPMUfpW.js.map +0 -1
  87. package/dist/fs-RSVoUw3S.cjs +0 -141
  88. package/dist/fs-RSVoUw3S.cjs.map +0 -1
  89. package/dist/fs.cjs +0 -17
  90. package/dist/fs.d.cts +0 -2
  91. package/dist/fs.d.ts +0 -2
  92. package/dist/fs.js +0 -4
  93. package/dist/glimmer-CX9OqG1j.cjs +0 -7275
  94. package/dist/glimmer-CX9OqG1j.cjs.map +0 -1
  95. package/dist/glimmer-t9nWn9aE.js +0 -7271
  96. package/dist/glimmer-t9nWn9aE.js.map +0 -1
  97. package/dist/graphql-DjErlIi5.js +0 -1897
  98. package/dist/graphql-DjErlIi5.js.map +0 -1
  99. package/dist/graphql-GOxQAKxM.cjs +0 -1902
  100. package/dist/graphql-GOxQAKxM.cjs.map +0 -1
  101. package/dist/html-CWrdYAhQ.cjs +0 -6560
  102. package/dist/html-CWrdYAhQ.cjs.map +0 -1
  103. package/dist/html-_apcbx34.js +0 -6555
  104. package/dist/html-_apcbx34.js.map +0 -1
  105. package/dist/index-BTe91LHd.d.ts +0 -145
  106. package/dist/index-BmQIxvw0.d.cts +0 -144
  107. package/dist/logger-BXL0YCrv.cjs.map +0 -1
  108. package/dist/logger-CDxSrFkR.js.map +0 -1
  109. package/dist/markdown-ckUc3Q6q.js +0 -6750
  110. package/dist/markdown-ckUc3Q6q.js.map +0 -1
  111. package/dist/markdown-pzqiRmft.cjs +0 -6755
  112. package/dist/markdown-pzqiRmft.cjs.map +0 -1
  113. package/dist/meriyah-BjnGqpUs.js +0 -8928
  114. package/dist/meriyah-BjnGqpUs.js.map +0 -1
  115. package/dist/meriyah-D_x7itbT.cjs +0 -8930
  116. package/dist/meriyah-D_x7itbT.cjs.map +0 -1
  117. package/dist/mocks.cjs +0 -16830
  118. package/dist/mocks.cjs.map +0 -1
  119. package/dist/mocks.d.cts +0 -13
  120. package/dist/mocks.d.ts +0 -13
  121. package/dist/mocks.js +0 -16818
  122. package/dist/mocks.js.map +0 -1
  123. package/dist/postcss-B_c2wbFu.cjs +0 -6689
  124. package/dist/postcss-B_c2wbFu.cjs.map +0 -1
  125. package/dist/postcss-v7BP6SZ-.js +0 -6684
  126. package/dist/postcss-v7BP6SZ-.js.map +0 -1
  127. package/dist/transformers-BH0KLJJP.cjs +0 -804
  128. package/dist/transformers-BH0KLJJP.cjs.map +0 -1
  129. package/dist/transformers-DzHGqYO2.js +0 -702
  130. package/dist/transformers-DzHGqYO2.js.map +0 -1
  131. package/dist/typescript-6kMN6Wqz.cjs +0 -23014
  132. package/dist/typescript-6kMN6Wqz.cjs.map +0 -1
  133. package/dist/typescript-B_IBfKSe.js +0 -23002
  134. package/dist/typescript-B_IBfKSe.js.map +0 -1
  135. package/dist/typescript-C5hce4HG.cjs +0 -4
  136. package/dist/typescript-Cas1XcNz.js +0 -3
  137. package/dist/write-BJfM7G1_.cjs +0 -49
  138. package/dist/write-BJfM7G1_.cjs.map +0 -1
  139. package/dist/write-CxO1CDML.js +0 -40
  140. package/dist/write-CxO1CDML.js.map +0 -1
  141. package/dist/yaml-BfWM_B73.js +0 -5209
  142. package/dist/yaml-BfWM_B73.js.map +0 -1
  143. package/dist/yaml-DZs6MhV1.cjs +0 -5215
  144. package/dist/yaml-DZs6MhV1.cjs.map +0 -1
  145. package/src/fs/types.ts +0 -132
  146. package/src/fs/unlink.ts +0 -5
  147. package/src/mocks/index.ts +0 -82
package/dist/utils.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { t as PossiblePromise } from "./types-C3ea5qNG.cjs";
1
+ import { t as PossiblePromise } from "./types-DueAg3XP.cjs";
2
2
 
3
3
  //#region src/utils/Cache.d.ts
4
4
  declare class Cache<T> {
package/dist/utils.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { t as PossiblePromise } from "./types-BzI9JlV8.js";
1
+ import { t as PossiblePromise } from "./types-DCR_QgGt.js";
2
2
 
3
3
  //#region src/utils/Cache.d.ts
4
4
  declare class Cache<T> {
package/dist/utils.js CHANGED
@@ -1,7 +1,6 @@
1
- import { r as __toESM } from "./chunk-1SJ2vVWa.js";
2
- import { m as require_main } from "./transformers-DzHGqYO2.js";
3
- import { n as getUniqueName, r as setUniqueName, t as URLPath } from "./URLPath-BYceu_vY.js";
4
- import { t as camelCase } from "./casing-BSeq_teY.js";
1
+ import { m as camelCase } from "./transformers-CeNW0G32.js";
2
+ import { n as getUniqueName, r as setUniqueName, t as URLPath } from "./URLPath-DbWtfVa1.js";
3
+ import { orderBy } from "natural-orderby";
5
4
 
6
5
  //#region src/utils/Cache.ts
7
6
  var Cache = class {
@@ -29,7 +28,6 @@ var Cache = class {
29
28
 
30
29
  //#endregion
31
30
  //#region src/utils/FunctionParams.ts
32
- var import_main = /* @__PURE__ */ __toESM(require_main(), 1);
33
31
  /**
34
32
  * @deprecated
35
33
  */
@@ -53,7 +51,7 @@ var FunctionParams = class FunctionParams {
53
51
  return this;
54
52
  }
55
53
  static #orderItems(items) {
56
- return (0, import_main.orderBy)(items.filter(Boolean), [(v) => {
54
+ return orderBy(items.filter(Boolean), [(v) => {
57
55
  if (Array.isArray(v)) return;
58
56
  return !v.default;
59
57
  }, (v) => {
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["#buffer","#items","#orderItems","#addParams","type: string[]","name: string[]","item"],"sources":["../src/utils/Cache.ts","../src/utils/FunctionParams.ts","../src/utils/promise.ts","../src/utils/renderTemplate.ts","../src/utils/timeout.ts"],"sourcesContent":["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 { 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"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","names":["#buffer","#items","#orderItems","#addParams","type: string[]","name: string[]","item"],"sources":["../src/utils/Cache.ts","../src/utils/FunctionParams.ts","../src/utils/promise.ts","../src/utils/renderTemplate.ts","../src/utils/timeout.ts"],"sourcesContent":["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 { 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"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/core",
3
- "version": "4.3.1",
3
+ "version": "4.4.1",
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",
@@ -26,10 +26,6 @@
26
26
  "import": "./dist/index.js",
27
27
  "require": "./dist/index.cjs"
28
28
  },
29
- "./fs": {
30
- "import": "./dist/fs.js",
31
- "require": "./dist/fs.cjs"
32
- },
33
29
  "./hooks": {
34
30
  "import": "./dist/hooks.js",
35
31
  "require": "./dist/hooks.cjs"
@@ -38,10 +34,6 @@
38
34
  "import": "./dist/logger.js",
39
35
  "require": "./dist/logger.cjs"
40
36
  },
41
- "./mocks": {
42
- "import": "./dist/mocks.js",
43
- "require": "./dist/mocks.cjs"
44
- },
45
37
  "./transformers": {
46
38
  "import": "./dist/transformers.js",
47
39
  "require": "./dist/transformers.cjs"
@@ -66,9 +58,6 @@
66
58
  "logger": [
67
59
  "./dist/logger.d.ts"
68
60
  ],
69
- "mocks": [
70
- "./dist/mocks.d.ts"
71
- ],
72
61
  "hooks": [
73
62
  "./dist/hooks.d.ts"
74
63
  ],
@@ -86,9 +75,15 @@
86
75
  "!/**/**.test.**",
87
76
  "!/**/__tests__/**"
88
77
  ],
78
+ "size-limit": [
79
+ {
80
+ "path": "./dist/*.js",
81
+ "limit": "510 KiB",
82
+ "gzip": true
83
+ }
84
+ ],
89
85
  "dependencies": {
90
- "@kubb/fabric-core": "0.1.8",
91
- "@kubb/parser-ts": "^4.1.4",
86
+ "@kubb/react-fabric": "0.2.10",
92
87
  "camelcase": "^8.0.0",
93
88
  "find-up": "^7.0.0",
94
89
  "fs-extra": "^11.3.2",
@@ -99,8 +94,7 @@
99
94
  "picocolors": "^1.1.1",
100
95
  "remeda": "^2.32.0",
101
96
  "seedrandom": "^3.0.5",
102
- "semver": "^7.7.3",
103
- "@kubb/react": "4.3.1"
97
+ "semver": "^7.7.3"
104
98
  },
105
99
  "devDependencies": {
106
100
  "@types/fs-extra": "^11.0.4",
@@ -108,12 +102,13 @@
108
102
  "@types/seedrandom": "^3.0.8",
109
103
  "@types/semver": "^7.7.1",
110
104
  "consola": "^3.4.2",
111
- "tsdown": "^0.15.9",
112
- "typescript": "^5.9.3",
113
105
  "zod": "^4.1.12"
114
106
  },
107
+ "optionalDependencies": {
108
+ "@kubb/fabric-core": "0.2.10"
109
+ },
115
110
  "peerDependencies": {
116
- "@kubb/react": "^4.3.0"
111
+ "@kubb/react-fabric": "0.2.10"
117
112
  },
118
113
  "engines": {
119
114
  "node": ">=20"
@@ -123,7 +118,7 @@
123
118
  "registry": "https://registry.npmjs.org/"
124
119
  },
125
120
  "scripts": {
126
- "build": "tsdown",
121
+ "build": "tsdown && size-limit",
127
122
  "clean": "npx rimraf ./dist",
128
123
  "lint": "bun biome lint .",
129
124
  "lint:fix": "bun biome lint --fix --unsafe .",
@@ -1,7 +1,7 @@
1
1
  /** biome-ignore-all lint/suspicious/useIterableCallbackReturn: not needed */
2
2
  import { join } from 'node:path'
3
+ import type { KubbFile } from '@kubb/fabric-core/types'
3
4
  import type { FileMetaBase } from './FileManager.ts'
4
- import type { KubbFile } from './fs/index.ts'
5
5
  import { getRelativePath } from './fs/index.ts'
6
6
  import type { Logger } from './logger.ts'
7
7
  import { TreeNode } from './utils/TreeNode.ts'
@@ -1,7 +1,6 @@
1
1
  import { extname, join } from 'node:path'
2
+ import type { KubbFile } from '@kubb/fabric-core/types'
2
3
  import { BarrelManager } from './BarrelManager.ts'
3
- import type { KubbFile } from './fs/index.ts'
4
- import { trimExtName } from './fs/index.ts'
5
4
  import type { Logger } from './logger.ts'
6
5
  import type { BarrelType, Plugin } from './types.ts'
7
6
 
@@ -37,6 +36,10 @@ export function getMode(path: string | undefined | null): KubbFile.Mode {
37
36
  return extname(path) ? 'single' : 'split'
38
37
  }
39
38
 
39
+ function trimExtName(text: string): string {
40
+ return text.replace(/\.[^/.]+$/, '')
41
+ }
42
+
40
43
  export async function getBarrelFiles(
41
44
  files: Array<KubbFile.ResolvedFile>,
42
45
  { type, meta = {}, root, output, logger }: AddIndexesProps,
@@ -1,6 +1,6 @@
1
- import { FileManager } from '@kubb/fabric-core'
1
+ import type { KubbFile } from '@kubb/fabric-core/types'
2
+ import type { Fabric } from '@kubb/react-fabric'
2
3
  import { ValidationPluginError } from './errors.ts'
3
- import type { KubbFile } from './fs/index.ts'
4
4
  import type { Logger } from './logger.ts'
5
5
  import { isPromiseRejectedResult, PromiseManager } from './PromiseManager.ts'
6
6
  import type { PluginCore } from './plugin.ts'
@@ -47,6 +47,7 @@ type SafeParseResult<H extends PluginLifecycleHooks, Result = ReturnType<ParseRe
47
47
  // inspired by: https://github.com/rollup/rollup/blob/master/src/utils/PluginDriver.ts#
48
48
 
49
49
  type Options = {
50
+ fabric: Fabric
50
51
  logger: Logger
51
52
  /**
52
53
  * @default Number.POSITIVE_INFINITY
@@ -70,10 +71,6 @@ type GetFileProps<TOptions = object> = {
70
71
 
71
72
  export class PluginManager {
72
73
  readonly plugins = new Set<Plugin<GetPluginFactoryOptions<any>>>()
73
- /**
74
- * @deprecated do not use from pluginManager
75
- */
76
- readonly fileManager: FileManager
77
74
  readonly events: EventEmitter<Events> = new EventEmitter()
78
75
 
79
76
  readonly config: Config
@@ -90,16 +87,15 @@ export class PluginManager {
90
87
  this.config = config
91
88
  this.options = options
92
89
  this.logger = options.logger
93
- this.fileManager = new FileManager()
94
90
  this.#promiseManager = new PromiseManager({
95
91
  nullCheck: (state: SafeParseResult<'resolveName'> | null) => !!state?.result,
96
92
  })
97
93
 
98
94
  const core = pluginCore({
95
+ fabric: options.fabric,
99
96
  config,
100
97
  logger: this.logger,
101
98
  pluginManager: this,
102
- fileManager: this.fileManager,
103
99
  resolvePath: this.resolvePath.bind(this),
104
100
  resolveName: this.resolveName.bind(this),
105
101
  getPlugins: this.#getSortedPlugins.bind(this),
package/src/build.ts CHANGED
@@ -1,9 +1,13 @@
1
1
  import { join, relative, resolve } from 'node:path'
2
- import { typescriptParser } from '@kubb/react'
2
+ import type { KubbFile } from '@kubb/fabric-core/types'
3
+ import type { Fabric } from '@kubb/react-fabric'
4
+ import { createFabric } from '@kubb/react-fabric'
5
+ import { typescriptParser } from '@kubb/react-fabric/parsers'
6
+ import { fsPlugin } from '@kubb/react-fabric/plugins'
3
7
  import pc from 'picocolors'
4
8
  import { isDeepEqual } from 'remeda'
5
9
  import { isInputPath } from './config.ts'
6
- import { clean, exists, getRelativePath, type KubbFile, write } from './fs/index.ts'
10
+ import { clean, exists, getRelativePath, write } from './fs/index.ts'
7
11
  import type { Logger } from './logger.ts'
8
12
  import { createLogger } from './logger.ts'
9
13
  import { PluginManager } from './PluginManager.ts'
@@ -16,10 +20,10 @@ type BuildOptions = {
16
20
  * @default Logger without the spinner
17
21
  */
18
22
  logger?: Logger
19
- pluginManager?: PluginManager
20
23
  }
21
24
 
22
25
  type BuildOutput = {
26
+ fabric: Fabric
23
27
  files: Array<KubbFile.ResolvedFile>
24
28
  pluginManager: PluginManager
25
29
  /**
@@ -28,11 +32,12 @@ type BuildOutput = {
28
32
  error?: Error
29
33
  }
30
34
 
31
- export async function setup(options: BuildOptions): Promise<PluginManager> {
32
- if (options.pluginManager) {
33
- return options.pluginManager
34
- }
35
+ type SetupResult = {
36
+ fabric: Fabric
37
+ pluginManager: PluginManager
38
+ }
35
39
 
40
+ export async function setup(options: BuildOptions): Promise<SetupResult> {
36
41
  const { config: userConfig, logger = createLogger() } = options
37
42
 
38
43
  if (Array.isArray(userConfig.input)) {
@@ -74,38 +79,39 @@ export async function setup(options: BuildOptions): Promise<PluginManager> {
74
79
  await clean(join(definedConfig.root, '.kubb'))
75
80
  }
76
81
 
77
- return new PluginManager(definedConfig, { logger, concurrency: 5 })
82
+ const fabric = createFabric()
83
+ fabric.use(fsPlugin, { dryRun: !definedConfig.output.write })
84
+ fabric.use(typescriptParser)
85
+
86
+ const pluginManager = new PluginManager(definedConfig, { fabric, logger, concurrency: 5 })
87
+
88
+ return {
89
+ fabric,
90
+ pluginManager,
91
+ }
78
92
  }
79
93
 
80
- export async function build(options: BuildOptions): Promise<BuildOutput> {
81
- const { files, pluginManager, error } = await safeBuild(options)
94
+ export async function build(options: BuildOptions, overrides?: SetupResult): Promise<BuildOutput> {
95
+ const { fabric, files, pluginManager, error } = await safeBuild(options, overrides)
82
96
 
83
- if (error) throw error
97
+ if (error) {
98
+ throw error
99
+ }
84
100
 
85
101
  return {
102
+ fabric,
86
103
  files,
87
104
  pluginManager,
88
105
  error,
89
106
  }
90
107
  }
91
108
 
92
- export async function safeBuild(options: BuildOptions): Promise<BuildOutput> {
93
- const pluginManager = await setup(options)
109
+ export async function safeBuild(options: BuildOptions, overrides?: SetupResult): Promise<BuildOutput> {
110
+ const { fabric, pluginManager } = overrides ? overrides : await setup(options)
94
111
 
95
112
  const config = pluginManager.config
96
113
 
97
114
  try {
98
- pluginManager.events.on('executing', ({ plugin, message }) => {
99
- pluginManager.logger.emit('debug', { date: new Date(), logs: [`Executing pluginKey ${plugin.key?.join('.')} | ${message}`] })
100
- })
101
-
102
- pluginManager.events.on('executed', ({ plugin, message, output }) => {
103
- pluginManager.logger.emit('debug', {
104
- date: new Date(),
105
- logs: [`Executed pluginKey ${plugin.key?.join('.')} | ${message} | ${JSON.stringify(output, undefined, 2)}`],
106
- })
107
- })
108
-
109
115
  await pluginManager.hookParallel({
110
116
  hookName: 'buildStart',
111
117
  parameters: [config],
@@ -113,14 +119,10 @@ export async function safeBuild(options: BuildOptions): Promise<BuildOutput> {
113
119
  })
114
120
 
115
121
  if (config.output.barrelType) {
116
- // create root barrel file
117
122
  const root = resolve(config.root)
118
123
  const rootPath = resolve(root, config.output.path, 'index.ts')
119
124
 
120
- //TODO find clean method without loading all files
121
- const files = await pluginManager.fileManager.files
122
-
123
- const barrelFiles = files.filter((file) => {
125
+ const barrelFiles = fabric.files.filter((file) => {
124
126
  return file.sources.some((source) => source.isIndexable)
125
127
  })
126
128
 
@@ -161,14 +163,14 @@ export async function safeBuild(options: BuildOptions): Promise<BuildOutput> {
161
163
  meta: {},
162
164
  }
163
165
 
164
- await pluginManager.fileManager.add(rootFile)
166
+ await fabric.addFile(rootFile)
165
167
  }
166
168
 
167
- pluginManager.fileManager.processor.events.on('process:start', ({ files }) => {
169
+ fabric.context.events.on('process:start', ({ files }) => {
168
170
  pluginManager.logger.emit('progress_start', { id: 'files', size: files.length, message: 'Writing files ...' })
169
171
  })
170
172
 
171
- pluginManager.fileManager.processor.events.on('process:progress', async ({ file, source }) => {
173
+ fabric.context.events.on('process:progress', async ({ file, source }) => {
172
174
  const message = file ? `Writing ${relative(config.root, file.path)}` : ''
173
175
  pluginManager.logger.emit('progressed', { id: 'files', message })
174
176
 
@@ -177,28 +179,23 @@ export async function safeBuild(options: BuildOptions): Promise<BuildOutput> {
177
179
  }
178
180
  })
179
181
 
180
- pluginManager.fileManager.processor.events.on('process:end', () => {
182
+ fabric.context.events.on('process:end', () => {
181
183
  pluginManager.logger.emit('progress_stop', { id: 'files' })
182
184
  })
185
+ const files = [...fabric.files]
183
186
 
184
- const parsers = new Set<any>([typescriptParser])
185
-
186
- const files = await pluginManager.fileManager.write({
187
- extension: config.output.extension,
188
- dryRun: !config.output.write,
189
- parsers,
190
- })
187
+ await fabric.write({ extension: config.output.extension })
191
188
 
192
189
  await pluginManager.hookParallel({ hookName: 'buildEnd', message: `Build stopped for ${config.name}` })
193
190
 
194
- await pluginManager.fileManager.clear()
195
-
196
191
  return {
192
+ fabric,
197
193
  files,
198
194
  pluginManager,
199
195
  }
200
196
  } catch (e) {
201
197
  return {
198
+ fabric,
202
199
  files: [],
203
200
  pluginManager,
204
201
  error: e as Error,
package/src/fs/index.ts CHANGED
@@ -1,12 +1,5 @@
1
1
  export { clean } from './clean.ts'
2
2
  export { exists } from './exists.ts'
3
3
  export { read, readSync } from './read.ts'
4
- export { unlink } from './unlink.ts'
5
4
  export { getRelativePath } from './utils.ts'
6
5
  export { write } from './write.ts'
7
-
8
- export function trimExtName(text: string): string {
9
- return text.replace(/\.[^/.]+$/, '')
10
- }
11
-
12
- export * as KubbFile from './types.ts'
@@ -1,5 +1,5 @@
1
- import { useApp } from '@kubb/react'
2
- import type { KubbFile } from '../fs/index.ts'
1
+ import type { KubbFile } from '@kubb/fabric-core/types'
2
+ import { useApp } from '@kubb/react-fabric'
3
3
 
4
4
  export function useMode(): KubbFile.Mode {
5
5
  const { meta } = useApp<{ mode: KubbFile.Mode }>()
@@ -1,4 +1,4 @@
1
- import { useApp } from '@kubb/react'
1
+ import { useApp } from '@kubb/react-fabric'
2
2
  import type { Plugin, PluginFactoryOptions } from '../types.ts'
3
3
 
4
4
  export function usePlugin<TOptions extends PluginFactoryOptions = PluginFactoryOptions>(): Plugin<TOptions> {
@@ -1,4 +1,4 @@
1
- import { useApp } from '@kubb/react'
1
+ import { useApp } from '@kubb/react-fabric'
2
2
  import type { PluginManager } from '../PluginManager.ts'
3
3
 
4
4
  export function usePluginManager(): PluginManager {
package/src/plugin.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import path from 'node:path'
2
2
 
3
- import type { FileManager } from '@kubb/fabric-core'
3
+ import type { Fabric } from '@kubb/react-fabric'
4
4
  import type { PluginManager } from './PluginManager.ts'
5
5
  import type { Plugin, PluginContext, PluginFactoryOptions, UserPluginWithLifeCycle } from './types.ts'
6
6
 
@@ -15,8 +15,8 @@ export function createPlugin<T extends PluginFactoryOptions = PluginFactoryOptio
15
15
  }
16
16
 
17
17
  type Options = {
18
+ fabric: Fabric
18
19
  config: PluginContext['config']
19
- fileManager: FileManager
20
20
  pluginManager: PluginManager
21
21
  resolvePath: PluginContext['resolvePath']
22
22
  resolveName: PluginContext['resolveName']
@@ -29,7 +29,7 @@ type Options = {
29
29
  export type PluginCore = PluginFactoryOptions<'core', Options, Options, PluginContext, never>
30
30
 
31
31
  export const pluginCore = createPlugin<PluginCore>((options) => {
32
- const { fileManager, pluginManager, resolvePath, resolveName, logger } = options
32
+ const { fabric, pluginManager, resolvePath, resolveName, logger } = options
33
33
 
34
34
  return {
35
35
  name: 'core',
@@ -37,6 +37,9 @@ export const pluginCore = createPlugin<PluginCore>((options) => {
37
37
  key: ['core'],
38
38
  context() {
39
39
  return {
40
+ get fabric() {
41
+ return fabric
42
+ },
40
43
  get config() {
41
44
  return options.config
42
45
  },
@@ -48,10 +51,12 @@ export const pluginCore = createPlugin<PluginCore>((options) => {
48
51
  return options.plugin as NonNullable<Options['plugin']>
49
52
  },
50
53
  logger,
51
- fileManager,
54
+ get fileManager() {
55
+ return fabric.context.fileManager
56
+ },
52
57
  pluginManager,
53
58
  async addFile(...files) {
54
- const resolvedFiles = await fileManager.add(...files)
59
+ const resolvedFiles = await fabric.context.fileManager.add(...files)
55
60
 
56
61
  if (!Array.isArray(resolvedFiles)) {
57
62
  return [resolvedFiles]
package/src/types.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { FileManager } from '@kubb/fabric-core'
2
- import type { KubbFile } from './fs/index.ts'
1
+ import type { KubbFile } from '@kubb/fabric-core/types'
2
+ import type { Fabric, FileManager } from '@kubb/react-fabric'
3
3
  import type { Logger } from './logger.ts'
4
4
  import type { PluginManager } from './PluginManager.ts'
5
5
  import type { PossiblePromise } from './utils/types.ts'
@@ -299,6 +299,7 @@ export type ResolveNameParams = {
299
299
  }
300
300
 
301
301
  export type PluginContext<TOptions extends PluginFactoryOptions = PluginFactoryOptions> = {
302
+ fabric: Fabric
302
303
  config: Config
303
304
  /**
304
305
  * @deprecated
@@ -1,5 +1,5 @@
1
+ import type { KubbFile } from '@kubb/fabric-core/types'
1
2
  import { getMode } from '../FileManager.ts'
2
- import type { KubbFile } from '../fs/index.ts'
3
3
 
4
4
  type BarrelData = {
5
5
  file?: KubbFile.File