From cdf418ac20a361e9c7039187644472ab12dcc3c5 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Wed, 15 Mar 2023 10:44:09 +0100 Subject: [PATCH 1/2] fix: extend blockstore interface To ensure type alignment, extend the blockstore interface --- packages/interface/package.json | 1 + packages/interface/src/blocks.ts | 21 +++++++++++---------- packages/interface/src/index.ts | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/packages/interface/package.json b/packages/interface/package.json index f2a62f270..3e42edca4 100644 --- a/packages/interface/package.json +++ b/packages/interface/package.json @@ -159,6 +159,7 @@ "@libp2p/interface-peer-id": "^2.0.1", "@libp2p/interfaces": "^3.3.1", "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. From 36f0dcaa46e60e8c4793501c185d3f15f4984b29 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Wed, 15 Mar 2023 11:50:23 +0100 Subject: [PATCH 2/2] chore: add missing dep --- packages/interface/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/interface/package.json b/packages/interface/package.json index 3e42edca4..cf5a62a34 100644 --- a/packages/interface/package.json +++ b/packages/interface/package.json @@ -158,6 +158,7 @@ "@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",