stimulus-reactive
Advanced tools
Comparing version 0.1.3 to 0.1.4
@@ -9,5 +9,2 @@ function makeMap(str, expectsLowerCase) { | ||
} | ||
!!(process.env.NODE_ENV !== "production") ? Object.freeze({}) : {}; | ||
!!(process.env.NODE_ENV !== "production") ? Object.freeze([]) : []; | ||
const NOOP = () => { | ||
@@ -30,18 +27,4 @@ }; | ||
const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; | ||
const cacheStringFunction = (fn) => { | ||
const cache = /* @__PURE__ */ Object.create(null); | ||
return (str) => { | ||
const hit = cache[str]; | ||
return hit || (cache[str] = fn(str)); | ||
}; | ||
}; | ||
const capitalize = cacheStringFunction( | ||
(str) => str.charAt(0).toUpperCase() + str.slice(1) | ||
); | ||
const hasChanged = (value, oldValue) => !Object.is(value, oldValue); | ||
function warn(msg, ...args) { | ||
console.warn(`[Vue warn] ${msg}`, ...args); | ||
} | ||
let activeEffectScope; | ||
@@ -82,4 +65,2 @@ class EffectScope { | ||
} | ||
} else if (!!(process.env.NODE_ENV !== "production")) { | ||
warn(`cannot run an inactive effect scope.`); | ||
} | ||
@@ -174,4 +155,4 @@ } | ||
let activeEffect; | ||
const ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== "production") ? "iterate" : ""); | ||
const MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== "production") ? "Map key iterate" : ""); | ||
const ITERATE_KEY = Symbol(""); | ||
const MAP_KEY_ITERATE_KEY = Symbol(""); | ||
class ReactiveEffect { | ||
@@ -280,4 +261,3 @@ constructor(fn, scheduler = null, scope) { | ||
} | ||
const eventInfo = !!(process.env.NODE_ENV !== "production") ? { effect: activeEffect, target, type, key } : void 0; | ||
trackEffects(dep, eventInfo); | ||
trackEffects(dep); | ||
} | ||
@@ -298,12 +278,2 @@ } | ||
activeEffect.deps.push(dep); | ||
if (!!(process.env.NODE_ENV !== "production") && activeEffect.onTrack) { | ||
activeEffect.onTrack( | ||
extend( | ||
{ | ||
effect: activeEffect | ||
}, | ||
debuggerEventExtraInfo | ||
) | ||
); | ||
} | ||
} | ||
@@ -356,8 +326,5 @@ } | ||
} | ||
const eventInfo = !!(process.env.NODE_ENV !== "production") ? { target, type, key, newValue, oldValue, oldTarget } : void 0; | ||
if (deps.length === 1) { | ||
if (deps[0]) { | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
triggerEffects(deps[0], eventInfo); | ||
} else { | ||
{ | ||
triggerEffects(deps[0]); | ||
@@ -373,5 +340,3 @@ } | ||
} | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
triggerEffects(createDep(effects), eventInfo); | ||
} else { | ||
{ | ||
triggerEffects(createDep(effects)); | ||
@@ -385,3 +350,3 @@ } | ||
if (effect2.computed) { | ||
triggerEffect(effect2, debuggerEventExtraInfo); | ||
triggerEffect(effect2); | ||
} | ||
@@ -391,3 +356,3 @@ } | ||
if (!effect2.computed) { | ||
triggerEffect(effect2, debuggerEventExtraInfo); | ||
triggerEffect(effect2); | ||
} | ||
@@ -398,5 +363,2 @@ } | ||
if (effect2 !== activeEffect || effect2.allowRecurse) { | ||
if (!!(process.env.NODE_ENV !== "production") && effect2.onTrigger) { | ||
effect2.onTrigger(extend({ effect: effect2 }, debuggerEventExtraInfo)); | ||
} | ||
if (effect2.scheduler) { | ||
@@ -512,3 +474,3 @@ effect2.scheduler(); | ||
} else if (hasChanged(value, oldValue)) { | ||
trigger(target, "set", key, value, oldValue); | ||
trigger(target, "set", key, value); | ||
} | ||
@@ -521,6 +483,6 @@ } | ||
const hadKey = hasOwn(target, key); | ||
const oldValue = target[key]; | ||
target[key]; | ||
const result = Reflect.deleteProperty(target, key); | ||
if (result && hadKey) { | ||
trigger(target, "delete", key, void 0, oldValue); | ||
trigger(target, "delete", key, void 0); | ||
} | ||
@@ -550,17 +512,5 @@ return result; | ||
set(target, key) { | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
warn( | ||
`Set operation on key "${String(key)}" failed: target is readonly.`, | ||
target | ||
); | ||
} | ||
return true; | ||
}, | ||
deleteProperty(target, key) { | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
warn( | ||
`Delete operation on key "${String(key)}" failed: target is readonly.`, | ||
target | ||
); | ||
} | ||
return true; | ||
@@ -636,4 +586,2 @@ } | ||
hadKey = has2.call(target, key); | ||
} else if (!!(process.env.NODE_ENV !== "production")) { | ||
checkIdentityKeys(target, has2, key); | ||
} | ||
@@ -645,3 +593,3 @@ const oldValue = get2.call(target, key); | ||
} else if (hasChanged(value, oldValue)) { | ||
trigger(target, "set", key, value, oldValue); | ||
trigger(target, "set", key, value); | ||
} | ||
@@ -657,9 +605,7 @@ return this; | ||
hadKey = has2.call(target, key); | ||
} else if (!!(process.env.NODE_ENV !== "production")) { | ||
checkIdentityKeys(target, has2, key); | ||
} | ||
const oldValue = get2 ? get2.call(target, key) : void 0; | ||
get2 ? get2.call(target, key) : void 0; | ||
const result = target.delete(key); | ||
if (hadKey) { | ||
trigger(target, "delete", key, void 0, oldValue); | ||
trigger(target, "delete", key, void 0); | ||
} | ||
@@ -671,6 +617,5 @@ return result; | ||
const hadItems = target.size !== 0; | ||
const oldTarget = !!(process.env.NODE_ENV !== "production") ? isMap(target) ? new Map(target) : new Set(target) : void 0; | ||
const result = target.clear(); | ||
if (hadItems) { | ||
trigger(target, "clear", void 0, void 0, oldTarget); | ||
trigger(target, "clear", void 0, void 0); | ||
} | ||
@@ -723,9 +668,2 @@ return result; | ||
return function(...args) { | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
const key = args[0] ? `on key "${args[0]}" ` : ``; | ||
console.warn( | ||
`${capitalize(type)} operation ${key}failed: target is readonly.`, | ||
toRaw(this) | ||
); | ||
} | ||
return type === "delete" ? false : this; | ||
@@ -857,11 +795,2 @@ }; | ||
}; | ||
function checkIdentityKeys(target, has2, key) { | ||
const rawKey = toRaw(key); | ||
if (rawKey !== key && has2.call(target, rawKey)) { | ||
const type = toRawType(target); | ||
console.warn( | ||
`Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` | ||
); | ||
} | ||
} | ||
@@ -921,5 +850,2 @@ const reactiveMap = /* @__PURE__ */ new WeakMap(); | ||
if (!isObject(target)) { | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
console.warn(`value cannot be made reactive: ${String(target)}`); | ||
} | ||
return target; | ||
@@ -961,9 +887,3 @@ } | ||
ref2 = toRaw(ref2); | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
trackEffects(ref2.dep || (ref2.dep = createDep()), { | ||
target: ref2, | ||
type: "get", | ||
key: "value" | ||
}); | ||
} else { | ||
{ | ||
trackEffects(ref2.dep || (ref2.dep = createDep())); | ||
@@ -977,10 +897,3 @@ } | ||
if (dep) { | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
triggerEffects(dep, { | ||
target: ref2, | ||
type: "set", | ||
key: "value", | ||
newValue: newVal | ||
}); | ||
} else { | ||
{ | ||
triggerEffects(dep); | ||
@@ -1020,3 +933,3 @@ } | ||
this._value = useDirectValue ? newVal : toReactive(newVal); | ||
triggerRefValue(this, newVal); | ||
triggerRefValue(this); | ||
} | ||
@@ -1062,5 +975,3 @@ } | ||
getter = getterOrOptions; | ||
setter = !!(process.env.NODE_ENV !== "production") ? () => { | ||
console.warn("Write operation failed: computed value is readonly"); | ||
} : NOOP; | ||
setter = NOOP; | ||
} else { | ||
@@ -1071,6 +982,2 @@ getter = getterOrOptions.get; | ||
const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); | ||
if (!!(process.env.NODE_ENV !== "production") && debugOptions && !isSSR) { | ||
cRef.effect.onTrack = debugOptions.onTrack; | ||
cRef.effect.onTrigger = debugOptions.onTrigger; | ||
} | ||
return cRef; | ||
@@ -1077,0 +984,0 @@ } |
@@ -15,5 +15,2 @@ (function (global, factory) { | ||
} | ||
!!(process.env.NODE_ENV !== "production") ? Object.freeze({}) : {}; | ||
!!(process.env.NODE_ENV !== "production") ? Object.freeze([]) : []; | ||
const NOOP = () => { | ||
@@ -36,18 +33,4 @@ }; | ||
const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; | ||
const cacheStringFunction = (fn) => { | ||
const cache = /* @__PURE__ */ Object.create(null); | ||
return (str) => { | ||
const hit = cache[str]; | ||
return hit || (cache[str] = fn(str)); | ||
}; | ||
}; | ||
const capitalize = cacheStringFunction( | ||
(str) => str.charAt(0).toUpperCase() + str.slice(1) | ||
); | ||
const hasChanged = (value, oldValue) => !Object.is(value, oldValue); | ||
function warn(msg, ...args) { | ||
console.warn(`[Vue warn] ${msg}`, ...args); | ||
} | ||
let activeEffectScope; | ||
@@ -88,4 +71,2 @@ class EffectScope { | ||
} | ||
} else if (!!(process.env.NODE_ENV !== "production")) { | ||
warn(`cannot run an inactive effect scope.`); | ||
} | ||
@@ -180,4 +161,4 @@ } | ||
let activeEffect; | ||
const ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== "production") ? "iterate" : ""); | ||
const MAP_KEY_ITERATE_KEY = Symbol(!!(process.env.NODE_ENV !== "production") ? "Map key iterate" : ""); | ||
const ITERATE_KEY = Symbol(""); | ||
const MAP_KEY_ITERATE_KEY = Symbol(""); | ||
class ReactiveEffect { | ||
@@ -286,4 +267,3 @@ constructor(fn, scheduler = null, scope) { | ||
} | ||
const eventInfo = !!(process.env.NODE_ENV !== "production") ? { effect: activeEffect, target, type, key } : void 0; | ||
trackEffects(dep, eventInfo); | ||
trackEffects(dep); | ||
} | ||
@@ -304,12 +284,2 @@ } | ||
activeEffect.deps.push(dep); | ||
if (!!(process.env.NODE_ENV !== "production") && activeEffect.onTrack) { | ||
activeEffect.onTrack( | ||
extend( | ||
{ | ||
effect: activeEffect | ||
}, | ||
debuggerEventExtraInfo | ||
) | ||
); | ||
} | ||
} | ||
@@ -362,8 +332,5 @@ } | ||
} | ||
const eventInfo = !!(process.env.NODE_ENV !== "production") ? { target, type, key, newValue, oldValue, oldTarget } : void 0; | ||
if (deps.length === 1) { | ||
if (deps[0]) { | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
triggerEffects(deps[0], eventInfo); | ||
} else { | ||
{ | ||
triggerEffects(deps[0]); | ||
@@ -379,5 +346,3 @@ } | ||
} | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
triggerEffects(createDep(effects), eventInfo); | ||
} else { | ||
{ | ||
triggerEffects(createDep(effects)); | ||
@@ -391,3 +356,3 @@ } | ||
if (effect2.computed) { | ||
triggerEffect(effect2, debuggerEventExtraInfo); | ||
triggerEffect(effect2); | ||
} | ||
@@ -397,3 +362,3 @@ } | ||
if (!effect2.computed) { | ||
triggerEffect(effect2, debuggerEventExtraInfo); | ||
triggerEffect(effect2); | ||
} | ||
@@ -404,5 +369,2 @@ } | ||
if (effect2 !== activeEffect || effect2.allowRecurse) { | ||
if (!!(process.env.NODE_ENV !== "production") && effect2.onTrigger) { | ||
effect2.onTrigger(extend({ effect: effect2 }, debuggerEventExtraInfo)); | ||
} | ||
if (effect2.scheduler) { | ||
@@ -518,3 +480,3 @@ effect2.scheduler(); | ||
} else if (hasChanged(value, oldValue)) { | ||
trigger(target, "set", key, value, oldValue); | ||
trigger(target, "set", key, value); | ||
} | ||
@@ -527,6 +489,6 @@ } | ||
const hadKey = hasOwn(target, key); | ||
const oldValue = target[key]; | ||
target[key]; | ||
const result = Reflect.deleteProperty(target, key); | ||
if (result && hadKey) { | ||
trigger(target, "delete", key, void 0, oldValue); | ||
trigger(target, "delete", key, void 0); | ||
} | ||
@@ -556,17 +518,5 @@ return result; | ||
set(target, key) { | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
warn( | ||
`Set operation on key "${String(key)}" failed: target is readonly.`, | ||
target | ||
); | ||
} | ||
return true; | ||
}, | ||
deleteProperty(target, key) { | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
warn( | ||
`Delete operation on key "${String(key)}" failed: target is readonly.`, | ||
target | ||
); | ||
} | ||
return true; | ||
@@ -642,4 +592,2 @@ } | ||
hadKey = has2.call(target, key); | ||
} else if (!!(process.env.NODE_ENV !== "production")) { | ||
checkIdentityKeys(target, has2, key); | ||
} | ||
@@ -651,3 +599,3 @@ const oldValue = get2.call(target, key); | ||
} else if (hasChanged(value, oldValue)) { | ||
trigger(target, "set", key, value, oldValue); | ||
trigger(target, "set", key, value); | ||
} | ||
@@ -663,9 +611,7 @@ return this; | ||
hadKey = has2.call(target, key); | ||
} else if (!!(process.env.NODE_ENV !== "production")) { | ||
checkIdentityKeys(target, has2, key); | ||
} | ||
const oldValue = get2 ? get2.call(target, key) : void 0; | ||
get2 ? get2.call(target, key) : void 0; | ||
const result = target.delete(key); | ||
if (hadKey) { | ||
trigger(target, "delete", key, void 0, oldValue); | ||
trigger(target, "delete", key, void 0); | ||
} | ||
@@ -677,6 +623,5 @@ return result; | ||
const hadItems = target.size !== 0; | ||
const oldTarget = !!(process.env.NODE_ENV !== "production") ? isMap(target) ? new Map(target) : new Set(target) : void 0; | ||
const result = target.clear(); | ||
if (hadItems) { | ||
trigger(target, "clear", void 0, void 0, oldTarget); | ||
trigger(target, "clear", void 0, void 0); | ||
} | ||
@@ -729,9 +674,2 @@ return result; | ||
return function(...args) { | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
const key = args[0] ? `on key "${args[0]}" ` : ``; | ||
console.warn( | ||
`${capitalize(type)} operation ${key}failed: target is readonly.`, | ||
toRaw(this) | ||
); | ||
} | ||
return type === "delete" ? false : this; | ||
@@ -863,11 +801,2 @@ }; | ||
}; | ||
function checkIdentityKeys(target, has2, key) { | ||
const rawKey = toRaw(key); | ||
if (rawKey !== key && has2.call(target, rawKey)) { | ||
const type = toRawType(target); | ||
console.warn( | ||
`Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` | ||
); | ||
} | ||
} | ||
@@ -927,5 +856,2 @@ const reactiveMap = /* @__PURE__ */ new WeakMap(); | ||
if (!isObject(target)) { | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
console.warn(`value cannot be made reactive: ${String(target)}`); | ||
} | ||
return target; | ||
@@ -967,9 +893,3 @@ } | ||
ref2 = toRaw(ref2); | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
trackEffects(ref2.dep || (ref2.dep = createDep()), { | ||
target: ref2, | ||
type: "get", | ||
key: "value" | ||
}); | ||
} else { | ||
{ | ||
trackEffects(ref2.dep || (ref2.dep = createDep())); | ||
@@ -983,10 +903,3 @@ } | ||
if (dep) { | ||
if (!!(process.env.NODE_ENV !== "production")) { | ||
triggerEffects(dep, { | ||
target: ref2, | ||
type: "set", | ||
key: "value", | ||
newValue: newVal | ||
}); | ||
} else { | ||
{ | ||
triggerEffects(dep); | ||
@@ -1026,3 +939,3 @@ } | ||
this._value = useDirectValue ? newVal : toReactive(newVal); | ||
triggerRefValue(this, newVal); | ||
triggerRefValue(this); | ||
} | ||
@@ -1068,5 +981,3 @@ } | ||
getter = getterOrOptions; | ||
setter = !!(process.env.NODE_ENV !== "production") ? () => { | ||
console.warn("Write operation failed: computed value is readonly"); | ||
} : NOOP; | ||
setter = NOOP; | ||
} else { | ||
@@ -1077,6 +988,2 @@ getter = getterOrOptions.get; | ||
const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); | ||
if (!!(process.env.NODE_ENV !== "production") && debugOptions && !isSSR) { | ||
cRef.effect.onTrack = debugOptions.onTrack; | ||
cRef.effect.onTrigger = debugOptions.onTrigger; | ||
} | ||
return cRef; | ||
@@ -1083,0 +990,0 @@ } |
{ | ||
"name": "stimulus-reactive", | ||
"version": "0.1.3", | ||
"version": "0.1.4", | ||
"description": "Reactivity for the Stimulus you already have.", | ||
@@ -39,2 +39,3 @@ "repository": { | ||
"@rollup/plugin-node-resolve": "^15.0.1", | ||
"@rollup/plugin-replace": "^5.0.4", | ||
"@rollup/plugin-typescript": "^9.0.2", | ||
@@ -41,0 +42,0 @@ "@testing-library/dom": "^9.3.3", |
@@ -8,2 +8,4 @@ [![version(scoped)](https://img.shields.io/npm/v/stimulus-reactive.svg)](https://www.npmjs.com/package/stimulus-reactive) | ||
#### View the [Shopping Cart Demo](https://ajaishankar.github.io/stimulus-reactive/) and the [Controllers](https://github.com/ajaishankar/stimulus-reactive/blob/main/docs/) | ||
When you love the refreshing simplicity of Stimulus but miss the reactivity of other big frameworks. | ||
@@ -10,0 +12,0 @@ |
95
70905
22
2162