opshot 0.5.2 → 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.
- package/dist/index.js +78 -77
- 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
|
-
|
|
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);
|
|
@@ -257,83 +280,9 @@ function evict(handle, node) {
|
|
|
257
280
|
cascade(handle, rawNode, membership.keys);
|
|
258
281
|
}
|
|
259
282
|
|
|
260
|
-
// src/utils/predicates.ts
|
|
261
|
-
var isObjectLike = (value) => value !== null && (typeof value === "object" || typeof value === "function");
|
|
262
|
-
|
|
263
|
-
// src/identity.ts
|
|
264
|
-
var readProxyTargets = /* @__PURE__ */ new WeakMap();
|
|
265
|
-
var identityRecords = /* @__PURE__ */ new WeakMap();
|
|
266
|
-
var nextInternId = 0;
|
|
267
|
-
var registerReadProxyTarget = (readProxy, target) => {
|
|
268
|
-
readProxyTargets.set(readProxy, target);
|
|
269
|
-
};
|
|
270
|
-
var getRegisteredReadProxyTarget = (readProxy) => readProxyTargets.get(readProxy);
|
|
271
|
-
function resolveIdentity(value) {
|
|
272
|
-
let current = value;
|
|
273
|
-
while (isObjectLike(current)) {
|
|
274
|
-
const readTarget = getRegisteredReadProxyTarget(current);
|
|
275
|
-
if (readTarget !== void 0 && readTarget !== current) {
|
|
276
|
-
current = readTarget;
|
|
277
|
-
continue;
|
|
278
|
-
}
|
|
279
|
-
const raw = rawOf(current);
|
|
280
|
-
if (raw !== current) {
|
|
281
|
-
current = raw;
|
|
282
|
-
continue;
|
|
283
|
-
}
|
|
284
|
-
break;
|
|
285
|
-
}
|
|
286
|
-
return current;
|
|
287
|
-
}
|
|
288
|
-
var recordFor = (key) => {
|
|
289
|
-
let record = identityRecords.get(key);
|
|
290
|
-
if (record === void 0) {
|
|
291
|
-
record = {};
|
|
292
|
-
identityRecords.set(key, record);
|
|
293
|
-
}
|
|
294
|
-
return record;
|
|
295
|
-
};
|
|
296
|
-
function identify(value) {
|
|
297
|
-
const target = resolveIdentity(value);
|
|
298
|
-
if (!isObjectLike(target)) return value;
|
|
299
|
-
const record = recordFor(target);
|
|
300
|
-
if (record.token !== void 0) return record.token;
|
|
301
|
-
const token = Object.freeze({});
|
|
302
|
-
record.token = token;
|
|
303
|
-
return token;
|
|
304
|
-
}
|
|
305
|
-
var internIdentity = (key) => {
|
|
306
|
-
const resolved = resolveIdentity(key);
|
|
307
|
-
const record = recordFor(resolved);
|
|
308
|
-
if (record.id !== void 0) return record.id;
|
|
309
|
-
const id = nextInternId;
|
|
310
|
-
nextInternId += 1;
|
|
311
|
-
record.id = id;
|
|
312
|
-
return id;
|
|
313
|
-
};
|
|
314
|
-
function isSameIdentity(first, second) {
|
|
315
|
-
const resolvedFirst = resolveIdentity(first);
|
|
316
|
-
const resolvedSecond = resolveIdentity(second);
|
|
317
|
-
return resolvedFirst === resolvedSecond;
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
// src/peelReadProxy.ts
|
|
321
|
-
function peelReadProxy(value) {
|
|
322
|
-
if (!isObjectLike(value)) return value;
|
|
323
|
-
let current = value;
|
|
324
|
-
while (isObjectLike(current)) {
|
|
325
|
-
const registeredTarget = getRegisteredReadProxyTarget(current);
|
|
326
|
-
if (registeredTarget === void 0) break;
|
|
327
|
-
current = registeredTarget;
|
|
328
|
-
}
|
|
329
|
-
return current;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
283
|
// src/handle.ts
|
|
333
284
|
function handleOf(state) {
|
|
334
|
-
const
|
|
335
|
-
if (!isObjectLike(peeled)) return void 0;
|
|
336
|
-
const raw = rawOf(peeled);
|
|
285
|
+
const raw = rawOf(state);
|
|
337
286
|
const record = recordOf(raw);
|
|
338
287
|
if (record === void 0) return void 0;
|
|
339
288
|
for (const handle of record.memberships.keys()) {
|
|
@@ -683,6 +632,58 @@ function createMutableState(properties, options) {
|
|
|
683
632
|
return proxy;
|
|
684
633
|
}
|
|
685
634
|
|
|
635
|
+
// src/identity.ts
|
|
636
|
+
var identityRecords = /* @__PURE__ */ new WeakMap();
|
|
637
|
+
var nextInternId = 0;
|
|
638
|
+
function resolveIdentity(value) {
|
|
639
|
+
let current = value;
|
|
640
|
+
while (isObjectLike(current)) {
|
|
641
|
+
const readTarget = getRegisteredReadProxyTarget(current);
|
|
642
|
+
if (readTarget !== void 0 && readTarget !== current) {
|
|
643
|
+
current = readTarget;
|
|
644
|
+
continue;
|
|
645
|
+
}
|
|
646
|
+
const raw = rawOf(current);
|
|
647
|
+
if (raw !== current) {
|
|
648
|
+
current = raw;
|
|
649
|
+
continue;
|
|
650
|
+
}
|
|
651
|
+
break;
|
|
652
|
+
}
|
|
653
|
+
return current;
|
|
654
|
+
}
|
|
655
|
+
var recordFor = (key) => {
|
|
656
|
+
let record = identityRecords.get(key);
|
|
657
|
+
if (record === void 0) {
|
|
658
|
+
record = {};
|
|
659
|
+
identityRecords.set(key, record);
|
|
660
|
+
}
|
|
661
|
+
return record;
|
|
662
|
+
};
|
|
663
|
+
function identify(value) {
|
|
664
|
+
const target = resolveIdentity(value);
|
|
665
|
+
if (!isObjectLike(target)) return value;
|
|
666
|
+
const record = recordFor(target);
|
|
667
|
+
if (record.token !== void 0) return record.token;
|
|
668
|
+
const token = Object.freeze({});
|
|
669
|
+
record.token = token;
|
|
670
|
+
return token;
|
|
671
|
+
}
|
|
672
|
+
var internIdentity = (key) => {
|
|
673
|
+
const resolved = resolveIdentity(key);
|
|
674
|
+
const record = recordFor(resolved);
|
|
675
|
+
if (record.id !== void 0) return record.id;
|
|
676
|
+
const id = nextInternId;
|
|
677
|
+
nextInternId += 1;
|
|
678
|
+
record.id = id;
|
|
679
|
+
return id;
|
|
680
|
+
};
|
|
681
|
+
function isSameIdentity(first, second) {
|
|
682
|
+
const resolvedFirst = resolveIdentity(first);
|
|
683
|
+
const resolvedSecond = resolveIdentity(second);
|
|
684
|
+
return resolvedFirst === resolvedSecond;
|
|
685
|
+
}
|
|
686
|
+
|
|
686
687
|
// src/isState.ts
|
|
687
688
|
function isState(value) {
|
|
688
689
|
const resolved = peelReadProxy(value);
|
package/package.json
CHANGED