opshot 0.5.1 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +26 -23
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -98,6 +98,28 @@ function classifyValue(value) {
98
98
  return classifyChain(value.constructor);
99
99
  }
100
100
 
101
+ // src/readProxyRegistry.ts
102
+ var readProxyTargets = /* @__PURE__ */ new WeakMap();
103
+ var registerReadProxyTarget = (readProxy, target) => {
104
+ readProxyTargets.set(readProxy, target);
105
+ };
106
+ var getRegisteredReadProxyTarget = (readProxy) => readProxyTargets.get(readProxy);
107
+
108
+ // src/utils/predicates.ts
109
+ var isObjectLike = (value) => value !== null && (typeof value === "object" || typeof value === "function");
110
+
111
+ // src/peelReadProxy.ts
112
+ function peelReadProxy(value) {
113
+ if (!isObjectLike(value)) return value;
114
+ let current = value;
115
+ while (isObjectLike(current)) {
116
+ const registeredTarget = getRegisteredReadProxyTarget(current);
117
+ if (registeredTarget === void 0) break;
118
+ current = registeredTarget;
119
+ }
120
+ return current;
121
+ }
122
+
101
123
  // src/node.ts
102
124
  var byRaw = /* @__PURE__ */ new WeakMap();
103
125
  var byProxy = /* @__PURE__ */ new WeakMap();
@@ -106,10 +128,11 @@ function installProxyHandler(handler2) {
106
128
  proxyHandler = handler2;
107
129
  }
108
130
  function recordOf(value) {
109
- return byRaw.get(value) ?? byProxy.get(value);
131
+ const peeled = peelReadProxy(value);
132
+ return byRaw.get(peeled) ?? byProxy.get(peeled);
110
133
  }
111
134
  function rawOf(value) {
112
- return recordOf(value)?.raw ?? value;
135
+ return recordOf(value)?.raw ?? peelReadProxy(value);
113
136
  }
114
137
  function proxyOf(raw) {
115
138
  const existing = recordOf(raw);
@@ -395,9 +418,6 @@ function flushWindow(handle) {
395
418
  drainDeliveries();
396
419
  }
397
420
 
398
- // src/utils/predicates.ts
399
- var isObjectLike = (value) => value !== null && (typeof value === "object" || typeof value === "function");
400
-
401
421
  // src/proxy.ts
402
422
  var prototypeFunctionOf = (target, key) => {
403
423
  for (let holder = Reflect.getPrototypeOf(target); holder !== null; holder = Reflect.getPrototypeOf(holder)) {
@@ -591,7 +611,7 @@ var handler = {
591
611
  // src/createMutableState.ts
592
612
  installProxyHandler(handler);
593
613
  function createMutableState(properties, options) {
594
- const incoming = properties;
614
+ const incoming = peelReadProxy(properties);
595
615
  if (typeof incoming !== "object" || incoming === null) return properties;
596
616
  if (isIgnored(incoming)) return properties;
597
617
  if (Object.isFrozen(incoming)) return properties;
@@ -613,13 +633,8 @@ function createMutableState(properties, options) {
613
633
  }
614
634
 
615
635
  // src/identity.ts
616
- var readProxyTargets = /* @__PURE__ */ new WeakMap();
617
636
  var identityRecords = /* @__PURE__ */ new WeakMap();
618
637
  var nextInternId = 0;
619
- var registerReadProxyTarget = (readProxy, target) => {
620
- readProxyTargets.set(readProxy, target);
621
- };
622
- var getRegisteredReadProxyTarget = (readProxy) => readProxyTargets.get(readProxy);
623
638
  function resolveIdentity(value) {
624
639
  let current = value;
625
640
  while (isObjectLike(current)) {
@@ -669,18 +684,6 @@ function isSameIdentity(first, second) {
669
684
  return resolvedFirst === resolvedSecond;
670
685
  }
671
686
 
672
- // src/peelReadProxy.ts
673
- function peelReadProxy(value) {
674
- if (!isObjectLike(value)) return value;
675
- let current = value;
676
- while (isObjectLike(current)) {
677
- const registeredTarget = getRegisteredReadProxyTarget(current);
678
- if (registeredTarget === void 0) break;
679
- current = registeredTarget;
680
- }
681
- return current;
682
- }
683
-
684
687
  // src/isState.ts
685
688
  function isState(value) {
686
689
  const resolved = peelReadProxy(value);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opshot",
3
- "version": "0.5.1",
3
+ "version": "0.5.3",
4
4
  "description": "Plain-object state for React: mutate it directly, re-render only the components that read what changed, and track every change operation",
5
5
  "type": "module",
6
6
  "exports": {