From 42308c0d75e81789d909470ded90ad81ee0f84c7 Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Wed, 15 Mar 2023 12:02:49 +0100 Subject: [PATCH] fix: extend blockstore interface (#55) To ensure type alignment, extend the blockstore interface --- packages/interface/package.json | 2 ++ packages/interface/src/blocks.ts | 21 +++++++++++---------- packages/interface/src/index.ts | 2 +- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/packages/interface/package.json b/packages/interface/package.json index f2a62f270..cf5a62a34 100644 --- a/packages/interface/package.json +++ b/packages/interface/package.json @@ -158,7 +158,9 @@ "@libp2p/interface-libp2p": "^1.1.0", "@libp2p/interface-peer-id": "^2.0.1", "@libp2p/interfaces": "^3.3.1", + "interface-blockstore": "^5.0.0", "interface-datastore": "^8.0.0", + "interface-store": "^4.0.0", "ipfs-bitswap": "^17.0.0", "multiformats": "^11.0.1", "progress-events": "^1.0.0" diff --git a/packages/interface/src/blocks.ts b/packages/interface/src/blocks.ts index d2abdba44..88cbfbaab 100644 --- a/packages/interface/src/blocks.ts +++ b/packages/interface/src/blocks.ts @@ -2,7 +2,8 @@ import type { AbortOptions } from '@libp2p/interfaces' import type { ProgressEvent, ProgressOptions } from 'progress-events' import type { CID } from 'multiformats/cid' import type { BitswapNotifyProgressEvents, BitswapWantProgressEvents } from 'ipfs-bitswap' -import type { AwaitIterable } from './index.js' +import type { AwaitIterable, Await } from './index.js' +import type { Blockstore } from 'interface-blockstore' export interface Pair { cid: CID @@ -42,7 +43,7 @@ export type DeleteBlockProgressEvents = export type DeleteManyBlocksProgressEvents = ProgressEvent<'blocks:delete-many:blockstore:delete-many'> -export interface Blocks { +export interface Blocks extends Blockstore { /** * Check for the existence of a value for the passed key * @@ -57,7 +58,7 @@ export interface Blocks { * } *``` */ - has: (key: CID, options?: AbortOptions) => Promise + has: (key: CID, options?: AbortOptions) => Await /** * Store the passed block under the passed CID @@ -68,7 +69,7 @@ export interface Blocks { * await store.put(CID('bafyfoo'), new Uint8Array([0, 1, 2, 3])) * ``` */ - put: (key: CID, val: Uint8Array, options?: AbortOptions & ProgressOptions) => Promise + put: (key: CID, val: Uint8Array, options?: AbortOptions & ProgressOptions) => Await /** * Store the given key/value pairs @@ -85,7 +86,7 @@ export interface Blocks { putMany: ( source: AwaitIterable, options?: AbortOptions & ProgressOptions - ) => AsyncIterable + ) => AwaitIterable /** * Retrieve the value stored under the given key @@ -97,7 +98,7 @@ export interface Blocks { * // => got content: datastore * ``` */ - get: (key: CID, options?: AbortOptions & ProgressOptions) => Promise + get: (key: CID, options?: AbortOptions & ProgressOptions) => Await /** * Retrieve values for the passed keys @@ -113,7 +114,7 @@ export interface Blocks { getMany: ( source: AwaitIterable, options?: AbortOptions & ProgressOptions - ) => AsyncIterable + ) => AwaitIterable /** * Retrieve all blocks in the blockstore @@ -128,7 +129,7 @@ export interface Blocks { */ getAll: ( options?: AbortOptions & ProgressOptions - ) => AsyncIterable + ) => AwaitIterable /** * Remove the record for the passed key @@ -140,7 +141,7 @@ export interface Blocks { * console.log('deleted awesome content :(') * ``` */ - delete: (key: CID, options?: AbortOptions & ProgressOptions) => Promise + delete: (key: CID, options?: AbortOptions & ProgressOptions) => Await /** * Remove values for the passed keys @@ -158,5 +159,5 @@ export interface Blocks { deleteMany: ( source: AwaitIterable, options?: AbortOptions & ProgressOptions - ) => AsyncIterable + ) => AwaitIterable } diff --git a/packages/interface/src/index.ts b/packages/interface/src/index.ts index ff7dc26ce..6c51828b4 100644 --- a/packages/interface/src/index.ts +++ b/packages/interface/src/index.ts @@ -23,7 +23,7 @@ import type { ProgressEvent, ProgressOptions } from 'progress-events' import type { CID } from 'multiformats/cid' import type { Blocks } from './blocks.js' -export type AwaitIterable = Iterable | AsyncIterable +export type { Await, AwaitIterable } from 'interface-store' /** * The API presented by a Helia node.