@allgemein/schema-api 1.5.16 → 1.5.19
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/Namespace.js +5 -1
- package/decorators/Namespace.js.map +1 -1
- package/lib/AbstractRef.js.map +1 -1
- package/lib/ClassRef.d.ts +4 -1
- package/lib/ClassRef.js +18 -19
- package/lib/ClassRef.js.map +1 -1
- package/lib/Constants.d.ts +6 -1
- package/lib/Constants.js +6 -1
- package/lib/Constants.js.map +1 -1
- package/lib/json-schema/Constants.d.ts +1 -0
- package/lib/json-schema/Constants.js +2 -1
- package/lib/json-schema/Constants.js.map +1 -1
- package/lib/json-schema/IJsonSchemaSerializeOptions.d.ts +4 -0
- package/lib/json-schema/IJsonSchemaSerializeOptions.js.map +1 -1
- package/lib/json-schema/IJsonSchemaUnserializeOptions.d.ts +4 -0
- package/lib/json-schema/IJsonSchemaUnserializeOptions.js.map +1 -1
- package/lib/json-schema/JsonSchema7Serializer.js +17 -9
- package/lib/json-schema/JsonSchema7Serializer.js.map +1 -1
- package/lib/json-schema/JsonSchema7Unserializer.d.ts +1 -1
- package/lib/json-schema/JsonSchema7Unserializer.js +6 -5
- package/lib/json-schema/JsonSchema7Unserializer.js.map +1 -1
- package/lib/registry/AbstractRegistry.d.ts +6 -8
- package/lib/registry/AbstractRegistry.js +11 -21
- package/lib/registry/AbstractRegistry.js.map +1 -1
- package/lib/registry/DefaultEntityRef.d.ts +1 -0
- package/lib/registry/DefaultEntityRef.js +12 -0
- package/lib/registry/DefaultEntityRef.js.map +1 -1
- package/lib/registry/DefaultNamespacedRegistry.d.ts +1 -1
- package/lib/registry/DefaultNamespacedRegistry.js +20 -15
- package/lib/registry/DefaultNamespacedRegistry.js.map +1 -1
- package/lib/registry/DefaultPropertyRef.js +1 -1
- package/lib/registry/DefaultPropertyRef.js.map +1 -1
- package/lib/registry/MetadataRegistry.js +2 -1
- package/lib/registry/MetadataRegistry.js.map +1 -1
- package/package.json +1 -1
package/decorators/Namespace.js
CHANGED
|
@@ -7,7 +7,11 @@ function Namespace(ns) {
|
|
|
7
7
|
return function (object) {
|
|
8
8
|
const options = {
|
|
9
9
|
target: object,
|
|
10
|
-
targetTypes: [
|
|
10
|
+
targetTypes: [
|
|
11
|
+
Constants_1.METATYPE_ENTITY,
|
|
12
|
+
Constants_1.METATYPE_CLASS_REF,
|
|
13
|
+
Constants_1.METATYPE_EMBEDDABLE
|
|
14
|
+
],
|
|
11
15
|
attributes: {
|
|
12
16
|
namespace: ns
|
|
13
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/decorators/Namespace.ts"],"names":[],"mappings":";;;AAAA,gDAA8G;AAC9G,uEAAkE;AAGlE,SAAgB,SAAS,CAAC,EAAU;IAClC,OAAO,UAAU,MAAgB;QAC/B,MAAM,OAAO,GAAsB;YACjC,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,
|
|
1
|
+
{"version":3,"sources":["../../../src/decorators/Namespace.ts"],"names":[],"mappings":";;;AAAA,gDAA8G;AAC9G,uEAAkE;AAGlE,SAAgB,SAAS,CAAC,EAAU;IAClC,OAAO,UAAU,MAAgB;QAC/B,MAAM,OAAO,GAAsB;YACjC,MAAM,EAAE,MAAM;YACd,WAAW,EAAE;gBACX,2BAAe;gBACf,8BAAkB;gBAClB,+BAAmB;aACpB;YACD,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE;aACd;SACF,CAAC;QACF,mCAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,8BAAkB,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC;AACJ,CAAC;AAfD,8BAeC","file":"Namespace.js","sourcesContent":["import {METATYPE_CLASS_REF, METATYPE_EMBEDDABLE, METATYPE_ENTITY, METATYPE_NAMESPACE} from '../lib/Constants';\nimport {MetadataRegistry} from '../lib/registry/MetadataRegistry';\nimport {IAttributeOptions} from '../lib/options/IAttributeOptions';\n\nexport function Namespace(ns: string) {\n return function (object: Function) {\n const options: IAttributeOptions = {\n target: object,\n targetTypes: [\n METATYPE_ENTITY,\n METATYPE_CLASS_REF,\n METATYPE_EMBEDDABLE\n ],\n attributes: {\n namespace: ns\n }\n };\n MetadataRegistry.$().add(METATYPE_NAMESPACE, options, false);\n };\n}\n\n"],"sourceRoot":".."}
|
package/lib/AbstractRef.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/AbstractRef.ts"],"names":[],"mappings":";;;AAAA,mCAAuE;AACvE,2CAOqB;AAErB,gDAAuD;AACvD,kEAA6D;AAI7D,MAAsB,WAAW;IAa/B,YAAY,IAAmB,EACnB,IAAY,EACZ,SAAwC,IAAI,EAC5C,YAAoB,6BAAiB;QAZjD,cAAS,GAAW,6BAAiB,CAAC;QAapC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,IAAA,sBAAU,EAAC,MAAM,CAAC,EAAE;YACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;SACtB;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;SACjE;IACH,CAAC;
|
|
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\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 originalName() {\n if (this.object) {\n return this.object.name;\n }\n return null;\n }\n\n get storingName() {\n let name = null;\n if (this.metaType === METATYPE_PROPERTY) {\n name = this.getOptions(C_NAME, null);\n if (!name) {\n name = snakeCase(this.name);\n }\n } else {\n if (this.name !== this.originalName) {\n name = this.name;\n } else {\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/ClassRef.d.ts
CHANGED
|
@@ -74,7 +74,10 @@ export declare class ClassRef extends AbstractRef implements IClassRef {
|
|
|
74
74
|
* @param namespace
|
|
75
75
|
* @param resolve
|
|
76
76
|
*/
|
|
77
|
-
static get(klass: string | Function, namespace?: string,
|
|
77
|
+
static get(klass: string | Function, namespace?: string, options?: boolean | {
|
|
78
|
+
resolve?: boolean;
|
|
79
|
+
checkNamespace?: boolean;
|
|
80
|
+
}): ClassRef;
|
|
78
81
|
/**
|
|
79
82
|
* Create a class ref.
|
|
80
83
|
*
|
package/lib/ClassRef.js
CHANGED
|
@@ -8,6 +8,7 @@ const Constants_1 = require("./Constants");
|
|
|
8
8
|
const LookupRegistry_1 = require("./LookupRegistry");
|
|
9
9
|
const RegistryFactory_1 = require("./registry/RegistryFactory");
|
|
10
10
|
const AbstractRef_1 = require("./AbstractRef");
|
|
11
|
+
const MetadataRegistry_1 = require("./registry/MetadataRegistry");
|
|
11
12
|
/**
|
|
12
13
|
* Reflective reference to a class function
|
|
13
14
|
*
|
|
@@ -119,27 +120,17 @@ class ClassRef extends AbstractRef_1.AbstractRef {
|
|
|
119
120
|
throw new base_1.NotYetImplementedError('getClass for ' + this.originalValue);
|
|
120
121
|
}
|
|
121
122
|
static find(klass, namespace = Constants_1.DEFAULT_NAMESPACE) {
|
|
123
|
+
const registry = namespace === Constants_1.GLOBAL_NAMESPACE ? LookupRegistry_1.LookupRegistry : LookupRegistry_1.LookupRegistry.$(namespace);
|
|
124
|
+
let className = ClassRef.getClassName(klass);
|
|
125
|
+
let classRef = null;
|
|
122
126
|
if ((0, lodash_1.isString)(klass)) {
|
|
123
|
-
|
|
124
|
-
let classRef = null;
|
|
125
|
-
if (namespace === Constants_1.GLOBAL_NAMESPACE) {
|
|
126
|
-
classRef = LookupRegistry_1.LookupRegistry.find(Constants_1.METATYPE_CLASS_REF, (c) => c.className === name);
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
classRef = LookupRegistry_1.LookupRegistry.$(namespace).find(Constants_1.METATYPE_CLASS_REF, (c) => c.className === name);
|
|
130
|
-
}
|
|
131
|
-
return classRef;
|
|
127
|
+
classRef = registry.find(Constants_1.METATYPE_CLASS_REF, (c) => c.className === className);
|
|
132
128
|
}
|
|
133
129
|
else {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
classRef = LookupRegistry_1.LookupRegistry.find(Constants_1.METATYPE_CLASS_REF, (c) => c.getClass(true) === klass || (c.isPlaceholder() && c.className === klass.name));
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
classRef = LookupRegistry_1.LookupRegistry.$(namespace).find(Constants_1.METATYPE_CLASS_REF, (c) => c.getClass(true) === klass || (c.isPlaceholder() && c.className === klass.name));
|
|
140
|
-
}
|
|
141
|
-
return classRef;
|
|
130
|
+
classRef = registry.find(Constants_1.METATYPE_CLASS_REF, (c) => c.getClass(true) === klass ||
|
|
131
|
+
(c.isPlaceholder() && c.className === className));
|
|
142
132
|
}
|
|
133
|
+
return classRef;
|
|
143
134
|
}
|
|
144
135
|
/**
|
|
145
136
|
* get all class refs for some class name
|
|
@@ -165,7 +156,7 @@ class ClassRef extends AbstractRef_1.AbstractRef {
|
|
|
165
156
|
if ((0, lodash_1.isEmpty)(name)) {
|
|
166
157
|
let fn = null;
|
|
167
158
|
try {
|
|
168
|
-
|
|
159
|
+
fn = klass();
|
|
169
160
|
}
|
|
170
161
|
catch (e) {
|
|
171
162
|
}
|
|
@@ -186,11 +177,19 @@ class ClassRef extends AbstractRef_1.AbstractRef {
|
|
|
186
177
|
* @param namespace
|
|
187
178
|
* @param resolve
|
|
188
179
|
*/
|
|
189
|
-
static get(klass, namespace = Constants_1.GLOBAL_NAMESPACE,
|
|
180
|
+
static get(klass, namespace = Constants_1.GLOBAL_NAMESPACE, options) {
|
|
181
|
+
const resolve = (0, lodash_1.isBoolean)(options) ? options : (0, lodash_1.get)(options || {}, 'resolve', false);
|
|
190
182
|
if (resolve) {
|
|
191
183
|
klass = this.checkIfFunctionCallback(klass);
|
|
192
184
|
}
|
|
185
|
+
const checkNs = (0, lodash_1.isObjectLike)(options) ? (0, lodash_1.get)(options || {}, 'checkNamespace', false) : false;
|
|
193
186
|
const isAnonymous = (0, lodash_1.isFunction)(klass) && klass.name === 'anonymous';
|
|
187
|
+
if (checkNs) {
|
|
188
|
+
const ns = MetadataRegistry_1.MetadataRegistry.$().getByContextAndTarget(Constants_1.METATYPE_NAMESPACE, (0, lodash_1.isFunction)(klass) ? klass.name : klass);
|
|
189
|
+
if (ns.length > 0) {
|
|
190
|
+
namespace = (0, lodash_1.get)((0, lodash_1.first)(ns), 'attributes.' + Constants_1.METATYPE_NAMESPACE, namespace);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
194
193
|
let classRef = this.find(klass, namespace);
|
|
195
194
|
if (classRef) {
|
|
196
195
|
if (classRef.isPlaceholder && (0, lodash_1.isFunction)(klass) && !isAnonymous) {
|
package/lib/ClassRef.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/ClassRef.ts"],"names":[],"mappings":"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","file":"ClassRef.js","sourcesContent":["import {first, has, isEmpty, isFunction, isString, isUndefined, kebabCase, snakeCase} from 'lodash';\nimport {ClassUtils, NotYetImplementedError} from '@allgemein/base';\nimport {SchemaUtils} from './SchemaUtils';\nimport {\n __CLASS__,\n __NS__,\n C_PROP_NAME,\n DEFAULT_NAMESPACE,\n GLOBAL_NAMESPACE,\n METADATA_TYPE,\n METATYPE_CLASS_REF,\n METATYPE_ENTITY,\n METATYPE_PROPERTY,\n XS_ID_SEPARATOR\n} from './Constants';\nimport {LookupRegistry} from './LookupRegistry';\nimport {IClassRef} from '../api/IClassRef';\nimport {IEntityRef} from '../api/IEntityRef';\nimport {IPropertyRef} from '../api/IPropertyRef';\nimport {IBuildOptions} from '../api/IBuildOptions';\nimport {RegistryFactory} from './registry/RegistryFactory';\nimport {AbstractRef} from './AbstractRef';\n\n/**\n * Reflective reference to a class function\n *\n * There can exist multiple ClassRef depending of context for a single class function.\n * The context is defined by the lookup registry.\n * It can be also a placeholder, for a dummy or later loaded class.\n *\n * This is a default implementation for IClassRef\n *\n\n class can be in different namespaces\n */\nexport class ClassRef extends AbstractRef implements IClassRef {\n\n static __inc: number = 0;\n\n private readonly idx: number;\n\n /**\n * Original reference to the class function or the given class name as string\n */\n originalValue: string | Function;\n\n private _cacheEntity: IEntityRef;\n\n private _isPlaceholder: boolean = false;\n\n private _isAnonymous: boolean = false;\n\n extends: IClassRef[] = [];\n\n constructor(klass: string | Function, namespace: string = DEFAULT_NAMESPACE) {\n super(METATYPE_CLASS_REF, ClassRef.getClassName(klass), null, namespace);\n this._isAnonymous = isFunction(klass) && klass.name === 'anonymous';\n\n this.idx = ClassRef.__inc++;\n if (isString(klass)) {\n this.originalValue = klass;\n this._isPlaceholder = true;\n } else {\n this.originalValue = ClassUtils.getFunction(klass);\n }\n }\n\n\n isPlaceholder() {\n return this._isPlaceholder;\n }\n\n\n isAnonymous() {\n return this._isAnonymous;\n }\n\n getClassRefFor(object: string | Function | IClassRef, type: METADATA_TYPE): IClassRef {\n return ClassRef.get(<string | Function>object, this.namespace, type == METATYPE_PROPERTY);\n }\n\n static getClassName(k: any) {\n if (k[__CLASS__]) {\n return k[__CLASS__];\n }\n return ClassUtils.getClassName(k);\n }\n\n\n updateClass(cls: Function) {\n this.originalValue = ClassUtils.getFunction(cls);\n this._isPlaceholder = false;\n }\n\n\n get className() {\n return this.name;\n }\n\n get storingName() {\n let name = this.getOptions(C_PROP_NAME, this.className);\n return snakeCase(name);\n }\n\n set storingName(v: string) {\n this.setOption(C_PROP_NAME, v);\n }\n\n /**\n * Check if name is passed by options\n */\n hasName() {\n return this.hasOption(C_PROP_NAME);\n }\n\n /**\n * Return the namespace for/of this class\n */\n getNamespace() {\n return this.namespace;\n }\n\n /**\n * TODO implement\n *\n * @param namespace\n */\n switchNamespace(namespace: string) {\n // this.getRegistry().remove(METATYPE_CLASS_REF, (x: IClassRef) => x.getClass() === this.getClass());\n // this.namespace = namespace;\n // this.getRegistry().add(METATYPE_CLASS_REF, this);\n }\n\n isOf(instance: any): boolean {\n const name = ClassRef.getClassName(instance);\n // if(name)\n if (name && name === this.name) {\n return true;\n } else if (has(instance, __CLASS__) && instance[__CLASS__] === this.name) {\n return true;\n } else {\n return this.getPropertyRefs()\n .map(x => has(instance, x.name))\n .reduce((previousValue, currentValue) => previousValue && currentValue, true);\n }\n return false;\n }\n\n\n get machineName() {\n return snakeCase(this.className);\n }\n\n\n getClass(create: boolean = false): Function {\n if (isFunction(this.originalValue)) {\n return this.originalValue;\n } else if (isString(this.originalValue) && this.isPlaceholder) {\n if (create) {\n this.originalValue = SchemaUtils.clazz(this.originalValue);\n return this.originalValue;\n }\n }\n throw new NotYetImplementedError('getClass for ' + this.originalValue);\n }\n\n\n static find(klass: string | Function, namespace: string = DEFAULT_NAMESPACE): ClassRef {\n if (isString(klass)) {\n let name = ClassRef.getClassName(klass);\n let classRef = null;\n if (namespace === GLOBAL_NAMESPACE) {\n classRef = LookupRegistry.find<ClassRef>(METATYPE_CLASS_REF, (c: ClassRef) => c.className === name);\n } else {\n classRef = LookupRegistry.$(namespace).find<ClassRef>(METATYPE_CLASS_REF, (c: ClassRef) => c.className === name);\n }\n return classRef;\n } else {\n let classRef = null;\n if (namespace === GLOBAL_NAMESPACE) {\n classRef = LookupRegistry.find<ClassRef>(METATYPE_CLASS_REF,\n (c: ClassRef) => c.getClass(true) === klass || (c.isPlaceholder() && c.className === klass.name)\n );\n } else {\n classRef = LookupRegistry.$(namespace).find<ClassRef>(METATYPE_CLASS_REF,\n (c: ClassRef) => c.getClass(true) === klass || (c.isPlaceholder() && c.className === klass.name)\n );\n }\n return classRef;\n }\n }\n\n\n /**\n * get all class refs for some class name\n *\n * @param klass\n */\n static getAllByClassName(klass: any): IClassRef[] {\n let name = ClassRef.getClassName(klass);\n return LookupRegistry.filter<ClassRef>(METATYPE_CLASS_REF, (c: IClassRef) => c.name == name);\n }\n\n\n /**\n * filter function for classrefs\n *\n * @param klass\n */\n static filter(fn: (c: IClassRef) => boolean): IClassRef[] {\n return LookupRegistry.filter<IClassRef>(METATYPE_CLASS_REF, fn);\n }\n\n\n static checkIfFunctionCallback(klass: string | Function) {\n if (isFunction(klass)) {\n // maybe function which return type like () => type\n let name = ClassRef.getClassName(klass);\n\n if (isEmpty(name)) {\n let fn = null;\n try {\n //fn = klass();\n } catch (e) {\n\n }\n if (fn) {\n let name = ClassRef.getClassName(fn);\n if (!isEmpty(name)) {\n klass = fn;\n }\n }\n }\n }\n return klass;\n }\n\n\n /**\n * check if class reference already exists for given string or Function, if not create a new one\n *\n * @param klass\n * @param namespace\n * @param resolve\n */\n static get(klass: string | Function, namespace: string = GLOBAL_NAMESPACE, resolve: boolean = false): ClassRef {\n if (resolve) {\n klass = this.checkIfFunctionCallback(klass);\n }\n\n const isAnonymous = isFunction(klass) && klass.name === 'anonymous';\n\n let classRef = this.find(klass, namespace);\n if (classRef) {\n if (classRef.isPlaceholder && isFunction(klass) && !isAnonymous) {\n classRef.updateClass(klass);\n }\n return classRef;\n }\n\n if (namespace === GLOBAL_NAMESPACE) {\n namespace = DEFAULT_NAMESPACE;\n }\n return this.createRef(klass, namespace);\n }\n\n /**\n * Create a class ref.\n *\n * @param klass\n * @param namespace\n */\n static createRef(klass: Function | string, namespace: string = GLOBAL_NAMESPACE) {\n const classRef = new ClassRef(klass, namespace);\n if (isFunction(klass)) {\n const proto = SchemaUtils.getInherited(klass);\n if (proto) {\n // is extends\n // TODO how to handle cirlces\n const extendRef = ClassRef.get(proto, namespace);\n classRef.addExtend(extendRef);\n }\n }\n return classRef.getRegistry().add(METATYPE_CLASS_REF, classRef);\n }\n\n\n /**\n * return global class reference\n *\n * @param klass\n * @param resolve\n */\n static getGlobal(klass: string | Function, resolve: boolean = false): ClassRef {\n return this.get(klass, GLOBAL_NAMESPACE, resolve);\n }\n\n\n getRegistry() {\n return RegistryFactory.get(this.namespace);\n }\n\n\n getEntityRef(): IEntityRef {\n if (isUndefined(this._cacheEntity)) {\n this._cacheEntity = this.getRegistry().find(METATYPE_ENTITY, (x: IEntityRef) => x.getClassRef() === this);\n }\n return this._cacheEntity;\n }\n\n hasEntityRef() {\n return !!this.getEntityRef();\n }\n\n\n create<T>(addinfo: boolean = true): T {\n return this.new(addinfo);\n }\n\n\n new<T>(addinfo: boolean = true): T {\n let klass = this.getClass();\n let instance = Reflect.construct(klass, []);\n if (addinfo) {\n Reflect.defineProperty(instance, __NS__, {value: this.namespace, enumerable: true});\n Reflect.defineProperty(instance, __CLASS__, {value: this.className, enumerable: true});\n }\n return instance;\n }\n\n\n getPropertyRefs(): IPropertyRef[] {\n const inheritedProps = [].concat(...this.getExtends().map(x => x.getPropertyRefs()));\n const registeredProps = this.getRegistry().getPropertyRefs(this);\n inheritedProps.forEach((x: IPropertyRef) => {\n if (!registeredProps.find(z => x.name === z.name)) {\n registeredProps.push(x);\n }\n });\n return registeredProps;\n }\n\n\n getPropertyRef(name: string): IPropertyRef {\n let registeredProp = this.getRegistry().getPropertyRef(this, name);\n if (registeredProp) {\n return registeredProp;\n } else {\n for (const clsRef of this.getExtends()) {\n registeredProp = clsRef.getPropertyRef(name);\n if (registeredProp) {\n return registeredProp;\n }\n }\n }\n return null;\n }\n\n\n id() {\n return [this.namespace, this.className].map(x => kebabCase(x)).join(XS_ID_SEPARATOR);\n }\n\n\n build<T>(data: any, options: IBuildOptions = {}): T {\n return <T>SchemaUtils.transform(this, data, options);\n }\n\n /**\n * Return base inherited class for the underlying class\n * ```\n * class X exnteds Y { }\n * ```\n * Y would be returned.\n *\n */\n getExtend(): IClassRef {\n return !isEmpty(this.extends) ? first(this.extends) : null;\n }\n\n /**\n * Return all inherited classes for underlying class. Mostly added manually.\n *\n */\n getExtends(): IClassRef[] {\n return this.extends;\n }\n\n /**\n * Append extend class ref.\n * @param ref\n */\n addExtend(ref: IClassRef) {\n this.extends.push(ref);\n return ref;\n }\n\n\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/ClassRef.ts"],"names":[],"mappings":"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","file":"ClassRef.js","sourcesContent":["import {\n first,\n has,\n isEmpty,\n isFunction,\n isString,\n isUndefined,\n kebabCase,\n snakeCase,\n get,\n isBoolean,\n isObjectLike\n} from 'lodash';\nimport {ClassUtils, NotYetImplementedError} from '@allgemein/base';\nimport {SchemaUtils} from './SchemaUtils';\nimport {\n __CLASS__,\n __NS__,\n C_PROP_NAME,\n DEFAULT_NAMESPACE,\n GLOBAL_NAMESPACE,\n METADATA_TYPE,\n METATYPE_CLASS_REF,\n METATYPE_ENTITY, METATYPE_NAMESPACE,\n METATYPE_PROPERTY,\n XS_ID_SEPARATOR\n} from './Constants';\nimport {LookupRegistry} from './LookupRegistry';\nimport {IClassRef} from '../api/IClassRef';\nimport {IEntityRef} from '../api/IEntityRef';\nimport {IPropertyRef} from '../api/IPropertyRef';\nimport {IBuildOptions} from '../api/IBuildOptions';\nimport {RegistryFactory} from './registry/RegistryFactory';\nimport {AbstractRef} from './AbstractRef';\nimport {MetadataRegistry} from \"./registry/MetadataRegistry\";\n\n/**\n * Reflective reference to a class function\n *\n * There can exist multiple ClassRef depending of context for a single class function.\n * The context is defined by the lookup registry.\n * It can be also a placeholder, for a dummy or later loaded class.\n *\n * This is a default implementation for IClassRef\n *\n\n class can be in different namespaces\n */\nexport class ClassRef extends AbstractRef implements IClassRef {\n\n static __inc: number = 0;\n\n private readonly idx: number;\n\n /**\n * Original reference to the class function or the given class name as string\n */\n originalValue: string | Function;\n\n private _cacheEntity: IEntityRef;\n\n private _isPlaceholder: boolean = false;\n\n private _isAnonymous: boolean = false;\n\n extends: IClassRef[] = [];\n\n constructor(klass: string | Function, namespace: string = DEFAULT_NAMESPACE) {\n super(METATYPE_CLASS_REF, ClassRef.getClassName(klass), null, namespace);\n this._isAnonymous = isFunction(klass) && klass.name === 'anonymous';\n\n this.idx = ClassRef.__inc++;\n if (isString(klass)) {\n this.originalValue = klass;\n this._isPlaceholder = true;\n } else {\n this.originalValue = ClassUtils.getFunction(klass);\n }\n }\n\n\n isPlaceholder() {\n return this._isPlaceholder;\n }\n\n\n isAnonymous() {\n return this._isAnonymous;\n }\n\n getClassRefFor(object: string | Function | IClassRef, type: METADATA_TYPE): IClassRef {\n return ClassRef.get(<string | Function>object, this.namespace, type == METATYPE_PROPERTY);\n }\n\n static getClassName(k: any) {\n if (k[__CLASS__]) {\n return k[__CLASS__];\n }\n return ClassUtils.getClassName(k);\n }\n\n\n updateClass(cls: Function) {\n this.originalValue = ClassUtils.getFunction(cls);\n this._isPlaceholder = false;\n }\n\n\n get className() {\n return this.name;\n }\n\n get storingName() {\n let name = this.getOptions(C_PROP_NAME, this.className);\n return snakeCase(name);\n }\n\n set storingName(v: string) {\n this.setOption(C_PROP_NAME, v);\n }\n\n /**\n * Check if name is passed by options\n */\n hasName() {\n return this.hasOption(C_PROP_NAME);\n }\n\n /**\n * Return the namespace for/of this class\n */\n getNamespace() {\n return this.namespace;\n }\n\n /**\n * TODO implement\n *\n * @param namespace\n */\n switchNamespace(namespace: string) {\n // this.getRegistry().remove(METATYPE_CLASS_REF, (x: IClassRef) => x.getClass() === this.getClass());\n // this.namespace = namespace;\n // this.getRegistry().add(METATYPE_CLASS_REF, this);\n }\n\n isOf(instance: any): boolean {\n const name = ClassRef.getClassName(instance);\n // if(name)\n if (name && name === this.name) {\n return true;\n } else if (has(instance, __CLASS__) && instance[__CLASS__] === this.name) {\n return true;\n } else {\n return this.getPropertyRefs()\n .map(x => has(instance, x.name))\n .reduce((previousValue, currentValue) => previousValue && currentValue, true);\n }\n return false;\n }\n\n\n get machineName() {\n return snakeCase(this.className);\n }\n\n\n getClass(create: boolean = false): Function {\n if (isFunction(this.originalValue)) {\n return this.originalValue;\n } else if (isString(this.originalValue) && this.isPlaceholder) {\n if (create) {\n this.originalValue = SchemaUtils.clazz(this.originalValue);\n return this.originalValue;\n }\n }\n throw new NotYetImplementedError('getClass for ' + this.originalValue);\n }\n\n\n static find(klass: string | Function, namespace: string = DEFAULT_NAMESPACE): ClassRef {\n const registry = namespace === GLOBAL_NAMESPACE ? LookupRegistry : LookupRegistry.$(namespace);\n let className = ClassRef.getClassName(klass);\n let classRef = null;\n if (isString(klass)) {\n classRef = registry.find<ClassRef>(METATYPE_CLASS_REF,\n (c: ClassRef) => c.className === className\n );\n } else {\n classRef = registry.find<ClassRef>(METATYPE_CLASS_REF,\n (c: ClassRef) =>\n c.getClass(true) === klass ||\n (c.isPlaceholder() && c.className === className)\n );\n }\n return classRef;\n }\n\n\n /**\n * get all class refs for some class name\n *\n * @param klass\n */\n static getAllByClassName(klass: any): IClassRef[] {\n let name = ClassRef.getClassName(klass);\n return LookupRegistry.filter<ClassRef>(METATYPE_CLASS_REF, (c: IClassRef) => c.name == name);\n }\n\n\n /**\n * filter function for classrefs\n *\n * @param klass\n */\n static filter(fn: (c: IClassRef) => boolean): IClassRef[] {\n return LookupRegistry.filter<IClassRef>(METATYPE_CLASS_REF, fn);\n }\n\n\n static checkIfFunctionCallback(klass: string | Function) {\n if (isFunction(klass)) {\n // maybe function which return type like () => type\n let name = ClassRef.getClassName(klass);\n\n if (isEmpty(name)) {\n let fn = null;\n try {\n fn = klass();\n } catch (e) {\n }\n if (fn) {\n let name = ClassRef.getClassName(fn);\n if (!isEmpty(name)) {\n klass = fn;\n }\n }\n }\n }\n return klass;\n }\n\n\n /**\n * check if class reference already exists for given string or Function, if not create a new one\n *\n * @param klass\n * @param namespace\n * @param resolve\n */\n static get(klass: string | Function,\n namespace: string = GLOBAL_NAMESPACE,\n options?: boolean | { resolve?: boolean, checkNamespace?: boolean }): ClassRef {\n const resolve = isBoolean(options) ? options : get(options || {}, 'resolve', false);\n if (resolve) {\n klass = this.checkIfFunctionCallback(klass);\n }\n\n const checkNs = isObjectLike(options) ? get(options || {}, 'checkNamespace', false) : false;\n const isAnonymous = isFunction(klass) && klass.name === 'anonymous';\n\n if (checkNs) {\n const ns = MetadataRegistry.$().getByContextAndTarget(METATYPE_NAMESPACE, isFunction(klass) ? klass.name : klass);\n if (ns.length > 0) {\n namespace = get(first(ns), 'attributes.' + METATYPE_NAMESPACE, namespace);\n }\n }\n\n let classRef = this.find(klass, namespace);\n if (classRef) {\n if (classRef.isPlaceholder && isFunction(klass) && !isAnonymous) {\n classRef.updateClass(klass);\n }\n return classRef;\n }\n\n if (namespace === GLOBAL_NAMESPACE) {\n namespace = DEFAULT_NAMESPACE;\n }\n return this.createRef(klass, namespace);\n }\n\n /**\n * Create a class ref.\n *\n * @param klass\n * @param namespace\n */\n static createRef(klass: Function | string, namespace: string = GLOBAL_NAMESPACE) {\n const classRef = new ClassRef(klass, namespace);\n if (isFunction(klass)) {\n const proto = SchemaUtils.getInherited(klass);\n if (proto) {\n // is extends\n // TODO how to handle cirlces\n const extendRef = ClassRef.get(proto, namespace);\n classRef.addExtend(extendRef);\n }\n }\n return classRef.getRegistry().add(METATYPE_CLASS_REF, classRef);\n }\n\n\n /**\n * return global class reference\n *\n * @param klass\n * @param resolve\n */\n static getGlobal(klass: string | Function, resolve: boolean = false): ClassRef {\n return this.get(klass, GLOBAL_NAMESPACE, resolve);\n }\n\n\n getRegistry() {\n return RegistryFactory.get(this.namespace);\n }\n\n\n getEntityRef(): IEntityRef {\n if (isUndefined(this._cacheEntity)) {\n this._cacheEntity = this.getRegistry().find(METATYPE_ENTITY, (x: IEntityRef) => x.getClassRef() === this);\n }\n return this._cacheEntity;\n }\n\n hasEntityRef() {\n return !!this.getEntityRef();\n }\n\n\n create<T>(addinfo: boolean = true): T {\n return this.new(addinfo);\n }\n\n\n new<T>(addinfo: boolean = true): T {\n let klass = this.getClass();\n let instance = Reflect.construct(klass, []);\n if (addinfo) {\n Reflect.defineProperty(instance, __NS__, {value: this.namespace, enumerable: true});\n Reflect.defineProperty(instance, __CLASS__, {value: this.className, enumerable: true});\n }\n return instance;\n }\n\n\n getPropertyRefs(): IPropertyRef[] {\n const inheritedProps = [].concat(...this.getExtends().map(x => x.getPropertyRefs()));\n const registeredProps = this.getRegistry().getPropertyRefs(this);\n inheritedProps.forEach((x: IPropertyRef) => {\n if (!registeredProps.find(z => x.name === z.name)) {\n registeredProps.push(x);\n }\n });\n return registeredProps;\n }\n\n\n getPropertyRef(name: string): IPropertyRef {\n let registeredProp = this.getRegistry().getPropertyRef(this, name);\n if (registeredProp) {\n return registeredProp;\n } else {\n for (const clsRef of this.getExtends()) {\n registeredProp = clsRef.getPropertyRef(name);\n if (registeredProp) {\n return registeredProp;\n }\n }\n }\n return null;\n }\n\n\n id() {\n return [this.namespace, this.className].map(x => kebabCase(x)).join(XS_ID_SEPARATOR);\n }\n\n\n build<T>(data: any, options: IBuildOptions = {}): T {\n return <T>SchemaUtils.transform(this, data, options);\n }\n\n /**\n * Return base inherited class for the underlying class\n * ```\n * class X exnteds Y { }\n * ```\n * Y would be returned.\n *\n */\n getExtend(): IClassRef {\n return !isEmpty(this.extends) ? first(this.extends) : null;\n }\n\n /**\n * Return all inherited classes for underlying class. Mostly added manually.\n *\n */\n getExtends(): IClassRef[] {\n return this.extends;\n }\n\n /**\n * Append extend class ref.\n * @param ref\n */\n addExtend(ref: IClassRef) {\n this.extends.push(ref);\n return ref;\n }\n\n\n}\n"],"sourceRoot":".."}
|
package/lib/Constants.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export declare const METATYPE_NAMESPACE = "namespace";
|
|
|
13
13
|
export declare const METATYPE_CLASS_REF = "class_ref";
|
|
14
14
|
export declare const METATYPE_PROPERTY = "property";
|
|
15
15
|
export declare const METATYPE_EMBEDDABLE = "object";
|
|
16
|
-
export declare type METADATA_TYPE = 'schema' | 'object' | 'entity' | 'property' | 'class_ref';
|
|
16
|
+
export declare type METADATA_TYPE = 'schema' | 'object' | 'entity' | 'property' | 'class_ref' | 'namespace';
|
|
17
17
|
export declare const BINDING_SCHEMA_ENTITY = "schema_entity";
|
|
18
18
|
export declare const BINDING_SCHEMA_CLASS_REF = "schema_class_ref";
|
|
19
19
|
export declare type METADATA_AND_BIND_TYPE = METADATA_TYPE | 'schema_entity' | 'entity_property' | 'property_entity' | 'schema_class_ref';
|
|
@@ -50,3 +50,8 @@ export interface IMinMax {
|
|
|
50
50
|
max: number;
|
|
51
51
|
}
|
|
52
52
|
export declare const DEFAULT_KEY_TO_SKIP: string[];
|
|
53
|
+
/**
|
|
54
|
+
* Entity option signals that entity is generate by an other
|
|
55
|
+
*/
|
|
56
|
+
export declare const K_ENTITY_BUILT = "_built_";
|
|
57
|
+
export declare const DEFINED_PROPS_TO_OPTS: string[];
|
package/lib/Constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
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_BOOLEAN = exports.T_OBJECT = exports.T_ARRAY = exports.T_STRING = exports.C_EVENT_DRAIN_FINISHED = 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;
|
|
3
|
+
exports.DEFINED_PROPS_TO_OPTS = exports.K_ENTITY_BUILT = 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_BOOLEAN = exports.T_OBJECT = exports.T_ARRAY = exports.T_STRING = exports.C_EVENT_DRAIN_FINISHED = 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
6
|
exports.C_IDENTIFIER = 'identifier';
|
|
@@ -68,5 +68,10 @@ exports.STATE_KEY = '$state';
|
|
|
68
68
|
exports.K_PATTERN_PROPERTY = 'patternProperty';
|
|
69
69
|
exports.K_TRIGGERED = Symbol('_triggered_');
|
|
70
70
|
exports.DEFAULT_KEY_TO_SKIP = [exports.C_TYPE, '$ref', 'target', 'propertyName', 'metaType', 'namespace', exports.C_NAME];
|
|
71
|
+
/**
|
|
72
|
+
* Entity option signals that entity is generate by an other
|
|
73
|
+
*/
|
|
74
|
+
exports.K_ENTITY_BUILT = '_built_';
|
|
75
|
+
exports.DEFINED_PROPS_TO_OPTS = [exports.K_ENTITY_BUILT];
|
|
71
76
|
|
|
72
77
|
//# sourceMappingURL=Constants.js.map
|
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;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;
|
|
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;AAW/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;AAC1B,QAAA,sBAAsB,GAAG,gBAAgB,CAAC;AAE1C,QAAA,QAAQ,GAAG,QAAQ,CAAC;AACpB,QAAA,OAAO,GAAG,OAAO,CAAC;AAClB,QAAA,QAAQ,GAAG,QAAQ,CAAC;AACpB,QAAA,SAAS,GAAG,SAAS,CAAC;AAEtB,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,cAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,cAAM,CAAC,CAAC;AAE/G;;GAEG;AACU,QAAA,cAAc,GAAG,SAAS,CAAC;AAE3B,QAAA,qBAAqB,GAAG,CAAC,sBAAc,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 | 'namespace';\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';\nexport const C_EVENT_DRAIN_FINISHED = 'drain_finished';\n\nexport const T_STRING = 'string';\nexport const T_ARRAY = 'array';\nexport const T_OBJECT = 'object';\nexport const T_BOOLEAN = 'boolean';\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 = [C_TYPE, '$ref', 'target', 'propertyName', 'metaType', 'namespace', C_NAME];\n\n/**\n * Entity option signals that entity is generate by an other\n */\nexport const K_ENTITY_BUILT = '_built_';\n\nexport const DEFINED_PROPS_TO_OPTS = [K_ENTITY_BUILT];\n"],"sourceRoot":".."}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DRAFT_07 = exports.JSON_SCHEMA_SERIALIZER = void 0;
|
|
3
|
+
exports.C_ONLY_DECORATED = exports.DRAFT_07 = exports.JSON_SCHEMA_SERIALIZER = void 0;
|
|
4
4
|
exports.JSON_SCHEMA_SERIALIZER = 'json-schema';
|
|
5
5
|
exports.DRAFT_07 = 'draft-07';
|
|
6
|
+
exports.C_ONLY_DECORATED = 'onlyDecorated';
|
|
6
7
|
|
|
7
8
|
//# sourceMappingURL=Constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/json-schema/Constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG,aAAa,CAAC;AACvC,QAAA,QAAQ,GAAG,UAAU,CAAC","file":"Constants.js","sourcesContent":["export const JSON_SCHEMA_SERIALIZER = 'json-schema';\nexport const DRAFT_07 = 'draft-07';\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/json-schema/Constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG,aAAa,CAAC;AACvC,QAAA,QAAQ,GAAG,UAAU,CAAC;AAEtB,QAAA,gBAAgB,GAAG,eAAe,CAAC","file":"Constants.js","sourcesContent":["export const JSON_SCHEMA_SERIALIZER = 'json-schema';\nexport const DRAFT_07 = 'draft-07';\n\nexport const C_ONLY_DECORATED = 'onlyDecorated';\n"],"sourceRoot":"../.."}
|
|
@@ -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';\nimport {IPropertyRef} from '../../api/IPropertyRef';\nimport {IClassRef} from \"../../api/IClassRef\";\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 /**\n * Passed method for type hint if necessary, else\n */\n typeHint?: (klass: Function | IClassRef, propertyName: string, instance: any, value: any) => string;\n\n /**\n * Default type hint on null or undefined\n */\n defaultTypeHint?: string;\n\n /**\n * Ignore unknown type\n */\n ignoreUnknownType?: boolean;\n\n /**\n * Serialize only decorated properties (default is true)\n */\n onlyDecorated?: 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';\nimport {IClassRef} from \"../../api/IClassRef\";\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 /**\n * Passed method for type hint if necessary, else\n */\n typeHint?: (klass: Function | IClassRef, propertyName: string, instance: any, value: any) => string;\n\n /**\n * Default type hint on null or undefined\n */\n defaultTypeHint?: string;\n\n /**\n * Ignore unknown type\n */\n ignoreUnknownType?: boolean;\n\n /**\n * Serialize only decorated properties (default is true)\n */\n onlyDecorated?: boolean;\n\n /**\n * Add $namespace to schema\n */\n appendNamespace?: boolean;\n}\n"],"sourceRoot":"../.."}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/json-schema/IJsonSchemaUnserializeOptions.ts"],"names":[],"mappings":"","file":"IJsonSchemaUnserializeOptions.js","sourcesContent":["import {METADATA_TYPE} from '../Constants';\nimport {IParseOptions} from './IParseOptions';\nimport {IUnserializeOptions} from '../serializer/IUnserializeOptions';\n\nexport interface IJsonSchemaUnserializeOptions extends IParseOptions, IUnserializeOptions {\n\n /**\n * Version of json schema\n */\n version?: 'draft-7' | string;\n\n /**\n * Key specific method for options extraction from json schema to entity or property options\n */\n collector?: { type: METADATA_TYPE, key?: string, fn: (key: string, data: any, options: IParseOptions) => any }[];\n\n /**\n * If set then a new class ref will be created even if an with same name already exists.\n */\n forceClassRefCreation?: boolean;\n\n /**\n * If set then a new entity ref will be created even if an with same name already exists.\n */\n forceEntityRefCreation?: boolean;\n\n /**\n * If set then a new property ref for class ref will be created even if an with same name already exists.\n */\n forcePropertyRefCreation?: boolean;\n\n\n /**\n * Is root object an entity.\n */\n rootAsEntity?: boolean;\n\n /**\n * Prepend class name on object which is a property.\n */\n prependClass?: boolean;\n\n /**\n * Current working directory\n */\n cwd?: string;\n}\n\n\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/json-schema/IJsonSchemaUnserializeOptions.ts"],"names":[],"mappings":"","file":"IJsonSchemaUnserializeOptions.js","sourcesContent":["import {METADATA_TYPE} from '../Constants';\nimport {IParseOptions} from './IParseOptions';\nimport {IUnserializeOptions} from '../serializer/IUnserializeOptions';\n\nexport interface IJsonSchemaUnserializeOptions extends IParseOptions, IUnserializeOptions {\n\n /**\n * Version of json schema\n */\n version?: 'draft-7' | string;\n\n /**\n * Key specific method for options extraction from json schema to entity or property options\n */\n collector?: { type: METADATA_TYPE, key?: string, fn: (key: string, data: any, options: IParseOptions) => any }[];\n\n /**\n * If set then a new class ref will be created even if an with same name already exists.\n */\n forceClassRefCreation?: boolean;\n\n /**\n * If set then a new entity ref will be created even if an with same name already exists.\n */\n forceEntityRefCreation?: boolean;\n\n /**\n * If set then a new property ref for class ref will be created even if an with same name already exists.\n */\n forcePropertyRefCreation?: boolean;\n\n\n /**\n * Is root object an entity.\n */\n rootAsEntity?: boolean;\n\n /**\n * Prepend class name on object which is a property.\n */\n prependClass?: boolean;\n\n /**\n * Current working directory\n */\n cwd?: string;\n\n /**\n * Ignore namespaces marked by $namespace in json schema data\n */\n skipNamespace?: boolean;\n}\n\n\n"],"sourceRoot":"../.."}
|
|
@@ -19,7 +19,7 @@ class JsonSchema7Serializer {
|
|
|
19
19
|
keysToSkip: Constants_1.DEFAULT_KEY_TO_SKIP,
|
|
20
20
|
ignoreUnknownType: false,
|
|
21
21
|
defaultTypeHint: 'string',
|
|
22
|
-
|
|
22
|
+
[Constants_2.C_ONLY_DECORATED]: false,
|
|
23
23
|
postProcess: (src, dst, serializer) => {
|
|
24
24
|
if (src && src.metaType === Constants_1.METATYPE_PROPERTY && (0, lodash_1.has)(dst, 'cardinality')) {
|
|
25
25
|
const cardinality = dst['cardinality'];
|
|
@@ -93,7 +93,10 @@ class JsonSchema7Serializer {
|
|
|
93
93
|
else if ((0, IClassRef_1.isClassRef)(klass) && klass.hasEntityRef()) {
|
|
94
94
|
root.$id = '#' + klass.getEntityRef().name;
|
|
95
95
|
}
|
|
96
|
-
if ((0, IEntityRef_1.isEntityRef)(klass) || (0, IClassRef_1.isClassRef)(klass)) {
|
|
96
|
+
if (((0, IEntityRef_1.isEntityRef)(klass) || (0, IClassRef_1.isClassRef)(klass))) {
|
|
97
|
+
if ((0, lodash_1.get)(this.options, 'appendNamespace', false)) {
|
|
98
|
+
(0, lodash_1.set)(root, '$' + Constants_1.METATYPE_NAMESPACE, klass.getRegistry().getLookupRegistry().getNamespace());
|
|
99
|
+
}
|
|
97
100
|
const data = klass.getOptions();
|
|
98
101
|
this.appendAdditionalOptions(root, data);
|
|
99
102
|
}
|
|
@@ -137,7 +140,6 @@ class JsonSchema7Serializer {
|
|
|
137
140
|
describeRef(klass) {
|
|
138
141
|
const clsRef = (0, IEntityRef_1.isEntityRef)(klass) ? klass.getClassRef() : klass;
|
|
139
142
|
const className = (0, IEntityRef_1.isEntityRef)(klass) ? klass.name : clsRef.name;
|
|
140
|
-
// schema = this.getOrCreateSchemaDefinitions(schema);
|
|
141
143
|
const root = this.getOrCreateRoot(className, klass);
|
|
142
144
|
if (!root) {
|
|
143
145
|
return null;
|
|
@@ -201,7 +203,7 @@ class JsonSchema7Serializer {
|
|
|
201
203
|
const _properties = Reflect.ownKeys(instance);
|
|
202
204
|
for (const p of _properties) {
|
|
203
205
|
if ((0, lodash_1.isString)(p)) {
|
|
204
|
-
if (!(0, lodash_1.get)(this.options,
|
|
206
|
+
if (!(0, lodash_1.get)(this.options, Constants_2.C_ONLY_DECORATED, false)) {
|
|
205
207
|
const result = this.describePropertyForFunction(klass, p, instance);
|
|
206
208
|
properties[p] = result;
|
|
207
209
|
}
|
|
@@ -220,7 +222,7 @@ class JsonSchema7Serializer {
|
|
|
220
222
|
const _properties = Reflect.ownKeys(instance);
|
|
221
223
|
for (const p of _properties) {
|
|
222
224
|
if ((0, lodash_1.isString)(p) && !(0, lodash_1.has)(properties, p)) {
|
|
223
|
-
if (!(0, lodash_1.get)(this.options,
|
|
225
|
+
if (!(0, lodash_1.get)(this.options, Constants_2.C_ONLY_DECORATED, false)) {
|
|
224
226
|
const result = this.describePropertyForFunction(klass, p, instance);
|
|
225
227
|
properties[p] = result;
|
|
226
228
|
}
|
|
@@ -252,6 +254,7 @@ class JsonSchema7Serializer {
|
|
|
252
254
|
else {
|
|
253
255
|
if (typeHint === Constants_1.T_OBJECT) {
|
|
254
256
|
if (reflectMetadataType && reflectMetadataType !== Constants_1.T_OBJECT) {
|
|
257
|
+
//
|
|
255
258
|
typeHint = reflectMetadataType;
|
|
256
259
|
}
|
|
257
260
|
else {
|
|
@@ -263,11 +266,16 @@ class JsonSchema7Serializer {
|
|
|
263
266
|
}
|
|
264
267
|
else {
|
|
265
268
|
typeHint = (_a = Reflect.getPrototypeOf(value)) === null || _a === void 0 ? void 0 : _a.constructor;
|
|
266
|
-
if (typeHint
|
|
267
|
-
typeHint
|
|
269
|
+
if (typeHint && typeHint.name) {
|
|
270
|
+
if (typeHint.name === Object.name) {
|
|
271
|
+
typeHint = Constants_1.T_OBJECT;
|
|
272
|
+
}
|
|
273
|
+
else if (typeHint.name === Array.name) {
|
|
274
|
+
typeHint = Constants_1.T_ARRAY;
|
|
275
|
+
}
|
|
268
276
|
}
|
|
269
|
-
else
|
|
270
|
-
typeHint =
|
|
277
|
+
else {
|
|
278
|
+
typeHint = this.getDefaultTypeHint();
|
|
271
279
|
}
|
|
272
280
|
}
|
|
273
281
|
}
|