@live-change/db-store-indexeddb 0.5.25 → 0.6.1

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/Store.js CHANGED
@@ -222,11 +222,12 @@ class RangeObservable extends ReactiveDao.ObservableList {
222
222
  }
223
223
 
224
224
  class Store {
225
- constructor(dbName) {
225
+ constructor(dbName, storeName) {
226
226
  if(!dbName) throw new Error("dbName argument is required")
227
+ if(!storeName) throw new Error("storeName argument is required")
227
228
 
228
229
  this.dbName = dbName
229
- this.storeName = 'lc-data'
230
+ this.storeName = storeName
230
231
 
231
232
  this.finished = false
232
233
 
@@ -240,7 +241,7 @@ class Store {
240
241
  }
241
242
 
242
243
  async openDb() {
243
- this.dbPromise = idb.openDB('lc-db-' + this.dbName, 1, {
244
+ this.dbPromise = idb.openDB(`lc-db-${this.dbName}-${this.storeName}`, 1, {
244
245
  upgrade: (db) => {
245
246
  const store = db.createObjectStore(this.storeName, { keyPath: 'id' })
246
247
  },
@@ -278,6 +279,11 @@ class Store {
278
279
  ;(await this.dbPromise).close()
279
280
  }
280
281
 
282
+ async deleteDb() {
283
+ if(!this.finished) await this.close()
284
+ await idb.deleteDB('lc-db-' + this.dbName)
285
+ }
286
+
281
287
  async handleChannelMessage(message) {
282
288
  switch(message.type) {
283
289
  case 'put' : {
@@ -322,6 +328,7 @@ class Store {
322
328
 
323
329
  async rangeGet(range) {
324
330
  if(!range) throw new Error("range not defined")
331
+ console.log("RANGE GET!")
325
332
 
326
333
  const txn = this.db.transaction(this.storeName, 'readonly')
327
334
  let data = []
@@ -471,7 +478,7 @@ class Store {
471
478
  rangeObservable.putObject(object, oldObject)
472
479
  }
473
480
  this.channel.postMessage({ type: "put", object, oldObject })
474
- return object
481
+ return oldObject
475
482
  }
476
483
 
477
484
  async delete(id) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@live-change/db-store-indexeddb",
3
- "version": "0.5.25",
3
+ "version": "0.6.1",
4
4
  "description": "Database with observable data for live queries",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -26,9 +26,9 @@
26
26
  "tape": "^5.3.2"
27
27
  },
28
28
  "dependencies": {
29
- "@live-change/dao": "^0.5.10",
29
+ "@live-change/dao": "0.5.14",
30
30
  "@live-change/interval-tree": "^1.0.12",
31
31
  "broadcast-channel": "^4.2.0"
32
32
  },
33
- "gitHead": "dac1ac23bd1a4e1ba83e674d5493ab6c832f4462"
33
+ "gitHead": "f458425c609deeb9d1f38c15a3aa37759629a67e"
34
34
  }
@@ -12,10 +12,10 @@ test("store broadcast object changes", t => {
12
12
 
13
13
  t.test("create stores", async t => {
14
14
  t.plan(2)
15
- readStore = new Store('test-broadcast-object-changes')
15
+ readStore = new Store('test-broadcast-object-changes', 'test')
16
16
  await readStore.open()
17
17
  t.pass('read store created')
18
- writeStore = new Store('test-broadcast-object-changes')
18
+ writeStore = new Store('test-broadcast-object-changes', 'test')
19
19
  await writeStore.open()
20
20
  t.pass('write store created')
21
21
  })
@@ -40,12 +40,18 @@ test("store broadcast object changes", t => {
40
40
  }
41
41
  }
42
42
 
43
- t.test('observe object A', async t => {
43
+ t.test('observe object A', t => {
44
44
  t.plan(3)
45
45
  objectObservable = readStore.objectObservable('A')
46
46
  objectObservable.observe(objectObserver)
47
- let value = await getNextValue()
48
- t.deepEqual(value, null, 'found null')
47
+
48
+ let value
49
+
50
+ t.test('get value', async t => {
51
+ t.plan(1)
52
+ value = await getNextValue()
53
+ t.deepEqual(value, null, 'found null')
54
+ })
49
55
 
50
56
  t.test("add object A", async t => {
51
57
  t.plan(1)
@@ -71,4 +77,4 @@ test("store broadcast object changes", t => {
71
77
  t.end()
72
78
  })
73
79
 
74
- })
80
+ })
@@ -12,10 +12,10 @@ test("store broadcast range changes", t => {
12
12
 
13
13
  t.test("create stores", async t => {
14
14
  t.plan(2)
15
- readStore = new Store('test-broadcast-object-changes')
15
+ readStore = new Store('test-broadcast-object-changes', 'test')
16
16
  await readStore.open()
17
17
  t.pass('read store created')
18
- writeStore = new Store('test-broadcast-object-changes')
18
+ writeStore = new Store('test-broadcast-object-changes', 'test')
19
19
  await writeStore.open()
20
20
  t.pass('write store created')
21
21
  })
@@ -46,12 +46,18 @@ test("store broadcast range changes", t => {
46
46
  }
47
47
  }
48
48
 
49
- t.test("observe range [a,z]", async t => {
49
+ t.test("observe range [a,z]", t => {
50
50
  t.plan(6)
51
51
  rangeObservable = readStore.rangeObservable({ gte: 'a', lte: 'z' })
52
52
  rangeObservable.observe(rangeObserver)
53
- let values = await getNextValue()
54
- t.deepEqual(values, [ { v: 1, id: 'a' }, { v: 3, id: 'c' } ], 'range value' )
53
+
54
+ let values
55
+
56
+ t.test("get values", async t => {
57
+ t.plan(1)
58
+ values = await getNextValue()
59
+ t.deepEqual(values, [{v: 1, id: 'a'}, {v: 3, id: 'c'}], 'range value')
60
+ })
55
61
 
56
62
  t.test("remove object 'a' from observed range", async t => {
57
63
  t.plan(1)
@@ -88,12 +94,18 @@ test("store broadcast range changes", t => {
88
94
  })
89
95
  })
90
96
 
91
- t.test("observe range (a,d)", async t => {
97
+ t.test("observe range (a,d)", t => {
92
98
  t.plan(6)
93
- rangeObservable = writeStore.rangeObservable({ gt: 'a', lt: 'd' })
99
+ rangeObservable = readStore.rangeObservable({ gt: 'a', lt: 'd' })
94
100
  rangeObservable.observe(rangeObserver)
95
- let values = await getNextValue()
96
- t.deepEqual(values, [ { v: 5, id: 'b' }, { v: 3, id: 'c' } ], 'range value' )
101
+
102
+ let values
103
+
104
+ t.test("get values", async t => {
105
+ t.plan(1)
106
+ values = await getNextValue()
107
+ t.deepEqual(values, [{v: 5, id: 'b'}, {v: 3, id: 'c'}], 'range value')
108
+ })
97
109
 
98
110
  t.test("remove object 'd' outside observed range", async t => {
99
111
  t.plan(1)
@@ -103,20 +115,20 @@ test("store broadcast range changes", t => {
103
115
 
104
116
  t.test("remove object 'a' outside observed range", async t => {
105
117
  t.plan(1)
106
- await store.delete('a')
118
+ await writeStore.delete('a')
107
119
  t.pass('deleted')
108
120
  })
109
121
 
110
122
  t.test("add object 'ab' to observed range", async t => {
111
123
  t.plan(1)
112
- await store.put({ id: 'ab', v: 7 })
124
+ await writeStore.put({ id: 'ab', v: 7 })
113
125
  let values = await getNextValue()
114
126
  t.deepEqual(values, [ { v: 7, id: 'ab' }, { v: 5, id: 'b' }, { v: 3, id: 'c' } ], 'range value' )
115
127
  })
116
128
 
117
129
  t.test("remove object 'ab' from observed range", async t => {
118
130
  t.plan(1)
119
- await store.delete('ab')
131
+ await writeStore.delete('ab')
120
132
  let values = await getNextValue()
121
133
  t.deepEqual(values, [ { v: 5, id: 'b' }, { v: 3, id: 'c' } ], 'range value' )
122
134
  })
@@ -129,7 +141,8 @@ test("store broadcast range changes", t => {
129
141
  })
130
142
 
131
143
  t.test("close database", async t => {
132
- await store.close()
144
+ await readStore.close()
145
+ await writeStore.close()
133
146
  t.pass('closed')
134
147
  t.end()
135
148
  })
@@ -11,7 +11,7 @@ test("store limited range observable", t => {
11
11
 
12
12
  t.test("create store", async t => {
13
13
  t.plan(1)
14
- store = new Store('test-limited-range-observable')
14
+ store = new Store('test-limited-range-observable', 'test')
15
15
  await store.open()
16
16
  t.pass('store created')
17
17
  })
@@ -46,12 +46,18 @@ test("store limited range observable", t => {
46
46
  if(nextValueResolve) nextValueResolve(rangeObservable.list)
47
47
  }
48
48
 
49
- t.test("observe range [b_0,b_9]", async t => {
49
+ t.test("observe range [b_0,b_9]", t => {
50
50
  t.plan(7)
51
51
  rangeObservable = store.rangeObservable({ gte: 'b_0', lte: 'b_9', limit: 5 })
52
52
  rangeObservable.observe(rangeObserver)
53
- let values = await getNextValue()
54
- t.deepEqual(values, objects.slice(0, 5), 'range value' )
53
+
54
+ let values
55
+
56
+ t.test("get values", async t => {
57
+ t.plan(1)
58
+ values = await getNextValue()
59
+ t.deepEqual(values, objects.slice(0,5), 'range value')
60
+ })
55
61
 
56
62
  t.test("remove object 'b_3' from observed range", async t => {
57
63
  t.plan(1)
@@ -104,13 +110,19 @@ test("store limited range observable", t => {
104
110
  })
105
111
  })
106
112
 
107
- t.test("observe range (b_0,b_5)", async t => {
113
+ t.test("observe range (b_0,b_5)", t => {
108
114
  t.plan(7)
109
115
  gotNextValue = false
110
116
  rangeObservable = store.rangeObservable({ gt: 'b_0', lt: 'b_5', limit: 3 })
111
117
  rangeObservable.observe(rangeObserver)
112
- let values = await getNextValue()
113
- t.deepEqual(values, objects.slice(1,4) , 'range value' )
118
+
119
+ let values
120
+
121
+ t.test("get values", async t => {
122
+ t.plan(1)
123
+ values = await getNextValue()
124
+ t.deepEqual(values, objects.slice(1,4), 'range value')
125
+ })
114
126
 
115
127
  t.test("remove object 'b_0' outside observed range", async t => {
116
128
  t.plan(1)
@@ -11,7 +11,7 @@ test("store limited reverse range observable", t => {
11
11
 
12
12
  t.test("create store", async t => {
13
13
  t.plan(1)
14
- store = new Store('test-limited-reverse-range-observable')
14
+ store = new Store('test-limited-reverse-range-observable', 'test')
15
15
  await store.open()
16
16
  t.pass('store created')
17
17
  })
@@ -46,12 +46,18 @@ test("store limited reverse range observable", t => {
46
46
  if(nextValueResolve) nextValueResolve(rangeObservable.list)
47
47
  }
48
48
 
49
- t.test("observe reverse range [b_9,b_0]", async t => {
49
+ t.test("observe reverse range [b_9,b_0]", t => {
50
50
  t.plan(7)
51
51
  rangeObservable = store.rangeObservable({ gte: 'b_0', lte: 'b_9', limit: 5, reverse: true })
52
52
  rangeObservable.observe(rangeObserver)
53
- let values = await getNextValue()
54
- t.deepEqual(values, objects.slice(0, 5), 'range value' )
53
+
54
+ let values
55
+
56
+ t.test("get values", async t => {
57
+ t.plan(1)
58
+ values = await getNextValue()
59
+ t.deepEqual(values, objects.slice(0,5), 'range value')
60
+ })
55
61
 
56
62
  t.test("remove object 'b_6' from observed range", async t => {
57
63
  t.plan(1)
@@ -104,13 +110,18 @@ test("store limited reverse range observable", t => {
104
110
  })
105
111
  })
106
112
 
107
- t.test("observe reverse range (b_5,b_0)", async t => {
113
+ t.test("observe reverse range (b_5,b_0)", t => {
108
114
  t.plan(7)
109
115
  gotNextValue = false
110
116
  rangeObservable = store.rangeObservable({ gt: 'b_0', lt: 'b_5', limit: 3, reverse: true })
111
117
  rangeObservable.observe(rangeObserver)
112
- let values = await getNextValue()
113
- t.deepEqual(values, objects.slice(6,9) , 'range value' )
118
+
119
+ let values
120
+ t.test("get values", async t => {
121
+ t.plan(1)
122
+ values = await getNextValue()
123
+ t.deepEqual(values, objects.slice(6,9), 'range value')
124
+ })
114
125
 
115
126
  t.test("remove object 'b_5' outside observed range", async t => {
116
127
  t.plan(1)
@@ -11,7 +11,7 @@ test("store object observable", t => {
11
11
 
12
12
  t.test("create store", async t => {
13
13
  t.plan(1)
14
- store = new Store('test-object-observable')
14
+ store = new Store('test-object-observable', 'test')
15
15
  await store.open()
16
16
  t.pass('store created')
17
17
  })
@@ -33,12 +33,16 @@ test("store object observable", t => {
33
33
  if(nextValueResolve) nextValueResolve(value)
34
34
  }
35
35
 
36
- t.test('observe object A', async t => {
36
+ t.test('observe object A', t => {
37
37
  t.plan(3)
38
38
  objectObservable = store.objectObservable('A')
39
39
  objectObservable.observe(objectObserver)
40
- let value = await getNextValue()
41
- t.deepEqual(value, null, 'found null')
40
+
41
+ t.test('get value', async t => {
42
+ t.plan(1)
43
+ let value = await getNextValue()
44
+ t.deepEqual(value, null, 'found null')
45
+ })
42
46
 
43
47
  t.test("add object A", async t => {
44
48
  t.plan(1)
@@ -61,4 +65,4 @@ test("store object observable", t => {
61
65
  t.end()
62
66
  })
63
67
 
64
- })
68
+ })
@@ -11,7 +11,7 @@ test("store range observable", t => {
11
11
 
12
12
  t.test("create store", async t => {
13
13
  t.plan(1)
14
- store = new Store('test-range-observable')
14
+ store = new Store('test-range-observable', 'test')
15
15
  await store.open()
16
16
  t.pass('store created')
17
17
  })
@@ -39,12 +39,16 @@ test("store range observable", t => {
39
39
  if(nextValueResolve) nextValueResolve(rangeObservable.list)
40
40
  }
41
41
 
42
- t.test("observe range [a,z]", async t => {
42
+ t.test("observe range [a,z]", t => {
43
43
  t.plan(6)
44
44
  rangeObservable = store.rangeObservable({ gte: 'a', lte: 'z' })
45
45
  rangeObservable.observe(rangeObserver)
46
- let values = await getNextValue()
47
- t.deepEqual(values, [ { v: 1, id: 'a' }, { v: 3, id: 'c' } ], 'range value' )
46
+ let values
47
+ t.test("get values", async t => {
48
+ t.plan(1)
49
+ values = await getNextValue()
50
+ t.deepEqual(values, [{v: 1, id: 'a'}, {v: 3, id: 'c'}], 'range value')
51
+ })
48
52
 
49
53
  t.test("remove object 'a' from observed range", async t => {
50
54
  t.plan(1)
@@ -81,12 +85,18 @@ test("store range observable", t => {
81
85
  })
82
86
  })
83
87
 
84
- t.test("observe range (a,d)", async t => {
88
+ t.test("observe range (a,d)", t => {
85
89
  t.plan(6)
86
90
  rangeObservable = store.rangeObservable({ gt: 'a', lt: 'd' })
87
91
  rangeObservable.observe(rangeObserver)
88
- let values = await getNextValue()
89
- t.deepEqual(values, [ { v: 5, id: 'b' }, { v: 3, id: 'c' } ], 'range value' )
92
+
93
+ let values
94
+
95
+ t.test("get values", async t => {
96
+ t.plan(1)
97
+ values = await getNextValue()
98
+ t.deepEqual(values, [ { v: 5, id: 'b' }, { v: 3, id: 'c' } ], 'range value' )
99
+ })
90
100
 
91
101
  t.test("remove object 'd' outside observed range", async t => {
92
102
  t.plan(1)
@@ -11,7 +11,7 @@ test("store reverse range observable", t => {
11
11
 
12
12
  t.test("create store", async t => {
13
13
  t.plan(1)
14
- store = new Store('test-reverse-range-observable')
14
+ store = new Store('test-reverse-range-observable', 'test')
15
15
  await store.open()
16
16
  t.pass('store created')
17
17
  })
@@ -39,12 +39,17 @@ test("store reverse range observable", t => {
39
39
  if(nextValueResolve) nextValueResolve(rangeObservable.list)
40
40
  }
41
41
 
42
- t.test("observe reverse range [z,a]", async t => {
42
+ t.test("observe reverse range [z,a]", t => {
43
43
  t.plan(6)
44
44
  rangeObservable = store.rangeObservable({ gte: 'a', lte: 'z', reverse: true })
45
45
  rangeObservable.observe(rangeObserver)
46
- let values = await getNextValue()
47
- t.deepEqual(values, [ { v: 3, id: 'c' }, { v: 1, id: 'a' } ], 'range value' )
46
+ let values
47
+
48
+ t.test("get values", async t => {
49
+ t.plan(1)
50
+ values = await getNextValue()
51
+ t.deepEqual(values, [{v: 3, id: 'c'}, {v: 1, id: 'a'}], 'range value')
52
+ })
48
53
 
49
54
  t.test("remove object 'a' from observed range", async t => {
50
55
  t.plan(1)
@@ -81,12 +86,16 @@ test("store reverse range observable", t => {
81
86
  })
82
87
  })
83
88
 
84
- t.test("observe reverse range (d, a)", async t => {
89
+ t.test("observe reverse range (d, a)", t => {
85
90
  t.plan(6)
86
91
  rangeObservable = store.rangeObservable({ gt: 'a', lt: 'd', reverse: true })
87
92
  rangeObservable.observe(rangeObserver)
88
- let values = await getNextValue()
89
- t.deepEqual(values, [ { v: 3, id: 'c' }, { v: 5, id: 'b' } ], 'range value' )
93
+ let values
94
+ t.test("get values", async t => {
95
+ t.plan(1)
96
+ values = await getNextValue()
97
+ t.deepEqual(values, [ { v: 3, id: 'c' }, { v: 5, id: 'b' } ], 'range value' )
98
+ })
90
99
 
91
100
  t.test("remove object 'd' outside observed range", async t => {
92
101
  t.plan(1)
@@ -4,19 +4,19 @@ require('fake-indexeddb/auto.js')
4
4
  const idb = require('idb')
5
5
  const Store = require('../lib/Store.js')
6
6
 
7
- test("store non-reactive properties", async t => {
7
+ test("store non-reactive properties", t => {
8
8
  t.plan(3)
9
9
 
10
10
  let store
11
-
12
11
  t.test("create store", async t => {
13
12
  t.plan(1)
14
- store = new Store('test-non-reactive')
13
+ store = new Store('test-non-reactive', 'test')
14
+ await new Promise(resolve => setTimeout(resolve, 1000))
15
15
  await store.open()
16
16
  t.pass('store created')
17
17
  })
18
18
 
19
- t.test("non reactive operations", async t => {
19
+ t.test("non reactive operations", t => {
20
20
  t.plan(15)
21
21
 
22
22
  t.test("put value", async t => {
package/.idea/misc.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectRootManager">
4
- <output url="file://$PROJECT_DIR$/out" />
5
- </component>
6
- </project>
package/.idea/modules.xml DELETED
@@ -1,8 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectModuleManager">
4
- <modules>
5
- <module fileurl="file://$PROJECT_DIR$/db-store-indexeddb.iml" filepath="$PROJECT_DIR$/db-store-indexeddb.iml" />
6
- </modules>
7
- </component>
8
- </project>
package/.idea/vcs.xml DELETED
@@ -1,6 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="VcsDirectoryMappings">
4
- <mapping directory="" vcs="Git" />
5
- </component>
6
- </project>
@@ -1,9 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module type="WEB_MODULE" version="4">
3
- <component name="NewModuleRootManager" inherit-compiler-output="true">
4
- <exclude-output />
5
- <content url="file://$MODULE_DIR$" />
6
- <orderEntry type="inheritedJdk" />
7
- <orderEntry type="sourceFolder" forTests="false" />
8
- </component>
9
- </module>