vona-module-a-openapi 5.0.47 → 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.
@@ -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
- }), _dec$3(_class$3 = _dec2$3(_class$3 = class BeanOpenapi extends BeanBase {
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._collectRegistry();
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._collectController(registry, beanOptions.module, controller, actionKey);
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
- _collectRegistry() {
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._collectController(registry, controller.beanOptions.module, controller.beanOptions.beanClass);
370
+ this.collectController(registry, controller.beanOptions.module, controller.beanOptions.beanClass);
371
371
  }
372
372
  return registry;
373
373
  }
374
- _collectController(registry, moduleName, controller, actionKey) {
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
- }, _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$2) || _class$2);
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 { IOpenapiObject, TypeGenerateJsonScene } from 'vona-module-a-openapiutils';
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
- private _collectRegistry;
17
- private _collectController;
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;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vona-module-a-openapi",
3
3
  "type": "module",
4
- "version": "5.0.47",
4
+ "version": "5.0.48",
5
5
  "title": "a-openapi",
6
6
  "vonaModule": {
7
7
  "capabilities": {