informa 1.0.2 → 2.0.0
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/README.md +41 -3
- package/dist/high.d.ts +27 -11
- package/dist/high.d.ts.map +1 -1
- package/dist/high.js +25 -3
- package/dist/high.js.map +1 -1
- package/dist/low.d.ts +7 -2
- package/dist/low.d.ts.map +1 -1
- package/dist/low.js +28 -32
- package/dist/low.js.map +1 -1
- package/dist/quirks/map.d.ts +12 -0
- package/dist/quirks/map.d.ts.map +1 -0
- package/dist/quirks/map.js +50 -0
- package/dist/quirks/map.js.map +1 -0
- package/dist/quirks/set.d.ts +1 -1
- package/dist/quirks/set.d.ts.map +1 -1
- package/dist/quirks/set.js +9 -3
- package/dist/quirks/set.js.map +1 -1
- package/dist/test.js +6 -0
- package/dist/test.js.map +1 -1
- package/dist/utils.d.ts +0 -3
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +0 -17
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/high.ts +46 -12
- package/src/low.ts +51 -47
- package/src/quirks/map.ts +58 -0
- package/src/quirks/set.ts +11 -6
- package/src/test.ts +8 -0
- package/src/utils.ts +0 -21
- package/dist/clone.d.ts +0 -2
- package/dist/clone.d.ts.map +0 -1
- package/dist/clone.js +0 -30
- package/dist/clone.js.map +0 -1
package/README.md
CHANGED
|
@@ -169,14 +169,43 @@ Available set events include:
|
|
|
169
169
|
|
|
170
170
|
- `onAddItem`
|
|
171
171
|
- `onDeleteItem`
|
|
172
|
+
- `onCardChanged` (for cardinality, so as to avoid conflict with Map.size)
|
|
173
|
+
|
|
174
|
+
### Map events
|
|
175
|
+
|
|
176
|
+
```ts
|
|
177
|
+
$.onSetEntry(() => model.tags, (key, value) => {
|
|
178
|
+
console.log("set", tag);
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
$.onDeleteEntry(() => model.tags, (key, value) => {
|
|
182
|
+
console.log("deleted", tag);
|
|
183
|
+
});
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Available map events include:
|
|
187
|
+
|
|
188
|
+
- `onSetEntry`
|
|
189
|
+
- `onReplaceEntry`
|
|
190
|
+
- `onDeleteEntry`
|
|
172
191
|
- `onSizeChanged`
|
|
173
192
|
|
|
174
193
|
## Classes
|
|
175
194
|
|
|
176
195
|
Class instances can participate in the same selector model.
|
|
177
196
|
|
|
197
|
+
### Note before use
|
|
198
|
+
|
|
199
|
+
Informa uses a prototype blanket layer so selectors like `() => w.state` can still be extracted even when the property lives on a class prototype.
|
|
200
|
+
|
|
201
|
+
However, the blanket does not intercept any property setters (since it's very possible that the setter does not end up changing the state)
|
|
202
|
+
|
|
203
|
+
It is up to the superclass to confirm changes using `super.{your property here} = {your value here}`.
|
|
204
|
+
|
|
205
|
+
### Example
|
|
206
|
+
|
|
178
207
|
```ts
|
|
179
|
-
class Wayland extends BaseStatified {
|
|
208
|
+
class Wayland extends $.BaseStatified {
|
|
180
209
|
#state = 0;
|
|
181
210
|
|
|
182
211
|
get state() { return this.#state; }
|
|
@@ -190,7 +219,7 @@ const w = new Wayland();
|
|
|
190
219
|
$.onSet(() => w.state, (value) => console.log(value));
|
|
191
220
|
```
|
|
192
221
|
|
|
193
|
-
|
|
222
|
+
In case you already wanted to extend antother class, we provide a class factory `$.makeStatified` that allows you to wrap an existing class.
|
|
194
223
|
|
|
195
224
|
## Semantics
|
|
196
225
|
|
|
@@ -223,9 +252,18 @@ $.onLengthChanged(...)
|
|
|
223
252
|
$.onSpliceInElement(...)
|
|
224
253
|
$.onSpliceOutElement(...)
|
|
225
254
|
$.onReplaceElement(...)
|
|
226
|
-
$.
|
|
255
|
+
$.onCardChanged(...)
|
|
227
256
|
$.onAddItem(...)
|
|
228
257
|
$.onDeleteItem(...)
|
|
258
|
+
$.onSetEntry(...)
|
|
259
|
+
$.onReplaceEntry(...)
|
|
260
|
+
$.onDeleteEntry(...)
|
|
261
|
+
$.onSizeChanged(...)
|
|
262
|
+
|
|
263
|
+
$.BaseStatified
|
|
264
|
+
$.StatifiedArray
|
|
265
|
+
$.StatifiedSet
|
|
266
|
+
$.StatifiedMap
|
|
229
267
|
```
|
|
230
268
|
|
|
231
269
|
## Goals
|
package/dist/high.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type Statify } from "./internals.js";
|
|
|
2
2
|
import { type StatifiableObj, type StatifiableProp, type Statified } from "./low.js";
|
|
3
3
|
import { StatifiedArray } from "./quirks/array.js";
|
|
4
4
|
import { makeStatified } from "./quirks/basestatified.js";
|
|
5
|
+
import { StatifiedMap } from "./quirks/map.js";
|
|
5
6
|
import { StatifiedSet } from "./quirks/set.js";
|
|
6
7
|
export declare function stateInner<T extends StatifiableProp>(original: T): Statified<T>;
|
|
7
8
|
export declare function state<T extends StatifiableObj>(original: T): Statified<T>;
|
|
@@ -12,9 +13,9 @@ interface Listeners<T> {
|
|
|
12
13
|
replace?(v: T): void;
|
|
13
14
|
}
|
|
14
15
|
interface ObjectListeners<K extends string | number | symbol, V> extends Listeners<Record<K, V>> {
|
|
15
|
-
setProp?(
|
|
16
|
-
replaceProp?(
|
|
17
|
-
deleteProp?(
|
|
16
|
+
setProp?(p: string | symbol, v: V): void;
|
|
17
|
+
replaceProp?(p: string | symbol, v: V): void;
|
|
18
|
+
deleteProp?(p: string | symbol, v: V): void;
|
|
18
19
|
}
|
|
19
20
|
interface ArrayListeners<T> extends ObjectListeners<number, T> {
|
|
20
21
|
spliceInElement?(v: T, i: number): void;
|
|
@@ -22,27 +23,37 @@ interface ArrayListeners<T> extends ObjectListeners<number, T> {
|
|
|
22
23
|
replaceElement?(v: T, i: number): void;
|
|
23
24
|
lengthChanged?(): void;
|
|
24
25
|
}
|
|
25
|
-
interface SetListeners<T>
|
|
26
|
+
interface SetListeners<T> {
|
|
26
27
|
addItem?(v: T): void;
|
|
27
28
|
deleteItem?(v: T): void;
|
|
29
|
+
cardChanged?(): void;
|
|
30
|
+
}
|
|
31
|
+
interface MapListeners<K, V> {
|
|
32
|
+
setEntry?(k: K, v: V): void;
|
|
33
|
+
replaceEntry?(k: K, v: V): void;
|
|
34
|
+
deleteEntry?(k: K, v: V): void;
|
|
28
35
|
sizeChanged?(): void;
|
|
29
36
|
}
|
|
30
|
-
export declare function on<T, K extends string | number | symbol, V, U>(...[selector, listeners, options]: [
|
|
37
|
+
export declare function on<T, K extends string | number | symbol, V, U, K1, V1>(...[selector, listeners, options]: [
|
|
31
38
|
() => T,
|
|
32
39
|
Listeners<T>
|
|
33
|
-
] | [() => T, Listeners<T>, Options | undefined] | [() => Statify<Record<K, V>>, ObjectListeners<K, V>] | [() => Statify<Record<K, V>>, ObjectListeners<K, V>, Options | undefined] | [() => Statify<U[]>, ArrayListeners<U>] | [() => Statify<U[]>, ArrayListeners<U>, Options | undefined] | [() => Statify<Set<U>>, SetListeners<U>] | [() => Statify<Set<U>>, SetListeners<U>, Options | undefined]): () => void;
|
|
40
|
+
] | [() => T, Listeners<T>, Options | undefined] | [() => Statify<Record<K, V>>, ObjectListeners<K, V>] | [() => Statify<Record<K, V>>, ObjectListeners<K, V>, Options | undefined] | [() => Statify<U[]>, ArrayListeners<U>] | [() => Statify<U[]>, ArrayListeners<U>, Options | undefined] | [() => Statify<Set<U>>, SetListeners<U>] | [() => Statify<Set<U>>, SetListeners<U>, Options | undefined] | [() => Statify<Map<K1, V1>>, MapListeners<K1, V1>] | [() => Statify<Map<K1, V1>>, MapListeners<K1, V1>, Options | undefined]): () => void;
|
|
34
41
|
declare function onSet<T>(s: () => T, l: (v: T) => void, o?: Options): () => void;
|
|
35
42
|
declare function onReplace<T>(s: () => T, l: (v: T) => void, o?: Options): () => void;
|
|
36
|
-
declare function onReplaceProp<T extends Record<string | number | symbol, StatifiableProp>>(s: () => Statify<T>, l: (
|
|
37
|
-
declare function onDeleteProp<T extends Record<string | number | symbol, StatifiableProp>>(s: () => Statify<T>, l: (
|
|
38
|
-
declare function onSetProp<T extends Record<string | number | symbol, StatifiableProp>>(s: () => Statify<T>, l: (
|
|
43
|
+
declare function onReplaceProp<T extends Record<string | number | symbol, StatifiableProp>>(s: () => Statify<T>, l: (k: keyof T, v: T[keyof T]) => void, o?: Options): () => void;
|
|
44
|
+
declare function onDeleteProp<T extends Record<string | number | symbol, StatifiableProp>>(s: () => Statify<T>, l: (k: keyof T, v: T[keyof T]) => void, o?: Options): () => void;
|
|
45
|
+
declare function onSetProp<T extends Record<string | number | symbol, StatifiableProp>>(s: () => Statify<T>, l: (k: keyof T, v: T[keyof T]) => void, o?: Options): () => void;
|
|
39
46
|
declare function onLengthChanged(s: () => Statify<StatifiableObj[]>, l: () => void, o?: Options): () => void;
|
|
40
47
|
declare function onSpliceInElement<T extends StatifiableObj>(s: () => Statify<T[]>, l: (v: T, k: number) => void, o?: Options): () => void;
|
|
41
48
|
declare function onSpliceOutElement<T extends StatifiableObj>(s: () => Statify<T[]>, l: (v: T, k: number) => void, o?: Options): () => void;
|
|
42
49
|
declare function onReplaceElement<T extends StatifiableObj>(s: () => Statify<T[]>, l: (v: T, k: number) => void, o?: Options): () => void;
|
|
43
|
-
declare function
|
|
50
|
+
declare function onCardChanged(s: () => Statify<Set<StatifiableObj>>, l: () => void, o?: Options): () => void;
|
|
44
51
|
declare function onAddItem<T extends StatifiableObj>(s: () => Statify<Set<T>>, l: (v: T) => void, o?: Options): () => void;
|
|
45
52
|
declare function onDeleteItem<T extends StatifiableObj>(s: () => Statify<Set<T>>, l: (v: T) => void, o?: Options): () => void;
|
|
53
|
+
declare function onSetEntry<K, V extends StatifiableObj>(s: () => Statify<Map<K, V>>, l: (k: K, v: V) => void, o?: Options): () => void;
|
|
54
|
+
declare function onReplaceEntry<K, V extends StatifiableObj>(s: () => Statify<Map<K, V>>, l: (k: K, v: V) => void, o?: Options): () => void;
|
|
55
|
+
declare function onDeleteEntry<K, V extends StatifiableObj>(s: () => Statify<Map<K, V>>, l: (k: K, v: V) => void, o?: Options): () => void;
|
|
56
|
+
declare function onSizeChanged(s: () => Statify<Map<any, StatifiableObj>>, l: () => void, o?: Options): () => void;
|
|
46
57
|
declare const _default: {
|
|
47
58
|
on: typeof on;
|
|
48
59
|
onSet: typeof onSet;
|
|
@@ -54,14 +65,19 @@ declare const _default: {
|
|
|
54
65
|
onSpliceInElement: typeof onSpliceInElement;
|
|
55
66
|
onSpliceOutElement: typeof onSpliceOutElement;
|
|
56
67
|
onReplaceElement: typeof onReplaceElement;
|
|
57
|
-
|
|
68
|
+
onCardChanged: typeof onCardChanged;
|
|
58
69
|
onAddItem: typeof onAddItem;
|
|
59
70
|
onDeleteItem: typeof onDeleteItem;
|
|
71
|
+
onSetEntry: typeof onSetEntry;
|
|
72
|
+
onReplaceEntry: typeof onReplaceEntry;
|
|
73
|
+
onDeleteEntry: typeof onDeleteEntry;
|
|
74
|
+
onSizeChanged: typeof onSizeChanged;
|
|
60
75
|
state: typeof state;
|
|
61
76
|
BaseStatified: ObjectConstructor & (new (...args: any[]) => Record<string | symbol, any>);
|
|
62
77
|
makeStatified: typeof makeStatified;
|
|
63
78
|
StatifiedArray: typeof StatifiedArray;
|
|
64
79
|
StatifiedSet: typeof StatifiedSet;
|
|
80
|
+
StatifiedMap: typeof StatifiedMap;
|
|
65
81
|
};
|
|
66
82
|
export default _default;
|
|
67
83
|
//# sourceMappingURL=high.d.ts.map
|
package/dist/high.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"high.d.ts","sourceRoot":"","sources":["../src/high.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EAA8C,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACjI,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAiB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,wBAAgB,UAAU,CAAC,CAAC,SAAS,eAAe,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"high.d.ts","sourceRoot":"","sources":["../src/high.ts"],"names":[],"mappings":"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"}
|
package/dist/high.js
CHANGED
|
@@ -7,6 +7,7 @@ const internals_js_1 = require("./internals.js");
|
|
|
7
7
|
const low_js_1 = require("./low.js");
|
|
8
8
|
const array_js_1 = require("./quirks/array.js");
|
|
9
9
|
const basestatified_js_1 = require("./quirks/basestatified.js");
|
|
10
|
+
const map_js_1 = require("./quirks/map.js");
|
|
10
11
|
const set_js_1 = require("./quirks/set.js");
|
|
11
12
|
function stateInner(original) {
|
|
12
13
|
if (typeof original !== 'object' || original === null) {
|
|
@@ -19,11 +20,15 @@ function stateInner(original) {
|
|
|
19
20
|
case Set.prototype:
|
|
20
21
|
const set = original;
|
|
21
22
|
return new set_js_1.StatifiedSet(set[Symbol.iterator]().map(stateInner));
|
|
23
|
+
case Map.prototype:
|
|
24
|
+
const map = original;
|
|
25
|
+
return new map_js_1.StatifiedMap(map[Symbol.iterator]().map(([k, v]) => [k, stateInner(v)]));
|
|
22
26
|
case Array.prototype:
|
|
23
27
|
const array = original;
|
|
24
28
|
return new array_js_1.StatifiedArray(...array.map(stateInner));
|
|
25
29
|
case array_js_1.StatifiedArray.prototype:
|
|
26
30
|
case set_js_1.StatifiedSet.prototype:
|
|
31
|
+
case map_js_1.StatifiedMap.prototype:
|
|
27
32
|
return original;
|
|
28
33
|
case Object.prototype:
|
|
29
34
|
const newObj = original;
|
|
@@ -85,8 +90,8 @@ function onSpliceOutElement(s, l, o) {
|
|
|
85
90
|
function onReplaceElement(s, l, o) {
|
|
86
91
|
return on(s, { replaceElement: l }, o);
|
|
87
92
|
}
|
|
88
|
-
function
|
|
89
|
-
return on(s, {
|
|
93
|
+
function onCardChanged(s, l, o) {
|
|
94
|
+
return on(s, { cardChanged: l }, o);
|
|
90
95
|
}
|
|
91
96
|
function onAddItem(s, l, o) {
|
|
92
97
|
return on(s, { addItem: l }, o);
|
|
@@ -94,6 +99,18 @@ function onAddItem(s, l, o) {
|
|
|
94
99
|
function onDeleteItem(s, l, o) {
|
|
95
100
|
return on(s, { deleteItem: l }, o);
|
|
96
101
|
}
|
|
102
|
+
function onSetEntry(s, l, o) {
|
|
103
|
+
return on(s, { setEntry: l }, o);
|
|
104
|
+
}
|
|
105
|
+
function onReplaceEntry(s, l, o) {
|
|
106
|
+
return on(s, { replaceEntry: l }, o);
|
|
107
|
+
}
|
|
108
|
+
function onDeleteEntry(s, l, o) {
|
|
109
|
+
return on(s, { deleteEntry: l }, o);
|
|
110
|
+
}
|
|
111
|
+
function onSizeChanged(s, l, o) {
|
|
112
|
+
return on(s, { sizeChanged: l }, o);
|
|
113
|
+
}
|
|
97
114
|
exports.default = {
|
|
98
115
|
on,
|
|
99
116
|
onSet,
|
|
@@ -105,13 +122,18 @@ exports.default = {
|
|
|
105
122
|
onSpliceInElement,
|
|
106
123
|
onSpliceOutElement,
|
|
107
124
|
onReplaceElement,
|
|
108
|
-
|
|
125
|
+
onCardChanged,
|
|
109
126
|
onAddItem,
|
|
110
127
|
onDeleteItem,
|
|
128
|
+
onSetEntry,
|
|
129
|
+
onReplaceEntry,
|
|
130
|
+
onDeleteEntry,
|
|
131
|
+
onSizeChanged,
|
|
111
132
|
state,
|
|
112
133
|
BaseStatified: basestatified_js_1.BaseStatified,
|
|
113
134
|
makeStatified: basestatified_js_1.makeStatified,
|
|
114
135
|
StatifiedArray: array_js_1.StatifiedArray,
|
|
115
136
|
StatifiedSet: set_js_1.StatifiedSet,
|
|
137
|
+
StatifiedMap: map_js_1.StatifiedMap,
|
|
116
138
|
};
|
|
117
139
|
//# sourceMappingURL=high.js.map
|
package/dist/high.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"high.js","sourceRoot":"","sources":["../src/high.ts"],"names":[],"mappings":";;;;;AAAA,iDAAyF;AACzF,qCAAiI;AACjI,gDAAmD;AACnD,gEAAyE;AACzE,4CAA+C;AAE/C,oBAAsD,QAAW;IAC/D,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtD,OAAO,QAAwB,CAAC;IAClC,CAAC;IAED,IAAI,4BAAa,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,4BAAa,CAAC,GAAG,CAAC,QAAQ,CAAiB,CAAC;IAEpF,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE;QACrB,QAAQ,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,KAAK,GAAG,CAAC,SAAS;gBAChB,MAAM,GAAG,GAAG,QAA+B,CAAC;gBAC5C,OAAO,IAAI,qBAAY,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YAElE,KAAK,KAAK,CAAC,SAAS;gBAClB,MAAM,KAAK,GAAG,QAA4B,CAAC;gBAC3C,OAAO,IAAI,yBAAc,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YAEtD,KAAK,yBAAc,CAAC,SAAS,CAAC;YAC9B,KAAK,qBAAY,CAAC,SAAS;gBACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"high.js","sourceRoot":"","sources":["../src/high.ts"],"names":[],"mappings":"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"}
|
package/dist/low.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { exitProxySymbol, type Statify } from "./internals.js";
|
|
|
2
2
|
import { EventEmitter } from "node:events";
|
|
3
3
|
import { StatifiedSet } from "./quirks/set.js";
|
|
4
4
|
import { EnumerableWeakMap } from "./EnumerableWeakMap.js";
|
|
5
|
+
import { StatifiedMap } from "./quirks/map.js";
|
|
5
6
|
type ProxyEventEmitterEvents = {
|
|
6
7
|
"set": [any];
|
|
7
8
|
"replace": [any];
|
|
@@ -12,9 +13,13 @@ type ProxyEventEmitterEvents = {
|
|
|
12
13
|
"spliceInElement": [any, number];
|
|
13
14
|
"spliceOutElement": [any, number];
|
|
14
15
|
"replaceElement": [any, number];
|
|
15
|
-
"sizeChanged": [];
|
|
16
16
|
"addItem": [any];
|
|
17
17
|
"deleteItem": [any];
|
|
18
|
+
"cardChanged": [];
|
|
19
|
+
"setEntry": [any, any];
|
|
20
|
+
"replaceEntry": [any, any];
|
|
21
|
+
"deleteEntry": [any, any];
|
|
22
|
+
"sizeChanged": [];
|
|
18
23
|
} & Record<string, never>;
|
|
19
24
|
declare class Tree<T, U> {
|
|
20
25
|
value: U;
|
|
@@ -42,7 +47,7 @@ export type StatifiableProp = boolean | string | number | bigint | symbol | null
|
|
|
42
47
|
export type StatifiableObj = {
|
|
43
48
|
[k: string | symbol]: StatifiableProp;
|
|
44
49
|
} | {};
|
|
45
|
-
export type Statified<T extends StatifiableProp> = T extends object ? T extends Set<infer U> ? StatifiedSet<Statified<U>> : T extends
|
|
50
|
+
export type Statified<T extends StatifiableProp> = T extends object ? T extends Set<infer U> ? StatifiedSet<Statified<U>> : T extends Map<infer K, infer V> ? StatifiedMap<K, Statified<V>> : Statify<{
|
|
46
51
|
[K in keyof T]: Statified<T[K]>;
|
|
47
52
|
}> : T;
|
|
48
53
|
export declare function statifyObject<T extends {
|
package/dist/low.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"low.d.ts","sourceRoot":"","sources":["../src/low.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAiH,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9K,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"low.d.ts","sourceRoot":"","sources":["../src/low.ts"],"names":[],"mappings":"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"}
|
package/dist/low.js
CHANGED
|
@@ -113,44 +113,40 @@ function statifyObject(target) {
|
|
|
113
113
|
const had = Reflect.has(target, prop);
|
|
114
114
|
const oldVal = Reflect.get(target, prop);
|
|
115
115
|
const result = Reflect.set(target, prop, newVal, recv);
|
|
116
|
-
|
|
117
|
-
if (
|
|
116
|
+
if (result) {
|
|
117
|
+
if (oldVal !== newVal
|
|
118
|
+
&& typeof newVal === "object"
|
|
119
|
+
&& newVal != null
|
|
120
|
+
&& newVal[internals_js_1.statifySealKey]) {
|
|
121
|
+
const newValMetadata = (0, internals_js_1.getMetadataOf)(newVal);
|
|
122
|
+
hook(stateMetadata, prop, newValMetadata);
|
|
123
|
+
}
|
|
124
|
+
if (had) {
|
|
118
125
|
if (oldVal !== newVal
|
|
119
|
-
&& typeof
|
|
120
|
-
&&
|
|
121
|
-
&&
|
|
122
|
-
const
|
|
123
|
-
|
|
126
|
+
&& typeof oldVal === "object"
|
|
127
|
+
&& oldVal != null
|
|
128
|
+
&& oldVal[internals_js_1.statifySealKey]) {
|
|
129
|
+
const oldValMetadata = (0, internals_js_1.getMetadataOf)(oldVal);
|
|
130
|
+
unhook(stateMetadata, prop, oldValMetadata);
|
|
124
131
|
}
|
|
125
|
-
if (
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
&& oldVal[internals_js_1.statifySealKey]) {
|
|
130
|
-
const oldValMetadata = (0, internals_js_1.getMetadataOf)(oldVal);
|
|
131
|
-
unhook(stateMetadata, prop, oldValMetadata);
|
|
132
|
-
}
|
|
133
|
-
if (typeof prop !== "symbol" &&
|
|
134
|
-
Number.isInteger(Number(prop)) &&
|
|
135
|
-
Array.isArray(target)) {
|
|
136
|
-
stateMetadata.emit('replaceElement', newVal, Number(prop));
|
|
137
|
-
}
|
|
138
|
-
stateMetadata.emit('replaceProp', newVal, prop);
|
|
132
|
+
if (typeof prop !== "symbol" &&
|
|
133
|
+
Number.isInteger(Number(prop)) &&
|
|
134
|
+
Array.isArray(target)) {
|
|
135
|
+
stateMetadata.emit('replaceElement', newVal, Number(prop));
|
|
139
136
|
}
|
|
140
|
-
stateMetadata.emit('
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
maybeEventEmitterAtVal.emit('
|
|
147
|
-
emitDescendantPathEvents(stateMetadata, [prop], newVal, had);
|
|
137
|
+
stateMetadata.emit('replaceProp', newVal, prop);
|
|
138
|
+
}
|
|
139
|
+
stateMetadata.emit('setProp', newVal, prop);
|
|
140
|
+
const maybeEventEmitterAtVal = stateMetadata.eventEmitterAtPathMaybe([prop]);
|
|
141
|
+
if (maybeEventEmitterAtVal) {
|
|
142
|
+
if (had) {
|
|
143
|
+
maybeEventEmitterAtVal.emit('replace', newVal);
|
|
148
144
|
}
|
|
145
|
+
maybeEventEmitterAtVal.emit('set', newVal);
|
|
146
|
+
emitDescendantPathEvents(stateMetadata, [prop], newVal, had);
|
|
149
147
|
}
|
|
150
148
|
}
|
|
151
|
-
|
|
152
|
-
return result;
|
|
153
|
-
}
|
|
149
|
+
return result;
|
|
154
150
|
},
|
|
155
151
|
deleteProperty(target, prop) {
|
|
156
152
|
const oldVal = target[prop];
|
package/dist/low.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"low.js","sourceRoot":"","sources":["../src/low.ts"],"names":[],"mappings":";;;;;;;;;AAAA,iDAA8K;AAC9K,6CAA2C;AAE3C,yCAA0C;AAC1C,iEAA2D;
|
|
1
|
+
{"version":3,"file":"low.js","sourceRoot":"","sources":["../src/low.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { exitProxySymbol, Statify, statifySealKey } from "../internals";
|
|
2
|
+
import { ExitProxyValue } from "../low";
|
|
3
|
+
export declare class StatifiedMap<K, V> extends Map<K, V> implements Statify<Map<K, V>> {
|
|
4
|
+
#private;
|
|
5
|
+
[statifySealKey]: true;
|
|
6
|
+
get [exitProxySymbol](): ExitProxyValue;
|
|
7
|
+
constructor(args?: Iterable<[K, V]> | null);
|
|
8
|
+
clear(): void;
|
|
9
|
+
delete(key: K): boolean;
|
|
10
|
+
set(key: K, value: V): this;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/quirks/map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACxG,OAAO,EAAE,cAAc,EAA0C,MAAM,QAAQ,CAAC;AAEhF,qBAAa,YAAY,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAE,YAAW,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;IAC7E,CAAC,cAAc,CAAC,EAAE,IAAI,CAAQ;IAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,cAAc,CAKtC;IAID,YAAY,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAIzC;IAED,KAAK,IAAI,IAAI,CASZ;IAED,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAStB;IAED,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAc1B;CACF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StatifiedMap = void 0;
|
|
4
|
+
const internals_1 = require("../internals");
|
|
5
|
+
const low_1 = require("../low");
|
|
6
|
+
class StatifiedMap extends Map {
|
|
7
|
+
[internals_1.statifySealKey] = true;
|
|
8
|
+
get [internals_1.exitProxySymbol]() {
|
|
9
|
+
if (internals_1.globalStateMode === "extract-proxy-path") {
|
|
10
|
+
return { path: [], stateRoot: this };
|
|
11
|
+
}
|
|
12
|
+
throw new Error("exitProxySymbol is not available in normal mode");
|
|
13
|
+
}
|
|
14
|
+
#metadata;
|
|
15
|
+
constructor(args) {
|
|
16
|
+
super(args);
|
|
17
|
+
this.#metadata = (0, internals_1.setMetadataOf)(this, new low_1.StateMetadata());
|
|
18
|
+
}
|
|
19
|
+
clear() {
|
|
20
|
+
const entries = [...this.entries()];
|
|
21
|
+
super.clear();
|
|
22
|
+
for (const [key, value] of entries) {
|
|
23
|
+
this.#metadata.emit("deleteEntry", key, value);
|
|
24
|
+
}
|
|
25
|
+
this.#metadata.emit("sizeChanged");
|
|
26
|
+
}
|
|
27
|
+
delete(key) {
|
|
28
|
+
const value = super.get(key);
|
|
29
|
+
if (super.delete(key)) {
|
|
30
|
+
this.#metadata.emit("deleteEntry", key, value);
|
|
31
|
+
this.#metadata.emit("sizeChanged");
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
set(key, value) {
|
|
37
|
+
if (super.get(key) === value)
|
|
38
|
+
return this;
|
|
39
|
+
const had = super.has(key);
|
|
40
|
+
super.set(key, value);
|
|
41
|
+
if (had) {
|
|
42
|
+
this.#metadata.emit("replaceEntry", key, value);
|
|
43
|
+
}
|
|
44
|
+
this.#metadata.emit("setEntry", key, value);
|
|
45
|
+
this.#metadata.emit("sizeChanged");
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.StatifiedMap = StatifiedMap;
|
|
50
|
+
//# sourceMappingURL=map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../src/quirks/map.ts"],"names":[],"mappings":";;;AAAA,4CAAwG;AACxG,gCAAgF;AAEhF,kBAAgC,SAAQ,GAAS;IAC/C,CAAC,0BAAc,CAAC,GAAS,IAAI,CAAC;IAC9B,IAAI,CAAC,2BAAe,CAAC;QACnB,IAAI,2BAAe,KAAK,oBAAoB,EAAE,CAAC;YAC7C,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAA+B,EAAE,CAAC;QAClE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,SAAS,CAAgB;IAEzB,YAAY,IAA8B;QACxC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,SAAS,GAAG,IAAA,yBAAa,EAAC,IAAI,EAAE,IAAI,mBAAa,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK;QACH,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACpC,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,GAAM;QACX,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;QAE1C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAEtB,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
package/dist/quirks/set.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { type ExitProxyValue, type StatifiableProp } from "../low.js";
|
|
|
3
3
|
export declare class StatifiedSet<T extends StatifiableProp> extends Set<T> implements Statify<Set<T>> {
|
|
4
4
|
#private;
|
|
5
5
|
[statifySealKey]: true;
|
|
6
|
-
[exitProxySymbol]: ExitProxyValue;
|
|
6
|
+
get [exitProxySymbol](): ExitProxyValue;
|
|
7
7
|
constructor(args?: Iterable<T> | null);
|
|
8
8
|
add(value: T): this;
|
|
9
9
|
clear(): void;
|
package/dist/quirks/set.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/quirks/set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/quirks/set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkC,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAChH,OAAO,EAAiC,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAErG,qBAAa,YAAY,CAAC,CAAC,SAAS,eAAe,CAAE,SAAQ,GAAG,CAAC,CAAC,CAAE,YAAW,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;;IAC5F,CAAC,cAAc,CAAC,EAAE,IAAI,CAAQ;IAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,cAAc,CAKtC;IAID,YAAY,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,EAIpC;IAED,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAQlB;IAED,KAAK,IAAI,IAAI,CAWZ;IAED,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAQxB;CACF"}
|
package/dist/quirks/set.js
CHANGED
|
@@ -5,6 +5,12 @@ const internals_js_1 = require("../internals.js");
|
|
|
5
5
|
const low_js_1 = require("../low.js");
|
|
6
6
|
class StatifiedSet extends Set {
|
|
7
7
|
[internals_js_1.statifySealKey] = true;
|
|
8
|
+
get [internals_js_1.exitProxySymbol]() {
|
|
9
|
+
if (internals_js_1.globalStateMode === "extract-proxy-path") {
|
|
10
|
+
return { path: [], stateRoot: this };
|
|
11
|
+
}
|
|
12
|
+
throw new Error("exitProxySymbol is not available in normal mode");
|
|
13
|
+
}
|
|
8
14
|
#metadata;
|
|
9
15
|
constructor(args) {
|
|
10
16
|
super(args);
|
|
@@ -14,7 +20,7 @@ class StatifiedSet extends Set {
|
|
|
14
20
|
if (!super.has(value)) {
|
|
15
21
|
super.add(value);
|
|
16
22
|
this.#metadata.emit("addItem", value);
|
|
17
|
-
this.#metadata.emit("
|
|
23
|
+
this.#metadata.emit("cardChanged");
|
|
18
24
|
}
|
|
19
25
|
return this;
|
|
20
26
|
}
|
|
@@ -25,13 +31,13 @@ class StatifiedSet extends Set {
|
|
|
25
31
|
this.#metadata.emit("deleteItem", value);
|
|
26
32
|
}
|
|
27
33
|
if (oldValues.length > 0) {
|
|
28
|
-
this.#metadata.emit("
|
|
34
|
+
this.#metadata.emit("cardChanged");
|
|
29
35
|
}
|
|
30
36
|
}
|
|
31
37
|
delete(value) {
|
|
32
38
|
if (super.delete(value)) {
|
|
33
39
|
this.#metadata.emit("deleteItem", value);
|
|
34
|
-
this.#metadata.emit("
|
|
40
|
+
this.#metadata.emit("cardChanged");
|
|
35
41
|
return true;
|
|
36
42
|
}
|
|
37
43
|
return false;
|
package/dist/quirks/set.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../src/quirks/set.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../src/quirks/set.ts"],"names":[],"mappings":";;;AAAA,kDAAgH;AAChH,sCAAqG;AAErG,kBAAqD,SAAQ,GAAM;IACjE,CAAC,6BAAc,CAAC,GAAS,IAAI,CAAC;IAC9B,IAAI,CAAC,8BAAe,CAAC;QACnB,IAAI,8BAAe,KAAK,oBAAoB,EAAE,CAAC;YAC7C,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAA+B,EAAE,CAAC;QAClE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,SAAS,CAAgB;IAEzB,YAAY,IAAyB;QACnC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,CAAC,SAAS,GAAG,IAAA,4BAAa,EAAC,IAAI,EAAE,IAAI,sBAAa,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAErC,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAQ;QACb,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
package/dist/test.js
CHANGED
|
@@ -39,4 +39,10 @@ class Wayland extends basestatified_js_1.BaseStatified {
|
|
|
39
39
|
const w = new Wayland();
|
|
40
40
|
high_js_1.default.onSet(() => w.state, (v) => console.log("asdf awawa!!", v));
|
|
41
41
|
w.state = 5;
|
|
42
|
+
const map = high_js_1.default.state(new Map());
|
|
43
|
+
high_js_1.default.onSetEntry(() => map, (k, v) => console.log("set", k, v));
|
|
44
|
+
high_js_1.default.onReplaceEntry(() => map, (k, v) => console.log("replace", k, v));
|
|
45
|
+
map.set(1, "");
|
|
46
|
+
map.set(1, "asdf");
|
|
47
|
+
map.set(1, "asdf");
|
|
42
48
|
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;;;;AAAA,wDAA0B;AAC1B,gEAA0D;AAC1D,4CAA+C;AAE/C,MAAM,QAAQ,GAAG,iBAAC,CAAC,KAAK,CAA4D,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAE/F,iBAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1C,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAEzB,iBAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iBAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE;IAC3C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,GAAG,iBAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5B,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEnB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAET,MAAM,IAAI,GAAG,iBAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,EAAU,EAAE,CAAC,CAAC;AAC/C,MAAM,KAAK,GAAG,iBAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAEnC,uCAAuC;AACvC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC;AAEnB,MAAM,OAAQ,SAAQ,gCAAa;IACjC,QAAQ,GAAG,IAAI,qBAAY,EAAE,CAAC;IAE9B,MAAM,GAAG,CAAC,CAAC;IACX,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,IAAI,KAAK,CAAC,CAAS;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QACrB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IAClB,CAAC;IAED;QACE,KAAK,EAAE,CAAC;IACV,CAAC;CACF;AAED,MAAM,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;AACxB,iBAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;AAE9D,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
export declare function ofWhichIsProto<T extends object, U extends symbol>(target: object, expect: Map<T, U>): U | undefined;
|
|
2
|
-
export declare const isSetProto: unique symbol;
|
|
3
|
-
export declare const supportedQuirks: Map<Set<any>, typeof isSetProto>;
|
|
4
1
|
export declare function isListInGrid<T>(grid: T[][], list: T[]): boolean;
|
|
5
2
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,CAAC,EAAE,EAAE,EACX,IAAI,EAAE,CAAC,EAAE,WAOV"}
|
package/dist/utils.js
CHANGED
|
@@ -1,23 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.supportedQuirks = exports.isSetProto = void 0;
|
|
4
|
-
exports.ofWhichIsProto = ofWhichIsProto;
|
|
5
3
|
exports.isListInGrid = isListInGrid;
|
|
6
|
-
function ofWhichIsProto(target, expect) {
|
|
7
|
-
let current = Reflect.getPrototypeOf(target);
|
|
8
|
-
while (current) {
|
|
9
|
-
const correspondingSymbol = expect.get(current);
|
|
10
|
-
if (correspondingSymbol) {
|
|
11
|
-
return correspondingSymbol;
|
|
12
|
-
}
|
|
13
|
-
current = Reflect.getPrototypeOf(current);
|
|
14
|
-
}
|
|
15
|
-
return undefined;
|
|
16
|
-
}
|
|
17
|
-
exports.isSetProto = Symbol();
|
|
18
|
-
exports.supportedQuirks = new Map([
|
|
19
|
-
[Set.prototype, exports.isSetProto]
|
|
20
|
-
]);
|
|
21
4
|
function isListInGrid(grid, list) {
|
|
22
5
|
return grid.some((row) => {
|
|
23
6
|
if (row.length !== list.length)
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,sBACE,IAAW,EACX,IAAS;IAET,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACvB,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE7C,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
package/src/high.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { getMetadataOf, isStatified, proxyMemoized, type Statify } from "./inter
|
|
|
2
2
|
import { hook, selectorToRootAndPath, statifyObject, type StatifiableObj, type StatifiableProp, type Statified } from "./low.js";
|
|
3
3
|
import { StatifiedArray } from "./quirks/array.js";
|
|
4
4
|
import { BaseStatified, makeStatified } from "./quirks/basestatified.js";
|
|
5
|
+
import { StatifiedMap } from "./quirks/map.js";
|
|
5
6
|
import { StatifiedSet } from "./quirks/set.js";
|
|
6
7
|
|
|
7
8
|
export function stateInner<T extends StatifiableProp>(original: T): Statified<T> {
|
|
@@ -17,13 +18,20 @@ export function stateInner<T extends StatifiableProp>(original: T): Statified<T>
|
|
|
17
18
|
const set = original as unknown as Set<any>;
|
|
18
19
|
return new StatifiedSet(set[Symbol.iterator]().map(stateInner));
|
|
19
20
|
|
|
21
|
+
case Map.prototype:
|
|
22
|
+
const map = original as unknown as Map<any, any>;
|
|
23
|
+
return new StatifiedMap(map[Symbol.iterator]().map(([k, v]) => [k, stateInner(v)]));
|
|
24
|
+
|
|
20
25
|
case Array.prototype:
|
|
21
26
|
const array = original as unknown as any[];
|
|
22
27
|
return new StatifiedArray(...array.map(stateInner));
|
|
23
28
|
|
|
24
29
|
case StatifiedArray.prototype:
|
|
25
30
|
case StatifiedSet.prototype:
|
|
26
|
-
|
|
31
|
+
case StatifiedMap.prototype:
|
|
32
|
+
return original as StatifiedArray<StatifiableProp>
|
|
33
|
+
| StatifiedSet<StatifiableProp>
|
|
34
|
+
| StatifiedMap<any, StatifiableProp>;
|
|
27
35
|
|
|
28
36
|
case Object.prototype:
|
|
29
37
|
const newObj = original as unknown as Record<string | symbol, any>;
|
|
@@ -61,9 +69,9 @@ interface Listeners<T> {
|
|
|
61
69
|
}
|
|
62
70
|
|
|
63
71
|
interface ObjectListeners<K extends string | number | symbol, V> extends Listeners<Record<K, V>> {
|
|
64
|
-
setProp?(
|
|
65
|
-
replaceProp?(
|
|
66
|
-
deleteProp?(
|
|
72
|
+
setProp?(p: string | symbol, v: V): void;
|
|
73
|
+
replaceProp?(p: string | symbol, v: V): void;
|
|
74
|
+
deleteProp?(p: string | symbol, v: V): void;
|
|
67
75
|
}
|
|
68
76
|
|
|
69
77
|
interface ArrayListeners<T> extends ObjectListeners<number, T> {
|
|
@@ -73,13 +81,20 @@ interface ArrayListeners<T> extends ObjectListeners<number, T> {
|
|
|
73
81
|
lengthChanged?(): void;
|
|
74
82
|
}
|
|
75
83
|
|
|
76
|
-
interface SetListeners<T>
|
|
84
|
+
interface SetListeners<T> {
|
|
77
85
|
addItem?(v: T): void;
|
|
78
86
|
deleteItem?(v: T): void;
|
|
87
|
+
cardChanged?(): void;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
interface MapListeners<K, V> {
|
|
91
|
+
setEntry?(k: K, v: V): void;
|
|
92
|
+
replaceEntry?(k: K, v: V): void;
|
|
93
|
+
deleteEntry?(k: K, v: V): void;
|
|
79
94
|
sizeChanged?(): void;
|
|
80
95
|
}
|
|
81
96
|
|
|
82
|
-
export function on<T, K extends string | number | symbol, V, U>(
|
|
97
|
+
export function on<T, K extends string | number | symbol, V, U, K1, V1>(
|
|
83
98
|
...[selector, listeners, options]:
|
|
84
99
|
[() => T, Listeners<T>]
|
|
85
100
|
| [() => T, Listeners<T>, Options | undefined]
|
|
@@ -89,6 +104,8 @@ export function on<T, K extends string | number | symbol, V, U>(
|
|
|
89
104
|
| [() => Statify<U[]>, ArrayListeners<U>, Options | undefined]
|
|
90
105
|
| [() => Statify<Set<U>>, SetListeners<U>]
|
|
91
106
|
| [() => Statify<Set<U>>, SetListeners<U>, Options | undefined]
|
|
107
|
+
| [() => Statify<Map<K1, V1>>, MapListeners<K1, V1>]
|
|
108
|
+
| [() => Statify<Map<K1, V1>>, MapListeners<K1, V1>, Options | undefined]
|
|
92
109
|
): () => void {
|
|
93
110
|
const { path, stateRoot } = selectorToRootAndPath(selector as () => Statify<StatifiableObj>);
|
|
94
111
|
|
|
@@ -115,13 +132,13 @@ function onReplace<T>(s: () => T, l: (v: T) => void, o?: Options) {
|
|
|
115
132
|
return on(s, { replace: l }, o);
|
|
116
133
|
}
|
|
117
134
|
|
|
118
|
-
function onReplaceProp<T extends Record<string | number | symbol, StatifiableProp>>(s: () => Statify<T>, l: (
|
|
135
|
+
function onReplaceProp<T extends Record<string | number | symbol, StatifiableProp>>(s: () => Statify<T>, l: (k: keyof T, v: T[keyof T]) => void, o?: Options) {
|
|
119
136
|
return on(s, { replaceProp: l }, o);
|
|
120
137
|
}
|
|
121
|
-
function onDeleteProp<T extends Record<string | number | symbol, StatifiableProp>>(s: () => Statify<T>, l: (
|
|
138
|
+
function onDeleteProp<T extends Record<string | number | symbol, StatifiableProp>>(s: () => Statify<T>, l: (k: keyof T, v: T[keyof T]) => void, o?: Options) {
|
|
122
139
|
return on(s, { deleteProp: l }, o);
|
|
123
140
|
}
|
|
124
|
-
function onSetProp<T extends Record<string | number | symbol, StatifiableProp>>(s: () => Statify<T>, l: (
|
|
141
|
+
function onSetProp<T extends Record<string | number | symbol, StatifiableProp>>(s: () => Statify<T>, l: (k: keyof T, v: T[keyof T]) => void, o?: Options) {
|
|
125
142
|
return on(s, { setProp: l }, o);
|
|
126
143
|
}
|
|
127
144
|
function onLengthChanged(s: () => Statify<StatifiableObj[]>, l: () => void, o?: Options) {
|
|
@@ -136,8 +153,8 @@ function onSpliceOutElement<T extends StatifiableObj>(s: () => Statify<T[]>, l:
|
|
|
136
153
|
function onReplaceElement<T extends StatifiableObj>(s: () => Statify<T[]>, l: (v: T, k: number) => void, o?: Options) {
|
|
137
154
|
return on(s, { replaceElement: l }, o);
|
|
138
155
|
}
|
|
139
|
-
function
|
|
140
|
-
return on(s, {
|
|
156
|
+
function onCardChanged(s: () => Statify<Set<StatifiableObj>>, l: () => void, o?: Options) {
|
|
157
|
+
return on(s, { cardChanged: l }, o);
|
|
141
158
|
}
|
|
142
159
|
function onAddItem<T extends StatifiableObj>(s: () => Statify<Set<T>>, l: (v: T) => void, o?: Options) {
|
|
143
160
|
return on(s, { addItem: l }, o);
|
|
@@ -145,6 +162,18 @@ function onAddItem<T extends StatifiableObj>(s: () => Statify<Set<T>>, l: (v: T)
|
|
|
145
162
|
function onDeleteItem<T extends StatifiableObj>(s: () => Statify<Set<T>>, l: (v: T) => void, o?: Options) {
|
|
146
163
|
return on(s, { deleteItem: l }, o);
|
|
147
164
|
}
|
|
165
|
+
function onSetEntry<K, V extends StatifiableObj>(s: () => Statify<Map<K, V>>, l: (k: K, v: V) => void, o?: Options) {
|
|
166
|
+
return on(s, { setEntry: l }, o);
|
|
167
|
+
}
|
|
168
|
+
function onReplaceEntry<K, V extends StatifiableObj>(s: () => Statify<Map<K, V>>, l: (k: K, v: V) => void, o?: Options) {
|
|
169
|
+
return on(s, { replaceEntry: l }, o);
|
|
170
|
+
}
|
|
171
|
+
function onDeleteEntry<K, V extends StatifiableObj>(s: () => Statify<Map<K, V>>, l: (k: K, v: V) => void, o?: Options) {
|
|
172
|
+
return on(s, { deleteEntry: l }, o);
|
|
173
|
+
}
|
|
174
|
+
function onSizeChanged(s: () => Statify<Map<any, StatifiableObj>>, l: () => void, o?: Options) {
|
|
175
|
+
return on(s, { sizeChanged: l }, o);
|
|
176
|
+
}
|
|
148
177
|
|
|
149
178
|
export default {
|
|
150
179
|
on,
|
|
@@ -157,13 +186,18 @@ export default {
|
|
|
157
186
|
onSpliceInElement,
|
|
158
187
|
onSpliceOutElement,
|
|
159
188
|
onReplaceElement,
|
|
160
|
-
|
|
189
|
+
onCardChanged,
|
|
161
190
|
onAddItem,
|
|
162
191
|
onDeleteItem,
|
|
192
|
+
onSetEntry,
|
|
193
|
+
onReplaceEntry,
|
|
194
|
+
onDeleteEntry,
|
|
195
|
+
onSizeChanged,
|
|
163
196
|
state,
|
|
164
197
|
|
|
165
198
|
BaseStatified,
|
|
166
199
|
makeStatified,
|
|
167
200
|
StatifiedArray,
|
|
168
201
|
StatifiedSet,
|
|
202
|
+
StatifiedMap,
|
|
169
203
|
};
|
package/src/low.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { EventEmitter } from "node:events";
|
|
|
3
3
|
import { StatifiedSet } from "./quirks/set.js";
|
|
4
4
|
import { isListInGrid } from "./utils.js";
|
|
5
5
|
import { EnumerableWeakMap } from "./EnumerableWeakMap.js";
|
|
6
|
+
import { StatifiedMap } from "./quirks/map.js";
|
|
6
7
|
|
|
7
8
|
type ProxyEventEmitterEvents = {
|
|
8
9
|
"set": [any],
|
|
@@ -18,9 +19,14 @@ type ProxyEventEmitterEvents = {
|
|
|
18
19
|
"spliceOutElement": [any, number],
|
|
19
20
|
"replaceElement": [any, number],
|
|
20
21
|
|
|
21
|
-
"sizeChanged": [],
|
|
22
22
|
"addItem": [any],
|
|
23
23
|
"deleteItem": [any],
|
|
24
|
+
"cardChanged": [],
|
|
25
|
+
|
|
26
|
+
"setEntry": [any, any],
|
|
27
|
+
"replaceEntry": [any, any],
|
|
28
|
+
"deleteEntry": [any, any],
|
|
29
|
+
"sizeChanged": [],
|
|
24
30
|
} & Record<string, never>;
|
|
25
31
|
|
|
26
32
|
class Tree<T, U> {
|
|
@@ -143,8 +149,8 @@ export type StatifiableObj = { [k: string | symbol]: StatifiableProp } | {};
|
|
|
143
149
|
export type Statified<T extends StatifiableProp> = T extends object
|
|
144
150
|
? T extends Set<infer U>
|
|
145
151
|
? StatifiedSet<Statified<U>>
|
|
146
|
-
: T extends
|
|
147
|
-
?
|
|
152
|
+
: T extends Map<infer K, infer V>
|
|
153
|
+
? StatifiedMap<K, Statified<V>>
|
|
148
154
|
: Statify<{ [K in keyof T]: Statified<T[K]> }>
|
|
149
155
|
: T;
|
|
150
156
|
|
|
@@ -182,63 +188,61 @@ export function statifyObject<T extends { [k: string | symbol]: Statified<Statif
|
|
|
182
188
|
|
|
183
189
|
const result = Reflect.set(target, prop, newVal, recv);
|
|
184
190
|
|
|
185
|
-
|
|
186
|
-
if (
|
|
191
|
+
if (result) {
|
|
192
|
+
if (
|
|
193
|
+
oldVal !== newVal
|
|
194
|
+
&& typeof newVal === "object"
|
|
195
|
+
&& newVal != null
|
|
196
|
+
&& newVal[statifySealKey]
|
|
197
|
+
) {
|
|
198
|
+
const newValMetadata = getMetadataOf(newVal as Statify<StatifiableObj>);
|
|
199
|
+
|
|
200
|
+
hook(stateMetadata, prop, newValMetadata);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
if (had) {
|
|
187
204
|
if (
|
|
188
205
|
oldVal !== newVal
|
|
189
|
-
&& typeof
|
|
190
|
-
&&
|
|
191
|
-
&&
|
|
206
|
+
&& typeof oldVal === "object"
|
|
207
|
+
&& oldVal != null
|
|
208
|
+
&& (oldVal as any)[statifySealKey]
|
|
192
209
|
) {
|
|
193
|
-
const
|
|
210
|
+
const oldValMetadata = getMetadataOf(oldVal as Statify<StatifiableObj>);
|
|
194
211
|
|
|
195
|
-
|
|
212
|
+
unhook(stateMetadata, prop, oldValMetadata);
|
|
196
213
|
}
|
|
197
214
|
|
|
198
|
-
if (
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
) {
|
|
205
|
-
const oldValMetadata = getMetadataOf(oldVal as Statify<StatifiableObj>);
|
|
206
|
-
|
|
207
|
-
unhook(stateMetadata, prop, oldValMetadata);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
if (
|
|
211
|
-
typeof prop !== "symbol" &&
|
|
212
|
-
Number.isInteger(Number(prop)) &&
|
|
213
|
-
Array.isArray(target)
|
|
214
|
-
) {
|
|
215
|
-
stateMetadata.emit('replaceElement', newVal, Number(prop));
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
stateMetadata.emit('replaceProp', newVal, prop);
|
|
215
|
+
if (
|
|
216
|
+
typeof prop !== "symbol" &&
|
|
217
|
+
Number.isInteger(Number(prop)) &&
|
|
218
|
+
Array.isArray(target)
|
|
219
|
+
) {
|
|
220
|
+
stateMetadata.emit('replaceElement', newVal, Number(prop));
|
|
219
221
|
}
|
|
220
222
|
|
|
221
|
-
stateMetadata.emit('
|
|
222
|
-
|
|
223
|
-
const maybeEventEmitterAtVal = stateMetadata.eventEmitterAtPathMaybe([prop]);
|
|
224
|
-
if (maybeEventEmitterAtVal) {
|
|
225
|
-
if (had) {
|
|
226
|
-
maybeEventEmitterAtVal.emit('replace', newVal);
|
|
227
|
-
}
|
|
223
|
+
stateMetadata.emit('replaceProp', newVal, prop);
|
|
224
|
+
}
|
|
228
225
|
|
|
229
|
-
|
|
226
|
+
stateMetadata.emit('setProp', newVal, prop);
|
|
230
227
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
had,
|
|
236
|
-
);
|
|
228
|
+
const maybeEventEmitterAtVal = stateMetadata.eventEmitterAtPathMaybe([prop]);
|
|
229
|
+
if (maybeEventEmitterAtVal) {
|
|
230
|
+
if (had) {
|
|
231
|
+
maybeEventEmitterAtVal.emit('replace', newVal);
|
|
237
232
|
}
|
|
233
|
+
|
|
234
|
+
maybeEventEmitterAtVal.emit('set', newVal);
|
|
235
|
+
|
|
236
|
+
emitDescendantPathEvents(
|
|
237
|
+
stateMetadata,
|
|
238
|
+
[prop],
|
|
239
|
+
newVal,
|
|
240
|
+
had,
|
|
241
|
+
);
|
|
238
242
|
}
|
|
239
|
-
} finally {
|
|
240
|
-
return result;
|
|
241
243
|
}
|
|
244
|
+
|
|
245
|
+
return result;
|
|
242
246
|
},
|
|
243
247
|
|
|
244
248
|
deleteProperty(target, prop) {
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { exitProxySymbol, globalStateMode, setMetadataOf, Statify, statifySealKey } from "../internals.js";
|
|
2
|
+
import { ExitProxyValue, StateMetadata, StatifiableObj } from "../low.js";
|
|
3
|
+
|
|
4
|
+
export class StatifiedMap<K, V> extends Map<K, V> implements Statify<Map<K, V>> {
|
|
5
|
+
[statifySealKey]: true = true;
|
|
6
|
+
get [exitProxySymbol](): ExitProxyValue {
|
|
7
|
+
if (globalStateMode === "extract-proxy-path") {
|
|
8
|
+
return { path: [], stateRoot: this as Statify<StatifiableObj> };
|
|
9
|
+
}
|
|
10
|
+
throw new Error("exitProxySymbol is not available in normal mode");
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
#metadata: StateMetadata;
|
|
14
|
+
|
|
15
|
+
constructor(args?: Iterable<[K, V]> | null) {
|
|
16
|
+
super(args);
|
|
17
|
+
|
|
18
|
+
this.#metadata = setMetadataOf(this, new StateMetadata());
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
clear(): void {
|
|
22
|
+
const entries = [...this.entries()];
|
|
23
|
+
super.clear();
|
|
24
|
+
|
|
25
|
+
for (const [key, value] of entries) {
|
|
26
|
+
this.#metadata.emit("deleteEntry", key, value);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
this.#metadata.emit("sizeChanged");
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
delete(key: K): boolean {
|
|
33
|
+
const value = super.get(key);
|
|
34
|
+
if (super.delete(key)) {
|
|
35
|
+
this.#metadata.emit("deleteEntry", key, value);
|
|
36
|
+
this.#metadata.emit("sizeChanged");
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
set(key: K, value: V): this {
|
|
44
|
+
if (super.get(key) === value) return this;
|
|
45
|
+
|
|
46
|
+
const had = super.has(key);
|
|
47
|
+
super.set(key, value);
|
|
48
|
+
|
|
49
|
+
if (had) {
|
|
50
|
+
this.#metadata.emit("replaceEntry", key, value);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
this.#metadata.emit("setEntry", key, value);
|
|
54
|
+
this.#metadata.emit("sizeChanged");
|
|
55
|
+
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
}
|
package/src/quirks/set.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
|
-
import { exitProxySymbol, setMetadataOf, statifySealKey, type Statify } from "../internals.js";
|
|
2
|
-
import { StateMetadata, type ExitProxyValue, type StatifiableProp } from "../low.js";
|
|
1
|
+
import { exitProxySymbol, globalStateMode, setMetadataOf, statifySealKey, type Statify } from "../internals.js";
|
|
2
|
+
import { StateMetadata, StatifiableObj, type ExitProxyValue, type StatifiableProp } from "../low.js";
|
|
3
3
|
|
|
4
4
|
export class StatifiedSet<T extends StatifiableProp> extends Set<T> implements Statify<Set<T>> {
|
|
5
5
|
[statifySealKey]: true = true;
|
|
6
|
-
|
|
6
|
+
get [exitProxySymbol](): ExitProxyValue {
|
|
7
|
+
if (globalStateMode === "extract-proxy-path") {
|
|
8
|
+
return { path: [], stateRoot: this as Statify<StatifiableObj> };
|
|
9
|
+
}
|
|
10
|
+
throw new Error("exitProxySymbol is not available in normal mode");
|
|
11
|
+
}
|
|
7
12
|
|
|
8
13
|
#metadata: StateMetadata;
|
|
9
14
|
|
|
@@ -17,7 +22,7 @@ export class StatifiedSet<T extends StatifiableProp> extends Set<T> implements S
|
|
|
17
22
|
if (!super.has(value)) {
|
|
18
23
|
super.add(value);
|
|
19
24
|
this.#metadata.emit("addItem", value);
|
|
20
|
-
this.#metadata.emit("
|
|
25
|
+
this.#metadata.emit("cardChanged");
|
|
21
26
|
}
|
|
22
27
|
|
|
23
28
|
return this;
|
|
@@ -32,14 +37,14 @@ export class StatifiedSet<T extends StatifiableProp> extends Set<T> implements S
|
|
|
32
37
|
this.#metadata.emit("deleteItem", value);
|
|
33
38
|
}
|
|
34
39
|
if (oldValues.length > 0) {
|
|
35
|
-
this.#metadata.emit("
|
|
40
|
+
this.#metadata.emit("cardChanged");
|
|
36
41
|
}
|
|
37
42
|
}
|
|
38
43
|
|
|
39
44
|
delete(value: T): boolean {
|
|
40
45
|
if (super.delete(value)) {
|
|
41
46
|
this.#metadata.emit("deleteItem", value);
|
|
42
|
-
this.#metadata.emit("
|
|
47
|
+
this.#metadata.emit("cardChanged");
|
|
43
48
|
return true;
|
|
44
49
|
}
|
|
45
50
|
|
package/src/test.ts
CHANGED
|
@@ -47,3 +47,11 @@ const w = new Wayland();
|
|
|
47
47
|
$.onSet(() => w.state, (v) => console.log("asdf awawa!!", v));
|
|
48
48
|
|
|
49
49
|
w.state = 5;
|
|
50
|
+
|
|
51
|
+
const map = $.state<Map<number, string>>(new Map());
|
|
52
|
+
$.onSetEntry(() => map, (k, v) => console.log("set", k, v));
|
|
53
|
+
$.onReplaceEntry(() => map, (k, v) => console.log("replace", k, v));
|
|
54
|
+
|
|
55
|
+
map.set(1, "");
|
|
56
|
+
map.set(1, "asdf");
|
|
57
|
+
map.set(1, "asdf");
|
package/src/utils.ts
CHANGED
|
@@ -1,24 +1,3 @@
|
|
|
1
|
-
export function ofWhichIsProto<T extends object, U extends symbol>(target: object, expect: Map<T, U>): U | undefined {
|
|
2
|
-
let current = Reflect.getPrototypeOf(target);
|
|
3
|
-
|
|
4
|
-
while (current) {
|
|
5
|
-
const correspondingSymbol = expect.get(current as T);
|
|
6
|
-
if (correspondingSymbol) {
|
|
7
|
-
return correspondingSymbol;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
current = Reflect.getPrototypeOf(current);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
return undefined;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export const isSetProto = Symbol();
|
|
17
|
-
export const supportedQuirks = new Map([
|
|
18
|
-
[Set.prototype, isSetProto]
|
|
19
|
-
] as const);
|
|
20
|
-
|
|
21
|
-
|
|
22
1
|
export function isListInGrid<T>(
|
|
23
2
|
grid: T[][],
|
|
24
3
|
list: T[],
|
package/dist/clone.d.ts
DELETED
package/dist/clone.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../src/clone.ts"],"names":[],"mappings":"AAGA,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAmChC"}
|
package/dist/clone.js
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { StatifiedArray } from "./quirks/array.js";
|
|
2
|
-
import { StatifiedSet } from "./quirks/set.js";
|
|
3
|
-
export function clone(v) {
|
|
4
|
-
if (typeof v === 'function') {
|
|
5
|
-
throw new Error();
|
|
6
|
-
}
|
|
7
|
-
if (typeof v !== 'object' || v === null) {
|
|
8
|
-
return v;
|
|
9
|
-
}
|
|
10
|
-
switch (Reflect.getPrototypeOf(v)) {
|
|
11
|
-
case Set.prototype:
|
|
12
|
-
const set = v;
|
|
13
|
-
return new Set(set[Symbol.iterator]().map(clone));
|
|
14
|
-
case Array.prototype:
|
|
15
|
-
const array = v;
|
|
16
|
-
return [...array.map(clone)];
|
|
17
|
-
case StatifiedArray.prototype:
|
|
18
|
-
case StatifiedSet.prototype:
|
|
19
|
-
return v;
|
|
20
|
-
case Object.prototype:
|
|
21
|
-
const newObj = v;
|
|
22
|
-
return Object.fromEntries(Object.entries(newObj)
|
|
23
|
-
.map(([k, v]) => [k, clone(v)]));
|
|
24
|
-
}
|
|
25
|
-
if (Array.isArray(v)) {
|
|
26
|
-
return [...v.map(clone)];
|
|
27
|
-
}
|
|
28
|
-
throw new Error(`Cannot clone object with prototype`);
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=clone.js.map
|
package/dist/clone.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../src/clone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,UAAU,KAAK,CAAI,CAAI;IAC3B,IAAI,OAAO,CAAC,KAAK,UAAU,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,QAAQ,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,KAAK,GAAG,CAAC,SAAS;YAChB,MAAM,GAAG,GAAG,CAAwB,CAAC;YACrC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAM,CAAC;QAEzD,KAAK,KAAK,CAAC,SAAS;YAClB,MAAM,KAAK,GAAG,CAAqB,CAAC;YACpC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAM,CAAC;QAEpC,KAAK,cAAc,CAAC,SAAS,CAAC;QAC9B,KAAK,YAAY,CAAC,SAAS;YACzB,OAAO,CAAC,CAAC;QAEX,KAAK,MAAM,CAAC,SAAS;YACnB,MAAM,MAAM,GAAG,CAA4C,CAAC;YAC5D,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;iBACnB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAC7B,CAAC;IACX,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAM,CAAC;IAChC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;AACxD,CAAC"}
|