opshot 0.5.1 → 0.5.2
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 +76 -74
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -257,9 +257,83 @@ function evict(handle, node) {
|
|
|
257
257
|
cascade(handle, rawNode, membership.keys);
|
|
258
258
|
}
|
|
259
259
|
|
|
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
|
+
|
|
260
332
|
// src/handle.ts
|
|
261
333
|
function handleOf(state) {
|
|
262
|
-
const
|
|
334
|
+
const peeled = peelReadProxy(state);
|
|
335
|
+
if (!isObjectLike(peeled)) return void 0;
|
|
336
|
+
const raw = rawOf(peeled);
|
|
263
337
|
const record = recordOf(raw);
|
|
264
338
|
if (record === void 0) return void 0;
|
|
265
339
|
for (const handle of record.memberships.keys()) {
|
|
@@ -395,9 +469,6 @@ function flushWindow(handle) {
|
|
|
395
469
|
drainDeliveries();
|
|
396
470
|
}
|
|
397
471
|
|
|
398
|
-
// src/utils/predicates.ts
|
|
399
|
-
var isObjectLike = (value) => value !== null && (typeof value === "object" || typeof value === "function");
|
|
400
|
-
|
|
401
472
|
// src/proxy.ts
|
|
402
473
|
var prototypeFunctionOf = (target, key) => {
|
|
403
474
|
for (let holder = Reflect.getPrototypeOf(target); holder !== null; holder = Reflect.getPrototypeOf(holder)) {
|
|
@@ -591,7 +662,7 @@ var handler = {
|
|
|
591
662
|
// src/createMutableState.ts
|
|
592
663
|
installProxyHandler(handler);
|
|
593
664
|
function createMutableState(properties, options) {
|
|
594
|
-
const incoming = properties;
|
|
665
|
+
const incoming = peelReadProxy(properties);
|
|
595
666
|
if (typeof incoming !== "object" || incoming === null) return properties;
|
|
596
667
|
if (isIgnored(incoming)) return properties;
|
|
597
668
|
if (Object.isFrozen(incoming)) return properties;
|
|
@@ -612,75 +683,6 @@ function createMutableState(properties, options) {
|
|
|
612
683
|
return proxy;
|
|
613
684
|
}
|
|
614
685
|
|
|
615
|
-
// src/identity.ts
|
|
616
|
-
var readProxyTargets = /* @__PURE__ */ new WeakMap();
|
|
617
|
-
var identityRecords = /* @__PURE__ */ new WeakMap();
|
|
618
|
-
var nextInternId = 0;
|
|
619
|
-
var registerReadProxyTarget = (readProxy, target) => {
|
|
620
|
-
readProxyTargets.set(readProxy, target);
|
|
621
|
-
};
|
|
622
|
-
var getRegisteredReadProxyTarget = (readProxy) => readProxyTargets.get(readProxy);
|
|
623
|
-
function resolveIdentity(value) {
|
|
624
|
-
let current = value;
|
|
625
|
-
while (isObjectLike(current)) {
|
|
626
|
-
const readTarget = getRegisteredReadProxyTarget(current);
|
|
627
|
-
if (readTarget !== void 0 && readTarget !== current) {
|
|
628
|
-
current = readTarget;
|
|
629
|
-
continue;
|
|
630
|
-
}
|
|
631
|
-
const raw = rawOf(current);
|
|
632
|
-
if (raw !== current) {
|
|
633
|
-
current = raw;
|
|
634
|
-
continue;
|
|
635
|
-
}
|
|
636
|
-
break;
|
|
637
|
-
}
|
|
638
|
-
return current;
|
|
639
|
-
}
|
|
640
|
-
var recordFor = (key) => {
|
|
641
|
-
let record = identityRecords.get(key);
|
|
642
|
-
if (record === void 0) {
|
|
643
|
-
record = {};
|
|
644
|
-
identityRecords.set(key, record);
|
|
645
|
-
}
|
|
646
|
-
return record;
|
|
647
|
-
};
|
|
648
|
-
function identify(value) {
|
|
649
|
-
const target = resolveIdentity(value);
|
|
650
|
-
if (!isObjectLike(target)) return value;
|
|
651
|
-
const record = recordFor(target);
|
|
652
|
-
if (record.token !== void 0) return record.token;
|
|
653
|
-
const token = Object.freeze({});
|
|
654
|
-
record.token = token;
|
|
655
|
-
return token;
|
|
656
|
-
}
|
|
657
|
-
var internIdentity = (key) => {
|
|
658
|
-
const resolved = resolveIdentity(key);
|
|
659
|
-
const record = recordFor(resolved);
|
|
660
|
-
if (record.id !== void 0) return record.id;
|
|
661
|
-
const id = nextInternId;
|
|
662
|
-
nextInternId += 1;
|
|
663
|
-
record.id = id;
|
|
664
|
-
return id;
|
|
665
|
-
};
|
|
666
|
-
function isSameIdentity(first, second) {
|
|
667
|
-
const resolvedFirst = resolveIdentity(first);
|
|
668
|
-
const resolvedSecond = resolveIdentity(second);
|
|
669
|
-
return resolvedFirst === resolvedSecond;
|
|
670
|
-
}
|
|
671
|
-
|
|
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
686
|
// src/isState.ts
|
|
685
687
|
function isState(value) {
|
|
686
688
|
const resolved = peelReadProxy(value);
|
package/package.json
CHANGED