Dorian 0d073fa89e Add comprehensive installation and setup documentation
- Add GETTING_STARTED.md with quick start guide and development modes
- Add INSTALL.sh automated installation script
- Add INSTALLATION_CHECKLIST.md, INSTALLATION_SUCCESS.md, and INSTALLATION_SUMMARY.md
- Add QUICK_REFERENCE.md for common commands
- Add SETUP_GUIDE.md with detailed setup instructions
- Update README.md with improved project overview
- Add did-wallet app dependencies and node_modules
2026-01-27 17:18:21 +00:00

44 lines
1.3 KiB
JavaScript

import { base58btc } from './bases/base58.js'
/**
* @template [C=number] - multicodec code corresponding to codec used to encode the block
* @template [A=number] - multicodec code corresponding to the hashing algorithm used in CID creation.
* @template [V=0|1] - CID version
* @typedef {import('./cid').CID<unknown, C, A, V>} CID
*/
/**
* @template [T=unknown] - Logical type of the data encoded in the block
* @template [C=number] - multicodec code corresponding to codec used to encode the block
* @template [A=number] - multicodec code corresponding to the hashing algorithm used in CID creation.
* @template [V=0|1] - CID version
* @typedef {import('./block/interface.js').BlockView<T, C, A, V>} BlockView
*/
/**
* @param {object} options
* @param {CID} options.cid
* @param {(cid: CID) => Promise<BlockView|null>} options.load
* @param {Set<string>} [options.seen]
*/
const walk = async ({ cid, load, seen }) => {
seen = seen || new Set()
const b58Cid = cid.toString(base58btc)
if (seen.has(b58Cid)) {
return
}
const block = await load(cid)
seen.add(b58Cid)
if (block === null) { // the loader signals with `null` that we should skip this block
return
}
for (const [, cid] of block.links()) {
await walk({ cid, load, seen })
}
}
export { walk }