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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/{OperationGenerator-D7rSlflc.d.cts → OperationGenerator-Do52cvD0.d.cts} +1 -1
  2. package/dist/{OperationGenerator-vw0Zf-Mi.d.ts → OperationGenerator-Dzs1oRvm.d.ts} +1 -1
  3. package/dist/{Schema-gHgN14i2.d.ts → Schema-C90zFdkU.d.ts} +1 -1
  4. package/dist/{Schema-DxyOIX7q.d.cts → Schema-DDVEcNcu.d.cts} +1 -1
  5. package/dist/{chunk-264TCCJF.cjs → chunk-RQZBFORW.cjs} +6 -6
  6. package/dist/{chunk-264TCCJF.cjs.map → chunk-RQZBFORW.cjs.map} +1 -1
  7. package/dist/{chunk-FZN3PBEK.js → chunk-UJNAXXVE.js} +7 -7
  8. package/dist/{chunk-FZN3PBEK.js.map → chunk-UJNAXXVE.js.map} +1 -1
  9. package/dist/components.cjs +2 -2
  10. package/dist/components.d.cts +3 -3
  11. package/dist/components.d.ts +3 -3
  12. package/dist/components.js +1 -1
  13. package/dist/hooks.cjs +6 -6
  14. package/dist/hooks.d.cts +2 -2
  15. package/dist/hooks.d.ts +2 -2
  16. package/dist/hooks.js +1 -1
  17. package/dist/index.cjs +18 -31
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.cts +2 -2
  20. package/dist/index.d.ts +2 -2
  21. package/dist/index.js +13 -26
  22. package/dist/index.js.map +1 -1
  23. package/dist/utils.cjs +2 -3
  24. package/dist/utils.cjs.map +1 -1
  25. package/dist/utils.d.cts +4 -1
  26. package/dist/utils.d.ts +4 -1
  27. package/dist/utils.js +2 -3
  28. package/dist/utils.js.map +1 -1
  29. package/package.json +9 -9
  30. package/src/components/Oas.tsx +1 -1
  31. package/src/components/Operation.tsx +1 -1
  32. package/src/components/Schema.tsx +22 -28
  33. package/src/parser.tsx +2 -1
  34. package/src/plugin.ts +13 -29
  35. package/src/utils/getGroupedByTagFiles.ts +5 -3
  36. package/src/utils/getParams.ts +1 -1
@@ -3,11 +3,11 @@
3
3
 
4
4
 
5
5
 
6
- var _chunk264TCCJFcjs = require('./chunk-264TCCJF.cjs');
6
+ var _chunkRQZBFORWcjs = require('./chunk-RQZBFORW.cjs');
7
7
  require('./chunk-P42X362U.cjs');
8
8
 
9
9
 
10
10
 
11
11
 
12
- exports.Oas = _chunk264TCCJFcjs.Oas; exports.Operation = _chunk264TCCJFcjs.Operation; exports.Schema = _chunk264TCCJFcjs.Schema;
12
+ exports.Oas = _chunkRQZBFORWcjs.Oas; exports.Operation = _chunkRQZBFORWcjs.Operation; exports.Schema = _chunkRQZBFORWcjs.Schema;
13
13
  //# sourceMappingURL=components.cjs.map
@@ -1,8 +1,8 @@
1
- import { S as Schema } from './Schema-DxyOIX7q.cjs';
1
+ import { S as Schema } from './Schema-DDVEcNcu.cjs';
2
2
  import * as react from 'react';
3
3
  import { Operation as Operation$1, Oas as Oas$1 } from '@kubb/oas';
4
- import { KubbNode } from '@kubb/react';
5
- import { a as OperationGenerator } from './OperationGenerator-D7rSlflc.cjs';
4
+ import { KubbNode } from '@kubb/react/types';
5
+ import { a as OperationGenerator } from './OperationGenerator-Do52cvD0.cjs';
6
6
  import '@kubb/fs/types';
7
7
  import './SchemaMapper-BM1IGWqD.cjs';
8
8
  import '@kubb/core';
@@ -1,8 +1,8 @@
1
- import { S as Schema } from './Schema-gHgN14i2.js';
1
+ import { S as Schema } from './Schema-C90zFdkU.js';
2
2
  import * as react from 'react';
3
3
  import { Operation as Operation$1, Oas as Oas$1 } from '@kubb/oas';
4
- import { KubbNode } from '@kubb/react';
5
- import { a as OperationGenerator } from './OperationGenerator-vw0Zf-Mi.js';
4
+ import { KubbNode } from '@kubb/react/types';
5
+ import { a as OperationGenerator } from './OperationGenerator-Dzs1oRvm.js';
6
6
  import '@kubb/fs/types';
7
7
  import './SchemaMapper-BM1IGWqD.js';
8
8
  import '@kubb/core';
@@ -3,7 +3,7 @@ import {
3
3
  Oas,
4
4
  Operation,
5
5
  Schema
6
- } from "./chunk-FZN3PBEK.js";
6
+ } from "./chunk-UJNAXXVE.js";
7
7
  import "./chunk-UB552H4J.js";
8
8
  export {
9
9
  Oas,
package/dist/hooks.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- var _chunk264TCCJFcjs = require('./chunk-264TCCJF.cjs');
5
+ var _chunkRQZBFORWcjs = require('./chunk-RQZBFORW.cjs');
6
6
 
7
7
 
8
8
  var _chunkP42X362Ucjs = require('./chunk-P42X362U.cjs');
@@ -14,7 +14,7 @@ _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
14
14
  _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
15
15
  var _react = require('@kubb/react');
16
16
  function useOas() {
17
- const { oas } = _react.useContext.call(void 0, _chunk264TCCJFcjs.Oas.Context);
17
+ const { oas } = _react.useContext.call(void 0, _chunkRQZBFORWcjs.Oas.Context);
18
18
  if (!oas) {
19
19
  throw new Error("Oas is not defined");
20
20
  }
@@ -25,7 +25,7 @@ function useOas() {
25
25
  _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
26
26
 
27
27
  function useOperation() {
28
- const { operation } = _react.useContext.call(void 0, _chunk264TCCJFcjs.Operation.Context);
28
+ const { operation } = _react.useContext.call(void 0, _chunkRQZBFORWcjs.Operation.Context);
29
29
  if (!operation) {
30
30
  throw new Error("Operation is not defined");
31
31
  }
@@ -37,7 +37,7 @@ _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
37
37
 
38
38
  function useOperationManager() {
39
39
  const { plugin, pluginManager } = _react.useApp.call(void 0, );
40
- const { generator } = _react.useContext.call(void 0, _chunk264TCCJFcjs.Oas.Context);
40
+ const { generator } = _react.useContext.call(void 0, _chunkRQZBFORWcjs.Oas.Context);
41
41
  if (!generator) {
42
42
  throw new Error(`'generator' is not defined`);
43
43
  }
@@ -141,7 +141,7 @@ function useOperationManager() {
141
141
  _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
142
142
 
143
143
  function useOperations({ method, path } = {}) {
144
- const { operations } = _react.useContext.call(void 0, _chunk264TCCJFcjs.Oas.Context);
144
+ const { operations } = _react.useContext.call(void 0, _chunkRQZBFORWcjs.Oas.Context);
145
145
  if (!operations) {
146
146
  throw new Error("Operations is not defined");
147
147
  }
@@ -160,5 +160,5 @@ function useOperations({ method, path } = {}) {
160
160
 
161
161
 
162
162
 
163
- exports.useOas = useOas; exports.useOperation = useOperation; exports.useOperationManager = useOperationManager; exports.useOperations = useOperations; exports.useSchema = _chunk264TCCJFcjs.useSchema;
163
+ exports.useOas = useOas; exports.useOperation = useOperation; exports.useOperationManager = useOperationManager; exports.useOperations = useOperations; exports.useSchema = _chunkRQZBFORWcjs.useSchema;
164
164
  //# sourceMappingURL=hooks.cjs.map
package/dist/hooks.d.cts CHANGED
@@ -2,10 +2,10 @@ import { Oas, Operation, HttpMethod } from '@kubb/oas';
2
2
  import { Plugin, ResolveNameParams, FileMetaBase } from '@kubb/core';
3
3
  import * as KubbFile from '@kubb/fs/types';
4
4
  import { e as OperationSchemas } from './types-C2RXaY0_.cjs';
5
- import { a as SchemaContextProps } from './Schema-DxyOIX7q.cjs';
5
+ import { a as SchemaContextProps } from './Schema-DDVEcNcu.cjs';
6
6
  import '@kubb/oas/parser';
7
7
  import 'react';
8
- import '@kubb/react';
8
+ import '@kubb/react/types';
9
9
  import './SchemaMapper-BM1IGWqD.cjs';
10
10
 
11
11
  declare function useOas(): Oas;
package/dist/hooks.d.ts CHANGED
@@ -2,10 +2,10 @@ import { Oas, Operation, HttpMethod } from '@kubb/oas';
2
2
  import { Plugin, ResolveNameParams, FileMetaBase } from '@kubb/core';
3
3
  import * as KubbFile from '@kubb/fs/types';
4
4
  import { e as OperationSchemas } from './types-C2RXaY0_.js';
5
- import { a as SchemaContextProps } from './Schema-gHgN14i2.js';
5
+ import { a as SchemaContextProps } from './Schema-C90zFdkU.js';
6
6
  import '@kubb/oas/parser';
7
7
  import 'react';
8
- import '@kubb/react';
8
+ import '@kubb/react/types';
9
9
  import './SchemaMapper-BM1IGWqD.js';
10
10
 
11
11
  declare function useOas(): Oas;
package/dist/hooks.js CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  Oas,
3
3
  Operation,
4
4
  useSchema
5
- } from "./chunk-FZN3PBEK.js";
5
+ } from "./chunk-UJNAXXVE.js";
6
6
  import {
7
7
  init_esm_shims
8
8
  } from "./chunk-UB552H4J.js";
package/dist/index.cjs CHANGED
@@ -8,7 +8,7 @@ require('./chunk-7KIEQOVZ.cjs');
8
8
 
9
9
 
10
10
 
11
- var _chunk264TCCJFcjs = require('./chunk-264TCCJF.cjs');
11
+ var _chunkRQZBFORWcjs = require('./chunk-RQZBFORW.cjs');
12
12
 
13
13
 
14
14
 
@@ -356,16 +356,6 @@ var pluginOas = _core.createPlugin.call(void 0, (options) => {
356
356
  contentType
357
357
  };
358
358
  },
359
- resolvePath(baseName) {
360
- if (output === false) {
361
- return void 0;
362
- }
363
- const root = _path2.default.resolve(this.config.root, this.config.output.path);
364
- return _path2.default.resolve(root, output.path, baseName);
365
- },
366
- resolveName(name, type) {
367
- return _transformers.camelCase.call(void 0, name, { isFile: type === "file" });
368
- },
369
359
  async buildStart() {
370
360
  if (!output) {
371
361
  return;
@@ -379,27 +369,24 @@ var pluginOas = _core.createPlugin.call(void 0, (options) => {
379
369
  }
380
370
  });
381
371
  await oas.dereference();
372
+ const root = _path2.default.resolve(this.config.root, this.config.output.path);
382
373
  const schemas = _chunkP42X362Ucjs.getSchemas.call(void 0, { oas, contentType });
383
374
  const mapSchema = async ([name, schema]) => {
384
- const resolvedPath = this.resolvePath({
385
- baseName: `${name}.json`,
386
- pluginKey: this.plugin.key
387
- });
388
- const resvoledFileName = this.resolveName({
389
- name: `${name}.json`,
390
- pluginKey: [pluginOasName],
391
- type: "file"
392
- });
393
- if (!resolvedPath) {
394
- return;
395
- }
375
+ const baseName = `${_transformers.camelCase.call(void 0, name)}.json`;
376
+ const resolvedPath = _path2.default.resolve(root, output.path, baseName);
396
377
  await this.addFile({
397
378
  path: resolvedPath,
398
- baseName: resvoledFileName,
399
- source: JSON.stringify(schema),
379
+ baseName,
400
380
  meta: {
401
381
  pluginKey: this.plugin.key
402
- }
382
+ },
383
+ sources: [
384
+ {
385
+ name: _transformers.camelCase.call(void 0, name),
386
+ isExportable: false,
387
+ value: JSON.stringify(schema)
388
+ }
389
+ ]
403
390
  });
404
391
  };
405
392
  const promises = Object.entries(schemas).map(mapSchema);
@@ -411,7 +398,7 @@ var pluginOas = _core.createPlugin.call(void 0, (options) => {
411
398
  // src/parser.tsx
412
399
  _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
413
400
  var _react = require('@kubb/react');
414
- var import_jsx_runtime = _chunkP42X362Ucjs.__toESM.call(void 0, _chunk264TCCJFcjs.require_jsx_runtime.call(void 0, ), 1);
401
+ var import_jsx_runtime = _chunkP42X362Ucjs.__toESM.call(void 0, _chunkRQZBFORWcjs.require_jsx_runtime.call(void 0, ), 1);
415
402
  function createParser(parseOptions) {
416
403
  return parseOptions;
417
404
  }
@@ -427,7 +414,7 @@ function createReactParser(parseOptions) {
427
414
  logger: pluginManager.logger
428
415
  });
429
416
  root.render(
430
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_react.App, { pluginManager, plugin, mode, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_chunk264TCCJFcjs.Oas, { oas, operations, generator: instance, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(parseOptions.Operations, { operations, instance, operationsByMethod, options }) }) })
417
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_react.App, { pluginManager, plugin, mode, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_chunkRQZBFORWcjs.Oas, { oas, operations, generator: instance, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(parseOptions.Operations, { operations, instance, operationsByMethod, options }) }) })
431
418
  );
432
419
  return root.files;
433
420
  },
@@ -440,7 +427,7 @@ function createReactParser(parseOptions) {
440
427
  logger: pluginManager.logger
441
428
  });
442
429
  root.render(
443
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_react.App, { pluginManager, plugin: { ...plugin, options }, mode, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_chunk264TCCJFcjs.Oas, { oas, operations: [operation], generator: instance, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_chunk264TCCJFcjs.Oas.Operation, { operation, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(parseOptions.Operation, { operation, options, instance }) }) }) })
430
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_react.App, { pluginManager, plugin: { ...plugin, options }, mode, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_chunkRQZBFORWcjs.Oas, { oas, operations: [operation], generator: instance, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_chunkRQZBFORWcjs.Oas.Operation, { operation, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(parseOptions.Operation, { operation, options, instance }) }) }) })
444
431
  );
445
432
  return root.files;
446
433
  },
@@ -454,7 +441,7 @@ function createReactParser(parseOptions) {
454
441
  });
455
442
  const tree = instance.parse({ schema, name });
456
443
  root.render(
457
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_react.App, { pluginManager, plugin: { ...plugin, options }, mode, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_chunk264TCCJFcjs.Oas, { oas, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_chunk264TCCJFcjs.Oas.Schema, { name, value: schema, tree, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(parseOptions.Schema, { schema, options, instance, name }) }) }) })
444
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_react.App, { pluginManager, plugin: { ...plugin, options }, mode, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_chunkRQZBFORWcjs.Oas, { oas, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_chunkRQZBFORWcjs.Oas.Schema, { name, value: schema, tree, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(parseOptions.Schema, { schema, options, instance, name }) }) }) })
458
445
  );
459
446
  return root.files;
460
447
  }
@@ -469,5 +456,5 @@ function createReactParser(parseOptions) {
469
456
 
470
457
 
471
458
 
472
- exports.OperationGenerator = OperationGenerator; exports.SchemaGenerator = _chunk264TCCJFcjs.SchemaGenerator; exports.createParser = createParser; exports.createReactParser = createReactParser; exports.isKeyword = _chunk264TCCJFcjs.isKeyword; exports.pluginOas = pluginOas; exports.pluginOasName = pluginOasName; exports.schemaKeywords = _chunk264TCCJFcjs.schemaKeywords;
459
+ exports.OperationGenerator = OperationGenerator; exports.SchemaGenerator = _chunkRQZBFORWcjs.SchemaGenerator; exports.createParser = createParser; exports.createReactParser = createReactParser; exports.isKeyword = _chunkRQZBFORWcjs.isKeyword; exports.pluginOas = pluginOas; exports.pluginOasName = pluginOasName; exports.schemaKeywords = _chunkRQZBFORWcjs.schemaKeywords;
473
460
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/kubb/kubb/packages/plugin-oas/dist/index.cjs","../src/index.ts","../src/OperationGenerator.ts","../src/plugin.ts","../src/parser.tsx"],"names":["method"],"mappings":"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","file":"/home/runner/work/kubb/kubb/packages/plugin-oas/dist/index.cjs","sourcesContent":[null,"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'\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'\nimport { parseFromConfig } from './utils/parseFromConfig.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 resolvePath(baseName) {\n if (output === false) {\n return undefined\n }\n\n const root = path.resolve(this.config.root, this.config.output.path)\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n return camelCase(name, { isFile: type === 'file' })\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 const schemas = getSchemas({ oas, contentType })\n\n const mapSchema = async ([name, schema]: [string, OasTypes.SchemaObject]) => {\n const resolvedPath = this.resolvePath({\n baseName: `${name}.json`,\n pluginKey: this.plugin.key,\n })\n\n const resvoledFileName = this.resolveName({\n name: `${name}.json`,\n pluginKey: [pluginOasName],\n type: 'file',\n }) as `${string}.json`\n\n if (!resolvedPath) {\n return\n }\n\n await this.addFile({\n path: resolvedPath,\n baseName: resvoledFileName,\n source: JSON.stringify(schema),\n meta: {\n pluginKey: this.plugin.key,\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, type KubbNode } from '@kubb/react'\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"]}
1
+ {"version":3,"sources":["/home/runner/work/kubb/kubb/packages/plugin-oas/dist/index.cjs","../src/index.ts","../src/OperationGenerator.ts","../src/plugin.ts","../src/parser.tsx"],"names":["method"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACA;ACrBA,8CAAA,CAAA;ADuBA;AACA;AExBA,8CAAA,CAAA;AAAA,kCAA6C;AAC7C,mHAAyB;AADzB,IAAA,mBAAA,EAAA,6BAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA;AA6BO,IAAM,mBAAA,EAAN,MAAA,QAIG,gBAAuD;AAAA,EAJ1D,WAAA,CAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAAA,IAAA,4CAAA,IAAA,EAAA,6BAAA,CAAA;AAKL,IAAA,4CAAA,IAAA,EAAA,mBAAA,EAA0C,CAAC,CAAA,CAAA;AAAA,EAAA;AAAA,EAC3C,IAAI,kBAAA,CAAA,EAAyC;AAC3C,IAAA,OAAO,4CAAA,IAAA,EAAK,mBAAA,CAAA;AAAA,EACd;AAAA,EAEA,IAAI,kBAAA,CAAmB,KAAA,EAA2B;AAChD,IAAA,4CAAA,IAAA,EAAK,mBAAA,EAAsB,KAAA,CAAA;AAAA,EAC7B;AAAA,EAsFA,UAAA,CACE,SAAA,EACA;AAAA,IACE,aAAA;AAAA,IACA,YAAA,EAAc,CAAC,IAAA,EAAA,GAAS;AAAA,EAC1B,EAAA,EAGI,CAAC,CAAA,EACa;AAClB,IAAA,MAAM,iBAAA,EAAmB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,mBAAA,CAAoB,SAAA,EAAW,MAAM,CAAA;AAC/E,IAAA,MAAM,kBAAA,EAAoB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,mBAAA,CAAoB,SAAA,EAAW,OAAO,CAAA;AACjF,IAAA,MAAM,mBAAA,EAAqB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,mBAAA,CAAoB,SAAA,EAAW,QAAQ,CAAA;AACnF,IAAA,MAAM,cAAA,EAAgB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,gBAAA,CAAiB,SAAS,CAAA;AACjE,IAAA,MAAM,mBAAA,EACJ,cAAA,GAAkB,SAAA,CAAU,MAAA,CAAO,UAAA,GAAa,MAAA,CAAO,IAAA,CAAK,SAAA,CAAU,MAAA,CAAO,SAAS,CAAA,CAAE,IAAA,CAAK,CAAC,GAAA,EAAA,GAAQ,GAAA,CAAI,UAAA,CAAW,GAAG,CAAC,EAAA,GAAM,GAAA;AACjI,IAAA,MAAM,eAAA,EAAiB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,iBAAA,CAAkB,SAAA,EAAW,kBAAkB,CAAA;AACvF,IAAA,MAAM,YAAA,EAAc,SAAA,CAAU,sBAAA,CAAuB,CAAA,CAAE,GAAA,CAAI,CAAC,UAAA,EAAA,GAAe;AACzE,MAAA,IAAI,KAAA,EAAO,UAAA;AACX,MAAA,GAAA,CAAI,KAAA,IAAS,SAAA,EAAW;AACtB,QAAA,KAAA,EAAO,OAAA;AAAA,MACT;AAEA,MAAA,MAAM,OAAA,EAAS,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,iBAAA,CAAkB,SAAA,EAAW,UAAU,CAAA;AAEvE,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,WAAA,CAAY,sBAAA,CAAa,UAAA,CAAW,CAAA,EAAA;AAClB,QAAA;AACxB,QAAA;AACA,QAAA;AAC0C,QAAA;AACC,QAAA;AACJ,QAAA;AACzC,MAAA;AACD,IAAA;AAEM,IAAA;AAED,MAAA;AAC4C,QAAA;AAC1C,QAAA;AAC0C,QAAA;AAClC,QAAA;AACmC,QAAA;AAE7C,MAAA;AAEA,MAAA;AAC4C,QAAA;AAC1C,QAAA;AAC0C,QAAA;AAClC,QAAA;AAC6B,QAAA;AAEvC,MAAA;AAEA,MAAA;AAC4C,QAAA;AAC1C,QAAA;AAC0C,QAAA;AAClC,QAAA;AAC8B,QAAA;AAExC,MAAA;AAEA,MAAA;AAC4C,QAAA;AACiC,QAAA;AAC3E,QAAA;AAC0C,QAAA;AAClC,QAAA;AACgC,QAAA;AAEpC,QAAA;AAC0C,UAAA;AAE3B,UAAA;AAEf,QAAA;AAEN,MAAA;AACM,MAAA;AACkC,QAAA;AACnB,QAAA;AACvB,QAAA;AAC0C,QAAA;AAClC,QAAA;AAC6B,QAAA;AACK,QAAA;AAEtC,QAAA;AAC2C,UAAA;AAC5B,UAAA;AAEf,QAAA;AACN,MAAA;AAC0C,MAAA;AAC1C,MAAA;AACF,IAAA;AACF,EAAA;AAE0H,EAAA;AACnG,IAAA;AAEM,IAAA;AACmB,IAAA;AACV,MAAA;AAEN,MAAA;AACYA,QAAAA;AACvB,QAAA;AACW,UAAA;AACQ,UAAA;AAED,UAAA;AACb,YAAA;AACD,cAAA;AACf,YAAA;AACY,YAAA;AACC,cAAA;AACD,cAAA;AACR,gBAAA;AACkC,gBAAA;AACpC,cAAA;AACF,YAAA;AACF,UAAA;AACF,QAAA;AACD,MAAA;AAEM,MAAA;AACkB,IAAA;AAEO,IAAA;AACY,MAAA;AAEhB,MAAA;AACC,QAAA;AACN,QAAA;AAEgC,QAAA;AAEb,QAAA;AACG,UAAA;AAC/B,YAAA;AACL,YAAA;AACJ,UAAA;AAEkB,UAAA;AACK,YAAA;AACxB,UAAA;AACF,QAAA;AAEwC,QAAA;AAC9B,UAAA;AACL,UAAA;AACJ,QAAA;AAEqB,QAAA;AACK,UAAA;AAC3B,QAAA;AAE6B,wBAAA;AACQ,UAAA;AACvB,YAAA;AACV,YAAA;AACS,YAAA;AACC,cAAA;AACL,cAAA;AACL,YAAA;AACM,UAAA;AAEK,UAAA;AACK,YAAA;AAClB,UAAA;AACD,QAAA;AACF,MAAA;AAEM,MAAA;AACkC,IAAA;AAEL,IAAA;AAEG,IAAA;AAEZ,oBAAA;AACS,MAAA;AACxB,QAAA;AAC2B,QAAA;AACZ,QAAA;AACX,QAAA;AACR,MAAA;AAEK,MAAA;AACU,QAAA;AACvB,MAAA;AACD,IAAA;AAEuC,IAAA;AAGN,IAAA;AACpC,EAAA;AAAA;AAAA;AAAA;AAK2F,EAAA;AACjF,IAAA;AACV,EAAA;AAAA;AAAA;AAAA;AAKqF,EAAA;AAC3E,IAAA;AACV,EAAA;AAAA;AAAA;AAAA;AAKsF,EAAA;AAC5E,IAAA;AACV,EAAA;AAAA;AAAA;AAAA;AAIuF,EAAA;AAC7E,IAAA;AACV,EAAA;AAAA;AAAA;AAAA;AAKqF,EAAA;AAC3E,IAAA;AACV,EAAA;AAAA;AAAA;AAAA;AAKwF,EAAA;AAC9E,IAAA;AACV,EAAA;AAAA;AAAA;AAAA;AAKgG,EAAA;AACtF,IAAA;AACV,EAAA;AACF;AAvVE;AALK;AAcoE;AACxC,EAAA;AAGQ,EAAA;AACf,IAAA;AAC0B,MAAA;AAC9C,IAAA;AAE4B,IAAA;AACgB,MAAA;AAC5C,IAAA;AAEqB,IAAA;AACkB,MAAA;AACvC,IAAA;AAEuB,IAAA;AACQ,MAAA;AAC/B,IAAA;AAEO,IAAA;AACO,EAAA;AAEpB;AAAA;AAAA;AAAA;AAAA;AAM+D;AAC/B,EAAA;AAChB,EAAA;AAEyB,EAAA;AACL,IAAA;AACW,MAAA;AAC3C,IAAA;AAEwC,IAAA;AACO,MAAA;AAC/C,IAAA;AAEiC,IAAA;AACS,MAAA;AAC1C,IAAA;AAEmC,IAAA;AACD,MAAA;AAClC,IAAA;AACD,EAAA;AAEM,EAAA;AACT;AAAA;AAAA;AAAA;AAAA;AAM+D;AAC/B,EAAA;AAChB,EAAA;AAEyB,EAAA;AACL,IAAA;AACW,MAAA;AAC3C,IAAA;AAEwC,IAAA;AACO,MAAA;AAC/C,IAAA;AAEiC,IAAA;AACS,MAAA;AAC1C,IAAA;AAEmC,IAAA;AACD,MAAA;AAClC,IAAA;AACD,EAAA;AAEM,EAAA;AACT;AFsLiD;AACA;AGpTnD;AAAiB;AAEY;AACH;AAWG;AAEiC;AACtD,EAAA;AACsC,IAAA;AACtB,IAAA;AACF,IAAA;AACP,IAAA;AACG,IAAA;AACd,IAAA;AACA,IAAA;AACE,EAAA;AAEoC,EAAA;AAClC,IAAA;AAEwC,MAAA;AAE5B,MAAA;AACO,QAAA;AACrB,MAAA;AAEO,MAAA;AACG,IAAA;AACI,MAAA;AAEuB,MAAA;AACM,MAAA;AAC7C,IAAA;AACF,EAAA;AAEO,EAAA;AACC,IAAA;AACN,IAAA;AACU,IAAA;AACmB,MAAA;AAEpB,MAAA;AACiB,QAAA;AACY,UAAA;AAClC,QAAA;AACoC,QAAA;AACJ,UAAA;AACQ,UAAA;AACxC,QAAA;AACmB,QAAA;AACqB,UAAA;AACG,UAAA;AAClC,UAAA;AACT,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACmB,IAAA;AACJ,MAAA;AACX,QAAA;AACF,MAAA;AAEyB,MAAA;AACV,QAAA;AACA,QAAA;AACE,QAAA;AACF,UAAA;AACF,UAAA;AACX,QAAA;AACD,MAAA;AACqB,MAAA;AAEsB,MAAA;AACV,MAAA;AAE2C,MAAA;AACxC,QAAA;AACK,QAAA;AAErB,QAAA;AACX,UAAA;AACN,UAAA;AACM,UAAA;AACmB,YAAA;AACzB,UAAA;AACS,UAAA;AACP,YAAA;AACsB,cAAA;AACN,cAAA;AACc,cAAA;AAC9B,YAAA;AACF,UAAA;AACD,QAAA;AACH,MAAA;AAE6C,MAAA;AACnB,MAAA;AAC5B,IAAA;AACF,EAAA;AACD;AH+RkD;AACA;AI7YnD;AAEgC;AAgEpB;AA3BiH;AACpH,EAAA;AACT;AASuI;AAC9H,EAAA;AACF,IAAA;AACmC,IAAA;AACN,MAAA;AACpB,QAAA;AACV,MAAA;AAE6C,MAAA;AACrB,MAAA;AACA,QAAA;AACvB,MAAA;AAEI,MAAA;AACH,wBAAA;AAKF,MAAA;AAEY,MAAA;AACd,IAAA;AAC+C,IAAA;AAChB,MAAA;AACnB,QAAA;AACV,MAAA;AAE6C,MAAA;AACrB,MAAA;AACA,QAAA;AACvB,MAAA;AAEI,MAAA;AACH,wBAAA;AAOF,MAAA;AAEY,MAAA;AACd,IAAA;AAC+C,IAAA;AACnB,MAAA;AAChB,QAAA;AACV,MAAA;AAE6C,MAAA;AACrB,MAAA;AACA,QAAA;AACvB,MAAA;AAE2C,MAAA;AAEvC,MAAA;AACH,wBAAA;AAOF,MAAA;AAEY,MAAA;AACd,IAAA;AACF,EAAA;AACF;AJyUmD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/kubb/kubb/packages/plugin-oas/dist/index.cjs","sourcesContent":[null,"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"]}
package/dist/index.d.cts CHANGED
@@ -1,11 +1,11 @@
1
- export { G as GetOperationGeneratorOptions, b as GetSchemaGeneratorOptions, a as OperationGenerator, O as OperationMethodResult, h as Parser, i as ParserOptions, P as ParserReactOptions, e as SchemaGenerator, S as SchemaGeneratorBuildOptions, c as SchemaGeneratorOptions, d as SchemaMethodResult, f as createParser, g as createReactParser } from './OperationGenerator-D7rSlflc.cjs';
1
+ export { G as GetOperationGeneratorOptions, b as GetSchemaGeneratorOptions, a as OperationGenerator, O as OperationMethodResult, h as Parser, i as ParserOptions, P as ParserReactOptions, e as SchemaGenerator, S as SchemaGeneratorBuildOptions, c as SchemaGeneratorOptions, d as SchemaMethodResult, f as createParser, g as createReactParser } from './OperationGenerator-Do52cvD0.cjs';
2
2
  import * as _kubb_core from '@kubb/core';
3
3
  import { O as Options, P as PluginOas } from './types-C2RXaY0_.cjs';
4
4
  export { A as API, E as Exclude, I as Include, d as OperationSchema, e as OperationSchemas, f as OperationsByMethod, g as Override, a as Ref, b as Refs, R as ResolvePathOptions, c as Resolver } from './types-C2RXaY0_.cjs';
5
5
  export { S as Schema, a as SchemaKeyword, b as SchemaKeywordBase, c as SchemaKeywordMapper, d as SchemaMapper, i as isKeyword, s as schemaKeywords } from './SchemaMapper-BM1IGWqD.cjs';
6
6
  import '@kubb/fs/types';
7
7
  import '@kubb/oas';
8
- import '@kubb/react';
8
+ import '@kubb/react/types';
9
9
  import '@kubb/oas/parser';
10
10
 
11
11
  declare const pluginOasName = "plugin-oas";
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- export { G as GetOperationGeneratorOptions, b as GetSchemaGeneratorOptions, a as OperationGenerator, O as OperationMethodResult, h as Parser, i as ParserOptions, P as ParserReactOptions, e as SchemaGenerator, S as SchemaGeneratorBuildOptions, c as SchemaGeneratorOptions, d as SchemaMethodResult, f as createParser, g as createReactParser } from './OperationGenerator-vw0Zf-Mi.js';
1
+ export { G as GetOperationGeneratorOptions, b as GetSchemaGeneratorOptions, a as OperationGenerator, O as OperationMethodResult, h as Parser, i as ParserOptions, P as ParserReactOptions, e as SchemaGenerator, S as SchemaGeneratorBuildOptions, c as SchemaGeneratorOptions, d as SchemaMethodResult, f as createParser, g as createReactParser } from './OperationGenerator-Dzs1oRvm.js';
2
2
  import * as _kubb_core from '@kubb/core';
3
3
  import { O as Options, P as PluginOas } from './types-C2RXaY0_.js';
4
4
  export { A as API, E as Exclude, I as Include, d as OperationSchema, e as OperationSchemas, f as OperationsByMethod, g as Override, a as Ref, b as Refs, R as ResolvePathOptions, c as Resolver } from './types-C2RXaY0_.js';
5
5
  export { S as Schema, a as SchemaKeyword, b as SchemaKeywordBase, c as SchemaKeywordMapper, d as SchemaMapper, i as isKeyword, s as schemaKeywords } from './SchemaMapper-BM1IGWqD.js';
6
6
  import '@kubb/fs/types';
7
7
  import '@kubb/oas';
8
- import '@kubb/react';
8
+ import '@kubb/react/types';
9
9
  import '@kubb/oas/parser';
10
10
 
11
11
  declare const pluginOasName = "plugin-oas";
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  isKeyword,
9
9
  require_jsx_runtime,
10
10
  schemaKeywords
11
- } from "./chunk-FZN3PBEK.js";
11
+ } from "./chunk-UJNAXXVE.js";
12
12
  import {
13
13
  __privateAdd,
14
14
  __privateGet,
@@ -356,16 +356,6 @@ var pluginOas = createPlugin((options) => {
356
356
  contentType
357
357
  };
358
358
  },
359
- resolvePath(baseName) {
360
- if (output === false) {
361
- return void 0;
362
- }
363
- const root = path.resolve(this.config.root, this.config.output.path);
364
- return path.resolve(root, output.path, baseName);
365
- },
366
- resolveName(name, type) {
367
- return camelCase(name, { isFile: type === "file" });
368
- },
369
359
  async buildStart() {
370
360
  if (!output) {
371
361
  return;
@@ -379,27 +369,24 @@ var pluginOas = createPlugin((options) => {
379
369
  }
380
370
  });
381
371
  await oas.dereference();
372
+ const root = path.resolve(this.config.root, this.config.output.path);
382
373
  const schemas = getSchemas({ oas, contentType });
383
374
  const mapSchema = async ([name, schema]) => {
384
- const resolvedPath = this.resolvePath({
385
- baseName: `${name}.json`,
386
- pluginKey: this.plugin.key
387
- });
388
- const resvoledFileName = this.resolveName({
389
- name: `${name}.json`,
390
- pluginKey: [pluginOasName],
391
- type: "file"
392
- });
393
- if (!resolvedPath) {
394
- return;
395
- }
375
+ const baseName = `${camelCase(name)}.json`;
376
+ const resolvedPath = path.resolve(root, output.path, baseName);
396
377
  await this.addFile({
397
378
  path: resolvedPath,
398
- baseName: resvoledFileName,
399
- source: JSON.stringify(schema),
379
+ baseName,
400
380
  meta: {
401
381
  pluginKey: this.plugin.key
402
- }
382
+ },
383
+ sources: [
384
+ {
385
+ name: camelCase(name),
386
+ isExportable: false,
387
+ value: JSON.stringify(schema)
388
+ }
389
+ ]
403
390
  });
404
391
  };
405
392
  const promises = Object.entries(schemas).map(mapSchema);