@fireproof/vendor 0.0.0-smoke → 0.22.0-dev-preview
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/merge-package.ts +207 -0
- package/p-limit/index.d.ts +81 -0
- package/p-limit/index.js +104 -0
- package/p-limit/index.test-d.ts +19 -0
- package/p-limit/license +9 -0
- package/p-limit/package.json +59 -0
- package/p-limit/readme.md +128 -0
- package/p-limit/test.js +241 -0
- package/package.json +12 -9
- package/to-esm-transform.ts +42 -0
- package/patched/@ipld/dag-json/.github/dependabot.yml +0 -11
- package/patched/@ipld/dag-json/.github/workflows/js-test-and-release.yml +0 -28
- package/patched/@ipld/dag-json/CHANGELOG.md +0 -202
- package/patched/@ipld/dag-json/LICENSE +0 -4
- package/patched/@ipld/dag-json/LICENSE-APACHE +0 -5
- package/patched/@ipld/dag-json/LICENSE-MIT +0 -19
- package/patched/@ipld/dag-json/README.md +0 -58
- package/patched/@ipld/dag-json/ipld-dag-json-10.2.3.tgz +0 -0
- package/patched/@ipld/dag-json/package.json +0 -173
- package/patched/@ipld/dag-json/src/index.js +0 -291
- package/patched/@ipld/dag-json/test/test-basics.spec.js +0 -290
- package/patched/@ipld/dag-json/test/ts-use/package.json +0 -11
- package/patched/@ipld/dag-json/test/ts-use/src/main.ts +0 -54
- package/patched/@ipld/dag-json/test/ts-use/tsconfig.json +0 -9
- package/patched/@ipld/dag-json/tsconfig.json +0 -14
- package/patched/cborg/.github/dependabot.yml +0 -16
- package/patched/cborg/.github/workflows/test-and-release.yml +0 -52
- package/patched/cborg/CHANGELOG.md +0 -513
- package/patched/cborg/LICENSE +0 -13
- package/patched/cborg/README.md +0 -515
- package/patched/cborg/bench/bench.js +0 -117
- package/patched/cborg/bench/json.js +0 -124
- package/patched/cborg/bench/package.json +0 -8
- package/patched/cborg/cborg-4.2.7.tgz +0 -0
- package/patched/cborg/cborg.js +0 -31
- package/patched/cborg/example-bytestrings.js +0 -180
- package/patched/cborg/example-json.js +0 -6
- package/patched/cborg/example.js +0 -5
- package/patched/cborg/interface.ts +0 -56
- package/patched/cborg/lib/0uint.js +0 -227
- package/patched/cborg/lib/1negint.js +0 -111
- package/patched/cborg/lib/2bytes.js +0 -133
- package/patched/cborg/lib/3string.js +0 -90
- package/patched/cborg/lib/4array.js +0 -113
- package/patched/cborg/lib/5map.js +0 -113
- package/patched/cborg/lib/6tag.js +0 -80
- package/patched/cborg/lib/7float.js +0 -308
- package/patched/cborg/lib/bin.js +0 -189
- package/patched/cborg/lib/bl.js +0 -124
- package/patched/cborg/lib/byte-utils.js +0 -417
- package/patched/cborg/lib/common.js +0 -27
- package/patched/cborg/lib/decode.js +0 -209
- package/patched/cborg/lib/diagnostic.js +0 -156
- package/patched/cborg/lib/diagnostic_test.js +0 -117
- package/patched/cborg/lib/encode.js +0 -464
- package/patched/cborg/lib/is.js +0 -106
- package/patched/cborg/lib/json/decode.js +0 -462
- package/patched/cborg/lib/json/encode.js +0 -299
- package/patched/cborg/lib/json/json.js +0 -4
- package/patched/cborg/lib/jump.js +0 -209
- package/patched/cborg/lib/length.js +0 -61
- package/patched/cborg/lib/token.js +0 -76
- package/patched/cborg/package.json +0 -169
- package/patched/cborg/pnpm-lock.yaml +0 -6096
- package/patched/cborg/taglib.js +0 -73
- package/patched/cborg/test/appendix_a.js +0 -647
- package/patched/cborg/test/common.js +0 -18
- package/patched/cborg/test/node-test-bin.js +0 -402
- package/patched/cborg/test/noop-bin-test.js +0 -3
- package/patched/cborg/test/test-0uint.js +0 -103
- package/patched/cborg/test/test-1negint.js +0 -96
- package/patched/cborg/test/test-2bytes.js +0 -198
- package/patched/cborg/test/test-3string.js +0 -136
- package/patched/cborg/test/test-4array.js +0 -93
- package/patched/cborg/test/test-5map.js +0 -284
- package/patched/cborg/test/test-6tag.js +0 -85
- package/patched/cborg/test/test-7float.js +0 -131
- package/patched/cborg/test/test-bl.js +0 -37
- package/patched/cborg/test/test-cbor-vectors.js +0 -107
- package/patched/cborg/test/test-decode-errors.js +0 -65
- package/patched/cborg/test/test-fuzz.js +0 -42
- package/patched/cborg/test/test-json.js +0 -219
- package/patched/cborg/test/test-length.js +0 -65
- package/patched/cborg/test/test-partial.js +0 -111
- package/patched/cborg/tsconfig.json +0 -45
- package/patched/cborg/types/cborg.d.ts +0 -28
- package/patched/cborg/types/cborg.d.ts.map +0 -1
- package/patched/cborg/types/example.d.ts +0 -2
- package/patched/cborg/types/example.d.ts.map +0 -1
- package/patched/cborg/types/interface.d.ts +0 -47
- package/patched/cborg/types/interface.d.ts.map +0 -1
- package/patched/cborg/types/lib/0uint.d.ts +0 -100
- package/patched/cborg/types/lib/0uint.d.ts.map +0 -1
- package/patched/cborg/types/lib/1negint.d.ts +0 -58
- package/patched/cborg/types/lib/1negint.d.ts.map +0 -1
- package/patched/cborg/types/lib/2bytes.d.ts +0 -68
- package/patched/cborg/types/lib/2bytes.d.ts.map +0 -1
- package/patched/cborg/types/lib/3string.d.ts +0 -46
- package/patched/cborg/types/lib/3string.d.ts.map +0 -1
- package/patched/cborg/types/lib/4array.d.ts +0 -65
- package/patched/cborg/types/lib/4array.d.ts.map +0 -1
- package/patched/cborg/types/lib/5map.d.ts +0 -65
- package/patched/cborg/types/lib/5map.d.ts.map +0 -1
- package/patched/cborg/types/lib/6tag.d.ts +0 -61
- package/patched/cborg/types/lib/6tag.d.ts.map +0 -1
- package/patched/cborg/types/lib/7float.d.ts +0 -60
- package/patched/cborg/types/lib/7float.d.ts.map +0 -1
- package/patched/cborg/types/lib/bin.d.ts +0 -4
- package/patched/cborg/types/lib/bin.d.ts.map +0 -1
- package/patched/cborg/types/lib/bl.d.ts +0 -26
- package/patched/cborg/types/lib/bl.d.ts.map +0 -1
- package/patched/cborg/types/lib/byte-utils.d.ts +0 -53
- package/patched/cborg/types/lib/byte-utils.d.ts.map +0 -1
- package/patched/cborg/types/lib/common.d.ts +0 -10
- package/patched/cborg/types/lib/common.d.ts.map +0 -1
- package/patched/cborg/types/lib/decode.d.ts +0 -41
- package/patched/cborg/types/lib/decode.d.ts.map +0 -1
- package/patched/cborg/types/lib/diagnostic.d.ts +0 -12
- package/patched/cborg/types/lib/diagnostic.d.ts.map +0 -1
- package/patched/cborg/types/lib/diagnostic_test.d.ts +0 -2
- package/patched/cborg/types/lib/diagnostic_test.d.ts.map +0 -1
- package/patched/cborg/types/lib/encode.d.ts +0 -50
- package/patched/cborg/types/lib/encode.d.ts.map +0 -1
- package/patched/cborg/types/lib/is.d.ts +0 -6
- package/patched/cborg/types/lib/is.d.ts.map +0 -1
- package/patched/cborg/types/lib/json/decode.d.ts +0 -67
- package/patched/cborg/types/lib/json/decode.d.ts.map +0 -1
- package/patched/cborg/types/lib/json/encode.d.ts +0 -11
- package/patched/cborg/types/lib/json/encode.d.ts.map +0 -1
- package/patched/cborg/types/lib/json/forward-cborg.d.ts +0 -6
- package/patched/cborg/types/lib/json/forward-cborg.d.ts.map +0 -1
- package/patched/cborg/types/lib/json/json.d.ts +0 -6
- package/patched/cborg/types/lib/json/json.d.ts.map +0 -1
- package/patched/cborg/types/lib/jump.d.ts +0 -12
- package/patched/cborg/types/lib/jump.d.ts.map +0 -1
- package/patched/cborg/types/lib/length.d.ts +0 -27
- package/patched/cborg/types/lib/length.d.ts.map +0 -1
- package/patched/cborg/types/lib/token.d.ts +0 -59
- package/patched/cborg/types/lib/token.d.ts.map +0 -1
- package/patched/cborg/types/taglib.d.ts +0 -18
- package/patched/cborg/types/taglib.d.ts.map +0 -1
- package/patched/cborg/types/tsconfig.tsbuildinfo +0 -1
- package/src/@ipld/car/car/LICENSE +0 -4
- package/src/@ipld/car/car/README.md +0 -1078
- package/src/@ipld/car/car/dist/index.min.js +0 -5
- package/src/@ipld/car/car/dist/src/api.d.ts +0 -72
- package/src/@ipld/car/car/dist/src/api.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/buffer-decoder.d.ts +0 -67
- package/src/@ipld/car/car/dist/src/buffer-decoder.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/buffer-reader-browser.d.ts +0 -116
- package/src/@ipld/car/car/dist/src/buffer-reader-browser.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/buffer-reader.d.ts +0 -31
- package/src/@ipld/car/car/dist/src/buffer-reader.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/buffer-writer.d.ts +0 -86
- package/src/@ipld/car/car/dist/src/buffer-writer.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/coding.d.ts +0 -49
- package/src/@ipld/car/car/dist/src/coding.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/decoder-common.d.ts +0 -43
- package/src/@ipld/car/car/dist/src/decoder-common.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/decoder.d.ts +0 -87
- package/src/@ipld/car/car/dist/src/decoder.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/encoder.d.ts +0 -17
- package/src/@ipld/car/car/dist/src/encoder.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/header-validator.d.ts +0 -5
- package/src/@ipld/car/car/dist/src/header-validator.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/index-browser.d.ts +0 -10
- package/src/@ipld/car/car/dist/src/index-browser.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/index.d.ts +0 -11
- package/src/@ipld/car/car/dist/src/index.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/indexed-reader-browser.d.ts +0 -5
- package/src/@ipld/car/car/dist/src/indexed-reader-browser.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/indexed-reader.d.ts +0 -152
- package/src/@ipld/car/car/dist/src/indexed-reader.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/indexer.d.ts +0 -95
- package/src/@ipld/car/car/dist/src/indexer.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/iterator-channel.d.ts +0 -7
- package/src/@ipld/car/car/dist/src/iterator-channel.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/iterator.d.ts +0 -174
- package/src/@ipld/car/car/dist/src/iterator.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/reader-browser.d.ts +0 -151
- package/src/@ipld/car/car/dist/src/reader-browser.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/reader.d.ts +0 -35
- package/src/@ipld/car/car/dist/src/reader.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/writer-browser.d.ts +0 -155
- package/src/@ipld/car/car/dist/src/writer-browser.d.ts.map +0 -1
- package/src/@ipld/car/car/dist/src/writer.d.ts +0 -45
- package/src/@ipld/car/car/dist/src/writer.d.ts.map +0 -1
- package/src/@ipld/car/car/node_modules/.bin/cborg +0 -17
- package/src/@ipld/car/car/package.json +0 -235
- package/src/@ipld/car/car/src/api.ts +0 -90
- package/src/@ipld/car/car/src/buffer-decoder.js +0 -213
- package/src/@ipld/car/car/src/buffer-reader-browser.js +0 -144
- package/src/@ipld/car/car/src/buffer-reader.js +0 -51
- package/src/@ipld/car/car/src/buffer-writer.js +0 -286
- package/src/@ipld/car/car/src/coding.ts +0 -68
- package/src/@ipld/car/car/src/decoder-common.js +0 -82
- package/src/@ipld/car/car/src/decoder.js +0 -347
- package/src/@ipld/car/car/src/encoder.js +0 -76
- package/src/@ipld/car/car/src/header-validator.js +0 -214
- package/src/@ipld/car/car/src/header.ipldsch +0 -18
- package/src/@ipld/car/car/src/index-browser.js +0 -18
- package/src/@ipld/car/car/src/index.js +0 -21
- package/src/@ipld/car/car/src/indexed-reader-browser.js +0 -7
- package/src/@ipld/car/car/src/indexed-reader.js +0 -211
- package/src/@ipld/car/car/src/indexer.js +0 -130
- package/src/@ipld/car/car/src/iterator-channel.js +0 -91
- package/src/@ipld/car/car/src/iterator.js +0 -267
- package/src/@ipld/car/car/src/reader-browser.js +0 -194
- package/src/@ipld/car/car/src/reader.js +0 -56
- package/src/@ipld/car/car/src/writer-browser.js +0 -250
- package/src/@ipld/car/car/src/writer.js +0 -84
- package/src/@ipld/dag-cbor/dag-cbor/LICENSE +0 -4
- package/src/@ipld/dag-cbor/dag-cbor/README.md +0 -80
- package/src/@ipld/dag-cbor/dag-cbor/dist/index.min.js +0 -3
- package/src/@ipld/dag-cbor/dag-cbor/dist/src/index.d.ts +0 -67
- package/src/@ipld/dag-cbor/dag-cbor/dist/src/index.d.ts.map +0 -1
- package/src/@ipld/dag-cbor/dag-cbor/node_modules/.bin/cborg +0 -17
- package/src/@ipld/dag-cbor/dag-cbor/package.json +0 -171
- package/src/@ipld/dag-cbor/dag-cbor/src/index.js +0 -147
- package/src/@ipld/dag-json/dag-json/LICENSE +0 -4
- package/src/@ipld/dag-json/dag-json/README.md +0 -58
- package/src/@ipld/dag-json/dag-json/dist/index.min.js +0 -3
- package/src/@ipld/dag-json/dag-json/dist/src/index.d.ts +0 -12
- package/src/@ipld/dag-json/dag-json/dist/src/index.d.ts.map +0 -1
- package/src/@ipld/dag-json/dag-json/node_modules/.bin/cborg +0 -17
- package/src/@ipld/dag-json/dag-json/package.json +0 -173
- package/src/@ipld/dag-json/dag-json/src/index.js +0 -291
- package/src/@web3-storage/pail/pail/LICENSE.md +0 -232
- package/src/@web3-storage/pail/pail/README.md +0 -84
- package/src/@web3-storage/pail/pail/cli.js +0 -218
- package/src/@web3-storage/pail/pail/dist/src/api.d.ts +0 -59
- package/src/@web3-storage/pail/pail/dist/src/api.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/src/batch/api.d.ts +0 -31
- package/src/@web3-storage/pail/pail/dist/src/batch/api.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/src/batch/index.d.ts +0 -75
- package/src/@web3-storage/pail/pail/dist/src/batch/index.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/src/batch/shard.d.ts +0 -3
- package/src/@web3-storage/pail/pail/dist/src/batch/shard.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/src/block.d.ts +0 -35
- package/src/@web3-storage/pail/pail/dist/src/block.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/src/clock/api.d.ts +0 -10
- package/src/@web3-storage/pail/pail/dist/src/clock/api.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/src/clock/index.d.ts +0 -48
- package/src/@web3-storage/pail/pail/dist/src/clock/index.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/src/crdt/api.d.ts +0 -26
- package/src/@web3-storage/pail/pail/dist/src/crdt/api.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/src/crdt/batch/api.d.ts +0 -11
- package/src/@web3-storage/pail/pail/dist/src/crdt/batch/api.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/src/crdt/batch/index.d.ts +0 -5
- package/src/@web3-storage/pail/pail/dist/src/crdt/batch/index.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/src/crdt/index.d.ts +0 -9
- package/src/@web3-storage/pail/pail/dist/src/crdt/index.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/src/diff.d.ts +0 -13
- package/src/@web3-storage/pail/pail/dist/src/diff.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/src/index.d.ts +0 -10
- package/src/@web3-storage/pail/pail/dist/src/index.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/src/merge.d.ts +0 -5
- package/src/@web3-storage/pail/pail/dist/src/merge.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/src/shard.d.ts +0 -43
- package/src/@web3-storage/pail/pail/dist/src/shard.d.ts.map +0 -1
- package/src/@web3-storage/pail/pail/dist/tsconfig.tsbuildinfo +0 -1
- package/src/@web3-storage/pail/pail/node_modules/.bin/pail +0 -17
- package/src/@web3-storage/pail/pail/package.json +0 -173
- package/src/@web3-storage/pail/pail/src/api.js +0 -1
- package/src/@web3-storage/pail/pail/src/api.ts +0 -90
- package/src/@web3-storage/pail/pail/src/batch/api.js +0 -1
- package/src/@web3-storage/pail/pail/src/batch/api.ts +0 -59
- package/src/@web3-storage/pail/pail/src/batch/index.js +0 -258
- package/src/@web3-storage/pail/pail/src/batch/shard.js +0 -13
- package/src/@web3-storage/pail/pail/src/block.js +0 -75
- package/src/@web3-storage/pail/pail/src/clock/api.js +0 -1
- package/src/@web3-storage/pail/pail/src/clock/api.ts +0 -12
- package/src/@web3-storage/pail/pail/src/clock/index.js +0 -182
- package/src/@web3-storage/pail/pail/src/crdt/api.js +0 -1
- package/src/@web3-storage/pail/pail/src/crdt/api.ts +0 -33
- package/src/@web3-storage/pail/pail/src/crdt/batch/api.js +0 -1
- package/src/@web3-storage/pail/pail/src/crdt/batch/api.ts +0 -30
- package/src/@web3-storage/pail/pail/src/crdt/batch/index.js +0 -155
- package/src/@web3-storage/pail/pail/src/crdt/index.js +0 -354
- package/src/@web3-storage/pail/pail/src/diff.js +0 -151
- package/src/@web3-storage/pail/pail/src/index.js +0 -406
- package/src/@web3-storage/pail/pail/src/merge.js +0 -43
- package/src/@web3-storage/pail/pail/src/shard.js +0 -180
- package/src/cborg/cborg/.github/dependabot.yml +0 -16
- package/src/cborg/cborg/.github/workflows/test-and-release.yml +0 -52
- package/src/cborg/cborg/CHANGELOG.md +0 -513
- package/src/cborg/cborg/LICENSE +0 -13
- package/src/cborg/cborg/README.md +0 -515
- package/src/cborg/cborg/bench/bench.js +0 -117
- package/src/cborg/cborg/bench/json.js +0 -124
- package/src/cborg/cborg/bench/package.json +0 -8
- package/src/cborg/cborg/cborg.js +0 -31
- package/src/cborg/cborg/example-bytestrings.js +0 -180
- package/src/cborg/cborg/example-json.js +0 -6
- package/src/cborg/cborg/example.js +0 -5
- package/src/cborg/cborg/interface.ts +0 -56
- package/src/cborg/cborg/lib/0uint.js +0 -227
- package/src/cborg/cborg/lib/1negint.js +0 -111
- package/src/cborg/cborg/lib/2bytes.js +0 -133
- package/src/cborg/cborg/lib/3string.js +0 -90
- package/src/cborg/cborg/lib/4array.js +0 -113
- package/src/cborg/cborg/lib/5map.js +0 -113
- package/src/cborg/cborg/lib/6tag.js +0 -80
- package/src/cborg/cborg/lib/7float.js +0 -308
- package/src/cborg/cborg/lib/bin.js +0 -189
- package/src/cborg/cborg/lib/bl.js +0 -124
- package/src/cborg/cborg/lib/byte-utils.js +0 -417
- package/src/cborg/cborg/lib/common.js +0 -27
- package/src/cborg/cborg/lib/decode.js +0 -209
- package/src/cborg/cborg/lib/diagnostic.js +0 -156
- package/src/cborg/cborg/lib/diagnostic_test.js +0 -117
- package/src/cborg/cborg/lib/encode.js +0 -464
- package/src/cborg/cborg/lib/is.js +0 -106
- package/src/cborg/cborg/lib/json/decode.js +0 -462
- package/src/cborg/cborg/lib/json/encode.js +0 -299
- package/src/cborg/cborg/lib/json/json.js +0 -4
- package/src/cborg/cborg/lib/jump.js +0 -209
- package/src/cborg/cborg/lib/length.js +0 -61
- package/src/cborg/cborg/lib/token.js +0 -76
- package/src/cborg/cborg/node_modules/.bin/cborg +0 -17
- package/src/cborg/cborg/package.json +0 -168
- package/src/cborg/cborg/taglib.js +0 -73
- package/src/cborg/cborg/test/appendix_a.js +0 -647
- package/src/cborg/cborg/test/common.js +0 -18
- package/src/cborg/cborg/test/node-test-bin.js +0 -402
- package/src/cborg/cborg/test/noop-bin-test.js +0 -3
- package/src/cborg/cborg/test/test-0uint.js +0 -103
- package/src/cborg/cborg/test/test-1negint.js +0 -96
- package/src/cborg/cborg/test/test-2bytes.js +0 -198
- package/src/cborg/cborg/test/test-3string.js +0 -136
- package/src/cborg/cborg/test/test-4array.js +0 -93
- package/src/cborg/cborg/test/test-5map.js +0 -284
- package/src/cborg/cborg/test/test-6tag.js +0 -85
- package/src/cborg/cborg/test/test-7float.js +0 -131
- package/src/cborg/cborg/test/test-bl.js +0 -37
- package/src/cborg/cborg/test/test-cbor-vectors.js +0 -107
- package/src/cborg/cborg/test/test-decode-errors.js +0 -65
- package/src/cborg/cborg/test/test-fuzz.js +0 -42
- package/src/cborg/cborg/test/test-json.js +0 -219
- package/src/cborg/cborg/test/test-length.js +0 -65
- package/src/cborg/cborg/test/test-partial.js +0 -111
- package/src/cborg/cborg/tsconfig.json +0 -45
- package/src/cborg/cborg/types/cborg.d.ts +0 -28
- package/src/cborg/cborg/types/cborg.d.ts.map +0 -1
- package/src/cborg/cborg/types/example.d.ts +0 -2
- package/src/cborg/cborg/types/example.d.ts.map +0 -1
- package/src/cborg/cborg/types/interface.d.ts +0 -47
- package/src/cborg/cborg/types/interface.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/0uint.d.ts +0 -100
- package/src/cborg/cborg/types/lib/0uint.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/1negint.d.ts +0 -58
- package/src/cborg/cborg/types/lib/1negint.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/2bytes.d.ts +0 -68
- package/src/cborg/cborg/types/lib/2bytes.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/3string.d.ts +0 -46
- package/src/cborg/cborg/types/lib/3string.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/4array.d.ts +0 -65
- package/src/cborg/cborg/types/lib/4array.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/5map.d.ts +0 -65
- package/src/cborg/cborg/types/lib/5map.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/6tag.d.ts +0 -61
- package/src/cborg/cborg/types/lib/6tag.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/7float.d.ts +0 -60
- package/src/cborg/cborg/types/lib/7float.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/bin.d.ts +0 -4
- package/src/cborg/cborg/types/lib/bin.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/bl.d.ts +0 -26
- package/src/cborg/cborg/types/lib/bl.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/byte-utils.d.ts +0 -53
- package/src/cborg/cborg/types/lib/byte-utils.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/common.d.ts +0 -10
- package/src/cborg/cborg/types/lib/common.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/decode.d.ts +0 -41
- package/src/cborg/cborg/types/lib/decode.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/diagnostic.d.ts +0 -12
- package/src/cborg/cborg/types/lib/diagnostic.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/diagnostic_test.d.ts +0 -2
- package/src/cborg/cborg/types/lib/diagnostic_test.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/encode.d.ts +0 -50
- package/src/cborg/cborg/types/lib/encode.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/is.d.ts +0 -6
- package/src/cborg/cborg/types/lib/is.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/json/decode.d.ts +0 -67
- package/src/cborg/cborg/types/lib/json/decode.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/json/encode.d.ts +0 -11
- package/src/cborg/cborg/types/lib/json/encode.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/json/forward-cborg.d.ts +0 -6
- package/src/cborg/cborg/types/lib/json/forward-cborg.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/json/json.d.ts +0 -6
- package/src/cborg/cborg/types/lib/json/json.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/jump.d.ts +0 -12
- package/src/cborg/cborg/types/lib/jump.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/length.d.ts +0 -27
- package/src/cborg/cborg/types/lib/length.d.ts.map +0 -1
- package/src/cborg/cborg/types/lib/token.d.ts +0 -59
- package/src/cborg/cborg/types/lib/token.d.ts.map +0 -1
- package/src/cborg/cborg/types/taglib.d.ts +0 -18
- package/src/cborg/cborg/types/taglib.d.ts.map +0 -1
- package/src/cborg/cborg/types/tsconfig.tsbuildinfo +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/LICENSE +0 -4
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/README.md +0 -105
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/index.min.js +0 -3
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/errors.d.ts +0 -57
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/errors.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/errors.js +0 -73
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/errors.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/index.d.ts +0 -355
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/index.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/index.js +0 -197
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/index.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/dag-cbor.d.ts +0 -4
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/dag-cbor.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/dag-cbor.js +0 -9
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/dag-cbor.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/dag-json.d.ts +0 -4
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/dag-json.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/dag-json.js +0 -9
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/dag-json.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/identity.d.ts +0 -4
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/identity.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/identity.js +0 -38
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/identity.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/index.d.ts +0 -4
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/index.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/index.js +0 -30
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/index.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/json.d.ts +0 -4
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/json.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/json.js +0 -9
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/json.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/raw.d.ts +0 -4
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/raw.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/raw.js +0 -37
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/raw.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/directory.d.ts +0 -4
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/directory.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/directory.js +0 -29
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/directory.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/file.d.ts +0 -4
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/file.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/file.js +0 -153
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/file.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/hamt-sharded-directory.d.ts +0 -4
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/hamt-sharded-directory.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/hamt-sharded-directory.js +0 -59
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/hamt-sharded-directory.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/raw.d.ts +0 -4
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/raw.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/raw.js +0 -25
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/raw.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/index.d.ts +0 -4
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/index.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/index.js +0 -104
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/index.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/extract-data-from-block.d.ts +0 -3
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/extract-data-from-block.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/extract-data-from-block.js +0 -20
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/extract-data-from-block.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/find-cid-in-shard.d.ts +0 -6
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/find-cid-in-shard.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/find-cid-in-shard.js +0 -116
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/find-cid-in-shard.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/resolve-object-path.d.ts +0 -4
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/resolve-object-path.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/resolve-object-path.js +0 -57
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/resolve-object-path.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/validate-offset-and-length.d.ts +0 -6
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/validate-offset-and-length.d.ts.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/validate-offset-and-length.js +0 -30
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/src/utils/validate-offset-and-length.js.map +0 -1
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/dist/typedoc-urls.json +0 -58
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/package.json +0 -180
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/errors.ts +0 -87
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/index.ts +0 -498
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/resolvers/dag-cbor.ts +0 -12
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/resolvers/dag-json.ts +0 -12
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/resolvers/identity.ts +0 -49
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/resolvers/index.ts +0 -35
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/resolvers/json.ts +0 -12
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/resolvers/raw.ts +0 -49
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/directory.ts +0 -39
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/file.ts +0 -198
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/hamt-sharded-directory.ts +0 -76
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/raw.ts +0 -37
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/index.ts +0 -121
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/utils/extract-data-from-block.ts +0 -24
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/utils/find-cid-in-shard.ts +0 -149
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/utils/resolve-object-path.ts +0 -62
- package/src/ipfs-unixfs-exporter/ipfs-unixfs-exporter/src/utils/validate-offset-and-length.ts +0 -38
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
import fs from 'fs'
|
|
2
|
-
import { Readable } from 'stream'
|
|
3
|
-
import { CID } from 'multiformats/cid'
|
|
4
|
-
import { CarIndexer } from './indexer.js'
|
|
5
|
-
import { CarReader as NodeCarReader } from './reader.js'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @typedef {import('fs').promises.FileHandle} FileHandle
|
|
9
|
-
* @typedef {import('./api').Block} Block
|
|
10
|
-
* @typedef {import('./api').BlockIndex} BlockIndex
|
|
11
|
-
* @typedef {import('./api').CarReader} CarReaderIface
|
|
12
|
-
* @typedef {import('./reader-browser').CarReader} CarReader
|
|
13
|
-
* @typedef {{ blockLength:number, blockOffset:number }} RawLocation
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* A form of {@link CarReader} that pre-indexes a CAR archive from a file and
|
|
18
|
-
* provides random access to blocks within the file using the index data. This
|
|
19
|
-
* function is **only available in Node.js** and not a browser environment.
|
|
20
|
-
*
|
|
21
|
-
* For large CAR files, using this form of `CarReader` can be singificantly more
|
|
22
|
-
* efficient in terms of memory. The index consists of a list of `CID`s and
|
|
23
|
-
* their location within the archive (see {@link CarIndexer}). For large numbers
|
|
24
|
-
* of blocks, this index can also occupy a significant amount of memory. In some
|
|
25
|
-
* cases it may be necessary to expand the memory capacity of a Node.js instance
|
|
26
|
-
* to allow this index to fit. (e.g. by running with
|
|
27
|
-
* `NODE_OPTIONS="--max-old-space-size=16384"`).
|
|
28
|
-
*
|
|
29
|
-
* As an `CarIndexedReader` instance maintains an open file descriptor for its
|
|
30
|
-
* CAR file, an additional {@link CarReader#close} method is attached. This
|
|
31
|
-
* _must_ be called to have full clean-up of resources after use.
|
|
32
|
-
*
|
|
33
|
-
* Load this class with either
|
|
34
|
-
* `import { CarIndexedReader } from '@ipld/car/indexed-reader'`
|
|
35
|
-
* (`const { CarIndexedReader } = require('@ipld/car/indexed-reader')`). Or
|
|
36
|
-
* `import { CarIndexedReader } from '@ipld/car'`
|
|
37
|
-
* (`const { CarIndexedReader } = require('@ipld/car')`). The former will likely
|
|
38
|
-
* result in smaller bundle sizes where this is important.
|
|
39
|
-
*
|
|
40
|
-
* @name CarIndexedReader
|
|
41
|
-
* @class
|
|
42
|
-
* @implements {CarReaderIface}
|
|
43
|
-
* @extends {CarReader}
|
|
44
|
-
* @property {number} version The version number of the CAR referenced by this
|
|
45
|
-
* reader (should be `1`).
|
|
46
|
-
*/
|
|
47
|
-
export class CarIndexedReader {
|
|
48
|
-
/**
|
|
49
|
-
* @param {number} version
|
|
50
|
-
* @param {string} path
|
|
51
|
-
* @param {CID[]} roots
|
|
52
|
-
* @param {Map<string, RawLocation>} index
|
|
53
|
-
* @param {string[]} order
|
|
54
|
-
*/
|
|
55
|
-
constructor (version, path, roots, index, order) {
|
|
56
|
-
this._version = version
|
|
57
|
-
this._path = path
|
|
58
|
-
this._roots = roots
|
|
59
|
-
this._index = index
|
|
60
|
-
this._order = order
|
|
61
|
-
this._fd = null
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
get version () {
|
|
65
|
-
return this._version
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* See {@link CarReader#getRoots}
|
|
70
|
-
*
|
|
71
|
-
* @function
|
|
72
|
-
* @memberof CarIndexedReader
|
|
73
|
-
* @instance
|
|
74
|
-
* @async
|
|
75
|
-
* @returns {Promise<CID[]>}
|
|
76
|
-
*/
|
|
77
|
-
async getRoots () {
|
|
78
|
-
return this._roots
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* See {@link CarReader#has}
|
|
83
|
-
*
|
|
84
|
-
* @function
|
|
85
|
-
* @memberof CarIndexedReader
|
|
86
|
-
* @instance
|
|
87
|
-
* @async
|
|
88
|
-
* @param {CID} key
|
|
89
|
-
* @returns {Promise<boolean>}
|
|
90
|
-
*/
|
|
91
|
-
async has (key) {
|
|
92
|
-
return this._index.has(key.toString())
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* See {@link CarReader#get}
|
|
97
|
-
*
|
|
98
|
-
* @function
|
|
99
|
-
* @memberof CarIndexedReader
|
|
100
|
-
* @instance
|
|
101
|
-
* @async
|
|
102
|
-
* @param {CID} key
|
|
103
|
-
* @returns {Promise<Block | undefined>}
|
|
104
|
-
*/
|
|
105
|
-
async get (key) {
|
|
106
|
-
const blockIndex = this._index.get(key.toString())
|
|
107
|
-
if (!blockIndex) {
|
|
108
|
-
return undefined
|
|
109
|
-
}
|
|
110
|
-
if (!this._fd) {
|
|
111
|
-
this._fd = await fs.promises.open(this._path, 'r')
|
|
112
|
-
}
|
|
113
|
-
const readIndex = {
|
|
114
|
-
cid: key,
|
|
115
|
-
length: 0,
|
|
116
|
-
offset: 0,
|
|
117
|
-
blockLength: blockIndex.blockLength,
|
|
118
|
-
blockOffset: blockIndex.blockOffset
|
|
119
|
-
}
|
|
120
|
-
return NodeCarReader.readRaw(this._fd, readIndex)
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* See {@link CarReader#blocks}
|
|
125
|
-
*
|
|
126
|
-
* @function
|
|
127
|
-
* @memberof CarIndexedReader
|
|
128
|
-
* @instance
|
|
129
|
-
* @async
|
|
130
|
-
* @generator
|
|
131
|
-
* @returns {AsyncGenerator<Block>}
|
|
132
|
-
*/
|
|
133
|
-
async * blocks () {
|
|
134
|
-
for (const cidStr of this._order) {
|
|
135
|
-
const block = await this.get(CID.parse(cidStr))
|
|
136
|
-
/* c8 ignore next 3 */
|
|
137
|
-
if (!block) {
|
|
138
|
-
throw new Error('Unexpected internal error')
|
|
139
|
-
}
|
|
140
|
-
yield block
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* See {@link CarReader#cids}
|
|
146
|
-
*
|
|
147
|
-
* @function
|
|
148
|
-
* @memberof CarIndexedReader
|
|
149
|
-
* @instance
|
|
150
|
-
* @async
|
|
151
|
-
* @generator
|
|
152
|
-
* @returns {AsyncGenerator<CID>}
|
|
153
|
-
*/
|
|
154
|
-
async * cids () {
|
|
155
|
-
for (const cidStr of this._order) {
|
|
156
|
-
yield CID.parse(cidStr)
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Close the underlying file descriptor maintained by this `CarIndexedReader`.
|
|
162
|
-
* This must be called for proper resource clean-up to occur.
|
|
163
|
-
*
|
|
164
|
-
* @function
|
|
165
|
-
* @memberof CarIndexedReader
|
|
166
|
-
* @instance
|
|
167
|
-
* @async
|
|
168
|
-
* @returns {Promise<void>}
|
|
169
|
-
*/
|
|
170
|
-
async close () {
|
|
171
|
-
if (this._fd) {
|
|
172
|
-
return this._fd.close()
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* Instantiate an {@link CarIndexedReader} from a file with the provided
|
|
178
|
-
* `path`. The CAR file is first indexed with a full path that collects `CID`s
|
|
179
|
-
* and block locations. This index is maintained in memory. Subsequent reads
|
|
180
|
-
* operate on a read-only file descriptor, fetching the block from its in-file
|
|
181
|
-
* location.
|
|
182
|
-
*
|
|
183
|
-
* For large archives, the initial indexing may take some time. The returned
|
|
184
|
-
* `Promise` will resolve only after this is complete.
|
|
185
|
-
*
|
|
186
|
-
* @async
|
|
187
|
-
* @static
|
|
188
|
-
* @memberof CarIndexedReader
|
|
189
|
-
* @param {string} path
|
|
190
|
-
* @returns {Promise<CarIndexedReader>}
|
|
191
|
-
*/
|
|
192
|
-
static async fromFile (path) {
|
|
193
|
-
if (typeof path !== 'string') {
|
|
194
|
-
throw new TypeError('fromFile() requires a file path string')
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
const iterable = await CarIndexer.fromIterable(Readable.from(fs.createReadStream(path)))
|
|
198
|
-
/** @type {Map<string, RawLocation>} */
|
|
199
|
-
const index = new Map()
|
|
200
|
-
/** @type {string[]} */
|
|
201
|
-
const order = []
|
|
202
|
-
for await (const { cid, blockLength, blockOffset } of iterable) {
|
|
203
|
-
const cidStr = cid.toString()
|
|
204
|
-
index.set(cidStr, { blockLength, blockOffset })
|
|
205
|
-
order.push(cidStr)
|
|
206
|
-
}
|
|
207
|
-
return new CarIndexedReader(iterable.version, path, await iterable.getRoots(), index, order)
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
export const __browser = false
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
asyncIterableReader,
|
|
3
|
-
bytesReader,
|
|
4
|
-
createDecoder
|
|
5
|
-
} from './decoder.js'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @typedef {import('multiformats').CID} CID
|
|
9
|
-
* @typedef {import('./api').Block} Block
|
|
10
|
-
* @typedef {import('./api').RootsReader} RootsReader
|
|
11
|
-
* @typedef {import('./api').BlockIndex} BlockIndex
|
|
12
|
-
* @typedef {import('./coding').BytesReader} BytesReader
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Provides an iterator over all of the `Block`s in a CAR, returning their CIDs
|
|
17
|
-
* and byte-location information. Implements an `AsyncIterable<BlockIndex>`.
|
|
18
|
-
* Where a `BlockIndex` is a
|
|
19
|
-
* `{ cid:CID, length:number, offset:number, blockLength:number, blockOffset:number }`.
|
|
20
|
-
*
|
|
21
|
-
* As an implementer of `AsyncIterable`, this class can be used directly in a
|
|
22
|
-
* `for await (const blockIndex of iterator) {}` loop. Where the `iterator` is
|
|
23
|
-
* constructed using {@link CarIndexer.fromBytes} or
|
|
24
|
-
* {@link CarIndexer.fromIterable}.
|
|
25
|
-
*
|
|
26
|
-
* An iteration can only be performce _once_ per instantiation.
|
|
27
|
-
*
|
|
28
|
-
* `CarIndexer` also implements the `RootsReader` interface and provides
|
|
29
|
-
* the {@link CarIndexer.getRoots `getRoots()`} method.
|
|
30
|
-
*
|
|
31
|
-
* Load this class with either
|
|
32
|
-
* `import { CarIndexer } from '@ipld/car/indexer'`
|
|
33
|
-
* (`const { CarIndexer } = require('@ipld/car/indexer')`). Or
|
|
34
|
-
* `import { CarIndexer } from '@ipld/car'`
|
|
35
|
-
* (`const { CarIndexer } = require('@ipld/car')`). The former will likely
|
|
36
|
-
* result in smaller bundle sizes where this is important.
|
|
37
|
-
*
|
|
38
|
-
* @name CarIndexer
|
|
39
|
-
* @class
|
|
40
|
-
* @implements {RootsReader}
|
|
41
|
-
* @implements {AsyncIterable<BlockIndex>}
|
|
42
|
-
* @property {number} version The version number of the CAR referenced by this
|
|
43
|
-
* reader (should be `1`).
|
|
44
|
-
*/
|
|
45
|
-
export class CarIndexer {
|
|
46
|
-
/**
|
|
47
|
-
* @param {number} version
|
|
48
|
-
* @param {CID[]} roots
|
|
49
|
-
* @param {AsyncGenerator<BlockIndex>} iterator
|
|
50
|
-
*/
|
|
51
|
-
constructor (version, roots, iterator) {
|
|
52
|
-
this._version = version
|
|
53
|
-
this._roots = roots
|
|
54
|
-
this._iterator = iterator
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
get version () {
|
|
58
|
-
return this._version
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Get the list of roots defined by the CAR referenced by this indexer. May be
|
|
63
|
-
* zero or more `CID`s.
|
|
64
|
-
*
|
|
65
|
-
* @function
|
|
66
|
-
* @memberof CarIndexer
|
|
67
|
-
* @instance
|
|
68
|
-
* @async
|
|
69
|
-
* @returns {Promise<CID[]>}
|
|
70
|
-
*/
|
|
71
|
-
async getRoots () {
|
|
72
|
-
return this._roots
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* @returns {AsyncIterator<BlockIndex>}
|
|
77
|
-
*/
|
|
78
|
-
[Symbol.asyncIterator] () {
|
|
79
|
-
return this._iterator
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Instantiate a {@link CarIndexer} from a `Uint8Array` blob. Only the header
|
|
84
|
-
* is decoded initially, the remainder is processed and emitted via the
|
|
85
|
-
* iterator as it is consumed.
|
|
86
|
-
*
|
|
87
|
-
* @async
|
|
88
|
-
* @static
|
|
89
|
-
* @memberof CarIndexer
|
|
90
|
-
* @param {Uint8Array} bytes
|
|
91
|
-
* @returns {Promise<CarIndexer>}
|
|
92
|
-
*/
|
|
93
|
-
static async fromBytes (bytes) {
|
|
94
|
-
if (!(bytes instanceof Uint8Array)) {
|
|
95
|
-
throw new TypeError('fromBytes() requires a Uint8Array')
|
|
96
|
-
}
|
|
97
|
-
return decodeIndexerComplete(bytesReader(bytes))
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Instantiate a {@link CarIndexer} from a `AsyncIterable<Uint8Array>`,
|
|
102
|
-
* such as a [modern Node.js stream](https://nodejs.org/api/stream.html#stream_streams_compatibility_with_async_generators_and_async_iterators).
|
|
103
|
-
* is decoded initially, the remainder is processed and emitted via the
|
|
104
|
-
* iterator as it is consumed.
|
|
105
|
-
*
|
|
106
|
-
* @async
|
|
107
|
-
* @static
|
|
108
|
-
* @memberof CarIndexer
|
|
109
|
-
* @param {AsyncIterable<Uint8Array>} asyncIterable
|
|
110
|
-
* @returns {Promise<CarIndexer>}
|
|
111
|
-
*/
|
|
112
|
-
static async fromIterable (asyncIterable) {
|
|
113
|
-
if (!asyncIterable || !(typeof asyncIterable[Symbol.asyncIterator] === 'function')) {
|
|
114
|
-
throw new TypeError('fromIterable() requires an async iterable')
|
|
115
|
-
}
|
|
116
|
-
return decodeIndexerComplete(asyncIterableReader(asyncIterable))
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* @private
|
|
122
|
-
* @param {BytesReader} reader
|
|
123
|
-
* @returns {Promise<CarIndexer>}
|
|
124
|
-
*/
|
|
125
|
-
async function decodeIndexerComplete (reader) {
|
|
126
|
-
const decoder = createDecoder(reader)
|
|
127
|
-
const { version, roots } = await decoder.header()
|
|
128
|
-
|
|
129
|
-
return new CarIndexer(version, roots, decoder.blocksIndex())
|
|
130
|
-
}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @template {any} T
|
|
3
|
-
* @typedef {import('./coding').IteratorChannel<T>} IteratorChannel
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
function noop () {}
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @template {any} T
|
|
10
|
-
* @returns {IteratorChannel<T>}
|
|
11
|
-
*/
|
|
12
|
-
export function create () {
|
|
13
|
-
/** @type {T[]} */
|
|
14
|
-
const chunkQueue = []
|
|
15
|
-
/** @type {Promise<void> | null} */
|
|
16
|
-
let drainer = null
|
|
17
|
-
let drainerResolver = noop
|
|
18
|
-
let ended = false
|
|
19
|
-
/** @type {Promise<IteratorResult<T>> | null} */
|
|
20
|
-
let outWait = null
|
|
21
|
-
let outWaitResolver = noop
|
|
22
|
-
|
|
23
|
-
const makeDrainer = () => {
|
|
24
|
-
if (!drainer) {
|
|
25
|
-
drainer = new Promise((resolve) => {
|
|
26
|
-
drainerResolver = () => {
|
|
27
|
-
drainer = null
|
|
28
|
-
drainerResolver = noop
|
|
29
|
-
resolve()
|
|
30
|
-
}
|
|
31
|
-
})
|
|
32
|
-
}
|
|
33
|
-
return drainer
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @returns {IteratorChannel<T>}
|
|
38
|
-
*/
|
|
39
|
-
const writer = {
|
|
40
|
-
/**
|
|
41
|
-
* @param {T} chunk
|
|
42
|
-
* @returns {Promise<void>}
|
|
43
|
-
*/
|
|
44
|
-
write (chunk) {
|
|
45
|
-
chunkQueue.push(chunk)
|
|
46
|
-
const drainer = makeDrainer()
|
|
47
|
-
outWaitResolver()
|
|
48
|
-
return drainer
|
|
49
|
-
},
|
|
50
|
-
|
|
51
|
-
async end () {
|
|
52
|
-
ended = true
|
|
53
|
-
const drainer = makeDrainer()
|
|
54
|
-
outWaitResolver()
|
|
55
|
-
await drainer
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/** @type {AsyncIterator<T>} */
|
|
60
|
-
const iterator = {
|
|
61
|
-
/** @returns {Promise<IteratorResult<T>>} */
|
|
62
|
-
async next () {
|
|
63
|
-
const chunk = chunkQueue.shift()
|
|
64
|
-
if (chunk) {
|
|
65
|
-
if (chunkQueue.length === 0) {
|
|
66
|
-
drainerResolver()
|
|
67
|
-
}
|
|
68
|
-
return { done: false, value: chunk }
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (ended) {
|
|
72
|
-
drainerResolver()
|
|
73
|
-
return { done: true, value: undefined }
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
if (!outWait) {
|
|
77
|
-
outWait = new Promise((resolve) => {
|
|
78
|
-
outWaitResolver = () => {
|
|
79
|
-
outWait = null
|
|
80
|
-
outWaitResolver = noop
|
|
81
|
-
return resolve(iterator.next())
|
|
82
|
-
}
|
|
83
|
-
})
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return outWait
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return { writer, iterator }
|
|
91
|
-
}
|
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
asyncIterableReader,
|
|
3
|
-
bytesReader,
|
|
4
|
-
createDecoder
|
|
5
|
-
} from './decoder.js'
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @typedef {import('multiformats').CID} CID
|
|
9
|
-
* @typedef {import('./api').Block} Block
|
|
10
|
-
* @typedef {import('./api').RootsReader} RootsReader
|
|
11
|
-
* @typedef {import('./coding').BytesReader} BytesReader
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @class
|
|
16
|
-
* @implements {RootsReader}
|
|
17
|
-
* @property {number} version The version number of the CAR referenced by this reader (should be `1`).
|
|
18
|
-
*/
|
|
19
|
-
export class CarIteratorBase {
|
|
20
|
-
/**
|
|
21
|
-
* @param {number} version
|
|
22
|
-
* @param {CID[]} roots
|
|
23
|
-
* @param {AsyncIterable<Block>|void} iterable
|
|
24
|
-
*/
|
|
25
|
-
constructor (version, roots, iterable) {
|
|
26
|
-
this._version = version
|
|
27
|
-
this._roots = roots
|
|
28
|
-
this._iterable = iterable
|
|
29
|
-
this._decoded = false
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
get version () {
|
|
33
|
-
return this._version
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @returns {Promise<CID[]>}
|
|
38
|
-
*/
|
|
39
|
-
async getRoots () {
|
|
40
|
-
return this._roots
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Provides an iterator over all of the `Block`s in a CAR. Implements a
|
|
46
|
-
* `BlockIterator` interface, or `AsyncIterable<Block>`. Where a `Block` is
|
|
47
|
-
* a `{ cid:CID, bytes:Uint8Array }` pair.
|
|
48
|
-
*
|
|
49
|
-
* As an implementer of `AsyncIterable`, this class can be used directly in a
|
|
50
|
-
* `for await (const block of iterator) {}` loop. Where the `iterator` is
|
|
51
|
-
* constructed using {@link CarBlockiterator.fromBytes} or
|
|
52
|
-
* {@link CarBlockiterator.fromIterable}.
|
|
53
|
-
*
|
|
54
|
-
* An iteration can only be performce _once_ per instantiation.
|
|
55
|
-
*
|
|
56
|
-
* `CarBlockIterator` also implements the `RootsReader` interface and provides
|
|
57
|
-
* the {@link CarBlockiterator.getRoots `getRoots()`} method.
|
|
58
|
-
*
|
|
59
|
-
* Load this class with either
|
|
60
|
-
* `import { CarBlockIterator } from '@ipld/car/iterator'`
|
|
61
|
-
* (`const { CarBlockIterator } = require('@ipld/car/iterator')`). Or
|
|
62
|
-
* `import { CarBlockIterator } from '@ipld/car'`
|
|
63
|
-
* (`const { CarBlockIterator } = require('@ipld/car')`).
|
|
64
|
-
*
|
|
65
|
-
* @name CarBlockIterator
|
|
66
|
-
* @class
|
|
67
|
-
* @implements {RootsReader}
|
|
68
|
-
* @implements {AsyncIterable<Block>}
|
|
69
|
-
* @property {number} version The version number of the CAR referenced by this
|
|
70
|
-
* iterator (should be `1`).
|
|
71
|
-
*/
|
|
72
|
-
export class CarBlockIterator extends CarIteratorBase {
|
|
73
|
-
// inherited method
|
|
74
|
-
/**
|
|
75
|
-
* Get the list of roots defined by the CAR referenced by this iterator. May be
|
|
76
|
-
* zero or more `CID`s.
|
|
77
|
-
*
|
|
78
|
-
* @function getRoots
|
|
79
|
-
* @memberof CarBlockIterator
|
|
80
|
-
* @instance
|
|
81
|
-
* @async
|
|
82
|
-
* @returns {Promise<CID[]>}
|
|
83
|
-
*/
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* @returns {AsyncIterator<Block>}
|
|
87
|
-
*/
|
|
88
|
-
[Symbol.asyncIterator] () {
|
|
89
|
-
if (this._decoded) {
|
|
90
|
-
throw new Error('Cannot decode more than once')
|
|
91
|
-
}
|
|
92
|
-
/* c8 ignore next 3 */
|
|
93
|
-
if (!this._iterable) {
|
|
94
|
-
throw new Error('Block iterable not found')
|
|
95
|
-
}
|
|
96
|
-
this._decoded = true
|
|
97
|
-
return this._iterable[Symbol.asyncIterator]()
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Instantiate a {@link CarBlockIterator} from a `Uint8Array` blob. Rather
|
|
102
|
-
* than decoding the entire byte array prior to returning the iterator, as in
|
|
103
|
-
* {@link CarReader.fromBytes}, only the header is decoded and the remainder
|
|
104
|
-
* of the CAR is parsed as the `Block`s as yielded.
|
|
105
|
-
*
|
|
106
|
-
* @async
|
|
107
|
-
* @static
|
|
108
|
-
* @memberof CarBlockIterator
|
|
109
|
-
* @param {Uint8Array} bytes
|
|
110
|
-
* @returns {Promise<CarBlockIterator>}
|
|
111
|
-
*/
|
|
112
|
-
static async fromBytes (bytes) {
|
|
113
|
-
const { version, roots, iterator } = await fromBytes(bytes)
|
|
114
|
-
return new CarBlockIterator(version, roots, iterator)
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Instantiate a {@link CarBlockIterator} from a `AsyncIterable<Uint8Array>`,
|
|
119
|
-
* such as a [modern Node.js stream](https://nodejs.org/api/stream.html#stream_streams_compatibility_with_async_generators_and_async_iterators).
|
|
120
|
-
* Rather than decoding the entire byte array prior to returning the iterator,
|
|
121
|
-
* as in {@link CarReader.fromIterable}, only the header is decoded and the
|
|
122
|
-
* remainder of the CAR is parsed as the `Block`s as yielded.
|
|
123
|
-
*
|
|
124
|
-
* @async
|
|
125
|
-
* @static
|
|
126
|
-
* @param {AsyncIterable<Uint8Array>} asyncIterable
|
|
127
|
-
* @returns {Promise<CarBlockIterator>}
|
|
128
|
-
*/
|
|
129
|
-
static async fromIterable (asyncIterable) {
|
|
130
|
-
const { version, roots, iterator } = await fromIterable(asyncIterable)
|
|
131
|
-
return new CarBlockIterator(version, roots, iterator)
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Provides an iterator over all of the `CID`s in a CAR. Implements a
|
|
137
|
-
* `CIDIterator` interface, or `AsyncIterable<CID>`. Similar to
|
|
138
|
-
* {@link CarBlockIterator} but only yields the CIDs in the CAR.
|
|
139
|
-
*
|
|
140
|
-
* As an implementer of `AsyncIterable`, this class can be used directly in a
|
|
141
|
-
* `for await (const cid of iterator) {}` loop. Where the `iterator` is
|
|
142
|
-
* constructed using {@link CarCIDiterator.fromBytes} or
|
|
143
|
-
* {@link CarCIDiterator.fromIterable}.
|
|
144
|
-
*
|
|
145
|
-
* An iteration can only be performce _once_ per instantiation.
|
|
146
|
-
*
|
|
147
|
-
* `CarCIDIterator` also implements the `RootsReader` interface and provides
|
|
148
|
-
* the {@link CarCIDiterator.getRoots `getRoots()`} method.
|
|
149
|
-
*
|
|
150
|
-
* Load this class with either
|
|
151
|
-
* `import { CarCIDIterator } from '@ipld/car/iterator'`
|
|
152
|
-
* (`const { CarCIDIterator } = require('@ipld/car/iterator')`). Or
|
|
153
|
-
* `import { CarCIDIterator } from '@ipld/car'`
|
|
154
|
-
* (`const { CarCIDIterator } = require('@ipld/car')`).
|
|
155
|
-
*
|
|
156
|
-
* @name CarCIDIterator
|
|
157
|
-
* @class
|
|
158
|
-
* @implements {RootsReader}
|
|
159
|
-
* @implements {AsyncIterable<CID>}
|
|
160
|
-
* @property {number} version The version number of the CAR referenced by this
|
|
161
|
-
* iterator (should be `1`).
|
|
162
|
-
*/
|
|
163
|
-
export class CarCIDIterator extends CarIteratorBase {
|
|
164
|
-
// inherited method
|
|
165
|
-
/**
|
|
166
|
-
* Get the list of roots defined by the CAR referenced by this iterator. May be
|
|
167
|
-
* zero or more `CID`s.
|
|
168
|
-
*
|
|
169
|
-
* @function getRoots
|
|
170
|
-
* @memberof CarCIDIterator
|
|
171
|
-
* @instance
|
|
172
|
-
* @async
|
|
173
|
-
* @returns {Promise<CID[]>}
|
|
174
|
-
*/
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* @returns {AsyncIterator<CID>}
|
|
178
|
-
*/
|
|
179
|
-
[Symbol.asyncIterator] () {
|
|
180
|
-
if (this._decoded) {
|
|
181
|
-
throw new Error('Cannot decode more than once')
|
|
182
|
-
}
|
|
183
|
-
/* c8 ignore next 3 */
|
|
184
|
-
if (!this._iterable) {
|
|
185
|
-
throw new Error('Block iterable not found')
|
|
186
|
-
}
|
|
187
|
-
this._decoded = true
|
|
188
|
-
const iterable = this._iterable[Symbol.asyncIterator]()
|
|
189
|
-
return {
|
|
190
|
-
async next () {
|
|
191
|
-
const next = await iterable.next()
|
|
192
|
-
if (next.done) {
|
|
193
|
-
return next
|
|
194
|
-
}
|
|
195
|
-
return { done: false, value: next.value.cid }
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Instantiate a {@link CarCIDIterator} from a `Uint8Array` blob. Rather
|
|
202
|
-
* than decoding the entire byte array prior to returning the iterator, as in
|
|
203
|
-
* {@link CarReader.fromBytes}, only the header is decoded and the remainder
|
|
204
|
-
* of the CAR is parsed as the `CID`s as yielded.
|
|
205
|
-
*
|
|
206
|
-
* @async
|
|
207
|
-
* @static
|
|
208
|
-
* @memberof CarCIDIterator
|
|
209
|
-
* @param {Uint8Array} bytes
|
|
210
|
-
* @returns {Promise<CarCIDIterator>}
|
|
211
|
-
*/
|
|
212
|
-
static async fromBytes (bytes) {
|
|
213
|
-
const { version, roots, iterator } = await fromBytes(bytes)
|
|
214
|
-
return new CarCIDIterator(version, roots, iterator)
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Instantiate a {@link CarCIDIterator} from a `AsyncIterable<Uint8Array>`,
|
|
219
|
-
* such as a [modern Node.js stream](https://nodejs.org/api/stream.html#stream_streams_compatibility_with_async_generators_and_async_iterators).
|
|
220
|
-
* Rather than decoding the entire byte array prior to returning the iterator,
|
|
221
|
-
* as in {@link CarReader.fromIterable}, only the header is decoded and the
|
|
222
|
-
* remainder of the CAR is parsed as the `CID`s as yielded.
|
|
223
|
-
*
|
|
224
|
-
* @async
|
|
225
|
-
* @static
|
|
226
|
-
* @memberof CarCIDIterator
|
|
227
|
-
* @param {AsyncIterable<Uint8Array>} asyncIterable
|
|
228
|
-
* @returns {Promise<CarCIDIterator>}
|
|
229
|
-
*/
|
|
230
|
-
static async fromIterable (asyncIterable) {
|
|
231
|
-
const { version, roots, iterator } = await fromIterable(asyncIterable)
|
|
232
|
-
return new CarCIDIterator(version, roots, iterator)
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
/**
|
|
237
|
-
* @param {Uint8Array} bytes
|
|
238
|
-
* @returns {Promise<{ version:number, roots:CID[], iterator:AsyncIterable<Block>}>}
|
|
239
|
-
*/
|
|
240
|
-
async function fromBytes (bytes) {
|
|
241
|
-
if (!(bytes instanceof Uint8Array)) {
|
|
242
|
-
throw new TypeError('fromBytes() requires a Uint8Array')
|
|
243
|
-
}
|
|
244
|
-
return decodeIterator(bytesReader(bytes))
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* @param {AsyncIterable<Uint8Array>} asyncIterable
|
|
249
|
-
* @returns {Promise<{ version:number, roots:CID[], iterator:AsyncIterable<Block>}>}
|
|
250
|
-
*/
|
|
251
|
-
async function fromIterable (asyncIterable) {
|
|
252
|
-
if (!asyncIterable || !(typeof asyncIterable[Symbol.asyncIterator] === 'function')) {
|
|
253
|
-
throw new TypeError('fromIterable() requires an async iterable')
|
|
254
|
-
}
|
|
255
|
-
return decodeIterator(asyncIterableReader(asyncIterable))
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
/**
|
|
259
|
-
* @private
|
|
260
|
-
* @param {BytesReader} reader
|
|
261
|
-
* @returns {Promise<{ version:number, roots:CID[], iterator:AsyncIterable<Block>}>}
|
|
262
|
-
*/
|
|
263
|
-
async function decodeIterator (reader) {
|
|
264
|
-
const decoder = createDecoder(reader)
|
|
265
|
-
const { version, roots } = await decoder.header()
|
|
266
|
-
return { version, roots, iterator: decoder.blocks() }
|
|
267
|
-
}
|