@joist/observable 4.7.0 → 4.8.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/package.json +1 -1
- package/target/lib/metadata.d.ts +25 -0
- package/target/lib/metadata.d.ts.map +1 -0
- package/target/lib/metadata.js +35 -0
- package/target/lib/metadata.js.map +1 -0
- package/target/lib/metadata.test.d.ts +2 -0
- package/target/lib/metadata.test.d.ts.map +1 -0
- package/target/lib/metadata.test.js +18 -0
- package/target/lib/metadata.test.js.map +1 -0
- package/target/lib/observe.d.ts +7 -0
- package/target/lib/observe.d.ts.map +1 -0
- package/target/lib/observe.js +69 -0
- package/target/lib/observe.js.map +1 -0
- package/target/lib/observe.test.d.ts +2 -0
- package/target/lib/observe.test.d.ts.map +1 -0
- package/target/lib/observe.test.js +295 -0
- package/target/lib/observe.test.js.map +1 -0
- package/target/lib.d.ts +5 -0
- package/target/lib.d.ts.map +1 -0
- package/target/lib.js +3 -0
- package/target/lib.js.map +1 -0
package/package.json
CHANGED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type EffectFn<T> = (changes: Changes<T>) => void;
|
|
2
|
+
export interface Change<T> {
|
|
3
|
+
oldValue: T;
|
|
4
|
+
newValue: T;
|
|
5
|
+
}
|
|
6
|
+
export declare class Changes<T> extends Map<keyof T, Change<unknown>> {
|
|
7
|
+
}
|
|
8
|
+
export declare class ObservableInstanceMetadata<T> {
|
|
9
|
+
scheduler: Promise<void> | null;
|
|
10
|
+
changes: Changes<T>;
|
|
11
|
+
bindings: Set<(changes: Changes<T>) => void>;
|
|
12
|
+
initialized: Set<string | symbol>;
|
|
13
|
+
}
|
|
14
|
+
export declare class ObservableInstanceMetaDataStore extends WeakMap<object, ObservableInstanceMetadata<unknown>> {
|
|
15
|
+
read<T extends object>(key: T): ObservableInstanceMetadata<T>;
|
|
16
|
+
}
|
|
17
|
+
export declare class ObservableMetadata<T> {
|
|
18
|
+
effects: Set<EffectFn<T>>;
|
|
19
|
+
}
|
|
20
|
+
export declare class ObservableMetadataStore extends WeakMap<object, ObservableMetadata<unknown>> {
|
|
21
|
+
read<T extends object>(key: object): ObservableMetadata<T>;
|
|
22
|
+
}
|
|
23
|
+
export declare const instanceMetadataStore: ObservableInstanceMetaDataStore;
|
|
24
|
+
export declare const observableMetadataStore: ObservableMetadataStore;
|
|
25
|
+
//# sourceMappingURL=metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/lib/metadata.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAExD,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,QAAQ,EAAE,CAAC,CAAC;IACZ,QAAQ,EAAE,CAAC,CAAC;CACb;AAED,qBAAa,OAAO,CAAC,CAAC,CAAE,SAAQ,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;CAAG;AAEhE,qBAAa,0BAA0B,CAAC,CAAC;IACvC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAQ;IACvC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAiB;IACpC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAa;IACzD,WAAW,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAa;CAC/C;AAED,qBAAa,+BAAgC,SAAQ,OAAO,CAC1D,MAAM,EACN,0BAA0B,CAAC,OAAO,CAAC,CACpC;IACC,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC;CAW9D;AAED,qBAAa,kBAAkB,CAAC,CAAC;IAC/B,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAa;CACvC;AAED,qBAAa,uBAAwB,SAAQ,OAAO,CAAC,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACvF,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC;CAW3D;AAED,eAAO,MAAM,qBAAqB,EAAE,+BACG,CAAC;AAExC,eAAO,MAAM,uBAAuB,EAAE,uBAAuD,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Symbol.metadata ??= Symbol("Symbol.metadata");
|
|
2
|
+
export class Changes extends Map {
|
|
3
|
+
}
|
|
4
|
+
export class ObservableInstanceMetadata {
|
|
5
|
+
scheduler = null;
|
|
6
|
+
changes = new Changes();
|
|
7
|
+
bindings = new Set();
|
|
8
|
+
initialized = new Set();
|
|
9
|
+
}
|
|
10
|
+
export class ObservableInstanceMetaDataStore extends WeakMap {
|
|
11
|
+
read(key) {
|
|
12
|
+
let data = this.get(key);
|
|
13
|
+
if (!data) {
|
|
14
|
+
data = new ObservableInstanceMetadata();
|
|
15
|
+
this.set(key, data);
|
|
16
|
+
}
|
|
17
|
+
return data;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export class ObservableMetadata {
|
|
21
|
+
effects = new Set();
|
|
22
|
+
}
|
|
23
|
+
export class ObservableMetadataStore extends WeakMap {
|
|
24
|
+
read(key) {
|
|
25
|
+
let data = this.get(key);
|
|
26
|
+
if (!data) {
|
|
27
|
+
data = new ObservableMetadata();
|
|
28
|
+
this.set(key, data);
|
|
29
|
+
}
|
|
30
|
+
return data;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export const instanceMetadataStore = new ObservableInstanceMetaDataStore();
|
|
34
|
+
export const observableMetadataStore = new ObservableMetadataStore();
|
|
35
|
+
//# sourceMappingURL=metadata.js.map
|
|
@@ -0,0 +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;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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.test.d.ts","sourceRoot":"","sources":["../../src/lib/metadata.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { assert } from "chai";
|
|
2
|
+
import { Changes, ObservableInstanceMetaDataStore } from "./metadata.js";
|
|
3
|
+
it("should return default metadata", () => {
|
|
4
|
+
const key = {};
|
|
5
|
+
const data = new ObservableInstanceMetaDataStore().read(key);
|
|
6
|
+
assert.deepEqual(data, {
|
|
7
|
+
changes: new Changes(),
|
|
8
|
+
scheduler: null,
|
|
9
|
+
bindings: new Set(),
|
|
10
|
+
initialized: new Set(),
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
it("should return the same metadata object after init", () => {
|
|
14
|
+
const key = {};
|
|
15
|
+
const data = new ObservableInstanceMetaDataStore();
|
|
16
|
+
assert.equal(data.read(key), data.read(key));
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=metadata.test.js.map
|
|
@@ -0,0 +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;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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type EffectFn } from "./metadata.js";
|
|
2
|
+
export interface ObserveOpts<This, Value> {
|
|
3
|
+
compute?: (instance: This) => Value;
|
|
4
|
+
}
|
|
5
|
+
export declare function observe<This extends object, Value>(opts?: ObserveOpts<This, Value>): (base: ClassAccessorDecoratorTarget<This, Value>, ctx: ClassAccessorDecoratorContext<This, Value>) => ClassAccessorDecoratorResult<This, Value>;
|
|
6
|
+
export declare function effect(): <T extends object>(value: EffectFn<T>, ctx: ClassMethodDecoratorContext<T>) => void;
|
|
7
|
+
//# sourceMappingURL=observe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../src/lib/observe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAkD,MAAM,eAAe,CAAC;AAI9F,MAAM,WAAW,WAAW,CAAC,IAAI,EAAE,KAAK;IACtC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,KAAK,KAAK,CAAC;CACrC;AAED,wBAAgB,OAAO,CAAC,IAAI,SAAS,MAAM,EAAE,KAAK,EAAE,IAAI,GAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAM,IAEnF,MAAM,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC,EAC/C,KAAK,6BAA6B,CAAC,IAAI,EAAE,KAAK,CAAC,KAC9C,4BAA4B,CAAC,IAAI,EAAE,KAAK,CAAC,CAwE7C;AAED,wBAAgB,MAAM,KACY,CAAC,SAAS,MAAM,EAC9C,OAAO,QAAQ,CAAC,CAAC,CAAC,EAClB,KAAK,2BAA2B,CAAC,CAAC,CAAC,KAClC,IAAI,CAKR"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { instanceMetadataStore, observableMetadataStore } from "./metadata.js";
|
|
2
|
+
const INIT_VALUE = Symbol("init");
|
|
3
|
+
export function observe(opts = {}) {
|
|
4
|
+
return function observeDecorato(base, ctx) {
|
|
5
|
+
const observableMeta = observableMetadataStore.read(ctx.metadata);
|
|
6
|
+
const compute = opts.compute;
|
|
7
|
+
if (compute) {
|
|
8
|
+
observableMeta.effects.add(function mapperFn() {
|
|
9
|
+
ctx.access.set(this, compute(this));
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
init(value) {
|
|
14
|
+
let val = INIT_VALUE;
|
|
15
|
+
// START: Make upgradable custom elements work
|
|
16
|
+
try {
|
|
17
|
+
val = ctx.access.get(this);
|
|
18
|
+
}
|
|
19
|
+
catch { }
|
|
20
|
+
if (val !== INIT_VALUE) {
|
|
21
|
+
Reflect.deleteProperty(this, ctx.name);
|
|
22
|
+
return val;
|
|
23
|
+
}
|
|
24
|
+
// END
|
|
25
|
+
return value;
|
|
26
|
+
},
|
|
27
|
+
get() {
|
|
28
|
+
if (compute) {
|
|
29
|
+
const instanceMeta = instanceMetadataStore.read(this);
|
|
30
|
+
if (!instanceMeta.initialized.has(ctx.name)) {
|
|
31
|
+
instanceMeta.initialized.add(ctx.name);
|
|
32
|
+
return compute(this);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return base.get.call(this);
|
|
36
|
+
},
|
|
37
|
+
set(newValue) {
|
|
38
|
+
const oldValue = base.get.call(this);
|
|
39
|
+
const instanceMeta = instanceMetadataStore.read(this);
|
|
40
|
+
if (newValue !== oldValue) {
|
|
41
|
+
if (instanceMeta.scheduler === null) {
|
|
42
|
+
instanceMeta.scheduler = Promise.resolve().then(() => {
|
|
43
|
+
for (const effect of observableMeta.effects) {
|
|
44
|
+
effect.call(this, instanceMeta.changes);
|
|
45
|
+
}
|
|
46
|
+
for (const binding of instanceMeta.bindings) {
|
|
47
|
+
binding.call(this, instanceMeta.changes);
|
|
48
|
+
}
|
|
49
|
+
instanceMeta.scheduler = null;
|
|
50
|
+
instanceMeta.changes.clear();
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
instanceMeta.changes.set(ctx.name, {
|
|
54
|
+
oldValue,
|
|
55
|
+
newValue,
|
|
56
|
+
});
|
|
57
|
+
base.set.call(this, newValue);
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export function effect() {
|
|
64
|
+
return function effectDecorator(value, ctx) {
|
|
65
|
+
const data = observableMetadataStore.read(ctx.metadata);
|
|
66
|
+
data.effects.add(value);
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=observe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/lib/observe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observe.test.d.ts","sourceRoot":"","sources":["../../src/lib/observe.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
2
|
+
var useValue = arguments.length > 2;
|
|
3
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
4
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
5
|
+
}
|
|
6
|
+
return useValue ? value : void 0;
|
|
7
|
+
};
|
|
8
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
9
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
10
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
11
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
12
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
13
|
+
var _, done = false;
|
|
14
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
15
|
+
var context = {};
|
|
16
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
17
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
18
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
19
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
20
|
+
if (kind === "accessor") {
|
|
21
|
+
if (result === void 0) continue;
|
|
22
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
23
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
24
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
25
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
26
|
+
}
|
|
27
|
+
else if (_ = accept(result)) {
|
|
28
|
+
if (kind === "field") initializers.unshift(_);
|
|
29
|
+
else descriptor[key] = _;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
33
|
+
done = true;
|
|
34
|
+
};
|
|
35
|
+
var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
|
|
36
|
+
if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
|
|
37
|
+
return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
|
|
38
|
+
};
|
|
39
|
+
import { assert } from "chai";
|
|
40
|
+
import { effect, observe } from "./observe.js";
|
|
41
|
+
it("should work with static accessors", () => {
|
|
42
|
+
return new Promise((resolve) => {
|
|
43
|
+
// biome-ignore lint/complexity/noStaticOnlyClass: <explanation>
|
|
44
|
+
let Counter = (() => {
|
|
45
|
+
let _staticExtraInitializers = [];
|
|
46
|
+
let _static_value_decorators;
|
|
47
|
+
let _static_value_initializers = [];
|
|
48
|
+
let _static_value_extraInitializers = [];
|
|
49
|
+
let _static_onPropChanged_decorators;
|
|
50
|
+
return class Counter {
|
|
51
|
+
static {
|
|
52
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
53
|
+
_static_value_decorators = [observe()];
|
|
54
|
+
_static_onPropChanged_decorators = [effect()];
|
|
55
|
+
__esDecorate(this, null, _static_value_decorators, { kind: "accessor", name: "value", static: true, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _static_value_initializers, _static_value_extraInitializers);
|
|
56
|
+
__esDecorate(this, null, _static_onPropChanged_decorators, { kind: "method", name: "onPropChanged", static: true, private: false, access: { has: obj => "onPropChanged" in obj, get: obj => obj.onPropChanged }, metadata: _metadata }, null, _staticExtraInitializers);
|
|
57
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
58
|
+
}
|
|
59
|
+
static #value_accessor_storage = (__runInitializers(this, _staticExtraInitializers), __runInitializers(this, _static_value_initializers, 0));
|
|
60
|
+
static get value() { return Counter.#value_accessor_storage; }
|
|
61
|
+
static set value(value) { Counter.#value_accessor_storage = value; }
|
|
62
|
+
static onPropChanged() {
|
|
63
|
+
assert.equal(Counter.value, 1);
|
|
64
|
+
resolve();
|
|
65
|
+
}
|
|
66
|
+
static {
|
|
67
|
+
__runInitializers(this, _static_value_extraInitializers);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
})();
|
|
71
|
+
assert.equal(Counter.value, 0);
|
|
72
|
+
Counter.value++;
|
|
73
|
+
assert.equal(Counter.value, 1);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
it("should work with instance accessors", () => {
|
|
77
|
+
return new Promise((resolve) => {
|
|
78
|
+
let Counter = (() => {
|
|
79
|
+
let _instanceExtraInitializers = [];
|
|
80
|
+
let _value_decorators;
|
|
81
|
+
let _value_initializers = [];
|
|
82
|
+
let _value_extraInitializers = [];
|
|
83
|
+
let _private_onChange_decorators;
|
|
84
|
+
let _private_onChange_descriptor;
|
|
85
|
+
return class Counter {
|
|
86
|
+
static {
|
|
87
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
88
|
+
_value_decorators = [observe()];
|
|
89
|
+
_private_onChange_decorators = [effect()];
|
|
90
|
+
__esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
|
|
91
|
+
__esDecorate(this, _private_onChange_descriptor = { value: __setFunctionName(function () {
|
|
92
|
+
assert.equal(this.value, 1);
|
|
93
|
+
resolve();
|
|
94
|
+
}, "#onChange") }, _private_onChange_decorators, { kind: "method", name: "#onChange", static: false, private: true, access: { has: obj => #onChange in obj, get: obj => obj.#onChange }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
95
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
96
|
+
}
|
|
97
|
+
#value_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _value_initializers, 0));
|
|
98
|
+
get value() { return this.#value_accessor_storage; }
|
|
99
|
+
set value(value) { this.#value_accessor_storage = value; }
|
|
100
|
+
// confirm it works with private methods
|
|
101
|
+
// @ts-ignore
|
|
102
|
+
get #onChange() { return _private_onChange_descriptor.value; }
|
|
103
|
+
constructor() {
|
|
104
|
+
__runInitializers(this, _value_extraInitializers);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
})();
|
|
108
|
+
const counter = new Counter();
|
|
109
|
+
assert.equal(counter.value, 0);
|
|
110
|
+
counter.value++;
|
|
111
|
+
assert.equal(counter.value, 1);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
it("should return a set of changed props", () => {
|
|
115
|
+
return new Promise((resolve) => {
|
|
116
|
+
let Counter = (() => {
|
|
117
|
+
let _instanceExtraInitializers = [];
|
|
118
|
+
let _value_decorators;
|
|
119
|
+
let _value_initializers = [];
|
|
120
|
+
let _value_extraInitializers = [];
|
|
121
|
+
let _onChange_decorators;
|
|
122
|
+
return class Counter {
|
|
123
|
+
static {
|
|
124
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
125
|
+
_value_decorators = [observe()];
|
|
126
|
+
_onChange_decorators = [effect()];
|
|
127
|
+
__esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
|
|
128
|
+
__esDecorate(this, null, _onChange_decorators, { kind: "method", name: "onChange", static: false, private: false, access: { has: obj => "onChange" in obj, get: obj => obj.onChange }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
129
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
130
|
+
}
|
|
131
|
+
#value_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _value_initializers, 0));
|
|
132
|
+
get value() { return this.#value_accessor_storage; }
|
|
133
|
+
set value(value) { this.#value_accessor_storage = value; }
|
|
134
|
+
onChange(changes) {
|
|
135
|
+
assert.deepEqual(changes.get("value"), {
|
|
136
|
+
oldValue: 0,
|
|
137
|
+
newValue: 1,
|
|
138
|
+
});
|
|
139
|
+
resolve();
|
|
140
|
+
}
|
|
141
|
+
constructor() {
|
|
142
|
+
__runInitializers(this, _value_extraInitializers);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
})();
|
|
146
|
+
const counter = new Counter();
|
|
147
|
+
counter.value++;
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
it("should upgrade custom elements", () => {
|
|
151
|
+
return new Promise((resolve) => {
|
|
152
|
+
let Counter = (() => {
|
|
153
|
+
let _classSuper = HTMLElement;
|
|
154
|
+
let _instanceExtraInitializers = [];
|
|
155
|
+
let _value_decorators;
|
|
156
|
+
let _value_initializers = [];
|
|
157
|
+
let _value_extraInitializers = [];
|
|
158
|
+
let _onChange_decorators;
|
|
159
|
+
return class Counter extends _classSuper {
|
|
160
|
+
static {
|
|
161
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
162
|
+
_value_decorators = [observe()];
|
|
163
|
+
_onChange_decorators = [effect()];
|
|
164
|
+
__esDecorate(this, null, _value_decorators, { kind: "accessor", name: "value", static: false, private: false, access: { has: obj => "value" in obj, get: obj => obj.value, set: (obj, value) => { obj.value = value; } }, metadata: _metadata }, _value_initializers, _value_extraInitializers);
|
|
165
|
+
__esDecorate(this, null, _onChange_decorators, { kind: "method", name: "onChange", static: false, private: false, access: { has: obj => "onChange" in obj, get: obj => obj.onChange }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
166
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
167
|
+
}
|
|
168
|
+
#value_accessor_storage = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _value_initializers, 0));
|
|
169
|
+
get value() { return this.#value_accessor_storage; }
|
|
170
|
+
set value(value) { this.#value_accessor_storage = value; }
|
|
171
|
+
constructor() {
|
|
172
|
+
super();
|
|
173
|
+
__runInitializers(this, _value_extraInitializers);
|
|
174
|
+
assert.equal(this.value, 100);
|
|
175
|
+
}
|
|
176
|
+
onChange() {
|
|
177
|
+
assert.equal(this.value, 101);
|
|
178
|
+
resolve();
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
})();
|
|
182
|
+
const el = document.createElement("observable-1");
|
|
183
|
+
el.value = 100;
|
|
184
|
+
document.body.append(el);
|
|
185
|
+
customElements.whenDefined("observable-1").then(() => {
|
|
186
|
+
el.value++;
|
|
187
|
+
});
|
|
188
|
+
customElements.define("observable-1", Counter);
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
describe("computed decorator", () => {
|
|
192
|
+
it("should compute values based on other properties", async () => {
|
|
193
|
+
let TestClass = (() => {
|
|
194
|
+
let _firstName_decorators;
|
|
195
|
+
let _firstName_initializers = [];
|
|
196
|
+
let _firstName_extraInitializers = [];
|
|
197
|
+
let _lastName_decorators;
|
|
198
|
+
let _lastName_initializers = [];
|
|
199
|
+
let _lastName_extraInitializers = [];
|
|
200
|
+
let _fullName_decorators;
|
|
201
|
+
let _fullName_initializers = [];
|
|
202
|
+
let _fullName_extraInitializers = [];
|
|
203
|
+
return class TestClass {
|
|
204
|
+
static {
|
|
205
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
206
|
+
_firstName_decorators = [observe()];
|
|
207
|
+
_lastName_decorators = [observe()];
|
|
208
|
+
_fullName_decorators = [observe({
|
|
209
|
+
compute: (i) => `${i.firstName} ${i.lastName}`,
|
|
210
|
+
})];
|
|
211
|
+
__esDecorate(this, null, _firstName_decorators, { kind: "accessor", name: "firstName", static: false, private: false, access: { has: obj => "firstName" in obj, get: obj => obj.firstName, set: (obj, value) => { obj.firstName = value; } }, metadata: _metadata }, _firstName_initializers, _firstName_extraInitializers);
|
|
212
|
+
__esDecorate(this, null, _lastName_decorators, { kind: "accessor", name: "lastName", static: false, private: false, access: { has: obj => "lastName" in obj, get: obj => obj.lastName, set: (obj, value) => { obj.lastName = value; } }, metadata: _metadata }, _lastName_initializers, _lastName_extraInitializers);
|
|
213
|
+
__esDecorate(this, null, _fullName_decorators, { kind: "accessor", name: "fullName", static: false, private: false, access: { has: obj => "fullName" in obj, get: obj => obj.fullName, set: (obj, value) => { obj.fullName = value; } }, metadata: _metadata }, _fullName_initializers, _fullName_extraInitializers);
|
|
214
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
215
|
+
}
|
|
216
|
+
#firstName_accessor_storage = __runInitializers(this, _firstName_initializers, "John");
|
|
217
|
+
get firstName() { return this.#firstName_accessor_storage; }
|
|
218
|
+
set firstName(value) { this.#firstName_accessor_storage = value; }
|
|
219
|
+
#lastName_accessor_storage = (__runInitializers(this, _firstName_extraInitializers), __runInitializers(this, _lastName_initializers, "Doe"));
|
|
220
|
+
get lastName() { return this.#lastName_accessor_storage; }
|
|
221
|
+
set lastName(value) { this.#lastName_accessor_storage = value; }
|
|
222
|
+
#fullName_accessor_storage = (__runInitializers(this, _lastName_extraInitializers), __runInitializers(this, _fullName_initializers, ""));
|
|
223
|
+
get fullName() { return this.#fullName_accessor_storage; }
|
|
224
|
+
set fullName(value) { this.#fullName_accessor_storage = value; }
|
|
225
|
+
constructor() {
|
|
226
|
+
__runInitializers(this, _fullName_extraInitializers);
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
})();
|
|
230
|
+
const instance = new TestClass();
|
|
231
|
+
assert.equal(instance.fullName, "John Doe");
|
|
232
|
+
// Update dependencies
|
|
233
|
+
instance.firstName = "Jane";
|
|
234
|
+
await Promise.resolve();
|
|
235
|
+
assert.equal(instance.fullName, "Jane Doe");
|
|
236
|
+
});
|
|
237
|
+
it("should handle multiple computed properties", async () => {
|
|
238
|
+
let TestClass = (() => {
|
|
239
|
+
let _x_decorators;
|
|
240
|
+
let _x_initializers = [];
|
|
241
|
+
let _x_extraInitializers = [];
|
|
242
|
+
let _y_decorators;
|
|
243
|
+
let _y_initializers = [];
|
|
244
|
+
let _y_extraInitializers = [];
|
|
245
|
+
let _sum_decorators;
|
|
246
|
+
let _sum_initializers = [];
|
|
247
|
+
let _sum_extraInitializers = [];
|
|
248
|
+
let _product_decorators;
|
|
249
|
+
let _product_initializers = [];
|
|
250
|
+
let _product_extraInitializers = [];
|
|
251
|
+
return class TestClass {
|
|
252
|
+
static {
|
|
253
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
254
|
+
_x_decorators = [observe()];
|
|
255
|
+
_y_decorators = [observe()];
|
|
256
|
+
_sum_decorators = [observe({
|
|
257
|
+
compute: (i) => i.x + i.y,
|
|
258
|
+
})];
|
|
259
|
+
_product_decorators = [observe({
|
|
260
|
+
compute: (i) => i.x * i.y,
|
|
261
|
+
})];
|
|
262
|
+
__esDecorate(this, null, _x_decorators, { kind: "accessor", name: "x", static: false, private: false, access: { has: obj => "x" in obj, get: obj => obj.x, set: (obj, value) => { obj.x = value; } }, metadata: _metadata }, _x_initializers, _x_extraInitializers);
|
|
263
|
+
__esDecorate(this, null, _y_decorators, { kind: "accessor", name: "y", static: false, private: false, access: { has: obj => "y" in obj, get: obj => obj.y, set: (obj, value) => { obj.y = value; } }, metadata: _metadata }, _y_initializers, _y_extraInitializers);
|
|
264
|
+
__esDecorate(this, null, _sum_decorators, { kind: "accessor", name: "sum", static: false, private: false, access: { has: obj => "sum" in obj, get: obj => obj.sum, set: (obj, value) => { obj.sum = value; } }, metadata: _metadata }, _sum_initializers, _sum_extraInitializers);
|
|
265
|
+
__esDecorate(this, null, _product_decorators, { kind: "accessor", name: "product", static: false, private: false, access: { has: obj => "product" in obj, get: obj => obj.product, set: (obj, value) => { obj.product = value; } }, metadata: _metadata }, _product_initializers, _product_extraInitializers);
|
|
266
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
267
|
+
}
|
|
268
|
+
#x_accessor_storage = __runInitializers(this, _x_initializers, 2);
|
|
269
|
+
get x() { return this.#x_accessor_storage; }
|
|
270
|
+
set x(value) { this.#x_accessor_storage = value; }
|
|
271
|
+
#y_accessor_storage = (__runInitializers(this, _x_extraInitializers), __runInitializers(this, _y_initializers, 3));
|
|
272
|
+
get y() { return this.#y_accessor_storage; }
|
|
273
|
+
set y(value) { this.#y_accessor_storage = value; }
|
|
274
|
+
#sum_accessor_storage = (__runInitializers(this, _y_extraInitializers), __runInitializers(this, _sum_initializers, 0));
|
|
275
|
+
get sum() { return this.#sum_accessor_storage; }
|
|
276
|
+
set sum(value) { this.#sum_accessor_storage = value; }
|
|
277
|
+
#product_accessor_storage = (__runInitializers(this, _sum_extraInitializers), __runInitializers(this, _product_initializers, 0));
|
|
278
|
+
get product() { return this.#product_accessor_storage; }
|
|
279
|
+
set product(value) { this.#product_accessor_storage = value; }
|
|
280
|
+
constructor() {
|
|
281
|
+
__runInitializers(this, _product_extraInitializers);
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
})();
|
|
285
|
+
const instance = new TestClass();
|
|
286
|
+
assert.equal(instance.sum, 5);
|
|
287
|
+
assert.equal(instance.product, 6);
|
|
288
|
+
// Update dependencies
|
|
289
|
+
instance.x = 4;
|
|
290
|
+
await Promise.resolve();
|
|
291
|
+
assert.equal(instance.sum, 7);
|
|
292
|
+
assert.equal(instance.product, 12);
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
//# sourceMappingURL=observe.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observe.test.js","sourceRoot":"","sources":["../../src/lib/observe.test.ts"],"names":[],"mappings":"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"}
|
package/target/lib.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { observe, effect } from "./lib/observe.js";
|
|
2
|
+
export type { ObserveOpts } from "./lib/observe.js";
|
|
3
|
+
export type { Changes, Change } from "./lib/metadata.js";
|
|
4
|
+
export { instanceMetadataStore, observableMetadataStore } from "./lib/metadata.js";
|
|
5
|
+
//# sourceMappingURL=lib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/target/lib.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGnD,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC"}
|