@atcute/car 2.0.1 → 2.0.2
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/dist/atproto-repo.d.ts +1 -0
- package/dist/atproto-repo.js +7 -1
- package/dist/atproto-repo.js.map +1 -1
- package/dist/reader.js +1 -1
- package/dist/reader.js.map +1 -1
- package/dist/utilities/car.d.ts +6 -0
- package/dist/utilities/car.js +10 -0
- package/dist/utilities/car.js.map +1 -0
- package/dist/utilities/{byte-reader.js → sync-byte-reader.js} +4 -1
- package/dist/utilities/sync-byte-reader.js.map +1 -0
- package/dist/utilities/sync-car-reader.d.ts +1 -1
- package/dist/utilities/sync-car-reader.js +2 -8
- package/dist/utilities/sync-car-reader.js.map +1 -1
- package/lib/atproto-repo.ts +10 -1
- package/lib/reader.ts +1 -1
- package/lib/utilities/car.ts +16 -0
- package/lib/utilities/{byte-reader.ts → sync-byte-reader.ts} +4 -0
- package/lib/utilities/sync-car-reader.ts +3 -16
- package/package.json +6 -5
- package/dist/utilities/byte-reader.js.map +0 -1
- /package/dist/utilities/{byte-reader.d.ts → sync-byte-reader.d.ts} +0 -0
package/dist/atproto-repo.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare class RepoEntry {
|
|
|
5
5
|
readonly cid: CID.CidLink;
|
|
6
6
|
private blockmap;
|
|
7
7
|
constructor(collection: string, rkey: string, cid: CID.CidLink, blockmap: BlockMap);
|
|
8
|
+
get bytes(): Uint8Array;
|
|
8
9
|
get record(): unknown;
|
|
9
10
|
}
|
|
10
11
|
export declare function iterateAtpRepo(buf: Uint8Array): Generator<RepoEntry>;
|
package/dist/atproto-repo.js
CHANGED
|
@@ -13,8 +13,14 @@ export class RepoEntry {
|
|
|
13
13
|
this.cid = cid;
|
|
14
14
|
this.blockmap = blockmap;
|
|
15
15
|
}
|
|
16
|
+
get bytes() {
|
|
17
|
+
const cid = this.cid.$link;
|
|
18
|
+
const bytes = this.blockmap.get(cid);
|
|
19
|
+
assert(bytes != null, `cid not found in blockmap; cid=${cid}`);
|
|
20
|
+
return bytes;
|
|
21
|
+
}
|
|
16
22
|
get record() {
|
|
17
|
-
return
|
|
23
|
+
return CBOR.decode(this.bytes);
|
|
18
24
|
}
|
|
19
25
|
}
|
|
20
26
|
export function* iterateAtpRepo(buf) {
|
package/dist/atproto-repo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atproto-repo.js","sourceRoot":"","sources":["../lib/atproto-repo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,MAAM,OAAO,SAAS;IAEJ;IACA;IACA;IACR;IAJT,YACiB,UAAkB,EAClB,IAAY,EACZ,GAAgB,EACxB,QAAkB;QAHV,eAAU,GAAV,UAAU,CAAQ;QAClB,SAAI,GAAJ,IAAI,CAAQ;QACZ,QAAG,GAAH,GAAG,CAAa;QACxB,aAAQ,GAAR,QAAQ,CAAU;IACxB,CAAC;IAEJ,IAAI,
|
|
1
|
+
{"version":3,"file":"atproto-repo.js","sourceRoot":"","sources":["../lib/atproto-repo.ts"],"names":[],"mappings":"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"}
|
package/dist/reader.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createUint8Reader } from './utilities/byte-reader.js';
|
|
1
|
+
import { createUint8Reader } from './utilities/sync-byte-reader.js';
|
|
2
2
|
import { createCarReader } from './utilities/sync-car-reader.js';
|
|
3
3
|
export const readCar = (buffer) => {
|
|
4
4
|
const reader = createUint8Reader(buffer);
|
package/dist/reader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../lib/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../lib/reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,MAAkB,EAAE,EAAE;IAC7C,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACzC,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as CBOR from '@atcute/cbor';
|
|
2
|
+
import * as CID from '@atcute/cid';
|
|
3
|
+
export const isCarV1Header = (value) => {
|
|
4
|
+
if (value === null || typeof value !== 'object') {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
const { version, roots } = value;
|
|
8
|
+
return version === 1 && Array.isArray(roots) && roots.every((root) => root instanceof CBOR.CidLinkWrapper);
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=car.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"car.js","sourceRoot":"","sources":["../../lib/utilities/car.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAOnC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAwB,EAAE;IACrE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAoB,CAAC;IAChD,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,YAAY,IAAI,CAAC,cAAc,CAAC,CAAC;AAC5G,CAAC,CAAC"}
|
|
@@ -5,6 +5,9 @@ export const createUint8Reader = (buf) => {
|
|
|
5
5
|
return pos;
|
|
6
6
|
},
|
|
7
7
|
seek(size) {
|
|
8
|
+
if (size > buf.length - pos) {
|
|
9
|
+
throw new RangeError('unexpected end of data');
|
|
10
|
+
}
|
|
8
11
|
pos += size;
|
|
9
12
|
},
|
|
10
13
|
upto(size) {
|
|
@@ -22,4 +25,4 @@ export const createUint8Reader = (buf) => {
|
|
|
22
25
|
},
|
|
23
26
|
};
|
|
24
27
|
};
|
|
25
|
-
//# sourceMappingURL=byte-reader.js.map
|
|
28
|
+
//# sourceMappingURL=sync-byte-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-byte-reader.js","sourceRoot":"","sources":["../../lib/utilities/sync-byte-reader.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAe,EAAkB,EAAE;IACpE,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,OAAO;QACN,IAAI,GAAG;YACN,OAAO,GAAG,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,IAAI;YACR,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC7B,MAAM,IAAI,UAAU,CAAC,wBAAwB,CAAC,CAAC;YAChD,CAAC;YAED,GAAG,IAAI,IAAI,CAAC;QACb,CAAC;QACD,IAAI,CAAC,IAAI;YACR,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,IAAI;YACjB,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC7B,MAAM,IAAI,UAAU,CAAC,wBAAwB,CAAC,CAAC;YAChD,CAAC;YAED,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACV,GAAG,IAAI,IAAI,CAAC;YACb,CAAC;YAED,OAAO,KAAK,CAAC;QACd,CAAC;KACD,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as CBOR from '@atcute/cbor';
|
|
2
2
|
import * as CID from '@atcute/cid';
|
|
3
|
-
import type { SyncByteReader } from './byte-reader.js';
|
|
3
|
+
import type { SyncByteReader } from './sync-byte-reader.js';
|
|
4
4
|
export declare const createCarReader: (reader: SyncByteReader) => {
|
|
5
5
|
roots: CBOR.CidLink[];
|
|
6
6
|
iterate(): Generator<{
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import * as CBOR from '@atcute/cbor';
|
|
2
2
|
import * as CID from '@atcute/cid';
|
|
3
3
|
import * as varint from '@atcute/varint';
|
|
4
|
-
|
|
5
|
-
if (value === null || typeof value !== 'object') {
|
|
6
|
-
return false;
|
|
7
|
-
}
|
|
8
|
-
const { version, roots } = value;
|
|
9
|
-
return version === 1 && Array.isArray(roots) && roots.every((root) => root instanceof CBOR.CidLinkWrapper);
|
|
10
|
-
};
|
|
4
|
+
import { isCarV1Header } from './car.js';
|
|
11
5
|
const readVarint = (reader, size) => {
|
|
12
6
|
const buf = reader.upto(size);
|
|
13
7
|
if (buf.length === 0) {
|
|
@@ -65,7 +59,7 @@ const readBlockHeader = (reader) => {
|
|
|
65
59
|
}
|
|
66
60
|
size += reader.pos - start;
|
|
67
61
|
const cid = readCid(reader);
|
|
68
|
-
const blockSize = size -
|
|
62
|
+
const blockSize = size - (reader.pos - start);
|
|
69
63
|
return { cid, blockSize };
|
|
70
64
|
};
|
|
71
65
|
export const createCarReader = (reader) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-car-reader.js","sourceRoot":"","sources":["../../lib/utilities/sync-car-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-car-reader.js","sourceRoot":"","sources":["../../lib/utilities/sync-car-reader.ts"],"names":[],"mappings":"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"}
|
package/lib/atproto-repo.ts
CHANGED
|
@@ -13,8 +13,17 @@ export class RepoEntry {
|
|
|
13
13
|
private blockmap: BlockMap,
|
|
14
14
|
) {}
|
|
15
15
|
|
|
16
|
+
get bytes(): Uint8Array {
|
|
17
|
+
const cid = this.cid.$link;
|
|
18
|
+
|
|
19
|
+
const bytes = this.blockmap.get(cid);
|
|
20
|
+
assert(bytes != null, `cid not found in blockmap; cid=${cid}`);
|
|
21
|
+
|
|
22
|
+
return bytes;
|
|
23
|
+
}
|
|
24
|
+
|
|
16
25
|
get record(): unknown {
|
|
17
|
-
return
|
|
26
|
+
return CBOR.decode(this.bytes);
|
|
18
27
|
}
|
|
19
28
|
}
|
|
20
29
|
|
package/lib/reader.ts
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as CBOR from '@atcute/cbor';
|
|
2
|
+
import * as CID from '@atcute/cid';
|
|
3
|
+
|
|
4
|
+
export interface CarV1Header {
|
|
5
|
+
version: 1;
|
|
6
|
+
roots: CID.CidLink[];
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const isCarV1Header = (value: unknown): value is CarV1Header => {
|
|
10
|
+
if (value === null || typeof value !== 'object') {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const { version, roots } = value as CarV1Header;
|
|
15
|
+
return version === 1 && Array.isArray(roots) && roots.every((root) => root instanceof CBOR.CidLinkWrapper);
|
|
16
|
+
};
|
|
@@ -2,21 +2,8 @@ import * as CBOR from '@atcute/cbor';
|
|
|
2
2
|
import * as CID from '@atcute/cid';
|
|
3
3
|
import * as varint from '@atcute/varint';
|
|
4
4
|
|
|
5
|
-
import type
|
|
6
|
-
|
|
7
|
-
interface CarV1Header {
|
|
8
|
-
version: 1;
|
|
9
|
-
roots: CID.CidLink[];
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const isCarV1Header = (value: unknown): value is CarV1Header => {
|
|
13
|
-
if (value === null || typeof value !== 'object') {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const { version, roots } = value as CarV1Header;
|
|
18
|
-
return version === 1 && Array.isArray(roots) && roots.every((root) => root instanceof CBOR.CidLinkWrapper);
|
|
19
|
-
};
|
|
5
|
+
import { isCarV1Header, type CarV1Header } from './car.js';
|
|
6
|
+
import type { SyncByteReader } from './sync-byte-reader.js';
|
|
20
7
|
|
|
21
8
|
const readVarint = (reader: SyncByteReader, size: number): number => {
|
|
22
9
|
const buf = reader.upto(size);
|
|
@@ -93,7 +80,7 @@ const readBlockHeader = (reader: SyncByteReader): { cid: CID.Cid; blockSize: num
|
|
|
93
80
|
size += reader.pos - start;
|
|
94
81
|
|
|
95
82
|
const cid = readCid(reader);
|
|
96
|
-
const blockSize = size -
|
|
83
|
+
const blockSize = size - (reader.pos - start);
|
|
97
84
|
|
|
98
85
|
return { cid, blockSize };
|
|
99
86
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@atcute/car",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.2",
|
|
5
5
|
"description": "lightweight DASL CAR and atproto repository decoder for AT Protocol.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"atproto",
|
|
@@ -24,12 +24,13 @@
|
|
|
24
24
|
},
|
|
25
25
|
"sideEffects": false,
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@types/bun": "^1.1
|
|
27
|
+
"@types/bun": "^1.2.1",
|
|
28
|
+
"@atcute/multibase": "^1.1.2"
|
|
28
29
|
},
|
|
29
30
|
"dependencies": {
|
|
30
|
-
"@atcute/
|
|
31
|
-
"@atcute/
|
|
32
|
-
"@atcute/
|
|
31
|
+
"@atcute/varint": "^1.0.2",
|
|
32
|
+
"@atcute/cbor": "^2.1.2",
|
|
33
|
+
"@atcute/cid": "^2.1.0"
|
|
33
34
|
},
|
|
34
35
|
"scripts": {
|
|
35
36
|
"build": "tsc --project tsconfig.build.json",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"byte-reader.js","sourceRoot":"","sources":["../../lib/utilities/byte-reader.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAe,EAAkB,EAAE;IACpE,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,OAAO;QACN,IAAI,GAAG;YACN,OAAO,GAAG,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,IAAI;YACR,GAAG,IAAI,IAAI,CAAC;QACb,CAAC;QACD,IAAI,CAAC,IAAI;YACR,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,IAAI;YACjB,IAAI,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC7B,MAAM,IAAI,UAAU,CAAC,wBAAwB,CAAC,CAAC;YAChD,CAAC;YAED,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC;YAC5C,IAAI,IAAI,EAAE,CAAC;gBACV,GAAG,IAAI,IAAI,CAAC;YACb,CAAC;YAED,OAAO,KAAK,CAAC;QACd,CAAC;KACD,CAAC;AACH,CAAC,CAAC"}
|
|
File without changes
|