@ipld/car 4.1.5 → 5.0.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 (226) hide show
  1. package/LICENSE +4 -0
  2. package/README.md +12 -4
  3. package/dist/index.min.js +5 -0
  4. package/{types → dist/src}/api.d.ts +19 -19
  5. package/dist/src/api.d.ts.map +1 -0
  6. package/{types/lib → dist/src}/buffer-writer.d.ts +10 -10
  7. package/{types/lib → dist/src}/buffer-writer.d.ts.map +1 -1
  8. package/dist/src/coding.d.ts +41 -0
  9. package/dist/src/coding.d.ts.map +1 -0
  10. package/{types/lib → dist/src}/decoder.d.ts +3 -3
  11. package/{types/lib → dist/src}/decoder.d.ts.map +1 -1
  12. package/{types/lib → dist/src}/encoder.d.ts +2 -2
  13. package/{types/lib → dist/src}/encoder.d.ts.map +1 -1
  14. package/{types/lib → dist/src}/header-validator.d.ts +0 -0
  15. package/dist/src/header-validator.d.ts.map +1 -0
  16. package/dist/src/index-browser.d.ts +8 -0
  17. package/dist/src/index-browser.d.ts.map +1 -0
  18. package/dist/src/index.d.ts +9 -0
  19. package/dist/src/index.d.ts.map +1 -0
  20. package/{types/lib → dist/src}/indexed-reader-browser.d.ts +0 -0
  21. package/dist/src/indexed-reader-browser.d.ts.map +1 -0
  22. package/{types/lib → dist/src}/indexed-reader.d.ts +13 -13
  23. package/dist/src/indexed-reader.d.ts.map +1 -0
  24. package/{types/lib → dist/src}/indexer.d.ts +9 -9
  25. package/{types/lib → dist/src}/indexer.d.ts.map +1 -1
  26. package/{types/lib → dist/src}/iterator-channel.d.ts +0 -0
  27. package/{types/lib → dist/src}/iterator-channel.d.ts.map +1 -1
  28. package/{types/lib → dist/src}/iterator.d.ts +8 -8
  29. package/{types/lib → dist/src}/iterator.d.ts.map +1 -1
  30. package/{types/lib → dist/src}/reader-browser.d.ts +10 -10
  31. package/{types/lib → dist/src}/reader-browser.d.ts.map +1 -1
  32. package/{types/lib → dist/src}/reader.d.ts +5 -5
  33. package/{types/lib → dist/src}/reader.d.ts.map +1 -1
  34. package/{types/lib → dist/src}/writer-browser.d.ts +10 -10
  35. package/{types/lib → dist/src}/writer-browser.d.ts.map +1 -1
  36. package/{types/lib → dist/src}/writer.d.ts +4 -4
  37. package/{types/lib → dist/src}/writer.d.ts.map +1 -1
  38. package/package.json +102 -209
  39. package/{api.ts → src/api.ts} +14 -14
  40. package/{lib → src}/buffer-writer.js +5 -5
  41. package/src/coding.ts +56 -0
  42. package/{lib → src}/decoder.js +4 -4
  43. package/{lib → src}/encoder.js +1 -1
  44. package/src/header-validator.js +74 -0
  45. package/{lib → src}/header.ipldsch +0 -0
  46. package/src/index-browser.js +14 -0
  47. package/src/index.js +16 -0
  48. package/{lib → src}/indexed-reader-browser.js +0 -0
  49. package/{lib → src}/indexed-reader.js +9 -9
  50. package/{lib → src}/indexer.js +4 -4
  51. package/{lib → src}/iterator-channel.js +0 -0
  52. package/{lib → src}/iterator.js +4 -4
  53. package/{lib → src}/reader-browser.js +7 -7
  54. package/{lib → src}/reader.js +5 -5
  55. package/{lib → src}/writer-browser.js +7 -7
  56. package/{lib → src}/writer.js +3 -3
  57. package/LICENSE-APACHE +0 -13
  58. package/LICENSE-MIT +0 -7
  59. package/buffer-writer +0 -1
  60. package/car-browser.js +0 -14
  61. package/car.js +0 -16
  62. package/cjs/browser-test/common.js +0 -301
  63. package/cjs/browser-test/node-test-file-streams.js +0 -71
  64. package/cjs/browser-test/node-test-indexed-reader.js +0 -51
  65. package/cjs/browser-test/node-test-large.js +0 -135
  66. package/cjs/browser-test/node-test-raw.js +0 -68
  67. package/cjs/browser-test/node-test-updateroots.js +0 -78
  68. package/cjs/browser-test/test-buffer-writer.js +0 -330
  69. package/cjs/browser-test/test-errors.js +0 -90
  70. package/cjs/browser-test/test-indexer.js +0 -80
  71. package/cjs/browser-test/test-interface.js +0 -21
  72. package/cjs/browser-test/test-iterator.js +0 -83
  73. package/cjs/browser-test/test-reader.js +0 -278
  74. package/cjs/browser-test/test-writer.js +0 -286
  75. package/cjs/browser-test/verify-store-reader.js +0 -142
  76. package/cjs/car-browser.js +0 -18
  77. package/cjs/car.js +0 -20
  78. package/cjs/lib/buffer-writer.js +0 -164
  79. package/cjs/lib/decoder.js +0 -301
  80. package/cjs/lib/encoder.js +0 -44
  81. package/cjs/lib/header-validator.js +0 -29
  82. package/cjs/lib/indexed-reader-browser.js +0 -13
  83. package/cjs/lib/indexed-reader.js +0 -90
  84. package/cjs/lib/indexer.js +0 -41
  85. package/cjs/lib/iterator-channel.js +0 -77
  86. package/cjs/lib/iterator.js +0 -97
  87. package/cjs/lib/reader-browser.js +0 -62
  88. package/cjs/lib/reader.js +0 -38
  89. package/cjs/lib/writer-browser.js +0 -118
  90. package/cjs/lib/writer.js +0 -51
  91. package/cjs/node-test/common.js +0 -301
  92. package/cjs/node-test/node-test-file-streams.js +0 -71
  93. package/cjs/node-test/node-test-indexed-reader.js +0 -51
  94. package/cjs/node-test/node-test-large.js +0 -135
  95. package/cjs/node-test/node-test-raw.js +0 -68
  96. package/cjs/node-test/node-test-updateroots.js +0 -78
  97. package/cjs/node-test/test-buffer-writer.js +0 -330
  98. package/cjs/node-test/test-errors.js +0 -90
  99. package/cjs/node-test/test-indexer.js +0 -80
  100. package/cjs/node-test/test-interface.js +0 -21
  101. package/cjs/node-test/test-iterator.js +0 -83
  102. package/cjs/node-test/test-reader.js +0 -278
  103. package/cjs/node-test/test-writer.js +0 -286
  104. package/cjs/node-test/verify-store-reader.js +0 -142
  105. package/decoder +0 -1
  106. package/esm/browser-test/common.js +0 -274
  107. package/esm/browser-test/node-test-file-streams.js +0 -76
  108. package/esm/browser-test/node-test-indexed-reader.js +0 -53
  109. package/esm/browser-test/node-test-large.js +0 -109
  110. package/esm/browser-test/node-test-raw.js +0 -63
  111. package/esm/browser-test/node-test-updateroots.js +0 -76
  112. package/esm/browser-test/test-buffer-writer.js +0 -311
  113. package/esm/browser-test/test-errors.js +0 -91
  114. package/esm/browser-test/test-indexer.js +0 -85
  115. package/esm/browser-test/test-interface.js +0 -24
  116. package/esm/browser-test/test-iterator.js +0 -91
  117. package/esm/browser-test/test-reader.js +0 -270
  118. package/esm/browser-test/test-writer.js +0 -297
  119. package/esm/browser-test/verify-store-reader.js +0 -122
  120. package/esm/car-browser.js +0 -16
  121. package/esm/car.js +0 -18
  122. package/esm/lib/buffer-writer.js +0 -129
  123. package/esm/lib/decoder.js +0 -265
  124. package/esm/lib/encoder.js +0 -35
  125. package/esm/lib/header-validator.js +0 -23
  126. package/esm/lib/indexed-reader-browser.js +0 -6
  127. package/esm/lib/indexed-reader.js +0 -78
  128. package/esm/lib/indexer.js +0 -38
  129. package/esm/lib/iterator-channel.js +0 -71
  130. package/esm/lib/iterator.js +0 -92
  131. package/esm/lib/reader-browser.js +0 -57
  132. package/esm/lib/reader.js +0 -26
  133. package/esm/lib/writer-browser.js +0 -115
  134. package/esm/lib/writer.js +0 -42
  135. package/esm/node-test/common.js +0 -274
  136. package/esm/node-test/node-test-file-streams.js +0 -76
  137. package/esm/node-test/node-test-indexed-reader.js +0 -53
  138. package/esm/node-test/node-test-large.js +0 -109
  139. package/esm/node-test/node-test-raw.js +0 -63
  140. package/esm/node-test/node-test-updateroots.js +0 -76
  141. package/esm/node-test/test-buffer-writer.js +0 -311
  142. package/esm/node-test/test-errors.js +0 -91
  143. package/esm/node-test/test-indexer.js +0 -85
  144. package/esm/node-test/test-interface.js +0 -24
  145. package/esm/node-test/test-iterator.js +0 -91
  146. package/esm/node-test/test-reader.js +0 -270
  147. package/esm/node-test/test-writer.js +0 -297
  148. package/esm/node-test/verify-store-reader.js +0 -122
  149. package/esm/package.json +0 -9
  150. package/examples/car-to-fixture.js +0 -66
  151. package/examples/dump-car.js +0 -58
  152. package/examples/dump-index.js +0 -24
  153. package/examples/package.json +0 -27
  154. package/examples/round-trip.js +0 -45
  155. package/examples/test-examples.js +0 -115
  156. package/examples/verify-car.js +0 -87
  157. package/index.js +0 -1
  158. package/indexed-reader +0 -1
  159. package/indexer +0 -1
  160. package/iterator +0 -1
  161. package/lib/coding.ts +0 -56
  162. package/lib/header-validator.js +0 -33
  163. package/reader +0 -1
  164. package/test/_fixtures_to_js.mjs +0 -24
  165. package/test/common.js +0 -210
  166. package/test/go.car +0 -0
  167. package/test/go.carv2 +0 -0
  168. package/test/node-test-file-streams.js +0 -84
  169. package/test/node-test-indexed-reader.js +0 -45
  170. package/test/node-test-large.js +0 -112
  171. package/test/node-test-raw.js +0 -83
  172. package/test/node-test-updateroots.js +0 -89
  173. package/test/test-buffer-writer.js +0 -256
  174. package/test/test-errors.js +0 -98
  175. package/test/test-indexer.js +0 -87
  176. package/test/test-interface.js +0 -24
  177. package/test/test-iterator.js +0 -74
  178. package/test/test-reader.js +0 -245
  179. package/test/test-writer.js +0 -336
  180. package/test/verify-store-reader.js +0 -191
  181. package/tsconfig.json +0 -48
  182. package/types/api.d.ts.map +0 -1
  183. package/types/car-browser.d.ts +0 -8
  184. package/types/car-browser.d.ts.map +0 -1
  185. package/types/car.d.ts +0 -9
  186. package/types/car.d.ts.map +0 -1
  187. package/types/lib/coding.d.ts +0 -41
  188. package/types/lib/coding.d.ts.map +0 -1
  189. package/types/lib/header-validator.d.ts.map +0 -1
  190. package/types/lib/indexed-reader-browser.d.ts.map +0 -1
  191. package/types/lib/indexed-reader.d.ts.map +0 -1
  192. package/types/test/_fixtures_to_js.d.mts +0 -3
  193. package/types/test/_fixtures_to_js.d.mts.map +0 -1
  194. package/types/test/common.d.ts +0 -73
  195. package/types/test/common.d.ts.map +0 -1
  196. package/types/test/fixtures-expectations.d.ts +0 -63
  197. package/types/test/fixtures-expectations.d.ts.map +0 -1
  198. package/types/test/fixtures.d.ts +0 -3
  199. package/types/test/fixtures.d.ts.map +0 -1
  200. package/types/test/node-test-file-streams.d.ts +0 -3
  201. package/types/test/node-test-file-streams.d.ts.map +0 -1
  202. package/types/test/node-test-indexed-reader.d.ts +0 -2
  203. package/types/test/node-test-indexed-reader.d.ts.map +0 -1
  204. package/types/test/node-test-large.d.ts +0 -2
  205. package/types/test/node-test-large.d.ts.map +0 -1
  206. package/types/test/node-test-raw.d.ts +0 -2
  207. package/types/test/node-test-raw.d.ts.map +0 -1
  208. package/types/test/node-test-updateroots.d.ts +0 -2
  209. package/types/test/node-test-updateroots.d.ts.map +0 -1
  210. package/types/test/test-buffer-writer.d.ts +0 -2
  211. package/types/test/test-buffer-writer.d.ts.map +0 -1
  212. package/types/test/test-errors.d.ts +0 -2
  213. package/types/test/test-errors.d.ts.map +0 -1
  214. package/types/test/test-indexer.d.ts +0 -2
  215. package/types/test/test-indexer.d.ts.map +0 -1
  216. package/types/test/test-interface.d.ts +0 -2
  217. package/types/test/test-interface.d.ts.map +0 -1
  218. package/types/test/test-iterator.d.ts +0 -2
  219. package/types/test/test-iterator.d.ts.map +0 -1
  220. package/types/test/test-reader.d.ts +0 -2
  221. package/types/test/test-reader.d.ts.map +0 -1
  222. package/types/test/test-writer.d.ts +0 -2
  223. package/types/test/test-writer.d.ts.map +0 -1
  224. package/types/test/verify-store-reader.d.ts +0 -29
  225. package/types/test/verify-store-reader.d.ts.map +0 -1
  226. package/writer +0 -1
@@ -1,301 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var multiformats = require('multiformats');
6
- var sha2 = require('multiformats/hashes/sha2');
7
- var raw = require('multiformats/codecs/raw');
8
- var CBOR = require('@ipld/dag-cbor');
9
- var dagPb = require('@ipld/dag-pb');
10
- var chai = require('chai');
11
- var chaiAsPromised = require('chai-as-promised');
12
-
13
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
-
15
- function _interopNamespace(e) {
16
- if (e && e.__esModule) return e;
17
- var n = Object.create(null);
18
- if (e) {
19
- Object.keys(e).forEach(function (k) {
20
- if (k !== 'default') {
21
- var d = Object.getOwnPropertyDescriptor(e, k);
22
- Object.defineProperty(n, k, d.get ? d : {
23
- enumerable: true,
24
- get: function () { return e[k]; }
25
- });
26
- }
27
- });
28
- }
29
- n["default"] = e;
30
- return Object.freeze(n);
31
- }
32
-
33
- var raw__namespace = /*#__PURE__*/_interopNamespace(raw);
34
- var CBOR__namespace = /*#__PURE__*/_interopNamespace(CBOR);
35
- var dagPb__namespace = /*#__PURE__*/_interopNamespace(dagPb);
36
- var chai__default = /*#__PURE__*/_interopDefaultLegacy(chai);
37
- var chaiAsPromised__default = /*#__PURE__*/_interopDefaultLegacy(chaiAsPromised);
38
-
39
- class TestBlock {
40
- constructor(bytes, cid, object) {
41
- this.bytes = bytes;
42
- this.cid = cid;
43
- this.object = object;
44
- }
45
- }
46
- chai__default["default"].use(chaiAsPromised__default["default"]);
47
- const {assert} = chai__default["default"];
48
- let rawBlocks;
49
- const pbBlocks = [];
50
- const cborBlocks = [];
51
- let allBlocks;
52
- let allBlocksFlattened;
53
- const rndCid = multiformats.CID.parse('bafyreihyrpefhacm6kkp4ql6j6udakdit7g3dmkzfriqfykhjw6cad5lrm');
54
- async function toBlock(object, codec, version = 1) {
55
- const bytes = codec.encode(object);
56
- const hash = await sha2.sha256.digest(bytes);
57
- const cid = multiformats.CID.create(version, codec.code, hash);
58
- return new TestBlock(bytes, cid, object);
59
- }
60
- async function makeData() {
61
- if (!rawBlocks) {
62
- rawBlocks = await Promise.all('aaaa bbbb cccc zzzz'.split(' ').map(s => {
63
- return toBlock(new TextEncoder().encode(s), raw__namespace);
64
- }));
65
- const toPbLink = (name, block) => {
66
- let size = block.bytes.length;
67
- if (block.cid.code === 112) {
68
- const node = block.object;
69
- size = node.Links.reduce((p, c) => p + (c.Tsize || 0), size);
70
- }
71
- return {
72
- Name: name,
73
- Tsize: size,
74
- Hash: block.cid
75
- };
76
- };
77
- pbBlocks.push(await toBlock({ Links: [toPbLink('cat', rawBlocks[0])] }, dagPb__namespace, 0));
78
- pbBlocks.push(await toBlock({
79
- Links: [
80
- toPbLink('dog', rawBlocks[1]),
81
- toPbLink('first', pbBlocks[0])
82
- ]
83
- }, dagPb__namespace, 0));
84
- pbBlocks.push(await toBlock({
85
- Links: [
86
- toPbLink('bear', rawBlocks[2]),
87
- toPbLink('second', pbBlocks[1])
88
- ]
89
- }, dagPb__namespace, 0));
90
- const cbstructs = [
91
- [
92
- 'blip',
93
- pbBlocks[2].cid
94
- ],
95
- [
96
- 'limbo',
97
- null
98
- ]
99
- ];
100
- for (const b of cbstructs) {
101
- cborBlocks.push(await toBlock({
102
- name: b[0],
103
- link: b[1]
104
- }, CBOR__namespace));
105
- }
106
- allBlocks = [
107
- [
108
- 'raw',
109
- rawBlocks.slice(0, 3)
110
- ],
111
- [
112
- 'pb',
113
- pbBlocks
114
- ],
115
- [
116
- 'cbor',
117
- cborBlocks
118
- ]
119
- ];
120
- allBlocksFlattened = allBlocks.reduce((p, c) => p.concat(c[1]), []);
121
- }
122
- return {
123
- rawBlocks,
124
- pbBlocks,
125
- cborBlocks,
126
- allBlocks,
127
- allBlocksFlattened
128
- };
129
- }
130
- function makeIterable(data, chunkSize) {
131
- let pos = 0;
132
- return {
133
- [Symbol.asyncIterator]() {
134
- return {
135
- async next() {
136
- await new Promise(resolve => setTimeout(resolve, 5));
137
- if (pos >= data.length) {
138
- return {
139
- done: true,
140
- value: undefined
141
- };
142
- }
143
- const value = data.slice(pos, pos += chunkSize);
144
- return {
145
- done: false,
146
- value
147
- };
148
- }
149
- };
150
- }
151
- };
152
- }
153
- const carBytes = multiformats.bytes.fromHex('63a265726f6f747382d82a58250001711220f88bc853804cf294fe417e4fa83028689fcdb1b1592c5102e1474dbc200fab8bd82a5825000171122069ea0740f9807a28f4d932c62e7c1c83be055e55072c90266ab3e79df63a365b6776657273696f6e01280155122061be55a8e2f6b4e172338bddf184d6dbee29c98853e0a0485ecee7f27b9af0b461616161280155122081cc5b17018674b401b42f35ba07bb79e211239c23bffe658da1577e3e646877626262622801551220b6fbd675f98e2abd22d4ed29fdc83150fedc48597e92dd1a7a24381d44a2745163636363511220e7dc486e97e6ebe5cdabab3e392bdad128b6e09acc94bb4e2aa2af7b986d24d0122d0a240155122061be55a8e2f6b4e172338bddf184d6dbee29c98853e0a0485ecee7f27b9af0b4120363617418048001122079a982de3c9907953d4d323cee1d0fb1ed8f45f8ef02870c0cb9e09246bd530a122d0a240155122081cc5b17018674b401b42f35ba07bb79e211239c23bffe658da1577e3e6468771203646f671804122d0a221220e7dc486e97e6ebe5cdabab3e392bdad128b6e09acc94bb4e2aa2af7b986d24d01205666972737418338301122002acecc5de2438ea4126a3010ecb1f8a599c8eff22fff1a1dcffe999b27fd3de122e0a2401551220b6fbd675f98e2abd22d4ed29fdc83150fedc48597e92dd1a7a24381d44a274511204626561721804122f0a22122079a982de3c9907953d4d323cee1d0fb1ed8f45f8ef02870c0cb9e09246bd530a12067365636f6e641895015b01711220f88bc853804cf294fe417e4fa83028689fcdb1b1592c5102e1474dbc200fab8ba2646c696e6bd82a582300122002acecc5de2438ea4126a3010ecb1f8a599c8eff22fff1a1dcffe999b27fd3de646e616d6564626c6970360171122069ea0740f9807a28f4d932c62e7c1c83be055e55072c90266ab3e79df63a365ba2646c696e6bf6646e616d65656c696d626f');
154
- const goCarBytes = multiformats.bytes.fromHex('63a265726f6f747382d82a58250001711220f88bc853804cf294fe417e4fa83028689fcdb1b1592c5102e1474dbc200fab8bd82a5825000171122069ea0740f9807a28f4d932c62e7c1c83be055e55072c90266ab3e79df63a365b6776657273696f6e015b01711220f88bc853804cf294fe417e4fa83028689fcdb1b1592c5102e1474dbc200fab8ba2646c696e6bd82a582300122002acecc5de2438ea4126a3010ecb1f8a599c8eff22fff1a1dcffe999b27fd3de646e616d6564626c69708301122002acecc5de2438ea4126a3010ecb1f8a599c8eff22fff1a1dcffe999b27fd3de122e0a2401551220b6fbd675f98e2abd22d4ed29fdc83150fedc48597e92dd1a7a24381d44a274511204626561721804122f0a22122079a982de3c9907953d4d323cee1d0fb1ed8f45f8ef02870c0cb9e09246bd530a12067365636f6e641895012801551220b6fbd675f98e2abd22d4ed29fdc83150fedc48597e92dd1a7a24381d44a27451636363638001122079a982de3c9907953d4d323cee1d0fb1ed8f45f8ef02870c0cb9e09246bd530a122d0a240155122081cc5b17018674b401b42f35ba07bb79e211239c23bffe658da1577e3e6468771203646f671804122d0a221220e7dc486e97e6ebe5cdabab3e392bdad128b6e09acc94bb4e2aa2af7b986d24d0120566697273741833280155122081cc5b17018674b401b42f35ba07bb79e211239c23bffe658da1577e3e64687762626262511220e7dc486e97e6ebe5cdabab3e392bdad128b6e09acc94bb4e2aa2af7b986d24d0122d0a240155122061be55a8e2f6b4e172338bddf184d6dbee29c98853e0a0485ecee7f27b9af0b412036361741804280155122061be55a8e2f6b4e172338bddf184d6dbee29c98853e0a0485ecee7f27b9af0b461616161360171122069ea0740f9807a28f4d932c62e7c1c83be055e55072c90266ab3e79df63a365ba2646c696e6bf6646e616d65656c696d626f');
155
- const goCarRoots = [
156
- multiformats.CID.parse('bafyreihyrpefhacm6kkp4ql6j6udakdit7g3dmkzfriqfykhjw6cad5lrm'),
157
- multiformats.CID.parse('bafyreidj5idub6mapiupjwjsyyxhyhedxycv4vihfsicm2vt46o7morwlm')
158
- ];
159
- const goCarIndex = [
160
- {
161
- cid: multiformats.CID.parse('bafyreihyrpefhacm6kkp4ql6j6udakdit7g3dmkzfriqfykhjw6cad5lrm'),
162
- offset: 100,
163
- length: 92,
164
- blockOffset: 137,
165
- blockLength: 55
166
- },
167
- {
168
- cid: multiformats.CID.parse('QmNX6Tffavsya4xgBi2VJQnSuqy9GsxongxZZ9uZBqp16d'),
169
- offset: 192,
170
- length: 133,
171
- blockOffset: 228,
172
- blockLength: 97
173
- },
174
- {
175
- cid: multiformats.CID.parse('bafkreifw7plhl6mofk6sfvhnfh64qmkq73oeqwl6sloru6rehaoujituke'),
176
- offset: 325,
177
- length: 41,
178
- blockOffset: 362,
179
- blockLength: 4
180
- },
181
- {
182
- cid: multiformats.CID.parse('QmWXZxVQ9yZfhQxLD35eDR8LiMRsYtHxYqTFCBbJoiJVys'),
183
- offset: 366,
184
- length: 130,
185
- blockOffset: 402,
186
- blockLength: 94
187
- },
188
- {
189
- cid: multiformats.CID.parse('bafkreiebzrnroamgos2adnbpgw5apo3z4iishhbdx77gldnbk57d4zdio4'),
190
- offset: 496,
191
- length: 41,
192
- blockOffset: 533,
193
- blockLength: 4
194
- },
195
- {
196
- cid: multiformats.CID.parse('QmdwjhxpxzcMsR3qUuj7vUL8pbA7MgR3GAxWi2GLHjsKCT'),
197
- offset: 537,
198
- length: 82,
199
- blockOffset: 572,
200
- blockLength: 47
201
- },
202
- {
203
- cid: multiformats.CID.parse('bafkreidbxzk2ryxwwtqxem4l3xyyjvw35yu4tcct4cqeqxwo47zhxgxqwq'),
204
- offset: 619,
205
- length: 41,
206
- blockOffset: 656,
207
- blockLength: 4
208
- },
209
- {
210
- cid: multiformats.CID.parse('bafyreidj5idub6mapiupjwjsyyxhyhedxycv4vihfsicm2vt46o7morwlm'),
211
- offset: 660,
212
- length: 55,
213
- blockOffset: 697,
214
- blockLength: 18
215
- }
216
- ];
217
- const goCarV2Bytes = multiformats.bytes.fromHex('0aa16776657273696f6e02000000000000000000000000000000003300000000000000c001000000000000f30100000000000038a265726f6f747381d82a5823001220fb16f5083412ef1371d031ed4aa239903d84efdadf1ba3cd678e6475b1a232f86776657273696f6e01511220fb16f5083412ef1371d031ed4aa239903d84efdadf1ba3cd678e6475b1a232f8122d0a221220d9c0d5376d26f1931f7ad52d7acc00fc1090d2edb0808bf61eeb0a152826f6261204f09f8da418a40185011220d9c0d5376d26f1931f7ad52d7acc00fc1090d2edb0808bf61eeb0a152826f62612310a221220d745b7757f5b4593eeab7820306c7bc64eb496a7410a0d07df7a34ffec4b97f1120962617272656c657965183a122e0a2401551220a2e1c40da1ae335d4dffe729eb4d5ca23b74b9e51fc535f4a804a261080c294d1204f09f90a11807581220d745b7757f5b4593eeab7820306c7bc64eb496a7410a0d07df7a34ffec4b97f112340a2401551220b474a99a2705e23cf905a484ec6d14ef58b56bbe62e9292783466ec363b5072d120a666973686d6f6e67657218042801551220b474a99a2705e23cf905a484ec6d14ef58b56bbe62e9292783466ec363b5072d666973682b01551220a2e1c40da1ae335d4dffe729eb4d5ca23b74b9e51fc535f4a804a261080c294d6c6f62737465720100000028000000c800000000000000a2e1c40da1ae335d4dffe729eb4d5ca23b74b9e51fc535f4a804a261080c294d9401000000000000b474a99a2705e23cf905a484ec6d14ef58b56bbe62e9292783466ec363b5072d6b01000000000000d745b7757f5b4593eeab7820306c7bc64eb496a7410a0d07df7a34ffec4b97f11201000000000000d9c0d5376d26f1931f7ad52d7acc00fc1090d2edb0808bf61eeb0a152826f6268b00000000000000fb16f5083412ef1371d031ed4aa239903d84efdadf1ba3cd678e6475b1a232f83900000000000000');
218
- const goCarV2Roots = [multiformats.CID.parse('QmfEoLyB5NndqeKieExd1rtJzTduQUPEV8TwAYcUiy3H5Z')];
219
- const goCarV2Index = [
220
- {
221
- blockLength: 47,
222
- blockOffset: 143,
223
- cid: multiformats.CID.parse('QmfEoLyB5NndqeKieExd1rtJzTduQUPEV8TwAYcUiy3H5Z'),
224
- length: 82,
225
- offset: 108
226
- },
227
- {
228
- blockLength: 99,
229
- blockOffset: 226,
230
- cid: multiformats.CID.parse('QmczfirA7VEH7YVvKPTPoU69XM3qY4DC39nnTsWd4K3SkM'),
231
- length: 135,
232
- offset: 190
233
- },
234
- {
235
- blockLength: 54,
236
- blockOffset: 360,
237
- cid: multiformats.CID.parse('Qmcpz2FHJD7VAhg1fxFXdYJKePtkx1BsHuCrAgWVnaHMTE'),
238
- length: 89,
239
- offset: 325
240
- },
241
- {
242
- blockLength: 4,
243
- blockOffset: 451,
244
- cid: multiformats.CID.parse('bafkreifuosuzujyf4i6psbneqtwg2fhplc2wxptc5euspa2gn3bwhnihfu'),
245
- length: 41,
246
- offset: 414
247
- },
248
- {
249
- blockLength: 7,
250
- blockOffset: 492,
251
- cid: multiformats.CID.parse('bafkreifc4hca3inognou377hfhvu2xfchn2ltzi7yu27jkaeujqqqdbjju'),
252
- length: 44,
253
- offset: 455
254
- }
255
- ];
256
- const goCarV2Contents = {
257
- QmfEoLyB5NndqeKieExd1rtJzTduQUPEV8TwAYcUiy3H5Z: {
258
- Links: [{
259
- Hash: multiformats.CID.parse('QmczfirA7VEH7YVvKPTPoU69XM3qY4DC39nnTsWd4K3SkM'),
260
- Name: '\uD83C\uDF64',
261
- Tsize: 164
262
- }]
263
- },
264
- QmczfirA7VEH7YVvKPTPoU69XM3qY4DC39nnTsWd4K3SkM: {
265
- Links: [
266
- {
267
- Hash: multiformats.CID.parse('Qmcpz2FHJD7VAhg1fxFXdYJKePtkx1BsHuCrAgWVnaHMTE'),
268
- Name: 'barreleye',
269
- Tsize: 58
270
- },
271
- {
272
- Hash: multiformats.CID.parse('bafkreifc4hca3inognou377hfhvu2xfchn2ltzi7yu27jkaeujqqqdbjju'),
273
- Name: '\uD83D\uDC21',
274
- Tsize: 7
275
- }
276
- ]
277
- },
278
- Qmcpz2FHJD7VAhg1fxFXdYJKePtkx1BsHuCrAgWVnaHMTE: {
279
- Links: [{
280
- Hash: multiformats.CID.parse('bafkreifuosuzujyf4i6psbneqtwg2fhplc2wxptc5euspa2gn3bwhnihfu'),
281
- Name: 'fishmonger',
282
- Tsize: 4
283
- }]
284
- },
285
- bafkreifuosuzujyf4i6psbneqtwg2fhplc2wxptc5euspa2gn3bwhnihfu: 'fish',
286
- bafkreifc4hca3inognou377hfhvu2xfchn2ltzi7yu27jkaeujqqqdbjju: 'lobster'
287
- };
288
-
289
- exports.assert = assert;
290
- exports.carBytes = carBytes;
291
- exports.goCarBytes = goCarBytes;
292
- exports.goCarIndex = goCarIndex;
293
- exports.goCarRoots = goCarRoots;
294
- exports.goCarV2Bytes = goCarV2Bytes;
295
- exports.goCarV2Contents = goCarV2Contents;
296
- exports.goCarV2Index = goCarV2Index;
297
- exports.goCarV2Roots = goCarV2Roots;
298
- exports.makeData = makeData;
299
- exports.makeIterable = makeIterable;
300
- exports.rndCid = rndCid;
301
- exports.toBlock = toBlock;
@@ -1,71 +0,0 @@
1
- 'use strict';
2
-
3
- var path = require('path');
4
- var url = require('url');
5
- var fs = require('fs');
6
- var stream = require('stream');
7
- var util = require('util');
8
- require('../car.js');
9
- var common = require('./common.js');
10
- var verifyStoreReader = require('./verify-store-reader.js');
11
- var reader = require('../lib/reader.js');
12
- var writer = require('../lib/writer.js');
13
-
14
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
-
16
- var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
17
- var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
18
-
19
- const __filename$1 = url.fileURLToPath((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('node-test/node-test-file-streams.js', document.baseURI).href)));
20
- const __dirname$1 = path__default["default"].dirname(__filename$1);
21
- const tmpCarPath = path__default["default"].join(__dirname$1, 'tmp.car');
22
- describe('Node Streams CarReader.fromIterable()', () => {
23
- let allBlocksFlattened;
24
- let roots;
25
- before(async () => {
26
- const data = await common.makeData();
27
- const cborBlocks = data.cborBlocks;
28
- allBlocksFlattened = data.allBlocksFlattened;
29
- roots = [
30
- cborBlocks[0].cid,
31
- cborBlocks[1].cid
32
- ];
33
- try {
34
- await fs__default["default"].promises.unlink(tmpCarPath);
35
- } catch (e) {
36
- }
37
- });
38
- it('from fixture file', async () => {
39
- const inStream = fs__default["default"].createReadStream(path__default["default"].join(__dirname$1, './go.car'));
40
- const reader$1 = await reader.CarReader.fromIterable(inStream);
41
- await verifyStoreReader.verifyRoots(reader$1);
42
- await verifyStoreReader.verifyHas(reader$1);
43
- await verifyStoreReader.verifyGet(reader$1);
44
- await verifyStoreReader.verifyBlocks(reader$1.blocks(), true);
45
- await verifyStoreReader.verifyCids(reader$1.cids(), true);
46
- });
47
- it('complete', async () => {
48
- const {writer: writer$1, out} = writer.CarWriter.create(roots);
49
- const pipe = util.promisify(stream.pipeline)(stream.Readable.from(out), fs__default["default"].createWriteStream(tmpCarPath));
50
- for (const block of allBlocksFlattened) {
51
- await writer$1.put(block);
52
- }
53
- await writer$1.close();
54
- await pipe;
55
- const sizes = await Promise.all([
56
- 'go.car',
57
- 'tmp.car'
58
- ].map(async car => {
59
- return (await fs__default["default"].promises.stat(path__default["default"].join(__dirname$1, car))).size;
60
- }));
61
- common.assert.strictEqual(sizes[0], sizes[1]);
62
- const inStream = fs__default["default"].createReadStream(tmpCarPath);
63
- const reader$1 = await reader.CarReader.fromIterable(inStream);
64
- await verifyStoreReader.verifyRoots(reader$1);
65
- await verifyStoreReader.verifyHas(reader$1);
66
- await verifyStoreReader.verifyGet(reader$1);
67
- await verifyStoreReader.verifyBlocks(reader$1.blocks(), true);
68
- await verifyStoreReader.verifyCids(reader$1.cids(), true);
69
- await fs__default["default"].promises.unlink(tmpCarPath);
70
- });
71
- });
@@ -1,51 +0,0 @@
1
- 'use strict';
2
-
3
- var path = require('path');
4
- var url = require('url');
5
- var indexedReader = require('../lib/indexed-reader.js');
6
- var common = require('./common.js');
7
- var verifyStoreReader = require('./verify-store-reader.js');
8
-
9
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
-
11
- var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
12
-
13
- const __filename$1 = url.fileURLToPath((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('node-test/node-test-indexed-reader.js', document.baseURI).href)));
14
- const __dirname$1 = path__default["default"].dirname(__filename$1);
15
- describe('CarIndexedReader fromFile()', () => {
16
- it('complete', async () => {
17
- const reader = await indexedReader.CarIndexedReader.fromFile(path__default["default"].join(__dirname$1, 'go.car'));
18
- await verifyStoreReader.verifyRoots(reader);
19
- await verifyStoreReader.verifyHas(reader);
20
- await verifyStoreReader.verifyGet(reader);
21
- await verifyStoreReader.verifyBlocks(reader.blocks(), true);
22
- await verifyStoreReader.verifyCids(reader.cids(), true);
23
- let i = 0;
24
- for await (const block of reader.blocks()) {
25
- common.assert.strictEqual(block.cid.toString(), common.goCarIndex[i++].cid.toString());
26
- }
27
- i = 0;
28
- for await (const cid of reader.cids()) {
29
- common.assert.strictEqual(cid.toString(), common.goCarIndex[i++].cid.toString());
30
- }
31
- common.assert.strictEqual(reader.version, 1);
32
- await reader.close();
33
- });
34
- it('bad argument', async () => {
35
- for (const arg of [
36
- true,
37
- false,
38
- null,
39
- undefined,
40
- Uint8Array.from([
41
- 1,
42
- 2,
43
- 3
44
- ]),
45
- 100,
46
- { obj: 'nope' }
47
- ]) {
48
- await common.assert.isRejected(indexedReader.CarIndexedReader.fromFile(arg));
49
- }
50
- });
51
- });
@@ -1,135 +0,0 @@
1
- 'use strict';
2
-
3
- var fs = require('fs');
4
- var stream = require('stream');
5
- var ipldGarbage = require('ipld-garbage');
6
- var varint = require('varint');
7
- var CBOR = require('@ipld/dag-cbor');
8
- var sha2 = require('multiformats/hashes/sha2');
9
- var cid = require('multiformats/cid');
10
- require('../car.js');
11
- var common = require('./common.js');
12
- var writer = require('../lib/writer.js');
13
- var indexer = require('../lib/indexer.js');
14
- var reader = require('../lib/reader.js');
15
- var indexedReader = require('../lib/indexed-reader.js');
16
-
17
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
-
19
- function _interopNamespace(e) {
20
- if (e && e.__esModule) return e;
21
- var n = Object.create(null);
22
- if (e) {
23
- Object.keys(e).forEach(function (k) {
24
- if (k !== 'default') {
25
- var d = Object.getOwnPropertyDescriptor(e, k);
26
- Object.defineProperty(n, k, d.get ? d : {
27
- enumerable: true,
28
- get: function () { return e[k]; }
29
- });
30
- }
31
- });
32
- }
33
- n["default"] = e;
34
- return Object.freeze(n);
35
- }
36
-
37
- var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
38
- var varint__default = /*#__PURE__*/_interopDefaultLegacy(varint);
39
- var CBOR__namespace = /*#__PURE__*/_interopNamespace(CBOR);
40
-
41
- describe('Large CAR', () => {
42
- const objects = [];
43
- const cids = [];
44
- const expectedIndex = [];
45
- it('create, no roots', async () => {
46
- const {writer: writer$1, out} = writer.CarWriter.create([]);
47
- stream.Readable.from(out).pipe(fs__default["default"].createWriteStream('./test.car'));
48
- let offset = CBOR__namespace.encode({
49
- version: 1,
50
- roots: []
51
- }).length;
52
- offset += varint__default["default"].encode(offset).length;
53
- for (let i = 0; i < 500; i++) {
54
- const obj = ipldGarbage.garbage(1000);
55
- objects.push(obj);
56
- const bytes = CBOR__namespace.encode(obj);
57
- const hash = await sha2.sha256.digest(bytes);
58
- const cid$1 = cid.CID.create(1, CBOR__namespace.code, hash);
59
- cids.push(cid$1.toString());
60
- const blockLength = bytes.length;
61
- let length = cid$1.bytes.length + blockLength;
62
- const lengthLength = varint__default["default"].encode(length).length;
63
- length += lengthLength;
64
- const blockOffset = offset + lengthLength + cid$1.bytes.length;
65
- expectedIndex.push({
66
- cid: cid$1,
67
- offset,
68
- length,
69
- blockOffset,
70
- blockLength
71
- });
72
- offset += length;
73
- await writer$1.put({
74
- cid: cid$1,
75
- bytes
76
- });
77
- }
78
- await writer$1.close();
79
- });
80
- it('CarIndexer.fromIterable', async () => {
81
- const indexer$1 = await indexer.CarIndexer.fromIterable(fs__default["default"].createReadStream('./test.car'));
82
- common.assert.deepStrictEqual(await indexer$1.getRoots(), []);
83
- let i = 0;
84
- for await (const blockIndex of indexer$1) {
85
- common.assert.deepStrictEqual(blockIndex, expectedIndex[i]);
86
- i++;
87
- }
88
- });
89
- it('CarIndexer.fromBytes', async () => {
90
- const indexer$1 = await indexer.CarIndexer.fromBytes(await fs__default["default"].promises.readFile('./test.car'));
91
- common.assert.deepStrictEqual(await indexer$1.getRoots(), []);
92
- let i = 0;
93
- for await (const blockIndex of indexer$1) {
94
- common.assert.deepStrictEqual(blockIndex, expectedIndex[i]);
95
- i++;
96
- }
97
- });
98
- it('CarReader.fromBytes', async () => {
99
- const reader$1 = await reader.CarReader.fromBytes(await fs__default["default"].promises.readFile('./test.car'));
100
- common.assert.deepStrictEqual(await reader$1.getRoots(), []);
101
- let i = 0;
102
- for await (const {cid, bytes} of reader$1.blocks()) {
103
- common.assert.strictEqual(cid.toString(), cids[i], `cid #${ i } ${ cid } <> ${ cids[i] }`);
104
- const obj = CBOR__namespace.decode(bytes);
105
- common.assert.deepStrictEqual(obj, objects[i], `object #${ i }`);
106
- i++;
107
- }
108
- });
109
- it('CarReader.fromIterable', async () => {
110
- const reader$1 = await reader.CarReader.fromIterable(fs__default["default"].createReadStream('./test.car'));
111
- common.assert.deepStrictEqual(await reader$1.getRoots(), []);
112
- let i = 0;
113
- for await (const {cid, bytes} of reader$1.blocks()) {
114
- common.assert.strictEqual(cid.toString(), cids[i], `cid #${ i } ${ cid } <> ${ cids[i] }`);
115
- const obj = CBOR__namespace.decode(bytes);
116
- common.assert.deepStrictEqual(obj, objects[i], `object #${ i }`);
117
- i++;
118
- }
119
- });
120
- it('CarIndexedReader.fromFile', async () => {
121
- const reader = await indexedReader.CarIndexedReader.fromFile('./test.car');
122
- common.assert.deepStrictEqual(await reader.getRoots(), []);
123
- let i = 0;
124
- for await (const {cid, bytes} of reader.blocks()) {
125
- common.assert.strictEqual(cid.toString(), cids[i], `cid #${ i } ${ cid } <> ${ cids[i] }`);
126
- const obj = CBOR__namespace.decode(bytes);
127
- common.assert.deepStrictEqual(obj, objects[i], `object #${ i }`);
128
- i++;
129
- }
130
- });
131
- after(async () => {
132
- return fs__default["default"].promises.unlink('./test.car').catch(() => {
133
- });
134
- });
135
- });
@@ -1,68 +0,0 @@
1
- 'use strict';
2
-
3
- var path = require('path');
4
- var fs = require('fs');
5
- var util = require('util');
6
- var url = require('url');
7
- var multiformats = require('multiformats');
8
- require('../car.js');
9
- var common = require('./common.js');
10
- var reader = require('../lib/reader.js');
11
-
12
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
-
14
- var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
15
- var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
16
-
17
- const fsopen = util.promisify(fs__default["default"].open);
18
- const fsclose = util.promisify(fs__default["default"].close);
19
- const {toHex} = multiformats.bytes;
20
- const __filename$1 = url.fileURLToPath((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('node-test/node-test-raw.js', document.baseURI).href)));
21
- const __dirname$1 = path__default["default"].dirname(__filename$1);
22
- describe('CarReader.readRaw', () => {
23
- let allBlocksFlattened;
24
- before(async () => {
25
- const data = await common.makeData();
26
- allBlocksFlattened = data.allBlocksFlattened;
27
- });
28
- async function verifyRead(fd) {
29
- const expectedBlocks = allBlocksFlattened.slice();
30
- const expectedCids = [];
31
- for (const {cid} of expectedBlocks) {
32
- expectedCids.push(cid.toString());
33
- }
34
- for (const blockIndex of common.goCarIndex) {
35
- const {cid, bytes} = await reader.CarReader.readRaw(fd, blockIndex);
36
- const index = expectedCids.indexOf(cid.toString());
37
- common.assert.ok(index >= 0, 'got expected block');
38
- common.assert.strictEqual(toHex(expectedBlocks[index].bytes), toHex(bytes), 'got expected block content');
39
- expectedBlocks.splice(index, 1);
40
- expectedCids.splice(index, 1);
41
- }
42
- common.assert.strictEqual(expectedBlocks.length, 0, 'got all expected blocks');
43
- }
44
- it('read raw using index (fd)', async () => {
45
- const fd = await fsopen(path__default["default"].join(__dirname$1, 'go.car'), 'r');
46
- await verifyRead(fd);
47
- await fsclose(fd);
48
- });
49
- it('read raw using index (FileHandle)', async () => {
50
- const fd = await fs__default["default"].promises.open(path__default["default"].join(__dirname$1, 'go.car'), 'r');
51
- await verifyRead(fd);
52
- await fd.close();
53
- });
54
- it('errors', async () => {
55
- await common.assert.isRejected(reader.CarReader.readRaw(true, common.goCarIndex[0]), {
56
- name: 'TypeError',
57
- message: 'Bad fd'
58
- });
59
- const badBlock = Object.assign({}, common.goCarIndex[common.goCarIndex.length - 1]);
60
- badBlock.blockLength += 10;
61
- const fd = await fsopen(path__default["default"].join(__dirname$1, 'go.car'), 'r');
62
- await common.assert.isRejected(reader.CarReader.readRaw(fd, badBlock), {
63
- name: 'Error',
64
- message: `Failed to read entire block (${ badBlock.blockLength - 10 } instead of ${ badBlock.blockLength })`
65
- });
66
- await fsclose(fd);
67
- });
68
- });