@ipld/car 5.4.0 → 5.4.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.
Files changed (55) hide show
  1. package/README.md +12 -0
  2. package/dist/index.min.js +4 -3
  3. package/dist/index.min.js.map +7 -0
  4. package/dist/src/buffer-decoder.d.ts +15 -15
  5. package/dist/src/buffer-decoder.d.ts.map +1 -1
  6. package/dist/src/buffer-reader-browser.d.ts +12 -12
  7. package/dist/src/buffer-reader-browser.d.ts.map +1 -1
  8. package/dist/src/buffer-reader.d.ts +3 -3
  9. package/dist/src/buffer-reader.d.ts.map +1 -1
  10. package/dist/src/buffer-writer.d.ts +20 -20
  11. package/dist/src/buffer-writer.d.ts.map +1 -1
  12. package/dist/src/decoder-common.d.ts +4 -4
  13. package/dist/src/decoder-common.d.ts.map +1 -1
  14. package/dist/src/decoder.d.ts +18 -18
  15. package/dist/src/decoder.d.ts.map +1 -1
  16. package/dist/src/encoder.d.ts +5 -5
  17. package/dist/src/encoder.d.ts.map +1 -1
  18. package/dist/src/header-validator.d.ts +2 -2
  19. package/dist/src/header-validator.d.ts.map +1 -1
  20. package/dist/src/index.d.ts.map +1 -1
  21. package/dist/src/indexed-reader-browser.d.ts.map +1 -1
  22. package/dist/src/indexed-reader.d.ts +9 -10
  23. package/dist/src/indexed-reader.d.ts.map +1 -1
  24. package/dist/src/indexer.d.ts +10 -10
  25. package/dist/src/indexer.d.ts.map +1 -1
  26. package/dist/src/iterator-channel.d.ts +2 -2
  27. package/dist/src/iterator-channel.d.ts.map +1 -1
  28. package/dist/src/iterator.d.ts +8 -8
  29. package/dist/src/iterator.d.ts.map +1 -1
  30. package/dist/src/promise-fs-opts.d.ts.map +1 -1
  31. package/dist/src/reader-browser.d.ts +13 -13
  32. package/dist/src/reader-browser.d.ts.map +1 -1
  33. package/dist/src/reader.d.ts +7 -7
  34. package/dist/src/reader.d.ts.map +1 -1
  35. package/dist/src/writer-browser.d.ts +13 -13
  36. package/dist/src/writer-browser.d.ts.map +1 -1
  37. package/dist/src/writer.d.ts +4 -4
  38. package/dist/src/writer.d.ts.map +1 -1
  39. package/package.json +11 -3
  40. package/src/buffer-decoder.js +7 -7
  41. package/src/buffer-reader-browser.js +5 -5
  42. package/src/buffer-reader.js +3 -3
  43. package/src/buffer-writer.js +5 -5
  44. package/src/decoder-common.js +2 -2
  45. package/src/decoder.js +10 -10
  46. package/src/encoder.js +3 -3
  47. package/src/header-validator.js +62 -20
  48. package/src/indexed-reader.js +4 -4
  49. package/src/indexer.js +4 -4
  50. package/src/iterator-channel.js +1 -1
  51. package/src/iterator.js +3 -3
  52. package/src/reader-browser.js +5 -5
  53. package/src/reader.js +3 -3
  54. package/src/writer-browser.js +5 -5
  55. package/src/writer.js +1 -1
@@ -1,9 +1,9 @@
1
1
  /**
2
- * @typedef {import('./api').Block} Block
3
- * @typedef {import('./api').BlockWriter} BlockWriter
4
- * @typedef {import('./api').WriterChannel} WriterChannel
5
- * @typedef {import('./coding').CarEncoder} CarEncoder
6
- * @typedef {import('./coding').IteratorChannel<Uint8Array>} IteratorChannel
2
+ * @typedef {import('./api.js').Block} Block
3
+ * @typedef {import('./api.js').BlockWriter} BlockWriter
4
+ * @typedef {import('./api.js').WriterChannel} WriterChannel
5
+ * @typedef {import('./coding.js').CarEncoder} CarEncoder
6
+ * @typedef {import('./coding.js').IteratorChannel<Uint8Array>} IteratorChannel
7
7
  */
8
8
  /**
9
9
  * Provides a writer interface for the creation of CAR files.
@@ -98,7 +98,7 @@ export class CarWriter implements BlockWriter {
98
98
  * @param {CarEncoder} encoder
99
99
  */
100
100
  constructor(roots: CID[], encoder: CarEncoder);
101
- _encoder: import("./coding").CarEncoder;
101
+ _encoder: import("./coding.js").CarEncoder;
102
102
  /** @type {Promise<void>} */
103
103
  _mutex: Promise<void>;
104
104
  _ended: boolean;
@@ -141,15 +141,15 @@ export class CarWriterOut implements AsyncIterable<Uint8Array> {
141
141
  * @param {AsyncIterator<Uint8Array>} iterator
142
142
  */
143
143
  constructor(iterator: AsyncIterator<Uint8Array>);
144
- _iterator: AsyncIterator<Uint8Array, any, undefined>;
144
+ _iterator: AsyncIterator<Uint8Array<ArrayBufferLike>, any, any>;
145
145
  _iterating: boolean | undefined;
146
- [Symbol.asyncIterator](): AsyncIterator<Uint8Array, any, undefined>;
146
+ [Symbol.asyncIterator](): AsyncIterator<Uint8Array<ArrayBufferLike>, any, any>;
147
147
  }
148
148
  export const __browser: true;
149
- export type Block = import('./api').Block;
150
- export type BlockWriter = import('./api').BlockWriter;
151
- export type WriterChannel = import('./api').WriterChannel;
152
- export type CarEncoder = import('./coding').CarEncoder;
153
- export type IteratorChannel = import('./coding').IteratorChannel<Uint8Array>;
149
+ export type Block = import("./api.js").Block;
150
+ export type BlockWriter = import("./api.js").BlockWriter;
151
+ export type WriterChannel = import("./api.js").WriterChannel;
152
+ export type CarEncoder = import("./coding.js").CarEncoder;
153
+ export type IteratorChannel = import("./coding.js").IteratorChannel<Uint8Array>;
154
154
  import { CID } from 'multiformats/cid';
155
155
  //# sourceMappingURL=writer-browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer-browser.d.ts","sourceRoot":"","sources":["../../src/writer-browser.js"],"names":[],"mappings":"AAKA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH;IAkEE;;;;;;;;;;OAUG;IACH,qBAJW,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,GAChB,aAAa,CASzB;IAED;;;;;;;;;;;;;OAaG;IACH,yBAHa,aAAa,CASzB;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,iCAPW,UAAU,SACV,GAAG,EAAE,GAIH,QAAQ,UAAU,CAAC,CAW/B;IA1ID;;;OAGG;IACH,mBAHW,GAAG,EAAE,WACL,UAAU,EAOpB;IAJC,wCAAuB;IACvB,4BAA4B;IAC5B,QADW,QAAQ,IAAI,CAAC,CACa;IACrC,gBAAmB;IAGrB;;;;;;;;;;OAUG;IACH,WAJW,KAAK,GACH,QAAQ,IAAI,CAAC,CAgBzB;IAED;;;;;;;;;OASG;IACH,SAFa,QAAQ,IAAI,CAAC,CASzB;IAED;;;;OAIG;IACH,WAFa,MAAM,CAIlB;CA4EF;AAED;;;GAGG;AACH,mDAF8B,UAAU;IAGtC;;OAEG;IACH,sBAFW,cAAc,UAAU,CAAC,EAInC;IADC,qDAAyB;IAOzB,gCAAsB;IAJxB,oEAMC;CACF;AAuCD,6BAA6B;oBAnPhB,OAAO,OAAO,EAAE,KAAK;0BACrB,OAAO,OAAO,EAAE,WAAW;4BAC3B,OAAO,OAAO,EAAE,aAAa;yBAC7B,OAAO,UAAU,EAAE,UAAU;8BAC7B,OAAO,UAAU,EAAE,eAAe,CAAC,UAAU,CAAC;oBAVvC,kBAAkB"}
1
+ {"version":3,"file":"writer-browser.d.ts","sourceRoot":"","sources":["../../src/writer-browser.js"],"names":[],"mappings":"AAKA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,kCAFgB,WAAW;IAoEzB;;;;;;;;;;OAUG;IACH,qBAJW,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,GAChB,aAAa,CASzB;IAED;;;;;;;;;;;;;OAaG;IACH,yBAHa,aAAa,CASzB;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,iCAPW,UAAU,SACV,GAAG,EAAE,GAIH,OAAO,CAAC,UAAU,CAAC,CAW/B;IA1ID;;;OAGG;IACH,mBAHW,GAAG,EAAE,WACL,UAAU,EAOpB;IAJC,2CAAuB;IACvB,4BAA4B;IAC5B,QADW,OAAO,CAAC,IAAI,CAAC,CACa;IACrC,gBAAmB;IAGrB;;;;;;;;;;OAUG;IACH,WAJW,KAAK,GACH,OAAO,CAAC,IAAI,CAAC,CAgBzB;IAED;;;;;;;;;OASG;IACH,SAFa,OAAO,CAAC,IAAI,CAAC,CASzB;IAED;;;;OAIG;IACH,WAFa,MAAM,CAIlB;CA4EF;AAED;;;GAGG;AACH,qCAFgB,aAAa,CAAC,UAAU;IAGtC;;OAEG;IACH,sBAFW,aAAa,CAAC,UAAU,CAAC,EAInC;IADC,gEAAyB;IAOzB,gCAAsB;IAJxB,+EAMC;CACF;AAuCD,wBAAyB,IAAI,CAAA;oBAnPhB,OAAO,UAAU,EAAE,KAAK;0BACxB,OAAO,UAAU,EAAE,WAAW;4BAC9B,OAAO,UAAU,EAAE,aAAa;yBAChC,OAAO,aAAa,EAAE,UAAU;8BAChC,OAAO,aAAa,EAAE,eAAe,CAAC,UAAU,CAAC;oBAV1C,kBAAkB"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @typedef {import('multiformats/cid').CID} CID
3
- * @typedef {import('./api').BlockWriter} BlockWriter
3
+ * @typedef {import('./api.js').BlockWriter} BlockWriter
4
4
  * @typedef {import('fs').promises.FileHandle} FileHandle
5
5
  */
6
6
  /**
@@ -38,8 +38,8 @@ export class CarWriter extends BrowserCarWriter implements BlockWriter {
38
38
  static updateRootsInFile(fd: FileHandle | number, roots: CID[]): Promise<void>;
39
39
  }
40
40
  export const __browser: boolean;
41
- export type CID = import('multiformats/cid').CID;
42
- export type BlockWriter = import('./api').BlockWriter;
43
- export type FileHandle = import('fs').promises.FileHandle;
41
+ export type CID = import("multiformats/cid").CID;
42
+ export type BlockWriter = import("./api.js").BlockWriter;
43
+ export type FileHandle = import("fs").promises.FileHandle;
44
44
  import { CarWriter as BrowserCarWriter } from './writer-browser.js';
45
45
  //# sourceMappingURL=writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/writer.js"],"names":[],"mappings":"AAKA;;;;GAIG;AAEH;;;GAGG;AACH;IACE;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,6BATW,UAAU,GAAG,MAAM,SAGnB,GAAG,EAAE,GAIH,QAAQ,IAAI,CAAC,CAoCzB;CACF;AAED,gCAA+B;kBA1ElB,OAAO,kBAAkB,EAAE,GAAG;0BAC9B,OAAO,OAAO,EAAE,WAAW;yBAC3B,OAAO,IAAI,EAAE,QAAQ,CAAC,UAAU;8CALC,qBAAqB"}
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/writer.js"],"names":[],"mappings":"AAKA;;;;GAIG;AAEH;;;GAGG;AACH,2DAFgB,WAAW;IAGzB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,6BATW,UAAU,GAAG,MAAM,SAGnB,GAAG,EAAE,GAIH,OAAO,CAAC,IAAI,CAAC,CAoCzB;CACF;AAED,gCAA+B;kBA1ElB,OAAO,kBAAkB,EAAE,GAAG;0BAC9B,OAAO,UAAU,EAAE,WAAW;yBAC9B,OAAO,IAAI,EAAE,QAAQ,CAAC,UAAU;8CALC,qBAAqB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ipld/car",
3
- "version": "5.4.0",
3
+ "version": "5.4.2",
4
4
  "description": "Content Addressable aRchive format reader and writer",
5
5
  "author": "Rod <rod@vagg.org> (http://r.va.gg/)",
6
6
  "license": "Apache-2.0 OR MIT",
@@ -177,7 +177,15 @@
177
177
  "@semantic-release/changelog",
178
178
  "@semantic-release/npm",
179
179
  "@semantic-release/github",
180
- "@semantic-release/git"
180
+ [
181
+ "@semantic-release/git",
182
+ {
183
+ "assets": [
184
+ "CHANGELOG.md",
185
+ "package.json"
186
+ ]
187
+ }
188
+ ]
181
189
  ]
182
190
  },
183
191
  "scripts": {
@@ -208,7 +216,7 @@
208
216
  "@ipld/dag-pb": "^4.0.7",
209
217
  "@ipld/garbage": "^6.0.5",
210
218
  "@types/varint": "^6.0.3",
211
- "aegir": "^45.0.1",
219
+ "aegir": "^47.0.6",
212
220
  "jsdoc4readme": "^1.4.0"
213
221
  },
214
222
  "browser": {
@@ -5,13 +5,13 @@ import { CIDV0_BYTES, decodeV2Header, decodeVarint, getMultihashLength, V2_HEADE
5
5
  import { CarV1HeaderOrV2Pragma } from './header-validator.js'
6
6
 
7
7
  /**
8
- * @typedef {import('./api').Block} Block
9
- * @typedef {import('./api').BlockHeader} BlockHeader
10
- * @typedef {import('./api').BlockIndex} BlockIndex
11
- * @typedef {import('./coding').BytesBufferReader} BytesBufferReader
12
- * @typedef {import('./coding').CarHeader} CarHeader
13
- * @typedef {import('./coding').CarV2Header} CarV2Header
14
- * @typedef {import('./coding').CarV2FixedHeader} CarV2FixedHeader
8
+ * @typedef {import('./api.js').Block} Block
9
+ * @typedef {import('./api.js').BlockHeader} BlockHeader
10
+ * @typedef {import('./api.js').BlockIndex} BlockIndex
11
+ * @typedef {import('./coding.js').BytesBufferReader} BytesBufferReader
12
+ * @typedef {import('./coding.js').CarHeader} CarHeader
13
+ * @typedef {import('./coding.js').CarV2Header} CarV2Header
14
+ * @typedef {import('./coding.js').CarV2FixedHeader} CarV2FixedHeader
15
15
  */
16
16
 
17
17
  /**
@@ -2,10 +2,10 @@ import * as BufferDecoder from './buffer-decoder.js'
2
2
 
3
3
  /**
4
4
  * @typedef {import('multiformats').CID} CID
5
- * @typedef {import('./api').Block} Block
6
- * @typedef {import('./api').CarBufferReader} ICarBufferReader
7
- * @typedef {import('./coding').CarHeader} CarHeader
8
- * @typedef {import('./coding').CarV2Header} CarV2Header
5
+ * @typedef {import('./api.js').Block} Block
6
+ * @typedef {import('./api.js').CarBufferReader} ICarBufferReader
7
+ * @typedef {import('./coding.js').CarHeader} CarHeader
8
+ * @typedef {import('./coding.js').CarV2Header} CarV2Header
9
9
  */
10
10
 
11
11
  /**
@@ -42,7 +42,7 @@ export class CarBufferReader {
42
42
  }
43
43
 
44
44
  /**
45
- * @property version
45
+ * @property {number} version of the CAR
46
46
  * @memberof CarBufferReader
47
47
  * @instance
48
48
  */
@@ -2,9 +2,9 @@ import fs from 'fs'
2
2
  import { CarBufferReader as BrowserCarBufferReader } from './buffer-reader-browser.js'
3
3
 
4
4
  /**
5
- * @typedef {import('./api').Block} Block
6
- * @typedef {import('./api').BlockIndex} BlockIndex
7
- * @typedef {import('./api').CarBufferReader} ICarBufferReader
5
+ * @typedef {import('./api.js').Block} Block
6
+ * @typedef {import('./api.js').BlockIndex} BlockIndex
7
+ * @typedef {import('./api.js').CarBufferReader} ICarBufferReader
8
8
  */
9
9
 
10
10
  const fsread = fs.readSync
@@ -4,11 +4,11 @@ import { tokensToLength } from 'cborg/length'
4
4
  import varint from 'varint'
5
5
 
6
6
  /**
7
- * @typedef {import('./api').CID} CID
8
- * @typedef {import('./api').Block} Block
9
- * @typedef {import('./api').CarBufferWriter} Writer
10
- * @typedef {import('./api').CarBufferWriterOptions} Options
11
- * @typedef {import('./coding').CarEncoder} CarEncoder
7
+ * @typedef {import('./api.js').CID} CID
8
+ * @typedef {import('./api.js').Block} Block
9
+ * @typedef {import('./api.js').CarBufferWriter} Writer
10
+ * @typedef {import('./api.js').CarBufferWriterOptions} Options
11
+ * @typedef {import('./coding.js').CarEncoder} CarEncoder
12
12
  */
13
13
 
14
14
  /**
@@ -17,7 +17,7 @@ export const V2_HEADER_LENGTH = /* characteristics */ 16 /* v1 offset */ + 8 /*
17
17
  * ```
18
18
  *
19
19
  * @param {Uint8Array} bytes
20
- * @param {import('./coding').Seekable} seeker
20
+ * @param {import('./coding.js').Seekable} seeker
21
21
  * @returns {number}
22
22
  */
23
23
  export function decodeVarint (bytes, seeker) {
@@ -38,7 +38,7 @@ export function decodeVarint (bytes, seeker) {
38
38
  * ```
39
39
  *
40
40
  * @param {Uint8Array} bytes
41
- * @returns {import('./coding').CarV2FixedHeader}
41
+ * @returns {import('./coding.js').CarV2FixedHeader}
42
42
  */
43
43
  export function decodeV2Header (bytes) {
44
44
  const dv = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength)
package/src/decoder.js CHANGED
@@ -5,14 +5,14 @@ import { CIDV0_BYTES, decodeV2Header, decodeVarint, getMultihashLength, V2_HEADE
5
5
  import { CarV1HeaderOrV2Pragma } from './header-validator.js'
6
6
 
7
7
  /**
8
- * @typedef {import('./api').Block} Block
9
- * @typedef {import('./api').BlockHeader} BlockHeader
10
- * @typedef {import('./api').BlockIndex} BlockIndex
11
- * @typedef {import('./coding').BytesReader} BytesReader
12
- * @typedef {import('./coding').CarHeader} CarHeader
13
- * @typedef {import('./coding').CarV2Header} CarV2Header
14
- * @typedef {import('./coding').CarV2FixedHeader} CarV2FixedHeader
15
- * @typedef {import('./coding').CarDecoder} CarDecoder
8
+ * @typedef {import('./api.js').Block} Block
9
+ * @typedef {import('./api.js').BlockHeader} BlockHeader
10
+ * @typedef {import('./api.js').BlockIndex} BlockIndex
11
+ * @typedef {import('./coding.js').BytesReader} BytesReader
12
+ * @typedef {import('./coding.js').CarHeader} CarHeader
13
+ * @typedef {import('./coding.js').CarV2Header} CarV2Header
14
+ * @typedef {import('./coding.js').CarV2FixedHeader} CarV2FixedHeader
15
+ * @typedef {import('./coding.js').CarDecoder} CarDecoder
16
16
  */
17
17
 
18
18
  /**
@@ -201,10 +201,10 @@ export function bytesReader (bytes) {
201
201
  }
202
202
 
203
203
  /**
204
- * @ignore
205
204
  * reusable reader for streams and files, we just need a way to read an
206
205
  * additional chunk (of some undetermined size) and a way to close the
207
206
  * reader when finished
207
+ *
208
208
  * @param {() => Promise<Uint8Array|null>} readChunk
209
209
  * @returns {BytesReader}
210
210
  */
@@ -216,7 +216,7 @@ export function chunkReader (readChunk /*, closer */) {
216
216
 
217
217
  const read = async (/** @type {number} */ length) => {
218
218
  have = currentChunk.length - offset
219
- const bufa = [currentChunk.subarray(offset)]
219
+ const bufa = /** @type {Uint8Array<ArrayBufferLike>[]} */([currentChunk.subarray(offset)])
220
220
  while (have < length) {
221
221
  const chunk = await readChunk()
222
222
  if (chunk == null) {
package/src/encoder.js CHANGED
@@ -3,9 +3,9 @@ import varint from 'varint'
3
3
 
4
4
  /**
5
5
  * @typedef {import('multiformats').CID} CID
6
- * @typedef {import('./api').Block} Block
7
- * @typedef {import('./coding').CarEncoder} CarEncoder
8
- * @typedef {import('./coding').IteratorChannel_Writer<Uint8Array>} IteratorChannel_Writer
6
+ * @typedef {import('./api.js').Block} Block
7
+ * @typedef {import('./coding.js').CarEncoder} CarEncoder
8
+ * @typedef {import('./coding.js').IteratorChannel_Writer<Uint8Array>} IteratorChannel_Writer
9
9
  */
10
10
 
11
11
  const CAR_V1_VERSION = 1
@@ -1,41 +1,74 @@
1
- /** Auto-generated with @ipld/schema@v4.2.0 at Thu Sep 14 2023 from IPLD Schema:
1
+ /* eslint-disable jsdoc/check-indentation, max-depth */
2
+
3
+ /**
4
+ * Auto-generated with @ipld/schema@v4.2.0 at Thu Sep 14 2023 from IPLD Schema:
2
5
  *
3
6
  * # CarV1HeaderOrV2Pragma is a more relaxed form, and can parse {version:x} where
4
7
  * # roots are optional. This is typically useful for the {verison:2} CARv2
5
8
  * # pragma.
6
9
  *
7
10
  * type CarV1HeaderOrV2Pragma struct {
8
- * roots optional [&Any]
9
- * # roots is _not_ optional for CarV1 but we defer that check within code to
10
- * # gracefully handle the V2 case where it's just {version:X}
11
- * version Int
11
+ * roots optional [&Any]
12
+ * # roots is _not_ optional for CarV1 but we defer that check within code to
13
+ * # gracefully handle the V2 case where it's just {version:X}
14
+ * version Int
12
15
  * }
13
16
  *
14
17
  * # CarV1Header is the strict form of the header, and requires roots to be
15
18
  * # present. This is compatible with the CARv1 specification.
16
19
  *
17
20
  * # type CarV1Header struct {
18
- * # roots [&Any]
19
- * # version Int
21
+ * # roots [&Any]
22
+ * # version Int
20
23
  * # }
21
24
  *
22
25
  */
23
26
 
24
27
  const Kinds = {
25
- Null: /** @returns {undefined|null} */ (/** @type {any} */ obj) => obj === null ? obj : undefined,
26
- Int: /** @returns {undefined|number} */ (/** @type {any} */ obj) => Number.isInteger(obj) ? obj : undefined,
27
- Float: /** @returns {undefined|number} */ (/** @type {any} */ obj) => typeof obj === 'number' && Number.isFinite(obj) ? obj : undefined,
28
- String: /** @returns {undefined|string} */ (/** @type {any} */ obj) => typeof obj === 'string' ? obj : undefined,
29
- Bool: /** @returns {undefined|boolean} */ (/** @type {any} */ obj) => typeof obj === 'boolean' ? obj : undefined,
30
- Bytes: /** @returns {undefined|Uint8Array} */ (/** @type {any} */ obj) => obj instanceof Uint8Array ? obj : undefined,
31
- Link: /** @returns {undefined|object} */ (/** @type {any} */ obj) => obj !== null && typeof obj === 'object' && obj.asCID === obj ? obj : undefined,
32
- List: /** @returns {undefined|Array<any>} */ (/** @type {any} */ obj) => Array.isArray(obj) ? obj : undefined,
33
- Map: /** @returns {undefined|object} */ (/** @type {any} */ obj) => obj !== null && typeof obj === 'object' && obj.asCID !== obj && !Array.isArray(obj) && !(obj instanceof Uint8Array) ? obj : undefined
28
+ Null: /**
29
+ * @param obj
30
+ * @returns {undefined|null}
31
+ */ (/** @type {any} */ obj) => obj === null ? obj : undefined,
32
+ Int: /**
33
+ * @param obj
34
+ * @returns {undefined|number}
35
+ */ (/** @type {any} */ obj) => Number.isInteger(obj) ? obj : undefined,
36
+ Float: /**
37
+ * @param obj
38
+ * @returns {undefined|number}
39
+ */ (/** @type {any} */ obj) => typeof obj === 'number' && Number.isFinite(obj) ? obj : undefined,
40
+ String: /**
41
+ * @param obj
42
+ * @returns {undefined|string}
43
+ */ (/** @type {any} */ obj) => typeof obj === 'string' ? obj : undefined,
44
+ Bool: /**
45
+ * @param obj
46
+ * @returns {undefined|boolean}
47
+ */ (/** @type {any} */ obj) => typeof obj === 'boolean' ? obj : undefined,
48
+ Bytes: /**
49
+ * @param obj
50
+ * @returns {undefined|Uint8Array}
51
+ */ (/** @type {any} */ obj) => obj instanceof Uint8Array ? obj : undefined,
52
+ Link: /**
53
+ * @param obj
54
+ * @returns {undefined|object}
55
+ */ (/** @type {any} */ obj) => obj !== null && typeof obj === 'object' && obj.asCID === obj ? obj : undefined,
56
+ List: /**
57
+ * @param obj
58
+ * @returns {undefined|Array<any>}
59
+ */ (/** @type {any} */ obj) => Array.isArray(obj) ? obj : undefined,
60
+ Map: /**
61
+ * @param obj
62
+ * @returns {undefined|object}
63
+ */ (/** @type {any} */ obj) => obj !== null && typeof obj === 'object' && obj.asCID !== obj && !Array.isArray(obj) && !(obj instanceof Uint8Array) ? obj : undefined
34
64
  }
35
65
  /** @type {{ [k in string]: (obj:any)=>undefined|any}} */
36
66
  const Types = {
37
67
  'CarV1HeaderOrV2Pragma > roots (anon) > valueType (anon)': Kinds.Link,
38
- 'CarV1HeaderOrV2Pragma > roots (anon)': /** @returns {undefined|any} */ (/** @type {any} */ obj) => {
68
+ 'CarV1HeaderOrV2Pragma > roots (anon)': /**
69
+ * @param obj
70
+ * @returns {undefined|any}
71
+ */ (/** @type {any} */ obj) => {
39
72
  if (Kinds.List(obj) === undefined) {
40
73
  return undefined
41
74
  }
@@ -61,7 +94,10 @@ const Types = {
61
94
  return obj
62
95
  },
63
96
  Int: Kinds.Int,
64
- CarV1HeaderOrV2Pragma: /** @returns {undefined|any} */ (/** @type {any} */ obj) => {
97
+ CarV1HeaderOrV2Pragma: /**
98
+ * @param obj
99
+ * @returns {undefined|any}
100
+ */ (/** @type {any} */ obj) => {
65
101
  if (Kinds.Map(obj) === undefined) {
66
102
  return undefined
67
103
  }
@@ -123,7 +159,10 @@ const Types = {
123
159
  /** @type {{ [k in string]: (obj:any)=>undefined|any}} */
124
160
  const Reprs = {
125
161
  'CarV1HeaderOrV2Pragma > roots (anon) > valueType (anon)': Kinds.Link,
126
- 'CarV1HeaderOrV2Pragma > roots (anon)': /** @returns {undefined|any} */ (/** @type {any} */ obj) => {
162
+ 'CarV1HeaderOrV2Pragma > roots (anon)': /**
163
+ * @param obj
164
+ * @returns {undefined|any}
165
+ */ (/** @type {any} */ obj) => {
127
166
  if (Kinds.List(obj) === undefined) {
128
167
  return undefined
129
168
  }
@@ -149,7 +188,10 @@ const Reprs = {
149
188
  return obj
150
189
  },
151
190
  Int: Kinds.Int,
152
- CarV1HeaderOrV2Pragma: /** @returns {undefined|any} */ (/** @type {any} */ obj) => {
191
+ CarV1HeaderOrV2Pragma: /**
192
+ * @param obj
193
+ * @returns {undefined|any}
194
+ */ (/** @type {any} */ obj) => {
153
195
  if (Kinds.Map(obj) === undefined) {
154
196
  return undefined
155
197
  }
@@ -6,10 +6,10 @@ import { CarReader as NodeCarReader } from './reader.js'
6
6
 
7
7
  /**
8
8
  * @typedef {import('fs').promises.FileHandle} FileHandle
9
- * @typedef {import('./api').Block} Block
10
- * @typedef {import('./api').BlockIndex} BlockIndex
11
- * @typedef {import('./api').CarReader} CarReaderIface
12
- * @typedef {import('./reader-browser').CarReader} CarReader
9
+ * @typedef {import('./api.js').Block} Block
10
+ * @typedef {import('./api.js').BlockIndex} BlockIndex
11
+ * @typedef {import('./api.js').CarReader} CarReaderIface
12
+ * @typedef {import('./reader-browser.js').CarReader} CarReader
13
13
  * @typedef {{ blockLength:number, blockOffset:number }} RawLocation
14
14
  */
15
15
 
package/src/indexer.js CHANGED
@@ -6,10 +6,10 @@ import {
6
6
 
7
7
  /**
8
8
  * @typedef {import('multiformats').CID} CID
9
- * @typedef {import('./api').Block} Block
10
- * @typedef {import('./api').RootsReader} RootsReader
11
- * @typedef {import('./api').BlockIndex} BlockIndex
12
- * @typedef {import('./coding').BytesReader} BytesReader
9
+ * @typedef {import('./api.js').Block} Block
10
+ * @typedef {import('./api.js').RootsReader} RootsReader
11
+ * @typedef {import('./api.js').BlockIndex} BlockIndex
12
+ * @typedef {import('./coding.js').BytesReader} BytesReader
13
13
  */
14
14
 
15
15
  /**
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @template {any} T
3
- * @typedef {import('./coding').IteratorChannel<T>} IteratorChannel
3
+ * @typedef {import('./coding.js').IteratorChannel<T>} IteratorChannel
4
4
  */
5
5
 
6
6
  function noop () {}
package/src/iterator.js CHANGED
@@ -6,9 +6,9 @@ import {
6
6
 
7
7
  /**
8
8
  * @typedef {import('multiformats').CID} CID
9
- * @typedef {import('./api').Block} Block
10
- * @typedef {import('./api').RootsReader} RootsReader
11
- * @typedef {import('./coding').BytesReader} BytesReader
9
+ * @typedef {import('./api.js').Block} Block
10
+ * @typedef {import('./api.js').RootsReader} RootsReader
11
+ * @typedef {import('./coding.js').BytesReader} BytesReader
12
12
  */
13
13
 
14
14
  /**
@@ -2,11 +2,11 @@ import { asyncIterableReader, bytesReader, createDecoder } from './decoder.js'
2
2
 
3
3
  /**
4
4
  * @typedef {import('multiformats').CID} CID
5
- * @typedef {import('./api').Block} Block
6
- * @typedef {import('./api').CarReader} CarReaderIface
7
- * @typedef {import('./coding').BytesReader} BytesReader
8
- * @typedef {import('./coding').CarHeader} CarHeader
9
- * @typedef {import('./coding').CarV2Header} CarV2Header
5
+ * @typedef {import('./api.js').Block} Block
6
+ * @typedef {import('./api.js').CarReader} CarReaderIface
7
+ * @typedef {import('./coding.js').BytesReader} BytesReader
8
+ * @typedef {import('./coding.js').CarHeader} CarHeader
9
+ * @typedef {import('./coding.js').CarV2Header} CarV2Header
10
10
  */
11
11
 
12
12
  /**
package/src/reader.js CHANGED
@@ -2,9 +2,9 @@ import { fsread, hasFS } from './promise-fs-opts.js'
2
2
  import { CarReader as BrowserCarReader } from './reader-browser.js'
3
3
 
4
4
  /**
5
- * @typedef {import('./api').Block} Block
6
- * @typedef {import('./api').BlockIndex} BlockIndex
7
- * @typedef {import('./api').CarReader} CarReaderIface
5
+ * @typedef {import('./api.js').Block} Block
6
+ * @typedef {import('./api.js').BlockIndex} BlockIndex
7
+ * @typedef {import('./api.js').CarReader} CarReaderIface
8
8
  * @typedef {import('fs').promises.FileHandle} FileHandle
9
9
  */
10
10
 
@@ -4,11 +4,11 @@ import { createEncoder, createHeader } from './encoder.js'
4
4
  import { create as iteratorChannel } from './iterator-channel.js'
5
5
 
6
6
  /**
7
- * @typedef {import('./api').Block} Block
8
- * @typedef {import('./api').BlockWriter} BlockWriter
9
- * @typedef {import('./api').WriterChannel} WriterChannel
10
- * @typedef {import('./coding').CarEncoder} CarEncoder
11
- * @typedef {import('./coding').IteratorChannel<Uint8Array>} IteratorChannel
7
+ * @typedef {import('./api.js').Block} Block
8
+ * @typedef {import('./api.js').BlockWriter} BlockWriter
9
+ * @typedef {import('./api.js').WriterChannel} WriterChannel
10
+ * @typedef {import('./coding.js').CarEncoder} CarEncoder
11
+ * @typedef {import('./coding.js').IteratorChannel<Uint8Array>} IteratorChannel
12
12
  */
13
13
 
14
14
  /**
package/src/writer.js CHANGED
@@ -5,7 +5,7 @@ import { CarWriter as BrowserCarWriter } from './writer-browser.js'
5
5
 
6
6
  /**
7
7
  * @typedef {import('multiformats/cid').CID} CID
8
- * @typedef {import('./api').BlockWriter} BlockWriter
8
+ * @typedef {import('./api.js').BlockWriter} BlockWriter
9
9
  * @typedef {import('fs').promises.FileHandle} FileHandle
10
10
  */
11
11