vona-module-a-openapi 5.0.46 → 5.0.48
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/.metadata/index.d.ts +1 -0
- package/dist/bean/bean.openapi.d.ts +4 -0
- package/dist/index.js +44 -44
- package/dist/service/openapi.d.ts +4 -7
- package/package.json +1 -1
|
@@ -4,4 +4,8 @@ import { BeanBase } from 'vona';
|
|
|
4
4
|
export declare class BeanOpenapi extends BeanBase {
|
|
5
5
|
generateJsonOfClass<K extends keyof IOpenapiObject>(schemaClass: Constructable, version?: K): Promise<IOpenapiObject[K]>;
|
|
6
6
|
generateJsonOfClasses<K extends keyof IOpenapiObject>(schemaClasses: Constructable[], version?: K): Promise<IOpenapiObject[K]>;
|
|
7
|
+
protected generateJsonCacheKey(args: any[], prop: string): string;
|
|
8
|
+
protected generateJsonOfControllerActionCacheKey(args: any[], prop: string): string;
|
|
9
|
+
generateJson<K extends keyof IOpenapiObject>(version?: K): Promise<IOpenapiObject[K]>;
|
|
10
|
+
generateJsonOfControllerAction<K extends keyof IOpenapiObject>(controller: Constructable, actionKey: string, version?: K): Promise<IOpenapiObject[K]>;
|
|
7
11
|
}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { registerMappedClassMetadataKey, appMetadata, appResource, cast, deepExtend, BeanInfo, BeanBase, LocaleModuleNameSeparator, BeanSimple, BeanScopeBase, useApp, beanFullNameFromOnionName } from 'vona';
|
|
2
2
|
import { OpenAPIRegistry, OpenApiGeneratorV3, OpenApiGeneratorV31 } from '@cabloy/zod-to-openapi';
|
|
3
3
|
import { Bean, Service, Scope } from 'vona-module-a-bean';
|
|
4
|
+
import { Caching } from 'vona-module-a-caching';
|
|
4
5
|
import { SymbolDecoratorRule, SymbolOpenApiOptions } from 'vona-module-a-openapiutils';
|
|
5
6
|
import { z } from 'zod';
|
|
6
7
|
import { isEmptyObject, isClass, isNil } from '@cabloy/utils';
|
|
@@ -9,12 +10,20 @@ import * as ModuleInfo from '@cabloy/module-info';
|
|
|
9
10
|
import { toUpperCaseFirstChar } from '@cabloy/word-utils';
|
|
10
11
|
import { translateError } from '@cabloy/zod-errors-custom';
|
|
11
12
|
import { getInnerTypeName, coerceWithNil } from '@cabloy/zod-query';
|
|
12
|
-
import { Caching } from 'vona-module-a-caching';
|
|
13
13
|
import { SymbolRequestMappingHandler } from 'vona-module-a-web';
|
|
14
14
|
import { SummerCache, BeanSummerCacheBase } from 'vona-module-a-summer';
|
|
15
15
|
import 'openapi3-ts/oas30';
|
|
16
16
|
import 'openapi3-ts/oas31';
|
|
17
17
|
|
|
18
|
+
function _applyDecoratedDescriptor(i, e, r, n, l) {
|
|
19
|
+
var a = {};
|
|
20
|
+
return Object.keys(n).forEach(function (i) {
|
|
21
|
+
a[i] = n[i];
|
|
22
|
+
}), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = true), a = r.slice().reverse().reduce(function (r, n) {
|
|
23
|
+
return n(i, e, r) || r;
|
|
24
|
+
}, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a;
|
|
25
|
+
}
|
|
26
|
+
|
|
18
27
|
function getTargetDecoratorRules(target, disableRegisterMetadata) {
|
|
19
28
|
if (!disableRegisterMetadata) {
|
|
20
29
|
registerMappedClassMetadataKey(target, SymbolDecoratorRule, {
|
|
@@ -175,10 +184,16 @@ function _createSchemaObject(rules, options) {
|
|
|
175
184
|
return schema;
|
|
176
185
|
}
|
|
177
186
|
|
|
178
|
-
var _dec$3, _dec2$3, _class$3;
|
|
187
|
+
var _dec$3, _dec2$3, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class$3, _class2;
|
|
179
188
|
let BeanOpenapi = (_dec$3 = Bean(), _dec2$3 = BeanInfo({
|
|
180
189
|
module: "a-openapi"
|
|
181
|
-
}),
|
|
190
|
+
}), _dec3 = Caching.get({
|
|
191
|
+
cacheName: 'a-openapi:json',
|
|
192
|
+
cacheKeyFn: 'generateJsonCacheKey'
|
|
193
|
+
}), _dec4 = Reflect.metadata("design:type", Function), _dec5 = Reflect.metadata("design:paramtypes", [typeof K === "undefined" ? Object : K]), _dec6 = Caching.get({
|
|
194
|
+
cacheName: 'a-openapi:json',
|
|
195
|
+
cacheKeyFn: 'generateJsonOfControllerActionCacheKey'
|
|
196
|
+
}), _dec7 = Reflect.metadata("design:type", Function), _dec8 = Reflect.metadata("design:paramtypes", [typeof Constructable === "undefined" ? Object : Constructable, String, typeof K === "undefined" ? Object : K]), _dec$3(_class$3 = _dec2$3(_class$3 = (_class2 = class BeanOpenapi extends BeanBase {
|
|
182
197
|
// need not cache
|
|
183
198
|
async generateJsonOfClass(schemaClass, version = 'V31') {
|
|
184
199
|
return await this.generateJsonOfClasses([schemaClass], version);
|
|
@@ -202,39 +217,6 @@ let BeanOpenapi = (_dec$3 = Bean(), _dec2$3 = BeanInfo({
|
|
|
202
217
|
this.scope.service.openapi.translate(apiObj, 'rest');
|
|
203
218
|
return apiObj;
|
|
204
219
|
}
|
|
205
|
-
}) || _class$3) || _class$3);
|
|
206
|
-
|
|
207
|
-
function _applyDecoratedDescriptor(i, e, r, n, l) {
|
|
208
|
-
var a = {};
|
|
209
|
-
return Object.keys(n).forEach(function (i) {
|
|
210
|
-
a[i] = n[i];
|
|
211
|
-
}), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = true), a = r.slice().reverse().reduce(function (r, n) {
|
|
212
|
-
return n(i, e, r) || r;
|
|
213
|
-
}, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
function bodySchemaWrapperDefault(bodySchema) {
|
|
217
|
-
return z.object({
|
|
218
|
-
code: z.string(),
|
|
219
|
-
message: z.string(),
|
|
220
|
-
data: bodySchema
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
const SymbolRouteHandlersArgumentsMeta = Symbol('SymbolRouteHandlersArgumentsMeta');
|
|
225
|
-
const SymbolRouteHandlersArgumentsValue = Symbol('SymbolRouteHandlersArgumentsValue');
|
|
226
|
-
|
|
227
|
-
var _dec$2, _dec2$2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class$2, _class2;
|
|
228
|
-
const __ArgumentTypes = ['param', 'query', 'body', 'headers', 'fields', 'field', 'files', 'file'];
|
|
229
|
-
let ServiceOpenapi = (_dec$2 = Service(), _dec2$2 = BeanInfo({
|
|
230
|
-
module: "a-openapi"
|
|
231
|
-
}), _dec3 = Caching.get({
|
|
232
|
-
cacheName: 'a-openapi:json',
|
|
233
|
-
cacheKeyFn: 'generateJsonCacheKey'
|
|
234
|
-
}), _dec4 = Reflect.metadata("design:type", Function), _dec5 = Reflect.metadata("design:paramtypes", [typeof K === "undefined" ? Object : K]), _dec6 = Caching.get({
|
|
235
|
-
cacheName: 'a-openapi:json',
|
|
236
|
-
cacheKeyFn: 'generateJsonOfControllerActionCacheKey'
|
|
237
|
-
}), _dec7 = Reflect.metadata("design:type", Function), _dec8 = Reflect.metadata("design:paramtypes", [typeof Constructable === "undefined" ? Object : Constructable, String, typeof K === "undefined" ? Object : K]), _dec$2(_class$2 = _dec2$2(_class$2 = (_class2 = class ServiceOpenapi extends BeanBase {
|
|
238
220
|
generateJsonCacheKey(args, prop) {
|
|
239
221
|
const version = args[0] ?? 'V31';
|
|
240
222
|
const locale = this.ctx.locale;
|
|
@@ -248,22 +230,40 @@ let ServiceOpenapi = (_dec$2 = Service(), _dec2$2 = BeanInfo({
|
|
|
248
230
|
return `${prop}_${beanFullName}_${actionKey}_${version ?? 'V31'}_${locale}`;
|
|
249
231
|
}
|
|
250
232
|
async generateJson(version = 'V31') {
|
|
251
|
-
const registry = this.
|
|
233
|
+
const registry = this.scope.service.openapi.collectRegistry();
|
|
252
234
|
const generator = version === 'V30' ? new OpenApiGeneratorV3(registry.definitions) : new OpenApiGeneratorV31(registry.definitions);
|
|
253
235
|
const apiObj = generator.generateDocument(this.scope.config.generateDocument[version]);
|
|
254
|
-
this.translate(apiObj, 'api');
|
|
236
|
+
this.scope.service.openapi.translate(apiObj, 'api');
|
|
255
237
|
return apiObj;
|
|
256
238
|
}
|
|
257
239
|
async generateJsonOfControllerAction(controller, actionKey, version = 'V31') {
|
|
258
240
|
const registry = new OpenAPIRegistry();
|
|
259
241
|
const beanOptions = appResource.getBean(controller);
|
|
260
242
|
if (!beanOptions) throw new Error('invalid controller');
|
|
261
|
-
this.
|
|
243
|
+
this.scope.service.openapi.collectController(registry, beanOptions.module, controller, actionKey);
|
|
262
244
|
const generator = version === 'V30' ? new OpenApiGeneratorV3(registry.definitions) : new OpenApiGeneratorV31(registry.definitions);
|
|
263
245
|
const apiObj = generator.generateDocument(this.scope.config.generateDocument[version]);
|
|
264
|
-
this.translate(apiObj, 'rest');
|
|
246
|
+
this.scope.service.openapi.translate(apiObj, 'rest');
|
|
265
247
|
return apiObj;
|
|
266
248
|
}
|
|
249
|
+
}, _applyDecoratedDescriptor(_class2.prototype, "generateJson", [_dec3, _dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "generateJson"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "generateJsonOfControllerAction", [_dec6, _dec7, _dec8], Object.getOwnPropertyDescriptor(_class2.prototype, "generateJsonOfControllerAction"), _class2.prototype), _class2)) || _class$3) || _class$3);
|
|
250
|
+
|
|
251
|
+
function bodySchemaWrapperDefault(bodySchema) {
|
|
252
|
+
return z.object({
|
|
253
|
+
code: z.string(),
|
|
254
|
+
message: z.string(),
|
|
255
|
+
data: bodySchema
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
const SymbolRouteHandlersArgumentsMeta = Symbol('SymbolRouteHandlersArgumentsMeta');
|
|
260
|
+
const SymbolRouteHandlersArgumentsValue = Symbol('SymbolRouteHandlersArgumentsValue');
|
|
261
|
+
|
|
262
|
+
var _dec$2, _dec2$2, _class$2;
|
|
263
|
+
const __ArgumentTypes = ['param', 'query', 'body', 'headers', 'fields', 'field', 'files', 'file'];
|
|
264
|
+
let ServiceOpenapi = (_dec$2 = Service(), _dec2$2 = BeanInfo({
|
|
265
|
+
module: "a-openapi"
|
|
266
|
+
}), _dec$2(_class$2 = _dec2$2(_class$2 = class ServiceOpenapi extends BeanBase {
|
|
267
267
|
translate(apiObj, generateJsonScene) {
|
|
268
268
|
// paths
|
|
269
269
|
if (apiObj.paths) {
|
|
@@ -344,7 +344,7 @@ let ServiceOpenapi = (_dec$2 = Service(), _dec2$2 = BeanInfo({
|
|
|
344
344
|
obj[key] = this.app.meta.text(obj[key]);
|
|
345
345
|
}
|
|
346
346
|
}
|
|
347
|
-
|
|
347
|
+
collectRegistry() {
|
|
348
348
|
const registry = new OpenAPIRegistry();
|
|
349
349
|
// securitySchemes
|
|
350
350
|
const configSecuritySchemes = this.scope.config.securitySchemes;
|
|
@@ -367,11 +367,11 @@ let ServiceOpenapi = (_dec$2 = Service(), _dec2$2 = BeanInfo({
|
|
|
367
367
|
}
|
|
368
368
|
// controller
|
|
369
369
|
for (const controller of this.bean.onion.controller.getOnionsEnabled()) {
|
|
370
|
-
this.
|
|
370
|
+
this.collectController(registry, controller.beanOptions.module, controller.beanOptions.beanClass);
|
|
371
371
|
}
|
|
372
372
|
return registry;
|
|
373
373
|
}
|
|
374
|
-
|
|
374
|
+
collectController(registry, moduleName, controller, actionKey) {
|
|
375
375
|
// info
|
|
376
376
|
const info = ModuleInfo.parseInfo(moduleName);
|
|
377
377
|
// controller options
|
|
@@ -587,7 +587,7 @@ let ServiceOpenapi = (_dec$2 = Service(), _dec2$2 = BeanInfo({
|
|
|
587
587
|
}
|
|
588
588
|
return objHeaders;
|
|
589
589
|
}
|
|
590
|
-
}
|
|
590
|
+
}) || _class$2) || _class$2);
|
|
591
591
|
|
|
592
592
|
var _dec$1, _dec2$1, _class$1;
|
|
593
593
|
let SummerCacheJson = (_dec$1 = SummerCache({
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
import type { OpenAPIObject as OpenAPIObject30 } from 'openapi3-ts/oas30';
|
|
2
2
|
import type { OpenAPIObject as OpenAPIObject31 } from 'openapi3-ts/oas31';
|
|
3
3
|
import type { Constructable } from 'vona';
|
|
4
|
-
import type {
|
|
4
|
+
import type { TypeGenerateJsonScene } from 'vona-module-a-openapiutils';
|
|
5
|
+
import { OpenAPIRegistry } from '@cabloy/zod-to-openapi';
|
|
5
6
|
import { BeanBase } from 'vona';
|
|
6
7
|
export declare class ServiceOpenapi extends BeanBase {
|
|
7
|
-
protected generateJsonCacheKey(args: any[], prop: string): string;
|
|
8
|
-
protected generateJsonOfControllerActionCacheKey(args: any[], prop: string): string;
|
|
9
|
-
generateJson<K extends keyof IOpenapiObject>(version?: K): Promise<IOpenapiObject[K]>;
|
|
10
|
-
generateJsonOfControllerAction<K extends keyof IOpenapiObject>(controller: Constructable, actionKey: string, version?: K): Promise<IOpenapiObject[K]>;
|
|
11
8
|
translate(apiObj: OpenAPIObject30 | OpenAPIObject31, generateJsonScene: TypeGenerateJsonScene): void;
|
|
12
9
|
private _translateSchema;
|
|
13
10
|
private _translateErrorMessages;
|
|
14
11
|
private _translateStrings;
|
|
15
12
|
private _translateString;
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
collectRegistry(): OpenAPIRegistry;
|
|
14
|
+
collectController(registry: OpenAPIRegistry, moduleName: string, controller: Constructable, actionKey?: string): void;
|
|
18
15
|
private _registerControllerAction;
|
|
19
16
|
private _collectRequest;
|
|
20
17
|
private _collectResponses;
|