@live-change/db-store-level 0.6.22 → 0.7.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/index.js +2 -1
- package/lib/Store.js +4 -3
- package/package.json +6 -5
- package/tests/limited-range-observable.js +41 -34
- package/tests/limited-reverse-range-observable.js +40 -34
- package/tests/object-observable.js +8 -10
- package/tests/range-observable.js +39 -31
- package/tests/reverse-range-observable.js +38 -31
- package/tests/store-non-reactive.js +47 -42
- package/yarn-error.log +7140 -0
package/index.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import Store from './lib/Store.js'
|
|
2
|
+
export default Store
|
package/lib/Store.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
1
|
+
import IntervalTreeLib from '@live-change/interval-tree'
|
|
2
|
+
const IntervalTree = IntervalTreeLib.default
|
|
3
|
+
import ReactiveDao from "@live-change/dao"
|
|
3
4
|
|
|
4
5
|
class ObjectObservable extends ReactiveDao.ObservableValue {
|
|
5
6
|
constructor(store, key) {
|
|
@@ -337,4 +338,4 @@ class Store {
|
|
|
337
338
|
}
|
|
338
339
|
}
|
|
339
340
|
|
|
340
|
-
|
|
341
|
+
export default Store
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@live-change/db-store-level",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Database with observable data for live queries",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -19,20 +19,21 @@
|
|
|
19
19
|
"bugs": {
|
|
20
20
|
"url": "https://github.com/live-change/live-change-db/issues"
|
|
21
21
|
},
|
|
22
|
+
"type": "module",
|
|
22
23
|
"homepage": "https://github.com/live-change/live-change-db",
|
|
23
24
|
"devDependencies": {
|
|
24
25
|
"encoding-down": "^7.1.0",
|
|
25
26
|
"leveldown": "^6.1.0",
|
|
26
27
|
"levelup": "^5.1.1",
|
|
27
28
|
"memdown": "^6.1.1",
|
|
28
|
-
"rimraf": "^
|
|
29
|
+
"rimraf": "^5.0.5",
|
|
29
30
|
"rocksdb": "^5.1.1",
|
|
30
31
|
"subleveldown": "^6.0.1",
|
|
31
|
-
"tape": "^5.
|
|
32
|
+
"tape": "^5.7.4"
|
|
32
33
|
},
|
|
33
34
|
"dependencies": {
|
|
34
|
-
"@live-change/dao": "0.5.
|
|
35
|
+
"@live-change/dao": "0.5.22",
|
|
35
36
|
"@live-change/interval-tree": "^1.0.12"
|
|
36
37
|
},
|
|
37
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "b372725d436e29f7cc66b811533009c9ea5330a1"
|
|
38
39
|
}
|
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import test from 'tape'
|
|
2
|
+
import levelup from 'levelup'
|
|
3
|
+
import leveldown from 'leveldown'
|
|
4
|
+
import encoding from 'encoding-down'
|
|
5
|
+
import { rimraf } from 'rimraf'
|
|
6
|
+
import PQueue from 'p-queue'
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
import Store from '../lib/Store.js'
|
|
8
9
|
|
|
9
10
|
const dbPath = `./test.lro.db`
|
|
10
11
|
rimraf.sync(dbPath)
|
|
11
12
|
const level = levelup(encoding(leveldown(dbPath), { keyEncoding: 'ascii', valueEncoding: 'json' }))
|
|
12
13
|
|
|
14
|
+
const testQueue = new PQueue({ concurrency: 1 })
|
|
15
|
+
function queued(fn) {
|
|
16
|
+
return async t => {
|
|
17
|
+
return await testQueue.add(() => fn(t))
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
13
21
|
test("store range observable", t => {
|
|
14
22
|
t.plan(5)
|
|
15
23
|
|
|
@@ -58,55 +66,56 @@ test("store range observable", t => {
|
|
|
58
66
|
let values = await getNextValue()
|
|
59
67
|
t.deepEqual(values, objects.slice(0, 5), 'range value' )
|
|
60
68
|
|
|
61
|
-
t.test("remove object 'b_3' from observed range", async t => {
|
|
69
|
+
t.test("remove object 'b_3' from observed range", queued(async t => {
|
|
62
70
|
t.plan(1)
|
|
71
|
+
console.error("TEST STARTED")
|
|
63
72
|
await store.delete('b_3')
|
|
64
73
|
objects.splice(3, 1)
|
|
65
74
|
await getNextValue() // one shorter
|
|
66
75
|
let values = await getNextValue()
|
|
67
76
|
t.deepEqual(values, objects.slice(0, 5), 'range value' )
|
|
68
|
-
})
|
|
77
|
+
}))
|
|
69
78
|
|
|
70
|
-
t.test("add object 'b_3' to observed range", async t => {
|
|
79
|
+
t.test("add object 'b_3' to observed range", queued(async t => {
|
|
71
80
|
t.plan(1)
|
|
72
81
|
const obj = { id: 'b_3', v: 10 }
|
|
73
82
|
await store.put(obj)
|
|
74
83
|
objects.splice(3, 0, obj)
|
|
75
84
|
let values = await getNextValue()
|
|
76
85
|
t.deepEqual(values, objects.slice(0, 5), 'range value' )
|
|
77
|
-
})
|
|
86
|
+
}))
|
|
78
87
|
|
|
79
|
-
t.test("add object 'b_32' to observed range", async t => {
|
|
88
|
+
t.test("add object 'b_32' to observed range", queued(async t => {
|
|
80
89
|
t.plan(1)
|
|
81
90
|
const obj = { id: 'b_32', v: 11 }
|
|
82
91
|
await store.put(obj)
|
|
83
92
|
objects.splice(4, 0, obj)
|
|
84
93
|
let values = await getNextValue()
|
|
85
94
|
t.deepEqual(values, objects.slice(0, 5), 'range value' )
|
|
86
|
-
})
|
|
95
|
+
}))
|
|
87
96
|
|
|
88
|
-
t.test("add object 'b_35' outside observed range limits", async t => {
|
|
97
|
+
t.test("add object 'b_35' outside observed range limits", queued(async t => {
|
|
89
98
|
t.plan(1)
|
|
90
99
|
const obj = { id: 'b_35', v: 11 }
|
|
91
100
|
await store.put(obj)
|
|
92
101
|
objects.splice(5, 0, obj)
|
|
93
102
|
t.pass('added')
|
|
94
|
-
})
|
|
103
|
+
}))
|
|
95
104
|
|
|
96
|
-
t.test("delete object 'b_32' so b_35 will enter into range limits", async t => {
|
|
105
|
+
t.test("delete object 'b_32' so b_35 will enter into range limits", queued(async t => {
|
|
97
106
|
t.plan(1)
|
|
98
107
|
await store.delete('b_32')
|
|
99
108
|
objects.splice(4, 1)
|
|
100
109
|
await getNextValue()
|
|
101
110
|
let values = await getNextValue()
|
|
102
111
|
t.deepEqual(values, objects.slice(0, 5), 'range value' )
|
|
103
|
-
})
|
|
112
|
+
}))
|
|
104
113
|
|
|
105
|
-
t.test("unobserve range", async t => {
|
|
114
|
+
t.test("unobserve range", queued(async t => {
|
|
106
115
|
t.plan(1)
|
|
107
116
|
rangeObservable.unobserve(rangeObserver)
|
|
108
117
|
t.pass('unobserved')
|
|
109
|
-
})
|
|
118
|
+
}))
|
|
110
119
|
})
|
|
111
120
|
|
|
112
121
|
t.test("observe range (b_0,b_5)", async t => {
|
|
@@ -117,55 +126,53 @@ test("store range observable", t => {
|
|
|
117
126
|
let values = await getNextValue()
|
|
118
127
|
t.deepEqual(values, objects.slice(1,4) , 'range value' )
|
|
119
128
|
|
|
120
|
-
t.test("remove object 'b_0' outside observed range", async t => {
|
|
129
|
+
t.test("remove object 'b_0' outside observed range", queued(async t => {
|
|
121
130
|
t.plan(1)
|
|
122
131
|
await store.delete('b_0')
|
|
123
132
|
t.pass('deleted')
|
|
124
|
-
})
|
|
133
|
+
}))
|
|
125
134
|
|
|
126
|
-
t.test("remove object 'b_5' outside observed range", async t => {
|
|
135
|
+
t.test("remove object 'b_5' outside observed range", queued(async t => {
|
|
127
136
|
t.plan(1)
|
|
128
137
|
await store.delete('b_5')
|
|
129
138
|
t.pass('deleted')
|
|
130
|
-
})
|
|
139
|
+
}))
|
|
131
140
|
|
|
132
|
-
t.test("remove object 'b_4' outside observed range limits", async t => {
|
|
141
|
+
t.test("remove object 'b_4' outside observed range limits", queued(async t => {
|
|
133
142
|
t.plan(1)
|
|
134
143
|
await store.delete('b_4')
|
|
135
144
|
t.pass('deleted')
|
|
136
|
-
})
|
|
145
|
+
}))
|
|
137
146
|
|
|
138
|
-
t.test("add object 'b_12' to observed range", async t => {
|
|
147
|
+
t.test("add object 'b_12' to observed range", queued(async t => {
|
|
139
148
|
t.plan(1)
|
|
140
149
|
const obj = { id: 'b_12', v: 7 }
|
|
141
150
|
await store.put(obj)
|
|
142
151
|
objects.splice(2, 0, obj)
|
|
143
152
|
let values = await getNextValue()
|
|
144
153
|
t.deepEqual(values, objects.slice(1,4), 'range value' )
|
|
145
|
-
})
|
|
154
|
+
}))
|
|
146
155
|
|
|
147
|
-
t.test("remove object 'b_12' from observed range", async t => {
|
|
156
|
+
t.test("remove object 'b_12' from observed range", queued(async t => {
|
|
148
157
|
t.plan(1)
|
|
149
158
|
await store.delete('b_12')
|
|
150
159
|
objects.splice(2, 1)
|
|
151
160
|
await getNextValue()
|
|
152
161
|
let values = await getNextValue()
|
|
153
162
|
t.deepEqual(values, objects.slice(1,4) , 'range value' )
|
|
154
|
-
})
|
|
163
|
+
}))
|
|
155
164
|
|
|
156
|
-
t.test("unobserve range", async t => {
|
|
165
|
+
t.test("unobserve range", queued(async t => {
|
|
157
166
|
t.plan(1)
|
|
158
167
|
rangeObservable.unobserve(rangeObserver)
|
|
159
168
|
t.pass('unobserved')
|
|
160
|
-
})
|
|
169
|
+
}))
|
|
161
170
|
})
|
|
162
171
|
|
|
163
172
|
t.test("close and remove database", async t => {
|
|
164
173
|
t.plan(1)
|
|
165
174
|
await level.close()
|
|
166
|
-
rimraf(dbPath
|
|
167
|
-
|
|
168
|
-
t.pass('removed')
|
|
169
|
-
})
|
|
175
|
+
await rimraf(dbPath)
|
|
176
|
+
t.pass('removed')
|
|
170
177
|
})
|
|
171
178
|
})
|
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import test from 'tape'
|
|
2
|
+
import levelup from 'levelup'
|
|
3
|
+
import leveldown from 'leveldown'
|
|
4
|
+
import encoding from 'encoding-down'
|
|
5
|
+
import { rimraf } from 'rimraf'
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import Store from '../lib/Store.js'
|
|
8
8
|
|
|
9
9
|
const dbPath = `./test.lrro.db`
|
|
10
10
|
rimraf.sync(dbPath)
|
|
11
11
|
const level = levelup(encoding(leveldown(dbPath), { keyEncoding: 'ascii', valueEncoding: 'json' }))
|
|
12
12
|
|
|
13
|
+
import PQueue from 'p-queue'
|
|
14
|
+
const testQueue = new PQueue({ concurrency: 1 })
|
|
15
|
+
function queued(fn) {
|
|
16
|
+
return async t => {
|
|
17
|
+
return await testQueue.add(() => fn(t))
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
13
21
|
test("store range observable", t => {
|
|
14
22
|
t.plan(5)
|
|
15
23
|
|
|
@@ -58,55 +66,55 @@ test("store range observable", t => {
|
|
|
58
66
|
let values = await getNextValue()
|
|
59
67
|
t.deepEqual(values, objects.slice(0, 5), 'range value' )
|
|
60
68
|
|
|
61
|
-
t.test("remove object 'b_6' from observed range", async t => {
|
|
69
|
+
t.test("remove object 'b_6' from observed range", queued(async t => {
|
|
62
70
|
t.plan(1)
|
|
63
71
|
await store.delete('b_6')
|
|
64
72
|
objects.splice(3, 1)
|
|
65
73
|
await getNextValue() // one shorter
|
|
66
74
|
let values = await getNextValue()
|
|
67
75
|
t.deepEqual(values, objects.slice(0, 5), 'range value' )
|
|
68
|
-
})
|
|
76
|
+
}))
|
|
69
77
|
|
|
70
|
-
t.test("add object 'b_6' to observed range", async t => {
|
|
78
|
+
t.test("add object 'b_6' to observed range", queued(async t => {
|
|
71
79
|
t.plan(1)
|
|
72
80
|
const obj = { id: 'b_6', v: 10 }
|
|
73
81
|
await store.put(obj)
|
|
74
82
|
objects.splice(3, 0, obj)
|
|
75
83
|
let values = await getNextValue()
|
|
76
84
|
t.deepEqual(values, objects.slice(0, 5), 'range value' )
|
|
77
|
-
})
|
|
85
|
+
}))
|
|
78
86
|
|
|
79
|
-
t.test("add object 'b_58' to observed range", async t => {
|
|
87
|
+
t.test("add object 'b_58' to observed range", queued(async t => {
|
|
80
88
|
t.plan(1)
|
|
81
89
|
const obj = { id: 'b_58', v: 11 }
|
|
82
90
|
await store.put(obj)
|
|
83
91
|
objects.splice(4, 0, obj)
|
|
84
92
|
let values = await getNextValue()
|
|
85
93
|
t.deepEqual(values, objects.slice(0, 5), 'range value' )
|
|
86
|
-
})
|
|
94
|
+
}))
|
|
87
95
|
|
|
88
|
-
t.test("add object 'b_52' outside observed range limits", async t => {
|
|
96
|
+
t.test("add object 'b_52' outside observed range limits", queued(async t => {
|
|
89
97
|
t.plan(1)
|
|
90
98
|
const obj = { id: 'b_52', v: 11 }
|
|
91
99
|
await store.put(obj)
|
|
92
100
|
objects.splice(5, 0, obj)
|
|
93
101
|
t.pass('added')
|
|
94
|
-
})
|
|
102
|
+
}))
|
|
95
103
|
|
|
96
|
-
t.test("delete object 'b_58' so b_52 will enter into range limits", async t => {
|
|
104
|
+
t.test("delete object 'b_58' so b_52 will enter into range limits", queued(async t => {
|
|
97
105
|
t.plan(1)
|
|
98
106
|
await store.delete('b_58')
|
|
99
107
|
objects.splice(4, 1)
|
|
100
108
|
await getNextValue()
|
|
101
109
|
let values = await getNextValue()
|
|
102
110
|
t.deepEqual(values, objects.slice(0, 5), 'range value' )
|
|
103
|
-
})
|
|
111
|
+
}))
|
|
104
112
|
|
|
105
|
-
t.test("unobserve range", async t => {
|
|
113
|
+
t.test("unobserve range", queued(async t => {
|
|
106
114
|
t.plan(1)
|
|
107
115
|
rangeObservable.unobserve(rangeObserver)
|
|
108
116
|
t.pass('unobserved')
|
|
109
|
-
})
|
|
117
|
+
}))
|
|
110
118
|
})
|
|
111
119
|
|
|
112
120
|
t.test("observe reverse range (b_5,b_0)", async t => {
|
|
@@ -117,55 +125,53 @@ test("store range observable", t => {
|
|
|
117
125
|
let values = await getNextValue()
|
|
118
126
|
t.deepEqual(values, objects.slice(6,9) , 'range value' )
|
|
119
127
|
|
|
120
|
-
t.test("remove object 'b_5' outside observed range", async t => {
|
|
128
|
+
t.test("remove object 'b_5' outside observed range", queued(async t => {
|
|
121
129
|
t.plan(1)
|
|
122
130
|
await store.delete('b_5')
|
|
123
131
|
t.pass('deleted')
|
|
124
|
-
})
|
|
132
|
+
}))
|
|
125
133
|
|
|
126
|
-
t.test("remove object 'b_0' outside observed range", async t => {
|
|
134
|
+
t.test("remove object 'b_0' outside observed range", queued(async t => {
|
|
127
135
|
t.plan(1)
|
|
128
136
|
await store.delete('b_0')
|
|
129
137
|
t.pass('deleted')
|
|
130
|
-
})
|
|
138
|
+
}))
|
|
131
139
|
|
|
132
|
-
t.test("remove object 'b_1' outside observed range limits", async t => {
|
|
140
|
+
t.test("remove object 'b_1' outside observed range limits", queued(async t => {
|
|
133
141
|
t.plan(1)
|
|
134
142
|
await store.delete('b_1')
|
|
135
143
|
t.pass('deleted')
|
|
136
|
-
})
|
|
144
|
+
}))
|
|
137
145
|
|
|
138
|
-
t.test("add object 'b_48' to observed range", async t => {
|
|
146
|
+
t.test("add object 'b_48' to observed range", queued(async t => {
|
|
139
147
|
t.plan(1)
|
|
140
148
|
const obj = { id: 'b_48', v: 7 }
|
|
141
149
|
await store.put(obj)
|
|
142
150
|
objects.splice(6, 0, obj)
|
|
143
151
|
let values = await getNextValue()
|
|
144
152
|
t.deepEqual(values, objects.slice(6,9), 'range value' )
|
|
145
|
-
})
|
|
153
|
+
}))
|
|
146
154
|
|
|
147
|
-
t.test("remove object 'b_48' from observed range", async t => {
|
|
155
|
+
t.test("remove object 'b_48' from observed range", queued(async t => {
|
|
148
156
|
t.plan(1)
|
|
149
157
|
await store.delete('b_48')
|
|
150
158
|
objects.splice(6, 1)
|
|
151
159
|
await getNextValue()
|
|
152
160
|
let values = await getNextValue()
|
|
153
161
|
t.deepEqual(values, objects.slice(6,9) , 'range value' )
|
|
154
|
-
})
|
|
162
|
+
}))
|
|
155
163
|
|
|
156
|
-
t.test("unobserve range", async t => {
|
|
164
|
+
t.test("unobserve range", queued(async t => {
|
|
157
165
|
t.plan(1)
|
|
158
166
|
rangeObservable.unobserve(rangeObserver)
|
|
159
167
|
t.pass('unobserved')
|
|
160
|
-
})
|
|
168
|
+
}))
|
|
161
169
|
})
|
|
162
170
|
|
|
163
171
|
t.test("close and remove database", async t => {
|
|
164
172
|
t.plan(1)
|
|
165
173
|
await level.close()
|
|
166
|
-
rimraf(dbPath
|
|
167
|
-
|
|
168
|
-
t.pass('removed')
|
|
169
|
-
})
|
|
174
|
+
await rimraf(dbPath)
|
|
175
|
+
t.pass('removed')
|
|
170
176
|
})
|
|
171
177
|
})
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import test from 'tape'
|
|
2
|
+
import levelup from 'levelup'
|
|
3
|
+
import leveldown from 'leveldown'
|
|
4
|
+
import encoding from 'encoding-down'
|
|
5
|
+
import { rimraf } from 'rimraf'
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import Store from '../lib/Store.js'
|
|
8
8
|
|
|
9
9
|
const dbPath = `./test.oo.db`
|
|
10
10
|
rimraf.sync(dbPath)
|
|
@@ -63,9 +63,7 @@ test("store object observable", t => {
|
|
|
63
63
|
t.test("close and remove database", async t => {
|
|
64
64
|
t.plan(1)
|
|
65
65
|
await level.close()
|
|
66
|
-
rimraf(dbPath
|
|
67
|
-
|
|
68
|
-
t.pass('removed')
|
|
69
|
-
})
|
|
66
|
+
await rimraf(dbPath)
|
|
67
|
+
t.pass('removed')
|
|
70
68
|
})
|
|
71
69
|
})
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import test from 'tape'
|
|
2
|
+
import levelup from 'levelup'
|
|
3
|
+
import leveldown from 'leveldown'
|
|
4
|
+
import encoding from 'encoding-down'
|
|
5
|
+
import { rimraf } from 'rimraf'
|
|
6
|
+
|
|
7
|
+
import Store from '../lib/Store.js'
|
|
8
|
+
|
|
9
|
+
import PQueue from 'p-queue'
|
|
10
|
+
const testQueue = new PQueue({ concurrency: 1 })
|
|
11
|
+
function queued(fn) {
|
|
12
|
+
return async t => {
|
|
13
|
+
return await testQueue.add(() => fn(t))
|
|
14
|
+
}
|
|
15
|
+
}
|
|
8
16
|
|
|
9
17
|
const dbPath = `./test.ro.db`
|
|
10
18
|
rimraf.sync(dbPath)
|
|
@@ -51,39 +59,40 @@ test("store range observable", t => {
|
|
|
51
59
|
let values = await getNextValue()
|
|
52
60
|
t.deepEqual(values, [ { v: 1, id: 'a' }, { v: 3, id: 'c' } ], 'range value' )
|
|
53
61
|
|
|
54
|
-
t.test("remove object 'a' from observed range", async t => {
|
|
62
|
+
t.test("remove object 'a' from observed range", queued(async t => {
|
|
55
63
|
t.plan(1)
|
|
56
64
|
await store.delete('a')
|
|
57
65
|
let values = await getNextValue()
|
|
58
66
|
t.deepEqual(values, [ { v: 3, id: 'c' } ], 'range value' )
|
|
59
|
-
})
|
|
67
|
+
}))
|
|
60
68
|
|
|
61
|
-
t.test("add object 'a' to observed range", async t => {
|
|
69
|
+
t.test("add object 'a' to observed range", queued(async t => {
|
|
62
70
|
t.plan(1)
|
|
63
71
|
await store.put({ id: 'a', v: 4 })
|
|
64
72
|
let values = await getNextValue()
|
|
65
73
|
t.deepEqual(values, [ { v: 4, id: 'a' }, { v: 3, id: 'c' } ], 'range value' )
|
|
66
|
-
})
|
|
74
|
+
}))
|
|
67
75
|
|
|
68
|
-
t.test("add object 'b' to observed range", async t => {
|
|
76
|
+
t.test("add object 'b' to observed range", queued(async t => {
|
|
69
77
|
t.plan(1)
|
|
70
78
|
await store.put({ id: 'b', v: 5 })
|
|
71
79
|
let values = await getNextValue()
|
|
72
80
|
t.deepEqual(values, [ { v: 4, id: 'a' }, { v: 5, id: 'b' }, { v: 3, id: 'c' } ], 'range value' )
|
|
73
|
-
})
|
|
81
|
+
}))
|
|
74
82
|
|
|
75
|
-
t.test("add object 'd' to observed range", async t => {
|
|
83
|
+
t.test("add object 'd' to observed range", queued(async t => {
|
|
76
84
|
t.plan(1)
|
|
77
85
|
await store.put({ id: 'd', v: 6 })
|
|
78
86
|
let values = await getNextValue()
|
|
79
87
|
t.deepEqual(values, [ { v: 4, id: 'a' }, { v: 5, id: 'b' }, { v: 3, id: 'c' }, { v: 6, id: 'd' } ], 'range value' )
|
|
80
|
-
})
|
|
88
|
+
}))
|
|
81
89
|
|
|
82
|
-
t.test("unobserve range", async t => {
|
|
90
|
+
t.test("unobserve range", queued(async t => {
|
|
83
91
|
t.plan(1)
|
|
84
92
|
rangeObservable.unobserve(rangeObserver)
|
|
85
93
|
t.pass('unobserved')
|
|
86
|
-
})
|
|
94
|
+
}))
|
|
95
|
+
|
|
87
96
|
})
|
|
88
97
|
|
|
89
98
|
t.test("observe range (a,d)", async t => {
|
|
@@ -93,45 +102,44 @@ test("store range observable", t => {
|
|
|
93
102
|
let values = await getNextValue()
|
|
94
103
|
t.deepEqual(values, [ { v: 5, id: 'b' }, { v: 3, id: 'c' } ], 'range value' )
|
|
95
104
|
|
|
96
|
-
t.test("remove object 'd' outside observed range", async t => {
|
|
105
|
+
t.test("remove object 'd' outside observed range", queued(async t => {
|
|
97
106
|
t.plan(1)
|
|
98
107
|
await store.delete('d')
|
|
99
108
|
t.pass('deleted')
|
|
100
|
-
})
|
|
109
|
+
}))
|
|
101
110
|
|
|
102
|
-
t.test("remove object 'a' outside observed range", async t => {
|
|
111
|
+
t.test("remove object 'a' outside observed range", queued(async t => {
|
|
103
112
|
t.plan(1)
|
|
104
113
|
await store.delete('a')
|
|
105
114
|
t.pass('deleted')
|
|
106
|
-
})
|
|
115
|
+
}))
|
|
107
116
|
|
|
108
|
-
t.test("add object 'ab' to observed range", async t => {
|
|
117
|
+
t.test("add object 'ab' to observed range", queued(async t => {
|
|
109
118
|
t.plan(1)
|
|
110
119
|
await store.put({ id: 'ab', v: 7 })
|
|
111
120
|
let values = await getNextValue()
|
|
112
121
|
t.deepEqual(values, [ { v: 7, id: 'ab' }, { v: 5, id: 'b' }, { v: 3, id: 'c' } ], 'range value' )
|
|
113
|
-
})
|
|
122
|
+
}))
|
|
114
123
|
|
|
115
|
-
t.test("remove object 'ab' from observed range", async t => {
|
|
124
|
+
t.test("remove object 'ab' from observed range", queued(async t => {
|
|
116
125
|
t.plan(1)
|
|
117
126
|
await store.delete('ab')
|
|
118
127
|
let values = await getNextValue()
|
|
119
128
|
t.deepEqual(values, [ { v: 5, id: 'b' }, { v: 3, id: 'c' } ], 'range value' )
|
|
120
|
-
})
|
|
129
|
+
}))
|
|
121
130
|
|
|
122
|
-
t.test("unobserve range", async t => {
|
|
131
|
+
t.test("unobserve range", queued(async t => {
|
|
123
132
|
t.plan(1)
|
|
124
133
|
rangeObservable.unobserve(rangeObserver)
|
|
125
134
|
t.pass('unobserved')
|
|
126
|
-
})
|
|
135
|
+
}))
|
|
136
|
+
|
|
127
137
|
})
|
|
128
138
|
|
|
129
139
|
t.test("close and remove database", async t => {
|
|
130
140
|
t.plan(1)
|
|
131
141
|
await level.close()
|
|
132
|
-
rimraf(dbPath
|
|
133
|
-
|
|
134
|
-
t.pass('removed')
|
|
135
|
-
})
|
|
142
|
+
await rimraf(dbPath)
|
|
143
|
+
t.pass('removed')
|
|
136
144
|
})
|
|
137
145
|
})
|