@atproto/repo 0.8.8 → 0.8.10
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/CHANGELOG.md +20 -0
- package/dist/block-map.d.ts +5 -1
- package/dist/block-map.d.ts.map +1 -1
- package/dist/block-map.js +31 -15
- package/dist/block-map.js.map +1 -1
- package/dist/car.d.ts +10 -0
- package/dist/car.d.ts.map +1 -1
- package/dist/car.js +69 -27
- package/dist/car.js.map +1 -1
- package/dist/parse.js +1 -1
- package/dist/parse.js.map +1 -1
- package/dist/repo.d.ts.map +1 -1
- package/dist/repo.js +3 -3
- package/dist/repo.js.map +1 -1
- package/package.json +4 -4
- package/src/block-map.ts +37 -17
- package/src/car.ts +70 -28
- package/src/parse.ts +1 -1
- package/src/repo.ts +2 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @atproto/repo
|
|
2
2
|
|
|
3
|
+
## 0.8.10
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#4223](https://github.com/bluesky-social/atproto/pull/4223) [`8dd77bad2`](https://github.com/bluesky-social/atproto/commit/8dd77bad2fdee20e39d3787198d960c19d8df3d0) Thanks [@dholms](https://github.com/dholms)! - Ensure that reading CAR files is actually done asynchronously
|
|
8
|
+
|
|
9
|
+
## 0.8.9
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#4169](https://github.com/bluesky-social/atproto/pull/4169) [`055a413fb`](https://github.com/bluesky-social/atproto/commit/055a413fba4fab510ec899377154f1204ab12099) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add iterator support to the `BlockMap` class
|
|
14
|
+
|
|
15
|
+
- [#4169](https://github.com/bluesky-social/atproto/pull/4169) [`055a413fb`](https://github.com/bluesky-social/atproto/commit/055a413fba4fab510ec899377154f1204ab12099) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Small performance improvement
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [[`055a413fb`](https://github.com/bluesky-social/atproto/commit/055a413fba4fab510ec899377154f1204ab12099)]:
|
|
18
|
+
- @atproto/common-web@0.4.3
|
|
19
|
+
- @atproto/common@0.4.12
|
|
20
|
+
- @atproto/lexicon@0.5.1
|
|
21
|
+
- @atproto/crypto@0.4.4
|
|
22
|
+
|
|
3
23
|
## 0.8.8
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
package/dist/block-map.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { CID } from 'multiformats/cid';
|
|
2
2
|
import { LexValue } from '@atproto/lexicon';
|
|
3
|
-
export declare class BlockMap {
|
|
3
|
+
export declare class BlockMap implements Iterable<[cid: CID, bytes: Uint8Array]> {
|
|
4
4
|
private map;
|
|
5
|
+
constructor(entries?: Iterable<readonly [cid: CID, bytes: Uint8Array]>);
|
|
5
6
|
add(value: LexValue): Promise<CID>;
|
|
6
7
|
set(cid: CID, bytes: Uint8Array): BlockMap;
|
|
7
8
|
get(cid: CID): Uint8Array | undefined;
|
|
@@ -19,6 +20,9 @@ export declare class BlockMap {
|
|
|
19
20
|
get size(): number;
|
|
20
21
|
get byteSize(): number;
|
|
21
22
|
equals(other: BlockMap): boolean;
|
|
23
|
+
keys(): Generator<CID, void, unknown>;
|
|
24
|
+
values(): Generator<Uint8Array, void, unknown>;
|
|
25
|
+
[Symbol.iterator](): Generator<[CID, Uint8Array], void, unknown>;
|
|
22
26
|
}
|
|
23
27
|
type Entry = {
|
|
24
28
|
cid: CID;
|
package/dist/block-map.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-map.d.ts","sourceRoot":"","sources":["../src/block-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC,OAAO,EAAE,QAAQ,EAAa,MAAM,kBAAkB,CAAA;AAEtD,qBAAa,QAAQ;
|
|
1
|
+
{"version":3,"file":"block-map.d.ts","sourceRoot":"","sources":["../src/block-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC,OAAO,EAAE,QAAQ,EAAa,MAAM,kBAAkB,CAAA;AAEtD,qBAAa,QAAS,YAAW,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAqC;gBAEpC,OAAO,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAQhE,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC;IAMxC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,QAAQ;IAK1C,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU,GAAG,SAAS;IAIrC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ;IAK1B,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG;QAAE,MAAM,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,GAAG,EAAE,CAAA;KAAE;IAc1D,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAItB,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAIxD,OAAO,IAAI,KAAK,EAAE;IAIlB,IAAI,IAAI,GAAG,EAAE;IAIb,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ;IAKjC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,QAAQ,IAAI,MAAM,CAIrB;IAED,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAc/B,IAAI,IAAI,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC;IAMrC,MAAM,IAAI,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC;IAI9C,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC;CAKlE;AAMD,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,GAAG,CAAA;IACR,KAAK,EAAE,UAAU,CAAA;CAClB,CAAA;AAED,eAAe,QAAQ,CAAA"}
|
package/dist/block-map.js
CHANGED
|
@@ -39,13 +39,18 @@ const uint8arrays = __importStar(require("uint8arrays"));
|
|
|
39
39
|
const common_1 = require("@atproto/common");
|
|
40
40
|
const lexicon_1 = require("@atproto/lexicon");
|
|
41
41
|
class BlockMap {
|
|
42
|
-
constructor() {
|
|
42
|
+
constructor(entries) {
|
|
43
43
|
Object.defineProperty(this, "map", {
|
|
44
44
|
enumerable: true,
|
|
45
45
|
configurable: true,
|
|
46
46
|
writable: true,
|
|
47
47
|
value: new Map()
|
|
48
48
|
});
|
|
49
|
+
if (entries) {
|
|
50
|
+
for (const [cid, bytes] of entries) {
|
|
51
|
+
this.set(cid, bytes);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
49
54
|
}
|
|
50
55
|
async add(value) {
|
|
51
56
|
const block = await (0, common_1.dataToCborBlock)((0, lexicon_1.lexToIpld)(value));
|
|
@@ -84,22 +89,18 @@ class BlockMap {
|
|
|
84
89
|
this.map.clear();
|
|
85
90
|
}
|
|
86
91
|
forEach(cb) {
|
|
87
|
-
|
|
92
|
+
for (const [cid, bytes] of this)
|
|
93
|
+
cb(bytes, cid);
|
|
88
94
|
}
|
|
89
95
|
entries() {
|
|
90
|
-
|
|
91
|
-
this.forEach((bytes, cid) => {
|
|
92
|
-
entries.push({ cid, bytes });
|
|
93
|
-
});
|
|
94
|
-
return entries;
|
|
96
|
+
return Array.from(this, toEntry);
|
|
95
97
|
}
|
|
96
98
|
cids() {
|
|
97
|
-
return
|
|
99
|
+
return Array.from(this.keys());
|
|
98
100
|
}
|
|
99
101
|
addMap(toAdd) {
|
|
100
|
-
|
|
102
|
+
for (const [cid, bytes] of toAdd)
|
|
101
103
|
this.set(cid, bytes);
|
|
102
|
-
});
|
|
103
104
|
return this;
|
|
104
105
|
}
|
|
105
106
|
get size() {
|
|
@@ -107,26 +108,41 @@ class BlockMap {
|
|
|
107
108
|
}
|
|
108
109
|
get byteSize() {
|
|
109
110
|
let size = 0;
|
|
110
|
-
this.
|
|
111
|
+
for (const bytes of this.values())
|
|
111
112
|
size += bytes.length;
|
|
112
|
-
});
|
|
113
113
|
return size;
|
|
114
114
|
}
|
|
115
115
|
equals(other) {
|
|
116
116
|
if (this.size !== other.size) {
|
|
117
117
|
return false;
|
|
118
118
|
}
|
|
119
|
-
for (const
|
|
120
|
-
const otherBytes = other.get(
|
|
119
|
+
for (const [cid, bytes] of this) {
|
|
120
|
+
const otherBytes = other.get(cid);
|
|
121
121
|
if (!otherBytes)
|
|
122
122
|
return false;
|
|
123
|
-
if (!uint8arrays.equals(
|
|
123
|
+
if (!uint8arrays.equals(bytes, otherBytes)) {
|
|
124
124
|
return false;
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
return true;
|
|
128
128
|
}
|
|
129
|
+
*keys() {
|
|
130
|
+
for (const key of this.map.keys()) {
|
|
131
|
+
yield cid_1.CID.parse(key);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
*values() {
|
|
135
|
+
yield* this.map.values();
|
|
136
|
+
}
|
|
137
|
+
*[Symbol.iterator]() {
|
|
138
|
+
for (const [key, value] of this.map) {
|
|
139
|
+
yield [cid_1.CID.parse(key), value];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
129
142
|
}
|
|
130
143
|
exports.BlockMap = BlockMap;
|
|
144
|
+
function toEntry([cid, bytes]) {
|
|
145
|
+
return { cid, bytes };
|
|
146
|
+
}
|
|
131
147
|
exports.default = BlockMap;
|
|
132
148
|
//# sourceMappingURL=block-map.js.map
|
package/dist/block-map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-map.js","sourceRoot":"","sources":["../src/block-map.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAsC;AACtC,yDAA0C;AAC1C,4CAAiD;AACjD,8CAAsD;AAEtD,MAAa,QAAQ;
|
|
1
|
+
{"version":3,"file":"block-map.js","sourceRoot":"","sources":["../src/block-map.ts"],"names":[],"mappings":"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"}
|
package/dist/car.d.ts
CHANGED
|
@@ -25,5 +25,15 @@ export declare const readCarStream: (car: Iterable<Uint8Array> | AsyncIterable<U
|
|
|
25
25
|
roots: CID[];
|
|
26
26
|
blocks: CarBlockIterable;
|
|
27
27
|
}>;
|
|
28
|
+
export declare const readCarReader: (reader: BytesReader, opts?: ReadCarOptions) => Promise<{
|
|
29
|
+
roots: CID[];
|
|
30
|
+
blocks: CarBlockIterable;
|
|
31
|
+
}>;
|
|
28
32
|
export declare function verifyIncomingCarBlocks(car: AsyncIterable<CarBlock>): AsyncGenerator<CarBlock, void, unknown>;
|
|
33
|
+
interface BytesReader {
|
|
34
|
+
isDone: boolean;
|
|
35
|
+
read(bytesToRead: number): Promise<Uint8Array>;
|
|
36
|
+
close(): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
29
39
|
//# sourceMappingURL=car.d.ts.map
|
package/dist/car.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"car.d.ts","sourceRoot":"","sources":["../src/car.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"car.d.ts","sourceRoot":"","sources":["../src/car.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAUtC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,wBAAuB,cAAc,CACnC,IAAI,EAAE,GAAG,GAAG,IAAI,EAChB,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAC9B,aAAa,CAAC,UAAU,CAAC,CAgB3B;AAED,eAAO,MAAM,eAAe,GAC1B,MAAM,GAAG,GAAG,IAAI,EAChB,QAAQ,QAAQ,KACf,OAAO,CAAC,UAAU,CAGpB,CAAA;AAED,eAAO,MAAM,iBAAiB,GAC5B,MAAM,GAAG,GAAG,IAAI,EAChB,QAAQ,QAAQ,KACf,aAAa,CAAC,UAAU,CAE1B,CAAA;AAQD,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,OAAO,GAClB,OAAO,UAAU,EACjB,OAAO,cAAc,KACpB,OAAO,CAAC;IAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAA;CAAE,CAO5C,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,OAAO,UAAU,EACjB,OAAO,cAAc,KACpB,OAAO,CAAC;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAA;CAAE,CAUzC,CAAA;AACD,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG;IACvE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,GACxB,KAAK,QAAQ,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,EACrD,OAAO,cAAc,KACpB,OAAO,CAAC;IACT,KAAK,EAAE,GAAG,EAAE,CAAA;IACZ,MAAM,EAAE,gBAAgB,CAAA;CACzB,CAEA,CAAA;AAED,eAAO,MAAM,aAAa,GACxB,QAAQ,WAAW,EACnB,OAAO,cAAc,KACpB,OAAO,CAAC;IACT,KAAK,EAAE,GAAG,EAAE,CAAA;IACZ,MAAM,EAAE,gBAAgB,CAAA;CACzB,CAmBA,CAAA;AAoDD,wBAAuB,uBAAuB,CAC5C,GAAG,EAAE,aAAa,CAAC,QAAQ,CAAC,GAC3B,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAKzC;AAuBD,UAAU,WAAW;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAC9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB"}
|
package/dist/car.js
CHANGED
|
@@ -33,9 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.readCarStream = exports.readCarWithRoot = exports.readCar = exports.blocksToCarStream = exports.blocksToCarFile = void 0;
|
|
36
|
+
exports.readCarReader = exports.readCarStream = exports.readCarWithRoot = exports.readCar = exports.blocksToCarStream = exports.blocksToCarFile = void 0;
|
|
37
37
|
exports.writeCarStream = writeCarStream;
|
|
38
38
|
exports.verifyIncomingCarBlocks = verifyIncomingCarBlocks;
|
|
39
|
+
const promises_1 = require("node:timers/promises");
|
|
39
40
|
const cbor = __importStar(require("@ipld/dag-cbor"));
|
|
40
41
|
const ui8 = __importStar(require("uint8arrays"));
|
|
41
42
|
const varint = __importStar(require("varint"));
|
|
@@ -69,7 +70,7 @@ async function* iterateBlocks(blocks) {
|
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
72
|
const readCar = async (bytes, opts) => {
|
|
72
|
-
const { roots, blocks } = await (0, exports.
|
|
73
|
+
const { roots, blocks } = await (0, exports.readCarReader)(new Ui8Reader(bytes), opts);
|
|
73
74
|
const blockMap = new block_map_1.BlockMap();
|
|
74
75
|
for await (const block of blocks) {
|
|
75
76
|
blockMap.set(block.cid, block.bytes);
|
|
@@ -90,9 +91,12 @@ const readCarWithRoot = async (bytes, opts) => {
|
|
|
90
91
|
};
|
|
91
92
|
exports.readCarWithRoot = readCarWithRoot;
|
|
92
93
|
const readCarStream = async (car, opts) => {
|
|
93
|
-
|
|
94
|
+
return (0, exports.readCarReader)(new BufferedReader(car), opts);
|
|
95
|
+
};
|
|
96
|
+
exports.readCarStream = readCarStream;
|
|
97
|
+
const readCarReader = async (reader, opts) => {
|
|
94
98
|
try {
|
|
95
|
-
const headerSize = await
|
|
99
|
+
const headerSize = await readVarint(reader);
|
|
96
100
|
if (headerSize === null) {
|
|
97
101
|
throw new Error('Could not parse CAR header');
|
|
98
102
|
}
|
|
@@ -111,7 +115,7 @@ const readCarStream = async (car, opts) => {
|
|
|
111
115
|
throw err;
|
|
112
116
|
}
|
|
113
117
|
};
|
|
114
|
-
exports.
|
|
118
|
+
exports.readCarReader = readCarReader;
|
|
115
119
|
const readCarBlocksIter = (reader, opts) => {
|
|
116
120
|
let generator = readCarBlocksIterGenerator(reader);
|
|
117
121
|
if (!opts?.skipCidVerification) {
|
|
@@ -133,9 +137,10 @@ const readCarBlocksIter = (reader, opts) => {
|
|
|
133
137
|
});
|
|
134
138
|
};
|
|
135
139
|
async function* readCarBlocksIterGenerator(reader) {
|
|
140
|
+
let blocks = 0;
|
|
136
141
|
try {
|
|
137
142
|
while (!reader.isDone) {
|
|
138
|
-
const blockSize = await
|
|
143
|
+
const blockSize = await readVarint(reader);
|
|
139
144
|
if (blockSize === null) {
|
|
140
145
|
break;
|
|
141
146
|
}
|
|
@@ -143,6 +148,12 @@ async function* readCarBlocksIterGenerator(reader) {
|
|
|
143
148
|
const cid = (0, common_1.parseCidFromBytes)(blockBytes.subarray(0, 36));
|
|
144
149
|
const bytes = blockBytes.subarray(36);
|
|
145
150
|
yield { cid, bytes };
|
|
151
|
+
// yield to the event loop every 25 blocks
|
|
152
|
+
// in the case the incoming CAR is synchronous, this can end up jamming up the thread
|
|
153
|
+
blocks++;
|
|
154
|
+
if (blocks % 25 === 0) {
|
|
155
|
+
await (0, promises_1.setImmediate)();
|
|
156
|
+
}
|
|
146
157
|
}
|
|
147
158
|
}
|
|
148
159
|
finally {
|
|
@@ -155,6 +166,58 @@ async function* verifyIncomingCarBlocks(car) {
|
|
|
155
166
|
yield block;
|
|
156
167
|
}
|
|
157
168
|
}
|
|
169
|
+
const readVarint = async (reader) => {
|
|
170
|
+
let done = false;
|
|
171
|
+
const bytes = [];
|
|
172
|
+
while (!done) {
|
|
173
|
+
const byte = await reader.read(1);
|
|
174
|
+
if (byte.byteLength === 0) {
|
|
175
|
+
if (bytes.length > 0) {
|
|
176
|
+
throw new Error('could not parse varint');
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
bytes.push(byte);
|
|
183
|
+
if (byte[0] < 128) {
|
|
184
|
+
done = true;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const concatted = ui8.concat(bytes);
|
|
188
|
+
return varint.decode(concatted);
|
|
189
|
+
};
|
|
190
|
+
class Ui8Reader {
|
|
191
|
+
constructor(bytes) {
|
|
192
|
+
Object.defineProperty(this, "bytes", {
|
|
193
|
+
enumerable: true,
|
|
194
|
+
configurable: true,
|
|
195
|
+
writable: true,
|
|
196
|
+
value: bytes
|
|
197
|
+
});
|
|
198
|
+
Object.defineProperty(this, "idx", {
|
|
199
|
+
enumerable: true,
|
|
200
|
+
configurable: true,
|
|
201
|
+
writable: true,
|
|
202
|
+
value: 0
|
|
203
|
+
});
|
|
204
|
+
Object.defineProperty(this, "isDone", {
|
|
205
|
+
enumerable: true,
|
|
206
|
+
configurable: true,
|
|
207
|
+
writable: true,
|
|
208
|
+
value: false
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
async read(bytesToRead) {
|
|
212
|
+
const value = this.bytes.subarray(this.idx, this.idx + bytesToRead);
|
|
213
|
+
this.idx += bytesToRead;
|
|
214
|
+
if (this.idx >= this.bytes.length) {
|
|
215
|
+
this.isDone = true;
|
|
216
|
+
}
|
|
217
|
+
return value;
|
|
218
|
+
}
|
|
219
|
+
async close() { }
|
|
220
|
+
}
|
|
158
221
|
class BufferedReader {
|
|
159
222
|
constructor(stream) {
|
|
160
223
|
Object.defineProperty(this, "buffer", {
|
|
@@ -186,27 +249,6 @@ class BufferedReader {
|
|
|
186
249
|
this.buffer = this.buffer.subarray(bytesToRead);
|
|
187
250
|
return value;
|
|
188
251
|
}
|
|
189
|
-
async readVarint() {
|
|
190
|
-
let done = false;
|
|
191
|
-
const bytes = [];
|
|
192
|
-
while (!done) {
|
|
193
|
-
const byte = await this.read(1);
|
|
194
|
-
if (byte.byteLength === 0) {
|
|
195
|
-
if (bytes.length > 0) {
|
|
196
|
-
throw new Error('could not parse varint');
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
return null;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
bytes.push(byte);
|
|
203
|
-
if (byte[0] < 128) {
|
|
204
|
-
done = true;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
const concatted = ui8.concat(bytes);
|
|
208
|
-
return varint.decode(concatted);
|
|
209
|
-
}
|
|
210
252
|
async readUntilBuffered(bytesToRead) {
|
|
211
253
|
if (this.isDone) {
|
|
212
254
|
return;
|
package/dist/car.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"car.js","sourceRoot":"","sources":["../src/car.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"car.js","sourceRoot":"","sources":["../src/car.ts"],"names":[],"mappings":"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"}
|
package/dist/parse.js
CHANGED
|
@@ -9,7 +9,7 @@ const getAndParseRecord = async (blocks, cid) => {
|
|
|
9
9
|
if (!bytes) {
|
|
10
10
|
throw new error_1.MissingBlockError(cid, 'record');
|
|
11
11
|
}
|
|
12
|
-
const record =
|
|
12
|
+
const record = (0, util_1.cborToLexRecord)(bytes);
|
|
13
13
|
return { record, bytes };
|
|
14
14
|
};
|
|
15
15
|
exports.getAndParseRecord = getAndParseRecord;
|
package/dist/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":";;;AACA,4CAAmD;AAGnD,mCAAkE;AAClE,iCAAwC;AAEjC,MAAM,iBAAiB,GAAG,KAAK,EACpC,MAAgB,EAChB,GAAQ,EAC4C,EAAE;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,yBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC5C,CAAC;IACD,MAAM,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":";;;AACA,4CAAmD;AAGnD,mCAAkE;AAClE,iCAAwC;AAEjC,MAAM,iBAAiB,GAAG,KAAK,EACpC,MAAgB,EAChB,GAAQ,EAC4C,EAAE;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,yBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC5C,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,sBAAe,EAAC,KAAK,CAAC,CAAA;IACrC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC,CAAA;AAVY,QAAA,iBAAiB,qBAU7B;AAEM,MAAM,gBAAgB,GAAG,KAAK,EACnC,MAAgB,EAChB,GAAQ,EACR,GAAiB,EACuB,EAAE;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,yBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IAC5C,CAAC;IACD,OAAO,IAAA,qBAAa,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;AACvC,CAAC,CAAA;AAVY,QAAA,gBAAgB,oBAU5B;AAEM,MAAM,aAAa,GAAG,CAC3B,KAAiB,EACjB,GAAQ,EACR,GAAiB,EACc,EAAE;IACjC,MAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,KAAK,CAAC,CAAA;IAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;IACjC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,6BAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IAChD,CAAC;AACH,CAAC,CAAA;AAZY,QAAA,aAAa,iBAYzB"}
|
package/dist/repo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAEtC,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGlC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,aAAa,EAGd,MAAM,SAAS,CAAA;AAGhB,KAAK,MAAM,GAAG;IACZ,OAAO,EAAE,WAAW,CAAA;IACpB,IAAI,EAAE,GAAG,CAAA;IACT,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,qBAAa,IAAK,SAAQ,YAAY;IACpC,OAAO,EAAE,WAAW,CAAA;gBAER,MAAM,EAAE,MAAM;WAKb,gBAAgB,CAC3B,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,aAAa,GAAE,cAAc,EAAO,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,UAAU,CAAC;WAoCT,gBAAgB,CAC3B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC;WAKH,MAAM,CACjB,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,aAAa,GAAE,cAAc,EAAO,GACnC,OAAO,CAAC,IAAI,CAAC;WAUH,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,GAAG;IAgB3C,YAAY,CAChB,OAAO,EAAE,aAAa,GAAG,aAAa,EAAE,EACxC,OAAO,EAAE,MAAM,CAAC,OAAO,GACtB,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAEtC,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGlC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EACL,MAAM,EACN,UAAU,EACV,cAAc,EACd,aAAa,EAGd,MAAM,SAAS,CAAA;AAGhB,KAAK,MAAM,GAAG;IACZ,OAAO,EAAE,WAAW,CAAA;IACpB,IAAI,EAAE,GAAG,CAAA;IACT,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,GAAG,CAAA;CACT,CAAA;AAED,qBAAa,IAAK,SAAQ,YAAY;IACpC,OAAO,EAAE,WAAW,CAAA;gBAER,MAAM,EAAE,MAAM;WAKb,gBAAgB,CAC3B,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,aAAa,GAAE,cAAc,EAAO,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,UAAU,CAAC;WAoCT,gBAAgB,CAC3B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC;WAKH,MAAM,CACjB,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,aAAa,GAAE,cAAc,EAAO,GACnC,OAAO,CAAC,IAAI,CAAC;WAUH,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,GAAG;IAgB3C,YAAY,CAChB,OAAO,EAAE,aAAa,GAAG,aAAa,EAAE,EACxC,OAAO,EAAE,MAAM,CAAC,OAAO,GACtB,OAAO,CAAC,UAAU,CAAC;IAqEhB,WAAW,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD,WAAW,CACf,OAAO,EAAE,aAAa,GAAG,aAAa,EAAE,EACxC,OAAO,EAAE,MAAM,CAAC,OAAO,GACtB,OAAO,CAAC,IAAI,CAAC;IAKV,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;;;;;;;;;IAwBvD,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;CAIxD;AAED,eAAe,IAAI,CAAA"}
|
package/dist/repo.js
CHANGED
|
@@ -136,9 +136,9 @@ class Repo extends readable_repo_1.ReadableRepo {
|
|
|
136
136
|
const newBlocks = diff.newMstBlocks;
|
|
137
137
|
const removedCids = diff.removedCids;
|
|
138
138
|
const proofs = await Promise.all(writes.map((op) => data.getCoveringProof(util.formatDataKey(op.collection, op.rkey))));
|
|
139
|
-
const relevantBlocks =
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
const relevantBlocks = new block_map_1.BlockMap();
|
|
140
|
+
for (const proof of proofs)
|
|
141
|
+
relevantBlocks.addMap(proof);
|
|
142
142
|
const addedLeaves = leaves.getMany(diff.newLeafCids.toList());
|
|
143
143
|
if (addedLeaves.missing.length > 0) {
|
|
144
144
|
throw new Error(`Missing leaf blocks: ${addedLeaves.missing}`);
|
package/dist/repo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo.js","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"repo.js","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/repo",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.10",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "atproto repo and MST implementation",
|
|
6
6
|
"keywords": [
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
"uint8arrays": "3.0.0",
|
|
25
25
|
"varint": "^6.0.0",
|
|
26
26
|
"zod": "^3.23.8",
|
|
27
|
-
"@atproto/common": "^0.4.
|
|
28
|
-
"@atproto/common-web": "^0.4.
|
|
27
|
+
"@atproto/common": "^0.4.12",
|
|
28
|
+
"@atproto/common-web": "^0.4.3",
|
|
29
29
|
"@atproto/crypto": "^0.4.4",
|
|
30
|
-
"@atproto/lexicon": "^0.5.
|
|
30
|
+
"@atproto/lexicon": "^0.5.1"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"jest": "^28.1.2",
|
package/src/block-map.ts
CHANGED
|
@@ -3,9 +3,17 @@ import * as uint8arrays from 'uint8arrays'
|
|
|
3
3
|
import { dataToCborBlock } from '@atproto/common'
|
|
4
4
|
import { LexValue, lexToIpld } from '@atproto/lexicon'
|
|
5
5
|
|
|
6
|
-
export class BlockMap {
|
|
6
|
+
export class BlockMap implements Iterable<[cid: CID, bytes: Uint8Array]> {
|
|
7
7
|
private map: Map<string, Uint8Array> = new Map()
|
|
8
8
|
|
|
9
|
+
constructor(entries?: Iterable<readonly [cid: CID, bytes: Uint8Array]>) {
|
|
10
|
+
if (entries) {
|
|
11
|
+
for (const [cid, bytes] of entries) {
|
|
12
|
+
this.set(cid, bytes)
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
9
17
|
async add(value: LexValue): Promise<CID> {
|
|
10
18
|
const block = await dataToCborBlock(lexToIpld(value))
|
|
11
19
|
this.set(block.cid, block.bytes)
|
|
@@ -49,25 +57,19 @@ export class BlockMap {
|
|
|
49
57
|
}
|
|
50
58
|
|
|
51
59
|
forEach(cb: (bytes: Uint8Array, cid: CID) => void): void {
|
|
52
|
-
|
|
60
|
+
for (const [cid, bytes] of this) cb(bytes, cid)
|
|
53
61
|
}
|
|
54
62
|
|
|
55
63
|
entries(): Entry[] {
|
|
56
|
-
|
|
57
|
-
this.forEach((bytes, cid) => {
|
|
58
|
-
entries.push({ cid, bytes })
|
|
59
|
-
})
|
|
60
|
-
return entries
|
|
64
|
+
return Array.from(this, toEntry)
|
|
61
65
|
}
|
|
62
66
|
|
|
63
67
|
cids(): CID[] {
|
|
64
|
-
return
|
|
68
|
+
return Array.from(this.keys())
|
|
65
69
|
}
|
|
66
70
|
|
|
67
71
|
addMap(toAdd: BlockMap): BlockMap {
|
|
68
|
-
toAdd.
|
|
69
|
-
this.set(cid, bytes)
|
|
70
|
-
})
|
|
72
|
+
for (const [cid, bytes] of toAdd) this.set(cid, bytes)
|
|
71
73
|
return this
|
|
72
74
|
}
|
|
73
75
|
|
|
@@ -77,9 +79,7 @@ export class BlockMap {
|
|
|
77
79
|
|
|
78
80
|
get byteSize(): number {
|
|
79
81
|
let size = 0
|
|
80
|
-
this.
|
|
81
|
-
size += bytes.length
|
|
82
|
-
})
|
|
82
|
+
for (const bytes of this.values()) size += bytes.length
|
|
83
83
|
return size
|
|
84
84
|
}
|
|
85
85
|
|
|
@@ -87,15 +87,35 @@ export class BlockMap {
|
|
|
87
87
|
if (this.size !== other.size) {
|
|
88
88
|
return false
|
|
89
89
|
}
|
|
90
|
-
for (const
|
|
91
|
-
const otherBytes = other.get(
|
|
90
|
+
for (const [cid, bytes] of this) {
|
|
91
|
+
const otherBytes = other.get(cid)
|
|
92
92
|
if (!otherBytes) return false
|
|
93
|
-
if (!uint8arrays.equals(
|
|
93
|
+
if (!uint8arrays.equals(bytes, otherBytes)) {
|
|
94
94
|
return false
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
return true
|
|
98
98
|
}
|
|
99
|
+
|
|
100
|
+
*keys(): Generator<CID, void, unknown> {
|
|
101
|
+
for (const key of this.map.keys()) {
|
|
102
|
+
yield CID.parse(key)
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
*values(): Generator<Uint8Array, void, unknown> {
|
|
107
|
+
yield* this.map.values()
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
*[Symbol.iterator](): Generator<[CID, Uint8Array], void, unknown> {
|
|
111
|
+
for (const [key, value] of this.map) {
|
|
112
|
+
yield [CID.parse(key), value]
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function toEntry([cid, bytes]: readonly [CID, Uint8Array]): Entry {
|
|
118
|
+
return { cid, bytes }
|
|
99
119
|
}
|
|
100
120
|
|
|
101
121
|
type Entry = {
|
package/src/car.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { setImmediate } from 'node:timers/promises'
|
|
1
2
|
import * as cbor from '@ipld/dag-cbor'
|
|
2
3
|
import { CID } from 'multiformats/cid'
|
|
3
4
|
import * as ui8 from 'uint8arrays'
|
|
@@ -65,7 +66,7 @@ export const readCar = async (
|
|
|
65
66
|
bytes: Uint8Array,
|
|
66
67
|
opts?: ReadCarOptions,
|
|
67
68
|
): Promise<{ roots: CID[]; blocks: BlockMap }> => {
|
|
68
|
-
const { roots, blocks } = await
|
|
69
|
+
const { roots, blocks } = await readCarReader(new Ui8Reader(bytes), opts)
|
|
69
70
|
const blockMap = new BlockMap()
|
|
70
71
|
for await (const block of blocks) {
|
|
71
72
|
blockMap.set(block.cid, block.bytes)
|
|
@@ -98,9 +99,18 @@ export const readCarStream = async (
|
|
|
98
99
|
roots: CID[]
|
|
99
100
|
blocks: CarBlockIterable
|
|
100
101
|
}> => {
|
|
101
|
-
|
|
102
|
+
return readCarReader(new BufferedReader(car), opts)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export const readCarReader = async (
|
|
106
|
+
reader: BytesReader,
|
|
107
|
+
opts?: ReadCarOptions,
|
|
108
|
+
): Promise<{
|
|
109
|
+
roots: CID[]
|
|
110
|
+
blocks: CarBlockIterable
|
|
111
|
+
}> => {
|
|
102
112
|
try {
|
|
103
|
-
const headerSize = await
|
|
113
|
+
const headerSize = await readVarint(reader)
|
|
104
114
|
if (headerSize === null) {
|
|
105
115
|
throw new Error('Could not parse CAR header')
|
|
106
116
|
}
|
|
@@ -120,7 +130,7 @@ export const readCarStream = async (
|
|
|
120
130
|
}
|
|
121
131
|
|
|
122
132
|
const readCarBlocksIter = (
|
|
123
|
-
reader:
|
|
133
|
+
reader: BytesReader,
|
|
124
134
|
opts?: ReadCarOptions,
|
|
125
135
|
): CarBlockIterable => {
|
|
126
136
|
let generator = readCarBlocksIterGenerator(reader)
|
|
@@ -143,11 +153,12 @@ const readCarBlocksIter = (
|
|
|
143
153
|
}
|
|
144
154
|
|
|
145
155
|
async function* readCarBlocksIterGenerator(
|
|
146
|
-
reader:
|
|
156
|
+
reader: BytesReader,
|
|
147
157
|
): AsyncGenerator<CarBlock, void, unknown> {
|
|
158
|
+
let blocks = 0
|
|
148
159
|
try {
|
|
149
160
|
while (!reader.isDone) {
|
|
150
|
-
const blockSize = await
|
|
161
|
+
const blockSize = await readVarint(reader)
|
|
151
162
|
if (blockSize === null) {
|
|
152
163
|
break
|
|
153
164
|
}
|
|
@@ -155,6 +166,13 @@ async function* readCarBlocksIterGenerator(
|
|
|
155
166
|
const cid = parseCidFromBytes(blockBytes.subarray(0, 36))
|
|
156
167
|
const bytes = blockBytes.subarray(36)
|
|
157
168
|
yield { cid, bytes }
|
|
169
|
+
|
|
170
|
+
// yield to the event loop every 25 blocks
|
|
171
|
+
// in the case the incoming CAR is synchronous, this can end up jamming up the thread
|
|
172
|
+
blocks++
|
|
173
|
+
if (blocks % 25 === 0) {
|
|
174
|
+
await setImmediate()
|
|
175
|
+
}
|
|
158
176
|
}
|
|
159
177
|
} finally {
|
|
160
178
|
await reader.close()
|
|
@@ -170,7 +188,52 @@ export async function* verifyIncomingCarBlocks(
|
|
|
170
188
|
}
|
|
171
189
|
}
|
|
172
190
|
|
|
173
|
-
|
|
191
|
+
const readVarint = async (reader: BytesReader): Promise<number | null> => {
|
|
192
|
+
let done = false
|
|
193
|
+
const bytes: Uint8Array[] = []
|
|
194
|
+
while (!done) {
|
|
195
|
+
const byte = await reader.read(1)
|
|
196
|
+
if (byte.byteLength === 0) {
|
|
197
|
+
if (bytes.length > 0) {
|
|
198
|
+
throw new Error('could not parse varint')
|
|
199
|
+
} else {
|
|
200
|
+
return null
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
bytes.push(byte)
|
|
204
|
+
if (byte[0] < 128) {
|
|
205
|
+
done = true
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
const concatted = ui8.concat(bytes)
|
|
209
|
+
return varint.decode(concatted)
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
interface BytesReader {
|
|
213
|
+
isDone: boolean
|
|
214
|
+
read(bytesToRead: number): Promise<Uint8Array>
|
|
215
|
+
close(): Promise<void>
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
class Ui8Reader implements BytesReader {
|
|
219
|
+
idx = 0
|
|
220
|
+
isDone = false
|
|
221
|
+
|
|
222
|
+
constructor(public bytes: Uint8Array) {}
|
|
223
|
+
|
|
224
|
+
async read(bytesToRead: number): Promise<Uint8Array> {
|
|
225
|
+
const value = this.bytes.subarray(this.idx, this.idx + bytesToRead)
|
|
226
|
+
this.idx += bytesToRead
|
|
227
|
+
if (this.idx >= this.bytes.length) {
|
|
228
|
+
this.isDone = true
|
|
229
|
+
}
|
|
230
|
+
return value
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
async close(): Promise<void> {}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
class BufferedReader implements BytesReader {
|
|
174
237
|
buffer: Uint8Array = new Uint8Array()
|
|
175
238
|
iterator: Iterator<Uint8Array> | AsyncIterator<Uint8Array>
|
|
176
239
|
isDone = false
|
|
@@ -189,27 +252,6 @@ class BufferedReader {
|
|
|
189
252
|
return value
|
|
190
253
|
}
|
|
191
254
|
|
|
192
|
-
async readVarint(): Promise<number | null> {
|
|
193
|
-
let done = false
|
|
194
|
-
const bytes: Uint8Array[] = []
|
|
195
|
-
while (!done) {
|
|
196
|
-
const byte = await this.read(1)
|
|
197
|
-
if (byte.byteLength === 0) {
|
|
198
|
-
if (bytes.length > 0) {
|
|
199
|
-
throw new Error('could not parse varint')
|
|
200
|
-
} else {
|
|
201
|
-
return null
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
bytes.push(byte)
|
|
205
|
-
if (byte[0] < 128) {
|
|
206
|
-
done = true
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
const concatted = ui8.concat(bytes)
|
|
210
|
-
return varint.decode(concatted)
|
|
211
|
-
}
|
|
212
|
-
|
|
213
255
|
private async readUntilBuffered(bytesToRead: number) {
|
|
214
256
|
if (this.isDone) {
|
|
215
257
|
return
|
package/src/parse.ts
CHANGED
package/src/repo.ts
CHANGED
|
@@ -148,9 +148,8 @@ export class Repo extends ReadableRepo {
|
|
|
148
148
|
data.getCoveringProof(util.formatDataKey(op.collection, op.rkey)),
|
|
149
149
|
),
|
|
150
150
|
)
|
|
151
|
-
const relevantBlocks =
|
|
152
|
-
|
|
153
|
-
}, new BlockMap())
|
|
151
|
+
const relevantBlocks = new BlockMap()
|
|
152
|
+
for (const proof of proofs) relevantBlocks.addMap(proof)
|
|
154
153
|
|
|
155
154
|
const addedLeaves = leaves.getMany(diff.newLeafCids.toList())
|
|
156
155
|
if (addedLeaves.missing.length > 0) {
|