@joist/observable 4.2.3-next.14 → 4.2.3-next.17
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 +1 -1
- package/src/lib/metadata.test.ts +1 -0
- package/src/lib/metadata.ts +3 -6
- package/src/lib/observe.ts +11 -5
- package/target/lib/metadata.d.ts +1 -0
- package/target/lib/metadata.js +1 -0
- package/target/lib/metadata.js.map +1 -1
- package/target/lib/metadata.test.js +1 -0
- package/target/lib/metadata.test.js.map +1 -1
- package/target/lib/observe.js +9 -5
- package/target/lib/observe.js.map +1 -1
package/package.json
CHANGED
package/src/lib/metadata.test.ts
CHANGED
package/src/lib/metadata.ts
CHANGED
|
@@ -13,6 +13,7 @@ export class ObservableInstanceMetadata<T> {
|
|
|
13
13
|
scheduler: Promise<void> | null = null;
|
|
14
14
|
changes: Changes<T> = new Changes();
|
|
15
15
|
bindings: Set<(changes: Changes<T>) => void> = new Set();
|
|
16
|
+
initialized: Set<string | symbol> = new Set();
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
export class ObservableInstanceMetaDataStore extends WeakMap<
|
|
@@ -36,10 +37,7 @@ export class ObservableMetadata<T> {
|
|
|
36
37
|
effects: Set<EffectFn<T>> = new Set();
|
|
37
38
|
}
|
|
38
39
|
|
|
39
|
-
export class ObservableMetadataStore extends WeakMap<
|
|
40
|
-
object,
|
|
41
|
-
ObservableMetadata<unknown>
|
|
42
|
-
> {
|
|
40
|
+
export class ObservableMetadataStore extends WeakMap<object, ObservableMetadata<unknown>> {
|
|
43
41
|
read<T extends object>(key: object): ObservableMetadata<T> {
|
|
44
42
|
let data = this.get(key);
|
|
45
43
|
|
|
@@ -56,5 +54,4 @@ export class ObservableMetadataStore extends WeakMap<
|
|
|
56
54
|
export const instanceMetadataStore: ObservableInstanceMetaDataStore =
|
|
57
55
|
new ObservableInstanceMetaDataStore();
|
|
58
56
|
|
|
59
|
-
export const observableMetadataStore: ObservableMetadataStore =
|
|
60
|
-
new ObservableMetadataStore();
|
|
57
|
+
export const observableMetadataStore: ObservableMetadataStore = new ObservableMetadataStore();
|
package/src/lib/observe.ts
CHANGED
|
@@ -9,11 +9,11 @@ export function observe<This extends object, Value>(mapper?: (instance: This) =>
|
|
|
9
9
|
): ClassAccessorDecoratorResult<This, Value> {
|
|
10
10
|
const observableMeta = observableMetadataStore.read<This>(ctx.metadata);
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
if (mapper) {
|
|
13
|
+
observableMeta.effects.add(function mapperFn(this: This) {
|
|
14
14
|
ctx.access.set(this, mapper(this));
|
|
15
|
-
}
|
|
16
|
-
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
17
|
|
|
18
18
|
return {
|
|
19
19
|
init(value) {
|
|
@@ -35,7 +35,13 @@ export function observe<This extends object, Value>(mapper?: (instance: This) =>
|
|
|
35
35
|
},
|
|
36
36
|
get() {
|
|
37
37
|
if (mapper) {
|
|
38
|
-
|
|
38
|
+
const instanceMeta = instanceMetadataStore.read<This>(this);
|
|
39
|
+
|
|
40
|
+
if (!instanceMeta.initialized.has(ctx.name)) {
|
|
41
|
+
instanceMeta.initialized.add(ctx.name);
|
|
42
|
+
|
|
43
|
+
return mapper(this);
|
|
44
|
+
}
|
|
39
45
|
}
|
|
40
46
|
|
|
41
47
|
return base.get.call(this);
|
package/target/lib/metadata.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export declare class ObservableInstanceMetadata<T> {
|
|
|
9
9
|
scheduler: Promise<void> | null;
|
|
10
10
|
changes: Changes<T>;
|
|
11
11
|
bindings: Set<(changes: Changes<T>) => void>;
|
|
12
|
+
initialized: Set<string | symbol>;
|
|
12
13
|
}
|
|
13
14
|
export declare class ObservableInstanceMetaDataStore extends WeakMap<object, ObservableInstanceMetadata<unknown>> {
|
|
14
15
|
read<T extends object>(key: T): ObservableInstanceMetadata<T>;
|
package/target/lib/metadata.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/lib/metadata.ts"],"names":[],"mappings":"AAAC,MAAc,CAAC,QAAQ,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC;AASvD,MAAM,OAAO,OAAW,SAAQ,GAA6B;CAAG;AAEhE,MAAM,OAAO,0BAA0B;IACrC,SAAS,GAAyB,IAAI,CAAC;IACvC,OAAO,GAAe,IAAI,OAAO,EAAE,CAAC;IACpC,QAAQ,GAAuC,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/lib/metadata.ts"],"names":[],"mappings":"AAAC,MAAc,CAAC,QAAQ,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC;AASvD,MAAM,OAAO,OAAW,SAAQ,GAA6B;CAAG;AAEhE,MAAM,OAAO,0BAA0B;IACrC,SAAS,GAAyB,IAAI,CAAC;IACvC,OAAO,GAAe,IAAI,OAAO,EAAE,CAAC;IACpC,QAAQ,GAAuC,IAAI,GAAG,EAAE,CAAC;IACzD,WAAW,GAAyB,IAAI,GAAG,EAAE,CAAC;CAC/C;AAED,MAAM,OAAO,+BAAgC,SAAQ,OAGpD;IACC,IAAI,CAAmB,GAAM;QAC3B,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,IAAI,0BAA0B,EAAE,CAAC;YAExC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtB,CAAC;QAED,OAAO,IAAqC,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IAC7B,OAAO,GAAqB,IAAI,GAAG,EAAE,CAAC;CACvC;AAED,MAAM,OAAO,uBAAwB,SAAQ,OAA4C;IACvF,IAAI,CAAmB,GAAW;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,IAAI,kBAAkB,EAAE,CAAC;YAEhC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtB,CAAC;QAED,OAAO,IAA6B,CAAC;IACvC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,qBAAqB,GAChC,IAAI,+BAA+B,EAAE,CAAC;AAExC,MAAM,CAAC,MAAM,uBAAuB,GAA4B,IAAI,uBAAuB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.test.js","sourceRoot":"","sources":["../../src/lib/metadata.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,OAAO,EAAE,+BAA+B,EAAE,MAAM,eAAe,CAAC;AAEzE,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;IACxC,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,IAAI,GAAG,IAAI,+BAA+B,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7D,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE;QACrB,OAAO,EAAE,IAAI,OAAO,EAAE;QACtB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI,GAAG,EAAc;
|
|
1
|
+
{"version":3,"file":"metadata.test.js","sourceRoot":"","sources":["../../src/lib/metadata.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,OAAO,EAAE,+BAA+B,EAAE,MAAM,eAAe,CAAC;AAEzE,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;IACxC,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,IAAI,GAAG,IAAI,+BAA+B,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE7D,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE;QACrB,OAAO,EAAE,IAAI,OAAO,EAAE;QACtB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI,GAAG,EAAc;QAC/B,WAAW,EAAE,IAAI,GAAG,EAAmB;KACxC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAC3D,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,IAAI,GAAG,IAAI,+BAA+B,EAAE,CAAC;IAEnD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC"}
|
package/target/lib/observe.js
CHANGED
|
@@ -3,11 +3,11 @@ const INIT_VALUE = Symbol("init");
|
|
|
3
3
|
export function observe(mapper) {
|
|
4
4
|
return function observeDecorato(base, ctx) {
|
|
5
5
|
const observableMeta = observableMetadataStore.read(ctx.metadata);
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
if (mapper) {
|
|
7
|
+
observableMeta.effects.add(function mapperFn() {
|
|
8
8
|
ctx.access.set(this, mapper(this));
|
|
9
|
-
}
|
|
10
|
-
}
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
11
|
return {
|
|
12
12
|
init(value) {
|
|
13
13
|
let val = INIT_VALUE;
|
|
@@ -23,7 +23,11 @@ export function observe(mapper) {
|
|
|
23
23
|
},
|
|
24
24
|
get() {
|
|
25
25
|
if (mapper) {
|
|
26
|
-
|
|
26
|
+
const instanceMeta = instanceMetadataStore.read(this);
|
|
27
|
+
if (!instanceMeta.initialized.has(ctx.name)) {
|
|
28
|
+
instanceMeta.initialized.add(ctx.name);
|
|
29
|
+
return mapper(this);
|
|
30
|
+
}
|
|
27
31
|
}
|
|
28
32
|
return base.get.call(this);
|
|
29
33
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/lib/observe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAE9F,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAElC,MAAM,UAAU,OAAO,CAA6B,MAAkC;IACpF,OAAO,SAAS,eAAe,CAC7B,IAA+C,EAC/C,GAA+C;QAE/C,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,CAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExE,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ;
|
|
1
|
+
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/lib/observe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAE9F,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAElC,MAAM,UAAU,OAAO,CAA6B,MAAkC;IACpF,OAAO,SAAS,eAAe,CAC7B,IAA+C,EAC/C,GAA+C;QAE/C,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,CAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExE,IAAI,MAAM,EAAE,CAAC;YACX,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ;gBAC1C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,IAAI,CAAC,KAAK;gBACR,IAAI,GAAG,GAA8B,UAAU,CAAC;gBAGhD,IAAI,CAAC;oBACH,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBAEV,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;oBACvB,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;oBAEvC,OAAO,GAAG,CAAC;gBACb,CAAC;gBAGD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,GAAG;gBACD,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAO,IAAI,CAAC,CAAC;oBAE5D,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC5C,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAEvC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC;gBAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YACD,GAAG,CAAC,QAAe;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrC,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAO,IAAI,CAAC,CAAC;gBAE5D,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC1B,IAAI,YAAY,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;wBACpC,YAAY,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;4BACnD,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;gCAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;4BAC1C,CAAC;4BAED,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;gCAC5C,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;4BAC3C,CAAC;4BAED,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;4BAC9B,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;wBAC/B,CAAC,CAAC,CAAC;oBACL,CAAC;oBAED,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAkB,EAAE;wBAC/C,QAAQ;wBACR,QAAQ;qBACT,CAAC,CAAC;oBAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,OAAO,SAAS,eAAe,CAC7B,KAAkB,EAClB,GAAmC;QAEnC,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;AACJ,CAAC"}
|