@allgemein/schema-api 1.5.4 → 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.
@@ -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
  }
@@ -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('name');
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
 
@@ -1 +1 @@
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 {DEFAULT_NAMESPACE, METADATA_TYPE, METATYPE_PROPERTY, METATYPE_SCHEMA,} 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('name');\n if (!name) {\n name = snakeCase(this.name);\n }\n\n return name;\n }\n\n\n abstract id(): string;\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":".."}
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":".."}
@@ -2,6 +2,7 @@ export declare const DEFAULT_NAMESPACE = "default";
2
2
  export declare const GLOBAL_NAMESPACE = "__global__";
3
3
  export declare const C_IDENTIFIER = "identifier";
4
4
  export declare const C_TYPE = "type";
5
+ export declare const C_NAME = "name";
5
6
  export declare const C_APPENDED = "appended";
6
7
  export declare const C_CARDINALITY = "cardinality";
7
8
  export declare const XS_DEFAULT_CLASSES = "default_class_ref";
package/lib/Constants.js CHANGED
@@ -1,10 +1,11 @@
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.C_CARDINALITY = exports.C_APPENDED = exports.C_TYPE = exports.C_IDENTIFIER = 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
6
  exports.C_IDENTIFIER = 'identifier';
7
7
  exports.C_TYPE = 'type';
8
+ exports.C_NAME = 'name';
8
9
  exports.C_APPENDED = 'appended';
9
10
  exports.C_CARDINALITY = 'cardinality';
10
11
  exports.XS_DEFAULT_CLASSES = 'default_class_ref';
@@ -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,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_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
+ {"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":".."}
@@ -39,6 +39,27 @@ export declare class DefaultPropertyRef extends AbstractRef implements IProperty
39
39
  * Returns info if property parameter results are in classspace
40
40
  */
41
41
  isReference(): boolean;
42
+ /**
43
+ * Check if property is a to an other object referring property.
44
+ *
45
+ * Note:
46
+ * types defined as string, must match the following conditions to be interpreted as reference to an other object:
47
+ * - not contain any upper case
48
+ * - not a defined supported type
49
+ *
50
+ * @private
51
+ */
42
52
  private checkReference;
53
+ /**
54
+ * Check type given as string if it is an object type.
55
+ *
56
+ * Note:
57
+ * types defined as string, must match the following conditions to be interpreted as reference to an other object:
58
+ * - not contain any upper case
59
+ * - not a defined supported type
60
+ *
61
+ * @private
62
+ */
63
+ isReferencingType(type: string): boolean;
43
64
  getClassRefFor(object: string | Function | IClassRef, type: METADATA_TYPE): IClassRef;
44
65
  }
@@ -152,6 +152,16 @@ class DefaultPropertyRef extends AbstractRef_1.AbstractRef {
152
152
  this.checkReference();
153
153
  return this.reference;
154
154
  }
155
+ /**
156
+ * Check if property is a to an other object referring property.
157
+ *
158
+ * Note:
159
+ * types defined as string, must match the following conditions to be interpreted as reference to an other object:
160
+ * - not contain any upper case
161
+ * - not a defined supported type
162
+ *
163
+ * @private
164
+ */
155
165
  checkReference() {
156
166
  if ((0, lodash_1.isUndefined)(this.reference)) {
157
167
  this.reference = false;
@@ -160,8 +170,7 @@ class DefaultPropertyRef extends AbstractRef_1.AbstractRef {
160
170
  this.targetRef = (0, IEntityRef_1.isEntityRef)(type) ? type.getClassRef() : type;
161
171
  this.reference = true;
162
172
  }
163
- else if ((0, lodash_1.isFunction)(type) ||
164
- ((0, lodash_1.isString)(type) && !Constants_1.JS_DATA_TYPES.find(t => (new RegExp('^' + t + ':?')).test(type.toLowerCase())))) {
173
+ else if ((0, lodash_1.isFunction)(type) || this.isReferencingType(type)) {
165
174
  // try get existing class
166
175
  const exists = ClassRef_1.ClassRef.get(type, this.getClassRef().getNamespace());
167
176
  if (exists) {
@@ -172,6 +181,21 @@ class DefaultPropertyRef extends AbstractRef_1.AbstractRef {
172
181
  }
173
182
  return this.reference;
174
183
  }
184
+ /**
185
+ * Check type given as string if it is an object type.
186
+ *
187
+ * Note:
188
+ * types defined as string, must match the following conditions to be interpreted as reference to an other object:
189
+ * - not contain any upper case
190
+ * - not a defined supported type
191
+ *
192
+ * @private
193
+ */
194
+ isReferencingType(type) {
195
+ return ((0, lodash_1.isString)(type) &&
196
+ (type.toLocaleLowerCase() !== type
197
+ && !this.getSupportedDataTypes().find(t => (new RegExp('^' + t + ':?')).test(type.toLowerCase()))));
198
+ }
175
199
  getClassRefFor(object, type) {
176
200
  return this.getRegistry().getClassRefFor(object, this.metaType);
177
201
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/registry/DefaultPropertyRef.ts"],"names":[],"mappings":"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","file":"DefaultPropertyRef.js","sourcesContent":["import {get, has, isArray, isBoolean, isFunction, isNumber, isObjectLike, isString, isUndefined} from 'lodash';\n\nimport {IPropertyRef} from '../../api/IPropertyRef';\nimport {AbstractRef} from '../AbstractRef';\nimport {IBuildOptions} from '../../api/IBuildOptions';\nimport {IClassRef, isClassRef} from '../../api/IClassRef';\nimport {\n C_APPENDED,\n C_CARDINALITY,\n C_IDENTIFIER,\n C_TYPE,\n DEFAULT_NAMESPACE,\n IMinMax,\n JS_DATA_TYPES,\n K_PATTERN_PROPERTY,\n METADATA_TYPE,\n METATYPE_PROPERTY,\n T_ARRAY,\n T_OBJECT,\n T_STRING,\n XS_ID_SEPARATOR\n} from '../Constants';\nimport {IPropertyOptions} from '../options/IPropertyOptions';\nimport {ClassRef} from '../ClassRef';\nimport {NotYetImplementedError} from '@allgemein/base';\nimport {AnnotationsHelper} from '../AnnotationsHelper';\nimport {ILookupRegistry} from '../../api/ILookupRegistry';\nimport {RegistryFactory} from './RegistryFactory';\nimport {IEntityRef, isEntityRef} from '../../api/IEntityRef';\n\n\nexport class DefaultPropertyRef extends AbstractRef implements IPropertyRef {\n\n cardinality: IMinMax | number = 1;\n\n reference: boolean = undefined;\n\n targetRef: IClassRef;\n\n constructor(options: IPropertyOptions = {}) {\n super(METATYPE_PROPERTY, options.propertyName, options.target, options.namespace ? options.namespace : DEFAULT_NAMESPACE);\n AnnotationsHelper.merge(this.object, options, this.name);\n if (options.type === T_ARRAY) {\n // if array reset\n options.type = T_OBJECT;\n options.cardinality = 0;\n options.array = true;\n }\n this.setOptions(options);\n this.cardinality = has(options, C_CARDINALITY) ? options.cardinality : 1;\n }\n\n\n getRegistry(): ILookupRegistry {\n return RegistryFactory.get(this.namespace);\n }\n\n /**\n * TODO\n */\n convert(data: any, options?: IBuildOptions): any {\n const sourceType = this.getType();\n if (!sourceType || !isString(sourceType)) {\n return data;\n }\n\n const jsType = sourceType.toLowerCase();\n const [baseType, variant] = jsType.split(':');\n\n switch (baseType) {\n case 'datetime':\n case 'timestamp':\n case 'date':\n return new Date(data);\n\n case 'time':\n case 'text':\n case T_STRING:\n if (isString(data)) {\n return data;\n } else if (isArray(data) && data.length === 1) {\n return data[0];\n } else if (data) {\n return JSON.stringify(data);\n } else {\n return null;\n }\n break;\n\n case 'boolean':\n if (isBoolean(data)) {\n return data;\n } else if (isNumber(data)) {\n return data > 0;\n } else if (isString(data)) {\n if (data.toLowerCase() === 'true' || data.toLowerCase() === '1') {\n return true;\n }\n return false;\n }\n break;\n\n case 'double':\n case 'number':\n if (isString(data)) {\n if (/^\\d+\\.|\\,\\d+$/.test(data)) {\n return parseFloat(data.replace(',', '.'));\n } else if (/^\\d+$/.test(data)) {\n return parseInt(data, 0);\n } else {\n }\n } else if (isNumber(data)) {\n return data;\n } else if (isBoolean(data)) {\n return data ? 1 : 0;\n } else {\n // Pass to exception\n }\n break;\n\n case 'byte':\n case 'json':\n case T_OBJECT:\n case T_ARRAY:\n return data;\n }\n\n throw new NotYetImplementedError('value \"' + data + '\" of type ' + (typeof data) + ' column type=' + jsType);\n }\n\n\n get(instance: any): any {\n return get(instance, this.name, null);\n }\n\n\n getTargetRef(): IClassRef {\n this.checkReference();\n return this.targetRef;\n }\n\n getType(): string {\n return this.getOptions(C_TYPE);\n }\n\n isAppended(): boolean {\n return this.getOptions(C_APPENDED, false);\n }\n\n\n /**\n * TODO\n */\n id(): string {\n return [this.getClassRef().id(), this.name].join(XS_ID_SEPARATOR);\n }\n\n /**\n * check if property parameter is an array\n */\n isCollection(): boolean {\n if (isObjectLike(this.cardinality) &&\n (<IMinMax>this.cardinality).min >= 0 &&\n (<IMinMax>this.cardinality).max >= 0) {\n return true;\n }\n return this.cardinality !== 1;\n }\n\n /**\n * Return if is identifier\n */\n isIdentifier(): boolean {\n return this.getOptions(C_IDENTIFIER, false);\n }\n\n /**\n * Return if is a pattern property\n */\n isPattern(): boolean {\n return this.getOptions(K_PATTERN_PROPERTY, false);\n }\n\n /**\n * Returns info if property parameter results are in classspace\n */\n isReference(): boolean {\n this.checkReference();\n return this.reference;\n }\n\n private checkReference() {\n if (isUndefined(this.reference)) {\n this.reference = false;\n const type = this.getType();\n if (!isString(type) && (isClassRef(type) || isEntityRef(type))) {\n this.targetRef = isEntityRef(type) ? (type as IEntityRef).getClassRef() : type;\n this.reference = true;\n } else if (isFunction(type) ||\n (isString(type) && !JS_DATA_TYPES.find(t => (new RegExp('^' + t + ':?')).test((<string>type).toLowerCase())))) {\n // try get existing class\n const exists = ClassRef.get(type, this.getClassRef().getNamespace());\n if (exists) {\n this.targetRef = exists;\n this.reference = true;\n }\n }\n }\n return this.reference;\n }\n\n getClassRefFor(object: string | Function | IClassRef, type: METADATA_TYPE): IClassRef {\n return this.getRegistry().getClassRefFor(object, this.metaType);\n }\n\n\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../../src/lib/registry/DefaultPropertyRef.ts"],"names":[],"mappings":"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","file":"DefaultPropertyRef.js","sourcesContent":["import {get, has, isArray, isBoolean, isFunction, isNumber, isObjectLike, isString, isUndefined} from 'lodash';\n\nimport {IPropertyRef} from '../../api/IPropertyRef';\nimport {AbstractRef} from '../AbstractRef';\nimport {IBuildOptions} from '../../api/IBuildOptions';\nimport {IClassRef, isClassRef} from '../../api/IClassRef';\nimport {\n C_APPENDED,\n C_CARDINALITY,\n C_IDENTIFIER,\n C_TYPE,\n DEFAULT_NAMESPACE,\n IMinMax,\n K_PATTERN_PROPERTY,\n METADATA_TYPE,\n METATYPE_PROPERTY,\n T_ARRAY,\n T_OBJECT,\n T_STRING,\n XS_ID_SEPARATOR\n} from '../Constants';\nimport {IPropertyOptions} from '../options/IPropertyOptions';\nimport {ClassRef} from '../ClassRef';\nimport {NotYetImplementedError} from '@allgemein/base';\nimport {AnnotationsHelper} from '../AnnotationsHelper';\nimport {ILookupRegistry} from '../../api/ILookupRegistry';\nimport {RegistryFactory} from './RegistryFactory';\nimport {IEntityRef, isEntityRef} from '../../api/IEntityRef';\n\n\nexport class DefaultPropertyRef extends AbstractRef implements IPropertyRef {\n\n cardinality: IMinMax | number = 1;\n\n reference: boolean = undefined;\n\n targetRef: IClassRef;\n\n constructor(options: IPropertyOptions = {}) {\n super(METATYPE_PROPERTY, options.propertyName, options.target, options.namespace ? options.namespace : DEFAULT_NAMESPACE);\n AnnotationsHelper.merge(this.object, options, this.name);\n if (options.type === T_ARRAY) {\n // if array reset\n options.type = T_OBJECT;\n options.cardinality = 0;\n options.array = true;\n }\n this.setOptions(options);\n this.cardinality = has(options, C_CARDINALITY) ? options.cardinality : 1;\n }\n\n\n getRegistry(): ILookupRegistry {\n return RegistryFactory.get(this.namespace);\n }\n\n /**\n * TODO\n */\n convert(data: any, options?: IBuildOptions): any {\n const sourceType = this.getType();\n if (!sourceType || !isString(sourceType)) {\n return data;\n }\n\n const jsType = sourceType.toLowerCase();\n const [baseType, variant] = jsType.split(':');\n\n switch (baseType) {\n case 'datetime':\n case 'timestamp':\n case 'date':\n return new Date(data);\n\n case 'time':\n case 'text':\n case T_STRING:\n if (isString(data)) {\n return data;\n } else if (isArray(data) && data.length === 1) {\n return data[0];\n } else if (data) {\n return JSON.stringify(data);\n } else {\n return null;\n }\n break;\n\n case 'boolean':\n if (isBoolean(data)) {\n return data;\n } else if (isNumber(data)) {\n return data > 0;\n } else if (isString(data)) {\n if (data.toLowerCase() === 'true' || data.toLowerCase() === '1') {\n return true;\n }\n return false;\n }\n break;\n\n case 'double':\n case 'number':\n if (isString(data)) {\n if (/^\\d+\\.|\\,\\d+$/.test(data)) {\n return parseFloat(data.replace(',', '.'));\n } else if (/^\\d+$/.test(data)) {\n return parseInt(data, 0);\n } else {\n }\n } else if (isNumber(data)) {\n return data;\n } else if (isBoolean(data)) {\n return data ? 1 : 0;\n } else {\n // Pass to exception\n }\n break;\n\n case 'byte':\n case 'json':\n case T_OBJECT:\n case T_ARRAY:\n return data;\n }\n\n throw new NotYetImplementedError('value \"' + data + '\" of type ' + (typeof data) + ' column type=' + jsType);\n }\n\n\n get(instance: any): any {\n return get(instance, this.name, null);\n }\n\n\n getTargetRef(): IClassRef {\n this.checkReference();\n return this.targetRef;\n }\n\n getType(): string {\n return this.getOptions(C_TYPE);\n }\n\n isAppended(): boolean {\n return this.getOptions(C_APPENDED, false);\n }\n\n\n /**\n * TODO\n */\n id(): string {\n return [this.getClassRef().id(), this.name].join(XS_ID_SEPARATOR);\n }\n\n /**\n * check if property parameter is an array\n */\n isCollection(): boolean {\n if (isObjectLike(this.cardinality) &&\n (<IMinMax>this.cardinality).min >= 0 &&\n (<IMinMax>this.cardinality).max >= 0) {\n return true;\n }\n return this.cardinality !== 1;\n }\n\n /**\n * Return if is identifier\n */\n isIdentifier(): boolean {\n return this.getOptions(C_IDENTIFIER, false);\n }\n\n /**\n * Return if is a pattern property\n */\n isPattern(): boolean {\n return this.getOptions(K_PATTERN_PROPERTY, false);\n }\n\n /**\n * Returns info if property parameter results are in classspace\n */\n isReference(): boolean {\n this.checkReference();\n return this.reference;\n }\n\n\n /**\n * Check if property is a to an other object referring property.\n *\n * Note:\n * types defined as string, must match the following conditions to be interpreted as reference to an other object:\n * - not contain any upper case\n * - not a defined supported type\n *\n * @private\n */\n private checkReference() {\n if (isUndefined(this.reference)) {\n this.reference = false;\n const type = this.getType();\n if (!isString(type) && (isClassRef(type) || isEntityRef(type))) {\n this.targetRef = isEntityRef(type) ? (type as IEntityRef).getClassRef() : type;\n this.reference = true;\n } else if (isFunction(type) || this.isReferencingType(type)) {\n // try get existing class\n const exists = ClassRef.get(type, this.getClassRef().getNamespace());\n if (exists) {\n this.targetRef = exists;\n this.reference = true;\n }\n }\n }\n return this.reference;\n }\n\n\n /**\n * Check type given as string if it is an object type.\n *\n * Note:\n * types defined as string, must match the following conditions to be interpreted as reference to an other object:\n * - not contain any upper case\n * - not a defined supported type\n *\n * @private\n */\n isReferencingType(type: string) {\n return (isString(type) &&\n (type.toLocaleLowerCase() !== type\n && !this.getSupportedDataTypes().find(t => (new RegExp('^' + t + ':?')).test((<string>type).toLowerCase())))\n )\n }\n\n\n getClassRefFor(object: string | Function | IClassRef, type: METADATA_TYPE): IClassRef {\n return this.getRegistry().getClassRefFor(object, this.metaType);\n }\n\n\n}\n"],"sourceRoot":"../.."}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allgemein/schema-api",
3
- "version": "1.5.4",
3
+ "version": "1.5.5",
4
4
  "description": "Library for schema api",
5
5
  "main": "index.js",
6
6
  "private": false,