@allgemein/schema-api 1.5.1 → 1.5.5
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/decorators/Property.js +1 -1
- package/decorators/Property.js.map +1 -1
- package/decorators/validate/Regex.js +3 -0
- package/decorators/validate/Regex.js.map +1 -1
- package/lib/AbstractRef.d.ts +5 -1
- package/lib/AbstractRef.js +7 -1
- package/lib/AbstractRef.js.map +1 -1
- package/lib/Constants.d.ts +5 -0
- package/lib/Constants.js +6 -1
- package/lib/Constants.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/JsonSchema7Serializer.d.ts +1 -0
- package/lib/json-schema/JsonSchema7Serializer.js +15 -2
- package/lib/json-schema/JsonSchema7Serializer.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 +4 -1
- package/lib/registry/AbstractRegistry.js +5 -1
- package/lib/registry/AbstractRegistry.js.map +1 -1
- package/lib/registry/DefaultNamespacedRegistry.d.ts +2 -0
- package/lib/registry/DefaultNamespacedRegistry.js +28 -20
- package/lib/registry/DefaultNamespacedRegistry.js.map +1 -1
- package/lib/registry/DefaultPropertyRef.d.ts +21 -0
- package/lib/registry/DefaultPropertyRef.js +36 -6
- 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 +23 -9
- package/lib/registry/MetadataRegistry.js.map +1 -1
- package/lib/registry/RegistryFactory.d.ts +2 -1
- package/lib/registry/RegistryFactory.js +4 -4
- package/lib/registry/RegistryFactory.js.map +1 -1
- package/package.json +13 -13
package/decorators/Property.js
CHANGED
|
@@ -41,7 +41,7 @@ function Property(typeOrOptions = null) {
|
|
|
41
41
|
options.type = options.type ? options.type : className.toLowerCase();
|
|
42
42
|
}
|
|
43
43
|
else if (className === Array.name) {
|
|
44
|
-
options.type = options.type ? options.type :
|
|
44
|
+
options.type = options.type ? options.type : Constants_1.T_OBJECT;
|
|
45
45
|
options.cardinality = 0;
|
|
46
46
|
}
|
|
47
47
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/decorators/Property.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,mCAAkE;AAClE,0CAA2C;AAE3C,
|
|
1
|
+
{"version":3,"sources":["../../../src/decorators/Property.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAC1B,mCAAkE;AAClE,0CAA2C;AAE3C,gDAO0B;AAC1B,uEAAkE;AAElE,SAAgB,QAAQ,CAAC,gBAAsD,IAAI;IACjF,OAAO,UAAU,MAAW,EAAE,YAAoB;QAEhD,IAAI,OAAO,GAAqB;YAC9B,IAAI,EAAE,SAAS;SAChB,CAAC;QAGF,IAAI,IAAA,iBAAQ,EAAC,aAAa,CAAC,EAAE;YAC3B,OAAO,CAAC,IAAI,GAAkB,aAAa,CAAC;SAC7C;aAAM,IAAI,IAAA,mBAAU,EAAC,aAAa,CAAC,EAAE;YACpC,MAAM,IAAI,GAAG,iBAAU,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAC9C,OAAO,CAAC,IAAI,GAAG,aAAa,EAAE,CAAC;aAChC;iBAAM;gBACL,OAAO,CAAC,IAAI,GAAG,aAAa,CAAC;aAC9B;SACF;aAAM,IAAI,aAAa,IAAI,IAAA,qBAAY,EAAC,aAAa,CAAC,EAAE;YACvD,IAAA,eAAM,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAC/B,IAAI,OAAO,CAAC,IAAI,IAAI,IAAA,mBAAU,EAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC5C,MAAM,IAAI,GAAG,iBAAU,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBAC9C,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;iBAC/B;aACF;SACF;QAED,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;QACpC,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;QAEpC,MAAM,mBAAmB,GAAG,OAAO,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,+BAAmB,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAExI,IAAI,mBAAmB,EAAE;YACvB,MAAM,SAAS,GAAG,iBAAU,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;YAC/D,IAAI,8BAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAS,CAAC,EAAE;gBAC/D,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;aACtE;iBAAM,IAAI,SAAS,KAAK,KAAK,CAAC,IAAI,EAAE;gBACnC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAQ,CAAC;gBACtD,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;aACzB;iBAAM;gBACL,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC;aAClE;SACF;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACjB,OAAO,CAAC,IAAI,GAAG,oBAAQ,CAAC;SACzB;QAED,mCAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,6BAAiB,EAAE,OAAO,CAAC,CAAC;IAEvD,CAAC,CAAC;AACJ,CAAC;AAnDD,4BAmDC","file":"Property.js","sourcesContent":["import 'reflect-metadata';\nimport {assign, isFunction, isObjectLike, isString} from 'lodash';\nimport {ClassUtils} from '@allgemein/base';\nimport {IPropertyOptions} from '../lib/options/IPropertyOptions';\nimport {\n JS_DATA_TYPES,\n JS_PRIMATIVE_TYPES,\n METATYPE_PROPERTY,\n REFLECT_DESIGN_TYPE,\n T_OBJECT,\n T_STRING\n} from '../lib/Constants';\nimport {MetadataRegistry} from '../lib/registry/MetadataRegistry';\n\nexport function Property(typeOrOptions: IPropertyOptions | Function | string = null) {\n return function (source: any, propertyName: string) {\n\n let options: IPropertyOptions = {\n type: undefined\n };\n\n\n if (isString(typeOrOptions)) {\n options.type = <JS_DATA_TYPES>typeOrOptions;\n } else if (isFunction(typeOrOptions)) {\n const name = ClassUtils.getClassName(typeOrOptions);\n if ([Function.name, '', 'type'].includes(name)) {\n options.type = typeOrOptions();\n } else {\n options.type = typeOrOptions;\n }\n } else if (typeOrOptions && isObjectLike(typeOrOptions)) {\n assign(options, typeOrOptions);\n if (options.type && isFunction(options.type)) {\n const name = ClassUtils.getClassName(options.type);\n if ([Function.name, '', 'type'].includes(name)) {\n options.type = options.type();\n }\n }\n }\n\n options.target = source.constructor;\n options.propertyName = propertyName;\n\n const reflectMetadataType = Reflect && Reflect.getMetadata ? Reflect.getMetadata(REFLECT_DESIGN_TYPE, source, propertyName) : undefined;\n\n if (reflectMetadataType) {\n const className = ClassUtils.getClassName(reflectMetadataType);\n if (JS_PRIMATIVE_TYPES.includes(className.toLowerCase() as any)) {\n options.type = options.type ? options.type : className.toLowerCase();\n } else if (className === Array.name) {\n options.type = options.type ? options.type : T_OBJECT;\n options.cardinality = 0;\n } else {\n options.type = options.type ? options.type : reflectMetadataType;\n }\n }\n\n if (!options.type) {\n options.type = T_STRING;\n }\n\n MetadataRegistry.$().add(METATYPE_PROPERTY, options);\n\n };\n}\n"],"sourceRoot":".."}
|
|
@@ -17,6 +17,9 @@ function Regex(regex, options) {
|
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
if (options) {
|
|
20
|
+
if (!opts.validateOptions) {
|
|
21
|
+
opts.validateOptions = { regex: {} };
|
|
22
|
+
}
|
|
20
23
|
(0, lodash_1.assign)(opts.validateOptions.regex, options);
|
|
21
24
|
}
|
|
22
25
|
AnnotationsHelper_1.AnnotationsHelper.forPropertyOn(source.constructor, propertyName, opts, 'merge');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/decorators/validate/Regex.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../src/decorators/validate/Regex.ts"],"names":[],"mappings":";;;AAAA,mCAAiD;AAEjD,mEAA8D;AAC9D,4EAAuE;AASvE,SAAgB,KAAK,CAAC,KAAsB,EAAE,OAAuB;IACnE,OAAO,UAAU,MAAW,EAAE,YAAoB;QAChD,MAAM,IAAI,GAAQ;YAChB,OAAO,EAAE,IAAA,iBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;SAChD,CAAC;QACF,IAAI,CAAC,IAAA,iBAAQ,EAAC,KAAK,CAAC,IAAI,CAAC,IAAA,gBAAO,EAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC7C,IAAI,CAAC,eAAe,GAAG;gBACrB,KAAK,EAAE;oBACL,KAAK,EAAE,KAAK,CAAC,KAAK;iBACnB;aACF,CAAC;SACH;QACD,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,IAAI,CAAC,eAAe,GAAG,EAAC,KAAK,EAAE,EAAE,EAAC,CAAC;aACpC;YACD,IAAA,eAAM,EAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SAC7C;QAED,qCAAiB,CAAC,aAAa,CAC7B,MAAM,CAAC,WAAW,EAClB,YAAY,EACZ,IAAI,EACJ,OAAO,CACR,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AA1BD,sBA0BC;AAED,mCAAgB,CAAC,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO;IACb,EAAE,EAAE,CAAC,KAAa,EAAE,OAAsB,EAAE,QAAc,EAAE,EAAE;QAC5D,6CAA6C;QAC7C,iBAAiB;QACjB,IAAI;QACJ,IAAI,IAAA,iBAAQ,EAAC,KAAK,CAAC,EAAE;YACnB,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACjB,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,cAAc,EAAE;QACd,OAAO,EAAE,6FAA6F;KACvG;IACD,kBAAkB,EAAE,SAAS;CAC9B,CACF,CAAC","file":"Regex.js","sourcesContent":["import {assign, isEmpty, isString} from 'lodash';\n\nimport {AnnotationsHelper} from '../../lib/AnnotationsHelper';\nimport {DefaultValidator} from '../../lib/validation/DefaultValidator';\nimport {IValidateOptions} from '../../lib/validation/IValidateOptions';\n\nexport interface IRegexOptions extends IValidateOptions {\n pattern?: string;\n message?: string;\n flags?: string;\n}\n\nexport function Regex(regex: string | RegExp, options?: IRegexOptions) {\n return function (source: any, propertyName: string) {\n const opts: any = {\n pattern: isString(regex) ? regex : regex.source,\n };\n if (!isString(regex) && !isEmpty(regex.flags)) {\n opts.validateOptions = {\n regex: {\n flags: regex.flags,\n }\n };\n }\n if (options) {\n if (!opts.validateOptions) {\n opts.validateOptions = {regex: {}};\n }\n assign(opts.validateOptions.regex, options);\n }\n\n AnnotationsHelper.forPropertyOn(\n source.constructor,\n propertyName,\n opts,\n 'merge'\n );\n };\n}\n\nDefaultValidator.define({\n name: 'regex',\n fn: (value: string, options: IRegexOptions, instance?: any) => {\n // if (isUndefined(value) || isNull(value)) {\n // return true;\n // }\n if (isString(value)) {\n const r = new RegExp(options.pattern, options.flags);\n if (r.test(value)) {\n return true;\n }\n }\n return false;\n },\n defaultOptions: {\n message: 'Value of property \"%propertyName\" doesn\\'t match the regular expression \"%options.pattern\".'\n },\n involveOnOptionKey: 'pattern'\n }\n);\n"],"sourceRoot":"../.."}
|
package/lib/AbstractRef.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { METADATA_TYPE } from './Constants';
|
|
1
|
+
import { JS_DATA_TYPES, METADATA_TYPE } from './Constants';
|
|
2
2
|
import { IBaseRef } from '../api/IBaseRef';
|
|
3
3
|
import { IClassRef } from '../api/IClassRef';
|
|
4
4
|
import { ILookupRegistry } from '../api/ILookupRegistry';
|
|
@@ -23,4 +23,8 @@ export declare abstract class AbstractRef implements IBaseRef {
|
|
|
23
23
|
get machineName(): string;
|
|
24
24
|
get storingName(): any;
|
|
25
25
|
abstract id(): string;
|
|
26
|
+
/**
|
|
27
|
+
* Return supported primative data types
|
|
28
|
+
*/
|
|
29
|
+
getSupportedDataTypes(): JS_DATA_TYPES[];
|
|
26
30
|
}
|
package/lib/AbstractRef.js
CHANGED
|
@@ -114,12 +114,18 @@ class AbstractRef {
|
|
|
114
114
|
return (0, lodash_1.snakeCase)(this.name);
|
|
115
115
|
}
|
|
116
116
|
get storingName() {
|
|
117
|
-
let name = this.getOptions(
|
|
117
|
+
let name = this.getOptions(Constants_1.C_NAME);
|
|
118
118
|
if (!name) {
|
|
119
119
|
name = (0, lodash_1.snakeCase)(this.name);
|
|
120
120
|
}
|
|
121
121
|
return name;
|
|
122
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Return supported primative data types
|
|
125
|
+
*/
|
|
126
|
+
getSupportedDataTypes() {
|
|
127
|
+
return Constants_1.JS_DATA_TYPES;
|
|
128
|
+
}
|
|
123
129
|
}
|
|
124
130
|
exports.AbstractRef = AbstractRef;
|
|
125
131
|
|
package/lib/AbstractRef.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/AbstractRef.ts"],"names":[],"mappings":";;;AAAA,mCAAuE;AACvE,
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/AbstractRef.ts"],"names":[],"mappings":"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","file":"AbstractRef.js","sourcesContent":["import {assign, get, has, isEmpty, keys, set, snakeCase} from 'lodash';\nimport {\n C_NAME,\n DEFAULT_NAMESPACE,\n JS_DATA_TYPES,\n METADATA_TYPE,\n METATYPE_PROPERTY,\n METATYPE_SCHEMA,\n} from './Constants';\nimport {IBaseRef} from '../api/IBaseRef';\nimport {IClassRef, isClassRef} from '../api/IClassRef';\nimport {MetadataRegistry} from './registry/MetadataRegistry';\nimport {ILookupRegistry} from '../api/ILookupRegistry';\n\n\nexport abstract class AbstractRef implements IBaseRef {\n\n readonly metaType: METADATA_TYPE;\n\n namespace: string = DEFAULT_NAMESPACE;\n\n private _cachedOptions: any;\n\n readonly name: string;\n\n readonly object: IClassRef;\n\n\n constructor(type: METADATA_TYPE,\n name: string,\n object: IClassRef | Function | string = null,\n namespace: string = DEFAULT_NAMESPACE) {\n this.namespace = namespace;\n this.metaType = type;\n this.name = name;\n if (isClassRef(object)) {\n this.object = object;\n } else {\n this.object = object ? this.getClassRefFor(object, type) : null;\n }\n }\n\n abstract getClassRefFor(object: string | Function | IClassRef, type: METADATA_TYPE): IClassRef;\n\n getNamespace() {\n return this.namespace;\n }\n\n abstract getRegistry(): ILookupRegistry;\n\n getSourceRef() {\n return this.object;\n }\n\n protected getOptionsEntry() {\n if (!this._cachedOptions) {\n if (this.metaType === METATYPE_PROPERTY) {\n this._cachedOptions = MetadataRegistry.$().findCached(this.metaType, (x: any) =>\n x.target === this.getClass(true) &&\n x.propertyName === this.name &&\n x.namespace === this.getNamespace()\n );\n if (!this._cachedOptions) {\n this._cachedOptions = {target: this.getClass(true), propertyName: this.name, namespace: this.getNamespace()};\n MetadataRegistry.$().addCached(this.metaType, this._cachedOptions);\n }\n } else if (this.metaType === METATYPE_SCHEMA) {\n this._cachedOptions = MetadataRegistry.$().findCached(this.metaType, (x: any) =>\n x.name === this.name &&\n x.namespace === this.getNamespace()\n );\n if (!this._cachedOptions) {\n this._cachedOptions = {name: this.name, namespace: this.getNamespace()};\n MetadataRegistry.$().addCached(this.metaType, this._cachedOptions);\n }\n } else {\n this._cachedOptions = MetadataRegistry.$().findCached(this.metaType, (x: any) =>\n x.target === this.getClass(true) &&\n x.namespace === this.getNamespace()\n );\n if (!this._cachedOptions) {\n this._cachedOptions = {target: this.getClass(true), namespace: this.getNamespace()};\n MetadataRegistry.$().addCached(this.metaType, this._cachedOptions);\n }\n }\n }\n return this._cachedOptions;\n }\n\n getOptions(key?: string, defaultValue: any = null): any {\n if (key) {\n return get(this.getOptionsEntry(), key, defaultValue);\n }\n return this.getOptionsEntry();\n }\n\n setOptions(options: any) {\n if (options && !isEmpty(keys(options))) {\n const opts = this.getOptionsEntry();\n // if same object cause taken from MetadataRegistry then ignore setting\n if (opts !== options) {\n for (const k of keys(opts)) {\n delete opts[k];\n }\n assign(opts, options);\n }\n }\n }\n\n setOption(key: string, value: any) {\n const opts = this.getOptionsEntry();\n set(opts, key, value);\n }\n\n hasOption(key: string) {\n const opts = this.getOptionsEntry();\n return has(opts, key);\n }\n\n // getOptions(key: string = null, defaultValue: any = null): any | OPTS {\n // if (key) {\n // return get(this.options, key, defaultValue);\n // }\n // return this.options;\n // }\n //\n // setOptions(opts: any) {\n // if (opts && !isEmpty(keys(opts))) {\n // if (!isEmpty(keys(this.options))) {\n // this.options = merge(this.options, opts);\n // } else {\n // this.options = opts;\n // }\n // }\n // }\n //\n //\n // setOption(key: string, value: any) {\n // if (!this.options) {\n // this.options = <any>{};\n // }\n // set(<any>this.options, key, value);\n // }\n\n\n getClassRef() {\n return this.object;\n }\n\n\n getClass(create: boolean = false) {\n return this.getClassRef().getClass(create);\n }\n\n\n get machineName() {\n return snakeCase(this.name);\n }\n\n\n get storingName() {\n let name = this.getOptions(C_NAME);\n if (!name) {\n name = snakeCase(this.name);\n }\n\n return name;\n }\n\n\n abstract id(): string;\n\n\n /**\n * Return supported primative data types\n */\n getSupportedDataTypes() {\n return JS_DATA_TYPES;\n }\n\n\n // toJson() {\n // let options = cloneDeep(this.getOptions());\n // let o: any = {\n // id: this.id(),\n // name: this.name,\n // type: this.metaType,\n // machineName: this.machineName,\n // options: options\n // };\n // return o;\n // }\n\n}\n\n\n\n"],"sourceRoot":".."}
|
package/lib/Constants.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
export declare const DEFAULT_NAMESPACE = "default";
|
|
2
2
|
export declare const GLOBAL_NAMESPACE = "__global__";
|
|
3
|
+
export declare const C_IDENTIFIER = "identifier";
|
|
4
|
+
export declare const C_TYPE = "type";
|
|
5
|
+
export declare const C_NAME = "name";
|
|
6
|
+
export declare const C_APPENDED = "appended";
|
|
7
|
+
export declare const C_CARDINALITY = "cardinality";
|
|
3
8
|
export declare const XS_DEFAULT_CLASSES = "default_class_ref";
|
|
4
9
|
export declare const REFLECT_DESIGN_TYPE = "design:type";
|
|
5
10
|
export declare const METATYPE_SCHEMA = "schema";
|
package/lib/Constants.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_KEY_TO_SKIP = exports.K_TRIGGERED = exports.K_PATTERN_PROPERTY = exports.STATE_KEY = exports.OPT_CREAT_AND_COPY = exports.__NS__ = exports.__CLASS__ = exports.C_PROP_NAME = exports.T_OBJECT = exports.T_ARRAY = exports.T_STRING = exports.C_EVENT_UPDATE = exports.C_EVENT_REMOVE = exports.C_EVENT_ADD = exports.JS_PRIMATIVE_TYPES = exports.JS_DATA_TYPES = exports.XS_ANNOTATION_OPTIONS_CACHE = exports.METADATA_REGISTRY = exports.XS_DEFAULT_SCHEMA = exports.XS_ID_SEPARATOR = exports.BINDING_SCHEMA_CLASS_REF = exports.BINDING_SCHEMA_ENTITY = exports.METATYPE_EMBEDDABLE = exports.METATYPE_PROPERTY = exports.METATYPE_CLASS_REF = exports.METATYPE_NAMESPACE = exports.METATYPE_ENTITY = exports.METATYPE_SCHEMA = exports.REFLECT_DESIGN_TYPE = exports.XS_DEFAULT_CLASSES = exports.GLOBAL_NAMESPACE = exports.DEFAULT_NAMESPACE = void 0;
|
|
3
|
+
exports.DEFAULT_KEY_TO_SKIP = exports.K_TRIGGERED = exports.K_PATTERN_PROPERTY = exports.STATE_KEY = exports.OPT_CREAT_AND_COPY = exports.__NS__ = exports.__CLASS__ = exports.C_PROP_NAME = exports.T_OBJECT = exports.T_ARRAY = exports.T_STRING = exports.C_EVENT_UPDATE = exports.C_EVENT_REMOVE = exports.C_EVENT_ADD = exports.JS_PRIMATIVE_TYPES = exports.JS_DATA_TYPES = exports.XS_ANNOTATION_OPTIONS_CACHE = exports.METADATA_REGISTRY = exports.XS_DEFAULT_SCHEMA = exports.XS_ID_SEPARATOR = exports.BINDING_SCHEMA_CLASS_REF = exports.BINDING_SCHEMA_ENTITY = exports.METATYPE_EMBEDDABLE = exports.METATYPE_PROPERTY = exports.METATYPE_CLASS_REF = exports.METATYPE_NAMESPACE = exports.METATYPE_ENTITY = exports.METATYPE_SCHEMA = exports.REFLECT_DESIGN_TYPE = exports.XS_DEFAULT_CLASSES = exports.C_CARDINALITY = exports.C_APPENDED = exports.C_NAME = exports.C_TYPE = exports.C_IDENTIFIER = exports.GLOBAL_NAMESPACE = exports.DEFAULT_NAMESPACE = void 0;
|
|
4
4
|
exports.DEFAULT_NAMESPACE = 'default';
|
|
5
5
|
exports.GLOBAL_NAMESPACE = '__global__';
|
|
6
|
+
exports.C_IDENTIFIER = 'identifier';
|
|
7
|
+
exports.C_TYPE = 'type';
|
|
8
|
+
exports.C_NAME = 'name';
|
|
9
|
+
exports.C_APPENDED = 'appended';
|
|
10
|
+
exports.C_CARDINALITY = 'cardinality';
|
|
6
11
|
exports.XS_DEFAULT_CLASSES = 'default_class_ref';
|
|
7
12
|
exports.REFLECT_DESIGN_TYPE = 'design:type';
|
|
8
13
|
exports.METATYPE_SCHEMA = 'schema';
|
package/lib/Constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/Constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAG,SAAS,CAAC;AAC9B,QAAA,gBAAgB,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/Constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAAG,SAAS,CAAC;AAC9B,QAAA,gBAAgB,GAAG,YAAY,CAAC;AAGhC,QAAA,YAAY,GAAG,YAAY,CAAC;AAC5B,QAAA,MAAM,GAAG,MAAM,CAAC;AAChB,QAAA,MAAM,GAAG,MAAM,CAAC;AAChB,QAAA,UAAU,GAAG,UAAU,CAAC;AACxB,QAAA,aAAa,GAAG,aAAa,CAAC;AAG9B,QAAA,kBAAkB,GAAG,mBAAmB,CAAC;AAEzC,QAAA,mBAAmB,GAAG,aAAa,CAAC;AACpC,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,kBAAkB,GAAG,WAAW,CAAC;AACjC,QAAA,kBAAkB,GAAG,WAAW,CAAC;AACjC,QAAA,iBAAiB,GAAG,UAAU,CAAC;AAC/B,QAAA,mBAAmB,GAAG,QAAQ,CAAC;AAU/B,QAAA,qBAAqB,GAAG,eAAe,CAAC;AACxC,QAAA,wBAAwB,GAAG,kBAAkB,CAAC;AAS9C,QAAA,eAAe,GAAG,IAAI,CAAC;AAEvB,QAAA,iBAAiB,GAAG,SAAS,CAAC;AAG9B,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AAyBxC,QAAA,2BAA2B,GAAG,oBAAoB,CAAC;AAChE,mEAAmE;AAEtD,QAAA,aAAa,GAAoB;IAC5C,QAAQ;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,UAAU;IACV,WAAW;IACX,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,WAAW;IACX,QAAQ;CACX,CAAC;AAEW,QAAA,kBAAkB,GAAoB;IACjD,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,WAAW;IACX,QAAQ;CACT,CAAC;AAGW,QAAA,WAAW,GAAG,KAAK,CAAC;AACpB,QAAA,cAAc,GAAG,QAAQ,CAAC;AAC1B,QAAA,cAAc,GAAG,QAAQ,CAAC;AAE1B,QAAA,QAAQ,GAAG,QAAQ,CAAC;AACpB,QAAA,OAAO,GAAG,OAAO,CAAC;AAClB,QAAA,QAAQ,GAAG,QAAQ,CAAC;AAEpB,QAAA,WAAW,GAAG,MAAM,CAAC;AACrB,QAAA,SAAS,GAAG,WAAW,CAAC;AACxB,QAAA,MAAM,GAAG,QAAQ,CAAC;AAClB,QAAA,kBAAkB,GAAG,eAAe,CAAC;AAErC,QAAA,SAAS,GAAG,QAAQ,CAAC;AAErB,QAAA,kBAAkB,GAAG,iBAAiB,CAAC;AACvC,QAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAWpC,QAAA,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC","file":"Constants.js","sourcesContent":["import exp = require('constants');\n\nexport const DEFAULT_NAMESPACE = 'default';\nexport const GLOBAL_NAMESPACE = '__global__';\n\n\nexport const C_IDENTIFIER = 'identifier';\nexport const C_TYPE = 'type';\nexport const C_NAME = 'name';\nexport const C_APPENDED = 'appended';\nexport const C_CARDINALITY = 'cardinality';\n\n\nexport const XS_DEFAULT_CLASSES = 'default_class_ref';\n\nexport const REFLECT_DESIGN_TYPE = 'design:type';\nexport const METATYPE_SCHEMA = 'schema';\nexport const METATYPE_ENTITY = 'entity';\nexport const METATYPE_NAMESPACE = 'namespace';\nexport const METATYPE_CLASS_REF = 'class_ref';\nexport const METATYPE_PROPERTY = 'property';\nexport const METATYPE_EMBEDDABLE = 'object';\n\nexport type METADATA_TYPE =\n 'schema'\n | 'object'\n | 'entity'\n | 'property'\n | 'class_ref';\n\n\nexport const BINDING_SCHEMA_ENTITY = 'schema_entity';\nexport const BINDING_SCHEMA_CLASS_REF = 'schema_class_ref';\n\nexport type METADATA_AND_BIND_TYPE = METADATA_TYPE\n | 'schema_entity'\n | 'entity_property'\n | 'property_entity'\n | 'schema_class_ref';\n\nexport type XS_DATA_TYPES = 'string' | 'number' | 'boolean' | 'entity' | 'array' | 'any' ;\nexport const XS_ID_SEPARATOR = '--';\n\nexport const XS_DEFAULT_SCHEMA = 'default';\n\n\nexport const METADATA_REGISTRY = 'metadata/registry';\n\n\nexport type ClassType<T> = { new(...args: any[]): T; };\n\nexport type JS_DATA_TYPES =\n 'string'\n | 'text'\n | 'number'\n | 'boolean'\n | 'double'\n | 'json'\n | 'date'\n | 'time'\n | 'datetime'\n | 'timestamp'\n | 'byte'\n | 'object'\n | 'array'\n | 'symbol'\n | 'null'\n | 'undefined'\n | 'bigint'\n ;\n\nexport const XS_ANNOTATION_OPTIONS_CACHE = 'anno_options_cache';\n// export const XS_ANNOTATION_OPTIONS_CACHE = 'anno_options_cache';\n\nexport const JS_DATA_TYPES: JS_DATA_TYPES[] = [\n 'string'\n , 'text'\n , 'number'\n , 'boolean'\n , 'double'\n , 'json'\n , 'date'\n , 'time'\n , 'datetime'\n , 'timestamp'\n , 'byte'\n , 'object'\n , 'symbol'\n , 'null'\n , 'undefined'\n , 'bigint'\n];\n\nexport const JS_PRIMATIVE_TYPES: JS_DATA_TYPES[] = [\n 'string',\n 'number',\n 'boolean',\n 'object',\n 'symbol',\n 'date',\n 'null',\n 'undefined',\n 'bigint'\n];\n\n\nexport const C_EVENT_ADD = 'add';\nexport const C_EVENT_REMOVE = 'remove';\nexport const C_EVENT_UPDATE = 'update';\n\nexport const T_STRING = 'string';\nexport const T_ARRAY = 'array';\nexport const T_OBJECT = 'object';\n\nexport const C_PROP_NAME = 'name';\nexport const __CLASS__ = '__CLASS__';\nexport const __NS__ = '__NS__';\nexport const OPT_CREAT_AND_COPY = 'createAndCopy';\n\nexport const STATE_KEY = '$state';\n\nexport const K_PATTERN_PROPERTY = 'patternProperty';\nexport const K_TRIGGERED = Symbol('_triggered_');\n\nexport type CLASS_TYPE = Function | ClassType<any>;\nexport type MERGE_TYPE = 'default' | 'assign' | 'merge';\n\nexport interface IMinMax {\n min: number;\n max: number;\n}\n\n\nexport const DEFAULT_KEY_TO_SKIP = ['type', '$ref', 'target', 'propertyName', 'metaType', 'namespace', 'name'];\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":"../.."}
|
|
@@ -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
|
}
|
|
@@ -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
|
}
|
|
@@ -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
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/json-schema/JsonSchema7Serializer.ts"],"names":[],"mappings":"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","file":"JsonSchema7Serializer.js","sourcesContent":["import {\n assign,\n defaults,\n get,\n has,\n isEmpty,\n isFunction,\n isNull,\n isString,\n isUndefined,\n keys,\n snakeCase,\n uniqBy\n} from 'lodash';\nimport {ClassUtils, NotSupportedError} from '@allgemein/base';\nimport {IJsonSchema7, IJsonSchema7Definition, IJsonSchema7TypeName, JSON_SCHEMA_7_TYPES} from './JsonSchema7';\nimport {\n DEFAULT_KEY_TO_SKIP,\n K_PATTERN_PROPERTY,\n METATYPE_PROPERTY,\n REFLECT_DESIGN_TYPE,\n T_ARRAY,\n T_OBJECT,\n T_STRING\n} from '../Constants';\nimport {IClassRef, isClassRef} from '../../api/IClassRef';\nimport {SchemaUtils} from '../SchemaUtils';\nimport {IPropertyRef} from '../../api/IPropertyRef';\nimport {IJsonSchemaSerializer} from './IJsonSchemaSerializer';\nimport {IEntityRef, isEntityRef} from '../../api/IEntityRef';\nimport {IJsonSchemaSerializeOptions} from './IJsonSchemaSerializeOptions';\nimport {DRAFT_07} from './Constants';\nimport {MetadataRegistry} from '../registry/MetadataRegistry';\nimport {IEntityOptions} from '../options/IEntityOptions';\nimport {IPropertyOptions} from '../options/IPropertyOptions';\n\n\nexport class JsonSchema7Serializer implements IJsonSchemaSerializer {\n\n options: IJsonSchemaSerializeOptions;\n\n data: IJsonSchema7;\n\n current: string;\n\n constructor(opts: IJsonSchemaSerializeOptions) {\n this.options = opts || {};\n defaults(this.options, <IJsonSchemaSerializeOptions>{\n keysToSkip: DEFAULT_KEY_TO_SKIP,\n postProcess: (src, dst, serializer) => {\n if (src && src.metaType === METATYPE_PROPERTY && has(dst, 'cardinality')) {\n const cardinality = dst['cardinality'];\n delete dst['cardinality'];\n // TODO handle value corretly minItem/maxItem when item!\n if (cardinality === 0) {\n\n } else {\n //delete dst['cardinality'];\n }\n\n }\n }\n });\n this.data = this.getOrCreateSchemaDefinitions();\n }\n\n\n uri(): string {\n return `http://json-schema.org/${DRAFT_07}/schema`;\n }\n\n\n private isCurrentClass(x: string) {\n return snakeCase(this.current) === snakeCase(x);\n }\n\n serialize(klass: IClassRef | IEntityRef | Function | object): IJsonSchema7 {\n if (isFunction(klass)) {\n this.current = ClassUtils.getClassName(klass);\n this.describeClass(klass);\n } else if (isClassRef(klass)) {\n this.current = klass.name;\n this.describeClassRef(klass);\n } else if (isEntityRef(klass)) {\n this.current = klass.name;\n this.describeEntityRef(klass);\n } else {\n throw new NotSupportedError('class or function can\\'t be used');\n }\n return this.getJsonSchema();\n }\n\n getJsonSchema() {\n return this.data;\n }\n\n private getOrCreateSchemaDefinitions(schema?: IJsonSchema7) {\n if (!schema) {\n schema = {\n $schema: this.uri() + '#',\n definitions: {}\n };\n } else if (schema && !schema.definitions) {\n schema.definitions = {};\n }\n return schema;\n }\n\n\n private getOrCreateRoot(className: string, klass: Function | IClassRef | IEntityRef) {\n if (this.data.definitions[className]) {\n // definition is present and\n this.applyRef(className);\n return null;\n }\n\n const appendTarget = this.isAppendTargetSet();\n const root: IJsonSchema7Definition = this.data.definitions[className] = {\n title: className,\n type: T_OBJECT,\n };\n\n if (isEntityRef(klass)) {\n // when an entity mark with $id!\n root.$id = '#' + klass.name;\n } else if (isClassRef(klass) && klass.hasEntityRef()) {\n root.$id = '#' + klass.getEntityRef().name;\n }\n\n if (isEntityRef(klass) || isClassRef(klass)) {\n const data = klass.getOptions();\n this.appendAdditionalOptions(root, data);\n }\n\n if (appendTarget) {\n root.$target = SchemaUtils.getFunction(klass);\n }\n\n this.applyRef(className);\n\n if (this.options.postProcess) {\n this.options.postProcess(klass, root, this);\n }\n return root;\n }\n\n\n applyRef(className: string) {\n if (!this.data.$ref && !this.data.anyOf) {\n this.data.$ref = '#/definitions/' + className;\n } else if (this.data.$ref && !this.data.anyOf) {\n if (this.isCurrentClass(className)) {\n this.data.anyOf = [\n {$ref: this.data.$ref},\n {$ref: '#/definitions/' + className}\n ];\n delete this.data['$ref'];\n }\n } else if (!this.data.$ref && this.data.anyOf) {\n if (this.isCurrentClass(className)) {\n this.data.anyOf.push({$ref: '#/definitions/' + className});\n }\n }\n\n if (this.data.anyOf) {\n this.data.anyOf = uniqBy(this.data.anyOf, x => JSON.stringify(x));\n }\n }\n\n\n describeEntityRef(klass: IEntityRef): IJsonSchema7 {\n return this.describeRef(klass);\n }\n\n\n describeClassRef(klass: IClassRef): IJsonSchema7 {\n return this.describeRef(klass);\n }\n\n private describeRef(klass: IEntityRef | IClassRef): IJsonSchema7 {\n const clsRef = isEntityRef(klass) ? klass.getClassRef() : klass;\n const className = isEntityRef(klass) ? klass.name : clsRef.name;\n\n // schema = this.getOrCreateSchemaDefinitions(schema);\n const root = this.getOrCreateRoot(className, klass);\n if (!root) {\n return null;\n }\n\n const rootProps = this.describePropertiesForRef(clsRef);\n this.appendProperties(root, rootProps);\n\n const proto = clsRef.getExtend();\n if (proto) {\n this.describeInheritedClass(root, proto);\n }\n return root;\n }\n\n\n describeInheritedClass(root: IJsonSchema7, proto: IClassRef) {\n const inheritedClassName = proto.name;\n root.allOf = [{$ref: '#/definitions/' + inheritedClassName}];\n if (!this.data.definitions[inheritedClassName]) {\n const inheritedClass = this.getOrCreateRoot(inheritedClassName, proto);\n const props = this.describePropertiesForRef(proto);\n this.appendProperties(inheritedClass, props);\n }\n }\n\n\n describeClass(klass: Function): IJsonSchema7 {\n const className = ClassUtils.getClassName(klass);\n\n const root = this.getOrCreateRoot(className, klass);\n if (!root) {\n return null;\n }\n\n const rootProps = this.describePropertiesForFunction(klass);\n this.appendProperties(root, rootProps);\n\n const proto = SchemaUtils.getInherited(klass);\n if (proto) {\n const inheritedClassName = ClassUtils.getClassName(proto);\n root.allOf = [{$ref: '#/definitions/' + inheritedClassName}];\n if (this.data && !this.data.definitions[inheritedClassName]) {\n const inheritedClass = this.getOrCreateRoot(inheritedClassName, proto);\n const props = this.describePropertiesForFunction(proto);\n this.appendProperties(inheritedClass, props);\n }\n }\n return root;\n }\n\n appendProperties(data: any, properties: { [k: string]: IJsonSchema7Definition }) {\n data.properties = {};\n for (const k of keys(properties)) {\n const p = properties[k];\n if (p[K_PATTERN_PROPERTY]) {\n if (!data.patternProperties) {\n data.patternProperties = {};\n }\n data.patternProperties[k] = p;\n } else {\n data.properties[k] = p;\n }\n delete p[K_PATTERN_PROPERTY];\n }\n }\n\n\n describePropertiesForFunction(klass: Function) {\n const properties: { [k: string]: IJsonSchema7Definition } = {};\n const instance = Reflect.construct(klass, []);\n const _properties = Reflect.ownKeys(instance);\n for (const p of _properties) {\n if (isString(p)) {\n const result = this.describePropertyForFunction(klass, p, instance);\n properties[p] = result;\n }\n }\n return properties;\n }\n\n\n describePropertiesForRef(klass: IClassRef) {\n const properties: { [k: string]: IJsonSchema7Definition } = {};\n\n for (const prop of klass.getPropertyRefs()) {\n const result = this.describePropertyForRef(klass, prop);\n properties[prop.name] = result;\n }\n\n const instance = klass.create<object>(false);\n // TODO own key\n const _properties = Reflect.ownKeys(instance);\n for (const p of _properties) {\n if (isString(p) && !has(properties, p)) {\n const result = this.describePropertyForFunction(klass, p, instance);\n properties[p] = result;\n } else if (isString(p) && has(properties, p)) {\n const value = instance[p];\n if (!isNull(value) || !isUndefined(value)) {\n // add default value if exists\n (properties[p] as any).default = SchemaUtils.normValue(value);\n }\n }\n }\n return properties;\n }\n\n\n isAppendTargetSet() {\n return get(this.options, 'appendTarget', false);\n }\n\n\n describePropertyForFunction(klass: Function | IClassRef, propertyName: string, instance?: any): IJsonSchema7Definition {\n const clazz = isClassRef(klass) ? klass.getClass() : klass;\n const propMeta: IJsonSchema7Definition = {};\n\n // check if property is object\n let value = instance[propertyName];\n let typeHint: any = typeof value;\n if (typeHint === T_OBJECT) {\n typeHint = Reflect.getPrototypeOf(value)?.constructor;\n if (typeHint.name === Object.name) {\n typeHint = T_OBJECT;\n } else if (typeHint.name === Array.name) {\n typeHint = T_ARRAY;\n }\n }\n\n let target = null;\n if (typeHint) {\n\n if (isString(typeHint)) {\n propMeta.type = typeHint as IJsonSchema7TypeName;\n if (propMeta.type === T_ARRAY) {\n this.setDefaultArray(propMeta);\n }\n } else if (isFunction(typeHint)) {\n if (typeHint === Date) {\n // propMeta.type = 'date' as any;\n propMeta.type = T_STRING;\n propMeta.format = 'date-time';\n } else {\n const name = ClassUtils.getClassName(typeHint);\n\n if (name === '' || name === Function.name) {\n // Function passing the parameter type\n // propMeta.$target = typeHint();\n target = typeHint();\n } else {\n // propMeta.$target = typeHint as Function;\n target = typeHint as Function;\n }\n\n // maybe follow the object here\n if (target.name === Array.name) {\n this.setDefaultArray(propMeta);\n } else {\n propMeta.type = T_OBJECT;\n }\n }\n }\n }\n\n\n if (!propMeta.type || (isString(propMeta.type) && isEmpty(propMeta.type))) {\n const reflectMetadataType = Reflect && Reflect.getMetadata ?\n Reflect.getMetadata(REFLECT_DESIGN_TYPE, clazz, propertyName) : undefined;\n\n if (reflectMetadataType) {\n const className = ClassUtils.getClassName(reflectMetadataType);\n if (JSON_SCHEMA_7_TYPES.includes(className.toLowerCase() as any)) {\n propMeta.type = className.toLowerCase() as IJsonSchema7TypeName;\n } else if (className === Array.name) {\n this.setDefaultArray(propMeta);\n } else {\n propMeta.type = T_OBJECT;\n target = reflectMetadataType;\n }\n } else {\n // not reflection data\n propMeta.type = T_STRING;\n }\n }\n\n if (target) {\n if (this.isAppendTargetSet()) {\n propMeta.$target = target;\n }\n\n const className = ClassUtils.getClassName(target);\n let ref = '#/definitions/' + className;\n if (propMeta.type === T_ARRAY) {\n propMeta.items = {\n $ref: ref\n };\n } else {\n propMeta['$ref'] = ref;\n delete propMeta['type'];\n }\n if (this.data && !this.data.definitions[className]) {\n this.describeClass(target);\n }\n }\n\n if (!isUndefined(value) || !isNull(value)) {\n propMeta.default = SchemaUtils.normValue(value);\n }\n\n this.propertyPostproces(propMeta);\n const data = MetadataRegistry.$().find(METATYPE_PROPERTY, (x: any) => x.target === clazz && x.propertyName === propertyName);\n this.appendAdditionalOptions(propMeta, data);\n return propMeta;\n }\n\n\n appendAdditionalOptions(propMeta: any, data: IEntityOptions | IPropertyOptions) {\n if (data && keys(data).length > 0) {\n const metaType = data.metaType;\n if (metaType === METATYPE_PROPERTY) {\n if (isClassRef(data.type) || isEntityRef(data.type)) {\n // if reference ignore adding\n if (get(this.options, 'deleteReferenceKeys', true)) {\n return;\n }\n }\n }\n const _keys = keys(data);\n\n for (const k of _keys) {\n if (this.options.keysToSkip.includes(k)) {\n continue;\n }\n\n if (!propMeta[k] || get(this.options, 'allowKeyOverride', false)) {\n propMeta[k] = data[k];\n }\n }\n }\n }\n\n\n setDefaultArray(schema: IJsonSchema7) {\n assign(schema, {\n type: T_ARRAY,\n items: {\n type: T_OBJECT\n }\n });\n }\n\n\n describePropertyForRef(klass: IClassRef, property: IPropertyRef): IJsonSchema7Definition {\n const propMeta: IJsonSchema7Definition = {};\n\n if (property.isCollection()) {\n this.setDefaultArray(propMeta);\n if (property.isReference()) {\n this.describeTargetRef(property, propMeta, 'collection');\n } else {\n propMeta.items = {\n type: property.getType() as any\n };\n this.propertyPostproces(propMeta.items);\n }\n } else {\n propMeta.type = T_OBJECT;\n if (property.isReference()) {\n this.describeTargetRef(property, propMeta, 'single');\n } else {\n propMeta.type = property.getType() as any;\n this.propertyPostproces(propMeta);\n }\n }\n\n const data = property.getOptions();\n this.appendAdditionalOptions(propMeta, data);\n // pass data pattern property for later correct selection\n if (data[K_PATTERN_PROPERTY]) {\n (propMeta as any)[K_PATTERN_PROPERTY] = true;\n }\n if (this.options.postProcess) {\n this.options.postProcess(property, propMeta, this);\n }\n return propMeta;\n }\n\n\n describeTargetRef(property: IPropertyRef, propMeta: any, mode: 'collection' | 'single') {\n let targetRef: any = property.getTargetRef();\n if (get(this.options, 'deleteReferenceKeys', true)) {\n keys(propMeta).map(k => delete propMeta[k]);\n } else {\n this.options.keysToSkip.map(x => delete propMeta[x]);\n }\n\n if (targetRef.hasEntityRef()) {\n targetRef = targetRef.getEntityRef();\n if (mode === 'collection') {\n propMeta.type = T_ARRAY;\n propMeta.items = {$ref: '#/definitions/' + targetRef.name};\n } else {\n propMeta.$ref = '#/definitions/' + targetRef.name;\n }\n if (this.data && !this.data.definitions[targetRef.name]) {\n this.describeEntityRef(targetRef);\n }\n } else {\n if (mode === 'collection') {\n propMeta.type = T_ARRAY;\n propMeta.items = {$ref: '#/definitions/' + targetRef.name};\n } else {\n propMeta.$ref = '#/definitions/' + targetRef.name;\n }\n if (this.data && !this.data.definitions[targetRef.name]) {\n this.describeClassRef(targetRef);\n }\n }\n }\n\n propertyPostproces(opt: IJsonSchema7) {\n if ((opt.type as any) === 'date') {\n opt.type = T_STRING;\n opt.format = 'date-time';\n }\n\n }\n\n\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/json-schema/JsonSchema7Serializer.ts"],"names":[],"mappings":"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","file":"JsonSchema7Serializer.js","sourcesContent":["import {\n assign,\n defaults,\n get,\n has,\n isEmpty,\n isFunction,\n isNull,\n isString,\n isUndefined,\n keys,\n snakeCase,\n uniqBy\n} from 'lodash';\nimport {ClassUtils, NotSupportedError} from '@allgemein/base';\nimport {IJsonSchema7, IJsonSchema7Definition, IJsonSchema7TypeName, JSON_SCHEMA_7_TYPES} from './JsonSchema7';\nimport {\n DEFAULT_KEY_TO_SKIP,\n K_PATTERN_PROPERTY,\n METATYPE_PROPERTY,\n REFLECT_DESIGN_TYPE,\n T_ARRAY,\n T_OBJECT,\n T_STRING\n} from '../Constants';\nimport {IClassRef, isClassRef} from '../../api/IClassRef';\nimport {SchemaUtils} from '../SchemaUtils';\nimport {IPropertyRef} from '../../api/IPropertyRef';\nimport {IJsonSchemaSerializer} from './IJsonSchemaSerializer';\nimport {IEntityRef, isEntityRef} from '../../api/IEntityRef';\nimport {IJsonSchemaSerializeOptions} from './IJsonSchemaSerializeOptions';\nimport {DRAFT_07} from './Constants';\nimport {MetadataRegistry} from '../registry/MetadataRegistry';\nimport {IEntityOptions} from '../options/IEntityOptions';\nimport {IPropertyOptions} from '../options/IPropertyOptions';\n\n\nexport class JsonSchema7Serializer implements IJsonSchemaSerializer {\n\n options: IJsonSchemaSerializeOptions;\n\n data: IJsonSchema7;\n\n current: string;\n\n constructor(opts: IJsonSchemaSerializeOptions) {\n this.options = opts || {};\n defaults(this.options, <IJsonSchemaSerializeOptions>{\n keysToSkip: DEFAULT_KEY_TO_SKIP,\n postProcess: (src, dst, serializer) => {\n if (src && src.metaType === METATYPE_PROPERTY && has(dst, 'cardinality')) {\n const cardinality = dst['cardinality'];\n delete dst['cardinality'];\n // TODO handle value corretly minItem/maxItem when item!\n if (cardinality === 0) {\n\n } else {\n //delete dst['cardinality'];\n }\n\n }\n }\n });\n this.data = this.getOrCreateSchemaDefinitions();\n }\n\n\n uri(): string {\n return `http://json-schema.org/${DRAFT_07}/schema`;\n }\n\n\n private isCurrentClass(x: string) {\n return snakeCase(this.current) === snakeCase(x);\n }\n\n serialize(klass: IClassRef | IEntityRef | Function | object): IJsonSchema7 {\n if (isFunction(klass)) {\n this.current = ClassUtils.getClassName(klass);\n this.describeClass(klass);\n } else if (isClassRef(klass)) {\n this.current = klass.name;\n this.describeClassRef(klass);\n } else if (isEntityRef(klass)) {\n this.current = klass.name;\n this.describeEntityRef(klass);\n } else {\n throw new NotSupportedError('class or function can\\'t be used');\n }\n return this.getJsonSchema();\n }\n\n getJsonSchema() {\n return this.data;\n }\n\n private getOrCreateSchemaDefinitions(schema?: IJsonSchema7) {\n if (!schema) {\n schema = {\n $schema: this.uri() + '#',\n definitions: {}\n };\n } else if (schema && !schema.definitions) {\n schema.definitions = {};\n }\n return schema;\n }\n\n\n private getOrCreateRoot(className: string, klass: Function | IClassRef | IEntityRef) {\n if (this.data.definitions[className]) {\n // definition is present and\n this.applyRef(className);\n return null;\n }\n\n const appendTarget = this.isAppendTargetSet();\n const root: IJsonSchema7Definition = this.data.definitions[className] = {\n title: className,\n type: T_OBJECT,\n };\n\n if (isEntityRef(klass)) {\n // when an entity mark with $id!\n root.$id = '#' + klass.name;\n } else if (isClassRef(klass) && klass.hasEntityRef()) {\n root.$id = '#' + klass.getEntityRef().name;\n }\n\n if (isEntityRef(klass) || isClassRef(klass)) {\n const data = klass.getOptions();\n this.appendAdditionalOptions(root, data);\n }\n\n if (appendTarget) {\n root.$target = SchemaUtils.getFunction(klass);\n }\n\n this.applyRef(className);\n\n if (this.options.postProcess) {\n this.options.postProcess(klass, root, this);\n }\n return root;\n }\n\n\n applyRef(className: string) {\n if (!this.data.$ref && !this.data.anyOf) {\n this.data.$ref = '#/definitions/' + className;\n } else if (this.data.$ref && !this.data.anyOf) {\n if (this.isCurrentClass(className)) {\n this.data.anyOf = [\n {$ref: this.data.$ref},\n {$ref: '#/definitions/' + className}\n ];\n delete this.data['$ref'];\n }\n } else if (!this.data.$ref && this.data.anyOf) {\n if (this.isCurrentClass(className)) {\n this.data.anyOf.push({$ref: '#/definitions/' + className});\n }\n }\n\n if (this.data.anyOf) {\n this.data.anyOf = uniqBy(this.data.anyOf, x => JSON.stringify(x));\n }\n }\n\n\n describeEntityRef(klass: IEntityRef): IJsonSchema7 {\n return this.describeRef(klass);\n }\n\n\n describeClassRef(klass: IClassRef): IJsonSchema7 {\n return this.describeRef(klass);\n }\n\n private describeRef(klass: IEntityRef | IClassRef): IJsonSchema7 {\n const clsRef = isEntityRef(klass) ? klass.getClassRef() : klass;\n const className = isEntityRef(klass) ? klass.name : clsRef.name;\n\n // schema = this.getOrCreateSchemaDefinitions(schema);\n const root = this.getOrCreateRoot(className, klass);\n if (!root) {\n return null;\n }\n\n const rootProps = this.describePropertiesForRef(clsRef);\n this.appendProperties(root, rootProps);\n\n const proto = clsRef.getExtend();\n if (proto) {\n this.describeInheritedClass(root, proto);\n }\n return root;\n }\n\n\n describeInheritedClass(root: IJsonSchema7, proto: IClassRef) {\n const inheritedClassName = proto.name;\n root.allOf = [{$ref: '#/definitions/' + inheritedClassName}];\n if (!this.data.definitions[inheritedClassName]) {\n const inheritedClass = this.getOrCreateRoot(inheritedClassName, proto);\n const props = this.describePropertiesForRef(proto);\n this.appendProperties(inheritedClass, props);\n }\n }\n\n\n describeClass(klass: Function): IJsonSchema7 {\n const className = ClassUtils.getClassName(klass);\n\n const root = this.getOrCreateRoot(className, klass);\n if (!root) {\n return null;\n }\n\n const rootProps = this.describePropertiesForFunction(klass);\n this.appendProperties(root, rootProps);\n\n const proto = SchemaUtils.getInherited(klass);\n if (proto) {\n const inheritedClassName = ClassUtils.getClassName(proto);\n root.allOf = [{$ref: '#/definitions/' + inheritedClassName}];\n if (this.data && !this.data.definitions[inheritedClassName]) {\n const inheritedClass = this.getOrCreateRoot(inheritedClassName, proto);\n const props = this.describePropertiesForFunction(proto);\n this.appendProperties(inheritedClass, props);\n }\n }\n return root;\n }\n\n appendProperties(data: any, properties: { [k: string]: IJsonSchema7Definition }) {\n data.properties = {};\n for (const k of keys(properties)) {\n const p = properties[k];\n if (p[K_PATTERN_PROPERTY]) {\n if (!data.patternProperties) {\n data.patternProperties = {};\n }\n data.patternProperties[k] = p;\n } else {\n data.properties[k] = p;\n }\n delete p[K_PATTERN_PROPERTY];\n }\n }\n\n\n describePropertiesForFunction(klass: Function) {\n const properties: { [k: string]: IJsonSchema7Definition } = {};\n const instance = Reflect.construct(klass, []);\n const _properties = Reflect.ownKeys(instance);\n for (const p of _properties) {\n if (isString(p)) {\n const result = this.describePropertyForFunction(klass, p, instance);\n properties[p] = result;\n }\n }\n return properties;\n }\n\n\n describePropertiesForRef(klass: IClassRef) {\n const properties: { [k: string]: IJsonSchema7Definition } = {};\n\n for (const prop of klass.getPropertyRefs()) {\n const result = this.describePropertyForRef(klass, prop);\n properties[prop.name] = result;\n }\n\n const instance = klass.create<object>(false);\n // TODO own key\n const _properties = Reflect.ownKeys(instance);\n for (const p of _properties) {\n if (isString(p) && !has(properties, p)) {\n const result = this.describePropertyForFunction(klass, p, instance);\n properties[p] = result;\n } else if (isString(p) && has(properties, p)) {\n const value = instance[p];\n if (!isNull(value) || !isUndefined(value)) {\n // add default value if exists\n (properties[p] as any).default = SchemaUtils.normValue(value);\n }\n }\n }\n return properties;\n }\n\n\n isAppendTargetSet() {\n return get(this.options, 'appendTarget', false);\n }\n\n\n describePropertyForFunction(klass: Function | IClassRef, propertyName: string, instance?: any): IJsonSchema7Definition {\n const clazz = isClassRef(klass) ? klass.getClass() : klass;\n const propMeta: IJsonSchema7Definition = {};\n\n // check if property is object\n let value = instance[propertyName];\n let typeHint: any = typeof value;\n if (typeHint === T_OBJECT) {\n typeHint = Reflect.getPrototypeOf(value)?.constructor;\n if (typeHint.name === Object.name) {\n typeHint = T_OBJECT;\n } else if (typeHint.name === Array.name) {\n typeHint = T_ARRAY;\n }\n }\n\n let target = null;\n if (typeHint) {\n\n if (isString(typeHint)) {\n propMeta.type = typeHint as IJsonSchema7TypeName;\n if (propMeta.type === T_ARRAY) {\n this.setDefaultArray(propMeta);\n }\n } else if (isFunction(typeHint)) {\n if (typeHint === Date) {\n // propMeta.type = 'date' as any;\n propMeta.type = T_STRING;\n propMeta.format = 'date-time';\n } else {\n const name = ClassUtils.getClassName(typeHint);\n\n if (name === '' || name === Function.name) {\n // Function passing the parameter type\n // propMeta.$target = typeHint();\n target = typeHint();\n } else {\n // propMeta.$target = typeHint as Function;\n target = typeHint as Function;\n }\n\n // maybe follow the object here\n if (target.name === Array.name) {\n this.setDefaultArray(propMeta);\n } else {\n propMeta.type = T_OBJECT;\n }\n }\n }\n }\n\n\n if (!propMeta.type || (isString(propMeta.type) && isEmpty(propMeta.type))) {\n const reflectMetadataType = Reflect && Reflect.getMetadata ?\n Reflect.getMetadata(REFLECT_DESIGN_TYPE, clazz, propertyName) : undefined;\n\n if (reflectMetadataType) {\n const className = ClassUtils.getClassName(reflectMetadataType);\n if (JSON_SCHEMA_7_TYPES.includes(className.toLowerCase() as any)) {\n propMeta.type = className.toLowerCase() as IJsonSchema7TypeName;\n } else if (className === Array.name) {\n this.setDefaultArray(propMeta);\n } else {\n propMeta.type = T_OBJECT;\n target = reflectMetadataType;\n }\n } else {\n // not reflection data\n propMeta.type = T_STRING;\n }\n }\n\n if (target) {\n if (this.isAppendTargetSet()) {\n propMeta.$target = target;\n }\n\n const className = ClassUtils.getClassName(target);\n let ref = '#/definitions/' + className;\n if (propMeta.type === T_ARRAY) {\n propMeta.items = {\n $ref: ref\n };\n } else {\n propMeta['$ref'] = ref;\n delete propMeta['type'];\n }\n if (this.data && !this.data.definitions[className]) {\n this.describeClass(target);\n }\n }\n\n if (!isUndefined(value) || !isNull(value)) {\n propMeta.default = SchemaUtils.normValue(value);\n }\n\n this.propertyPostproces(propMeta);\n const data = MetadataRegistry.$().find(METATYPE_PROPERTY, (x: any) => x.target === clazz && x.propertyName === propertyName);\n this.appendAdditionalOptions(propMeta, data);\n return propMeta;\n }\n\n\n appendAdditionalOptions(propMeta: any, data: IEntityOptions | IPropertyOptions) {\n if (data && keys(data).length > 0) {\n const metaType = data.metaType;\n if (metaType === METATYPE_PROPERTY) {\n if (isClassRef(data.type) || isEntityRef(data.type)) {\n // if reference ignore adding\n if (get(this.options, 'deleteReferenceKeys', true)) {\n return;\n }\n }\n }\n const _keys = keys(data);\n\n for (const k of _keys) {\n if (this.options.keysToSkip.includes(k)) {\n continue;\n }\n\n if (!propMeta[k] || get(this.options, 'allowKeyOverride', false)) {\n propMeta[k] = data[k];\n }\n }\n }\n }\n\n\n setDefaultArray(schema: IJsonSchema7) {\n assign(schema, {\n type: T_ARRAY,\n items: {\n type: T_OBJECT\n }\n });\n }\n\n\n describePropertyForRef(klass: IClassRef, property: IPropertyRef): IJsonSchema7Definition {\n const propMeta: IJsonSchema7Definition = {};\n\n if (property.isCollection()) {\n this.setDefaultArray(propMeta);\n if (property.isReference()) {\n this.describeTargetRef(property, propMeta, 'collection');\n } else {\n const normedType = this.getNormedType(property);\n propMeta.items = {\n type: normedType as any\n };\n this.propertyPostproces(propMeta.items);\n }\n } else {\n propMeta.type = T_OBJECT;\n if (property.isReference()) {\n this.describeTargetRef(property, propMeta, 'single');\n } else {\n const normedType = this.getNormedType(property);\n propMeta.type = normedType as any;\n this.propertyPostproces(propMeta);\n }\n }\n\n const data = property.getOptions();\n this.appendAdditionalOptions(propMeta, data);\n // pass data pattern property for later correct selection\n if (data[K_PATTERN_PROPERTY]) {\n (propMeta as any)[K_PATTERN_PROPERTY] = true;\n }\n if (this.options.postProcess) {\n this.options.postProcess(property, propMeta, this);\n }\n return propMeta;\n }\n\n\n describeTargetRef(property: IPropertyRef, propMeta: any, mode: 'collection' | 'single') {\n let targetRef: any = property.getTargetRef();\n if (get(this.options, 'deleteReferenceKeys', true)) {\n keys(propMeta).map(k => delete propMeta[k]);\n } else {\n this.options.keysToSkip.map(x => delete propMeta[x]);\n }\n\n if (targetRef.hasEntityRef()) {\n targetRef = targetRef.getEntityRef();\n if (mode === 'collection') {\n propMeta.type = T_ARRAY;\n propMeta.items = {$ref: '#/definitions/' + targetRef.name};\n } else {\n propMeta.$ref = '#/definitions/' + targetRef.name;\n }\n if (this.data && !this.data.definitions[targetRef.name]) {\n this.describeEntityRef(targetRef);\n }\n } else {\n if (mode === 'collection') {\n propMeta.type = T_ARRAY;\n propMeta.items = {$ref: '#/definitions/' + targetRef.name};\n } else {\n propMeta.$ref = '#/definitions/' + targetRef.name;\n }\n if (this.data && !this.data.definitions[targetRef.name]) {\n this.describeClassRef(targetRef);\n }\n }\n }\n\n propertyPostproces(opt: IJsonSchema7) {\n if ((opt.type as any) === 'date') {\n opt.type = T_STRING;\n opt.format = 'date-time';\n }\n }\n\n\n getNormedType(property: IPropertyRef) {\n let retType = null;\n const type = property.getType();\n if (this.options.typeConversion) {\n retType = this.options.typeConversion(type, property);\n }\n\n if (!retType) {\n retType = isFunction(type) ? type.name.toLowerCase() : type;\n }\n\n return retType;\n }\n\n}\n"],"sourceRoot":"../.."}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/options/IPropertyOptions.ts"],"names":[],"mappings":"","file":"IPropertyOptions.js","sourcesContent":["import {JS_DATA_TYPES} from '../../lib/Constants';\nimport {IAbstractOptions} from './IAbstractOptions';\n\nexport interface IPropertyOptions extends IAbstractOptions {\n\n propertyName?: string;\n\n appended?: boolean;\n\n cardinality?: number | { min: number, max: number };\n\n format?: string;\n\n type?: JS_DATA_TYPES | any;\n\n /**\n * Mark if value is representation of unique identifier\n */\n identifier?: boolean;\n\n /**\n * Generate automatically values for identifier\n */\n generated?: boolean;\n\n /**\n * Mark if property is a pattern property\n */\n pattern?: boolean;\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/options/IPropertyOptions.ts"],"names":[],"mappings":"","file":"IPropertyOptions.js","sourcesContent":["import {JS_DATA_TYPES} from '../../lib/Constants';\nimport {IAbstractOptions} from './IAbstractOptions';\n\nexport interface IPropertyOptions extends IAbstractOptions {\n\n propertyName?: string;\n\n appended?: boolean;\n\n cardinality?: number | { min: number, max: number };\n\n format?: string;\n\n type?: JS_DATA_TYPES | any;\n\n /**\n * Mark if value is representation of unique identifier\n */\n identifier?: boolean;\n\n /**\n * Generate automatically values for identifier\n */\n generated?: boolean;\n\n /**\n * Mark if property is a pattern property\n */\n pattern?: boolean;\n\n\n /**\n * Mark if property is an array\n */\n array?: boolean;\n}\n"],"sourceRoot":"../.."}
|
|
@@ -8,14 +8,17 @@ import { IPropertyRef } from '../../api/IPropertyRef';
|
|
|
8
8
|
import { LookupRegistry } from '../LookupRegistry';
|
|
9
9
|
import { Semaphore } from '@allgemein/base';
|
|
10
10
|
import { ISchemaRef } from '../../api/ISchemaRef';
|
|
11
|
+
import { IRegistryOptions } from './IRegistryOptions';
|
|
11
12
|
/**
|
|
12
13
|
* Registry for metadata of classes and there properties
|
|
13
14
|
*/
|
|
14
15
|
export declare abstract class AbstractRegistry extends EventEmitter implements ILookupRegistry {
|
|
15
16
|
protected readonly namespace: string;
|
|
16
17
|
readonly lock: Semaphore;
|
|
17
|
-
|
|
18
|
+
readonly options: IRegistryOptions;
|
|
19
|
+
constructor(namespace: string, options?: IRegistryOptions);
|
|
18
20
|
ready(timeout?: number): Promise<boolean>;
|
|
21
|
+
getOptions(): IRegistryOptions;
|
|
19
22
|
/**
|
|
20
23
|
* Return all registered schema references
|
|
21
24
|
*
|
|
@@ -10,9 +10,10 @@ const base_1 = require("@allgemein/base");
|
|
|
10
10
|
* Registry for metadata of classes and there properties
|
|
11
11
|
*/
|
|
12
12
|
class AbstractRegistry extends events_1.EventEmitter {
|
|
13
|
-
constructor(namespace) {
|
|
13
|
+
constructor(namespace, options) {
|
|
14
14
|
super();
|
|
15
15
|
this.namespace = namespace;
|
|
16
|
+
this.options = options || {};
|
|
16
17
|
this.lock = base_1.LockFactory.$().semaphore(1);
|
|
17
18
|
}
|
|
18
19
|
ready(timeout) {
|
|
@@ -26,6 +27,9 @@ class AbstractRegistry extends events_1.EventEmitter {
|
|
|
26
27
|
// MetadataRegistry.$().on(C_EVENT_REMOVE, this.onRemove.bind(this));
|
|
27
28
|
// MetadataRegistry.$().on(C_EVENT_UPDATE, this.onUpdate.bind(this));
|
|
28
29
|
// }
|
|
30
|
+
getOptions() {
|
|
31
|
+
return this.options;
|
|
32
|
+
}
|
|
29
33
|
/**
|
|
30
34
|
* Return all registered schema references
|
|
31
35
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/registry/AbstractRegistry.ts"],"names":[],"mappings":";;;AAAA,mCAAiC;AACjC,mCAAoC;AACpC,8CAAiF;AAKjF,sDAAiD;AACjD,0CAA0E;
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/registry/AbstractRegistry.ts"],"names":[],"mappings":"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","file":"AbstractRegistry.js","sourcesContent":["import {snakeCase} from 'lodash';\nimport {EventEmitter} from 'events';\nimport {METADATA_TYPE, METATYPE_ENTITY, METATYPE_PROPERTY} from './../Constants';\nimport {ILookupRegistry} from '../../api/ILookupRegistry';\nimport {IEntityRef} from '../../api/IEntityRef';\nimport {IClassRef} from '../../api/IClassRef';\nimport {IPropertyRef} from '../../api/IPropertyRef';\nimport {LookupRegistry} from '../LookupRegistry';\nimport {LockFactory, NotSupportedError, Semaphore} from '@allgemein/base';\nimport {ISchemaRef} from '../../api/ISchemaRef';\nimport {IRegistryOptions} from './IRegistryOptions';\n\n\n/**\n * Registry for metadata of classes and there properties\n */\nexport abstract class AbstractRegistry extends EventEmitter implements ILookupRegistry {\n\n protected readonly namespace: string;\n\n readonly lock: Semaphore;\n\n readonly options: IRegistryOptions;\n\n\n constructor(namespace: string, options?: IRegistryOptions) {\n super();\n this.namespace = namespace;\n this.options = options || {};\n this.lock = LockFactory.$().semaphore(1);\n }\n\n ready(timeout?: number): Promise<boolean> {\n return this.lock.await(timeout).then(x => true).catch(x => false);\n }\n\n // /**\n // * Initialize events for metadata changes on runtime\n // */\n // prepare() {\n // MetadataRegistry.$().on(C_EVENT_ADD, this.onAdd.bind(this));\n // MetadataRegistry.$().on(C_EVENT_REMOVE, this.onRemove.bind(this));\n // MetadataRegistry.$().on(C_EVENT_UPDATE, this.onUpdate.bind(this));\n // }\n\n\n getOptions(): IRegistryOptions {\n return this.options;\n }\n\n /**\n * Return all registered schema references\n *\n * @param ref\n * @return ISchemaRef[]\n */\n getSchemaRefs<T extends ISchemaRef>(filter?: (x: ISchemaRef) => boolean): (T | ISchemaRef)[] {\n throw new NotSupportedError('');\n }\n\n /**\n * Return schema references for an given entity or class reference\n *\n * @param ref\n * @return ISchemaRef[]\n */\n getSchemaRefsFor<T extends ISchemaRef>(ref: string): T | ISchemaRef;\n getSchemaRefsFor<T extends ISchemaRef>(ref: string | IEntityRef | IClassRef): T | ISchemaRef | (T | ISchemaRef)[] {\n throw new NotSupportedError('');\n }\n\n /**\n * TODO\n *\n * @param filter\n */\n getEntityRefs<T extends IEntityRef>(filter?: (x: IEntityRef) => boolean): (T | IEntityRef)[] {\n return this.filter(METATYPE_ENTITY, filter);\n }\n\n /**\n * Can get get entity ref for function.\n *\n * @param fn\n */\n getEntityRefFor<T extends IEntityRef>(fn: string | object | Function, skipNsCheck: boolean = true): (T | IEntityRef) {\n throw new NotSupportedError('');\n }\n\n\n /**\n * Returns the used instance of lookup registry handler\n */\n getLookupRegistry(): LookupRegistry {\n return LookupRegistry.$(this.namespace);\n }\n\n /**\n * Method for returning class ref\n *\n * @param object\n * @param type\n */\n getClassRefFor(object: string | Function | IClassRef, type: METADATA_TYPE): IClassRef {\n throw new NotSupportedError('');\n }\n\n /**\n * Returns property by name for a given class or entity ref\n *\n * @param filter\n */\n getPropertyRef<T extends IPropertyRef>(ref: IClassRef | IEntityRef, name: string): (T | IPropertyRef) {\n return this.getPropertyRefs<T>(ref).find(x => snakeCase(x.name) === snakeCase(name));\n }\n\n\n /**\n * Returns all properties for given class or entity ref\n *\n * @param ref\n */\n getPropertyRefs<T extends IPropertyRef>(ref: IClassRef | IEntityRef): (T | IPropertyRef)[] {\n throw new NotSupportedError('');\n }\n\n\n getPropertyRefsFor<T extends IPropertyRef>(fn: string | object | Function): (T | IPropertyRef)[] {\n throw new NotSupportedError('');\n }\n\n\n list<X>(type: METADATA_TYPE, filter?: (x: any) => boolean): X[] {\n return this.filter(type, filter);\n }\n\n\n listEntities(filter?: (x: IEntityRef) => boolean): IEntityRef[] {\n return this.getEntityRefs(filter);\n }\n\n\n listProperties(filter?: (x: IPropertyRef) => boolean): IPropertyRef[] {\n return this.filter(METATYPE_PROPERTY, filter);\n }\n\n\n create<T>(context: string, options: any): T {\n throw new NotSupportedError('');\n }\n\n /**\n * TODO\n */\n add<T>(context: string, entry: T): T {\n return this.getLookupRegistry().add(context, entry);\n }\n\n\n /**\n * TODO\n */\n filter<T>(context: string, search: any): T[] {\n return this.getLookupRegistry().filter(context, search);\n }\n\n /**\n * TODO\n */\n find<T>(context: string, search: any): T {\n return this.getLookupRegistry().find(context, search);\n }\n\n /**\n * TODO\n */\n remove<T>(context: string, search: any): T[] {\n return this.getLookupRegistry().remove(context, search);\n }\n\n /**\n * reset current registry\n */\n reset() {\n this.clear();\n }\n\n clear() {\n LookupRegistry.reset(this.namespace);\n }\n\n}\n"],"sourceRoot":"../.."}
|
|
@@ -11,6 +11,7 @@ import { ISchemaRef } from '../../api/ISchemaRef';
|
|
|
11
11
|
import { SchemaRef } from '../SchemaRef';
|
|
12
12
|
import { AbstractRegistry } from './AbstractRegistry';
|
|
13
13
|
import { IAbstractOptions } from '../options/IAbstractOptions';
|
|
14
|
+
import { IRegistryOptions } from './IRegistryOptions';
|
|
14
15
|
/**
|
|
15
16
|
* Registry which handles by default class, schema, embeddalbes and properties, which are not handled by a specialized registry.
|
|
16
17
|
*
|
|
@@ -26,6 +27,7 @@ import { IAbstractOptions } from '../options/IAbstractOptions';
|
|
|
26
27
|
*
|
|
27
28
|
*/
|
|
28
29
|
export declare class DefaultNamespacedRegistry extends AbstractRegistry {
|
|
30
|
+
constructor(namespace: string, options?: IRegistryOptions);
|
|
29
31
|
/**
|
|
30
32
|
* Initialize events for metadata changes on runtime
|
|
31
33
|
*/
|