@joist/observable 4.0.0-next.10 → 4.0.0-next.11
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 +7 -3
- package/package.json +1 -1
- package/src/lib/metadata.test.ts +1 -1
- package/src/lib/metadata.ts +30 -20
- package/src/lib/observe.test.ts +6 -2
- package/src/lib/observe.ts +11 -5
- package/target/lib/metadata.d.ts +15 -13
- package/target/lib/metadata.js +14 -14
- package/target/lib/metadata.js.map +1 -1
- package/target/lib/metadata.test.js +1 -1
- package/target/lib/metadata.test.js.map +1 -1
- package/target/lib/observe.d.ts +2 -2
- package/target/lib/observe.js +7 -3
- package/target/lib/observe.js.map +1 -1
- package/target/lib/observe.test.js +4 -1
- package/target/lib/observe.test.js.map +1 -1
package/README.md
CHANGED
|
@@ -12,10 +12,14 @@ npm i @joist/observable@next
|
|
|
12
12
|
import { observe, effect } from '@joist/observable';
|
|
13
13
|
|
|
14
14
|
class AppState {
|
|
15
|
-
@observe
|
|
16
|
-
|
|
15
|
+
@observe()
|
|
16
|
+
accessor todos: string[] = [];
|
|
17
17
|
|
|
18
|
-
@
|
|
18
|
+
@observe()
|
|
19
|
+
accessor userName?: string;
|
|
20
|
+
|
|
21
|
+
@effect()
|
|
22
|
+
onChange(changes: Changes<this>) {
|
|
19
23
|
console.log(changes);
|
|
20
24
|
}
|
|
21
25
|
}
|
package/package.json
CHANGED
package/src/lib/metadata.test.ts
CHANGED
|
@@ -5,7 +5,7 @@ it('should return default metadata', () => {
|
|
|
5
5
|
const key = {};
|
|
6
6
|
const data = new ObservableInstanceMetaDataStore().read(key);
|
|
7
7
|
|
|
8
|
-
assert.deepEqual(data, { changes:
|
|
8
|
+
assert.deepEqual(data, { changes: {}, scheduler: null });
|
|
9
9
|
});
|
|
10
10
|
|
|
11
11
|
it('should return the same metadata object after init', () => {
|
package/src/lib/metadata.ts
CHANGED
|
@@ -1,41 +1,51 @@
|
|
|
1
1
|
(Symbol as any).metadata ??= Symbol('Symbol.metadata');
|
|
2
2
|
|
|
3
|
-
export type EffectFn = (changes:
|
|
3
|
+
export type EffectFn<T> = (changes: Changes<T>) => void;
|
|
4
4
|
|
|
5
|
-
export
|
|
6
|
-
|
|
5
|
+
export type Changes<T> = {
|
|
6
|
+
[P in keyof T]?: {
|
|
7
|
+
oldValue: T[P];
|
|
8
|
+
newValue: T[P];
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export class ObservableInstanceMetadata<T> {
|
|
13
|
+
scheduler: Promise<void> | null = null;
|
|
14
|
+
changes: Changes<T> = {};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export class ObservableInstanceMetaDataStore extends WeakMap<
|
|
18
|
+
object,
|
|
19
|
+
ObservableInstanceMetadata<unknown>
|
|
20
|
+
> {
|
|
21
|
+
read<T extends object>(key: T): ObservableInstanceMetadata<T> {
|
|
7
22
|
let data = this.get(key);
|
|
8
23
|
|
|
9
24
|
if (!data) {
|
|
10
|
-
data =
|
|
25
|
+
data = new ObservableInstanceMetadata();
|
|
11
26
|
|
|
12
27
|
this.set(key, data);
|
|
13
28
|
}
|
|
14
29
|
|
|
15
30
|
return data;
|
|
16
31
|
}
|
|
17
|
-
|
|
18
|
-
abstract init(): Metadata;
|
|
19
32
|
}
|
|
20
33
|
|
|
21
|
-
export class
|
|
22
|
-
|
|
23
|
-
changes = new Set<string | symbol>();
|
|
34
|
+
export class ObservableMetadata<T> {
|
|
35
|
+
effects: Set<EffectFn<T>> = new Set();
|
|
24
36
|
}
|
|
25
37
|
|
|
26
|
-
export class
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
}
|
|
38
|
+
export class ObservableMetadataStore extends WeakMap<object, ObservableMetadata<unknown>> {
|
|
39
|
+
read<T extends object>(key: T): ObservableMetadata<T> {
|
|
40
|
+
let data = this.get(key);
|
|
31
41
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
}
|
|
42
|
+
if (!data) {
|
|
43
|
+
data = new ObservableMetadata();
|
|
35
44
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
45
|
+
this.set(key, data);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return data;
|
|
39
49
|
}
|
|
40
50
|
}
|
|
41
51
|
|
package/src/lib/observe.test.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { assert } from 'chai';
|
|
2
2
|
|
|
3
3
|
import { effect, observe } from './observe.js';
|
|
4
|
+
import { Changes } from './metadata.js';
|
|
4
5
|
|
|
5
6
|
it('should work with static accessors', () => {
|
|
6
7
|
return new Promise<void>((resolve) => {
|
|
@@ -53,8 +54,11 @@ it('should return a set of changed props', () => {
|
|
|
53
54
|
class Counter {
|
|
54
55
|
@observe() accessor value = 0;
|
|
55
56
|
|
|
56
|
-
@effect() onChange(changes:
|
|
57
|
-
assert.
|
|
57
|
+
@effect() onChange(changes: Changes<this>) {
|
|
58
|
+
assert.deepEqual(changes.value, {
|
|
59
|
+
oldValue: 0,
|
|
60
|
+
newValue: 1
|
|
61
|
+
});
|
|
58
62
|
|
|
59
63
|
resolve();
|
|
60
64
|
}
|
package/src/lib/observe.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { EffectFn, instanceMetadataStore, observableMetadataStore } from './metadata.js';
|
|
2
2
|
|
|
3
3
|
export function observe() {
|
|
4
|
-
return function observeDecorator<This extends object, Value>(
|
|
4
|
+
return function observeDecorator<This extends object, Value extends This[keyof This]>(
|
|
5
5
|
base: ClassAccessorDecoratorTarget<This, Value>,
|
|
6
6
|
ctx: ClassAccessorDecoratorContext<This, Value>
|
|
7
7
|
): ClassAccessorDecoratorResult<This, Value> {
|
|
8
|
+
const observableMeta = observableMetadataStore.read(ctx.metadata);
|
|
9
|
+
|
|
8
10
|
return {
|
|
9
11
|
init(value) {
|
|
10
12
|
let val: Value | null = null;
|
|
@@ -25,7 +27,6 @@ export function observe() {
|
|
|
25
27
|
},
|
|
26
28
|
set(value) {
|
|
27
29
|
const instanceMeta = instanceMetadataStore.read(this);
|
|
28
|
-
const observableMeta = observableMetadataStore.read(ctx.metadata);
|
|
29
30
|
|
|
30
31
|
if (instanceMeta.scheduler === null) {
|
|
31
32
|
instanceMeta.scheduler = Promise.resolve().then(() => {
|
|
@@ -34,11 +35,16 @@ export function observe() {
|
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
instanceMeta.scheduler = null;
|
|
37
|
-
instanceMeta.changes
|
|
38
|
+
instanceMeta.changes = {};
|
|
38
39
|
});
|
|
39
40
|
}
|
|
40
41
|
|
|
41
|
-
|
|
42
|
+
const name = ctx.name as keyof This;
|
|
43
|
+
|
|
44
|
+
instanceMeta.changes[name] = {
|
|
45
|
+
oldValue: base.get.call(this),
|
|
46
|
+
newValue: value
|
|
47
|
+
};
|
|
42
48
|
|
|
43
49
|
base.set.call(this, value);
|
|
44
50
|
}
|
|
@@ -48,7 +54,7 @@ export function observe() {
|
|
|
48
54
|
|
|
49
55
|
export function effect() {
|
|
50
56
|
return function effectDecorator<T extends object>(
|
|
51
|
-
value: EffectFn
|
|
57
|
+
value: EffectFn<unknown>,
|
|
52
58
|
ctx: ClassMethodDecoratorContext<T>
|
|
53
59
|
) {
|
|
54
60
|
const data = observableMetadataStore.read(ctx.metadata);
|
package/target/lib/metadata.d.ts
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
export type EffectFn = (changes:
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
export type EffectFn<T> = (changes: Changes<T>) => void;
|
|
2
|
+
export type Changes<T> = {
|
|
3
|
+
[P in keyof T]?: {
|
|
4
|
+
oldValue: T[P];
|
|
5
|
+
newValue: T[P];
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
export declare class ObservableInstanceMetadata<T> {
|
|
7
9
|
scheduler: Promise<void> | null;
|
|
8
|
-
changes:
|
|
10
|
+
changes: Changes<T>;
|
|
9
11
|
}
|
|
10
|
-
export declare class ObservableInstanceMetaDataStore extends
|
|
11
|
-
|
|
12
|
+
export declare class ObservableInstanceMetaDataStore extends WeakMap<object, ObservableInstanceMetadata<unknown>> {
|
|
13
|
+
read<T extends object>(key: T): ObservableInstanceMetadata<T>;
|
|
12
14
|
}
|
|
13
|
-
export declare class ObservableMetadata {
|
|
14
|
-
effects: Set<EffectFn
|
|
15
|
+
export declare class ObservableMetadata<T> {
|
|
16
|
+
effects: Set<EffectFn<T>>;
|
|
15
17
|
}
|
|
16
|
-
export declare class ObservableMetadataStore extends
|
|
17
|
-
|
|
18
|
+
export declare class ObservableMetadataStore extends WeakMap<object, ObservableMetadata<unknown>> {
|
|
19
|
+
read<T extends object>(key: T): ObservableMetadata<T>;
|
|
18
20
|
}
|
|
19
21
|
export declare const instanceMetadataStore: ObservableInstanceMetaDataStore;
|
|
20
22
|
export declare const observableMetadataStore: ObservableMetadataStore;
|
package/target/lib/metadata.js
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
Symbol.metadata ??= Symbol('Symbol.metadata');
|
|
2
|
-
export class
|
|
2
|
+
export class ObservableInstanceMetadata {
|
|
3
|
+
scheduler = null;
|
|
4
|
+
changes = {};
|
|
5
|
+
}
|
|
6
|
+
export class ObservableInstanceMetaDataStore extends WeakMap {
|
|
3
7
|
read(key) {
|
|
4
8
|
let data = this.get(key);
|
|
5
9
|
if (!data) {
|
|
6
|
-
data =
|
|
10
|
+
data = new ObservableInstanceMetadata();
|
|
7
11
|
this.set(key, data);
|
|
8
12
|
}
|
|
9
13
|
return data;
|
|
10
14
|
}
|
|
11
15
|
}
|
|
12
|
-
export class ObservableInstanceMetadata {
|
|
13
|
-
scheduler = null;
|
|
14
|
-
changes = new Set();
|
|
15
|
-
}
|
|
16
|
-
export class ObservableInstanceMetaDataStore extends MetadataStore {
|
|
17
|
-
init() {
|
|
18
|
-
return new ObservableInstanceMetadata();
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
16
|
export class ObservableMetadata {
|
|
22
17
|
effects = new Set();
|
|
23
18
|
}
|
|
24
|
-
export class ObservableMetadataStore extends
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
export class ObservableMetadataStore extends WeakMap {
|
|
20
|
+
read(key) {
|
|
21
|
+
let data = this.get(key);
|
|
22
|
+
if (!data) {
|
|
23
|
+
data = new ObservableMetadata();
|
|
24
|
+
this.set(key, data);
|
|
25
|
+
}
|
|
26
|
+
return data;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
export const instanceMetadataStore = new ObservableInstanceMetaDataStore();
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/lib/metadata.ts"],"names":[],"mappings":"AAAC,MAAc,CAAC,QAAQ,KAAK,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAWvD,MAAM,OAAO,0BAA0B;IACrC,SAAS,GAAyB,IAAI,CAAC;IACvC,OAAO,GAAe,EAAE,CAAC;CAC1B;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,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IAC7B,OAAO,GAAqB,IAAI,GAAG,EAAE,CAAC;CACvC;AAED,MAAM,OAAO,uBAAwB,SAAQ,OAA4C;IACvF,IAAI,CAAmB,GAAM;QAC3B,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,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,+BAA+B,EAAE,CAAC;AAC3E,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,EAAE,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { ObservableInstanceMetaDataStore } from './metadata.js';
|
|
|
3
3
|
it('should return default metadata', () => {
|
|
4
4
|
const key = {};
|
|
5
5
|
const data = new ObservableInstanceMetaDataStore().read(key);
|
|
6
|
-
assert.deepEqual(data, { changes:
|
|
6
|
+
assert.deepEqual(data, { changes: {}, scheduler: null });
|
|
7
7
|
});
|
|
8
8
|
it('should return the same metadata object after init', () => {
|
|
9
9
|
const key = {};
|
|
@@ -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;AAC9B,OAAO,EAAE,+BAA+B,EAAE,MAAM,eAAe,CAAC;AAEhE,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,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"metadata.test.js","sourceRoot":"","sources":["../../src/lib/metadata.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,+BAA+B,EAAE,MAAM,eAAe,CAAC;AAEhE,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,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3D,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.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { EffectFn } from './metadata.js';
|
|
2
|
-
export declare function observe(): <This extends object, Value>(base: ClassAccessorDecoratorTarget<This, Value>, ctx: ClassAccessorDecoratorContext<This, Value>) => ClassAccessorDecoratorResult<This, Value>;
|
|
3
|
-
export declare function effect(): <T extends object>(value: EffectFn
|
|
2
|
+
export declare function observe(): <This extends object, Value extends This[keyof This]>(base: ClassAccessorDecoratorTarget<This, Value>, ctx: ClassAccessorDecoratorContext<This, Value>) => ClassAccessorDecoratorResult<This, Value>;
|
|
3
|
+
export declare function effect(): <T extends object>(value: EffectFn<unknown>, ctx: ClassMethodDecoratorContext<T>) => void;
|
package/target/lib/observe.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { instanceMetadataStore, observableMetadataStore } from './metadata.js';
|
|
2
2
|
export function observe() {
|
|
3
3
|
return function observeDecorator(base, ctx) {
|
|
4
|
+
const observableMeta = observableMetadataStore.read(ctx.metadata);
|
|
4
5
|
return {
|
|
5
6
|
init(value) {
|
|
6
7
|
let val = null;
|
|
@@ -16,17 +17,20 @@ export function observe() {
|
|
|
16
17
|
},
|
|
17
18
|
set(value) {
|
|
18
19
|
const instanceMeta = instanceMetadataStore.read(this);
|
|
19
|
-
const observableMeta = observableMetadataStore.read(ctx.metadata);
|
|
20
20
|
if (instanceMeta.scheduler === null) {
|
|
21
21
|
instanceMeta.scheduler = Promise.resolve().then(() => {
|
|
22
22
|
for (let effect of observableMeta.effects) {
|
|
23
23
|
effect.call(this, instanceMeta.changes);
|
|
24
24
|
}
|
|
25
25
|
instanceMeta.scheduler = null;
|
|
26
|
-
instanceMeta.changes
|
|
26
|
+
instanceMeta.changes = {};
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
const name = ctx.name;
|
|
30
|
+
instanceMeta.changes[name] = {
|
|
31
|
+
oldValue: base.get.call(this),
|
|
32
|
+
newValue: value
|
|
33
|
+
};
|
|
30
34
|
base.set.call(this, value);
|
|
31
35
|
}
|
|
32
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/lib/observe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAEzF,MAAM,UAAU,OAAO;IACrB,OAAO,SAAS,gBAAgB,CAC9B,IAA+C,EAC/C,GAA+C;QAE/C,OAAO;YACL,IAAI,CAAC,KAAK;gBACR,IAAI,GAAG,GAAiB,IAAI,CAAC;gBAG7B,IAAI,CAAC;oBACH,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBAEV,IAAI,GAAG,EAAE,CAAC;oBACR,OAAa,IAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAE7B,OAAO,GAAG,CAAC;gBACb,CAAC;gBAGD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,GAAG,CAAC,KAAK;gBACP,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/lib/observe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAEzF,MAAM,UAAU,OAAO;IACrB,OAAO,SAAS,gBAAgB,CAC9B,IAA+C,EAC/C,GAA+C;QAE/C,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAElE,OAAO;YACL,IAAI,CAAC,KAAK;gBACR,IAAI,GAAG,GAAiB,IAAI,CAAC;gBAG7B,IAAI,CAAC;oBACH,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBAEV,IAAI,GAAG,EAAE,CAAC;oBACR,OAAa,IAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAE7B,OAAO,GAAG,CAAC;gBACb,CAAC;gBAGD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,GAAG,CAAC,KAAK;gBACP,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEtD,IAAI,YAAY,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;oBACpC,YAAY,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;wBACnD,KAAK,IAAI,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;4BAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;wBAC1C,CAAC;wBAED,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;wBAC9B,YAAY,CAAC,OAAO,GAAG,EAAE,CAAC;oBAC5B,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAkB,CAAC;gBAEpC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;oBAC3B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC7B,QAAQ,EAAE,KAAK;iBAChB,CAAC;gBAEF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC7B,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,OAAO,SAAS,eAAe,CAC7B,KAAwB,EACxB,GAAmC;QAEnC,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -92,7 +92,10 @@ it('should return a set of changed props', () => {
|
|
|
92
92
|
get value() { return this.#value_accessor_storage; }
|
|
93
93
|
set value(value) { this.#value_accessor_storage = value; }
|
|
94
94
|
onChange(changes) {
|
|
95
|
-
assert.
|
|
95
|
+
assert.deepEqual(changes.value, {
|
|
96
|
+
oldValue: 0,
|
|
97
|
+
newValue: 1
|
|
98
|
+
});
|
|
96
99
|
resolve();
|
|
97
100
|
}
|
|
98
101
|
constructor() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe.test.js","sourceRoot":"","sources":["../../src/lib/observe.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"observe.test.js","sourceRoot":"","sources":["../../src/lib/observe.test.ts"],"names":[],"mappings":"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"}
|