@ipld/car 3.2.4 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +183 -2
- package/api.ts +22 -4
- package/buffer-writer +1 -0
- package/cjs/browser-test/common.js +78 -3
- package/cjs/browser-test/node-test-large.js +8 -8
- package/cjs/browser-test/test-buffer-writer.js +330 -0
- package/cjs/browser-test/test-errors.js +57 -34
- package/cjs/browser-test/test-indexer.js +12 -0
- package/cjs/browser-test/test-reader.js +83 -0
- package/cjs/browser-test/test-writer.js +3 -3
- package/cjs/lib/buffer-writer.js +161 -0
- package/cjs/lib/decoder.js +72 -15
- package/cjs/lib/encoder.js +2 -2
- package/cjs/lib/header-validator.js +29 -0
- package/cjs/lib/reader-browser.js +7 -7
- package/cjs/lib/writer-browser.js +1 -1
- package/cjs/node-test/common.js +78 -3
- package/cjs/node-test/node-test-large.js +8 -8
- package/cjs/node-test/test-buffer-writer.js +330 -0
- package/cjs/node-test/test-errors.js +57 -34
- package/cjs/node-test/test-indexer.js +12 -0
- package/cjs/node-test/test-reader.js +83 -0
- package/cjs/node-test/test-writer.js +3 -3
- package/esm/browser-test/common.js +76 -1
- package/esm/browser-test/test-buffer-writer.js +311 -0
- package/esm/browser-test/test-errors.js +57 -33
- package/esm/browser-test/test-indexer.js +15 -0
- package/esm/browser-test/test-reader.js +90 -1
- package/esm/browser-test/test-writer.js +3 -3
- package/esm/lib/buffer-writer.js +126 -0
- package/esm/lib/decoder.js +69 -13
- package/esm/lib/header-validator.js +23 -0
- package/esm/lib/reader-browser.js +7 -8
- package/esm/lib/writer-browser.js +1 -1
- package/esm/node-test/common.js +76 -1
- package/esm/node-test/test-buffer-writer.js +311 -0
- package/esm/node-test/test-errors.js +57 -33
- package/esm/node-test/test-indexer.js +15 -0
- package/esm/node-test/test-reader.js +90 -1
- package/esm/node-test/test-writer.js +3 -3
- package/examples/car-to-fixture.js +1 -4
- package/examples/dump-index.js +24 -0
- package/examples/test-examples.js +33 -0
- package/lib/buffer-writer.js +286 -0
- package/lib/coding.ts +17 -2
- package/lib/decoder.js +130 -14
- package/lib/header-validator.js +33 -0
- package/lib/header.ipldsch +6 -0
- package/lib/reader-browser.js +11 -11
- package/lib/writer-browser.js +1 -1
- package/package.json +16 -6
- package/test/_fixtures_to_js.mjs +24 -0
- package/test/common.js +49 -3
- package/test/go.carv2 +0 -0
- package/test/test-buffer-writer.js +256 -0
- package/test/test-errors.js +52 -30
- package/test/test-indexer.js +24 -1
- package/test/test-reader.js +94 -1
- package/test/test-writer.js +3 -3
- package/tsconfig.json +3 -1
- package/types/api.d.ts +16 -0
- package/types/api.d.ts.map +1 -1
- package/types/lib/buffer-writer.d.ts +86 -0
- package/types/lib/buffer-writer.d.ts.map +1 -0
- package/types/lib/coding.d.ts +14 -4
- package/types/lib/coding.d.ts.map +1 -1
- package/types/lib/decoder.d.ts +38 -2
- package/types/lib/decoder.d.ts.map +1 -1
- package/types/lib/header-validator.d.ts +2 -0
- package/types/lib/header-validator.d.ts.map +1 -0
- package/types/lib/reader-browser.d.ts +15 -7
- package/types/lib/reader-browser.d.ts.map +1 -1
- package/types/test/_fixtures_to_js.d.mts +3 -0
- package/types/test/_fixtures_to_js.d.mts.map +1 -0
- package/types/test/common.d.ts +13 -0
- package/types/test/common.d.ts.map +1 -1
- package/types/test/fixtures-expectations.d.ts +63 -0
- package/types/test/fixtures-expectations.d.ts.map +1 -0
- package/types/test/fixtures.d.ts +3 -0
- package/types/test/fixtures.d.ts.map +1 -0
- package/types/test/test-buffer-writer.d.ts +2 -0
- package/types/test/test-buffer-writer.d.ts.map +1 -0
package/test/test-reader.js
CHANGED
|
@@ -2,10 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
import { CarReader } from '@ipld/car/reader'
|
|
4
4
|
import { CarWriter } from '@ipld/car/writer'
|
|
5
|
+
import { bytesReader, readHeader } from '@ipld/car/decoder'
|
|
5
6
|
import * as Block from 'multiformats/block'
|
|
6
7
|
import { sha256 } from 'multiformats/hashes/sha2'
|
|
7
8
|
import * as raw from 'multiformats/codecs/raw'
|
|
8
|
-
import {
|
|
9
|
+
import { base64 } from 'multiformats/bases/base64'
|
|
10
|
+
import * as dagPb from '@ipld/dag-pb'
|
|
11
|
+
import {
|
|
12
|
+
carBytes,
|
|
13
|
+
makeIterable,
|
|
14
|
+
assert,
|
|
15
|
+
goCarV2Bytes,
|
|
16
|
+
goCarV2Roots,
|
|
17
|
+
goCarV2Index,
|
|
18
|
+
goCarV2Contents
|
|
19
|
+
} from './common.js'
|
|
9
20
|
import {
|
|
10
21
|
verifyRoots,
|
|
11
22
|
verifyHas,
|
|
@@ -13,6 +24,8 @@ import {
|
|
|
13
24
|
verifyBlocks,
|
|
14
25
|
verifyCids
|
|
15
26
|
} from './verify-store-reader.js'
|
|
27
|
+
import { data as fixtures } from './fixtures.js'
|
|
28
|
+
import { expectations as fixtureExpectations } from './fixtures-expectations.js'
|
|
16
29
|
|
|
17
30
|
describe('CarReader fromBytes()', () => {
|
|
18
31
|
it('complete', async () => {
|
|
@@ -48,6 +61,30 @@ describe('CarReader fromBytes()', () => {
|
|
|
48
61
|
})
|
|
49
62
|
})
|
|
50
63
|
|
|
64
|
+
it('v2 complete', async () => {
|
|
65
|
+
const reader = await CarReader.fromBytes(goCarV2Bytes)
|
|
66
|
+
const roots = await reader.getRoots()
|
|
67
|
+
assert.strictEqual(roots.length, 1)
|
|
68
|
+
assert.ok(goCarV2Roots[0].equals(roots[0]))
|
|
69
|
+
assert.strictEqual(reader.version, 2)
|
|
70
|
+
for (const { cid } of goCarV2Index) {
|
|
71
|
+
const block = await reader.get(cid)
|
|
72
|
+
assert.isDefined(block)
|
|
73
|
+
if (block) {
|
|
74
|
+
assert.ok(cid.equals(block.cid))
|
|
75
|
+
let content
|
|
76
|
+
if (cid.code === dagPb.code) {
|
|
77
|
+
content = dagPb.decode(block.bytes)
|
|
78
|
+
} else if (cid.code === 85) { // raw
|
|
79
|
+
content = new TextDecoder().decode(block.bytes)
|
|
80
|
+
} else {
|
|
81
|
+
assert.fail('Unexpected codec')
|
|
82
|
+
}
|
|
83
|
+
assert.deepStrictEqual(content, goCarV2Contents[cid.toString()])
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
})
|
|
87
|
+
|
|
51
88
|
it('decode error - trailing null bytes', async () => {
|
|
52
89
|
const bytes = new Uint8Array(carBytes.length + 5)
|
|
53
90
|
bytes.set(carBytes)
|
|
@@ -149,4 +186,60 @@ describe('CarReader fromIterable()', () => {
|
|
|
149
186
|
message: 'Unexpected end of data'
|
|
150
187
|
})
|
|
151
188
|
})
|
|
189
|
+
|
|
190
|
+
it('v2 decode error - truncated', async () => {
|
|
191
|
+
const bytes = goCarV2Bytes.slice()
|
|
192
|
+
const dv = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength)
|
|
193
|
+
// dataSize is an 64-bit uint at byte offset 35 from the begining, we're shortening it
|
|
194
|
+
// by 10 to simulate a premature end of CARv1 content
|
|
195
|
+
dv.setBigUint64(35, BigInt(448 - 10), true)
|
|
196
|
+
await assert.isRejected(CarReader.fromIterable(makeIterable(bytes, 64)), {
|
|
197
|
+
name: 'Error',
|
|
198
|
+
message: 'Unexpected end of data'
|
|
199
|
+
})
|
|
200
|
+
})
|
|
201
|
+
})
|
|
202
|
+
|
|
203
|
+
describe('Shared fixtures', () => {
|
|
204
|
+
describe('Header', () => {
|
|
205
|
+
for (const [name, { version: expectedVersion, err: expectedError }] of Object.entries(fixtureExpectations)) {
|
|
206
|
+
it(name, async () => {
|
|
207
|
+
const data = base64.baseDecode(fixtures[name])
|
|
208
|
+
let header
|
|
209
|
+
try {
|
|
210
|
+
header = await readHeader(bytesReader(data))
|
|
211
|
+
} catch (err) {
|
|
212
|
+
if (expectedError != null) {
|
|
213
|
+
assert.equal(err.message, expectedError)
|
|
214
|
+
return
|
|
215
|
+
}
|
|
216
|
+
assert.ifError(err)
|
|
217
|
+
}
|
|
218
|
+
if (expectedError != null) {
|
|
219
|
+
assert.fail(`Expected error: ${expectedError}`)
|
|
220
|
+
}
|
|
221
|
+
assert.isDefined(header, 'did not decode header')
|
|
222
|
+
if (expectedVersion != null && header != null) {
|
|
223
|
+
assert.strictEqual(header.version, expectedVersion)
|
|
224
|
+
}
|
|
225
|
+
})
|
|
226
|
+
}
|
|
227
|
+
})
|
|
228
|
+
|
|
229
|
+
describe('Contents', () => {
|
|
230
|
+
for (const [name, { cids: expectedCids }] of Object.entries(fixtureExpectations)) {
|
|
231
|
+
if (expectedCids == null) {
|
|
232
|
+
continue
|
|
233
|
+
}
|
|
234
|
+
it(name, async () => {
|
|
235
|
+
const data = base64.baseDecode(fixtures[name])
|
|
236
|
+
const reader = await CarReader.fromBytes(data)
|
|
237
|
+
let i = 0
|
|
238
|
+
for await (const cid of reader.cids()) {
|
|
239
|
+
assert.strictEqual(cid.toString(), expectedCids[i++])
|
|
240
|
+
}
|
|
241
|
+
assert.strictEqual(i, expectedCids.length)
|
|
242
|
+
})
|
|
243
|
+
}
|
|
244
|
+
})
|
|
152
245
|
})
|
package/test/test-writer.js
CHANGED
|
@@ -265,9 +265,9 @@ describe('CarWriter', () => {
|
|
|
265
265
|
const pbBytes = await append(1)
|
|
266
266
|
const cborBytes = await append(2)
|
|
267
267
|
|
|
268
|
-
assert(rawBytes.length > 0)
|
|
269
|
-
assert(pbBytes.length > 0)
|
|
270
|
-
assert(cborBytes.length > 0)
|
|
268
|
+
assert.ok(rawBytes.length > 0)
|
|
269
|
+
assert.ok(pbBytes.length > 0)
|
|
270
|
+
assert.ok(cborBytes.length > 0)
|
|
271
271
|
|
|
272
272
|
const reassembled = concatBytes([headerBytes, rawBytes, pbBytes, cborBytes])
|
|
273
273
|
|
package/tsconfig.json
CHANGED
|
@@ -31,10 +31,12 @@
|
|
|
31
31
|
"paths": {
|
|
32
32
|
"@ipld/car": [ "car.js", "car-browser.js", "lib/" ],
|
|
33
33
|
"@ipld/car/writer": [ "./lib/writer.js" ],
|
|
34
|
+
"@ipld/car/buffer-writer": ["./lib/buffer-writer.js"],
|
|
34
35
|
"@ipld/car/reader": [ "./lib/reader.js" ],
|
|
35
36
|
"@ipld/car/indexed-reader": [ "./lib/indexed-reader.js" ],
|
|
36
37
|
"@ipld/car/iterator": [ "./lib/iterator.js" ],
|
|
37
|
-
"@ipld/car/indexer": [ "./lib/indexer.js" ]
|
|
38
|
+
"@ipld/car/indexer": [ "./lib/indexer.js" ],
|
|
39
|
+
"@ipld/car/decoder": [ "./lib/decoder.js" ],
|
|
38
40
|
}
|
|
39
41
|
},
|
|
40
42
|
"exclude": [
|
package/types/api.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CID } from 'multiformats/cid';
|
|
2
|
+
export type { CID };
|
|
2
3
|
export declare type Block = {
|
|
3
4
|
cid: CID;
|
|
4
5
|
bytes: Uint8Array;
|
|
@@ -30,6 +31,21 @@ export interface BlockWriter {
|
|
|
30
31
|
put(block: Block): Promise<void>;
|
|
31
32
|
close(): Promise<void>;
|
|
32
33
|
}
|
|
34
|
+
export interface CarBufferWriter {
|
|
35
|
+
addRoot(root: CID, options?: {
|
|
36
|
+
resize?: boolean;
|
|
37
|
+
}): CarBufferWriter;
|
|
38
|
+
write(block: Block): CarBufferWriter;
|
|
39
|
+
close(options?: {
|
|
40
|
+
resize?: boolean;
|
|
41
|
+
}): Uint8Array;
|
|
42
|
+
}
|
|
43
|
+
export interface CarBufferWriterOptions {
|
|
44
|
+
roots?: CID[];
|
|
45
|
+
byteOffset?: number;
|
|
46
|
+
byteLength?: number;
|
|
47
|
+
headerSize?: number;
|
|
48
|
+
}
|
|
33
49
|
export interface WriterChannel {
|
|
34
50
|
writer: BlockWriter;
|
|
35
51
|
out: AsyncIterable<Uint8Array>;
|
package/types/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAEtC,YAAY,EAAE,GAAG,EAAE,CAAA;AAGnB,oBAAY,KAAK,GAAG;IAClB,GAAG,EAAE,GAAG,CAAA;IACR,KAAK,EAAE,UAAU,CAAA;CAClB,CAAA;AAED,oBAAY,WAAW,GAAG;IACxB,GAAG,EAAE,GAAG,CAAA;IACR,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,oBAAY,UAAU,GAAG,WAAW,GAAG;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,aAAc,SAAQ,aAAa,CAAC,KAAK,CAAC;CAAG;AAE9D,MAAM,WAAW,WAAY,SAAQ,aAAa,CAAC,GAAG,CAAC;CAAG;AAE1D,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/B,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CAAA;IACzC,MAAM,IAAI,aAAa,CAAA;IACvB,IAAI,IAAI,WAAW,CAAA;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,IAAI,EAAC,GAAG,EAAE,OAAO,CAAC,EAAC;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAE,eAAe,CAAA;IAChE,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe,CAAA;IACpC,KAAK,CAAC,OAAO,CAAC,EAAC;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,UAAU,CAAA;CACjD;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,CAAA;IACnB,GAAG,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,SAAU,SAAQ,WAAW,EAAE,WAAW;CAAG"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export function addRoot(writer: CarBufferWriter, root: CID, { resize }?: {
|
|
2
|
+
resize?: boolean | undefined;
|
|
3
|
+
} | undefined): void;
|
|
4
|
+
export function blockLength({ cid, bytes }: Block): number;
|
|
5
|
+
export function addBlock(writer: CarBufferWriter, { cid, bytes }: Block): void;
|
|
6
|
+
export function close(writer: CarBufferWriter, { resize }?: {
|
|
7
|
+
resize?: boolean | undefined;
|
|
8
|
+
} | undefined): Uint8Array;
|
|
9
|
+
export function resizeHeader(writer: CarBufferWriter, byteLength: number): void;
|
|
10
|
+
export function calculateHeaderLength(rootLengths: number[]): number;
|
|
11
|
+
export function headerLength({ roots }: {
|
|
12
|
+
roots: CID[];
|
|
13
|
+
}): number;
|
|
14
|
+
export function estimateHeaderLength(rootCount: number, rootByteLength?: number | undefined): number;
|
|
15
|
+
export function createWriter(buffer: ArrayBuffer, { roots, byteOffset, byteLength, headerSize }?: {
|
|
16
|
+
roots?: import("multiformats/cid").CID[] | undefined;
|
|
17
|
+
byteOffset?: number | undefined;
|
|
18
|
+
byteLength?: number | undefined;
|
|
19
|
+
headerSize?: number | undefined;
|
|
20
|
+
} | undefined): CarBufferWriter;
|
|
21
|
+
export type CID = import('../api').CID;
|
|
22
|
+
export type Block = import('../api').Block;
|
|
23
|
+
export type Writer = import('../api').CarBufferWriter;
|
|
24
|
+
export type Options = import('../api').CarBufferWriterOptions;
|
|
25
|
+
export type CarEncoder = import('./coding').CarEncoder;
|
|
26
|
+
/**
|
|
27
|
+
* @typedef {import('../api').CID} CID
|
|
28
|
+
* @typedef {import('../api').Block} Block
|
|
29
|
+
* @typedef {import('../api').CarBufferWriter} Writer
|
|
30
|
+
* @typedef {import('../api').CarBufferWriterOptions} Options
|
|
31
|
+
* @typedef {import('./coding').CarEncoder} CarEncoder
|
|
32
|
+
*/
|
|
33
|
+
/**
|
|
34
|
+
* A simple CAR writer that writes to a pre-allocated buffer.
|
|
35
|
+
*
|
|
36
|
+
* @class
|
|
37
|
+
* @name CarBufferWriter
|
|
38
|
+
* @implements {Writer}
|
|
39
|
+
*/
|
|
40
|
+
declare class CarBufferWriter implements Writer {
|
|
41
|
+
/**
|
|
42
|
+
* @param {Uint8Array} bytes
|
|
43
|
+
* @param {number} headerSize
|
|
44
|
+
*/
|
|
45
|
+
constructor(bytes: Uint8Array, headerSize: number);
|
|
46
|
+
/** @readonly */
|
|
47
|
+
readonly bytes: Uint8Array;
|
|
48
|
+
byteOffset: number;
|
|
49
|
+
/**
|
|
50
|
+
* @readonly
|
|
51
|
+
* @type {CID[]}
|
|
52
|
+
*/
|
|
53
|
+
readonly roots: CID[];
|
|
54
|
+
headerSize: number;
|
|
55
|
+
/**
|
|
56
|
+
* Add a root to this writer, to be used to create a header when the CAR is
|
|
57
|
+
* finalized with {@link CarBufferWriter.close `close()`}
|
|
58
|
+
*
|
|
59
|
+
* @param {CID} root
|
|
60
|
+
* @param {{resize?:boolean}} [options]
|
|
61
|
+
* @returns {CarBufferWriter}
|
|
62
|
+
*/
|
|
63
|
+
addRoot(root: CID, options?: {
|
|
64
|
+
resize?: boolean | undefined;
|
|
65
|
+
} | undefined): CarBufferWriter;
|
|
66
|
+
/**
|
|
67
|
+
* Write a `Block` (a `{ cid:CID, bytes:Uint8Array }` pair) to the archive.
|
|
68
|
+
* Throws if there is not enough capacity.
|
|
69
|
+
*
|
|
70
|
+
* @param {Block} block A `{ cid:CID, bytes:Uint8Array }` pair.
|
|
71
|
+
* @returns {CarBufferWriter}
|
|
72
|
+
*/
|
|
73
|
+
write(block: Block): CarBufferWriter;
|
|
74
|
+
/**
|
|
75
|
+
* Finalize the CAR and return it as a `Uint8Array`.
|
|
76
|
+
*
|
|
77
|
+
* @param {object} [options]
|
|
78
|
+
* @param {boolean} [options.resize]
|
|
79
|
+
* @returns {Uint8Array}
|
|
80
|
+
*/
|
|
81
|
+
close(options?: {
|
|
82
|
+
resize?: boolean | undefined;
|
|
83
|
+
} | undefined): Uint8Array;
|
|
84
|
+
}
|
|
85
|
+
export {};
|
|
86
|
+
//# sourceMappingURL=buffer-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer-writer.d.ts","sourceRoot":"","sources":["../../lib/buffer-writer.js"],"names":[],"mappings":"AAgFO,gCAJI,eAAe,QACf,GAAG;;qBA0Bb;AAUM,4CAHI,KAAK,GACH,MAAM,CAKlB;AAMM,iCAHI,eAAe,kBACf,KAAK,QAYf;AAOM,8BAJI,eAAe;;2BA2BzB;AAMM,qCAHI,eAAe,cACf,MAAM,QAShB;AAqCM,mDAHI,MAAM,EAAE,GACN,MAAM,CAWlB;AAUM;IAHmB,KAAK,EAApB,GAAG,EAAE;IACH,MAAM,CAG4C;AAYxD,gDAJI,MAAM,wCAEJ,MAAM,CAG+C;AAuB3D,qCARI,WAAW;;;;;gBAMT,eAAe,CAmB3B;kBAvRY,OAAO,QAAQ,EAAE,GAAG;oBACpB,OAAO,QAAQ,EAAE,KAAK;qBACtB,OAAO,QAAQ,EAAE,eAAe;sBAChC,OAAO,QAAQ,EAAE,sBAAsB;yBACvC,OAAO,UAAU,EAAE,UAAU;AAL1C;;;;;;GAMG;AAEH;;;;;;GAMG;AACH;IACE;;;OAGG;IACH,mBAHW,UAAU,cACV,MAAM,EAahB;IAVC,gBAAgB;IAChB,2BAAkB;IAClB,mBAA4B;IAE5B;;;OAGG;IACH,gBAFU,GAAG,EAAE,CAEA;IACf,mBAA4B;IAG9B;;;;;;;OAOG;IACH,cAJW,GAAG;;oBAED,eAAe,CAK3B;IAED;;;;;;OAMG;IACH,aAHW,KAAK,GACH,eAAe,CAK3B;IAED;;;;;;OAMG;IACH;;oBAFa,UAAU,CAItB;CACF"}
|
package/types/lib/coding.d.ts
CHANGED
|
@@ -13,12 +13,22 @@ export interface IteratorChannel<T> {
|
|
|
13
13
|
writer: IteratorChannel_Writer<T>;
|
|
14
14
|
iterator: AsyncIterator<T>;
|
|
15
15
|
}
|
|
16
|
-
export
|
|
17
|
-
version:
|
|
16
|
+
export interface CarHeader {
|
|
17
|
+
version: 1;
|
|
18
18
|
roots: CID[];
|
|
19
|
-
}
|
|
19
|
+
}
|
|
20
|
+
export interface CarV2FixedHeader {
|
|
21
|
+
characteristics: [bigint, bigint];
|
|
22
|
+
dataOffset: number;
|
|
23
|
+
dataSize: number;
|
|
24
|
+
indexOffset: number;
|
|
25
|
+
}
|
|
26
|
+
export interface CarV2Header extends CarV2FixedHeader {
|
|
27
|
+
version: 2;
|
|
28
|
+
roots: CID[];
|
|
29
|
+
}
|
|
20
30
|
export interface CarDecoder {
|
|
21
|
-
header(): Promise<CarHeader>;
|
|
31
|
+
header(): Promise<CarHeader | CarV2Header>;
|
|
22
32
|
blocks(): AsyncGenerator<Block>;
|
|
23
33
|
blocksIndex(): AsyncGenerator<BlockIndex>;
|
|
24
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coding.d.ts","sourceRoot":"","sources":["../../lib/coding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAE1C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAErC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACrB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAA;IAEjC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;CAC3B;AAED,
|
|
1
|
+
{"version":3,"file":"coding.d.ts","sourceRoot":"","sources":["../../lib/coding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAE1C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAErC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC;IACvC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACrB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAA;IAEjC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,GAAG,EAAE,CAAA;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,GAAG,EAAE,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,IAAI,OAAO,CAAC,SAAS,GAAC,WAAW,CAAC,CAAA;IAExC,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,CAAA;IAE/B,WAAW,IAAI,cAAc,CAAC,UAAU,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAEzC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAE5C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAE1B,GAAG,EAAE,MAAM,CAAA;CACZ"}
|
package/types/lib/decoder.d.ts
CHANGED
|
@@ -1,19 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* Reads header data from a `BytesReader`. The header may either be in the form
|
|
3
|
+
* of a `CarHeader` or `CarV2Header` depending on the CAR being read.
|
|
4
|
+
*
|
|
5
|
+
* @name async decoder.readHeader(reader)
|
|
2
6
|
* @param {BytesReader} reader
|
|
3
|
-
* @
|
|
7
|
+
* @param {number} [strictVersion]
|
|
8
|
+
* @returns {Promise<CarHeader|CarV2Header>}
|
|
4
9
|
*/
|
|
5
|
-
export function readHeader(reader: BytesReader): Promise<CarHeader>;
|
|
10
|
+
export function readHeader(reader: BytesReader, strictVersion?: number | undefined): Promise<CarHeader | CarV2Header>;
|
|
6
11
|
/**
|
|
12
|
+
* Reads the leading data of an individual block from CAR data from a
|
|
13
|
+
* `BytesReader`. Returns a `BlockHeader` object which contains
|
|
14
|
+
* `{ cid, length, blockLength }` which can be used to either index the block
|
|
15
|
+
* or read the block binary data.
|
|
16
|
+
*
|
|
17
|
+
* @name async decoder.readBlockHead(reader)
|
|
7
18
|
* @param {BytesReader} reader
|
|
8
19
|
* @returns {Promise<BlockHeader>}
|
|
9
20
|
*/
|
|
10
21
|
export function readBlockHead(reader: BytesReader): Promise<BlockHeader>;
|
|
11
22
|
/**
|
|
23
|
+
* Creates a `CarDecoder` from a `BytesReader`. The `CarDecoder` is as async
|
|
24
|
+
* interface that will consume the bytes from the `BytesReader` to yield a
|
|
25
|
+
* `header()` and either `blocks()` or `blocksIndex()` data.
|
|
26
|
+
*
|
|
27
|
+
* @name decoder.createDecoder(reader)
|
|
12
28
|
* @param {BytesReader} reader
|
|
13
29
|
* @returns {CarDecoder}
|
|
14
30
|
*/
|
|
15
31
|
export function createDecoder(reader: BytesReader): CarDecoder;
|
|
16
32
|
/**
|
|
33
|
+
* Creates a `BytesReader` from a `Uint8Array`.
|
|
34
|
+
*
|
|
35
|
+
* @name decoder.bytesReader(bytes)
|
|
17
36
|
* @param {Uint8Array} bytes
|
|
18
37
|
* @returns {BytesReader}
|
|
19
38
|
*/
|
|
@@ -28,14 +47,31 @@ export function bytesReader(bytes: Uint8Array): BytesReader;
|
|
|
28
47
|
*/
|
|
29
48
|
export function chunkReader(readChunk: () => Promise<Uint8Array | null>): BytesReader;
|
|
30
49
|
/**
|
|
50
|
+
* Creates a `BytesReader` from an `AsyncIterable<Uint8Array>`, which allows for
|
|
51
|
+
* consumption of CAR data from a streaming source.
|
|
52
|
+
*
|
|
53
|
+
* @name decoder.asyncIterableReader(asyncIterable)
|
|
31
54
|
* @param {AsyncIterable<Uint8Array>} asyncIterable
|
|
32
55
|
* @returns {BytesReader}
|
|
33
56
|
*/
|
|
34
57
|
export function asyncIterableReader(asyncIterable: AsyncIterable<Uint8Array>): BytesReader;
|
|
58
|
+
/**
|
|
59
|
+
* Wraps a `BytesReader` in a limiting `BytesReader` which limits maximum read
|
|
60
|
+
* to `byteLimit` bytes. It _does not_ update `pos` of the original
|
|
61
|
+
* `BytesReader`.
|
|
62
|
+
*
|
|
63
|
+
* @name decoder.limitReader(reader, byteLimit)
|
|
64
|
+
* @param {BytesReader} reader
|
|
65
|
+
* @param {number} byteLimit
|
|
66
|
+
* @returns {BytesReader}
|
|
67
|
+
*/
|
|
68
|
+
export function limitReader(reader: BytesReader, byteLimit: number): BytesReader;
|
|
35
69
|
export type Block = import('../api').Block;
|
|
36
70
|
export type BlockHeader = import('../api').BlockHeader;
|
|
37
71
|
export type BlockIndex = import('../api').BlockIndex;
|
|
38
72
|
export type BytesReader = import('./coding').BytesReader;
|
|
39
73
|
export type CarHeader = import('./coding').CarHeader;
|
|
74
|
+
export type CarV2Header = import('./coding').CarV2Header;
|
|
75
|
+
export type CarV2FixedHeader = import('./coding').CarV2FixedHeader;
|
|
40
76
|
export type CarDecoder = import('./coding').CarDecoder;
|
|
41
77
|
//# sourceMappingURL=decoder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../lib/decoder.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../lib/decoder.js"],"names":[],"mappings":"AAmEA;;;;;;;;GAQG;AACH,mCAJW,WAAW,uCAET,QAAQ,SAAS,GAAC,WAAW,CAAC,CAgC1C;AAkDD;;;;;;;;;GASG;AACH,sCAHW,WAAW,GACT,QAAQ,WAAW,CAAC,CAiBhC;AA6BD;;;;;;;;GAQG;AACH,sCAHW,WAAW,GACT,UAAU,CA+BtB;AAED;;;;;;GAMG;AACH,mCAHW,UAAU,GACR,WAAW,CA8BvB;AAED;;;;;;;GAOG;AACH,uCAHW,MAAM,QAAQ,UAAU,GAAC,IAAI,CAAC,GAC5B,WAAW,CAsEvB;AAED;;;;;;;GAOG;AACH,mDAHW,cAAc,UAAU,CAAC,GACvB,WAAW,CAgBvB;AAED;;;;;;;;;GASG;AACH,oCAJW,WAAW,aACX,MAAM,GACJ,WAAW,CAoCvB;oBA1aY,OAAO,QAAQ,EAAE,KAAK;0BACtB,OAAO,QAAQ,EAAE,WAAW;yBAC5B,OAAO,QAAQ,EAAE,UAAU;0BAC3B,OAAO,UAAU,EAAE,WAAW;wBAC9B,OAAO,UAAU,EAAE,SAAS;0BAC5B,OAAO,UAAU,EAAE,WAAW;+BAC9B,OAAO,UAAU,EAAE,gBAAgB;yBACnC,OAAO,UAAU,EAAE,UAAU"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header-validator.d.ts","sourceRoot":"","sources":["../../lib/header-validator.js"],"names":[],"mappings":"AAsB4B,+BAAK,GAAG,GAAG,OAAO,CAAA"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @private
|
|
3
|
+
* @param {BytesReader} reader
|
|
4
|
+
* @returns {Promise<CarReader>}
|
|
5
|
+
*/
|
|
6
|
+
export function decodeReaderComplete(reader: BytesReader): Promise<CarReader>;
|
|
1
7
|
/**
|
|
2
8
|
* @typedef {import('multiformats').CID} CID
|
|
3
9
|
* @typedef {import('../api').Block} Block
|
|
4
10
|
* @typedef {import('../api').CarReader} CarReaderIface
|
|
5
11
|
* @typedef {import('./coding').BytesReader} BytesReader
|
|
12
|
+
* @typedef {import('./coding').CarHeader} CarHeader
|
|
13
|
+
* @typedef {import('./coding').CarV2Header} CarV2Header
|
|
6
14
|
*/
|
|
7
15
|
/**
|
|
8
16
|
* Provides blockstore-like access to a CAR.
|
|
@@ -23,7 +31,7 @@
|
|
|
23
31
|
* @class
|
|
24
32
|
* @implements {CarReaderIface}
|
|
25
33
|
* @property {number} version The version number of the CAR referenced by this
|
|
26
|
-
* reader (should be `1`).
|
|
34
|
+
* reader (should be `1` or `2`).
|
|
27
35
|
*/
|
|
28
36
|
export class CarReader implements CarReaderIface {
|
|
29
37
|
/**
|
|
@@ -57,13 +65,11 @@ export class CarReader implements CarReaderIface {
|
|
|
57
65
|
static fromIterable(asyncIterable: AsyncIterable<Uint8Array>): Promise<CarReader>;
|
|
58
66
|
/**
|
|
59
67
|
* @constructs CarReader
|
|
60
|
-
* @param {
|
|
61
|
-
* @param {CID[]} roots
|
|
68
|
+
* @param {CarHeader|CarV2Header} header
|
|
62
69
|
* @param {Block[]} blocks
|
|
63
70
|
*/
|
|
64
|
-
constructor(
|
|
65
|
-
|
|
66
|
-
_roots: import("multiformats").CID[];
|
|
71
|
+
constructor(header: CarHeader | CarV2Header, blocks: Block[]);
|
|
72
|
+
_header: import("./coding").CarHeader | import("./coding").CarV2Header;
|
|
67
73
|
_blocks: import("../api").Block[];
|
|
68
74
|
_keys: string[];
|
|
69
75
|
/**
|
|
@@ -71,7 +77,7 @@ export class CarReader implements CarReaderIface {
|
|
|
71
77
|
* @memberof CarReader
|
|
72
78
|
* @instance
|
|
73
79
|
*/
|
|
74
|
-
get version():
|
|
80
|
+
get version(): 1 | 2;
|
|
75
81
|
/**
|
|
76
82
|
* Get the list of roots defined by the CAR referenced by this reader. May be
|
|
77
83
|
* zero or more `CID`s.
|
|
@@ -140,4 +146,6 @@ export type CID = import('multiformats').CID;
|
|
|
140
146
|
export type Block = import('../api').Block;
|
|
141
147
|
export type CarReaderIface = import('../api').CarReader;
|
|
142
148
|
export type BytesReader = import('./coding').BytesReader;
|
|
149
|
+
export type CarHeader = import('./coding').CarHeader;
|
|
150
|
+
export type CarV2Header = import('./coding').CarV2Header;
|
|
143
151
|
//# sourceMappingURL=reader-browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader-browser.d.ts","sourceRoot":"","sources":["../../lib/reader-browser.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reader-browser.d.ts","sourceRoot":"","sources":["../../lib/reader-browser.js"],"names":[],"mappings":"AA2LA;;;;GAIG;AACH,6CAHW,WAAW,GACT,QAAQ,SAAS,CAAC,CAa9B;AAzMD;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH;IA6GE;;;;;;;;;;OAUG;IACH,wBAHW,UAAU,GACR,QAAQ,SAAS,CAAC,CAS9B;IAED;;;;;;;;;;;;;;;OAeG;IACH,mCAHW,cAAc,UAAU,CAAC,GACvB,QAAQ,SAAS,CAAC,CAS9B;IAvJD;;;;OAIG;IACH,oBAHW,SAAS,GAAC,WAAW,UACrB,KAAK,EAAE,EAMjB;IAHC,uEAAqB;IACrB,kCAAqB;IACrB,gBAAgD;IAGlD;;;;OAIG;IACH,qBAEC;IAED;;;;;;;;;OASG;IACH,YAFa,QAAQ,GAAG,EAAE,CAAC,CAM1B;IAED;;;;;;;;;;OAUG;IACH,SAHW,GAAG,GACD,QAAQ,OAAO,CAAC,CAM5B;IAED;;;;;;;;;;;;OAYG;IACH,SAHW,GAAG,GACD,QAAQ,KAAK,GAAG,SAAS,CAAC,CAOtC;IAED;;;;;;;;;;;OAWG;IACH,UAFa,eAAe,KAAK,CAAC,CAMjC;IAED;;;;;;;;;;OAUG;IACH,QAFa,eAAe,GAAG,CAAC,CAM/B;CA8CF;AAoBD,6BAA6B;kBA1MhB,OAAO,cAAc,EAAE,GAAG;oBAC1B,OAAO,QAAQ,EAAE,KAAK;6BACtB,OAAO,QAAQ,EAAE,SAAS;0BAC1B,OAAO,UAAU,EAAE,WAAW;wBAC9B,OAAO,UAAU,EAAE,SAAS;0BAC5B,OAAO,UAAU,EAAE,WAAW"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_fixtures_to_js.d.mts","sourceRoot":"","sources":["../../test/_fixtures_to_js.mjs"],"names":[],"mappings":""}
|
package/types/test/common.d.ts
CHANGED
|
@@ -37,6 +37,19 @@ export const goCarIndex: {
|
|
|
37
37
|
blockOffset: number;
|
|
38
38
|
blockLength: number;
|
|
39
39
|
}[];
|
|
40
|
+
export const goCarV2Bytes: Uint8Array;
|
|
41
|
+
export const goCarV2Roots: CID[];
|
|
42
|
+
export const goCarV2Index: {
|
|
43
|
+
blockLength: number;
|
|
44
|
+
blockOffset: number;
|
|
45
|
+
cid: CID;
|
|
46
|
+
length: number;
|
|
47
|
+
offset: number;
|
|
48
|
+
}[];
|
|
49
|
+
/** @type {{[k in string]: any}} */
|
|
50
|
+
export const goCarV2Contents: {
|
|
51
|
+
[x: string]: any;
|
|
52
|
+
};
|
|
40
53
|
/**
|
|
41
54
|
* @typedef {import('../api').Block} Block
|
|
42
55
|
* @typedef {import('@ipld/dag-pb').PBNode} PBNode
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../test/common.js"],"names":[],"mappings":"oBAUa,OAAO,QAAQ,EAAE,KAAK;qBACtB,OAAO,cAAc,EAAE,MAAM;AAmC1C;;;;;GAKG;AACH,gCALW,GAAG;UACI,MAAM;kBAAgB,GAAG,KAAK,UAAU;aAC/C,OAAO,kBAAkB,EAAE,UAAU,GACnC,QAAQ,SAAS,GAAG;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,CAAC,CAOhD;;AAED;;;;;;GAiDC;AAED;;;;GAIG;AACH,mCAJW,UAAU,aACV,MAAM,GACJ,cAAc,UAAU,CAAC,CAkBrC;AAvFD,yBAAuF;AAyFvF,kCAAw7C;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../test/common.js"],"names":[],"mappings":"oBAUa,OAAO,QAAQ,EAAE,KAAK;qBACtB,OAAO,cAAc,EAAE,MAAM;AAmC1C;;;;;GAKG;AACH,gCALW,GAAG;UACI,MAAM;kBAAgB,GAAG,KAAK,UAAU;aAC/C,OAAO,kBAAkB,EAAE,UAAU,GACnC,QAAQ,SAAS,GAAG;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,CAAC,CAOhD;;AAED;;;;;;GAiDC;AAED;;;;GAIG;AACH,mCAJW,UAAU,aACV,MAAM,GACJ,cAAc,UAAU,CAAC,CAkBrC;AAvFD,yBAAuF;AAyFvF,kCAAw7C;AAGx7C,oCAA07C;AAC17C,+BAGC;AACD;;;;;;IASC;AAED,sCAA47C;AAC57C,iCAAkF;AAClF;;;;;;IAMC;AACD,mCAAmC;AACnC;;EA+BC;AAxLD;;;GAGG;AAEH;;GAEG;AACH;IACE;;;;OAIG;IACH,mBAJW,UAAU,OACV,GAAG,UACH,GAAG,EAMb;IAHC,kBAAkB;IAClB,SAAc;IACd,YAAoB;CAEvB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export const expectations: {
|
|
2
|
+
'sample-v1.car': {
|
|
3
|
+
version: number;
|
|
4
|
+
err: null;
|
|
5
|
+
cids: string[];
|
|
6
|
+
};
|
|
7
|
+
'sample-v1-noidentity.car': {
|
|
8
|
+
version: number;
|
|
9
|
+
err: null;
|
|
10
|
+
cids: string[];
|
|
11
|
+
};
|
|
12
|
+
'sample-unixfs-v2.car': {
|
|
13
|
+
version: number;
|
|
14
|
+
err: null;
|
|
15
|
+
cids: string[];
|
|
16
|
+
};
|
|
17
|
+
'sample-rw-bs-v2.car': {
|
|
18
|
+
version: number;
|
|
19
|
+
err: null;
|
|
20
|
+
cids: string[];
|
|
21
|
+
};
|
|
22
|
+
'sample-v1-with-zero-len-section.car': {
|
|
23
|
+
version: number;
|
|
24
|
+
err: null;
|
|
25
|
+
cids: null;
|
|
26
|
+
};
|
|
27
|
+
'sample-v1-with-zero-len-section2.car': {
|
|
28
|
+
version: number;
|
|
29
|
+
err: null;
|
|
30
|
+
cids: null;
|
|
31
|
+
};
|
|
32
|
+
'sample-wrapped-v2.car': {
|
|
33
|
+
version: number;
|
|
34
|
+
err: null;
|
|
35
|
+
cids: string[];
|
|
36
|
+
};
|
|
37
|
+
'sample-rootless-v42.car': {
|
|
38
|
+
version: null;
|
|
39
|
+
err: string;
|
|
40
|
+
cids: null;
|
|
41
|
+
};
|
|
42
|
+
'sample-v1-tailing-corrupt-section.car': {
|
|
43
|
+
version: number;
|
|
44
|
+
err: null;
|
|
45
|
+
cids: null;
|
|
46
|
+
};
|
|
47
|
+
'sample-v2-corrupt-data-and-index.car': {
|
|
48
|
+
version: number;
|
|
49
|
+
err: string;
|
|
50
|
+
cids: null;
|
|
51
|
+
};
|
|
52
|
+
'sample-corrupt-pragma.car': {
|
|
53
|
+
version: null;
|
|
54
|
+
err: string;
|
|
55
|
+
cids: null;
|
|
56
|
+
};
|
|
57
|
+
'sample-v2-indexless.car': {
|
|
58
|
+
version: number;
|
|
59
|
+
err: null;
|
|
60
|
+
cids: string[];
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=fixtures-expectations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures-expectations.d.ts","sourceRoot":"","sources":["../../test/fixtures-expectations.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuqIC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../test/fixtures.js"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,mBADW,OAAO,MAAM,EAAE,MAAM,CAAC,CAgBhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-buffer-writer.d.ts","sourceRoot":"","sources":["../../test/test-buffer-writer.js"],"names":[],"mappings":""}
|