@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.
@@ -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.rro.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: 3, id: 'c' }, { v: 1, id: 'a' } ], '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: 3, id: 'c' }, { v: 4, id: 'a' } ], '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: 3, id: 'c' }, { v: 5, id: 'b' }, { v: 4, id: 'a' } ], '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: 6, id: 'd' }, { v: 3, id: 'c' }, { v: 5, id: 'b' }, { v: 4, id: 'a' } ], '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 reverse range (d, a)", async t => {
@@ -93,45 +102,43 @@ test("store range observable", t => {
93
102
  let values = await getNextValue()
94
103
  t.deepEqual(values, [ { v: 3, id: 'c' }, { v: 5, id: 'b' } ], '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: 3, id: 'c' }, { v: 5, id: 'b' }, { v: 7, id: 'ab' } ], '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: 3, id: 'c' }, { v: 5, id: 'b' } ], '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
+ }))
127
136
  })
128
137
 
129
138
  t.test("close and remove database", async t => {
130
139
  t.plan(1)
131
140
  await level.close()
132
- rimraf(dbPath, (err) => {
133
- if(err) return t.fail(err)
134
- t.pass('removed')
135
- })
141
+ await rimraf(dbPath)
142
+ t.pass('removed')
136
143
  })
137
144
  })
@@ -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.nr.db`
10
18
  rimraf.sync(dbPath)
@@ -24,105 +32,102 @@ test("store non-reactive properties", t => {
24
32
  t.test("non reactive operations", async t => {
25
33
  t.plan(15)
26
34
 
27
- t.test("put value", async t => {
35
+ t.test("put value", queued(async t => {
28
36
  t.plan(1)
29
37
  await store.put({ id:'a', v: 1 })
30
38
  t.pass('value written')
31
- })
39
+ }))
32
40
 
33
- t.test("get value", async t => {
41
+ t.test("get value", queued(async t => {
34
42
  t.plan(1)
35
43
  const v = await store.objectGet('a')
36
44
  t.deepEqual(v, { v: 1, id: 'a' }, 'value read')
37
- })
38
-
45
+ }))
39
46
 
40
- t.test("put another values", async t => {
47
+ t.test("put another values", queued(async t => {
41
48
  t.plan(1)
42
49
  await store.put({ id: 'c', v: 3 })
43
50
  await store.put({ id: 'b', v: 2 })
44
51
  t.pass('values written')
45
- })
52
+ }))
46
53
 
47
- t.test("get range [a,c]", async t => {
54
+ t.test("get range [a,c]", queued(async t => {
48
55
  t.plan(1)
49
56
  let values = await store.rangeGet({ gte: 'a', lte: 'c' })
50
57
  t.deepEqual(values, [ { v: 1, id: 'a' }, { v: 2, id: 'b' }, { v: 3, id: 'c' } ], 'range read' )
51
- })
58
+ }))
52
59
 
53
- t.test("get reverse range [c,a]", async t => {
60
+ t.test("get reverse range [c,a]", queued(async t => {
54
61
  t.plan(1)
55
62
  let values = await store.rangeGet({ gte: 'a', lte: 'c', reverse: true })
56
63
  t.deepEqual(values, [ { v: 3, id: 'c' }, { v: 2, id: 'b' }, { v: 1, id: 'a' } ], 'range read' )
57
- })
64
+ }))
58
65
 
59
- t.test("get range [a,c] with limit 2", async t => {
66
+ t.test("get range [a,c] with limit 2", queued(async t => {
60
67
  t.plan(1)
61
68
  let values = await store.rangeGet({ gte: 'a', lte: 'c', limit: 2 })
62
69
  t.deepEqual(values, [ { v: 1, id: 'a' }, { v: 2, id: 'b' } ], 'range read' )
63
- })
70
+ }))
64
71
 
65
- t.test("get reverse range [c,a] with limit 2", async t => {
72
+ t.test("get reverse range [c,a] with limit 2", queued(async t => {
66
73
  t.plan(1)
67
74
  let values = await store.rangeGet({ gte: 'a', lte: 'c', reverse: true, limit: 2 })
68
75
  t.deepEqual(values, [ { v: 3, id: 'c' }, { v: 2, id: 'b' } ], 'range read' )
69
- })
76
+ }))
70
77
 
71
- t.test("get range (a,c]", async t => {
78
+ t.test("get range (a,c]", queued(async t => {
72
79
  t.plan(1)
73
80
  let values = await store.rangeGet({ gt: 'a', lte: 'c' })
74
81
  t.deepEqual(values, [ { v: 2, id: 'b' }, { v: 3, id: 'c' } ], 'range read' )
75
- })
82
+ }))
76
83
 
77
- t.test("get reverse range [c,a)", async t => {
84
+ t.test("get reverse range [c,a)", queued(async t => {
78
85
  t.plan(1)
79
86
  let values = await store.rangeGet({ gt: 'a', lte: 'c', reverse: true })
80
87
  t.deepEqual(values, [ { v: 3, id: 'c' }, { v: 2, id: 'b' }, ], 'range read' )
81
- })
88
+ }))
82
89
 
83
- t.test("get range [a,c)", async t => {
90
+ t.test("get range [a,c)", queued(async t => {
84
91
  t.plan(1)
85
92
  let values = await store.rangeGet({ gte: 'a', lt: 'c' })
86
93
  t.deepEqual(values, [ { v: 1, id: 'a' }, { v: 2, id: 'b' } ], 'range read' )
87
- })
94
+ }))
88
95
 
89
- t.test("get reverse range (c,a]", async t => {
96
+ t.test("get reverse range (c,a]", queued(async t => {
90
97
  t.plan(1)
91
98
  let values = await store.rangeGet({ gte: 'a', lt: 'c', reverse: true })
92
99
  t.deepEqual(values, [ { v: 2, id: 'b' }, { v: 1, id: 'a' } ], 'range read' )
93
- })
100
+ }))
94
101
 
95
- t.test("get range (a,c)", async t => {
102
+ t.test("get range (a,c)", queued(async t => {
96
103
  t.plan(1)
97
104
  let values = await store.rangeGet({ gt: 'a', lt: 'c' })
98
105
  t.deepEqual(values, [ { v: 2, id: 'b' } ], 'range read' )
99
- })
106
+ }))
100
107
 
101
- t.test("get reverse range (a,c)", async t => {
108
+ t.test("get reverse range (a,c)", queued(async t => {
102
109
  t.plan(1)
103
110
  let values = await store.rangeGet({ gt: 'a', lt: 'c', reverse: true })
104
111
  t.deepEqual(values, [ { v: 2, id: 'b' } ], 'range read' )
105
- })
112
+ }))
106
113
 
107
- t.test("remove 'b'", async t => {
114
+ t.test("remove 'b'", queued(async t => {
108
115
  t.plan(1)
109
116
  await store.delete('b')
110
117
  t.pass("removed")
111
- })
118
+ }))
112
119
 
113
- t.test("get range [a,c]", async t => {
120
+ t.test("get range [a,c]", queued(async t => {
114
121
  t.plan(1)
115
122
  let values = await store.rangeGet({ gte: 'a', lte: 'c' })
116
123
  t.deepEqual(values, [ { v: 1, id: 'a' }, { v: 3, id: 'c' } ], 'range read' )
117
- })
124
+ }))
118
125
  })
119
126
 
120
127
  t.test("close and remove database", async t => {
121
128
  t.plan(1)
122
129
  await level.close()
123
- rimraf(dbPath, (err) => {
124
- if(err) return t.fail(err)
125
- t.pass('removed')
126
- })
130
+ await rimraf(dbPath)
131
+ t.pass('removed')
127
132
  })
128
133
  })