@fireproof/vendor 1.1.1 → 1.2.0

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.
Files changed (302) hide show
  1. package/package.json +109 -19
  2. package/src/@ipld/car/LICENSE +4 -0
  3. package/src/@ipld/car/README.md +1132 -0
  4. package/src/@ipld/car/dist/index.min.js +5 -0
  5. package/src/@ipld/car/dist/src/api.d.ts +72 -0
  6. package/src/@ipld/car/dist/src/api.d.ts.map +1 -0
  7. package/src/@ipld/car/dist/src/buffer-decoder.d.ts +67 -0
  8. package/src/@ipld/car/dist/src/buffer-decoder.d.ts.map +1 -0
  9. package/src/@ipld/car/dist/src/buffer-reader-browser.d.ts +116 -0
  10. package/src/@ipld/car/dist/src/buffer-reader-browser.d.ts.map +1 -0
  11. package/src/@ipld/car/dist/src/buffer-reader.d.ts +31 -0
  12. package/src/@ipld/car/dist/src/buffer-reader.d.ts.map +1 -0
  13. package/src/@ipld/car/dist/src/buffer-writer.d.ts +86 -0
  14. package/src/@ipld/car/dist/src/buffer-writer.d.ts.map +1 -0
  15. package/src/@ipld/car/dist/src/coding.d.ts +49 -0
  16. package/src/@ipld/car/dist/src/coding.d.ts.map +1 -0
  17. package/src/@ipld/car/dist/src/decoder-common.d.ts +43 -0
  18. package/src/@ipld/car/dist/src/decoder-common.d.ts.map +1 -0
  19. package/src/@ipld/car/dist/src/decoder.d.ts +87 -0
  20. package/src/@ipld/car/dist/src/decoder.d.ts.map +1 -0
  21. package/src/@ipld/car/dist/src/encoder.d.ts +17 -0
  22. package/src/@ipld/car/dist/src/encoder.d.ts.map +1 -0
  23. package/src/@ipld/car/dist/src/header-validator.d.ts +5 -0
  24. package/src/@ipld/car/dist/src/header-validator.d.ts.map +1 -0
  25. package/src/@ipld/car/dist/src/index-browser.d.ts +10 -0
  26. package/src/@ipld/car/dist/src/index-browser.d.ts.map +1 -0
  27. package/src/@ipld/car/dist/src/index.d.ts +11 -0
  28. package/src/@ipld/car/dist/src/index.d.ts.map +1 -0
  29. package/src/@ipld/car/dist/src/indexed-reader-browser.d.ts +5 -0
  30. package/src/@ipld/car/dist/src/indexed-reader-browser.d.ts.map +1 -0
  31. package/src/@ipld/car/dist/src/indexed-reader.d.ts +152 -0
  32. package/src/@ipld/car/dist/src/indexed-reader.d.ts.map +1 -0
  33. package/src/@ipld/car/dist/src/indexer.d.ts +95 -0
  34. package/src/@ipld/car/dist/src/indexer.d.ts.map +1 -0
  35. package/src/@ipld/car/dist/src/iterator-channel.d.ts +7 -0
  36. package/src/@ipld/car/dist/src/iterator-channel.d.ts.map +1 -0
  37. package/src/@ipld/car/dist/src/iterator.d.ts +174 -0
  38. package/src/@ipld/car/dist/src/iterator.d.ts.map +1 -0
  39. package/src/@ipld/car/dist/src/promise-fs-opts.d.ts +28 -0
  40. package/src/@ipld/car/dist/src/promise-fs-opts.d.ts.map +1 -0
  41. package/src/@ipld/car/dist/src/reader-browser.d.ts +151 -0
  42. package/src/@ipld/car/dist/src/reader-browser.d.ts.map +1 -0
  43. package/src/@ipld/car/dist/src/reader.d.ts +40 -0
  44. package/src/@ipld/car/dist/src/reader.d.ts.map +1 -0
  45. package/src/@ipld/car/dist/src/writer-browser.d.ts +155 -0
  46. package/src/@ipld/car/dist/src/writer-browser.d.ts.map +1 -0
  47. package/src/@ipld/car/dist/src/writer.d.ts +45 -0
  48. package/src/@ipld/car/dist/src/writer.d.ts.map +1 -0
  49. package/src/@ipld/car/src/api.ts +90 -0
  50. package/src/@ipld/car/src/buffer-decoder.js +213 -0
  51. package/src/@ipld/car/src/buffer-reader-browser.js +144 -0
  52. package/src/@ipld/car/src/buffer-reader.js +51 -0
  53. package/src/@ipld/car/src/buffer-writer.js +286 -0
  54. package/src/@ipld/car/src/coding.ts +68 -0
  55. package/src/@ipld/car/src/decoder-common.js +82 -0
  56. package/src/@ipld/car/src/decoder.js +347 -0
  57. package/src/@ipld/car/src/encoder.js +76 -0
  58. package/src/@ipld/car/src/header-validator.js +214 -0
  59. package/src/@ipld/car/src/header.ipldsch +18 -0
  60. package/src/@ipld/car/src/index-browser.js +18 -0
  61. package/src/@ipld/car/src/index.js +21 -0
  62. package/src/@ipld/car/src/indexed-reader-browser.js +7 -0
  63. package/src/@ipld/car/src/indexed-reader.js +211 -0
  64. package/src/@ipld/car/src/indexer.js +130 -0
  65. package/src/@ipld/car/src/iterator-channel.js +91 -0
  66. package/src/@ipld/car/src/iterator.js +267 -0
  67. package/src/@ipld/car/src/promise-fs-opts.js +46 -0
  68. package/src/@ipld/car/src/reader-browser.js +194 -0
  69. package/src/@ipld/car/src/reader.js +54 -0
  70. package/src/@ipld/car/src/writer-browser.js +250 -0
  71. package/src/@ipld/car/src/writer.js +81 -0
  72. package/src/@ipld/dag-cbor/LICENSE +4 -0
  73. package/src/@ipld/dag-cbor/README.md +80 -0
  74. package/src/@ipld/dag-cbor/dist/index.min.js +3 -0
  75. package/src/@ipld/dag-cbor/dist/src/index.d.ts +67 -0
  76. package/src/@ipld/dag-cbor/dist/src/index.d.ts.map +1 -0
  77. package/src/@ipld/dag-cbor/src/index.js +147 -0
  78. package/src/@ipld/dag-json/LICENSE +4 -0
  79. package/src/@ipld/dag-json/README.md +58 -0
  80. package/src/@ipld/dag-json/dist/index.min.js +3 -0
  81. package/src/@ipld/dag-json/dist/src/index.d.ts +12 -0
  82. package/src/@ipld/dag-json/dist/src/index.d.ts.map +1 -0
  83. package/src/@ipld/dag-json/src/index.js +291 -0
  84. package/src/@web3-storage/pail/dist/src/batch/index.d.ts +53 -1
  85. package/src/@web3-storage/pail/dist/src/batch/index.d.ts.map +1 -1
  86. package/src/@web3-storage/pail/dist/src/batch/shard.d.ts +1 -1
  87. package/src/@web3-storage/pail/dist/src/batch/shard.d.ts.map +1 -1
  88. package/src/@web3-storage/pail/dist/src/block.d.ts +2 -2
  89. package/src/@web3-storage/pail/dist/src/block.d.ts.map +1 -1
  90. package/src/@web3-storage/pail/dist/src/clock/index.d.ts +2 -2
  91. package/src/@web3-storage/pail/dist/src/clock/index.d.ts.map +1 -1
  92. package/src/@web3-storage/pail/dist/src/crdt/batch/index.d.ts.map +1 -1
  93. package/src/@web3-storage/pail/dist/src/crdt/index.d.ts +2 -2
  94. package/src/@web3-storage/pail/dist/src/crdt/index.d.ts.map +1 -1
  95. package/src/@web3-storage/pail/dist/src/diff.d.ts +3 -3
  96. package/src/@web3-storage/pail/dist/src/diff.d.ts.map +1 -1
  97. package/src/@web3-storage/pail/dist/src/index.d.ts +1 -1
  98. package/src/@web3-storage/pail/dist/src/index.d.ts.map +1 -1
  99. package/src/@web3-storage/pail/dist/src/merge.d.ts.map +1 -1
  100. package/src/@web3-storage/pail/dist/src/shard.d.ts +4 -4
  101. package/src/@web3-storage/pail/dist/src/shard.d.ts.map +1 -1
  102. package/src/@web3-storage/pail/dist/tsconfig.tsbuildinfo +1 -1
  103. package/src/@web3-storage/pail/src/api.ts +1 -1
  104. package/src/@web3-storage/pail/src/clock/index.js +1 -1
  105. package/src/@web3-storage/pail/src/shard.js +1 -1
  106. package/src/cborg/.github/dependabot.yml +16 -0
  107. package/src/cborg/.github/workflows/test-and-release.yml +52 -0
  108. package/src/cborg/CHANGELOG.md +513 -0
  109. package/src/cborg/LICENSE +13 -0
  110. package/src/cborg/README.md +515 -0
  111. package/src/cborg/bench/bench.js +117 -0
  112. package/src/cborg/bench/json.js +124 -0
  113. package/src/cborg/bench/package.json +8 -0
  114. package/src/cborg/cborg/bin.js +189 -0
  115. package/src/cborg/cborg/common.js +28 -0
  116. package/src/cborg/cborg/decode.js +211 -0
  117. package/src/cborg/cborg/diagnostic.js +158 -0
  118. package/src/cborg/cborg/diagnostic_test.js +117 -0
  119. package/src/cborg/cborg/encode.js +466 -0
  120. package/src/cborg/cborg/index.js +33 -0
  121. package/src/cborg/cborg/is.js +106 -0
  122. package/src/cborg/cborg/length.js +62 -0
  123. package/src/cborg/example-bytestrings.js +180 -0
  124. package/src/cborg/example-json.js +6 -0
  125. package/src/cborg/example.js +5 -0
  126. package/src/cborg/interface.ts +59 -0
  127. package/src/cborg/json/decode.js +462 -0
  128. package/src/cborg/json/encode.js +302 -0
  129. package/src/cborg/json/json.js +4 -0
  130. package/src/cborg/taglib.js +75 -0
  131. package/src/cborg/test/appendix_a.js +647 -0
  132. package/src/cborg/test/common.js +18 -0
  133. package/src/cborg/test/node-test-bin.js +402 -0
  134. package/src/cborg/test/noop-bin-test.js +3 -0
  135. package/src/cborg/test/test-0uint.js +103 -0
  136. package/src/cborg/test/test-1negint.js +96 -0
  137. package/src/cborg/test/test-2bytes.js +198 -0
  138. package/src/cborg/test/test-3string.js +136 -0
  139. package/src/cborg/test/test-4array.js +93 -0
  140. package/src/cborg/test/test-5map.js +284 -0
  141. package/src/cborg/test/test-6tag.js +84 -0
  142. package/src/cborg/test/test-7float.js +131 -0
  143. package/src/cborg/test/test-bl.js +37 -0
  144. package/src/cborg/test/test-cbor-vectors.js +107 -0
  145. package/src/cborg/test/test-decode-errors.js +65 -0
  146. package/src/cborg/test/test-fuzz.js +42 -0
  147. package/src/cborg/test/test-json.js +219 -0
  148. package/src/cborg/test/test-length.js +65 -0
  149. package/src/cborg/test/test-partial.js +111 -0
  150. package/src/cborg/tsconfig.json +48 -0
  151. package/src/cborg/types/cborg/decode.d.ts +43 -0
  152. package/src/cborg/types/cborg/decode.d.ts.map +1 -0
  153. package/src/cborg/types/cborg/encode.d.ts +51 -0
  154. package/src/cborg/types/cborg/encode.d.ts.map +1 -0
  155. package/src/cborg/types/cborg/index.d.ts +26 -0
  156. package/src/cborg/types/cborg/index.d.ts.map +1 -0
  157. package/src/cborg/types/cborg/is.d.ts +6 -0
  158. package/src/cborg/types/cborg/is.d.ts.map +1 -0
  159. package/src/cborg/types/example.d.ts +2 -0
  160. package/src/cborg/types/example.d.ts.map +1 -0
  161. package/src/cborg/types/interface.d.ts +49 -0
  162. package/src/cborg/types/interface.d.ts.map +1 -0
  163. package/src/cborg/types/json/decode.d.ts +67 -0
  164. package/src/cborg/types/json/decode.d.ts.map +1 -0
  165. package/src/cborg/types/json/encode.d.ts +11 -0
  166. package/src/cborg/types/json/encode.d.ts.map +1 -0
  167. package/src/cborg/types/json/json.d.ts +6 -0
  168. package/src/cborg/types/json/json.d.ts.map +1 -0
  169. package/src/cborg/types/taglib.d.ts +18 -0
  170. package/src/cborg/types/taglib.d.ts.map +1 -0
  171. package/src/cborg/types/tsconfig.tsbuildinfo +1 -0
  172. package/src/cborg/types/utils/0uint.d.ts +102 -0
  173. package/src/cborg/types/utils/0uint.d.ts.map +1 -0
  174. package/src/cborg/types/utils/1negint.d.ts +59 -0
  175. package/src/cborg/types/utils/1negint.d.ts.map +1 -0
  176. package/src/cborg/types/utils/2bytes.d.ts +69 -0
  177. package/src/cborg/types/utils/2bytes.d.ts.map +1 -0
  178. package/src/cborg/types/utils/3string.d.ts +46 -0
  179. package/src/cborg/types/utils/3string.d.ts.map +1 -0
  180. package/src/cborg/types/utils/4array.d.ts +66 -0
  181. package/src/cborg/types/utils/4array.d.ts.map +1 -0
  182. package/src/cborg/types/utils/5map.d.ts +66 -0
  183. package/src/cborg/types/utils/5map.d.ts.map +1 -0
  184. package/src/cborg/types/utils/6tag.d.ts +62 -0
  185. package/src/cborg/types/utils/6tag.d.ts.map +1 -0
  186. package/src/cborg/types/utils/7float.d.ts +60 -0
  187. package/src/cborg/types/utils/7float.d.ts.map +1 -0
  188. package/src/cborg/types/utils/bl.d.ts +26 -0
  189. package/src/cborg/types/utils/bl.d.ts.map +1 -0
  190. package/src/cborg/types/utils/byte-utils.d.ts +53 -0
  191. package/src/cborg/types/utils/byte-utils.d.ts.map +1 -0
  192. package/src/cborg/types/utils/common.d.ts +8 -0
  193. package/src/cborg/types/utils/common.d.ts.map +1 -0
  194. package/src/cborg/types/utils/index.d.ts +13 -0
  195. package/src/cborg/types/utils/index.d.ts.map +1 -0
  196. package/src/cborg/types/utils/jump.d.ts +16 -0
  197. package/src/cborg/types/utils/jump.d.ts.map +1 -0
  198. package/src/cborg/types/utils/token.d.ts +59 -0
  199. package/src/cborg/types/utils/token.d.ts.map +1 -0
  200. package/src/cborg/utils/0uint.js +229 -0
  201. package/src/cborg/utils/1negint.js +111 -0
  202. package/src/cborg/utils/2bytes.js +135 -0
  203. package/src/cborg/utils/3string.js +90 -0
  204. package/src/cborg/utils/4array.js +114 -0
  205. package/src/cborg/utils/5map.js +113 -0
  206. package/src/cborg/utils/6tag.js +81 -0
  207. package/src/cborg/utils/7float.js +310 -0
  208. package/src/cborg/utils/bl.js +124 -0
  209. package/src/cborg/utils/byte-utils.js +417 -0
  210. package/src/cborg/utils/common.js +11 -0
  211. package/src/cborg/utils/index.js +12 -0
  212. package/src/cborg/utils/jump.js +222 -0
  213. package/src/cborg/utils/token.js +76 -0
  214. package/src/ipfs-unixfs-exporter/LICENSE +4 -0
  215. package/src/ipfs-unixfs-exporter/README.md +105 -0
  216. package/src/ipfs-unixfs-exporter/dist/index.min.js +3 -0
  217. package/src/ipfs-unixfs-exporter/dist/src/errors.d.ts +57 -0
  218. package/src/ipfs-unixfs-exporter/dist/src/errors.d.ts.map +1 -0
  219. package/src/ipfs-unixfs-exporter/dist/src/errors.js +73 -0
  220. package/src/ipfs-unixfs-exporter/dist/src/errors.js.map +1 -0
  221. package/src/ipfs-unixfs-exporter/dist/src/index.d.ts +355 -0
  222. package/src/ipfs-unixfs-exporter/dist/src/index.d.ts.map +1 -0
  223. package/src/ipfs-unixfs-exporter/dist/src/index.js +197 -0
  224. package/src/ipfs-unixfs-exporter/dist/src/index.js.map +1 -0
  225. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-cbor.d.ts +4 -0
  226. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-cbor.d.ts.map +1 -0
  227. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-cbor.js +9 -0
  228. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-cbor.js.map +1 -0
  229. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-json.d.ts +4 -0
  230. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-json.d.ts.map +1 -0
  231. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-json.js +9 -0
  232. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-json.js.map +1 -0
  233. package/src/ipfs-unixfs-exporter/dist/src/resolvers/identity.d.ts +4 -0
  234. package/src/ipfs-unixfs-exporter/dist/src/resolvers/identity.d.ts.map +1 -0
  235. package/src/ipfs-unixfs-exporter/dist/src/resolvers/identity.js +38 -0
  236. package/src/ipfs-unixfs-exporter/dist/src/resolvers/identity.js.map +1 -0
  237. package/src/ipfs-unixfs-exporter/dist/src/resolvers/index.d.ts +4 -0
  238. package/src/ipfs-unixfs-exporter/dist/src/resolvers/index.d.ts.map +1 -0
  239. package/src/ipfs-unixfs-exporter/dist/src/resolvers/index.js +30 -0
  240. package/src/ipfs-unixfs-exporter/dist/src/resolvers/index.js.map +1 -0
  241. package/src/ipfs-unixfs-exporter/dist/src/resolvers/json.d.ts +4 -0
  242. package/src/ipfs-unixfs-exporter/dist/src/resolvers/json.d.ts.map +1 -0
  243. package/src/ipfs-unixfs-exporter/dist/src/resolvers/json.js +9 -0
  244. package/src/ipfs-unixfs-exporter/dist/src/resolvers/json.js.map +1 -0
  245. package/src/ipfs-unixfs-exporter/dist/src/resolvers/raw.d.ts +4 -0
  246. package/src/ipfs-unixfs-exporter/dist/src/resolvers/raw.d.ts.map +1 -0
  247. package/src/ipfs-unixfs-exporter/dist/src/resolvers/raw.js +37 -0
  248. package/src/ipfs-unixfs-exporter/dist/src/resolvers/raw.js.map +1 -0
  249. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/directory.d.ts +4 -0
  250. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/directory.d.ts.map +1 -0
  251. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/directory.js +29 -0
  252. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/directory.js.map +1 -0
  253. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/file.d.ts +4 -0
  254. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/file.d.ts.map +1 -0
  255. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/file.js +153 -0
  256. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/file.js.map +1 -0
  257. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/hamt-sharded-directory.d.ts +4 -0
  258. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/hamt-sharded-directory.d.ts.map +1 -0
  259. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/hamt-sharded-directory.js +59 -0
  260. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/hamt-sharded-directory.js.map +1 -0
  261. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/raw.d.ts +4 -0
  262. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/raw.d.ts.map +1 -0
  263. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/raw.js +25 -0
  264. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/raw.js.map +1 -0
  265. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/index.d.ts +4 -0
  266. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/index.d.ts.map +1 -0
  267. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/index.js +104 -0
  268. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/index.js.map +1 -0
  269. package/src/ipfs-unixfs-exporter/dist/src/utils/extract-data-from-block.d.ts +3 -0
  270. package/src/ipfs-unixfs-exporter/dist/src/utils/extract-data-from-block.d.ts.map +1 -0
  271. package/src/ipfs-unixfs-exporter/dist/src/utils/extract-data-from-block.js +20 -0
  272. package/src/ipfs-unixfs-exporter/dist/src/utils/extract-data-from-block.js.map +1 -0
  273. package/src/ipfs-unixfs-exporter/dist/src/utils/find-cid-in-shard.d.ts +6 -0
  274. package/src/ipfs-unixfs-exporter/dist/src/utils/find-cid-in-shard.d.ts.map +1 -0
  275. package/src/ipfs-unixfs-exporter/dist/src/utils/find-cid-in-shard.js +116 -0
  276. package/src/ipfs-unixfs-exporter/dist/src/utils/find-cid-in-shard.js.map +1 -0
  277. package/src/ipfs-unixfs-exporter/dist/src/utils/resolve-object-path.d.ts +4 -0
  278. package/src/ipfs-unixfs-exporter/dist/src/utils/resolve-object-path.d.ts.map +1 -0
  279. package/src/ipfs-unixfs-exporter/dist/src/utils/resolve-object-path.js +57 -0
  280. package/src/ipfs-unixfs-exporter/dist/src/utils/resolve-object-path.js.map +1 -0
  281. package/src/ipfs-unixfs-exporter/dist/src/utils/validate-offset-and-length.d.ts +6 -0
  282. package/src/ipfs-unixfs-exporter/dist/src/utils/validate-offset-and-length.d.ts.map +1 -0
  283. package/src/ipfs-unixfs-exporter/dist/src/utils/validate-offset-and-length.js +30 -0
  284. package/src/ipfs-unixfs-exporter/dist/src/utils/validate-offset-and-length.js.map +1 -0
  285. package/src/ipfs-unixfs-exporter/dist/typedoc-urls.json +58 -0
  286. package/src/ipfs-unixfs-exporter/src/errors.ts +87 -0
  287. package/src/ipfs-unixfs-exporter/src/index.ts +498 -0
  288. package/src/ipfs-unixfs-exporter/src/resolvers/dag-cbor.ts +12 -0
  289. package/src/ipfs-unixfs-exporter/src/resolvers/dag-json.ts +12 -0
  290. package/src/ipfs-unixfs-exporter/src/resolvers/identity.ts +49 -0
  291. package/src/ipfs-unixfs-exporter/src/resolvers/index.ts +35 -0
  292. package/src/ipfs-unixfs-exporter/src/resolvers/json.ts +12 -0
  293. package/src/ipfs-unixfs-exporter/src/resolvers/raw.ts +49 -0
  294. package/src/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/directory.ts +39 -0
  295. package/src/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/file.ts +198 -0
  296. package/src/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/hamt-sharded-directory.ts +76 -0
  297. package/src/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/raw.ts +37 -0
  298. package/src/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/index.ts +121 -0
  299. package/src/ipfs-unixfs-exporter/src/utils/extract-data-from-block.ts +24 -0
  300. package/src/ipfs-unixfs-exporter/src/utils/find-cid-in-shard.ts +149 -0
  301. package/src/ipfs-unixfs-exporter/src/utils/resolve-object-path.ts +62 -0
  302. package/src/ipfs-unixfs-exporter/src/utils/validate-offset-and-length.ts +38 -0
@@ -0,0 +1,310 @@
1
+ // TODO: shift some of the bytes logic to bytes-utils so we can use Buffer
2
+ // where possible
3
+
4
+ import { Token, Type } from './token.js'
5
+ import { encodeUint } from './0uint.js'
6
+
7
+ /**
8
+ * @typedef {import('./bl.js').Bl} Bl
9
+ * @typedef {import('../interface.js').DecodeOptions} DecodeOptions
10
+ * @typedef {import('../interface.js').EncodeOptions} EncodeOptions
11
+ */
12
+
13
+ const MINOR_FALSE = 20
14
+ const MINOR_TRUE = 21
15
+ const MINOR_NULL = 22
16
+ const MINOR_UNDEFINED = 23
17
+
18
+ /**
19
+ * @param {Uint8Array} _data
20
+ * @param {number} _pos
21
+ * @param {number} _minor
22
+ * @param {DecodeOptions} options
23
+ * @returns {Token}
24
+ */
25
+ export function decodeUndefined (_data, _pos, _minor, options) {
26
+ if (options.allowUndefined === false) {
27
+ throw new Error(`${options.decodeErrPrefix} undefined values are not supported`)
28
+ } else if (options.coerceUndefinedToNull === true) {
29
+ return new Token(Type.null, null, 1)
30
+ }
31
+ return new Token(Type.undefined, undefined, 1)
32
+ }
33
+
34
+ /**
35
+ * @param {Uint8Array} _data
36
+ * @param {number} _pos
37
+ * @param {number} _minor
38
+ * @param {DecodeOptions} options
39
+ * @returns {Token}
40
+ */
41
+ export function decodeBreak (_data, _pos, _minor, options) {
42
+ if (options.allowIndefinite === false) {
43
+ throw new Error(`${options.decodeErrPrefix} indefinite length items not allowed`)
44
+ }
45
+ return new Token(Type.break, undefined, 1)
46
+ }
47
+
48
+ /**
49
+ * @param {number} value
50
+ * @param {number} bytes
51
+ * @param {DecodeOptions} options
52
+ * @returns {Token}
53
+ */
54
+ function createToken (value, bytes, options) {
55
+ if (options) {
56
+ if (options.allowNaN === false && Number.isNaN(value)) {
57
+ throw new Error(`${options.decodeErrPrefix} NaN values are not supported`)
58
+ }
59
+ if (options.allowInfinity === false && (value === Infinity || value === -Infinity)) {
60
+ throw new Error(`${options.decodeErrPrefix} Infinity values are not supported`)
61
+ }
62
+ }
63
+ return new Token(Type.float, value, bytes)
64
+ }
65
+
66
+ /**
67
+ * @param {Uint8Array} data
68
+ * @param {number} pos
69
+ * @param {number} _minor
70
+ * @param {DecodeOptions} options
71
+ * @returns {Token}
72
+ */
73
+ export function decodeFloat16 (data, pos, _minor, options) {
74
+ return createToken(readFloat16(data, pos + 1, options.decodeErrPrefix), 3, options)
75
+ }
76
+
77
+ /**
78
+ * @param {Uint8Array} data
79
+ * @param {number} pos
80
+ * @param {number} _minor
81
+ * @param {DecodeOptions} options
82
+ * @returns {Token}
83
+ */
84
+ export function decodeFloat32 (data, pos, _minor, options) {
85
+ return createToken(readFloat32(data, pos + 1, options.decodeErrPrefix), 5, options)
86
+ }
87
+
88
+ /**
89
+ * @param {Uint8Array} data
90
+ * @param {number} pos
91
+ * @param {number} _minor
92
+ * @param {DecodeOptions} options
93
+ * @returns {Token}
94
+ */
95
+ export function decodeFloat64 (data, pos, _minor, options) {
96
+ return createToken(readFloat64(data, pos + 1, options.decodeErrPrefix), 9, options)
97
+ }
98
+
99
+ /**
100
+ * @param {Bl} buf
101
+ * @param {Token} token
102
+ * @param {EncodeOptions} options
103
+ */
104
+ export function encodeFloat (buf, token, options) {
105
+ const float = token.value
106
+
107
+ if (float === false) {
108
+ buf.push([Type.float.majorEncoded | MINOR_FALSE])
109
+ } else if (float === true) {
110
+ buf.push([Type.float.majorEncoded | MINOR_TRUE])
111
+ } else if (float === null) {
112
+ buf.push([Type.float.majorEncoded | MINOR_NULL])
113
+ } else if (float === undefined) {
114
+ buf.push([Type.float.majorEncoded | MINOR_UNDEFINED])
115
+ } else {
116
+ let decoded
117
+ let success = false
118
+ if (!options || options.float64 !== true) {
119
+ encodeFloat16(float)
120
+ decoded = readFloat16(ui8a, 1, options.encodeErrPrefix)
121
+ if (float === decoded || Number.isNaN(float)) {
122
+ ui8a[0] = 0xf9
123
+ buf.push(ui8a.slice(0, 3))
124
+ success = true
125
+ } else {
126
+ encodeFloat32(float)
127
+ decoded = readFloat32(ui8a, 1, options.encodeErrPrefix)
128
+ if (float === decoded) {
129
+ ui8a[0] = 0xfa
130
+ buf.push(ui8a.slice(0, 5))
131
+ success = true
132
+ }
133
+ }
134
+ }
135
+ if (!success) {
136
+ encodeFloat64(float)
137
+ decoded = readFloat64(ui8a, 1, options.encodeErrPrefix)
138
+ ui8a[0] = 0xfb
139
+ buf.push(ui8a.slice(0, 9))
140
+ }
141
+ }
142
+ }
143
+
144
+ /**
145
+ * @param {Token} token
146
+ * @param {EncodeOptions} options
147
+ * @returns {number}
148
+ */
149
+ encodeFloat.encodedSize = function encodedSize (token, options) {
150
+ const float = token.value
151
+
152
+ if (float === false || float === true || float === null || float === undefined) {
153
+ return 1
154
+ }
155
+
156
+ if (!options || options.float64 !== true) {
157
+ encodeFloat16(float)
158
+ let decoded = readFloat16(ui8a, 1, options.encodeErrPrefix)
159
+ if (float === decoded || Number.isNaN(float)) {
160
+ return 3
161
+ }
162
+ encodeFloat32(float)
163
+ decoded = readFloat32(ui8a, 1, options.encodeErrPrefix)
164
+ if (float === decoded) {
165
+ return 5
166
+ }
167
+ }
168
+ return 9
169
+ }
170
+
171
+ const buffer = new ArrayBuffer(9)
172
+ const dataView = new DataView(buffer, 1)
173
+ const ui8a = new Uint8Array(buffer, 0)
174
+
175
+ /**
176
+ * @param {number} inp
177
+ */
178
+ function encodeFloat16 (inp) {
179
+ if (inp === Infinity) {
180
+ dataView.setUint16(0, 0x7c00, false)
181
+ } else if (inp === -Infinity) {
182
+ dataView.setUint16(0, 0xfc00, false)
183
+ } else if (Number.isNaN(inp)) {
184
+ dataView.setUint16(0, 0x7e00, false)
185
+ } else {
186
+ dataView.setFloat32(0, inp)
187
+ const valu32 = dataView.getUint32(0)
188
+ const exponent = (valu32 & 0x7f800000) >> 23
189
+ const mantissa = valu32 & 0x7fffff
190
+
191
+ /* c8 ignore next 6 */
192
+ if (exponent === 0xff) {
193
+ // too big, Infinity, but this should be hard (impossible?) to trigger
194
+ dataView.setUint16(0, 0x7c00, false)
195
+ } else if (exponent === 0x00) {
196
+ // 0.0, -0.0 and subnormals, shouldn't be possible to get here because 0.0 should be counted as an int
197
+ dataView.setUint16(0, ((inp & 0x80000000) >> 16) | (mantissa >> 13), false)
198
+ } else { // standard numbers
199
+ // chunks of logic here borrowed from https://github.com/PJK/libcbor/blob/c78f437182533e3efa8d963ff4b945bb635c2284/src/cbor/encoding.c#L127
200
+ const logicalExponent = exponent - 127
201
+ // Now we know that 2^exponent <= 0 logically
202
+ /* c8 ignore next 6 */
203
+ if (logicalExponent < -24) {
204
+ /* No unambiguous representation exists, this float is not a half float
205
+ and is too small to be represented using a half, round off to zero.
206
+ Consistent with the reference implementation. */
207
+ // should be difficult (impossible?) to get here in JS
208
+ dataView.setUint16(0, 0)
209
+ } else if (logicalExponent < -14) {
210
+ /* Offset the remaining decimal places by shifting the significand, the
211
+ value is lost. This is an implementation decision that works around the
212
+ absence of standard half-float in the language. */
213
+ dataView.setUint16(0, ((valu32 & 0x80000000) >> 16) | /* sign bit */ (1 << (24 + logicalExponent)), false)
214
+ } else {
215
+ dataView.setUint16(0, ((valu32 & 0x80000000) >> 16) | ((logicalExponent + 15) << 10) | (mantissa >> 13), false)
216
+ }
217
+ }
218
+ }
219
+ }
220
+
221
+ /**
222
+ * @param {Uint8Array} ui8a
223
+ * @param {number} pos
224
+ * @param {string} encodeErrPrefix
225
+ * @returns {number}
226
+ */
227
+ function readFloat16 (ui8a, pos, encodeErrPrefix) {
228
+ if (ui8a.length - pos < 2) {
229
+ throw new Error(`${encodeErrPrefix} not enough data for float16`)
230
+ }
231
+
232
+ const half = (ui8a[pos] << 8) + ui8a[pos + 1]
233
+ if (half === 0x7c00) {
234
+ return Infinity
235
+ }
236
+ if (half === 0xfc00) {
237
+ return -Infinity
238
+ }
239
+ if (half === 0x7e00) {
240
+ return NaN
241
+ }
242
+ const exp = (half >> 10) & 0x1f
243
+ const mant = half & 0x3ff
244
+ let val
245
+ if (exp === 0) {
246
+ val = mant * (2 ** -24)
247
+ } else if (exp !== 31) {
248
+ val = (mant + 1024) * (2 ** (exp - 25))
249
+ /* c8 ignore next 4 */
250
+ } else {
251
+ // may not be possible to get here
252
+ val = mant === 0 ? Infinity : NaN
253
+ }
254
+ return (half & 0x8000) ? -val : val
255
+ }
256
+
257
+ /**
258
+ * @param {number} inp
259
+ */
260
+ function encodeFloat32 (inp) {
261
+ dataView.setFloat32(0, inp, false)
262
+ }
263
+
264
+ /**
265
+ * @param {Uint8Array} ui8a
266
+ * @param {number} pos
267
+ * @param {string} encodeErrPrefix
268
+ * @returns {number}
269
+ */
270
+ function readFloat32 (ui8a, pos, encodeErrPrefix) {
271
+ if (ui8a.length - pos < 4) {
272
+ throw new Error(`${encodeErrPrefix} not enough data for float32`)
273
+ }
274
+ const offset = (ui8a.byteOffset || 0) + pos
275
+ return new DataView(ui8a.buffer, offset, 4).getFloat32(0, false)
276
+ }
277
+
278
+ /**
279
+ * @param {number} inp
280
+ */
281
+ function encodeFloat64 (inp) {
282
+ dataView.setFloat64(0, inp, false)
283
+ }
284
+
285
+ /**
286
+ * @param {Uint8Array} ui8a
287
+ * @param {number} pos
288
+ * @param {string} encodeErrPrefix
289
+ * @returns {number}
290
+ */
291
+ function readFloat64 (ui8a, pos, encodeErrPrefix) {
292
+ if (ui8a.length - pos < 8) {
293
+ throw new Error(`${encodeErrPrefix} not enough data for float64`)
294
+ }
295
+ const offset = (ui8a.byteOffset || 0) + pos
296
+ return new DataView(ui8a.buffer, offset, 8).getFloat64(0, false)
297
+ }
298
+
299
+ /**
300
+ * @param {Token} _tok1
301
+ * @param {Token} _tok2
302
+ * @returns {number}
303
+ */
304
+ encodeFloat.compareTokens = encodeUint.compareTokens
305
+ /*
306
+ encodeFloat.compareTokens = function compareTokens (_tok1, _tok2) {
307
+ return _tok1
308
+ throw new Error(`${encodeErrPrefix} cannot use floats as map keys`)
309
+ }
310
+ */
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Bl is a list of byte chunks, similar to https://github.com/rvagg/bl but for
3
+ * writing rather than reading.
4
+ * A Bl object accepts set() operations for individual bytes and copyTo() for
5
+ * inserting byte arrays. These write operations don't automatically increment
6
+ * the internal cursor so its "length" won't be changed. Instead, increment()
7
+ * must be called to extend its length to cover the inserted data.
8
+ * The toBytes() call will convert all internal memory to a single Uint8Array of
9
+ * the correct length, truncating any data that is stored but hasn't been
10
+ * included by an increment().
11
+ * get() can retrieve a single byte.
12
+ * All operations (except toBytes()) take an "offset" argument that will perform
13
+ * the write at the offset _from the current cursor_. For most operations this
14
+ * will be `0` to write at the current cursor position but it can be ahead of
15
+ * the current cursor. Negative offsets probably work but are untested.
16
+ */
17
+
18
+ // TODO: ipjs doesn't support this, only for test files: https://github.com/mikeal/ipjs/blob/master/src/package/testFile.js#L39
19
+ import { alloc, concat, slice } from "@fireproof/vendor/cborg/utils"
20
+
21
+ // the ts-ignores in this file are almost all for the `Uint8Array|number[]` duality that exists
22
+ // for perf reasons. Consider better approaches to this or removing it entirely, it is quite
23
+ // risky because of some assumptions about small chunks === number[] and everything else === Uint8Array.
24
+
25
+ const defaultChunkSize = 256
26
+
27
+ export class Bl {
28
+ /**
29
+ * @param {number} [chunkSize]
30
+ */
31
+ constructor (chunkSize = defaultChunkSize) {
32
+ this.chunkSize = chunkSize
33
+ /** @type {number} */
34
+ this.cursor = 0
35
+ /** @type {number} */
36
+ this.maxCursor = -1
37
+ /** @type {(Uint8Array|number[])[]} */
38
+ this.chunks = []
39
+ // keep the first chunk around if we can to save allocations for future encodes
40
+ /** @type {Uint8Array|number[]|null} */
41
+ this._initReuseChunk = null
42
+ }
43
+
44
+ reset () {
45
+ this.cursor = 0
46
+ this.maxCursor = -1
47
+ if (this.chunks.length) {
48
+ this.chunks = []
49
+ }
50
+ if (this._initReuseChunk !== null) {
51
+ this.chunks.push(this._initReuseChunk)
52
+ this.maxCursor = this._initReuseChunk.length - 1
53
+ }
54
+ }
55
+
56
+ /**
57
+ * @param {Uint8Array|number[]} bytes
58
+ */
59
+ push (bytes) {
60
+ let topChunk = this.chunks[this.chunks.length - 1]
61
+ const newMax = this.cursor + bytes.length
62
+ if (newMax <= this.maxCursor + 1) {
63
+ // we have at least one chunk and we can fit these bytes into that chunk
64
+ const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1
65
+ // @ts-ignore
66
+ topChunk.set(bytes, chunkPos)
67
+ } else {
68
+ // can't fit it in
69
+ if (topChunk) {
70
+ // trip the last chunk to `cursor` if we need to
71
+ const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1
72
+ if (chunkPos < topChunk.length) {
73
+ // @ts-ignore
74
+ this.chunks[this.chunks.length - 1] = topChunk.subarray(0, chunkPos)
75
+ this.maxCursor = this.cursor - 1
76
+ }
77
+ }
78
+ if (bytes.length < 64 && bytes.length < this.chunkSize) {
79
+ // make a new chunk and copy the new one into it
80
+ topChunk = alloc(this.chunkSize)
81
+ this.chunks.push(topChunk)
82
+ this.maxCursor += topChunk.length
83
+ if (this._initReuseChunk === null) {
84
+ this._initReuseChunk = topChunk
85
+ }
86
+ // @ts-ignore
87
+ topChunk.set(bytes, 0)
88
+ } else {
89
+ // push the new bytes in as its own chunk
90
+ this.chunks.push(bytes)
91
+ this.maxCursor += bytes.length
92
+ }
93
+ }
94
+ this.cursor += bytes.length
95
+ }
96
+
97
+ /**
98
+ * @param {boolean} [reset]
99
+ * @returns {Uint8Array}
100
+ */
101
+ toBytes (reset = false) {
102
+ let byts
103
+ if (this.chunks.length === 1) {
104
+ const chunk = this.chunks[0]
105
+ if (reset && this.cursor > chunk.length / 2) {
106
+ /* c8 ignore next 2 */
107
+ // @ts-ignore
108
+ byts = this.cursor === chunk.length ? chunk : chunk.subarray(0, this.cursor)
109
+ this._initReuseChunk = null
110
+ this.chunks = []
111
+ } else {
112
+ // @ts-ignore
113
+ byts = slice(chunk, 0, this.cursor)
114
+ }
115
+ } else {
116
+ // @ts-ignore
117
+ byts = concat(this.chunks, this.cursor)
118
+ }
119
+ if (reset) {
120
+ this.reset()
121
+ }
122
+ return byts
123
+ }
124
+ }