@derivesome/core 1.0.3 → 1.0.4
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/.package.json.~undo-tree~ +3 -2
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/map-proxy.d.ts +25 -0
- package/dist/cjs/map-proxy.d.ts.map +1 -0
- package/dist/cjs/map-proxy.js +80 -0
- package/dist/cjs/map-proxy.js.map +1 -0
- package/dist/cjs/reference.d.ts.map +1 -1
- package/dist/cjs/reference.js +3 -2
- package/dist/cjs/reference.js.map +1 -1
- package/dist/cjs/set-proxy.d.ts +26 -0
- package/dist/cjs/set-proxy.d.ts.map +1 -0
- package/dist/cjs/set-proxy.js +80 -0
- package/dist/cjs/set-proxy.js.map +1 -0
- package/dist/cjs/utils/maybeProxy.d.ts +2 -0
- package/dist/cjs/utils/maybeProxy.d.ts.map +1 -0
- package/dist/cjs/utils/maybeProxy.js +18 -0
- package/dist/cjs/utils/maybeProxy.js.map +1 -0
- package/dist/cjs/utils/nextTick.d.ts +1 -1
- package/dist/cjs/utils/nextTick.d.ts.map +1 -1
- package/dist/cjs/utils/nextTick.js +1 -1
- package/dist/cjs/utils/nextTick.js.map +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/map-proxy.d.ts +25 -0
- package/dist/esm/map-proxy.d.ts.map +1 -0
- package/dist/esm/map-proxy.js +76 -0
- package/dist/esm/map-proxy.js.map +1 -0
- package/dist/esm/reference.d.ts.map +1 -1
- package/dist/esm/reference.js +3 -2
- package/dist/esm/reference.js.map +1 -1
- package/dist/esm/set-proxy.d.ts +26 -0
- package/dist/esm/set-proxy.d.ts.map +1 -0
- package/dist/esm/set-proxy.js +76 -0
- package/dist/esm/set-proxy.js.map +1 -0
- package/dist/esm/utils/maybeProxy.d.ts +2 -0
- package/dist/esm/utils/maybeProxy.d.ts.map +1 -0
- package/dist/esm/utils/maybeProxy.js +14 -0
- package/dist/esm/utils/maybeProxy.js.map +1 -0
- package/dist/esm/utils/nextTick.d.ts +1 -1
- package/dist/esm/utils/nextTick.d.ts.map +1 -1
- package/dist/esm/utils/nextTick.js +1 -1
- package/dist/esm/utils/nextTick.js.map +1 -1
- package/package.json +1 -1
- package/package.json~ +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
(undo-tree-save-format-version . 1)
|
|
2
|
-
"
|
|
2
|
+
"7b1ed97fa62deef5c5eed434118495fda5c02cef"
|
|
3
3
|
[nil nil nil nil (27032 58754 770434 840000) 0 nil]
|
|
4
4
|
([nil nil ((159 . 164) (t 27022 26469 975131 717000)) nil (27032 58754 770434 388000) 0 nil])
|
|
5
5
|
([nil nil ((nil rear-nonsticky nil 284 . 285) (nil fontified nil 164 . 285) (164 . 285) 163) nil (27032 58754 770434 101000) 0 nil])
|
|
@@ -34,5 +34,6 @@
|
|
|
34
34
|
" 0 2 (fontified t) 2 3 (fontified t)) . 487) (undo-tree-id695 . -2) (undo-tree-id696 . -2) (undo-tree-id697 . -2) (undo-tree-id698 . -2) (undo-tree-id699 . -2) (undo-tree-id700 . -2) (undo-tree-id701 . -2) (undo-tree-id702 . -2) (undo-tree-id703 . -2) (undo-tree-id704 . -2) (undo-tree-id705 . -2) (undo-tree-id706 . -2) (undo-tree-id707 . -2) (undo-tree-id708 . -2) (undo-tree-id709 . -2) (undo-tree-id710 . -2) (undo-tree-id711 . -2) (undo-tree-id712 . -2) (undo-tree-id713 . -2) (undo-tree-id714 . -2) (undo-tree-id715 . -2) (undo-tree-id716 . -2) (undo-tree-id717 . -2) (undo-tree-id718 . -2) (undo-tree-id719 . -2) (undo-tree-id720 . -2) (undo-tree-id721 . -2) (undo-tree-id722 . -2) (undo-tree-id723 . -2) (undo-tree-id724 . -2) (undo-tree-id725 . -1) (undo-tree-id726 . -1) (undo-tree-id727 . -1) (undo-tree-id728 . -1) (undo-tree-id729 . -1) (undo-tree-id730 . -1) (undo-tree-id731 . -1) (undo-tree-id732 . -1) (undo-tree-id733 . -1) (undo-tree-id734 . -1) (undo-tree-id735 . -1) (undo-tree-id736 . -1) (undo-tree-id737 . -1) (undo-tree-id738 . -1) (undo-tree-id739 . -1) (undo-tree-id740 . -1) (undo-tree-id741 . -1) (undo-tree-id742 . -1) (undo-tree-id743 . -1) (undo-tree-id744 . -1) (undo-tree-id745 . -1) (undo-tree-id746 . -1) (undo-tree-id747 . -1) (undo-tree-id748 . -1) (undo-tree-id749 . -1) (undo-tree-id750 . -1) (undo-tree-id751 . -1) (undo-tree-id752 . -1) (undo-tree-id753 . -1) (undo-tree-id754 . -1) (undo-tree-id755 . -1) (undo-tree-id756 . -1) (undo-tree-id757 . -1) (undo-tree-id758 . -1) (undo-tree-id759 . -1) (undo-tree-id760 . -1) (undo-tree-id761 . -3) 488) nil (27033 46883 911391 3000) 0 nil])
|
|
35
35
|
([nil nil ((51 . 52) (#("0" 0 1 (face font-lock-string-face fontified t)) . -51) (undo-tree-id762 . -1) (undo-tree-id763 . -1) (undo-tree-id764 . -1) (undo-tree-id765 . -1) (undo-tree-id766 . -1) (undo-tree-id767 . -1) (undo-tree-id768 . -1) (undo-tree-id769 . -1) (undo-tree-id770 . -1) (undo-tree-id771 . -1) (undo-tree-id772 . -1) (undo-tree-id773 . -1) (undo-tree-id774 . -1) (undo-tree-id775 . -1) (undo-tree-id776 . -1) (undo-tree-id777 . -1) (undo-tree-id778 . -1) (undo-tree-id779 . -1) (undo-tree-id780 . -1) (undo-tree-id781 . -1) (undo-tree-id782 . -1) (undo-tree-id783 . -1) (undo-tree-id784 . -1) (undo-tree-id785 . -1) (undo-tree-id786 . -1) (undo-tree-id787 . -1) (undo-tree-id788 . -1) (undo-tree-id789 . -1) (undo-tree-id790 . -1) (undo-tree-id791 . -1) (undo-tree-id792 . -1) (undo-tree-id793 . -1) (undo-tree-id794 . -1) (undo-tree-id795 . -1) 52 (t 27033 46887 578021 905000)) nil (27033 46890 313334 154000) 0 nil])
|
|
36
36
|
([nil nil ((51 . 52) (#("1" 0 1 (face font-lock-string-face fontified t)) . -51) (undo-tree-id796 . -1) (undo-tree-id797 . -1) (undo-tree-id798 . -1) (undo-tree-id799 . -1) (undo-tree-id800 . -1) (undo-tree-id801 . -1) (undo-tree-id802 . -1) (undo-tree-id803 . -1) (undo-tree-id804 . -1) (undo-tree-id805 . -1) (undo-tree-id806 . -1) (undo-tree-id807 . -1) (undo-tree-id808 . -1) (undo-tree-id809 . -1) (undo-tree-id810 . -1) (undo-tree-id811 . -1) (undo-tree-id812 . -1) 52 (t 27033 46890 313995 150000)) nil (27033 53445 27620 628000) 0 nil])
|
|
37
|
-
([nil
|
|
37
|
+
([nil nil ((51 . 52) (#("2" 0 1 (face font-lock-string-face fontified t)) . -51) (undo-tree-id813 . -1) (undo-tree-id814 . -1) (undo-tree-id815 . -1) (undo-tree-id816 . -1) (undo-tree-id817 . -1) (undo-tree-id818 . -1) (undo-tree-id819 . -1) (undo-tree-id820 . -1) (undo-tree-id821 . -1) (undo-tree-id822 . -1) (undo-tree-id823 . -1) (undo-tree-id824 . -1) (undo-tree-id825 . -1) (undo-tree-id826 . -1) (undo-tree-id827 . -1) (undo-tree-id828 . -1) (undo-tree-id829 . -1) 52 (t 27033 53445 24830 509000)) nil (27034 13246 10766 387000) 0 nil])
|
|
38
|
+
([nil current ((51 . 52) (#("3" 0 1 (face font-lock-string-face fontified t)) . -51) (undo-tree-id830 . -1) (undo-tree-id831 . -1) (undo-tree-id832 . -1) (undo-tree-id833 . -1) (undo-tree-id834 . -1) (undo-tree-id835 . -1) (undo-tree-id836 . -1) (undo-tree-id837 . -1) (undo-tree-id838 . -1) (undo-tree-id839 . -1) (undo-tree-id840 . -1) (undo-tree-id841 . -1) (undo-tree-id842 . -1) (undo-tree-id843 . -1) (undo-tree-id844 . -1) (undo-tree-id845 . -1) (undo-tree-id846 . -1) (undo-tree-id847 . -1) (undo-tree-id848 . -1) (undo-tree-id849 . -1) (undo-tree-id850 . -1) (undo-tree-id851 . -1) (undo-tree-id852 . -1) (undo-tree-id853 . -1) (undo-tree-id854 . -1) (undo-tree-id855 . -1) (undo-tree-id856 . -1) (undo-tree-id857 . -1) (undo-tree-id858 . -1) (undo-tree-id859 . -1) (undo-tree-id860 . -1) (undo-tree-id861 . -1) (undo-tree-id862 . -1) (undo-tree-id863 . -1) 52 (t 27034 13247 229384 598000)) nil (27034 15177 659861 877000) 0 nil])
|
|
38
39
|
nil
|
package/dist/cjs/index.d.ts
CHANGED
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -20,5 +20,7 @@ __exportStar(require("./effect"), exports);
|
|
|
20
20
|
__exportStar(require("./pubsub"), exports);
|
|
21
21
|
__exportStar(require("./reference"), exports);
|
|
22
22
|
__exportStar(require("./derived"), exports);
|
|
23
|
+
__exportStar(require("./map-proxy"), exports);
|
|
24
|
+
__exportStar(require("./set-proxy"), exports);
|
|
23
25
|
__exportStar(require("./utils"), exports);
|
|
24
26
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B;AAC5B,4CAA0B;AAC1B,0CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B;AAC5B,4CAA0B;AAC1B,8CAA4B;AAC5B,8CAA4B;AAC5B,0CAAwB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { SubscribeOptions, Subscription, VoidFunction } from "./common";
|
|
2
|
+
import { Effect } from "./effect";
|
|
3
|
+
import { Observable, OBSERVABLE } from "./observable";
|
|
4
|
+
export declare class MapProxy<K extends PropertyKey = PropertyKey, V extends any = any> extends Map<K, V> implements Observable<Record<K, V>> {
|
|
5
|
+
[OBSERVABLE]: true;
|
|
6
|
+
ps: import("./pubsub").PubSub<Record<K, V>>;
|
|
7
|
+
subscribers: Set<Subscription<Record<K, V>>>;
|
|
8
|
+
effects: Set<import("./common").VoidSyncOrAsyncFunction>;
|
|
9
|
+
publish: (value: Record<K, V>) => void;
|
|
10
|
+
publishAsync: (value: Record<K, V>) => Promise<void>;
|
|
11
|
+
subscribe: (fn: Subscription<Record<K, V>>, cleanup?: VoidFunction) => VoidFunction;
|
|
12
|
+
addEffect: (effect: VoidFunction, cleanup?: VoidFunction) => VoidFunction;
|
|
13
|
+
dispose: () => void;
|
|
14
|
+
constructor(...args: ConstructorParameters<typeof Map<K, V>>);
|
|
15
|
+
private getState;
|
|
16
|
+
addEffectDependency(fx: Effect): void;
|
|
17
|
+
observe(fn: Subscription<Record<K, V>>, options?: SubscribeOptions): VoidFunction;
|
|
18
|
+
set(key: K, value: V): this;
|
|
19
|
+
get(key: K): V | undefined;
|
|
20
|
+
delete(key: K): boolean;
|
|
21
|
+
entries(): MapIterator<[K, V]>;
|
|
22
|
+
keys(): MapIterator<K>;
|
|
23
|
+
values(): MapIterator<V>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=map-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-proxy.d.ts","sourceRoot":"","sources":["../../src/map-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGtD,qBAAa,QAAQ,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,CAAC,SAAS,GAAG,GAAG,GAAG,CAC5E,SAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAChB,YAAW,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAQ;IAC1B,EAAE,0CAA0B;IAC5B,WAAW,kCAAuB;IAClC,OAAO,kDAAmB;IAC1B,OAAO,gCAAmB;IAC1B,YAAY,yCAAwB;IACpC,SAAS,2EAAqB;IAC9B,SAAS,iEAAqB;IAC9B,OAAO,aAAmB;gBAEd,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAI5D,OAAO,CAAC,QAAQ;IAOhB,mBAAmB,CAAC,EAAE,EAAE,MAAM;IAI9B,OAAO,CACL,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC9B,OAAO,GAAE,gBAAqB,GAC7B,YAAY;IAOf,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IAapB,GAAG,CAAC,GAAG,EAAE,CAAC;IAMV,MAAM,CAAC,GAAG,EAAE,CAAC;IASb,OAAO;IAMP,IAAI;IAMJ,MAAM;CAKP"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MapProxy = void 0;
|
|
4
|
+
const common_1 = require("./common");
|
|
5
|
+
const context_1 = require("./context");
|
|
6
|
+
const observable_1 = require("./observable");
|
|
7
|
+
const pubsub_1 = require("./pubsub");
|
|
8
|
+
class MapProxy extends Map {
|
|
9
|
+
[observable_1.OBSERVABLE] = true;
|
|
10
|
+
ps = (0, pubsub_1.pubsub)();
|
|
11
|
+
subscribers = this.ps.subscribers;
|
|
12
|
+
effects = this.ps.effects;
|
|
13
|
+
publish = this.ps.publish;
|
|
14
|
+
publishAsync = this.ps.publishAsync;
|
|
15
|
+
subscribe = this.ps.subscribe;
|
|
16
|
+
addEffect = this.ps.addEffect;
|
|
17
|
+
dispose = this.ps.dispose;
|
|
18
|
+
constructor(...args) {
|
|
19
|
+
super(...args);
|
|
20
|
+
}
|
|
21
|
+
getState() {
|
|
22
|
+
const state = {
|
|
23
|
+
...Object.fromEntries(Array.from(super.entries())),
|
|
24
|
+
};
|
|
25
|
+
return state;
|
|
26
|
+
}
|
|
27
|
+
addEffectDependency(fx) {
|
|
28
|
+
this.ps.addEffect(fx.run, fx.cleanup);
|
|
29
|
+
}
|
|
30
|
+
observe(fn, options = {}) {
|
|
31
|
+
if (options.immediate) {
|
|
32
|
+
fn(this.getState());
|
|
33
|
+
}
|
|
34
|
+
return this.ps.subscribe(fn, options.cleanup);
|
|
35
|
+
}
|
|
36
|
+
set(key, value) {
|
|
37
|
+
const prev = super.get(key);
|
|
38
|
+
const next = value;
|
|
39
|
+
const result = super.set(key, value);
|
|
40
|
+
if (!(0, common_1.compare)(next, prev)) {
|
|
41
|
+
const state = { ...this.getState(), [key]: value };
|
|
42
|
+
this.ps.publish(state);
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
get(key) {
|
|
47
|
+
const fx = context_1.Context.scope.current.effect;
|
|
48
|
+
if (fx)
|
|
49
|
+
this.addEffectDependency(fx);
|
|
50
|
+
return super.get(key);
|
|
51
|
+
}
|
|
52
|
+
delete(key) {
|
|
53
|
+
const didHave = super.has(key);
|
|
54
|
+
const result = super.delete(key);
|
|
55
|
+
if (didHave) {
|
|
56
|
+
this.ps.publish(this.getState());
|
|
57
|
+
}
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
entries() {
|
|
61
|
+
const fx = context_1.Context.scope.current.effect;
|
|
62
|
+
if (fx)
|
|
63
|
+
this.addEffectDependency(fx);
|
|
64
|
+
return super.entries();
|
|
65
|
+
}
|
|
66
|
+
keys() {
|
|
67
|
+
const fx = context_1.Context.scope.current.effect;
|
|
68
|
+
if (fx)
|
|
69
|
+
this.addEffectDependency(fx);
|
|
70
|
+
return super.keys();
|
|
71
|
+
}
|
|
72
|
+
values() {
|
|
73
|
+
const fx = context_1.Context.scope.current.effect;
|
|
74
|
+
if (fx)
|
|
75
|
+
this.addEffectDependency(fx);
|
|
76
|
+
return super.values();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.MapProxy = MapProxy;
|
|
80
|
+
//# sourceMappingURL=map-proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-proxy.js","sourceRoot":"","sources":["../../src/map-proxy.ts"],"names":[],"mappings":";;;AAAA,qCAKkB;AAClB,uCAAoC;AAEpC,6CAAsD;AACtD,qCAAkC;AAElC,MAAa,QACX,SAAQ,GAAS;IAGjB,CAAC,uBAAU,CAAC,GAAS,IAAI,CAAC;IAC1B,EAAE,GAAG,IAAA,eAAM,GAAgB,CAAC;IAC5B,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC;IAClC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;IAC1B,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;IAC1B,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;IACpC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;IAC9B,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;IAC9B,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;IAE1B,YAAY,GAAG,IAA6C;QAC1D,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACjB,CAAC;IAEO,QAAQ;QACd,MAAM,KAAK,GAAG;YACZ,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SACnC,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mBAAmB,CAAC,EAAU;QAC5B,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,CACL,EAA8B,EAC9B,UAA4B,EAAE;QAE9B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC;QACnB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAErC,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAkB,CAAC;YACnE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,GAAM;QACR,MAAM,EAAE,GAAG,iBAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC,IAAI,EAAE;YAAE,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,GAAM;QACX,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO;QACL,MAAM,EAAE,GAAG,iBAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC,IAAI,EAAE;YAAE,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,IAAI;QACF,MAAM,EAAE,GAAG,iBAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC,IAAI,EAAE;YAAE,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,GAAG,iBAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC,IAAI,EAAE;YAAE,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;CACF;AApFD,4BAoFC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../src/reference.ts"],"names":[],"mappings":"AAGA,OAAO,EAAS,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EAAc,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../src/reference.ts"],"names":[],"mappings":"AAGA,OAAO,EAAS,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EAAc,UAAU,EAAE,MAAM,cAAc,CAAC;AAItD,eAAO,MAAM,SAAS,eAAsB,CAAC;AAC7C,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC;AAEzC,MAAM,WAAW,SAAS,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IACjD,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC,CAAC;IACb,GAAG,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC,CAAC;CACf;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAoC7C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7D,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AACjE,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/cjs/reference.js
CHANGED
|
@@ -9,10 +9,11 @@ const is_1 = require("./common/is");
|
|
|
9
9
|
const context_1 = require("./context");
|
|
10
10
|
const observable_1 = require("./observable");
|
|
11
11
|
const pubsub_1 = require("./pubsub");
|
|
12
|
+
const maybeProxy_1 = require("./utils/maybeProxy");
|
|
12
13
|
exports.REFERENCE = Symbol("Reference");
|
|
13
14
|
function ref(value) {
|
|
14
15
|
const ps = (0, pubsub_1.pubsub)();
|
|
15
|
-
const state = { value };
|
|
16
|
+
const state = { value: (0, maybeProxy_1.maybeProxy)(value) };
|
|
16
17
|
const obs = (0, observable_1.observable)(state, ps);
|
|
17
18
|
const addEffectDependency = (fx) => {
|
|
18
19
|
ps.addEffect(fx.run, fx.cleanup);
|
|
@@ -25,7 +26,7 @@ function ref(value) {
|
|
|
25
26
|
};
|
|
26
27
|
const set = (fn) => {
|
|
27
28
|
const prev = state.value;
|
|
28
|
-
const next = (0, is_1.isFunction)(fn) ? fn(state.value) : fn;
|
|
29
|
+
const next = (0, maybeProxy_1.maybeProxy)((0, is_1.isFunction)(fn) ? fn(state.value) : fn);
|
|
29
30
|
if (!(0, compare_1.compare)(next, prev)) {
|
|
30
31
|
state.value = next;
|
|
31
32
|
ps.publish(state.value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/reference.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/reference.ts"],"names":[],"mappings":";;;AAoBA,kBAoCC;AAKD,kCAEC;AA/DD,qCAA+B;AAC/B,8CAA2C;AAC3C,oCAAyC;AAEzC,uCAAoC;AAEpC,6CAAsD;AACtD,qCAAkC;AAClC,mDAAgD;AAEnC,QAAA,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAU7C,SAAgB,GAAG,CAAI,KAAQ;IAC7B,MAAM,EAAE,GAAG,IAAA,eAAM,GAAK,CAAC;IACvB,MAAM,KAAK,GAAa,EAAE,KAAK,EAAE,IAAA,uBAAU,EAAC,KAAK,CAAC,EAAE,CAAC;IACrD,MAAM,GAAG,GAAG,IAAA,uBAAU,EAAI,KAAK,EAAE,EAAE,CAAC,CAAC;IAErC,MAAM,mBAAmB,GAAG,CAAC,EAAU,EAAE,EAAE;QACzC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,GAAM,EAAE;QAClB,MAAM,EAAE,GAAG,iBAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC,IAAI,EAAE;YAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,GAAG,GAAgC,CAAC,EAAE,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,MAAM,IAAI,GAAG,IAAA,uBAAU,EAAC,IAAA,eAAU,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAA,iBAAO,EAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;YACnB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAM,EAAE;QACnB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC;IAEF,OAAO;QACL,CAAC,iBAAS,CAAC,EAAE,IAAI;QACjB,GAAG,EAAE;QACL,GAAG,GAAG;QACN,GAAG;QACH,GAAG;QACH,IAAI;KACL,CAAC;AACJ,CAAC;AAKD,SAAgB,WAAW,CAAC,CAAU;IACpC,OAAO,IAAA,YAAG,EAAC,CAAC,EAAE,iBAAS,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { SubscribeOptions, Subscription, VoidFunction } from "./common";
|
|
2
|
+
import { Effect } from "./effect";
|
|
3
|
+
import { Observable, OBSERVABLE } from "./observable";
|
|
4
|
+
export declare class SetProxy<V = any> extends Set<V> implements Observable<Set<V>> {
|
|
5
|
+
[OBSERVABLE]: true;
|
|
6
|
+
ps: import("./pubsub").PubSub<Set<V>>;
|
|
7
|
+
subscribers: Set<Subscription<Set<V>>>;
|
|
8
|
+
effects: Set<import("./common").VoidSyncOrAsyncFunction>;
|
|
9
|
+
publish: (value: Set<V>) => void;
|
|
10
|
+
publishAsync: (value: Set<V>) => Promise<void>;
|
|
11
|
+
subscribe: (fn: Subscription<Set<V>>, cleanup?: VoidFunction) => VoidFunction;
|
|
12
|
+
addEffect: (effect: VoidFunction, cleanup?: VoidFunction) => VoidFunction;
|
|
13
|
+
dispose: () => void;
|
|
14
|
+
constructor(...args: ConstructorParameters<typeof Set<V>>);
|
|
15
|
+
private getState;
|
|
16
|
+
addEffectDependency(fx: Effect): void;
|
|
17
|
+
observe(fn: Subscription<Set<V>>, options?: SubscribeOptions): VoidFunction;
|
|
18
|
+
get size(): number;
|
|
19
|
+
add(value: V): this;
|
|
20
|
+
delete(value: V): boolean;
|
|
21
|
+
has(value: V): boolean;
|
|
22
|
+
values(): SetIterator<V>;
|
|
23
|
+
keys(): SetIterator<V>;
|
|
24
|
+
entries(): SetIterator<[V, V]>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=set-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-proxy.d.ts","sourceRoot":"","sources":["../../src/set-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGtD,qBAAa,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,GAAG,CAAC,CAAC,CAAE,YAAW,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC,UAAU,CAAC,EAAE,IAAI,CAAQ;IAC1B,EAAE,oCAAoB;IACtB,WAAW,4BAAuB;IAClC,OAAO,kDAAmB;IAC1B,OAAO,0BAAmB;IAC1B,YAAY,mCAAwB;IACpC,SAAS,qEAAqB;IAC9B,SAAS,iEAAqB;IAC9B,OAAO,aAAmB;gBAEd,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IAIzD,OAAO,CAAC,QAAQ;IAIhB,mBAAmB,CAAC,EAAE,EAAE,MAAM;IAI9B,OAAO,CACL,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EACxB,OAAO,GAAE,gBAAqB,GAC7B,YAAY;IAOf,IAAI,IAAI,WAIP;IAED,GAAG,CAAC,KAAK,EAAE,CAAC;IASZ,MAAM,CAAC,KAAK,EAAE,CAAC;IASf,GAAG,CAAC,KAAK,EAAE,CAAC;IAMZ,MAAM;IAMN,IAAI;IAMJ,OAAO;CAKR"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SetProxy = void 0;
|
|
4
|
+
const context_1 = require("./context");
|
|
5
|
+
const observable_1 = require("./observable");
|
|
6
|
+
const pubsub_1 = require("./pubsub");
|
|
7
|
+
class SetProxy extends Set {
|
|
8
|
+
[observable_1.OBSERVABLE] = true;
|
|
9
|
+
ps = (0, pubsub_1.pubsub)();
|
|
10
|
+
subscribers = this.ps.subscribers;
|
|
11
|
+
effects = this.ps.effects;
|
|
12
|
+
publish = this.ps.publish;
|
|
13
|
+
publishAsync = this.ps.publishAsync;
|
|
14
|
+
subscribe = this.ps.subscribe;
|
|
15
|
+
addEffect = this.ps.addEffect;
|
|
16
|
+
dispose = this.ps.dispose;
|
|
17
|
+
constructor(...args) {
|
|
18
|
+
super(...args);
|
|
19
|
+
}
|
|
20
|
+
getState() {
|
|
21
|
+
return new Set(super.values());
|
|
22
|
+
}
|
|
23
|
+
addEffectDependency(fx) {
|
|
24
|
+
this.ps.addEffect(fx.run, fx.cleanup);
|
|
25
|
+
}
|
|
26
|
+
observe(fn, options = {}) {
|
|
27
|
+
if (options.immediate) {
|
|
28
|
+
fn(this.getState());
|
|
29
|
+
}
|
|
30
|
+
return this.ps.subscribe(fn, options.cleanup);
|
|
31
|
+
}
|
|
32
|
+
get size() {
|
|
33
|
+
const fx = context_1.Context.scope.current.effect;
|
|
34
|
+
if (fx)
|
|
35
|
+
this.addEffectDependency(fx);
|
|
36
|
+
return super.size;
|
|
37
|
+
}
|
|
38
|
+
add(value) {
|
|
39
|
+
const hadValue = super.has(value);
|
|
40
|
+
const result = super.add(value);
|
|
41
|
+
if (!hadValue) {
|
|
42
|
+
this.ps.publish(this.getState());
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
delete(value) {
|
|
47
|
+
const didHave = super.has(value);
|
|
48
|
+
const result = super.delete(value);
|
|
49
|
+
if (didHave) {
|
|
50
|
+
this.ps.publish(this.getState());
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
has(value) {
|
|
55
|
+
const fx = context_1.Context.scope.current.effect;
|
|
56
|
+
if (fx)
|
|
57
|
+
this.addEffectDependency(fx);
|
|
58
|
+
return super.has(value);
|
|
59
|
+
}
|
|
60
|
+
values() {
|
|
61
|
+
const fx = context_1.Context.scope.current.effect;
|
|
62
|
+
if (fx)
|
|
63
|
+
this.addEffectDependency(fx);
|
|
64
|
+
return super.values();
|
|
65
|
+
}
|
|
66
|
+
keys() {
|
|
67
|
+
const fx = context_1.Context.scope.current.effect;
|
|
68
|
+
if (fx)
|
|
69
|
+
this.addEffectDependency(fx);
|
|
70
|
+
return super.keys();
|
|
71
|
+
}
|
|
72
|
+
entries() {
|
|
73
|
+
const fx = context_1.Context.scope.current.effect;
|
|
74
|
+
if (fx)
|
|
75
|
+
this.addEffectDependency(fx);
|
|
76
|
+
return super.entries();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.SetProxy = SetProxy;
|
|
80
|
+
//# sourceMappingURL=set-proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-proxy.js","sourceRoot":"","sources":["../../src/set-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maybeProxy.d.ts","sourceRoot":"","sources":["../../../src/utils/maybeProxy.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,GAAG,CAAC,KAAG,CAMpC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.maybeProxy = void 0;
|
|
4
|
+
const map_proxy_1 = require("../map-proxy");
|
|
5
|
+
const set_proxy_1 = require("../set-proxy");
|
|
6
|
+
const maybeProxy = (x) => {
|
|
7
|
+
if (x instanceof map_proxy_1.MapProxy)
|
|
8
|
+
return x;
|
|
9
|
+
if (x instanceof Map)
|
|
10
|
+
return new map_proxy_1.MapProxy(Array.from(x.entries()));
|
|
11
|
+
if (x instanceof set_proxy_1.SetProxy)
|
|
12
|
+
return x;
|
|
13
|
+
if (x instanceof Set)
|
|
14
|
+
return new set_proxy_1.SetProxy(Array.from(x.values()));
|
|
15
|
+
return x;
|
|
16
|
+
};
|
|
17
|
+
exports.maybeProxy = maybeProxy;
|
|
18
|
+
//# sourceMappingURL=maybeProxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maybeProxy.js","sourceRoot":"","sources":["../../../src/utils/maybeProxy.ts"],"names":[],"mappings":";;;AAAA,4CAAwC;AACxC,4CAAwC;AAEjC,MAAM,UAAU,GAAG,CAAI,CAAI,EAAK,EAAE;IACvC,IAAI,CAAC,YAAY,oBAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,YAAY,GAAG;QAAE,OAAO,IAAI,oBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAM,CAAC;IACxE,IAAI,CAAC,YAAY,oBAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,YAAY,GAAG;QAAE,OAAO,IAAI,oBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAM,CAAC;IACvE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AANW,QAAA,UAAU,cAMrB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const onNextTick: (fn: () =>
|
|
1
|
+
export declare const onNextTick: (fn: () => void | Promise<void>) => void;
|
|
2
2
|
//# sourceMappingURL=nextTick.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextTick.d.ts","sourceRoot":"","sources":["../../../src/utils/nextTick.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"nextTick.d.ts","sourceRoot":"","sources":["../../../src/utils/nextTick.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,SAMxD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextTick.js","sourceRoot":"","sources":["../../../src/utils/nextTick.ts"],"names":[],"mappings":";;;AAAO,MAAM,UAAU,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"nextTick.js","sourceRoot":"","sources":["../../../src/utils/nextTick.ts"],"names":[],"mappings":";;;AAAO,MAAM,UAAU,GAAG,CAAC,EAA8B,EAAE,EAAE;IAC3D,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE,CAAC;QAC1C,cAAc,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC,CAAC;AANW,QAAA,UAAU,cAMrB"}
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { SubscribeOptions, Subscription, VoidFunction } from "./common";
|
|
2
|
+
import { Effect } from "./effect";
|
|
3
|
+
import { Observable, OBSERVABLE } from "./observable";
|
|
4
|
+
export declare class MapProxy<K extends PropertyKey = PropertyKey, V extends any = any> extends Map<K, V> implements Observable<Record<K, V>> {
|
|
5
|
+
[OBSERVABLE]: true;
|
|
6
|
+
ps: import("./pubsub").PubSub<Record<K, V>>;
|
|
7
|
+
subscribers: Set<Subscription<Record<K, V>>>;
|
|
8
|
+
effects: Set<import("./common").VoidSyncOrAsyncFunction>;
|
|
9
|
+
publish: (value: Record<K, V>) => void;
|
|
10
|
+
publishAsync: (value: Record<K, V>) => Promise<void>;
|
|
11
|
+
subscribe: (fn: Subscription<Record<K, V>>, cleanup?: VoidFunction) => VoidFunction;
|
|
12
|
+
addEffect: (effect: VoidFunction, cleanup?: VoidFunction) => VoidFunction;
|
|
13
|
+
dispose: () => void;
|
|
14
|
+
constructor(...args: ConstructorParameters<typeof Map<K, V>>);
|
|
15
|
+
private getState;
|
|
16
|
+
addEffectDependency(fx: Effect): void;
|
|
17
|
+
observe(fn: Subscription<Record<K, V>>, options?: SubscribeOptions): VoidFunction;
|
|
18
|
+
set(key: K, value: V): this;
|
|
19
|
+
get(key: K): V | undefined;
|
|
20
|
+
delete(key: K): boolean;
|
|
21
|
+
entries(): MapIterator<[K, V]>;
|
|
22
|
+
keys(): MapIterator<K>;
|
|
23
|
+
values(): MapIterator<V>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=map-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-proxy.d.ts","sourceRoot":"","sources":["../../src/map-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACb,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGtD,qBAAa,QAAQ,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,CAAC,SAAS,GAAG,GAAG,GAAG,CAC5E,SAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAChB,YAAW,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAQ;IAC1B,EAAE,0CAA0B;IAC5B,WAAW,kCAAuB;IAClC,OAAO,kDAAmB;IAC1B,OAAO,gCAAmB;IAC1B,YAAY,yCAAwB;IACpC,SAAS,2EAAqB;IAC9B,SAAS,iEAAqB;IAC9B,OAAO,aAAmB;gBAEd,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAI5D,OAAO,CAAC,QAAQ;IAOhB,mBAAmB,CAAC,EAAE,EAAE,MAAM;IAI9B,OAAO,CACL,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC9B,OAAO,GAAE,gBAAqB,GAC7B,YAAY;IAOf,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IAapB,GAAG,CAAC,GAAG,EAAE,CAAC;IAMV,MAAM,CAAC,GAAG,EAAE,CAAC;IASb,OAAO;IAMP,IAAI;IAMJ,MAAM;CAKP"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { compare, } from "./common";
|
|
2
|
+
import { Context } from "./context";
|
|
3
|
+
import { OBSERVABLE } from "./observable";
|
|
4
|
+
import { pubsub } from "./pubsub";
|
|
5
|
+
export class MapProxy extends Map {
|
|
6
|
+
[OBSERVABLE] = true;
|
|
7
|
+
ps = pubsub();
|
|
8
|
+
subscribers = this.ps.subscribers;
|
|
9
|
+
effects = this.ps.effects;
|
|
10
|
+
publish = this.ps.publish;
|
|
11
|
+
publishAsync = this.ps.publishAsync;
|
|
12
|
+
subscribe = this.ps.subscribe;
|
|
13
|
+
addEffect = this.ps.addEffect;
|
|
14
|
+
dispose = this.ps.dispose;
|
|
15
|
+
constructor(...args) {
|
|
16
|
+
super(...args);
|
|
17
|
+
}
|
|
18
|
+
getState() {
|
|
19
|
+
const state = {
|
|
20
|
+
...Object.fromEntries(Array.from(super.entries())),
|
|
21
|
+
};
|
|
22
|
+
return state;
|
|
23
|
+
}
|
|
24
|
+
addEffectDependency(fx) {
|
|
25
|
+
this.ps.addEffect(fx.run, fx.cleanup);
|
|
26
|
+
}
|
|
27
|
+
observe(fn, options = {}) {
|
|
28
|
+
if (options.immediate) {
|
|
29
|
+
fn(this.getState());
|
|
30
|
+
}
|
|
31
|
+
return this.ps.subscribe(fn, options.cleanup);
|
|
32
|
+
}
|
|
33
|
+
set(key, value) {
|
|
34
|
+
const prev = super.get(key);
|
|
35
|
+
const next = value;
|
|
36
|
+
const result = super.set(key, value);
|
|
37
|
+
if (!compare(next, prev)) {
|
|
38
|
+
const state = { ...this.getState(), [key]: value };
|
|
39
|
+
this.ps.publish(state);
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
get(key) {
|
|
44
|
+
const fx = Context.scope.current.effect;
|
|
45
|
+
if (fx)
|
|
46
|
+
this.addEffectDependency(fx);
|
|
47
|
+
return super.get(key);
|
|
48
|
+
}
|
|
49
|
+
delete(key) {
|
|
50
|
+
const didHave = super.has(key);
|
|
51
|
+
const result = super.delete(key);
|
|
52
|
+
if (didHave) {
|
|
53
|
+
this.ps.publish(this.getState());
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
entries() {
|
|
58
|
+
const fx = Context.scope.current.effect;
|
|
59
|
+
if (fx)
|
|
60
|
+
this.addEffectDependency(fx);
|
|
61
|
+
return super.entries();
|
|
62
|
+
}
|
|
63
|
+
keys() {
|
|
64
|
+
const fx = Context.scope.current.effect;
|
|
65
|
+
if (fx)
|
|
66
|
+
this.addEffectDependency(fx);
|
|
67
|
+
return super.keys();
|
|
68
|
+
}
|
|
69
|
+
values() {
|
|
70
|
+
const fx = Context.scope.current.effect;
|
|
71
|
+
if (fx)
|
|
72
|
+
this.addEffectDependency(fx);
|
|
73
|
+
return super.values();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=map-proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-proxy.js","sourceRoot":"","sources":["../../src/map-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../src/reference.ts"],"names":[],"mappings":"AAGA,OAAO,EAAS,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EAAc,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"reference.d.ts","sourceRoot":"","sources":["../../src/reference.ts"],"names":[],"mappings":"AAGA,OAAO,EAAS,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EAAc,UAAU,EAAE,MAAM,cAAc,CAAC;AAItD,eAAO,MAAM,SAAS,eAAsB,CAAC;AAC7C,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC;AAEzC,MAAM,WAAW,SAAS,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAC;IACjD,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC,CAAC;IACb,GAAG,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC,CAAC;CACf;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAoC7C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7D,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AACjE,wBAAgB,WAAW,CAAC,CAAC,SAAS,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/esm/reference.js
CHANGED
|
@@ -4,10 +4,11 @@ import { isFunction } from "./common/is";
|
|
|
4
4
|
import { Context } from "./context";
|
|
5
5
|
import { observable } from "./observable";
|
|
6
6
|
import { pubsub } from "./pubsub";
|
|
7
|
+
import { maybeProxy } from "./utils/maybeProxy";
|
|
7
8
|
export const REFERENCE = Symbol("Reference");
|
|
8
9
|
export function ref(value) {
|
|
9
10
|
const ps = pubsub();
|
|
10
|
-
const state = { value };
|
|
11
|
+
const state = { value: maybeProxy(value) };
|
|
11
12
|
const obs = observable(state, ps);
|
|
12
13
|
const addEffectDependency = (fx) => {
|
|
13
14
|
ps.addEffect(fx.run, fx.cleanup);
|
|
@@ -20,7 +21,7 @@ export function ref(value) {
|
|
|
20
21
|
};
|
|
21
22
|
const set = (fn) => {
|
|
22
23
|
const prev = state.value;
|
|
23
|
-
const next = isFunction(fn) ? fn(state.value) : fn;
|
|
24
|
+
const next = maybeProxy(isFunction(fn) ? fn(state.value) : fn);
|
|
24
25
|
if (!compare(next, prev)) {
|
|
25
26
|
state.value = next;
|
|
26
27
|
ps.publish(state.value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/reference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAc,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../src/reference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAc,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAU7C,MAAM,UAAU,GAAG,CAAI,KAAQ;IAC7B,MAAM,EAAE,GAAG,MAAM,EAAK,CAAC;IACvB,MAAM,KAAK,GAAa,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;IACrD,MAAM,GAAG,GAAG,UAAU,CAAI,KAAK,EAAE,EAAE,CAAC,CAAC;IAErC,MAAM,mBAAmB,GAAG,CAAC,EAAU,EAAE,EAAE;QACzC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,GAAM,EAAE;QAClB,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACxC,IAAI,EAAE;YAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,GAAG,GAAgC,CAAC,EAAE,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;YACnB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAM,EAAE;QACnB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC,CAAC;IAEF,OAAO;QACL,CAAC,SAAS,CAAC,EAAE,IAAI;QACjB,GAAG,EAAE;QACL,GAAG,GAAG;QACN,GAAG;QACH,GAAG;QACH,IAAI;KACL,CAAC;AACJ,CAAC;AAKD,MAAM,UAAU,WAAW,CAAC,CAAU;IACpC,OAAO,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { SubscribeOptions, Subscription, VoidFunction } from "./common";
|
|
2
|
+
import { Effect } from "./effect";
|
|
3
|
+
import { Observable, OBSERVABLE } from "./observable";
|
|
4
|
+
export declare class SetProxy<V = any> extends Set<V> implements Observable<Set<V>> {
|
|
5
|
+
[OBSERVABLE]: true;
|
|
6
|
+
ps: import("./pubsub").PubSub<Set<V>>;
|
|
7
|
+
subscribers: Set<Subscription<Set<V>>>;
|
|
8
|
+
effects: Set<import("./common").VoidSyncOrAsyncFunction>;
|
|
9
|
+
publish: (value: Set<V>) => void;
|
|
10
|
+
publishAsync: (value: Set<V>) => Promise<void>;
|
|
11
|
+
subscribe: (fn: Subscription<Set<V>>, cleanup?: VoidFunction) => VoidFunction;
|
|
12
|
+
addEffect: (effect: VoidFunction, cleanup?: VoidFunction) => VoidFunction;
|
|
13
|
+
dispose: () => void;
|
|
14
|
+
constructor(...args: ConstructorParameters<typeof Set<V>>);
|
|
15
|
+
private getState;
|
|
16
|
+
addEffectDependency(fx: Effect): void;
|
|
17
|
+
observe(fn: Subscription<Set<V>>, options?: SubscribeOptions): VoidFunction;
|
|
18
|
+
get size(): number;
|
|
19
|
+
add(value: V): this;
|
|
20
|
+
delete(value: V): boolean;
|
|
21
|
+
has(value: V): boolean;
|
|
22
|
+
values(): SetIterator<V>;
|
|
23
|
+
keys(): SetIterator<V>;
|
|
24
|
+
entries(): SetIterator<[V, V]>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=set-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-proxy.d.ts","sourceRoot":"","sources":["../../src/set-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGtD,qBAAa,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,GAAG,CAAC,CAAC,CAAE,YAAW,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC,UAAU,CAAC,EAAE,IAAI,CAAQ;IAC1B,EAAE,oCAAoB;IACtB,WAAW,4BAAuB;IAClC,OAAO,kDAAmB;IAC1B,OAAO,0BAAmB;IAC1B,YAAY,mCAAwB;IACpC,SAAS,qEAAqB;IAC9B,SAAS,iEAAqB;IAC9B,OAAO,aAAmB;gBAEd,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IAIzD,OAAO,CAAC,QAAQ;IAIhB,mBAAmB,CAAC,EAAE,EAAE,MAAM;IAI9B,OAAO,CACL,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EACxB,OAAO,GAAE,gBAAqB,GAC7B,YAAY;IAOf,IAAI,IAAI,WAIP;IAED,GAAG,CAAC,KAAK,EAAE,CAAC;IASZ,MAAM,CAAC,KAAK,EAAE,CAAC;IASf,GAAG,CAAC,KAAK,EAAE,CAAC;IAMZ,MAAM;IAMN,IAAI;IAMJ,OAAO;CAKR"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Context } from "./context";
|
|
2
|
+
import { OBSERVABLE } from "./observable";
|
|
3
|
+
import { pubsub } from "./pubsub";
|
|
4
|
+
export class SetProxy extends Set {
|
|
5
|
+
[OBSERVABLE] = true;
|
|
6
|
+
ps = pubsub();
|
|
7
|
+
subscribers = this.ps.subscribers;
|
|
8
|
+
effects = this.ps.effects;
|
|
9
|
+
publish = this.ps.publish;
|
|
10
|
+
publishAsync = this.ps.publishAsync;
|
|
11
|
+
subscribe = this.ps.subscribe;
|
|
12
|
+
addEffect = this.ps.addEffect;
|
|
13
|
+
dispose = this.ps.dispose;
|
|
14
|
+
constructor(...args) {
|
|
15
|
+
super(...args);
|
|
16
|
+
}
|
|
17
|
+
getState() {
|
|
18
|
+
return new Set(super.values());
|
|
19
|
+
}
|
|
20
|
+
addEffectDependency(fx) {
|
|
21
|
+
this.ps.addEffect(fx.run, fx.cleanup);
|
|
22
|
+
}
|
|
23
|
+
observe(fn, options = {}) {
|
|
24
|
+
if (options.immediate) {
|
|
25
|
+
fn(this.getState());
|
|
26
|
+
}
|
|
27
|
+
return this.ps.subscribe(fn, options.cleanup);
|
|
28
|
+
}
|
|
29
|
+
get size() {
|
|
30
|
+
const fx = Context.scope.current.effect;
|
|
31
|
+
if (fx)
|
|
32
|
+
this.addEffectDependency(fx);
|
|
33
|
+
return super.size;
|
|
34
|
+
}
|
|
35
|
+
add(value) {
|
|
36
|
+
const hadValue = super.has(value);
|
|
37
|
+
const result = super.add(value);
|
|
38
|
+
if (!hadValue) {
|
|
39
|
+
this.ps.publish(this.getState());
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
delete(value) {
|
|
44
|
+
const didHave = super.has(value);
|
|
45
|
+
const result = super.delete(value);
|
|
46
|
+
if (didHave) {
|
|
47
|
+
this.ps.publish(this.getState());
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
has(value) {
|
|
52
|
+
const fx = Context.scope.current.effect;
|
|
53
|
+
if (fx)
|
|
54
|
+
this.addEffectDependency(fx);
|
|
55
|
+
return super.has(value);
|
|
56
|
+
}
|
|
57
|
+
values() {
|
|
58
|
+
const fx = Context.scope.current.effect;
|
|
59
|
+
if (fx)
|
|
60
|
+
this.addEffectDependency(fx);
|
|
61
|
+
return super.values();
|
|
62
|
+
}
|
|
63
|
+
keys() {
|
|
64
|
+
const fx = Context.scope.current.effect;
|
|
65
|
+
if (fx)
|
|
66
|
+
this.addEffectDependency(fx);
|
|
67
|
+
return super.keys();
|
|
68
|
+
}
|
|
69
|
+
entries() {
|
|
70
|
+
const fx = Context.scope.current.effect;
|
|
71
|
+
if (fx)
|
|
72
|
+
this.addEffectDependency(fx);
|
|
73
|
+
return super.entries();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=set-proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-proxy.js","sourceRoot":"","sources":["../../src/set-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maybeProxy.d.ts","sourceRoot":"","sources":["../../../src/utils/maybeProxy.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,GAAG,CAAC,KAAG,CAMpC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { MapProxy } from "../map-proxy";
|
|
2
|
+
import { SetProxy } from "../set-proxy";
|
|
3
|
+
export const maybeProxy = (x) => {
|
|
4
|
+
if (x instanceof MapProxy)
|
|
5
|
+
return x;
|
|
6
|
+
if (x instanceof Map)
|
|
7
|
+
return new MapProxy(Array.from(x.entries()));
|
|
8
|
+
if (x instanceof SetProxy)
|
|
9
|
+
return x;
|
|
10
|
+
if (x instanceof Set)
|
|
11
|
+
return new SetProxy(Array.from(x.values()));
|
|
12
|
+
return x;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=maybeProxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maybeProxy.js","sourceRoot":"","sources":["../../../src/utils/maybeProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,CAAI,EAAK,EAAE;IACvC,IAAI,CAAC,YAAY,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,YAAY,GAAG;QAAE,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAM,CAAC;IACxE,IAAI,CAAC,YAAY,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,YAAY,GAAG;QAAE,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAM,CAAC;IACvE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const onNextTick: (fn: () =>
|
|
1
|
+
export declare const onNextTick: (fn: () => void | Promise<void>) => void;
|
|
2
2
|
//# sourceMappingURL=nextTick.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextTick.d.ts","sourceRoot":"","sources":["../../../src/utils/nextTick.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"nextTick.d.ts","sourceRoot":"","sources":["../../../src/utils/nextTick.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,SAMxD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextTick.js","sourceRoot":"","sources":["../../../src/utils/nextTick.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"nextTick.js","sourceRoot":"","sources":["../../../src/utils/nextTick.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAA8B,EAAE,EAAE;IAC3D,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE,CAAC;QAC1C,cAAc,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC,CAAC"}
|
package/package.json
CHANGED