vona-module-a-openapi 5.0.32 → 5.0.33
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/index.js +38 -17
- package/dist/lib/utils.d.ts +3 -0
- package/dist/types/rest.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { registerMappedClassMetadataKey, appMetadata, appResource, cast, deepExtend, BeanInfo, BeanBase, LocaleModuleNameSeparator, HttpStatus, BeanSimple, BeanScopeBase, useApp, beanFullNameFromOnionName } from 'vona';
|
|
2
2
|
import * as ModuleInfo from '@cabloy/module-info';
|
|
3
|
-
import {
|
|
3
|
+
import { isEmptyObject, isClass, isNil } from '@cabloy/utils';
|
|
4
4
|
import { toUpperCaseFirstChar } from '@cabloy/word-utils';
|
|
5
5
|
import { getInnerTypeName, coerceWithNil } from '@cabloy/zod-query';
|
|
6
6
|
import { OpenApiGeneratorV3, OpenApiGeneratorV31, OpenAPIRegistry } from '@cabloy/zod-to-openapi';
|
|
@@ -54,8 +54,6 @@ function getTargetDecoratorRuleColumnsMap(target) {
|
|
|
54
54
|
return map;
|
|
55
55
|
}
|
|
56
56
|
function mergeFieldsOpenapiMetadata(target) {
|
|
57
|
-
// rules
|
|
58
|
-
const rules = getTargetDecoratorRules(target.prototype);
|
|
59
57
|
// beanOptions
|
|
60
58
|
const beanOptions = appResource.getBean(target);
|
|
61
59
|
const fields = cast(beanOptions?.options)?.fields;
|
|
@@ -63,18 +61,36 @@ function mergeFieldsOpenapiMetadata(target) {
|
|
|
63
61
|
for (const key in fields) {
|
|
64
62
|
const field = fields[key];
|
|
65
63
|
if (!field) continue;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
64
|
+
mergeFieldOpenapiMetadata(target.prototype, key, field);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// fieldRule maybe undefined
|
|
69
|
+
function mergeFieldOpenapiMetadata(target, prop, fieldRule) {
|
|
70
|
+
// rules
|
|
71
|
+
const rules = getTargetDecoratorRules(target);
|
|
72
|
+
// rule
|
|
73
|
+
const schemaCurrent = rules[prop];
|
|
74
|
+
const metadataCurrent = schemaCurrent ? ZodMetadata.getOpenapiMetadata(schemaCurrent) : undefined;
|
|
75
|
+
// merge
|
|
76
|
+
if (Object.prototype.hasOwnProperty.call(fieldRule, 'parseAsync')) {
|
|
77
|
+
const schema = fieldRule;
|
|
78
|
+
if (isEmptyObject(metadataCurrent)) {
|
|
79
|
+
rules[prop] = schema;
|
|
80
|
+
} else {
|
|
70
81
|
const metadataCustom = ZodMetadata.getOpenapiMetadata(schema);
|
|
71
|
-
rules[
|
|
82
|
+
rules[prop] = schema.openapi(deepExtend({}, metadataCurrent, metadataCustom));
|
|
83
|
+
}
|
|
84
|
+
} else {
|
|
85
|
+
if (schemaCurrent) {
|
|
86
|
+
if (!isEmptyObject(fieldRule)) {
|
|
87
|
+
rules[prop] = schemaCurrent.openapi(deepExtend({}, metadataCurrent, fieldRule));
|
|
88
|
+
}
|
|
72
89
|
} else {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
rules[key] = schemaCurrent.openapi(deepExtend({}, metadataCurrent, field));
|
|
90
|
+
if (isEmptyObject(fieldRule)) {
|
|
91
|
+
rules[prop] = z.any();
|
|
76
92
|
} else {
|
|
77
|
-
rules[
|
|
93
|
+
rules[prop] = z.any().openapi(fieldRule);
|
|
78
94
|
}
|
|
79
95
|
}
|
|
80
96
|
}
|
|
@@ -269,11 +285,13 @@ let ServiceOpenapi = (_dec$2 = Service(), _dec2$2 = BeanInfo({
|
|
|
269
285
|
_translateSchema(schema, generateJsonScene) {
|
|
270
286
|
if (!schema) return;
|
|
271
287
|
if (schema.type === 'object' && schema.required === undefined) schema.required = [];
|
|
288
|
+
// schema
|
|
272
289
|
this._translateStrings(schema, ['title', 'description']);
|
|
273
290
|
if (generateJsonScene === 'api' && !schema.description && schema.title) {
|
|
274
291
|
schema.description = schema.title;
|
|
275
292
|
delete schema.title;
|
|
276
293
|
}
|
|
294
|
+
// properties
|
|
277
295
|
const properties = cast(schema).properties;
|
|
278
296
|
if (properties && typeof properties === 'object') {
|
|
279
297
|
for (const prop in properties) {
|
|
@@ -281,6 +299,11 @@ let ServiceOpenapi = (_dec$2 = Service(), _dec2$2 = BeanInfo({
|
|
|
281
299
|
this._translateSchema(propObj, generateJsonScene);
|
|
282
300
|
}
|
|
283
301
|
}
|
|
302
|
+
// items
|
|
303
|
+
const items = cast(schema).items;
|
|
304
|
+
if (items && typeof items === 'object') {
|
|
305
|
+
this._translateSchema(items, generateJsonScene);
|
|
306
|
+
}
|
|
284
307
|
}
|
|
285
308
|
_translateStrings(obj, keys) {
|
|
286
309
|
for (const key of keys) {
|
|
@@ -628,11 +651,9 @@ let ScopeModuleAOpenapi = (_dec = Scope(), _dec2 = BeanInfo({
|
|
|
628
651
|
|
|
629
652
|
function Field(...schemaLikes) {
|
|
630
653
|
return function (target, prop) {
|
|
631
|
-
// rules
|
|
632
|
-
const rules = getTargetDecoratorRules(target);
|
|
633
|
-
// rule
|
|
634
654
|
const metaType = appMetadata.getDesignType(target, prop);
|
|
635
|
-
|
|
655
|
+
const schema = makeSchemaLikes(schemaLikes, metaType);
|
|
656
|
+
mergeFieldOpenapiMetadata(target, prop, schema);
|
|
636
657
|
};
|
|
637
658
|
}
|
|
638
659
|
|
|
@@ -969,4 +990,4 @@ const OrderBusinessBase = 1000;
|
|
|
969
990
|
const OrderUnknownBase = 10000;
|
|
970
991
|
const OrderMaxBase = 100000;
|
|
971
992
|
|
|
972
|
-
export { $schema, $schemaLazy, Api, Main, OrderBusinessBase, OrderCoreBase, OrderMaxBase, OrderUnknownBase, ScopeModuleAOpenapi, ServiceOpenapi, SummerCacheJson, SymbolRouteHandlersArgumentsMeta, SymbolRouteHandlersArgumentsValue, SymbolSchemaDynamicRefId, addSchemaDynamic, bodySchemaWrapperDefault, config, getSchemaDynamic, getSchemasDynamic, getTargetDecoratorRuleColumns, getTargetDecoratorRuleColumnsMap, getTargetDecoratorRules, makeSchemaLike, makeSchemaLikes, mergeFieldsOpenapiMetadata, prepareClassType, schemaRefCustomAdapter, v };
|
|
993
|
+
export { $schema, $schemaLazy, Api, Main, OrderBusinessBase, OrderCoreBase, OrderMaxBase, OrderUnknownBase, ScopeModuleAOpenapi, ServiceOpenapi, SummerCacheJson, SymbolRouteHandlersArgumentsMeta, SymbolRouteHandlersArgumentsValue, SymbolSchemaDynamicRefId, addSchemaDynamic, bodySchemaWrapperDefault, config, getSchemaDynamic, getSchemasDynamic, getTargetDecoratorRuleColumns, getTargetDecoratorRuleColumnsMap, getTargetDecoratorRules, makeSchemaLike, makeSchemaLikes, mergeFieldOpenapiMetadata, mergeFieldsOpenapiMetadata, prepareClassType, schemaRefCustomAdapter, v };
|
package/dist/lib/utils.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { Constructable } from 'vona';
|
|
2
2
|
import type { TypeDecoratorRules } from 'vona-module-a-openapiutils';
|
|
3
|
+
import type { TypeOpenapiMetadata } from '../types/rest.ts';
|
|
4
|
+
import { z } from 'zod';
|
|
3
5
|
export declare function getTargetDecoratorRules(target: object, disableRegisterMetadata?: boolean): TypeDecoratorRules;
|
|
4
6
|
export declare function getTargetDecoratorRuleColumns(target: object): string[];
|
|
5
7
|
export declare function getTargetDecoratorRuleColumnsMap(target: object): Record<string, string>;
|
|
6
8
|
export declare function mergeFieldsOpenapiMetadata(target: Constructable): void;
|
|
9
|
+
export declare function mergeFieldOpenapiMetadata(target: object, prop: string, fieldRule?: TypeOpenapiMetadata | z.ZodType): void;
|
|
7
10
|
export declare function prepareClassType<T>(classType: (() => Constructable<T>) | Constructable<T>): Constructable<T>;
|
package/dist/types/rest.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export interface ISchemaObjectExtensionFieldRest {
|
|
|
17
17
|
form?: Omit<ISchemaObjectExtensionFieldRest, 'table' | 'form'>;
|
|
18
18
|
}
|
|
19
19
|
export interface ISchemaObjectExtensionField {
|
|
20
|
+
exclude?: boolean;
|
|
20
21
|
rest?: ISchemaObjectExtensionFieldRest;
|
|
21
22
|
query?: ISchemaObjectExtensionFieldQuery;
|
|
22
23
|
captcha?: ISchemaObjectExtensionFieldCaptcha;
|