@kubb/plugin-oas 2.19.4 → 2.19.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.
- package/dist/{chunk-3NSBUDVM.js → chunk-AHPYTLES.js} +34 -41
- package/dist/{chunk-3NSBUDVM.js.map → chunk-AHPYTLES.js.map} +1 -1
- package/dist/{chunk-USWJ3LIC.cjs → chunk-IJDG7KT6.cjs} +40 -47
- package/dist/chunk-IJDG7KT6.cjs.map +1 -0
- package/dist/{chunk-YS56QITS.cjs → chunk-LXHYPSLT.cjs} +11 -25
- package/dist/chunk-LXHYPSLT.cjs.map +1 -0
- package/dist/{chunk-WEZ6CODU.cjs → chunk-MZJFTD2Z.cjs} +3 -3
- package/dist/{chunk-CBVKDLCJ.js → chunk-RLUQTHVB.js} +45 -74
- package/dist/{chunk-CBVKDLCJ.js.map → chunk-RLUQTHVB.js.map} +1 -1
- package/dist/{chunk-FDLHRTTS.js → chunk-V7H5ZWZY.js} +2 -2
- package/dist/{chunk-SXUTBEJ7.js → chunk-VHGCZBHU.js} +11 -25
- package/dist/{chunk-SXUTBEJ7.js.map → chunk-VHGCZBHU.js.map} +1 -1
- package/dist/{chunk-I5KLDP43.cjs → chunk-XE6N3VWS.cjs} +65 -94
- package/dist/chunk-XE6N3VWS.cjs.map +1 -0
- package/dist/components.cjs +5 -5
- package/dist/components.js +3 -3
- package/dist/hooks.cjs +13 -13
- package/dist/hooks.js +3 -3
- package/dist/index.cjs +30 -36
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +19 -25
- package/dist/index.js.map +1 -1
- package/dist/utils.cjs +8 -8
- package/dist/utils.js +2 -2
- package/package.json +11 -11
- package/src/SchemaGenerator.ts +8 -2
- package/dist/chunk-I5KLDP43.cjs.map +0 -1
- package/dist/chunk-USWJ3LIC.cjs.map +0 -1
- package/dist/chunk-YS56QITS.cjs.map +0 -1
- /package/dist/{chunk-WEZ6CODU.cjs.map → chunk-MZJFTD2Z.cjs.map} +0 -0
- /package/dist/{chunk-FDLHRTTS.js.map → chunk-V7H5ZWZY.js.map} +0 -0
package/dist/hooks.cjs
CHANGED
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
require('./chunk-
|
|
5
|
+
var _chunkXE6N3VWScjs = require('./chunk-XE6N3VWS.cjs');
|
|
6
|
+
require('./chunk-IJDG7KT6.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkLXHYPSLTcjs = require('./chunk-LXHYPSLT.cjs');
|
|
10
10
|
|
|
11
11
|
// src/hooks/index.ts
|
|
12
|
-
|
|
12
|
+
_chunkLXHYPSLTcjs.init_cjs_shims.call(void 0, );
|
|
13
13
|
|
|
14
14
|
// src/hooks/useOas.ts
|
|
15
|
-
|
|
15
|
+
_chunkLXHYPSLTcjs.init_cjs_shims.call(void 0, );
|
|
16
16
|
var _react = require('@kubb/react');
|
|
17
17
|
function useOas() {
|
|
18
|
-
const { oas } = _react.useContext.call(void 0,
|
|
18
|
+
const { oas } = _react.useContext.call(void 0, _chunkXE6N3VWScjs.Oas.Context);
|
|
19
19
|
if (!oas) {
|
|
20
20
|
throw new Error("Oas is not defined");
|
|
21
21
|
}
|
|
@@ -23,10 +23,10 @@ function useOas() {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
// src/hooks/useOperation.ts
|
|
26
|
-
|
|
26
|
+
_chunkLXHYPSLTcjs.init_cjs_shims.call(void 0, );
|
|
27
27
|
|
|
28
28
|
function useOperation() {
|
|
29
|
-
const { operation } = _react.useContext.call(void 0,
|
|
29
|
+
const { operation } = _react.useContext.call(void 0, _chunkXE6N3VWScjs.Operation.Context);
|
|
30
30
|
if (!operation) {
|
|
31
31
|
throw new Error("Operation is not defined");
|
|
32
32
|
}
|
|
@@ -34,11 +34,11 @@ function useOperation() {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
// src/hooks/useOperationManager.ts
|
|
37
|
-
|
|
37
|
+
_chunkLXHYPSLTcjs.init_cjs_shims.call(void 0, );
|
|
38
38
|
|
|
39
39
|
function useOperationManager() {
|
|
40
40
|
const { plugin, pluginManager } = _react.useApp.call(void 0, );
|
|
41
|
-
const { generator } = _react.useContext.call(void 0,
|
|
41
|
+
const { generator } = _react.useContext.call(void 0, _chunkXE6N3VWScjs.Oas.Context);
|
|
42
42
|
if (!generator) {
|
|
43
43
|
throw new Error(`'generator' is not defined`);
|
|
44
44
|
}
|
|
@@ -126,10 +126,10 @@ function useOperationManager() {
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
// src/hooks/useOperations.ts
|
|
129
|
-
|
|
129
|
+
_chunkLXHYPSLTcjs.init_cjs_shims.call(void 0, );
|
|
130
130
|
|
|
131
131
|
function useOperations({ method, path } = {}) {
|
|
132
|
-
const { operations } = _react.useContext.call(void 0,
|
|
132
|
+
const { operations } = _react.useContext.call(void 0, _chunkXE6N3VWScjs.Oas.Context);
|
|
133
133
|
if (!operations) {
|
|
134
134
|
throw new Error("Operations is not defined");
|
|
135
135
|
}
|
|
@@ -148,5 +148,5 @@ function useOperations({ method, path } = {}) {
|
|
|
148
148
|
|
|
149
149
|
|
|
150
150
|
|
|
151
|
-
exports.useOas = useOas; exports.useOperation = useOperation; exports.useOperationManager = useOperationManager; exports.useOperations = useOperations; exports.useSchema =
|
|
151
|
+
exports.useOas = useOas; exports.useOperation = useOperation; exports.useOperationManager = useOperationManager; exports.useOperations = useOperations; exports.useSchema = _chunkXE6N3VWScjs.useSchema;
|
|
152
152
|
//# sourceMappingURL=hooks.cjs.map
|
package/dist/hooks.js
CHANGED
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
Oas,
|
|
3
3
|
Operation,
|
|
4
4
|
useSchema
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-RLUQTHVB.js";
|
|
6
|
+
import "./chunk-AHPYTLES.js";
|
|
7
7
|
import {
|
|
8
8
|
init_esm_shims
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-VHGCZBHU.js";
|
|
10
10
|
|
|
11
11
|
// src/hooks/index.ts
|
|
12
12
|
init_esm_shims();
|
package/dist/index.cjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
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
|
|
3
|
+
var _chunkMZJFTD2Zcjs = require('./chunk-MZJFTD2Z.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _chunkIJDG7KT6cjs = require('./chunk-IJDG7KT6.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
@@ -13,13 +13,13 @@ var _chunkUSWJ3LICcjs = require('./chunk-USWJ3LIC.cjs');
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _chunkLXHYPSLTcjs = require('./chunk-LXHYPSLT.cjs');
|
|
17
17
|
|
|
18
18
|
// src/index.ts
|
|
19
|
-
|
|
19
|
+
_chunkLXHYPSLTcjs.init_cjs_shims.call(void 0, );
|
|
20
20
|
|
|
21
21
|
// src/plugin.ts
|
|
22
|
-
|
|
22
|
+
_chunkLXHYPSLTcjs.init_cjs_shims.call(void 0, );
|
|
23
23
|
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
24
24
|
var _core = require('@kubb/core');
|
|
25
25
|
var _transformers = require('@kubb/core/transformers'); var _transformers2 = _interopRequireDefault(_transformers);
|
|
@@ -35,7 +35,7 @@ var pluginOas = _core.createPlugin.call(void 0, (options) => {
|
|
|
35
35
|
} = options;
|
|
36
36
|
const getOas = async ({ config, logger, formatOptions }) => {
|
|
37
37
|
try {
|
|
38
|
-
const oas = await
|
|
38
|
+
const oas = await _chunkMZJFTD2Zcjs.parseFromConfig.call(void 0, config, formatOptions);
|
|
39
39
|
if (validate) {
|
|
40
40
|
await oas.valdiate();
|
|
41
41
|
}
|
|
@@ -43,7 +43,7 @@ var pluginOas = _core.createPlugin.call(void 0, (options) => {
|
|
|
43
43
|
} catch (e) {
|
|
44
44
|
const error = e;
|
|
45
45
|
logger.emit("warning", _optionalChain([error, 'optionalAccess', _ => _.message]));
|
|
46
|
-
return
|
|
46
|
+
return _chunkMZJFTD2Zcjs.parseFromConfig.call(void 0, config);
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
49
|
return {
|
|
@@ -57,7 +57,7 @@ var pluginOas = _core.createPlugin.call(void 0, (options) => {
|
|
|
57
57
|
},
|
|
58
58
|
async getSchemas({ includes } = {}) {
|
|
59
59
|
const oas = await this.getOas();
|
|
60
|
-
return
|
|
60
|
+
return _chunkLXHYPSLTcjs.getSchemas.call(void 0, { oas, contentType, includes });
|
|
61
61
|
},
|
|
62
62
|
async getBaseURL() {
|
|
63
63
|
const oasInstance = await this.getOas();
|
|
@@ -96,7 +96,7 @@ var pluginOas = _core.createPlugin.call(void 0, (options) => {
|
|
|
96
96
|
}
|
|
97
97
|
});
|
|
98
98
|
await oas.dereference();
|
|
99
|
-
const schemas =
|
|
99
|
+
const schemas = _chunkLXHYPSLTcjs.getSchemas.call(void 0, { oas, contentType });
|
|
100
100
|
const mapSchema = async ([name, schema]) => {
|
|
101
101
|
const resolvedPath = this.resolvePath({
|
|
102
102
|
baseName: `${name}.json`,
|
|
@@ -126,32 +126,21 @@ var pluginOas = _core.createPlugin.call(void 0, (options) => {
|
|
|
126
126
|
});
|
|
127
127
|
|
|
128
128
|
// src/OperationGenerator.ts
|
|
129
|
-
|
|
129
|
+
_chunkLXHYPSLTcjs.init_cjs_shims.call(void 0, );
|
|
130
130
|
|
|
131
131
|
|
|
132
|
-
var _operationsByMethod,
|
|
132
|
+
var _operationsByMethod, _OperationGenerator_instances, getOptions_fn, isExcluded_fn, isIncluded_fn, methods_get;
|
|
133
133
|
var OperationGenerator = class extends _core.Generator {
|
|
134
134
|
constructor() {
|
|
135
135
|
super(...arguments);
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
*
|
|
139
|
-
* @deprecated
|
|
140
|
-
*/
|
|
141
|
-
_chunkYS56QITScjs.__privateAdd.call(void 0, this, _isExcluded);
|
|
142
|
-
/**
|
|
143
|
-
*
|
|
144
|
-
* @deprecated
|
|
145
|
-
*/
|
|
146
|
-
_chunkYS56QITScjs.__privateAdd.call(void 0, this, _isIncluded);
|
|
147
|
-
_chunkYS56QITScjs.__privateAdd.call(void 0, this, _methods);
|
|
148
|
-
_chunkYS56QITScjs.__privateAdd.call(void 0, this, _operationsByMethod, {});
|
|
136
|
+
_chunkLXHYPSLTcjs.__privateAdd.call(void 0, this, _OperationGenerator_instances);
|
|
137
|
+
_chunkLXHYPSLTcjs.__privateAdd.call(void 0, this, _operationsByMethod, {});
|
|
149
138
|
}
|
|
150
139
|
get operationsByMethod() {
|
|
151
|
-
return
|
|
140
|
+
return _chunkLXHYPSLTcjs.__privateGet.call(void 0, this, _operationsByMethod);
|
|
152
141
|
}
|
|
153
142
|
set operationsByMethod(paths) {
|
|
154
|
-
|
|
143
|
+
_chunkLXHYPSLTcjs.__privateSet.call(void 0, this, _operationsByMethod, paths);
|
|
155
144
|
}
|
|
156
145
|
getSchemas(operation, forStatusCode) {
|
|
157
146
|
const pathParamsSchema = this.context.oas.getParametersSchema(operation, "path");
|
|
@@ -234,9 +223,9 @@ var OperationGenerator = class extends _core.Generator {
|
|
|
234
223
|
const methods = Object.keys(method);
|
|
235
224
|
methods.forEach((method2) => {
|
|
236
225
|
const operation = oas.operation(path2, method2);
|
|
237
|
-
if (operation &&
|
|
238
|
-
const isExcluded =
|
|
239
|
-
const isIncluded = this.context.include ?
|
|
226
|
+
if (operation && _chunkLXHYPSLTcjs.__privateGet.call(void 0, this, _OperationGenerator_instances, methods_get)[method2]) {
|
|
227
|
+
const isExcluded = _chunkLXHYPSLTcjs.__privateMethod.call(void 0, this, _OperationGenerator_instances, isExcluded_fn).call(this, operation, method2);
|
|
228
|
+
const isIncluded = this.context.include ? _chunkLXHYPSLTcjs.__privateMethod.call(void 0, this, _OperationGenerator_instances, isIncluded_fn).call(this, operation, method2) : true;
|
|
240
229
|
if (isIncluded && !isExcluded) {
|
|
241
230
|
if (!acc[path2]) {
|
|
242
231
|
acc[path2] = {};
|
|
@@ -257,8 +246,8 @@ var OperationGenerator = class extends _core.Generator {
|
|
|
257
246
|
const methods = this.operationsByMethod[path2] ? Object.keys(this.operationsByMethod[path2]) : [];
|
|
258
247
|
methods.forEach((method) => {
|
|
259
248
|
const { operation } = _optionalChain([this, 'access', _37 => _37.operationsByMethod, 'access', _38 => _38[path2], 'optionalAccess', _39 => _39[method]]);
|
|
260
|
-
const options =
|
|
261
|
-
const promiseMethod = _optionalChain([
|
|
249
|
+
const options = _chunkLXHYPSLTcjs.__privateMethod.call(void 0, this, _OperationGenerator_instances, getOptions_fn).call(this, operation, method);
|
|
250
|
+
const promiseMethod = _optionalChain([_chunkLXHYPSLTcjs.__privateGet.call(void 0, this, _OperationGenerator_instances, methods_get), 'access', _40 => _40[method], 'optionalAccess', _41 => _41.call, 'call', _42 => _42(this, operation, {
|
|
262
251
|
...this.options,
|
|
263
252
|
...options
|
|
264
253
|
})]);
|
|
@@ -324,7 +313,7 @@ var OperationGenerator = class extends _core.Generator {
|
|
|
324
313
|
}
|
|
325
314
|
};
|
|
326
315
|
_operationsByMethod = new WeakMap();
|
|
327
|
-
|
|
316
|
+
_OperationGenerator_instances = new WeakSet();
|
|
328
317
|
getOptions_fn = function(operation, method) {
|
|
329
318
|
const { override = [] } = this.context;
|
|
330
319
|
return _optionalChain([override, 'access', _43 => _43.find, 'call', _44 => _44(({ pattern, type }) => {
|
|
@@ -343,7 +332,10 @@ getOptions_fn = function(operation, method) {
|
|
|
343
332
|
return false;
|
|
344
333
|
}), 'optionalAccess', _51 => _51.options]) || {};
|
|
345
334
|
};
|
|
346
|
-
|
|
335
|
+
/**
|
|
336
|
+
*
|
|
337
|
+
* @deprecated
|
|
338
|
+
*/
|
|
347
339
|
isExcluded_fn = function(operation, method) {
|
|
348
340
|
const { exclude = [] } = this.context;
|
|
349
341
|
let matched = false;
|
|
@@ -363,7 +355,10 @@ isExcluded_fn = function(operation, method) {
|
|
|
363
355
|
});
|
|
364
356
|
return matched;
|
|
365
357
|
};
|
|
366
|
-
|
|
358
|
+
/**
|
|
359
|
+
*
|
|
360
|
+
* @deprecated
|
|
361
|
+
*/
|
|
367
362
|
isIncluded_fn = function(operation, method) {
|
|
368
363
|
const { include = [] } = this.context;
|
|
369
364
|
let matched = false;
|
|
@@ -383,7 +378,6 @@ isIncluded_fn = function(operation, method) {
|
|
|
383
378
|
});
|
|
384
379
|
return matched;
|
|
385
380
|
};
|
|
386
|
-
_methods = new WeakSet();
|
|
387
381
|
methods_get = function() {
|
|
388
382
|
return {
|
|
389
383
|
get: this.get,
|
|
@@ -408,5 +402,5 @@ var src_default = definePluginDefault;
|
|
|
408
402
|
|
|
409
403
|
|
|
410
404
|
|
|
411
|
-
exports.OperationGenerator = OperationGenerator; exports.SchemaGenerator =
|
|
405
|
+
exports.OperationGenerator = OperationGenerator; exports.SchemaGenerator = _chunkIJDG7KT6cjs.SchemaGenerator; exports.default = src_default; exports.isKeyword = _chunkIJDG7KT6cjs.isKeyword; exports.pluginOas = pluginOas; exports.pluginOasName = pluginOasName; exports.schemaKeywords = _chunkIJDG7KT6cjs.schemaKeywords;
|
|
412
406
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/plugin.ts","../src/OperationGenerator.ts"],"names":["path","method","item"],"mappings":"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","sourcesContent":["import { pluginOas } from './plugin.ts'\n\nexport 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'\n\n/**\n * @deprecated Use `import { pluginOas } from '@kubb/plugin-oas'` instead\n */\nconst definePluginDefault = pluginOas\n\nexport default definePluginDefault\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 } = 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)\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)\n }\n }\n\n return {\n name: pluginOasName,\n options,\n\n api() {\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 writeFile(path, source) {\n if (!path.endsWith('.json') || !source) {\n return\n }\n\n return this.fileManager.write(path, source, { sanity: false })\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 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'\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 abstract 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 * @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 * @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(operation: Operation, forStatusCode?: string | number): 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: 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: 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: 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: 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: 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: 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 get #methods() {\n return {\n get: this.get,\n post: this.post,\n patch: this.patch,\n put: this.put,\n delete: this.delete,\n head: undefined,\n options: undefined,\n trace: undefined,\n } as const\n }\n\n async build(): 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 && this.#methods[method]) {\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 const promiseMethod = this.#methods[method]?.call(this, operation, {\n ...this.options,\n ...options,\n })\n const promiseOperation = this.operation.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseMethod) {\n acc.push(promiseMethod)\n }\n if (promiseOperation) {\n acc.push(promiseOperation)\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 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 null\n }\n\n /**\n * GET\n */\n async get(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * POST\n */\n async post(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n /**\n * PATCH\n */\n async patch(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * PUT\n */\n async put(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * DELETE\n */\n async delete(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * Combination of GET, POST, PATCH, PUT, DELETE\n */\n async all(operations: Operation[], paths: OperationsByMethod): OperationMethodResult<TFileMeta> {\n return null\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/plugin.ts","../src/OperationGenerator.ts"],"names":["path","method","item"],"mappings":"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","sourcesContent":["import { pluginOas } from './plugin.ts'\n\nexport 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'\n\n/**\n * @deprecated Use `import { pluginOas } from '@kubb/plugin-oas'` instead\n */\nconst definePluginDefault = pluginOas\n\nexport default definePluginDefault\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 } = 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)\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)\n }\n }\n\n return {\n name: pluginOasName,\n options,\n\n api() {\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 writeFile(path, source) {\n if (!path.endsWith('.json') || !source) {\n return\n }\n\n return this.fileManager.write(path, source, { sanity: false })\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 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'\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 abstract 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 * @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 * @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(operation: Operation, forStatusCode?: string | number): 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: 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: 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: 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: 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: 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: 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 get #methods() {\n return {\n get: this.get,\n post: this.post,\n patch: this.patch,\n put: this.put,\n delete: this.delete,\n head: undefined,\n options: undefined,\n trace: undefined,\n } as const\n }\n\n async build(): 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 && this.#methods[method]) {\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 const promiseMethod = this.#methods[method]?.call(this, operation, {\n ...this.options,\n ...options,\n })\n const promiseOperation = this.operation.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseMethod) {\n acc.push(promiseMethod)\n }\n if (promiseOperation) {\n acc.push(promiseOperation)\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 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 null\n }\n\n /**\n * GET\n */\n async get(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * POST\n */\n async post(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n /**\n * PATCH\n */\n async patch(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * PUT\n */\n async put(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * DELETE\n */\n async delete(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * Combination of GET, POST, PATCH, PUT, DELETE\n */\n async all(operations: Operation[], paths: OperationsByMethod): OperationMethodResult<TFileMeta> {\n return null\n }\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseFromConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-V7H5ZWZY.js";
|
|
4
4
|
import {
|
|
5
5
|
SchemaGenerator,
|
|
6
6
|
isKeyword,
|
|
7
7
|
schemaKeywords
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-AHPYTLES.js";
|
|
9
9
|
import {
|
|
10
10
|
__privateAdd,
|
|
11
11
|
__privateGet,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
__privateSet,
|
|
14
14
|
getSchemas,
|
|
15
15
|
init_esm_shims
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-VHGCZBHU.js";
|
|
17
17
|
|
|
18
18
|
// src/index.ts
|
|
19
19
|
init_esm_shims();
|
|
@@ -129,22 +129,11 @@ var pluginOas = createPlugin((options) => {
|
|
|
129
129
|
init_esm_shims();
|
|
130
130
|
import { Generator } from "@kubb/core";
|
|
131
131
|
import transformers from "@kubb/core/transformers";
|
|
132
|
-
var _operationsByMethod,
|
|
132
|
+
var _operationsByMethod, _OperationGenerator_instances, getOptions_fn, isExcluded_fn, isIncluded_fn, methods_get;
|
|
133
133
|
var OperationGenerator = class extends Generator {
|
|
134
134
|
constructor() {
|
|
135
135
|
super(...arguments);
|
|
136
|
-
__privateAdd(this,
|
|
137
|
-
/**
|
|
138
|
-
*
|
|
139
|
-
* @deprecated
|
|
140
|
-
*/
|
|
141
|
-
__privateAdd(this, _isExcluded);
|
|
142
|
-
/**
|
|
143
|
-
*
|
|
144
|
-
* @deprecated
|
|
145
|
-
*/
|
|
146
|
-
__privateAdd(this, _isIncluded);
|
|
147
|
-
__privateAdd(this, _methods);
|
|
136
|
+
__privateAdd(this, _OperationGenerator_instances);
|
|
148
137
|
__privateAdd(this, _operationsByMethod, {});
|
|
149
138
|
}
|
|
150
139
|
get operationsByMethod() {
|
|
@@ -234,9 +223,9 @@ var OperationGenerator = class extends Generator {
|
|
|
234
223
|
const methods = Object.keys(method);
|
|
235
224
|
methods.forEach((method2) => {
|
|
236
225
|
const operation = oas.operation(path2, method2);
|
|
237
|
-
if (operation && __privateGet(this,
|
|
238
|
-
const isExcluded = __privateMethod(this,
|
|
239
|
-
const isIncluded = this.context.include ? __privateMethod(this,
|
|
226
|
+
if (operation && __privateGet(this, _OperationGenerator_instances, methods_get)[method2]) {
|
|
227
|
+
const isExcluded = __privateMethod(this, _OperationGenerator_instances, isExcluded_fn).call(this, operation, method2);
|
|
228
|
+
const isIncluded = this.context.include ? __privateMethod(this, _OperationGenerator_instances, isIncluded_fn).call(this, operation, method2) : true;
|
|
240
229
|
if (isIncluded && !isExcluded) {
|
|
241
230
|
if (!acc[path2]) {
|
|
242
231
|
acc[path2] = {};
|
|
@@ -257,8 +246,8 @@ var OperationGenerator = class extends Generator {
|
|
|
257
246
|
const methods = this.operationsByMethod[path2] ? Object.keys(this.operationsByMethod[path2]) : [];
|
|
258
247
|
methods.forEach((method) => {
|
|
259
248
|
const { operation } = this.operationsByMethod[path2]?.[method];
|
|
260
|
-
const options = __privateMethod(this,
|
|
261
|
-
const promiseMethod = __privateGet(this,
|
|
249
|
+
const options = __privateMethod(this, _OperationGenerator_instances, getOptions_fn).call(this, operation, method);
|
|
250
|
+
const promiseMethod = __privateGet(this, _OperationGenerator_instances, methods_get)[method]?.call(this, operation, {
|
|
262
251
|
...this.options,
|
|
263
252
|
...options
|
|
264
253
|
});
|
|
@@ -324,7 +313,7 @@ var OperationGenerator = class extends Generator {
|
|
|
324
313
|
}
|
|
325
314
|
};
|
|
326
315
|
_operationsByMethod = new WeakMap();
|
|
327
|
-
|
|
316
|
+
_OperationGenerator_instances = new WeakSet();
|
|
328
317
|
getOptions_fn = function(operation, method) {
|
|
329
318
|
const { override = [] } = this.context;
|
|
330
319
|
return override.find(({ pattern, type }) => {
|
|
@@ -343,7 +332,10 @@ getOptions_fn = function(operation, method) {
|
|
|
343
332
|
return false;
|
|
344
333
|
})?.options || {};
|
|
345
334
|
};
|
|
346
|
-
|
|
335
|
+
/**
|
|
336
|
+
*
|
|
337
|
+
* @deprecated
|
|
338
|
+
*/
|
|
347
339
|
isExcluded_fn = function(operation, method) {
|
|
348
340
|
const { exclude = [] } = this.context;
|
|
349
341
|
let matched = false;
|
|
@@ -363,7 +355,10 @@ isExcluded_fn = function(operation, method) {
|
|
|
363
355
|
});
|
|
364
356
|
return matched;
|
|
365
357
|
};
|
|
366
|
-
|
|
358
|
+
/**
|
|
359
|
+
*
|
|
360
|
+
* @deprecated
|
|
361
|
+
*/
|
|
367
362
|
isIncluded_fn = function(operation, method) {
|
|
368
363
|
const { include = [] } = this.context;
|
|
369
364
|
let matched = false;
|
|
@@ -383,7 +378,6 @@ isIncluded_fn = function(operation, method) {
|
|
|
383
378
|
});
|
|
384
379
|
return matched;
|
|
385
380
|
};
|
|
386
|
-
_methods = new WeakSet();
|
|
387
381
|
methods_get = function() {
|
|
388
382
|
return {
|
|
389
383
|
get: this.get,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/plugin.ts","../src/OperationGenerator.ts"],"sourcesContent":["import { pluginOas } from './plugin.ts'\n\nexport 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'\n\n/**\n * @deprecated Use `import { pluginOas } from '@kubb/plugin-oas'` instead\n */\nconst definePluginDefault = pluginOas\n\nexport default definePluginDefault\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 } = 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)\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)\n }\n }\n\n return {\n name: pluginOasName,\n options,\n\n api() {\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 writeFile(path, source) {\n if (!path.endsWith('.json') || !source) {\n return\n }\n\n return this.fileManager.write(path, source, { sanity: false })\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 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'\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 abstract 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 * @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 * @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(operation: Operation, forStatusCode?: string | number): 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: 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: 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: 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: 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: 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: 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 get #methods() {\n return {\n get: this.get,\n post: this.post,\n patch: this.patch,\n put: this.put,\n delete: this.delete,\n head: undefined,\n options: undefined,\n trace: undefined,\n } as const\n }\n\n async build(): 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 && this.#methods[method]) {\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 const promiseMethod = this.#methods[method]?.call(this, operation, {\n ...this.options,\n ...options,\n })\n const promiseOperation = this.operation.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseMethod) {\n acc.push(promiseMethod)\n }\n if (promiseOperation) {\n acc.push(promiseOperation)\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 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 null\n }\n\n /**\n * GET\n */\n async get(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * POST\n */\n async post(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n /**\n * PATCH\n */\n async patch(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * PUT\n */\n async put(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * DELETE\n */\n async delete(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * Combination of GET, POST, PATCH, PUT, DELETE\n */\n async all(operations: Operation[], paths: OperationsByMethod): OperationMethodResult<TFileMeta> {\n return null\n }\n}\n"],"mappings":"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","names":["path","path","method","item"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/plugin.ts","../src/OperationGenerator.ts"],"sourcesContent":["import { pluginOas } from './plugin.ts'\n\nexport 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'\n\n/**\n * @deprecated Use `import { pluginOas } from '@kubb/plugin-oas'` instead\n */\nconst definePluginDefault = pluginOas\n\nexport default definePluginDefault\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 } = 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)\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)\n }\n }\n\n return {\n name: pluginOasName,\n options,\n\n api() {\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 writeFile(path, source) {\n if (!path.endsWith('.json') || !source) {\n return\n }\n\n return this.fileManager.write(path, source, { sanity: false })\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 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'\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 abstract 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 * @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 * @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(operation: Operation, forStatusCode?: string | number): 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: 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: 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: 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: 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: 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: 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 get #methods() {\n return {\n get: this.get,\n post: this.post,\n patch: this.patch,\n put: this.put,\n delete: this.delete,\n head: undefined,\n options: undefined,\n trace: undefined,\n } as const\n }\n\n async build(): 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 && this.#methods[method]) {\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 const promiseMethod = this.#methods[method]?.call(this, operation, {\n ...this.options,\n ...options,\n })\n const promiseOperation = this.operation.call(this, operation, {\n ...this.options,\n ...options,\n })\n\n if (promiseMethod) {\n acc.push(promiseMethod)\n }\n if (promiseOperation) {\n acc.push(promiseOperation)\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 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 null\n }\n\n /**\n * GET\n */\n async get(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * POST\n */\n async post(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n /**\n * PATCH\n */\n async patch(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * PUT\n */\n async put(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * DELETE\n */\n async delete(operation: Operation, options: TOptions): OperationMethodResult<TFileMeta> {\n return null\n }\n\n /**\n * Combination of GET, POST, PATCH, PUT, DELETE\n */\n async all(operations: Operation[], paths: OperationsByMethod): OperationMethodResult<TFileMeta> {\n return null\n }\n}\n"],"mappings":"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","names":["path","path","method","item"]}
|