async-reactivity 1.0.2 → 1.1.3

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/lib/ref.js CHANGED
@@ -1,23 +1,23 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const tracker_1 = __importDefault(require("./tracker"));
7
- class Ref extends tracker_1.default {
8
- constructor(_value) {
9
- super();
10
- this._value = _value;
11
- }
12
- set value(_value) {
13
- const lastValue = this._value;
14
- this._value = _value;
15
- if (lastValue !== _value) {
16
- this.invalidate();
17
- }
18
- }
19
- get value() {
20
- return super.value;
21
- }
22
- }
23
- exports.default = Ref;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const tracker_js_1 = __importDefault(require("./tracker.js"));
7
+ class Ref extends tracker_js_1.default {
8
+ constructor(_value) {
9
+ super();
10
+ this._value = _value;
11
+ }
12
+ set value(_value) {
13
+ const lastValue = this._value;
14
+ this._value = _value;
15
+ if (lastValue !== _value) {
16
+ this.invalidate();
17
+ }
18
+ }
19
+ get value() {
20
+ return super.value;
21
+ }
22
+ }
23
+ exports.default = Ref;
package/lib/tracker.js CHANGED
@@ -1,22 +1,22 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class Tracker {
4
- constructor() {
5
- this.dependents = new Set();
6
- }
7
- addDependent(dependent) {
8
- this.dependents.add(dependent);
9
- }
10
- removeDependent(dependent) {
11
- this.dependents.delete(dependent);
12
- }
13
- invalidate() {
14
- for (const dependent of [...this.dependents.keys()]) {
15
- dependent.invalidate();
16
- }
17
- }
18
- get value() {
19
- return this._value;
20
- }
21
- }
22
- exports.default = Tracker;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class Tracker {
4
+ constructor() {
5
+ this.dependents = new Set();
6
+ }
7
+ addDependent(dependent) {
8
+ this.dependents.add(dependent);
9
+ }
10
+ removeDependent(dependent) {
11
+ this.dependents.delete(dependent);
12
+ }
13
+ invalidate() {
14
+ for (const dependent of [...this.dependents.keys()]) {
15
+ dependent.invalidate();
16
+ }
17
+ }
18
+ get value() {
19
+ return this._value;
20
+ }
21
+ }
22
+ exports.default = Tracker;
package/lib/watcher.js CHANGED
@@ -1,41 +1,41 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const tracker_1 = __importDefault(require("./tracker"));
7
- var WatchState;
8
- (function (WatchState) {
9
- WatchState[WatchState["Uncertain"] = 0] = "Uncertain";
10
- WatchState[WatchState["Valid"] = 1] = "Valid";
11
- })(WatchState || (WatchState = {}));
12
- ;
13
- class Watcher extends tracker_1.default {
14
- constructor(dependency, onChange, immediate = true) {
15
- super();
16
- this.state = WatchState.Valid;
17
- this.onChange = onChange;
18
- this.dependency = dependency;
19
- dependency.addDependent(this);
20
- this._value = dependency.value;
21
- if (immediate) {
22
- onChange(this._value);
23
- }
24
- }
25
- invalidate() {
26
- this.state = WatchState.Uncertain;
27
- const oldValue = this._value;
28
- this._value = this.dependency.value;
29
- if (this.state === WatchState.Uncertain) {
30
- this.onChange(this._value, oldValue);
31
- this.state = WatchState.Valid;
32
- }
33
- }
34
- validate() {
35
- this.state = WatchState.Valid;
36
- }
37
- dispose() {
38
- this.dependency.removeDependent(this);
39
- }
40
- }
41
- exports.default = Watcher;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const tracker_js_1 = __importDefault(require("./tracker.js"));
7
+ var WatchState;
8
+ (function (WatchState) {
9
+ WatchState[WatchState["Uncertain"] = 0] = "Uncertain";
10
+ WatchState[WatchState["Valid"] = 1] = "Valid";
11
+ })(WatchState || (WatchState = {}));
12
+ ;
13
+ class Watcher extends tracker_js_1.default {
14
+ constructor(dependency, onChange, immediate = true) {
15
+ super();
16
+ this.state = WatchState.Valid;
17
+ this.onChange = onChange;
18
+ this.dependency = dependency;
19
+ dependency.addDependent(this);
20
+ this._value = dependency.value;
21
+ if (immediate) {
22
+ onChange(this._value);
23
+ }
24
+ }
25
+ invalidate() {
26
+ this.state = WatchState.Uncertain;
27
+ const oldValue = this._value;
28
+ this._value = this.dependency.value;
29
+ if (this.state === WatchState.Uncertain) {
30
+ this.onChange(this._value, oldValue);
31
+ this.state = WatchState.Valid;
32
+ }
33
+ }
34
+ validate() {
35
+ this.state = WatchState.Valid;
36
+ }
37
+ dispose() {
38
+ this.dependency.removeDependent(this);
39
+ }
40
+ }
41
+ exports.default = Watcher;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "async-reactivity",
3
- "version": "1.0.2",
3
+ "version": "1.1.3",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "types": "types/index.d.ts",
@@ -10,15 +10,16 @@
10
10
  "types"
11
11
  ],
12
12
  "scripts": {
13
- "dev": "npx tsc -w -p src",
14
- "test-dev": "mocha --watch \"./{,!(node_modules)/**/}*.test.js\""
13
+ "dev": "tsc -w -p src",
14
+ "build": "tsc -p src",
15
+ "test": "mocha \"./{,!(node_modules)/**/}*.test.js\""
15
16
  },
16
17
  "author": "Donatas Lučiūnas",
17
18
  "license": "ISC",
18
19
  "devDependencies": {
19
- "@types/mocha": "^9.1.1",
20
- "@types/node": "^17.0.41",
21
- "mocha": "^10.0.0",
22
- "typescript": "^4.7.3"
20
+ "@types/mocha": "^10.0.6",
21
+ "@types/node": "^20.10.5",
22
+ "mocha": "^10.2.0",
23
+ "typescript": "^5.3.3"
23
24
  }
24
25
  }
package/src/computed.ts CHANGED
@@ -1,6 +1,6 @@
1
- import Dependency from "./dependency";
2
- import Dependent from "./dependent";
3
- import Tracker from "./tracker";
1
+ import Dependency from "./dependency.js";
2
+ import Dependent from "./dependent.js";
3
+ import Tracker from "./tracker.js";
4
4
 
5
5
  declare type TrackValue = <T>(dependency: Dependency<T>) => T;
6
6
  export declare type ComputeFunc<T> = (value: TrackValue) => T;
@@ -121,8 +121,9 @@ export default class Computed<T> extends Tracker<T> implements Dependent, Depend
121
121
 
122
122
  public invalidate() {
123
123
  if (this.state === ComputedState.Computing) {
124
- setImmediate(this.compute.bind(this));
125
- } if (this.state !== ComputedState.Uncertain) {
124
+ this.lastComputeAttemptPromise = undefined; // prevent finalizeComputing if it is in the event loop already
125
+ Promise.resolve().then(this.compute.bind(this));
126
+ } else if (this.state === ComputedState.Valid) {
126
127
  this.state = ComputedState.Uncertain;
127
128
  super.invalidate();
128
129
  }
package/src/dependency.ts CHANGED
@@ -1,4 +1,4 @@
1
- import Dependent from "./dependent";
1
+ import Dependent from "./dependent.js";
2
2
 
3
3
  export default interface Dependency<T> {
4
4
  get value(): T;
package/src/dependent.ts CHANGED
@@ -1,4 +1,4 @@
1
- import Dependency from "./dependency";
1
+ import Dependency from "./dependency.js";
2
2
 
3
3
  export default interface Dependent {
4
4
  invalidate(): void;
package/src/index.test.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { Computed, Ref, Watcher } from './';
2
- import * as assert from 'assert';
1
+ import 'mocha';
2
+ import assert from 'assert';
3
+ import { Computed, Ref, Watcher } from './index.js';
3
4
 
4
5
  describe('async reactivity', function () {
5
6
  describe('ref', function () {
@@ -172,6 +173,14 @@ describe('async reactivity', function () {
172
173
  assert.rejects(async () => await a.value);
173
174
  });
174
175
 
176
+ it('dependency changed while computing', async function () {
177
+ const a = new Ref(5);
178
+ const b = new Computed(async (value) => value(a) + 5);
179
+ b.value; // trigger compute
180
+ a.value = 8;
181
+ assert.strictEqual(await b.value, 13);
182
+ });
183
+
175
184
  it('old dependency changed while computing', async function () {
176
185
  let gate = 0;
177
186
  const a = new Ref(5);
@@ -243,9 +252,8 @@ describe('async reactivity', function () {
243
252
  b.value;
244
253
  assert.strictEqual(gate, 1);
245
254
  b.dispose();
246
- a.value = 6;
247
255
  b.value;
248
- assert.strictEqual(gate, 1);
256
+ assert.strictEqual(gate, 2);
249
257
  });
250
258
  });
251
259
 
package/src/index.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { default as Computed, ComputeFunc, ComputeFuncScoped } from './computed';
2
- export { default as Ref } from './ref';
3
- export { default as Watcher } from './watcher';
4
- export { default as Dependency } from './dependency';
5
- export { default as Dependent } from './dependent';
1
+ export { default as Computed, ComputeFunc, ComputeFuncScoped } from './computed.js';
2
+ export { default as Ref } from './ref.js';
3
+ export { default as Watcher } from './watcher.js';
4
+ export { default as Dependency } from './dependency.js';
5
+ export { default as Dependent } from './dependent.js';
package/src/ref.ts CHANGED
@@ -1,5 +1,5 @@
1
- import Dependency from "./dependency";
2
- import Tracker from "./tracker";
1
+ import Dependency from "./dependency.js";
2
+ import Tracker from "./tracker.js";
3
3
 
4
4
  export default class Ref<T> extends Tracker<T> implements Dependency<T> {
5
5
 
package/src/tracker.ts CHANGED
@@ -1,5 +1,5 @@
1
- import Computed from "./computed";
2
- import Watcher from "./watcher";
1
+ import Computed from "./computed.js";
2
+ import Watcher from "./watcher.js";
3
3
 
4
4
  type Dependent = Computed<any> | Watcher<any>;
5
5
 
package/src/tsconfig.json CHANGED
@@ -22,9 +22,9 @@
22
22
  // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
23
23
  // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
24
24
  /* Modules */
25
- "module": "commonjs", /* Specify what module code is generated. */
25
+ "module": "CommonJS", /* Specify what module code is generated. */
26
26
  // "rootDir": "./", /* Specify the root folder within your source files. */
27
- // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
27
+ "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
28
28
  // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
29
29
  // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
30
30
  // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
package/src/watcher.ts CHANGED
@@ -1,6 +1,6 @@
1
- import Dependency from "./dependency";
2
- import Dependent from "./dependent";
3
- import Tracker from "./tracker";
1
+ import Dependency from "./dependency.js";
2
+ import Dependent from "./dependent.js";
3
+ import Tracker from "./tracker.js";
4
4
 
5
5
  enum WatchState {
6
6
  Uncertain,
@@ -1,30 +1,30 @@
1
- import Dependency from "./dependency";
2
- import Dependent from "./dependent";
3
- import Tracker from "./tracker";
4
- declare type TrackValue = <T>(dependency: Dependency<T>) => T;
5
- export declare type ComputeFunc<T> = (value: TrackValue) => T;
6
- export declare type ComputeFuncScoped<T1, T2> = (value: TrackValue, scope: T1) => T2;
7
- export default class Computed<T> extends Tracker<T> implements Dependent, Dependency<T> {
8
- getter: ComputeFunc<T>;
9
- private state;
10
- private dependencies;
11
- private computePromise?;
12
- private computePromiseActions?;
13
- private lastComputeAttemptPromise?;
14
- constructor(getter: ComputeFunc<T>);
15
- private prepareComputePromise;
16
- get value(): T;
17
- private compute;
18
- private clearDependencies;
19
- private handlePromiseThen;
20
- private handlePromiseCatch;
21
- private innerTrackDependency;
22
- private trackDependency;
23
- private finalizeComputing;
24
- invalidate(): void;
25
- validate(dependency: Dependency<any>): void;
26
- private validateDependents;
27
- dispose(): void;
28
- }
29
- export {};
1
+ import Dependency from "./dependency.js";
2
+ import Dependent from "./dependent.js";
3
+ import Tracker from "./tracker.js";
4
+ declare type TrackValue = <T>(dependency: Dependency<T>) => T;
5
+ export declare type ComputeFunc<T> = (value: TrackValue) => T;
6
+ export declare type ComputeFuncScoped<T1, T2> = (value: TrackValue, scope: T1) => T2;
7
+ export default class Computed<T> extends Tracker<T> implements Dependent, Dependency<T> {
8
+ getter: ComputeFunc<T>;
9
+ private state;
10
+ private dependencies;
11
+ private computePromise?;
12
+ private computePromiseActions?;
13
+ private lastComputeAttemptPromise?;
14
+ constructor(getter: ComputeFunc<T>);
15
+ private prepareComputePromise;
16
+ get value(): T;
17
+ private compute;
18
+ private clearDependencies;
19
+ private handlePromiseThen;
20
+ private handlePromiseCatch;
21
+ private innerTrackDependency;
22
+ private trackDependency;
23
+ private finalizeComputing;
24
+ invalidate(): void;
25
+ validate(dependency: Dependency<any>): void;
26
+ private validateDependents;
27
+ dispose(): void;
28
+ }
29
+ export {};
30
30
  //# sourceMappingURL=computed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../src/computed.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,OAAO,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9D,MAAM,CAAC,OAAO,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,KAAK,CAAC,CAAC;AAC9D,MAAM,CAAC,OAAO,MAAM,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;AAWrF,MAAM,CAAC,OAAO,OAAO,QAAQ,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAE,YAAW,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IACnF,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,cAAc,CAAC,CAAI;IAC3B,OAAO,CAAC,qBAAqB,CAAC,CAA0C;IACxE,OAAO,CAAC,yBAAyB,CAAC,CAAgB;gBAEtC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAMlC,OAAO,CAAC,qBAAqB;IAS7B,IAAW,KAAK,IAAI,CAAC,CAMpB;IAED,OAAO,CAAC,OAAO;IAmCf,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,eAAe,CAAwC;IAE/D,OAAO,CAAC,iBAAiB;IAMlB,UAAU;IASV,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC;IAI3C,OAAO,CAAC,kBAAkB;IAMnB,OAAO;CAOjB"}
1
+ {"version":3,"file":"computed.d.ts","sourceRoot":"","sources":["../src/computed.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC9D,MAAM,CAAC,OAAO,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,KAAK,CAAC,CAAC;AAC9D,MAAM,CAAC,OAAO,MAAM,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC;AAWrF,MAAM,CAAC,OAAO,OAAO,QAAQ,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAE,YAAW,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IACnF,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,cAAc,CAAC,CAAI;IAC3B,OAAO,CAAC,qBAAqB,CAAC,CAA0C;IACxE,OAAO,CAAC,yBAAyB,CAAC,CAAgB;gBAEtC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAMlC,OAAO,CAAC,qBAAqB;IAS7B,IAAW,KAAK,IAAI,CAAC,CAMpB;IAED,OAAO,CAAC,OAAO;IAmCf,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,eAAe,CAAwC;IAE/D,OAAO,CAAC,iBAAiB;IAMlB,UAAU;IAUV,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC;IAI3C,OAAO,CAAC,kBAAkB;IAMnB,OAAO;CAOjB"}
@@ -1,7 +1,7 @@
1
- import Dependent from "./dependent";
2
- export default interface Dependency<T> {
3
- get value(): T;
4
- addDependent(dependent: Dependent): void;
5
- removeDependent(dependent: Dependent): void;
6
- }
1
+ import Dependent from "./dependent.js";
2
+ export default interface Dependency<T> {
3
+ get value(): T;
4
+ addDependent(dependent: Dependent): void;
5
+ removeDependent(dependent: Dependent): void;
6
+ }
7
7
  //# sourceMappingURL=dependency.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dependency.d.ts","sourceRoot":"","sources":["../src/dependency.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,MAAM,CAAC,OAAO,WAAW,UAAU,CAAC,CAAC;IACjC,IAAI,KAAK,IAAI,CAAC,CAAC;IACf,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IACzC,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;CAC/C"}
1
+ {"version":3,"file":"dependency.d.ts","sourceRoot":"","sources":["../src/dependency.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC,MAAM,CAAC,OAAO,WAAW,UAAU,CAAC,CAAC;IACjC,IAAI,KAAK,IAAI,CAAC,CAAC;IACf,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IACzC,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;CAC/C"}
@@ -1,7 +1,7 @@
1
- import Dependency from "./dependency";
2
- export default interface Dependent {
3
- invalidate(): void;
4
- validate(dependency: Dependency<any>): void;
5
- dispose(): void;
6
- }
1
+ import Dependency from "./dependency.js";
2
+ export default interface Dependent {
3
+ invalidate(): void;
4
+ validate(dependency: Dependency<any>): void;
5
+ dispose(): void;
6
+ }
7
7
  //# sourceMappingURL=dependent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dependent.d.ts","sourceRoot":"","sources":["../src/dependent.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,OAAO,WAAW,SAAS;IAC9B,UAAU,IAAI,IAAI,CAAC;IACnB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC5C,OAAO,IAAI,IAAI,CAAC;CACnB"}
1
+ {"version":3,"file":"dependent.d.ts","sourceRoot":"","sources":["../src/dependent.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AAEzC,MAAM,CAAC,OAAO,WAAW,SAAS;IAC9B,UAAU,IAAI,IAAI,CAAC;IACnB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC5C,OAAO,IAAI,IAAI,CAAC;CACnB"}
package/types/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export { default as Computed, ComputeFunc, ComputeFuncScoped } from './computed';
2
- export { default as Ref } from './ref';
3
- export { default as Watcher } from './watcher';
4
- export { default as Dependency } from './dependency';
5
- export { default as Dependent } from './dependent';
1
+ export { default as Computed, ComputeFunc, ComputeFuncScoped } from './computed.js';
2
+ export { default as Ref } from './ref.js';
3
+ export { default as Watcher } from './watcher.js';
4
+ export { default as Dependency } from './dependency.js';
5
+ export { default as Dependent } from './dependent.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,2 +1,2 @@
1
- export {};
1
+ import 'mocha';
2
2
  //# sourceMappingURL=index.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,CAAC"}
package/types/ref.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import Dependency from "./dependency";
2
- import Tracker from "./tracker";
3
- export default class Ref<T> extends Tracker<T> implements Dependency<T> {
4
- constructor(_value: T);
5
- set value(_value: T);
6
- get value(): T;
7
- }
1
+ import Dependency from "./dependency.js";
2
+ import Tracker from "./tracker.js";
3
+ export default class Ref<T> extends Tracker<T> implements Dependency<T> {
4
+ constructor(_value: T);
5
+ set value(_value: T);
6
+ get value(): T;
7
+ }
8
8
  //# sourceMappingURL=ref.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../src/ref.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,OAAO,OAAO,GAAG,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAE,YAAW,UAAU,CAAC,CAAC,CAAC;gBAEvD,MAAM,EAAE,CAAC;IAKrB,IAAW,KAAK,CAAC,MAAM,EAAE,CAAC,EAMzB;IAED,IAAW,KAAK,IAAI,CAAC,CAEpB;CACJ"}
1
+ {"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../src/ref.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,CAAC,OAAO,OAAO,GAAG,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAE,YAAW,UAAU,CAAC,CAAC,CAAC;gBAEvD,MAAM,EAAE,CAAC;IAKrB,IAAW,KAAK,CAAC,MAAM,EAAE,CAAC,EAMzB;IAED,IAAW,KAAK,IAAI,CAAC,CAEpB;CACJ"}
@@ -1,13 +1,13 @@
1
- import Computed from "./computed";
2
- import Watcher from "./watcher";
3
- declare type Dependent = Computed<any> | Watcher<any>;
4
- export default class Tracker<T> {
5
- protected dependents: Set<Dependent>;
6
- protected _value?: T;
7
- addDependent(dependent: Dependent): void;
8
- removeDependent(dependent: Dependent): void;
9
- invalidate(): void;
10
- get value(): T | undefined;
11
- }
12
- export {};
1
+ import Computed from "./computed.js";
2
+ import Watcher from "./watcher.js";
3
+ type Dependent = Computed<any> | Watcher<any>;
4
+ export default class Tracker<T> {
5
+ protected dependents: Set<Dependent>;
6
+ protected _value?: T;
7
+ addDependent(dependent: Dependent): void;
8
+ removeDependent(dependent: Dependent): void;
9
+ invalidate(): void;
10
+ get value(): T | undefined;
11
+ }
12
+ export {};
13
13
  //# sourceMappingURL=tracker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,aAAK,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAE9C,MAAM,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC;IAC1B,SAAS,CAAC,UAAU,iBAAwB;IAC5C,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEd,YAAY,CAAC,SAAS,EAAE,SAAS;IAIjC,eAAe,CAAC,SAAS,EAAE,SAAS;IAIpC,UAAU,IAAI,IAAI;IAMzB,IAAW,KAAK,kBAEf;CACJ"}
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,KAAK,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AAE9C,MAAM,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC;IAC1B,SAAS,CAAC,UAAU,iBAAwB;IAC5C,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEd,YAAY,CAAC,SAAS,EAAE,SAAS;IAIjC,eAAe,CAAC,SAAS,EAAE,SAAS;IAIpC,UAAU,IAAI,IAAI;IAMzB,IAAW,KAAK,kBAEf;CACJ"}
@@ -1,15 +1,15 @@
1
- import Dependency from "./dependency";
2
- import Dependent from "./dependent";
3
- import Tracker from "./tracker";
4
- declare type onChangeFunc<T> = (newValue: T, oldValue?: T) => void;
5
- export default class Watcher<T> extends Tracker<T> implements Dependent {
6
- private onChange;
7
- private dependency;
8
- private state;
9
- constructor(dependency: Dependency<T>, onChange: onChangeFunc<T>, immediate?: boolean);
10
- invalidate(): void;
11
- validate(): void;
12
- dispose(): void;
13
- }
14
- export {};
1
+ import Dependency from "./dependency.js";
2
+ import Dependent from "./dependent.js";
3
+ import Tracker from "./tracker.js";
4
+ type onChangeFunc<T> = (newValue: T, oldValue?: T) => void;
5
+ export default class Watcher<T> extends Tracker<T> implements Dependent {
6
+ private onChange;
7
+ private dependency;
8
+ private state;
9
+ constructor(dependency: Dependency<T>, onChange: onChangeFunc<T>, immediate?: boolean);
10
+ invalidate(): void;
11
+ validate(): void;
12
+ dispose(): void;
13
+ }
14
+ export {};
15
15
  //# sourceMappingURL=watcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,OAAO,MAAM,WAAW,CAAC;AAOhC,aAAK,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;AAE3D,MAAM,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAE,YAAW,SAAS;IAEnE,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,KAAK,CAAoB;gBAErB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,GAAE,OAAc;IAYpF,UAAU;IAUV,QAAQ;IAIR,OAAO;CAGjB"}
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,OAAO,MAAM,cAAc,CAAC;AAOnC,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;AAE3D,MAAM,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAE,YAAW,SAAS;IAEnE,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,KAAK,CAAoB;gBAErB,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,GAAE,OAAc;IAYpF,UAAU;IAUV,QAAQ;IAIR,OAAO;CAGjB"}