@tsed/core 6.80.1 → 6.81.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/domain/index.d.ts +0 -1
- package/lib/index.js +39 -116
- package/lib/index.js.map +1 -1
- package/lib/index.modern.js +18 -116
- package/lib/index.modern.js.map +1 -1
- package/lib/utils/imports/importPackage.d.ts +1 -0
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/objects/descriptorOf.d.ts +1 -0
- package/package.json +1 -1
- package/lib/domain/Entity.d.ts +0 -97
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/utils/catchError.ts","../src/utils/proxyDelegation.ts","../src/utils/uniq.ts","../src/utils/objects/classOf.ts","../src/utils/objects/ancestorOf.ts","../src/utils/objects/nameOf.ts","../src/utils/objects/ancestorsOf.ts","../src/utils/objects/prototypeOf.ts","../src/utils/objects/methodsOf.ts","../src/utils/objects/descriptorOf.ts","../src/domain/DecoratorTypes.ts","../src/utils/decorators/decoratorTypeOf.ts","../src/utils/objects/isArray.ts","../src/utils/objects/isDate.ts","../src/utils/objects/isFunction.ts","../src/utils/objects/isNil.ts","../src/utils/objects/isBoolean.ts","../src/utils/objects/isNumber.ts","../src/utils/objects/isString.ts","../src/utils/objects/isPrimitive.ts","../src/utils/objects/isSymbol.ts","../src/utils/objects/deepClone.ts","../src/utils/objects/createInstance.ts","../src/utils/objects/isProtectedKey.ts","../src/utils/objects/objectKeys.ts","../src/utils/objects/deepMerge.ts","../src/domain/Metadata.ts","../src/domain/Store.ts","../src/utils/decorators/decorateMethodsOf.ts","../src/utils/decorators/decoratorArgs.ts","../src/utils/decorators/inheritedDescriptorOf.ts","../src/utils/decorators/useDecorators.ts","../src/utils/decorators/useMethodDecorators.ts","../src/utils/objects/cleanObject.ts","../src/utils/objects/constructorOf.ts","../src/utils/objects/deepExtends.ts","../src/utils/objects/isArrowFn.ts","../src/utils/objects/isPlainObject.ts","../src/utils/objects/isPromise.ts","../src/utils/objects/isClass.ts","../src/utils/objects/getClassOrSymbol.ts","../src/utils/objects/toStringConstructor.ts","../src/utils/objects/getConstructorArgNames.ts","../src/utils/objects/isEnumerable.ts","../src/utils/objects/getEnumerableKeys.ts","../src/utils/objects/isObject.ts","../src/utils/objects/getValue.ts","../src/utils/objects/isCollection.ts","../src/utils/objects/isEmpty.ts","../src/utils/objects/isInheritedFrom.ts","../src/utils/objects/isObservable.ts","../src/utils/objects/isStream.ts","../src/utils/objects/isSerializable.ts","../src/utils/objects/primitiveOf.ts","../src/utils/objects/setValue.ts","../src/utils/objects/toMap.ts","../src/domain/Entity.ts","../src/domain/Env.ts","../src/domain/Hooks.ts","../src/domain/Type.ts","../src/domain/AnyToPromise.ts","../src/errors/UnsupportedDecoratorType.ts","../src/decorators/deprecated.ts","../src/decorators/configurable.ts","../src/decorators/enumerable.ts","../src/decorators/writable.ts","../src/decorators/readOnly.ts","../src/decorators/notConfigurable.ts","../src/decorators/notEnumerable.ts","../src/decorators/storeFn.ts","../src/decorators/storeSet.ts","../src/decorators/storeMerge.ts"],"sourcesContent":["export function catchError<T extends Error>(cb: Function): T | undefined {\n try {\n cb();\n } catch (er) {\n return er;\n }\n}\n\nexport async function catchAsyncError<T extends Error>(cb: Function): Promise<T | undefined> {\n try {\n await cb();\n } catch (er) {\n return er;\n }\n}\n","/**\n * @ignore\n */\nexport type ProxyDelegationGetter<T = any> = (target: T, property: PropertyKey) => any | undefined;\n/**\n * @ignore\n */\nexport type ProxyDelegationRemove<T = any> = (target: T, property: PropertyKey) => any;\n/**\n * @ignore\n */\nexport type ProxyDelegationSetter<T = any> = (target: T, property: PropertyKey, value: any, receiver: any) => any;\n/**\n * @ignore\n */\nexport type ProxyDelegationOwnKeys<T = any> = (target: T) => (string | symbol)[];\n/**\n * @ignore\n */\nexport interface ProxyDelegation<T extends object> {\n handlers?: ProxyHandler<T>;\n getter?: ProxyDelegationGetter<T>;\n setter?: ProxyDelegationSetter<T>;\n remove?: ProxyDelegationRemove<T>;\n ownKeys?: ProxyDelegationOwnKeys<T>;\n}\n\n/**\n * Create a complete and iterable trap.\n * @param self\n * @param options\n * @ignore\n */\nexport function proxyDelegation<T extends object = any>(self: any, options: ProxyDelegation<T> = {}) {\n const {handlers = {}, remove, ownKeys} = options;\n const get: ProxyDelegationGetter = options.getter || ((target: any, propertyKey: PropertyKey) => target.get(propertyKey));\n const set: ProxyDelegationSetter =\n options.setter || ((target: any, propertyKey: PropertyKey, value: any) => !!target.set(propertyKey, value));\n\n const itsOwnProp = (target: any, p: PropertyKey) => Reflect.has(target, p) || typeof p === \"symbol\";\n\n return new Proxy<T>(self, {\n getOwnPropertyDescriptor(target: any, p: PropertyKey): PropertyDescriptor | undefined {\n return Reflect.getOwnPropertyDescriptor(target, p);\n },\n\n has(target: any, p: PropertyKey): boolean {\n if (itsOwnProp(target, p)) {\n return Reflect.has(target, p);\n }\n\n return get(target, p) !== undefined;\n },\n\n get(target: any, p: PropertyKey, receiver: any): any {\n if (itsOwnProp(target, p)) {\n return Reflect.get(target, p, receiver);\n }\n\n return get(target, p);\n },\n\n set(target: any, p: PropertyKey, value: any, receiver: any): boolean {\n if (itsOwnProp(target, p)) {\n return Reflect.set(target, p, value, receiver);\n }\n\n return !!set(target, p as any, value, receiver);\n },\n\n deleteProperty(target: any, p: PropertyKey): boolean {\n if (itsOwnProp(target, p) || !remove) {\n return Reflect.deleteProperty(target, p);\n }\n\n return remove(target, p);\n },\n\n defineProperty(target: any, p: PropertyKey, attributes: PropertyDescriptor): boolean {\n return Reflect.defineProperty(target, p, attributes);\n },\n\n ownKeys(target: any) {\n return Reflect.ownKeys(target).concat((ownKeys && ownKeys(target)) || []);\n },\n ...handlers\n });\n}\n","export function uniq<T = any>(list: T[]): T[] {\n return Array.from(new Set(list).values());\n}\n\nexport function uniqBy<T = any>(list: T[], key = \"id\"): T[] {\n const map = new Map();\n\n list.forEach((item: any) => {\n map.set(item[key], item);\n });\n\n return Array.from(map.values());\n}\n","/**\n * Get the provide constructor if target is an instance.\n * @param target\n * @returns {*}\n */\nexport function getClass(target: any): any {\n return target.prototype ? target : target.constructor;\n}\n\n/**\n * Get the provide constructor if target is an instance.\n * @param target\n * @returns {*}\n * @alias getClass\n */\nexport function classOf(target: any) {\n return getClass(target);\n}\n","export function ancestorOf(target: any): any {\n return target && Object.getPrototypeOf(target);\n}\n\nexport function getInheritedClass(target: any): any {\n return ancestorOf(target);\n}\n","/**\n * Get the provide name.\n * @param targetClass\n */\nexport function nameOfClass(targetClass: any): string {\n return typeof targetClass === \"function\" ? targetClass.name : targetClass.constructor.name;\n}\n\n/**\n * Get symbol name.\n * @param sym\n */\nexport const nameOfSymbol = (sym: symbol): string => sym.toString().replace(\"Symbol(\", \"\").replace(\")\", \"\");\n\n/**\n * Get object name\n */\nexport function nameOf(obj: any): string {\n switch (typeof obj) {\n default:\n return \"\" + obj;\n case \"symbol\":\n return nameOfSymbol(obj);\n case \"function\":\n return nameOfClass(obj);\n }\n}\n","import {classOf} from \"./classOf\";\nimport {getInheritedClass} from \"./ancestorOf\";\nimport {nameOf} from \"./nameOf\";\n\n/**\n *\n * @param target\n * @returns {Array}\n */\nexport function ancestorsOf(target: any) {\n const classes = [];\n\n let currentTarget = classOf(target);\n\n while (currentTarget && nameOf(currentTarget) !== \"\") {\n classes.unshift(currentTarget);\n currentTarget = getInheritedClass(currentTarget);\n }\n\n return classes;\n}\n","import {classOf} from \"./classOf\";\n\n/**\n * Return the prototype of the given class.\n * @param target\n * @returns {any}\n */\nexport function prototypeOf(target: any) {\n return classOf(target) === target ? target.prototype : target;\n}\n","import {classOf} from \"./classOf\";\nimport {ancestorsOf} from \"./ancestorsOf\";\nimport {prototypeOf} from \"./prototypeOf\";\n\n/**\n * Return all methods for a given class.\n * @param target\n */\nexport function methodsOf(target: any) {\n const methods = new Map();\n target = classOf(target);\n\n ancestorsOf(target).forEach((target) => {\n const keys = Reflect.ownKeys(prototypeOf(target));\n\n keys.forEach((propertyKey: string) => {\n if (propertyKey !== \"constructor\") {\n methods.set(propertyKey, {target, propertyKey});\n }\n });\n });\n\n return Array.from(methods.values());\n}\n","/**\n * Return the descriptor for a given class and propertyKey\n * @param target\n * @param {string} propertyKey\n * @returns {PropertyDescriptor}\n */\nexport function descriptorOf(target: any, propertyKey: string | symbol): PropertyDescriptor {\n return Object.getOwnPropertyDescriptor((target && target.prototype) || target, propertyKey)!;\n}\n","export enum DecoratorTypes {\n PARAM = \"parameter\",\n PARAM_CTOR = \"parameter.constructor\",\n PARAM_STC = \"parameter.static\",\n PROP = \"property\",\n PROP_STC = \"property.static\",\n METHOD = \"method\",\n METHOD_STC = \"method.static\",\n CLASS = \"class\"\n}\n","import {DecoratorTypes} from \"../../domain/DecoratorTypes\";\nimport {classOf} from \"../objects/classOf\";\n\nexport function decoratorTypeOf(args: any[]): DecoratorTypes {\n const [target, propertyKey, descriptor] = args;\n\n const staticType = (type: string): any => {\n return target !== classOf(target) ? type : `${type}.static`;\n };\n\n if (typeof descriptor === \"number\") {\n return propertyKey ? staticType(\"parameter\") : \"parameter.constructor\";\n }\n\n if (descriptor && descriptor.value) {\n return staticType(\"method\");\n }\n\n if ((propertyKey && descriptor === undefined) || descriptor) {\n return staticType(\"property\");\n }\n\n return DecoratorTypes.CLASS;\n}\n","/**\n * Return true if value is an array\n * @param target\n * @returns {boolean}\n */\nexport function isArray<T = any>(target: unknown): target is T[] {\n return Array.isArray(target);\n}\n\n/**\n * Return true if the clazz is an array.\n * @param target\n * @returns {boolean}\n * @ignore\n */\nexport function isArrayOrArrayClass<T = any>(target: unknown): target is T[] {\n return target === Array || isArray(target);\n}\n","/**\n *\n * @param target\n * @returns {boolean}\n */\nexport function isDate(target: any): target is Date {\n return target === Date || (target instanceof Date && !isNaN(+target));\n}\n","export function isFunction(target: any): target is Function {\n return typeof target === \"function\";\n}\n","export function isNil(value: any): boolean {\n return value === undefined || value === null;\n}\n","/**\n *\n * @param target\n * @returns {boolean}\n */\nexport function isBoolean(target: any): target is boolean {\n return typeof target === \"boolean\" || target instanceof Boolean || target === Boolean;\n}\n\nexport function isBooleanOrBooleanClass(target: any): target is boolean {\n return typeof target === \"boolean\" || target instanceof Boolean || target === Boolean;\n}\n","/**\n *\n * @param target\n * @returns {boolean}\n */\nexport function isNumber(target: any): target is number {\n return typeof target === \"number\";\n}\n\nexport function isNumberOrNumberClass(target: any): target is number {\n return typeof target === \"number\" || target instanceof Number || target === Number;\n}\n","/**\n * @param target\n * @returns {boolean}\n */\nexport function isString(target: any): target is string {\n return typeof target === \"string\";\n}\n\nexport function isStringOrStringClass(target: any): target is string {\n return typeof target === \"string\" || target instanceof String || target === String;\n}\n","import {isBoolean, isBooleanOrBooleanClass} from \"./isBoolean\";\nimport {isNumber, isNumberOrNumberClass} from \"./isNumber\";\nimport {isString, isStringOrStringClass} from \"./isString\";\n\n/**\n * Return true if the given obj is a primitive.\n * @param target\n * @returns {boolean}\n * @ignore\n */\nexport function isPrimitiveOrPrimitiveClass(target: any): boolean {\n return isStringOrStringClass(target) || isNumberOrNumberClass(target) || isBooleanOrBooleanClass(target);\n}\n\n/**\n * Return true if the given obj is a primitive.\n * @param target\n * @returns {boolean}\n */\nexport function isPrimitive(target: any): boolean {\n return isString(target) || isNumber(target) || isBoolean(target);\n}\n\nexport function isPrimitiveClass(target: any) {\n return [String, Number, Boolean].includes(target);\n}\n","/**\n *\n * @param target\n */\nexport function isSymbol(target: any): target is symbol {\n return typeof target === \"symbol\";\n}\n\nexport function isSymbolOrSymbolClass(target: any): target is symbol {\n return typeof target === \"symbol\" || target instanceof Symbol || target === Symbol;\n}\n","import {isArray} from \"./isArray\";\nimport {isDate} from \"./isDate\";\nimport {isFunction} from \"./isFunction\";\nimport {isNil} from \"./isNil\";\nimport {isPrimitive} from \"./isPrimitive\";\nimport {isSymbol} from \"./isSymbol\";\n\nconst isBasicType = (source: any) => isNil(source) || isPrimitive(source) || isSymbol(source) || isFunction(source);\n\n/**\n * Return a cloned value\n * @param source\n * @param stack\n */\nexport function deepClone(source: any, stack = new WeakMap()): any {\n let dest: any;\n\n if (isBasicType(source)) {\n return source;\n }\n\n if (isDate(source)) {\n return new Date(source);\n }\n\n const stacked = stack.get(source);\n\n if (stacked) {\n // See issue #1619\n // istanbul ignore next\n process.env.TSED_TRACK_CIRCULAR_REF && console.trace(\"Circular ref detected on deepClone\", stacked);\n return stacked;\n }\n\n if (isArray(source)) {\n dest = [];\n } else {\n dest = {};\n stack.set(source, dest);\n }\n\n for (const key in source) {\n // Use getOwnPropertyDescriptor instead of source[key] to prevent from triggering setter/getter.\n const descriptor = Object.getOwnPropertyDescriptor(source, key)!;\n\n if (descriptor) {\n if (!isFunction(descriptor.value)) {\n dest[key] = deepClone(descriptor.value, stack);\n } else {\n Object.defineProperty(dest, key, descriptor);\n }\n }\n }\n\n if (!isArray(source)) {\n const prototype = Reflect.getPrototypeOf(source);\n Reflect.setPrototypeOf(dest, prototype);\n }\n\n return dest;\n}\n","import {classOf} from \"./classOf\";\n\nexport function createInstance(obj: any) {\n return obj ? (classOf(obj) !== Object ? Object.create(obj) : {}) : {};\n}\n","/**\n * Prevent prototype pollution vulnerability\n * @param key\n */\nexport function isProtectedKey(key: string) {\n return [\"__proto__\", \"constructor\", \"prototype\"].includes(key);\n}\n","import {isProtectedKey} from \"./isProtectedKey\";\n\nexport function objectKeys(obj: any): string[] {\n return Object.keys(obj).filter((key) => !isProtectedKey(key));\n}\n","import {createInstance} from \"./createInstance\";\nimport {isFunction} from \"./isFunction\";\nimport {isPrimitive} from \"./isPrimitive\";\nimport {isSymbol} from \"./isSymbol\";\nimport {objectKeys} from \"./objectKeys\";\n\nexport type DeepMergeReducerCB = (collection: any[], value: any, options?: DeepMergeOptions) => any;\nexport type DeepMergeComparatorCB = (item: any, ref: any) => boolean;\n\nexport interface DeepMergeOptions {\n reducers?: Record<string, DeepMergeReducerCB>;\n parentKey?: string;\n cleanUndefinedProps?: boolean;\n}\n\nexport function mergeReducerBuilder(cb: DeepMergeComparatorCB) {\n return (collection: any[], value: any, options: DeepMergeOptions) => {\n const index = collection.findIndex((item) => cb(item, value));\n\n if (index === -1) {\n return [...collection, value];\n }\n\n collection[index] = deepMerge(collection[index], value, options);\n\n return collection;\n };\n}\n\nconst defaultReducer = mergeReducerBuilder((a, b) => a === b);\n\nfunction getReducer({reducers, parentKey}: DeepMergeOptions) {\n if (!reducers) {\n return defaultReducer;\n }\n\n if (parentKey && reducers[parentKey]) {\n return reducers[parentKey];\n }\n\n return reducers[\"default\"] || defaultReducer;\n}\n\nfunction shouldReturnObj(obj: any, source: any) {\n return isPrimitive(obj) || isSymbol(obj) || isFunction(obj) || source === undefined;\n}\n\nfunction shouldReturnSource(obj: any, source: any) {\n return obj === undefined || obj === null || (obj === \"\" && source !== \"\");\n}\n\nexport function deepMerge<T extends any = any, C extends any = any>(\n source: T & any,\n obj: C & any,\n options: DeepMergeOptions = {}\n): (T & C) | undefined | null {\n if (shouldReturnSource(obj, source)) {\n return source as any;\n }\n\n if (shouldReturnObj(obj, source)) {\n return obj;\n }\n\n if (Array.isArray(source)) {\n const reducer = getReducer(options);\n\n return [].concat(obj).reduce((out: any[], value: any) => reducer(out, value, options), [...source]);\n }\n\n return [...objectKeys(source), ...objectKeys(obj)].reduce((out: any, key: string) => {\n const src = source && source[key];\n const value = deepMerge(src, obj && obj[key], {\n ...options,\n parentKey: key\n });\n\n if (options.cleanUndefinedProps && value === undefined) {\n return out;\n }\n\n return {\n ...out,\n [key]: value\n };\n }, createInstance(source));\n}\n","import \"reflect-metadata\";\nimport {classOf} from \"../utils/objects/classOf\";\n\n/**\n * Metadata key\n * @private\n * @type {string}\n */\nconst DESIGN_PARAM_TYPES = \"design:paramtypes\";\n/**\n * Metadata key\n * @private\n * @type {string}\n */\nconst DESIGN_TYPE = \"design:type\";\n/**\n * Metadata key\n * @private\n * @type {string}\n */\nconst DESIGN_RETURN_TYPE = \"design:returntype\";\n\n/**\n * Properties collections\n * @private\n * @type {string}\n */\nconst PROPERTIES: Map<string | symbol, any[]> = new Map<string | symbol, any[]>();\n\n/**\n * @stable\n */\nexport class Metadata {\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param key A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Metadata.get(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Metadata.get(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Metadata.get(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Metadata.get(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Metadata.get(\"custom:annotation\", Example.prototype, \"method\");\n * ```\n *\n */\n static get(key: string, target: any, propertyKey?: string | symbol): any {\n return Reflect.getMetadata(key, classOf(target), propertyKey!);\n }\n\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param key A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Metadata.getOwn(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Metadata.getOwn(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Metadata.getOwn(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Metadata.getOwn(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Metadata.getOwn(\"custom:annotation\", Example.prototype, \"method\");\n * ```\n *\n */\n static getOwn(key: string, target: any, propertyKey?: string | symbol): any {\n return Reflect.getOwnMetadata(key, classOf(target), propertyKey!);\n }\n\n /**\n * Gets the metadata value for the provided metadata DESIGN_TYPE on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // on contructor\n * result = Metadata.getType(Example);\n *\n * // property (on constructor)\n * result = Metadata.getType(Example, \"staticProperty\");\n *\n * // method (on constructor)\n * result = Metadata.getType(Example, \"staticMethod\");\n * ```\n *\n */\n static getType(target: any, propertyKey?: string | symbol): any {\n return Reflect.getMetadata(DESIGN_TYPE, target, propertyKey!);\n }\n\n /**\n * Gets the metadata value for the provided metadata DESIGN_TYPE on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // on contructor\n * result = Metadata.getOwnType(Example);\n *\n * // property (on constructor)\n * result = Metadata.getOwnType(Example, \"staticProperty\");\n *\n * // method (on constructor)\n * result = Metadata.getOwnType(Example, \"staticMethod\");\n * ```\n *\n */\n static getOwnType(target: any, propertyKey?: string | symbol): any {\n return Reflect.getMetadata(DESIGN_TYPE, target, propertyKey!);\n }\n\n /**\n * Gets the metadata value for the provided metadata DESIGN_RETURN_TYPE on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // on contructor\n * result = Metadata.getReturnType(Example);\n *\n * // property (on constructor)\n * result = Metadata.getReturnType(Example, \"staticProperty\");\n *\n * // method (on constructor)\n * result = Metadata.getReturnType(Example, \"staticMethod\");\n * ```\n *\n */\n static getReturnType(target: any, propertyKey?: string | symbol): any {\n return Reflect.getMetadata(DESIGN_RETURN_TYPE, target, propertyKey!);\n }\n\n /**\n * Gets the metadata value for the provided metadata DESIGN_RETURN_TYPE on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // on contructor\n * result = Metadata.getOwnReturnType(Example);\n *\n * // property (on constructor)\n * result = Metadata.getOwnReturnType(Example, \"staticProperty\");\n *\n * // method (on constructor)\n * result = Metadata.getOwnReturnType(Example, \"staticMethod\");\n * ```\n *\n */\n static getOwnReturnType(target: any, propertyKey?: string | symbol): any {\n return Reflect.getOwnMetadata(DESIGN_RETURN_TYPE, target, propertyKey!);\n }\n\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param key A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Metadata.has(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Metadata.has(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Metadata.has(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Metadata.has(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Metadata.has(\"custom:annotation\", Example.prototype, \"method\");\n * ```\n *\n */\n static has(key: string, target: any, propertyKey?: string | symbol): boolean {\n try {\n return Reflect.hasMetadata(key, classOf(target), propertyKey!);\n } catch (er) {}\n\n return false;\n }\n\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param key A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Metadata.has(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Metadata.hasOwn(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Metadata.hasOwn(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Metadata.hasOwn(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Metadata.hasOwn(\"custom:annotation\", Example.prototype, \"method\");\n * ```\n *\n */\n static hasOwn(key: string, target: any, propertyKey?: string | symbol): boolean {\n return Reflect.hasOwnMetadata(key, classOf(target), propertyKey!);\n }\n\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param key A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Metadata.delete(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Metadata.delete(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Metadata.delete(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Metadata.delete(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Metadata.delete(\"custom:annotation\", Example.prototype, \"method\");\n * ```\n *\n */\n static delete(key: string, target: any, propertyKey?: string | symbol): boolean {\n return Reflect.deleteMetadata(key, classOf(target), propertyKey!);\n }\n\n /**\n * Set the metadata value for the provided metadata DESIGN_PARAM_TYPES on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @param value A value that contains attached metadata.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // on contructor\n * result = Metadata.setParamTypes(Example, undefined, [Object]);\n *\n * // property (on constructor)\n * result = Metadata.setParamTypes(Example, \"staticProperty\", [Object]);\n *\n * // property (on prototype)\n * result = Metadata.setParamTypes(Example.prototype, \"property\", [Object]);\n *\n * // method (on constructor)\n * result = Metadata.setParamTypes(Example, \"staticMethod\", [Object]);\n *\n * // method (on prototype)\n * result = Metadata.setParamTypes(Example.prototype, \"method\", [Object]);\n * ```\n *\n */\n static setParamTypes(target: any, propertyKey: string | symbol, value: any): void {\n return this.set(DESIGN_PARAM_TYPES, value, target.prototype, propertyKey);\n }\n\n /**\n * Get all metadata for a metadataKey.\n * @param metadataKey\n */\n static getTargetsFromPropertyKey = (metadataKey: string | symbol): any[] =>\n PROPERTIES.has(metadataKey) ? PROPERTIES.get(metadataKey) || [] : [];\n\n /**\n * Define a unique metadata entry on the target.\n * @param key A key used to store and retrieve metadata.\n * @param value A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey The property key for the target.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", Number, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", Number, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", Number, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", Number, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): PropertyDecorator {\n * return (target, key) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n * ```\n *\n */\n static set(key: string, value: any, target: any, propertyKey?: string | symbol): void {\n const targets: any[] = PROPERTIES.has(key) ? PROPERTIES.get(key) || [] : [];\n const classConstructor = classOf(target);\n\n if (targets.indexOf(classConstructor) === -1) {\n targets.push(classConstructor);\n PROPERTIES.set(key, targets);\n }\n\n Reflect.defineMetadata(key, value, classOf(target), propertyKey!);\n }\n\n /**\n * Gets the metadata value for the provided metadata DESIGN_PARAM_TYPES on the target object or its prototype chain.\n * @param targetPrototype\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // on contructor\n * result = Metadata.getParamTypes(Example.prototype);\n *\n * // property (on constructor)\n * result = Metadata.getParamTypes(Example.prototype, \"staticProperty\");\n *\n * // method (on constructor)\n * result = Metadata.getParamTypes(Example.prototype, \"staticMethod\");\n * ```\n *\n */\n static getParamTypes(targetPrototype: any, propertyKey?: string | symbol): any[] {\n return Reflect.getMetadata(DESIGN_PARAM_TYPES, targetPrototype, propertyKey!) || [];\n }\n\n /**\n * Gets the metadata value for the provided metadata DESIGN_PARAM_TYPES on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // on contructor\n * result = Metadata.getParamTypes(Example);\n *\n * // property (on constructor)\n * result = Metadata.getParamTypes(Example, \"staticProperty\");\n *\n * // method (on constructor)\n * result = Metadata.getParamTypes(Example, \"staticMethod\");\n * ```\n *\n */\n static getOwnParamTypes(target: any, propertyKey?: string | symbol): any[] {\n return Reflect.getOwnMetadata(DESIGN_PARAM_TYPES, target, propertyKey!) || [];\n }\n}\n","import {DecoratorTypes} from \"../domain/DecoratorTypes\";\nimport {decoratorTypeOf} from \"../utils/decorators/decoratorTypeOf\";\nimport {deepClone} from \"../utils/objects/deepClone\";\nimport {deepMerge} from \"../utils/objects/deepMerge\";\nimport {descriptorOf} from \"../utils/objects/descriptorOf\";\nimport {isSymbol} from \"../utils/objects/isSymbol\";\nimport {nameOf} from \"../utils/objects/nameOf\";\nimport {Metadata} from \"./Metadata\";\nimport type {Type} from \"./Type\";\n\n/**\n * @ignore\n */\nexport const CLASS_STORE = \"tsed:class:store\";\n/**\n * @ignore\n */\nexport const METHOD_STORE = \"tsed:method:store\";\n/**\n * @ignore\n */\nexport const PROPERTY_STORE = \"tsed:property:store\";\n/**\n * @ignore\n */\nexport const PARAM_STORE = \"tsed:param:store\";\n\nconst stores = new Map<symbol, Store>();\n\nfunction storeGet(key: string, ...args: any[]): Store {\n if (isSymbol(args[0])) {\n if (!stores.has(args[0])) {\n stores.set(args[0], new Store());\n }\n\n return stores.get(args[0])!;\n } else {\n const registry = Metadata as any;\n\n if (!registry.hasOwn(key, ...args)) {\n registry.set(key, new Store(), ...args);\n }\n\n return registry.getOwn(key, ...args);\n }\n}\n\nfunction defineStore(args: any[]): Store {\n const [target, propertyKey, descriptor] = args;\n\n switch (decoratorTypeOf(args)) {\n case DecoratorTypes.PARAM_CTOR:\n case DecoratorTypes.PARAM_STC:\n case DecoratorTypes.PARAM:\n const store = storeGet(PARAM_STORE, target, propertyKey);\n if (!store.has(\"\" + descriptor)) {\n store.set(\"\" + descriptor, new Store());\n }\n\n return store.get(\"\" + descriptor);\n case DecoratorTypes.PROP:\n case DecoratorTypes.PROP_STC:\n return storeGet(PROPERTY_STORE, target, propertyKey);\n case DecoratorTypes.METHOD:\n case DecoratorTypes.METHOD_STC:\n return storeGet(METHOD_STORE, target, propertyKey);\n case DecoratorTypes.CLASS:\n return storeGet(CLASS_STORE, target);\n }\n}\n\nexport class Store {\n private _entries = new Map<string, any>();\n\n /**\n * Create or get a Store from args {target + methodName + descriptor}\n * @param args\n * @returns {Store}\n */\n static from(...args: any[]): Store {\n return defineStore(args);\n }\n\n /**\n * Create store on the method.\n * @param target\n * @param {string} propertyKey\n * @returns {Store}\n */\n static fromMethod(target: any, propertyKey: string | symbol): Store {\n return Store.from(target, propertyKey, descriptorOf(target, propertyKey));\n }\n\n static mergeStoreFrom(target: Type<any>, source: Type<any>, ...args: any[]) {\n const store = Store.from(target, ...args);\n\n Store.from(source, ...args)._entries.forEach((value, key) => {\n store.merge(key, value);\n });\n\n return store;\n }\n\n static mergeStoreMethodFrom(target: Type<any>, source: Type<any>, propertyKey: string | symbol) {\n return this.mergeStoreFrom(target, source, propertyKey, descriptorOf(target, propertyKey));\n }\n\n /**\n * The get() method returns a specified element from a Map object.\n * @param key Required. The key of the element to return from the Map object.\n * @param defaultValue\n * @returns {T} Returns the element associated with the specified key or undefined if the key can't be found in the Map object.\n */\n get<T = any>(key: any, defaultValue?: any): T {\n return this._entries.get(nameOf(key)) || defaultValue;\n }\n\n /**\n * The has() method returns a boolean indicating whether an element with the specified key exists or not.\n * @param key\n * @returns {boolean}\n */\n has(key: any): boolean {\n return this._entries.has(nameOf(key));\n }\n\n /**\n * The set() method adds or updates an element with a specified key and value to a Map object.\n * @param key Required. The key of the element to add to the Map object.\n * @param metadata Required. The value of the element to add to the Map object.\n */\n set(key: any, metadata: any): Store {\n this._entries.set(nameOf(key), metadata);\n\n return this;\n }\n\n /**\n * The delete() method removes the specified element from a Map object.\n * @param key Required. The key of the element to remove from the Map object.\n * @returns {boolean} Returns true if an element in the Map object existed and has been removed, or false if the element does not exist.\n */\n delete(key: string): boolean {\n return this._entries.delete(nameOf(key));\n }\n\n /**\n * Merge given value with existing value.\n * @param key\n * @param value\n * @param inverse Change the merge order. Get the existing value and apply over given value\n * @returns {Store}\n */\n merge(key: any, value: any, inverse: boolean = false): Store {\n let _value_ = this.get(key);\n\n if (_value_) {\n value = deepClone(value);\n _value_ = deepClone(_value_);\n value = inverse ? deepMerge(value, _value_) : deepMerge(_value_, value);\n }\n\n this.set(key, value);\n\n return this;\n }\n\n toJson() {\n return [...this._entries.entries()].reduce((obj, [key, value]) => {\n return {\n ...obj,\n [key]: value\n };\n }, {});\n }\n}\n","import {classOf} from \"../objects/classOf\";\nimport {methodsOf} from \"../objects/methodsOf\";\nimport {prototypeOf} from \"../objects/prototypeOf\";\nimport {descriptorOf} from \"../objects/descriptorOf\";\nimport {Store} from \"../../domain/Store\";\n\nexport function decorateMethodsOf(klass: any, decorator: any) {\n methodsOf(klass).forEach(({target, propertyKey}) => {\n if (target !== classOf(klass)) {\n Object.defineProperty(prototypeOf(klass), propertyKey, {\n value(...args: any[]) {\n return prototypeOf(target)[propertyKey].apply(this, args);\n }\n });\n\n Store.mergeStoreMethodFrom(klass, target, propertyKey);\n }\n\n decorator(prototypeOf(klass), propertyKey, descriptorOf(klass, propertyKey));\n });\n}\n","import {DecoratorParameters} from \"../../interfaces/DecoratorParameters\";\nimport {descriptorOf} from \"../objects/descriptorOf\";\n\nexport function decoratorArgs(target: any, propertyKey: string): DecoratorParameters {\n return [target, propertyKey, descriptorOf(target, propertyKey)!];\n}\n","import {ancestorsOf} from \"../objects/ancestorsOf\";\n\nexport function inheritedDescriptorOf(target: any, propertyKey: string): PropertyDescriptor | undefined {\n for (const klass of ancestorsOf(target)) {\n const descriptor = Object.getOwnPropertyDescriptor((klass && klass.prototype) || klass, propertyKey)!;\n\n if (descriptor) {\n return descriptor;\n }\n }\n\n return undefined;\n}\n","import {DecoratorParameters} from \"../../interfaces/DecoratorParameters\";\nimport {AnyDecorator} from \"../../interfaces/AnyDecorator\";\n\nexport function useDecorators(...decorators: AnyDecorator[]): any {\n return (...args: DecoratorParameters) => {\n decorators\n .filter((o: any) => !!o)\n .forEach((decorator: Function) => {\n decorator(...args);\n });\n };\n}\n","import {AnyDecorator} from \"../../interfaces/AnyDecorator\";\nimport {descriptorOf} from \"../objects/descriptorOf\";\n\nexport function useMethodDecorator(decorator: AnyDecorator) {\n return (target: any, propertyKey: string | symbol) => decorator(target, propertyKey, descriptorOf(target, propertyKey));\n}\n\nexport function useMethodDecorators(...decorators: AnyDecorator[]) {\n return (target: any, propertyKey: string | symbol) => {\n decorators.filter(Boolean).forEach((decorator) => decorator(target, propertyKey, descriptorOf(target, propertyKey)));\n };\n}\n","import {isProtectedKey} from \"./isProtectedKey\";\n/**\n * Remove undefined value\n * @param obj\n * @param ignore\n */\nexport function cleanObject(obj: any, ignore: string[] = []): any {\n return Object.entries(obj).reduce((obj, [key, value]) => {\n if (isProtectedKey(key) || ignore.includes(key)) {\n return obj;\n }\n\n return value === undefined\n ? obj\n : {\n ...obj,\n [key]: value\n };\n }, {});\n}\n","import type {Type} from \"../../domain/Type\";\n\n/**\n * Get the class constructor\n * @param target\n */\nexport function getConstructor(target: any): Type<any> {\n return typeof target === \"function\" ? target : target.constructor;\n}\n\n/**\n * Get the class constructor\n * @param target\n */\nexport function constructorOf(target: any): Type<any> {\n return getConstructor(target);\n}\n","import {createInstance} from \"./createInstance\";\nimport {isArrayOrArrayClass} from \"./isArray\";\nimport {isPrimitive} from \"./isPrimitive\";\nimport {objectKeys} from \"./objectKeys\";\n\nexport type DeepExtendsReducers = Record<string, (collection: any[], value: any) => any>;\n\nfunction reducer() {\n return (collection: any[], value: any) => {\n collection.indexOf(value) === -1 && collection.push(value);\n\n return collection;\n };\n}\n\n/**\n * Deep extends a model with another one.\n * @param out\n * @param obj\n * @param reducers\n * @returns {any}\n * @deprecated Since 2021-07-16. Use deepMerge instead of\n */\nexport function deepExtends(out: any, obj: any, reducers: DeepExtendsReducers = {}): any {\n if (obj === undefined || obj === null) {\n return out;\n }\n\n if (isPrimitive(obj) || typeof obj === \"symbol\" || typeof obj === \"function\") {\n return obj;\n }\n\n if (isArrayOrArrayClass(obj)) {\n out = out || [];\n } else {\n out = out || createInstance(obj);\n }\n\n const defaultReducer = reducers[\"default\"] ? reducers[\"default\"] : reducer();\n\n const set = (key: string | number, value: any) => {\n if (isArrayOrArrayClass(obj)) {\n out.indexOf(value) === -1 && out.push(value);\n } else {\n out[key] = value;\n }\n };\n\n objectKeys(obj).forEach((key) => {\n let value = obj[key];\n\n // istanbul ignore next\n if (value === undefined || value === null) {\n return;\n }\n\n // istanbul ignore next\n if (value === \"\" && out[key] !== \"\") {\n return;\n }\n\n if (isPrimitive(value) || typeof value === \"function\") {\n set(key, value);\n\n return;\n }\n\n if (isArrayOrArrayClass(value)) {\n value = value.map((value: any) => deepExtends(undefined, value));\n\n set(\n key,\n []\n .concat(out[key] || [], value)\n .reduce(\n (collection: any[], value: any) => (reducers[key] ? reducers[key](collection, value) : defaultReducer(collection, value)),\n []\n )\n );\n\n return;\n }\n\n // Object\n if (isArrayOrArrayClass(obj)) {\n set(key, deepExtends(undefined, value, reducers));\n } else {\n set(key, deepExtends(out[key], value, reducers));\n }\n });\n\n if (isArrayOrArrayClass(out)) {\n out.reduce((collection: any[], value: any) => defaultReducer(collection, value), []);\n }\n\n return out;\n}\n","import {isFunction} from \"./isFunction\";\n\nexport function isArrowFn(target: any): target is Function {\n return target && isFunction(target) && !target.prototype;\n}\n","import {classOf} from \"./classOf\";\n\n/**\n *\n * @param target\n * @returns {boolean}\n */\nexport function isClassObject(target: any): target is Object {\n return target === Object;\n}\n\nexport function isPlainObject(target: any): boolean {\n return isClassObject(classOf(target)) && target !== Object;\n}\n","/**\n * Tests to see if the object is an ES2015 (ES6) Promise\n * @see {@link https://www.ecma-international.org/ecma-262/6.0/#sec-promise-objects}\n * @param target\n * @returns {boolean}\n */\nexport function isPromise<T = any>(target: any): target is Promise<T> {\n return (\n target === Promise ||\n target instanceof Promise ||\n (!!target && typeof target.subscribe !== \"function\" && typeof target.then === \"function\")\n );\n}\n","import {isArrayOrArrayClass} from \"./isArray\";\nimport {isArrowFn} from \"./isArrowFn\";\nimport {isDate} from \"./isDate\";\nimport {isClassObject} from \"./isPlainObject\";\nimport {isPrimitiveOrPrimitiveClass} from \"./isPrimitive\";\nimport {isPromise} from \"./isPromise\";\nimport {isSymbol} from \"./isSymbol\";\n\nexport function isClass(target: any) {\n if (!target) {\n return false;\n }\n\n if (isArrowFn(target)) {\n return false;\n }\n\n return !(\n isSymbol(target) ||\n isPrimitiveOrPrimitiveClass(target) ||\n isClassObject(target) ||\n isDate(target) ||\n isPromise(target) ||\n isArrayOrArrayClass(target)\n );\n}\n","import {classOf} from \"./classOf\";\nimport {isClass} from \"./isClass\";\n\nexport function getClassOrSymbol(target: any): any {\n return isClass(target) ? classOf(target) : target;\n}\n","import {constructorOf} from \"./constructorOf\";\n\nexport function toStringConstructor(target: any): string {\n const ctr = constructorOf(target);\n const strings = ctr.toString().split(\"\\n\");\n const ctrString = strings.find((s) => s.indexOf(\"constructor(\") > -1) || \"constructor()\";\n\n return `${ctrString.replace(\"{\", \"\").trim()}`;\n}\n","import {toStringConstructor} from \"./toStringConstructor\";\n\nexport function getConstructorArgNames(target: any) {\n return toStringConstructor(target).replace(\"constructor(\", \"\").replace(\")\", \"\").split(\", \").filter(Boolean);\n}\n","import {inheritedDescriptorOf} from \"../decorators/inheritedDescriptorOf\";\nimport {classOf} from \"./classOf\";\n\n/**\n *\n * @param obj\n * @param key\n */\nexport function isEnumerable(obj: any, key: string) {\n const klass = classOf(obj);\n\n if (klass) {\n const descriptor = inheritedDescriptorOf(klass, key);\n\n if (descriptor) {\n return descriptor.enumerable;\n }\n }\n\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n}\n","import {isEnumerable} from \"./isEnumerable\";\nimport {isProtectedKey} from \"./isProtectedKey\";\n\n/**\n * Return all enumerable keys of the given object\n * @param obj\n */\nexport function getEnumerableKeys(obj: any) {\n const keys: string[] = [];\n\n for (const key in obj) {\n if (!isProtectedKey(key) && isEnumerable(obj, key)) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n","export function isObject(target: any): target is object {\n return typeof target === \"object\";\n}\n","import {isFunction} from \"./isFunction\";\nimport {isObject} from \"./isObject\";\nimport {isString} from \"./isString\";\n\nconst mapOptions = (args: any[]) => {\n const [expression, scope, defaultValue, separator = \".\"] = args;\n\n if (isObject(scope) || isString(expression)) {\n return {\n expression,\n scope,\n defaultValue,\n separator\n };\n }\n\n return {\n expression: scope,\n scope: expression,\n defaultValue,\n separator\n };\n};\n\n/**\n * Get value from scope\n * @param {string} expression\n * @param scope\n * @returns {any}\n */\nexport function getValue<T = any>(scope: any, expression: string | undefined): T | undefined;\n/**\n * Get value from scope\n * @param {string} expression\n * @param scope\n * @param defaultValue\n * @param separator\n * @returns {any}\n */\nexport function getValue<T = any>(scope: any, expression: string | undefined, defaultValue: T, separator?: string): T;\n/**\n * Get value from scope\n * @param {string} expression\n * @param scope\n * @returns {any}\n */\nexport function getValue<T = any>(expression: string | undefined, scope: any): T | undefined;\n/**\n * Get value from scope\n * @param {string} expression\n * @param scope\n * @param defaultValue\n * @param separator\n * @returns {any}\n */\nexport function getValue<T = any>(expression: string | undefined, scope: any, defaultValue: T, separator?: string): T;\nexport function getValue(...args: any[]) {\n const options = mapOptions(args);\n let scope = options.scope;\n const {expression, defaultValue, separator} = options;\n\n if (!expression) {\n return scope;\n }\n\n if (!scope) {\n return defaultValue;\n }\n\n const keys: string[] = expression.split(separator);\n\n const getValue = (key: string) => {\n if (scope) {\n if (scope[key] !== undefined || key in scope) {\n return scope[key];\n }\n\n if (isFunction(scope.get)) {\n return scope.get(key);\n }\n }\n };\n\n while ((scope = getValue(keys.shift()!)) && keys.length) {}\n\n return scope === undefined ? defaultValue : scope;\n}\n","import {isArrayOrArrayClass} from \"./isArray\";\n\n/**\n * Return true if the target.\n * @param target\n * @returns {boolean}\n */\nexport function isCollection(target: any): boolean {\n return (\n isArrayOrArrayClass(target) ||\n target === Map ||\n target instanceof Map ||\n target === Set ||\n target instanceof Set ||\n target === WeakMap ||\n target instanceof WeakMap ||\n target === WeakSet ||\n target instanceof WeakSet\n );\n}\n","import {isNil} from \"./isNil\";\n\n/**\n * Return true if the value is an empty string, null or undefined.\n * @param value\n * @returns {boolean}\n */\nexport function isEmpty(value: any): boolean {\n return value === \"\" || isNil(value);\n}\n","import {classOf} from \"./classOf\";\nimport {ancestorOf} from \"./ancestorOf\";\nimport {nameOf} from \"./nameOf\";\n\nexport function isInheritedFrom(target: any, from: any, deep = 5): boolean {\n if (!target || !from) {\n return false;\n }\n\n target = classOf(target);\n from = classOf(from);\n\n while (nameOf(target) !== \"\") {\n if (!deep) {\n return false;\n }\n if (target === from) {\n return true;\n }\n\n target = ancestorOf(target);\n deep--;\n }\n\n return false;\n}\n","export function isObservable<T>(obj: any): boolean {\n return !!obj && typeof obj.lift === \"function\" && typeof obj.subscribe === \"function\";\n}\n","export function isStream(obj: any): boolean {\n return obj !== null && typeof obj === \"object\" && typeof obj.pipe === \"function\";\n}\n","import {isStream} from \"./isStream\";\nimport {isBoolean} from \"./isBoolean\";\nimport {isNumber} from \"./isNumber\";\nimport {isString} from \"./isString\";\nimport {isNil} from \"./isNil\";\n\nexport function isSerializable(data: any) {\n return !(Buffer.isBuffer(data) || isStream(data) || isBoolean(data) || isNumber(data) || isString(data) || isNil(data));\n}\n","import {isBoolean, isBooleanOrBooleanClass} from \"./isBoolean\";\nimport {isNumber, isNumberOrNumberClass} from \"./isNumber\";\nimport {isString, isStringOrStringClass} from \"./isString\";\n\nexport function primitiveOf(target: any): \"string\" | \"number\" | \"boolean\" | \"any\" {\n if (isStringOrStringClass(target)) {\n return \"string\";\n }\n\n if (isNumberOrNumberClass(target)) {\n return \"number\";\n }\n\n if (isBooleanOrBooleanClass(target)) {\n return \"boolean\";\n }\n\n return \"any\";\n}\n","import {isProtectedKey} from \"./isProtectedKey\";\n\nexport function setValue(scope: any, expression: string, value: any, separator = \".\") {\n const keys: string[] = expression.split(separator);\n\n const setValue = (key: string, add: boolean) => {\n if (isProtectedKey(key)) {\n return false;\n }\n\n if (add) {\n if (typeof scope.set === \"function\") {\n scope.set(key, value);\n } else {\n scope[key] = value;\n }\n\n return false;\n }\n\n if (typeof scope.set === \"function\") {\n if (!scope.has(key)) {\n scope.set(key, {});\n }\n\n scope = scope.get(key);\n } else {\n scope = scope[key] = scope[key] || {};\n }\n\n return true;\n };\n\n while (setValue(keys.shift()!, !keys.length)) {}\n}\n","import {isArray} from \"./isArray\";\nimport {isString} from \"./isString\";\n\nexport type ToMapIdentityCB<V> = (item: V, index: string | number) => string | string[];\nexport type ToMapIdentity<V> = string | ToMapIdentityCB<V>;\n\nfunction createIdentityFn<V>(keyOrFn?: ToMapIdentity<V>): ToMapIdentityCB<V> {\n if (!keyOrFn) {\n return (v, k) => String(k);\n }\n\n if (isString(keyOrFn)) {\n return (item: any) => {\n return item[keyOrFn as string];\n };\n }\n\n return keyOrFn;\n}\n\nexport function toMap<K extends keyof any = any, V = any>(input: Record<K, V> | V[], keyOrFn?: ToMapIdentity<V>): Map<K, V> {\n if (isArray<V>(input)) {\n const identity = createIdentityFn<V>(keyOrFn || \"id\");\n return input.reduce((map, value, index) => {\n const ids = ([] as string[]).concat(identity(value, index));\n\n ids.forEach((id) => map.set(id, value));\n\n return map;\n }, new Map());\n }\n\n const identity = createIdentityFn<V>(keyOrFn);\n\n return Object.entries(input).reduce((map, [key, value]) => {\n return map.set(identity(value as V, key), value);\n }, new Map());\n}\n","import {Type} from \"./Type\";\nimport {classOf, decoratorTypeOf, isArrayOrArrayClass, isClass, isDate, isObject, isPrimitiveOrPrimitiveClass, nameOf} from \"../utils\";\nimport {DecoratorTypes} from \"./DecoratorTypes\";\n\nexport interface EntityOptions {\n target: Type<any>;\n propertyKey?: string | symbol;\n index?: number;\n descriptor?: any;\n type?: Type<any>;\n collectionType?: Type<any>;\n\n [key: string]: any;\n}\n\nexport abstract class Entity {\n /**\n * Original property key decorated by the decorator\n */\n readonly propertyKey: string | symbol;\n /**\n * Alias of the property\n */\n readonly propertyName: string;\n /**\n * Parameter index\n */\n readonly index: number;\n /**\n * Method's descriptor\n */\n readonly descriptor: number;\n /**\n * Decorator type used to declare the JsonSchemaStore.\n */\n readonly decoratorType: DecoratorTypes;\n /**\n * Type of the collection (Array, Map, Set, etc...)\n */\n public collectionType: Type<any>;\n public token: Type<any>;\n /**\n *\n */\n protected _type: Type<any>;\n protected _target: Type<any>;\n\n protected constructor({target, propertyKey, descriptor, index}: EntityOptions) {\n this._target = target;\n this.propertyKey = propertyKey!;\n this.propertyName = String(propertyKey);\n this.descriptor = descriptor;\n this.index = index!;\n this.decoratorType = decoratorTypeOf([target, propertyKey, descriptor || index]);\n this.token = target && classOf(target);\n }\n\n /**\n * Reference to the class\n */\n get target() {\n return this._target;\n }\n\n /**\n * Return the class name of the entity.\n * @returns {string}\n */\n get targetName(): string {\n return nameOf(this.token);\n }\n\n /**\n *\n * @returns {Type<any>}\n */\n get type(): Type<any> | any {\n return this._type;\n }\n\n /**\n * Get original type without transformation\n * @param value\n */\n set type(value: Type<any> | any) {\n this._type = value;\n }\n\n /**\n * Return the itemSchema target type. if the type is a function used for recursive model, the function will be called to\n * get the right type.\n */\n get computedType() {\n return this._type;\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isCollection(): boolean {\n return !!this.collectionType;\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isArray() {\n return isArrayOrArrayClass(this.collectionType);\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isPrimitive() {\n return isPrimitiveOrPrimitiveClass(this._type);\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isDate() {\n return isDate(this.computedType);\n }\n\n /**\n *\n * @returns {boolean}\n */\n get isObject() {\n return isObject(this.computedType);\n }\n\n /**\n *\n */\n get isClass() {\n return isClass(this.computedType);\n }\n}\n","/**\n *\n */\nexport enum Env {\n PROD = \"production\",\n DEV = \"development\",\n TEST = \"test\"\n}\n\n/**\n * Fallback\n * @type {Env}\n */\n// tslint:disable-next-line: variable-name\nexport const EnvTypes = Env;\n","export class Hooks {\n private listeners: Map<string, Function[]> = new Map();\n\n /**\n * Listen a hook event\n * @param event\n * @param cb\n */\n on(event: string, cb: Function) {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, []);\n }\n\n this.listeners.get(event)!.push(cb);\n\n return this;\n }\n\n /**\n * Remove a listener attached to an event\n * @param event\n * @param cb\n */\n off(event: string, cb: Function) {\n if (this.listeners.has(event)) {\n this.listeners.set(\n event,\n this.listeners.get(event)!.filter((item) => item === cb)\n );\n }\n\n return this;\n }\n\n /**\n * Trigger an event and call listener.\n * @param event\n * @param args\n * @param callThis\n */\n emit(event: string, args: any[] = [], callThis: any = null): void {\n if (this.listeners.has(event)) {\n for (const cb of this.listeners.get(event)!) {\n cb.call(callThis, ...args);\n }\n }\n }\n\n /**\n * Trigger an event, listener alter given value and return it.\n * @param event\n * @param value\n * @param args\n * @param callThis\n */\n alter(event: string, value: any, args: any[] = [], callThis: any = null): any {\n if (this.listeners.has(event)) {\n for (const cb of this.listeners.get(event)!) {\n value = cb.call(callThis, value, ...args);\n }\n }\n\n return value;\n }\n\n /**\n * Trigger an event and call async listener.\n * @param event\n * @param args\n * @param callThis\n */\n async asyncEmit(event: string, args: any[] = [], callThis: any = null): Promise<void> {\n if (this.listeners.has(event)) {\n for (const cb of this.listeners.get(event)!) {\n await cb.call(callThis, ...args);\n }\n }\n }\n\n /**\n * Trigger an event, async listener alter given value and return it.\n * @param event\n * @param value\n * @param args\n * @param callThis\n */\n async asyncAlter(event: string, value: any, args: string[] = [], callThis: any = null): Promise<any> {\n if (this.listeners.has(event)) {\n for (const cb of this.listeners.get(event)!) {\n value = await cb.call(callThis, value, ...args);\n }\n }\n\n return value;\n }\n}\n","/**\n * An example of a `Type` is `MyCustomComponent` filters, which in JavaScript is be represented by\n * the `MyCustomComponent` constructor function.\n */\n// tslint:disable-next-line: variable-name\n/**\n *\n */\nexport interface Type<T = any> extends Function {\n new (...args: any[]): T;\n}\n\nexport const Type = Function;\n\n// @ts-ignore\nglobal.Type = Type;\n","import {isObservable} from \"../utils/objects/isObservable\";\nimport {isPromise} from \"../utils/objects/isPromise\";\nimport {isStream} from \"../utils/objects/isStream\";\n\n/**\n * @ignore\n */\nfunction isResponse(obj: any) {\n return obj.data && obj.headers && obj.status && obj.statusText;\n}\n\n/**\n * @ignore\n */\nexport enum AnyToPromiseStatus {\n PENDING = \"PENDING\",\n CANCELED = \"CANCELED\",\n RESOLVED = \"RESOLVED\",\n REJECTED = \"REJECTED\"\n}\n\nexport enum AnyToPromiseResponseTypes {\n STREAM = \"STREAM\",\n BUFFER = \"BUFFER\",\n DATA = \"DATA\"\n}\n\nexport interface AnyPromiseResult<T = any> {\n state: AnyToPromiseStatus;\n type: AnyToPromiseResponseTypes;\n status?: number;\n headers?: Record<string, any>;\n data: T;\n}\n\nexport class AnyToPromise<T = any> {\n public status = AnyToPromiseStatus.PENDING;\n public args: any[];\n\n #resolves: any;\n #rejects: any;\n #hasNextFunction = false;\n\n readonly #promise: Promise<AnyPromiseResult<T>>;\n\n constructor({hasNextFunction = false}: {hasNextFunction?: boolean} = {}) {\n this.#hasNextFunction = hasNextFunction;\n\n this.#promise = new Promise((resolve: any, reject: any) => {\n this.#resolves = resolve;\n this.#rejects = reject;\n });\n }\n\n isDone(): boolean {\n return this.status !== AnyToPromiseStatus.PENDING;\n }\n\n get next() {\n this.#hasNextFunction = true;\n\n return (error?: any) => {\n if (this.isDone()) {\n return;\n }\n\n return error ? this.reject(error) : this.resolve({type: AnyToPromiseResponseTypes.DATA});\n };\n }\n\n /**\n *\n */\n async call(cb: Function): Promise<AnyPromiseResult<T>> {\n if (this.isDone()) {\n return this as any;\n }\n\n try {\n this.handle(cb());\n } catch (er) {\n this.reject(er);\n }\n\n return this.#promise;\n }\n\n reject(er: any) {\n if (this.isDone()) {\n return;\n }\n\n this.done(AnyToPromiseStatus.REJECTED);\n\n this.#rejects(er);\n }\n\n resolve(response: any = {}) {\n if (this.isDone()) {\n return;\n }\n\n this.done(AnyToPromiseStatus.RESOLVED);\n\n this.#resolves({...response, state: AnyToPromiseStatus.RESOLVED});\n }\n\n destroy() {}\n\n cancel() {\n if (this.isDone()) {\n return;\n }\n\n this.done(AnyToPromiseStatus.CANCELED);\n\n return this.#resolves({state: AnyToPromiseStatus.CANCELED});\n }\n\n done(status: AnyToPromiseStatus) {\n this.destroy();\n this.status = status;\n }\n\n handle(process: any, additionalProps = {}): any {\n if (this.isDone()) {\n return;\n }\n\n if (process) {\n if (this.isCanceledResponse(process)) {\n // ABANDON\n return this.cancel();\n }\n\n if (isObservable(process)) {\n process = process.toPromise();\n }\n\n if (isResponse(process)) {\n return this.handle(process.data, {\n ...additionalProps,\n status: process.status,\n headers: process.headers\n });\n }\n\n if (isStream(process)) {\n return this.resolve({...additionalProps, type: AnyToPromiseResponseTypes.STREAM, data: process});\n }\n if (isStream(process) || Buffer.isBuffer(process)) {\n return this.resolve({...additionalProps, type: AnyToPromiseResponseTypes.BUFFER, data: process});\n }\n\n if (isPromise(process)) {\n return process\n .then((result: any) => this.handle(result, additionalProps))\n .catch((error: any) => {\n if (error.response && isResponse(error.response)) {\n return this.handle(error.response);\n }\n return this.reject(error);\n });\n }\n }\n\n if (!this.#hasNextFunction) {\n // no next function and empty response\n return this.resolve({\n ...additionalProps,\n data: process,\n type: AnyToPromiseResponseTypes.DATA\n });\n }\n }\n\n protected isCanceledResponse(process: any) {\n return process === AnyToPromiseStatus.CANCELED;\n }\n}\n","import {classOf, decoratorTypeOf, nameOf} from \"../utils\";\n\nexport class UnsupportedDecoratorType extends Error {\n name: \"UNSUPPORTED_DECORATOR_TYPE\";\n\n constructor(decorator: any, args: any[]) {\n super(UnsupportedDecoratorType.buildMessage(decorator, args));\n }\n\n private static buildMessage(decorator: any, args: any[]): string {\n const [target, propertyKey, index] = args;\n\n const bindingType = decoratorTypeOf(args);\n const shortBinding = bindingType.split(\"/\")[0];\n const param = shortBinding === \"parameter\" ? \".[\" + index + \"]\" : \"\";\n const cstr = shortBinding === \"parameter\" ? \".constructor\" : \"\";\n const method = propertyKey ? \".\" + propertyKey : cstr;\n\n const path = nameOf(classOf(target)) + method + param;\n\n return `${decorator.name} cannot be used as ${bindingType} decorator on ${path}`;\n }\n}\n","import {Type} from \"../domain/Type\";\n\n/**\n * The `@Deprecated()` decorators wraps the given method in such a way that it is marked as deprecated.\n *\n * ```typescript\n * provide Foo {\n *\n * @Deprecated(\"Foo.method: Use Foo.method2 instead\")\n * public method() {\n *\n * }\n * ```\n *\n * When called, @Deprecated() will return a function that will emit a `DeprecationWarning` using the `process.on('warning')` event.\n * By default, this warning will be emitted and printed to `stderr` exactly once, the first time it is called. After the warning is emitted, the wrapped method is called.\n *\n * If either the `--no-deprecation` or `--no-warnings` command line flags are used, or if the `process.noDeprecation`\n * property is set to `true` prior to the first deprecation warning, the `@Deprecated()` decorators does nothing.\n *\n * If the `--trace-deprecation` or `--trace-warnings` command line flags are set, or the `process.traceDeprecation`\n * property is set to `true`, a warning and a stack trace are printed to stderr the first time the deprecated function is called.\n *\n * If the `--throw-deprecation` command line flag is set, or the `process.throwDeprecation` property is set to `true`,\n * then an exception will be thrown when the deprecated function is called.\n *\n * The `--throw-deprecation` command line flag and `process.throwDeprecation` property take precedence over `--trace-deprecation`\n * and `process.traceDeprecation`.\n *\n * @param message\n * @returns {Function}\n * @decorator\n */\nexport function Deprecated(message: string): Function {\n return (target: Type<any>, targetKey: string, descriptor: TypedPropertyDescriptor<any>) => {\n const originalMethod = descriptor.value;\n\n descriptor.value = require(\"util\").deprecate(originalMethod, message);\n\n return descriptor;\n };\n}\n","/**\n * @module common/core\n */\nimport {descriptorOf} from \"../utils\";\n\n/** */\n\nexport function Configurable(value: boolean = true): Function {\n return (target: any, propertyKey: string) => {\n const descriptor = descriptorOf(target, propertyKey) || {writable: true, enumerable: true};\n descriptor.configurable = value;\n Object.defineProperty((target && target.prototype) || target, propertyKey, descriptor);\n\n return descriptor;\n };\n}\n","/**\n * @module common/core\n */\nimport {descriptorOf} from \"../utils\";\n\n/** */\n\nexport function Enumerable(value: boolean = true): Function {\n return (target: any, propertyKey: string) => {\n const descriptor = descriptorOf(target, propertyKey) || {writable: true, configurable: true};\n descriptor.enumerable = value;\n Object.defineProperty((target && target.prototype) || target, propertyKey, descriptor);\n\n return descriptor;\n };\n}\n","/**\n * @module common/core\n */\nimport {descriptorOf} from \"../utils\";\n\n/** */\n\nexport function Writable(value: boolean = true): Function {\n return (target: any, propertyKey: string) => {\n const descriptor = descriptorOf(target, propertyKey) || {configurable: true, enumerable: true};\n descriptor.writable = value;\n Object.defineProperty((target && target.prototype) || target, propertyKey, descriptor);\n\n return descriptor;\n };\n}\n","/**\n * @module common/core\n */\nimport {Writable} from \"./writable\";\n/** */\nexport function Readonly(): Function {\n return Writable(false);\n}\n","/**\n * @module common/core\n */\nimport {Configurable} from \"./configurable\";\n/** */\nexport function NotConfigurable(): Function {\n return Configurable(false);\n}\n","/**\n * @module common/core\n */\nimport {Enumerable} from \"./enumerable\";\n/** */\nexport function NotEnumerable(): Function {\n return Enumerable(false);\n}\n","import {Store} from \"../domain/Store\";\nimport {DecoratorParameters} from \"../interfaces/DecoratorParameters\";\n\n/**\n * Create a store correctly configured from the parameters given by the decorator.\n * The `fn` can return a decorator that will be initialized with the parameters (target, propertyKey, descriptor).\n * @param {(store: Store, parameters: DecoratorParameters) => void} fn\n * @returns {Function}\n */\nexport function StoreFn(fn: (store: Store, parameters: DecoratorParameters) => void): Function {\n return (...parameters: any[]): any => {\n const store = Store.from(...parameters);\n const result: any = fn(store, parameters as DecoratorParameters);\n if (typeof result === \"function\") {\n result(...parameters);\n }\n\n return parameters[2];\n };\n}\n","import {Store} from \"../domain/Store\";\nimport {StoreFn} from \"./storeFn\";\n\nexport function StoreSet(key: any, value: any): Function {\n return StoreFn((store: Store) => {\n store.set(key, value);\n });\n}\n","import {Store} from \"../domain/Store\";\nimport {StoreFn} from \"./storeFn\";\n\nexport function StoreMerge(key: any, value: any): Function {\n return StoreFn((store: Store) => {\n store.merge(key, value);\n });\n}\n"],"names":["catchError","cb","er","catchAsyncError","proxyDelegation","self","options","handlers","remove","ownKeys","get","getter","target","propertyKey","set","setter","value","itsOwnProp","p","Reflect","has","Proxy","getOwnPropertyDescriptor","undefined","receiver","deleteProperty","defineProperty","attributes","concat","uniq","list","Array","from","Set","values","uniqBy","key","map","Map","forEach","item","getClass","prototype","constructor","classOf","ancestorOf","Object","getPrototypeOf","getInheritedClass","nameOfClass","targetClass","name","nameOfSymbol","sym","toString","replace","nameOf","obj","ancestorsOf","classes","currentTarget","unshift","prototypeOf","methodsOf","methods","keys","descriptorOf","DecoratorTypes","decoratorTypeOf","args","descriptor","staticType","type","CLASS","isArray","isArrayOrArrayClass","isDate","Date","isNaN","isFunction","isNil","isBoolean","Boolean","isBooleanOrBooleanClass","isNumber","isNumberOrNumberClass","Number","isString","isStringOrStringClass","String","isPrimitiveOrPrimitiveClass","isPrimitive","isPrimitiveClass","includes","isSymbol","isSymbolOrSymbolClass","Symbol","isBasicType","source","deepClone","stack","WeakMap","dest","stacked","process","env","TSED_TRACK_CIRCULAR_REF","console","trace","setPrototypeOf","createInstance","create","isProtectedKey","objectKeys","filter","mergeReducerBuilder","collection","index","findIndex","deepMerge","defaultReducer","a","b","getReducer","reducers","parentKey","shouldReturnObj","shouldReturnSource","reducer","reduce","out","src","cleanUndefinedProps","DESIGN_PARAM_TYPES","DESIGN_TYPE","DESIGN_RETURN_TYPE","PROPERTIES","Metadata","getMetadata","getOwn","getOwnMetadata","getType","getOwnType","getReturnType","getOwnReturnType","hasMetadata","hasOwn","hasOwnMetadata","delete","deleteMetadata","setParamTypes","targets","classConstructor","indexOf","push","defineMetadata","getParamTypes","targetPrototype","getOwnParamTypes","metadataKey","CLASS_STORE","METHOD_STORE","PROPERTY_STORE","PARAM_STORE","stores","storeGet","Store","registry","defineStore","PARAM_CTOR","PARAM_STC","PARAM","store","PROP","PROP_STC","METHOD","METHOD_STC","fromMethod","mergeStoreFrom","_entries","merge","mergeStoreMethodFrom","defaultValue","metadata","inverse","_value_","toJson","entries","decorateMethodsOf","klass","decorator","apply","decoratorArgs","inheritedDescriptorOf","useDecorators","decorators","o","useMethodDecorator","useMethodDecorators","cleanObject","ignore","getConstructor","constructorOf","deepExtends","isArrowFn","isClassObject","isPlainObject","isPromise","Promise","subscribe","then","isClass","getClassOrSymbol","toStringConstructor","ctr","strings","split","ctrString","find","s","trim","getConstructorArgNames","isEnumerable","enumerable","propertyIsEnumerable","call","getEnumerableKeys","isObject","mapOptions","expression","scope","separator","getValue","shift","length","isCollection","WeakSet","isEmpty","isInheritedFrom","deep","isObservable","lift","isStream","pipe","isSerializable","data","Buffer","isBuffer","primitiveOf","setValue","add","createIdentityFn","keyOrFn","v","k","toMap","input","identity","ids","id","Entity","_target","propertyName","decoratorType","token","targetName","_type","computedType","collectionType","Env","EnvTypes","Hooks","on","event","listeners","off","emit","callThis","alter","asyncEmit","asyncAlter","Type","Function","global","isResponse","headers","status","statusText","AnyToPromiseStatus","AnyToPromiseResponseTypes","AnyToPromise","hasNextFunction","PENDING","resolve","reject","isDone","next","error","DATA","handle","done","REJECTED","response","RESOLVED","state","destroy","cancel","CANCELED","additionalProps","isCanceledResponse","toPromise","STREAM","BUFFER","result","catch","UnsupportedDecoratorType","Error","buildMessage","bindingType","shortBinding","param","cstr","method","path","Deprecated","message","targetKey","originalMethod","require","deprecate","Configurable","writable","configurable","Enumerable","Writable","Readonly","NotConfigurable","NotEnumerable","StoreFn","fn","parameters","StoreSet","StoreMerge"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/utils/catchError.ts","../src/utils/proxyDelegation.ts","../src/utils/uniq.ts","../src/utils/imports/importPackage.ts","../src/utils/objects/classOf.ts","../src/utils/objects/ancestorOf.ts","../src/utils/objects/nameOf.ts","../src/utils/objects/ancestorsOf.ts","../src/utils/objects/prototypeOf.ts","../src/utils/objects/methodsOf.ts","../src/utils/objects/descriptorOf.ts","../src/domain/DecoratorTypes.ts","../src/utils/decorators/decoratorTypeOf.ts","../src/utils/objects/isArray.ts","../src/utils/objects/isDate.ts","../src/utils/objects/isFunction.ts","../src/utils/objects/isNil.ts","../src/utils/objects/isBoolean.ts","../src/utils/objects/isNumber.ts","../src/utils/objects/isString.ts","../src/utils/objects/isPrimitive.ts","../src/utils/objects/isSymbol.ts","../src/utils/objects/deepClone.ts","../src/utils/objects/createInstance.ts","../src/utils/objects/isProtectedKey.ts","../src/utils/objects/objectKeys.ts","../src/utils/objects/deepMerge.ts","../src/domain/Metadata.ts","../src/domain/Store.ts","../src/utils/decorators/decorateMethodsOf.ts","../src/utils/decorators/decoratorArgs.ts","../src/utils/decorators/inheritedDescriptorOf.ts","../src/utils/decorators/useDecorators.ts","../src/utils/decorators/useMethodDecorators.ts","../src/utils/objects/cleanObject.ts","../src/utils/objects/constructorOf.ts","../src/utils/objects/deepExtends.ts","../src/utils/objects/isArrowFn.ts","../src/utils/objects/isPlainObject.ts","../src/utils/objects/isPromise.ts","../src/utils/objects/isClass.ts","../src/utils/objects/getClassOrSymbol.ts","../src/utils/objects/toStringConstructor.ts","../src/utils/objects/getConstructorArgNames.ts","../src/utils/objects/isEnumerable.ts","../src/utils/objects/getEnumerableKeys.ts","../src/utils/objects/isObject.ts","../src/utils/objects/getValue.ts","../src/utils/objects/isCollection.ts","../src/utils/objects/isEmpty.ts","../src/utils/objects/isInheritedFrom.ts","../src/utils/objects/isObservable.ts","../src/utils/objects/isStream.ts","../src/utils/objects/isSerializable.ts","../src/utils/objects/primitiveOf.ts","../src/utils/objects/setValue.ts","../src/utils/objects/toMap.ts","../src/domain/Env.ts","../src/domain/Hooks.ts","../src/domain/Type.ts","../src/domain/AnyToPromise.ts","../src/errors/UnsupportedDecoratorType.ts","../src/decorators/deprecated.ts","../src/decorators/configurable.ts","../src/decorators/enumerable.ts","../src/decorators/writable.ts","../src/decorators/readOnly.ts","../src/decorators/notConfigurable.ts","../src/decorators/notEnumerable.ts","../src/decorators/storeFn.ts","../src/decorators/storeSet.ts","../src/decorators/storeMerge.ts"],"sourcesContent":["export function catchError<T extends Error>(cb: Function): T | undefined {\n try {\n cb();\n } catch (er) {\n return er;\n }\n}\n\nexport async function catchAsyncError<T extends Error>(cb: Function): Promise<T | undefined> {\n try {\n await cb();\n } catch (er) {\n return er;\n }\n}\n","/**\n * @ignore\n */\nexport type ProxyDelegationGetter<T = any> = (target: T, property: PropertyKey) => any | undefined;\n/**\n * @ignore\n */\nexport type ProxyDelegationRemove<T = any> = (target: T, property: PropertyKey) => any;\n/**\n * @ignore\n */\nexport type ProxyDelegationSetter<T = any> = (target: T, property: PropertyKey, value: any, receiver: any) => any;\n/**\n * @ignore\n */\nexport type ProxyDelegationOwnKeys<T = any> = (target: T) => (string | symbol)[];\n/**\n * @ignore\n */\nexport interface ProxyDelegation<T extends object> {\n handlers?: ProxyHandler<T>;\n getter?: ProxyDelegationGetter<T>;\n setter?: ProxyDelegationSetter<T>;\n remove?: ProxyDelegationRemove<T>;\n ownKeys?: ProxyDelegationOwnKeys<T>;\n}\n\n/**\n * Create a complete and iterable trap.\n * @param self\n * @param options\n * @ignore\n */\nexport function proxyDelegation<T extends object = any>(self: any, options: ProxyDelegation<T> = {}) {\n const {handlers = {}, remove, ownKeys} = options;\n const get: ProxyDelegationGetter = options.getter || ((target: any, propertyKey: PropertyKey) => target.get(propertyKey));\n const set: ProxyDelegationSetter =\n options.setter || ((target: any, propertyKey: PropertyKey, value: any) => !!target.set(propertyKey, value));\n\n const itsOwnProp = (target: any, p: PropertyKey) => Reflect.has(target, p) || typeof p === \"symbol\";\n\n return new Proxy<T>(self, {\n getOwnPropertyDescriptor(target: any, p: PropertyKey): PropertyDescriptor | undefined {\n return Reflect.getOwnPropertyDescriptor(target, p);\n },\n\n has(target: any, p: PropertyKey): boolean {\n if (itsOwnProp(target, p)) {\n return Reflect.has(target, p);\n }\n\n return get(target, p) !== undefined;\n },\n\n get(target: any, p: PropertyKey, receiver: any): any {\n if (itsOwnProp(target, p)) {\n return Reflect.get(target, p, receiver);\n }\n\n return get(target, p);\n },\n\n set(target: any, p: PropertyKey, value: any, receiver: any): boolean {\n if (itsOwnProp(target, p)) {\n return Reflect.set(target, p, value, receiver);\n }\n\n return !!set(target, p as any, value, receiver);\n },\n\n deleteProperty(target: any, p: PropertyKey): boolean {\n if (itsOwnProp(target, p) || !remove) {\n return Reflect.deleteProperty(target, p);\n }\n\n return remove(target, p);\n },\n\n defineProperty(target: any, p: PropertyKey, attributes: PropertyDescriptor): boolean {\n return Reflect.defineProperty(target, p, attributes);\n },\n\n ownKeys(target: any) {\n return Reflect.ownKeys(target).concat((ownKeys && ownKeys(target)) || []);\n },\n ...handlers\n });\n}\n","export function uniq<T = any>(list: T[]): T[] {\n return Array.from(new Set(list).values());\n}\n\nexport function uniqBy<T = any>(list: T[], key = \"id\"): T[] {\n const map = new Map();\n\n list.forEach((item: any) => {\n map.set(item[key], item);\n });\n\n return Array.from(map.values());\n}\n","export async function importPackage(packageName: string, loaderFn: Function = () => import(packageName), optional = false) {\n try {\n return await loaderFn();\n } catch (e) {\n if (!optional) {\n throw new Error(`The \"${packageName}\\\" package is missing.`);\n }\n\n return {};\n }\n}\n","/**\n * Get the provide constructor if target is an instance.\n * @param target\n * @returns {*}\n */\nexport function getClass(target: any): any {\n return target.prototype ? target : target.constructor;\n}\n\n/**\n * Get the provide constructor if target is an instance.\n * @param target\n * @returns {*}\n * @alias getClass\n */\nexport function classOf(target: any) {\n return getClass(target);\n}\n","export function ancestorOf(target: any): any {\n return target && Object.getPrototypeOf(target);\n}\n\nexport function getInheritedClass(target: any): any {\n return ancestorOf(target);\n}\n","/**\n * Get the provide name.\n * @param targetClass\n */\nexport function nameOfClass(targetClass: any): string {\n return typeof targetClass === \"function\" ? targetClass.name : targetClass.constructor.name;\n}\n\n/**\n * Get symbol name.\n * @param sym\n */\nexport const nameOfSymbol = (sym: symbol): string => sym.toString().replace(\"Symbol(\", \"\").replace(\")\", \"\");\n\n/**\n * Get object name\n */\nexport function nameOf(obj: any): string {\n switch (typeof obj) {\n default:\n return \"\" + obj;\n case \"symbol\":\n return nameOfSymbol(obj);\n case \"function\":\n return nameOfClass(obj);\n }\n}\n","import {classOf} from \"./classOf\";\nimport {getInheritedClass} from \"./ancestorOf\";\nimport {nameOf} from \"./nameOf\";\n\n/**\n *\n * @param target\n * @returns {Array}\n */\nexport function ancestorsOf(target: any) {\n const classes = [];\n\n let currentTarget = classOf(target);\n\n while (currentTarget && nameOf(currentTarget) !== \"\") {\n classes.unshift(currentTarget);\n currentTarget = getInheritedClass(currentTarget);\n }\n\n return classes;\n}\n","import {classOf} from \"./classOf\";\n\n/**\n * Return the prototype of the given class.\n * @param target\n * @returns {any}\n */\nexport function prototypeOf(target: any) {\n return classOf(target) === target ? target.prototype : target;\n}\n","import {classOf} from \"./classOf\";\nimport {ancestorsOf} from \"./ancestorsOf\";\nimport {prototypeOf} from \"./prototypeOf\";\n\n/**\n * Return all methods for a given class.\n * @param target\n */\nexport function methodsOf(target: any) {\n const methods = new Map();\n target = classOf(target);\n\n ancestorsOf(target).forEach((target) => {\n const keys = Reflect.ownKeys(prototypeOf(target));\n\n keys.forEach((propertyKey: string) => {\n if (propertyKey !== \"constructor\") {\n methods.set(propertyKey, {target, propertyKey});\n }\n });\n });\n\n return Array.from(methods.values());\n}\n","/**\n * Return the descriptor for a given class and propertyKey\n * @param target\n * @param {string} propertyKey\n * @returns {PropertyDescriptor}\n */\nexport function descriptorOf(target: any, propertyKey: string | symbol): PropertyDescriptor {\n return Object.getOwnPropertyDescriptor((target && target.prototype) || target, propertyKey)!;\n}\n\nexport function isMethodDescriptor(target: any, propertyKey: string | symbol) {\n return descriptorOf(target, propertyKey)?.value;\n}\n","export enum DecoratorTypes {\n PARAM = \"parameter\",\n PARAM_CTOR = \"parameter.constructor\",\n PARAM_STC = \"parameter.static\",\n PROP = \"property\",\n PROP_STC = \"property.static\",\n METHOD = \"method\",\n METHOD_STC = \"method.static\",\n CLASS = \"class\"\n}\n","import {DecoratorTypes} from \"../../domain/DecoratorTypes\";\nimport {classOf} from \"../objects/classOf\";\n\nexport function decoratorTypeOf(args: any[]): DecoratorTypes {\n const [target, propertyKey, descriptor] = args;\n\n const staticType = (type: string): any => {\n return target !== classOf(target) ? type : `${type}.static`;\n };\n\n if (typeof descriptor === \"number\") {\n return propertyKey ? staticType(\"parameter\") : \"parameter.constructor\";\n }\n\n if (descriptor && descriptor.value) {\n return staticType(\"method\");\n }\n\n if ((propertyKey && descriptor === undefined) || descriptor) {\n return staticType(\"property\");\n }\n\n return DecoratorTypes.CLASS;\n}\n","/**\n * Return true if value is an array\n * @param target\n * @returns {boolean}\n */\nexport function isArray<T = any>(target: unknown): target is T[] {\n return Array.isArray(target);\n}\n\n/**\n * Return true if the clazz is an array.\n * @param target\n * @returns {boolean}\n * @ignore\n */\nexport function isArrayOrArrayClass<T = any>(target: unknown): target is T[] {\n return target === Array || isArray(target);\n}\n","/**\n *\n * @param target\n * @returns {boolean}\n */\nexport function isDate(target: any): target is Date {\n return target === Date || (target instanceof Date && !isNaN(+target));\n}\n","export function isFunction(target: any): target is Function {\n return typeof target === \"function\";\n}\n","export function isNil(value: any): boolean {\n return value === undefined || value === null;\n}\n","/**\n *\n * @param target\n * @returns {boolean}\n */\nexport function isBoolean(target: any): target is boolean {\n return typeof target === \"boolean\" || target instanceof Boolean || target === Boolean;\n}\n\nexport function isBooleanOrBooleanClass(target: any): target is boolean {\n return typeof target === \"boolean\" || target instanceof Boolean || target === Boolean;\n}\n","/**\n *\n * @param target\n * @returns {boolean}\n */\nexport function isNumber(target: any): target is number {\n return typeof target === \"number\";\n}\n\nexport function isNumberOrNumberClass(target: any): target is number {\n return typeof target === \"number\" || target instanceof Number || target === Number;\n}\n","/**\n * @param target\n * @returns {boolean}\n */\nexport function isString(target: any): target is string {\n return typeof target === \"string\";\n}\n\nexport function isStringOrStringClass(target: any): target is string {\n return typeof target === \"string\" || target instanceof String || target === String;\n}\n","import {isBoolean, isBooleanOrBooleanClass} from \"./isBoolean\";\nimport {isNumber, isNumberOrNumberClass} from \"./isNumber\";\nimport {isString, isStringOrStringClass} from \"./isString\";\n\n/**\n * Return true if the given obj is a primitive.\n * @param target\n * @returns {boolean}\n * @ignore\n */\nexport function isPrimitiveOrPrimitiveClass(target: any): boolean {\n return isStringOrStringClass(target) || isNumberOrNumberClass(target) || isBooleanOrBooleanClass(target);\n}\n\n/**\n * Return true if the given obj is a primitive.\n * @param target\n * @returns {boolean}\n */\nexport function isPrimitive(target: any): boolean {\n return isString(target) || isNumber(target) || isBoolean(target);\n}\n\nexport function isPrimitiveClass(target: any) {\n return [String, Number, Boolean].includes(target);\n}\n","/**\n *\n * @param target\n */\nexport function isSymbol(target: any): target is symbol {\n return typeof target === \"symbol\";\n}\n\nexport function isSymbolOrSymbolClass(target: any): target is symbol {\n return typeof target === \"symbol\" || target instanceof Symbol || target === Symbol;\n}\n","import {isArray} from \"./isArray\";\nimport {isDate} from \"./isDate\";\nimport {isFunction} from \"./isFunction\";\nimport {isNil} from \"./isNil\";\nimport {isPrimitive} from \"./isPrimitive\";\nimport {isSymbol} from \"./isSymbol\";\n\nconst isBasicType = (source: any) => isNil(source) || isPrimitive(source) || isSymbol(source) || isFunction(source);\n\n/**\n * Return a cloned value\n * @param source\n * @param stack\n */\nexport function deepClone(source: any, stack = new WeakMap()): any {\n let dest: any;\n\n if (isBasicType(source)) {\n return source;\n }\n\n if (isDate(source)) {\n return new Date(source);\n }\n\n const stacked = stack.get(source);\n\n if (stacked) {\n // See issue #1619\n // istanbul ignore next\n process.env.TSED_TRACK_CIRCULAR_REF && console.trace(\"Circular ref detected on deepClone\", stacked);\n return stacked;\n }\n\n if (isArray(source)) {\n dest = [];\n } else {\n dest = {};\n stack.set(source, dest);\n }\n\n for (const key in source) {\n // Use getOwnPropertyDescriptor instead of source[key] to prevent from triggering setter/getter.\n const descriptor = Object.getOwnPropertyDescriptor(source, key)!;\n\n if (descriptor) {\n if (!isFunction(descriptor.value)) {\n dest[key] = deepClone(descriptor.value, stack);\n } else {\n Object.defineProperty(dest, key, descriptor);\n }\n }\n }\n\n if (!isArray(source)) {\n const prototype = Reflect.getPrototypeOf(source);\n Reflect.setPrototypeOf(dest, prototype);\n }\n\n return dest;\n}\n","import {classOf} from \"./classOf\";\n\nexport function createInstance(obj: any) {\n return obj ? (classOf(obj) !== Object ? Object.create(obj) : {}) : {};\n}\n","/**\n * Prevent prototype pollution vulnerability\n * @param key\n */\nexport function isProtectedKey(key: string) {\n return [\"__proto__\", \"constructor\", \"prototype\"].includes(key);\n}\n","import {isProtectedKey} from \"./isProtectedKey\";\n\nexport function objectKeys(obj: any): string[] {\n return Object.keys(obj).filter((key) => !isProtectedKey(key));\n}\n","import {createInstance} from \"./createInstance\";\nimport {isFunction} from \"./isFunction\";\nimport {isPrimitive} from \"./isPrimitive\";\nimport {isSymbol} from \"./isSymbol\";\nimport {objectKeys} from \"./objectKeys\";\n\nexport type DeepMergeReducerCB = (collection: any[], value: any, options?: DeepMergeOptions) => any;\nexport type DeepMergeComparatorCB = (item: any, ref: any) => boolean;\n\nexport interface DeepMergeOptions {\n reducers?: Record<string, DeepMergeReducerCB>;\n parentKey?: string;\n cleanUndefinedProps?: boolean;\n}\n\nexport function mergeReducerBuilder(cb: DeepMergeComparatorCB) {\n return (collection: any[], value: any, options: DeepMergeOptions) => {\n const index = collection.findIndex((item) => cb(item, value));\n\n if (index === -1) {\n return [...collection, value];\n }\n\n collection[index] = deepMerge(collection[index], value, options);\n\n return collection;\n };\n}\n\nconst defaultReducer = mergeReducerBuilder((a, b) => a === b);\n\nfunction getReducer({reducers, parentKey}: DeepMergeOptions) {\n if (!reducers) {\n return defaultReducer;\n }\n\n if (parentKey && reducers[parentKey]) {\n return reducers[parentKey];\n }\n\n return reducers[\"default\"] || defaultReducer;\n}\n\nfunction shouldReturnObj(obj: any, source: any) {\n return isPrimitive(obj) || isSymbol(obj) || isFunction(obj) || source === undefined;\n}\n\nfunction shouldReturnSource(obj: any, source: any) {\n return obj === undefined || obj === null || (obj === \"\" && source !== \"\");\n}\n\nexport function deepMerge<T extends any = any, C extends any = any>(\n source: T & any,\n obj: C & any,\n options: DeepMergeOptions = {}\n): (T & C) | undefined | null {\n if (shouldReturnSource(obj, source)) {\n return source as any;\n }\n\n if (shouldReturnObj(obj, source)) {\n return obj;\n }\n\n if (Array.isArray(source)) {\n const reducer = getReducer(options);\n\n return [].concat(obj).reduce((out: any[], value: any) => reducer(out, value, options), [...source]);\n }\n\n return [...objectKeys(source), ...objectKeys(obj)].reduce((out: any, key: string) => {\n const src = source && source[key];\n const value = deepMerge(src, obj && obj[key], {\n ...options,\n parentKey: key\n });\n\n if (options.cleanUndefinedProps && value === undefined) {\n return out;\n }\n\n return {\n ...out,\n [key]: value\n };\n }, createInstance(source));\n}\n","import \"reflect-metadata\";\nimport {classOf} from \"../utils/objects/classOf\";\n\n/**\n * Metadata key\n * @private\n * @type {string}\n */\nconst DESIGN_PARAM_TYPES = \"design:paramtypes\";\n/**\n * Metadata key\n * @private\n * @type {string}\n */\nconst DESIGN_TYPE = \"design:type\";\n/**\n * Metadata key\n * @private\n * @type {string}\n */\nconst DESIGN_RETURN_TYPE = \"design:returntype\";\n\n/**\n * Properties collections\n * @private\n * @type {string}\n */\nconst PROPERTIES: Map<string | symbol, any[]> = new Map<string | symbol, any[]>();\n\n/**\n * @stable\n */\nexport class Metadata {\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param key A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Metadata.get(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Metadata.get(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Metadata.get(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Metadata.get(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Metadata.get(\"custom:annotation\", Example.prototype, \"method\");\n * ```\n *\n */\n static get(key: string, target: any, propertyKey?: string | symbol): any {\n return Reflect.getMetadata(key, classOf(target), propertyKey!);\n }\n\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param key A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Metadata.getOwn(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Metadata.getOwn(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Metadata.getOwn(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Metadata.getOwn(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Metadata.getOwn(\"custom:annotation\", Example.prototype, \"method\");\n * ```\n *\n */\n static getOwn(key: string, target: any, propertyKey?: string | symbol): any {\n return Reflect.getOwnMetadata(key, classOf(target), propertyKey!);\n }\n\n /**\n * Gets the metadata value for the provided metadata DESIGN_TYPE on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // on contructor\n * result = Metadata.getType(Example);\n *\n * // property (on constructor)\n * result = Metadata.getType(Example, \"staticProperty\");\n *\n * // method (on constructor)\n * result = Metadata.getType(Example, \"staticMethod\");\n * ```\n *\n */\n static getType(target: any, propertyKey?: string | symbol): any {\n return Reflect.getMetadata(DESIGN_TYPE, target, propertyKey!);\n }\n\n /**\n * Gets the metadata value for the provided metadata DESIGN_TYPE on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // on contructor\n * result = Metadata.getOwnType(Example);\n *\n * // property (on constructor)\n * result = Metadata.getOwnType(Example, \"staticProperty\");\n *\n * // method (on constructor)\n * result = Metadata.getOwnType(Example, \"staticMethod\");\n * ```\n *\n */\n static getOwnType(target: any, propertyKey?: string | symbol): any {\n return Reflect.getMetadata(DESIGN_TYPE, target, propertyKey!);\n }\n\n /**\n * Gets the metadata value for the provided metadata DESIGN_RETURN_TYPE on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // on contructor\n * result = Metadata.getReturnType(Example);\n *\n * // property (on constructor)\n * result = Metadata.getReturnType(Example, \"staticProperty\");\n *\n * // method (on constructor)\n * result = Metadata.getReturnType(Example, \"staticMethod\");\n * ```\n *\n */\n static getReturnType(target: any, propertyKey?: string | symbol): any {\n return Reflect.getMetadata(DESIGN_RETURN_TYPE, target, propertyKey!);\n }\n\n /**\n * Gets the metadata value for the provided metadata DESIGN_RETURN_TYPE on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // on contructor\n * result = Metadata.getOwnReturnType(Example);\n *\n * // property (on constructor)\n * result = Metadata.getOwnReturnType(Example, \"staticProperty\");\n *\n * // method (on constructor)\n * result = Metadata.getOwnReturnType(Example, \"staticMethod\");\n * ```\n *\n */\n static getOwnReturnType(target: any, propertyKey?: string | symbol): any {\n return Reflect.getOwnMetadata(DESIGN_RETURN_TYPE, target, propertyKey!);\n }\n\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param key A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Metadata.has(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Metadata.has(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Metadata.has(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Metadata.has(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Metadata.has(\"custom:annotation\", Example.prototype, \"method\");\n * ```\n *\n */\n static has(key: string, target: any, propertyKey?: string | symbol): boolean {\n try {\n return Reflect.hasMetadata(key, classOf(target), propertyKey!);\n } catch (er) {}\n\n return false;\n }\n\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param key A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Metadata.has(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Metadata.hasOwn(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Metadata.hasOwn(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Metadata.hasOwn(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Metadata.hasOwn(\"custom:annotation\", Example.prototype, \"method\");\n * ```\n *\n */\n static hasOwn(key: string, target: any, propertyKey?: string | symbol): boolean {\n return Reflect.hasOwnMetadata(key, classOf(target), propertyKey!);\n }\n\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param key A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Metadata.delete(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Metadata.delete(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Metadata.delete(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Metadata.delete(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Metadata.delete(\"custom:annotation\", Example.prototype, \"method\");\n * ```\n *\n */\n static delete(key: string, target: any, propertyKey?: string | symbol): boolean {\n return Reflect.deleteMetadata(key, classOf(target), propertyKey!);\n }\n\n /**\n * Set the metadata value for the provided metadata DESIGN_PARAM_TYPES on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @param value A value that contains attached metadata.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // on contructor\n * result = Metadata.setParamTypes(Example, undefined, [Object]);\n *\n * // property (on constructor)\n * result = Metadata.setParamTypes(Example, \"staticProperty\", [Object]);\n *\n * // property (on prototype)\n * result = Metadata.setParamTypes(Example.prototype, \"property\", [Object]);\n *\n * // method (on constructor)\n * result = Metadata.setParamTypes(Example, \"staticMethod\", [Object]);\n *\n * // method (on prototype)\n * result = Metadata.setParamTypes(Example.prototype, \"method\", [Object]);\n * ```\n *\n */\n static setParamTypes(target: any, propertyKey: string | symbol, value: any): void {\n return this.set(DESIGN_PARAM_TYPES, value, target.prototype, propertyKey);\n }\n\n /**\n * Get all metadata for a metadataKey.\n * @param metadataKey\n */\n static getTargetsFromPropertyKey = (metadataKey: string | symbol): any[] =>\n PROPERTIES.has(metadataKey) ? PROPERTIES.get(metadataKey) || [] : [];\n\n /**\n * Define a unique metadata entry on the target.\n * @param key A key used to store and retrieve metadata.\n * @param value A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey The property key for the target.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", Number, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", Number, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", Number, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", Number, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): PropertyDecorator {\n * return (target, key) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n * ```\n *\n */\n static set(key: string, value: any, target: any, propertyKey?: string | symbol): void {\n const targets: any[] = PROPERTIES.has(key) ? PROPERTIES.get(key) || [] : [];\n const classConstructor = classOf(target);\n\n if (targets.indexOf(classConstructor) === -1) {\n targets.push(classConstructor);\n PROPERTIES.set(key, targets);\n }\n\n Reflect.defineMetadata(key, value, classOf(target), propertyKey!);\n }\n\n /**\n * Gets the metadata value for the provided metadata DESIGN_PARAM_TYPES on the target object or its prototype chain.\n * @param targetPrototype\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // on contructor\n * result = Metadata.getParamTypes(Example.prototype);\n *\n * // property (on constructor)\n * result = Metadata.getParamTypes(Example.prototype, \"staticProperty\");\n *\n * // method (on constructor)\n * result = Metadata.getParamTypes(Example.prototype, \"staticMethod\");\n * ```\n *\n */\n static getParamTypes(targetPrototype: any, propertyKey?: string | symbol): any[] {\n return Reflect.getMetadata(DESIGN_PARAM_TYPES, targetPrototype, propertyKey!) || [];\n }\n\n /**\n * Gets the metadata value for the provided metadata DESIGN_PARAM_TYPES on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * ```typescript\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // on contructor\n * result = Metadata.getParamTypes(Example);\n *\n * // property (on constructor)\n * result = Metadata.getParamTypes(Example, \"staticProperty\");\n *\n * // method (on constructor)\n * result = Metadata.getParamTypes(Example, \"staticMethod\");\n * ```\n *\n */\n static getOwnParamTypes(target: any, propertyKey?: string | symbol): any[] {\n return Reflect.getOwnMetadata(DESIGN_PARAM_TYPES, target, propertyKey!) || [];\n }\n}\n","import {DecoratorTypes} from \"../domain/DecoratorTypes\";\nimport {decoratorTypeOf} from \"../utils/decorators/decoratorTypeOf\";\nimport {deepClone} from \"../utils/objects/deepClone\";\nimport {deepMerge} from \"../utils/objects/deepMerge\";\nimport {descriptorOf} from \"../utils/objects/descriptorOf\";\nimport {isSymbol} from \"../utils/objects/isSymbol\";\nimport {nameOf} from \"../utils/objects/nameOf\";\nimport {Metadata} from \"./Metadata\";\nimport type {Type} from \"./Type\";\n\n/**\n * @ignore\n */\nexport const CLASS_STORE = \"tsed:class:store\";\n/**\n * @ignore\n */\nexport const METHOD_STORE = \"tsed:method:store\";\n/**\n * @ignore\n */\nexport const PROPERTY_STORE = \"tsed:property:store\";\n/**\n * @ignore\n */\nexport const PARAM_STORE = \"tsed:param:store\";\n\nconst stores = new Map<symbol, Store>();\n\nfunction storeGet(key: string, ...args: any[]): Store {\n if (isSymbol(args[0])) {\n if (!stores.has(args[0])) {\n stores.set(args[0], new Store());\n }\n\n return stores.get(args[0])!;\n } else {\n const registry = Metadata as any;\n\n if (!registry.hasOwn(key, ...args)) {\n registry.set(key, new Store(), ...args);\n }\n\n return registry.getOwn(key, ...args);\n }\n}\n\nfunction defineStore(args: any[]): Store {\n const [target, propertyKey, descriptor] = args;\n\n switch (decoratorTypeOf(args)) {\n case DecoratorTypes.PARAM_CTOR:\n case DecoratorTypes.PARAM_STC:\n case DecoratorTypes.PARAM:\n const store = storeGet(PARAM_STORE, target, propertyKey);\n if (!store.has(\"\" + descriptor)) {\n store.set(\"\" + descriptor, new Store());\n }\n\n return store.get(\"\" + descriptor);\n case DecoratorTypes.PROP:\n case DecoratorTypes.PROP_STC:\n return storeGet(PROPERTY_STORE, target, propertyKey);\n case DecoratorTypes.METHOD:\n case DecoratorTypes.METHOD_STC:\n return storeGet(METHOD_STORE, target, propertyKey);\n case DecoratorTypes.CLASS:\n return storeGet(CLASS_STORE, target);\n }\n}\n\nexport class Store {\n private _entries = new Map<string, any>();\n /**\n * Create or get a Store from args {target + methodName + descriptor}\n * @param args\n * @returns {Store}\n */\n static from(...args: any[]): Store {\n return defineStore(args);\n }\n\n /**\n * Create store on the method.\n * @param target\n * @param {string} propertyKey\n * @returns {Store}\n */\n static fromMethod(target: any, propertyKey: string | symbol): Store {\n return Store.from(target, propertyKey, descriptorOf(target, propertyKey));\n }\n\n static mergeStoreFrom(target: Type<any>, source: Type<any>, ...args: any[]) {\n const store = Store.from(target, ...args);\n\n Store.from(source, ...args)._entries.forEach((value, key) => {\n store.merge(key, value);\n });\n\n return store;\n }\n\n static mergeStoreMethodFrom(target: Type<any>, source: Type<any>, propertyKey: string | symbol) {\n return this.mergeStoreFrom(target, source, propertyKey, descriptorOf(target, propertyKey));\n }\n\n /**\n * The get() method returns a specified element from a Map object.\n * @param key Required. The key of the element to return from the Map object.\n * @param defaultValue\n * @returns {T} Returns the element associated with the specified key or undefined if the key can't be found in the Map object.\n */\n get<T = any>(key: any, defaultValue?: any): T {\n return this._entries.get(nameOf(key)) || defaultValue;\n }\n\n /**\n * The has() method returns a boolean indicating whether an element with the specified key exists or not.\n * @param key\n * @returns {boolean}\n */\n has(key: any): boolean {\n return this._entries.has(nameOf(key));\n }\n\n /**\n * The set() method adds or updates an element with a specified key and value to a Map object.\n * @param key Required. The key of the element to add to the Map object.\n * @param metadata Required. The value of the element to add to the Map object.\n */\n set(key: any, metadata: any): Store {\n this._entries.set(nameOf(key), metadata);\n\n return this;\n }\n\n /**\n * The delete() method removes the specified element from a Map object.\n * @param key Required. The key of the element to remove from the Map object.\n * @returns {boolean} Returns true if an element in the Map object existed and has been removed, or false if the element does not exist.\n */\n delete(key: string): boolean {\n return this._entries.delete(nameOf(key));\n }\n\n /**\n * Merge given value with existing value.\n * @param key\n * @param value\n * @param inverse Change the merge order. Get the existing value and apply over given value\n * @returns {Store}\n */\n merge(key: any, value: any, inverse: boolean = false): Store {\n let _value_ = this.get(key);\n\n if (_value_) {\n value = deepClone(value);\n _value_ = deepClone(_value_);\n value = inverse ? deepMerge(value, _value_) : deepMerge(_value_, value);\n }\n\n this.set(key, value);\n\n return this;\n }\n\n toJson() {\n return [...this._entries.entries()].reduce((obj, [key, value]) => {\n return {\n ...obj,\n [key]: value\n };\n }, {});\n }\n}\n","import {classOf} from \"../objects/classOf\";\nimport {methodsOf} from \"../objects/methodsOf\";\nimport {prototypeOf} from \"../objects/prototypeOf\";\nimport {descriptorOf} from \"../objects/descriptorOf\";\nimport {Store} from \"../../domain/Store\";\n\nexport function decorateMethodsOf(klass: any, decorator: any) {\n methodsOf(klass).forEach(({target, propertyKey}) => {\n if (target !== classOf(klass)) {\n Object.defineProperty(prototypeOf(klass), propertyKey, {\n value(...args: any[]) {\n return prototypeOf(target)[propertyKey].apply(this, args);\n }\n });\n\n Store.mergeStoreMethodFrom(klass, target, propertyKey);\n }\n\n decorator(prototypeOf(klass), propertyKey, descriptorOf(klass, propertyKey));\n });\n}\n","import {DecoratorParameters} from \"../../interfaces/DecoratorParameters\";\nimport {descriptorOf} from \"../objects/descriptorOf\";\n\nexport function decoratorArgs(target: any, propertyKey: string): DecoratorParameters {\n return [target, propertyKey, descriptorOf(target, propertyKey)!];\n}\n","import {ancestorsOf} from \"../objects/ancestorsOf\";\n\nexport function inheritedDescriptorOf(target: any, propertyKey: string): PropertyDescriptor | undefined {\n for (const klass of ancestorsOf(target)) {\n const descriptor = Object.getOwnPropertyDescriptor((klass && klass.prototype) || klass, propertyKey)!;\n\n if (descriptor) {\n return descriptor;\n }\n }\n\n return undefined;\n}\n","import {DecoratorParameters} from \"../../interfaces/DecoratorParameters\";\nimport {AnyDecorator} from \"../../interfaces/AnyDecorator\";\n\nexport function useDecorators(...decorators: AnyDecorator[]): any {\n return (...args: DecoratorParameters) => {\n decorators\n .filter((o: any) => !!o)\n .forEach((decorator: Function) => {\n decorator(...args);\n });\n };\n}\n","import {AnyDecorator} from \"../../interfaces/AnyDecorator\";\nimport {descriptorOf} from \"../objects/descriptorOf\";\n\nexport function useMethodDecorator(decorator: AnyDecorator) {\n return (target: any, propertyKey: string | symbol) => decorator(target, propertyKey, descriptorOf(target, propertyKey));\n}\n\nexport function useMethodDecorators(...decorators: AnyDecorator[]) {\n return (target: any, propertyKey: string | symbol) => {\n decorators.filter(Boolean).forEach((decorator) => decorator(target, propertyKey, descriptorOf(target, propertyKey)));\n };\n}\n","import {isProtectedKey} from \"./isProtectedKey\";\n/**\n * Remove undefined value\n * @param obj\n * @param ignore\n */\nexport function cleanObject(obj: any, ignore: string[] = []): any {\n return Object.entries(obj).reduce((obj, [key, value]) => {\n if (isProtectedKey(key) || ignore.includes(key)) {\n return obj;\n }\n\n return value === undefined\n ? obj\n : {\n ...obj,\n [key]: value\n };\n }, {});\n}\n","import type {Type} from \"../../domain/Type\";\n\n/**\n * Get the class constructor\n * @param target\n */\nexport function getConstructor(target: any): Type<any> {\n return typeof target === \"function\" ? target : target.constructor;\n}\n\n/**\n * Get the class constructor\n * @param target\n */\nexport function constructorOf(target: any): Type<any> {\n return getConstructor(target);\n}\n","import {createInstance} from \"./createInstance\";\nimport {isArrayOrArrayClass} from \"./isArray\";\nimport {isPrimitive} from \"./isPrimitive\";\nimport {objectKeys} from \"./objectKeys\";\n\nexport type DeepExtendsReducers = Record<string, (collection: any[], value: any) => any>;\n\nfunction reducer() {\n return (collection: any[], value: any) => {\n collection.indexOf(value) === -1 && collection.push(value);\n\n return collection;\n };\n}\n\n/**\n * Deep extends a model with another one.\n * @param out\n * @param obj\n * @param reducers\n * @returns {any}\n * @deprecated Since 2021-07-16. Use deepMerge instead of\n */\nexport function deepExtends(out: any, obj: any, reducers: DeepExtendsReducers = {}): any {\n if (obj === undefined || obj === null) {\n return out;\n }\n\n if (isPrimitive(obj) || typeof obj === \"symbol\" || typeof obj === \"function\") {\n return obj;\n }\n\n if (isArrayOrArrayClass(obj)) {\n out = out || [];\n } else {\n out = out || createInstance(obj);\n }\n\n const defaultReducer = reducers[\"default\"] ? reducers[\"default\"] : reducer();\n\n const set = (key: string | number, value: any) => {\n if (isArrayOrArrayClass(obj)) {\n out.indexOf(value) === -1 && out.push(value);\n } else {\n out[key] = value;\n }\n };\n\n objectKeys(obj).forEach((key) => {\n let value = obj[key];\n\n // istanbul ignore next\n if (value === undefined || value === null) {\n return;\n }\n\n // istanbul ignore next\n if (value === \"\" && out[key] !== \"\") {\n return;\n }\n\n if (isPrimitive(value) || typeof value === \"function\") {\n set(key, value);\n\n return;\n }\n\n if (isArrayOrArrayClass(value)) {\n value = value.map((value: any) => deepExtends(undefined, value));\n\n set(\n key,\n []\n .concat(out[key] || [], value)\n .reduce(\n (collection: any[], value: any) => (reducers[key] ? reducers[key](collection, value) : defaultReducer(collection, value)),\n []\n )\n );\n\n return;\n }\n\n // Object\n if (isArrayOrArrayClass(obj)) {\n set(key, deepExtends(undefined, value, reducers));\n } else {\n set(key, deepExtends(out[key], value, reducers));\n }\n });\n\n if (isArrayOrArrayClass(out)) {\n out.reduce((collection: any[], value: any) => defaultReducer(collection, value), []);\n }\n\n return out;\n}\n","import {isFunction} from \"./isFunction\";\n\nexport function isArrowFn(target: any): target is Function {\n return target && isFunction(target) && !target.prototype;\n}\n","import {classOf} from \"./classOf\";\n\n/**\n *\n * @param target\n * @returns {boolean}\n */\nexport function isClassObject(target: any): target is Object {\n return target === Object;\n}\n\nexport function isPlainObject(target: any): boolean {\n return isClassObject(classOf(target)) && target !== Object;\n}\n","/**\n * Tests to see if the object is an ES2015 (ES6) Promise\n * @see {@link https://www.ecma-international.org/ecma-262/6.0/#sec-promise-objects}\n * @param target\n * @returns {boolean}\n */\nexport function isPromise<T = any>(target: any): target is Promise<T> {\n return (\n target === Promise ||\n target instanceof Promise ||\n (!!target && typeof target.subscribe !== \"function\" && typeof target.then === \"function\")\n );\n}\n","import {isArrayOrArrayClass} from \"./isArray\";\nimport {isArrowFn} from \"./isArrowFn\";\nimport {isDate} from \"./isDate\";\nimport {isClassObject} from \"./isPlainObject\";\nimport {isPrimitiveOrPrimitiveClass} from \"./isPrimitive\";\nimport {isPromise} from \"./isPromise\";\nimport {isSymbol} from \"./isSymbol\";\n\nexport function isClass(target: any) {\n if (!target) {\n return false;\n }\n\n if (isArrowFn(target)) {\n return false;\n }\n\n return !(\n isSymbol(target) ||\n isPrimitiveOrPrimitiveClass(target) ||\n isClassObject(target) ||\n isDate(target) ||\n isPromise(target) ||\n isArrayOrArrayClass(target)\n );\n}\n","import {classOf} from \"./classOf\";\nimport {isClass} from \"./isClass\";\n\nexport function getClassOrSymbol(target: any): any {\n return isClass(target) ? classOf(target) : target;\n}\n","import {constructorOf} from \"./constructorOf\";\n\nexport function toStringConstructor(target: any): string {\n const ctr = constructorOf(target);\n const strings = ctr.toString().split(\"\\n\");\n const ctrString = strings.find((s) => s.indexOf(\"constructor(\") > -1) || \"constructor()\";\n\n return `${ctrString.replace(\"{\", \"\").trim()}`;\n}\n","import {toStringConstructor} from \"./toStringConstructor\";\n\nexport function getConstructorArgNames(target: any) {\n return toStringConstructor(target).replace(\"constructor(\", \"\").replace(\")\", \"\").split(\", \").filter(Boolean);\n}\n","import {inheritedDescriptorOf} from \"../decorators/inheritedDescriptorOf\";\nimport {classOf} from \"./classOf\";\n\n/**\n *\n * @param obj\n * @param key\n */\nexport function isEnumerable(obj: any, key: string) {\n const klass = classOf(obj);\n\n if (klass) {\n const descriptor = inheritedDescriptorOf(klass, key);\n\n if (descriptor) {\n return descriptor.enumerable;\n }\n }\n\n return Object.prototype.propertyIsEnumerable.call(obj, key);\n}\n","import {isEnumerable} from \"./isEnumerable\";\nimport {isProtectedKey} from \"./isProtectedKey\";\n\n/**\n * Return all enumerable keys of the given object\n * @param obj\n */\nexport function getEnumerableKeys(obj: any) {\n const keys: string[] = [];\n\n for (const key in obj) {\n if (!isProtectedKey(key) && isEnumerable(obj, key)) {\n keys.push(key);\n }\n }\n\n return keys;\n}\n","export function isObject(target: any): target is object {\n return typeof target === \"object\";\n}\n","import {isFunction} from \"./isFunction\";\nimport {isObject} from \"./isObject\";\nimport {isString} from \"./isString\";\n\nconst mapOptions = (args: any[]) => {\n const [expression, scope, defaultValue, separator = \".\"] = args;\n\n if (isObject(scope) || isString(expression)) {\n return {\n expression,\n scope,\n defaultValue,\n separator\n };\n }\n\n return {\n expression: scope,\n scope: expression,\n defaultValue,\n separator\n };\n};\n\n/**\n * Get value from scope\n * @param {string} expression\n * @param scope\n * @returns {any}\n */\nexport function getValue<T = any>(scope: any, expression: string | undefined): T | undefined;\n/**\n * Get value from scope\n * @param {string} expression\n * @param scope\n * @param defaultValue\n * @param separator\n * @returns {any}\n */\nexport function getValue<T = any>(scope: any, expression: string | undefined, defaultValue: T, separator?: string): T;\n/**\n * Get value from scope\n * @param {string} expression\n * @param scope\n * @returns {any}\n */\nexport function getValue<T = any>(expression: string | undefined, scope: any): T | undefined;\n/**\n * Get value from scope\n * @param {string} expression\n * @param scope\n * @param defaultValue\n * @param separator\n * @returns {any}\n */\nexport function getValue<T = any>(expression: string | undefined, scope: any, defaultValue: T, separator?: string): T;\nexport function getValue(...args: any[]) {\n const options = mapOptions(args);\n let scope = options.scope;\n const {expression, defaultValue, separator} = options;\n\n if (!expression) {\n return scope;\n }\n\n if (!scope) {\n return defaultValue;\n }\n\n const keys: string[] = expression.split(separator);\n\n const getValue = (key: string) => {\n if (scope) {\n if (scope[key] !== undefined || key in scope) {\n return scope[key];\n }\n\n if (isFunction(scope.get)) {\n return scope.get(key);\n }\n }\n };\n\n while ((scope = getValue(keys.shift()!)) && keys.length) {}\n\n return scope === undefined ? defaultValue : scope;\n}\n","import {isArrayOrArrayClass} from \"./isArray\";\n\n/**\n * Return true if the target.\n * @param target\n * @returns {boolean}\n */\nexport function isCollection(target: any): boolean {\n return (\n isArrayOrArrayClass(target) ||\n target === Map ||\n target instanceof Map ||\n target === Set ||\n target instanceof Set ||\n target === WeakMap ||\n target instanceof WeakMap ||\n target === WeakSet ||\n target instanceof WeakSet\n );\n}\n","import {isNil} from \"./isNil\";\n\n/**\n * Return true if the value is an empty string, null or undefined.\n * @param value\n * @returns {boolean}\n */\nexport function isEmpty(value: any): boolean {\n return value === \"\" || isNil(value);\n}\n","import {classOf} from \"./classOf\";\nimport {ancestorOf} from \"./ancestorOf\";\nimport {nameOf} from \"./nameOf\";\n\nexport function isInheritedFrom(target: any, from: any, deep = 5): boolean {\n if (!target || !from) {\n return false;\n }\n\n target = classOf(target);\n from = classOf(from);\n\n while (nameOf(target) !== \"\") {\n if (!deep) {\n return false;\n }\n if (target === from) {\n return true;\n }\n\n target = ancestorOf(target);\n deep--;\n }\n\n return false;\n}\n","export function isObservable<T>(obj: any): boolean {\n return !!obj && typeof obj.lift === \"function\" && typeof obj.subscribe === \"function\";\n}\n","export function isStream(obj: any): boolean {\n return obj !== null && typeof obj === \"object\" && typeof obj.pipe === \"function\";\n}\n","import {isStream} from \"./isStream\";\nimport {isBoolean} from \"./isBoolean\";\nimport {isNumber} from \"./isNumber\";\nimport {isString} from \"./isString\";\nimport {isNil} from \"./isNil\";\n\nexport function isSerializable(data: any) {\n return !(Buffer.isBuffer(data) || isStream(data) || isBoolean(data) || isNumber(data) || isString(data) || isNil(data));\n}\n","import {isBoolean, isBooleanOrBooleanClass} from \"./isBoolean\";\nimport {isNumber, isNumberOrNumberClass} from \"./isNumber\";\nimport {isString, isStringOrStringClass} from \"./isString\";\n\nexport function primitiveOf(target: any): \"string\" | \"number\" | \"boolean\" | \"any\" {\n if (isStringOrStringClass(target)) {\n return \"string\";\n }\n\n if (isNumberOrNumberClass(target)) {\n return \"number\";\n }\n\n if (isBooleanOrBooleanClass(target)) {\n return \"boolean\";\n }\n\n return \"any\";\n}\n","import {isProtectedKey} from \"./isProtectedKey\";\n\nexport function setValue(scope: any, expression: string, value: any, separator = \".\") {\n const keys: string[] = expression.split(separator);\n\n const setValue = (key: string, add: boolean) => {\n if (isProtectedKey(key)) {\n return false;\n }\n\n if (add) {\n if (typeof scope.set === \"function\") {\n scope.set(key, value);\n } else {\n scope[key] = value;\n }\n\n return false;\n }\n\n if (typeof scope.set === \"function\") {\n if (!scope.has(key)) {\n scope.set(key, {});\n }\n\n scope = scope.get(key);\n } else {\n scope = scope[key] = scope[key] || {};\n }\n\n return true;\n };\n\n while (setValue(keys.shift()!, !keys.length)) {}\n}\n","import {isArray} from \"./isArray\";\nimport {isString} from \"./isString\";\n\nexport type ToMapIdentityCB<V> = (item: V, index: string | number) => string | string[];\nexport type ToMapIdentity<V> = string | ToMapIdentityCB<V>;\n\nfunction createIdentityFn<V>(keyOrFn?: ToMapIdentity<V>): ToMapIdentityCB<V> {\n if (!keyOrFn) {\n return (v, k) => String(k);\n }\n\n if (isString(keyOrFn)) {\n return (item: any) => {\n return item[keyOrFn as string];\n };\n }\n\n return keyOrFn;\n}\n\nexport function toMap<K extends keyof any = any, V = any>(input: Record<K, V> | V[], keyOrFn?: ToMapIdentity<V>): Map<K, V> {\n if (isArray<V>(input)) {\n const identity = createIdentityFn<V>(keyOrFn || \"id\");\n return input.reduce((map, value, index) => {\n const ids = ([] as string[]).concat(identity(value, index));\n\n ids.forEach((id) => map.set(id, value));\n\n return map;\n }, new Map());\n }\n\n const identity = createIdentityFn<V>(keyOrFn);\n\n return Object.entries(input).reduce((map, [key, value]) => {\n return map.set(identity(value as V, key), value);\n }, new Map());\n}\n","/**\n *\n */\nexport enum Env {\n PROD = \"production\",\n DEV = \"development\",\n TEST = \"test\"\n}\n\n/**\n * Fallback\n * @type {Env}\n */\n// tslint:disable-next-line: variable-name\nexport const EnvTypes = Env;\n","export class Hooks {\n private listeners: Map<string, Function[]> = new Map();\n\n /**\n * Listen a hook event\n * @param event\n * @param cb\n */\n on(event: string, cb: Function) {\n if (!this.listeners.has(event)) {\n this.listeners.set(event, []);\n }\n\n this.listeners.get(event)!.push(cb);\n\n return this;\n }\n\n /**\n * Remove a listener attached to an event\n * @param event\n * @param cb\n */\n off(event: string, cb: Function) {\n if (this.listeners.has(event)) {\n this.listeners.set(\n event,\n this.listeners.get(event)!.filter((item) => item === cb)\n );\n }\n\n return this;\n }\n\n /**\n * Trigger an event and call listener.\n * @param event\n * @param args\n * @param callThis\n */\n emit(event: string, args: any[] = [], callThis: any = null): void {\n if (this.listeners.has(event)) {\n for (const cb of this.listeners.get(event)!) {\n cb.call(callThis, ...args);\n }\n }\n }\n\n /**\n * Trigger an event, listener alter given value and return it.\n * @param event\n * @param value\n * @param args\n * @param callThis\n */\n alter(event: string, value: any, args: any[] = [], callThis: any = null): any {\n if (this.listeners.has(event)) {\n for (const cb of this.listeners.get(event)!) {\n value = cb.call(callThis, value, ...args);\n }\n }\n\n return value;\n }\n\n /**\n * Trigger an event and call async listener.\n * @param event\n * @param args\n * @param callThis\n */\n async asyncEmit(event: string, args: any[] = [], callThis: any = null): Promise<void> {\n if (this.listeners.has(event)) {\n for (const cb of this.listeners.get(event)!) {\n await cb.call(callThis, ...args);\n }\n }\n }\n\n /**\n * Trigger an event, async listener alter given value and return it.\n * @param event\n * @param value\n * @param args\n * @param callThis\n */\n async asyncAlter(event: string, value: any, args: string[] = [], callThis: any = null): Promise<any> {\n if (this.listeners.has(event)) {\n for (const cb of this.listeners.get(event)!) {\n value = await cb.call(callThis, value, ...args);\n }\n }\n\n return value;\n }\n}\n","/**\n * An example of a `Type` is `MyCustomComponent` filters, which in JavaScript is be represented by\n * the `MyCustomComponent` constructor function.\n */\n// tslint:disable-next-line: variable-name\n/**\n *\n */\nexport interface Type<T = any> extends Function {\n new (...args: any[]): T;\n}\n\nexport const Type = Function;\n\n// @ts-ignore\nglobal.Type = Type;\n","import {isObservable} from \"../utils/objects/isObservable\";\nimport {isPromise} from \"../utils/objects/isPromise\";\nimport {isStream} from \"../utils/objects/isStream\";\n\n/**\n * @ignore\n */\nfunction isResponse(obj: any) {\n return obj.data && obj.headers && obj.status && obj.statusText;\n}\n\n/**\n * @ignore\n */\nexport enum AnyToPromiseStatus {\n PENDING = \"PENDING\",\n CANCELED = \"CANCELED\",\n RESOLVED = \"RESOLVED\",\n REJECTED = \"REJECTED\"\n}\n\nexport enum AnyToPromiseResponseTypes {\n STREAM = \"STREAM\",\n BUFFER = \"BUFFER\",\n DATA = \"DATA\"\n}\n\nexport interface AnyPromiseResult<T = any> {\n state: AnyToPromiseStatus;\n type: AnyToPromiseResponseTypes;\n status?: number;\n headers?: Record<string, any>;\n data: T;\n}\n\nexport class AnyToPromise<T = any> {\n public status = AnyToPromiseStatus.PENDING;\n public args: any[];\n\n #resolves: any;\n #rejects: any;\n #hasNextFunction = false;\n\n readonly #promise: Promise<AnyPromiseResult<T>>;\n\n constructor({hasNextFunction = false}: {hasNextFunction?: boolean} = {}) {\n this.#hasNextFunction = hasNextFunction;\n\n this.#promise = new Promise((resolve: any, reject: any) => {\n this.#resolves = resolve;\n this.#rejects = reject;\n });\n }\n\n isDone(): boolean {\n return this.status !== AnyToPromiseStatus.PENDING;\n }\n\n get next() {\n this.#hasNextFunction = true;\n\n return (error?: any) => {\n if (this.isDone()) {\n return;\n }\n\n return error ? this.reject(error) : this.resolve({type: AnyToPromiseResponseTypes.DATA});\n };\n }\n\n /**\n *\n */\n async call(cb: Function): Promise<AnyPromiseResult<T>> {\n if (this.isDone()) {\n return this as any;\n }\n\n try {\n this.handle(cb());\n } catch (er) {\n this.reject(er);\n }\n\n return this.#promise;\n }\n\n reject(er: any) {\n if (this.isDone()) {\n return;\n }\n\n this.done(AnyToPromiseStatus.REJECTED);\n\n this.#rejects(er);\n }\n\n resolve(response: any = {}) {\n if (this.isDone()) {\n return;\n }\n\n this.done(AnyToPromiseStatus.RESOLVED);\n\n this.#resolves({...response, state: AnyToPromiseStatus.RESOLVED});\n }\n\n destroy() {}\n\n cancel() {\n if (this.isDone()) {\n return;\n }\n\n this.done(AnyToPromiseStatus.CANCELED);\n\n return this.#resolves({state: AnyToPromiseStatus.CANCELED});\n }\n\n done(status: AnyToPromiseStatus) {\n this.destroy();\n this.status = status;\n }\n\n handle(process: any, additionalProps = {}): any {\n if (this.isDone()) {\n return;\n }\n\n if (process) {\n if (this.isCanceledResponse(process)) {\n // ABANDON\n return this.cancel();\n }\n\n if (isObservable(process)) {\n process = process.toPromise();\n }\n\n if (isResponse(process)) {\n return this.handle(process.data, {\n ...additionalProps,\n status: process.status,\n headers: process.headers\n });\n }\n\n if (isStream(process)) {\n return this.resolve({...additionalProps, type: AnyToPromiseResponseTypes.STREAM, data: process});\n }\n if (isStream(process) || Buffer.isBuffer(process)) {\n return this.resolve({...additionalProps, type: AnyToPromiseResponseTypes.BUFFER, data: process});\n }\n\n if (isPromise(process)) {\n return process\n .then((result: any) => this.handle(result, additionalProps))\n .catch((error: any) => {\n if (error.response && isResponse(error.response)) {\n return this.handle(error.response);\n }\n return this.reject(error);\n });\n }\n }\n\n if (!this.#hasNextFunction) {\n // no next function and empty response\n return this.resolve({\n ...additionalProps,\n data: process,\n type: AnyToPromiseResponseTypes.DATA\n });\n }\n }\n\n protected isCanceledResponse(process: any) {\n return process === AnyToPromiseStatus.CANCELED;\n }\n}\n","import {classOf, decoratorTypeOf, nameOf} from \"../utils\";\n\nexport class UnsupportedDecoratorType extends Error {\n name: \"UNSUPPORTED_DECORATOR_TYPE\";\n\n constructor(decorator: any, args: any[]) {\n super(UnsupportedDecoratorType.buildMessage(decorator, args));\n }\n\n private static buildMessage(decorator: any, args: any[]): string {\n const [target, propertyKey, index] = args;\n\n const bindingType = decoratorTypeOf(args);\n const shortBinding = bindingType.split(\"/\")[0];\n const param = shortBinding === \"parameter\" ? \".[\" + index + \"]\" : \"\";\n const cstr = shortBinding === \"parameter\" ? \".constructor\" : \"\";\n const method = propertyKey ? \".\" + propertyKey : cstr;\n\n const path = nameOf(classOf(target)) + method + param;\n\n return `${decorator.name} cannot be used as ${bindingType} decorator on ${path}`;\n }\n}\n","import {Type} from \"../domain/Type\";\n\n/**\n * The `@Deprecated()` decorators wraps the given method in such a way that it is marked as deprecated.\n *\n * ```typescript\n * provide Foo {\n *\n * @Deprecated(\"Foo.method: Use Foo.method2 instead\")\n * public method() {\n *\n * }\n * ```\n *\n * When called, @Deprecated() will return a function that will emit a `DeprecationWarning` using the `process.on('warning')` event.\n * By default, this warning will be emitted and printed to `stderr` exactly once, the first time it is called. After the warning is emitted, the wrapped method is called.\n *\n * If either the `--no-deprecation` or `--no-warnings` command line flags are used, or if the `process.noDeprecation`\n * property is set to `true` prior to the first deprecation warning, the `@Deprecated()` decorators does nothing.\n *\n * If the `--trace-deprecation` or `--trace-warnings` command line flags are set, or the `process.traceDeprecation`\n * property is set to `true`, a warning and a stack trace are printed to stderr the first time the deprecated function is called.\n *\n * If the `--throw-deprecation` command line flag is set, or the `process.throwDeprecation` property is set to `true`,\n * then an exception will be thrown when the deprecated function is called.\n *\n * The `--throw-deprecation` command line flag and `process.throwDeprecation` property take precedence over `--trace-deprecation`\n * and `process.traceDeprecation`.\n *\n * @param message\n * @returns {Function}\n * @decorator\n */\nexport function Deprecated(message: string): Function {\n return (target: Type<any>, targetKey: string, descriptor: TypedPropertyDescriptor<any>) => {\n const originalMethod = descriptor.value;\n\n descriptor.value = require(\"util\").deprecate(originalMethod, message);\n\n return descriptor;\n };\n}\n","/**\n * @module common/core\n */\nimport {descriptorOf} from \"../utils\";\n\n/** */\n\nexport function Configurable(value: boolean = true): Function {\n return (target: any, propertyKey: string) => {\n const descriptor = descriptorOf(target, propertyKey) || {writable: true, enumerable: true};\n descriptor.configurable = value;\n Object.defineProperty((target && target.prototype) || target, propertyKey, descriptor);\n\n return descriptor;\n };\n}\n","/**\n * @module common/core\n */\nimport {descriptorOf} from \"../utils\";\n\n/** */\n\nexport function Enumerable(value: boolean = true): Function {\n return (target: any, propertyKey: string) => {\n const descriptor = descriptorOf(target, propertyKey) || {writable: true, configurable: true};\n descriptor.enumerable = value;\n Object.defineProperty((target && target.prototype) || target, propertyKey, descriptor);\n\n return descriptor;\n };\n}\n","/**\n * @module common/core\n */\nimport {descriptorOf} from \"../utils\";\n\n/** */\n\nexport function Writable(value: boolean = true): Function {\n return (target: any, propertyKey: string) => {\n const descriptor = descriptorOf(target, propertyKey) || {configurable: true, enumerable: true};\n descriptor.writable = value;\n Object.defineProperty((target && target.prototype) || target, propertyKey, descriptor);\n\n return descriptor;\n };\n}\n","/**\n * @module common/core\n */\nimport {Writable} from \"./writable\";\n/** */\nexport function Readonly(): Function {\n return Writable(false);\n}\n","/**\n * @module common/core\n */\nimport {Configurable} from \"./configurable\";\n/** */\nexport function NotConfigurable(): Function {\n return Configurable(false);\n}\n","/**\n * @module common/core\n */\nimport {Enumerable} from \"./enumerable\";\n/** */\nexport function NotEnumerable(): Function {\n return Enumerable(false);\n}\n","import {Store} from \"../domain/Store\";\nimport {DecoratorParameters} from \"../interfaces/DecoratorParameters\";\n\n/**\n * Create a store correctly configured from the parameters given by the decorator.\n * The `fn` can return a decorator that will be initialized with the parameters (target, propertyKey, descriptor).\n * @param {(store: Store, parameters: DecoratorParameters) => void} fn\n * @returns {Function}\n */\nexport function StoreFn(fn: (store: Store, parameters: DecoratorParameters) => void): Function {\n return (...parameters: any[]): any => {\n const store = Store.from(...parameters);\n const result: any = fn(store, parameters as DecoratorParameters);\n if (typeof result === \"function\") {\n result(...parameters);\n }\n\n return parameters[2];\n };\n}\n","import {Store} from \"../domain/Store\";\nimport {StoreFn} from \"./storeFn\";\n\nexport function StoreSet(key: any, value: any): Function {\n return StoreFn((store: Store) => {\n store.set(key, value);\n });\n}\n","import {Store} from \"../domain/Store\";\nimport {StoreFn} from \"./storeFn\";\n\nexport function StoreMerge(key: any, value: any): Function {\n return StoreFn((store: Store) => {\n store.merge(key, value);\n });\n}\n"],"names":["catchError","cb","er","catchAsyncError","proxyDelegation","self","options","handlers","remove","ownKeys","get","getter","target","propertyKey","set","setter","value","itsOwnProp","p","Reflect","has","Proxy","getOwnPropertyDescriptor","undefined","receiver","deleteProperty","defineProperty","attributes","concat","uniq","list","Array","from","Set","values","uniqBy","key","map","Map","forEach","item","importPackage","packageName","loaderFn","optional","e","Error","getClass","prototype","constructor","classOf","ancestorOf","Object","getPrototypeOf","getInheritedClass","nameOfClass","targetClass","name","nameOfSymbol","sym","toString","replace","nameOf","obj","ancestorsOf","classes","currentTarget","unshift","prototypeOf","methodsOf","methods","keys","descriptorOf","isMethodDescriptor","DecoratorTypes","decoratorTypeOf","args","descriptor","staticType","type","CLASS","isArray","isArrayOrArrayClass","isDate","Date","isNaN","isFunction","isNil","isBoolean","Boolean","isBooleanOrBooleanClass","isNumber","isNumberOrNumberClass","Number","isString","isStringOrStringClass","String","isPrimitiveOrPrimitiveClass","isPrimitive","isPrimitiveClass","includes","isSymbol","isSymbolOrSymbolClass","Symbol","isBasicType","source","deepClone","stack","WeakMap","dest","stacked","process","env","TSED_TRACK_CIRCULAR_REF","console","trace","setPrototypeOf","createInstance","create","isProtectedKey","objectKeys","filter","mergeReducerBuilder","collection","index","findIndex","deepMerge","defaultReducer","a","b","getReducer","reducers","parentKey","shouldReturnObj","shouldReturnSource","reducer","reduce","out","src","cleanUndefinedProps","DESIGN_PARAM_TYPES","DESIGN_TYPE","DESIGN_RETURN_TYPE","PROPERTIES","Metadata","getMetadata","getOwn","getOwnMetadata","getType","getOwnType","getReturnType","getOwnReturnType","hasMetadata","hasOwn","hasOwnMetadata","delete","deleteMetadata","setParamTypes","targets","classConstructor","indexOf","push","defineMetadata","getParamTypes","targetPrototype","getOwnParamTypes","metadataKey","CLASS_STORE","METHOD_STORE","PROPERTY_STORE","PARAM_STORE","stores","storeGet","Store","registry","defineStore","PARAM_CTOR","PARAM_STC","PARAM","store","PROP","PROP_STC","METHOD","METHOD_STC","fromMethod","mergeStoreFrom","_entries","merge","mergeStoreMethodFrom","defaultValue","metadata","inverse","_value_","toJson","entries","decorateMethodsOf","klass","decorator","apply","decoratorArgs","inheritedDescriptorOf","useDecorators","decorators","o","useMethodDecorator","useMethodDecorators","cleanObject","ignore","getConstructor","constructorOf","deepExtends","isArrowFn","isClassObject","isPlainObject","isPromise","Promise","subscribe","then","isClass","getClassOrSymbol","toStringConstructor","ctr","strings","split","ctrString","find","s","trim","getConstructorArgNames","isEnumerable","enumerable","propertyIsEnumerable","call","getEnumerableKeys","isObject","mapOptions","expression","scope","separator","getValue","shift","length","isCollection","WeakSet","isEmpty","isInheritedFrom","deep","isObservable","lift","isStream","pipe","isSerializable","data","Buffer","isBuffer","primitiveOf","setValue","add","createIdentityFn","keyOrFn","v","k","toMap","input","identity","ids","id","Env","EnvTypes","Hooks","on","event","listeners","off","emit","callThis","alter","asyncEmit","asyncAlter","Type","Function","global","isResponse","headers","status","statusText","AnyToPromiseStatus","AnyToPromiseResponseTypes","AnyToPromise","hasNextFunction","PENDING","resolve","reject","isDone","next","error","DATA","handle","done","REJECTED","response","RESOLVED","state","destroy","cancel","CANCELED","additionalProps","isCanceledResponse","toPromise","STREAM","BUFFER","result","catch","UnsupportedDecoratorType","buildMessage","bindingType","shortBinding","param","cstr","method","path","Deprecated","message","targetKey","originalMethod","require","deprecate","Configurable","writable","configurable","Enumerable","Writable","Readonly","NotConfigurable","NotEnumerable","StoreFn","fn","parameters","StoreSet","StoreMerge"],"mappings":"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"}
|