diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 92e8f09..6c241b6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -50,18 +50,20 @@ jobs: steps: - uses: actions/checkout@v2 - run: npm install - - run: npx aegir test -t browser -t webworker --bail -- --browser firefox + - run: npx aegir test -t browser -t webworker --bail -- --browsers FirefoxHeadless test-electron-main: needs: check runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - run: npm install - - run: npx xvfb-maybe aegir test -t electron-main --bail + - run: npm run pretest + - run: npx xvfb-maybe aegir test -t electron-main --bail -f dist/cjs/node-test/*js test-electron-renderer: needs: check runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - run: npm install - - run: npx xvfb-maybe aegir test -t electron-renderer --bail \ No newline at end of file + - run: npm run pretest + - run: npx xvfb-maybe aegir test -t electron-renderer --bail -f dist/cjs/browser-test/*js diff --git a/.gitignore b/.gitignore index f8ca32b..d1e881e 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ node_modules dist docs +types diff --git a/package.json b/package.json index a293cfa..faa980d 100644 --- a/package.json +++ b/package.json @@ -4,19 +4,34 @@ "description": "datastore interface", "leadMaintainer": "Alex Potsides ", "main": "src/index.js", - "types": "dist/src/index.d.ts", + "type": "module", + "types": "types/index.d.ts", "files": [ - "src", - "dist" + "*", + "!**/*.tsbuildinfo" ], + "exports": { + ".": { + "import": "./src/index.js" + } + }, + "eslintConfig": { + "extends": "ipfs", + "parserOptions": { + "sourceType": "module" + } + }, "scripts": { - "prepare": "aegir build --no-bundle", + "clean": "rimraf dist types", + "prepare": "aegir build --no-bundle && cp -R types dist", "lint": "aegir ts -p check && aegir lint", + "build": "aegir build", + "release": "aegir release --target node", + "release-minor": "aegir release --type minor --target node", + "release-major": "aegir release --type major --target node", + "pretest": "aegir build --esm-tests", "test": "aegir test", - "release": "aegir release", - "release-minor": "aegir release --type minor", - "release-major": "aegir release --type major", - "coverage": "aegir test --cov" + "dep-check": "aegir dep-check -i rimraf" }, "repository": { "type": "git", @@ -35,20 +50,19 @@ "homepage": "https://github.com/ipfs/js-blockstore-datastore-adapter#readme", "devDependencies": { "aegir": "^35.0.2", - "interface-blockstore-tests": "^1.0.0", + "datastore-core": "^6.0.6", + "interface-blockstore-tests": "^2.0.1", "util": "^0.12.4" }, "dependencies": { + "blockstore-core": "^1.0.0", "err-code": "^3.0.1", - "interface-blockstore": "^1.0.0", - "interface-datastore": "^5.0.0", + "interface-blockstore": "^2.0.2", + "interface-datastore": "^6.0.2", "it-drain": "^1.0.1", "it-pushable": "^1.4.2", "multiformats": "^9.1.0" }, - "eslintConfig": { - "extends": "ipfs" - }, "contributors": [ "achingbrain " ] diff --git a/src/index.js b/src/index.js index e90fd80..1fce613 100644 --- a/src/index.js +++ b/src/index.js @@ -1,15 +1,13 @@ -'use strict' - -const drain = require('it-drain') -const pushable = require('it-pushable') -const { Key } = require('interface-datastore') -const { CID } = require('multiformats/cid') -const raw = require('multiformats/codecs/raw') -const Digest = require('multiformats/hashes/digest') -const { base32, base32pad } = require('multiformats/bases/base32') -const { base58btc } = require('multiformats/bases/base58') -const errcode = require('err-code') -const { BlockstoreAdapter } = require('interface-blockstore') +import drain from 'it-drain' +import pushable from 'it-pushable' +import { Key } from 'interface-datastore/key' +import { CID } from 'multiformats/cid' +import * as raw from 'multiformats/codecs/raw' +import * as Digest from 'multiformats/hashes/digest' +import { base32, base32pad } from 'multiformats/bases/base32' +import { base58btc } from 'multiformats/bases/base58' +import errcode from 'err-code' +import { BaseBlockstore } from 'blockstore-core/base' /** * Transform a cid to the appropriate datastore key. @@ -83,7 +81,7 @@ function convertPrefix (prefix) { for (let i = 1; i < prefix.length; i++) { try { bytes = decoder(prefix.substring(0, i)) - } catch (err) { + } catch (/** @type {any} */ err) { if (err.message !== 'Unexpected end of data') { throw err } @@ -163,7 +161,7 @@ function convertKeyQuery (query) { /** * @implements {Blockstore} */ -class BlockstoreDatastoreAdapter extends BlockstoreAdapter { +export class BlockstoreDatastoreAdapter extends BaseBlockstore { /** * @param {Datastore} datastore */ @@ -314,5 +312,3 @@ class BlockstoreDatastoreAdapter extends BlockstoreAdapter { return out } } - -module.exports = BlockstoreDatastoreAdapter diff --git a/test/index.spec.js b/test/index.spec.js index 557bb4d..4704365 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -1,12 +1,12 @@ /* eslint-env mocha */ -'use strict' -const { MemoryDatastore } = require('interface-datastore') -const BlockstoreDatastoreAdapter = require('../src') +import { MemoryDatastore } from 'datastore-core/memory' +import { BlockstoreDatastoreAdapter } from '../src/index.js' +import { interfaceBlockstoreTests } from 'interface-blockstore-tests' describe('Memory', () => { describe('interface-blockstore', () => { - require('interface-blockstore-tests')({ + interfaceBlockstoreTests({ setup () { return new BlockstoreDatastoreAdapter( new MemoryDatastore() diff --git a/tsconfig.json b/tsconfig.json index fe3cbd6..f6b712b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,10 +1,10 @@ { - "extends": "aegir/src/config/tsconfig.aegir.json", - "compilerOptions": { - "outDir": "dist" - }, - "include": [ - "test", - "src" - ] + "extends": "aegir/src/config/tsconfig.aegir.json", + "compilerOptions": { + "outDir": "types" + }, + "include": [ + "test", + "src" + ] }