@allgemein/schema-api 1.5.31 → 1.5.33

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.
Files changed (168) hide show
  1. package/api/IBaseRef.js +0 -2
  2. package/api/IBuildOptions.js +0 -2
  3. package/api/IClassRef.js +1 -4
  4. package/api/IEntityRef.js +2 -6
  5. package/api/IJsonSchema.js +3 -6
  6. package/api/ILookupRegistry.js +1 -4
  7. package/api/IPropertyExtentions.js +0 -2
  8. package/api/IPropertyRef.js +1 -4
  9. package/api/ISchemaRef.js +0 -2
  10. package/api/ISerializeSupport.js +3 -6
  11. package/browser.js +5 -3
  12. package/decorators/Embeddable.js +1 -4
  13. package/decorators/Entity.js +1 -4
  14. package/decorators/Namespace.js +1 -4
  15. package/decorators/Property.js +1 -4
  16. package/decorators/PropertyOf.js +1 -4
  17. package/decorators/Schema.js +1 -4
  18. package/decorators/validate/Hostname.js +2 -4
  19. package/decorators/validate/Ip4.js +2 -4
  20. package/decorators/validate/Ip6.js +2 -4
  21. package/decorators/validate/IsEmail.js +2 -4
  22. package/decorators/validate/IsNotEmpty.js +1 -4
  23. package/decorators/validate/MaxLength.js +1 -4
  24. package/decorators/validate/MinLength.js +1 -4
  25. package/decorators/validate/Regex.js +1 -4
  26. package/decorators/validate/Required.js +1 -4
  27. package/decorators/validate/index.js +0 -2
  28. package/index.js +5 -3
  29. package/lib/AbstractRef.js +0 -2
  30. package/lib/AnnotationsHelper.js +0 -2
  31. package/lib/ClassRef.js +0 -2
  32. package/lib/Constants.d.ts +7 -7
  33. package/lib/Constants.js +0 -2
  34. package/lib/DataContainer.js +3 -2
  35. package/lib/LookupRegistry.d.ts +2 -2
  36. package/lib/LookupRegistry.js +4 -3
  37. package/lib/SchemaRef.js +0 -2
  38. package/lib/SchemaUtils.js +7 -3
  39. package/lib/functions.js +1 -4
  40. package/lib/json-schema/Constants.js +0 -2
  41. package/lib/json-schema/IJsonSchemaSerializeOptions.js +0 -2
  42. package/lib/json-schema/IJsonSchemaSerializer.js +0 -2
  43. package/lib/json-schema/IJsonSchemaUnserializeOptions.js +0 -2
  44. package/lib/json-schema/IJsonSchemaUnserializer.js +0 -2
  45. package/lib/json-schema/IParseOptions.js +0 -2
  46. package/lib/json-schema/JsonSchema.d.ts +1 -1
  47. package/lib/json-schema/JsonSchema.js +2 -4
  48. package/lib/json-schema/JsonSchema7.d.ts +2 -2
  49. package/lib/json-schema/JsonSchema7.js +3 -5
  50. package/lib/json-schema/JsonSchema7Serializer.js +1 -3
  51. package/lib/json-schema/JsonSchema7Unserializer.d.ts +2 -2
  52. package/lib/json-schema/JsonSchema7Unserializer.js +9 -10
  53. package/lib/json-schema/functions.js +2 -5
  54. package/lib/options/IAbstractOptions.js +0 -2
  55. package/lib/options/IAttributeOptions.js +0 -2
  56. package/lib/options/IEntityOptions.js +0 -2
  57. package/lib/options/INamedOptions.js +0 -2
  58. package/lib/options/IObjectOptions.js +0 -2
  59. package/lib/options/IPropertyOptions.js +0 -2
  60. package/lib/options/ISchemaOptions.js +0 -2
  61. package/lib/registry/AbstractRegistry.d.ts +1 -1
  62. package/lib/registry/AbstractRegistry.js +0 -2
  63. package/lib/registry/Binding.js +0 -2
  64. package/lib/registry/DefaultEntityRef.js +0 -2
  65. package/lib/registry/DefaultNamespacedRegistry.js +0 -2
  66. package/lib/registry/DefaultPropertyRef.js +0 -2
  67. package/lib/registry/IRegistryOptions.js +0 -2
  68. package/lib/registry/MetadataRegistry.d.ts +0 -1
  69. package/lib/registry/MetadataRegistry.js +0 -2
  70. package/lib/registry/RegistryFactory.js +0 -2
  71. package/lib/serializer/ISerializeOptions.js +0 -2
  72. package/lib/serializer/ISerializer.js +0 -2
  73. package/lib/serializer/ISerializerFactory.js +0 -2
  74. package/lib/serializer/IUnserializeOptions.js +0 -2
  75. package/lib/serializer/IUnserializer.js +0 -2
  76. package/lib/serializer/SerializerRegistry.js +0 -2
  77. package/lib/validation/DefaultValidator.js +1 -2
  78. package/lib/validation/IValidateOptions.js +0 -2
  79. package/lib/validation/IValidationError.js +0 -2
  80. package/lib/validation/IValidationMessage.js +0 -2
  81. package/lib/validation/IValidationOptions.d.ts +0 -1
  82. package/lib/validation/IValidationOptions.js +0 -2
  83. package/lib/validation/IValidationResult.js +0 -2
  84. package/lib/validation/IValidator.js +0 -2
  85. package/lib/validation/IValidatorEntry.js +0 -2
  86. package/lib/validation/IValidatorHandle.js +0 -2
  87. package/lib/validation/Validator.d.ts +2 -2
  88. package/lib/validation/Validator.js +0 -2
  89. package/package.json +11 -13
  90. package/api/IBaseRef.js.map +0 -1
  91. package/api/IBuildOptions.js.map +0 -1
  92. package/api/IClassRef.js.map +0 -1
  93. package/api/IEntityRef.js.map +0 -1
  94. package/api/IJsonSchema.js.map +0 -1
  95. package/api/ILookupRegistry.js.map +0 -1
  96. package/api/IPropertyExtentions.js.map +0 -1
  97. package/api/IPropertyRef.js.map +0 -1
  98. package/api/ISchemaRef.js.map +0 -1
  99. package/api/ISerializeSupport.js.map +0 -1
  100. package/browser.js.map +0 -1
  101. package/decorators/Embeddable.js.map +0 -1
  102. package/decorators/Entity.js.map +0 -1
  103. package/decorators/Namespace.js.map +0 -1
  104. package/decorators/Property.js.map +0 -1
  105. package/decorators/PropertyOf.js.map +0 -1
  106. package/decorators/Schema.js.map +0 -1
  107. package/decorators/validate/Hostname.js.map +0 -1
  108. package/decorators/validate/Ip4.js.map +0 -1
  109. package/decorators/validate/Ip6.js.map +0 -1
  110. package/decorators/validate/IsEmail.js.map +0 -1
  111. package/decorators/validate/IsNotEmpty.js.map +0 -1
  112. package/decorators/validate/MaxLength.js.map +0 -1
  113. package/decorators/validate/MinLength.js.map +0 -1
  114. package/decorators/validate/Regex.js.map +0 -1
  115. package/decorators/validate/Required.js.map +0 -1
  116. package/decorators/validate/index.js.map +0 -1
  117. package/index.js.map +0 -1
  118. package/lib/AbstractRef.js.map +0 -1
  119. package/lib/AnnotationsHelper.js.map +0 -1
  120. package/lib/ClassRef.js.map +0 -1
  121. package/lib/Constants.js.map +0 -1
  122. package/lib/DataContainer.js.map +0 -1
  123. package/lib/LookupRegistry.js.map +0 -1
  124. package/lib/SchemaRef.js.map +0 -1
  125. package/lib/SchemaUtils.js.map +0 -1
  126. package/lib/functions.js.map +0 -1
  127. package/lib/json-schema/Constants.js.map +0 -1
  128. package/lib/json-schema/IJsonSchemaSerializeOptions.js.map +0 -1
  129. package/lib/json-schema/IJsonSchemaSerializer.js.map +0 -1
  130. package/lib/json-schema/IJsonSchemaUnserializeOptions.js.map +0 -1
  131. package/lib/json-schema/IJsonSchemaUnserializer.js.map +0 -1
  132. package/lib/json-schema/IParseOptions.js.map +0 -1
  133. package/lib/json-schema/JsonSchema.js.map +0 -1
  134. package/lib/json-schema/JsonSchema7.js.map +0 -1
  135. package/lib/json-schema/JsonSchema7Serializer.js.map +0 -1
  136. package/lib/json-schema/JsonSchema7Unserializer.js.map +0 -1
  137. package/lib/json-schema/functions.js.map +0 -1
  138. package/lib/options/IAbstractOptions.js.map +0 -1
  139. package/lib/options/IAttributeOptions.js.map +0 -1
  140. package/lib/options/IEntityOptions.js.map +0 -1
  141. package/lib/options/INamedOptions.js.map +0 -1
  142. package/lib/options/IObjectOptions.js.map +0 -1
  143. package/lib/options/IPropertyOptions.js.map +0 -1
  144. package/lib/options/ISchemaOptions.js.map +0 -1
  145. package/lib/registry/AbstractRegistry.js.map +0 -1
  146. package/lib/registry/Binding.js.map +0 -1
  147. package/lib/registry/DefaultEntityRef.js.map +0 -1
  148. package/lib/registry/DefaultNamespacedRegistry.js.map +0 -1
  149. package/lib/registry/DefaultPropertyRef.js.map +0 -1
  150. package/lib/registry/IRegistryOptions.js.map +0 -1
  151. package/lib/registry/MetadataRegistry.js.map +0 -1
  152. package/lib/registry/RegistryFactory.js.map +0 -1
  153. package/lib/serializer/ISerializeOptions.js.map +0 -1
  154. package/lib/serializer/ISerializer.js.map +0 -1
  155. package/lib/serializer/ISerializerFactory.js.map +0 -1
  156. package/lib/serializer/IUnserializeOptions.js.map +0 -1
  157. package/lib/serializer/IUnserializer.js.map +0 -1
  158. package/lib/serializer/SerializerRegistry.js.map +0 -1
  159. package/lib/validation/DefaultValidator.js.map +0 -1
  160. package/lib/validation/IValidateOptions.js.map +0 -1
  161. package/lib/validation/IValidationError.js.map +0 -1
  162. package/lib/validation/IValidationMessage.js.map +0 -1
  163. package/lib/validation/IValidationOptions.js.map +0 -1
  164. package/lib/validation/IValidationResult.js.map +0 -1
  165. package/lib/validation/IValidator.js.map +0 -1
  166. package/lib/validation/IValidatorEntry.js.map +0 -1
  167. package/lib/validation/IValidatorHandle.js.map +0 -1
  168. package/lib/validation/Validator.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/options/IEntityOptions.ts"],"names":[],"mappings":"","file":"IEntityOptions.js","sourcesContent":["import {IAbstractOptions} from './IAbstractOptions';\nimport {INamedOptions} from \"./INamedOptions\";\n\nexport interface IEntityOptions extends IAbstractOptions, INamedOptions {\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/options/INamedOptions.ts"],"names":[],"mappings":"","file":"INamedOptions.js","sourcesContent":["/**\n * Interface for naming\n */\nexport interface INamedOptions {\n\n /**\n * Defined name for this entry\n */\n name?: string;\n\n /**\n * Set internal name for this entry for external source\n */\n internalName?: string;\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/options/IObjectOptions.ts"],"names":[],"mappings":"","file":"IObjectOptions.js","sourcesContent":["import {IAbstractOptions} from './IAbstractOptions';\nimport {INamedOptions} from \"./INamedOptions\";\n\nexport interface IObjectOptions extends IAbstractOptions, INamedOptions {\n\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/options/IPropertyOptions.ts"],"names":[],"mappings":"","file":"IPropertyOptions.js","sourcesContent":["import {JS_DATA_TYPES} from '../../lib/Constants';\nimport {IAbstractOptions} from './IAbstractOptions';\n\nexport interface IPropertyOptions extends IAbstractOptions {\n\n propertyName?: string;\n\n internalName?: string;\n\n appended?: boolean;\n\n cardinality?: number | { min: number, max: number };\n\n format?: string;\n\n type?: JS_DATA_TYPES | any;\n\n /**\n * Mark if value is representation of unique identifier\n */\n identifier?: boolean;\n\n /**\n * Generate automatically values for identifier\n */\n generated?: boolean;\n\n /**\n * Mark if property is a pattern property\n */\n pattern?: boolean;\n\n\n /**\n * Mark if property is an array\n */\n array?: boolean;\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/options/ISchemaOptions.ts"],"names":[],"mappings":"","file":"ISchemaOptions.js","sourcesContent":["import {IAbstractOptions} from './IAbstractOptions';\nimport {INamedOptions} from \"./INamedOptions\";\n\nexport interface ISchemaOptions extends IAbstractOptions, INamedOptions {\n\n /**\n * Inherited fromAn name of the schema must exists\n */\n name: string;\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/registry/AbstractRegistry.ts"],"names":[],"mappings":"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","file":"AbstractRegistry.js","sourcesContent":["import {snakeCase} from 'lodash';\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 implements ILookupRegistry {\n\n protected readonly namespace: string;\n\n private _lock: Semaphore;\n\n readonly options: IRegistryOptions;\n\n\n constructor(namespace: string, options?: IRegistryOptions) {\n this.namespace = namespace;\n this.options = options || {};\n }\n\n\n get lock() {\n if (!this._lock) {\n this._lock = LockFactory.$().semaphore(1);\n }\n return this._lock;\n }\n\n\n ready(timeout?: number): Promise<boolean> {\n return this.lock.await(timeout).then(x => true).catch(x => false);\n }\n\n\n getOptions(): IRegistryOptions {\n return this.options;\n }\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(namespace: string = null): LookupRegistry {\n return LookupRegistry.$(namespace ? namespace : 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, ns?: string): T {\n return this.getLookupRegistry(ns).add(context, entry);\n }\n\n\n /**\n * TODO\n */\n filter<T>(context: string, search: any, ns?: string): T[] {\n return this.getLookupRegistry(ns).filter(context, search);\n }\n\n /**\n * TODO\n */\n find<T>(context: string, search: any, ns?: string): T {\n return this.getLookupRegistry(ns).find(context, search);\n }\n\n /**\n * TODO\n */\n remove<T>(context: string, search: any, ns?: string): T[] {\n return this.getLookupRegistry(ns).remove(context, search);\n }\n\n /**\n * reset current registry\n */\n reset() {\n this.clear();\n }\n\n /**\n * Remove namespace from LookupRegistry and also remove semaphore lock if exists\n */\n clear() {\n if (this._lock) {\n LockFactory.$().remove(this._lock);\n }\n LookupRegistry.reset(this.namespace);\n }\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/registry/Binding.ts"],"names":[],"mappings":";;;AAEA,MAAa,OAAO;IAUlB,MAAM,CAAC,MAAM,CAAC,KAA6B,EAAE,KAAU,EAAE,KAA6B,EAAE,KAAU;QAChG,IAAI,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;QACtB,CAAC,CAAC,WAAW,GAA2B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjE,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;CACF;AAnBD,0BAmBC","file":"Binding.js","sourcesContent":["import {METADATA_AND_BIND_TYPE} from '../Constants';\n\nexport class Binding {\n\n bindingType: METADATA_AND_BIND_TYPE;\n\n sourceType: METADATA_AND_BIND_TYPE;\n source: any;\n\n targetType: METADATA_AND_BIND_TYPE;\n target: any;\n\n static create(sType: METADATA_AND_BIND_TYPE, sName: any, tType: METADATA_AND_BIND_TYPE, tName: any) {\n let b = new Binding();\n b.bindingType = <METADATA_AND_BIND_TYPE>[sType, tType].join('_');\n b.sourceType = sType;\n b.targetType = tType;\n b.source = sName;\n b.target = tName;\n return b;\n }\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/registry/DefaultEntityRef.ts"],"names":[],"mappings":";;;AACA,gDAA2C;AAG3C,4CAAuH;AAGvH,4DAAuD;AAEvD,uDAAkD;AAIlD,MAAa,gBAAiB,SAAQ,yBAAW;IAG/C,YAAY,UAA0B,EAAE;QACtC,KAAK,CAAC,2BAAe,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,6BAAiB,CAAC,CAAC;QAChH,qCAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,oBAAoB,CAAC,OAAY;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC3C,IAAI,GAAG,EAAE;YACP,iCAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAChC,MAAM,CAAC,GAAG,MAAM,CAAC,wBAAwB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,EAAE;oBACL,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;iBACtB;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAGD,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAQ,CAAC;IAC1D,CAAC;IAED,WAAW;QACT,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAI,QAAa,EAAE,OAAuB;QAC7C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAI,OAAiB;QACzB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,cAAc,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,EAAE;QACA,OAAO,CAAC,2BAAe,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,2BAAe,CAAC,CAAC;IAC1E,CAAC;IAED,cAAc,CAAC,MAAqC,EAAE,IAAmB;QACvE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,QAAa;QAChB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC;CAEF;AAhED,4CAgEC","file":"DefaultEntityRef.js","sourcesContent":["import {IEntityRef} from '../../api/IEntityRef';\nimport {AbstractRef} from '../AbstractRef';\nimport {IBuildOptions} from '../../api/IBuildOptions';\nimport {IPropertyRef} from '../../api/IPropertyRef';\nimport {DEFAULT_NAMESPACE, DEFINED_PROPS_TO_OPTS, METADATA_TYPE, METATYPE_ENTITY, XS_ID_SEPARATOR} from '../Constants';\nimport {IEntityOptions} from '../options/IEntityOptions';\nimport {IClassRef} from '../../api/IClassRef';\nimport {AnnotationsHelper} from '../AnnotationsHelper';\nimport {ILookupRegistry} from '../../api/ILookupRegistry';\nimport {RegistryFactory} from './RegistryFactory';\nimport {SchemaRef} from '../SchemaRef';\n\n\nexport class DefaultEntityRef extends AbstractRef implements IEntityRef {\n\n\n constructor(options: IEntityOptions = {}) {\n super(METATYPE_ENTITY, options.name, options.target, options.namespace ? options.namespace : DEFAULT_NAMESPACE);\n AnnotationsHelper.merge(this.object, options);\n this.additionalProperties(options);\n this.setOptions(options);\n }\n\n additionalProperties(options: any) {\n const cls = this.getSourceRef().getClass();\n if (cls) {\n DEFINED_PROPS_TO_OPTS.forEach(k => {\n const p = Object.getOwnPropertyDescriptor(cls, k);\n if (p) {\n options[k] = p.value;\n }\n });\n }\n }\n\n\n getSchemaRefs(): SchemaRef | SchemaRef[] {\n return this.getRegistry().getSchemaRefsFor(this) as any;\n }\n\n getRegistry(): ILookupRegistry {\n return RegistryFactory.get(this.namespace);\n }\n\n build<T>(instance: any, options?: IBuildOptions): T {\n return this.getClassRef().build(instance, options);\n }\n\n create<T>(addinfo?: boolean): T {\n return this.getClassRef().create(addinfo);\n }\n\n getPropertyRef(name: string): IPropertyRef {\n return this.getRegistry().getPropertyRef(this, name);\n }\n\n getPropertyRefs(): IPropertyRef[] {\n return this.getRegistry().getPropertyRefs(this);\n }\n\n id(): string {\n return [METATYPE_ENTITY, this.getClassRef().id()].join(XS_ID_SEPARATOR);\n }\n\n getClassRefFor(object: string | Function | IClassRef, type: METADATA_TYPE): IClassRef {\n return this.getRegistry().getClassRefFor(object, this.metaType);\n }\n\n /**\n * Check if an object / instance is of same type like this entity ref (same check as IClassRef.isOf).\n *\n * @param instance\n */\n isOf(instance: any): boolean {\n return this.getClassRef().isOf(instance);\n }\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
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, C_EVENT_DRAIN_FINISHED,\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 private drained = false;\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 ready(timeout?: number) {\n return super.ready(timeout).then(() => {\n if (this.drained) {\n return Promise.resolve(this.drained);\n } else {\n return new Promise<boolean>((resolve, reject) => {\n const t = setTimeout(() => {\n reject();\n }, timeout ? timeout : 10000);\n MetadataRegistry.$().once(C_EVENT_DRAIN_FINISHED + this.namespace, () => {\n resolve(true);\n });\n });\n }\n });\n }\n\n /**\n * Apply already added entries to the metadata registry can be added to this registry\n */\n drainAlreadyAdded() {\n this.drained = false;\n const alreadyFired = MetadataRegistry.$()\n .getMetadata()\n .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 const cloneEvent = cloneDeep(event);\n try {\n this.onAdd(cloneEvent.metaType as METADATA_TYPE, cloneEvent);\n } catch (e) {\n }\n }\n this.drained = true;\n MetadataRegistry.$().emit([C_EVENT_DRAIN_FINISHED, this.namespace].join('_'), true);\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 as IPropertyOptions).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 const failedNsCheck = get(options, 'failedNsCheckMode', 'throw');\n delete options.skipNsCheck;\n const metadata = this.getMetadata(context as METADATA_TYPE, options.target, options.propertyName ? options.propertyName : null);\n if (metadata) {\n if (metadata.namespace && metadata.namespace !== this.namespace) {\n if (!skipNsCheck) {\n if (context !== METATYPE_PROPERTY) {\n if (failedNsCheck === 'ignore') {\n return null;\n } else {\n throw new NotSupportedError(\n 'namespace for ' + context + ' is ' + metadata.namespace +\n ' the namespace of this registry is ' + this.namespace\n );\n }\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, {\n resolve: type === METATYPE_PROPERTY,\n checkNamespace: true\n });\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":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/registry/DefaultPropertyRef.ts"],"names":[],"mappings":"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","file":"DefaultPropertyRef.js","sourcesContent":["import {get, has, isArray, isBoolean, isFunction, isNumber, isObjectLike, isString, isUndefined} from 'lodash';\n\nimport {IPropertyRef} from '../../api/IPropertyRef';\nimport {AbstractRef} from '../AbstractRef';\nimport {IBuildOptions} from '../../api/IBuildOptions';\nimport {IClassRef, isClassRef} from '../../api/IClassRef';\nimport {\n C_APPENDED,\n C_CARDINALITY,\n C_IDENTIFIER,\n C_TYPE,\n DEFAULT_NAMESPACE,\n IMinMax,\n K_PATTERN_PROPERTY,\n METADATA_TYPE,\n METATYPE_PROPERTY,\n T_ARRAY,\n T_OBJECT,\n T_STRING,\n XS_ID_SEPARATOR\n} from '../Constants';\nimport {IPropertyOptions} from '../options/IPropertyOptions';\nimport {ClassRef} from '../ClassRef';\nimport {NotYetImplementedError} from '@allgemein/base';\nimport {AnnotationsHelper} from '../AnnotationsHelper';\nimport {ILookupRegistry} from '../../api/ILookupRegistry';\nimport {RegistryFactory} from './RegistryFactory';\nimport {IEntityRef, isEntityRef} from '../../api/IEntityRef';\n\n\nexport class DefaultPropertyRef extends AbstractRef implements IPropertyRef {\n\n cardinality: IMinMax | number = 1;\n\n reference: boolean = undefined;\n\n targetRef: IClassRef;\n\n constructor(options: IPropertyOptions = {}) {\n super(METATYPE_PROPERTY, options.propertyName, options.target, options.namespace ? options.namespace : DEFAULT_NAMESPACE);\n AnnotationsHelper.merge(this.object, options, this.name);\n if (options.type === T_ARRAY) {\n // if array reset\n options.type = T_OBJECT;\n options.cardinality = 0;\n options.array = true;\n }\n this.setOptions(options);\n this.cardinality = has(options, C_CARDINALITY) ? options.cardinality : 1;\n }\n\n\n getRegistry(): ILookupRegistry {\n return RegistryFactory.get(this.namespace);\n }\n\n /**\n * TODO\n */\n convert(data: any, options?: IBuildOptions): any {\n const sourceType = this.getType();\n if (!sourceType || !isString(sourceType)) {\n return data;\n }\n\n const jsType = sourceType.toLowerCase();\n const [baseType, variant] = jsType.split(':');\n\n switch (baseType) {\n case 'datetime':\n case 'timestamp':\n case 'date':\n return new Date(data);\n\n case 'time':\n case 'text':\n case T_STRING:\n if (isString(data)) {\n return data;\n } else if (isArray(data) && data.length === 1) {\n return data[0];\n } else if (data) {\n return JSON.stringify(data);\n } else {\n return null;\n }\n break;\n\n case 'boolean':\n if (isBoolean(data)) {\n return data;\n } else if (isNumber(data)) {\n return data > 0;\n } else if (isString(data)) {\n if (data.toLowerCase() === 'true' || data.toLowerCase() === '1') {\n return true;\n }\n return false;\n }\n break;\n\n case 'double':\n case 'number':\n if (isString(data)) {\n if (/^\\d+\\.|\\,\\d+$/.test(data)) {\n return parseFloat(data.replace(',', '.'));\n } else if (/^\\d+$/.test(data)) {\n return parseInt(data, 0);\n } else {\n }\n } else if (isNumber(data)) {\n return data;\n } else if (isBoolean(data)) {\n return data ? 1 : 0;\n } else {\n // Pass to exception\n }\n break;\n\n case 'byte':\n case 'json':\n case T_OBJECT:\n case T_ARRAY:\n return data;\n }\n\n throw new NotYetImplementedError('value \"' + data + '\" of type ' + (typeof data) + ' column type=' + jsType);\n }\n\n\n get(instance: any): any {\n return get(instance, this.name, null);\n }\n\n\n getTargetRef(): IClassRef {\n this.checkReference();\n return this.targetRef;\n }\n\n getType(): string {\n return this.getOptions(C_TYPE);\n }\n\n isAppended(): boolean {\n return this.getOptions(C_APPENDED, false);\n }\n\n\n /**\n * TODO\n */\n id(): string {\n return [this.getClassRef().id(), this.name].join(XS_ID_SEPARATOR);\n }\n\n /**\n * check if property parameter is an array\n */\n isCollection(): boolean {\n if (isObjectLike(this.cardinality) &&\n (<IMinMax>this.cardinality).min >= 0 &&\n (<IMinMax>this.cardinality).max >= 0) {\n return true;\n }\n return this.cardinality !== 1;\n }\n\n /**\n * Return if is identifier\n */\n isIdentifier(): boolean {\n return this.getOptions(C_IDENTIFIER, false);\n }\n\n /**\n * Return if is a pattern property\n */\n isPattern(): boolean {\n return this.getOptions(K_PATTERN_PROPERTY, false);\n }\n\n /**\n * Returns info if property parameter results are in classspace\n */\n isReference(): boolean {\n this.checkReference();\n return this.reference;\n }\n\n\n /**\n * Check if property is a to an other object referring property.\n *\n * Note:\n * types defined as string, must match the following conditions to be interpreted as reference to an other object:\n * - not contain any upper case\n * - not a defined supported type\n *\n * @private\n */\n private checkReference() {\n if (isUndefined(this.reference)) {\n this.reference = false;\n const type = this.getType();\n if (!isString(type) && (isClassRef(type) || isEntityRef(type))) {\n this.targetRef = isEntityRef(type) ? (type as IEntityRef).getClassRef() : type;\n this.reference = true;\n } else if (isFunction(type) || this.isReferencingType(type)) {\n // try get existing class\n const exists = ClassRef.get(type, this.getClassRef().getNamespace(), {checkNamespace: true});\n if (exists) {\n this.targetRef = exists;\n this.reference = true;\n }\n }\n }\n return this.reference;\n }\n\n\n /**\n * Check type given as string if it is an object type.\n *\n * Note:\n * types defined as string, must match the following conditions to be interpreted as reference to an other object:\n * - not contain any upper case\n * - not a defined supported type\n *\n * @private\n */\n isReferencingType(type: string) {\n return (isString(type) &&\n (type.toLocaleLowerCase() !== type\n && !this.getSupportedDataTypes().find(t => (new RegExp('^' + t + ':?')).test((<string>type).toLowerCase())))\n )\n }\n\n\n getClassRefFor(object: string | Function | IClassRef, type: METADATA_TYPE): IClassRef {\n return this.getRegistry().getClassRefFor(object, this.metaType);\n }\n\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
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":"../.."}
@@ -1 +0,0 @@
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';\nimport {ClassRef} from \"../ClassRef\";\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 (isFunction(target) ? x.target === target : ClassRef.getClassName(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 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/registry/RegistryFactory.ts"],"names":[],"mappings":"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","file":"RegistryFactory.js","sourcesContent":["/**\n * Schema definitions can be different depending by handled structure.\n * We want use one api for use and accessing objects. The registry handle for a namespace can be\n * registered here.\n */\nimport {has, isRegExp, isString, keys} from 'lodash';\nimport {ILookupRegistry} from '../../api/ILookupRegistry';\nimport {ClassType, DEFAULT_NAMESPACE, METATYPE_ENTITY} from '../Constants';\nimport {DefaultNamespacedRegistry} from './DefaultNamespacedRegistry';\nimport {MetadataRegistry} from './MetadataRegistry';\nimport {C_DEFAULT} from '@allgemein/base';\nimport {IRegistryOptions} from './IRegistryOptions';\n\nexport class RegistryFactory {\n\n static $types: { pattern: string | RegExp, registryClass: ClassType<ILookupRegistry> }[] = [\n {\n pattern: /.*/,\n registryClass: DefaultNamespacedRegistry\n }\n ];\n\n\n static $handles: { [key: string]: ILookupRegistry } = {};\n\n\n /**\n * Return the registry handling schema/objects of given context or if not exists the generic default namescaped registry\n *\n * @param namespace\n */\n static get<T extends ILookupRegistry>(namespace: string = DEFAULT_NAMESPACE, options?: IRegistryOptions): T {\n if (!this.$handles[namespace]) {\n for (const type of this.$types) {\n if (isString(type.pattern)) {\n if (namespace === type.pattern) {\n this.$handles[namespace] = Reflect.construct(type.registryClass, [namespace, options]);\n break;\n }\n } else {\n if (isRegExp(type.pattern) && type.pattern.test(namespace)) {\n this.$handles[namespace] = Reflect.construct(type.registryClass, [namespace, options]);\n break;\n }\n }\n }\n\n if (!this.$handles[namespace]) {\n // create default as fallback if nothing passes\n this.$handles[namespace] = new DefaultNamespacedRegistry(namespace, options);\n }\n\n if (this.$handles[namespace].prepare) {\n this.$handles[namespace].prepare();\n }\n }\n return this.$handles[namespace] as T;\n }\n\n /**\n * Remove registry from handles list\n *\n * @param namespace\n */\n static remove(namespace: string) {\n if (has(this.$handles, namespace)) {\n this.get(namespace).reset();\n }\n delete this.$handles[namespace];\n }\n\n\n /**\n * Register a special registry for a given namespace or pattern, remove previous if existed\n *\n * @param namespace\n * @param registry\n */\n static register(namespace: string | RegExp, registryClass: ClassType<ILookupRegistry>) {\n const existsAlready = this.$types.find(x =>\n isString(x.pattern) && isString(namespace) ? x.pattern === namespace :\n isRegExp(x.pattern) && isRegExp(namespace) ? x.pattern.source === namespace.source :\n x.pattern === namespace);\n if (!existsAlready) {\n this.$types.unshift({\n pattern: namespace,\n registryClass: registryClass\n });\n }\n }\n\n /**\n * Return active and registered namespaces\n */\n static getNamespaces() {\n return keys(this.$handles);\n }\n\n static getTargets() {\n return MetadataRegistry.$().getTargets();\n }\n\n /**\n * Return all declared namespaces\n */\n static getDeclaredNamespaces(): { target: Function, namespace: string }[] {\n return [].concat(...MetadataRegistry.$().getTargets().map(x => {\n const entries = MetadataRegistry.$().getByContextAndTarget(METATYPE_ENTITY, x, 'merge');\n return entries.map(x => {\n return {target: x.target, namespace: x.namespace ? x.namespace : C_DEFAULT};\n });\n }));\n }\n\n\n static reset() {\n for (const ns of this.getNamespaces()) {\n this.remove(ns);\n }\n }\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/serializer/ISerializeOptions.ts"],"names":[],"mappings":"","file":"ISerializeOptions.js","sourcesContent":["export interface ISerializeOptions {\n\n /**\n * Name of serializer\n */\n serializer?: string;\n\n\n /**\n * Namespace of the registry\n */\n namespace?: string;\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/serializer/ISerializer.ts"],"names":[],"mappings":"","file":"ISerializer.js","sourcesContent":["import {IClassRef} from '../../api/IClassRef';\nimport {IEntityRef} from '../../api/IEntityRef';\n\nexport interface ISerializer {\n serialize(klass: IClassRef | IEntityRef | Function | object): any | Promise<any>;\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/serializer/ISerializerFactory.ts"],"names":[],"mappings":"","file":"ISerializerFactory.js","sourcesContent":["import {ISerializeOptions} from './ISerializeOptions';\nimport {ISerializer} from './ISerializer';\nimport {IUnserializeOptions} from './IUnserializeOptions';\nimport {IUnserializer} from './IUnserializer';\nimport {IClassRef} from '../../api/IClassRef';\nimport {IEntityRef} from '../../api/IEntityRef';\n\nexport interface ISerializerFactory {\n\n getName(): string;\n\n getSerializer(options?: ISerializeOptions): ISerializer;\n\n getUnserializer(options?: IUnserializeOptions): IUnserializer;\n\n serialize(klass: IClassRef | IEntityRef | Function | object, options?: ISerializeOptions): Promise<any>;\n\n unserialize(data: string, options?: ISerializeOptions): Promise<IClassRef | IEntityRef | (IClassRef | IEntityRef)[]>;\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/serializer/IUnserializeOptions.ts"],"names":[],"mappings":"","file":"IUnserializeOptions.js","sourcesContent":["export interface IUnserializeOptions {\n\n /**\n * Name of serializer\n */\n serializer?: string;\n\n /**\n * Namespace of the registry\n */\n namespace?: string;\n\n\n /**\n * Return found entity refs or class refs.\n */\n return?: 'entity-refs' | 'class-refs' | 'default';\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/serializer/IUnserializer.ts"],"names":[],"mappings":"","file":"IUnserializer.js","sourcesContent":["import {IClassRef} from '../../api/IClassRef';\nimport {IEntityRef} from '../../api/IEntityRef';\n\nexport interface IUnserializer {\n unserialize(data: string): Promise<IClassRef | IEntityRef | (IClassRef | IEntityRef)[]>;\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/serializer/SerializerRegistry.ts"],"names":[],"mappings":";;;AACA,0DAAqD;AAErD,MAAa,kBAAkB;IAI7B,MAAM,CAAC,QAAQ,CAAC,OAA2B;QACzC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,IAAY;QACrB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC9B;QACD,OAAO,IAAI,CAAC;IACd,CAAC;;AAbH,gDAcC;AAZQ,6BAAU,GAAwC,EAAE,CAAC;AAc9D,kBAAkB,CAAC,QAAQ,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC","file":"SerializerRegistry.js","sourcesContent":["import {ISerializerFactory} from './ISerializerFactory';\nimport {JsonSchema} from '../json-schema/JsonSchema';\n\nexport class SerializerRegistry {\n\n static serializer: { [k: string]: ISerializerFactory } = {};\n\n static register(factory: ISerializerFactory) {\n this.serializer[factory.getName()] = factory;\n }\n\n static get(name: string) {\n if (this.serializer[name]) {\n return this.serializer[name];\n }\n return null;\n }\n}\n\nSerializerRegistry.register(new JsonSchema());\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/validation/DefaultValidator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAagB;AAEhB,mDAA0D;AAC1D,qDAA6D;AAC7D,0CAAoF;AAEpF,0CAAqC;AAErC,4CAAyD;AACzD,mEAA8D;AAK9D,MAAa,gBAAgB;IAO3B,MAAM,CAAC,MAAM,CAAC,SAAqB;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,SAAS,CAAC,kBAAkB,EAAE;YAChC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,GAAG,IAAA,aAAI,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACzC;IACH,CAAC;IAGD,MAAM,CAAO,cAAc,CAAC,GAAsC;;YAChE,IAAI,KAAK,GAAa,IAAI,CAAC;YAC3B,IAAI,IAAA,wBAAW,EAAC,GAAG,CAAC,IAAI,IAAA,sBAAU,EAAC,GAAG,CAAC,EAAE;gBACvC,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;aACxB;iBAAM,IAAI,IAAA,mBAAU,EAAC,GAAG,CAAC,EAAE;gBAC1B,KAAK,GAAG,GAAG,CAAC;aACb;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,GAAG,CAAC,CAAC;aAC/C;YACD,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;KAAA;IAGD,MAAM,CAAO,QAAQ,CAAC,QAAa,EAAE,GAA4B;;YAC/D,IAAI,QAAQ,GAAc,IAAI,CAAC;YAC/B,IAAI,GAAG,EAAE;gBACP,IAAI,IAAA,wBAAW,EAAC,GAAG,CAAC,EAAE;oBACpB,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;iBAC9B;qBAAM;oBACL,QAAQ,GAAG,GAAG,CAAC;iBAChB;aACF;iBAAM;gBACL,MAAM,MAAM,GAAG,iBAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAChD,IAAI,CAAC,MAAM,EAAE;oBACX,MAAM,IAAI,6BAAsB,EAAE,CAAC;iBACpC;gBACD,QAAQ,GAAG,mBAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aACjC;YAED,wDAAwD;YACxD,sCAAsC;YACtC,uCAAuC;YACvC,iGAAiG;YACjG,OAAO;YACP,MAAM,WAAW,GAAuB,EAAE,CAAC;YAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC3E,KAAK,MAAM,eAAe,IAAI,cAAc,EAAE;gBAC5C,KAAK,MAAM,MAAM,IAAI,eAAe,CAAC,OAAO,EAAE;oBAC5C,IAAI,KAAK,GAAG,IAAI,CAAC;oBACjB,IAAI,eAAe,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;oBAE9D,IAAI,eAAe,EAAE;wBACnB,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;qBAC5C;yBAAM;wBACL,KAAK,GAAG,QAAQ,CAAC;qBAClB;oBAED,IAAI,eAAe,GAAG,IAAA,cAAK,EAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;oBAClE,IAAI,eAAe,EAAE;wBACnB,eAAe,CAAC,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;qBACrD;oBACD,IAAI,MAAM,CAAC,cAAc,EAAE;wBACzB,IAAA,iBAAQ,EAAC,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;qBAClD;oBAED,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,EAAE;wBACxD,MAAM,KAAK,GAAqB;4BAC9B,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;4BAC1D,QAAQ,EAAE,eAAe,CAAC,QAAQ;4BAClC,KAAK,EAAE,KAAK;4BACZ,WAAW,EAAE,EAAE;yBAChB,CAAC;wBACF,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAExB,IAAI,GAAG,GAAG,IAAA,YAAG,EAAC,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;wBAChD,IAAI,GAAG,EAAE;4BACP,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;4BAC5E,IAAA,aAAI,EAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gCAChC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;gCAC3B,IAAI,IAAA,qBAAY,EAAC,CAAC,CAAC,IAAI,IAAA,gBAAO,EAAC,CAAC,CAAC,EAAE;oCACjC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;iCACvB;gCACD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;4BACxC,CAAC,CAAC,CAAC;4BACH,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;yBACtC;qBACF;iBAEF;aACF;YAGD,kBAAkB;YAClB,sEAAsE;YACtE,kDAAkD;YAClD,6BAA6B;YAC7B,cAAc;YACd,aAAa;YACb,+EAA+E;YAC/E,MAAM;YACN,IAAI;YAEJ,OAAO,WAAW,CAAC;QACrB,CAAC;KAAA;IAED,EAAE;IACF,EAAE;IACF,4DAA4D;IAC5D,gDAAgD;IAChD,+BAA+B;IAC/B,iBAAiB;IACjB,MAAM;IACN,iDAAiD;IACjD,2CAA2C;IAC3C,oCAAoC;IACpC,oBAAoB;IACpB,QAAQ;IACR,MAAM;IACN,mBAAmB;IACnB,IAAI;IACJ,EAAE;IACF,EAAE;IACF,0HAA0H;IAC1H,yFAAyF;IACzF,IAAI;IACJ,EAAE;IAEF,MAAM,CAAC,yBAAyB,CAAC,EAAY;QAC3C,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,mCAAgB,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAChE,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,IAAA,qBAAY,EAAC,IAAI,CAAC,UAAU,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CACrE,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE;YAC7B,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,eAAe,GAAoB;gBACvC,MAAM,EAAE,EAAE;aACX,CAAC;YACF,IAAA,eAAM,EAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;YAC3C,IAAI,CAAC,CAAC,YAAY,EAAE;gBAClB,eAAe,CAAC,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAC;aAC3C;YACD,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAC/B;QAGD,MAAM,YAAY,GAA0B,sBAAe;aACxD,GAAG,CAAC,uCAA2B,CAAC;aAChC,MAAM,CAAC,CAAC,CAAsB,EAAE,EAAE,CACjC,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI,IAAA,qBAAY,EAAC,IAAI,CAAC,UAAU,EAAE,IAAA,aAAI,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAC7E,CAAC;QAEJ,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE;YAC5B,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAoB,CAAC;YAC1F,MAAM,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACjE,IAAI,iBAAiB,EAAE;gBACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACzD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC5C,IAAI,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE;wBAC/D,6BAA6B;wBAC7B,SAAS;qBACV;oBACD,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvC,IAAA,YAAG,EAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,IAAA,YAAG,EAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;iBAC9F;aACF;iBAAM;gBACL,MAAM,eAAe,GAAoB;oBACvC,MAAM,EAAE,EAAE;iBACX,CAAC;gBACF,IAAA,eAAM,EAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;gBAC3C,IAAI,CAAC,CAAC,QAAQ,EAAE;oBACd,eAAe,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;iBACvC;gBACD,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAC/B;SACF;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAGO,MAAM,CAAC,sBAAsB,CAAC,YAAiB;QACrD,MAAM,SAAS,GAAG,IAAA,qBAAY,EAAC,IAAI,CAAC,UAAU,EAAE,IAAA,aAAI,EAAC,YAAY,CAAC,CAAC,CAAC;QACpE,MAAM,OAAO,GAAU,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;YACzB,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,WAAW,GAAG,IAAA,YAAG,EAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,kBAAkB,KAAK,CAAC,CAAC,CAAC;YAC/F,IAAI,MAAM,EAAE;gBACV,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;gBACnE,IAAI,CAAC,gBAAgB,EAAE;oBACrB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACtB;gBAED,IAAI,CAAC,GAAG,IAAA,cAAK,EAAC,IAAA,YAAG,EAAC,YAAY,EAAE,kBAAkB,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;gBACvE,IAAI,CAAC,WAAW,EAAE;oBAChB,wBAAwB;oBACxB,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,IAAA,YAAG,EAAC,YAAY,EAAE,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;iBACnF;gBAED,IAAI,CAAC,EAAE;oBACL,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;wBACzB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;qBAC3B;oBACD,IAAA,cAAK,EAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;iBAChC;aACF;SACF;QACD,OAAO;YACL,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,OAAO;SACjB,CAAC;IACJ,CAAC;;AA1NH,4CA4NC;AA1NgB,2BAAU,GAAiB,EAAE,CAAC;AAE9B,2BAAU,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC","file":"DefaultValidator.js","sourcesContent":["import {\n assign,\n clone,\n defaults,\n get,\n intersection,\n isArray,\n isFunction,\n isObjectLike,\n keys,\n merge,\n set,\n uniq\n} from 'lodash';\n\nimport {IClassRef, isClassRef} from '../../api/IClassRef';\nimport {IEntityRef, isEntityRef} from '../../api/IEntityRef';\nimport {ClassUtils, MetadataStorage, NotYetImplementedError} from '@allgemein/base';\nimport {IValidationError} from './IValidationError';\nimport {ClassRef} from '../ClassRef';\nimport {IPropertyExtentions} from '../../api/IPropertyExtentions';\nimport {XS_ANNOTATION_OPTIONS_CACHE} from '../Constants';\nimport {MetadataRegistry} from '../registry/MetadataRegistry';\nimport {IValidator} from './IValidator';\nimport {IValidatorEntry} from './IValidatorEntry';\n\n\nexport class DefaultValidator {\n\n private static validators: IValidator[] = [];\n\n private static lookupKeys = ['format', 'validate'];\n\n\n static define(validator: IValidator) {\n this.validators.push(validator);\n if (validator.involveOnOptionKey) {\n this.lookupKeys.unshift(validator.involveOnOptionKey);\n this.lookupKeys = uniq(this.lookupKeys);\n }\n }\n\n\n static async validationInfo(ref: Function | IClassRef | IEntityRef) {\n let clazz: Function = null;\n if (isEntityRef(ref) || isClassRef(ref)) {\n clazz = ref.getClass();\n } else if (isFunction(ref)) {\n clazz = ref;\n } else {\n throw new Error('not implemented for ' + ref);\n }\n return this.getValidationHandlesForFn(clazz);\n }\n\n\n static async validate(instance: any, ref?: IClassRef | IEntityRef): Promise<IValidationError[]> {\n let classRef: IClassRef = null;\n if (ref) {\n if (isEntityRef(ref)) {\n classRef = ref.getClassRef();\n } else {\n classRef = ref;\n }\n } else {\n const target = ClassUtils.getFunction(instance);\n if (!target) {\n throw new NotYetImplementedError();\n }\n classRef = ClassRef.get(target);\n }\n\n // const entries:IPropertyExtentions[] = MetadataStorage\n // .key(XS_ANNOTATION_OPTIONS_CACHE)\n // .filter((x:IPropertyExtentions) =>\n // x.object === classRef.getClass() && (has(x.options, 'format') || has(x.options, 'format'))\n // );\n const classErrors: IValidationError[] = [];\n const toValidateList = this.getValidationHandlesForFn(classRef.getClass());\n for (const toValidateEntry of toValidateList) {\n for (const handle of toValidateEntry.handles) {\n let value = null;\n let isPropertyCheck = toValidateEntry.property ? true : false;\n\n if (isPropertyCheck) {\n value = instance[toValidateEntry.property];\n } else {\n value = instance;\n }\n\n let instanceOptions = clone(toValidateEntry.options[handle.name]);\n if (isPropertyCheck) {\n instanceOptions.property = toValidateEntry.property;\n }\n if (handle.defaultOptions) {\n defaults(instanceOptions, handle.defaultOptions);\n }\n\n if (!(await handle.fn(value, instanceOptions, instance))) {\n const error: IValidationError = {\n metaType: toValidateEntry.property ? 'property' : 'entity',\n property: toValidateEntry.property,\n value: value,\n constraints: {}\n };\n classErrors.push(error);\n\n let msg = get(instanceOptions, 'message', null);\n if (msg) {\n msg = msg.replace('%propertyName', error.property).replace('%value', value);\n keys(instanceOptions).forEach(k => {\n let v = instanceOptions[k];\n if (isObjectLike(v) || isArray(v)) {\n v = JSON.stringify(v);\n }\n msg = msg.replace('%options.' + k, v);\n });\n error.constraints[handle.name] = msg;\n }\n }\n\n }\n }\n\n\n // validate entity\n // const classErrors = await this.validateHandles(classRef, instance);\n // for (const ref of classRef.getPropertyRefs()) {\n // if (ref.isReference()) {\n // // TODO\n // } else {\n // classErrors.push(...await this.validateHandles(ref, ref.get(instance)));\n // }\n // }\n\n return classErrors;\n }\n\n //\n //\n // static async validateHandles(ref: IBaseRef, value: any) {\n // const handleKeys = this.getHandleKeys(ref);\n // if (isEmpty(handleKeys)) {\n // return [];\n // }\n // const handles = this.getHandles(handleKeys);\n // const errors: IValidationError[] = [];\n // for (const handle of handles) {\n // if (handle) {\n // }\n // }\n // return errors;\n // }\n //\n //\n // static getHandles(handleKeys: string[]): { name: string, fn: (value: any) => boolean, opts?: { message?: string } }[] {\n // return [].concat(...handleKeys.map(k => this.validators.filter(y => y.name === k)));\n // }\n //\n\n static getValidationHandlesForFn(fn: Function) {\n const entries: IValidatorEntry[] = [];\n const entriesSecond = MetadataRegistry.$().getCached().filter(x =>\n x.target === fn && intersection(this.lookupKeys, keys(x)).length > 0\n );\n\n for (const e of entriesSecond) {\n const handlesAndOptions = this.extractValidationInfox(e);\n const validationEntry: IValidatorEntry = {\n target: fn,\n };\n assign(validationEntry, handlesAndOptions);\n if (e.propertyName) {\n validationEntry.property = e.propertyName;\n }\n entries.push(validationEntry);\n }\n\n\n const entriesFirst: IPropertyExtentions[] = MetadataStorage\n .key(XS_ANNOTATION_OPTIONS_CACHE)\n .filter((x: IPropertyExtentions) =>\n x.object === fn && intersection(this.lookupKeys, keys(x.options)).length > 0\n );\n\n for (const e of entriesFirst) {\n const alreadyAsProperty = entries.find(x => x.property === e.property) as IValidatorEntry;\n const handlesAndOptions = this.extractValidationInfox(e.options);\n if (alreadyAsProperty) {\n for (let i = 0; i < handlesAndOptions.handles.length; i++) {\n const handle = handlesAndOptions.handles[i];\n if (alreadyAsProperty.handles.find(x => x.name === handle.name)) {\n // ignore double declarations\n continue;\n }\n alreadyAsProperty.handles.push(handle);\n set(alreadyAsProperty.options, handle.name, get(handlesAndOptions.options, handle.name, {}));\n }\n } else {\n const validationEntry: IValidatorEntry = {\n target: fn,\n };\n assign(validationEntry, handlesAndOptions);\n if (e.property) {\n validationEntry.property = e.property;\n }\n entries.push(validationEntry);\n }\n }\n return entries;\n }\n\n\n private static extractValidationInfox(entryOptions: any) {\n const intersect = intersection(this.lookupKeys, keys(entryOptions));\n const handles: any[] = [];\n const options = {};\n for (const k of intersect) {\n const isLookupKey = ['validate', 'format'].includes(k);\n const valueForKey = get(entryOptions, k, null);\n const handle = this.validators.find(x => x.name === valueForKey || x.involveOnOptionKey === k);\n if (handle) {\n const handleAlreadySet = handles.find(x => x.name === handle.name);\n if (!handleAlreadySet) {\n handles.push(handle);\n }\n\n let v = clone(get(entryOptions, 'validateOptions.' + handle.name, {}));\n if (!isLookupKey) {\n // pass additional value\n v[handle.involveOnOptionKey] = get(entryOptions, handle.involveOnOptionKey, null);\n }\n\n if (v) {\n if (!options[handle.name]) {\n options[handle.name] = {};\n }\n merge(options[handle.name], v);\n }\n }\n }\n return {\n handles: handles,\n options: options\n };\n }\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/validation/IValidateOptions.ts"],"names":[],"mappings":"","file":"IValidateOptions.js","sourcesContent":["export interface IValidateOptions {\n property?: string;\n message?: string;\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/validation/IValidationError.ts"],"names":[],"mappings":"","file":"IValidationError.js","sourcesContent":["export interface IValidationError {\n metaType?: 'entity' | 'property';\n property?: string;\n value?: string;\n constraints?: { [k: string]: string };\n type?: 'error' | 'validate';\n handle?: string;\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/validation/IValidationMessage.ts"],"names":[],"mappings":"","file":"IValidationMessage.js","sourcesContent":["export interface IValidationMessage {\n type: string;\n content: string;\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/validation/IValidationOptions.ts"],"names":[],"mappings":"AAAA,MAAM;AACN,oDAAoD;AACpD,MAAM;AACN,wCAAwC;AACxC,QAAQ;AACR,wFAAwF;AACxF,QAAQ;AACR,oBAAoB;AACpB,QAAQ;AACR,yDAAyD;AACzD,wEAAwE;AACxE,iFAAiF;AACjF,uEAAuE;AACvE,8EAA8E;AAC9E,8EAA8E;AAC9E,QAAQ;AACR,wFAAwF;AACxF,QAAQ;AACR,mDAAmD;AACnD,QAAQ;AACR,uBAAuB;AACvB,QAAQ;AACR,8FAA8F;AAC9F,QAAQ;AACR,sBAAsB;AACtB,mBAAmB;AACnB,IAAI;AACJ,kDAAkD","file":"IValidationOptions.js","sourcesContent":["// /**\n// * Options used to pass to validation decorators.\n// */\n// export interface IValidationOptions {\n// /**\n// * Specifies if validated value is an array and each of its item must be validated.\n// */\n// each?: boolean;\n// /**\n// * Error message used to be used on validation fail.\n// * You can use \"$value\" to use value that was failed by validation.\n// * You can use \"$constraint1\" and \"$constraint2\" keys in the message string,\n// * and they will be replaced with constraint values if they exist.\n// * Message can be either string, either a function that returns a string.\n// * Second option allows to use values and custom messages depend of them.\n// */\n// message?: string | ((value?: any, constraint1?: any, constraint2?: any) => string);\n// /**\n// * Validation groups used for this validation.\n// */\n// groups?: string[];\n// /**\n// * Indicates if validation must be performed always, no matter of validation groups used.\n// */\n// always?: boolean;\n// context?: any;\n// }\n// //# sourceMappingURL=ValidationOptions.d.ts.map\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/validation/IValidationResult.ts"],"names":[],"mappings":"","file":"IValidationResult.js","sourcesContent":["import {IValidationMessage} from './IValidationMessage';\n\nexport interface IValidationResult {\n key: string;\n valid: boolean;\n checked: boolean;\n messages: IValidationMessage[];\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/validation/IValidator.ts"],"names":[],"mappings":"","file":"IValidator.js","sourcesContent":["import {IValidateOptions} from './IValidateOptions';\n\nexport interface IValidator {\n\n name: string;\n\n fn: (value: any, options: IValidateOptions, instance?: any) => boolean;\n\n defaultOptions?: {\n message?: string\n };\n\n involveOnOptionKey?: string\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/validation/IValidatorEntry.ts"],"names":[],"mappings":"","file":"IValidatorEntry.js","sourcesContent":["import {IValidator} from './IValidator';\n\nexport interface IValidatorEntry {\n target: Function,\n property?: string,\n options?: any[],\n handles?: IValidator[]\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/validation/IValidatorHandle.ts"],"names":[],"mappings":"","file":"IValidatorHandle.js","sourcesContent":["export interface IValidatorHandle {\n\n\n}\n"],"sourceRoot":"../.."}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/validation/Validator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAA+B;AAI/B,yDAAoD;AAOpD;;GAEG;AACH,MAAa,SAAS;IAUpB,MAAM,CAAC,GAAG,CAAC,EAAqB,EAAE,MAA8B;QAC9D,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,KAAK;QACV,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,MAAM,CAAO,oBAAoB,CAAC,EAAqC;;YACrE,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACtB,OAAO,EAAE,CAAC;aACX;YACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5B,CAAC;KAAA;IAED,MAAM,CAAO,QAAQ,CAAC,QAAa,EAAE,GAA4B;;YAC/D,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBACpB,OAAO,EAAE,CAAC;aACX;YACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACnE,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5B,CAAC;KAAA;;AAlCH,8BAmCC;AAjCgB,YAAE,GAAwB;IACvC,mCAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,mCAAgB,CAAC;CACjD,CAAC;AAEa,cAAI,GAA6B;IAC9C,mCAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,mCAAgB,CAAC;CACvD,CAAC","file":"Validator.js","sourcesContent":["import {isEmpty} from 'lodash';\nimport {IValidationError} from './IValidationError';\nimport {IClassRef} from '../../api/IClassRef';\nimport {IEntityRef} from '../../api/IEntityRef';\nimport {DefaultValidator} from './DefaultValidator';\nimport {IValidatorEntry} from './IValidatorEntry';\n\n\nexport type validate_function = (instance: any, ref?: IClassRef | IEntityRef) => Promise<IValidationError[]>;\nexport type validate_info_function = (ref?: Function | IClassRef | IEntityRef) => Promise<IValidatorEntry[]>;\n\n/**\n * Abstraction for defualt validator functions\n */\nexport class Validator {\n\n private static fn: validate_function[] = [\n DefaultValidator.validate.bind(DefaultValidator)\n ];\n\n private static info: validate_info_function[] = [\n DefaultValidator.validationInfo.bind(DefaultValidator)\n ];\n\n static add(fn: validate_function, fnInfo: validate_info_function) {\n this.fn.push(fn);\n this.info.push(fnInfo);\n }\n\n static reset() {\n this.fn = [];\n this.info = [];\n }\n\n static async getValidationEntries(fn: Function | IClassRef | IEntityRef) {\n if (isEmpty(this.info)) {\n return [];\n }\n const data = await Promise.all(this.info.map(x => x(fn)));\n return [].concat(...data);\n }\n\n static async validate(instance: any, ref?: IClassRef | IEntityRef): Promise<IValidationError[]> {\n if (isEmpty(this.fn)) {\n return [];\n }\n const data = await Promise.all(this.fn.map(x => x(instance, ref)));\n return [].concat(...data);\n }\n}\n"],"sourceRoot":"../.."}