@live-change/db-store-level 0.6.23 → 0.7.2

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 CHANGED
@@ -1 +1,2 @@
1
- module.exports = require('./lib/Store.js')
1
+ import Store from './lib/Store.js'
2
+ export default Store
package/lib/Store.js CHANGED
@@ -1,5 +1,6 @@
1
- const IntervalTree = require('@live-change/interval-tree').default
2
- const ReactiveDao = require("@live-change/dao")
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
- module.exports = Store
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.6.23",
3
+ "version": "0.7.2",
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": "^3.0.2",
29
+ "rimraf": "^5.0.5",
29
30
  "rocksdb": "^5.1.1",
30
31
  "subleveldown": "^6.0.1",
31
- "tape": "^5.3.2"
32
+ "tape": "^5.7.4"
32
33
  },
33
34
  "dependencies": {
34
- "@live-change/dao": "0.5.22",
35
+ "@live-change/dao": "0.6.0",
35
36
  "@live-change/interval-tree": "^1.0.12"
36
37
  },
37
- "gitHead": "0998da21c5082239a24d631110b33a5b00310a07"
38
+ "gitHead": "36d5b8a4430d82526b8b63290c44209e6187da96"
38
39
  }
@@ -1,15 +1,23 @@
1
- const test = require('tape')
2
- const levelup = require('levelup')
3
- const leveldown = require('leveldown')
4
- const encoding = require('encoding-down')
5
- const rimraf = require("rimraf")
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
- const Store = require('../lib/Store.js')
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, (err) => {
167
- if(err) return t.fail(err)
168
- t.pass('removed')
169
- })
175
+ await rimraf(dbPath)
176
+ t.pass('removed')
170
177
  })
171
178
  })
@@ -1,15 +1,23 @@
1
- const test = require('tape')
2
- const levelup = require('levelup')
3
- const leveldown = require('leveldown')
4
- const encoding = require('encoding-down')
5
- const rimraf = require("rimraf")
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
- const Store = require('../lib/Store.js')
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, (err) => {
167
- if(err) return t.fail(err)
168
- t.pass('removed')
169
- })
174
+ await rimraf(dbPath)
175
+ t.pass('removed')
170
176
  })
171
177
  })
@@ -1,10 +1,10 @@
1
- const test = require('tape')
2
- const levelup = require('levelup')
3
- const leveldown = require('leveldown')
4
- const encoding = require('encoding-down')
5
- const rimraf = require("rimraf")
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
- const Store = require('../lib/Store.js')
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, (err) => {
67
- if(err) return t.fail(err)
68
- t.pass('removed')
69
- })
66
+ await rimraf(dbPath)
67
+ t.pass('removed')
70
68
  })
71
69
  })
@@ -1,10 +1,18 @@
1
- const test = require('tape')
2
- const levelup = require('levelup')
3
- const leveldown = require('leveldown')
4
- const encoding = require('encoding-down')
5
- const rimraf = require("rimraf")
6
-
7
- const Store = require('../lib/Store.js')
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, (err) => {
133
- if(err) return t.fail(err)
134
- t.pass('removed')
135
- })
142
+ await rimraf(dbPath)
143
+ t.pass('removed')
136
144
  })
137
145
  })