@caron/reactive
Advanced tools
| declare function observable<T extends object>(target: T): T; | ||
| type PropertyKey = string | number | symbol; | ||
| type Reaction = ((...args: any[]) => any) & { | ||
| _reactionsSet?: Set<ReactionsMap>; | ||
| _name?: string; | ||
| }; | ||
| type ReactionsMap = Map<PropertyKey, Set<Reaction>>; | ||
| declare const autorun: (tracker: Reaction, name: "AutoRun") => () => void; | ||
| export { autorun, observable }; |
| declare function observable<T extends object>(target: T): T; | ||
| type PropertyKey = string | number | symbol; | ||
| type Reaction = ((...args: any[]) => any) & { | ||
| _reactionsSet?: Set<ReactionsMap>; | ||
| _name?: string; | ||
| }; | ||
| type ReactionsMap = Map<PropertyKey, Set<Reaction>>; | ||
| declare const autorun: (tracker: Reaction, name: "AutoRun") => () => void; | ||
| export { autorun, observable }; |
| (function (global, factory) { | ||
| typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | ||
| typeof define === 'function' && define.amd ? define('caron.reactive', ['exports'], factory) : | ||
| (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.Caron = global.Caron || {}, global.Caron.Reactive = {}))); | ||
| })(this, (function (exports) { 'use strict'; | ||
| (function() { | ||
| const env = {"NODE_ENV":"development"}; | ||
| try { | ||
| if (process) { | ||
| process.env = Object.assign({}, process.env); | ||
| Object.assign(process.env, env); | ||
| return; | ||
| } | ||
| } catch (e) {} // avoid ReferenceError: process is not defined | ||
| globalThis.process = { env:env }; | ||
| })(); | ||
| var ProxyRaw = new WeakMap(); | ||
| var RawProxy = new WeakMap(); | ||
| var RawShallowProxy = new WeakMap(); | ||
| var ObModelSymbol = Symbol("ObModelSymbol"); | ||
| var RawNode = new WeakMap(); | ||
| var RawReactionMap = new WeakMap(); | ||
| var ReactionStack = []; | ||
| var toString = Object.prototype.toString; | ||
| var isSet = function (val) { | ||
| return val && val instanceof Set; | ||
| }; | ||
| var isMap = function (val) { | ||
| return val && val instanceof Map; | ||
| }; | ||
| var isWeakMap = function (val) { | ||
| return val && val instanceof WeakMap; | ||
| }; | ||
| var isWeakSet = function (val) { | ||
| return val && val instanceof WeakSet; | ||
| }; | ||
| var isValid = function (val) { return val !== null && val !== undefined; }; | ||
| var isArr = Array.isArray; | ||
| var isFn = function (val) { | ||
| return typeof val === "function"; | ||
| }; | ||
| var isPlainObject = function (val) { | ||
| return toString.call(val) === "[object Object]"; | ||
| }; | ||
| var isNormalType = function (target) { | ||
| return isPlainObject(target) || isArr(target); | ||
| }; | ||
| var isCollectionType = function (target) { | ||
| return (isSet(target) || isMap(target) || isWeakMap(target) || isWeakSet(target)); | ||
| }; | ||
| var RAW_TYPE = Symbol("RAW_TYPE"); | ||
| var OBSERVABLE_TYPE = Symbol("OBSERVABLE_TYPE"); | ||
| var isObservable = function (target) { | ||
| return ProxyRaw.get(target) || !!(target === null || target === void 0 ? void 0 : target[ObModelSymbol]); | ||
| }; | ||
| var isSupportObservable = function (target) { | ||
| if (!isValid(target)) | ||
| return false; | ||
| if (isArr(target)) | ||
| return true; | ||
| if (isPlainObject(target)) { | ||
| // 如果已经是observable对象,直接返回 | ||
| if (target[RAW_TYPE]) { | ||
| return false; | ||
| } | ||
| // | ||
| if (target[OBSERVABLE_TYPE]) { | ||
| return true; | ||
| } | ||
| if (isFn(target["toJSON"]) || isFn(target["toJS"])) { | ||
| return false; | ||
| } | ||
| return true; | ||
| } | ||
| if (isCollectionType(target)) | ||
| return true; | ||
| return false; | ||
| }; | ||
| var getRaw = function (target) { | ||
| if (target === null || target === void 0 ? void 0 : target[ObModelSymbol]) | ||
| return target[ObModelSymbol]; | ||
| return ProxyRaw.get(target) || target; | ||
| }; | ||
| var ITERATION_KEY = Symbol("iteration key"); | ||
| var bindTargetKeyWithCurrentReaction = function (operation) { | ||
| var target = operation.target, key = operation.key, type = operation.type; | ||
| if (type === "iterate") { | ||
| key = ITERATION_KEY; | ||
| } | ||
| var reactionLen = ReactionStack.length; | ||
| if (reactionLen === 0) | ||
| return; | ||
| var current = ReactionStack[reactionLen - 1]; | ||
| if (current) { | ||
| addReactionsMapToReaction(current, addRawReactionsMap(target, key, current)); | ||
| } | ||
| }; | ||
| var runReactionsFromTargetKey = function (operation) { | ||
| var key = operation.key, type = operation.type, target = operation.target; | ||
| runReactions(target, key); | ||
| // 影响到了数组的长度或者对象的key | ||
| if (type === "add" || type === "delete" || type === "clear") { | ||
| var newKey = Array.isArray(target) ? "length" : ITERATION_KEY; | ||
| runReactions(target, newKey); | ||
| } | ||
| }; | ||
| var runReactions = function (target, key) { | ||
| var reactions = getReactionsFromTargetKey(target, key); | ||
| for (var i = 0, len = reactions.length; i < len; i++) { | ||
| var reaction = reactions[i]; | ||
| reaction(); | ||
| } | ||
| }; | ||
| var getReactionsFromTargetKey = function (target, key) { | ||
| var reactionsMap = RawReactionMap.get(target); | ||
| var reactions = []; | ||
| if (reactionsMap) { | ||
| var map = reactionsMap.get(key); | ||
| map.forEach(function (reaction) { | ||
| if (reactions.indexOf(reaction) === -1) { | ||
| reactions.push(reaction); | ||
| } | ||
| }); | ||
| } | ||
| return reactions; | ||
| }; | ||
| var addReactionsMapToReaction = function (reaction, reactionsMap) { | ||
| var bindSet = reaction._reactionsSet; | ||
| if (bindSet) { | ||
| bindSet.add(reactionsMap); | ||
| } | ||
| else { | ||
| reaction._reactionsSet = new Set([reactionsMap]); | ||
| } | ||
| return bindSet; | ||
| }; | ||
| // 将当前的reaction添加到reactionsMap中 | ||
| var addRawReactionsMap = function (target, key, reaction) { | ||
| var reactionsMap = RawReactionMap.get(target); | ||
| if (reactionsMap) { | ||
| var reactions = reactionsMap.get(key); | ||
| if (reactions) { | ||
| reactions.add(reaction); | ||
| } | ||
| else { | ||
| reactionsMap.set(key, new Set([reaction])); | ||
| } | ||
| return reactionsMap; | ||
| } | ||
| else { | ||
| var reactionsMap_1 = new Map([[key, new Set([reaction])]]); | ||
| RawReactionMap.set(target, reactionsMap_1); | ||
| return reactionsMap_1; | ||
| } | ||
| }; | ||
| // 重新绑定reaction | ||
| var releaseBindingReactions = function (reaction) { | ||
| var _a; | ||
| (_a = reaction._reactionsSet) === null || _a === void 0 ? void 0 : _a.forEach(function (reactionsMap) { | ||
| reactionsMap.forEach(function (reactions) { | ||
| reactions.delete(reaction); | ||
| }); | ||
| }); | ||
| delete reaction._reactionsSet; | ||
| }; | ||
| var disposeBindingReactions = function (reaction) { | ||
| releaseBindingReactions(reaction); | ||
| }; | ||
| var hasOwnProperty = Object.prototype.hasOwnProperty; | ||
| var baseHandlers = { | ||
| get: function (target, key, reciver) { | ||
| if (!key) | ||
| return; | ||
| var result = target[key]; | ||
| if (typeof key === "symbol" && wellKnownSymbols.has(key)) | ||
| return result; | ||
| // 将当前的target和key绑定到当前的reaction中 | ||
| bindTargetKeyWithCurrentReaction({ | ||
| target: target, | ||
| key: key, | ||
| reciver: reciver, | ||
| type: "get", | ||
| }); | ||
| var observableResult = RawProxy.get(result); | ||
| if (observableResult) { | ||
| return observableResult; | ||
| } | ||
| if (!isObservable(result) && isSupportObservable(result)) { | ||
| var descriptor = Object.getOwnPropertyDescriptor(target, key); | ||
| if (!descriptor || | ||
| !(descriptor.value === false && descriptor.configurable === false)) { | ||
| return createObservable(target, key, result); | ||
| } | ||
| } | ||
| return result; | ||
| }, | ||
| has: function (target, key) { | ||
| var result = Reflect.has(target, key); | ||
| bindTargetKeyWithCurrentReaction({ | ||
| target: target, | ||
| key: key, | ||
| type: "has", | ||
| }); | ||
| return result; | ||
| }, | ||
| ownKeys: function (target) { | ||
| var result = Reflect.ownKeys(target); | ||
| bindTargetKeyWithCurrentReaction({ | ||
| target: target, | ||
| type: "iterate", | ||
| }); | ||
| return result; | ||
| }, | ||
| set: function (target, key, value, reciver) { | ||
| var hadKey = hasOwnProperty.call(target, key); | ||
| var newValue = createObservable(target, key, value); | ||
| var oldValue = target[key]; | ||
| target[key] = newValue; | ||
| if (!hadKey) { | ||
| runReactionsFromTargetKey({ | ||
| target: target, | ||
| key: key, | ||
| value: newValue, | ||
| oldValue: oldValue, | ||
| reciver: reciver, | ||
| type: "add", | ||
| }); | ||
| } | ||
| else if (value !== oldValue) { | ||
| runReactionsFromTargetKey({ | ||
| target: target, | ||
| key: key, | ||
| value: newValue, | ||
| oldValue: oldValue, | ||
| reciver: reciver, | ||
| type: "set", | ||
| }); | ||
| } | ||
| return true; | ||
| }, | ||
| deleteProperty: function (target, key) { | ||
| var oldValue = target[key]; | ||
| delete target[key]; | ||
| runReactionsFromTargetKey({ | ||
| target: target, | ||
| key: key, | ||
| oldValue: oldValue, | ||
| type: "delete", | ||
| }); | ||
| return true; | ||
| }, | ||
| }; | ||
| // 对于map、set、weakmap、weakset的处理来说,需要对其进行特殊的处理 | ||
| var collectionHandlers = { | ||
| // 这些类型都是通过内部的函数来进行操作的,所以需要对这些函数进行拦截 | ||
| get: function (target, key, reciver) { | ||
| target = hasOwnProperty.call(instrumentations, key) | ||
| ? instrumentations | ||
| : target; | ||
| return Reflect.get(target, key, reciver); | ||
| }, | ||
| }; | ||
| var instrumentations = { | ||
| has: function (key) { | ||
| var target = ProxyRaw.get(this); | ||
| bindTargetKeyWithCurrentReaction({ | ||
| target: target, | ||
| key: key, | ||
| type: "has", | ||
| }); | ||
| return target.has(key); | ||
| }, | ||
| }; | ||
| var wellKnownSymbols = new Set(Object.getOwnPropertyNames(Symbol).reduce(function (act, key) { | ||
| if (key === "arguments") | ||
| return act; | ||
| if (key === "caller") | ||
| return act; | ||
| var value = Symbol[key]; | ||
| if (typeof value === "symbol") | ||
| act.push(value); | ||
| return act; | ||
| }, [])); | ||
| var buildDataTree = function (target, key, value) { | ||
| var raw = getRaw(value); | ||
| var currentNode = getDataNode(raw); | ||
| if (currentNode) | ||
| return currentNode; | ||
| setDataNode(raw, new DataNode(target, key, value)); | ||
| }; | ||
| var DataNode = /** @class */ (function () { | ||
| function DataNode(target, key, value) { | ||
| this.target = target; | ||
| this.key = key; | ||
| this.value = value; | ||
| } | ||
| Object.defineProperty(DataNode.prototype, "path", { | ||
| get: function () { | ||
| if (!this.parent) | ||
| return this.key ? [this.key] : []; | ||
| return this.parent.path.concat(this.key); | ||
| }, | ||
| enumerable: false, | ||
| configurable: true | ||
| }); | ||
| Object.defineProperty(DataNode.prototype, "targetRaw", { | ||
| get: function () { | ||
| return getRaw(this.target); | ||
| }, | ||
| enumerable: false, | ||
| configurable: true | ||
| }); | ||
| Object.defineProperty(DataNode.prototype, "parent", { | ||
| get: function () { | ||
| if (!this.target) | ||
| return; | ||
| return getDataNode(this.targetRaw); | ||
| }, | ||
| enumerable: false, | ||
| configurable: true | ||
| }); | ||
| return DataNode; | ||
| }()); | ||
| var setDataNode = function (raw, node) { | ||
| if (raw === null || raw === void 0 ? void 0 : raw[ObModelSymbol]) { | ||
| raw[ObModelSymbol] = node; | ||
| return; | ||
| } | ||
| RawNode.set(raw, node); | ||
| }; | ||
| var getDataNode = function (raw) { | ||
| if (raw === null || raw === void 0 ? void 0 : raw[ObModelSymbol]) { | ||
| return raw[ObModelSymbol]; | ||
| } | ||
| return RawNode.get(raw); | ||
| }; | ||
| var createObservable = function (target, key, value, shallow) { | ||
| // 非object类型直接返回 | ||
| if (typeof value !== "object") | ||
| return value; | ||
| if (!isSupportObservable(value)) | ||
| return value; | ||
| if (target) { | ||
| var parentRaw = ProxyRaw.get(target) || target; | ||
| var isShallowParent = RawShallowProxy.get(parentRaw); | ||
| if (isShallowParent) | ||
| return value; | ||
| } | ||
| buildDataTree(target, key, value); | ||
| if (shallow) | ||
| return createShallowProxy(value); | ||
| if (isNormalType(value)) | ||
| return createNormalProxy(value); | ||
| if (isCollectionType(value)) | ||
| return createCollectionProxy(value); | ||
| return value; | ||
| }; | ||
| var createShallowProxy = function (target) { | ||
| if (isNormalType(target)) | ||
| return createNormalProxy(target, true); | ||
| if (isCollectionType(target)) | ||
| return createCollectionProxy(target, true); | ||
| // never reach | ||
| return target; | ||
| }; | ||
| var createNormalProxy = function (target, shallow) { | ||
| var proxy = new Proxy(target, baseHandlers); | ||
| ProxyRaw.set(proxy, target); | ||
| if (shallow) { | ||
| RawShallowProxy.set(target, proxy); | ||
| } | ||
| else { | ||
| RawProxy.set(target, proxy); | ||
| } | ||
| return proxy; | ||
| }; | ||
| var createCollectionProxy = function (target, shallow) { | ||
| var proxy = new Proxy(target, collectionHandlers); | ||
| ProxyRaw.set(proxy, target); | ||
| if (shallow) { | ||
| RawShallowProxy.set(target, proxy); | ||
| } | ||
| else { | ||
| RawProxy.set(target, proxy); | ||
| } | ||
| return proxy; | ||
| }; | ||
| function observable(target) { | ||
| return createObservable(null, null, target); | ||
| } | ||
| var autorun = function (tracker, name) { | ||
| var reaction = function () { | ||
| if (!isFn(tracker)) | ||
| return; | ||
| if (ReactionStack.indexOf(reaction) === -1) { | ||
| releaseBindingReactions(reaction); | ||
| try { | ||
| // 将当前的reaction添加到栈中, 用于后续的依赖收集 | ||
| ReactionStack.push(reaction); | ||
| tracker(); | ||
| } | ||
| finally { | ||
| ReactionStack.pop(); | ||
| } | ||
| } | ||
| }; | ||
| reaction._name = name; | ||
| reaction(); | ||
| return function () { | ||
| disposeBindingReactions(reaction); | ||
| }; | ||
| }; | ||
| exports.autorun = autorun; | ||
| exports.observable = observable; | ||
| })); | ||
| //# sourceMappingURL=caron.reactive.umd.development.js.map |
| {"version":3,"file":"caron.reactive.umd.development.js","sources":["../src/enviroment.ts","../src/checker.ts","../src/externals.ts","../src/reaction.ts","../src/handlers.ts","../src/tree.ts","../src/internals.ts","../src/observable.ts","../src/autorun.ts"],"sourcesContent":["import { DataNode } from \"./tree\";\r\nimport { Reaction, ReactionsMap } from \"./types\";\r\n\r\nexport const ProxyRaw = new WeakMap();\r\nexport const RawProxy = new WeakMap();\r\nexport const RawShallowProxy = new WeakMap();\r\nexport const ObModelSymbol = Symbol(\"ObModelSymbol\");\r\nexport const RawNode = new WeakMap<object, DataNode>();\r\nexport const RawReactionMap = new WeakMap<object, ReactionsMap>();\r\n\r\nexport const ReactionStack: Reaction[] = [];\r\n","const toString = Object.prototype.toString;\r\n\r\nexport const isSet = (val: unknown): val is Set<any> =>\r\n val && val instanceof Set;\r\nexport const isMap = (val: unknown): val is Map<any, any> =>\r\n val && val instanceof Map;\r\nexport const isWeakMap = (val: unknown): val is WeakMap<any, any> =>\r\n val && val instanceof WeakMap;\r\nexport const isWeakSet = (val: unknown): val is WeakSet<any> =>\r\n val && val instanceof WeakSet;\r\nexport const isValid = (val: unknown) => val !== null && val !== undefined;\r\nexport const isArr = Array.isArray;\r\nexport const isFn = (val: unknown): val is () => any =>\r\n typeof val === \"function\";\r\n\r\nexport const isPlainObject = (val: unknown) =>\r\n toString.call(val) === \"[object Object]\";\r\n\r\nexport const isNormalType = (target: any) => {\r\n return isPlainObject(target) || isArr(target);\r\n};\r\n\r\nexport const isCollectionType = (target: any) => {\r\n return (\r\n isSet(target) || isMap(target) || isWeakMap(target) || isWeakSet(target)\r\n );\r\n};\r\n","import {\r\n isArr,\r\n isCollectionType,\r\n isFn,\r\n isPlainObject,\r\n isValid,\r\n} from \"./checker\";\r\nimport { ObModelSymbol, ProxyRaw } from \"./enviroment\";\r\n\r\nconst RAW_TYPE = Symbol(\"RAW_TYPE\");\r\nconst OBSERVABLE_TYPE = Symbol(\"OBSERVABLE_TYPE\");\r\n\r\nexport const isObservable = (target: any) => {\r\n return ProxyRaw.get(target) || !!target?.[ObModelSymbol];\r\n};\r\n\r\nexport const isSupportObservable = (target: any) => {\r\n if (!isValid(target)) return false;\r\n if (isArr(target)) return true;\r\n if (isPlainObject(target)) {\r\n // 如果已经是observable对象,直接返回\r\n if (target[RAW_TYPE]) {\r\n return false;\r\n }\r\n\r\n //\r\n if (target[OBSERVABLE_TYPE]) {\r\n return true;\r\n }\r\n\r\n if (isFn(target[\"toJSON\"]) || isFn(target[\"toJS\"])) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n if (isCollectionType(target)) return true;\r\n\r\n return false;\r\n};\r\n\r\nexport const getRaw = <T>(target: T): T => {\r\n if (target?.[ObModelSymbol]) return target[ObModelSymbol];\r\n return ProxyRaw.get(target as any) || target;\r\n};\r\n","import { RawReactionMap, ReactionStack } from \"./enviroment\";\r\nimport { IOperation, PropertyKey, Reaction, ReactionsMap } from \"./types\";\r\n\r\nconst ITERATION_KEY = Symbol(\"iteration key\");\r\n\r\nexport const bindTargetKeyWithCurrentReaction = (operation: IOperation) => {\r\n let { target, key, type } = operation;\r\n if (type === \"iterate\") {\r\n key = ITERATION_KEY;\r\n }\r\n const reactionLen = ReactionStack.length;\r\n if (reactionLen === 0) return;\r\n const current = ReactionStack[reactionLen - 1];\r\n\r\n if (current) {\r\n addReactionsMapToReaction(\r\n current,\r\n addRawReactionsMap(target, key, current)\r\n );\r\n }\r\n};\r\n\r\nexport const runReactionsFromTargetKey = (operation: IOperation) => {\r\n let { key, type, target } = operation;\r\n runReactions(target, key);\r\n\r\n // 影响到了数组的长度或者对象的key\r\n if (type === \"add\" || type === \"delete\" || type === \"clear\") {\r\n const newKey = Array.isArray(target) ? \"length\" : ITERATION_KEY;\r\n runReactions(target, newKey);\r\n }\r\n};\r\n\r\nconst runReactions = (target: any, key: PropertyKey) => {\r\n const reactions = getReactionsFromTargetKey(target, key);\r\n for (let i = 0, len = reactions.length; i < len; i++) {\r\n const reaction = reactions[i];\r\n reaction();\r\n }\r\n};\r\n\r\nconst getReactionsFromTargetKey = (target: any, key: PropertyKey) => {\r\n const reactionsMap = RawReactionMap.get(target);\r\n const reactions = [];\r\n if (reactionsMap) {\r\n const map = reactionsMap.get(key);\r\n map.forEach((reaction) => {\r\n if (reactions.indexOf(reaction) === -1) {\r\n reactions.push(reaction);\r\n }\r\n });\r\n }\r\n return reactions;\r\n};\r\n\r\nconst addReactionsMapToReaction = (\r\n reaction: Reaction,\r\n reactionsMap: ReactionsMap\r\n) => {\r\n const bindSet = reaction._reactionsSet;\r\n if (bindSet) {\r\n bindSet.add(reactionsMap);\r\n } else {\r\n reaction._reactionsSet = new Set([reactionsMap]);\r\n }\r\n return bindSet;\r\n};\r\n\r\n// 将当前的reaction添加到reactionsMap中\r\nconst addRawReactionsMap = (\r\n target: any,\r\n key: PropertyKey,\r\n reaction: Reaction\r\n) => {\r\n const reactionsMap = RawReactionMap.get(target);\r\n if (reactionsMap) {\r\n const reactions = reactionsMap.get(key);\r\n if (reactions) {\r\n reactions.add(reaction);\r\n } else {\r\n reactionsMap.set(key, new Set([reaction]));\r\n }\r\n return reactionsMap;\r\n } else {\r\n const reactionsMap: ReactionsMap = new Map([[key, new Set([reaction])]]);\r\n RawReactionMap.set(target, reactionsMap);\r\n return reactionsMap;\r\n }\r\n};\r\n\r\n// 重新绑定reaction\r\nexport const releaseBindingReactions = (reaction: Reaction) => {\r\n reaction._reactionsSet?.forEach((reactionsMap) => {\r\n reactionsMap.forEach((reactions) => {\r\n reactions.delete(reaction);\r\n });\r\n });\r\n delete reaction._reactionsSet;\r\n};\r\n\r\nexport const disposeBindingReactions = (reaction: Reaction) => {\r\n releaseBindingReactions(reaction);\r\n};\r\n","import { ProxyRaw, RawProxy } from \"./enviroment\";\r\nimport { isObservable, isSupportObservable } from \"./externals\";\r\nimport { createObservable } from \"./internals\";\r\nimport {\r\n bindTargetKeyWithCurrentReaction,\r\n runReactionsFromTargetKey,\r\n} from \"./reaction\";\r\n\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\nexport const baseHandlers: ProxyHandler<any> = {\r\n get(target, key, reciver) {\r\n if (!key) return;\r\n const result = target[key];\r\n if (typeof key === \"symbol\" && wellKnownSymbols.has(key)) return result;\r\n // 将当前的target和key绑定到当前的reaction中\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n key,\r\n reciver,\r\n type: \"get\",\r\n });\r\n const observableResult = RawProxy.get(result);\r\n if (observableResult) {\r\n return observableResult;\r\n }\r\n if (!isObservable(result) && isSupportObservable(result)) {\r\n const descriptor = Object.getOwnPropertyDescriptor(target, key);\r\n if (\r\n !descriptor ||\r\n !(descriptor.value === false && descriptor.configurable === false)\r\n ) {\r\n return createObservable(target, key, result);\r\n }\r\n }\r\n return result;\r\n },\r\n has(target, key) {\r\n const result = Reflect.has(target, key);\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n key,\r\n type: \"has\",\r\n });\r\n return result;\r\n },\r\n ownKeys(target) {\r\n const result = Reflect.ownKeys(target);\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n type: \"iterate\",\r\n });\r\n return result;\r\n },\r\n set(target, key, value, reciver) {\r\n const hadKey = hasOwnProperty.call(target, key);\r\n const newValue = createObservable(target, key, value);\r\n const oldValue = target[key];\r\n target[key] = newValue;\r\n if (!hadKey) {\r\n runReactionsFromTargetKey({\r\n target,\r\n key,\r\n value: newValue,\r\n oldValue,\r\n reciver,\r\n type: \"add\",\r\n });\r\n } else if (value !== oldValue) {\r\n runReactionsFromTargetKey({\r\n target,\r\n key,\r\n value: newValue,\r\n oldValue,\r\n reciver,\r\n type: \"set\",\r\n });\r\n }\r\n return true;\r\n },\r\n deleteProperty(target, key) {\r\n const oldValue = target[key];\r\n delete target[key];\r\n runReactionsFromTargetKey({\r\n target,\r\n key,\r\n oldValue,\r\n type: \"delete\",\r\n });\r\n return true;\r\n },\r\n};\r\n\r\n// 对于map、set、weakmap、weakset的处理来说,需要对其进行特殊的处理\r\nexport const collectionHandlers = {\r\n // 这些类型都是通过内部的函数来进行操作的,所以需要对这些函数进行拦截\r\n get(target: any, key: PropertyKey, reciver: any) {\r\n target = hasOwnProperty.call(instrumentations, key)\r\n ? instrumentations\r\n : target;\r\n return Reflect.get(target, key, reciver);\r\n },\r\n};\r\n\r\nconst instrumentations = {\r\n has(key: PropertyKey) {\r\n const target = ProxyRaw.get(this);\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n key,\r\n type: \"has\",\r\n });\r\n return target.has(key);\r\n },\r\n};\r\n\r\nconst wellKnownSymbols = new Set(\r\n Object.getOwnPropertyNames(Symbol).reduce((act: symbol[], key) => {\r\n if (key === \"arguments\") return act;\r\n if (key === \"caller\") return act;\r\n const value = (Symbol as any)[key];\r\n if (typeof value === \"symbol\") act.push(value);\r\n return act;\r\n }, [])\r\n);\r\n","import { ObModelSymbol, RawNode } from \"./enviroment\";\r\nimport { getRaw } from \"./externals\";\r\nimport { PropertyKey } from \"./types\";\r\n\r\nexport const buildDataTree = (target: any, key: PropertyKey, value: any) => {\r\n const raw = getRaw(value);\r\n const currentNode = getDataNode(raw);\r\n if (currentNode) return currentNode;\r\n setDataNode(raw, new DataNode(target, key, value));\r\n};\r\n\r\nexport class DataNode {\r\n target: any;\r\n key: PropertyKey;\r\n value: any;\r\n\r\n constructor(target: any, key: PropertyKey, value: any) {\r\n this.target = target;\r\n this.key = key;\r\n this.value = value;\r\n }\r\n\r\n get path() {\r\n if (!this.parent) return this.key ? [this.key] : [];\r\n return this.parent.path.concat(this.key);\r\n }\r\n\r\n get targetRaw() {\r\n return getRaw(this.target);\r\n }\r\n\r\n get parent() {\r\n if (!this.target) return;\r\n return getDataNode(this.targetRaw);\r\n }\r\n}\r\n\r\nexport const setDataNode = (raw: any, node: DataNode) => {\r\n if (raw?.[ObModelSymbol]) {\r\n raw[ObModelSymbol] = node;\r\n return;\r\n }\r\n RawNode.set(raw, node);\r\n};\r\n\r\nexport const getDataNode = (raw: any) => {\r\n if (raw?.[ObModelSymbol]) {\r\n return raw[ObModelSymbol];\r\n }\r\n return RawNode.get(raw);\r\n};\r\n","import { ProxyRaw, RawProxy, RawShallowProxy } from \"./enviroment\";\r\nimport { isSupportObservable } from \"./externals\";\r\nimport { baseHandlers, collectionHandlers } from \"./handlers\";\r\nimport { buildDataTree } from \"./tree\";\r\nimport { PropertyKey } from \"./types\";\r\nimport { isCollectionType, isNormalType } from \"./checker\";\r\n\r\nexport const createObservable = (\r\n target?: any,\r\n key?: PropertyKey,\r\n value?: any,\r\n shallow?: boolean\r\n) => {\r\n // 非object类型直接返回\r\n if (typeof value !== \"object\") return value;\r\n\r\n if (!isSupportObservable(value)) return value;\r\n\r\n if (target) {\r\n const parentRaw = ProxyRaw.get(target) || target;\r\n const isShallowParent = RawShallowProxy.get(parentRaw);\r\n if (isShallowParent) return value;\r\n }\r\n\r\n buildDataTree(target, key, value);\r\n if (shallow) return createShallowProxy(value);\r\n if (isNormalType(value)) return createNormalProxy(value);\r\n if (isCollectionType(value)) return createCollectionProxy(value);\r\n return value;\r\n};\r\n\r\nconst createShallowProxy = (target: any) => {\r\n if (isNormalType(target)) return createNormalProxy(target, true);\r\n if (isCollectionType(target)) return createCollectionProxy(target, true);\r\n // never reach\r\n return target;\r\n};\r\n\r\nconst createNormalProxy = (target: any, shallow?: boolean) => {\r\n const proxy = new Proxy(target, baseHandlers);\r\n ProxyRaw.set(proxy, target);\r\n if (shallow) {\r\n RawShallowProxy.set(target, proxy);\r\n } else {\r\n RawProxy.set(target, proxy);\r\n }\r\n return proxy;\r\n};\r\n\r\nconst createCollectionProxy = (target: any, shallow?: boolean) => {\r\n const proxy = new Proxy(target, collectionHandlers);\r\n ProxyRaw.set(proxy, target);\r\n if (shallow) {\r\n RawShallowProxy.set(target, proxy);\r\n } else {\r\n RawProxy.set(target, proxy);\r\n }\r\n return proxy;\r\n};\r\n","import { createObservable } from \"./internals\";\r\n\r\nexport function observable<T extends object>(target: T): T {\r\n return createObservable(null, null, target);\r\n}\r\n","import { isFn } from \"./checker\";\r\nimport { ReactionStack } from \"./enviroment\";\r\nimport { disposeBindingReactions, releaseBindingReactions } from \"./reaction\";\r\nimport { Reaction } from \"./types\";\r\n\r\nexport const autorun = (tracker: Reaction, name: \"AutoRun\") => {\r\n const reaction: Reaction = () => {\r\n if (!isFn(tracker)) return;\r\n if (ReactionStack.indexOf(reaction) === -1) {\r\n releaseBindingReactions(reaction);\r\n try {\r\n // 将当前的reaction添加到栈中, 用于后续的依赖收集\r\n ReactionStack.push(reaction);\r\n tracker();\r\n } finally {\r\n ReactionStack.pop();\r\n }\r\n }\r\n };\r\n reaction._name = name;\r\n reaction();\r\n return () => {\r\n disposeBindingReactions(reaction);\r\n };\r\n};\r\n"],"names":[],"mappings":"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"} |
| !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define("caron.reactive",["exports"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).Caron=e.Caron||{},e.Caron.Reactive={}))}(this,(function(e){"use strict";!function(){const e={NODE_ENV:"development"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}();var t=new WeakMap,n=new WeakMap,r=new WeakMap,o=Symbol("ObModelSymbol"),a=new WeakMap,i=new WeakMap,u=[],c=Object.prototype.toString,f=Array.isArray,s=function(e){return"function"==typeof e},l=function(e){return"[object Object]"===c.call(e)},p=function(e){return l(e)||f(e)},y=function(e){return(t=e)&&t instanceof Set||function(e){return e&&e instanceof Map}(e)||function(e){return e&&e instanceof WeakMap}(e)||function(e){return e&&e instanceof WeakSet}(e);var t},v=Symbol("RAW_TYPE"),g=Symbol("OBSERVABLE_TYPE"),d=function(e){return null!=e&&(!!f(e)||(l(e)?!e[v]&&(!!e[g]||!s(e.toJSON)&&!s(e.toJS)):!!y(e)))},h=function(e){return(null==e?void 0:e[o])?e[o]:t.get(e)||e},b=Symbol("iteration key"),S=function(e){var t=e.target,n=e.key;"iterate"===e.type&&(n=b);var r=u.length;if(0!==r){var o=u[r-1];o&&m(o,j(t,n,o))}},k=function(e){var t=e.key,n=e.type,r=e.target;if(w(r,t),"add"===n||"delete"===n||"clear"===n){var o=Array.isArray(r)?"length":b;w(r,o)}},w=function(e,t){for(var n=O(e,t),r=0,o=n.length;r<o;r++){(0,n[r])()}},O=function(e,t){var n=i.get(e),r=[];n&&n.get(t).forEach((function(e){-1===r.indexOf(e)&&r.push(e)}));return r},m=function(e,t){var n=e._reactionsSet;return n?n.add(t):e._reactionsSet=new Set([t]),n},j=function(e,t,n){var r=i.get(e);if(r){var o=r.get(t);return o?o.add(n):r.set(t,new Set([n])),r}var a=new Map([[t,new Set([n])]]);return i.set(e,a),a},P=function(e){var t;null===(t=e._reactionsSet)||void 0===t||t.forEach((function(t){t.forEach((function(t){t.delete(e)}))})),delete e._reactionsSet},E=Object.prototype.hasOwnProperty,M={get:function(e,r,a){if(r){var i=e[r];if("symbol"==typeof r&&_.has(r))return i;S({target:e,key:r,reciver:a,type:"get"});var u=n.get(i);if(u)return u;if(!function(e){return t.get(e)||!!(null==e?void 0:e[o])}(i)&&d(i)){var c=Object.getOwnPropertyDescriptor(e,r);if(!c||!1!==c.value||!1!==c.configurable)return V(e,r,i)}return i}},has:function(e,t){var n=Reflect.has(e,t);return S({target:e,key:t,type:"has"}),n},ownKeys:function(e){var t=Reflect.ownKeys(e);return S({target:e,type:"iterate"}),t},set:function(e,t,n,r){var o=E.call(e,t),a=V(e,t,n),i=e[t];return e[t]=a,o?n!==i&&k({target:e,key:t,value:a,oldValue:i,reciver:r,type:"set"}):k({target:e,key:t,value:a,oldValue:i,reciver:r,type:"add"}),!0},deleteProperty:function(e,t){var n=e[t];return delete e[t],k({target:e,key:t,oldValue:n,type:"delete"}),!0}},R={get:function(e,t,n){return e=E.call(W,t)?W:e,Reflect.get(e,t,n)}},W={has:function(e){var n=t.get(this);return S({target:n,key:e,type:"has"}),n.has(e)}},_=new Set(Object.getOwnPropertyNames(Symbol).reduce((function(e,t){if("arguments"===t)return e;if("caller"===t)return e;var n=Symbol[t];return"symbol"==typeof n&&e.push(n),e}),[])),x=function(){function e(e,t,n){this.target=e,this.key=t,this.value=n}return Object.defineProperty(e.prototype,"path",{get:function(){return this.parent?this.parent.path.concat(this.key):this.key?[this.key]:[]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"targetRaw",{get:function(){return h(this.target)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parent",{get:function(){if(this.target)return T(this.targetRaw)},enumerable:!1,configurable:!0}),e}(),A=function(e,t){(null==e?void 0:e[o])?e[o]=t:a.set(e,t)},T=function(e){return(null==e?void 0:e[o])?e[o]:a.get(e)},V=function(e,n,o,a){if("object"!=typeof o)return o;if(!d(o))return o;if(e){var i=t.get(e)||e;if(r.get(i))return o}return function(e,t,n){var r=h(n),o=T(r);if(o)return o;A(r,new x(e,t,n))}(e,n,o),a?N(o):p(o)?C(o):y(o)?B(o):o},N=function(e){return p(e)?C(e,!0):y(e)?B(e,!0):e},C=function(e,o){var a=new Proxy(e,M);return t.set(a,e),o?r.set(e,a):n.set(e,a),a},B=function(e,o){var a=new Proxy(e,R);return t.set(a,e),o?r.set(e,a):n.set(e,a),a};e.autorun=function(e,t){var n=function(){if(s(e)&&-1===u.indexOf(n)){P(n);try{u.push(n),e()}finally{u.pop()}}};return n._name=t,n(),function(){!function(e){P(e)}(n)}},e.observable=function(e){return V(null,null,e)}})); | ||
| //# sourceMappingURL=caron.reactive.umd.production.js.map |
| {"version":3,"file":"caron.reactive.umd.production.js","sources":["../src/enviroment.ts","../src/checker.ts","../src/externals.ts","../src/reaction.ts","../src/handlers.ts","../src/tree.ts","../src/internals.ts","../src/autorun.ts","../src/observable.ts"],"sourcesContent":["import { DataNode } from \"./tree\";\r\nimport { Reaction, ReactionsMap } from \"./types\";\r\n\r\nexport const ProxyRaw = new WeakMap();\r\nexport const RawProxy = new WeakMap();\r\nexport const RawShallowProxy = new WeakMap();\r\nexport const ObModelSymbol = Symbol(\"ObModelSymbol\");\r\nexport const RawNode = new WeakMap<object, DataNode>();\r\nexport const RawReactionMap = new WeakMap<object, ReactionsMap>();\r\n\r\nexport const ReactionStack: Reaction[] = [];\r\n","const toString = Object.prototype.toString;\r\n\r\nexport const isSet = (val: unknown): val is Set<any> =>\r\n val && val instanceof Set;\r\nexport const isMap = (val: unknown): val is Map<any, any> =>\r\n val && val instanceof Map;\r\nexport const isWeakMap = (val: unknown): val is WeakMap<any, any> =>\r\n val && val instanceof WeakMap;\r\nexport const isWeakSet = (val: unknown): val is WeakSet<any> =>\r\n val && val instanceof WeakSet;\r\nexport const isValid = (val: unknown) => val !== null && val !== undefined;\r\nexport const isArr = Array.isArray;\r\nexport const isFn = (val: unknown): val is () => any =>\r\n typeof val === \"function\";\r\n\r\nexport const isPlainObject = (val: unknown) =>\r\n toString.call(val) === \"[object Object]\";\r\n\r\nexport const isNormalType = (target: any) => {\r\n return isPlainObject(target) || isArr(target);\r\n};\r\n\r\nexport const isCollectionType = (target: any) => {\r\n return (\r\n isSet(target) || isMap(target) || isWeakMap(target) || isWeakSet(target)\r\n );\r\n};\r\n","import {\r\n isArr,\r\n isCollectionType,\r\n isFn,\r\n isPlainObject,\r\n isValid,\r\n} from \"./checker\";\r\nimport { ObModelSymbol, ProxyRaw } from \"./enviroment\";\r\n\r\nconst RAW_TYPE = Symbol(\"RAW_TYPE\");\r\nconst OBSERVABLE_TYPE = Symbol(\"OBSERVABLE_TYPE\");\r\n\r\nexport const isObservable = (target: any) => {\r\n return ProxyRaw.get(target) || !!target?.[ObModelSymbol];\r\n};\r\n\r\nexport const isSupportObservable = (target: any) => {\r\n if (!isValid(target)) return false;\r\n if (isArr(target)) return true;\r\n if (isPlainObject(target)) {\r\n // 如果已经是observable对象,直接返回\r\n if (target[RAW_TYPE]) {\r\n return false;\r\n }\r\n\r\n //\r\n if (target[OBSERVABLE_TYPE]) {\r\n return true;\r\n }\r\n\r\n if (isFn(target[\"toJSON\"]) || isFn(target[\"toJS\"])) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n if (isCollectionType(target)) return true;\r\n\r\n return false;\r\n};\r\n\r\nexport const getRaw = <T>(target: T): T => {\r\n if (target?.[ObModelSymbol]) return target[ObModelSymbol];\r\n return ProxyRaw.get(target as any) || target;\r\n};\r\n","import { RawReactionMap, ReactionStack } from \"./enviroment\";\r\nimport { IOperation, PropertyKey, Reaction, ReactionsMap } from \"./types\";\r\n\r\nconst ITERATION_KEY = Symbol(\"iteration key\");\r\n\r\nexport const bindTargetKeyWithCurrentReaction = (operation: IOperation) => {\r\n let { target, key, type } = operation;\r\n if (type === \"iterate\") {\r\n key = ITERATION_KEY;\r\n }\r\n const reactionLen = ReactionStack.length;\r\n if (reactionLen === 0) return;\r\n const current = ReactionStack[reactionLen - 1];\r\n\r\n if (current) {\r\n addReactionsMapToReaction(\r\n current,\r\n addRawReactionsMap(target, key, current)\r\n );\r\n }\r\n};\r\n\r\nexport const runReactionsFromTargetKey = (operation: IOperation) => {\r\n let { key, type, target } = operation;\r\n runReactions(target, key);\r\n\r\n // 影响到了数组的长度或者对象的key\r\n if (type === \"add\" || type === \"delete\" || type === \"clear\") {\r\n const newKey = Array.isArray(target) ? \"length\" : ITERATION_KEY;\r\n runReactions(target, newKey);\r\n }\r\n};\r\n\r\nconst runReactions = (target: any, key: PropertyKey) => {\r\n const reactions = getReactionsFromTargetKey(target, key);\r\n for (let i = 0, len = reactions.length; i < len; i++) {\r\n const reaction = reactions[i];\r\n reaction();\r\n }\r\n};\r\n\r\nconst getReactionsFromTargetKey = (target: any, key: PropertyKey) => {\r\n const reactionsMap = RawReactionMap.get(target);\r\n const reactions = [];\r\n if (reactionsMap) {\r\n const map = reactionsMap.get(key);\r\n map.forEach((reaction) => {\r\n if (reactions.indexOf(reaction) === -1) {\r\n reactions.push(reaction);\r\n }\r\n });\r\n }\r\n return reactions;\r\n};\r\n\r\nconst addReactionsMapToReaction = (\r\n reaction: Reaction,\r\n reactionsMap: ReactionsMap\r\n) => {\r\n const bindSet = reaction._reactionsSet;\r\n if (bindSet) {\r\n bindSet.add(reactionsMap);\r\n } else {\r\n reaction._reactionsSet = new Set([reactionsMap]);\r\n }\r\n return bindSet;\r\n};\r\n\r\n// 将当前的reaction添加到reactionsMap中\r\nconst addRawReactionsMap = (\r\n target: any,\r\n key: PropertyKey,\r\n reaction: Reaction\r\n) => {\r\n const reactionsMap = RawReactionMap.get(target);\r\n if (reactionsMap) {\r\n const reactions = reactionsMap.get(key);\r\n if (reactions) {\r\n reactions.add(reaction);\r\n } else {\r\n reactionsMap.set(key, new Set([reaction]));\r\n }\r\n return reactionsMap;\r\n } else {\r\n const reactionsMap: ReactionsMap = new Map([[key, new Set([reaction])]]);\r\n RawReactionMap.set(target, reactionsMap);\r\n return reactionsMap;\r\n }\r\n};\r\n\r\n// 重新绑定reaction\r\nexport const releaseBindingReactions = (reaction: Reaction) => {\r\n reaction._reactionsSet?.forEach((reactionsMap) => {\r\n reactionsMap.forEach((reactions) => {\r\n reactions.delete(reaction);\r\n });\r\n });\r\n delete reaction._reactionsSet;\r\n};\r\n\r\nexport const disposeBindingReactions = (reaction: Reaction) => {\r\n releaseBindingReactions(reaction);\r\n};\r\n","import { ProxyRaw, RawProxy } from \"./enviroment\";\r\nimport { isObservable, isSupportObservable } from \"./externals\";\r\nimport { createObservable } from \"./internals\";\r\nimport {\r\n bindTargetKeyWithCurrentReaction,\r\n runReactionsFromTargetKey,\r\n} from \"./reaction\";\r\n\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\nexport const baseHandlers: ProxyHandler<any> = {\r\n get(target, key, reciver) {\r\n if (!key) return;\r\n const result = target[key];\r\n if (typeof key === \"symbol\" && wellKnownSymbols.has(key)) return result;\r\n // 将当前的target和key绑定到当前的reaction中\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n key,\r\n reciver,\r\n type: \"get\",\r\n });\r\n const observableResult = RawProxy.get(result);\r\n if (observableResult) {\r\n return observableResult;\r\n }\r\n if (!isObservable(result) && isSupportObservable(result)) {\r\n const descriptor = Object.getOwnPropertyDescriptor(target, key);\r\n if (\r\n !descriptor ||\r\n !(descriptor.value === false && descriptor.configurable === false)\r\n ) {\r\n return createObservable(target, key, result);\r\n }\r\n }\r\n return result;\r\n },\r\n has(target, key) {\r\n const result = Reflect.has(target, key);\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n key,\r\n type: \"has\",\r\n });\r\n return result;\r\n },\r\n ownKeys(target) {\r\n const result = Reflect.ownKeys(target);\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n type: \"iterate\",\r\n });\r\n return result;\r\n },\r\n set(target, key, value, reciver) {\r\n const hadKey = hasOwnProperty.call(target, key);\r\n const newValue = createObservable(target, key, value);\r\n const oldValue = target[key];\r\n target[key] = newValue;\r\n if (!hadKey) {\r\n runReactionsFromTargetKey({\r\n target,\r\n key,\r\n value: newValue,\r\n oldValue,\r\n reciver,\r\n type: \"add\",\r\n });\r\n } else if (value !== oldValue) {\r\n runReactionsFromTargetKey({\r\n target,\r\n key,\r\n value: newValue,\r\n oldValue,\r\n reciver,\r\n type: \"set\",\r\n });\r\n }\r\n return true;\r\n },\r\n deleteProperty(target, key) {\r\n const oldValue = target[key];\r\n delete target[key];\r\n runReactionsFromTargetKey({\r\n target,\r\n key,\r\n oldValue,\r\n type: \"delete\",\r\n });\r\n return true;\r\n },\r\n};\r\n\r\n// 对于map、set、weakmap、weakset的处理来说,需要对其进行特殊的处理\r\nexport const collectionHandlers = {\r\n // 这些类型都是通过内部的函数来进行操作的,所以需要对这些函数进行拦截\r\n get(target: any, key: PropertyKey, reciver: any) {\r\n target = hasOwnProperty.call(instrumentations, key)\r\n ? instrumentations\r\n : target;\r\n return Reflect.get(target, key, reciver);\r\n },\r\n};\r\n\r\nconst instrumentations = {\r\n has(key: PropertyKey) {\r\n const target = ProxyRaw.get(this);\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n key,\r\n type: \"has\",\r\n });\r\n return target.has(key);\r\n },\r\n};\r\n\r\nconst wellKnownSymbols = new Set(\r\n Object.getOwnPropertyNames(Symbol).reduce((act: symbol[], key) => {\r\n if (key === \"arguments\") return act;\r\n if (key === \"caller\") return act;\r\n const value = (Symbol as any)[key];\r\n if (typeof value === \"symbol\") act.push(value);\r\n return act;\r\n }, [])\r\n);\r\n","import { ObModelSymbol, RawNode } from \"./enviroment\";\r\nimport { getRaw } from \"./externals\";\r\nimport { PropertyKey } from \"./types\";\r\n\r\nexport const buildDataTree = (target: any, key: PropertyKey, value: any) => {\r\n const raw = getRaw(value);\r\n const currentNode = getDataNode(raw);\r\n if (currentNode) return currentNode;\r\n setDataNode(raw, new DataNode(target, key, value));\r\n};\r\n\r\nexport class DataNode {\r\n target: any;\r\n key: PropertyKey;\r\n value: any;\r\n\r\n constructor(target: any, key: PropertyKey, value: any) {\r\n this.target = target;\r\n this.key = key;\r\n this.value = value;\r\n }\r\n\r\n get path() {\r\n if (!this.parent) return this.key ? [this.key] : [];\r\n return this.parent.path.concat(this.key);\r\n }\r\n\r\n get targetRaw() {\r\n return getRaw(this.target);\r\n }\r\n\r\n get parent() {\r\n if (!this.target) return;\r\n return getDataNode(this.targetRaw);\r\n }\r\n}\r\n\r\nexport const setDataNode = (raw: any, node: DataNode) => {\r\n if (raw?.[ObModelSymbol]) {\r\n raw[ObModelSymbol] = node;\r\n return;\r\n }\r\n RawNode.set(raw, node);\r\n};\r\n\r\nexport const getDataNode = (raw: any) => {\r\n if (raw?.[ObModelSymbol]) {\r\n return raw[ObModelSymbol];\r\n }\r\n return RawNode.get(raw);\r\n};\r\n","import { ProxyRaw, RawProxy, RawShallowProxy } from \"./enviroment\";\r\nimport { isSupportObservable } from \"./externals\";\r\nimport { baseHandlers, collectionHandlers } from \"./handlers\";\r\nimport { buildDataTree } from \"./tree\";\r\nimport { PropertyKey } from \"./types\";\r\nimport { isCollectionType, isNormalType } from \"./checker\";\r\n\r\nexport const createObservable = (\r\n target?: any,\r\n key?: PropertyKey,\r\n value?: any,\r\n shallow?: boolean\r\n) => {\r\n // 非object类型直接返回\r\n if (typeof value !== \"object\") return value;\r\n\r\n if (!isSupportObservable(value)) return value;\r\n\r\n if (target) {\r\n const parentRaw = ProxyRaw.get(target) || target;\r\n const isShallowParent = RawShallowProxy.get(parentRaw);\r\n if (isShallowParent) return value;\r\n }\r\n\r\n buildDataTree(target, key, value);\r\n if (shallow) return createShallowProxy(value);\r\n if (isNormalType(value)) return createNormalProxy(value);\r\n if (isCollectionType(value)) return createCollectionProxy(value);\r\n return value;\r\n};\r\n\r\nconst createShallowProxy = (target: any) => {\r\n if (isNormalType(target)) return createNormalProxy(target, true);\r\n if (isCollectionType(target)) return createCollectionProxy(target, true);\r\n // never reach\r\n return target;\r\n};\r\n\r\nconst createNormalProxy = (target: any, shallow?: boolean) => {\r\n const proxy = new Proxy(target, baseHandlers);\r\n ProxyRaw.set(proxy, target);\r\n if (shallow) {\r\n RawShallowProxy.set(target, proxy);\r\n } else {\r\n RawProxy.set(target, proxy);\r\n }\r\n return proxy;\r\n};\r\n\r\nconst createCollectionProxy = (target: any, shallow?: boolean) => {\r\n const proxy = new Proxy(target, collectionHandlers);\r\n ProxyRaw.set(proxy, target);\r\n if (shallow) {\r\n RawShallowProxy.set(target, proxy);\r\n } else {\r\n RawProxy.set(target, proxy);\r\n }\r\n return proxy;\r\n};\r\n","import { isFn } from \"./checker\";\r\nimport { ReactionStack } from \"./enviroment\";\r\nimport { disposeBindingReactions, releaseBindingReactions } from \"./reaction\";\r\nimport { Reaction } from \"./types\";\r\n\r\nexport const autorun = (tracker: Reaction, name: \"AutoRun\") => {\r\n const reaction: Reaction = () => {\r\n if (!isFn(tracker)) return;\r\n if (ReactionStack.indexOf(reaction) === -1) {\r\n releaseBindingReactions(reaction);\r\n try {\r\n // 将当前的reaction添加到栈中, 用于后续的依赖收集\r\n ReactionStack.push(reaction);\r\n tracker();\r\n } finally {\r\n ReactionStack.pop();\r\n }\r\n }\r\n };\r\n reaction._name = name;\r\n reaction();\r\n return () => {\r\n disposeBindingReactions(reaction);\r\n };\r\n};\r\n","import { createObservable } from \"./internals\";\r\n\r\nexport function observable<T extends object>(target: T): T {\r\n return createObservable(null, null, target);\r\n}\r\n"],"names":["ProxyRaw","WeakMap","RawProxy","RawShallowProxy","ObModelSymbol","Symbol","RawNode","RawReactionMap","ReactionStack","toString","Object","prototype","isArr","Array","isArray","isFn","val","isPlainObject","call","isNormalType","target","isCollectionType","Set","Map","isMap","isWeakMap","WeakSet","isWeakSet","RAW_TYPE","OBSERVABLE_TYPE","isSupportObservable","getRaw","get","ITERATION_KEY","bindTargetKeyWithCurrentReaction","operation","key","reactionLen","length","current","addReactionsMapToReaction","addRawReactionsMap","runReactionsFromTargetKey","type","runReactions","newKey","reactions","getReactionsFromTargetKey","i","len","reaction","reactionsMap","forEach","indexOf","push","bindSet","_reactionsSet","add","set","reactionsMap_1","releaseBindingReactions","_a","delete","hasOwnProperty","baseHandlers","reciver","result","wellKnownSymbols","has","observableResult","isObservable","descriptor","getOwnPropertyDescriptor","value","configurable","createObservable","Reflect","ownKeys","hadKey","newValue","oldValue","deleteProperty","collectionHandlers","instrumentations","this","getOwnPropertyNames","reduce","act","DataNode","defineProperty","parent","path","concat","getDataNode","targetRaw","setDataNode","raw","node","shallow","parentRaw","currentNode","buildDataTree","createShallowProxy","createNormalProxy","createCollectionProxy","proxy","Proxy","tracker","name","pop","_name","disposeBindingReactions"],"mappings":"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"} |
+1
-1
| { | ||
| "name": "@caron/reactive", | ||
| "version": "0.0.1", | ||
| "version": "0.0.2", | ||
| "description": "", | ||
@@ -5,0 +5,0 @@ "main": "lib", |
| declare function observable<T extends object>(target: T): T; | ||
| type PropertyKey = string | number | symbol; | ||
| type Reaction = ((...args: any[]) => any) & { | ||
| _reactionsSet?: Set<ReactionsMap>; | ||
| _name?: string; | ||
| }; | ||
| type ReactionsMap = Map<PropertyKey, Set<Reaction>>; | ||
| declare const autorun: (tracker: Reaction, name: "AutoRun") => () => void; | ||
| export { autorun, observable }; |
| declare function observable<T extends object>(target: T): T; | ||
| type PropertyKey = string | number | symbol; | ||
| type Reaction = ((...args: any[]) => any) & { | ||
| _reactionsSet?: Set<ReactionsMap>; | ||
| _name?: string; | ||
| }; | ||
| type ReactionsMap = Map<PropertyKey, Set<Reaction>>; | ||
| declare const autorun: (tracker: Reaction, name: "AutoRun") => () => void; | ||
| export { autorun, observable }; |
| (function (global, factory) { | ||
| typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | ||
| typeof define === 'function' && define.amd ? define('formly.reactive', ['exports'], factory) : | ||
| (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.Formly = global.Formly || {}, global.Formly.Reactive = {}))); | ||
| })(this, (function (exports) { 'use strict'; | ||
| (function() { | ||
| const env = {"NODE_ENV":"development"}; | ||
| try { | ||
| if (process) { | ||
| process.env = Object.assign({}, process.env); | ||
| Object.assign(process.env, env); | ||
| return; | ||
| } | ||
| } catch (e) {} // avoid ReferenceError: process is not defined | ||
| globalThis.process = { env:env }; | ||
| })(); | ||
| var ProxyRaw = new WeakMap(); | ||
| var RawProxy = new WeakMap(); | ||
| var RawShallowProxy = new WeakMap(); | ||
| var ObModelSymbol = Symbol("ObModelSymbol"); | ||
| var RawNode = new WeakMap(); | ||
| var RawReactionMap = new WeakMap(); | ||
| var ReactionStack = []; | ||
| var toString = Object.prototype.toString; | ||
| var isSet = function (val) { | ||
| return val && val instanceof Set; | ||
| }; | ||
| var isMap = function (val) { | ||
| return val && val instanceof Map; | ||
| }; | ||
| var isWeakMap = function (val) { | ||
| return val && val instanceof WeakMap; | ||
| }; | ||
| var isWeakSet = function (val) { | ||
| return val && val instanceof WeakSet; | ||
| }; | ||
| var isValid = function (val) { return val !== null && val !== undefined; }; | ||
| var isArr = Array.isArray; | ||
| var isFn = function (val) { | ||
| return typeof val === "function"; | ||
| }; | ||
| var isPlainObject = function (val) { | ||
| return toString.call(val) === "[object Object]"; | ||
| }; | ||
| var isNormalType = function (target) { | ||
| return isPlainObject(target) || isArr(target); | ||
| }; | ||
| var isCollectionType = function (target) { | ||
| return (isSet(target) || isMap(target) || isWeakMap(target) || isWeakSet(target)); | ||
| }; | ||
| var RAW_TYPE = Symbol("RAW_TYPE"); | ||
| var OBSERVABLE_TYPE = Symbol("OBSERVABLE_TYPE"); | ||
| var isObservable = function (target) { | ||
| return ProxyRaw.get(target) || !!(target === null || target === void 0 ? void 0 : target[ObModelSymbol]); | ||
| }; | ||
| var isSupportObservable = function (target) { | ||
| if (!isValid(target)) | ||
| return false; | ||
| if (isArr(target)) | ||
| return true; | ||
| if (isPlainObject(target)) { | ||
| // 如果已经是observable对象,直接返回 | ||
| if (target[RAW_TYPE]) { | ||
| return false; | ||
| } | ||
| // | ||
| if (target[OBSERVABLE_TYPE]) { | ||
| return true; | ||
| } | ||
| if (isFn(target["toJSON"]) || isFn(target["toJS"])) { | ||
| return false; | ||
| } | ||
| return true; | ||
| } | ||
| if (isCollectionType(target)) | ||
| return true; | ||
| return false; | ||
| }; | ||
| var getRaw = function (target) { | ||
| if (target === null || target === void 0 ? void 0 : target[ObModelSymbol]) | ||
| return target[ObModelSymbol]; | ||
| return ProxyRaw.get(target) || target; | ||
| }; | ||
| var ITERATION_KEY = Symbol("iteration key"); | ||
| var bindTargetKeyWithCurrentReaction = function (operation) { | ||
| var target = operation.target, key = operation.key, type = operation.type; | ||
| if (type === "iterate") { | ||
| key = ITERATION_KEY; | ||
| } | ||
| var reactionLen = ReactionStack.length; | ||
| if (reactionLen === 0) | ||
| return; | ||
| var current = ReactionStack[reactionLen - 1]; | ||
| if (current) { | ||
| addReactionsMapToReaction(current, addRawReactionsMap(target, key, current)); | ||
| } | ||
| }; | ||
| var runReactionsFromTargetKey = function (operation) { | ||
| var key = operation.key, type = operation.type, target = operation.target; | ||
| runReactions(target, key); | ||
| // 影响到了数组的长度或者对象的key | ||
| if (type === "add" || type === "delete" || type === "clear") { | ||
| var newKey = Array.isArray(target) ? "length" : ITERATION_KEY; | ||
| runReactions(target, newKey); | ||
| } | ||
| }; | ||
| var runReactions = function (target, key) { | ||
| var reactions = getReactionsFromTargetKey(target, key); | ||
| for (var i = 0, len = reactions.length; i < len; i++) { | ||
| var reaction = reactions[i]; | ||
| reaction(); | ||
| } | ||
| }; | ||
| var getReactionsFromTargetKey = function (target, key) { | ||
| var reactionsMap = RawReactionMap.get(target); | ||
| var reactions = []; | ||
| if (reactionsMap) { | ||
| var map = reactionsMap.get(key); | ||
| map.forEach(function (reaction) { | ||
| if (reactions.indexOf(reaction) === -1) { | ||
| reactions.push(reaction); | ||
| } | ||
| }); | ||
| } | ||
| return reactions; | ||
| }; | ||
| var addReactionsMapToReaction = function (reaction, reactionsMap) { | ||
| var bindSet = reaction._reactionsSet; | ||
| if (bindSet) { | ||
| bindSet.add(reactionsMap); | ||
| } | ||
| else { | ||
| reaction._reactionsSet = new Set([reactionsMap]); | ||
| } | ||
| return bindSet; | ||
| }; | ||
| // 将当前的reaction添加到reactionsMap中 | ||
| var addRawReactionsMap = function (target, key, reaction) { | ||
| var reactionsMap = RawReactionMap.get(target); | ||
| if (reactionsMap) { | ||
| var reactions = reactionsMap.get(key); | ||
| if (reactions) { | ||
| reactions.add(reaction); | ||
| } | ||
| else { | ||
| reactionsMap.set(key, new Set([reaction])); | ||
| } | ||
| return reactionsMap; | ||
| } | ||
| else { | ||
| var reactionsMap_1 = new Map([[key, new Set([reaction])]]); | ||
| RawReactionMap.set(target, reactionsMap_1); | ||
| return reactionsMap_1; | ||
| } | ||
| }; | ||
| // 重新绑定reaction | ||
| var releaseBindingReactions = function (reaction) { | ||
| var _a; | ||
| (_a = reaction._reactionsSet) === null || _a === void 0 ? void 0 : _a.forEach(function (reactionsMap) { | ||
| reactionsMap.forEach(function (reactions) { | ||
| reactions.delete(reaction); | ||
| }); | ||
| }); | ||
| delete reaction._reactionsSet; | ||
| }; | ||
| var disposeBindingReactions = function (reaction) { | ||
| releaseBindingReactions(reaction); | ||
| }; | ||
| var hasOwnProperty = Object.prototype.hasOwnProperty; | ||
| var baseHandlers = { | ||
| get: function (target, key, reciver) { | ||
| if (!key) | ||
| return; | ||
| var result = target[key]; | ||
| if (typeof key === "symbol" && wellKnownSymbols.has(key)) | ||
| return result; | ||
| // 将当前的target和key绑定到当前的reaction中 | ||
| bindTargetKeyWithCurrentReaction({ | ||
| target: target, | ||
| key: key, | ||
| reciver: reciver, | ||
| type: "get", | ||
| }); | ||
| var observableResult = RawProxy.get(result); | ||
| if (observableResult) { | ||
| return observableResult; | ||
| } | ||
| if (!isObservable(result) && isSupportObservable(result)) { | ||
| var descriptor = Object.getOwnPropertyDescriptor(target, key); | ||
| if (!descriptor || | ||
| !(descriptor.value === false && descriptor.configurable === false)) { | ||
| return createObservable(target, key, result); | ||
| } | ||
| } | ||
| return result; | ||
| }, | ||
| has: function (target, key) { | ||
| var result = Reflect.has(target, key); | ||
| bindTargetKeyWithCurrentReaction({ | ||
| target: target, | ||
| key: key, | ||
| type: "has", | ||
| }); | ||
| return result; | ||
| }, | ||
| ownKeys: function (target) { | ||
| var result = Reflect.ownKeys(target); | ||
| bindTargetKeyWithCurrentReaction({ | ||
| target: target, | ||
| type: "iterate", | ||
| }); | ||
| return result; | ||
| }, | ||
| set: function (target, key, value, reciver) { | ||
| var hadKey = hasOwnProperty.call(target, key); | ||
| var newValue = createObservable(target, key, value); | ||
| var oldValue = target[key]; | ||
| target[key] = newValue; | ||
| if (!hadKey) { | ||
| runReactionsFromTargetKey({ | ||
| target: target, | ||
| key: key, | ||
| value: newValue, | ||
| oldValue: oldValue, | ||
| reciver: reciver, | ||
| type: "add", | ||
| }); | ||
| } | ||
| else if (value !== oldValue) { | ||
| runReactionsFromTargetKey({ | ||
| target: target, | ||
| key: key, | ||
| value: newValue, | ||
| oldValue: oldValue, | ||
| reciver: reciver, | ||
| type: "set", | ||
| }); | ||
| } | ||
| return true; | ||
| }, | ||
| deleteProperty: function (target, key) { | ||
| var oldValue = target[key]; | ||
| delete target[key]; | ||
| runReactionsFromTargetKey({ | ||
| target: target, | ||
| key: key, | ||
| oldValue: oldValue, | ||
| type: "delete", | ||
| }); | ||
| return true; | ||
| }, | ||
| }; | ||
| // 对于map、set、weakmap、weakset的处理来说,需要对其进行特殊的处理 | ||
| var collectionHandlers = { | ||
| // 这些类型都是通过内部的函数来进行操作的,所以需要对这些函数进行拦截 | ||
| get: function (target, key, reciver) { | ||
| target = hasOwnProperty.call(instrumentations, key) | ||
| ? instrumentations | ||
| : target; | ||
| return Reflect.get(target, key, reciver); | ||
| }, | ||
| }; | ||
| var instrumentations = { | ||
| has: function (key) { | ||
| var target = ProxyRaw.get(this); | ||
| bindTargetKeyWithCurrentReaction({ | ||
| target: target, | ||
| key: key, | ||
| type: "has", | ||
| }); | ||
| return target.has(key); | ||
| }, | ||
| }; | ||
| var wellKnownSymbols = new Set(Object.getOwnPropertyNames(Symbol).reduce(function (act, key) { | ||
| if (key === "arguments") | ||
| return act; | ||
| if (key === "caller") | ||
| return act; | ||
| var value = Symbol[key]; | ||
| if (typeof value === "symbol") | ||
| act.push(value); | ||
| return act; | ||
| }, [])); | ||
| var buildDataTree = function (target, key, value) { | ||
| var raw = getRaw(value); | ||
| var currentNode = getDataNode(raw); | ||
| if (currentNode) | ||
| return currentNode; | ||
| setDataNode(raw, new DataNode(target, key, value)); | ||
| }; | ||
| var DataNode = /** @class */ (function () { | ||
| function DataNode(target, key, value) { | ||
| this.target = target; | ||
| this.key = key; | ||
| this.value = value; | ||
| } | ||
| Object.defineProperty(DataNode.prototype, "path", { | ||
| get: function () { | ||
| if (!this.parent) | ||
| return this.key ? [this.key] : []; | ||
| return this.parent.path.concat(this.key); | ||
| }, | ||
| enumerable: false, | ||
| configurable: true | ||
| }); | ||
| Object.defineProperty(DataNode.prototype, "targetRaw", { | ||
| get: function () { | ||
| return getRaw(this.target); | ||
| }, | ||
| enumerable: false, | ||
| configurable: true | ||
| }); | ||
| Object.defineProperty(DataNode.prototype, "parent", { | ||
| get: function () { | ||
| if (!this.target) | ||
| return; | ||
| return getDataNode(this.targetRaw); | ||
| }, | ||
| enumerable: false, | ||
| configurable: true | ||
| }); | ||
| return DataNode; | ||
| }()); | ||
| var setDataNode = function (raw, node) { | ||
| if (raw === null || raw === void 0 ? void 0 : raw[ObModelSymbol]) { | ||
| raw[ObModelSymbol] = node; | ||
| return; | ||
| } | ||
| RawNode.set(raw, node); | ||
| }; | ||
| var getDataNode = function (raw) { | ||
| if (raw === null || raw === void 0 ? void 0 : raw[ObModelSymbol]) { | ||
| return raw[ObModelSymbol]; | ||
| } | ||
| return RawNode.get(raw); | ||
| }; | ||
| var createObservable = function (target, key, value, shallow) { | ||
| // 非object类型直接返回 | ||
| if (typeof value !== "object") | ||
| return value; | ||
| if (!isSupportObservable(value)) | ||
| return value; | ||
| if (target) { | ||
| var parentRaw = ProxyRaw.get(target) || target; | ||
| var isShallowParent = RawShallowProxy.get(parentRaw); | ||
| if (isShallowParent) | ||
| return value; | ||
| } | ||
| buildDataTree(target, key, value); | ||
| if (shallow) | ||
| return createShallowProxy(value); | ||
| if (isNormalType(value)) | ||
| return createNormalProxy(value); | ||
| if (isCollectionType(value)) | ||
| return createCollectionProxy(value); | ||
| return value; | ||
| }; | ||
| var createShallowProxy = function (target) { | ||
| if (isNormalType(target)) | ||
| return createNormalProxy(target, true); | ||
| if (isCollectionType(target)) | ||
| return createCollectionProxy(target, true); | ||
| // never reach | ||
| return target; | ||
| }; | ||
| var createNormalProxy = function (target, shallow) { | ||
| var proxy = new Proxy(target, baseHandlers); | ||
| ProxyRaw.set(proxy, target); | ||
| if (shallow) { | ||
| RawShallowProxy.set(target, proxy); | ||
| } | ||
| else { | ||
| RawProxy.set(target, proxy); | ||
| } | ||
| return proxy; | ||
| }; | ||
| var createCollectionProxy = function (target, shallow) { | ||
| var proxy = new Proxy(target, collectionHandlers); | ||
| ProxyRaw.set(proxy, target); | ||
| if (shallow) { | ||
| RawShallowProxy.set(target, proxy); | ||
| } | ||
| else { | ||
| RawProxy.set(target, proxy); | ||
| } | ||
| return proxy; | ||
| }; | ||
| function observable(target) { | ||
| return createObservable(null, null, target); | ||
| } | ||
| var autorun = function (tracker, name) { | ||
| var reaction = function () { | ||
| if (!isFn(tracker)) | ||
| return; | ||
| if (ReactionStack.indexOf(reaction) === -1) { | ||
| releaseBindingReactions(reaction); | ||
| try { | ||
| // 将当前的reaction添加到栈中, 用于后续的依赖收集 | ||
| ReactionStack.push(reaction); | ||
| tracker(); | ||
| } | ||
| finally { | ||
| ReactionStack.pop(); | ||
| } | ||
| } | ||
| }; | ||
| reaction._name = name; | ||
| reaction(); | ||
| return function () { | ||
| disposeBindingReactions(reaction); | ||
| }; | ||
| }; | ||
| exports.autorun = autorun; | ||
| exports.observable = observable; | ||
| })); | ||
| //# sourceMappingURL=formly.reactive.umd.development.js.map |
| {"version":3,"file":"formly.reactive.umd.development.js","sources":["../src/enviroment.ts","../src/checker.ts","../src/externals.ts","../src/reaction.ts","../src/handlers.ts","../src/tree.ts","../src/internals.ts","../src/observable.ts","../src/autorun.ts"],"sourcesContent":["import { DataNode } from \"./tree\";\r\nimport { Reaction, ReactionsMap } from \"./types\";\r\n\r\nexport const ProxyRaw = new WeakMap();\r\nexport const RawProxy = new WeakMap();\r\nexport const RawShallowProxy = new WeakMap();\r\nexport const ObModelSymbol = Symbol(\"ObModelSymbol\");\r\nexport const RawNode = new WeakMap<object, DataNode>();\r\nexport const RawReactionMap = new WeakMap<object, ReactionsMap>();\r\n\r\nexport const ReactionStack: Reaction[] = [];\r\n","const toString = Object.prototype.toString;\r\n\r\nexport const isSet = (val: unknown): val is Set<any> =>\r\n val && val instanceof Set;\r\nexport const isMap = (val: unknown): val is Map<any, any> =>\r\n val && val instanceof Map;\r\nexport const isWeakMap = (val: unknown): val is WeakMap<any, any> =>\r\n val && val instanceof WeakMap;\r\nexport const isWeakSet = (val: unknown): val is WeakSet<any> =>\r\n val && val instanceof WeakSet;\r\nexport const isValid = (val: unknown) => val !== null && val !== undefined;\r\nexport const isArr = Array.isArray;\r\nexport const isFn = (val: unknown): val is () => any =>\r\n typeof val === \"function\";\r\n\r\nexport const isPlainObject = (val: unknown) =>\r\n toString.call(val) === \"[object Object]\";\r\n\r\nexport const isNormalType = (target: any) => {\r\n return isPlainObject(target) || isArr(target);\r\n};\r\n\r\nexport const isCollectionType = (target: any) => {\r\n return (\r\n isSet(target) || isMap(target) || isWeakMap(target) || isWeakSet(target)\r\n );\r\n};\r\n","import {\r\n isArr,\r\n isCollectionType,\r\n isFn,\r\n isPlainObject,\r\n isValid,\r\n} from \"./checker\";\r\nimport { ObModelSymbol, ProxyRaw } from \"./enviroment\";\r\n\r\nconst RAW_TYPE = Symbol(\"RAW_TYPE\");\r\nconst OBSERVABLE_TYPE = Symbol(\"OBSERVABLE_TYPE\");\r\n\r\nexport const isObservable = (target: any) => {\r\n return ProxyRaw.get(target) || !!target?.[ObModelSymbol];\r\n};\r\n\r\nexport const isSupportObservable = (target: any) => {\r\n if (!isValid(target)) return false;\r\n if (isArr(target)) return true;\r\n if (isPlainObject(target)) {\r\n // 如果已经是observable对象,直接返回\r\n if (target[RAW_TYPE]) {\r\n return false;\r\n }\r\n\r\n //\r\n if (target[OBSERVABLE_TYPE]) {\r\n return true;\r\n }\r\n\r\n if (isFn(target[\"toJSON\"]) || isFn(target[\"toJS\"])) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n if (isCollectionType(target)) return true;\r\n\r\n return false;\r\n};\r\n\r\nexport const getRaw = <T>(target: T): T => {\r\n if (target?.[ObModelSymbol]) return target[ObModelSymbol];\r\n return ProxyRaw.get(target as any) || target;\r\n};\r\n","import { RawReactionMap, ReactionStack } from \"./enviroment\";\r\nimport { IOperation, PropertyKey, Reaction, ReactionsMap } from \"./types\";\r\n\r\nconst ITERATION_KEY = Symbol(\"iteration key\");\r\n\r\nexport const bindTargetKeyWithCurrentReaction = (operation: IOperation) => {\r\n let { target, key, type } = operation;\r\n if (type === \"iterate\") {\r\n key = ITERATION_KEY;\r\n }\r\n const reactionLen = ReactionStack.length;\r\n if (reactionLen === 0) return;\r\n const current = ReactionStack[reactionLen - 1];\r\n\r\n if (current) {\r\n addReactionsMapToReaction(\r\n current,\r\n addRawReactionsMap(target, key, current)\r\n );\r\n }\r\n};\r\n\r\nexport const runReactionsFromTargetKey = (operation: IOperation) => {\r\n let { key, type, target } = operation;\r\n runReactions(target, key);\r\n\r\n // 影响到了数组的长度或者对象的key\r\n if (type === \"add\" || type === \"delete\" || type === \"clear\") {\r\n const newKey = Array.isArray(target) ? \"length\" : ITERATION_KEY;\r\n runReactions(target, newKey);\r\n }\r\n};\r\n\r\nconst runReactions = (target: any, key: PropertyKey) => {\r\n const reactions = getReactionsFromTargetKey(target, key);\r\n for (let i = 0, len = reactions.length; i < len; i++) {\r\n const reaction = reactions[i];\r\n reaction();\r\n }\r\n};\r\n\r\nconst getReactionsFromTargetKey = (target: any, key: PropertyKey) => {\r\n const reactionsMap = RawReactionMap.get(target);\r\n const reactions = [];\r\n if (reactionsMap) {\r\n const map = reactionsMap.get(key);\r\n map.forEach((reaction) => {\r\n if (reactions.indexOf(reaction) === -1) {\r\n reactions.push(reaction);\r\n }\r\n });\r\n }\r\n return reactions;\r\n};\r\n\r\nconst addReactionsMapToReaction = (\r\n reaction: Reaction,\r\n reactionsMap: ReactionsMap\r\n) => {\r\n const bindSet = reaction._reactionsSet;\r\n if (bindSet) {\r\n bindSet.add(reactionsMap);\r\n } else {\r\n reaction._reactionsSet = new Set([reactionsMap]);\r\n }\r\n return bindSet;\r\n};\r\n\r\n// 将当前的reaction添加到reactionsMap中\r\nconst addRawReactionsMap = (\r\n target: any,\r\n key: PropertyKey,\r\n reaction: Reaction\r\n) => {\r\n const reactionsMap = RawReactionMap.get(target);\r\n if (reactionsMap) {\r\n const reactions = reactionsMap.get(key);\r\n if (reactions) {\r\n reactions.add(reaction);\r\n } else {\r\n reactionsMap.set(key, new Set([reaction]));\r\n }\r\n return reactionsMap;\r\n } else {\r\n const reactionsMap: ReactionsMap = new Map([[key, new Set([reaction])]]);\r\n RawReactionMap.set(target, reactionsMap);\r\n return reactionsMap;\r\n }\r\n};\r\n\r\n// 重新绑定reaction\r\nexport const releaseBindingReactions = (reaction: Reaction) => {\r\n reaction._reactionsSet?.forEach((reactionsMap) => {\r\n reactionsMap.forEach((reactions) => {\r\n reactions.delete(reaction);\r\n });\r\n });\r\n delete reaction._reactionsSet;\r\n};\r\n\r\nexport const disposeBindingReactions = (reaction: Reaction) => {\r\n releaseBindingReactions(reaction);\r\n};\r\n","import { ProxyRaw, RawProxy } from \"./enviroment\";\r\nimport { isObservable, isSupportObservable } from \"./externals\";\r\nimport { createObservable } from \"./internals\";\r\nimport {\r\n bindTargetKeyWithCurrentReaction,\r\n runReactionsFromTargetKey,\r\n} from \"./reaction\";\r\n\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\nexport const baseHandlers: ProxyHandler<any> = {\r\n get(target, key, reciver) {\r\n if (!key) return;\r\n const result = target[key];\r\n if (typeof key === \"symbol\" && wellKnownSymbols.has(key)) return result;\r\n // 将当前的target和key绑定到当前的reaction中\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n key,\r\n reciver,\r\n type: \"get\",\r\n });\r\n const observableResult = RawProxy.get(result);\r\n if (observableResult) {\r\n return observableResult;\r\n }\r\n if (!isObservable(result) && isSupportObservable(result)) {\r\n const descriptor = Object.getOwnPropertyDescriptor(target, key);\r\n if (\r\n !descriptor ||\r\n !(descriptor.value === false && descriptor.configurable === false)\r\n ) {\r\n return createObservable(target, key, result);\r\n }\r\n }\r\n return result;\r\n },\r\n has(target, key) {\r\n const result = Reflect.has(target, key);\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n key,\r\n type: \"has\",\r\n });\r\n return result;\r\n },\r\n ownKeys(target) {\r\n const result = Reflect.ownKeys(target);\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n type: \"iterate\",\r\n });\r\n return result;\r\n },\r\n set(target, key, value, reciver) {\r\n const hadKey = hasOwnProperty.call(target, key);\r\n const newValue = createObservable(target, key, value);\r\n const oldValue = target[key];\r\n target[key] = newValue;\r\n if (!hadKey) {\r\n runReactionsFromTargetKey({\r\n target,\r\n key,\r\n value: newValue,\r\n oldValue,\r\n reciver,\r\n type: \"add\",\r\n });\r\n } else if (value !== oldValue) {\r\n runReactionsFromTargetKey({\r\n target,\r\n key,\r\n value: newValue,\r\n oldValue,\r\n reciver,\r\n type: \"set\",\r\n });\r\n }\r\n return true;\r\n },\r\n deleteProperty(target, key) {\r\n const oldValue = target[key];\r\n delete target[key];\r\n runReactionsFromTargetKey({\r\n target,\r\n key,\r\n oldValue,\r\n type: \"delete\",\r\n });\r\n return true;\r\n },\r\n};\r\n\r\n// 对于map、set、weakmap、weakset的处理来说,需要对其进行特殊的处理\r\nexport const collectionHandlers = {\r\n // 这些类型都是通过内部的函数来进行操作的,所以需要对这些函数进行拦截\r\n get(target: any, key: PropertyKey, reciver: any) {\r\n target = hasOwnProperty.call(instrumentations, key)\r\n ? instrumentations\r\n : target;\r\n return Reflect.get(target, key, reciver);\r\n },\r\n};\r\n\r\nconst instrumentations = {\r\n has(key: PropertyKey) {\r\n const target = ProxyRaw.get(this);\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n key,\r\n type: \"has\",\r\n });\r\n return target.has(key);\r\n },\r\n};\r\n\r\nconst wellKnownSymbols = new Set(\r\n Object.getOwnPropertyNames(Symbol).reduce((act: symbol[], key) => {\r\n if (key === \"arguments\") return act;\r\n if (key === \"caller\") return act;\r\n const value = (Symbol as any)[key];\r\n if (typeof value === \"symbol\") act.push(value);\r\n return act;\r\n }, [])\r\n);\r\n","import { ObModelSymbol, RawNode } from \"./enviroment\";\r\nimport { getRaw } from \"./externals\";\r\nimport { PropertyKey } from \"./types\";\r\n\r\nexport const buildDataTree = (target: any, key: PropertyKey, value: any) => {\r\n const raw = getRaw(value);\r\n const currentNode = getDataNode(raw);\r\n if (currentNode) return currentNode;\r\n setDataNode(raw, new DataNode(target, key, value));\r\n};\r\n\r\nexport class DataNode {\r\n target: any;\r\n key: PropertyKey;\r\n value: any;\r\n\r\n constructor(target: any, key: PropertyKey, value: any) {\r\n this.target = target;\r\n this.key = key;\r\n this.value = value;\r\n }\r\n\r\n get path() {\r\n if (!this.parent) return this.key ? [this.key] : [];\r\n return this.parent.path.concat(this.key);\r\n }\r\n\r\n get targetRaw() {\r\n return getRaw(this.target);\r\n }\r\n\r\n get parent() {\r\n if (!this.target) return;\r\n return getDataNode(this.targetRaw);\r\n }\r\n}\r\n\r\nexport const setDataNode = (raw: any, node: DataNode) => {\r\n if (raw?.[ObModelSymbol]) {\r\n raw[ObModelSymbol] = node;\r\n return;\r\n }\r\n RawNode.set(raw, node);\r\n};\r\n\r\nexport const getDataNode = (raw: any) => {\r\n if (raw?.[ObModelSymbol]) {\r\n return raw[ObModelSymbol];\r\n }\r\n return RawNode.get(raw);\r\n};\r\n","import { ProxyRaw, RawProxy, RawShallowProxy } from \"./enviroment\";\r\nimport { isSupportObservable } from \"./externals\";\r\nimport { baseHandlers, collectionHandlers } from \"./handlers\";\r\nimport { buildDataTree } from \"./tree\";\r\nimport { PropertyKey } from \"./types\";\r\nimport { isCollectionType, isNormalType } from \"./checker\";\r\n\r\nexport const createObservable = (\r\n target?: any,\r\n key?: PropertyKey,\r\n value?: any,\r\n shallow?: boolean\r\n) => {\r\n // 非object类型直接返回\r\n if (typeof value !== \"object\") return value;\r\n\r\n if (!isSupportObservable(value)) return value;\r\n\r\n if (target) {\r\n const parentRaw = ProxyRaw.get(target) || target;\r\n const isShallowParent = RawShallowProxy.get(parentRaw);\r\n if (isShallowParent) return value;\r\n }\r\n\r\n buildDataTree(target, key, value);\r\n if (shallow) return createShallowProxy(value);\r\n if (isNormalType(value)) return createNormalProxy(value);\r\n if (isCollectionType(value)) return createCollectionProxy(value);\r\n return value;\r\n};\r\n\r\nconst createShallowProxy = (target: any) => {\r\n if (isNormalType(target)) return createNormalProxy(target, true);\r\n if (isCollectionType(target)) return createCollectionProxy(target, true);\r\n // never reach\r\n return target;\r\n};\r\n\r\nconst createNormalProxy = (target: any, shallow?: boolean) => {\r\n const proxy = new Proxy(target, baseHandlers);\r\n ProxyRaw.set(proxy, target);\r\n if (shallow) {\r\n RawShallowProxy.set(target, proxy);\r\n } else {\r\n RawProxy.set(target, proxy);\r\n }\r\n return proxy;\r\n};\r\n\r\nconst createCollectionProxy = (target: any, shallow?: boolean) => {\r\n const proxy = new Proxy(target, collectionHandlers);\r\n ProxyRaw.set(proxy, target);\r\n if (shallow) {\r\n RawShallowProxy.set(target, proxy);\r\n } else {\r\n RawProxy.set(target, proxy);\r\n }\r\n return proxy;\r\n};\r\n","import { createObservable } from \"./internals\";\r\n\r\nexport function observable<T extends object>(target: T): T {\r\n return createObservable(null, null, target);\r\n}\r\n","import { isFn } from \"./checker\";\r\nimport { ReactionStack } from \"./enviroment\";\r\nimport { disposeBindingReactions, releaseBindingReactions } from \"./reaction\";\r\nimport { Reaction } from \"./types\";\r\n\r\nexport const autorun = (tracker: Reaction, name: \"AutoRun\") => {\r\n const reaction: Reaction = () => {\r\n if (!isFn(tracker)) return;\r\n if (ReactionStack.indexOf(reaction) === -1) {\r\n releaseBindingReactions(reaction);\r\n try {\r\n // 将当前的reaction添加到栈中, 用于后续的依赖收集\r\n ReactionStack.push(reaction);\r\n tracker();\r\n } finally {\r\n ReactionStack.pop();\r\n }\r\n }\r\n };\r\n reaction._name = name;\r\n reaction();\r\n return () => {\r\n disposeBindingReactions(reaction);\r\n };\r\n};\r\n"],"names":[],"mappings":"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"} |
| !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define("formly.reactive",["exports"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).Formly=e.Formly||{},e.Formly.Reactive={}))}(this,(function(e){"use strict";!function(){const e={NODE_ENV:"development"};try{if(process)return process.env=Object.assign({},process.env),void Object.assign(process.env,e)}catch(e){}globalThis.process={env:e}}();var t=new WeakMap,n=new WeakMap,r=new WeakMap,o=Symbol("ObModelSymbol"),a=new WeakMap,i=new WeakMap,u=[],c=Object.prototype.toString,f=Array.isArray,l=function(e){return"function"==typeof e},s=function(e){return"[object Object]"===c.call(e)},y=function(e){return s(e)||f(e)},p=function(e){return(t=e)&&t instanceof Set||function(e){return e&&e instanceof Map}(e)||function(e){return e&&e instanceof WeakMap}(e)||function(e){return e&&e instanceof WeakSet}(e);var t},v=Symbol("RAW_TYPE"),g=Symbol("OBSERVABLE_TYPE"),d=function(e){return null!=e&&(!!f(e)||(s(e)?!e[v]&&(!!e[g]||!l(e.toJSON)&&!l(e.toJS)):!!p(e)))},h=function(e){return(null==e?void 0:e[o])?e[o]:t.get(e)||e},b=Symbol("iteration key"),m=function(e){var t=e.target,n=e.key;"iterate"===e.type&&(n=b);var r=u.length;if(0!==r){var o=u[r-1];o&&O(o,j(t,n,o))}},S=function(e){var t=e.key,n=e.type,r=e.target;if(k(r,t),"add"===n||"delete"===n||"clear"===n){var o=Array.isArray(r)?"length":b;k(r,o)}},k=function(e,t){for(var n=w(e,t),r=0,o=n.length;r<o;r++){(0,n[r])()}},w=function(e,t){var n=i.get(e),r=[];n&&n.get(t).forEach((function(e){-1===r.indexOf(e)&&r.push(e)}));return r},O=function(e,t){var n=e._reactionsSet;return n?n.add(t):e._reactionsSet=new Set([t]),n},j=function(e,t,n){var r=i.get(e);if(r){var o=r.get(t);return o?o.add(n):r.set(t,new Set([n])),r}var a=new Map([[t,new Set([n])]]);return i.set(e,a),a},P=function(e){var t;null===(t=e._reactionsSet)||void 0===t||t.forEach((function(t){t.forEach((function(t){t.delete(e)}))})),delete e._reactionsSet},E=Object.prototype.hasOwnProperty,M={get:function(e,r,a){if(r){var i=e[r];if("symbol"==typeof r&&_.has(r))return i;m({target:e,key:r,reciver:a,type:"get"});var u=n.get(i);if(u)return u;if(!function(e){return t.get(e)||!!(null==e?void 0:e[o])}(i)&&d(i)){var c=Object.getOwnPropertyDescriptor(e,r);if(!c||!1!==c.value||!1!==c.configurable)return V(e,r,i)}return i}},has:function(e,t){var n=Reflect.has(e,t);return m({target:e,key:t,type:"has"}),n},ownKeys:function(e){var t=Reflect.ownKeys(e);return m({target:e,type:"iterate"}),t},set:function(e,t,n,r){var o=E.call(e,t),a=V(e,t,n),i=e[t];return e[t]=a,o?n!==i&&S({target:e,key:t,value:a,oldValue:i,reciver:r,type:"set"}):S({target:e,key:t,value:a,oldValue:i,reciver:r,type:"add"}),!0},deleteProperty:function(e,t){var n=e[t];return delete e[t],S({target:e,key:t,oldValue:n,type:"delete"}),!0}},R={get:function(e,t,n){return e=E.call(W,t)?W:e,Reflect.get(e,t,n)}},W={has:function(e){var n=t.get(this);return m({target:n,key:e,type:"has"}),n.has(e)}},_=new Set(Object.getOwnPropertyNames(Symbol).reduce((function(e,t){if("arguments"===t)return e;if("caller"===t)return e;var n=Symbol[t];return"symbol"==typeof n&&e.push(n),e}),[])),x=function(){function e(e,t,n){this.target=e,this.key=t,this.value=n}return Object.defineProperty(e.prototype,"path",{get:function(){return this.parent?this.parent.path.concat(this.key):this.key?[this.key]:[]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"targetRaw",{get:function(){return h(this.target)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parent",{get:function(){if(this.target)return T(this.targetRaw)},enumerable:!1,configurable:!0}),e}(),A=function(e,t){(null==e?void 0:e[o])?e[o]=t:a.set(e,t)},T=function(e){return(null==e?void 0:e[o])?e[o]:a.get(e)},V=function(e,n,o,a){if("object"!=typeof o)return o;if(!d(o))return o;if(e){var i=t.get(e)||e;if(r.get(i))return o}return function(e,t,n){var r=h(n),o=T(r);if(o)return o;A(r,new x(e,t,n))}(e,n,o),a?N(o):y(o)?F(o):p(o)?B(o):o},N=function(e){return y(e)?F(e,!0):p(e)?B(e,!0):e},F=function(e,o){var a=new Proxy(e,M);return t.set(a,e),o?r.set(e,a):n.set(e,a),a},B=function(e,o){var a=new Proxy(e,R);return t.set(a,e),o?r.set(e,a):n.set(e,a),a};e.autorun=function(e,t){var n=function(){if(l(e)&&-1===u.indexOf(n)){P(n);try{u.push(n),e()}finally{u.pop()}}};return n._name=t,n(),function(){!function(e){P(e)}(n)}},e.observable=function(e){return V(null,null,e)}})); | ||
| //# sourceMappingURL=formly.reactive.umd.production.js.map |
| {"version":3,"file":"formly.reactive.umd.production.js","sources":["../src/enviroment.ts","../src/checker.ts","../src/externals.ts","../src/reaction.ts","../src/handlers.ts","../src/tree.ts","../src/internals.ts","../src/autorun.ts","../src/observable.ts"],"sourcesContent":["import { DataNode } from \"./tree\";\r\nimport { Reaction, ReactionsMap } from \"./types\";\r\n\r\nexport const ProxyRaw = new WeakMap();\r\nexport const RawProxy = new WeakMap();\r\nexport const RawShallowProxy = new WeakMap();\r\nexport const ObModelSymbol = Symbol(\"ObModelSymbol\");\r\nexport const RawNode = new WeakMap<object, DataNode>();\r\nexport const RawReactionMap = new WeakMap<object, ReactionsMap>();\r\n\r\nexport const ReactionStack: Reaction[] = [];\r\n","const toString = Object.prototype.toString;\r\n\r\nexport const isSet = (val: unknown): val is Set<any> =>\r\n val && val instanceof Set;\r\nexport const isMap = (val: unknown): val is Map<any, any> =>\r\n val && val instanceof Map;\r\nexport const isWeakMap = (val: unknown): val is WeakMap<any, any> =>\r\n val && val instanceof WeakMap;\r\nexport const isWeakSet = (val: unknown): val is WeakSet<any> =>\r\n val && val instanceof WeakSet;\r\nexport const isValid = (val: unknown) => val !== null && val !== undefined;\r\nexport const isArr = Array.isArray;\r\nexport const isFn = (val: unknown): val is () => any =>\r\n typeof val === \"function\";\r\n\r\nexport const isPlainObject = (val: unknown) =>\r\n toString.call(val) === \"[object Object]\";\r\n\r\nexport const isNormalType = (target: any) => {\r\n return isPlainObject(target) || isArr(target);\r\n};\r\n\r\nexport const isCollectionType = (target: any) => {\r\n return (\r\n isSet(target) || isMap(target) || isWeakMap(target) || isWeakSet(target)\r\n );\r\n};\r\n","import {\r\n isArr,\r\n isCollectionType,\r\n isFn,\r\n isPlainObject,\r\n isValid,\r\n} from \"./checker\";\r\nimport { ObModelSymbol, ProxyRaw } from \"./enviroment\";\r\n\r\nconst RAW_TYPE = Symbol(\"RAW_TYPE\");\r\nconst OBSERVABLE_TYPE = Symbol(\"OBSERVABLE_TYPE\");\r\n\r\nexport const isObservable = (target: any) => {\r\n return ProxyRaw.get(target) || !!target?.[ObModelSymbol];\r\n};\r\n\r\nexport const isSupportObservable = (target: any) => {\r\n if (!isValid(target)) return false;\r\n if (isArr(target)) return true;\r\n if (isPlainObject(target)) {\r\n // 如果已经是observable对象,直接返回\r\n if (target[RAW_TYPE]) {\r\n return false;\r\n }\r\n\r\n //\r\n if (target[OBSERVABLE_TYPE]) {\r\n return true;\r\n }\r\n\r\n if (isFn(target[\"toJSON\"]) || isFn(target[\"toJS\"])) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n if (isCollectionType(target)) return true;\r\n\r\n return false;\r\n};\r\n\r\nexport const getRaw = <T>(target: T): T => {\r\n if (target?.[ObModelSymbol]) return target[ObModelSymbol];\r\n return ProxyRaw.get(target as any) || target;\r\n};\r\n","import { RawReactionMap, ReactionStack } from \"./enviroment\";\r\nimport { IOperation, PropertyKey, Reaction, ReactionsMap } from \"./types\";\r\n\r\nconst ITERATION_KEY = Symbol(\"iteration key\");\r\n\r\nexport const bindTargetKeyWithCurrentReaction = (operation: IOperation) => {\r\n let { target, key, type } = operation;\r\n if (type === \"iterate\") {\r\n key = ITERATION_KEY;\r\n }\r\n const reactionLen = ReactionStack.length;\r\n if (reactionLen === 0) return;\r\n const current = ReactionStack[reactionLen - 1];\r\n\r\n if (current) {\r\n addReactionsMapToReaction(\r\n current,\r\n addRawReactionsMap(target, key, current)\r\n );\r\n }\r\n};\r\n\r\nexport const runReactionsFromTargetKey = (operation: IOperation) => {\r\n let { key, type, target } = operation;\r\n runReactions(target, key);\r\n\r\n // 影响到了数组的长度或者对象的key\r\n if (type === \"add\" || type === \"delete\" || type === \"clear\") {\r\n const newKey = Array.isArray(target) ? \"length\" : ITERATION_KEY;\r\n runReactions(target, newKey);\r\n }\r\n};\r\n\r\nconst runReactions = (target: any, key: PropertyKey) => {\r\n const reactions = getReactionsFromTargetKey(target, key);\r\n for (let i = 0, len = reactions.length; i < len; i++) {\r\n const reaction = reactions[i];\r\n reaction();\r\n }\r\n};\r\n\r\nconst getReactionsFromTargetKey = (target: any, key: PropertyKey) => {\r\n const reactionsMap = RawReactionMap.get(target);\r\n const reactions = [];\r\n if (reactionsMap) {\r\n const map = reactionsMap.get(key);\r\n map.forEach((reaction) => {\r\n if (reactions.indexOf(reaction) === -1) {\r\n reactions.push(reaction);\r\n }\r\n });\r\n }\r\n return reactions;\r\n};\r\n\r\nconst addReactionsMapToReaction = (\r\n reaction: Reaction,\r\n reactionsMap: ReactionsMap\r\n) => {\r\n const bindSet = reaction._reactionsSet;\r\n if (bindSet) {\r\n bindSet.add(reactionsMap);\r\n } else {\r\n reaction._reactionsSet = new Set([reactionsMap]);\r\n }\r\n return bindSet;\r\n};\r\n\r\n// 将当前的reaction添加到reactionsMap中\r\nconst addRawReactionsMap = (\r\n target: any,\r\n key: PropertyKey,\r\n reaction: Reaction\r\n) => {\r\n const reactionsMap = RawReactionMap.get(target);\r\n if (reactionsMap) {\r\n const reactions = reactionsMap.get(key);\r\n if (reactions) {\r\n reactions.add(reaction);\r\n } else {\r\n reactionsMap.set(key, new Set([reaction]));\r\n }\r\n return reactionsMap;\r\n } else {\r\n const reactionsMap: ReactionsMap = new Map([[key, new Set([reaction])]]);\r\n RawReactionMap.set(target, reactionsMap);\r\n return reactionsMap;\r\n }\r\n};\r\n\r\n// 重新绑定reaction\r\nexport const releaseBindingReactions = (reaction: Reaction) => {\r\n reaction._reactionsSet?.forEach((reactionsMap) => {\r\n reactionsMap.forEach((reactions) => {\r\n reactions.delete(reaction);\r\n });\r\n });\r\n delete reaction._reactionsSet;\r\n};\r\n\r\nexport const disposeBindingReactions = (reaction: Reaction) => {\r\n releaseBindingReactions(reaction);\r\n};\r\n","import { ProxyRaw, RawProxy } from \"./enviroment\";\r\nimport { isObservable, isSupportObservable } from \"./externals\";\r\nimport { createObservable } from \"./internals\";\r\nimport {\r\n bindTargetKeyWithCurrentReaction,\r\n runReactionsFromTargetKey,\r\n} from \"./reaction\";\r\n\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\nexport const baseHandlers: ProxyHandler<any> = {\r\n get(target, key, reciver) {\r\n if (!key) return;\r\n const result = target[key];\r\n if (typeof key === \"symbol\" && wellKnownSymbols.has(key)) return result;\r\n // 将当前的target和key绑定到当前的reaction中\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n key,\r\n reciver,\r\n type: \"get\",\r\n });\r\n const observableResult = RawProxy.get(result);\r\n if (observableResult) {\r\n return observableResult;\r\n }\r\n if (!isObservable(result) && isSupportObservable(result)) {\r\n const descriptor = Object.getOwnPropertyDescriptor(target, key);\r\n if (\r\n !descriptor ||\r\n !(descriptor.value === false && descriptor.configurable === false)\r\n ) {\r\n return createObservable(target, key, result);\r\n }\r\n }\r\n return result;\r\n },\r\n has(target, key) {\r\n const result = Reflect.has(target, key);\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n key,\r\n type: \"has\",\r\n });\r\n return result;\r\n },\r\n ownKeys(target) {\r\n const result = Reflect.ownKeys(target);\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n type: \"iterate\",\r\n });\r\n return result;\r\n },\r\n set(target, key, value, reciver) {\r\n const hadKey = hasOwnProperty.call(target, key);\r\n const newValue = createObservable(target, key, value);\r\n const oldValue = target[key];\r\n target[key] = newValue;\r\n if (!hadKey) {\r\n runReactionsFromTargetKey({\r\n target,\r\n key,\r\n value: newValue,\r\n oldValue,\r\n reciver,\r\n type: \"add\",\r\n });\r\n } else if (value !== oldValue) {\r\n runReactionsFromTargetKey({\r\n target,\r\n key,\r\n value: newValue,\r\n oldValue,\r\n reciver,\r\n type: \"set\",\r\n });\r\n }\r\n return true;\r\n },\r\n deleteProperty(target, key) {\r\n const oldValue = target[key];\r\n delete target[key];\r\n runReactionsFromTargetKey({\r\n target,\r\n key,\r\n oldValue,\r\n type: \"delete\",\r\n });\r\n return true;\r\n },\r\n};\r\n\r\n// 对于map、set、weakmap、weakset的处理来说,需要对其进行特殊的处理\r\nexport const collectionHandlers = {\r\n // 这些类型都是通过内部的函数来进行操作的,所以需要对这些函数进行拦截\r\n get(target: any, key: PropertyKey, reciver: any) {\r\n target = hasOwnProperty.call(instrumentations, key)\r\n ? instrumentations\r\n : target;\r\n return Reflect.get(target, key, reciver);\r\n },\r\n};\r\n\r\nconst instrumentations = {\r\n has(key: PropertyKey) {\r\n const target = ProxyRaw.get(this);\r\n bindTargetKeyWithCurrentReaction({\r\n target,\r\n key,\r\n type: \"has\",\r\n });\r\n return target.has(key);\r\n },\r\n};\r\n\r\nconst wellKnownSymbols = new Set(\r\n Object.getOwnPropertyNames(Symbol).reduce((act: symbol[], key) => {\r\n if (key === \"arguments\") return act;\r\n if (key === \"caller\") return act;\r\n const value = (Symbol as any)[key];\r\n if (typeof value === \"symbol\") act.push(value);\r\n return act;\r\n }, [])\r\n);\r\n","import { ObModelSymbol, RawNode } from \"./enviroment\";\r\nimport { getRaw } from \"./externals\";\r\nimport { PropertyKey } from \"./types\";\r\n\r\nexport const buildDataTree = (target: any, key: PropertyKey, value: any) => {\r\n const raw = getRaw(value);\r\n const currentNode = getDataNode(raw);\r\n if (currentNode) return currentNode;\r\n setDataNode(raw, new DataNode(target, key, value));\r\n};\r\n\r\nexport class DataNode {\r\n target: any;\r\n key: PropertyKey;\r\n value: any;\r\n\r\n constructor(target: any, key: PropertyKey, value: any) {\r\n this.target = target;\r\n this.key = key;\r\n this.value = value;\r\n }\r\n\r\n get path() {\r\n if (!this.parent) return this.key ? [this.key] : [];\r\n return this.parent.path.concat(this.key);\r\n }\r\n\r\n get targetRaw() {\r\n return getRaw(this.target);\r\n }\r\n\r\n get parent() {\r\n if (!this.target) return;\r\n return getDataNode(this.targetRaw);\r\n }\r\n}\r\n\r\nexport const setDataNode = (raw: any, node: DataNode) => {\r\n if (raw?.[ObModelSymbol]) {\r\n raw[ObModelSymbol] = node;\r\n return;\r\n }\r\n RawNode.set(raw, node);\r\n};\r\n\r\nexport const getDataNode = (raw: any) => {\r\n if (raw?.[ObModelSymbol]) {\r\n return raw[ObModelSymbol];\r\n }\r\n return RawNode.get(raw);\r\n};\r\n","import { ProxyRaw, RawProxy, RawShallowProxy } from \"./enviroment\";\r\nimport { isSupportObservable } from \"./externals\";\r\nimport { baseHandlers, collectionHandlers } from \"./handlers\";\r\nimport { buildDataTree } from \"./tree\";\r\nimport { PropertyKey } from \"./types\";\r\nimport { isCollectionType, isNormalType } from \"./checker\";\r\n\r\nexport const createObservable = (\r\n target?: any,\r\n key?: PropertyKey,\r\n value?: any,\r\n shallow?: boolean\r\n) => {\r\n // 非object类型直接返回\r\n if (typeof value !== \"object\") return value;\r\n\r\n if (!isSupportObservable(value)) return value;\r\n\r\n if (target) {\r\n const parentRaw = ProxyRaw.get(target) || target;\r\n const isShallowParent = RawShallowProxy.get(parentRaw);\r\n if (isShallowParent) return value;\r\n }\r\n\r\n buildDataTree(target, key, value);\r\n if (shallow) return createShallowProxy(value);\r\n if (isNormalType(value)) return createNormalProxy(value);\r\n if (isCollectionType(value)) return createCollectionProxy(value);\r\n return value;\r\n};\r\n\r\nconst createShallowProxy = (target: any) => {\r\n if (isNormalType(target)) return createNormalProxy(target, true);\r\n if (isCollectionType(target)) return createCollectionProxy(target, true);\r\n // never reach\r\n return target;\r\n};\r\n\r\nconst createNormalProxy = (target: any, shallow?: boolean) => {\r\n const proxy = new Proxy(target, baseHandlers);\r\n ProxyRaw.set(proxy, target);\r\n if (shallow) {\r\n RawShallowProxy.set(target, proxy);\r\n } else {\r\n RawProxy.set(target, proxy);\r\n }\r\n return proxy;\r\n};\r\n\r\nconst createCollectionProxy = (target: any, shallow?: boolean) => {\r\n const proxy = new Proxy(target, collectionHandlers);\r\n ProxyRaw.set(proxy, target);\r\n if (shallow) {\r\n RawShallowProxy.set(target, proxy);\r\n } else {\r\n RawProxy.set(target, proxy);\r\n }\r\n return proxy;\r\n};\r\n","import { isFn } from \"./checker\";\r\nimport { ReactionStack } from \"./enviroment\";\r\nimport { disposeBindingReactions, releaseBindingReactions } from \"./reaction\";\r\nimport { Reaction } from \"./types\";\r\n\r\nexport const autorun = (tracker: Reaction, name: \"AutoRun\") => {\r\n const reaction: Reaction = () => {\r\n if (!isFn(tracker)) return;\r\n if (ReactionStack.indexOf(reaction) === -1) {\r\n releaseBindingReactions(reaction);\r\n try {\r\n // 将当前的reaction添加到栈中, 用于后续的依赖收集\r\n ReactionStack.push(reaction);\r\n tracker();\r\n } finally {\r\n ReactionStack.pop();\r\n }\r\n }\r\n };\r\n reaction._name = name;\r\n reaction();\r\n return () => {\r\n disposeBindingReactions(reaction);\r\n };\r\n};\r\n","import { createObservable } from \"./internals\";\r\n\r\nexport function observable<T extends object>(target: T): T {\r\n return createObservable(null, null, target);\r\n}\r\n"],"names":["ProxyRaw","WeakMap","RawProxy","RawShallowProxy","ObModelSymbol","Symbol","RawNode","RawReactionMap","ReactionStack","toString","Object","prototype","isArr","Array","isArray","isFn","val","isPlainObject","call","isNormalType","target","isCollectionType","Set","Map","isMap","isWeakMap","WeakSet","isWeakSet","RAW_TYPE","OBSERVABLE_TYPE","isSupportObservable","getRaw","get","ITERATION_KEY","bindTargetKeyWithCurrentReaction","operation","key","reactionLen","length","current","addReactionsMapToReaction","addRawReactionsMap","runReactionsFromTargetKey","type","runReactions","newKey","reactions","getReactionsFromTargetKey","i","len","reaction","reactionsMap","forEach","indexOf","push","bindSet","_reactionsSet","add","set","reactionsMap_1","releaseBindingReactions","_a","delete","hasOwnProperty","baseHandlers","reciver","result","wellKnownSymbols","has","observableResult","isObservable","descriptor","getOwnPropertyDescriptor","value","configurable","createObservable","Reflect","ownKeys","hadKey","newValue","oldValue","deleteProperty","collectionHandlers","instrumentations","this","getOwnPropertyNames","reduce","act","DataNode","defineProperty","parent","path","concat","getDataNode","targetRaw","setDataNode","raw","node","shallow","parentRaw","currentNode","buildDataTree","createShallowProxy","createNormalProxy","createCollectionProxy","proxy","Proxy","tracker","name","pop","_name","disposeBindingReactions"],"mappings":"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"} |
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
179169
-0.01%