@fireproof/vendor 1.0.4 → 1.1.0-dev

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 +4 -97
  2. package/src/@web3-storage/pail/dist/src/batch/index.d.ts +1 -53
  3. package/src/@web3-storage/pail/dist/src/batch/index.d.ts.map +1 -1
  4. package/src/@web3-storage/pail/dist/src/batch/shard.d.ts +1 -1
  5. package/src/@web3-storage/pail/dist/src/batch/shard.d.ts.map +1 -1
  6. package/src/@web3-storage/pail/dist/src/block.d.ts +2 -2
  7. package/src/@web3-storage/pail/dist/src/block.d.ts.map +1 -1
  8. package/src/@web3-storage/pail/dist/src/clock/index.d.ts +2 -2
  9. package/src/@web3-storage/pail/dist/src/clock/index.d.ts.map +1 -1
  10. package/src/@web3-storage/pail/dist/src/crdt/batch/index.d.ts.map +1 -1
  11. package/src/@web3-storage/pail/dist/src/crdt/index.d.ts +2 -2
  12. package/src/@web3-storage/pail/dist/src/crdt/index.d.ts.map +1 -1
  13. package/src/@web3-storage/pail/dist/src/diff.d.ts +3 -3
  14. package/src/@web3-storage/pail/dist/src/diff.d.ts.map +1 -1
  15. package/src/@web3-storage/pail/dist/src/index.d.ts +1 -1
  16. package/src/@web3-storage/pail/dist/src/index.d.ts.map +1 -1
  17. package/src/@web3-storage/pail/dist/src/merge.d.ts.map +1 -1
  18. package/src/@web3-storage/pail/dist/src/shard.d.ts +4 -4
  19. package/src/@web3-storage/pail/dist/src/shard.d.ts.map +1 -1
  20. package/src/@web3-storage/pail/dist/tsconfig.tsbuildinfo +1 -1
  21. package/src/@web3-storage/pail/src/api.ts +1 -1
  22. package/src/@web3-storage/pail/src/clock/index.js +1 -1
  23. package/src/@web3-storage/pail/src/shard.js +1 -1
  24. package/src/@ipld/car/LICENSE +0 -4
  25. package/src/@ipld/car/README.md +0 -1132
  26. package/src/@ipld/car/dist/index.min.js +0 -5
  27. package/src/@ipld/car/dist/src/api.d.ts +0 -72
  28. package/src/@ipld/car/dist/src/api.d.ts.map +0 -1
  29. package/src/@ipld/car/dist/src/buffer-decoder.d.ts +0 -67
  30. package/src/@ipld/car/dist/src/buffer-decoder.d.ts.map +0 -1
  31. package/src/@ipld/car/dist/src/buffer-reader-browser.d.ts +0 -116
  32. package/src/@ipld/car/dist/src/buffer-reader-browser.d.ts.map +0 -1
  33. package/src/@ipld/car/dist/src/buffer-reader.d.ts +0 -31
  34. package/src/@ipld/car/dist/src/buffer-reader.d.ts.map +0 -1
  35. package/src/@ipld/car/dist/src/buffer-writer.d.ts +0 -86
  36. package/src/@ipld/car/dist/src/buffer-writer.d.ts.map +0 -1
  37. package/src/@ipld/car/dist/src/coding.d.ts +0 -49
  38. package/src/@ipld/car/dist/src/coding.d.ts.map +0 -1
  39. package/src/@ipld/car/dist/src/decoder-common.d.ts +0 -43
  40. package/src/@ipld/car/dist/src/decoder-common.d.ts.map +0 -1
  41. package/src/@ipld/car/dist/src/decoder.d.ts +0 -87
  42. package/src/@ipld/car/dist/src/decoder.d.ts.map +0 -1
  43. package/src/@ipld/car/dist/src/encoder.d.ts +0 -17
  44. package/src/@ipld/car/dist/src/encoder.d.ts.map +0 -1
  45. package/src/@ipld/car/dist/src/header-validator.d.ts +0 -5
  46. package/src/@ipld/car/dist/src/header-validator.d.ts.map +0 -1
  47. package/src/@ipld/car/dist/src/index-browser.d.ts +0 -10
  48. package/src/@ipld/car/dist/src/index-browser.d.ts.map +0 -1
  49. package/src/@ipld/car/dist/src/index.d.ts +0 -11
  50. package/src/@ipld/car/dist/src/index.d.ts.map +0 -1
  51. package/src/@ipld/car/dist/src/indexed-reader-browser.d.ts +0 -5
  52. package/src/@ipld/car/dist/src/indexed-reader-browser.d.ts.map +0 -1
  53. package/src/@ipld/car/dist/src/indexed-reader.d.ts +0 -152
  54. package/src/@ipld/car/dist/src/indexed-reader.d.ts.map +0 -1
  55. package/src/@ipld/car/dist/src/indexer.d.ts +0 -95
  56. package/src/@ipld/car/dist/src/indexer.d.ts.map +0 -1
  57. package/src/@ipld/car/dist/src/iterator-channel.d.ts +0 -7
  58. package/src/@ipld/car/dist/src/iterator-channel.d.ts.map +0 -1
  59. package/src/@ipld/car/dist/src/iterator.d.ts +0 -174
  60. package/src/@ipld/car/dist/src/iterator.d.ts.map +0 -1
  61. package/src/@ipld/car/dist/src/promise-fs-opts.d.ts +0 -30
  62. package/src/@ipld/car/dist/src/promise-fs-opts.d.ts.map +0 -1
  63. package/src/@ipld/car/dist/src/reader-browser.d.ts +0 -151
  64. package/src/@ipld/car/dist/src/reader-browser.d.ts.map +0 -1
  65. package/src/@ipld/car/dist/src/reader.d.ts +0 -39
  66. package/src/@ipld/car/dist/src/reader.d.ts.map +0 -1
  67. package/src/@ipld/car/dist/src/writer-browser.d.ts +0 -155
  68. package/src/@ipld/car/dist/src/writer-browser.d.ts.map +0 -1
  69. package/src/@ipld/car/dist/src/writer.d.ts +0 -44
  70. package/src/@ipld/car/dist/src/writer.d.ts.map +0 -1
  71. package/src/@ipld/car/src/api.ts +0 -90
  72. package/src/@ipld/car/src/buffer-decoder.js +0 -213
  73. package/src/@ipld/car/src/buffer-reader-browser.js +0 -144
  74. package/src/@ipld/car/src/buffer-reader.js +0 -51
  75. package/src/@ipld/car/src/buffer-writer.js +0 -286
  76. package/src/@ipld/car/src/coding.ts +0 -68
  77. package/src/@ipld/car/src/decoder-common.js +0 -82
  78. package/src/@ipld/car/src/decoder.js +0 -347
  79. package/src/@ipld/car/src/encoder.js +0 -76
  80. package/src/@ipld/car/src/header-validator.js +0 -214
  81. package/src/@ipld/car/src/header.ipldsch +0 -18
  82. package/src/@ipld/car/src/index-browser.js +0 -18
  83. package/src/@ipld/car/src/index.js +0 -21
  84. package/src/@ipld/car/src/indexed-reader-browser.js +0 -7
  85. package/src/@ipld/car/src/indexed-reader.js +0 -211
  86. package/src/@ipld/car/src/indexer.js +0 -130
  87. package/src/@ipld/car/src/iterator-channel.js +0 -91
  88. package/src/@ipld/car/src/iterator.js +0 -267
  89. package/src/@ipld/car/src/promise-fs-opts.js +0 -42
  90. package/src/@ipld/car/src/reader-browser.js +0 -194
  91. package/src/@ipld/car/src/reader.js +0 -53
  92. package/src/@ipld/car/src/writer-browser.js +0 -250
  93. package/src/@ipld/car/src/writer.js +0 -80
  94. package/src/@ipld/dag-cbor/LICENSE +0 -4
  95. package/src/@ipld/dag-cbor/README.md +0 -80
  96. package/src/@ipld/dag-cbor/dist/index.min.js +0 -3
  97. package/src/@ipld/dag-cbor/dist/src/index.d.ts +0 -67
  98. package/src/@ipld/dag-cbor/dist/src/index.d.ts.map +0 -1
  99. package/src/@ipld/dag-cbor/src/index.js +0 -147
  100. package/src/@ipld/dag-json/LICENSE +0 -4
  101. package/src/@ipld/dag-json/README.md +0 -58
  102. package/src/@ipld/dag-json/dist/index.min.js +0 -3
  103. package/src/@ipld/dag-json/dist/src/index.d.ts +0 -12
  104. package/src/@ipld/dag-json/dist/src/index.d.ts.map +0 -1
  105. package/src/@ipld/dag-json/src/index.js +0 -291
  106. package/src/cborg/.github/dependabot.yml +0 -16
  107. package/src/cborg/.github/workflows/test-and-release.yml +0 -52
  108. package/src/cborg/CHANGELOG.md +0 -513
  109. package/src/cborg/LICENSE +0 -13
  110. package/src/cborg/README.md +0 -515
  111. package/src/cborg/bench/bench.js +0 -117
  112. package/src/cborg/bench/json.js +0 -124
  113. package/src/cborg/bench/package.json +0 -8
  114. package/src/cborg/cborg/bin.js +0 -189
  115. package/src/cborg/cborg/common.js +0 -28
  116. package/src/cborg/cborg/decode.js +0 -211
  117. package/src/cborg/cborg/diagnostic.js +0 -158
  118. package/src/cborg/cborg/diagnostic_test.js +0 -117
  119. package/src/cborg/cborg/encode.js +0 -466
  120. package/src/cborg/cborg/index.js +0 -33
  121. package/src/cborg/cborg/is.js +0 -106
  122. package/src/cborg/cborg/length.js +0 -62
  123. package/src/cborg/example-bytestrings.js +0 -180
  124. package/src/cborg/example-json.js +0 -6
  125. package/src/cborg/example.js +0 -5
  126. package/src/cborg/interface.ts +0 -59
  127. package/src/cborg/json/decode.js +0 -462
  128. package/src/cborg/json/encode.js +0 -302
  129. package/src/cborg/json/json.js +0 -4
  130. package/src/cborg/taglib.js +0 -75
  131. package/src/cborg/test/appendix_a.js +0 -647
  132. package/src/cborg/test/common.js +0 -18
  133. package/src/cborg/test/node-test-bin.js +0 -402
  134. package/src/cborg/test/noop-bin-test.js +0 -3
  135. package/src/cborg/test/test-0uint.js +0 -103
  136. package/src/cborg/test/test-1negint.js +0 -96
  137. package/src/cborg/test/test-2bytes.js +0 -198
  138. package/src/cborg/test/test-3string.js +0 -136
  139. package/src/cborg/test/test-4array.js +0 -93
  140. package/src/cborg/test/test-5map.js +0 -284
  141. package/src/cborg/test/test-6tag.js +0 -84
  142. package/src/cborg/test/test-7float.js +0 -131
  143. package/src/cborg/test/test-bl.js +0 -37
  144. package/src/cborg/test/test-cbor-vectors.js +0 -107
  145. package/src/cborg/test/test-decode-errors.js +0 -65
  146. package/src/cborg/test/test-fuzz.js +0 -42
  147. package/src/cborg/test/test-json.js +0 -219
  148. package/src/cborg/test/test-length.js +0 -65
  149. package/src/cborg/test/test-partial.js +0 -111
  150. package/src/cborg/tsconfig.json +0 -48
  151. package/src/cborg/types/cborg/decode.d.ts +0 -43
  152. package/src/cborg/types/cborg/decode.d.ts.map +0 -1
  153. package/src/cborg/types/cborg/encode.d.ts +0 -51
  154. package/src/cborg/types/cborg/encode.d.ts.map +0 -1
  155. package/src/cborg/types/cborg/index.d.ts +0 -26
  156. package/src/cborg/types/cborg/index.d.ts.map +0 -1
  157. package/src/cborg/types/cborg/is.d.ts +0 -6
  158. package/src/cborg/types/cborg/is.d.ts.map +0 -1
  159. package/src/cborg/types/example.d.ts +0 -2
  160. package/src/cborg/types/example.d.ts.map +0 -1
  161. package/src/cborg/types/interface.d.ts +0 -49
  162. package/src/cborg/types/interface.d.ts.map +0 -1
  163. package/src/cborg/types/json/decode.d.ts +0 -67
  164. package/src/cborg/types/json/decode.d.ts.map +0 -1
  165. package/src/cborg/types/json/encode.d.ts +0 -11
  166. package/src/cborg/types/json/encode.d.ts.map +0 -1
  167. package/src/cborg/types/json/json.d.ts +0 -6
  168. package/src/cborg/types/json/json.d.ts.map +0 -1
  169. package/src/cborg/types/taglib.d.ts +0 -18
  170. package/src/cborg/types/taglib.d.ts.map +0 -1
  171. package/src/cborg/types/tsconfig.tsbuildinfo +0 -1
  172. package/src/cborg/types/utils/0uint.d.ts +0 -102
  173. package/src/cborg/types/utils/0uint.d.ts.map +0 -1
  174. package/src/cborg/types/utils/1negint.d.ts +0 -59
  175. package/src/cborg/types/utils/1negint.d.ts.map +0 -1
  176. package/src/cborg/types/utils/2bytes.d.ts +0 -69
  177. package/src/cborg/types/utils/2bytes.d.ts.map +0 -1
  178. package/src/cborg/types/utils/3string.d.ts +0 -46
  179. package/src/cborg/types/utils/3string.d.ts.map +0 -1
  180. package/src/cborg/types/utils/4array.d.ts +0 -66
  181. package/src/cborg/types/utils/4array.d.ts.map +0 -1
  182. package/src/cborg/types/utils/5map.d.ts +0 -66
  183. package/src/cborg/types/utils/5map.d.ts.map +0 -1
  184. package/src/cborg/types/utils/6tag.d.ts +0 -62
  185. package/src/cborg/types/utils/6tag.d.ts.map +0 -1
  186. package/src/cborg/types/utils/7float.d.ts +0 -60
  187. package/src/cborg/types/utils/7float.d.ts.map +0 -1
  188. package/src/cborg/types/utils/bl.d.ts +0 -26
  189. package/src/cborg/types/utils/bl.d.ts.map +0 -1
  190. package/src/cborg/types/utils/byte-utils.d.ts +0 -53
  191. package/src/cborg/types/utils/byte-utils.d.ts.map +0 -1
  192. package/src/cborg/types/utils/common.d.ts +0 -8
  193. package/src/cborg/types/utils/common.d.ts.map +0 -1
  194. package/src/cborg/types/utils/index.d.ts +0 -13
  195. package/src/cborg/types/utils/index.d.ts.map +0 -1
  196. package/src/cborg/types/utils/jump.d.ts +0 -16
  197. package/src/cborg/types/utils/jump.d.ts.map +0 -1
  198. package/src/cborg/types/utils/token.d.ts +0 -59
  199. package/src/cborg/types/utils/token.d.ts.map +0 -1
  200. package/src/cborg/utils/0uint.js +0 -229
  201. package/src/cborg/utils/1negint.js +0 -111
  202. package/src/cborg/utils/2bytes.js +0 -135
  203. package/src/cborg/utils/3string.js +0 -90
  204. package/src/cborg/utils/4array.js +0 -114
  205. package/src/cborg/utils/5map.js +0 -113
  206. package/src/cborg/utils/6tag.js +0 -81
  207. package/src/cborg/utils/7float.js +0 -310
  208. package/src/cborg/utils/bl.js +0 -124
  209. package/src/cborg/utils/byte-utils.js +0 -417
  210. package/src/cborg/utils/common.js +0 -11
  211. package/src/cborg/utils/index.js +0 -12
  212. package/src/cborg/utils/jump.js +0 -222
  213. package/src/cborg/utils/token.js +0 -76
  214. package/src/ipfs-unixfs-exporter/LICENSE +0 -4
  215. package/src/ipfs-unixfs-exporter/README.md +0 -105
  216. package/src/ipfs-unixfs-exporter/dist/index.min.js +0 -3
  217. package/src/ipfs-unixfs-exporter/dist/src/errors.d.ts +0 -57
  218. package/src/ipfs-unixfs-exporter/dist/src/errors.d.ts.map +0 -1
  219. package/src/ipfs-unixfs-exporter/dist/src/errors.js +0 -73
  220. package/src/ipfs-unixfs-exporter/dist/src/errors.js.map +0 -1
  221. package/src/ipfs-unixfs-exporter/dist/src/index.d.ts +0 -355
  222. package/src/ipfs-unixfs-exporter/dist/src/index.d.ts.map +0 -1
  223. package/src/ipfs-unixfs-exporter/dist/src/index.js +0 -197
  224. package/src/ipfs-unixfs-exporter/dist/src/index.js.map +0 -1
  225. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-cbor.d.ts +0 -4
  226. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-cbor.d.ts.map +0 -1
  227. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-cbor.js +0 -9
  228. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-cbor.js.map +0 -1
  229. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-json.d.ts +0 -4
  230. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-json.d.ts.map +0 -1
  231. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-json.js +0 -9
  232. package/src/ipfs-unixfs-exporter/dist/src/resolvers/dag-json.js.map +0 -1
  233. package/src/ipfs-unixfs-exporter/dist/src/resolvers/identity.d.ts +0 -4
  234. package/src/ipfs-unixfs-exporter/dist/src/resolvers/identity.d.ts.map +0 -1
  235. package/src/ipfs-unixfs-exporter/dist/src/resolvers/identity.js +0 -38
  236. package/src/ipfs-unixfs-exporter/dist/src/resolvers/identity.js.map +0 -1
  237. package/src/ipfs-unixfs-exporter/dist/src/resolvers/index.d.ts +0 -4
  238. package/src/ipfs-unixfs-exporter/dist/src/resolvers/index.d.ts.map +0 -1
  239. package/src/ipfs-unixfs-exporter/dist/src/resolvers/index.js +0 -30
  240. package/src/ipfs-unixfs-exporter/dist/src/resolvers/index.js.map +0 -1
  241. package/src/ipfs-unixfs-exporter/dist/src/resolvers/json.d.ts +0 -4
  242. package/src/ipfs-unixfs-exporter/dist/src/resolvers/json.d.ts.map +0 -1
  243. package/src/ipfs-unixfs-exporter/dist/src/resolvers/json.js +0 -9
  244. package/src/ipfs-unixfs-exporter/dist/src/resolvers/json.js.map +0 -1
  245. package/src/ipfs-unixfs-exporter/dist/src/resolvers/raw.d.ts +0 -4
  246. package/src/ipfs-unixfs-exporter/dist/src/resolvers/raw.d.ts.map +0 -1
  247. package/src/ipfs-unixfs-exporter/dist/src/resolvers/raw.js +0 -37
  248. package/src/ipfs-unixfs-exporter/dist/src/resolvers/raw.js.map +0 -1
  249. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/directory.d.ts +0 -4
  250. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/directory.d.ts.map +0 -1
  251. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/directory.js +0 -29
  252. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/directory.js.map +0 -1
  253. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/file.d.ts +0 -4
  254. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/file.d.ts.map +0 -1
  255. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/file.js +0 -153
  256. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/file.js.map +0 -1
  257. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/hamt-sharded-directory.d.ts +0 -4
  258. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/hamt-sharded-directory.d.ts.map +0 -1
  259. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/hamt-sharded-directory.js +0 -59
  260. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/hamt-sharded-directory.js.map +0 -1
  261. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/raw.d.ts +0 -4
  262. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/raw.d.ts.map +0 -1
  263. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/raw.js +0 -25
  264. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/content/raw.js.map +0 -1
  265. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/index.d.ts +0 -4
  266. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/index.d.ts.map +0 -1
  267. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/index.js +0 -104
  268. package/src/ipfs-unixfs-exporter/dist/src/resolvers/unixfs-v1/index.js.map +0 -1
  269. package/src/ipfs-unixfs-exporter/dist/src/utils/extract-data-from-block.d.ts +0 -3
  270. package/src/ipfs-unixfs-exporter/dist/src/utils/extract-data-from-block.d.ts.map +0 -1
  271. package/src/ipfs-unixfs-exporter/dist/src/utils/extract-data-from-block.js +0 -20
  272. package/src/ipfs-unixfs-exporter/dist/src/utils/extract-data-from-block.js.map +0 -1
  273. package/src/ipfs-unixfs-exporter/dist/src/utils/find-cid-in-shard.d.ts +0 -6
  274. package/src/ipfs-unixfs-exporter/dist/src/utils/find-cid-in-shard.d.ts.map +0 -1
  275. package/src/ipfs-unixfs-exporter/dist/src/utils/find-cid-in-shard.js +0 -116
  276. package/src/ipfs-unixfs-exporter/dist/src/utils/find-cid-in-shard.js.map +0 -1
  277. package/src/ipfs-unixfs-exporter/dist/src/utils/resolve-object-path.d.ts +0 -4
  278. package/src/ipfs-unixfs-exporter/dist/src/utils/resolve-object-path.d.ts.map +0 -1
  279. package/src/ipfs-unixfs-exporter/dist/src/utils/resolve-object-path.js +0 -57
  280. package/src/ipfs-unixfs-exporter/dist/src/utils/resolve-object-path.js.map +0 -1
  281. package/src/ipfs-unixfs-exporter/dist/src/utils/validate-offset-and-length.d.ts +0 -6
  282. package/src/ipfs-unixfs-exporter/dist/src/utils/validate-offset-and-length.d.ts.map +0 -1
  283. package/src/ipfs-unixfs-exporter/dist/src/utils/validate-offset-and-length.js +0 -30
  284. package/src/ipfs-unixfs-exporter/dist/src/utils/validate-offset-and-length.js.map +0 -1
  285. package/src/ipfs-unixfs-exporter/dist/typedoc-urls.json +0 -58
  286. package/src/ipfs-unixfs-exporter/src/errors.ts +0 -87
  287. package/src/ipfs-unixfs-exporter/src/index.ts +0 -498
  288. package/src/ipfs-unixfs-exporter/src/resolvers/dag-cbor.ts +0 -12
  289. package/src/ipfs-unixfs-exporter/src/resolvers/dag-json.ts +0 -12
  290. package/src/ipfs-unixfs-exporter/src/resolvers/identity.ts +0 -49
  291. package/src/ipfs-unixfs-exporter/src/resolvers/index.ts +0 -35
  292. package/src/ipfs-unixfs-exporter/src/resolvers/json.ts +0 -12
  293. package/src/ipfs-unixfs-exporter/src/resolvers/raw.ts +0 -49
  294. package/src/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/directory.ts +0 -39
  295. package/src/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/file.ts +0 -198
  296. package/src/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/hamt-sharded-directory.ts +0 -76
  297. package/src/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/content/raw.ts +0 -37
  298. package/src/ipfs-unixfs-exporter/src/resolvers/unixfs-v1/index.ts +0 -121
  299. package/src/ipfs-unixfs-exporter/src/utils/extract-data-from-block.ts +0 -24
  300. package/src/ipfs-unixfs-exporter/src/utils/find-cid-in-shard.ts +0 -149
  301. package/src/ipfs-unixfs-exporter/src/utils/resolve-object-path.ts +0 -62
  302. package/src/ipfs-unixfs-exporter/src/utils/validate-offset-and-length.ts +0 -38
@@ -1,402 +0,0 @@
1
- /* eslint-env mocha */
2
-
3
- import * as chai from 'chai'
4
- import { exec } from 'child_process'
5
- import process from 'process'
6
- import path from 'path'
7
- import { platform } from 'os'
8
- import { fileURLToPath } from 'url'
9
-
10
- const { assert } = chai
11
-
12
- const fixture1JsonString = '{"a":1,"b":[2,3],"smile":"😀"}'
13
- const fixture1JsonPrettyString =
14
- `{
15
- "a": 1,
16
- "b": [
17
- 2,
18
- 3
19
- ],
20
- "smile": "😀"
21
- }
22
- `
23
- const fixture1HexString = 'a3616101616282020365736d696c6564f09f9880'
24
- const fixture1Bin = fromHex(fixture1HexString)
25
- const fixture1BinString = new TextDecoder().decode(fixture1Bin)
26
- const fixture1DiagnosticString =
27
- `a3 # map(3)
28
- 61 # string(1)
29
- 61 # "a"
30
- 01 # uint(1)
31
- 61 # string(1)
32
- 62 # "b"
33
- 82 # array(2)
34
- 02 # uint(2)
35
- 03 # uint(3)
36
- 65 # string(5)
37
- 736d696c65 # "smile"
38
- 64 # string(2)
39
- f09f9880 # "😀"
40
- `
41
- const fixture2HexString = 'a4616101616282020363627566440102036165736d696c6564f09f9880'
42
- const fixture2DiagnosticString =
43
- `a4 # map(4)
44
- 61 # string(1)
45
- 61 # "a"
46
- 01 # uint(1)
47
- 61 # string(1)
48
- 62 # "b"
49
- 82 # array(2)
50
- 02 # uint(2)
51
- 03 # uint(3)
52
- 63 # string(3)
53
- 627566 # "buf"
54
- 44 # bytes(4)
55
- 01020361 # "\\x01\\x02\\x03a"
56
- 65 # string(5)
57
- 736d696c65 # "smile"
58
- 64 # string(2)
59
- f09f9880 # "😀"
60
- `
61
-
62
- const binPath = path.join(path.dirname(fileURLToPath(import.meta.url)), '../lib/bin.js')
63
-
64
- function fromHex (hex) {
65
- return new Uint8Array(hex.split('')
66
- .map((/** @type {string} */ c, /** @type {number} */ i, /** @type {string[]} */ d) => i % 2 === 0 ? `0x${c}${d[i + 1]}` : '')
67
- .filter(Boolean)
68
- .map((/** @type {string} */ e) => parseInt(e, 16)))
69
- }
70
-
71
- async function execBin (cmd, stdin) {
72
- return new Promise((resolve, reject) => {
73
- const cp = exec(`"${process.execPath}" "${binPath}" ${cmd}`, (err, stdout, stderr) => {
74
- if (err) {
75
- err.stdout = stdout
76
- err.stderr = stderr
77
- return reject(err)
78
- }
79
- resolve({ stdout, stderr })
80
- })
81
- if (stdin != null) {
82
- cp.on('spawn', () => {
83
- cp.stdin.write(stdin)
84
- cp.stdin.end()
85
- })
86
- }
87
- })
88
- }
89
-
90
- describe('Bin', () => {
91
- it('usage', async () => {
92
- try {
93
- await execBin('')
94
- assert.fail('should have errored')
95
- } catch (e) {
96
- assert.strictEqual(e.stdout, '')
97
- assert.strictEqual(e.stderr,
98
- `Usage: cborg <command> <args>
99
- Valid commands:
100
- \tbin2diag [binary input]
101
- \tbin2hex [binary input]
102
- \tbin2json [--pretty] [binary input]
103
- \tdiag2bin [diagnostic input]
104
- \tdiag2hex [diagnostic input]
105
- \tdiag2json [--pretty] [diagnostic input]
106
- \thex2bin [hex input]
107
- \thex2diag [hex input]
108
- \thex2json [--pretty] [hex input]
109
- \tjson2bin '[json input]'
110
- \tjson2diag '[json input]'
111
- \tjson2hex '[json input]'
112
- Input may either be supplied as an argument or piped via stdin
113
- `)
114
- }
115
- })
116
-
117
- it('bad cmd', async () => {
118
- try {
119
- await execBin('blip')
120
- assert.fail('should have errored')
121
- } catch (e) {
122
- assert.strictEqual(e.stdout, '')
123
- assert.strictEqual(e.stderr,
124
- `Unknown command: 'blip'
125
- Usage: cborg <command> <args>
126
- Valid commands:
127
- \tbin2diag [binary input]
128
- \tbin2hex [binary input]
129
- \tbin2json [--pretty] [binary input]
130
- \tdiag2bin [diagnostic input]
131
- \tdiag2hex [diagnostic input]
132
- \tdiag2json [--pretty] [diagnostic input]
133
- \thex2bin [hex input]
134
- \thex2diag [hex input]
135
- \thex2json [--pretty] [hex input]
136
- \tjson2bin '[json input]'
137
- \tjson2diag '[json input]'
138
- \tjson2hex '[json input]'
139
- Input may either be supplied as an argument or piped via stdin
140
- `)
141
- }
142
- })
143
-
144
- it('help', async () => {
145
- const { stdout, stderr } = await execBin('help')
146
- assert.strictEqual(stdout, '')
147
- assert.strictEqual(stderr,
148
- `Usage: cborg <command> <args>
149
- Valid commands:
150
- \tbin2diag [binary input]
151
- \tbin2hex [binary input]
152
- \tbin2json [--pretty] [binary input]
153
- \tdiag2bin [diagnostic input]
154
- \tdiag2hex [diagnostic input]
155
- \tdiag2json [--pretty] [diagnostic input]
156
- \thex2bin [hex input]
157
- \thex2diag [hex input]
158
- \thex2json [--pretty] [hex input]
159
- \tjson2bin '[json input]'
160
- \tjson2diag '[json input]'
161
- \tjson2hex '[json input]'
162
- Input may either be supplied as an argument or piped via stdin
163
- `)
164
- })
165
-
166
- it('bin2diag (stdin)', async () => {
167
- const { stdout, stderr } = await execBin('bin2diag', fixture1Bin)
168
- assert.strictEqual(stderr, '')
169
- assert.strictEqual(stdout, fixture1DiagnosticString)
170
- })
171
-
172
- it('bin2hex (stdin)', async () => {
173
- const { stdout, stderr } = await execBin('bin2hex', fixture1Bin)
174
- assert.strictEqual(stderr, '')
175
- assert.strictEqual(stdout, `${fixture1HexString}\n`)
176
- })
177
-
178
- it('bin2json (stdin)', async () => {
179
- const { stdout, stderr } = await execBin('bin2json', fixture1Bin)
180
- assert.strictEqual(stderr, '')
181
- assert.strictEqual(stdout, `${fixture1JsonString}\n`)
182
- })
183
-
184
- it('bin2json pretty (stdin)', async () => {
185
- const { stdout, stderr } = await execBin('bin2json --pretty', fixture1Bin)
186
- assert.strictEqual(stderr, '')
187
- assert.strictEqual(stdout, fixture1JsonPrettyString)
188
- })
189
-
190
- for (const stdin of [true, false]) {
191
- if (platform() !== 'win32' || stdin) { // multiline CLI input is hard (impossible?) on Windows
192
- it(`diag2bin${stdin ? ' (stdin)' : ''}`, async () => {
193
- const { stdout, stderr } = !stdin
194
- ? await execBin(`diag2bin '${fixture1DiagnosticString}'`)
195
- : await execBin('diag2bin', fixture1DiagnosticString)
196
- assert.strictEqual(stderr, '')
197
- assert.strictEqual(stdout, fixture1BinString)
198
- })
199
-
200
- it(`diag2hex${stdin ? ' (stdin)' : ''}`, async () => {
201
- const { stdout, stderr } = !stdin
202
- ? await execBin(`diag2hex '${fixture1DiagnosticString}'`)
203
- : await execBin('diag2hex', fixture1DiagnosticString)
204
- assert.strictEqual(stderr, '')
205
- assert.strictEqual(stdout, `${fixture1HexString}\n`)
206
- })
207
-
208
- it(`diag2json${stdin ? ' (stdin)' : ''}`, async () => {
209
- const { stdout, stderr } = !stdin
210
- ? await execBin(`diag2json '${fixture1DiagnosticString}'`)
211
- : await execBin('diag2json', fixture1DiagnosticString)
212
- assert.strictEqual(stderr, '')
213
- assert.strictEqual(stdout, `${fixture1JsonString}\n`)
214
- })
215
-
216
- it(`diag2json pretty${stdin ? ' (stdin)' : ''}`, async () => {
217
- const { stdout, stderr } = !stdin
218
- ? await execBin(`diag2json --pretty '${fixture1DiagnosticString}'`)
219
- : await execBin('diag2json --pretty', fixture1DiagnosticString)
220
- assert.strictEqual(stderr, '')
221
- assert.strictEqual(stdout, fixture1JsonPrettyString)
222
- })
223
- }
224
-
225
- it(`hex2bin${stdin ? ' (stdin)' : ''}`, async () => {
226
- const { stdout, stderr } = !stdin
227
- ? await execBin(`hex2bin ${fixture1HexString}`)
228
- : await execBin('hex2bin', fixture1HexString)
229
- assert.strictEqual(stderr, '')
230
- assert.strictEqual(stdout, fixture1BinString)
231
- })
232
-
233
- it(`hex2diag${stdin ? ' (stdin)' : ''}`, async () => {
234
- const { stdout, stderr } = !stdin
235
- ? await execBin(`hex2diag ${fixture2HexString}`)
236
- : await execBin('hex2diag', fixture2HexString)
237
- assert.strictEqual(stderr, '')
238
- assert.strictEqual(stdout, fixture2DiagnosticString)
239
- })
240
-
241
- it(`hex2json${stdin ? ' (stdin)' : ''}`, async () => {
242
- const { stdout, stderr } = !stdin
243
- ? await execBin(`hex2json ${fixture1HexString}`)
244
- : await execBin('hex2json', fixture1HexString)
245
- assert.strictEqual(stderr, '')
246
- assert.strictEqual(stdout, `${fixture1JsonString}\n`)
247
- })
248
-
249
- it(`hex2json pretty${stdin ? ' (stdin)' : ''}`, async () => {
250
- const { stdout, stderr } = !stdin
251
- ? await execBin(`hex2json --pretty ${fixture1HexString}`)
252
- : await execBin('hex2json --pretty', fixture1HexString)
253
- assert.strictEqual(stderr, '')
254
- assert.strictEqual(stdout, fixture1JsonPrettyString)
255
- })
256
-
257
- it(`json2bin${stdin ? ' (stdin)' : ''}`, async () => {
258
- const { stdout, stderr } = !stdin
259
- ? await execBin('json2bin "{\\"a\\":1,\\"b\\":[2,3],\\"smile\\":\\"😀\\"}"')
260
- : await execBin('json2bin', fixture1JsonString)
261
- assert.strictEqual(stderr, '')
262
- assert.strictEqual(stdout, fixture1BinString)
263
- })
264
-
265
- it(`json2diag${stdin ? ' (stdin)' : ''}`, async () => {
266
- const { stdout, stderr } = !stdin
267
- ? await execBin('json2diag "{\\"a\\":1,\\"b\\":[2,3],\\"smile\\":\\"😀\\"}"')
268
- : await execBin('json2diag', fixture1JsonString)
269
- assert.strictEqual(stderr, '')
270
- assert.strictEqual(stdout, fixture1DiagnosticString)
271
- })
272
-
273
- it(`json2hex${stdin ? ' (stdin)' : ''}`, async () => {
274
- const { stdout, stderr } = !stdin
275
- ? await execBin(`json2hex "${fixture1JsonString.replace(/"/g, '\\"')}"`)
276
- : await execBin('json2hex', fixture1JsonString)
277
- assert.strictEqual(stderr, '')
278
- assert.strictEqual(stdout, `${fixture1HexString}\n`)
279
- })
280
- }
281
-
282
- // complicated nesting to test indenting algorithm
283
- it('diag indenting', async () => {
284
- const { stdout, stderr } = await execBin('json2diag', '{"a":[],"b":{},"c":{"a":1,"b":{"a":{"a":{}}}},"d":{"a":{"a":{"a":1},"b":2,"c":[]}},"e":[[[[{"a":{}}]]]],"f":1}')
285
- assert.strictEqual(stderr, '')
286
- assert.strictEqual(stdout,
287
- `a6 # map(6)
288
- 61 # string(1)
289
- 61 # "a"
290
- 80 # array(0)
291
- 61 # string(1)
292
- 62 # "b"
293
- a0 # map(0)
294
- 61 # string(1)
295
- 63 # "c"
296
- a2 # map(2)
297
- 61 # string(1)
298
- 61 # "a"
299
- 01 # uint(1)
300
- 61 # string(1)
301
- 62 # "b"
302
- a1 # map(1)
303
- 61 # string(1)
304
- 61 # "a"
305
- a1 # map(1)
306
- 61 # string(1)
307
- 61 # "a"
308
- a0 # map(0)
309
- 61 # string(1)
310
- 64 # "d"
311
- a1 # map(1)
312
- 61 # string(1)
313
- 61 # "a"
314
- a3 # map(3)
315
- 61 # string(1)
316
- 61 # "a"
317
- a1 # map(1)
318
- 61 # string(1)
319
- 61 # "a"
320
- 01 # uint(1)
321
- 61 # string(1)
322
- 62 # "b"
323
- 02 # uint(2)
324
- 61 # string(1)
325
- 63 # "c"
326
- 80 # array(0)
327
- 61 # string(1)
328
- 65 # "e"
329
- 81 # array(1)
330
- 81 # array(1)
331
- 81 # array(1)
332
- 81 # array(1)
333
- a1 # map(1)
334
- 61 # string(1)
335
- 61 # "a"
336
- a0 # map(0)
337
- 61 # string(1)
338
- 66 # "f"
339
- 01 # uint(1)
340
- `)
341
- })
342
-
343
- describe('diag length bytes', () => {
344
- it('compact', async () => {
345
- const { stdout, stderr } = await execBin('json2diag', '"aaaaaaaaaaaaaaaaaaaaaaa"')
346
- assert.strictEqual(stderr, '')
347
- assert.strictEqual(stdout,
348
- `77 # string(23)
349
- 6161616161616161616161616161616161616161616161 # "aaaaaaaaaaaaaaaaaaaaaaa"
350
- `)
351
- })
352
-
353
- it('1-byte', async () => {
354
- const { stdout, stderr } = await execBin('json2diag', '"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"')
355
- assert.strictEqual(stderr, '')
356
- assert.strictEqual(stdout,
357
- `78 23 # string(35)
358
- 6161616161616161616161616161616161616161616161 # "aaaaaaaaaaaaaaaaaaaaaaa"
359
- 616161616161616161616161 # "aaaaaaaaaaaa"
360
- `)
361
- })
362
-
363
- it('2-byte', async () => {
364
- const { stdout, stderr } = await execBin('json2diag', '"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"')
365
- assert.strictEqual(stderr, '')
366
- assert.strictEqual(stdout,
367
- `79 0100 # string(256)
368
- 6161616161616161616161616161616161616161616161 # "aaaaaaaaaaaaaaaaaaaaaaa"
369
- 6161616161616161616161616161616161616161616161 # "aaaaaaaaaaaaaaaaaaaaaaa"
370
- 6161616161616161616161616161616161616161616161 # "aaaaaaaaaaaaaaaaaaaaaaa"
371
- 6161616161616161616161616161616161616161616161 # "aaaaaaaaaaaaaaaaaaaaaaa"
372
- 6161616161616161616161616161616161616161616161 # "aaaaaaaaaaaaaaaaaaaaaaa"
373
- 6161616161616161616161616161616161616161616161 # "aaaaaaaaaaaaaaaaaaaaaaa"
374
- 6161616161616161616161616161616161616161616161 # "aaaaaaaaaaaaaaaaaaaaaaa"
375
- 6161616161616161616161616161616161616161616161 # "aaaaaaaaaaaaaaaaaaaaaaa"
376
- 6161616161616161616161616161616161616161616161 # "aaaaaaaaaaaaaaaaaaaaaaa"
377
- 6161616161616161616161616161616161616161616161 # "aaaaaaaaaaaaaaaaaaaaaaa"
378
- 6161616161616161616161616161616161616161616161 # "aaaaaaaaaaaaaaaaaaaaaaa"
379
- 616161 # "aaa"
380
- `)
381
- })
382
- })
383
-
384
- it('diag non-utf8 and non-printable ascii', async () => {
385
- const input = '7864f55ff8f12508b63ef2bfeca7557ae90df6311a5ec1631b4a1fa843310bd9c3a710eaace5a1bdd72ad0bfe049771c11e756338bd93865e645f1adec9b9c99ef407fbd4fc6859e7904c5ad7dc9bd10a5cc16973d5b28ec1a6dd43d9f82f9f18c3d03418e35'
386
- let { stdout, stderr } = await execBin(`hex2diag ${input}`)
387
- assert.strictEqual(stderr, '')
388
- assert.strictEqual(stdout,
389
- `78 64 # string(86)
390
- f55ff8f12508b63ef2bfeca7557ae90df6311a5ec1631b # "õ_øñ%\\x08¶>ò¿ì§Uzé\\x0dö1\\x1a^Ác\\x1b"
391
- 4a1fa843310bd9c3a710eaace5a1bdd72ad0bfe049771c # "J\\x1f¨C1\\x0bÙç\\x10ê¬å¡½×*пàIw\\x1c"
392
- 11e756338bd93865e645f1adec9b9c99ef407fbd4fc685 # "\\x11çV3\\x8bÙ8eæEñ\\xadì\\x9b\\x9c\\x99ï@\\x7f½OÆ\\x85"
393
- 9e7904c5ad7dc9bd10a5cc16973d5b28ec1a6dd43d9f82 # "\\x9ey\\x04Å\\xad}ɽ\\x10¥Ì\\x16\\x97=[(ì\\x1amÔ=\\x9f\\x82"
394
- f9f18c3d03418e35 # "ùñ\\x8c=\\x03A\\x8e5"
395
- `)
396
-
397
- // round-trip
398
- ;({ stdout, stderr } = await execBin('diag2hex', stdout))
399
- assert.strictEqual(stderr, '')
400
- assert.strictEqual(stdout, `${input}\n`)
401
- })
402
- })
@@ -1,3 +0,0 @@
1
- // file included so ipjs will compile ../lib/bin.js
2
- // this test file is not intended to be run or loaded
3
- import bin from "@fireproof/vendor/cborg" // eslint-disable-line
@@ -1,103 +0,0 @@
1
- /* eslint-env mocha */
2
-
3
- import * as chai from 'chai'
4
-
5
- import { decode, encode } from "@fireproof/vendor/cborg"
6
- import { fromHex, toHex } from "@fireproof/vendor/cborg/utils"
7
-
8
- const { assert } = chai
9
-
10
- // some from https://github.com/PJK/libcbor
11
-
12
- const fixtures = [
13
- { data: '00', expected: 0, type: 'uint8' },
14
- { data: '02', expected: 2, type: 'uint8' },
15
- { data: '18ff', expected: 255, type: 'uint8' },
16
- { data: '1901f4', expected: 500, type: 'uint16' },
17
- { data: '1900ff', expected: 255, type: 'uint16', strict: false },
18
- { data: '19ffff', expected: 65535, type: 'uint16' },
19
- { data: '1a000000ff', expected: 255, type: 'uint32', strict: false },
20
- { data: '1a00010000', expected: 65536, type: 'uint32' },
21
- { data: '1a000f4240', expected: 1000000, type: 'uint32' },
22
- { data: '1aa5f702b3', expected: 2784428723, type: 'uint32' },
23
- { data: '1b00000000000000ff', expected: 255, type: 'uint64', strict: false },
24
- { data: '1b0016db6db6db6db7', expected: Number.MAX_SAFE_INTEGER / 1.4, type: 'uint64' },
25
- { data: '1b001fffffffffffff', expected: Number.MAX_SAFE_INTEGER, type: 'uint64' },
26
- { data: '1ba5f702b3a5f702b3', expected: BigInt('11959030306112471731'), type: 'uint64' },
27
- { data: '1bffffffffffffffff', expected: BigInt('18446744073709551615'), type: 'uint64' }
28
- ]
29
-
30
- describe('uint', () => {
31
- describe('decode', () => {
32
- for (const fixture of fixtures) {
33
- const data = fromHex(fixture.data)
34
- it(`should decode ${fixture.type}=${fixture.expected}`, () => {
35
- assert.ok(decode(data) === fixture.expected, `decode ${fixture.type} ${decode(data)} != ${fixture.expected}`)
36
- if (fixture.strict === false) {
37
- assert.throws(() => decode(data, { strict: true }), Error, 'CBOR decode error: integer encoded in more bytes than necessary (strict decode)')
38
- } else {
39
- assert.ok(decode(data, { strict: true }) === fixture.expected, `decode ${fixture.type}`)
40
- }
41
- })
42
- }
43
- })
44
-
45
- it('should throw error', () => {
46
- // minor number 28, too high for uint
47
- assert.throws(() => decode(fromHex('1ca5f702b3a5f702b3')), Error, 'CBOR decode error: encountered invalid minor (28) for major 0')
48
- assert.throws(() => decode(fromHex('1ba5f702b3a5f702')), Error, 'CBOR decode error: not enough data for type')
49
- })
50
-
51
- describe('encode', () => {
52
- for (const fixture of fixtures) {
53
- it(`should encode ${fixture.type}=${fixture.expected}`, () => {
54
- if (fixture.strict === false) {
55
- assert.notStrictEqual(toHex(encode(fixture.expected)), fixture.data, `encode ${fixture.type} !strict`)
56
- } else {
57
- assert.strictEqual(toHex(encode(fixture.expected)), fixture.data, `encode ${fixture.type}`)
58
- }
59
- })
60
- }
61
- })
62
-
63
- // mostly unnecessary, but feels good
64
- describe('roundtrip', () => {
65
- for (const fixture of fixtures) {
66
- if (fixture.strict !== false) {
67
- it(`should roundtrip ${fixture.type}=${fixture.expected}`, () => {
68
- assert.ok(decode(encode(fixture.expected)) === fixture.expected, `roundtrip ${fixture.type}`)
69
- })
70
- }
71
- }
72
- })
73
-
74
- describe('toobig', () => {
75
- it('bigger than 64-bit', () => {
76
- // boundary condition is right on 64-bit int
77
- assert.doesNotThrow(() => encode(BigInt('18446744073709551615') /* BigInt(2) ** BigInt(64) - BigInt(1) */))
78
- assert.throws(() => encode(BigInt('18446744073709551616') /* BigInt(2) ** BigInt(64) */), /BigInt larger than allowable range/)
79
- })
80
-
81
- it('disallow BigInt', () => {
82
- for (const fixture of fixtures) {
83
- const data = fromHex(fixture.data)
84
- if (!Number.isSafeInteger(fixture.expected)) {
85
- assert.throws(() => decode(data, { allowBigInt: false }), /safe integer range/)
86
- } else {
87
- assert.ok(decode(data, { allowBigInt: false }) === fixture.expected, `decode ${fixture.type}`)
88
- }
89
- }
90
- })
91
- })
92
-
93
- describe('toosmall', () => {
94
- for (const fixture of fixtures) {
95
- if (fixture.strict !== false && typeof fixture.expected === 'number') {
96
- const small = BigInt(fixture.expected)
97
- it(`should encode ${small}n`, () => {
98
- assert.strictEqual(toHex(encode(BigInt(small))), fixture.data, `encode ${small}`)
99
- })
100
- }
101
- }
102
- })
103
- })
@@ -1,96 +0,0 @@
1
- /* eslint-env mocha */
2
-
3
- import * as chai from 'chai'
4
-
5
- import { decode, encode } from "@fireproof/vendor/cborg"
6
- import { fromHex, toHex } from "@fireproof/vendor/cborg/utils"
7
-
8
- const { assert } = chai
9
-
10
- // some from https://github.com/PJK/libcbor
11
-
12
- const fixtures = [
13
- { data: '20', expected: -1, type: 'negint8' },
14
- { data: '22', expected: -3, type: 'negint8' },
15
- { data: '3863', expected: -100, type: 'negint8' },
16
- { data: '38ff', expected: -256, type: 'negint8' },
17
- { data: '3900ff', expected: -256, type: 'negint16', strict: false },
18
- { data: '3901f4', expected: -501, type: 'negint16' },
19
- { data: '3a000000ff', expected: -256, type: 'negint32', strict: false },
20
- { data: '3aa5f702b3', expected: -2784428724, type: 'negint32' },
21
- { data: '3b00000000000000ff', expected: -256, type: 'negint32', strict: false },
22
- { data: '3b0016db6db6db6db7', expected: Number.MIN_SAFE_INTEGER / 1.4 - 1, type: 'negint64' },
23
- { data: '3b001ffffffffffffe', expected: Number.MIN_SAFE_INTEGER, type: 'negint64' },
24
- // kind of hard to assert on these (TODO: improve bignum handling)
25
- { data: '3b001fffffffffffff', expected: BigInt('-9007199254740992') /* Number.MIN_SAFE_INTEGER - 1 */, type: 'negint64' },
26
- { data: '3b0020000000000000', expected: BigInt('-9007199254740993') /* Number.MIN_SAFE_INTEGER - 2 */, type: 'negint64' },
27
- { data: '3ba5f702b3a5f702b3', expected: BigInt('-11959030306112471732'), type: 'negint64' },
28
- { data: '3bffffffffffffffff', expected: BigInt('-18446744073709551616'), type: 'negint64' }
29
- ]
30
-
31
- describe('negint', () => {
32
- describe('decode', () => {
33
- for (const fixture of fixtures) {
34
- const data = fromHex(fixture.data)
35
- it(`should decode ${fixture.type}=${fixture.expected}`, () => {
36
- assert.ok(decode(data) === fixture.expected, `decode ${fixture.type} (${decode(data)} != ${fixture.expected})`)
37
- if (fixture.strict === false) {
38
- assert.throws(() => decode(data, { strict: true }), Error, 'CBOR decode error: integer encoded in more bytes than necessary (strict decode)')
39
- } else {
40
- assert.strictEqual(decode(data, { strict: true }), fixture.expected, `decode ${fixture.type}`)
41
- }
42
- })
43
- }
44
- })
45
-
46
- describe('encode', () => {
47
- for (const fixture of fixtures) {
48
- it(`should encode ${fixture.type}=${fixture.expected}`, () => {
49
- if (fixture.strict === false) {
50
- assert.notStrictEqual(toHex(encode(fixture.expected)), fixture.data, `encode ${fixture.type} !strict`)
51
- } else {
52
- assert.strictEqual(toHex(encode(fixture.expected)), fixture.data, `encode ${fixture.type}`)
53
- }
54
- })
55
- }
56
- })
57
-
58
- // mostly unnecessary, but feels good
59
- describe('roundtrip', () => {
60
- for (const fixture of fixtures) {
61
- it(`should roundtrip ${fixture.type}=${fixture.expected}`, () => {
62
- assert.ok(decode(encode(fixture.expected)) === fixture.expected, `roundtrip ${fixture.type}`)
63
- })
64
- }
65
- })
66
-
67
- describe('toobig', () => {
68
- it('bigger than 64-bit', () => {
69
- // boundary condition is right below 64-bit negint
70
- assert.doesNotThrow(() => encode(BigInt('-18446744073709551616') /* BigInt(-1) * BigInt(2) ** BigInt(64) */))
71
- assert.throws(() => encode(BigInt('-18446744073709551617') /* BigInt(-1) * BigInt(2) ** BigInt(64) - BigInt(1) */), /BigInt larger than allowable range/)
72
- })
73
-
74
- it('disallow BigInt', () => {
75
- for (const fixture of fixtures) {
76
- const data = fromHex(fixture.data)
77
- if (!Number.isSafeInteger(fixture.expected)) {
78
- assert.throws(() => decode(data, { allowBigInt: false }), /safe integer range/)
79
- } else {
80
- assert.ok(decode(data, { allowBigInt: false }) === fixture.expected, `decode ${fixture.type}`)
81
- }
82
- }
83
- })
84
- })
85
-
86
- describe('toosmall', () => {
87
- for (const fixture of fixtures) {
88
- if (fixture.strict !== false && typeof fixture.expected === 'number') {
89
- const small = BigInt(fixture.expected)
90
- it(`should encode ${small}n`, () => {
91
- assert.strictEqual(toHex(encode(BigInt(small))), fixture.data, `encode ${small}`)
92
- })
93
- }
94
- }
95
- })
96
- })