@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.
- package/LICENSE +4 -0
- package/README.md +12 -4
- package/dist/index.min.js +5 -0
- package/{types → dist/src}/api.d.ts +19 -19
- package/dist/src/api.d.ts.map +1 -0
- package/{types/lib → dist/src}/buffer-writer.d.ts +10 -10
- package/{types/lib → dist/src}/buffer-writer.d.ts.map +1 -1
- package/dist/src/coding.d.ts +41 -0
- package/dist/src/coding.d.ts.map +1 -0
- package/{types/lib → dist/src}/decoder.d.ts +3 -3
- package/{types/lib → dist/src}/decoder.d.ts.map +1 -1
- package/{types/lib → dist/src}/encoder.d.ts +2 -2
- package/{types/lib → dist/src}/encoder.d.ts.map +1 -1
- package/{types/lib → dist/src}/header-validator.d.ts +0 -0
- package/dist/src/header-validator.d.ts.map +1 -0
- package/dist/src/index-browser.d.ts +8 -0
- package/dist/src/index-browser.d.ts.map +1 -0
- package/dist/src/index.d.ts +9 -0
- package/dist/src/index.d.ts.map +1 -0
- package/{types/lib → dist/src}/indexed-reader-browser.d.ts +0 -0
- package/dist/src/indexed-reader-browser.d.ts.map +1 -0
- package/{types/lib → dist/src}/indexed-reader.d.ts +13 -13
- package/dist/src/indexed-reader.d.ts.map +1 -0
- package/{types/lib → dist/src}/indexer.d.ts +9 -9
- package/{types/lib → dist/src}/indexer.d.ts.map +1 -1
- package/{types/lib → dist/src}/iterator-channel.d.ts +0 -0
- package/{types/lib → dist/src}/iterator-channel.d.ts.map +1 -1
- package/{types/lib → dist/src}/iterator.d.ts +8 -8
- package/{types/lib → dist/src}/iterator.d.ts.map +1 -1
- package/{types/lib → dist/src}/reader-browser.d.ts +10 -10
- package/{types/lib → dist/src}/reader-browser.d.ts.map +1 -1
- package/{types/lib → dist/src}/reader.d.ts +5 -5
- package/{types/lib → dist/src}/reader.d.ts.map +1 -1
- package/{types/lib → dist/src}/writer-browser.d.ts +10 -10
- package/{types/lib → dist/src}/writer-browser.d.ts.map +1 -1
- package/{types/lib → dist/src}/writer.d.ts +4 -4
- package/{types/lib → dist/src}/writer.d.ts.map +1 -1
- package/package.json +102 -209
- package/{api.ts → src/api.ts} +14 -14
- package/{lib → src}/buffer-writer.js +5 -5
- package/src/coding.ts +56 -0
- package/{lib → src}/decoder.js +4 -4
- package/{lib → src}/encoder.js +1 -1
- package/src/header-validator.js +74 -0
- package/{lib → src}/header.ipldsch +0 -0
- package/src/index-browser.js +14 -0
- package/src/index.js +16 -0
- package/{lib → src}/indexed-reader-browser.js +0 -0
- package/{lib → src}/indexed-reader.js +9 -9
- package/{lib → src}/indexer.js +4 -4
- package/{lib → src}/iterator-channel.js +0 -0
- package/{lib → src}/iterator.js +4 -4
- package/{lib → src}/reader-browser.js +7 -7
- package/{lib → src}/reader.js +5 -5
- package/{lib → src}/writer-browser.js +7 -7
- package/{lib → src}/writer.js +3 -3
- package/LICENSE-APACHE +0 -13
- package/LICENSE-MIT +0 -7
- package/buffer-writer +0 -1
- package/car-browser.js +0 -14
- package/car.js +0 -16
- package/cjs/browser-test/common.js +0 -301
- package/cjs/browser-test/node-test-file-streams.js +0 -71
- package/cjs/browser-test/node-test-indexed-reader.js +0 -51
- package/cjs/browser-test/node-test-large.js +0 -135
- package/cjs/browser-test/node-test-raw.js +0 -68
- package/cjs/browser-test/node-test-updateroots.js +0 -78
- package/cjs/browser-test/test-buffer-writer.js +0 -330
- package/cjs/browser-test/test-errors.js +0 -90
- package/cjs/browser-test/test-indexer.js +0 -80
- package/cjs/browser-test/test-interface.js +0 -21
- package/cjs/browser-test/test-iterator.js +0 -83
- package/cjs/browser-test/test-reader.js +0 -278
- package/cjs/browser-test/test-writer.js +0 -286
- package/cjs/browser-test/verify-store-reader.js +0 -142
- package/cjs/car-browser.js +0 -18
- package/cjs/car.js +0 -20
- package/cjs/lib/buffer-writer.js +0 -164
- package/cjs/lib/decoder.js +0 -301
- package/cjs/lib/encoder.js +0 -44
- package/cjs/lib/header-validator.js +0 -29
- package/cjs/lib/indexed-reader-browser.js +0 -13
- package/cjs/lib/indexed-reader.js +0 -90
- package/cjs/lib/indexer.js +0 -41
- package/cjs/lib/iterator-channel.js +0 -77
- package/cjs/lib/iterator.js +0 -97
- package/cjs/lib/reader-browser.js +0 -62
- package/cjs/lib/reader.js +0 -38
- package/cjs/lib/writer-browser.js +0 -118
- package/cjs/lib/writer.js +0 -51
- package/cjs/node-test/common.js +0 -301
- package/cjs/node-test/node-test-file-streams.js +0 -71
- package/cjs/node-test/node-test-indexed-reader.js +0 -51
- package/cjs/node-test/node-test-large.js +0 -135
- package/cjs/node-test/node-test-raw.js +0 -68
- package/cjs/node-test/node-test-updateroots.js +0 -78
- package/cjs/node-test/test-buffer-writer.js +0 -330
- package/cjs/node-test/test-errors.js +0 -90
- package/cjs/node-test/test-indexer.js +0 -80
- package/cjs/node-test/test-interface.js +0 -21
- package/cjs/node-test/test-iterator.js +0 -83
- package/cjs/node-test/test-reader.js +0 -278
- package/cjs/node-test/test-writer.js +0 -286
- package/cjs/node-test/verify-store-reader.js +0 -142
- package/decoder +0 -1
- package/esm/browser-test/common.js +0 -274
- package/esm/browser-test/node-test-file-streams.js +0 -76
- package/esm/browser-test/node-test-indexed-reader.js +0 -53
- package/esm/browser-test/node-test-large.js +0 -109
- package/esm/browser-test/node-test-raw.js +0 -63
- package/esm/browser-test/node-test-updateroots.js +0 -76
- package/esm/browser-test/test-buffer-writer.js +0 -311
- package/esm/browser-test/test-errors.js +0 -91
- package/esm/browser-test/test-indexer.js +0 -85
- package/esm/browser-test/test-interface.js +0 -24
- package/esm/browser-test/test-iterator.js +0 -91
- package/esm/browser-test/test-reader.js +0 -270
- package/esm/browser-test/test-writer.js +0 -297
- package/esm/browser-test/verify-store-reader.js +0 -122
- package/esm/car-browser.js +0 -16
- package/esm/car.js +0 -18
- package/esm/lib/buffer-writer.js +0 -129
- package/esm/lib/decoder.js +0 -265
- package/esm/lib/encoder.js +0 -35
- package/esm/lib/header-validator.js +0 -23
- package/esm/lib/indexed-reader-browser.js +0 -6
- package/esm/lib/indexed-reader.js +0 -78
- package/esm/lib/indexer.js +0 -38
- package/esm/lib/iterator-channel.js +0 -71
- package/esm/lib/iterator.js +0 -92
- package/esm/lib/reader-browser.js +0 -57
- package/esm/lib/reader.js +0 -26
- package/esm/lib/writer-browser.js +0 -115
- package/esm/lib/writer.js +0 -42
- package/esm/node-test/common.js +0 -274
- package/esm/node-test/node-test-file-streams.js +0 -76
- package/esm/node-test/node-test-indexed-reader.js +0 -53
- package/esm/node-test/node-test-large.js +0 -109
- package/esm/node-test/node-test-raw.js +0 -63
- package/esm/node-test/node-test-updateroots.js +0 -76
- package/esm/node-test/test-buffer-writer.js +0 -311
- package/esm/node-test/test-errors.js +0 -91
- package/esm/node-test/test-indexer.js +0 -85
- package/esm/node-test/test-interface.js +0 -24
- package/esm/node-test/test-iterator.js +0 -91
- package/esm/node-test/test-reader.js +0 -270
- package/esm/node-test/test-writer.js +0 -297
- package/esm/node-test/verify-store-reader.js +0 -122
- package/esm/package.json +0 -9
- package/examples/car-to-fixture.js +0 -66
- package/examples/dump-car.js +0 -58
- package/examples/dump-index.js +0 -24
- package/examples/package.json +0 -27
- package/examples/round-trip.js +0 -45
- package/examples/test-examples.js +0 -115
- package/examples/verify-car.js +0 -87
- package/index.js +0 -1
- package/indexed-reader +0 -1
- package/indexer +0 -1
- package/iterator +0 -1
- package/lib/coding.ts +0 -56
- package/lib/header-validator.js +0 -33
- package/reader +0 -1
- package/test/_fixtures_to_js.mjs +0 -24
- package/test/common.js +0 -210
- package/test/go.car +0 -0
- package/test/go.carv2 +0 -0
- package/test/node-test-file-streams.js +0 -84
- package/test/node-test-indexed-reader.js +0 -45
- package/test/node-test-large.js +0 -112
- package/test/node-test-raw.js +0 -83
- package/test/node-test-updateroots.js +0 -89
- package/test/test-buffer-writer.js +0 -256
- package/test/test-errors.js +0 -98
- package/test/test-indexer.js +0 -87
- package/test/test-interface.js +0 -24
- package/test/test-iterator.js +0 -74
- package/test/test-reader.js +0 -245
- package/test/test-writer.js +0 -336
- package/test/verify-store-reader.js +0 -191
- package/tsconfig.json +0 -48
- package/types/api.d.ts.map +0 -1
- package/types/car-browser.d.ts +0 -8
- package/types/car-browser.d.ts.map +0 -1
- package/types/car.d.ts +0 -9
- package/types/car.d.ts.map +0 -1
- package/types/lib/coding.d.ts +0 -41
- package/types/lib/coding.d.ts.map +0 -1
- package/types/lib/header-validator.d.ts.map +0 -1
- package/types/lib/indexed-reader-browser.d.ts.map +0 -1
- package/types/lib/indexed-reader.d.ts.map +0 -1
- package/types/test/_fixtures_to_js.d.mts +0 -3
- package/types/test/_fixtures_to_js.d.mts.map +0 -1
- package/types/test/common.d.ts +0 -73
- package/types/test/common.d.ts.map +0 -1
- package/types/test/fixtures-expectations.d.ts +0 -63
- package/types/test/fixtures-expectations.d.ts.map +0 -1
- package/types/test/fixtures.d.ts +0 -3
- package/types/test/fixtures.d.ts.map +0 -1
- package/types/test/node-test-file-streams.d.ts +0 -3
- package/types/test/node-test-file-streams.d.ts.map +0 -1
- package/types/test/node-test-indexed-reader.d.ts +0 -2
- package/types/test/node-test-indexed-reader.d.ts.map +0 -1
- package/types/test/node-test-large.d.ts +0 -2
- package/types/test/node-test-large.d.ts.map +0 -1
- package/types/test/node-test-raw.d.ts +0 -2
- package/types/test/node-test-raw.d.ts.map +0 -1
- package/types/test/node-test-updateroots.d.ts +0 -2
- package/types/test/node-test-updateroots.d.ts.map +0 -1
- package/types/test/test-buffer-writer.d.ts +0 -2
- package/types/test/test-buffer-writer.d.ts.map +0 -1
- package/types/test/test-errors.d.ts +0 -2
- package/types/test/test-errors.d.ts.map +0 -1
- package/types/test/test-indexer.d.ts +0 -2
- package/types/test/test-indexer.d.ts.map +0 -1
- package/types/test/test-interface.d.ts +0 -2
- package/types/test/test-interface.d.ts.map +0 -1
- package/types/test/test-iterator.d.ts +0 -2
- package/types/test/test-iterator.d.ts.map +0 -1
- package/types/test/test-reader.d.ts +0 -2
- package/types/test/test-reader.d.ts.map +0 -1
- package/types/test/test-writer.d.ts +0 -2
- package/types/test/test-writer.d.ts.map +0 -1
- package/types/test/verify-store-reader.d.ts +0 -29
- package/types/test/verify-store-reader.d.ts.map +0 -1
- package/writer +0 -1
package/cjs/lib/indexer.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var decoder = require('./decoder.js');
|
|
6
|
-
|
|
7
|
-
class CarIndexer {
|
|
8
|
-
constructor(version, roots, iterator) {
|
|
9
|
-
this._version = version;
|
|
10
|
-
this._roots = roots;
|
|
11
|
-
this._iterator = iterator;
|
|
12
|
-
}
|
|
13
|
-
get version() {
|
|
14
|
-
return this._version;
|
|
15
|
-
}
|
|
16
|
-
async getRoots() {
|
|
17
|
-
return this._roots;
|
|
18
|
-
}
|
|
19
|
-
[Symbol.asyncIterator]() {
|
|
20
|
-
return this._iterator;
|
|
21
|
-
}
|
|
22
|
-
static async fromBytes(bytes) {
|
|
23
|
-
if (!(bytes instanceof Uint8Array)) {
|
|
24
|
-
throw new TypeError('fromBytes() requires a Uint8Array');
|
|
25
|
-
}
|
|
26
|
-
return decodeIndexerComplete(decoder.bytesReader(bytes));
|
|
27
|
-
}
|
|
28
|
-
static async fromIterable(asyncIterable) {
|
|
29
|
-
if (!asyncIterable || !(typeof asyncIterable[Symbol.asyncIterator] === 'function')) {
|
|
30
|
-
throw new TypeError('fromIterable() requires an async iterable');
|
|
31
|
-
}
|
|
32
|
-
return decodeIndexerComplete(decoder.asyncIterableReader(asyncIterable));
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
async function decodeIndexerComplete(reader) {
|
|
36
|
-
const decoder$1 = decoder.createDecoder(reader);
|
|
37
|
-
const {version, roots} = await decoder$1.header();
|
|
38
|
-
return new CarIndexer(version, roots, decoder$1.blocksIndex());
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
exports.CarIndexer = CarIndexer;
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
function noop() {
|
|
6
|
-
}
|
|
7
|
-
function create() {
|
|
8
|
-
const chunkQueue = [];
|
|
9
|
-
let drainer = null;
|
|
10
|
-
let drainerResolver = noop;
|
|
11
|
-
let ended = false;
|
|
12
|
-
let outWait = null;
|
|
13
|
-
let outWaitResolver = noop;
|
|
14
|
-
const makeDrainer = () => {
|
|
15
|
-
if (!drainer) {
|
|
16
|
-
drainer = new Promise(resolve => {
|
|
17
|
-
drainerResolver = () => {
|
|
18
|
-
drainer = null;
|
|
19
|
-
drainerResolver = noop;
|
|
20
|
-
resolve();
|
|
21
|
-
};
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
return drainer;
|
|
25
|
-
};
|
|
26
|
-
const writer = {
|
|
27
|
-
write(chunk) {
|
|
28
|
-
chunkQueue.push(chunk);
|
|
29
|
-
const drainer = makeDrainer();
|
|
30
|
-
outWaitResolver();
|
|
31
|
-
return drainer;
|
|
32
|
-
},
|
|
33
|
-
async end() {
|
|
34
|
-
ended = true;
|
|
35
|
-
const drainer = makeDrainer();
|
|
36
|
-
outWaitResolver();
|
|
37
|
-
await drainer;
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
const iterator = {
|
|
41
|
-
async next() {
|
|
42
|
-
const chunk = chunkQueue.shift();
|
|
43
|
-
if (chunk) {
|
|
44
|
-
if (chunkQueue.length === 0) {
|
|
45
|
-
drainerResolver();
|
|
46
|
-
}
|
|
47
|
-
return {
|
|
48
|
-
done: false,
|
|
49
|
-
value: chunk
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
if (ended) {
|
|
53
|
-
drainerResolver();
|
|
54
|
-
return {
|
|
55
|
-
done: true,
|
|
56
|
-
value: undefined
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
if (!outWait) {
|
|
60
|
-
outWait = new Promise(resolve => {
|
|
61
|
-
outWaitResolver = () => {
|
|
62
|
-
outWait = null;
|
|
63
|
-
outWaitResolver = noop;
|
|
64
|
-
return resolve(iterator.next());
|
|
65
|
-
};
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
return outWait;
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
return {
|
|
72
|
-
writer,
|
|
73
|
-
iterator
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
exports.create = create;
|
package/cjs/lib/iterator.js
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var decoder = require('./decoder.js');
|
|
6
|
-
|
|
7
|
-
class CarIteratorBase {
|
|
8
|
-
constructor(version, roots, iterable) {
|
|
9
|
-
this._version = version;
|
|
10
|
-
this._roots = roots;
|
|
11
|
-
this._iterable = iterable;
|
|
12
|
-
this._decoded = false;
|
|
13
|
-
}
|
|
14
|
-
get version() {
|
|
15
|
-
return this._version;
|
|
16
|
-
}
|
|
17
|
-
async getRoots() {
|
|
18
|
-
return this._roots;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
class CarBlockIterator extends CarIteratorBase {
|
|
22
|
-
[Symbol.asyncIterator]() {
|
|
23
|
-
if (this._decoded) {
|
|
24
|
-
throw new Error('Cannot decode more than once');
|
|
25
|
-
}
|
|
26
|
-
if (!this._iterable) {
|
|
27
|
-
throw new Error('Block iterable not found');
|
|
28
|
-
}
|
|
29
|
-
this._decoded = true;
|
|
30
|
-
return this._iterable[Symbol.asyncIterator]();
|
|
31
|
-
}
|
|
32
|
-
static async fromBytes(bytes) {
|
|
33
|
-
const {version, roots, iterator} = await fromBytes(bytes);
|
|
34
|
-
return new CarBlockIterator(version, roots, iterator);
|
|
35
|
-
}
|
|
36
|
-
static async fromIterable(asyncIterable) {
|
|
37
|
-
const {version, roots, iterator} = await fromIterable(asyncIterable);
|
|
38
|
-
return new CarBlockIterator(version, roots, iterator);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
class CarCIDIterator extends CarIteratorBase {
|
|
42
|
-
[Symbol.asyncIterator]() {
|
|
43
|
-
if (this._decoded) {
|
|
44
|
-
throw new Error('Cannot decode more than once');
|
|
45
|
-
}
|
|
46
|
-
if (!this._iterable) {
|
|
47
|
-
throw new Error('Block iterable not found');
|
|
48
|
-
}
|
|
49
|
-
this._decoded = true;
|
|
50
|
-
const iterable = this._iterable[Symbol.asyncIterator]();
|
|
51
|
-
return {
|
|
52
|
-
async next() {
|
|
53
|
-
const next = await iterable.next();
|
|
54
|
-
if (next.done) {
|
|
55
|
-
return next;
|
|
56
|
-
}
|
|
57
|
-
return {
|
|
58
|
-
done: false,
|
|
59
|
-
value: next.value.cid
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
static async fromBytes(bytes) {
|
|
65
|
-
const {version, roots, iterator} = await fromBytes(bytes);
|
|
66
|
-
return new CarCIDIterator(version, roots, iterator);
|
|
67
|
-
}
|
|
68
|
-
static async fromIterable(asyncIterable) {
|
|
69
|
-
const {version, roots, iterator} = await fromIterable(asyncIterable);
|
|
70
|
-
return new CarCIDIterator(version, roots, iterator);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
async function fromBytes(bytes) {
|
|
74
|
-
if (!(bytes instanceof Uint8Array)) {
|
|
75
|
-
throw new TypeError('fromBytes() requires a Uint8Array');
|
|
76
|
-
}
|
|
77
|
-
return decodeIterator(decoder.bytesReader(bytes));
|
|
78
|
-
}
|
|
79
|
-
async function fromIterable(asyncIterable) {
|
|
80
|
-
if (!asyncIterable || !(typeof asyncIterable[Symbol.asyncIterator] === 'function')) {
|
|
81
|
-
throw new TypeError('fromIterable() requires an async iterable');
|
|
82
|
-
}
|
|
83
|
-
return decodeIterator(decoder.asyncIterableReader(asyncIterable));
|
|
84
|
-
}
|
|
85
|
-
async function decodeIterator(reader) {
|
|
86
|
-
const decoder$1 = decoder.createDecoder(reader);
|
|
87
|
-
const {version, roots} = await decoder$1.header();
|
|
88
|
-
return {
|
|
89
|
-
version,
|
|
90
|
-
roots,
|
|
91
|
-
iterator: decoder$1.blocks()
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
exports.CarBlockIterator = CarBlockIterator;
|
|
96
|
-
exports.CarCIDIterator = CarCIDIterator;
|
|
97
|
-
exports.CarIteratorBase = CarIteratorBase;
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var decoder = require('./decoder.js');
|
|
6
|
-
|
|
7
|
-
class CarReader {
|
|
8
|
-
constructor(header, blocks) {
|
|
9
|
-
this._header = header;
|
|
10
|
-
this._blocks = blocks;
|
|
11
|
-
this._keys = blocks.map(b => b.cid.toString());
|
|
12
|
-
}
|
|
13
|
-
get version() {
|
|
14
|
-
return this._header.version;
|
|
15
|
-
}
|
|
16
|
-
async getRoots() {
|
|
17
|
-
return this._header.roots;
|
|
18
|
-
}
|
|
19
|
-
async has(key) {
|
|
20
|
-
return this._keys.indexOf(key.toString()) > -1;
|
|
21
|
-
}
|
|
22
|
-
async get(key) {
|
|
23
|
-
const index = this._keys.indexOf(key.toString());
|
|
24
|
-
return index > -1 ? this._blocks[index] : undefined;
|
|
25
|
-
}
|
|
26
|
-
async *blocks() {
|
|
27
|
-
for (const block of this._blocks) {
|
|
28
|
-
yield block;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
async *cids() {
|
|
32
|
-
for (const block of this._blocks) {
|
|
33
|
-
yield block.cid;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
static async fromBytes(bytes) {
|
|
37
|
-
if (!(bytes instanceof Uint8Array)) {
|
|
38
|
-
throw new TypeError('fromBytes() requires a Uint8Array');
|
|
39
|
-
}
|
|
40
|
-
return decodeReaderComplete(decoder.bytesReader(bytes));
|
|
41
|
-
}
|
|
42
|
-
static async fromIterable(asyncIterable) {
|
|
43
|
-
if (!asyncIterable || !(typeof asyncIterable[Symbol.asyncIterator] === 'function')) {
|
|
44
|
-
throw new TypeError('fromIterable() requires an async iterable');
|
|
45
|
-
}
|
|
46
|
-
return decodeReaderComplete(decoder.asyncIterableReader(asyncIterable));
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
async function decodeReaderComplete(reader) {
|
|
50
|
-
const decoder$1 = decoder.createDecoder(reader);
|
|
51
|
-
const header = await decoder$1.header();
|
|
52
|
-
const blocks = [];
|
|
53
|
-
for await (const block of decoder$1.blocks()) {
|
|
54
|
-
blocks.push(block);
|
|
55
|
-
}
|
|
56
|
-
return new CarReader(header, blocks);
|
|
57
|
-
}
|
|
58
|
-
const __browser = true;
|
|
59
|
-
|
|
60
|
-
exports.CarReader = CarReader;
|
|
61
|
-
exports.__browser = __browser;
|
|
62
|
-
exports.decodeReaderComplete = decodeReaderComplete;
|
package/cjs/lib/reader.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var fs = require('fs');
|
|
6
|
-
var util = require('util');
|
|
7
|
-
var readerBrowser = require('./reader-browser.js');
|
|
8
|
-
|
|
9
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
|
-
|
|
11
|
-
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
12
|
-
|
|
13
|
-
const fsread = util.promisify(fs__default["default"].read);
|
|
14
|
-
class CarReader extends readerBrowser.CarReader {
|
|
15
|
-
static async readRaw(fd, blockIndex) {
|
|
16
|
-
const {cid, blockLength, blockOffset} = blockIndex;
|
|
17
|
-
const bytes = new Uint8Array(blockLength);
|
|
18
|
-
let read;
|
|
19
|
-
if (typeof fd === 'number') {
|
|
20
|
-
read = (await fsread(fd, bytes, 0, blockLength, blockOffset)).bytesRead;
|
|
21
|
-
} else if (typeof fd === 'object' && typeof fd.read === 'function') {
|
|
22
|
-
read = (await fd.read(bytes, 0, blockLength, blockOffset)).bytesRead;
|
|
23
|
-
} else {
|
|
24
|
-
throw new TypeError('Bad fd');
|
|
25
|
-
}
|
|
26
|
-
if (read !== blockLength) {
|
|
27
|
-
throw new Error(`Failed to read entire block (${ read } instead of ${ blockLength })`);
|
|
28
|
-
}
|
|
29
|
-
return {
|
|
30
|
-
cid,
|
|
31
|
-
bytes
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
const __browser = false;
|
|
36
|
-
|
|
37
|
-
exports.CarReader = CarReader;
|
|
38
|
-
exports.__browser = __browser;
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var cid = require('multiformats/cid');
|
|
6
|
-
var encoder = require('./encoder.js');
|
|
7
|
-
var iteratorChannel = require('./iterator-channel.js');
|
|
8
|
-
var decoder = require('./decoder.js');
|
|
9
|
-
|
|
10
|
-
class CarWriter {
|
|
11
|
-
constructor(roots, encoder) {
|
|
12
|
-
this._encoder = encoder;
|
|
13
|
-
this._mutex = encoder.setRoots(roots);
|
|
14
|
-
this._ended = false;
|
|
15
|
-
}
|
|
16
|
-
async put(block) {
|
|
17
|
-
if (!(block.bytes instanceof Uint8Array) || !block.cid) {
|
|
18
|
-
throw new TypeError('Can only write {cid, bytes} objects');
|
|
19
|
-
}
|
|
20
|
-
if (this._ended) {
|
|
21
|
-
throw new Error('Already closed');
|
|
22
|
-
}
|
|
23
|
-
const cid$1 = cid.CID.asCID(block.cid);
|
|
24
|
-
if (!cid$1) {
|
|
25
|
-
throw new TypeError('Can only write {cid, bytes} objects');
|
|
26
|
-
}
|
|
27
|
-
this._mutex = this._mutex.then(() => this._encoder.writeBlock({
|
|
28
|
-
cid: cid$1,
|
|
29
|
-
bytes: block.bytes
|
|
30
|
-
}));
|
|
31
|
-
return this._mutex;
|
|
32
|
-
}
|
|
33
|
-
async close() {
|
|
34
|
-
if (this._ended) {
|
|
35
|
-
throw new Error('Already closed');
|
|
36
|
-
}
|
|
37
|
-
await this._mutex;
|
|
38
|
-
this._ended = true;
|
|
39
|
-
return this._encoder.close();
|
|
40
|
-
}
|
|
41
|
-
static create(roots) {
|
|
42
|
-
roots = toRoots(roots);
|
|
43
|
-
const {encoder, iterator} = encodeWriter();
|
|
44
|
-
const writer = new CarWriter(roots, encoder);
|
|
45
|
-
const out = new CarWriterOut(iterator);
|
|
46
|
-
return {
|
|
47
|
-
writer,
|
|
48
|
-
out
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
static createAppender() {
|
|
52
|
-
const {encoder, iterator} = encodeWriter();
|
|
53
|
-
encoder.setRoots = () => Promise.resolve();
|
|
54
|
-
const writer = new CarWriter([], encoder);
|
|
55
|
-
const out = new CarWriterOut(iterator);
|
|
56
|
-
return {
|
|
57
|
-
writer,
|
|
58
|
-
out
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
static async updateRootsInBytes(bytes, roots) {
|
|
62
|
-
const reader = decoder.bytesReader(bytes);
|
|
63
|
-
await decoder.readHeader(reader);
|
|
64
|
-
const newHeader = encoder.createHeader(roots);
|
|
65
|
-
if (Number(reader.pos) !== newHeader.length) {
|
|
66
|
-
throw new Error(`updateRoots() can only overwrite a header of the same length (old header is ${ reader.pos } bytes, new header is ${ newHeader.length } bytes)`);
|
|
67
|
-
}
|
|
68
|
-
bytes.set(newHeader, 0);
|
|
69
|
-
return bytes;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
class CarWriterOut {
|
|
73
|
-
constructor(iterator) {
|
|
74
|
-
this._iterator = iterator;
|
|
75
|
-
}
|
|
76
|
-
[Symbol.asyncIterator]() {
|
|
77
|
-
if (this._iterating) {
|
|
78
|
-
throw new Error('Multiple iterator not supported');
|
|
79
|
-
}
|
|
80
|
-
this._iterating = true;
|
|
81
|
-
return this._iterator;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
function encodeWriter() {
|
|
85
|
-
const iw = iteratorChannel.create();
|
|
86
|
-
const {writer, iterator} = iw;
|
|
87
|
-
const encoder$1 = encoder.createEncoder(writer);
|
|
88
|
-
return {
|
|
89
|
-
encoder: encoder$1,
|
|
90
|
-
iterator
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
function toRoots(roots) {
|
|
94
|
-
if (roots === undefined) {
|
|
95
|
-
return [];
|
|
96
|
-
}
|
|
97
|
-
if (!Array.isArray(roots)) {
|
|
98
|
-
const cid$1 = cid.CID.asCID(roots);
|
|
99
|
-
if (!cid$1) {
|
|
100
|
-
throw new TypeError('roots must be a single CID or an array of CIDs');
|
|
101
|
-
}
|
|
102
|
-
return [cid$1];
|
|
103
|
-
}
|
|
104
|
-
const _roots = [];
|
|
105
|
-
for (const root of roots) {
|
|
106
|
-
const _root = cid.CID.asCID(root);
|
|
107
|
-
if (!_root) {
|
|
108
|
-
throw new TypeError('roots must be a single CID or an array of CIDs');
|
|
109
|
-
}
|
|
110
|
-
_roots.push(_root);
|
|
111
|
-
}
|
|
112
|
-
return _roots;
|
|
113
|
-
}
|
|
114
|
-
const __browser = true;
|
|
115
|
-
|
|
116
|
-
exports.CarWriter = CarWriter;
|
|
117
|
-
exports.CarWriterOut = CarWriterOut;
|
|
118
|
-
exports.__browser = __browser;
|
package/cjs/lib/writer.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var fs = require('fs');
|
|
6
|
-
var util = require('util');
|
|
7
|
-
var writerBrowser = require('./writer-browser.js');
|
|
8
|
-
var decoder = require('./decoder.js');
|
|
9
|
-
var encoder = require('./encoder.js');
|
|
10
|
-
|
|
11
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
|
-
|
|
13
|
-
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
14
|
-
|
|
15
|
-
const fsread = util.promisify(fs__default["default"].read);
|
|
16
|
-
const fswrite = util.promisify(fs__default["default"].write);
|
|
17
|
-
class CarWriter extends writerBrowser.CarWriter {
|
|
18
|
-
static async updateRootsInFile(fd, roots) {
|
|
19
|
-
const chunkSize = 256;
|
|
20
|
-
let bytes;
|
|
21
|
-
let offset = 0;
|
|
22
|
-
let readChunk;
|
|
23
|
-
if (typeof fd === 'number') {
|
|
24
|
-
readChunk = async () => (await fsread(fd, bytes, 0, chunkSize, offset)).bytesRead;
|
|
25
|
-
} else if (typeof fd === 'object' && typeof fd.read === 'function') {
|
|
26
|
-
readChunk = async () => (await fd.read(bytes, 0, chunkSize, offset)).bytesRead;
|
|
27
|
-
} else {
|
|
28
|
-
throw new TypeError('Bad fd');
|
|
29
|
-
}
|
|
30
|
-
const fdReader = decoder.chunkReader(async () => {
|
|
31
|
-
bytes = new Uint8Array(chunkSize);
|
|
32
|
-
const read = await readChunk();
|
|
33
|
-
offset += read;
|
|
34
|
-
return read < chunkSize ? bytes.subarray(0, read) : bytes;
|
|
35
|
-
});
|
|
36
|
-
await decoder.readHeader(fdReader);
|
|
37
|
-
const newHeader = encoder.createHeader(roots);
|
|
38
|
-
if (fdReader.pos !== newHeader.length) {
|
|
39
|
-
throw new Error(`updateRoots() can only overwrite a header of the same length (old header is ${ fdReader.pos } bytes, new header is ${ newHeader.length } bytes)`);
|
|
40
|
-
}
|
|
41
|
-
if (typeof fd === 'number') {
|
|
42
|
-
await fswrite(fd, newHeader, 0, newHeader.length, 0);
|
|
43
|
-
} else if (typeof fd === 'object' && typeof fd.read === 'function') {
|
|
44
|
-
await fd.write(newHeader, 0, newHeader.length, 0);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
const __browser = false;
|
|
49
|
-
|
|
50
|
-
exports.CarWriter = CarWriter;
|
|
51
|
-
exports.__browser = __browser;
|