UNPKG

ipfs-unixfs-importer

Version:

JavaScript implementation of the UnixFs importer used by IPFS

27 lines (21 loc) 871 B
import { CID } from 'multiformats/cid' import * as dagPb from '@ipld/dag-pb' import { sha256 } from 'multiformats/hashes/sha2' import type { WritableStorage } from '../index.js' import type { BlockCodec } from 'multiformats/codecs/interface' import type { Version as CIDVersion } from 'multiformats/cid' import type { ProgressOptions } from 'progress-events' export interface PersistOptions extends ProgressOptions { codec?: BlockCodec<any, any> cidVersion: CIDVersion signal?: AbortSignal } export const persist = async (buffer: Uint8Array, blockstore: WritableStorage, options: PersistOptions): Promise<CID> => { if (options.codec == null) { options.codec = dagPb } const multihash = await sha256.digest(buffer) const cid = CID.create(options.cidVersion, options.codec.code, multihash) await blockstore.put(cid, buffer, options) return cid }