@joist/observable 2.0.0-alpha.2 → 2.0.0-beta.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joist/observable",
3
- "version": "2.0.0-alpha.2",
3
+ "version": "2.0.0-beta.0",
4
4
  "main": "./target/build/lib.js",
5
5
  "module": "./target/build/lib.js",
6
6
  "exports": {
@@ -34,5 +34,5 @@
34
34
  "test": "tsc -p tsconfig.test.json && wtr --config ../../wtr.config.mjs --port 8002",
35
35
  "build": "tsc -p tsconfig.build.json"
36
36
  },
37
- "gitHead": "7bf6691cd374a438ae21264f6c27ed82ae04f0d3"
37
+ "gitHead": "c78191a2cab50ec09abee20f688b245d235948d1"
38
38
  }
@@ -8,7 +8,7 @@ export declare type Changes = Record<string | symbol, Change>;
8
8
  export interface OnChange {
9
9
  onChange(changes: Changes): void;
10
10
  }
11
- export declare function readPropertyDefs(c: any): Record<string | symbol, {}>;
11
+ export declare function readPropertyDefs(c: any): Array<string | symbol>;
12
12
  export interface ObservableBase {
13
13
  propChanges: Changes;
14
14
  propChange: Promise<void> | null;
@@ -10,12 +10,12 @@ export function readPropertyDefs(c) {
10
10
  return c[PROPERTY_KEY] || {};
11
11
  }
12
12
  export function observe(target, key) {
13
- target.constructor[PROPERTY_KEY] = target.constructor[PROPERTY_KEY] || {};
14
- target.constructor[PROPERTY_KEY][key] = {};
13
+ target.constructor[PROPERTY_KEY] = target.constructor[PROPERTY_KEY] || [];
14
+ target.constructor[PROPERTY_KEY].push(key);
15
15
  }
16
16
  export function observable(Base) {
17
- const defs = readPropertyDefs(Base);
18
- const props = createPropertyDescripors(defs);
17
+ const props = readPropertyDefs(Base);
18
+ const descriptors = createPropertyDescripors(props);
19
19
  return class Observable extends Base {
20
20
  constructor(...args) {
21
21
  super(...args);
@@ -23,25 +23,29 @@ export function observable(Base) {
23
23
  this.propChange = null;
24
24
  this.initializedChanges = new Set();
25
25
  this.definePropChange = definePropChange;
26
- for (let def in defs) {
27
- Reflect.set(this, createPrivateKey(def), Reflect.get(this, def));
28
- }
29
- Object.defineProperties(this, props);
26
+ initObservbale.call(this, descriptors);
30
27
  }
31
28
  };
32
29
  }
30
+ function initObservbale(descriptors) {
31
+ for (let prop in descriptors) {
32
+ Reflect.set(this, createPrivateKey(prop), Reflect.get(this, prop));
33
+ }
34
+ Object.defineProperties(this, descriptors);
35
+ }
33
36
  function createPrivateKey(key) {
34
- return `__${key}`;
37
+ return `__${key.toString()}`;
35
38
  }
36
- function createPropertyDescripors(defs) {
37
- const props = {};
38
- for (let def in defs) {
39
- const privateKey = createPrivateKey(def);
40
- props[def] = {
39
+ function createPropertyDescripors(props) {
40
+ const descriptors = {};
41
+ for (let i = 0; i < props.length; i++) {
42
+ const prop = props[i];
43
+ const privateKey = createPrivateKey(prop);
44
+ descriptors[prop] = {
41
45
  set(val) {
42
46
  const prevVal = Reflect.get(this, privateKey);
43
47
  if (prevVal !== val) {
44
- this.definePropChange(def, new Change(val, prevVal, true));
48
+ this.definePropChange(prop, new Change(val, prevVal, true));
45
49
  }
46
50
  return Reflect.set(this, privateKey, val);
47
51
  },
@@ -50,7 +54,7 @@ function createPropertyDescripors(defs) {
50
54
  },
51
55
  };
52
56
  }
53
- return props;
57
+ return descriptors;
54
58
  }
55
59
  function definePropChange(key, propChange) {
56
60
  if (!this.propChanges[key]) {
@@ -1 +1 @@
1
- {"version":3,"file":"observable.js","sourceRoot":"","sources":["../../../lib/observable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observable.js","sourceRoot":"","sources":["../../../lib/observable.ts"],"names":[],"mappings":"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"}