@allgemein/schema-api 1.4.5 → 1.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/ILookupRegistry.d.ts +1 -0
- package/api/ILookupRegistry.js +4 -4
- package/api/ILookupRegistry.js.map +1 -1
- package/decorators/Property.js +6 -6
- package/decorators/Property.js.map +1 -1
- package/decorators/PropertyOf.js +1 -1
- package/decorators/PropertyOf.js.map +1 -1
- package/decorators/validate/Hostname.js +3 -3
- package/decorators/validate/Hostname.js.map +1 -1
- package/decorators/validate/Ip4.js +3 -3
- package/decorators/validate/Ip4.js.map +1 -1
- package/decorators/validate/Ip6.js +3 -3
- package/decorators/validate/Ip6.js.map +1 -1
- package/decorators/validate/IsEmail.js +2 -2
- package/decorators/validate/IsEmail.js.map +1 -1
- package/decorators/validate/IsNotEmpty.js +5 -5
- package/decorators/validate/IsNotEmpty.js.map +1 -1
- package/decorators/validate/MaxLength.js +3 -3
- package/decorators/validate/MaxLength.js.map +1 -1
- package/decorators/validate/MinLength.js +3 -3
- package/decorators/validate/MinLength.js.map +1 -1
- package/decorators/validate/Regex.js +4 -4
- package/decorators/validate/Regex.js.map +1 -1
- package/decorators/validate/Required.js +3 -3
- package/decorators/validate/Required.js.map +1 -1
- package/lib/AbstractRef.js +9 -9
- package/lib/AbstractRef.js.map +1 -1
- package/lib/AnnotationsHelper.js +13 -13
- package/lib/AnnotationsHelper.js.map +1 -1
- package/lib/ClassRef.js +18 -18
- package/lib/ClassRef.js.map +1 -1
- package/lib/Constants.d.ts +5 -1
- package/lib/Constants.js +14 -2
- package/lib/Constants.js.map +1 -1
- package/lib/DataContainer.js +9 -9
- package/lib/DataContainer.js.map +1 -1
- package/lib/LookupRegistry.js +13 -13
- package/lib/LookupRegistry.js.map +1 -1
- package/lib/SchemaRef.js +2 -2
- package/lib/SchemaRef.js.map +1 -1
- package/lib/SchemaUtils.js +11 -11
- package/lib/SchemaUtils.js.map +1 -1
- package/lib/json-schema/IJsonSchemaSerializeOptions.d.ts +5 -0
- package/lib/json-schema/IJsonSchemaSerializeOptions.js.map +1 -1
- package/lib/json-schema/JsonSchema.js +6 -6
- package/lib/json-schema/JsonSchema.js.map +1 -1
- package/lib/json-schema/JsonSchema7Serializer.d.ts +1 -0
- package/lib/json-schema/JsonSchema7Serializer.js +46 -33
- package/lib/json-schema/JsonSchema7Serializer.js.map +1 -1
- package/lib/json-schema/JsonSchema7Unserializer.js +50 -50
- package/lib/json-schema/JsonSchema7Unserializer.js.map +1 -1
- package/lib/options/IPropertyOptions.d.ts +4 -0
- package/lib/options/IPropertyOptions.js.map +1 -1
- package/lib/registry/AbstractRegistry.d.ts +7 -1
- package/lib/registry/AbstractRegistry.js +10 -2
- package/lib/registry/AbstractRegistry.js.map +1 -1
- package/lib/registry/DefaultEntityRef.js +1 -1
- package/lib/registry/DefaultEntityRef.js.map +1 -1
- package/lib/registry/DefaultNamespacedRegistry.d.ts +16 -1
- package/lib/registry/DefaultNamespacedRegistry.js +165 -91
- package/lib/registry/DefaultNamespacedRegistry.js.map +1 -1
- package/lib/registry/DefaultPropertyRef.js +26 -20
- package/lib/registry/DefaultPropertyRef.js.map +1 -1
- package/lib/registry/IRegistryOptions.d.ts +8 -0
- package/lib/registry/IRegistryOptions.js +4 -0
- package/lib/registry/IRegistryOptions.js.map +1 -0
- package/lib/registry/MetadataRegistry.d.ts +14 -0
- package/lib/registry/MetadataRegistry.js +32 -18
- package/lib/registry/MetadataRegistry.js.map +1 -1
- package/lib/registry/RegistryFactory.d.ts +2 -1
- package/lib/registry/RegistryFactory.js +10 -10
- package/lib/registry/RegistryFactory.js.map +1 -1
- package/lib/validation/DefaultValidator.js +19 -19
- package/lib/validation/DefaultValidator.js.map +1 -1
- package/lib/validation/Validator.js +2 -2
- package/lib/validation/Validator.js.map +1 -1
- package/package.json +17 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/registry/DefaultNamespacedRegistry.ts"],"names":[],"mappings":"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","file":"DefaultNamespacedRegistry.js","sourcesContent":["/**\n * Handler for metadata\n */\nimport {\n assign,\n clone,\n cloneDeep,\n defaults,\n get,\n isArray,\n isEmpty,\n isFunction,\n isObjectLike,\n isString,\n keys,\n merge,\n remove,\n snakeCase,\n uniq\n} from 'lodash';\n\nimport {\n C_EVENT_ADD,\n C_EVENT_REMOVE,\n C_EVENT_UPDATE,\n K_TRIGGERED,\n METADATA_TYPE,\n METATYPE_CLASS_REF,\n METATYPE_EMBEDDABLE,\n METATYPE_ENTITY,\n METATYPE_PROPERTY,\n METATYPE_SCHEMA\n} from './../Constants';\nimport {IPropertyOptions} from './../options/IPropertyOptions';\nimport {IEntityRef, isEntityRef} from '../../api/IEntityRef';\nimport {IClassRef, isClassRef} from '../../api/IClassRef';\nimport {IPropertyRef} from '../../api/IPropertyRef';\nimport {MetadataRegistry} from './MetadataRegistry';\nimport {DefaultPropertyRef} from './DefaultPropertyRef';\nimport {ClassRef} from '../ClassRef';\nimport {IEntityOptions} from '../options/IEntityOptions';\nimport {DefaultEntityRef} from './DefaultEntityRef';\nimport {hasClassPropertiesInDefinition, IJsonSchema7} from '../json-schema/JsonSchema7';\nimport {ISchemaOptions} from '../options/ISchemaOptions';\nimport {IObjectOptions} from '../options/IObjectOptions';\nimport {ClassUtils, NotSupportedError} from '@allgemein/base';\nimport {JsonSchema} from '../json-schema/JsonSchema';\nimport {ISchemaRef} from '../../api/ISchemaRef';\nimport {SchemaRef} from '../SchemaRef';\nimport {AbstractRegistry} from './AbstractRegistry';\nimport {IAbstractOptions} from '../options/IAbstractOptions';\n\n\n/**\n * Registry which handles by default class, schema, embeddalbes and properties, which are not handled by a specialized registry.\n *\n * This is a space for entities and their relations, which are grouped by a give \"namespace\" context.\n *\n * How entities are passed to the registry:\n *\n * 1. by annotations at startup (event from metadata registry)\n * - properties are appended first by annotation then entities follow\n * 2. by call for getEntityRefFor\n * 3. append during runtime by event fired through metadata registry\n * 4. append through reload method\n *\n */\nexport class DefaultNamespacedRegistry extends AbstractRegistry {\n\n /**\n * Initialize events for metadata changes on runtime\n */\n prepare() {\n // apply listener\n this.drainAlreadyAdded();\n MetadataRegistry.$().on(C_EVENT_ADD, this.onAdd.bind(this));\n MetadataRegistry.$().on(C_EVENT_REMOVE, this.onRemove.bind(this));\n MetadataRegistry.$().on(C_EVENT_UPDATE, this.onUpdate.bind(this));\n }\n\n drainAlreadyAdded() {\n const alreadyFired = MetadataRegistry.$().getMetadata().filter(x => {\n const v = Object.getOwnPropertyDescriptor(x, K_TRIGGERED);\n return v && v.value;\n }) as IAbstractOptions[];\n for (const event of alreadyFired) {\n try {\n this.onAdd(event.metaType as METADATA_TYPE, event);\n } catch (e) {\n }\n }\n }\n\n /**\n * react on dynamically added context\n *\n * @param context\n * @param entries\n */\n onAdd(context: METADATA_TYPE,\n options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions) {\n\n\n // check namespace, if not given use this as default\n if (options.namespace) {\n if (options.namespace !== this.namespace) {\n // skip not my namespace\n return;\n }\n }\n\n // const find = this.find(METATYPE_E, (c: IEntityRef) =>\n // c.getClassRef().getClass() === options.target\n // );\n\n\n if (context === METATYPE_PROPERTY) {\n // if (!!this.processing.find(x => x.target === options.target && x.propertyName === options.propertyName)) {\n // return;\n // }\n // this.processing.push(options);\n const sourceEntry = this.find(METATYPE_CLASS_REF, (ref: IClassRef) => ref.getClass() === options.target);\n if (sourceEntry) {\n const find = this.find(context, (c: IPropertyRef) =>\n c.getClassRef().getClass() === options.target &&\n c.name === options.propertyName\n );\n if (!find) {\n // update\n this.create(context, options);\n }\n }\n // remove(this.processing, x => x === options);\n } else if (context === METATYPE_ENTITY) {\n const find = this.find(context, (c: IEntityRef) =>\n c.getClassRef().getClass() === options.target\n );\n if (!find) {\n const entityRef = this.create(context, options) as IEntityRef;\n const properties = this.find(METATYPE_PROPERTY, (c: IPropertyRef) =>\n c.getClassRef().getClass() === options.target\n );\n if (isEmpty(properties)) {\n // create properties only when non exists\n this.createPropertiesForRef(entityRef.getClassRef());\n }\n }\n } else if (context === METATYPE_EMBEDDABLE) {\n const find = this.find(METATYPE_CLASS_REF, (c: IClassRef) =>\n c.getClass() === options.target\n ) as IClassRef;\n if (!find) {\n this.create(context, options);\n } else {\n const refOptions = find.getOptions();\n defaults(refOptions, options);\n }\n } else if (context === METATYPE_SCHEMA) {\n let find: ISchemaRef = this\n .find(context,\n (c: ISchemaRef) => c.name === (<ISchemaOptions>options).name\n );\n if (!find) {\n find = this.create(context, options);\n }\n\n if (options.target) {\n let entityRef: IEntityRef = this\n .find(METATYPE_ENTITY,\n (c: IEntityRef) => c.getClass() === options.target\n );\n\n if (find && entityRef) {\n this.addSchemaToEntityRef(find, entityRef);\n }\n }\n }\n }\n\n\n addSchemaToEntityRef(schemaRef: string | ISchemaRef, entityRef: IEntityRef, options: { override?: boolean, onlyDefault?: boolean } = {}) {\n const name = isString(schemaRef) ? schemaRef : schemaRef.name;\n this.onAdd(METATYPE_SCHEMA, {name: name, namespace: this.namespace});\n let entry = entityRef.getOptions('schema');\n if (entry) {\n if (isArray(entry)) {\n entry.push(name);\n } else {\n entry = [entry, name];\n }\n } else {\n entry = [name];\n }\n\n if (get(options, 'override', false)) {\n if (get(options, 'onlyDefault', false)) {\n remove(entry, x => x === 'default');\n } else {\n entry = [name];\n }\n }\n entityRef.setOption('schema', uniq(entry));\n }\n\n\n /**\n * react on dynamically removed context\n *\n * @param context\n * @param entries\n */\n onRemove(context: METADATA_TYPE, entries: (IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions)[]) {\n\n if (context === METATYPE_ENTITY || context === METATYPE_CLASS_REF) {\n const targets = entries.map(x => x.target);\n this.getLookupRegistry().remove('class_ref', (x: any) => targets.includes(x.target));\n this.getLookupRegistry().remove('entity', (x: any) => targets.includes(x.target));\n this.getLookupRegistry().remove('property', (x: any) => targets.includes(x.target));\n } else if (context === METATYPE_PROPERTY) {\n const targets = entries.map(x => [x.target, x.propertyName]);\n this.getLookupRegistry().remove(context, (x: any) => targets.includes([x.target, x.name]));\n } else if (context === METATYPE_SCHEMA) {\n // TODO remove schema ref\n // TODO remove schema options entries\n }\n }\n\n\n /**\n * react on dynamically update context\n *\n * @param context\n * @param entries\n */\n onUpdate() {\n }\n\n\n /**\n * Return all registered schema references\n *\n * @param ref\n * @return ISchemaRef[]\n */\n getSchemaRefs(filter?: (x: ISchemaRef) => boolean): SchemaRef[] {\n return this.filter(METATYPE_SCHEMA, filter);\n }\n\n /**\n * Return schema references for an given entity or class reference\n *\n * @param ref\n * @return ISchemaRef[]\n */\n getSchemaRefsFor(ref: string): SchemaRef;\n getSchemaRefsFor(ref: string | IEntityRef | IClassRef): SchemaRef | SchemaRef[] {\n let lookup: SchemaRef[] = [];\n if (isEntityRef(ref) || isClassRef(ref)) {\n const schemas = ref.getOptions('schema', []);\n for (const schema of schemas) {\n let schemaRef: SchemaRef = this.find(METATYPE_SCHEMA, (x: ISchemaRef) => x.name === schema);\n if (!schemaRef) {\n schemaRef = this.create(METATYPE_SCHEMA, {name: schema, target: ref.getClass()});\n }\n lookup.push(schemaRef);\n }\n lookup = this.getSchemaRefs((x: ISchemaRef) => schemas.includes(x.name));\n } else if (isString(ref)) {\n let schemaRef = this.find(METATYPE_SCHEMA, (x: ISchemaRef) => x.name === ref);\n if (!schemaRef) {\n schemaRef = this.create(METATYPE_SCHEMA, {name: ref});\n }\n return schemaRef as SchemaRef;\n } else {\n throw new NotSupportedError('passed value is not supported');\n }\n return lookup ? uniq(lookup) : null;\n }\n\n /**\n * TODO\n *\n * @param filter\n */\n getEntities(filter?: (x: IEntityRef) => boolean): IEntityRef[] {\n return this.getLookupRegistry().filter(METATYPE_ENTITY, filter);\n }\n\n /**\n * Can get get entity ref for function.\n *\n * @param fn\n */\n getEntityRefFor(fn: string | object | Function, skipNsCheck: boolean = true): DefaultEntityRef {\n let lookup = <string | Function>fn;\n if (!isFunction(fn) && !isString(fn) && isObjectLike(fn)) {\n lookup = ClassUtils.getFunction(fn as any);\n }\n let lookupFn = (x: IEntityRef) => x.getClassRef().getClass() === lookup;\n if (isString(fn)) {\n lookupFn = (x: IEntityRef) => x.getClassRef().name === lookup || x.name === lookup;\n }\n const entityRefExists = this.find<DefaultEntityRef>(METATYPE_ENTITY, lookupFn);\n if (entityRefExists) {\n return entityRefExists;\n }\n return this.create(METATYPE_ENTITY, {\n target: lookup,\n namespace: this.namespace,\n skipNsCheck: skipNsCheck\n });\n }\n\n\n /**\n * Returns property by name for a given class or entity ref\n *\n * @param filter\n */\n getPropertyRef(ref: IClassRef | IEntityRef, name: string): DefaultPropertyRef {\n return this.getPropertyRefs(ref).find(x => snakeCase(x.name) === snakeCase(name));\n }\n\n\n /**\n * Returns all properties for given class or entity ref\n *\n * @param ref\n */\n getPropertyRefs(ref: IClassRef | IEntityRef): DefaultPropertyRef[] {\n const clsRef: IClassRef = isEntityRef(ref) ? ref.getClassRef() : ref;\n // Return existing\n const clsRefExists = this.find(METATYPE_CLASS_REF, (x: IClassRef) => x === clsRef);\n let properties: DefaultPropertyRef[] = [];\n if (clsRefExists) {\n properties = this.filter(METATYPE_PROPERTY, (x: IPropertyRef) => x.getClassRef() === clsRefExists);\n } else {\n properties = this.createPropertiesForRef(clsRef);\n }\n return properties;\n }\n\n /**\n * Create properties for class or entity ref.\n */\n createPropertiesForRef(clsRef: IClassRef): DefaultPropertyRef[] {\n const cls = clsRef.getClass(true);\n const jsonSchema = JsonSchema.serialize(cls, {appendTarget: true}) as any;\n const propOptions: IPropertyOptions[] = [];\n const metaPropOptions = MetadataRegistry.$().getByContextAndTarget(METATYPE_PROPERTY, cls) as IPropertyOptions[];\n if (hasClassPropertiesInDefinition(clsRef.name, jsonSchema)) {\n const properties = (jsonSchema.definitions[clsRef.name] as IJsonSchema7).properties;\n for (const k of keys(properties)) {\n const property: IJsonSchema7 = properties[k] as IJsonSchema7;\n const opts: IPropertyOptions = {\n metaType: METATYPE_PROPERTY,\n namespace: clsRef.getNamespace(),\n type: property.$target ? property.$target : property.type,\n propertyName: k,\n target: cls\n };\n\n const propMetadata = remove(metaPropOptions, x => x.propertyName === k);\n if (!isEmpty(propMetadata)) {\n for (const p of propMetadata) {\n // clean namespace\n const copy = clone(p);\n delete copy.namespace;\n assign(opts, copy);\n }\n }\n propOptions.push(opts);\n }\n }\n\n const propertyOptions = propOptions.concat(metaPropOptions)\n // .filter(x => !clsRef.getRegistry().find(METATYPE_PROPERTY,\n // (z: IPropertyRef) => z.name === x.propertyName && z.getClassRef().getClass() === x.target)\n // )\n // .filter(x => !this.processing.find((z: IPropertyOptions) => z.propertyName === x.propertyName && z.target === x.target))\n .map(p => {\n // change namespace of properties namespace\n const copy = clone(p);\n copy.namespace = clsRef.getNamespace();\n copy.skipNsCheck = true;\n return copy;\n });\n\n\n return propertyOptions.map(opts => clsRef.getRegistry().create(METATYPE_PROPERTY, opts));\n }\n\n\n /**\n * Create default property reference\n *\n * @param options\n */\n createPropertyForOptions(options: IPropertyOptions): DefaultPropertyRef {\n if (keys(options).length === 0) {\n throw new Error('can\\'t create property for empty options');\n }\n options.namespace = this.namespace;\n const prop = new DefaultPropertyRef(options);\n return this.add(prop.metaType, prop);\n }\n\n\n /**\n * Create default entity reference\n *\n * @param options\n */\n createEntityForOptions(options: IEntityOptions): DefaultEntityRef {\n options.namespace = this.namespace;\n if (!options.name) {\n options.name = ClassRef.getClassName(options.target);\n }\n const entityRef = new DefaultEntityRef(options);\n const retRef = this.add(entityRef.metaType, entityRef);\n const metaSchemaOptionsForEntity = MetadataRegistry.$()\n .getByContextAndTarget(METATYPE_SCHEMA, entityRef.getClass()) as ISchemaOptions[];\n if (metaSchemaOptionsForEntity.length > 0) {\n for (const schemaOptions of metaSchemaOptionsForEntity) {\n this.addSchemaToEntityRef(schemaOptions.name, entityRef);\n }\n }\n return retRef;\n }\n\n /**\n * Create default entity reference\n *\n * @param options\n */\n createEmbeddableForOptions(options: IObjectOptions): IClassRef {\n // options.namespace = this.namespace;\n // if (!options.name) {\n // options.name = ClassRef.getClassName(options.target);\n // }\n options = defaults(options || {}, {});\n const classRef = this.getClassRefFor(options.target, METATYPE_CLASS_REF);\n classRef.setOptions(options);\n return classRef;\n }\n\n /**\n * Create default schema reference\n *\n * @param options\n */\n createSchemaForOptions(options: ISchemaOptions): SchemaRef {\n options.namespace = this.namespace;\n const schemaRef = new SchemaRef(options);\n return this.add(schemaRef.metaType, schemaRef);\n }\n\n /**\n * Return metadata collected in the MetadataRegistry through annotation or explizit attached data.\n *\n * @param context\n * @param target\n * @return IAbstractOptions\n */\n getMetadata(context: METADATA_TYPE, target: Function | string, propertyName?: string): IAbstractOptions {\n let metadataOptionList: IAbstractOptions[] =\n MetadataRegistry.$()\n .getByContextAndTarget(context, target, 'merge', propertyName) as IAbstractOptions[];\n\n let metadataOptions: IAbstractOptions = {};\n if (metadataOptionList.length > 1) {\n metadataOptions = merge(metadataOptions, ...metadataOptionList.map(x => cloneDeep(x)));\n } else if (metadataOptionList.length === 1) {\n metadataOptions = cloneDeep(metadataOptionList.shift());\n }\n\n if (propertyName) {\n // remove namespace for properties\n delete metadataOptions.namespace;\n }\n\n return metadataOptions;\n }\n\n\n getPropertyRefsFor(fn: string | object | Function): DefaultPropertyRef[] {\n const clsName = ClassRef.getClassName(fn);\n const clsRef = ClassRef.get(clsName, this.namespace);\n return this.getPropertyRefs(clsRef);\n }\n\n\n create<T>(context: string, options: IAbstractOptions): T {\n const skipNsCheck = get(options, 'skipNsCheck', false);\n delete options.skipNsCheck;\n const metadata = this.getMetadata(context as METADATA_TYPE, options.target, options.propertyName ? options.propertyName : null);\n if (metadata) {\n\n if (!skipNsCheck && metadata.namespace && metadata.namespace !== this.namespace) {\n if (context !== METATYPE_PROPERTY) {\n throw new NotSupportedError(\n 'namespace for ' + context + ' is ' + metadata.namespace +\n ' the namespace of this registry is ' + this.namespace\n );\n }\n }\n if (!isEmpty(metadata) && keys(metadata).length > 0) {\n merge(options, assign(metadata, {namespace: this.namespace}));\n }\n }\n options.metaType = context;\n switch (context as METADATA_TYPE) {\n case METATYPE_CLASS_REF:\n break;\n case METATYPE_EMBEDDABLE:\n return <any>this.createEmbeddableForOptions(options);\n case METATYPE_ENTITY:\n return <any>this.createEntityForOptions(options);\n case METATYPE_PROPERTY:\n return <any>this.createPropertyForOptions(options);\n case METATYPE_SCHEMA:\n return <any>this.createSchemaForOptions(options as ISchemaOptions);\n }\n\n return null;\n }\n\n /**\n * TODO\n */\n add<T>(context: string, entry: T): T {\n if (context === METATYPE_CLASS_REF) {\n return this.addClassRef(entry as any) as any;\n }\n return this.getLookupRegistry().add(context, entry);\n }\n\n /**\n * Create default entity reference\n *\n * @param options\n */\n addClassRef(ref: IClassRef): IClassRef {\n const addedClassRef = this.getLookupRegistry().add(METATYPE_CLASS_REF, ref);\n this.createPropertiesForRef(addedClassRef);\n return addedClassRef;\n }\n\n\n getClassRefFor(object: string | Function | IClassRef, type: METADATA_TYPE): IClassRef {\n let ref: IClassRef = null;\n if (isString(object)) {\n ref = this.find(METATYPE_CLASS_REF, (x: IClassRef) => x.name === object);\n } else if (isFunction(object)) {\n ref = this.find(METATYPE_CLASS_REF, (x: IClassRef) => x.getClass(true) === object);\n } else {\n ref = this.find(METATYPE_CLASS_REF, (x: IClassRef) => x === object);\n }\n if (!ref) {\n ref = ClassRef.get(<string | Function>object, this.namespace, type === METATYPE_PROPERTY);\n const metadata = this.getMetadata(METATYPE_EMBEDDABLE, <string | Function>object);\n if (!isEmpty(metadata) && keys(metadata).length > 0) {\n const refOptions = ref.getOptions();\n merge(refOptions, metadata);\n }\n // this.createPropertiesForRef(ref);\n }\n return ref;\n }\n\n reset() {\n super.reset();\n MetadataRegistry.$().removeListener(C_EVENT_ADD, this.onAdd.bind(this));\n MetadataRegistry.$().removeListener(C_EVENT_REMOVE, this.onRemove.bind(this));\n MetadataRegistry.$().removeListener(C_EVENT_UPDATE, this.onUpdate.bind(this));\n }\n\n\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/registry/DefaultNamespacedRegistry.ts"],"names":[],"mappings":"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","file":"DefaultNamespacedRegistry.js","sourcesContent":["/**\n * Handler for metadata\n */\nimport {\n assign,\n clone,\n cloneDeep,\n defaults,\n get,\n isArray,\n isEmpty,\n isFunction,\n isObjectLike,\n isString,\n keys,\n merge,\n remove,\n snakeCase,\n uniq\n} from 'lodash';\n\nimport {\n C_EVENT_ADD,\n C_EVENT_REMOVE,\n C_EVENT_UPDATE,\n DEFAULT_NAMESPACE,\n K_TRIGGERED,\n METADATA_TYPE,\n METATYPE_CLASS_REF,\n METATYPE_EMBEDDABLE,\n METATYPE_ENTITY,\n METATYPE_NAMESPACE,\n METATYPE_PROPERTY,\n METATYPE_SCHEMA\n} from './../Constants';\nimport {IPropertyOptions} from './../options/IPropertyOptions';\nimport {IEntityRef, isEntityRef} from '../../api/IEntityRef';\nimport {IClassRef, isClassRef} from '../../api/IClassRef';\nimport {IPropertyRef} from '../../api/IPropertyRef';\nimport {MetadataRegistry} from './MetadataRegistry';\nimport {DefaultPropertyRef} from './DefaultPropertyRef';\nimport {ClassRef} from '../ClassRef';\nimport {IEntityOptions} from '../options/IEntityOptions';\nimport {DefaultEntityRef} from './DefaultEntityRef';\nimport {hasClassPropertiesInDefinition, IJsonSchema7} from '../json-schema/JsonSchema7';\nimport {ISchemaOptions} from '../options/ISchemaOptions';\nimport {IObjectOptions} from '../options/IObjectOptions';\nimport {C_DEFAULT, ClassUtils, NotSupportedError} from '@allgemein/base';\nimport {JsonSchema} from '../json-schema/JsonSchema';\nimport {ISchemaRef} from '../../api/ISchemaRef';\nimport {SchemaRef} from '../SchemaRef';\nimport {AbstractRegistry} from './AbstractRegistry';\nimport {IAbstractOptions} from '../options/IAbstractOptions';\nimport {IRegistryOptions} from './IRegistryOptions';\n\n\n/**\n * Registry which handles by default class, schema, embeddalbes and properties, which are not handled by a specialized registry.\n *\n * This is a space for entities and their relations, which are grouped by a give \"namespace\" context.\n *\n * How entities are passed to the registry:\n *\n * 1. by annotations at startup (event from metadata registry)\n * - properties are appended first by annotation then entities follow\n * 2. by call for getEntityRefFor\n * 3. append during runtime by event fired through metadata registry\n * 4. append through reload method\n *\n */\nexport class DefaultNamespacedRegistry extends AbstractRegistry {\n\n\n constructor(namespace: string, options?: IRegistryOptions) {\n super(namespace, defaults(options || {}, <IRegistryOptions>{detectUnannotatedProperties: true}));\n }\n\n /**\n * Initialize events for metadata changes on runtime\n */\n prepare() {\n // apply listener\n this.drainAlreadyAdded();\n MetadataRegistry.$().on(C_EVENT_ADD, this.onMetadataAdd.bind(this));\n MetadataRegistry.$().on(C_EVENT_REMOVE, this.onMetadataRemove.bind(this));\n MetadataRegistry.$().on(C_EVENT_UPDATE, this.onMetadataUpdate.bind(this));\n }\n\n /**\n * Apply already added entries to the metadata registry can be added to this registry\n */\n drainAlreadyAdded() {\n const alreadyFired = MetadataRegistry.$().getMetadata().filter(x => {\n const v = Object.getOwnPropertyDescriptor(x, K_TRIGGERED);\n return v && v.value;\n }) as IAbstractOptions[];\n for (const event of alreadyFired) {\n try {\n this.onAdd(event.metaType as METADATA_TYPE, event);\n } catch (e) {\n }\n }\n }\n\n async onMetadataAdd(\n context: METADATA_TYPE,\n options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions) {\n await this.lock.acquire();\n this.onAdd(context, options);\n this.lock.release();\n }\n\n async onMetadataUpdate(\n context: METADATA_TYPE,\n options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions) {\n if (!this.validNamespace(options)) {\n return;\n }\n await this.lock.acquire();\n this.onUpdate(context, options);\n this.lock.release();\n }\n\n async onMetadataRemove(\n context: METADATA_TYPE,\n options: (IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions)[]) {\n if (!this.validNamespace(options)) {\n return;\n }\n await this.lock.acquire();\n this.onRemove(context, options);\n this.lock.release();\n }\n\n /**\n * Check if object has the correct namespace for this registry handle\n *\n * @param options\n */\n validNamespace(options: IAbstractOptions): boolean {\n if (options.namespace) {\n if (options.namespace !== this.namespace) {\n // skip not my namespace\n return false;\n }\n } else {\n // if namespace not present skipping\n if (options.metaType !== METATYPE_PROPERTY) {\n // only properties should be pass and check if entity already exists\n const namespace = MetadataRegistry.$().find(METATYPE_NAMESPACE, (x: IAbstractOptions) => x.target === options.target);\n if (namespace && namespace.attributes.namespace === this.namespace) {\n options.namespace = namespace.attributes.namespace;\n } else if (this.namespace !== DEFAULT_NAMESPACE) {\n // passing to default namespace if nothing\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * react on dynamically added context\n *\n * @param context\n * @param entries\n */\n onAdd(context: METADATA_TYPE,\n options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions) {\n\n if (!this.validNamespace(options)) {\n return;\n }\n\n if (context === METATYPE_PROPERTY) {\n const sourceEntry = this.find(METATYPE_CLASS_REF, (ref: IClassRef) => ref.getClass() === options.target);\n if (sourceEntry) {\n const find = this.find(context, (c: IPropertyRef) =>\n c.getClassRef().getClass() === options.target &&\n c.name === options.propertyName\n );\n if (!find) {\n // update\n this.create(context, options);\n }\n }\n } else if (context === METATYPE_ENTITY) {\n const find = this.find(context, (c: IEntityRef) => c.getClassRef().getClass() === options.target);\n if (!find) {\n const entityRef = this.create(context, options) as IEntityRef;\n const properties = this.find(METATYPE_PROPERTY, (c: IPropertyRef) =>\n c.getClassRef().getClass() === options.target\n );\n if (isEmpty(properties)) {\n // create properties only when non exists\n this.createPropertiesForRef(entityRef.getClassRef());\n }\n }\n } else if (context === METATYPE_EMBEDDABLE) {\n const find = this.find(METATYPE_CLASS_REF, (c: IClassRef) => c.getClass() === options.target) as IClassRef;\n if (!find) {\n this.create(context, options);\n } else {\n const refOptions = find.getOptions();\n defaults(refOptions, options);\n }\n } else if (context === METATYPE_SCHEMA) {\n let find: ISchemaRef = this.getOrCreateSchemaRefByName(options as ISchemaOptions);\n if (options.target) {\n let entityRef: IEntityRef = this.find(METATYPE_ENTITY, (c: IEntityRef) => c.getClass() === options.target);\n\n if (find && entityRef) {\n this.addSchemaToEntityRef(find, entityRef);\n }\n }\n }\n }\n\n getOrCreateSchemaRefByName(options: ISchemaOptions) {\n let find: ISchemaRef = this.find(METATYPE_SCHEMA, (c: ISchemaRef) => c.name === (<ISchemaOptions>options).name);\n if (!find) {\n find = this.createSchemaForOptions(options);\n }\n return find;\n }\n\n\n addSchemaToEntityRef(schemaRef: string | ISchemaRef, entityRef: IEntityRef, options: { override?: boolean, onlyDefault?: boolean } = {}) {\n if (isString(schemaRef)) {\n schemaRef = this.getOrCreateSchemaRefByName({\n metaType: METATYPE_SCHEMA,\n name: schemaRef,\n namespace: this.namespace,\n target: entityRef.getClass()\n });\n }\n const name = schemaRef.name;\n let entry = entityRef.getOptions(METATYPE_SCHEMA, []);\n if (!entry.includes(name)) {\n if (entry) {\n if (isArray(entry)) {\n entry.push(name);\n } else {\n entry = [entry, name];\n }\n } else {\n entry = [name];\n }\n\n if (get(options, 'override', false)) {\n if (get(options, 'onlyDefault', false)) {\n remove(entry, x => x === C_DEFAULT);\n } else {\n entry = [name];\n }\n }\n entityRef.setOption(METATYPE_SCHEMA, uniq(entry));\n }\n }\n\n\n /**\n * react on dynamically removed context\n *\n * @param context\n * @param entries\n */\n onRemove(context: METADATA_TYPE, entries: (IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions)[]) {\n\n if (context === METATYPE_ENTITY || context === METATYPE_CLASS_REF) {\n const targets = entries.map(x => x.target);\n this.getLookupRegistry().remove(METATYPE_CLASS_REF, (x: any) => targets.includes(x.target));\n this.getLookupRegistry().remove(METATYPE_ENTITY, (x: any) => targets.includes(x.target));\n this.getLookupRegistry().remove(METATYPE_PROPERTY, (x: any) => targets.includes(x.target));\n } else if (context === METATYPE_PROPERTY) {\n const targets = entries.map(x => [x.target, x.propertyName]);\n this.getLookupRegistry().remove(context, (x: any) => targets.includes([x.target, x.name]));\n } else if (context === METATYPE_SCHEMA) {\n // TODO remove schema ref\n // TODO remove schema options entries\n }\n }\n\n\n /**\n * react on dynamically update context\n *\n * @param context\n * @param entries\n */\n onUpdate(context: METADATA_TYPE,\n options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions) {\n }\n\n\n /**\n * Return all registered schema references\n *\n * @param ref\n * @return ISchemaRef[]\n */\n getSchemaRefs(filter?: (x: ISchemaRef) => boolean): SchemaRef[] {\n return this.filter(METATYPE_SCHEMA, filter);\n }\n\n /**\n * Return schema references for an given entity or class reference\n *\n * @param ref\n * @return ISchemaRef[]\n */\n getSchemaRefsFor(ref: string): SchemaRef;\n getSchemaRefsFor(ref: string | IEntityRef | IClassRef): SchemaRef | SchemaRef[] {\n let lookup: SchemaRef[] = [];\n if (isEntityRef(ref) || isClassRef(ref)) {\n const schemas = ref.getOptions(METATYPE_SCHEMA, []);\n for (const schema of schemas) {\n let schemaRef: SchemaRef = this.find(METATYPE_SCHEMA, (x: ISchemaRef) => x.name === schema);\n if (!schemaRef) {\n schemaRef = this.create(METATYPE_SCHEMA, {name: schema, target: ref.getClass()});\n }\n lookup.push(schemaRef);\n }\n lookup = this.getSchemaRefs((x: ISchemaRef) => schemas.includes(x.name));\n } else if (isString(ref)) {\n let schemaRef = this.find(METATYPE_SCHEMA, (x: ISchemaRef) => x.name === ref);\n if (!schemaRef) {\n schemaRef = this.create(METATYPE_SCHEMA, {name: ref});\n }\n return schemaRef as SchemaRef;\n } else {\n throw new NotSupportedError('passed value is not supported');\n }\n return lookup ? uniq(lookup) : null;\n }\n\n /**\n * TODO\n *\n * @param filter\n */\n getEntities(filter?: (x: IEntityRef) => boolean): IEntityRef[] {\n return this.getLookupRegistry().filter(METATYPE_ENTITY, filter);\n }\n\n /**\n * Can get get entity ref for function.\n *\n * @param fn\n */\n getEntityRefFor(fn: string | object | Function, skipNsCheck: boolean = true): DefaultEntityRef {\n let lookup = <string | Function>fn;\n if (!isFunction(fn) && !isString(fn) && isObjectLike(fn)) {\n lookup = ClassUtils.getFunction(fn as any);\n }\n let lookupFn = (x: IEntityRef) => x.getClassRef().getClass() === lookup;\n if (isString(fn)) {\n lookupFn = (x: IEntityRef) => x.getClassRef().name === lookup || x.name === lookup;\n }\n const entityRefExists = this.find<DefaultEntityRef>(METATYPE_ENTITY, lookupFn);\n if (entityRefExists) {\n return entityRefExists;\n }\n return this.create(METATYPE_ENTITY, {\n target: lookup,\n namespace: this.namespace,\n skipNsCheck: skipNsCheck\n });\n }\n\n\n /**\n * Returns property by name for a given class or entity ref\n *\n * @param filter\n */\n getPropertyRef(ref: IClassRef | IEntityRef, name: string): DefaultPropertyRef {\n return this.getPropertyRefs(ref).find(x => snakeCase(x.name) === snakeCase(name));\n }\n\n\n /**\n * Returns all properties for given class or entity ref\n *\n * @param ref\n */\n getPropertyRefs(ref: IClassRef | IEntityRef): DefaultPropertyRef[] {\n const clsRef: IClassRef = isEntityRef(ref) ? ref.getClassRef() : ref;\n // Return existing\n const clsRefExists = this.find(METATYPE_CLASS_REF, (x: IClassRef) => x === clsRef);\n let properties: DefaultPropertyRef[] = [];\n if (clsRefExists) {\n properties = this.filter(METATYPE_PROPERTY, (x: IPropertyRef) => x.getClassRef() === clsRefExists);\n } else {\n properties = this.createPropertiesForRef(clsRef);\n }\n return properties;\n }\n\n /**\n * Create properties for class or entity ref.\n */\n createPropertiesForRef(clsRef: IClassRef): DefaultPropertyRef[] {\n const cls = clsRef.getClass(true);\n const propOptions: IPropertyOptions[] = [];\n const metaPropOptions = MetadataRegistry.$().getByContextAndTarget(METATYPE_PROPERTY, cls) as IPropertyOptions[];\n\n if (this.getOptions().detectUnannotatedProperties) {\n const jsonSchema = JsonSchema.serialize(cls, {appendTarget: true}) as any;\n if (hasClassPropertiesInDefinition(clsRef.name, jsonSchema)) {\n const properties = (jsonSchema.definitions[clsRef.name] as IJsonSchema7).properties;\n for (const k of keys(properties)) {\n const property: IJsonSchema7 = properties[k] as IJsonSchema7;\n const opts: IPropertyOptions = {\n metaType: METATYPE_PROPERTY,\n namespace: clsRef.getNamespace(),\n type: property.$target ? property.$target : property.type,\n propertyName: k,\n target: cls\n };\n\n if (property.default) {\n opts.default = property.default;\n }\n\n const propMetadata = remove(metaPropOptions, x => x.propertyName === k);\n if (!isEmpty(propMetadata)) {\n for (const p of propMetadata) {\n // clean namespace\n const copy = clone(p);\n delete copy.namespace;\n assign(opts, copy);\n }\n }\n propOptions.push(opts);\n }\n }\n }\n\n const propertyOptions = propOptions.concat(metaPropOptions)\n // .filter(x => !clsRef.getRegistry().find(METATYPE_PROPERTY,\n // (z: IPropertyRef) => z.name === x.propertyName && z.getClassRef().getClass() === x.target)\n // )\n // .filter(x => !this.processing.find((z: IPropertyOptions) => z.propertyName === x.propertyName && z.target === x.target))\n .map(p => {\n // change namespace of properties namespace\n const copy = clone(p);\n copy.namespace = clsRef.getNamespace();\n copy.skipNsCheck = true;\n return copy;\n });\n\n\n return propertyOptions.map(opts => clsRef.getRegistry().create(METATYPE_PROPERTY, opts));\n }\n\n\n /**\n * Create default property reference\n *\n * @param options\n */\n createPropertyForOptions(options: IPropertyOptions): DefaultPropertyRef {\n if (keys(options).length === 0) {\n throw new Error('can\\'t create property for empty options');\n }\n options.namespace = this.namespace;\n const prop = new DefaultPropertyRef(options);\n return this.add(prop.metaType, prop);\n }\n\n\n /**\n * Create default entity reference\n *\n * @param options\n */\n createEntityForOptions(options: IEntityOptions): DefaultEntityRef {\n options.namespace = this.namespace;\n if (!options.name) {\n options.name = ClassRef.getClassName(options.target);\n }\n const entityRef = new DefaultEntityRef(options);\n const retRef = this.add(entityRef.metaType, entityRef);\n const metaSchemaOptionsForEntity = MetadataRegistry.$()\n .getByContextAndTarget(METATYPE_SCHEMA, entityRef.getClass()) as ISchemaOptions[];\n if (metaSchemaOptionsForEntity.length > 0) {\n for (const schemaOptions of metaSchemaOptionsForEntity) {\n this.addSchemaToEntityRef(schemaOptions.name, entityRef);\n }\n }\n return retRef;\n }\n\n /**\n * Create default entity reference\n *\n * @param options\n */\n createEmbeddableForOptions(options: IObjectOptions): IClassRef {\n // options.namespace = this.namespace;\n // if (!options.name) {\n // options.name = ClassRef.getClassName(options.target);\n // }\n options = defaults(options || {}, {});\n const classRef = this.getClassRefFor(options.target, METATYPE_CLASS_REF);\n classRef.setOptions(options);\n return classRef;\n }\n\n /**\n * Create default schema reference\n *\n * @param options\n */\n createSchemaForOptions(options: ISchemaOptions): SchemaRef {\n options.namespace = this.namespace;\n const schemaRef = new SchemaRef(options);\n return this.add(schemaRef.metaType, schemaRef);\n }\n\n /**\n * Return metadata collected in the MetadataRegistry through annotation or explizit attached data.\n *\n * @param context\n * @param target\n * @return IAbstractOptions\n */\n getMetadata(context: METADATA_TYPE, target: Function | string, propertyName?: string): IAbstractOptions {\n let metadataOptionList: IAbstractOptions[] =\n MetadataRegistry.$()\n .getByContextAndTarget(context, target, 'merge', propertyName) as IAbstractOptions[];\n\n let metadataOptions: IAbstractOptions = {};\n if (metadataOptionList.length > 1) {\n metadataOptions = assign(metadataOptions, ...metadataOptionList.map(x => cloneDeep(x)));\n } else if (metadataOptionList.length === 1) {\n metadataOptions = cloneDeep(metadataOptionList.shift());\n }\n\n if (propertyName) {\n // remove namespace for properties\n delete metadataOptions.namespace;\n }\n\n return metadataOptions;\n }\n\n\n getPropertyRefsFor(fn: string | object | Function): DefaultPropertyRef[] {\n const clsName = ClassRef.getClassName(fn);\n const clsRef = ClassRef.get(clsName, this.namespace);\n return this.getPropertyRefs(clsRef);\n }\n\n\n create<T>(context: string, options: IAbstractOptions): T {\n const skipNsCheck = get(options, 'skipNsCheck', false);\n delete options.skipNsCheck;\n const metadata = this.getMetadata(context as METADATA_TYPE, options.target, options.propertyName ? options.propertyName : null);\n if (metadata) {\n\n if (!skipNsCheck && metadata.namespace && metadata.namespace !== this.namespace) {\n if (context !== METATYPE_PROPERTY) {\n throw new NotSupportedError(\n 'namespace for ' + context + ' is ' + metadata.namespace +\n ' the namespace of this registry is ' + this.namespace\n );\n }\n }\n if (!isEmpty(metadata) && keys(metadata).length > 0) {\n merge(options, assign(metadata, {namespace: this.namespace}));\n }\n }\n options.metaType = context;\n switch (context as METADATA_TYPE) {\n case METATYPE_CLASS_REF:\n break;\n case METATYPE_EMBEDDABLE:\n return <any>this.createEmbeddableForOptions(options);\n case METATYPE_ENTITY:\n return <any>this.createEntityForOptions(options);\n case METATYPE_PROPERTY:\n return <any>this.createPropertyForOptions(options);\n case METATYPE_SCHEMA:\n return <any>this.createSchemaForOptions(options as ISchemaOptions);\n }\n\n return null;\n }\n\n /**\n * TODO\n */\n add<T>(context: string, entry: T): T {\n if (context === METATYPE_CLASS_REF) {\n return this.addClassRef(entry as any) as any;\n }\n return this.getLookupRegistry().add(context, entry);\n }\n\n /**\n * Create default entity reference\n *\n * @param options\n */\n addClassRef(ref: IClassRef): IClassRef {\n const addedClassRef = this.getLookupRegistry().add(METATYPE_CLASS_REF, ref);\n this.createPropertiesForRef(addedClassRef);\n return addedClassRef;\n }\n\n\n getClassRefFor(object: string | Function | IClassRef, type: METADATA_TYPE): IClassRef {\n let ref: IClassRef = null;\n if (isString(object)) {\n ref = this.find(METATYPE_CLASS_REF, (x: IClassRef) => x.name === object);\n } else if (isFunction(object)) {\n ref = this.find(METATYPE_CLASS_REF, (x: IClassRef) => x.getClass(true) === object);\n } else {\n ref = this.find(METATYPE_CLASS_REF, (x: IClassRef) => x === object);\n }\n if (!ref) {\n ref = ClassRef.get(<string | Function>object, this.namespace, type === METATYPE_PROPERTY);\n const metadata = this.getMetadata(METATYPE_EMBEDDABLE, <string | Function>object);\n if (!isEmpty(metadata) && keys(metadata).length > 0) {\n const refOptions = ref.getOptions();\n merge(refOptions, metadata);\n }\n // this.createPropertiesForRef(ref);\n }\n return ref;\n }\n\n reset() {\n super.reset();\n MetadataRegistry.$().off(C_EVENT_ADD, this.onAdd.bind(this));\n MetadataRegistry.$().off(C_EVENT_REMOVE, this.onRemove.bind(this));\n MetadataRegistry.$().off(C_EVENT_UPDATE, this.onUpdate.bind(this));\n }\n\n\n}\n"],"sourceRoot":"../.."}
|
|
@@ -16,8 +16,14 @@ class DefaultPropertyRef extends AbstractRef_1.AbstractRef {
|
|
|
16
16
|
this.cardinality = 1;
|
|
17
17
|
this.reference = undefined;
|
|
18
18
|
AnnotationsHelper_1.AnnotationsHelper.merge(this.object, options, this.name);
|
|
19
|
+
if (options.type === Constants_1.T_ARRAY) {
|
|
20
|
+
// if array reset
|
|
21
|
+
options.type = Constants_1.T_OBJECT;
|
|
22
|
+
options.cardinality = 0;
|
|
23
|
+
options.array = true;
|
|
24
|
+
}
|
|
19
25
|
this.setOptions(options);
|
|
20
|
-
this.cardinality = lodash_1.has(options,
|
|
26
|
+
this.cardinality = (0, lodash_1.has)(options, Constants_1.C_CARDINALITY) ? options.cardinality : 1;
|
|
21
27
|
}
|
|
22
28
|
getRegistry() {
|
|
23
29
|
return RegistryFactory_1.RegistryFactory.get(this.namespace);
|
|
@@ -27,7 +33,7 @@ class DefaultPropertyRef extends AbstractRef_1.AbstractRef {
|
|
|
27
33
|
*/
|
|
28
34
|
convert(data, options) {
|
|
29
35
|
const sourceType = this.getType();
|
|
30
|
-
if (!sourceType || !lodash_1.isString(sourceType)) {
|
|
36
|
+
if (!sourceType || !(0, lodash_1.isString)(sourceType)) {
|
|
31
37
|
return data;
|
|
32
38
|
}
|
|
33
39
|
const jsType = sourceType.toLowerCase();
|
|
@@ -40,10 +46,10 @@ class DefaultPropertyRef extends AbstractRef_1.AbstractRef {
|
|
|
40
46
|
case 'time':
|
|
41
47
|
case 'text':
|
|
42
48
|
case Constants_1.T_STRING:
|
|
43
|
-
if (lodash_1.isString(data)) {
|
|
49
|
+
if ((0, lodash_1.isString)(data)) {
|
|
44
50
|
return data;
|
|
45
51
|
}
|
|
46
|
-
else if (lodash_1.isArray(data) && data.length === 1) {
|
|
52
|
+
else if ((0, lodash_1.isArray)(data) && data.length === 1) {
|
|
47
53
|
return data[0];
|
|
48
54
|
}
|
|
49
55
|
else if (data) {
|
|
@@ -54,13 +60,13 @@ class DefaultPropertyRef extends AbstractRef_1.AbstractRef {
|
|
|
54
60
|
}
|
|
55
61
|
break;
|
|
56
62
|
case 'boolean':
|
|
57
|
-
if (lodash_1.isBoolean(data)) {
|
|
63
|
+
if ((0, lodash_1.isBoolean)(data)) {
|
|
58
64
|
return data;
|
|
59
65
|
}
|
|
60
|
-
else if (lodash_1.isNumber(data)) {
|
|
66
|
+
else if ((0, lodash_1.isNumber)(data)) {
|
|
61
67
|
return data > 0;
|
|
62
68
|
}
|
|
63
|
-
else if (lodash_1.isString(data)) {
|
|
69
|
+
else if ((0, lodash_1.isString)(data)) {
|
|
64
70
|
if (data.toLowerCase() === 'true' || data.toLowerCase() === '1') {
|
|
65
71
|
return true;
|
|
66
72
|
}
|
|
@@ -69,7 +75,7 @@ class DefaultPropertyRef extends AbstractRef_1.AbstractRef {
|
|
|
69
75
|
break;
|
|
70
76
|
case 'double':
|
|
71
77
|
case 'number':
|
|
72
|
-
if (lodash_1.isString(data)) {
|
|
78
|
+
if ((0, lodash_1.isString)(data)) {
|
|
73
79
|
if (/^\d+\.|\,\d+$/.test(data)) {
|
|
74
80
|
return parseFloat(data.replace(',', '.'));
|
|
75
81
|
}
|
|
@@ -79,10 +85,10 @@ class DefaultPropertyRef extends AbstractRef_1.AbstractRef {
|
|
|
79
85
|
else {
|
|
80
86
|
}
|
|
81
87
|
}
|
|
82
|
-
else if (lodash_1.isNumber(data)) {
|
|
88
|
+
else if ((0, lodash_1.isNumber)(data)) {
|
|
83
89
|
return data;
|
|
84
90
|
}
|
|
85
|
-
else if (lodash_1.isBoolean(data)) {
|
|
91
|
+
else if ((0, lodash_1.isBoolean)(data)) {
|
|
86
92
|
return data ? 1 : 0;
|
|
87
93
|
}
|
|
88
94
|
else {
|
|
@@ -98,17 +104,17 @@ class DefaultPropertyRef extends AbstractRef_1.AbstractRef {
|
|
|
98
104
|
throw new base_1.NotYetImplementedError('value "' + data + '" of type ' + (typeof data) + ' column type=' + jsType);
|
|
99
105
|
}
|
|
100
106
|
get(instance) {
|
|
101
|
-
return lodash_1.get(instance, this.name, null);
|
|
107
|
+
return (0, lodash_1.get)(instance, this.name, null);
|
|
102
108
|
}
|
|
103
109
|
getTargetRef() {
|
|
104
110
|
this.checkReference();
|
|
105
111
|
return this.targetRef;
|
|
106
112
|
}
|
|
107
113
|
getType() {
|
|
108
|
-
return this.getOptions(
|
|
114
|
+
return this.getOptions(Constants_1.C_TYPE);
|
|
109
115
|
}
|
|
110
116
|
isAppended() {
|
|
111
|
-
return this.getOptions(
|
|
117
|
+
return this.getOptions(Constants_1.C_APPENDED, false);
|
|
112
118
|
}
|
|
113
119
|
/**
|
|
114
120
|
* TODO
|
|
@@ -120,7 +126,7 @@ class DefaultPropertyRef extends AbstractRef_1.AbstractRef {
|
|
|
120
126
|
* check if property parameter is an array
|
|
121
127
|
*/
|
|
122
128
|
isCollection() {
|
|
123
|
-
if (lodash_1.isObjectLike(this.cardinality) &&
|
|
129
|
+
if ((0, lodash_1.isObjectLike)(this.cardinality) &&
|
|
124
130
|
this.cardinality.min >= 0 &&
|
|
125
131
|
this.cardinality.max >= 0) {
|
|
126
132
|
return true;
|
|
@@ -131,7 +137,7 @@ class DefaultPropertyRef extends AbstractRef_1.AbstractRef {
|
|
|
131
137
|
* Return if is identifier
|
|
132
138
|
*/
|
|
133
139
|
isIdentifier() {
|
|
134
|
-
return this.getOptions(
|
|
140
|
+
return this.getOptions(Constants_1.C_IDENTIFIER, false);
|
|
135
141
|
}
|
|
136
142
|
/**
|
|
137
143
|
* Return if is a pattern property
|
|
@@ -147,15 +153,15 @@ class DefaultPropertyRef extends AbstractRef_1.AbstractRef {
|
|
|
147
153
|
return this.reference;
|
|
148
154
|
}
|
|
149
155
|
checkReference() {
|
|
150
|
-
if (lodash_1.isUndefined(this.reference)) {
|
|
156
|
+
if ((0, lodash_1.isUndefined)(this.reference)) {
|
|
151
157
|
this.reference = false;
|
|
152
158
|
const type = this.getType();
|
|
153
|
-
if (!lodash_1.isString(type) && (IClassRef_1.isClassRef(type) || IEntityRef_1.isEntityRef(type))) {
|
|
154
|
-
this.targetRef = IEntityRef_1.isEntityRef(type) ? type.getClassRef() : type;
|
|
159
|
+
if (!(0, lodash_1.isString)(type) && ((0, IClassRef_1.isClassRef)(type) || (0, IEntityRef_1.isEntityRef)(type))) {
|
|
160
|
+
this.targetRef = (0, IEntityRef_1.isEntityRef)(type) ? type.getClassRef() : type;
|
|
155
161
|
this.reference = true;
|
|
156
162
|
}
|
|
157
|
-
else if (lodash_1.isFunction(type) ||
|
|
158
|
-
(lodash_1.isString(type) && !Constants_1.JS_DATA_TYPES.find(t => (new RegExp('^' + t + ':?')).test(type.toLowerCase())))) {
|
|
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())))) {
|
|
159
165
|
// try get existing class
|
|
160
166
|
const exists = ClassRef_1.ClassRef.get(type, this.getClassRef().getNamespace());
|
|
161
167
|
if (exists) {
|
|
@@ -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 DEFAULT_NAMESPACE,\n IMinMax,\n JS_DATA_TYPES, K_PATTERN_PROPERTY,\n METADATA_TYPE,\n METATYPE_PROPERTY, T_ARRAY, T_OBJECT, 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 this.setOptions(options);\n this.cardinality = has(options, '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('type');\n }\n\n isAppended(): boolean {\n return this.getOptions('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('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 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":"../.."}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/registry/IRegistryOptions.ts"],"names":[],"mappings":"","file":"IRegistryOptions.js","sourcesContent":["export interface IRegistryOptions {\n /**\n * If class is passed without annotated properties, then scan for existing defined attributes.\n *\n * Default value is true.\n */\n detectUnannotatedProperties?: boolean;\n}\n"],"sourceRoot":"../.."}
|
|
@@ -30,11 +30,25 @@ export declare class MetadataRegistry extends EventEmitter {
|
|
|
30
30
|
* @param options
|
|
31
31
|
*/
|
|
32
32
|
add(context: METADATA_TYPE | string, options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions | IAttributeOptions, trigger?: boolean): IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions | IAttributeOptions;
|
|
33
|
+
/**
|
|
34
|
+
* Add cached content mostly for ClassRef instances throw AbstractRef
|
|
35
|
+
*
|
|
36
|
+
* @param context
|
|
37
|
+
* @param options
|
|
38
|
+
*/
|
|
33
39
|
addCached(context: METADATA_TYPE | string, options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions | IAttributeOptions): IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions | IAttributeOptions;
|
|
34
40
|
notify(eventName: string, context: string, options: any): void;
|
|
35
41
|
remove(context: METADATA_TYPE | string, c: (x: any) => boolean, trigger?: boolean): void;
|
|
36
42
|
getByContext<T extends IAbstractOptions>(context: METADATA_TYPE): T[];
|
|
37
43
|
getTargets(): any[];
|
|
44
|
+
/**
|
|
45
|
+
* Return the metadata/options for some entry (entity/property/classref/...). A copy of the original will be delivered.
|
|
46
|
+
*
|
|
47
|
+
* @param context
|
|
48
|
+
* @param target
|
|
49
|
+
* @param attributes
|
|
50
|
+
* @param propertyName
|
|
51
|
+
*/
|
|
38
52
|
getByContextAndTarget<T extends IAbstractOptions>(context: METADATA_TYPE | string, target: CLASS_TYPE | string, attributes?: 'merge' | 'assign' | 'defaults', propertyName?: string): T[];
|
|
39
53
|
mergeAttributes(context: METADATA_TYPE | string, target: CLASS_TYPE | string, data: IPropertyOptions | IEntityOptions | IObjectOptions | ISchemaOptions, mode?: 'merge' | 'assign' | 'defaults'): void;
|
|
40
54
|
getAttributesForTarget<T extends IAttributeOptions>(context: METADATA_TYPE | string, target: CLASS_TYPE | string): T[];
|
|
@@ -57,6 +57,12 @@ class MetadataRegistry extends events_1.EventEmitter {
|
|
|
57
57
|
}
|
|
58
58
|
return options;
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Add cached content mostly for ClassRef instances throw AbstractRef
|
|
62
|
+
*
|
|
63
|
+
* @param context
|
|
64
|
+
* @param options
|
|
65
|
+
*/
|
|
60
66
|
addCached(context, options) {
|
|
61
67
|
options.metaType = context;
|
|
62
68
|
this.cached.push(options);
|
|
@@ -66,8 +72,8 @@ class MetadataRegistry extends events_1.EventEmitter {
|
|
|
66
72
|
this.emit(eventName, context, options);
|
|
67
73
|
}
|
|
68
74
|
remove(context, c, trigger = true) {
|
|
69
|
-
const removed = lodash_1.remove(this.metadata, x => x.metaType === context && c(x));
|
|
70
|
-
if (!lodash_1.isEmpty(removed) && trigger) {
|
|
75
|
+
const removed = (0, lodash_1.remove)(this.metadata, x => x.metaType === context && c(x));
|
|
76
|
+
if (!(0, lodash_1.isEmpty)(removed) && trigger) {
|
|
71
77
|
this.notify(Constants_1.C_EVENT_REMOVE, context, removed);
|
|
72
78
|
}
|
|
73
79
|
}
|
|
@@ -80,11 +86,19 @@ class MetadataRegistry extends events_1.EventEmitter {
|
|
|
80
86
|
getTargets() {
|
|
81
87
|
return this.targets;
|
|
82
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Return the metadata/options for some entry (entity/property/classref/...). A copy of the original will be delivered.
|
|
91
|
+
*
|
|
92
|
+
* @param context
|
|
93
|
+
* @param target
|
|
94
|
+
* @param attributes
|
|
95
|
+
* @param propertyName
|
|
96
|
+
*/
|
|
83
97
|
getByContextAndTarget(context, target, attributes = null, propertyName) {
|
|
84
|
-
const data = this.metadata.filter(x => x.metaType === context &&
|
|
98
|
+
const data = (0, lodash_1.cloneDeep)(this.metadata.filter(x => x.metaType === context &&
|
|
85
99
|
x.target === target &&
|
|
86
|
-
(propertyName ? x.propertyName === propertyName : true));
|
|
87
|
-
if (attributes && !lodash_1.isEmpty(data)) {
|
|
100
|
+
(propertyName ? x.propertyName === propertyName : true)));
|
|
101
|
+
if (attributes && !(0, lodash_1.isEmpty)(data)) {
|
|
88
102
|
this.mergeAttributes(context, target, data, attributes);
|
|
89
103
|
}
|
|
90
104
|
return data;
|
|
@@ -109,46 +123,46 @@ class MetadataRegistry extends events_1.EventEmitter {
|
|
|
109
123
|
if (toExtend) {
|
|
110
124
|
switch (mode) {
|
|
111
125
|
case 'assign':
|
|
112
|
-
lodash_1.assign(toExtend, attribute.attributes);
|
|
126
|
+
(0, lodash_1.assign)(toExtend, attribute.attributes);
|
|
113
127
|
break;
|
|
114
128
|
case 'merge':
|
|
115
|
-
lodash_1.merge(toExtend, attribute.attributes);
|
|
129
|
+
(0, lodash_1.merge)(toExtend, attribute.attributes);
|
|
116
130
|
break;
|
|
117
131
|
case 'defaults':
|
|
118
|
-
lodash_1.defaults(toExtend, attribute.attributes);
|
|
132
|
+
(0, lodash_1.defaults)(toExtend, attribute.attributes);
|
|
119
133
|
break;
|
|
120
134
|
}
|
|
121
135
|
}
|
|
122
136
|
}
|
|
123
137
|
}
|
|
124
138
|
getAttributesForTarget(context, target) {
|
|
125
|
-
return this.metadata.filter((x) => x.targetTypes &&
|
|
139
|
+
return (0, lodash_1.cloneDeep)(this.metadata.filter((x) => x.targetTypes &&
|
|
126
140
|
!x.propertyName &&
|
|
127
141
|
x.attributes &&
|
|
128
142
|
x.targetTypes.includes(context) &&
|
|
129
|
-
x.target === target);
|
|
143
|
+
x.target === target));
|
|
130
144
|
}
|
|
131
145
|
getAttributesForTargetProperty(context, target, propertyName) {
|
|
132
|
-
return this.metadata.filter((x) => x.targetTypes &&
|
|
146
|
+
return (0, lodash_1.cloneDeep)(this.metadata.filter((x) => x.targetTypes &&
|
|
133
147
|
x.propertyName === propertyName &&
|
|
134
148
|
x.attributes &&
|
|
135
149
|
x.targetTypes.includes(context) &&
|
|
136
|
-
x.target === target);
|
|
150
|
+
x.target === target));
|
|
137
151
|
}
|
|
138
152
|
getAttributesForTargetProperties(context, target) {
|
|
139
|
-
return this.metadata.filter((x) => x.targetTypes &&
|
|
153
|
+
return (0, lodash_1.cloneDeep)(this.metadata.filter((x) => x.targetTypes &&
|
|
140
154
|
x.propertyName &&
|
|
141
155
|
x.attributes &&
|
|
142
156
|
x.targetTypes.includes(context) &&
|
|
143
|
-
x.target === target);
|
|
157
|
+
x.target === target));
|
|
144
158
|
}
|
|
145
159
|
getByTarget(target) {
|
|
146
|
-
return this.metadata.filter(x => x.target === target);
|
|
160
|
+
return (0, lodash_1.cloneDeep)(this.metadata.filter(x => x.target === target));
|
|
147
161
|
}
|
|
148
162
|
createSearchFunction(find) {
|
|
149
163
|
let lookup = find;
|
|
150
|
-
if (!lodash_1.isFunction(find)) {
|
|
151
|
-
const _keys = lodash_1.keys(find);
|
|
164
|
+
if (!(0, lodash_1.isFunction)(find)) {
|
|
165
|
+
const _keys = (0, lodash_1.keys)(find);
|
|
152
166
|
lookup = (x) => {
|
|
153
167
|
return _keys.map(k => find[k] === x[k]).reduce((previousValue, currentValue) => previousValue && currentValue);
|
|
154
168
|
};
|
|
@@ -174,7 +188,7 @@ class MetadataRegistry extends events_1.EventEmitter {
|
|
|
174
188
|
return this.cached;
|
|
175
189
|
}
|
|
176
190
|
getSchemas() {
|
|
177
|
-
return lodash_1.uniq(this.metadata.filter((x => x.context === Constants_1.METATYPE_SCHEMA)).map(x => x.name));
|
|
191
|
+
return (0, lodash_1.uniq)(this.metadata.filter((x => x.context === Constants_1.METATYPE_SCHEMA)).map(x => x.name));
|
|
178
192
|
}
|
|
179
193
|
getMetadatasForSchema(schema) {
|
|
180
194
|
return this.metadata.filter((x => x.context === Constants_1.METATYPE_SCHEMA && x.name === schema));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/registry/MetadataRegistry.ts"],"names":[],"mappings":"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","file":"MetadataRegistry.js","sourcesContent":["import {assign, defaults, isEmpty, isFunction, keys, merge, remove, uniq} from 'lodash';\n\n/**\n * Handler for metadata\n */\nimport {\n C_EVENT_ADD,\n C_EVENT_REMOVE,\n CLASS_TYPE, K_TRIGGERED,\n METADATA_REGISTRY,\n METADATA_TYPE,\n METATYPE_PROPERTY,\n METATYPE_SCHEMA\n} from './../Constants';\nimport {IEntityOptions} from './../options/IEntityOptions';\nimport {IPropertyOptions} from './../options/IPropertyOptions';\nimport {ISchemaOptions} from './../options/ISchemaOptions';\nimport {IObjectOptions} from './../options/IObjectOptions';\nimport {MetadataStorage} from '@allgemein/base';\nimport {EventEmitter} from 'events';\nimport {IAbstractOptions} from '../options/IAbstractOptions';\nimport {IAttributeOptions} from '../options/IAttributeOptions';\n\n/**\n * Registry for metadata of classes and there properties\n */\nexport class MetadataRegistry extends EventEmitter {\n\n private static INC = 0;\n\n private static $self: MetadataRegistry;\n\n private readonly metadata: IAbstractOptions[] = [];\n\n private readonly cached: IAbstractOptions[] = [];\n\n private schemas: string[] = [];\n\n private targets: any[] = [];\n\n\n constructor() {\n super();\n this.setMaxListeners(1000);\n this.targets = [];\n this.schemas = [];\n this.metadata = MetadataStorage.key(METADATA_REGISTRY);\n }\n\n\n static $() {\n if (!this.$self) {\n this.$self = new MetadataRegistry();\n }\n return this.$self;\n }\n\n\n static reset() {\n this.$self = null;\n }\n\n\n /**\n * Add typed element to the local registry\n *\n * @param context\n * @param options\n */\n add(context: METADATA_TYPE | string,\n options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions | IAttributeOptions,\n trigger: boolean = true) {\n options.metaType = context;\n\n // find?\n const id = MetadataRegistry.INC++;\n this.metadata.push(options);\n if (this.targets.indexOf(options.target) === -1) {\n this.targets.push(options.target);\n }\n if (context === METATYPE_SCHEMA) {\n if (this.schemas.indexOf(options.name) === -1) {\n this.schemas.push(options.name);\n }\n }\n\n if (trigger) {\n Object.defineProperty(options, K_TRIGGERED, {value: true});\n this.notify(C_EVENT_ADD, context, options);\n }\n\n return options;\n }\n\n addCached(context: METADATA_TYPE | string,\n options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions | IAttributeOptions) {\n options.metaType = context;\n this.cached.push(options);\n return options;\n }\n\n notify(eventName: string, context: string, options: any) {\n this.emit(eventName, context, options);\n }\n\n\n remove(context: METADATA_TYPE | string, c: (x: any) => boolean, trigger: boolean = true) {\n const removed = remove(this.metadata, x => x.metaType === context && c(x));\n if (!isEmpty(removed) && trigger) {\n this.notify(C_EVENT_REMOVE, context, removed);\n }\n }\n\n // private update(context: METADATA_TYPE) {\n // this.emit(C_EVENT_UPDATE, {});\n // }\n\n getByContext<T extends IAbstractOptions>(context: METADATA_TYPE): T[] {\n return <T[]>this.metadata.filter(x =>\n x.metaType === context\n );\n }\n\n\n getTargets() {\n return this.targets;\n }\n\n\n getByContextAndTarget<T extends IAbstractOptions>(context: METADATA_TYPE | string,\n target: CLASS_TYPE | string,\n attributes: 'merge' | 'assign' | 'defaults' = null,\n propertyName?: string): T[] {\n const data = <T[]>this.metadata.filter(x =>\n x.metaType === context &&\n x.target === target &&\n (propertyName ? x.propertyName === propertyName : true)\n );\n if (attributes && !isEmpty(data)) {\n this.mergeAttributes(context, target, data, attributes);\n }\n return data;\n }\n\n\n mergeAttributes(context: METADATA_TYPE | string,\n target: CLASS_TYPE | string,\n data: IPropertyOptions | IEntityOptions | IObjectOptions | ISchemaOptions,\n mode: 'merge' | 'assign' | 'defaults' = null) {\n let attributes: IAttributeOptions[] = [];\n if (context === METATYPE_PROPERTY) {\n // merge with properties\n attributes = this.getAttributesForTargetProperties(context, target);\n } else {\n attributes = this.getAttributesForTarget(context, target);\n }\n\n for (const attribute of attributes) {\n let toExtend = null;\n if (attribute.propertyName) {\n toExtend = data.find((x: IPropertyOptions) => x.metaType === METATYPE_PROPERTY && x.propertyName === attribute.propertyName);\n } else {\n toExtend = data.find((x: IAbstractOptions) => x.metaType === context);\n }\n if (toExtend) {\n switch (mode) {\n case 'assign':\n assign(toExtend, attribute.attributes);\n break;\n case 'merge':\n merge(toExtend, attribute.attributes);\n break;\n case 'defaults':\n defaults(toExtend, attribute.attributes);\n break;\n }\n\n }\n }\n }\n\n getAttributesForTarget<T extends IAttributeOptions>(context: METADATA_TYPE | string,\n target: CLASS_TYPE | string): T[] {\n return <T[]>this.metadata.filter((x: IAttributeOptions) =>\n x.targetTypes &&\n !x.propertyName &&\n x.attributes &&\n x.targetTypes.includes(context) &&\n x.target === target\n );\n }\n\n getAttributesForTargetProperty<T extends IAttributeOptions>(context: METADATA_TYPE,\n target: CLASS_TYPE,\n propertyName: string): T[] {\n return <T[]>this.metadata.filter((x: IAttributeOptions) =>\n x.targetTypes &&\n x.propertyName === propertyName &&\n x.attributes &&\n x.targetTypes.includes(context) &&\n x.target === target\n );\n }\n\n getAttributesForTargetProperties<T extends IAttributeOptions>(context: METADATA_TYPE, target: CLASS_TYPE | string): T[] {\n return <T[]>this.metadata.filter((x: IAttributeOptions) =>\n x.targetTypes &&\n x.propertyName &&\n x.attributes &&\n x.targetTypes.includes(context) &&\n x.target === target\n );\n }\n\n getByTarget(target: CLASS_TYPE) {\n return this.metadata.filter(x =>\n x.target === target\n );\n }\n\n private createSearchFunction(find: any) {\n let lookup = find;\n if (!isFunction(find)) {\n const _keys = keys(find);\n lookup = (x: any) => {\n return _keys.map(k => find[k] === x[k]).reduce((previousValue, currentValue) => previousValue && currentValue);\n };\n }\n return lookup;\n }\n\n\n find(context: METADATA_TYPE | string, find: CLASS_TYPE) {\n const lookup = this.createSearchFunction(find);\n return this.metadata.find((x => x.metaType === context && lookup(x)));\n }\n\n\n findCached(context: METADATA_TYPE | string, find: CLASS_TYPE) {\n const lookup = this.createSearchFunction(find);\n return this.cached.find((x => x.metaType === context && lookup(x)));\n }\n\n\n filter(context: METADATA_TYPE | string, find: CLASS_TYPE) {\n const lookup = this.createSearchFunction(find);\n return this.metadata.filter((x => x.context === context && lookup(x)));\n }\n\n getMetadata() {\n return this.metadata;\n }\n\n\n getCached() {\n return this.cached;\n }\n\n getSchemas() {\n return uniq(this.metadata.filter((x => x.context === METATYPE_SCHEMA)).map(x => x.name));\n }\n\n getMetadatasForSchema(schema: string) {\n return this.metadata.filter((x => x.context === METATYPE_SCHEMA && x.name === schema));\n }\n\n\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/registry/MetadataRegistry.ts"],"names":[],"mappings":"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","file":"MetadataRegistry.js","sourcesContent":["import {assign, cloneDeep, defaults, isEmpty, isFunction, keys, merge, remove, uniq} from 'lodash';\n\n/**\n * Handler for metadata\n */\nimport {\n C_EVENT_ADD,\n C_EVENT_REMOVE,\n CLASS_TYPE, K_TRIGGERED,\n METADATA_REGISTRY,\n METADATA_TYPE,\n METATYPE_PROPERTY,\n METATYPE_SCHEMA\n} from './../Constants';\nimport {IEntityOptions} from './../options/IEntityOptions';\nimport {IPropertyOptions} from './../options/IPropertyOptions';\nimport {ISchemaOptions} from './../options/ISchemaOptions';\nimport {IObjectOptions} from './../options/IObjectOptions';\nimport {MetadataStorage} from '@allgemein/base';\nimport {EventEmitter} from 'events';\nimport {IAbstractOptions} from '../options/IAbstractOptions';\nimport {IAttributeOptions} from '../options/IAttributeOptions';\n\n/**\n * Registry for metadata of classes and there properties\n */\nexport class MetadataRegistry extends EventEmitter {\n\n private static INC = 0;\n\n private static $self: MetadataRegistry;\n\n private readonly metadata: IAbstractOptions[] = [];\n\n private readonly cached: IAbstractOptions[] = [];\n\n private schemas: string[] = [];\n\n private targets: any[] = [];\n\n\n constructor() {\n super();\n this.setMaxListeners(1000);\n this.targets = [];\n this.schemas = [];\n this.metadata = MetadataStorage.key(METADATA_REGISTRY);\n }\n\n\n static $() {\n if (!this.$self) {\n this.$self = new MetadataRegistry();\n }\n return this.$self;\n }\n\n\n static reset() {\n this.$self = null;\n }\n\n\n /**\n * Add typed element to the local registry\n *\n * @param context\n * @param options\n */\n add(context: METADATA_TYPE | string,\n options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions | IAttributeOptions,\n trigger: boolean = true) {\n options.metaType = context;\n\n // find?\n const id = MetadataRegistry.INC++;\n this.metadata.push(options);\n if (this.targets.indexOf(options.target) === -1) {\n this.targets.push(options.target);\n }\n if (context === METATYPE_SCHEMA) {\n if (this.schemas.indexOf(options.name) === -1) {\n this.schemas.push(options.name);\n }\n }\n\n if (trigger) {\n Object.defineProperty(options, K_TRIGGERED, {value: true});\n this.notify(C_EVENT_ADD, context, options);\n }\n\n return options;\n }\n\n /**\n * Add cached content mostly for ClassRef instances throw AbstractRef\n *\n * @param context\n * @param options\n */\n addCached(context: METADATA_TYPE | string,\n options: IEntityOptions | IPropertyOptions | ISchemaOptions | IObjectOptions | IAttributeOptions) {\n options.metaType = context;\n this.cached.push(options);\n return options;\n }\n\n notify(eventName: string, context: string, options: any) {\n this.emit(eventName, context, options);\n }\n\n\n remove(context: METADATA_TYPE | string, c: (x: any) => boolean, trigger: boolean = true) {\n const removed = remove(this.metadata, x => x.metaType === context && c(x));\n if (!isEmpty(removed) && trigger) {\n this.notify(C_EVENT_REMOVE, context, removed);\n }\n }\n\n // private update(context: METADATA_TYPE) {\n // this.emit(C_EVENT_UPDATE, {});\n // }\n\n getByContext<T extends IAbstractOptions>(context: METADATA_TYPE): T[] {\n return <T[]>this.metadata.filter(x =>\n x.metaType === context\n );\n }\n\n\n getTargets() {\n return this.targets;\n }\n\n /**\n * Return the metadata/options for some entry (entity/property/classref/...). A copy of the original will be delivered.\n *\n * @param context\n * @param target\n * @param attributes\n * @param propertyName\n */\n getByContextAndTarget<T extends IAbstractOptions>(context: METADATA_TYPE | string,\n target: CLASS_TYPE | string,\n attributes: 'merge' | 'assign' | 'defaults' = null,\n propertyName?: string): T[] {\n const data = <T[]>cloneDeep(this.metadata.filter(x =>\n x.metaType === context &&\n x.target === target &&\n (propertyName ? x.propertyName === propertyName : true)\n ));\n if (attributes && !isEmpty(data)) {\n this.mergeAttributes(context, target, data, attributes);\n }\n return data;\n }\n\n\n mergeAttributes(context: METADATA_TYPE | string,\n target: CLASS_TYPE | string,\n data: IPropertyOptions | IEntityOptions | IObjectOptions | ISchemaOptions,\n mode: 'merge' | 'assign' | 'defaults' = null) {\n let attributes: IAttributeOptions[] = [];\n if (context === METATYPE_PROPERTY) {\n // merge with properties\n attributes = this.getAttributesForTargetProperties(context, target);\n } else {\n attributes = this.getAttributesForTarget(context, target);\n }\n\n for (const attribute of attributes) {\n let toExtend = null;\n if (attribute.propertyName) {\n toExtend = data.find((x: IPropertyOptions) => x.metaType === METATYPE_PROPERTY && x.propertyName === attribute.propertyName);\n } else {\n toExtend = data.find((x: IAbstractOptions) => x.metaType === context);\n }\n if (toExtend) {\n switch (mode) {\n case 'assign':\n assign(toExtend, attribute.attributes);\n break;\n case 'merge':\n merge(toExtend, attribute.attributes);\n break;\n case 'defaults':\n defaults(toExtend, attribute.attributes);\n break;\n }\n\n }\n }\n }\n\n getAttributesForTarget<T extends IAttributeOptions>(context: METADATA_TYPE | string,\n target: CLASS_TYPE | string): T[] {\n return <T[]>cloneDeep(this.metadata.filter((x: IAttributeOptions) =>\n x.targetTypes &&\n !x.propertyName &&\n x.attributes &&\n x.targetTypes.includes(context) &&\n x.target === target\n ));\n }\n\n getAttributesForTargetProperty<T extends IAttributeOptions>(context: METADATA_TYPE,\n target: CLASS_TYPE,\n propertyName: string): T[] {\n return <T[]>cloneDeep(this.metadata.filter((x: IAttributeOptions) =>\n x.targetTypes &&\n x.propertyName === propertyName &&\n x.attributes &&\n x.targetTypes.includes(context) &&\n x.target === target\n ));\n }\n\n getAttributesForTargetProperties<T extends IAttributeOptions>(context: METADATA_TYPE, target: CLASS_TYPE | string): T[] {\n return cloneDeep(<T[]>this.metadata.filter((x: IAttributeOptions) =>\n x.targetTypes &&\n x.propertyName &&\n x.attributes &&\n x.targetTypes.includes(context) &&\n x.target === target\n ));\n }\n\n getByTarget(target: CLASS_TYPE) {\n return cloneDeep(this.metadata.filter(x =>\n x.target === target\n ));\n }\n\n private createSearchFunction(find: any) {\n let lookup = find;\n if (!isFunction(find)) {\n const _keys = keys(find);\n lookup = (x: any) => {\n return _keys.map(k => find[k] === x[k]).reduce((previousValue, currentValue) => previousValue && currentValue);\n };\n }\n return lookup;\n }\n\n\n find(context: METADATA_TYPE | string, find: CLASS_TYPE) {\n const lookup = this.createSearchFunction(find);\n return this.metadata.find((x => x.metaType === context && lookup(x)));\n }\n\n\n findCached(context: METADATA_TYPE | string, find: CLASS_TYPE) {\n const lookup = this.createSearchFunction(find);\n return this.cached.find((x => x.metaType === context && lookup(x)));\n }\n\n\n filter(context: METADATA_TYPE | string, find: CLASS_TYPE) {\n const lookup = this.createSearchFunction(find);\n return this.metadata.filter((x => x.context === context && lookup(x)));\n }\n\n getMetadata() {\n return this.metadata;\n }\n\n\n getCached() {\n return this.cached;\n }\n\n getSchemas() {\n return uniq(this.metadata.filter((x => x.context === METATYPE_SCHEMA)).map(x => x.name));\n }\n\n getMetadatasForSchema(schema: string) {\n return this.metadata.filter((x => x.context === METATYPE_SCHEMA && x.name === schema));\n }\n\n\n}\n"],"sourceRoot":"../.."}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ILookupRegistry } from '../../api/ILookupRegistry';
|
|
2
2
|
import { ClassType } from '../Constants';
|
|
3
|
+
import { IRegistryOptions } from './IRegistryOptions';
|
|
3
4
|
export declare class RegistryFactory {
|
|
4
5
|
static $types: {
|
|
5
6
|
pattern: string | RegExp;
|
|
@@ -13,7 +14,7 @@ export declare class RegistryFactory {
|
|
|
13
14
|
*
|
|
14
15
|
* @param namespace
|
|
15
16
|
*/
|
|
16
|
-
static get<T extends ILookupRegistry>(namespace?: string): T;
|
|
17
|
+
static get<T extends ILookupRegistry>(namespace?: string, options?: IRegistryOptions): T;
|
|
17
18
|
/**
|
|
18
19
|
* Remove registry from handles list
|
|
19
20
|
*
|