kubo-rpc-client
Version:
A client library for the Kubo RPC API
200 lines • 5.68 kB
TypeScript
import type { Codecs, HTTPRPCOptions, IPFSPath } from '../index.js';
import type { HTTPRPCClient } from '../lib/core.js';
import type { CID, Version } from 'multiformats/cid';
export interface DAGGetOptions extends HTTPRPCOptions {
/**
* An optional path within the DAG to resolve
*/
path?: string;
/**
* If set to true, it will avoid resolving through different objects
*/
localResolve?: boolean;
}
export interface DAGGetResult {
/**
* The value or node that was fetched during the get operation
*/
value: any;
/**
* The remainder of the Path that the node was unable to resolve or what was left in a localResolve scenario
*/
remainderPath?: string;
}
export interface DAGPutOptions extends HTTPRPCOptions {
/**
* The codec that the input object is encoded with if a pre-encoded object is
* supplied.
*/
inputCodec?: string;
/**
* The codec that the stored object will be encoded with
*
* @default 'dag-cbor'
*/
storeCodec?: string;
/**
* Multihash hashing algorithm to use
*
* @default 'sha2-256'
*/
hashAlg?: string;
/**
* The version to use to create the CID
*
* @default 1
*/
version?: Version;
/**
* Pin this block when adding
*
* @default false
*/
pin?: boolean;
/**
* If true no blocks will be written to the underlying blockstore
*/
onlyHash?: boolean;
}
export interface DAGResolveOptions extends HTTPRPCOptions {
/**
* If ipfsPath is a CID, you may pass a path here
*/
path?: string;
}
export interface DAGResolveResult {
/**
* The last CID encountered during the traversal and the path to the end of the IPFS path inside the node referenced by the CID
*/
cid: CID;
/**
* The remainder of the Path that the node was unable to resolve
*/
remainderPath?: string;
}
export interface DAGExportOptions extends HTTPRPCOptions {
}
export interface DAGImportOptions extends HTTPRPCOptions {
/**
* Recursively pin roots for the imported CARs, defaults to true.
*/
pinRoots?: boolean;
}
export interface DAGImportResult {
/**
* A list of roots and their pin status if `pinRoots` was set.
*/
root: DAGImportRootStatus;
}
export interface DAGImportRootStatus {
/**
* CID of a root that was recursively pinned.
*/
cid: CID;
/**
* The error message if the pin was unsuccessful.
*/
pinErrorMsg?: string;
}
export interface DAGAPI {
/**
* Retrieve an IPLD format node
*
* @example
* ```js
* // example obj
* const obj = {
* a: 1,
* b: [1, 2, 3],
* c: {
* ca: [5, 6, 7],
* cb: 'foo'
* }
* }
*
* const cid = await ipfs.dag.put(obj, { storeCodec: 'dag-cbor', hashAlg: 'sha2-256' })
* console.log(cid.toString())
* // zdpuAmtur968yprkhG9N5Zxn6MFVoqAWBbhUAkNLJs2UtkTq5
*
* async function getAndLog(cid, path) {
* const result = await ipfs.dag.get(cid, { path })
* console.log(result.value)
* }
*
* await getAndLog(cid, '/a')
* // Logs:
* // 1
*
* await getAndLog(cid, '/b')
* // Logs:
* // [1, 2, 3]
*
* await getAndLog(cid, '/c')
* // Logs:
* // {
* // ca: [5, 6, 7],
* // cb: 'foo'
* // }
*
* await getAndLog(cid, '/c/ca/1')
* // Logs:
* // 6
* ```
*/
get(cid: CID, options?: DAGGetOptions): Promise<DAGGetResult>;
/**
* Store an IPLD format node
*
* @example
* ```js
* const obj = { simple: 'object' }
* const cid = await ipfs.dag.put(obj, { storeCodec: 'dag-cbor', hashAlg: 'sha2-512' })
*
* console.log(cid.toString())
* // zBwWX9ecx5F4X54WAjmFLErnBT6ByfNxStr5ovowTL7AhaUR98RWvXPS1V3HqV1qs3r5Ec5ocv7eCdbqYQREXNUfYNuKG
* ```
*/
put(node: any, options?: DAGPutOptions): Promise<CID>;
/**
* Returns the CID and remaining path of the node at the end of the passed IPFS path
*
* @example
* ```JavaScript
* // example obj
* const obj = {
* a: 1,
* b: [1, 2, 3],
* c: {
* ca: [5, 6, 7],
* cb: 'foo'
* }
* }
*
* const cid = await ipfs.dag.put(obj, { storeCodec: 'dag-cbor', hashAlg: 'sha2-256' })
* console.log(cid.toString())
* // bafyreicyer3d34cutdzlsbe2nqu5ye62mesuhwkcnl2ypdwpccrsecfmjq
*
* const result = await ipfs.dag.resolve(`${cid}/c/cb`)
* console.log(result)
* // Logs:
* // {
* // cid: CID(bafyreicyer3d34cutdzlsbe2nqu5ye62mesuhwkcnl2ypdwpccrsecfmjq),
* // remainderPath: 'c/cb'
* // }
* ```
*/
resolve(ipfsPath: IPFSPath, options?: DAGResolveOptions): Promise<DAGResolveResult>;
/**
* Exports a CAR for the entire DAG available from the given root CID. The CAR will have a single
* root and IPFS will attempt to fetch and bundle all blocks that are linked within the connected
* DAG.
*/
export(root: CID, options?: DAGExportOptions): AsyncIterable<Uint8Array>;
/**
* Import all blocks from one or more CARs and optionally recursively pin the roots identified
* within the CARs.
*/
import(sources: Iterable<Uint8Array> | AsyncIterable<Uint8Array> | AsyncIterable<AsyncIterable<Uint8Array>> | Iterable<AsyncIterable<Uint8Array>>, options?: DAGImportOptions): AsyncIterable<DAGImportResult>;
}
export declare function createDAG(client: HTTPRPCClient, codecs: Codecs): DAGAPI;
//# sourceMappingURL=index.d.ts.map