@allgemein/schema-api 1.5.12 → 1.5.13

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.
@@ -55,6 +55,6 @@ export declare class JsonSchema7Unserializer implements IJsonSchemaUnserializer
55
55
  onTypeString(dataPointer: any): any;
56
56
  parseInherits(classRef: IClassRef, data: IJsonSchema7, key: 'allOf' | 'anyOf'): Promise<void>;
57
57
  parseTypeObject(data: IJsonSchema7, options?: IParseOptions): Promise<IEntityRef | IClassRef>;
58
- collectAndProcess(data: IJsonSchema7, collectingObject: any, skipKeys: string[], collectorOptions: IParseOptions): void;
58
+ collectAndProcess(data: IJsonSchema7, collectingObject: any, skipKeys: string[], collectorOptions: IParseOptions): any;
59
59
  getClassNameFromRef(data: string): string;
60
60
  }
@@ -86,9 +86,11 @@ class JsonSchema7Unserializer {
86
86
  ret = {};
87
87
  ret[key] = data[key];
88
88
  }
89
- if ((0, lodash_1.has)(this.options, 'collector')) {
89
+ if ((0, lodash_1.has)(this.options, 'collector') && this.options.collector.length > 0) {
90
90
  const methods = this.options.collector.filter(x => x.type === type && x.key === key);
91
- ret = (0, lodash_1.assign)(ret, ...methods.map(e => e.fn(key, data, options)));
91
+ if (methods) {
92
+ ret = (0, lodash_1.assign)(ret, ...methods.map(e => e.fn(key, data, options)));
93
+ }
92
94
  }
93
95
  return ret;
94
96
  }
@@ -254,8 +256,8 @@ class JsonSchema7Unserializer {
254
256
  // isPattern: options.isPattern ? true : false
255
257
  };
256
258
  const dataPointer = data;
257
- const collectOptions = {};
258
- this.collectAndProcess(dataPointer, collectOptions, ['type', '$ref', '$schema', '$id'], parseOptions);
259
+ let collectOptions = {};
260
+ collectOptions = this.collectAndProcess(dataPointer, collectOptions, ['type', '$ref', '$schema', '$id'], parseOptions);
259
261
  (0, lodash_1.assign)(propOptions, collectOptions);
260
262
  if (dataPointer.$ref) {
261
263
  const ref = yield this.parse(dataPointer, parseOptions);
@@ -487,13 +489,16 @@ class JsonSchema7Unserializer {
487
489
  continue;
488
490
  }
489
491
  if (entry && (0, lodash_1.isObjectLike)(entry)) {
490
- (0, lodash_1.assign)(collectingObject, entry);
492
+ collectingObject = (0, lodash_1.assign)(collectingObject, entry);
491
493
  }
492
494
  }
493
- if ((0, lodash_1.has)(this.options, 'collector')) {
495
+ if ((0, lodash_1.has)(this.options, 'collector') && this.options.collector.length > 0) {
494
496
  const methods = this.options.collector.filter(x => x.type === type && (0, lodash_1.isUndefined)(x.key));
495
- (0, lodash_1.assign)(collectingObject, ...methods.map(e => e.fn(null, data, collectorOptions)));
497
+ if (methods.length > 0) {
498
+ collectingObject = (0, lodash_1.assign)(collectingObject, ...methods.map(e => e.fn(null, data, collectorOptions)));
499
+ }
496
500
  }
501
+ return collectingObject;
497
502
  }
498
503
  getClassNameFromRef(data) {
499
504
  return data.split(/#|\//).pop();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/json-schema/JsonSchema7Unserializer.ts"],"names":[],"mappings":"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","file":"JsonSchema7Unserializer.js","sourcesContent":["import {\n assign,\n camelCase,\n clone,\n defaults,\n get,\n has,\n isArray,\n isEmpty,\n isNull,\n isObjectLike,\n isString,\n isUndefined,\n keys,\n upperFirst\n} from 'lodash';\nimport {IJsonSchema7, IJsonSchema7Definition} from './JsonSchema7';\nimport {IClassRef} from '../../api/IClassRef';\nimport {IJsonSchemaUnserializeOptions} from './IJsonSchemaUnserializeOptions';\nimport {DRAFT_07} from './Constants';\nimport {IJsonSchemaUnserializer} from './IJsonSchemaUnserializer';\nimport {JsonSchema} from './JsonSchema';\nimport {RegistryFactory} from '../registry/RegistryFactory';\nimport {\n DEFAULT_NAMESPACE,\n K_PATTERN_PROPERTY,\n METADATA_TYPE,\n METATYPE_CLASS_REF,\n METATYPE_ENTITY,\n METATYPE_PROPERTY,\n T_ARRAY,\n T_OBJECT,\n T_STRING\n} from '../Constants';\nimport {IEntityRef, isEntityRef} from '../../api/IEntityRef';\nimport {IEntityOptions} from '../options/IEntityOptions';\nimport {ClassRef} from '../ClassRef';\nimport {NotSupportedError, NotYetImplementedError} from '@allgemein/base';\nimport {MetadataRegistry} from '../registry/MetadataRegistry';\nimport {IParseOptions, PARSE_OPTIONS_KEYS} from './IParseOptions';\nimport {IPropertyOptions} from '../options/IPropertyOptions';\nimport {IAbstractOptions} from '../options/IAbstractOptions';\nimport {SchemaUtils} from '../SchemaUtils';\nimport {IPropertyRef} from '../../api/IPropertyRef';\n\nconst skipKeys = ['$id', 'id', 'title', 'type', 'properties', 'allOf', 'anyOf', '$schema', 'patternProperties'];\n\nexport class JsonSchema7Unserializer implements IJsonSchemaUnserializer {\n\n version: string = DRAFT_07;\n\n options: IJsonSchemaUnserializeOptions;\n\n data: IJsonSchema7;\n\n classRefs: IClassRef[] = [];\n\n fetched: { [k: string]: IJsonSchema7 } = {};\n\n reference: { [k: string]: any } = {};\n\n constructor(opts: IJsonSchemaUnserializeOptions) {\n this.options = opts;\n }\n\n uri(): string {\n return `http://json-schema.org/${DRAFT_07}/schema`;\n }\n\n\n async unserialize(data: any): Promise<IClassRef | IEntityRef | (IClassRef | IEntityRef)[]> {\n this.data = data;\n const isRoot = get(this.options, 'rootAsEntity', true);\n const opts: any = {isRoot: isRoot};\n PARSE_OPTIONS_KEYS.forEach(x => {\n if (has(this.options, x)) {\n opts[x] = this.options[x];\n }\n });\n\n const ret = this.options.return ? this.options.return : 'default';\n return this.parse(data, opts).then(refs => {\n switch (ret) {\n case 'class-refs':\n return this.classRefs;\n case 'entity-refs':\n return this.classRefs.filter(x => x.hasEntityRef()).map(x => x.getEntityRef());\n default:\n return refs;\n }\n });\n }\n\n /**\n * Return namespace if set in passed options or if used in json-schema object.\n * If no match return default namespace\n */\n getNamespace() {\n return get(this.options, 'namespace', get(this.data, 'namespace', DEFAULT_NAMESPACE));\n }\n\n /**\n * Get registry containing elements\n */\n getRegistry() {\n return RegistryFactory.get(this.getNamespace());\n }\n\n\n /**\n * If collectors are defined use them before default\n *\n *\n * @param type\n * @param key\n * @param data\n * @param options\n * @private\n */\n private collectOptions(key: string, data: IJsonSchema7, options: IParseOptions = {}) {\n const type = get(options, 'metaType', METATYPE_ENTITY);\n let ret: any = null;\n if (!isUndefined(data[key]) || !isNull(data[key])) {\n ret = {};\n ret[key] = data[key];\n }\n\n if (has(this.options, 'collector')) {\n const methods = this.options.collector.filter(x => x.type === type && x.key === key);\n ret = assign(ret, ...methods.map(e => e.fn(key, data, options)));\n }\n return ret;\n }\n\n\n getClassRef(className: string | Function, namespace?: string) {\n if (!namespace) {\n namespace = this.getNamespace();\n }\n return ClassRef.get(className, namespace);\n }\n\n\n async parse(data: IJsonSchema7, options: IParseOptions = null): Promise<IClassRef | IEntityRef | (IClassRef | IEntityRef)[]> {\n let ret: IClassRef | IEntityRef | (IClassRef | IEntityRef)[] = null;\n if (data.type) {\n\n if (data.type === T_OBJECT) {\n ret = await this.parseTypeObject(data, options);\n if (options.$ref) {\n // finish reference if waiting\n this.reference[options.$ref] = ret;\n delete options.$ref;\n }\n\n if (this.hasProperties(data)) {\n await this.parseProperties(ret, data.properties, options);\n }\n if (this.hasPatternProperties(data)) {\n options.isPattern = true;\n await this.parseProperties(ret, data.patternProperties, options);\n }\n } else {\n throw new Error('type is not supported at this place');\n }\n\n } else if (data.$ref) {\n return this.parseRef(data, options);\n } else if (data.anyOf && options.isRoot) {\n // loading multi schema\n ret = [];\n for (const anyEntry of data.anyOf) {\n ret.push(await this.parse(anyEntry as any, options) as (IClassRef | IEntityRef));\n }\n } else {\n throw new Error('no valid schema element for further parse, key with name type or $ref must be present.');\n }\n return ret;\n }\n\n async parseRef(data: any, options: IParseOptions) {\n // refers\n let ret = null;\n if (has(this.reference, data.$ref)) {\n ret = this.reference[data.$ref];\n } else {\n const res = await this.followRef(data.$ref, this.data);\n const opts = clone(options);\n opts.$ref = data.$ref;\n if (!opts.className) {\n opts.className = this.getClassNameFromRef(data.$ref);\n }\n ret = await this.parse(res, opts);\n }\n return ret;\n }\n\n\n getDefinitionsKey(data: object) {\n for (const k of keys(data)) {\n if (k !== 'properties' && isObjectLike(data[k])) {\n const exists = keys(data[k]).find(x => has(data[k][x], 'type'));\n if (exists) {\n return k;\n }\n }\n }\n return 'definition';\n }\n\n\n async followRef($ref: string, data: IJsonSchema7): Promise<any> {\n let [addr, anchor] = $ref.split('#');\n\n if (!anchor) {\n anchor = '';\n }\n\n if (isEmpty(addr)) {\n // local\n if (isEmpty(anchor)) {\n if (data.$ref) {\n return this.followRef(data.$ref, data);\n } else {\n return data;\n }\n\n } else if (/^\\//.test(anchor)) {\n // starts with path\n const dottedPath = anchor.substr(1).replace(/\\//, '.');\n const entry = get(data, dottedPath, null);\n if (entry) {\n return entry;\n }\n } else {\n // refs to local id\n const refHashed = '#' + anchor;\n if (data.$id === refHashed) {\n return data;\n } else {\n const defKey = this.getDefinitionsKey(data);\n if (data[defKey]) {\n for (const k of keys(data[defKey])) {\n const x = data[defKey][k] as IJsonSchema7;\n if (x && x.$id && x.$id === refHashed) {\n return x;\n }\n }\n }\n }\n }\n } else {\n // remote fetch url\n if (!this.fetched[addr]) {\n this.fetched[addr] = await JsonSchema.request(addr, {cwd: this.options.cwd});\n }\n return this.followRef('#' + anchor, this.fetched[addr]);\n\n }\n // TODO create exception\n throw new Error($ref + ' not found');\n }\n\n\n async parseProperties(classRef: IClassRef | IEntityRef, properties: { [propertyName: string]: IJsonSchema7Definition }, options: IParseOptions = null) {\n const _classRef = isEntityRef(classRef) ? classRef.getClassRef() : classRef;\n const propertyNames = keys(properties);\n for (const propertyName of propertyNames) {\n await this.parseProperty(_classRef, propertyName, properties[propertyName], options);\n }\n }\n\n\n async parseProperty(classRef: IClassRef | IEntityRef, propertyName: string, data: IJsonSchema7Definition, options: IParseOptions = null) {\n const _classRef = isEntityRef(classRef) ? classRef.getClassRef() : classRef;\n\n const propRefExits = _classRef.getRegistry().find(METATYPE_PROPERTY, (x: IPropertyRef) => x.getClassRef() === _classRef && x.name === propertyName);\n\n const propOptions: IPropertyOptions = {\n metaType: METATYPE_PROPERTY,\n propertyName: propertyName,\n target: _classRef.getClass(true),\n // default type is object\n type: T_OBJECT,\n };\n if (options.isPattern) {\n propOptions[K_PATTERN_PROPERTY] = true;\n }\n\n if (isObjectLike(data)) {\n const parseOptions: IParseOptions = {\n isProperty: true,\n sourceRef: _classRef,\n propertyName: propertyName,\n isRoot: false,\n metaType: 'property',\n // isPattern: options.isPattern ? true : false\n };\n const dataPointer = data as IJsonSchema7;\n const collectOptions = {};\n\n this.collectAndProcess(dataPointer, collectOptions, ['type', '$ref', '$schema', '$id'], parseOptions);\n assign(propOptions, collectOptions);\n if (dataPointer.$ref) {\n const ref = await this.parse(dataPointer, parseOptions);\n propOptions.type = ref;\n if (options.isPattern) {\n propOptions[K_PATTERN_PROPERTY] = true;\n }\n } else if (dataPointer.type) {\n await this.onTypes(dataPointer, propOptions, parseOptions);\n }\n } else {\n // boolean\n throw new NotSupportedError('passed boolean value as definition not supported');\n }\n\n if (!propRefExits || get(this.options, 'forcePropertyRefCreation', false)) {\n // remove properties key if exists\n delete propOptions.properties;\n _classRef.getRegistry().create(METATYPE_PROPERTY, propOptions);\n }\n\n }\n\n\n hasProperties(datapointer: any) {\n return has(datapointer, 'properties');\n }\n\n hasPatternProperties(datapointer: any) {\n return has(datapointer, 'patternProperties');\n }\n\n async onTypes(dataPointer: IJsonSchema7, propOptions: IPropertyOptions, options: IParseOptions) {\n let type = dataPointer.type as string;\n if (isString(type)) {\n type = type.toLowerCase();\n }\n switch (type) {\n case T_STRING:\n const res = this.onTypeString(dataPointer);\n assign(propOptions, res);\n break;\n case 'boolean':\n propOptions.type = 'boolean';\n break;\n case 'integer':\n propOptions.type = 'number';\n break;\n case 'number':\n propOptions.type = 'number';\n break;\n case T_OBJECT:\n propOptions.type = T_OBJECT;\n if (this.hasProperties(dataPointer) || this.hasPatternProperties(dataPointer)) {\n propOptions.type = await this.parse(dataPointer, options);\n }\n break;\n case T_ARRAY:\n // check items\n if (dataPointer.minItems || dataPointer.maxItems) {\n propOptions.cardinality = {\n min: get(dataPointer, 'minItems', 0),\n max: get(dataPointer, 'maxItems', 0),\n };\n } else {\n propOptions.cardinality = 0;\n }\n\n if (dataPointer.items) {\n\n if (isArray(dataPointer.items)) {\n throw new NotSupportedError('tuple values for array is not supported');\n } else if (isObjectLike(dataPointer.items)) {\n options.asArray = true;\n const items = dataPointer.items as IJsonSchema7;\n if (items.$ref) {\n propOptions.type = await this.parse(items as IJsonSchema7, options);\n } else if (items.type === T_OBJECT) {\n propOptions.type = items.type;\n if (this.hasProperties(items) || this.hasPatternProperties(items)) {\n propOptions.type = await this.parse(items as IJsonSchema7, options);\n }\n } else {\n propOptions.type = items.type;\n }\n if (options.isPattern) {\n propOptions[K_PATTERN_PROPERTY] = true;\n }\n }\n }\n break;\n case 'null':\n throw new NotSupportedError('null value is not supported for property');\n }\n }\n\n\n onTypeString(dataPointer: any) {\n const propOptions: any = {};\n propOptions.type = T_STRING;\n // or date check format\n if (dataPointer.format) {\n propOptions.format = dataPointer.format;\n switch (dataPointer.format) {\n case 'date-time':\n // set date type\n propOptions.type = 'date';\n break;\n case 'date':\n // set date type\n propOptions.type = 'date';\n break;\n }\n }\n return propOptions;\n }\n\n\n async parseInherits(classRef: IClassRef, data: IJsonSchema7, key: 'allOf' | 'anyOf') {\n if (has(data, key)) {\n const values = data[key];\n if (isArray(values)) {\n for (const inheritEntry of values) {\n const extend = await this.parse(inheritEntry as IJsonSchema7, {isRoot: false}) as IClassRef;\n classRef.addExtend(extend);\n }\n } else {\n throw new NotSupportedError('only array is allowed for ' + key);\n }\n }\n }\n\n\n async parseTypeObject(data: IJsonSchema7, options: IParseOptions = null) {\n let ret: IClassRef | IEntityRef = null;\n\n const id = get(data, '$id', get(data, 'id', null));\n let metaType: METADATA_TYPE = options.isRoot || !isEmpty(id) ? METATYPE_ENTITY : METATYPE_CLASS_REF;\n\n const title = get(data, 'title', null);\n // get namespace or override\n const namespace = get(data, 'namespace', this.getNamespace());\n // check if class ref exists else create one or recreate if parse options are set\n let classRef: IClassRef = null;\n let className = null;\n if (options) {\n if (options.className) {\n className = options.className;\n }\n if (options.ref) {\n classRef = options.ref;\n className = options.ref.name;\n }\n }\n\n // title data override passed className\n if (title) {\n if (!className || !get(this.options, 'ignoreDeclared', false)) {\n className = upperFirst(camelCase(title));\n }\n }\n\n if (!className && options?.isProperty && options.propertyName) {\n if (get(this.options, 'prependClass', false)) {\n className = [options.sourceRef.name, options.propertyName].map(x => upperFirst(camelCase(x))).join('');\n } else {\n className = upperFirst(camelCase(options.propertyName));\n }\n\n }\n\n if (className && !classRef) {\n const fn = get(this.options, 'forceClassRefCreation', false) ? SchemaUtils.clazz(className) : className;\n classRef = this.getClassRef(fn, namespace);\n }\n\n if (!classRef) {\n metaType = METATYPE_CLASS_REF;\n classRef = this.getClassRef(SchemaUtils.clazzAnonymous(), namespace);\n }\n\n // TODO check extentions!\n for (const inheritsKey of ['allOf', 'anyOf']) {\n if (has(data, inheritsKey)) {\n await this.parseInherits(classRef, data, inheritsKey as any);\n }\n }\n\n if (classRef) {\n // a named class ref exists\n if (!this.classRefs.find(x => x === classRef)) {\n this.classRefs.push(classRef);\n }\n const clazz = classRef.getClass(true);\n const refOptions: IEntityOptions = {\n name: classRef.name,\n namespace: this.getNamespace(),\n target: clazz\n };\n\n const collectorOptions = clone(options);\n collectorOptions.metaType = metaType;\n collectorOptions.ref = classRef;\n this.collectAndProcess(data, refOptions, skipKeys, collectorOptions);\n\n metaType = collectorOptions.metaType;\n\n let entityOptions = MetadataRegistry.$().find(metaType, (x: IAbstractOptions) => x.target === clazz);\n if (entityOptions) {\n // merge existing\n assign(entityOptions, refOptions);\n } else {\n entityOptions = refOptions;\n refOptions.metaType = METATYPE_CLASS_REF;\n const existingOptions = classRef.getOptions();\n\n classRef.setOptions(defaults(refOptions, existingOptions));\n }\n\n if (metaType === METATYPE_ENTITY) {\n ret = this.getRegistry().find(metaType, (x: IEntityRef) => x.getClassRef() === classRef);\n if (!ret || get(this.options, 'forceEntityRefCreation', false)) {\n ret = this.getRegistry().create(metaType, entityOptions);\n }\n } else {\n ret = classRef;\n }\n\n } else {\n throw new NotYetImplementedError();\n }\n return ret;\n }\n\n\n collectAndProcess(data: IJsonSchema7,\n collectingObject: any,\n skipKeys: string[],\n collectorOptions: IParseOptions\n ) {\n const type = get(collectorOptions, 'metaType', METATYPE_ENTITY);\n const _keys = keys(data);\n for (const key of _keys) {\n const entry = this.collectOptions(key, data, collectorOptions);\n if (skipKeys.includes(key)) {\n continue;\n }\n if (entry && isObjectLike(entry)) {\n assign(collectingObject, entry);\n }\n }\n if (has(this.options, 'collector')) {\n const methods = this.options.collector.filter(x => x.type === type && isUndefined(x.key));\n assign(collectingObject, ...methods.map(e => e.fn(null, data, collectorOptions)));\n }\n }\n\n getClassNameFromRef(data: string) {\n return data.split(/#|\\//).pop();\n }\n\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../../src/lib/json-schema/JsonSchema7Unserializer.ts"],"names":[],"mappings":"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","file":"JsonSchema7Unserializer.js","sourcesContent":["import {\n assign,\n camelCase,\n clone,\n defaults,\n get,\n has,\n isArray,\n isEmpty,\n isNull,\n isObjectLike,\n isString,\n isUndefined,\n keys,\n upperFirst\n} from 'lodash';\nimport {IJsonSchema7, IJsonSchema7Definition} from './JsonSchema7';\nimport {IClassRef} from '../../api/IClassRef';\nimport {IJsonSchemaUnserializeOptions} from './IJsonSchemaUnserializeOptions';\nimport {DRAFT_07} from './Constants';\nimport {IJsonSchemaUnserializer} from './IJsonSchemaUnserializer';\nimport {JsonSchema} from './JsonSchema';\nimport {RegistryFactory} from '../registry/RegistryFactory';\nimport {\n DEFAULT_NAMESPACE,\n K_PATTERN_PROPERTY,\n METADATA_TYPE,\n METATYPE_CLASS_REF,\n METATYPE_ENTITY,\n METATYPE_PROPERTY,\n T_ARRAY,\n T_OBJECT,\n T_STRING\n} from '../Constants';\nimport {IEntityRef, isEntityRef} from '../../api/IEntityRef';\nimport {IEntityOptions} from '../options/IEntityOptions';\nimport {ClassRef} from '../ClassRef';\nimport {NotSupportedError, NotYetImplementedError} from '@allgemein/base';\nimport {MetadataRegistry} from '../registry/MetadataRegistry';\nimport {IParseOptions, PARSE_OPTIONS_KEYS} from './IParseOptions';\nimport {IPropertyOptions} from '../options/IPropertyOptions';\nimport {IAbstractOptions} from '../options/IAbstractOptions';\nimport {SchemaUtils} from '../SchemaUtils';\nimport {IPropertyRef} from '../../api/IPropertyRef';\n\nconst skipKeys = ['$id', 'id', 'title', 'type', 'properties', 'allOf', 'anyOf', '$schema', 'patternProperties'];\n\nexport class JsonSchema7Unserializer implements IJsonSchemaUnserializer {\n\n version: string = DRAFT_07;\n\n options: IJsonSchemaUnserializeOptions;\n\n data: IJsonSchema7;\n\n classRefs: IClassRef[] = [];\n\n fetched: { [k: string]: IJsonSchema7 } = {};\n\n reference: { [k: string]: any } = {};\n\n constructor(opts: IJsonSchemaUnserializeOptions) {\n this.options = opts;\n }\n\n uri(): string {\n return `http://json-schema.org/${DRAFT_07}/schema`;\n }\n\n\n async unserialize(data: any): Promise<IClassRef | IEntityRef | (IClassRef | IEntityRef)[]> {\n this.data = data;\n const isRoot = get(this.options, 'rootAsEntity', true);\n const opts: any = {isRoot: isRoot};\n PARSE_OPTIONS_KEYS.forEach(x => {\n if (has(this.options, x)) {\n opts[x] = this.options[x];\n }\n });\n\n const ret = this.options.return ? this.options.return : 'default';\n return this.parse(data, opts).then(refs => {\n switch (ret) {\n case 'class-refs':\n return this.classRefs;\n case 'entity-refs':\n return this.classRefs.filter(x => x.hasEntityRef()).map(x => x.getEntityRef());\n default:\n return refs;\n }\n });\n }\n\n /**\n * Return namespace if set in passed options or if used in json-schema object.\n * If no match return default namespace\n */\n getNamespace() {\n return get(this.options, 'namespace', get(this.data, 'namespace', DEFAULT_NAMESPACE));\n }\n\n /**\n * Get registry containing elements\n */\n getRegistry() {\n return RegistryFactory.get(this.getNamespace());\n }\n\n\n /**\n * If collectors are defined use them before default\n *\n *\n * @param type\n * @param key\n * @param data\n * @param options\n * @private\n */\n private collectOptions(key: string, data: IJsonSchema7, options: IParseOptions = {}) {\n const type = get(options, 'metaType', METATYPE_ENTITY);\n let ret: any = null;\n if (!isUndefined(data[key]) || !isNull(data[key])) {\n ret = {};\n ret[key] = data[key];\n }\n\n if (has(this.options, 'collector') && this.options.collector.length > 0) {\n const methods = this.options.collector.filter(x => x.type === type && x.key === key);\n if(methods){\n ret = assign(ret, ...methods.map(e => e.fn(key, data, options)));\n }\n }\n return ret;\n }\n\n\n getClassRef(className: string | Function, namespace?: string) {\n if (!namespace) {\n namespace = this.getNamespace();\n }\n return ClassRef.get(className, namespace);\n }\n\n\n async parse(data: IJsonSchema7, options: IParseOptions = null): Promise<IClassRef | IEntityRef | (IClassRef | IEntityRef)[]> {\n let ret: IClassRef | IEntityRef | (IClassRef | IEntityRef)[] = null;\n if (data.type) {\n\n if (data.type === T_OBJECT) {\n ret = await this.parseTypeObject(data, options);\n if (options.$ref) {\n // finish reference if waiting\n this.reference[options.$ref] = ret;\n delete options.$ref;\n }\n\n if (this.hasProperties(data)) {\n await this.parseProperties(ret, data.properties, options);\n }\n if (this.hasPatternProperties(data)) {\n options.isPattern = true;\n await this.parseProperties(ret, data.patternProperties, options);\n }\n } else {\n throw new Error('type is not supported at this place');\n }\n\n } else if (data.$ref) {\n return this.parseRef(data, options);\n } else if (data.anyOf && options.isRoot) {\n // loading multi schema\n ret = [];\n for (const anyEntry of data.anyOf) {\n ret.push(await this.parse(anyEntry as any, options) as (IClassRef | IEntityRef));\n }\n } else {\n throw new Error('no valid schema element for further parse, key with name type or $ref must be present.');\n }\n return ret;\n }\n\n async parseRef(data: any, options: IParseOptions) {\n // refers\n let ret = null;\n if (has(this.reference, data.$ref)) {\n ret = this.reference[data.$ref];\n } else {\n const res = await this.followRef(data.$ref, this.data);\n const opts = clone(options);\n opts.$ref = data.$ref;\n if (!opts.className) {\n opts.className = this.getClassNameFromRef(data.$ref);\n }\n ret = await this.parse(res, opts);\n }\n return ret;\n }\n\n\n getDefinitionsKey(data: object) {\n for (const k of keys(data)) {\n if (k !== 'properties' && isObjectLike(data[k])) {\n const exists = keys(data[k]).find(x => has(data[k][x], 'type'));\n if (exists) {\n return k;\n }\n }\n }\n return 'definition';\n }\n\n\n async followRef($ref: string, data: IJsonSchema7): Promise<any> {\n let [addr, anchor] = $ref.split('#');\n\n if (!anchor) {\n anchor = '';\n }\n\n if (isEmpty(addr)) {\n // local\n if (isEmpty(anchor)) {\n if (data.$ref) {\n return this.followRef(data.$ref, data);\n } else {\n return data;\n }\n\n } else if (/^\\//.test(anchor)) {\n // starts with path\n const dottedPath = anchor.substr(1).replace(/\\//, '.');\n const entry = get(data, dottedPath, null);\n if (entry) {\n return entry;\n }\n } else {\n // refs to local id\n const refHashed = '#' + anchor;\n if (data.$id === refHashed) {\n return data;\n } else {\n const defKey = this.getDefinitionsKey(data);\n if (data[defKey]) {\n for (const k of keys(data[defKey])) {\n const x = data[defKey][k] as IJsonSchema7;\n if (x && x.$id && x.$id === refHashed) {\n return x;\n }\n }\n }\n }\n }\n } else {\n // remote fetch url\n if (!this.fetched[addr]) {\n this.fetched[addr] = await JsonSchema.request(addr, {cwd: this.options.cwd});\n }\n return this.followRef('#' + anchor, this.fetched[addr]);\n\n }\n // TODO create exception\n throw new Error($ref + ' not found');\n }\n\n\n async parseProperties(classRef: IClassRef | IEntityRef, properties: { [propertyName: string]: IJsonSchema7Definition }, options: IParseOptions = null) {\n const _classRef = isEntityRef(classRef) ? classRef.getClassRef() : classRef;\n const propertyNames = keys(properties);\n for (const propertyName of propertyNames) {\n await this.parseProperty(_classRef, propertyName, properties[propertyName], options);\n }\n }\n\n\n async parseProperty(classRef: IClassRef | IEntityRef, propertyName: string, data: IJsonSchema7Definition, options: IParseOptions = null) {\n const _classRef = isEntityRef(classRef) ? classRef.getClassRef() : classRef;\n\n const propRefExits = _classRef.getRegistry().find(METATYPE_PROPERTY, (x: IPropertyRef) => x.getClassRef() === _classRef && x.name === propertyName);\n\n const propOptions: IPropertyOptions = {\n metaType: METATYPE_PROPERTY,\n propertyName: propertyName,\n target: _classRef.getClass(true),\n // default type is object\n type: T_OBJECT,\n };\n if (options.isPattern) {\n propOptions[K_PATTERN_PROPERTY] = true;\n }\n\n if (isObjectLike(data)) {\n const parseOptions: IParseOptions = {\n isProperty: true,\n sourceRef: _classRef,\n propertyName: propertyName,\n isRoot: false,\n metaType: 'property',\n // isPattern: options.isPattern ? true : false\n };\n const dataPointer = data as IJsonSchema7;\n let collectOptions = {};\n collectOptions = this.collectAndProcess(dataPointer, collectOptions, ['type', '$ref', '$schema', '$id'], parseOptions);\n assign(propOptions, collectOptions);\n if (dataPointer.$ref) {\n const ref = await this.parse(dataPointer, parseOptions);\n propOptions.type = ref;\n if (options.isPattern) {\n propOptions[K_PATTERN_PROPERTY] = true;\n }\n } else if (dataPointer.type) {\n await this.onTypes(dataPointer, propOptions, parseOptions);\n }\n } else {\n // boolean\n throw new NotSupportedError('passed boolean value as definition not supported');\n }\n\n if (!propRefExits || get(this.options, 'forcePropertyRefCreation', false)) {\n // remove properties key if exists\n delete propOptions.properties;\n _classRef.getRegistry().create(METATYPE_PROPERTY, propOptions);\n }\n\n }\n\n\n hasProperties(datapointer: any) {\n return has(datapointer, 'properties');\n }\n\n hasPatternProperties(datapointer: any) {\n return has(datapointer, 'patternProperties');\n }\n\n async onTypes(dataPointer: IJsonSchema7, propOptions: IPropertyOptions, options: IParseOptions) {\n let type = dataPointer.type as string;\n if (isString(type)) {\n type = type.toLowerCase();\n }\n switch (type) {\n case T_STRING:\n const res = this.onTypeString(dataPointer);\n assign(propOptions, res);\n break;\n case 'boolean':\n propOptions.type = 'boolean';\n break;\n case 'integer':\n propOptions.type = 'number';\n break;\n case 'number':\n propOptions.type = 'number';\n break;\n case T_OBJECT:\n propOptions.type = T_OBJECT;\n if (this.hasProperties(dataPointer) || this.hasPatternProperties(dataPointer)) {\n propOptions.type = await this.parse(dataPointer, options);\n }\n break;\n case T_ARRAY:\n // check items\n if (dataPointer.minItems || dataPointer.maxItems) {\n propOptions.cardinality = {\n min: get(dataPointer, 'minItems', 0),\n max: get(dataPointer, 'maxItems', 0),\n };\n } else {\n propOptions.cardinality = 0;\n }\n\n if (dataPointer.items) {\n\n if (isArray(dataPointer.items)) {\n throw new NotSupportedError('tuple values for array is not supported');\n } else if (isObjectLike(dataPointer.items)) {\n options.asArray = true;\n const items = dataPointer.items as IJsonSchema7;\n if (items.$ref) {\n propOptions.type = await this.parse(items as IJsonSchema7, options);\n } else if (items.type === T_OBJECT) {\n propOptions.type = items.type;\n if (this.hasProperties(items) || this.hasPatternProperties(items)) {\n propOptions.type = await this.parse(items as IJsonSchema7, options);\n }\n } else {\n propOptions.type = items.type;\n }\n if (options.isPattern) {\n propOptions[K_PATTERN_PROPERTY] = true;\n }\n }\n }\n break;\n case 'null':\n throw new NotSupportedError('null value is not supported for property');\n }\n }\n\n\n onTypeString(dataPointer: any) {\n const propOptions: any = {};\n propOptions.type = T_STRING;\n // or date check format\n if (dataPointer.format) {\n propOptions.format = dataPointer.format;\n switch (dataPointer.format) {\n case 'date-time':\n // set date type\n propOptions.type = 'date';\n break;\n case 'date':\n // set date type\n propOptions.type = 'date';\n break;\n }\n }\n return propOptions;\n }\n\n\n async parseInherits(classRef: IClassRef, data: IJsonSchema7, key: 'allOf' | 'anyOf') {\n if (has(data, key)) {\n const values = data[key];\n if (isArray(values)) {\n for (const inheritEntry of values) {\n const extend = await this.parse(inheritEntry as IJsonSchema7, {isRoot: false}) as IClassRef;\n classRef.addExtend(extend);\n }\n } else {\n throw new NotSupportedError('only array is allowed for ' + key);\n }\n }\n }\n\n\n async parseTypeObject(data: IJsonSchema7, options: IParseOptions = null) {\n let ret: IClassRef | IEntityRef = null;\n\n const id = get(data, '$id', get(data, 'id', null));\n let metaType: METADATA_TYPE = options.isRoot || !isEmpty(id) ? METATYPE_ENTITY : METATYPE_CLASS_REF;\n\n const title = get(data, 'title', null);\n // get namespace or override\n const namespace = get(data, 'namespace', this.getNamespace());\n // check if class ref exists else create one or recreate if parse options are set\n let classRef: IClassRef = null;\n let className = null;\n if (options) {\n if (options.className) {\n className = options.className;\n }\n if (options.ref) {\n classRef = options.ref;\n className = options.ref.name;\n }\n }\n\n // title data override passed className\n if (title) {\n if (!className || !get(this.options, 'ignoreDeclared', false)) {\n className = upperFirst(camelCase(title));\n }\n }\n\n if (!className && options?.isProperty && options.propertyName) {\n if (get(this.options, 'prependClass', false)) {\n className = [options.sourceRef.name, options.propertyName].map(x => upperFirst(camelCase(x))).join('');\n } else {\n className = upperFirst(camelCase(options.propertyName));\n }\n\n }\n\n if (className && !classRef) {\n const fn = get(this.options, 'forceClassRefCreation', false) ? SchemaUtils.clazz(className) : className;\n classRef = this.getClassRef(fn, namespace);\n }\n\n if (!classRef) {\n metaType = METATYPE_CLASS_REF;\n classRef = this.getClassRef(SchemaUtils.clazzAnonymous(), namespace);\n }\n\n // TODO check extentions!\n for (const inheritsKey of ['allOf', 'anyOf']) {\n if (has(data, inheritsKey)) {\n await this.parseInherits(classRef, data, inheritsKey as any);\n }\n }\n\n if (classRef) {\n // a named class ref exists\n if (!this.classRefs.find(x => x === classRef)) {\n this.classRefs.push(classRef);\n }\n const clazz = classRef.getClass(true);\n const refOptions: IEntityOptions = {\n name: classRef.name,\n namespace: this.getNamespace(),\n target: clazz\n };\n\n const collectorOptions = clone(options);\n collectorOptions.metaType = metaType;\n collectorOptions.ref = classRef;\n this.collectAndProcess(data, refOptions, skipKeys, collectorOptions);\n\n metaType = collectorOptions.metaType;\n\n let entityOptions = MetadataRegistry.$().find(metaType, (x: IAbstractOptions) => x.target === clazz);\n if (entityOptions) {\n // merge existing\n assign(entityOptions, refOptions);\n } else {\n entityOptions = refOptions;\n refOptions.metaType = METATYPE_CLASS_REF;\n const existingOptions = classRef.getOptions();\n\n classRef.setOptions(defaults(refOptions, existingOptions));\n }\n\n if (metaType === METATYPE_ENTITY) {\n ret = this.getRegistry().find(metaType, (x: IEntityRef) => x.getClassRef() === classRef);\n if (!ret || get(this.options, 'forceEntityRefCreation', false)) {\n ret = this.getRegistry().create(metaType, entityOptions);\n }\n } else {\n ret = classRef;\n }\n\n } else {\n throw new NotYetImplementedError();\n }\n return ret;\n }\n\n\n collectAndProcess(data: IJsonSchema7,\n collectingObject: any,\n skipKeys: string[],\n collectorOptions: IParseOptions\n ) {\n const type = get(collectorOptions, 'metaType', METATYPE_ENTITY);\n const _keys = keys(data);\n for (const key of _keys) {\n const entry = this.collectOptions(key, data, collectorOptions);\n if (skipKeys.includes(key)) {\n continue;\n }\n if (entry && isObjectLike(entry)) {\n collectingObject = assign(collectingObject, entry);\n }\n }\n if (has(this.options, 'collector') && this.options.collector.length > 0) {\n const methods = this.options.collector.filter(x => x.type === type && isUndefined(x.key));\n if(methods.length > 0){\n collectingObject = assign(collectingObject, ...methods.map(e => e.fn(null, data, collectorOptions)));\n }\n }\n return collectingObject;\n }\n\n getClassNameFromRef(data: string) {\n return data.split(/#|\\//).pop();\n }\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/registry/AbstractRegistry.ts"],"names":[],"mappings":"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","file":"AbstractRegistry.js","sourcesContent":["import {snakeCase} from 'lodash';\nimport {EventEmitter} from 'events';\nimport {METADATA_TYPE, METATYPE_ENTITY, METATYPE_PROPERTY} from './../Constants';\nimport {ILookupRegistry} from '../../api/ILookupRegistry';\nimport {IEntityRef} from '../../api/IEntityRef';\nimport {IClassRef} from '../../api/IClassRef';\nimport {IPropertyRef} from '../../api/IPropertyRef';\nimport {LookupRegistry} from '../LookupRegistry';\nimport {LockFactory, NotSupportedError, Semaphore} from '@allgemein/base';\nimport {ISchemaRef} from '../../api/ISchemaRef';\nimport {IRegistryOptions} from './IRegistryOptions';\n\n\n/**\n * Registry for metadata of classes and there properties\n */\nexport abstract class AbstractRegistry extends EventEmitter implements ILookupRegistry {\n\n protected readonly namespace: string;\n\n readonly lock: Semaphore;\n\n readonly options: IRegistryOptions;\n\n\n constructor(namespace: string, options?: IRegistryOptions) {\n super();\n this.namespace = namespace;\n this.options = options || {};\n this.lock = LockFactory.$().semaphore(1);\n }\n\n ready(timeout?: number): Promise<boolean> {\n return this.lock.await(timeout).then(x => true).catch(x => false);\n }\n\n // /**\n // * Initialize events for metadata changes on runtime\n // */\n // prepare() {\n // MetadataRegistry.$().on(C_EVENT_ADD, this.onAdd.bind(this));\n // MetadataRegistry.$().on(C_EVENT_REMOVE, this.onRemove.bind(this));\n // MetadataRegistry.$().on(C_EVENT_UPDATE, this.onUpdate.bind(this));\n // }\n\n\n getOptions(): IRegistryOptions {\n return this.options;\n }\n\n /**\n * Return all registered schema references\n *\n * @param ref\n * @return ISchemaRef[]\n */\n getSchemaRefs<T extends ISchemaRef>(filter?: (x: ISchemaRef) => boolean): (T | ISchemaRef)[] {\n throw new NotSupportedError('');\n }\n\n /**\n * Return schema references for an given entity or class reference\n *\n * @param ref\n * @return ISchemaRef[]\n */\n getSchemaRefsFor<T extends ISchemaRef>(ref: string): T | ISchemaRef;\n getSchemaRefsFor<T extends ISchemaRef>(ref: string | IEntityRef | IClassRef): T | ISchemaRef | (T | ISchemaRef)[] {\n throw new NotSupportedError('');\n }\n\n /**\n * TODO\n *\n * @param filter\n */\n getEntityRefs<T extends IEntityRef>(filter?: (x: IEntityRef) => boolean): (T | IEntityRef)[] {\n return this.filter(METATYPE_ENTITY, filter);\n }\n\n /**\n * Can get get entity ref for function.\n *\n * @param fn\n */\n getEntityRefFor<T extends IEntityRef>(fn: string | object | Function, skipNsCheck: boolean = true): (T | IEntityRef) {\n throw new NotSupportedError('');\n }\n\n\n /**\n * Returns the used instance of lookup registry handler\n */\n getLookupRegistry(): LookupRegistry {\n return LookupRegistry.$(this.namespace);\n }\n\n /**\n * Method for returning class ref\n *\n * @param object\n * @param type\n */\n getClassRefFor(object: string | Function | IClassRef, type: METADATA_TYPE): IClassRef {\n throw new NotSupportedError('');\n }\n\n /**\n * Returns property by name for a given class or entity ref\n *\n * @param filter\n */\n getPropertyRef<T extends IPropertyRef>(ref: IClassRef | IEntityRef, name: string): (T | IPropertyRef) {\n return this.getPropertyRefs<T>(ref).find(x => snakeCase(x.name) === snakeCase(name));\n }\n\n\n /**\n * Returns all properties for given class or entity ref\n *\n * @param ref\n */\n getPropertyRefs<T extends IPropertyRef>(ref: IClassRef | IEntityRef): (T | IPropertyRef)[] {\n throw new NotSupportedError('');\n }\n\n\n getPropertyRefsFor<T extends IPropertyRef>(fn: string | object | Function): (T | IPropertyRef)[] {\n throw new NotSupportedError('');\n }\n\n\n list<X>(type: METADATA_TYPE, filter?: (x: any) => boolean): X[] {\n return this.filter(type, filter);\n }\n\n\n listEntities(filter?: (x: IEntityRef) => boolean): IEntityRef[] {\n return this.getEntityRefs(filter);\n }\n\n\n listProperties(filter?: (x: IPropertyRef) => boolean): IPropertyRef[] {\n return this.filter(METATYPE_PROPERTY, filter);\n }\n\n\n create<T>(context: string, options: any): T {\n throw new NotSupportedError('');\n }\n\n /**\n * TODO\n */\n add<T>(context: string, entry: T): T {\n return this.getLookupRegistry().add(context, entry);\n }\n\n\n /**\n * TODO\n */\n filter<T>(context: string, search: any): T[] {\n return this.getLookupRegistry().filter(context, search);\n }\n\n /**\n * TODO\n */\n find<T>(context: string, search: any): T {\n return this.getLookupRegistry().find(context, search);\n }\n\n /**\n * TODO\n */\n remove<T>(context: string, search: any): T[] {\n return this.getLookupRegistry().remove(context, search);\n }\n\n /**\n * reset current registry\n */\n reset() {\n this.clear();\n }\n\n clear() {\n LookupRegistry.reset(this.namespace);\n }\n\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../../src/lib/registry/AbstractRegistry.ts"],"names":[],"mappings":"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","file":"AbstractRegistry.js","sourcesContent":["import {snakeCase} from 'lodash';\nimport {EventEmitter} from 'events';\nimport {METADATA_TYPE, METATYPE_ENTITY, METATYPE_PROPERTY} from './../Constants';\nimport {ILookupRegistry} from '../../api/ILookupRegistry';\nimport {IEntityRef} from '../../api/IEntityRef';\nimport {IClassRef} from '../../api/IClassRef';\nimport {IPropertyRef} from '../../api/IPropertyRef';\nimport {LookupRegistry} from '../LookupRegistry';\nimport {LockFactory, NotSupportedError, Semaphore} from '@allgemein/base';\nimport {ISchemaRef} from '../../api/ISchemaRef';\nimport {IRegistryOptions} from './IRegistryOptions';\n\n\n/**\n * Registry for metadata of classes and there properties\n */\nexport abstract class AbstractRegistry extends EventEmitter implements ILookupRegistry {\n\n protected readonly namespace: string;\n\n readonly lock: Semaphore;\n\n readonly options: IRegistryOptions;\n\n\n constructor(namespace: string, options?: IRegistryOptions) {\n super();\n this.namespace = namespace;\n this.options = options || {};\n this.lock = LockFactory.$().semaphore(1);\n }\n\n ready(timeout?: number): Promise<boolean> {\n return this.lock.await(timeout).then(x => true).catch(x => false);\n }\n\n // /**\n // * Initialize events for metadata changes on runtime\n // */\n // prepare() {\n // MetadataRegistry.$().on(C_EVENT_ADD, this.onAdd.bind(this));\n // MetadataRegistry.$().on(C_EVENT_REMOVE, this.onRemove.bind(this));\n // MetadataRegistry.$().on(C_EVENT_UPDATE, this.onUpdate.bind(this));\n // }\n\n getOptions(): IRegistryOptions {\n return this.options;\n }\n\n /**\n * Return all registered schema references\n *\n * @param ref\n * @return ISchemaRef[]\n */\n getSchemaRefs<T extends ISchemaRef>(filter?: (x: ISchemaRef) => boolean): (T | ISchemaRef)[] {\n throw new NotSupportedError('');\n }\n\n /**\n * Return schema references for an given entity or class reference\n *\n * @param ref\n * @return ISchemaRef[]\n */\n getSchemaRefsFor<T extends ISchemaRef>(ref: string): T | ISchemaRef;\n getSchemaRefsFor<T extends ISchemaRef>(ref: string | IEntityRef | IClassRef): T | ISchemaRef | (T | ISchemaRef)[] {\n throw new NotSupportedError('');\n }\n\n /**\n * TODO\n *\n * @param filter\n */\n getEntityRefs<T extends IEntityRef>(filter?: (x: IEntityRef) => boolean): (T | IEntityRef)[] {\n return this.filter(METATYPE_ENTITY, filter);\n }\n\n /**\n * Can get get entity ref for function.\n *\n * @param fn\n */\n getEntityRefFor<T extends IEntityRef>(fn: string | object | Function, skipNsCheck: boolean = true): (T | IEntityRef) {\n throw new NotSupportedError('');\n }\n\n\n /**\n * Returns the used instance of lookup registry handler\n */\n getLookupRegistry(): LookupRegistry {\n return LookupRegistry.$(this.namespace);\n }\n\n /**\n * Method for returning class ref\n *\n * @param object\n * @param type\n */\n getClassRefFor(object: string | Function | IClassRef, type: METADATA_TYPE): IClassRef {\n throw new NotSupportedError('');\n }\n\n /**\n * Returns property by name for a given class or entity ref\n *\n * @param filter\n */\n getPropertyRef<T extends IPropertyRef>(ref: IClassRef | IEntityRef, name: string): (T | IPropertyRef) {\n return this.getPropertyRefs<T>(ref).find(x => snakeCase(x.name) === snakeCase(name));\n }\n\n\n /**\n * Returns all properties for given class or entity ref\n *\n * @param ref\n */\n getPropertyRefs<T extends IPropertyRef>(ref: IClassRef | IEntityRef): (T | IPropertyRef)[] {\n throw new NotSupportedError('');\n }\n\n\n getPropertyRefsFor<T extends IPropertyRef>(fn: string | object | Function): (T | IPropertyRef)[] {\n throw new NotSupportedError('');\n }\n\n\n list<X>(type: METADATA_TYPE, filter?: (x: any) => boolean): X[] {\n return this.filter(type, filter);\n }\n\n\n listEntities(filter?: (x: IEntityRef) => boolean): IEntityRef[] {\n return this.getEntityRefs(filter);\n }\n\n\n listProperties(filter?: (x: IPropertyRef) => boolean): IPropertyRef[] {\n return this.filter(METATYPE_PROPERTY, filter);\n }\n\n\n create<T>(context: string, options: any): T {\n throw new NotSupportedError('');\n }\n\n /**\n * TODO\n */\n add<T>(context: string, entry: T): T {\n return this.getLookupRegistry().add(context, entry);\n }\n\n\n /**\n * TODO\n */\n filter<T>(context: string, search: any): T[] {\n return this.getLookupRegistry().filter(context, search);\n }\n\n /**\n * TODO\n */\n find<T>(context: string, search: any): T {\n return this.getLookupRegistry().find(context, search);\n }\n\n /**\n * TODO\n */\n remove<T>(context: string, search: any): T[] {\n return this.getLookupRegistry().remove(context, search);\n }\n\n /**\n * reset current registry\n */\n reset() {\n this.clear();\n }\n\n clear() {\n LookupRegistry.reset(this.namespace);\n }\n\n}\n"],"sourceRoot":"../.."}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allgemein/schema-api",
3
- "version": "1.5.12",
3
+ "version": "1.5.13",
4
4
  "description": "Library for schema api",
5
5
  "main": "index.js",
6
6
  "private": false,