@allgemein/schema-api 1.5.0 → 1.5.4
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/api/ILookupRegistry.d.ts +1 -0
- package/api/ILookupRegistry.js +4 -4
- package/api/ILookupRegistry.js.map +1 -1
- package/decorators/Property.js +6 -6
- package/decorators/Property.js.map +1 -1
- package/decorators/PropertyOf.js +1 -1
- package/decorators/PropertyOf.js.map +1 -1
- package/decorators/validate/Hostname.js +3 -3
- package/decorators/validate/Hostname.js.map +1 -1
- package/decorators/validate/Ip4.js +3 -3
- package/decorators/validate/Ip4.js.map +1 -1
- package/decorators/validate/Ip6.js +3 -3
- package/decorators/validate/Ip6.js.map +1 -1
- package/decorators/validate/IsEmail.js +2 -2
- package/decorators/validate/IsEmail.js.map +1 -1
- package/decorators/validate/IsNotEmpty.js +5 -5
- package/decorators/validate/IsNotEmpty.js.map +1 -1
- package/decorators/validate/MaxLength.js +3 -3
- package/decorators/validate/MaxLength.js.map +1 -1
- package/decorators/validate/MinLength.js +3 -3
- package/decorators/validate/MinLength.js.map +1 -1
- package/decorators/validate/Regex.js +7 -4
- package/decorators/validate/Regex.js.map +1 -1
- package/decorators/validate/Required.js +3 -3
- package/decorators/validate/Required.js.map +1 -1
- package/lib/AbstractRef.js +9 -9
- package/lib/AbstractRef.js.map +1 -1
- package/lib/AnnotationsHelper.js +13 -13
- package/lib/AnnotationsHelper.js.map +1 -1
- package/lib/ClassRef.js +18 -18
- package/lib/ClassRef.js.map +1 -1
- package/lib/Constants.d.ts +4 -0
- package/lib/Constants.js +5 -1
- package/lib/Constants.js.map +1 -1
- package/lib/DataContainer.js +9 -9
- package/lib/DataContainer.js.map +1 -1
- package/lib/LookupRegistry.js +13 -13
- package/lib/LookupRegistry.js.map +1 -1
- package/lib/SchemaRef.js +2 -2
- package/lib/SchemaRef.js.map +1 -1
- package/lib/SchemaUtils.js +11 -11
- package/lib/SchemaUtils.js.map +1 -1
- package/lib/json-schema/IJsonSchemaSerializeOptions.d.ts +5 -0
- package/lib/json-schema/IJsonSchemaSerializeOptions.js.map +1 -1
- package/lib/json-schema/JsonSchema.js +6 -6
- package/lib/json-schema/JsonSchema.js.map +1 -1
- package/lib/json-schema/JsonSchema7Serializer.d.ts +1 -0
- package/lib/json-schema/JsonSchema7Serializer.js +46 -33
- package/lib/json-schema/JsonSchema7Serializer.js.map +1 -1
- package/lib/json-schema/JsonSchema7Unserializer.js +50 -50
- package/lib/json-schema/JsonSchema7Unserializer.js.map +1 -1
- package/lib/options/IPropertyOptions.d.ts +4 -0
- package/lib/options/IPropertyOptions.js.map +1 -1
- package/lib/registry/AbstractRegistry.d.ts +7 -1
- package/lib/registry/AbstractRegistry.js +10 -2
- package/lib/registry/AbstractRegistry.js.map +1 -1
- package/lib/registry/DefaultEntityRef.js +1 -1
- package/lib/registry/DefaultEntityRef.js.map +1 -1
- package/lib/registry/DefaultNamespacedRegistry.d.ts +10 -1
- package/lib/registry/DefaultNamespacedRegistry.js +135 -86
- package/lib/registry/DefaultNamespacedRegistry.js.map +1 -1
- package/lib/registry/DefaultPropertyRef.js +26 -20
- package/lib/registry/DefaultPropertyRef.js.map +1 -1
- package/lib/registry/IRegistryOptions.d.ts +8 -0
- package/lib/registry/IRegistryOptions.js +4 -0
- package/lib/registry/IRegistryOptions.js.map +1 -0
- package/lib/registry/MetadataRegistry.d.ts +14 -0
- package/lib/registry/MetadataRegistry.js +32 -18
- package/lib/registry/MetadataRegistry.js.map +1 -1
- package/lib/registry/RegistryFactory.d.ts +2 -1
- package/lib/registry/RegistryFactory.js +10 -10
- package/lib/registry/RegistryFactory.js.map +1 -1
- package/lib/validation/DefaultValidator.js +19 -19
- package/lib/validation/DefaultValidator.js.map +1 -1
- package/lib/validation/Validator.js +2 -2
- package/lib/validation/Validator.js.map +1 -1
- package/package.json +17 -17
package/lib/SchemaRef.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/SchemaRef.ts"],"names":[],"mappings":";;;AAAA,mCAA4C;AAC5C,+CAA0C;AAE1C,2CAA4E;AAC5E,gEAA2D;AAM3D,MAAa,SAAU,SAAQ,yBAAW;IAGxC,YAAY,UAA0B,EAAC,IAAI,EAAE,SAAS,EAAC;QACrD,KAAK,CAAC,2BAAe,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAGD,EAAE;QACA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;IAGD,WAAW;QACT,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAGD,cAAc,CAAC,MAAqC,EACrC,IAAmB;QAChC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAGD,eAAe,CAAC,KAAwB;QACtC,OAAO,IAAI,CAAC,WAAW,EAAE;aACtB,IAAI,CAAC,2BAAe,EACnB,CAAC,CAAa,EAAE,EAAE;YAChB,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,iBAAQ,
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/SchemaRef.ts"],"names":[],"mappings":";;;AAAA,mCAA4C;AAC5C,+CAA0C;AAE1C,2CAA4E;AAC5E,gEAA2D;AAM3D,MAAa,SAAU,SAAQ,yBAAW;IAGxC,YAAY,UAA0B,EAAC,IAAI,EAAE,SAAS,EAAC;QACrD,KAAK,CAAC,2BAAe,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAGD,EAAE;QACA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;IAGD,WAAW;QACT,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAGD,cAAc,CAAC,MAAqC,EACrC,IAAmB;QAChC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;IAGD,eAAe,CAAC,KAAwB;QACtC,OAAO,IAAI,CAAC,WAAW,EAAE;aACtB,IAAI,CAAC,2BAAe,EACnB,CAAC,CAAa,EAAE,EAAE;YAChB,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE;gBACnB,WAAW,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC;aAClE;iBAAM,IAAI,IAAA,mBAAU,EAAC,KAAK,CAAC,EAAE;gBAC5B,WAAW,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC;aACtC;YACD,IAAI,WAAW,EAAE;gBACf,IAAI,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACrC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjC,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CACF,CAAC;IACN,CAAC;IAGD,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,EAAE;aACtB,MAAM,CAAC,2BAAe,EACrB,CAAC,CAAa,EAAE,EAAE;YAChB,IAAI,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC,CACF,CAAC;IACN,CAAC;CASF;AAhED,8BAgEC","file":"SchemaRef.js","sourcesContent":["import {isFunction, isString} from 'lodash';\nimport {AbstractRef} from './AbstractRef';\nimport {ISchemaOptions} from './options/ISchemaOptions';\nimport {METADATA_TYPE, METATYPE_ENTITY, METATYPE_SCHEMA} from './Constants';\nimport {RegistryFactory} from './registry/RegistryFactory';\nimport {IClassRef} from '../api/IClassRef';\nimport {ISchemaRef} from '../api/ISchemaRef';\nimport {IEntityRef} from '../api/IEntityRef';\n\n\nexport class SchemaRef extends AbstractRef implements ISchemaRef {\n\n\n constructor(options: ISchemaOptions = {name: 'default'}) {\n super(METATYPE_SCHEMA, options.name, null, options.namespace);\n this.setOptions(options);\n }\n\n\n id() {\n return this.name.toLowerCase();\n }\n\n\n getRegistry() {\n return RegistryFactory.get(this.namespace);\n }\n\n\n getClassRefFor(object: string | Function | IClassRef,\n type: METADATA_TYPE): IClassRef {\n return this.getRegistry().getClassRefFor(object, type);\n }\n\n\n getEntityRefFor(value: string | Function): IEntityRef {\n return this.getRegistry()\n .find(METATYPE_ENTITY,\n (b: IEntityRef) => {\n let schemaCheck = false;\n if (isString(value)) {\n schemaCheck = b.name === value || b.getClassRef().name === value;\n } else if (isFunction(value)) {\n schemaCheck = b.getClass() === value;\n }\n if (schemaCheck) {\n let schemas = b.getOptions('schema');\n schemas = schemas ? schemas : [];\n return schemas.includes(this.name);\n }\n return false;\n }\n );\n }\n\n\n getEntityRefs(): IEntityRef[] {\n return this.getRegistry()\n .filter(METATYPE_ENTITY,\n (b: IEntityRef) => {\n let schemas = b.getOptions('schema');\n schemas = schemas ? schemas : [];\n return schemas.includes(this.name);\n }\n );\n }\n\n\n // getPropertiesFor(fn: Function): IPropertyRef[] {\n // return this.getLookupRegistry()\n // .filter(METATYPE_PROPERTY, (p: IPropertyRef) => p.getSourceRef().getClass() === fn);\n // }\n\n\n}\n\n"],"sourceRoot":".."}
|
package/lib/SchemaUtils.js
CHANGED
|
@@ -23,19 +23,19 @@ class SchemaUtils {
|
|
|
23
23
|
*
|
|
24
24
|
*/
|
|
25
25
|
static transform(entityRef, data, options = {}) {
|
|
26
|
-
let object = entityRef.create(!lodash_1.isUndefined(options.skipClassNamespaceInfo) ? !options.skipClassNamespaceInfo : true);
|
|
26
|
+
let object = entityRef.create(!(0, lodash_1.isUndefined)(options.skipClassNamespaceInfo) ? !options.skipClassNamespaceInfo : true);
|
|
27
27
|
if (options.beforeBuild) {
|
|
28
28
|
options.beforeBuild(entityRef, data, object, options);
|
|
29
29
|
}
|
|
30
|
-
if (!lodash_1.get(options, Constants_1.OPT_CREAT_AND_COPY, false)) {
|
|
30
|
+
if (!(0, lodash_1.get)(options, Constants_1.OPT_CREAT_AND_COPY, false)) {
|
|
31
31
|
for (let p of entityRef.getPropertyRefs()) {
|
|
32
|
-
if ((lodash_1.isNull(data[p.name]) || lodash_1.isUndefined(data[p.name]))) {
|
|
32
|
+
if (((0, lodash_1.isNull)(data[p.name]) || (0, lodash_1.isUndefined)(data[p.name]))) {
|
|
33
33
|
//object[p.name] = null;
|
|
34
34
|
continue;
|
|
35
35
|
}
|
|
36
36
|
if (p.isReference()) {
|
|
37
37
|
let ref = p.getTargetRef();
|
|
38
|
-
if (p.isCollection() || lodash_1.isArray(data[p.name])) {
|
|
38
|
+
if (p.isCollection() || (0, lodash_1.isArray)(data[p.name])) {
|
|
39
39
|
object[p.name] = [];
|
|
40
40
|
for (let i = 0; i < data[p.name].length; i++) {
|
|
41
41
|
object[p.name][i] = ref.build(data[p.name][i], options);
|
|
@@ -46,7 +46,7 @@ class SchemaUtils {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
else {
|
|
49
|
-
if (p.isCollection() && (lodash_1.isArray(data[p.name]) || lodash_1.isSet(data[p.name]))) {
|
|
49
|
+
if (p.isCollection() && ((0, lodash_1.isArray)(data[p.name]) || (0, lodash_1.isSet)(data[p.name]))) {
|
|
50
50
|
object[p.name] = [];
|
|
51
51
|
for (let i = 0; i < data[p.name].length; i++) {
|
|
52
52
|
let v = data[p.name][i];
|
|
@@ -58,7 +58,7 @@ class SchemaUtils {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
-
else if (p.isCollection() && !(lodash_1.isArray(data[p.name]) || lodash_1.isSet(data[p.name]))) {
|
|
61
|
+
else if (p.isCollection() && !((0, lodash_1.isArray)(data[p.name]) || (0, lodash_1.isSet)(data[p.name]))) {
|
|
62
62
|
throw new base_1.NotYetImplementedError();
|
|
63
63
|
}
|
|
64
64
|
else {
|
|
@@ -68,7 +68,7 @@ class SchemaUtils {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
else {
|
|
71
|
-
lodash_1.assign(object, data);
|
|
71
|
+
(0, lodash_1.assign)(object, data);
|
|
72
72
|
}
|
|
73
73
|
if (options.afterBuild) {
|
|
74
74
|
options.afterBuild(entityRef, data, object, options);
|
|
@@ -103,19 +103,19 @@ class SchemaUtils {
|
|
|
103
103
|
*/
|
|
104
104
|
static getInherited(klass) {
|
|
105
105
|
const proto = Reflect.getPrototypeOf(klass);
|
|
106
|
-
if (proto.name && !lodash_1.isEmpty(proto.name) && proto.name !== Object.name && proto.name !== klass.name) {
|
|
106
|
+
if (proto.name && !(0, lodash_1.isEmpty)(proto.name) && proto.name !== Object.name && proto.name !== klass.name) {
|
|
107
107
|
return proto;
|
|
108
108
|
}
|
|
109
109
|
return null;
|
|
110
110
|
}
|
|
111
111
|
static getFunction(klass) {
|
|
112
|
-
if (IEntityRef_1.isEntityRef(klass)) {
|
|
112
|
+
if ((0, IEntityRef_1.isEntityRef)(klass)) {
|
|
113
113
|
return klass.getClassRef().getClass(true);
|
|
114
114
|
}
|
|
115
|
-
else if (IClassRef_1.isClassRef(klass)) {
|
|
115
|
+
else if ((0, IClassRef_1.isClassRef)(klass)) {
|
|
116
116
|
return klass.getClass(true);
|
|
117
117
|
}
|
|
118
|
-
else if (lodash_1.isFunction(klass)) {
|
|
118
|
+
else if ((0, lodash_1.isFunction)(klass)) {
|
|
119
119
|
return klass;
|
|
120
120
|
}
|
|
121
121
|
throw new Error('no class found in ' + klass);
|
package/lib/SchemaUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/SchemaUtils.ts"],"names":[],"mappings":";;;AAAA,EAAE;AACF,mCAA6F;AAC7F,0CAAmE;AACnE,2CAA4D;AAC5D,gDAAuD;AACvD,kDAA0D;AAG1D,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf,MAAa,WAAW;IAEtB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,SAAS,CAAI,SAAiC,EAAE,IAAS,EAAE,UAAyB,EAAE;QAC3F,IAAI,MAAM,GAAM,SAAS,CAAC,MAAM,CAAC,CAAC,oBAAW,
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/SchemaUtils.ts"],"names":[],"mappings":"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","file":"SchemaUtils.js","sourcesContent":["//\nimport {assign, get, isArray, isEmpty, isFunction, isNull, isSet, isUndefined} from 'lodash';\nimport {CryptUtils, NotYetImplementedError} from '@allgemein/base';\nimport {C_PROP_NAME, OPT_CREAT_AND_COPY} from './Constants';\nimport {IClassRef, isClassRef} from '../api/IClassRef';\nimport {IEntityRef, isEntityRef} from '../api/IEntityRef';\nimport {IBuildOptions} from '../api/IBuildOptions';\n\nlet anonId = 0;\n\nexport class SchemaUtils {\n\n /**\n * convert an json entry to an instance of given entityRef type\n *\n * - with options can be set pre/post processing for build\n * - beforeBuild - preprocess of an object\n * - afterBuild - postprocess of an object\n * - createAndCopy - if true the only the instance is created, all properties are passed by assign\n *\n * @param entityRef\n * @param data\n * @param options: IBuildOptions\n *\n */\n static transform<T>(entityRef: IEntityRef | IClassRef, data: any, options: IBuildOptions = {}): T {\n let object: T = entityRef.create(!isUndefined(options.skipClassNamespaceInfo) ? !options.skipClassNamespaceInfo : true);\n if (options.beforeBuild) {\n options.beforeBuild(entityRef, data, object, options);\n }\n\n if (!get(options, OPT_CREAT_AND_COPY, false)) {\n\n for (let p of entityRef.getPropertyRefs()) {\n if ((isNull(data[p.name]) || isUndefined(data[p.name]))) {\n //object[p.name] = null;\n continue;\n }\n if (p.isReference()) {\n let ref = p.getTargetRef();\n if (p.isCollection() || isArray(data[p.name])) {\n object[p.name] = [];\n for (let i = 0; i < data[p.name].length; i++) {\n object[p.name][i] = ref.build(data[p.name][i], options);\n }\n } else {\n object[p.name] = ref.build(data[p.name], options);\n }\n } else {\n if (p.isCollection() && (isArray(data[p.name]) || isSet(data[p.name]))) {\n object[p.name] = [];\n for (let i = 0; i < data[p.name].length; i++) {\n let v = data[p.name][i];\n if (v) {\n object[p.name][i] = p.convert(v, options);\n } else {\n object[p.name][i] = null;\n }\n }\n } else if (p.isCollection() && !(isArray(data[p.name]) || isSet(data[p.name]))) {\n throw new NotYetImplementedError();\n } else {\n object[p.name] = p.convert(data[p.name], options);\n }\n }\n }\n } else {\n assign(object, data);\n }\n\n if (options.afterBuild) {\n options.afterBuild(entityRef, data, object, options);\n }\n return object;\n\n }\n\n /**\n * Create a class of given name\n *\n * @param str\n */\n static clazz(str: string): Function {\n const X = this.clazzAnonymous();\n Object.defineProperty(X, C_PROP_NAME, {value: str});\n return X;\n }\n\n /**\n * Create a class of given name\n *\n * @param str\n */\n static clazzAnonymous(): Function {\n const X = new Function();\n const id = anonId++;\n Object.defineProperty(X, 'anonId', {value: id});\n return X;\n }\n\n /**\n * Return inherited class if present else null will be delivered\n *\n * @param klass\n */\n static getInherited(klass: Function) {\n const proto = Reflect.getPrototypeOf(klass) as any;\n if (proto.name && !isEmpty(proto.name) && proto.name !== Object.name && proto.name !== klass.name) {\n return proto;\n }\n return null;\n }\n\n\n static getFunction(klass: any) {\n if (isEntityRef(klass)) {\n return klass.getClassRef().getClass(true);\n } else if (isClassRef(klass)) {\n return klass.getClass(true);\n } else if (isFunction(klass)) {\n return klass;\n }\n throw new Error('no class found in ' + klass);\n }\n\n\n static normValue(value: any) {\n return JSON.parse(JSON.stringify(value));\n }\n\n //\n //\n // static interprete(value: string) {\n // // json\n // // date\n // // number\n // //\n // }\n //\n\n}\n"],"sourceRoot":".."}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IJsonSchemaSerializer } from './IJsonSchemaSerializer';
|
|
2
2
|
import { ISerializeOptions } from '../serializer/ISerializeOptions';
|
|
3
|
+
import { IPropertyRef } from '../../api/IPropertyRef';
|
|
3
4
|
export interface IJsonSchemaSerializeOptions extends ISerializeOptions {
|
|
4
5
|
/**
|
|
5
6
|
* Version of json schema
|
|
@@ -37,4 +38,8 @@ export interface IJsonSchemaSerializeOptions extends ISerializeOptions {
|
|
|
37
38
|
* By default options of reference properties are removed, to pass them set this to 'false'.
|
|
38
39
|
*/
|
|
39
40
|
deleteReferenceKeys?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Passed method for type correction if necessary, else
|
|
43
|
+
*/
|
|
44
|
+
typeConversion?: (type: any, property: IPropertyRef) => string | null;
|
|
40
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/json-schema/IJsonSchemaSerializeOptions.ts"],"names":[],"mappings":"","file":"IJsonSchemaSerializeOptions.js","sourcesContent":["import {IJsonSchemaSerializer} from './IJsonSchemaSerializer';\nimport {ISerializeOptions} from '../serializer/ISerializeOptions';\n\nexport interface IJsonSchemaSerializeOptions extends ISerializeOptions {\n\n /**\n * Version of json schema\n */\n version?: 'draft-07' | string;\n\n /**\n * If multiple schemas\n */\n handleMultipleSchemas?: 'reference' | 'clone';\n\n\n /**\n * If set then on entries with type object the class function will be passed under key $target\n *\n * {\n * title: 'TestClass',\n * type: 'object',\n * $target: ClassType<TestClass>\n * }\n */\n appendTarget?: boolean;\n\n\n /**\n * Callback for postprocess\n */\n postProcess?: (src: any, dst: any, serializer?: IJsonSchemaSerializer) => void;\n\n\n /**\n * Allow override of existing standard properties\n */\n allowKeyOverride?: boolean;\n\n /**\n * Property keys where information can be skipped\n * Default if not set: ['type', '$ref', 'target', '$target','propertyName', 'metaType', 'namespace', 'name']\n * See constant DEFAULT_KEY_TO_SKIP\n */\n keysToSkip?: string[];\n\n /**\n * By default options of reference properties are removed, to pass them set this to 'false'.\n */\n deleteReferenceKeys?: boolean;\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/json-schema/IJsonSchemaSerializeOptions.ts"],"names":[],"mappings":"","file":"IJsonSchemaSerializeOptions.js","sourcesContent":["import {IJsonSchemaSerializer} from './IJsonSchemaSerializer';\nimport {ISerializeOptions} from '../serializer/ISerializeOptions';\nimport {IPropertyRef} from '../../api/IPropertyRef';\n\nexport interface IJsonSchemaSerializeOptions extends ISerializeOptions {\n\n /**\n * Version of json schema\n */\n version?: 'draft-07' | string;\n\n /**\n * If multiple schemas\n */\n handleMultipleSchemas?: 'reference' | 'clone';\n\n\n /**\n * If set then on entries with type object the class function will be passed under key $target\n *\n * {\n * title: 'TestClass',\n * type: 'object',\n * $target: ClassType<TestClass>\n * }\n */\n appendTarget?: boolean;\n\n\n /**\n * Callback for postprocess\n */\n postProcess?: (src: any, dst: any, serializer?: IJsonSchemaSerializer) => void;\n\n\n /**\n * Allow override of existing standard properties\n */\n allowKeyOverride?: boolean;\n\n /**\n * Property keys where information can be skipped\n * Default if not set: ['type', '$ref', 'target', '$target','propertyName', 'metaType', 'namespace', 'name']\n * See constant DEFAULT_KEY_TO_SKIP\n */\n keysToSkip?: string[];\n\n /**\n * By default options of reference properties are removed, to pass them set this to 'false'.\n */\n deleteReferenceKeys?: boolean;\n\n\n /**\n * Passed method for type correction if necessary, else\n */\n typeConversion?: (type: any, property: IPropertyRef) => string | null;\n}\n"],"sourceRoot":"../.."}
|
|
@@ -21,19 +21,19 @@ class JsonSchema {
|
|
|
21
21
|
try {
|
|
22
22
|
if (addr.startsWith('file:///')) {
|
|
23
23
|
const buffer = yield base_1.PlatformUtils.readFile(addr.replace('file://', ''));
|
|
24
|
-
const strValue = buffer.toString(lodash_1.get(opts, 'encoding', 'utf8'));
|
|
24
|
+
const strValue = buffer.toString((0, lodash_1.get)(opts, 'encoding', 'utf8'));
|
|
25
25
|
return JSON.parse(strValue);
|
|
26
26
|
}
|
|
27
27
|
else if (addr.startsWith('.')) {
|
|
28
28
|
const cwd = opts.cwd ? opts.cwd : process.cwd();
|
|
29
29
|
const path = base_1.PlatformUtils.join(cwd, addr);
|
|
30
30
|
const buffer = yield base_1.PlatformUtils.readFile(path);
|
|
31
|
-
const strValue = buffer.toString(lodash_1.get(opts, 'encoding', 'utf8'));
|
|
31
|
+
const strValue = buffer.toString((0, lodash_1.get)(opts, 'encoding', 'utf8'));
|
|
32
32
|
return JSON.parse(strValue);
|
|
33
33
|
}
|
|
34
34
|
else if (base_1.PlatformUtils.isAbsolute(addr)) {
|
|
35
35
|
const buffer = yield base_1.PlatformUtils.readFile(addr);
|
|
36
|
-
const strValue = buffer.toString(lodash_1.get(opts, 'encoding', 'utf8'));
|
|
36
|
+
const strValue = buffer.toString((0, lodash_1.get)(opts, 'encoding', 'utf8'));
|
|
37
37
|
return JSON.parse(strValue);
|
|
38
38
|
}
|
|
39
39
|
else {
|
|
@@ -50,7 +50,7 @@ class JsonSchema {
|
|
|
50
50
|
}
|
|
51
51
|
static getSerializer(options = { version: Constants_1.DRAFT_07 }) {
|
|
52
52
|
options = options || {};
|
|
53
|
-
lodash_1.defaults(options, { version: Constants_1.DRAFT_07 });
|
|
53
|
+
(0, lodash_1.defaults)(options, { version: Constants_1.DRAFT_07 });
|
|
54
54
|
switch (options.version) {
|
|
55
55
|
case Constants_1.DRAFT_07:
|
|
56
56
|
return new JsonSchema7Serializer_1.JsonSchema7Serializer(options);
|
|
@@ -59,7 +59,7 @@ class JsonSchema {
|
|
|
59
59
|
}
|
|
60
60
|
static getUnserializer(options = { version: Constants_1.DRAFT_07 }) {
|
|
61
61
|
options = options || {};
|
|
62
|
-
lodash_1.defaults(options, { version: Constants_1.DRAFT_07 });
|
|
62
|
+
(0, lodash_1.defaults)(options, { version: Constants_1.DRAFT_07 });
|
|
63
63
|
switch (options.version) {
|
|
64
64
|
case Constants_1.DRAFT_07:
|
|
65
65
|
return new JsonSchema7Unserializer_1.JsonSchema7Unserializer(options);
|
|
@@ -79,7 +79,7 @@ class JsonSchema {
|
|
|
79
79
|
}
|
|
80
80
|
static detectSchemaVersion(schema, fallback = Constants_1.DRAFT_07) {
|
|
81
81
|
if (schema['$schema']) {
|
|
82
|
-
if (lodash_1.isString(schema['$schema'])) {
|
|
82
|
+
if ((0, lodash_1.isString)(schema['$schema'])) {
|
|
83
83
|
const match = schema['$schema'].match(/json-schema.org\/(.*)\/schema/);
|
|
84
84
|
if (match && match[1]) {
|
|
85
85
|
return match[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/json-schema/JsonSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAA+C;AAI/C,mEAA8D;AAG9D,2CAA6D;AAC7D,0CAA8C;AAC9C,uEAAkE;AAMlE,MAAa,UAAU;IAGrB,MAAM,CAAO,OAAO,CAAC,IAAY,EAAE,OAAY,EAAE;;YAC/C,IAAI;gBACF,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;oBAC/B,MAAM,MAAM,GAAG,MAAM,oBAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;oBACzE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAG,
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/json-schema/JsonSchema.ts"],"names":[],"mappings":"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","file":"JsonSchema.js","sourcesContent":["import {defaults, get, isString} from 'lodash';\n\nimport {IClassRef} from '../../api/IClassRef';\nimport {IEntityRef} from '../../api/IEntityRef';\nimport {JsonSchema7Serializer} from './JsonSchema7Serializer';\nimport {IJsonSchemaSerializeOptions} from './IJsonSchemaSerializeOptions';\nimport {IJsonSchemaUnserializeOptions} from './IJsonSchemaUnserializeOptions';\nimport {DRAFT_07, JSON_SCHEMA_SERIALIZER} from './Constants';\nimport {PlatformUtils} from '@allgemein/base';\nimport {JsonSchema7Unserializer} from './JsonSchema7Unserializer';\nimport {ISerializerFactory} from '../serializer/ISerializerFactory';\nimport {ISerializer} from '../serializer/ISerializer';\nimport {IUnserializer} from '../serializer/IUnserializer';\n\n\nexport class JsonSchema implements ISerializerFactory {\n\n\n static async request(addr: string, opts: any = {}) {\n try {\n if (addr.startsWith('file:///')) {\n const buffer = await PlatformUtils.readFile(addr.replace('file://', ''));\n const strValue = buffer.toString(get(opts, 'encoding', 'utf8'));\n return JSON.parse(strValue);\n } else if (addr.startsWith('.')) {\n const cwd = opts.cwd ? opts.cwd : process.cwd();\n const path = PlatformUtils.join(cwd, addr);\n const buffer = await PlatformUtils.readFile(path);\n const strValue = buffer.toString(get(opts, 'encoding', 'utf8'));\n return JSON.parse(strValue);\n } else if (PlatformUtils.isAbsolute(addr)) {\n const buffer = await PlatformUtils.readFile(addr);\n const strValue = buffer.toString(get(opts, 'encoding', 'utf8'));\n return JSON.parse(strValue);\n } else {\n const got = PlatformUtils.load('got');\n const response = await got(addr, opts);\n return JSON.parse(response.body);\n }\n } catch (e) {\n console.error(e);\n return {};\n }\n\n }\n\n\n static getSerializer(options: IJsonSchemaSerializeOptions = {version: DRAFT_07}) {\n options = options || {};\n defaults(options, {version: DRAFT_07});\n switch (options.version) {\n case DRAFT_07:\n return new JsonSchema7Serializer(options);\n }\n return null;\n }\n\n static getUnserializer(options: IJsonSchemaUnserializeOptions = {version: DRAFT_07}) {\n options = options || {};\n defaults(options, {version: DRAFT_07});\n switch (options.version) {\n case DRAFT_07:\n return new JsonSchema7Unserializer(options);\n }\n return null;\n }\n\n\n static serialize(klass: IClassRef | IEntityRef | Function | object, options?: IJsonSchemaSerializeOptions) {\n const serializer = JsonSchema.getSerializer(options);\n return serializer.serialize(klass);\n }\n\n\n static unserialize(data: any, options?: IJsonSchemaUnserializeOptions): Promise<IClassRef | IEntityRef | (IClassRef | IEntityRef)[]> {\n options = options ? options : {};\n const schema = this.detectSchemaVersion(data);\n options.version = schema;\n const serializer = this.getUnserializer(options);\n return serializer.unserialize(data);\n }\n\n\n static detectSchemaVersion(schema: object, fallback: string = DRAFT_07) {\n if (schema['$schema']) {\n if (isString(schema['$schema'])) {\n const match = schema['$schema'].match(/json-schema.org\\/(.*)\\/schema/);\n if (match && match[1]) {\n return match[1];\n }\n }\n }\n return fallback;\n }\n\n getName(): string {\n return JSON_SCHEMA_SERIALIZER;\n }\n\n getSerializer(options?: IJsonSchemaSerializeOptions): ISerializer {\n return JsonSchema.getSerializer(options);\n }\n\n getUnserializer(options?: IJsonSchemaUnserializeOptions): IUnserializer {\n return JsonSchema.getUnserializer(options);\n }\n\n serialize(klass: IClassRef | IEntityRef | Function | object, options?: IJsonSchemaSerializeOptions): any {\n return JsonSchema.serialize(klass, options);\n }\n\n unserialize(data: string, options?: IJsonSchemaUnserializeOptions): Promise<IClassRef | IEntityRef | (IClassRef | IEntityRef)[]> {\n return JsonSchema.unserialize(data, options);\n }\n\n\n}\n"],"sourceRoot":"../.."}
|
|
@@ -39,4 +39,5 @@ export declare class JsonSchema7Serializer implements IJsonSchemaSerializer {
|
|
|
39
39
|
describePropertyForRef(klass: IClassRef, property: IPropertyRef): IJsonSchema7Definition;
|
|
40
40
|
describeTargetRef(property: IPropertyRef, propMeta: any, mode: 'collection' | 'single'): void;
|
|
41
41
|
propertyPostproces(opt: IJsonSchema7): void;
|
|
42
|
+
getNormedType(property: IPropertyRef): string | Function;
|
|
42
43
|
}
|
|
@@ -13,10 +13,10 @@ const MetadataRegistry_1 = require("../registry/MetadataRegistry");
|
|
|
13
13
|
class JsonSchema7Serializer {
|
|
14
14
|
constructor(opts) {
|
|
15
15
|
this.options = opts || {};
|
|
16
|
-
lodash_1.defaults(this.options, {
|
|
16
|
+
(0, lodash_1.defaults)(this.options, {
|
|
17
17
|
keysToSkip: Constants_1.DEFAULT_KEY_TO_SKIP,
|
|
18
18
|
postProcess: (src, dst, serializer) => {
|
|
19
|
-
if (src && src.metaType === Constants_1.METATYPE_PROPERTY && lodash_1.has(dst, 'cardinality')) {
|
|
19
|
+
if (src && src.metaType === Constants_1.METATYPE_PROPERTY && (0, lodash_1.has)(dst, 'cardinality')) {
|
|
20
20
|
const cardinality = dst['cardinality'];
|
|
21
21
|
delete dst['cardinality'];
|
|
22
22
|
// TODO handle value corretly minItem/maxItem when item!
|
|
@@ -34,18 +34,18 @@ class JsonSchema7Serializer {
|
|
|
34
34
|
return `http://json-schema.org/${Constants_2.DRAFT_07}/schema`;
|
|
35
35
|
}
|
|
36
36
|
isCurrentClass(x) {
|
|
37
|
-
return lodash_1.snakeCase(this.current) === lodash_1.snakeCase(x);
|
|
37
|
+
return (0, lodash_1.snakeCase)(this.current) === (0, lodash_1.snakeCase)(x);
|
|
38
38
|
}
|
|
39
39
|
serialize(klass) {
|
|
40
|
-
if (lodash_1.isFunction(klass)) {
|
|
40
|
+
if ((0, lodash_1.isFunction)(klass)) {
|
|
41
41
|
this.current = base_1.ClassUtils.getClassName(klass);
|
|
42
42
|
this.describeClass(klass);
|
|
43
43
|
}
|
|
44
|
-
else if (IClassRef_1.isClassRef(klass)) {
|
|
44
|
+
else if ((0, IClassRef_1.isClassRef)(klass)) {
|
|
45
45
|
this.current = klass.name;
|
|
46
46
|
this.describeClassRef(klass);
|
|
47
47
|
}
|
|
48
|
-
else if (IEntityRef_1.isEntityRef(klass)) {
|
|
48
|
+
else if ((0, IEntityRef_1.isEntityRef)(klass)) {
|
|
49
49
|
this.current = klass.name;
|
|
50
50
|
this.describeEntityRef(klass);
|
|
51
51
|
}
|
|
@@ -80,14 +80,14 @@ class JsonSchema7Serializer {
|
|
|
80
80
|
title: className,
|
|
81
81
|
type: Constants_1.T_OBJECT,
|
|
82
82
|
};
|
|
83
|
-
if (IEntityRef_1.isEntityRef(klass)) {
|
|
83
|
+
if ((0, IEntityRef_1.isEntityRef)(klass)) {
|
|
84
84
|
// when an entity mark with $id!
|
|
85
85
|
root.$id = '#' + klass.name;
|
|
86
86
|
}
|
|
87
|
-
else if (IClassRef_1.isClassRef(klass) && klass.hasEntityRef()) {
|
|
87
|
+
else if ((0, IClassRef_1.isClassRef)(klass) && klass.hasEntityRef()) {
|
|
88
88
|
root.$id = '#' + klass.getEntityRef().name;
|
|
89
89
|
}
|
|
90
|
-
if (IEntityRef_1.isEntityRef(klass) || IClassRef_1.isClassRef(klass)) {
|
|
90
|
+
if ((0, IEntityRef_1.isEntityRef)(klass) || (0, IClassRef_1.isClassRef)(klass)) {
|
|
91
91
|
const data = klass.getOptions();
|
|
92
92
|
this.appendAdditionalOptions(root, data);
|
|
93
93
|
}
|
|
@@ -119,7 +119,7 @@ class JsonSchema7Serializer {
|
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
if (this.data.anyOf) {
|
|
122
|
-
this.data.anyOf = lodash_1.uniqBy(this.data.anyOf, x => JSON.stringify(x));
|
|
122
|
+
this.data.anyOf = (0, lodash_1.uniqBy)(this.data.anyOf, x => JSON.stringify(x));
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
describeEntityRef(klass) {
|
|
@@ -129,8 +129,8 @@ class JsonSchema7Serializer {
|
|
|
129
129
|
return this.describeRef(klass);
|
|
130
130
|
}
|
|
131
131
|
describeRef(klass) {
|
|
132
|
-
const clsRef = IEntityRef_1.isEntityRef(klass) ? klass.getClassRef() : klass;
|
|
133
|
-
const className = IEntityRef_1.isEntityRef(klass) ? klass.name : clsRef.name;
|
|
132
|
+
const clsRef = (0, IEntityRef_1.isEntityRef)(klass) ? klass.getClassRef() : klass;
|
|
133
|
+
const className = (0, IEntityRef_1.isEntityRef)(klass) ? klass.name : clsRef.name;
|
|
134
134
|
// schema = this.getOrCreateSchemaDefinitions(schema);
|
|
135
135
|
const root = this.getOrCreateRoot(className, klass);
|
|
136
136
|
if (!root) {
|
|
@@ -175,7 +175,7 @@ class JsonSchema7Serializer {
|
|
|
175
175
|
}
|
|
176
176
|
appendProperties(data, properties) {
|
|
177
177
|
data.properties = {};
|
|
178
|
-
for (const k of lodash_1.keys(properties)) {
|
|
178
|
+
for (const k of (0, lodash_1.keys)(properties)) {
|
|
179
179
|
const p = properties[k];
|
|
180
180
|
if (p[Constants_1.K_PATTERN_PROPERTY]) {
|
|
181
181
|
if (!data.patternProperties) {
|
|
@@ -194,7 +194,7 @@ class JsonSchema7Serializer {
|
|
|
194
194
|
const instance = Reflect.construct(klass, []);
|
|
195
195
|
const _properties = Reflect.ownKeys(instance);
|
|
196
196
|
for (const p of _properties) {
|
|
197
|
-
if (lodash_1.isString(p)) {
|
|
197
|
+
if ((0, lodash_1.isString)(p)) {
|
|
198
198
|
const result = this.describePropertyForFunction(klass, p, instance);
|
|
199
199
|
properties[p] = result;
|
|
200
200
|
}
|
|
@@ -211,13 +211,13 @@ class JsonSchema7Serializer {
|
|
|
211
211
|
// TODO own key
|
|
212
212
|
const _properties = Reflect.ownKeys(instance);
|
|
213
213
|
for (const p of _properties) {
|
|
214
|
-
if (lodash_1.isString(p) && !lodash_1.has(properties, p)) {
|
|
214
|
+
if ((0, lodash_1.isString)(p) && !(0, lodash_1.has)(properties, p)) {
|
|
215
215
|
const result = this.describePropertyForFunction(klass, p, instance);
|
|
216
216
|
properties[p] = result;
|
|
217
217
|
}
|
|
218
|
-
else if (lodash_1.isString(p) && lodash_1.has(properties, p)) {
|
|
218
|
+
else if ((0, lodash_1.isString)(p) && (0, lodash_1.has)(properties, p)) {
|
|
219
219
|
const value = instance[p];
|
|
220
|
-
if (!lodash_1.isNull(value) || !lodash_1.isUndefined(value)) {
|
|
220
|
+
if (!(0, lodash_1.isNull)(value) || !(0, lodash_1.isUndefined)(value)) {
|
|
221
221
|
// add default value if exists
|
|
222
222
|
properties[p].default = SchemaUtils_1.SchemaUtils.normValue(value);
|
|
223
223
|
}
|
|
@@ -226,11 +226,11 @@ class JsonSchema7Serializer {
|
|
|
226
226
|
return properties;
|
|
227
227
|
}
|
|
228
228
|
isAppendTargetSet() {
|
|
229
|
-
return lodash_1.get(this.options, 'appendTarget', false);
|
|
229
|
+
return (0, lodash_1.get)(this.options, 'appendTarget', false);
|
|
230
230
|
}
|
|
231
231
|
describePropertyForFunction(klass, propertyName, instance) {
|
|
232
232
|
var _a;
|
|
233
|
-
const clazz = IClassRef_1.isClassRef(klass) ? klass.getClass() : klass;
|
|
233
|
+
const clazz = (0, IClassRef_1.isClassRef)(klass) ? klass.getClass() : klass;
|
|
234
234
|
const propMeta = {};
|
|
235
235
|
// check if property is object
|
|
236
236
|
let value = instance[propertyName];
|
|
@@ -246,13 +246,13 @@ class JsonSchema7Serializer {
|
|
|
246
246
|
}
|
|
247
247
|
let target = null;
|
|
248
248
|
if (typeHint) {
|
|
249
|
-
if (lodash_1.isString(typeHint)) {
|
|
249
|
+
if ((0, lodash_1.isString)(typeHint)) {
|
|
250
250
|
propMeta.type = typeHint;
|
|
251
251
|
if (propMeta.type === Constants_1.T_ARRAY) {
|
|
252
252
|
this.setDefaultArray(propMeta);
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
|
-
else if (lodash_1.isFunction(typeHint)) {
|
|
255
|
+
else if ((0, lodash_1.isFunction)(typeHint)) {
|
|
256
256
|
if (typeHint === Date) {
|
|
257
257
|
// propMeta.type = 'date' as any;
|
|
258
258
|
propMeta.type = Constants_1.T_STRING;
|
|
@@ -279,7 +279,7 @@ class JsonSchema7Serializer {
|
|
|
279
279
|
}
|
|
280
280
|
}
|
|
281
281
|
}
|
|
282
|
-
if (!propMeta.type || (lodash_1.isString(propMeta.type) && lodash_1.isEmpty(propMeta.type))) {
|
|
282
|
+
if (!propMeta.type || ((0, lodash_1.isString)(propMeta.type) && (0, lodash_1.isEmpty)(propMeta.type))) {
|
|
283
283
|
const reflectMetadataType = Reflect && Reflect.getMetadata ?
|
|
284
284
|
Reflect.getMetadata(Constants_1.REFLECT_DESIGN_TYPE, clazz, propertyName) : undefined;
|
|
285
285
|
if (reflectMetadataType) {
|
|
@@ -319,7 +319,7 @@ class JsonSchema7Serializer {
|
|
|
319
319
|
this.describeClass(target);
|
|
320
320
|
}
|
|
321
321
|
}
|
|
322
|
-
if (!lodash_1.isUndefined(value) || !lodash_1.isNull(value)) {
|
|
322
|
+
if (!(0, lodash_1.isUndefined)(value) || !(0, lodash_1.isNull)(value)) {
|
|
323
323
|
propMeta.default = SchemaUtils_1.SchemaUtils.normValue(value);
|
|
324
324
|
}
|
|
325
325
|
this.propertyPostproces(propMeta);
|
|
@@ -328,29 +328,29 @@ class JsonSchema7Serializer {
|
|
|
328
328
|
return propMeta;
|
|
329
329
|
}
|
|
330
330
|
appendAdditionalOptions(propMeta, data) {
|
|
331
|
-
if (data && lodash_1.keys(data).length > 0) {
|
|
331
|
+
if (data && (0, lodash_1.keys)(data).length > 0) {
|
|
332
332
|
const metaType = data.metaType;
|
|
333
333
|
if (metaType === Constants_1.METATYPE_PROPERTY) {
|
|
334
|
-
if (IClassRef_1.isClassRef(data.type) || IEntityRef_1.isEntityRef(data.type)) {
|
|
334
|
+
if ((0, IClassRef_1.isClassRef)(data.type) || (0, IEntityRef_1.isEntityRef)(data.type)) {
|
|
335
335
|
// if reference ignore adding
|
|
336
|
-
if (lodash_1.get(this.options, 'deleteReferenceKeys', true)) {
|
|
336
|
+
if ((0, lodash_1.get)(this.options, 'deleteReferenceKeys', true)) {
|
|
337
337
|
return;
|
|
338
338
|
}
|
|
339
339
|
}
|
|
340
340
|
}
|
|
341
|
-
const _keys = lodash_1.keys(data);
|
|
341
|
+
const _keys = (0, lodash_1.keys)(data);
|
|
342
342
|
for (const k of _keys) {
|
|
343
343
|
if (this.options.keysToSkip.includes(k)) {
|
|
344
344
|
continue;
|
|
345
345
|
}
|
|
346
|
-
if (!propMeta[k] || lodash_1.get(this.options, 'allowKeyOverride', false)) {
|
|
346
|
+
if (!propMeta[k] || (0, lodash_1.get)(this.options, 'allowKeyOverride', false)) {
|
|
347
347
|
propMeta[k] = data[k];
|
|
348
348
|
}
|
|
349
349
|
}
|
|
350
350
|
}
|
|
351
351
|
}
|
|
352
352
|
setDefaultArray(schema) {
|
|
353
|
-
lodash_1.assign(schema, {
|
|
353
|
+
(0, lodash_1.assign)(schema, {
|
|
354
354
|
type: Constants_1.T_ARRAY,
|
|
355
355
|
items: {
|
|
356
356
|
type: Constants_1.T_OBJECT
|
|
@@ -365,8 +365,9 @@ class JsonSchema7Serializer {
|
|
|
365
365
|
this.describeTargetRef(property, propMeta, 'collection');
|
|
366
366
|
}
|
|
367
367
|
else {
|
|
368
|
+
const normedType = this.getNormedType(property);
|
|
368
369
|
propMeta.items = {
|
|
369
|
-
type:
|
|
370
|
+
type: normedType
|
|
370
371
|
};
|
|
371
372
|
this.propertyPostproces(propMeta.items);
|
|
372
373
|
}
|
|
@@ -377,7 +378,8 @@ class JsonSchema7Serializer {
|
|
|
377
378
|
this.describeTargetRef(property, propMeta, 'single');
|
|
378
379
|
}
|
|
379
380
|
else {
|
|
380
|
-
|
|
381
|
+
const normedType = this.getNormedType(property);
|
|
382
|
+
propMeta.type = normedType;
|
|
381
383
|
this.propertyPostproces(propMeta);
|
|
382
384
|
}
|
|
383
385
|
}
|
|
@@ -394,8 +396,8 @@ class JsonSchema7Serializer {
|
|
|
394
396
|
}
|
|
395
397
|
describeTargetRef(property, propMeta, mode) {
|
|
396
398
|
let targetRef = property.getTargetRef();
|
|
397
|
-
if (lodash_1.get(this.options, 'deleteReferenceKeys', true)) {
|
|
398
|
-
lodash_1.keys(propMeta).map(k => delete propMeta[k]);
|
|
399
|
+
if ((0, lodash_1.get)(this.options, 'deleteReferenceKeys', true)) {
|
|
400
|
+
(0, lodash_1.keys)(propMeta).map(k => delete propMeta[k]);
|
|
399
401
|
}
|
|
400
402
|
else {
|
|
401
403
|
this.options.keysToSkip.map(x => delete propMeta[x]);
|
|
@@ -432,6 +434,17 @@ class JsonSchema7Serializer {
|
|
|
432
434
|
opt.format = 'date-time';
|
|
433
435
|
}
|
|
434
436
|
}
|
|
437
|
+
getNormedType(property) {
|
|
438
|
+
let retType = null;
|
|
439
|
+
const type = property.getType();
|
|
440
|
+
if (this.options.typeConversion) {
|
|
441
|
+
retType = this.options.typeConversion(type, property);
|
|
442
|
+
}
|
|
443
|
+
if (!retType) {
|
|
444
|
+
retType = (0, lodash_1.isFunction)(type) ? type.name.toLowerCase() : type;
|
|
445
|
+
}
|
|
446
|
+
return retType;
|
|
447
|
+
}
|
|
435
448
|
}
|
|
436
449
|
exports.JsonSchema7Serializer = JsonSchema7Serializer;
|
|
437
450
|
|