{"version":3,"file":"type-checkers.js","sources":["../node_modules/@actualwave/closure-value/closure-value.js","../source/config/default-checker.js","../source/config/enabled.js","../node_modules/@actualwave/get-class/get-class.js","../source/config/ignored-classes.js","../source/config/ignored-properties.js","../source/config/wrap-config.js","../node_modules/@actualwave/path-sequence-to-string/index.js","../node_modules/@actualwave/has-own/has-own.js","../source/info/children.js","../source/info/target.js","../source/info/utils.js","../node_modules/@actualwave/is-function/is-function.js","../node_modules/@actualwave/with-proxy/with-proxy.js","../source/utils.js","../source/proxy/handlers/get.js","../source/proxy/handlers/set.js","../source/proxy/handlers/apply.js","../source/proxy/handlers/construct.js","../source/proxy/handlers/deleteProperty.js","../source/proxy/wrap.js","../source/proxy/wrapDeep.js","../source/object.js"],"sourcesContent":["'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst singleValueFactory = (defaultValue = null, valueFormatter = (value) => value) => {\n let value = defaultValue;\n\n return {\n getDefault: () => defaultValue,\n get: () => value,\n set: (newValue = defaultValue) => {\n value = valueFormatter(newValue);\n },\n };\n};\n\nconst valuesMapFactory = (defaults = new Map(), valueFormatter = (key, value) => value) => {\n const defaultValues = new Map(defaults);\n const getDefault = () => new Map(defaultValues);\n\n const values = getDefault();\n\n return {\n values,\n getDefault,\n copy: () => new Map(values),\n delete: (key) => values.delete(key),\n has: (key) => values.has(key),\n set: (key, value) => values.set(key, valueFormatter(key, value)),\n get: (key) => values.get(key),\n };\n};\n\nconst valuesSetFactory = (defaults = new Set(), valueFormatter = (value) => value) => {\n const defaultValues = new Set(defaults);\n const getDefault = () => new Set(defaultValues);\n\n const values = getDefault();\n\n return {\n values,\n getDefault,\n get: () => new Set(values),\n delete: (value) => values.delete(value),\n has: (value) => values.has(value),\n add: (value) => values.add(valueFormatter(value)),\n };\n};\n\nexports.singleValueFactory = singleValueFactory;\nexports.valuesMapFactory = valuesMapFactory;\nexports.valuesSetFactory = valuesSetFactory;","import { singleValueFactory } from '@actualwave/closure-value';\n\nexport const {\n get: getDefaultTypeChecker,\n set: setDefaultTypeChecker,\n} = singleValueFactory();\n","import { singleValueFactory } from '@actualwave/closure-value';\n\nexport const {\n get: isEnabled,\n set: setEnabled,\n} = singleValueFactory(true, (value) => !!value);\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst getProtoConstructor = (value) => {\n const proto = Object.getPrototypeOf(value);\n\n if (proto && typeof proto === 'object') {\n return proto.constructor;\n }\n\n return proto || Object;\n}\n\nconst getClass = (value) => {\n if(value === null || value === undefined) {\n return undefined;\n }\n\n const constructor = value.constructor;\n\n if(\n typeof constructor === 'function'\n && value instanceof constructor\n ) {\n return value.constructor;\n }\n\n return getProtoConstructor(value);\n};\n\nconst getParentClass = (value) => getProtoConstructor(getClass(value));\n\nconst getClassName = (value) => {\n if (!value) return '';\n\n const def = getClass(value);\n\n return def ? def.name : '';\n};\n\nexports.getClassName = getClassName;\nexports.getParentClass = getParentClass;\nexports.getClass = getClass;\nexports.default = getClass;\n","import { getClass } from '@actualwave/get-class';\nimport { valuesSetFactory } from '@actualwave/closure-value';\n\nconst {\n get: getIgnoredClasses,\n add: ignoreClass,\n has: isClassIgnored,\n delete: stopIgnoringClass,\n} = valuesSetFactory();\n\nexport const isValueOfIgnoredClass = (value) => isClassIgnored(getClass(value));\n\nexport { getIgnoredClasses, ignoreClass, isClassIgnored, stopIgnoringClass };\n","import { valuesSetFactory } from '@actualwave/closure-value';\r\n\r\nconst {\r\n get: getIgnoredProperties,\r\n add: ignoreProperty,\r\n has: isPropertyIgnored,\r\n delete: stopIgnoringProperty,\r\n} = valuesSetFactory(['constructor', 'prototype', '__proto__']);\r\n\r\nexport { getIgnoredProperties, ignoreProperty, isPropertyIgnored, stopIgnoringProperty };\r\n","import { valuesMapFactory } from '@actualwave/closure-value';\n\nexport const WRAP_FUNCTION_RETURN_VALUES = 'wrapFunctionReturnValues';\nexport const WRAP_FUNCTION_ARGUMENTS = 'wrapFunctionArguments';\nexport const WRAP_SET_PROPERTY_VALUES = 'wrapSetPropertyValues';\nexport const WRAP_IGNORE_PROTOTYPE_METHODS = 'ignorePrototypeMethods';\n\nconst { getDefault: getDefaultWrapConfig, set: setWrapConfigValue, get } = valuesMapFactory(\n [\n [WRAP_FUNCTION_RETURN_VALUES, true],\n [WRAP_FUNCTION_ARGUMENTS, false],\n [WRAP_SET_PROPERTY_VALUES, false],\n [WRAP_IGNORE_PROTOTYPE_METHODS, false],\n ],\n (key, value) => !!value,\n);\n\nexport const getWrapConfigValue = (name, target) => {\n let value;\n\n if (target) {\n value = target[name];\n }\n\n return value === undefined ? get(name) : value;\n};\n\nexport { getDefaultWrapConfig, setWrapConfigValue };\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/**\n * Wrap any value with AsIs() to pass it to string as is without ant wrapping\n * or dot prior to name.\n * @param {*} value\n */\nfunction AsIs(value) {\n if (this instanceof AsIs) {\n this.value = value;\n } else {\n return new AsIs(value);\n }\n}\n\nfunction asIs() {\n return this.value;\n}\n\nAsIs.prototype.toString = asIs;\nAsIs.prototype.valueOf = asIs;\nAsIs.prototype[Symbol.toPrimitive] = asIs;\n\n/**\n *\n * @param {String} str\n * @param {String|AsIs|Number} name\n */\nconst appendPathNameToString = (str, name) => {\n const string = String(str) || '';\n\n if (name instanceof AsIs) {\n return `${string}${name}`;\n }\n\n if (typeof name === 'symbol') {\n return `${string}[${String(name)}]`;\n }\n\n if (String(parseInt(name, 10)) === String(name)) {\n return `${string}[${name}]`;\n }\n\n if (/^[a-z_$][\\w\\d$_]*$/i.test(name)) {\n return string ? `${string}.${name}` : name;\n }\n\n return `${string}[\"${name}\"]`;\n};\n\nclass PathSequence {\n constructor(value) {\n this.value = value ? String(value) : '';\n this.lastName = undefined;\n }\n\n append(name) {\n this.value = appendPathNameToString(this.value, name);\n this.lastName = name;\n }\n\n appendCustomValue(customString) {\n this.value = appendPathNameToString(this.value, AsIs(customString));\n this.lastName = customString;\n }\n\n clone(nextName = undefined) {\n const sequence = new PathSequence(this.value);\n\n if (nextName === undefined) {\n sequence.lastName = this.lastName;\n } else {\n sequence.append(nextName);\n }\n\n return sequence;\n }\n\n getLastName() {\n return this.lastName;\n }\n\n toString() {\n return this.value;\n }\n\n valueOf() {\n return this.value;\n }\n}\n\n/**\n *\n * @returns {Array}\n */\nconst createPathSequence = value => new PathSequence(value);\n\nexports.createPathSequence = createPathSequence;\nexports.default = PathSequence;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst hasOwn = (\n (has) =>\n (target, property) =>\n Boolean(target && has.call(target, property))\n)(Object.prototype.hasOwnProperty);\n\nexports.hasOwn = hasOwn;\nexports.default = hasOwn;","import hasOwn from '@actualwave/has-own';\n\n/*\n I have had to apply custom key instead of name as is to\n fix \"construtor\" issue. Since ordinary object has some\n properties with values from start, these properties were\n mustakenly returned as child info objects, for example, if\n requesting hild info for \"constructor\" function of the target,\n it returned class constructor which caused errors later,\n when accesing info properties.\n\n Converts Symbols and Numbers to String.\n\n FIXME: Map might be fitting better.\n */\nconst getChildInfoKey = (name) => `@${String(name)}`;\n\nclass ChildrenCache {\n\n constructor(children) {\n if (children) {\n this.cache = { ...children.cache };\n } else {\n this.cache = {};\n }\n }\n\n store(name, childInfo) {\n const key = getChildInfoKey(name);\n\n if (childInfo) {\n this.cache[key] = childInfo;\n } else {\n delete this.cache[key];\n }\n }\n\n get(name) {\n return this.cache[getChildInfoKey(name)];\n }\n\n has(name) {\n return !!this.cache[getChildInfoKey(name)];\n }\n\n remove(cache, name) {\n return delete this.cache[getChildInfoKey(name)];\n }\n\n copy({ cache: sourceCache }) {\n Object.keys(sourceCache).forEach((key) => {\n if (hasOwn(this.cache, key)) {\n this.cache[key].copy(sourceCache[key]);\n } else {\n this.cache[key] = sourceCache[key];\n }\n });\n\n return this;\n }\n}\n\nexport const createChildrenCache = (children) => new ChildrenCache(children);\n\nexport default ChildrenCache;\n","import { createPathSequence } from '@actualwave/path-sequence-to-string';\n\nimport { createChildrenCache } from './children';\n\nexport const INFO_KEY = Symbol('type-checkers::info');\n\nexport const getTargetInfo = (target) => (target ? target[INFO_KEY] : undefined);\n\nexport const setTargetInfo = (target, info) => {\n if (target && info) {\n target[INFO_KEY] = info;\n }\n};\n\nexport const removeTargetInfo = (target) => delete target[INFO_KEY];\n\nexport const hasTargetInfo = (target) => !!getTargetInfo(target);\n\nclass TargetInfo {\n constructor(\n checker,\n data = null,\n deep = true,\n names = createPathSequence(),\n children = createChildrenCache(),\n ) {\n this.checker = checker;\n this.data = data;\n this.deep = deep;\n this.names = names;\n this.children = children;\n }\n\n getChild(name) {\n return this.children.get(name);\n }\n\n storeChildFrom(name, child) {\n const info = getTargetInfo(child);\n\n if (info) {\n this.children.store(name, info);\n }\n }\n\n createChildWithNames(names, value, data = null) {\n const childInfo = new TargetInfo(\n this.checker,\n this.checker.init(value, data),\n this.deep,\n names,\n );\n\n this.children.store(names.lastName, childInfo);\n\n return childInfo;\n }\n\n createChild(name, value, data = null) {\n return this.createChildWithNames(this.names.clone(name), value, data);\n }\n\n copy({ deep, checker, children, data, names }) {\n if (this.checker === checker) {\n this.deep = this.deep || deep;\n this.children.copy(children);\n this.data = checker.mergeConfigs(this.data, data, names);\n } else {\n console.error(\n 'TypeChecked objects can be merged only if using exactly same instance of type checker.',\n );\n }\n\n return this;\n }\n}\n\nexport const createTargetInfo = (checker, data, deep, names, children) =>\n new TargetInfo(checker, data, deep, names, children);\n","import { INFO_KEY } from './target';\n\nexport const getTypeChecker = (target) => {\n if (target) {\n const info = target[INFO_KEY];\n\n return (info && info.checker) || undefined;\n }\n\n return undefined;\n};\n\nexport const getTypeCheckerData = (target) => {\n if (target) {\n const info = target[INFO_KEY];\n\n return (info && info.data) || undefined;\n }\n\n return undefined;\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst isFunction = (target) => (typeof target === 'function');\n\nexports.isFunction = isFunction;\nexports.default = isFunction;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst { isFunction } = require('@actualwave/is-function');\n\nconst withProxy = (handlers) => {\n /*\n have problems with using rest operator here, when in node_modules without additional \n configurations, so using old style code\n */\n const { apply, construct } = handlers;\n\n delete handlers.apply;\n delete handlers.construct;\n\n const functionHandlers = { ...handlers, construct, apply };\n\n return (target) => new Proxy(target, isFunction(target) ? functionHandlers : handlers);\n};\n\nexports.withProxy = withProxy;\nexports.default = withProxy;\n","import { isValueOfIgnoredClass } from './config/ignored-classes';\nimport { getTargetInfo } from './info';\nimport {\n WRAP_FUNCTION_ARGUMENTS,\n WRAP_FUNCTION_RETURN_VALUES,\n WRAP_IGNORE_PROTOTYPE_METHODS,\n WRAP_SET_PROPERTY_VALUES,\n} from './config/wrap-config';\n\nexport const TARGET_KEY = Symbol('type-checkers::target');\n\nexport const isSymbol = (value) => typeof value === 'symbol';\n\nexport const isOfWrappableType = (target) => {\n const type = typeof target;\n\n return (\n Boolean(target) && (type === 'function' || type === 'object') && !isValueOfIgnoredClass(target)\n );\n};\n\nexport const isWrapped = (target) => Boolean(target && target[TARGET_KEY]);\n\nexport const isWrappable = (target) => isOfWrappableType(target) && !isWrapped(target);\n\nexport const unwrap = (target) => (target && target[TARGET_KEY]) || target;\n\nexport const setWrapConfigTo = (target, key, value) => {\n if (!isWrapped(target)) {\n return false;\n }\n\n const info = getTargetInfo(target);\n\n switch (key) {\n case WRAP_FUNCTION_RETURN_VALUES:\n case WRAP_FUNCTION_ARGUMENTS:\n case WRAP_SET_PROPERTY_VALUES:\n case WRAP_IGNORE_PROTOTYPE_METHODS:\n info[key] = !!value;\n return true;\n default:\n return false;\n }\n};\n","import hasOwn from '@actualwave/has-own';\nimport isFunction from '@actualwave/is-function';\n\nimport { isWrappable, isSymbol, TARGET_KEY } from '../../utils';\nimport { getTargetInfo } from '../../info';\nimport { getWrapConfigValue, WRAP_IGNORE_PROTOTYPE_METHODS } from '../../config/wrap-config';\nimport { isPropertyIgnored } from '../../config/ignored-properties';\n\nconst getTargetProperty = (wrapFn, target, names, value) => {\n const info = getTargetInfo(target);\n const { deep } = info;\n\n if (deep || isFunction(value)) {\n const { lastName: property } = names;\n\n const childInfo = info.getChild(property);\n\n if (childInfo) {\n return wrapFn(value, childInfo);\n }\n\n return wrapFn(value, info.createChildWithNames(names, value));\n }\n\n return value;\n};\n\n/**\n * Skips prototype methods if they are ignored by config\n */\nconst isWrappableProperty = (target, info, property, value) => {\n if (isFunction(value) && !hasOwn(target, property)) {\n return getWrapConfigValue(WRAP_IGNORE_PROTOTYPE_METHODS, info);\n }\n\n return true;\n};\n\nconst getPropertyFactory = (wrapFn) => (target, property) => {\n const value = target[property];\n\n // property === INFO_KEY not needed because INFO_KEY is Symbol\n if (isSymbol(property) || isPropertyIgnored(property)) {\n return value;\n }\n\n /*\n target[TARGET_KEY] is a virtual property accessing which indicates\n if object is wrapped with type checked proxy or not.\n Also it allows \"unwrapping\" target.\n */\n if (property === TARGET_KEY) {\n return target;\n }\n\n const info = getTargetInfo(target);\n const { names, data, checker } = info;\n\n const nextNames = names.clone(property);\n\n if (checker.getProperty) {\n checker.getProperty(target, nextNames, value, data);\n }\n\n if (isWrappable(value) && isWrappableProperty(target, info, property, value)) {\n return getTargetProperty(wrapFn, target, nextNames, value);\n }\n\n return value;\n};\n\nexport default getPropertyFactory;\n","import { INFO_KEY, getTargetInfo } from '../../info';\nimport { TARGET_KEY, isSymbol, isWrappable } from '../../utils';\nimport { getWrapConfigValue, WRAP_SET_PROPERTY_VALUES } from '../../config/wrap-config';\n\nconst setNonTargetProperty = (target, property, value) => {\n const { names, data, checker } = getTargetInfo(target);\n\n if (checker.setProperty) {\n checker.setProperty(target, names.clone(property), value, data);\n }\n\n target[property] = value;\n\n return true;\n};\n\nconst setTargetProperty = (wrapFn, target, property, value) => {\n const info = getTargetInfo(target);\n const { names, checker, data } = info;\n const childInfo = info.getChild(property);\n const nextNames = childInfo ? childInfo.names : names.clone(property);\n\n if (checker.setProperty) {\n checker.setProperty(target, nextNames, value, data);\n }\n\n if (childInfo) {\n value = wrapFn(value, childInfo);\n } else {\n value = wrapFn(value, info.createChildWithNames(nextNames, value));\n }\n\n target[property] = value;\n return true;\n};\n\nconst updateTargetInfo = (target, value) => {\n let info = getTargetInfo(target);\n if (info && value && info !== value) {\n info.copy(value);\n } else {\n info = value;\n }\n\n target[INFO_KEY] = info;\n return true;\n};\n\nconst setPropertyFactory = (wrapFn) => (target, property, value) => {\n if (property === TARGET_KEY) {\n throw new Error(`\"${TARGET_KEY}\" is a virtual property and cannot be set`);\n }\n\n if (property === INFO_KEY) {\n return updateTargetInfo(target, value);\n }\n\n if (isSymbol(property)) {\n return updateTargetInfo(target, value);\n }\n\n const info = getTargetInfo(target);\n\n if (isWrappable(value) && getWrapConfigValue(WRAP_SET_PROPERTY_VALUES, info)) {\n return setTargetProperty(wrapFn, target, property, value);\n }\n\n return setNonTargetProperty(target, property, value);\n};\n\nexport default setPropertyFactory;\n","import { getTargetInfo } from '../../info';\nimport { isWrappable } from '../../utils';\n\nimport {\n getWrapConfigValue,\n WRAP_FUNCTION_ARGUMENTS,\n WRAP_FUNCTION_RETURN_VALUES,\n} from '../../config/wrap-config';\n\nexport const getTypeCheckedChild = (wrapFn, info, name, value) => {\n if (!isWrappable(value)) {\n return value;\n }\n\n const childInfo = info.getChild(name);\n\n if (childInfo) {\n return wrapFn(value, childInfo);\n }\n\n return wrapFn(value, info.createChild(name, value));\n};\n\nexport const getTargetArguments = (wrapFn, info, argumentsList) => {\n if (getWrapConfigValue(WRAP_FUNCTION_ARGUMENTS, info)) {\n const { length } = argumentsList;\n for (let index = 0; index < length; index++) {\n argumentsList[index] = getTypeCheckedChild(wrapFn, info, String(index), argumentsList[index]);\n }\n }\n\n return argumentsList;\n};\n\nconst applyFunctionFactory = (wrapFn) => (target, thisArg, argumentsList) => {\n const info = getTargetInfo(target);\n const { names, data, checker } = info;\n\n if (checker.arguments) {\n checker.arguments(target, names, argumentsList, data, thisArg);\n }\n\n if (getWrapConfigValue(WRAP_FUNCTION_ARGUMENTS, info)) {\n argumentsList = getTargetArguments(wrapFn, info, argumentsList);\n }\n\n let result = target.apply(thisArg, argumentsList);\n\n if (checker.returnValue) {\n checker.returnValue(target, names, result, data, thisArg);\n }\n\n if (getWrapConfigValue(WRAP_FUNCTION_RETURN_VALUES, info)) {\n result = getTypeCheckedChild(wrapFn, info, 'returnValue', result);\n }\n\n return result;\n};\n\nexport default applyFunctionFactory;\n","import { getTargetInfo } from '../../info';\nimport {\n getWrapConfigValue,\n WRAP_FUNCTION_ARGUMENTS,\n WRAP_FUNCTION_RETURN_VALUES,\n} from '../../config/wrap-config';\nimport { getTargetArguments, getTypeCheckedChild } from './apply';\n\nconst constructFactory = (wrapFn) => (Target, argumentsList) => {\n const info = getTargetInfo(Target);\n const { names, data, checker } = info;\n\n if (checker.arguments) {\n checker.arguments(Target, names, argumentsList, data);\n }\n\n if (getWrapConfigValue(WRAP_FUNCTION_ARGUMENTS, info)) {\n argumentsList = getTargetArguments(wrapFn, info, argumentsList);\n }\n\n let result = new Target(...argumentsList);\n\n if (checker.returnValue) {\n checker.returnValue(Target, names, result, data);\n }\n\n if (getWrapConfigValue(WRAP_FUNCTION_RETURN_VALUES, info)) {\n result = getTypeCheckedChild(wrapFn, info, 'returnValue', result);\n }\n\n return result;\n};\n\nexport default constructFactory;\n","import { INFO_KEY, getTargetInfo } from '../../info';\nimport { TARGET_KEY, isSymbol } from '../../utils';\n\nconst deletePropertyFactory = () => (target, property) => {\n if (property === INFO_KEY) {\n return delete target[property];\n }\n\n if (property === TARGET_KEY) {\n return false;\n }\n\n if (isSymbol(property)) {\n return delete target[property];\n }\n\n const info = getTargetInfo(target);\n const { names, data, checker } = info;\n\n checker.deleteProperty(target, names.clone(property), data);\n\n return delete target[property];\n};\n\nexport default deletePropertyFactory;\n","/* eslint-disable import/prefer-default-export */\nimport withProxy from '@actualwave/with-proxy';\nimport { createPathSequence } from '@actualwave/path-sequence-to-string';\n\nimport { isWrappable } from '../utils';\nimport { setTargetInfo, createTargetInfo } from '../info';\nimport { isEnabled } from '../config/enabled';\nimport { getDefaultTypeChecker } from '../config/default-checker';\n\nimport getPropertyFactory from './handlers/get';\nimport setPropertyFactory from './handlers/set';\nimport applyFunctionFactory from './handlers/apply';\nimport constructFactory from './handlers/construct';\nimport deletePropertyFactory from './handlers/deleteProperty';\n\nexport const createInfoFromOptions = (\n target,\n {\n checker = getDefaultTypeChecker(),\n deep,\n name,\n data,\n children,\n info = null, // exclusive option, if set other options being ignored\n } = {},\n) =>\n info ||\n createTargetInfo(checker, checker.init(target, data), deep, createPathSequence(name), children);\n\nconst generateHandlers = (create, config = null) => ({\n get: (!config || config.get) && getPropertyFactory(create),\n set: (!config || config.set) && setPropertyFactory(create),\n apply: (!config || config.apply) && applyFunctionFactory(create),\n construct: (!config || config.construct) && constructFactory(create),\n deleteProperty: (!config || config.deleteProperty) && deletePropertyFactory(create),\n});\n\nexport const createWrapFactory = (proxyConfig) => {\n let wrapInternal;\n const assignInfoAndWrap = (target, info) => {\n setTargetInfo(target, info);\n return wrapInternal(target);\n };\n\n const handlers = generateHandlers(assignInfoAndWrap, proxyConfig);\n wrapInternal = withProxy(handlers);\n\n return assignInfoAndWrap;\n};\n\nexport const wrap = (target, options = null, proxyConfig = null) => {\n if (!isWrappable(target) || !isEnabled()) {\n return target;\n }\n\n const wrapInternal = createWrapFactory(proxyConfig);\n const info = createInfoFromOptions(target, options || undefined);\n\n return wrapInternal(target, info);\n};\n","/* eslint-disable import/prefer-default-export */\nimport { isEnabled } from '../config/enabled';\nimport { setTargetInfo } from '../info';\nimport { isWrappable } from '../utils';\nimport { createInfoFromOptions, createWrapFactory } from './wrap';\n\nconst deepInitializer = (target, info) => {\n const { names, checker, data } = info;\n\n Object.keys(target).forEach((name) => {\n const value = target[name];\n const nextNames = names.clone(name);\n\n if (checker.getProperty) {\n checker.getProperty(target, nextNames, value, data);\n }\n\n if (isWrappable(value)) {\n let childInfo = info.getChild(name);\n\n if (!childInfo) {\n childInfo = info.createChildWithNames(nextNames, value);\n }\n\n deepInitializer(value, childInfo);\n }\n });\n\n setTargetInfo(target, info);\n\n return info;\n};\n\nexport const wrapDeep = (target, options, proxyConfig = null) => {\n if (!isWrappable(target) || typeof target !== 'object' || !isEnabled()) {\n return target;\n }\n\n const wrapInternal = createWrapFactory(proxyConfig);\n const info = createInfoFromOptions(target, options);\n\n deepInitializer(target, info);\n\n return wrapInternal(target, info);\n};\n","import { wrap } from './proxy/wrap';\nimport { isWrapped } from './utils';\nimport { getTargetInfo } from './info';\n\nconst findWrapped = (list) => list.find(isWrapped);\n\n/**\n * Merge all objects and return new. If any of source objects were wrapped,\n * resulting object will be wrapped.\n * @param {...any} sources\n */\nexport const merge = (...sources) => {\n const wrapped = findWrapped(sources);\n\n if (!wrapped) {\n return Object.assign({}, ...sources);\n }\n\n const info = getTargetInfo(wrapped);\n\n return Object.assign(wrap({}, { info }), ...sources);\n};\n\n/**\n * Calls merge() and forces wrapped result.\n * @param {*} options\n * @param {...Object} sources\n */\nmerge.options = (options, ...sources) => merge(wrap({}, options), ...sources);\n\n/**\n * Assign properties from source objects to target. If target or any of sources\n * were wrapped, resulting object will be wrapped.\n * @param {*} target\n * @param {...any} sources\n */\nexport const assign = (target, ...sources) => {\n if (isWrapped(target)) {\n return Object.assign(target, ...sources);\n }\n\n const wrapped = findWrapped(sources);\n\n if (!wrapped) {\n return Object.assign(target, ...sources);\n }\n\n const info = getTargetInfo(wrapped);\n\n return Object.assign(wrap(target, { info }), ...sources);\n};\n\n/**\n * calls assign() and forces wrapped result.\n * @param {*} options\n * @param {Object} target\n * @param {...Object} sources\n */\nassign.options = (options, target, ...sources) => assign(wrap(target, options), ...sources);\n"],"names":["get","getDefaultTypeChecker","set","setDefaultTypeChecker","singleValueFactory","isEnabled","setEnabled","value","getIgnoredClasses","add","ignoreClass","has","isClassIgnored","delete","stopIgnoringClass","valuesSetFactory","isValueOfIgnoredClass","getClass","getIgnoredProperties","ignoreProperty","isPropertyIgnored","stopIgnoringProperty","WRAP_FUNCTION_RETURN_VALUES","WRAP_FUNCTION_ARGUMENTS","WRAP_SET_PROPERTY_VALUES","WRAP_IGNORE_PROTOTYPE_METHODS","getDefault","getDefaultWrapConfig","setWrapConfigValue","valuesMapFactory","key","getWrapConfigValue","name","target","undefined","getChildInfoKey","String","ChildrenCache","constructor","children","cache","store","childInfo","remove","copy","sourceCache","Object","keys","forEach","hasOwn","createChildrenCache","INFO_KEY","Symbol","getTargetInfo","setTargetInfo","info","removeTargetInfo","TargetInfo","checker","data","deep","names","createPathSequence","getChild","storeChildFrom","child","createChildWithNames","init","lastName","createChild","clone","mergeConfigs","console","error","createTargetInfo","getTypeChecker","getTypeCheckerData","require$$0","TARGET_KEY","isSymbol","isOfWrappableType","type","Boolean","isWrapped","isWrappable","unwrap","setWrapConfigTo","getTargetProperty","wrapFn","isFunction","property","isWrappableProperty","getPropertyFactory","nextNames","getProperty","setNonTargetProperty","setProperty","setTargetProperty","updateTargetInfo","setPropertyFactory","Error","getTypeCheckedChild","getTargetArguments","argumentsList","length","index","applyFunctionFactory","thisArg","arguments","result","apply","returnValue","constructFactory","Target","deletePropertyFactory","deleteProperty","createInfoFromOptions","generateHandlers","create","config","construct","createWrapFactory","proxyConfig","wrapInternal","assignInfoAndWrap","handlers","withProxy","wrap","options","deepInitializer","wrapDeep","findWrapped","list","find","merge","sources","wrapped","assign"],"mappings":"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"}