@atcute/car 5.0.0 → 5.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 CHANGED
@@ -1,6 +1,13 @@
1
1
  # @atcute/car
2
2
 
3
- lightweight [DASL CAR (content-addressable archives)][dasl-car] codec library for AT Protocol.
3
+ content-addressable archive (CAR) codec for AT Protocol.
4
+
5
+ ```sh
6
+ npm install @atcute/car
7
+ ```
8
+
9
+ this library implements DASL's [CAR][dasl-car] format used by AT Protocol to store and transfer
10
+ repository data.
4
11
 
5
12
  [dasl-car]: https://dasl.ing/car.html
6
13
 
@@ -57,3 +64,18 @@ for (const entry of car) {
57
64
  // ^? CarEntry { cid: CidLink {}, bytes: Uint8Array {}, ... }
58
65
  }
59
66
  ```
67
+
68
+ ### writing
69
+
70
+ ```ts
71
+ import { writeCarStream } from '@atcute/car';
72
+
73
+ const blocks = async function* () {
74
+ yield { cid: commitCid.bytes, data: commitBytes };
75
+ yield { cid: nodeCid.bytes, data: nodeBytes };
76
+ };
77
+
78
+ for await (const chunk of writeCarStream([rootCid], blocks())) {
79
+ stream.write(chunk);
80
+ }
81
+ ```
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export * from './reader.js';
2
- export * from './streamed-reader.js';
3
- export * from './writer.js';
4
- export * from './types.js';
1
+ export * from './reader.ts';
2
+ export * from './streamed-reader.ts';
3
+ export * from './writer.ts';
4
+ export * from './types.ts';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AAErC,cAAc,aAAa,CAAC;AAE5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AAErC,cAAc,aAAa,CAAC;AAE5B,cAAc,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ // implements github:darobin/dasl.ing@cc66c35 (2025-10-20)
1
2
  export * from './reader.js';
2
3
  export * from './streamed-reader.js';
3
4
  export * from './writer.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AAErC,cAAc,aAAa,CAAC;AAE5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AAErC,cAAc,aAAa,CAAC;AAE5B,cAAc,YAAY,CAAC"}
package/dist/reader.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import type { CidLink } from '@atcute/cid';
2
- import { type CarEntry, type CarHeader } from './types.js';
2
+ import { type CarEntry, type CarHeader } from './types.ts';
3
3
  export interface SyncCarReader {
4
4
  readonly header: CarHeader;
5
5
  readonly roots: CidLink[];
6
6
  /** @deprecated do for..of on the reader directly */
7
- iterate(): Generator<CarEntry>;
7
+ iterate(): IterableIterator<CarEntry>;
8
8
  [Symbol.iterator](): Iterator<CarEntry>;
9
9
  }
10
- export declare const fromUint8Array: (buffer: Uint8Array) => SyncCarReader;
10
+ export declare const fromUint8Array: (buffer: Uint8Array<ArrayBufferLike>) => SyncCarReader;
11
11
  //# sourceMappingURL=reader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../lib/reader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,EAAiB,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAS1E,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IAE1B,oDAAoD;IACpD,OAAO,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;CACxC;AAED,eAAO,MAAM,cAAc,GAAI,QAAQ,UAAU,KAAG,aA0CnD,CAAC"}
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../lib/reader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,EAAiB,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IAE1B,oDAAoD;IACpD,OAAO,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;CACxC;AAED,eAAO,MAAM,cAAc,wDAiE1B,CAAC"}
package/dist/reader.js CHANGED
@@ -3,98 +3,91 @@ import * as CID from '@atcute/cid';
3
3
  import * as varint from '@atcute/varint';
4
4
  import { isCarV1Header } from './types.js';
5
5
  export const fromUint8Array = (buffer) => {
6
- const reader = createUint8Reader(buffer);
7
- const header = readHeader(reader);
6
+ const { header, nextOffset: headerOffset } = readHeader(buffer, 0);
7
+ let pos = headerOffset;
8
8
  return {
9
9
  header,
10
10
  roots: header.data.roots,
11
- *iterate() {
12
- while (reader.upto(8 + 36).length > 0) {
13
- const entryStart = reader.pos;
14
- const entrySize = readVarint(reader, 8);
15
- const cidStart = reader.pos;
16
- const cid = readCid(reader);
17
- const bytesStart = reader.pos;
18
- const bytesSize = entrySize - (bytesStart - cidStart);
19
- const bytes = reader.exactly(bytesSize, true);
20
- const cidEnd = bytesStart;
21
- const bytesEnd = reader.pos;
22
- const entryEnd = bytesEnd;
23
- yield {
24
- cid,
25
- bytes,
26
- entryStart,
27
- entryEnd,
28
- cidStart,
29
- cidEnd,
30
- bytesStart,
31
- bytesEnd,
32
- };
33
- }
11
+ iterate() {
12
+ return {
13
+ next() {
14
+ if (pos >= buffer.length) {
15
+ return {
16
+ done: true,
17
+ value: undefined,
18
+ };
19
+ }
20
+ const entryStart = pos;
21
+ const { value: entryLength, nextOffset: lengthOffset } = varint.decode(buffer, pos, 8);
22
+ pos = lengthOffset;
23
+ const cidStart = pos;
24
+ const { cid, nextOffset: cidOffset } = readCid(buffer, pos);
25
+ pos = cidOffset;
26
+ const bytesStart = pos;
27
+ const bytesSize = entryLength - (bytesStart - cidStart);
28
+ if (bytesSize < 0 || bytesStart + bytesSize > buffer.length) {
29
+ throw new RangeError('unexpected end of data');
30
+ }
31
+ const bytesEnd = bytesStart + bytesSize;
32
+ const bytes = buffer.subarray(bytesStart, bytesEnd);
33
+ pos = bytesEnd;
34
+ const cidEnd = bytesStart;
35
+ const entryEnd = bytesEnd;
36
+ return {
37
+ done: false,
38
+ value: {
39
+ cid,
40
+ bytes,
41
+ entryStart,
42
+ entryEnd,
43
+ cidStart,
44
+ cidEnd,
45
+ bytesStart,
46
+ bytesEnd,
47
+ },
48
+ };
49
+ },
50
+ [Symbol.iterator]() {
51
+ return this;
52
+ },
53
+ };
34
54
  },
35
55
  [Symbol.iterator]() {
36
56
  return this.iterate();
37
57
  },
38
58
  };
39
59
  };
40
- const createUint8Reader = (buf) => {
41
- let pos = 0;
42
- return {
43
- get pos() {
44
- return pos;
45
- },
46
- seek(size) {
47
- if (size > buf.length - pos) {
48
- throw new RangeError('unexpected end of data');
49
- }
50
- pos += size;
51
- },
52
- upto(size) {
53
- return buf.subarray(pos, pos + size);
54
- },
55
- exactly(size, seek) {
56
- if (size > buf.length - pos) {
57
- throw new RangeError('unexpected end of data');
58
- }
59
- const slice = buf.subarray(pos, pos + size);
60
- if (seek) {
61
- pos += size;
62
- }
63
- return slice;
64
- },
65
- };
66
- };
67
- const readVarint = (reader, size) => {
68
- const buf = reader.upto(size);
69
- if (buf.length === 0) {
70
- throw new RangeError(`unexpected end of data`);
71
- }
72
- const [int, read] = varint.decode(buf);
73
- reader.seek(read);
74
- return int;
75
- };
76
- const readHeader = (reader) => {
77
- const headerStart = reader.pos;
78
- const length = readVarint(reader, 8);
60
+ const readHeader = (source, offset) => {
61
+ const headerStart = offset;
62
+ const { value: length, nextOffset: lengthOffset } = varint.decode(source, offset, 8);
79
63
  if (length === 0) {
80
64
  throw new RangeError(`invalid car header; length=0`);
81
65
  }
82
- const dataStart = reader.pos;
83
- const rawHeader = reader.exactly(length, true);
84
- const data = CBOR.decode(rawHeader);
66
+ const dataStart = lengthOffset;
67
+ const dataEnd = dataStart + length;
68
+ if (dataEnd > source.length) {
69
+ throw new RangeError('unexpected end of data');
70
+ }
71
+ const data = CBOR.decode(source.subarray(dataStart, dataEnd));
85
72
  if (!isCarV1Header(data)) {
86
73
  throw new TypeError(`expected a car v1 archive`);
87
74
  }
88
- const dataEnd = reader.pos;
89
75
  const headerEnd = dataEnd;
90
- return { data, headerStart, headerEnd, dataStart, dataEnd };
76
+ return {
77
+ header: { data, headerStart, headerEnd, dataStart, dataEnd },
78
+ nextOffset: dataEnd,
79
+ };
91
80
  };
92
- const readCid = (reader) => {
93
- const head = reader.exactly(4, false);
94
- const version = head[0];
95
- const codec = head[1];
96
- const digestType = head[2];
97
- const digestSize = head[3];
81
+ const readCid = (source, offset) => {
82
+ const cidEnd = offset + 36;
83
+ if (cidEnd > source.length) {
84
+ throw new RangeError('unexpected end of data');
85
+ }
86
+ const bytes = source.subarray(offset, cidEnd);
87
+ const version = bytes[0];
88
+ const codec = bytes[1];
89
+ const digestType = bytes[2];
90
+ const digestSize = bytes[3];
98
91
  if (version !== CID.CID_VERSION) {
99
92
  throw new RangeError(`incorrect cid version (got v${version})`);
100
93
  }
@@ -104,20 +97,20 @@ const readCid = (reader) => {
104
97
  if (digestType !== CID.HASH_SHA256) {
105
98
  throw new RangeError(`incorrect cid digest type (got 0x${digestType.toString(16)})`);
106
99
  }
107
- if (digestSize !== 32 && digestSize !== 0) {
100
+ if (digestSize !== 32) {
108
101
  throw new RangeError(`incorrect cid digest size (got ${digestSize})`);
109
102
  }
110
- const bytes = reader.exactly(4 + digestSize, true);
111
- const digest = bytes.subarray(4, 4 + digestSize);
112
- const cid = {
113
- version: version,
114
- codec: codec,
115
- digest: {
116
- codec: digestType,
117
- contents: digest,
103
+ return {
104
+ cid: {
105
+ version: version,
106
+ codec: codec,
107
+ digest: {
108
+ codec: digestType,
109
+ contents: bytes.subarray(4, 36),
110
+ },
111
+ bytes: bytes,
118
112
  },
119
- bytes: bytes,
113
+ nextOffset: cidEnd,
120
114
  };
121
- return cid;
122
115
  };
123
116
  //# sourceMappingURL=reader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reader.js","sourceRoot":"","sources":["../lib/reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../lib/reader.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { CidLink } from '@atcute/cid';
2
- import { type CarEntry, type CarHeader } from './types.js';
2
+ import { type CarEntry, type CarHeader } from './types.ts';
3
3
  export interface StreamedCarReader {
4
4
  header(): Promise<CarHeader>;
5
5
  roots(): Promise<CidLink[]>;
@@ -7,6 +7,6 @@ export interface StreamedCarReader {
7
7
  [Symbol.asyncDispose](): Promise<void>;
8
8
  [Symbol.asyncIterator](): AsyncIterator<CarEntry>;
9
9
  }
10
- export declare const carEntryTransform: () => ReadableWritablePair<CarEntry, Uint8Array>;
11
- export declare const fromStream: (stream: ReadableStream<Uint8Array>) => StreamedCarReader;
10
+ export declare const carEntryTransform: () => ReadableWritablePair<CarEntry, Uint8Array<ArrayBufferLike>>;
11
+ export declare const fromStream: (stream: ReadableStream<Uint8Array<ArrayBufferLike>>) => StreamedCarReader;
12
12
  //# sourceMappingURL=streamed-reader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"streamed-reader.d.ts","sourceRoot":"","sources":["../lib/streamed-reader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAO,OAAO,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,EAAiB,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,WAAW,iBAAiB;IACjC,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7B,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAE5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;CAClD;AAED,eAAO,MAAM,iBAAiB,QAAO,oBAAoB,CAAC,QAAQ,EAAE,UAAU,CA6B7E,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,QAAQ,cAAc,CAAC,UAAU,CAAC,KAAG,iBAgM/D,CAAC"}
1
+ {"version":3,"file":"streamed-reader.d.ts","sourceRoot":"","sources":["../lib/streamed-reader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAO,OAAO,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAiB,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,WAAW,iBAAiB;IACjC,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7B,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAE5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;CAClD;AAED,eAAO,MAAM,iBAAiB,mEA6B7B,CAAC;AAEF,eAAO,MAAM,UAAU,4EA0LtB,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import * as CBOR from '@atcute/cbor';
2
2
  import * as CID from '@atcute/cid';
3
- import { concat } from '@atcute/uint8array';
4
3
  import { isCarV1Header } from './types.js';
5
4
  export const carEntryTransform = () => {
6
5
  const transform = new TransformStream();
@@ -77,11 +76,11 @@ export const fromStream = (stream) => {
77
76
  return buffer;
78
77
  };
79
78
  const readCid = async () => {
80
- const head = await readExact(4);
81
- const version = head[0];
82
- const codec = head[1];
83
- const digestType = head[2];
84
- const digestSize = head[3];
79
+ const bytes = await readExact(36);
80
+ const version = bytes[0];
81
+ const codec = bytes[1];
82
+ const digestType = bytes[2];
83
+ const digestSize = bytes[3];
85
84
  if (version !== CID.CID_VERSION) {
86
85
  throw new RangeError(`incorrect cid version (got v${version})`);
87
86
  }
@@ -91,22 +90,18 @@ export const fromStream = (stream) => {
91
90
  if (digestType !== CID.HASH_SHA256) {
92
91
  throw new RangeError(`incorrect cid digest type (got 0x${digestType.toString(16)})`);
93
92
  }
94
- if (digestSize !== 32 && digestSize !== 0) {
93
+ if (digestSize !== 32) {
95
94
  throw new RangeError(`incorrect cid digest size (got ${digestSize})`);
96
95
  }
97
- // concatenate and have digest refer back to this buffer
98
- const bytes = concat([head, await readExact(digestSize)]);
99
- const digest = bytes.subarray(4, 4 + digestSize);
100
- const cid = {
96
+ return {
101
97
  version: version,
102
98
  codec: codec,
103
99
  digest: {
104
100
  codec: digestType,
105
- contents: digest,
101
+ contents: bytes.subarray(4, 36),
106
102
  },
107
103
  bytes: bytes,
108
104
  };
109
- return cid;
110
105
  };
111
106
  return {
112
107
  [Symbol.asyncDispose]() {
@@ -1 +1 @@
1
- {"version":3,"file":"streamed-reader.js","sourceRoot":"","sources":["../lib/streamed-reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"streamed-reader.js","sourceRoot":"","sources":["../lib/streamed-reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AAErC,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAiC,MAAM,YAAY,CAAC;AAY1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAA+C,EAAE,CAAC;IAClF,MAAM,SAAS,GAAG,IAAI,eAAe,EAA0B,CAAC;IAChE,IAAI,GAAkC,CAAC;IAEvC,OAAO;QACN,QAAQ,EAAE,IAAI,cAAc,CAAC;YAC5B,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE;gBACvB,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAErC,IAAI,CAAC;oBACJ,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;wBAC/B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC3B,CAAC;oBAED,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;oBAEpB,UAAU,CAAC,KAAK,EAAE,CAAC;gBACpB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC;YAAA,CACD;YACD,KAAK,CAAC,MAAM,GAAG;gBACd,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACvB,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;gBACrB,CAAC;YAAA,CACD;SACD,CAAC;QACF,QAAQ,EAAE,SAAS,CAAC,QAAQ;KAC5B,CAAC;AAAA,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAkC,EAAqB,EAAE,CAAC;IACpF,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAe,CAAC,CAAC,YAAY;IACzD,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,IAAI,OAA8B,CAAC;IAEnC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IAElC,MAAM,UAAU,GAAG,KAAK,IAAqB,EAAE,CAAC;QAC/C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,MAAM,GAAG,GAAG,IAAI,CAAC;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO,IAAI,EAAE,CAAC;YACb,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBACzD,CAAC;gBAED,KAAK,GAAG,KAAK,CAAC;YACf,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAE1B,KAAK,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;YAC1E,KAAK,IAAI,CAAC,CAAC;YAEX,MAAM,EAAE,CAAC;YAET,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,KAAK,CAAC;YACd,CAAC;QACF,CAAC;IAAA,CACD,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,EAAE,CAAS,EAAuB,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,OAAO,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;gBAE5C,IAAI,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACtD,CAAC;gBAED,KAAK,GAAG,KAAK,CAAC;YACf,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAE9C,OAAO,IAAI,KAAK,CAAC;YACjB,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,IAAI,CAAC,CAAC;QACZ,OAAO,MAAM,CAAC;IAAA,CACd,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,IAAkB,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5B,IAAI,OAAO,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,UAAU,CAAC,+BAA+B,OAAO,GAAG,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,KAAK,KAAK,GAAG,CAAC,WAAW,IAAI,KAAK,KAAK,GAAG,CAAC,SAAS,EAAE,CAAC;YAC1D,MAAM,IAAI,UAAU,CAAC,8BAA8B,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,UAAU,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;YACpC,MAAM,IAAI,UAAU,CAAC,oCAAoC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;YACvB,MAAM,IAAI,UAAU,CAAC,kCAAkC,UAAU,GAAG,CAAC,CAAC;QACvE,CAAC;QAED,OAAO;YACN,OAAO,EAAE,OAAO;YAChB,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE;gBACP,KAAK,EAAE,UAAU;gBACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;aAC/B;YACD,KAAK,EAAE,KAAK;SACZ,CAAC;IAAA,CACF,CAAC;IAEF,OAAO;QACN,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG;YACvB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;QAAA,CACtB;QAED,KAAK,CAAC,OAAO,GAAG;YACf,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QAAA,CACtB;QAED,KAAK,CAAC,MAAM,GAAuB;YAClC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,OAAO,CAAC;YAChB,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,CAAC;YAE3B,MAAM,UAAU,GAAG,MAAM,UAAU,EAAE,CAAC;YACtC,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,UAAU,CAAC,8BAA8B,CAAC,CAAC;YACtD,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,CAAC;YAEzB,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;YAClD,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC;YACvB,MAAM,SAAS,GAAG,MAAM,CAAC;YAEzB,OAAO,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAAA,CACxE;QAED,KAAK,CAAC,KAAK,GAAuB;YACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YAEnC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAAA,CACzB;QAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAA6B;YACzD,kCAAkC;YAClC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,CAAC;YAED,OAAO,IAAI,EAAE,CAAC;gBACb,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;oBAE5C,IAAI,IAAI,EAAE,CAAC;wBACV,OAAO;oBACR,CAAC;oBAED,KAAK,GAAG,KAAK,CAAC;gBACf,CAAC;gBAED,MAAM,UAAU,GAAG,MAAM,CAAC;gBAC1B,MAAM,SAAS,GAAG,MAAM,UAAU,EAAE,CAAC;gBAErC,MAAM,QAAQ,GAAG,MAAM,CAAC;gBACxB,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;gBAE5B,MAAM,UAAU,GAAG,MAAM,CAAC;gBAC1B,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;gBACtD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;gBAEzC,MAAM,MAAM,GAAG,UAAU,CAAC;gBAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC;gBACxB,MAAM,QAAQ,GAAG,QAAQ,CAAC;gBAE1B,MAAM;oBACL,GAAG;oBACH,KAAK;oBAEL,UAAU;oBACV,QAAQ;oBACR,QAAQ;oBACR,MAAM;oBACN,UAAU;oBACV,QAAQ;iBACR,CAAC;YACH,CAAC;QAAA,CACD;KACD,CAAC;AAAA,CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,WAOvD,CAAC;AAEF,MAAM,WAAW,SAAS;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IAEjB,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IAEf,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,sCAAsC;IACtC,GAAG,EAAE,UAAU,CAAC;IAChB,qBAAqB;IACrB,IAAI,EAAE,UAAU,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,aAAa,0CAOzB,CAAC;AAEF,MAAM,WAAW,SAAS;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAElB,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IAEjB,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IAEf,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,sCAAsC;IACtC,GAAG,EAAE,UAAU,CAAC;IAChB,qBAAqB;IACrB,IAAI,EAAE,UAAU,CAAC;CACjB"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA0B,MAAM,aAAa,CAAC;AAOrE,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,cAAc,CAAC,CAAC;AACvG,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA0B,MAAM,aAAa,CAAC;AAOrE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAwB,EAAE,CAAC;IACtE,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,cAAc,CAAC,CAAC;AAAA,CACtG,CAAC"}
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAEf,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE;IAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAEf,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC;IAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;AAAA,CACD,CAAC"}
package/dist/writer.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { CidLink } from '@atcute/cid';
2
- import type { CarBlock } from './types.js';
2
+ import type { CarBlock } from './types.ts';
3
3
  /**
4
4
  * creates an async generator that yields CAR file chunks
5
5
  * @param root root CIDs for the CAR file
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../lib/writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAIzC;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAC,CAAS,EAA2B,EAAE;IAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAyB,EAA2B,EAAE;IACxF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,KAAK;KACZ,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAElE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1C,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAe,EAAE,IAAgB,EAA2B,EAAE;IAC/F,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAExE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,cAAc,CACpC,KAAgB,EAChB,MAAoD;IAEpD,oBAAoB;IACpB,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEhC,6BAA6B;IAC7B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAClC,MAAM,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../lib/writer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AAIzC;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAC,CAAS,EAA2B,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,GAAG,CAAC;AAAA,CACX,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAyB,EAA2B,EAAE,CAAC;IACzF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9B,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,KAAK;KACZ,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IAElE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1C,OAAO,MAAM,CAAC;AAAA,CACd,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAe,EAAE,IAAgB,EAA2B,EAAE,CAAC;IAChG,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAExE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC;AAAA,CACd,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,cAAc,CACpC,KAAgB,EAChB,MAAoD,EACV;IAC1C,oBAAoB;IACpB,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEhC,6BAA6B;IAC7B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAClC,MAAM,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;AAAA,CACD"}
package/lib/index.ts CHANGED
@@ -1,6 +1,8 @@
1
- export * from './reader.js';
2
- export * from './streamed-reader.js';
1
+ // implements github:darobin/dasl.ing@cc66c35 (2025-10-20)
3
2
 
4
- export * from './writer.js';
3
+ export * from './reader.ts';
4
+ export * from './streamed-reader.ts';
5
5
 
6
- export * from './types.js';
6
+ export * from './writer.ts';
7
+
8
+ export * from './types.ts';
package/lib/reader.ts CHANGED
@@ -3,60 +3,76 @@ import type { CidLink } from '@atcute/cid';
3
3
  import * as CID from '@atcute/cid';
4
4
  import * as varint from '@atcute/varint';
5
5
 
6
- import { isCarV1Header, type CarEntry, type CarHeader } from './types.js';
7
-
8
- interface SyncByteReader {
9
- readonly pos: number;
10
- upto(size: number): Uint8Array;
11
- exactly(size: number, seek: boolean): Uint8Array;
12
- seek(size: number): void;
13
- }
6
+ import { isCarV1Header, type CarEntry, type CarHeader } from './types.ts';
14
7
 
15
8
  export interface SyncCarReader {
16
9
  readonly header: CarHeader;
17
10
  readonly roots: CidLink[];
18
11
 
19
12
  /** @deprecated do for..of on the reader directly */
20
- iterate(): Generator<CarEntry>;
13
+ iterate(): IterableIterator<CarEntry>;
21
14
  [Symbol.iterator](): Iterator<CarEntry>;
22
15
  }
23
16
 
24
17
  export const fromUint8Array = (buffer: Uint8Array): SyncCarReader => {
25
- const reader = createUint8Reader(buffer);
26
- const header = readHeader(reader);
18
+ const { header, nextOffset: headerOffset } = readHeader(buffer, 0);
19
+ let pos = headerOffset;
27
20
 
28
21
  return {
29
22
  header,
30
23
  roots: header.data.roots,
31
24
 
32
- *iterate() {
33
- while (reader.upto(8 + 36).length > 0) {
34
- const entryStart = reader.pos;
35
- const entrySize = readVarint(reader, 8);
36
-
37
- const cidStart = reader.pos;
38
- const cid = readCid(reader);
39
-
40
- const bytesStart = reader.pos;
41
- const bytesSize = entrySize - (bytesStart - cidStart);
42
- const bytes = reader.exactly(bytesSize, true);
43
-
44
- const cidEnd = bytesStart;
45
- const bytesEnd = reader.pos;
46
- const entryEnd = bytesEnd;
47
-
48
- yield {
49
- cid,
50
- bytes,
51
-
52
- entryStart,
53
- entryEnd,
54
- cidStart,
55
- cidEnd,
56
- bytesStart,
57
- bytesEnd,
58
- };
59
- }
25
+ iterate(): IterableIterator<CarEntry> {
26
+ return {
27
+ next(): IteratorResult<CarEntry> {
28
+ if (pos >= buffer.length) {
29
+ return {
30
+ done: true,
31
+ value: undefined,
32
+ };
33
+ }
34
+
35
+ const entryStart = pos;
36
+ const { value: entryLength, nextOffset: lengthOffset } = varint.decode(buffer, pos, 8);
37
+ pos = lengthOffset;
38
+
39
+ const cidStart = pos;
40
+ const { cid, nextOffset: cidOffset } = readCid(buffer, pos);
41
+ pos = cidOffset;
42
+
43
+ const bytesStart = pos;
44
+ const bytesSize = entryLength - (bytesStart - cidStart);
45
+ if (bytesSize < 0 || bytesStart + bytesSize > buffer.length) {
46
+ throw new RangeError('unexpected end of data');
47
+ }
48
+
49
+ const bytesEnd = bytesStart + bytesSize;
50
+ const bytes = buffer.subarray(bytesStart, bytesEnd);
51
+ pos = bytesEnd;
52
+
53
+ const cidEnd = bytesStart;
54
+ const entryEnd = bytesEnd;
55
+
56
+ return {
57
+ done: false,
58
+ value: {
59
+ cid,
60
+ bytes,
61
+
62
+ entryStart,
63
+ entryEnd,
64
+ cidStart,
65
+ cidEnd,
66
+ bytesStart,
67
+ bytesEnd,
68
+ },
69
+ };
70
+ },
71
+
72
+ [Symbol.iterator]() {
73
+ return this;
74
+ },
75
+ };
60
76
  },
61
77
 
62
78
  [Symbol.iterator](): Iterator<CarEntry> {
@@ -65,79 +81,44 @@ export const fromUint8Array = (buffer: Uint8Array): SyncCarReader => {
65
81
  };
66
82
  };
67
83
 
68
- const createUint8Reader = (buf: Uint8Array): SyncByteReader => {
69
- let pos = 0;
70
-
71
- return {
72
- get pos() {
73
- return pos;
74
- },
75
-
76
- seek(size) {
77
- if (size > buf.length - pos) {
78
- throw new RangeError('unexpected end of data');
79
- }
80
-
81
- pos += size;
82
- },
83
- upto(size) {
84
- return buf.subarray(pos, pos + size);
85
- },
86
- exactly(size, seek) {
87
- if (size > buf.length - pos) {
88
- throw new RangeError('unexpected end of data');
89
- }
90
-
91
- const slice = buf.subarray(pos, pos + size);
92
- if (seek) {
93
- pos += size;
94
- }
95
-
96
- return slice;
97
- },
98
- };
99
- };
100
-
101
- const readVarint = (reader: SyncByteReader, size: number): number => {
102
- const buf = reader.upto(size);
103
- if (buf.length === 0) {
104
- throw new RangeError(`unexpected end of data`);
105
- }
106
-
107
- const [int, read] = varint.decode(buf);
108
- reader.seek(read);
109
-
110
- return int;
111
- };
112
-
113
- const readHeader = (reader: SyncByteReader): CarHeader => {
114
- const headerStart = reader.pos;
115
- const length = readVarint(reader, 8);
84
+ const readHeader = (source: Uint8Array, offset: number): { header: CarHeader; nextOffset: number } => {
85
+ const headerStart = offset;
86
+ const { value: length, nextOffset: lengthOffset } = varint.decode(source, offset, 8);
116
87
  if (length === 0) {
117
88
  throw new RangeError(`invalid car header; length=0`);
118
89
  }
119
90
 
120
- const dataStart = reader.pos;
121
- const rawHeader = reader.exactly(length, true);
91
+ const dataStart = lengthOffset;
92
+ const dataEnd = dataStart + length;
93
+ if (dataEnd > source.length) {
94
+ throw new RangeError('unexpected end of data');
95
+ }
122
96
 
123
- const data = CBOR.decode(rawHeader);
97
+ const data = CBOR.decode(source.subarray(dataStart, dataEnd));
124
98
  if (!isCarV1Header(data)) {
125
99
  throw new TypeError(`expected a car v1 archive`);
126
100
  }
127
101
 
128
- const dataEnd = reader.pos;
129
102
  const headerEnd = dataEnd;
130
103
 
131
- return { data, headerStart, headerEnd, dataStart, dataEnd };
104
+ return {
105
+ header: { data, headerStart, headerEnd, dataStart, dataEnd },
106
+ nextOffset: dataEnd,
107
+ };
132
108
  };
133
109
 
134
- const readCid = (reader: SyncByteReader): CID.Cid => {
135
- const head = reader.exactly(4, false);
110
+ const readCid = (source: Uint8Array, offset: number): { cid: CID.Cid; nextOffset: number } => {
111
+ const cidEnd = offset + 36;
112
+ if (cidEnd > source.length) {
113
+ throw new RangeError('unexpected end of data');
114
+ }
115
+
116
+ const bytes = source.subarray(offset, cidEnd);
136
117
 
137
- const version = head[0];
138
- const codec = head[1];
139
- const digestType = head[2];
140
- const digestSize = head[3];
118
+ const version = bytes[0];
119
+ const codec = bytes[1];
120
+ const digestType = bytes[2];
121
+ const digestSize = bytes[3];
141
122
 
142
123
  if (version !== CID.CID_VERSION) {
143
124
  throw new RangeError(`incorrect cid version (got v${version})`);
@@ -151,22 +132,20 @@ const readCid = (reader: SyncByteReader): CID.Cid => {
151
132
  throw new RangeError(`incorrect cid digest type (got 0x${digestType.toString(16)})`);
152
133
  }
153
134
 
154
- if (digestSize !== 32 && digestSize !== 0) {
135
+ if (digestSize !== 32) {
155
136
  throw new RangeError(`incorrect cid digest size (got ${digestSize})`);
156
137
  }
157
138
 
158
- const bytes = reader.exactly(4 + digestSize, true);
159
- const digest = bytes.subarray(4, 4 + digestSize);
160
-
161
- const cid: CID.Cid = {
162
- version: version,
163
- codec: codec,
164
- digest: {
165
- codec: digestType,
166
- contents: digest,
139
+ return {
140
+ cid: {
141
+ version: version,
142
+ codec: codec,
143
+ digest: {
144
+ codec: digestType,
145
+ contents: bytes.subarray(4, 36),
146
+ },
147
+ bytes: bytes,
167
148
  },
168
- bytes: bytes,
149
+ nextOffset: cidEnd,
169
150
  };
170
-
171
- return cid;
172
151
  };
@@ -1,9 +1,8 @@
1
1
  import * as CBOR from '@atcute/cbor';
2
2
  import type { Cid, CidLink } from '@atcute/cid';
3
3
  import * as CID from '@atcute/cid';
4
- import { concat } from '@atcute/uint8array';
5
4
 
6
- import { isCarV1Header, type CarEntry, type CarHeader } from './types.js';
5
+ import { isCarV1Header, type CarEntry, type CarHeader } from './types.ts';
7
6
 
8
7
  export interface StreamedCarReader {
9
8
  header(): Promise<CarHeader>;
@@ -112,12 +111,12 @@ export const fromStream = (stream: ReadableStream<Uint8Array>): StreamedCarReade
112
111
  };
113
112
 
114
113
  const readCid = async (): Promise<Cid> => {
115
- const head = await readExact(4);
114
+ const bytes = await readExact(36);
116
115
 
117
- const version = head[0];
118
- const codec = head[1];
119
- const digestType = head[2];
120
- const digestSize = head[3];
116
+ const version = bytes[0];
117
+ const codec = bytes[1];
118
+ const digestType = bytes[2];
119
+ const digestSize = bytes[3];
121
120
 
122
121
  if (version !== CID.CID_VERSION) {
123
122
  throw new RangeError(`incorrect cid version (got v${version})`);
@@ -131,25 +130,19 @@ export const fromStream = (stream: ReadableStream<Uint8Array>): StreamedCarReade
131
130
  throw new RangeError(`incorrect cid digest type (got 0x${digestType.toString(16)})`);
132
131
  }
133
132
 
134
- if (digestSize !== 32 && digestSize !== 0) {
133
+ if (digestSize !== 32) {
135
134
  throw new RangeError(`incorrect cid digest size (got ${digestSize})`);
136
135
  }
137
136
 
138
- // concatenate and have digest refer back to this buffer
139
- const bytes = concat([head, await readExact(digestSize)]);
140
- const digest = bytes.subarray(4, 4 + digestSize);
141
-
142
- const cid: Cid = {
137
+ return {
143
138
  version: version,
144
139
  codec: codec,
145
140
  digest: {
146
141
  codec: digestType,
147
- contents: digest,
142
+ contents: bytes.subarray(4, 36),
148
143
  },
149
144
  bytes: bytes,
150
145
  };
151
-
152
- return cid;
153
146
  };
154
147
 
155
148
  return {
package/lib/types.ts CHANGED
@@ -44,4 +44,4 @@ export interface CarBlock {
44
44
  cid: Uint8Array;
45
45
  /** the block data */
46
46
  data: Uint8Array;
47
- }
47
+ }
package/lib/writer.ts CHANGED
@@ -3,7 +3,7 @@ import type { CidLink } from '@atcute/cid';
3
3
  import { allocUnsafe } from '@atcute/uint8array';
4
4
  import * as varint from '@atcute/varint';
5
5
 
6
- import type { CarBlock } from './types.js';
6
+ import type { CarBlock } from './types.ts';
7
7
 
8
8
  /**
9
9
  * encodes a number as an unsigned varint (variable-length integer)
package/package.json CHANGED
@@ -1,12 +1,11 @@
1
1
  {
2
- "type": "module",
3
2
  "name": "@atcute/car",
4
- "version": "5.0.0",
3
+ "version": "5.1.1",
5
4
  "description": "lightweight DASL CAR (content-addressable archives) codec for AT Protocol.",
6
5
  "keywords": [
7
6
  "atproto",
8
- "dasl",
9
- "car"
7
+ "car",
8
+ "dasl"
10
9
  ],
11
10
  "license": "0BSD",
12
11
  "repository": {
@@ -19,23 +18,28 @@
19
18
  "!lib/**/*.bench.ts",
20
19
  "!lib/**/*.test.ts"
21
20
  ],
21
+ "type": "module",
22
+ "sideEffects": false,
22
23
  "exports": {
23
24
  ".": "./dist/index.js"
24
25
  },
25
- "sideEffects": false,
26
- "devDependencies": {
27
- "@vitest/coverage-v8": "^3.2.4",
28
- "vitest": "^3.2.4",
29
- "@atcute/multibase": "^1.1.6"
26
+ "publishConfig": {
27
+ "access": "public"
30
28
  },
31
29
  "dependencies": {
32
- "@atcute/cid": "^2.2.6",
33
- "@atcute/cbor": "^2.2.7",
34
- "@atcute/uint8array": "^1.0.5",
35
- "@atcute/varint": "^1.0.3"
30
+ "@atcute/cbor": "^2.3.2",
31
+ "@atcute/cid": "^2.4.1",
32
+ "@atcute/uint8array": "^1.1.1",
33
+ "@atcute/varint": "^2.0.0"
34
+ },
35
+ "devDependencies": {
36
+ "@types/node": "^25.2.3",
37
+ "@vitest/coverage-v8": "^4.0.18",
38
+ "vitest": "^4.0.18",
39
+ "@atcute/multibase": "^1.1.8"
36
40
  },
37
41
  "scripts": {
38
- "build": "tsc --project tsconfig.build.json",
42
+ "build": "tsgo --project tsconfig.build.json",
39
43
  "test": "vitest --coverage",
40
44
  "prepublish": "rm -rf dist; pnpm run build"
41
45
  }