@live-change/db 0.5.12 → 0.5.13

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/Index.js CHANGED
@@ -19,6 +19,14 @@ class ObjectReader extends ChangeStream {
19
19
  }
20
20
  onChange(cb) {
21
21
  this.callbacks.push(cb)
22
+ return {
23
+ dispose() {
24
+ const callbackIndex = this.callbacks.indexOf(cb)
25
+ if(callbackIndex == -1) throw new Error('Observer double dispose')
26
+ this.callbacks.splice(callbackIndex, 1)
27
+ /// TODO: dispose or ignore reader somehow if no callbacks
28
+ }
29
+ }
22
30
  }
23
31
  async change(obj, oldObj, id, timestamp) {
24
32
  for(const callback of this.callbacks) await callback(obj, oldObj, id, timestamp)
@@ -40,6 +48,14 @@ class RangeReader extends ChangeStream {
40
48
  }
41
49
  async onChange(cb) {
42
50
  this.callbacks.push(cb)
51
+ return {
52
+ dispose() {
53
+ const callbackIndex = this.callbacks.indexOf(cb)
54
+ if(callbackIndex == -1) throw new Error('Observer double dispose')
55
+ this.callbacks.splice(callbackIndex, 1)
56
+ /// TODO: dispose or ignore reader somehow if no callbacks
57
+ }
58
+ }
43
59
  }
44
60
  async change(obj, oldObj, id, timestamp) {
45
61
  for(const callback of this.callbacks) await callback(obj, oldObj, id, timestamp)
@@ -47,7 +63,6 @@ class RangeReader extends ChangeStream {
47
63
  async get() {
48
64
  return await (await this.tableReader.table).rangeGet(this.range)
49
65
  }
50
- dispose() {}
51
66
  }
52
67
 
53
68
  class TableReader extends ChangeStream {
@@ -515,4 +530,4 @@ class Index extends Table {
515
530
  }
516
531
  }
517
532
 
518
- module.exports = Index
533
+ module.exports = Index
@@ -87,6 +87,12 @@ class Reader extends ChangeStream {
87
87
  this.#observers.push(observer)
88
88
  ;(await this.#observable).observe(observer)
89
89
  await observer.readPromise()
90
+ observer.dispose = async function() {
91
+ const observerIndex = this.#observers.indexOf(observer)
92
+ if(observerIndex == -1) throw new Error('Observer double dispose')
93
+ this.#observers.splice(observerIndex, 1)
94
+ ;(await this.#observable).unobserve(observer)
95
+ }
90
96
  return observer
91
97
  }
92
98
  async unobserve(observer) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@live-change/db",
3
- "version": "0.5.12",
3
+ "version": "0.5.13",
4
4
  "description": "Database with observable data for live queries",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -21,8 +21,8 @@
21
21
  },
22
22
  "homepage": "https://github.com/live-change/live-change-db",
23
23
  "devDependencies": {
24
- "@live-change/db-store-level": "^0.5.12",
25
- "@live-change/db-store-lmdb": "^0.5.12",
24
+ "@live-change/db-store-level": "^0.5.13",
25
+ "@live-change/db-store-lmdb": "^0.5.13",
26
26
  "minimist": ">=1.2.3",
27
27
  "rimraf": "^3.0.2",
28
28
  "sockjs": "^0.3.24",
@@ -30,9 +30,9 @@
30
30
  "websocket-extensions": ">=0.1.4"
31
31
  },
32
32
  "dependencies": {
33
- "@live-change/dao": "0.4.12",
33
+ "@live-change/dao": "0.4.13",
34
34
  "get-random-values": "^1.2.2",
35
35
  "node-interval-tree": "^1.3.3"
36
36
  },
37
- "gitHead": "44818a97308060f773c3a766d2765431ab5928fa"
37
+ "gitHead": "e75a92ac01b8422076b660cf0dd5d8f4a80fe13c"
38
38
  }