Skip to content
This repository was archived by the owner on Mar 23, 2023. It is now read-only.

Commit f0f64a9

Browse files
authored
fix: add buffer and cleanup (#22)
* fix: add buffer and cleanup - update deps - lint fixes - add buffer - fix tiered open - fix tiered `has`, fail test added also * fix: simplify mount query many * chore: update interface-datastore
1 parent bd7766b commit f0f64a9

9 files changed

+32
-31
lines changed

package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,15 @@
3838
},
3939
"homepage": "https://github.com/ipfs/js-datastore-core#readme",
4040
"devDependencies": {
41-
"aegir": "^19.0.3",
41+
"aegir": "^21.4.5",
4242
"async-iterator-all": "^1.0.0",
4343
"chai": "^4.2.0",
4444
"dirty-chai": "^2.0.1"
4545
},
4646
"dependencies": {
47+
"buffer": "^5.5.0",
4748
"debug": "^4.1.1",
48-
"interface-datastore": "~0.7.0"
49+
"interface-datastore": "^0.8.2"
4950
},
5051
"engines": {
5152
"node": ">=6.0.0",

src/mount.js

+4-10
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class MountDatastore {
3232
* @returns {{Datastore, Key, Key}}
3333
*/
3434
_lookup (key) {
35-
for (let mount of this.mounts) {
35+
for (const mount of this.mounts) {
3636
if (mount.prefix.toString() === key.toString() || mount.prefix.isAncestorOf(key)) {
3737
const s = replaceStartWith(key.toString(), mount.prefix.toString())
3838
return {
@@ -156,15 +156,9 @@ class MountDatastore {
156156

157157
function _many (iterable) {
158158
return (async function * () {
159-
let completed = iterable.map(() => false)
160-
while (!completed.every(Boolean)) {
161-
for (const [idx, itr] of iterable.entries()) {
162-
const it = await itr.next()
163-
if (it.done) {
164-
completed[idx] = true
165-
continue
166-
}
167-
yield it.value
159+
for (let i = 0; i < iterable.length; i++) {
160+
for await (const v of iterable[i]) {
161+
yield v
168162
}
169163
}
170164
})()

src/sharding.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
'use strict'
22

3+
const { Buffer } = require('buffer')
34
const Key = require('interface-datastore').Key
45

56
const sh = require('./shard')

src/tiered.js

+8-12
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class TieredDatastore {
1717

1818
async open () {
1919
try {
20-
await (this.stores.map((store) => store.open()))
20+
await Promise.all(this.stores.map((store) => store.open()))
2121
} catch (err) {
2222
throw Errors.dbOpenFailedError()
2323
}
@@ -43,18 +43,14 @@ class TieredDatastore {
4343
throw Errors.notFoundError()
4444
}
4545

46-
has (key) {
47-
return new Promise(async (resolve) => {
48-
await Promise.all(this.stores.map(async (store) => {
49-
const has = await store.has(key)
50-
51-
if (has) {
52-
resolve(true)
53-
}
54-
}))
46+
async has (key) {
47+
for (const s of this.stores) {
48+
if (await s.has(key)) {
49+
return true
50+
}
51+
}
5552

56-
resolve(false)
57-
})
53+
return false
5854
}
5955

6056
async delete (key) {

test/keytransform.spec.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/* eslint-env mocha */
22
'use strict'
33

4+
const { Buffer } = require('buffer')
45
const chai = require('chai')
56
chai.use(require('dirty-chai'))
67
const expect = chai.expect
@@ -37,9 +38,9 @@ describe('KeyTransformDatastore', () => {
3738
'foo/bar/baz/barb'
3839
].map((s) => new Key(s))
3940
await Promise.all(keys.map((key) => kStore.put(key, Buffer.from(key.toString()))))
40-
let kResults = Promise.all(keys.map((key) => kStore.get(key)))
41-
let mResults = Promise.all(keys.map((key) => mStore.get(new Key('abc').child(key))))
42-
let results = await Promise.all([kResults, mResults])
41+
const kResults = Promise.all(keys.map((key) => kStore.get(key)))
42+
const mResults = Promise.all(keys.map((key) => mStore.get(new Key('abc').child(key))))
43+
const results = await Promise.all([kResults, mResults])
4344
expect(results[0]).to.eql(results[1])
4445

4546
const mRes = await all(mStore.query({}))

test/mount.spec.js

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
/* eslint max-nested-callbacks: ["error", 8] */
33
'use strict'
44

5+
const { Buffer } = require('buffer')
56
const chai = require('chai')
67
chai.use(require('dirty-chai'))
78
const assert = chai.assert

test/namespace.spec.js

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/* eslint-env mocha */
22
'use strict'
33

4+
const { Buffer } = require('buffer')
45
const chai = require('chai')
56
chai.use(require('dirty-chai'))
67
const expect = chai.expect
@@ -30,9 +31,9 @@ describe('KeyTransformDatastore', () => {
3031
].map((s) => new Key(s))
3132

3233
await Promise.all(keys.map(key => store.put(key, Buffer.from(key.toString()))))
33-
let nResults = Promise.all(keys.map((key) => store.get(key)))
34-
let mResults = Promise.all(keys.map((key) => mStore.get(new Key(prefix).child(key))))
35-
let results = await Promise.all([nResults, mResults])
34+
const nResults = Promise.all(keys.map((key) => store.get(key)))
35+
const mResults = Promise.all(keys.map((key) => mStore.get(new Key(prefix).child(key))))
36+
const results = await Promise.all([nResults, mResults])
3637
const mRes = await all(mStore.query({}))
3738
const nRes = await all(store.query({}))
3839

test/sharding.spec.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/* eslint-env mocha */
22
'use strict'
33

4+
const { Buffer } = require('buffer')
45
const chai = require('chai')
56
chai.use(require('dirty-chai'))
67
const expect = chai.expect

test/tiered.spec.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
/* eslint-env mocha */
22
'use strict'
33

4+
const { Buffer } = require('buffer')
45
const chai = require('chai')
56
chai.use(require('dirty-chai'))
67
const expect = chai.expect
@@ -12,7 +13,7 @@ const TieredStore = require('../src').TieredDatastore
1213

1314
describe('Tiered', () => {
1415
describe('all stores', () => {
15-
let ms = []
16+
const ms = []
1617
let store
1718
beforeEach(() => {
1819
ms.push(new MemoryStore())
@@ -40,6 +41,10 @@ describe('Tiered', () => {
4041
expect(exists).to.be.eql(true)
4142
})
4243

44+
it('has - key not found', async () => {
45+
expect(await store.has(new Key('hello1'))).to.be.eql(false)
46+
})
47+
4348
it('has and delete', async () => {
4449
const k = new Key('hello')
4550
const v = Buffer.from('world')

0 commit comments

Comments
 (0)