@kubb/plugin-oas 3.0.0-alpha.6 → 3.0.0-alpha.8

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 (58) hide show
  1. package/dist/{OperationGenerator-Dzs1oRvm.d.ts → OperationGenerator-DeXrfGDC.d.ts} +2 -2
  2. package/dist/{OperationGenerator-Do52cvD0.d.cts → OperationGenerator-DhJ0MBKc.d.cts} +2 -2
  3. package/dist/{Schema-C90zFdkU.d.ts → Schema-B1vcPGiK.d.ts} +2 -4
  4. package/dist/{Schema-DDVEcNcu.d.cts → Schema-DoSFh7Qd.d.cts} +2 -4
  5. package/dist/{SchemaMapper-BM1IGWqD.d.cts → SchemaMapper-sGcY1xL5.d.cts} +0 -1
  6. package/dist/{SchemaMapper-BM1IGWqD.d.ts → SchemaMapper-sGcY1xL5.d.ts} +0 -1
  7. package/dist/chunk-75BIOXB7.cjs +7 -0
  8. package/dist/{chunk-7KIEQOVZ.cjs.map → chunk-75BIOXB7.cjs.map} +1 -1
  9. package/dist/{chunk-UJNAXXVE.js → chunk-MUI5DWM3.js} +458 -465
  10. package/dist/{chunk-UJNAXXVE.js.map → chunk-MUI5DWM3.js.map} +1 -1
  11. package/dist/{chunk-Y4V7HHX7.js → chunk-N7EEVJA6.js} +3 -3
  12. package/dist/{chunk-P42X362U.cjs → chunk-NU4F7G47.cjs} +4 -16
  13. package/dist/chunk-NU4F7G47.cjs.map +1 -0
  14. package/dist/{chunk-QLJIL3U5.cjs → chunk-O76YQFZB.cjs} +3 -3
  15. package/dist/{chunk-QLJIL3U5.cjs.map → chunk-O76YQFZB.cjs.map} +1 -1
  16. package/dist/{chunk-TWKZEVSM.js → chunk-SQ64ESS4.js} +2 -2
  17. package/dist/{chunk-UB552H4J.js → chunk-SZDO532A.js} +3 -15
  18. package/dist/{chunk-UB552H4J.js.map → chunk-SZDO532A.js.map} +1 -1
  19. package/dist/{chunk-RQZBFORW.cjs → chunk-VSVVTCQB.cjs} +481 -488
  20. package/dist/chunk-VSVVTCQB.cjs.map +1 -0
  21. package/dist/components.cjs +4 -4
  22. package/dist/components.d.cts +4 -4
  23. package/dist/components.d.ts +4 -4
  24. package/dist/components.js +3 -3
  25. package/dist/hooks.cjs +12 -12
  26. package/dist/hooks.cjs.map +1 -1
  27. package/dist/hooks.d.cts +3 -3
  28. package/dist/hooks.d.ts +3 -3
  29. package/dist/hooks.js +2 -2
  30. package/dist/hooks.js.map +1 -1
  31. package/dist/index.cjs +112 -115
  32. package/dist/index.cjs.map +1 -1
  33. package/dist/index.d.cts +4 -4
  34. package/dist/index.d.ts +4 -4
  35. package/dist/index.js +83 -86
  36. package/dist/index.js.map +1 -1
  37. package/dist/{types-C2RXaY0_.d.cts → types-CZTUCaE5.d.cts} +2 -0
  38. package/dist/{types-C2RXaY0_.d.ts → types-CZTUCaE5.d.ts} +2 -0
  39. package/dist/utils.cjs +9 -54
  40. package/dist/utils.cjs.map +1 -1
  41. package/dist/utils.d.cts +5 -35
  42. package/dist/utils.d.ts +5 -35
  43. package/dist/utils.js +2 -47
  44. package/dist/utils.js.map +1 -1
  45. package/package.json +9 -9
  46. package/src/SchemaGenerator.ts +2 -2
  47. package/src/SchemaMapper.ts +1 -1
  48. package/src/components/Schema.tsx +8 -4
  49. package/src/hooks/useOperationManager.ts +1 -0
  50. package/src/plugin.ts +11 -0
  51. package/src/types.ts +2 -0
  52. package/src/utils/index.ts +0 -1
  53. package/dist/chunk-7KIEQOVZ.cjs +0 -7
  54. package/dist/chunk-P42X362U.cjs.map +0 -1
  55. package/dist/chunk-RQZBFORW.cjs.map +0 -1
  56. package/src/utils/getGroupedByTagFiles.ts +0 -84
  57. /package/dist/{chunk-Y4V7HHX7.js.map → chunk-N7EEVJA6.js.map} +0 -0
  58. /package/dist/{chunk-TWKZEVSM.js.map → chunk-SQ64ESS4.js.map} +0 -0
package/dist/index.js CHANGED
@@ -1,23 +1,19 @@
1
1
  import {
2
2
  parseFromConfig
3
- } from "./chunk-Y4V7HHX7.js";
4
- import "./chunk-TWKZEVSM.js";
3
+ } from "./chunk-N7EEVJA6.js";
4
+ import "./chunk-SQ64ESS4.js";
5
5
  import {
6
6
  Oas,
7
7
  SchemaGenerator,
8
8
  isKeyword,
9
9
  require_jsx_runtime,
10
10
  schemaKeywords
11
- } from "./chunk-UJNAXXVE.js";
11
+ } from "./chunk-MUI5DWM3.js";
12
12
  import {
13
- __privateAdd,
14
- __privateGet,
15
- __privateMethod,
16
- __privateSet,
17
13
  __toESM,
18
14
  getSchemas,
19
15
  init_esm_shims
20
- } from "./chunk-UB552H4J.js";
16
+ } from "./chunk-SZDO532A.js";
21
17
 
22
18
  // src/index.ts
23
19
  init_esm_shims();
@@ -26,18 +22,77 @@ init_esm_shims();
26
22
  init_esm_shims();
27
23
  import { Generator } from "@kubb/core";
28
24
  import transformers from "@kubb/core/transformers";
29
- var _operationsByMethod, _OperationGenerator_instances, getOptions_fn, isExcluded_fn, isIncluded_fn;
30
25
  var OperationGenerator = class extends Generator {
31
- constructor() {
32
- super(...arguments);
33
- __privateAdd(this, _OperationGenerator_instances);
34
- __privateAdd(this, _operationsByMethod, {});
35
- }
26
+ #operationsByMethod = {};
36
27
  get operationsByMethod() {
37
- return __privateGet(this, _operationsByMethod);
28
+ return this.#operationsByMethod;
38
29
  }
39
30
  set operationsByMethod(paths) {
40
- __privateSet(this, _operationsByMethod, paths);
31
+ this.#operationsByMethod = paths;
32
+ }
33
+ #getOptions(operation, method) {
34
+ const { override = [] } = this.context;
35
+ return override.find(({ pattern, type }) => {
36
+ if (type === "tag") {
37
+ return !!operation.getTags()[0]?.name.match(pattern);
38
+ }
39
+ if (type === "operationId") {
40
+ return !!operation.getOperationId().match(pattern);
41
+ }
42
+ if (type === "path") {
43
+ return !!operation.path.match(pattern);
44
+ }
45
+ if (type === "method") {
46
+ return !!method.match(pattern);
47
+ }
48
+ return false;
49
+ })?.options || {};
50
+ }
51
+ /**
52
+ *
53
+ * @deprecated
54
+ */
55
+ #isExcluded(operation, method) {
56
+ const { exclude = [] } = this.context;
57
+ let matched = false;
58
+ exclude.forEach(({ pattern, type }) => {
59
+ if (type === "tag" && !matched) {
60
+ matched = !!operation.getTags()[0]?.name.match(pattern);
61
+ }
62
+ if (type === "operationId" && !matched) {
63
+ matched = !!operation.getOperationId().match(pattern);
64
+ }
65
+ if (type === "path" && !matched) {
66
+ matched = !!operation.path.match(pattern);
67
+ }
68
+ if (type === "method" && !matched) {
69
+ matched = !!method.match(pattern);
70
+ }
71
+ });
72
+ return matched;
73
+ }
74
+ /**
75
+ *
76
+ * @deprecated
77
+ */
78
+ #isIncluded(operation, method) {
79
+ const { include = [] } = this.context;
80
+ let matched = false;
81
+ include.forEach(({ pattern, type }) => {
82
+ if (type === "tag" && !matched) {
83
+ matched = !!operation.getTags()[0]?.name.match(pattern);
84
+ }
85
+ if (type === "operationId" && !matched) {
86
+ matched = !!operation.getOperationId().match(pattern);
87
+ }
88
+ if (type === "path" && !matched) {
89
+ matched = !!operation.path.match(pattern);
90
+ }
91
+ if (type === "method" && !matched) {
92
+ matched = !!method.match(pattern);
93
+ }
94
+ });
95
+ return matched;
41
96
  }
42
97
  getSchemas(operation, {
43
98
  forStatusCode,
@@ -124,8 +179,8 @@ var OperationGenerator = class extends Generator {
124
179
  methods.forEach((method2) => {
125
180
  const operation = oas.operation(path2, method2);
126
181
  if (operation) {
127
- const isExcluded = __privateMethod(this, _OperationGenerator_instances, isExcluded_fn).call(this, operation, method2);
128
- const isIncluded = this.context.include ? __privateMethod(this, _OperationGenerator_instances, isIncluded_fn).call(this, operation, method2) : true;
182
+ const isExcluded = this.#isExcluded(operation, method2);
183
+ const isIncluded = this.context.include ? this.#isIncluded(operation, method2) : true;
129
184
  if (isIncluded && !isExcluded) {
130
185
  if (!acc[path2]) {
131
186
  acc[path2] = {};
@@ -146,7 +201,7 @@ var OperationGenerator = class extends Generator {
146
201
  const methods = this.operationsByMethod[path2] ? Object.keys(this.operationsByMethod[path2]) : [];
147
202
  methods.forEach((method) => {
148
203
  const { operation } = this.operationsByMethod[path2]?.[method];
149
- const options = __privateMethod(this, _OperationGenerator_instances, getOptions_fn).call(this, operation, method);
204
+ const options = this.#getOptions(operation, method);
150
205
  const methodToCall = this[method];
151
206
  if (typeof methodToCall === "function") {
152
207
  const promiseMethod = methodToCall?.call(this, operation, {
@@ -239,76 +294,10 @@ var OperationGenerator = class extends Generator {
239
294
  return [];
240
295
  }
241
296
  };
242
- _operationsByMethod = new WeakMap();
243
- _OperationGenerator_instances = new WeakSet();
244
- getOptions_fn = function(operation, method) {
245
- const { override = [] } = this.context;
246
- return override.find(({ pattern, type }) => {
247
- if (type === "tag") {
248
- return !!operation.getTags()[0]?.name.match(pattern);
249
- }
250
- if (type === "operationId") {
251
- return !!operation.getOperationId().match(pattern);
252
- }
253
- if (type === "path") {
254
- return !!operation.path.match(pattern);
255
- }
256
- if (type === "method") {
257
- return !!method.match(pattern);
258
- }
259
- return false;
260
- })?.options || {};
261
- };
262
- /**
263
- *
264
- * @deprecated
265
- */
266
- isExcluded_fn = function(operation, method) {
267
- const { exclude = [] } = this.context;
268
- let matched = false;
269
- exclude.forEach(({ pattern, type }) => {
270
- if (type === "tag" && !matched) {
271
- matched = !!operation.getTags()[0]?.name.match(pattern);
272
- }
273
- if (type === "operationId" && !matched) {
274
- matched = !!operation.getOperationId().match(pattern);
275
- }
276
- if (type === "path" && !matched) {
277
- matched = !!operation.path.match(pattern);
278
- }
279
- if (type === "method" && !matched) {
280
- matched = !!method.match(pattern);
281
- }
282
- });
283
- return matched;
284
- };
285
- /**
286
- *
287
- * @deprecated
288
- */
289
- isIncluded_fn = function(operation, method) {
290
- const { include = [] } = this.context;
291
- let matched = false;
292
- include.forEach(({ pattern, type }) => {
293
- if (type === "tag" && !matched) {
294
- matched = !!operation.getTags()[0]?.name.match(pattern);
295
- }
296
- if (type === "operationId" && !matched) {
297
- matched = !!operation.getOperationId().match(pattern);
298
- }
299
- if (type === "path" && !matched) {
300
- matched = !!operation.path.match(pattern);
301
- }
302
- if (type === "method" && !matched) {
303
- matched = !!method.match(pattern);
304
- }
305
- });
306
- return matched;
307
- };
308
297
 
309
298
  // src/plugin.ts
310
299
  init_esm_shims();
311
- import path from "path";
300
+ import path from "node:path";
312
301
  import { createPlugin } from "@kubb/core";
313
302
  import { camelCase } from "@kubb/core/transformers";
314
303
  var pluginOasName = "plugin-oas";
@@ -337,6 +326,13 @@ var pluginOas = createPlugin((options) => {
337
326
  };
338
327
  return {
339
328
  name: pluginOasName,
329
+ output: output === false ? {
330
+ path: "",
331
+ exportType: false
332
+ } : {
333
+ exportType: "barrelNamed",
334
+ ...output
335
+ },
340
336
  options,
341
337
  context() {
342
338
  const { config, logger } = this;
@@ -384,6 +380,7 @@ var pluginOas = createPlugin((options) => {
384
380
  {
385
381
  name: camelCase(name),
386
382
  isExportable: false,
383
+ isIndexable: false,
387
384
  value: JSON.stringify(schema)
388
385
  }
389
386
  ]
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/OperationGenerator.ts","../src/plugin.ts","../src/parser.tsx"],"sourcesContent":["export type {\n GetOperationGeneratorOptions,\n OperationMethodResult,\n} from './OperationGenerator.ts'\nexport { OperationGenerator } from './OperationGenerator.ts'\nexport { pluginOas, pluginOasName } from './plugin.ts'\nexport type {\n GetSchemaGeneratorOptions,\n SchemaGeneratorBuildOptions,\n SchemaGeneratorOptions,\n} from './SchemaGenerator.ts'\nexport type { SchemaMethodResult } from './SchemaGenerator.ts'\nexport { SchemaGenerator } from './SchemaGenerator.ts'\nexport type {\n Schema,\n SchemaKeyword,\n SchemaKeywordBase,\n SchemaKeywordMapper,\n SchemaMapper,\n} from './SchemaMapper.ts'\nexport { isKeyword, schemaKeywords } from './SchemaMapper.ts'\nexport type * from './types.ts'\nexport { createParser, createReactParser } from './parser.tsx'\nexport type { ParserReactOptions } from './parser.tsx'\nexport type { Parser, ParserOptions } from './parser.tsx'\n","import { type FileMetaBase, Generator } from '@kubb/core'\nimport transformers from '@kubb/core/transformers'\n\nimport type { PluginFactoryOptions, PluginManager } from '@kubb/core'\nimport type * as KubbFile from '@kubb/fs/types'\n\nimport type { Plugin } from '@kubb/core'\nimport type { HttpMethod, Oas, OasTypes, Operation, contentType } from '@kubb/oas'\nimport type { Exclude, Include, OperationSchemas, OperationsByMethod, Override } from './types.ts'\nimport type { Parser } from './parser.tsx'\n\nexport type GetOperationGeneratorOptions<T extends OperationGenerator<any, any, any>> = T extends OperationGenerator<infer Options, any, any> ? Options : never\n\nexport type OperationMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>\n\ntype Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {\n oas: Oas\n exclude: Array<Exclude> | undefined\n include: Array<Include> | undefined\n override: Array<Override<TOptions>> | undefined\n contentType: contentType | undefined\n pluginManager: PluginManager\n /**\n * Current plugin\n */\n plugin: Plugin<TPluginOptions>\n mode: KubbFile.Mode\n}\n\nexport class OperationGenerator<\n TOptions = unknown,\n TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions,\n TFileMeta extends FileMetaBase = FileMetaBase,\n> extends Generator<TOptions, Context<TOptions, TPluginOptions>> {\n #operationsByMethod: OperationsByMethod = {}\n get operationsByMethod(): OperationsByMethod {\n return this.#operationsByMethod\n }\n\n set operationsByMethod(paths: OperationsByMethod) {\n this.#operationsByMethod = paths\n }\n\n #getOptions(operation: Operation, method: HttpMethod): Partial<TOptions> {\n const { override = [] } = this.context\n\n return (\n override.find(({ pattern, type }) => {\n if (type === 'tag') {\n return !!operation.getTags()[0]?.name.match(pattern)\n }\n\n if (type === 'operationId') {\n return !!operation.getOperationId().match(pattern)\n }\n\n if (type === 'path') {\n return !!operation.path.match(pattern)\n }\n\n if (type === 'method') {\n return !!method.match(pattern)\n }\n\n return false\n })?.options || {}\n )\n }\n\n /**\n *\n * @deprecated\n */\n #isExcluded(operation: Operation, method: HttpMethod): boolean {\n const { exclude = [] } = this.context\n let matched = false\n\n exclude.forEach(({ pattern, type }) => {\n if (type === 'tag' && !matched) {\n matched = !!operation.getTags()[0]?.name.match(pattern)\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId().match(pattern)\n }\n\n if (type === 'path' && !matched) {\n matched = !!operation.path.match(pattern)\n }\n\n if (type === 'method' && !matched) {\n matched = !!method.match(pattern)\n }\n })\n\n return matched\n }\n\n /**\n *\n * @deprecated\n */\n #isIncluded(operation: Operation, method: HttpMethod): boolean {\n const { include = [] } = this.context\n let matched = false\n\n include.forEach(({ pattern, type }) => {\n if (type === 'tag' && !matched) {\n matched = !!operation.getTags()[0]?.name.match(pattern)\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId().match(pattern)\n }\n\n if (type === 'path' && !matched) {\n matched = !!operation.path.match(pattern)\n }\n\n if (type === 'method' && !matched) {\n matched = !!method.match(pattern)\n }\n })\n\n return matched\n }\n\n getSchemas(\n operation: Operation,\n {\n forStatusCode,\n resolveName = (name) => name,\n }: {\n forStatusCode?: string | number\n resolveName?: (name: string) => string\n } = {},\n ): OperationSchemas {\n const pathParamsSchema = this.context.oas.getParametersSchema(operation, 'path')\n const queryParamsSchema = this.context.oas.getParametersSchema(operation, 'query')\n const headerParamsSchema = this.context.oas.getParametersSchema(operation, 'header')\n const requestSchema = this.context.oas.getRequestSchema(operation)\n const responseStatusCode =\n forStatusCode || (operation.schema.responses && Object.keys(operation.schema.responses).find((key) => key.startsWith('2'))) || 200\n const responseSchema = this.context.oas.getResponseSchema(operation, responseStatusCode)\n const statusCodes = operation.getResponseStatusCodes().map((statusCode) => {\n let name = statusCode\n if (name === 'default') {\n name = 'error'\n }\n\n const schema = this.context.oas.getResponseSchema(operation, statusCode)\n\n return {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} ${name}`)),\n description: (operation.getResponseByStatusCode(statusCode) as OasTypes.ResponseObject)?.description,\n schema,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n statusCode: name === 'error' ? undefined : Number(statusCode),\n keys: schema?.properties ? Object.keys(schema.properties) : undefined,\n }\n })\n\n return {\n pathParams: pathParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} PathParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n schema: pathParamsSchema,\n keys: pathParamsSchema.properties ? Object.keys(pathParamsSchema.properties) : undefined,\n }\n : undefined,\n queryParams: queryParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} QueryParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n schema: queryParamsSchema,\n keys: queryParamsSchema.properties ? Object.keys(queryParamsSchema.properties) : [],\n }\n : undefined,\n headerParams: headerParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} HeaderParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n schema: headerParamsSchema,\n keys: headerParamsSchema.properties ? Object.keys(headerParamsSchema.properties) : undefined,\n }\n : undefined,\n request: requestSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} ${operation.method === 'get' ? 'queryRequest' : 'mutationRequest'}`)),\n description: (operation.schema.requestBody as OasTypes.RequestBodyObject)?.description,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n schema: requestSchema,\n keys: requestSchema.properties ? Object.keys(requestSchema.properties) : undefined,\n keysToOmit: requestSchema.properties\n ? Object.keys(requestSchema.properties).filter((key) => {\n const item = requestSchema.properties?.[key] as OasTypes.SchemaObject\n\n return item?.readOnly\n })\n : undefined,\n }\n : undefined,\n response: {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} ${operation.method === 'get' ? 'queryResponse' : 'mutationResponse'}`)),\n description: operation.getResponseAsJSONSchema(responseStatusCode)?.at(0)?.description,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n schema: responseSchema,\n statusCode: Number(responseStatusCode),\n keys: responseSchema?.properties ? Object.keys(responseSchema.properties) : undefined,\n keysToOmit: responseSchema?.properties\n ? Object.keys(responseSchema.properties).filter((key) => {\n const item = responseSchema.properties?.[key] as OasTypes.SchemaObject\n return item?.writeOnly\n })\n : undefined,\n },\n errors: statusCodes.filter((item) => item.statusCode?.toString().startsWith('4') || item.statusCode?.toString().startsWith('5')),\n statusCodes,\n }\n }\n\n async build(...parsers: Array<Parser<Extract<TOptions, PluginFactoryOptions>>>): Promise<Array<KubbFile.File<TFileMeta>>> {\n const { oas } = this.context\n\n const paths = oas.getPaths()\n this.operationsByMethod = Object.entries(paths).reduce((acc, [path, method]) => {\n const methods = Object.keys(method) as HttpMethod[]\n\n methods.forEach((method) => {\n const operation = oas.operation(path, method)\n if (operation) {\n const isExcluded = this.#isExcluded(operation, method)\n const isIncluded = this.context.include ? this.#isIncluded(operation, method) : true\n\n if (isIncluded && !isExcluded) {\n if (!acc[path]) {\n acc[path] = {} as OperationsByMethod['get']\n }\n acc[path] = {\n ...acc[path],\n [method]: {\n operation,\n schemas: this.getSchemas(operation),\n },\n } as OperationsByMethod['get']\n }\n }\n })\n\n return acc\n }, {} as OperationsByMethod)\n\n const promises = Object.keys(this.operationsByMethod).reduce((acc, path) => {\n const methods = this.operationsByMethod[path] ? (Object.keys(this.operationsByMethod[path]!) as HttpMethod[]) : []\n\n methods.forEach((method) => {\n const { operation } = this.operationsByMethod[path]?.[method]!\n const options = this.#getOptions(operation, method)\n\n const methodToCall = this[method as keyof typeof this] as any\n\n if (typeof methodToCall === 'function') {\n const promiseMethod = methodToCall?.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseMethod) {\n acc.push(promiseMethod)\n }\n }\n\n const promiseOperation = this.operation.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseOperation) {\n acc.push(promiseOperation)\n }\n\n parsers?.forEach((parser) => {\n const promise = parser.operation?.({\n instance: this,\n operation,\n options: {\n ...this.options,\n ...options,\n },\n } as any) as Promise<Array<KubbFile.File<TFileMeta>>>\n\n if (promise) {\n acc.push(promise)\n }\n })\n })\n\n return acc\n }, [] as OperationMethodResult<TFileMeta>[])\n\n const operations = Object.values(this.operationsByMethod).map((item) => Object.values(item).map((item) => item.operation))\n\n promises.push(this.all(operations.flat().filter(Boolean), this.operationsByMethod))\n\n parsers?.forEach((parser) => {\n const promise = parser.operations?.({\n instance: this,\n operations: operations.flat().filter(Boolean),\n operationsByMethod: this.operationsByMethod,\n options: this.options,\n } as any) as Promise<Array<KubbFile.File<TFileMeta>>>\n\n if (promise) {\n promises.push(promise)\n }\n })\n\n const files = await Promise.all(promises)\n\n // using .flat because operationGenerator[method] can return a array of files or just one file\n return files.flat().filter(Boolean)\n }\n\n /**\n * Operation\n */\n async operation(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * GET\n */\n async get(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * POST\n */\n async post(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n /**\n * PATCH\n */\n async patch(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * PUT\n */\n async put(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * DELETE\n */\n async delete(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * Combination of GET, POST, PATCH, PUT, DELETE\n */\n async all(operations: Operation[], paths: OperationsByMethod): OperationMethodResult<TFileMeta> {\n return []\n }\n}\n","import path from 'node:path'\n\nimport { createPlugin } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\n\nimport { getSchemas } from './utils/getSchemas.ts'\nimport { parseFromConfig } from './utils/parseFromConfig.ts'\n\nimport type { Config } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\nimport type { Oas, OasTypes } from '@kubb/oas'\nimport type { FormatOptions } from '@kubb/oas/parser'\nimport type { PluginOas } from './types.ts'\n\nexport const pluginOasName = 'plugin-oas' satisfies PluginOas['name']\n\nexport const pluginOas = createPlugin<PluginOas>((options) => {\n const {\n output = { path: 'schemas', export: false },\n experimentalFilter: filter,\n experimentalSort: sort,\n validate = true,\n serverIndex = 0,\n contentType,\n oasClass,\n } = options\n\n const getOas = async ({ config, logger, formatOptions }: { config: Config; logger: Logger; formatOptions?: FormatOptions }): Promise<Oas> => {\n try {\n // needs to be in a different variable or the catch here will not work(return of a promise instead)\n const oas = await parseFromConfig(config, formatOptions, oasClass)\n\n if (validate) {\n await oas.valdiate()\n }\n\n return oas\n } catch (e) {\n const error = e as Error\n\n logger.emit('warning', error?.message)\n return parseFromConfig(config, {}, oasClass)\n }\n }\n\n return {\n name: pluginOasName,\n options,\n context() {\n const { config, logger } = this\n\n return {\n getOas(formatOptions) {\n return getOas({ config, logger, formatOptions })\n },\n async getSchemas({ includes } = {}) {\n const oas = await this.getOas()\n return getSchemas({ oas, contentType, includes })\n },\n async getBaseURL() {\n const oasInstance = await this.getOas()\n const baseURL = oasInstance.api.servers?.at(serverIndex)?.url\n return baseURL\n },\n contentType,\n }\n },\n async buildStart() {\n if (!output) {\n return\n }\n\n const oas = await getOas({\n config: this.config,\n logger: this.logger,\n formatOptions: {\n filterSet: filter,\n sortSet: sort,\n },\n })\n await oas.dereference()\n\n const root = path.resolve(this.config.root, this.config.output.path)\n const schemas = getSchemas({ oas, contentType })\n\n const mapSchema = async ([name, schema]: [string, OasTypes.SchemaObject]) => {\n const baseName = `${camelCase(name)}.json` as `${string}.json`\n const resolvedPath = path.resolve(root, output.path, baseName)\n\n await this.addFile({\n path: resolvedPath,\n baseName,\n meta: {\n pluginKey: this.plugin.key,\n },\n sources: [\n {\n name: camelCase(name),\n isExportable: false,\n value: JSON.stringify(schema),\n },\n ],\n })\n }\n\n const promises = Object.entries(schemas).map(mapSchema)\n await Promise.all(promises)\n },\n }\n})\n","import type { PluginFactoryOptions } from '@kubb/core'\nimport type { Operation, SchemaObject } from '@kubb/oas'\nimport { App, createRoot } from '@kubb/react'\nimport type { KubbNode } from '@kubb/react/types'\nimport type * as KubbFile from '@kubb/fs/types'\nimport type { OperationsByMethod } from './types.ts'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport type { OperationGenerator } from './OperationGenerator.ts'\nimport type { SchemaGenerator, SchemaGeneratorOptions } from './SchemaGenerator.ts'\n\ntype OperationsProps<TOptions extends PluginFactoryOptions> = {\n instance: Omit<OperationGenerator<TOptions>, 'build'>\n options: TOptions['resolvedOptions']\n operations: Array<Operation>\n operationsByMethod: OperationsByMethod\n}\n\ntype OperationProps<TOptions extends PluginFactoryOptions> = {\n instance: Omit<OperationGenerator<TOptions>, 'build'>\n options: TOptions['resolvedOptions']\n operation: Operation\n}\n\ntype SchemaProps<TOptions extends PluginFactoryOptions> = {\n instance: Omit<SchemaGenerator<SchemaGeneratorOptions, TOptions>, 'build'>\n name: string\n schema: SchemaObject\n options: TOptions['resolvedOptions']\n}\n\nexport type ParserOptions<TOptions extends PluginFactoryOptions> = {\n name: string\n operations?: (props: OperationsProps<TOptions>) => Promise<KubbFile.File[]>\n operation?: (props: OperationProps<TOptions>) => Promise<KubbFile.File[]>\n schema?: (props: SchemaProps<TOptions>) => Promise<KubbFile.File[]>\n}\n\nexport type Parser<TOptions extends PluginFactoryOptions> = ParserOptions<TOptions>\n\nexport function createParser<TOptions extends PluginFactoryOptions>(parseOptions: ParserOptions<TOptions>): Parser<TOptions> {\n return parseOptions\n}\n\nexport type ParserReactOptions<TOptions extends PluginFactoryOptions> = {\n name: string\n Operations?: (props: OperationsProps<TOptions>) => KubbNode\n Operation?: (props: OperationProps<TOptions>) => KubbNode\n Schema?: (props: SchemaProps<TOptions>) => KubbNode\n}\n\nexport function createReactParser<TOptions extends PluginFactoryOptions>(parseOptions: ParserReactOptions<TOptions>): Parser<TOptions> {\n return {\n ...parseOptions,\n async operations({ instance, options, operations, operationsByMethod }) {\n if (!parseOptions.Operations) {\n return []\n }\n\n const { pluginManager, oas, plugin, mode } = instance.context\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n root.render(\n <App pluginManager={pluginManager} plugin={plugin} mode={mode}>\n <Oas oas={oas} operations={operations} generator={instance}>\n <parseOptions.Operations operations={operations} instance={instance} operationsByMethod={operationsByMethod} options={options} />\n </Oas>\n </App>,\n )\n\n return root.files\n },\n async operation({ instance, operation, options }) {\n if (!parseOptions.Operation) {\n return []\n }\n\n const { pluginManager, oas, plugin, mode } = instance.context\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas} operations={[operation]} generator={instance}>\n <Oas.Operation operation={operation}>\n <parseOptions.Operation operation={operation} options={options} instance={instance} />\n </Oas.Operation>\n </Oas>\n </App>,\n )\n\n return root.files\n },\n async schema({ instance, schema, name, options }) {\n if (!parseOptions.Schema) {\n return []\n }\n\n const { pluginManager, oas, plugin, mode } = instance.context\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n const tree = instance.parse({ schema, name })\n\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas}>\n <Oas.Schema name={name} value={schema} tree={tree}>\n <parseOptions.Schema schema={schema} options={options} instance={instance} name={name} />\n </Oas.Schema>\n </Oas>\n </App>,\n )\n\n return root.files\n },\n }\n}\n"],"mappings":"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","names":["path","method","item"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/OperationGenerator.ts","../src/plugin.ts","../src/parser.tsx"],"sourcesContent":["export type {\n GetOperationGeneratorOptions,\n OperationMethodResult,\n} from './OperationGenerator.ts'\nexport { OperationGenerator } from './OperationGenerator.ts'\nexport { pluginOas, pluginOasName } from './plugin.ts'\nexport type {\n GetSchemaGeneratorOptions,\n SchemaGeneratorBuildOptions,\n SchemaGeneratorOptions,\n} from './SchemaGenerator.ts'\nexport type { SchemaMethodResult } from './SchemaGenerator.ts'\nexport { SchemaGenerator } from './SchemaGenerator.ts'\nexport type {\n Schema,\n SchemaKeyword,\n SchemaKeywordBase,\n SchemaKeywordMapper,\n SchemaMapper,\n} from './SchemaMapper.ts'\nexport { isKeyword, schemaKeywords } from './SchemaMapper.ts'\nexport type * from './types.ts'\nexport { createParser, createReactParser } from './parser.tsx'\nexport type { ParserReactOptions } from './parser.tsx'\nexport type { Parser, ParserOptions } from './parser.tsx'\n","import { type FileMetaBase, Generator } from '@kubb/core'\nimport transformers from '@kubb/core/transformers'\n\nimport type { PluginFactoryOptions, PluginManager } from '@kubb/core'\nimport type * as KubbFile from '@kubb/fs/types'\n\nimport type { Plugin } from '@kubb/core'\nimport type { HttpMethod, Oas, OasTypes, Operation, contentType } from '@kubb/oas'\nimport type { Exclude, Include, OperationSchemas, OperationsByMethod, Override } from './types.ts'\nimport type { Parser } from './parser.tsx'\n\nexport type GetOperationGeneratorOptions<T extends OperationGenerator<any, any, any>> = T extends OperationGenerator<infer Options, any, any> ? Options : never\n\nexport type OperationMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>\n\ntype Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {\n oas: Oas\n exclude: Array<Exclude> | undefined\n include: Array<Include> | undefined\n override: Array<Override<TOptions>> | undefined\n contentType: contentType | undefined\n pluginManager: PluginManager\n /**\n * Current plugin\n */\n plugin: Plugin<TPluginOptions>\n mode: KubbFile.Mode\n}\n\nexport class OperationGenerator<\n TOptions = unknown,\n TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions,\n TFileMeta extends FileMetaBase = FileMetaBase,\n> extends Generator<TOptions, Context<TOptions, TPluginOptions>> {\n #operationsByMethod: OperationsByMethod = {}\n get operationsByMethod(): OperationsByMethod {\n return this.#operationsByMethod\n }\n\n set operationsByMethod(paths: OperationsByMethod) {\n this.#operationsByMethod = paths\n }\n\n #getOptions(operation: Operation, method: HttpMethod): Partial<TOptions> {\n const { override = [] } = this.context\n\n return (\n override.find(({ pattern, type }) => {\n if (type === 'tag') {\n return !!operation.getTags()[0]?.name.match(pattern)\n }\n\n if (type === 'operationId') {\n return !!operation.getOperationId().match(pattern)\n }\n\n if (type === 'path') {\n return !!operation.path.match(pattern)\n }\n\n if (type === 'method') {\n return !!method.match(pattern)\n }\n\n return false\n })?.options || {}\n )\n }\n\n /**\n *\n * @deprecated\n */\n #isExcluded(operation: Operation, method: HttpMethod): boolean {\n const { exclude = [] } = this.context\n let matched = false\n\n exclude.forEach(({ pattern, type }) => {\n if (type === 'tag' && !matched) {\n matched = !!operation.getTags()[0]?.name.match(pattern)\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId().match(pattern)\n }\n\n if (type === 'path' && !matched) {\n matched = !!operation.path.match(pattern)\n }\n\n if (type === 'method' && !matched) {\n matched = !!method.match(pattern)\n }\n })\n\n return matched\n }\n\n /**\n *\n * @deprecated\n */\n #isIncluded(operation: Operation, method: HttpMethod): boolean {\n const { include = [] } = this.context\n let matched = false\n\n include.forEach(({ pattern, type }) => {\n if (type === 'tag' && !matched) {\n matched = !!operation.getTags()[0]?.name.match(pattern)\n }\n\n if (type === 'operationId' && !matched) {\n matched = !!operation.getOperationId().match(pattern)\n }\n\n if (type === 'path' && !matched) {\n matched = !!operation.path.match(pattern)\n }\n\n if (type === 'method' && !matched) {\n matched = !!method.match(pattern)\n }\n })\n\n return matched\n }\n\n getSchemas(\n operation: Operation,\n {\n forStatusCode,\n resolveName = (name) => name,\n }: {\n forStatusCode?: string | number\n resolveName?: (name: string) => string\n } = {},\n ): OperationSchemas {\n const pathParamsSchema = this.context.oas.getParametersSchema(operation, 'path')\n const queryParamsSchema = this.context.oas.getParametersSchema(operation, 'query')\n const headerParamsSchema = this.context.oas.getParametersSchema(operation, 'header')\n const requestSchema = this.context.oas.getRequestSchema(operation)\n const responseStatusCode =\n forStatusCode || (operation.schema.responses && Object.keys(operation.schema.responses).find((key) => key.startsWith('2'))) || 200\n const responseSchema = this.context.oas.getResponseSchema(operation, responseStatusCode)\n const statusCodes = operation.getResponseStatusCodes().map((statusCode) => {\n let name = statusCode\n if (name === 'default') {\n name = 'error'\n }\n\n const schema = this.context.oas.getResponseSchema(operation, statusCode)\n\n return {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} ${name}`)),\n description: (operation.getResponseByStatusCode(statusCode) as OasTypes.ResponseObject)?.description,\n schema,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n statusCode: name === 'error' ? undefined : Number(statusCode),\n keys: schema?.properties ? Object.keys(schema.properties) : undefined,\n }\n })\n\n return {\n pathParams: pathParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} PathParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n schema: pathParamsSchema,\n keys: pathParamsSchema.properties ? Object.keys(pathParamsSchema.properties) : undefined,\n }\n : undefined,\n queryParams: queryParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} QueryParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n schema: queryParamsSchema,\n keys: queryParamsSchema.properties ? Object.keys(queryParamsSchema.properties) : [],\n }\n : undefined,\n headerParams: headerParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} HeaderParams`)),\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n schema: headerParamsSchema,\n keys: headerParamsSchema.properties ? Object.keys(headerParamsSchema.properties) : undefined,\n }\n : undefined,\n request: requestSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} ${operation.method === 'get' ? 'queryRequest' : 'mutationRequest'}`)),\n description: (operation.schema.requestBody as OasTypes.RequestBodyObject)?.description,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n schema: requestSchema,\n keys: requestSchema.properties ? Object.keys(requestSchema.properties) : undefined,\n keysToOmit: requestSchema.properties\n ? Object.keys(requestSchema.properties).filter((key) => {\n const item = requestSchema.properties?.[key] as OasTypes.SchemaObject\n\n return item?.readOnly\n })\n : undefined,\n }\n : undefined,\n response: {\n name: resolveName(transformers.pascalCase(`${operation.getOperationId()} ${operation.method === 'get' ? 'queryResponse' : 'mutationResponse'}`)),\n description: operation.getResponseAsJSONSchema(responseStatusCode)?.at(0)?.description,\n operation,\n operationName: transformers.pascalCase(`${operation.getOperationId()}`),\n schema: responseSchema,\n statusCode: Number(responseStatusCode),\n keys: responseSchema?.properties ? Object.keys(responseSchema.properties) : undefined,\n keysToOmit: responseSchema?.properties\n ? Object.keys(responseSchema.properties).filter((key) => {\n const item = responseSchema.properties?.[key] as OasTypes.SchemaObject\n return item?.writeOnly\n })\n : undefined,\n },\n errors: statusCodes.filter((item) => item.statusCode?.toString().startsWith('4') || item.statusCode?.toString().startsWith('5')),\n statusCodes,\n }\n }\n\n async build(...parsers: Array<Parser<Extract<TOptions, PluginFactoryOptions>>>): Promise<Array<KubbFile.File<TFileMeta>>> {\n const { oas } = this.context\n\n const paths = oas.getPaths()\n this.operationsByMethod = Object.entries(paths).reduce((acc, [path, method]) => {\n const methods = Object.keys(method) as HttpMethod[]\n\n methods.forEach((method) => {\n const operation = oas.operation(path, method)\n if (operation) {\n const isExcluded = this.#isExcluded(operation, method)\n const isIncluded = this.context.include ? this.#isIncluded(operation, method) : true\n\n if (isIncluded && !isExcluded) {\n if (!acc[path]) {\n acc[path] = {} as OperationsByMethod['get']\n }\n acc[path] = {\n ...acc[path],\n [method]: {\n operation,\n schemas: this.getSchemas(operation),\n },\n } as OperationsByMethod['get']\n }\n }\n })\n\n return acc\n }, {} as OperationsByMethod)\n\n const promises = Object.keys(this.operationsByMethod).reduce((acc, path) => {\n const methods = this.operationsByMethod[path] ? (Object.keys(this.operationsByMethod[path]!) as HttpMethod[]) : []\n\n methods.forEach((method) => {\n const { operation } = this.operationsByMethod[path]?.[method]!\n const options = this.#getOptions(operation, method)\n\n const methodToCall = this[method as keyof typeof this] as any\n\n if (typeof methodToCall === 'function') {\n const promiseMethod = methodToCall?.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseMethod) {\n acc.push(promiseMethod)\n }\n }\n\n const promiseOperation = this.operation.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseOperation) {\n acc.push(promiseOperation)\n }\n\n parsers?.forEach((parser) => {\n const promise = parser.operation?.({\n instance: this,\n operation,\n options: {\n ...this.options,\n ...options,\n },\n } as any) as Promise<Array<KubbFile.File<TFileMeta>>>\n\n if (promise) {\n acc.push(promise)\n }\n })\n })\n\n return acc\n }, [] as OperationMethodResult<TFileMeta>[])\n\n const operations = Object.values(this.operationsByMethod).map((item) => Object.values(item).map((item) => item.operation))\n\n promises.push(this.all(operations.flat().filter(Boolean), this.operationsByMethod))\n\n parsers?.forEach((parser) => {\n const promise = parser.operations?.({\n instance: this,\n operations: operations.flat().filter(Boolean),\n operationsByMethod: this.operationsByMethod,\n options: this.options,\n } as any) as Promise<Array<KubbFile.File<TFileMeta>>>\n\n if (promise) {\n promises.push(promise)\n }\n })\n\n const files = await Promise.all(promises)\n\n // using .flat because operationGenerator[method] can return a array of files or just one file\n return files.flat().filter(Boolean)\n }\n\n /**\n * Operation\n */\n async operation(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * GET\n */\n async get(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * POST\n */\n async post(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n /**\n * PATCH\n */\n async patch(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * PUT\n */\n async put(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * DELETE\n */\n async delete(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return []\n }\n\n /**\n * Combination of GET, POST, PATCH, PUT, DELETE\n */\n async all(operations: Operation[], paths: OperationsByMethod): OperationMethodResult<TFileMeta> {\n return []\n }\n}\n","import path from 'node:path'\n\nimport { createPlugin } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\n\nimport { getSchemas } from './utils/getSchemas.ts'\nimport { parseFromConfig } from './utils/parseFromConfig.ts'\n\nimport type { Config } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\nimport type { Oas, OasTypes } from '@kubb/oas'\nimport type { FormatOptions } from '@kubb/oas/parser'\nimport type { PluginOas } from './types.ts'\n\nexport const pluginOasName = 'plugin-oas' satisfies PluginOas['name']\n\nexport const pluginOas = createPlugin<PluginOas>((options) => {\n const {\n output = { path: 'schemas', export: false },\n experimentalFilter: filter,\n experimentalSort: sort,\n validate = true,\n serverIndex = 0,\n contentType,\n oasClass,\n } = options\n\n const getOas = async ({ config, logger, formatOptions }: { config: Config; logger: Logger; formatOptions?: FormatOptions }): Promise<Oas> => {\n try {\n // needs to be in a different variable or the catch here will not work(return of a promise instead)\n const oas = await parseFromConfig(config, formatOptions, oasClass)\n\n if (validate) {\n await oas.valdiate()\n }\n\n return oas\n } catch (e) {\n const error = e as Error\n\n logger.emit('warning', error?.message)\n return parseFromConfig(config, {}, oasClass)\n }\n }\n\n return {\n name: pluginOasName,\n output:\n output === false\n ? {\n path: '',\n exportType: false,\n }\n : {\n exportType: 'barrelNamed',\n ...output,\n },\n options,\n context() {\n const { config, logger } = this\n\n return {\n getOas(formatOptions) {\n return getOas({ config, logger, formatOptions })\n },\n async getSchemas({ includes } = {}) {\n const oas = await this.getOas()\n return getSchemas({ oas, contentType, includes })\n },\n async getBaseURL() {\n const oasInstance = await this.getOas()\n const baseURL = oasInstance.api.servers?.at(serverIndex)?.url\n return baseURL\n },\n contentType,\n }\n },\n async buildStart() {\n if (!output) {\n return\n }\n\n const oas = await getOas({\n config: this.config,\n logger: this.logger,\n formatOptions: {\n filterSet: filter,\n sortSet: sort,\n },\n })\n await oas.dereference()\n\n const root = path.resolve(this.config.root, this.config.output.path)\n const schemas = getSchemas({ oas, contentType })\n\n const mapSchema = async ([name, schema]: [string, OasTypes.SchemaObject]) => {\n const baseName = `${camelCase(name)}.json` as `${string}.json`\n const resolvedPath = path.resolve(root, output.path, baseName)\n\n await this.addFile({\n path: resolvedPath,\n baseName,\n meta: {\n pluginKey: this.plugin.key,\n },\n sources: [\n {\n name: camelCase(name),\n isExportable: false,\n isIndexable: false,\n value: JSON.stringify(schema),\n },\n ],\n })\n }\n\n const promises = Object.entries(schemas).map(mapSchema)\n await Promise.all(promises)\n },\n }\n})\n","import type { PluginFactoryOptions } from '@kubb/core'\nimport type { Operation, SchemaObject } from '@kubb/oas'\nimport { App, createRoot } from '@kubb/react'\nimport type { KubbNode } from '@kubb/react/types'\nimport type * as KubbFile from '@kubb/fs/types'\nimport type { OperationsByMethod } from './types.ts'\nimport { Oas } from '@kubb/plugin-oas/components'\nimport type { OperationGenerator } from './OperationGenerator.ts'\nimport type { SchemaGenerator, SchemaGeneratorOptions } from './SchemaGenerator.ts'\n\ntype OperationsProps<TOptions extends PluginFactoryOptions> = {\n instance: Omit<OperationGenerator<TOptions>, 'build'>\n options: TOptions['resolvedOptions']\n operations: Array<Operation>\n operationsByMethod: OperationsByMethod\n}\n\ntype OperationProps<TOptions extends PluginFactoryOptions> = {\n instance: Omit<OperationGenerator<TOptions>, 'build'>\n options: TOptions['resolvedOptions']\n operation: Operation\n}\n\ntype SchemaProps<TOptions extends PluginFactoryOptions> = {\n instance: Omit<SchemaGenerator<SchemaGeneratorOptions, TOptions>, 'build'>\n name: string\n schema: SchemaObject\n options: TOptions['resolvedOptions']\n}\n\nexport type ParserOptions<TOptions extends PluginFactoryOptions> = {\n name: string\n operations?: (props: OperationsProps<TOptions>) => Promise<KubbFile.File[]>\n operation?: (props: OperationProps<TOptions>) => Promise<KubbFile.File[]>\n schema?: (props: SchemaProps<TOptions>) => Promise<KubbFile.File[]>\n}\n\nexport type Parser<TOptions extends PluginFactoryOptions> = ParserOptions<TOptions>\n\nexport function createParser<TOptions extends PluginFactoryOptions>(parseOptions: ParserOptions<TOptions>): Parser<TOptions> {\n return parseOptions\n}\n\nexport type ParserReactOptions<TOptions extends PluginFactoryOptions> = {\n name: string\n Operations?: (props: OperationsProps<TOptions>) => KubbNode\n Operation?: (props: OperationProps<TOptions>) => KubbNode\n Schema?: (props: SchemaProps<TOptions>) => KubbNode\n}\n\nexport function createReactParser<TOptions extends PluginFactoryOptions>(parseOptions: ParserReactOptions<TOptions>): Parser<TOptions> {\n return {\n ...parseOptions,\n async operations({ instance, options, operations, operationsByMethod }) {\n if (!parseOptions.Operations) {\n return []\n }\n\n const { pluginManager, oas, plugin, mode } = instance.context\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n root.render(\n <App pluginManager={pluginManager} plugin={plugin} mode={mode}>\n <Oas oas={oas} operations={operations} generator={instance}>\n <parseOptions.Operations operations={operations} instance={instance} operationsByMethod={operationsByMethod} options={options} />\n </Oas>\n </App>,\n )\n\n return root.files\n },\n async operation({ instance, operation, options }) {\n if (!parseOptions.Operation) {\n return []\n }\n\n const { pluginManager, oas, plugin, mode } = instance.context\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas} operations={[operation]} generator={instance}>\n <Oas.Operation operation={operation}>\n <parseOptions.Operation operation={operation} options={options} instance={instance} />\n </Oas.Operation>\n </Oas>\n </App>,\n )\n\n return root.files\n },\n async schema({ instance, schema, name, options }) {\n if (!parseOptions.Schema) {\n return []\n }\n\n const { pluginManager, oas, plugin, mode } = instance.context\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n const tree = instance.parse({ schema, name })\n\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas}>\n <Oas.Schema name={name} value={schema} tree={tree}>\n <parseOptions.Schema schema={schema} options={options} instance={instance} name={name} />\n </Oas.Schema>\n </Oas>\n </App>,\n )\n\n return root.files\n },\n }\n}\n"],"mappings":"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","names":["path","method","item"]}
@@ -35,6 +35,8 @@ type Options = {
35
35
  * @default 'schemas'
36
36
  */
37
37
  path: string;
38
+ extName?: KubbFile.Extname;
39
+ exportType?: 'barrel' | 'barrelNamed' | false;
38
40
  } | false;
39
41
  /**
40
42
  * Which server to use from the array of `servers.url[serverIndex]`
@@ -35,6 +35,8 @@ type Options = {
35
35
  * @default 'schemas'
36
36
  */
37
37
  path: string;
38
+ extName?: KubbFile.Extname;
39
+ exportType?: 'barrel' | 'barrelNamed' | false;
38
40
  } | false;
39
41
  /**
40
42
  * Which server to use from the array of `servers.url[serverIndex]`
package/dist/utils.cjs CHANGED
@@ -1,17 +1,17 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkQLJIL3U5cjs = require('./chunk-QLJIL3U5.cjs');
3
+ var _chunkO76YQFZBcjs = require('./chunk-O76YQFZB.cjs');
4
4
 
5
5
 
6
6
 
7
7
 
8
- var _chunkP42X362Ucjs = require('./chunk-P42X362U.cjs');
8
+ var _chunkNU4F7G47cjs = require('./chunk-NU4F7G47.cjs');
9
9
 
10
10
  // src/utils/index.ts
11
- _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
11
+ _chunkNU4F7G47cjs.init_cjs_shims.call(void 0, );
12
12
 
13
13
  // src/utils/getComments.ts
14
- _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
14
+ _chunkNU4F7G47cjs.init_cjs_shims.call(void 0, );
15
15
  var _transformers = require('@kubb/core/transformers'); var _transformers2 = _interopRequireDefault(_transformers);
16
16
  var _utils = require('@kubb/core/utils');
17
17
  function getComments(operation) {
@@ -23,52 +23,8 @@ function getComments(operation) {
23
23
  ].filter(Boolean).map((text) => _transformers2.default.trim(text));
24
24
  }
25
25
 
26
- // src/utils/getGroupedByTagFiles.ts
27
- _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
28
- var _path = require('path');
29
- var _core = require('@kubb/core');
30
-
31
-
32
- var _fs = require('@kubb/fs');
33
- async function getGroupedByTagFiles({ logger, files, plugin, template, exportAs, root, output }) {
34
- const { path, exportType = "barrel" } = output;
35
- const mode = _core.FileManager.getMode(_path.resolve.call(void 0, root, path));
36
- if (mode === "single" || exportType === false) {
37
- return [];
38
- }
39
- return files.filter((file) => {
40
- const name = _optionalChain([file, 'access', _ => _.meta, 'optionalAccess', _2 => _2.pluginKey, 'optionalAccess', _3 => _3[0]]);
41
- return name === plugin.name;
42
- }).map((file) => {
43
- if (!_optionalChain([file, 'access', _4 => _4.meta, 'optionalAccess', _5 => _5.tag])) {
44
- _optionalChain([logger, 'optionalAccess', _6 => _6.emit, 'call', _7 => _7("debug", { logs: [`Could not find a tagName for ${JSON.stringify(file, void 0, 2)}`] })]);
45
- return;
46
- }
47
- const tag = _optionalChain([file, 'access', _8 => _8.meta, 'optionalAccess', _9 => _9.tag]) && _transformers2.default.camelCase(file.meta.tag);
48
- const tagPath = _fs.getRelativePath.call(void 0, _path.resolve.call(void 0, root, output.path), _path.resolve.call(void 0, root, _utils.renderTemplate.call(void 0, template, { tag })));
49
- const tagName = _utils.renderTemplate.call(void 0, exportAs, { tag });
50
- if (tagName) {
51
- return {
52
- baseName: "index.ts",
53
- path: _path.resolve.call(void 0, root, output.path, "index.ts"),
54
- exports: [
55
- {
56
- path: output.extName ? `${tagPath}/index${output.extName}` : `${tagPath}/index`,
57
- asAlias: true,
58
- name: tagName
59
- }
60
- ],
61
- meta: {
62
- pluginKey: plugin.key
63
- },
64
- sources: []
65
- };
66
- }
67
- }).filter(Boolean);
68
- }
69
-
70
26
  // src/utils/getParams.ts
71
- _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
27
+ _chunkNU4F7G47cjs.init_cjs_shims.call(void 0, );
72
28
  var _oas = require('@kubb/oas');
73
29
 
74
30
  function getASTParams(operationSchema, {
@@ -103,12 +59,12 @@ function getPathParams(operationSchema, options = {}) {
103
59
  }
104
60
 
105
61
  // src/utils/refSorter.ts
106
- _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
62
+ _chunkNU4F7G47cjs.init_cjs_shims.call(void 0, );
107
63
  function refsSorter(a, b) {
108
- if (_optionalChain([Object, 'access', _10 => _10.keys, 'call', _11 => _11(a.import.refs), 'optionalAccess', _12 => _12.length]) < _optionalChain([Object, 'access', _13 => _13.keys, 'call', _14 => _14(b.import.refs), 'optionalAccess', _15 => _15.length])) {
64
+ if (_optionalChain([Object, 'access', _ => _.keys, 'call', _2 => _2(a.import.refs), 'optionalAccess', _3 => _3.length]) < _optionalChain([Object, 'access', _4 => _4.keys, 'call', _5 => _5(b.import.refs), 'optionalAccess', _6 => _6.length])) {
109
65
  return -1;
110
66
  }
111
- if (_optionalChain([Object, 'access', _16 => _16.keys, 'call', _17 => _17(a.import.refs), 'optionalAccess', _18 => _18.length]) > _optionalChain([Object, 'access', _19 => _19.keys, 'call', _20 => _20(b.import.refs), 'optionalAccess', _21 => _21.length])) {
67
+ if (_optionalChain([Object, 'access', _7 => _7.keys, 'call', _8 => _8(a.import.refs), 'optionalAccess', _9 => _9.length]) > _optionalChain([Object, 'access', _10 => _10.keys, 'call', _11 => _11(b.import.refs), 'optionalAccess', _12 => _12.length])) {
112
68
  return 1;
113
69
  }
114
70
  return 0;
@@ -121,6 +77,5 @@ function refsSorter(a, b) {
121
77
 
122
78
 
123
79
 
124
-
125
- exports.getASTParams = getASTParams; exports.getComments = getComments; exports.getGroupedByTagFiles = getGroupedByTagFiles; exports.getPathParams = getPathParams; exports.getSchemaFactory = _chunkP42X362Ucjs.getSchemaFactory; exports.getSchemas = _chunkP42X362Ucjs.getSchemas; exports.parseFromConfig = _chunkQLJIL3U5cjs.parseFromConfig; exports.refsSorter = refsSorter;
80
+ exports.getASTParams = getASTParams; exports.getComments = getComments; exports.getPathParams = getPathParams; exports.getSchemaFactory = _chunkNU4F7G47cjs.getSchemaFactory; exports.getSchemas = _chunkNU4F7G47cjs.getSchemas; exports.parseFromConfig = _chunkO76YQFZBcjs.parseFromConfig; exports.refsSorter = refsSorter;
126
81
  //# sourceMappingURL=utils.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/kubb/kubb/packages/plugin-oas/dist/utils.cjs","../src/utils/index.ts","../src/utils/getComments.ts","../src/utils/getGroupedByTagFiles.ts","../src/utils/getParams.ts","../src/utils/refSorter.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACA;ACTA,8CAAA,CAAA;ADWA;AACA;AEZA,8CAAA,CAAA;AAAA,mHAAyB;AACzB,yCAAwB;AAIjB,SAAS,WAAA,CAAY,SAAA,EAAgC;AAC1D,EAAA,OAAO;AAAA,IACL,SAAA,CAAU,cAAA,CAAe,EAAA,GAAK,CAAA,aAAA,EAAgB,SAAA,CAAU,cAAA,CAAe,CAAC,CAAA,CAAA;AACZ,IAAA;AACF,IAAA;AAC9B,IAAA;AAGU,EAAA;AAC1C;AFU6E;AACA;AGzB7E;AAAwB;AAEI;AACH;AACM;AACC;AAmC8C;AACpC,EAAA;AACY,EAAA;AAEL,EAAA;AACrC,IAAA;AACV,EAAA;AAGoB,EAAA;AACqB,IAAA;AACd,IAAA;AAEe,EAAA;AACjB,IAAA;AACiD,sBAAA;AAEpE,MAAA;AACF,IAAA;AAEkE,IAAA;AACE,IAAA;AACpB,IAAA;AAEnC,IAAA;AACJ,MAAA;AACK,QAAA;AACiC,QAAA;AAClC,QAAA;AACP,UAAA;AACkE,YAAA;AACvD,YAAA;AACH,YAAA;AACR,UAAA;AACF,QAAA;AACM,QAAA;AACc,UAAA;AACpB,QAAA;AACU,QAAA;AACZ,MAAA;AACF,IAAA;AAEa,EAAA;AACnB;AHf6E;AACA;AIrE7E;AAAkC;AAMR;AAQxB;AACU,EAAA;AACR,EAAA;AAKmB;AAC0C,EAAA;AACrD,IAAA;AACV,EAAA;AAE2E,EAAA;AACjC,IAAA;AACR,IAAA;AAC9B,MAAA;AACW,MAAA;AAC2B,MAAA;AACe,MAAA;AACvD,IAAA;AAEmC,IAAA;AACpC,EAAA;AACH;AAQE;AACoE,EAAA;AACnC,IAAA;AACD,MAAA;AACZ,QAAA;AACH,QAAA;AACK,QAAA;AAClB,MAAA;AACF,IAAA;AAEO,IAAA;AACM,EAAA;AACjB;AJ8C6E;AACA;AKxG7E;AAIoE;AACG,EAAA;AAC5D,IAAA;AACT,EAAA;AACqE,EAAA;AAC5D,IAAA;AACT,EAAA;AACO,EAAA;AACT;ALuG6E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/kubb/kubb/packages/plugin-oas/dist/utils.cjs","sourcesContent":[null,"export { getComments } from './getComments.ts'\nexport { getGroupedByTagFiles } from './getGroupedByTagFiles.ts'\nexport { getASTParams, getPathParams } from './getParams.ts'\nexport { getSchemaFactory } from './getSchemaFactory.ts'\nexport type { GetSchemasProps } from './getSchemas.ts'\nexport { getSchemas } from './getSchemas.ts'\nexport { refsSorter } from './refSorter.ts'\nexport { parseFromConfig } from './parseFromConfig.ts'\n","import transformers from '@kubb/core/transformers'\nimport { URLPath } from '@kubb/core/utils'\n\nimport type { Operation } from '@kubb/oas'\n\nexport function getComments(operation: Operation): string[] {\n return [\n operation.getDescription() && `@description ${operation.getDescription()}`,\n operation.getSummary() && `@summary ${operation.getSummary()}`,\n operation.path && `@link ${new URLPath(operation.path).URL}`,\n operation.isDeprecated() && '@deprecated',\n ]\n .filter(Boolean)\n .map((text) => transformers.trim(text))\n}\n","import { resolve } from 'node:path'\n\nimport { FileManager } from '@kubb/core'\nimport transformers from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { getRelativePath } from '@kubb/fs'\n\nimport type { Plugin } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\nimport type * as KubbFile from '@kubb/fs/types'\n\ntype Options = {\n logger: Logger\n files: Array<KubbFile.File<FileMeta>>\n plugin: Plugin\n template: string\n exportAs: string\n /**\n * Root based on root and output.path specified in the config\n */\n root: string\n /**\n * Output for plugin\n */\n output: {\n path: string\n exportAs?: string\n extName?: KubbFile.Extname\n exportType?: 'barrel' | 'barrelNamed' | false\n }\n}\n\ntype FileMeta = {\n pluginKey?: Plugin['key']\n tag?: string\n}\n\n/**\n * @deprecated //TODO replace by getIndexFiles?\n */\nexport async function getGroupedByTagFiles({ logger, files, plugin, template, exportAs, root, output }: Options): Promise<KubbFile.File<FileMeta>[]> {\n const { path, exportType = 'barrel' } = output\n const mode = FileManager.getMode(resolve(root, path))\n\n if (mode === 'single' || exportType === false) {\n return []\n }\n\n return files\n .filter((file) => {\n const name = file.meta?.pluginKey?.[0]\n return name === plugin.name\n })\n .map((file: KubbFile.File<FileMeta>) => {\n if (!file.meta?.tag) {\n logger?.emit('debug', { logs: [`Could not find a tagName for ${JSON.stringify(file, undefined, 2)}`] })\n\n return\n }\n\n const tag = file.meta?.tag && transformers.camelCase(file.meta.tag)\n const tagPath = getRelativePath(resolve(root, output.path), resolve(root, renderTemplate(template, { tag })))\n const tagName = renderTemplate(exportAs, { tag })\n\n if (tagName) {\n return {\n baseName: 'index.ts' as const,\n path: resolve(root, output.path, 'index.ts'),\n exports: [\n {\n path: output.extName ? `${tagPath}/index${output.extName}` : `${tagPath}/index`,\n asAlias: true,\n name: tagName,\n },\n ],\n meta: {\n pluginKey: plugin.key,\n },\n sources: [],\n }\n }\n })\n .filter(Boolean)\n}\n","import { isParameterObject } from '@kubb/oas'\n\nimport type { FunctionParamsAST } from '@kubb/core/utils'\nimport type { OasTypes } from '@kubb/oas'\nimport type { Params } from '@kubb/react/types'\nimport type { OperationSchema } from '../types.ts'\nimport { camelCase } from '@kubb/core/transformers'\n/**\n *\n * @deprecated\n * TODO move to operationManager hook\n */\nexport function getASTParams(\n operationSchema: OperationSchema | undefined,\n {\n typed = false,\n override,\n }: {\n typed?: boolean\n override?: (data: FunctionParamsAST) => FunctionParamsAST\n } = {},\n): FunctionParamsAST[] {\n if (!operationSchema || !operationSchema.schema.properties || !operationSchema.name) {\n return []\n }\n\n return Object.entries(operationSchema.schema.properties).map(([name, schema]: [string, OasTypes.SchemaObject]) => {\n const isParam = isParameterObject(schema)\n const data: FunctionParamsAST = {\n name,\n enabled: !!name,\n required: isParam ? schema.required : true,\n type: typed ? `${operationSchema.name}[\"${name}\"]` : undefined,\n }\n\n return override ? override(data) : data\n })\n}\n\nexport function getPathParams(\n operationSchema: OperationSchema | undefined,\n options: {\n typed?: boolean\n override?: (data: FunctionParamsAST) => FunctionParamsAST\n } = {},\n) {\n return getASTParams(operationSchema, options).reduce((acc, curr) => {\n if (curr.name && curr.enabled) {\n acc[camelCase(curr.name)] = {\n default: curr.default,\n type: curr.type,\n optional: !curr.required,\n }\n }\n\n return acc\n }, {} as Params)\n}\n","import type { Refs } from '../types.ts'\n\ntype Generated = { import: { refs: Refs; name: string } }\n\nexport function refsSorter<T extends Generated>(a: T, b: T): number {\n if (Object.keys(a.import.refs)?.length < Object.keys(b.import.refs)?.length) {\n return -1\n }\n if (Object.keys(a.import.refs)?.length > Object.keys(b.import.refs)?.length) {\n return 1\n }\n return 0\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/kubb/kubb/packages/plugin-oas/dist/utils.cjs","../src/utils/index.ts","../src/utils/getComments.ts","../src/utils/getParams.ts","../src/utils/refSorter.ts"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACF,wDAA6B;AAC7B;AACA;ACTA,8CAAA,CAAA;ADWA;AACA;AEZA,8CAAA,CAAA;AAAA,mHAAyB;AACzB,yCAAwB;AAIjB,SAAS,WAAA,CAAY,SAAA,EAAgC;AAC1D,EAAA,OAAO;AAAA,IACL,SAAA,CAAU,cAAA,CAAe,EAAA,GAAK,CAAA,aAAA,EAAgB,SAAA,CAAU,cAAA,CAAe,CAAC,CAAA,CAAA;AACZ,IAAA;AACF,IAAA;AAC9B,IAAA;AAGU,EAAA;AAC1C;AFU6E;AACA;AGzB7E;AAAkC;AAMR;AAQxB;AACU,EAAA;AACR,EAAA;AAKmB;AAC0C,EAAA;AACrD,IAAA;AACV,EAAA;AAE2E,EAAA;AACjC,IAAA;AACR,IAAA;AAC9B,MAAA;AACW,MAAA;AAC2B,MAAA;AACe,MAAA;AACvD,IAAA;AAEmC,IAAA;AACpC,EAAA;AACH;AAQE;AACoE,EAAA;AACnC,IAAA;AACD,MAAA;AACZ,QAAA;AACH,QAAA;AACK,QAAA;AAClB,MAAA;AACF,IAAA;AAEO,IAAA;AACM,EAAA;AACjB;AHE6E;AACA;AI5D7E;AAIoE;AACG,EAAA;AAC5D,IAAA;AACT,EAAA;AACqE,EAAA;AAC5D,IAAA;AACT,EAAA;AACO,EAAA;AACT;AJ2D6E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/kubb/kubb/packages/plugin-oas/dist/utils.cjs","sourcesContent":[null,"export { getComments } from './getComments.ts'\nexport { getASTParams, getPathParams } from './getParams.ts'\nexport { getSchemaFactory } from './getSchemaFactory.ts'\nexport type { GetSchemasProps } from './getSchemas.ts'\nexport { getSchemas } from './getSchemas.ts'\nexport { refsSorter } from './refSorter.ts'\nexport { parseFromConfig } from './parseFromConfig.ts'\n","import transformers from '@kubb/core/transformers'\nimport { URLPath } from '@kubb/core/utils'\n\nimport type { Operation } from '@kubb/oas'\n\nexport function getComments(operation: Operation): string[] {\n return [\n operation.getDescription() && `@description ${operation.getDescription()}`,\n operation.getSummary() && `@summary ${operation.getSummary()}`,\n operation.path && `@link ${new URLPath(operation.path).URL}`,\n operation.isDeprecated() && '@deprecated',\n ]\n .filter(Boolean)\n .map((text) => transformers.trim(text))\n}\n","import { isParameterObject } from '@kubb/oas'\n\nimport type { FunctionParamsAST } from '@kubb/core/utils'\nimport type { OasTypes } from '@kubb/oas'\nimport type { Params } from '@kubb/react/types'\nimport type { OperationSchema } from '../types.ts'\nimport { camelCase } from '@kubb/core/transformers'\n/**\n *\n * @deprecated\n * TODO move to operationManager hook\n */\nexport function getASTParams(\n operationSchema: OperationSchema | undefined,\n {\n typed = false,\n override,\n }: {\n typed?: boolean\n override?: (data: FunctionParamsAST) => FunctionParamsAST\n } = {},\n): FunctionParamsAST[] {\n if (!operationSchema || !operationSchema.schema.properties || !operationSchema.name) {\n return []\n }\n\n return Object.entries(operationSchema.schema.properties).map(([name, schema]: [string, OasTypes.SchemaObject]) => {\n const isParam = isParameterObject(schema)\n const data: FunctionParamsAST = {\n name,\n enabled: !!name,\n required: isParam ? schema.required : true,\n type: typed ? `${operationSchema.name}[\"${name}\"]` : undefined,\n }\n\n return override ? override(data) : data\n })\n}\n\nexport function getPathParams(\n operationSchema: OperationSchema | undefined,\n options: {\n typed?: boolean\n override?: (data: FunctionParamsAST) => FunctionParamsAST\n } = {},\n) {\n return getASTParams(operationSchema, options).reduce((acc, curr) => {\n if (curr.name && curr.enabled) {\n acc[camelCase(curr.name)] = {\n default: curr.default,\n type: curr.type,\n optional: !curr.required,\n }\n }\n\n return acc\n }, {} as Params)\n}\n","import type { Refs } from '../types.ts'\n\ntype Generated = { import: { refs: Refs; name: string } }\n\nexport function refsSorter<T extends Generated>(a: T, b: T): number {\n if (Object.keys(a.import.refs)?.length < Object.keys(b.import.refs)?.length) {\n return -1\n }\n if (Object.keys(a.import.refs)?.length > Object.keys(b.import.refs)?.length) {\n return 1\n }\n return 0\n}\n"]}
package/dist/utils.d.cts CHANGED
@@ -1,44 +1,14 @@
1
1
  import { Operation, Oas, SchemaObject, OpenAPIV3, OpenAPIV3_1 } from '@kubb/oas';
2
- import { Plugin, Config } from '@kubb/core';
3
- import { Logger } from '@kubb/core/logger';
4
- import * as KubbFile from '@kubb/fs/types';
5
2
  import { FunctionParamsAST } from '@kubb/core/utils';
6
3
  import { Params } from '@kubb/react/types';
7
- import { d as OperationSchema, b as Refs } from './types-C2RXaY0_.cjs';
8
- export { G as GetSchemasProps, h as getSchemas } from './types-C2RXaY0_.cjs';
4
+ import { d as OperationSchema, b as Refs } from './types-CZTUCaE5.cjs';
5
+ export { G as GetSchemasProps, h as getSchemas } from './types-CZTUCaE5.cjs';
9
6
  import { FormatOptions } from '@kubb/oas/parser';
7
+ import { Config } from '@kubb/core';
8
+ import '@kubb/fs/types';
10
9
 
11
10
  declare function getComments(operation: Operation): string[];
12
11
 
13
- type Options = {
14
- logger: Logger;
15
- files: Array<KubbFile.File<FileMeta>>;
16
- plugin: Plugin;
17
- template: string;
18
- exportAs: string;
19
- /**
20
- * Root based on root and output.path specified in the config
21
- */
22
- root: string;
23
- /**
24
- * Output for plugin
25
- */
26
- output: {
27
- path: string;
28
- exportAs?: string;
29
- extName?: KubbFile.Extname;
30
- exportType?: 'barrel' | 'barrelNamed' | false;
31
- };
32
- };
33
- type FileMeta = {
34
- pluginKey?: Plugin['key'];
35
- tag?: string;
36
- };
37
- /**
38
- * @deprecated //TODO replace by getIndexFiles?
39
- */
40
- declare function getGroupedByTagFiles({ logger, files, plugin, template, exportAs, root, output }: Options): Promise<KubbFile.File<FileMeta>[]>;
41
-
42
12
  /**
43
13
  *
44
14
  * @deprecated
@@ -81,4 +51,4 @@ declare function refsSorter<T extends Generated>(a: T, b: T): number;
81
51
 
82
52
  declare function parseFromConfig(config: Config, options?: FormatOptions, oasClass?: typeof Oas): Promise<Oas>;
83
53
 
84
- export { getASTParams, getComments, getGroupedByTagFiles, getPathParams, getSchemaFactory, parseFromConfig, refsSorter };
54
+ export { getASTParams, getComments, getPathParams, getSchemaFactory, parseFromConfig, refsSorter };
package/dist/utils.d.ts CHANGED
@@ -1,44 +1,14 @@
1
1
  import { Operation, Oas, SchemaObject, OpenAPIV3, OpenAPIV3_1 } from '@kubb/oas';
2
- import { Plugin, Config } from '@kubb/core';
3
- import { Logger } from '@kubb/core/logger';
4
- import * as KubbFile from '@kubb/fs/types';
5
2
  import { FunctionParamsAST } from '@kubb/core/utils';
6
3
  import { Params } from '@kubb/react/types';
7
- import { d as OperationSchema, b as Refs } from './types-C2RXaY0_.js';
8
- export { G as GetSchemasProps, h as getSchemas } from './types-C2RXaY0_.js';
4
+ import { d as OperationSchema, b as Refs } from './types-CZTUCaE5.js';
5
+ export { G as GetSchemasProps, h as getSchemas } from './types-CZTUCaE5.js';
9
6
  import { FormatOptions } from '@kubb/oas/parser';
7
+ import { Config } from '@kubb/core';
8
+ import '@kubb/fs/types';
10
9
 
11
10
  declare function getComments(operation: Operation): string[];
12
11
 
13
- type Options = {
14
- logger: Logger;
15
- files: Array<KubbFile.File<FileMeta>>;
16
- plugin: Plugin;
17
- template: string;
18
- exportAs: string;
19
- /**
20
- * Root based on root and output.path specified in the config
21
- */
22
- root: string;
23
- /**
24
- * Output for plugin
25
- */
26
- output: {
27
- path: string;
28
- exportAs?: string;
29
- extName?: KubbFile.Extname;
30
- exportType?: 'barrel' | 'barrelNamed' | false;
31
- };
32
- };
33
- type FileMeta = {
34
- pluginKey?: Plugin['key'];
35
- tag?: string;
36
- };
37
- /**
38
- * @deprecated //TODO replace by getIndexFiles?
39
- */
40
- declare function getGroupedByTagFiles({ logger, files, plugin, template, exportAs, root, output }: Options): Promise<KubbFile.File<FileMeta>[]>;
41
-
42
12
  /**
43
13
  *
44
14
  * @deprecated
@@ -81,4 +51,4 @@ declare function refsSorter<T extends Generated>(a: T, b: T): number;
81
51
 
82
52
  declare function parseFromConfig(config: Config, options?: FormatOptions, oasClass?: typeof Oas): Promise<Oas>;
83
53
 
84
- export { getASTParams, getComments, getGroupedByTagFiles, getPathParams, getSchemaFactory, parseFromConfig, refsSorter };
54
+ export { getASTParams, getComments, getPathParams, getSchemaFactory, parseFromConfig, refsSorter };