UNPKG

ipfs-unixfs-importer

Version:

JavaScript implementation of the UnixFs importer used by IPFS

32 lines (27 loc) 861 B
import { UnixFS } from 'ipfs-unixfs' import { persist } from '../utils/persist.js' import { encode, prepare } from '@ipld/dag-pb' import type { Directory, InProgressImportResult, WritableStorage } from '../index.js' import type { Version } from 'multiformats/cid' export interface DirBuilderOptions { cidVersion: Version signal?: AbortSignal } export const dirBuilder = async (dir: Directory, blockstore: WritableStorage, options: DirBuilderOptions): Promise<InProgressImportResult> => { const unixfs = new UnixFS({ type: 'directory', mtime: dir.mtime, mode: dir.mode }) const block = encode(prepare({ Data: unixfs.marshal() })) const cid = await persist(block, blockstore, options) const path = dir.path return { cid, path, unixfs, size: BigInt(block.length), originalPath: dir.originalPath, block } }