@atcute/cid 2.4.0 → 2.4.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 +16 -57
- package/dist/cid-link.d.ts +1 -1
- package/dist/cid-link.d.ts.map +1 -1
- package/dist/cid-link.js +8 -15
- package/dist/cid-link.js.map +1 -1
- package/dist/codec.d.ts +1 -1
- package/dist/codec.d.ts.map +1 -1
- package/dist/codec.js +2 -11
- package/dist/codec.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/lib/cid-link.ts +8 -19
- package/lib/codec.ts +3 -16
- package/lib/index.ts +2 -2
- package/package.json +13 -13
package/README.md
CHANGED
|
@@ -13,74 +13,33 @@ their contents.
|
|
|
13
13
|
|
|
14
14
|
## usage
|
|
15
15
|
|
|
16
|
-
### creating CIDs
|
|
17
|
-
|
|
18
16
|
```ts
|
|
19
17
|
import * as CID from '@atcute/cid';
|
|
18
|
+
import { toCidLink, fromCidLink, isCidLink } from '@atcute/cid';
|
|
20
19
|
|
|
21
|
-
// create a CID
|
|
20
|
+
// create a CID by hashing data (0x71 for DAG-CBOR, 0x55 for raw)
|
|
22
21
|
const cid = await CID.create(0x71, cborBytes);
|
|
23
|
-
// -> { version: 1, codec: 113, digest: {
|
|
24
|
-
|
|
25
|
-
// create from raw data
|
|
26
|
-
const rawCid = await CID.create(0x55, rawBytes);
|
|
27
|
-
|
|
28
|
-
// create an empty CID (zero-length digest)
|
|
29
|
-
const empty = CID.createEmpty(0x71);
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
### parsing CIDs
|
|
33
|
-
|
|
34
|
-
```ts
|
|
35
|
-
import * as CID from '@atcute/cid';
|
|
22
|
+
// -> { version: 1, codec: 113, digest: { codec: 18, contents: Uint8Array(32) }, bytes: Uint8Array(36) }
|
|
36
23
|
|
|
37
24
|
// parse from base32 string
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
// parse from binary (with 0x00 prefix)
|
|
41
|
-
const cid = CID.fromBinary(bytes);
|
|
42
|
-
|
|
43
|
-
// parse from raw CID bytes
|
|
44
|
-
const cid = CID.decode(cidBytes);
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### serializing CIDs
|
|
48
|
-
|
|
49
|
-
```ts
|
|
50
|
-
import * as CID from '@atcute/cid';
|
|
51
|
-
|
|
52
|
-
// to base32 string
|
|
53
|
-
CID.toString(cid);
|
|
54
|
-
// -> "bafyreihffx5a2e7k5uwrmmgofbvzujc5cmw5h4espouwuxt3liqoflx3ee"
|
|
55
|
-
|
|
56
|
-
// to binary (with 0x00 prefix)
|
|
57
|
-
CID.toBinary(cid);
|
|
58
|
-
// -> Uint8Array(37)
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### comparing CIDs
|
|
62
|
-
|
|
63
|
-
```ts
|
|
64
|
-
import * as CID from '@atcute/cid';
|
|
65
|
-
|
|
66
|
-
CID.equals(cidA, cidB); // true if same content hash
|
|
67
|
-
```
|
|
25
|
+
const parsed = CID.fromString('bafyreihffx5a2e7k5uwrmmgofbvzujc5cmw5h4espouwuxt3liqoflx3ee');
|
|
68
26
|
|
|
69
|
-
|
|
27
|
+
// parse from binary (with 0x00 prefix) or raw CID bytes
|
|
28
|
+
const fromBin = CID.fromBinary(binaryBytes);
|
|
29
|
+
const fromRaw = CID.decode(cidBytes);
|
|
70
30
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
import { toCidLink, fromCidLink, isCidLink } from '@atcute/cid';
|
|
31
|
+
// serialize to base32 string or binary format
|
|
32
|
+
CID.toString(cid); // -> "bafyreihffx5a2e7k5uwrmmgofbvzujc5cmw5h4espouwuxt3liqoflx3ee"
|
|
33
|
+
CID.toBinary(cid); // -> Uint8Array(37) with 0x00 prefix
|
|
75
34
|
|
|
76
|
-
//
|
|
77
|
-
|
|
78
|
-
// -> { $link: "bafyrei..." }
|
|
35
|
+
// compare two CIDs
|
|
36
|
+
CID.equals(cidA, cidB); // -> true if identical
|
|
79
37
|
|
|
80
|
-
// convert
|
|
81
|
-
const
|
|
38
|
+
// convert to CidLink for JSON serialization (atproto data model)
|
|
39
|
+
const link = toCidLink(cid); // -> { $link: "bafyrei..." }
|
|
40
|
+
const back = fromCidLink(link);
|
|
82
41
|
|
|
83
|
-
// type guard
|
|
42
|
+
// type guard for CidLink
|
|
84
43
|
if (isCidLink(value)) {
|
|
85
44
|
console.log(value.$link);
|
|
86
45
|
}
|
package/dist/cid-link.d.ts
CHANGED
package/dist/cid-link.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cid-link.d.ts","sourceRoot":"","sources":["../lib/cid-link.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"cid-link.d.ts","sourceRoot":"","sources":["../lib/cid-link.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAI1D,MAAM,WAAW,OAAO;IACvB,KAAK,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,cAAe,YAAW,OAAO;IAI7C,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAE3B,YAAY,KAAK,EAAE,UAAU,EAE5B;IAED,IAAI,KAAK,IAAI,MAAM,CAQlB;IAED,MAAM,IAAI,OAAO,CAEhB;CACD;AAED,eAAO,MAAM,SAAS,sCAOrB,CAAC;AAEF,eAAO,MAAM,SAAS,uBAErB,CAAC;AAEF,eAAO,MAAM,WAAW,wBAMvB,CAAC"}
|
package/dist/cid-link.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { toBase32 } from '@atcute/multibase';
|
|
2
|
-
import {
|
|
2
|
+
import { decode, fromString } from './codec.js';
|
|
3
3
|
const CID_LINK_SYMBOL = Symbol.for('@atcute/cid-link-wrapper');
|
|
4
|
-
/** @internal */
|
|
5
|
-
export const CIDLINK_STRINGIFY_CACHE = new WeakMap();
|
|
6
4
|
export class CidLinkWrapper {
|
|
7
5
|
/** @internal */
|
|
8
6
|
[CID_LINK_SYMBOL] = true;
|
|
@@ -11,12 +9,12 @@ export class CidLinkWrapper {
|
|
|
11
9
|
this.bytes = bytes;
|
|
12
10
|
}
|
|
13
11
|
get $link() {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
return
|
|
12
|
+
const link = `b${toBase32(this.bytes)}`;
|
|
13
|
+
Object.defineProperty(this, '$link', {
|
|
14
|
+
value: link,
|
|
15
|
+
enumerable: true,
|
|
16
|
+
});
|
|
17
|
+
return link;
|
|
20
18
|
}
|
|
21
19
|
toJSON() {
|
|
22
20
|
return { $link: this.$link };
|
|
@@ -28,12 +26,7 @@ export const isCidLink = (value) => {
|
|
|
28
26
|
(val !== null && typeof val === 'object' && typeof val.$link === 'string'));
|
|
29
27
|
};
|
|
30
28
|
export const toCidLink = (cid) => {
|
|
31
|
-
|
|
32
|
-
const str = CID_STRINGIFY_CACHE.get(cid);
|
|
33
|
-
if (str !== undefined) {
|
|
34
|
-
CIDLINK_STRINGIFY_CACHE.set(inst, str);
|
|
35
|
-
}
|
|
36
|
-
return inst;
|
|
29
|
+
return new CidLinkWrapper(cid.bytes);
|
|
37
30
|
};
|
|
38
31
|
export const fromCidLink = (link) => {
|
|
39
32
|
if (link instanceof CidLinkWrapper) {
|
package/dist/cid-link.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cid-link.js","sourceRoot":"","sources":["../lib/cid-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cid-link.js","sourceRoot":"","sources":["../lib/cid-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAY,MAAM,YAAY,CAAC;AAE1D,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAM/D,MAAM,OAAO,cAAc;IAC1B,gBAAgB;IACP,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;IAEzB,KAAK,CAAa;IAE3B,YAAY,KAAiB,EAAE;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAAA,CACnB;IAED,IAAI,KAAK,GAAW;QACnB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE;YACpC,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAAA,CACZ;IAED,MAAM,GAAY;QACjB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAAA,CAC7B;CACD;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAoB,EAAE,CAAC;IAC9D,MAAM,GAAG,GAAG,KAAY,CAAC;IAEzB,OAAO,CACN,GAAG,YAAY,cAAc;QAC7B,CAAC,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAC1E,CAAC;AAAA,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAQ,EAAW,EAAE,CAAC;IAC/C,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAAA,CACrC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAa,EAAO,EAAE,CAAC;IAClD,IAAI,IAAI,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAAA,CAC9B,CAAC"}
|
package/dist/codec.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ export declare const fromDigest: (codec: 85 | 113, digest: Uint8Array<ArrayBuffe
|
|
|
39
39
|
* @param data raw data to hash
|
|
40
40
|
* @returns CID object
|
|
41
41
|
*/
|
|
42
|
-
export declare const create: (codec: 85 | 113, data: Uint8Array<
|
|
42
|
+
export declare const create: (codec: 85 | 113, data: Uint8Array<ArrayBuffer>) => Promise<Cid>;
|
|
43
43
|
/**
|
|
44
44
|
* decodes a CID from bytes, returning the CID and any remaining bytes
|
|
45
45
|
* @param bytes raw CID bytes
|
package/dist/codec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../lib/codec.ts"],"names":[],"mappings":"AAGA,wCAAwC;AACxC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,kCAAkC;AAClC,eAAO,MAAM,WAAW,KAAO,CAAC;AAEhC,qCAAqC;AACrC,eAAO,MAAM,SAAS,KAAO,CAAC;AAC9B,2CAA2C;AAC3C,eAAO,MAAM,WAAW,MAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../lib/codec.ts"],"names":[],"mappings":"AAGA,wCAAwC;AACxC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,kCAAkC;AAClC,eAAO,MAAM,WAAW,KAAO,CAAC;AAEhC,qCAAqC;AACrC,eAAO,MAAM,SAAS,KAAO,CAAC;AAC9B,2CAA2C;AAC3C,eAAO,MAAM,WAAW,MAAO,CAAC;AAEhC;;;;GAIG;AACH,MAAM,WAAW,GAAG;IACnB,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,sFAAsF;IACtF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,QAAQ,CAAC,MAAM,EAAE;QAChB,wEAAwE;QACxE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,qBAAqB;QACrB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;KAC9B,CAAC;IACF,oBAAoB;IACpB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC3B;AAKD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,+DAuBtB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,kEAGlB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,gGAqCvB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,6CAQlB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,wBAQtB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,sBAEpB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,6CAOtB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,QAAQ,2CAMpB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,6BAElB,CAAC"}
|
package/dist/codec.js
CHANGED
|
@@ -8,8 +8,6 @@ export const HASH_SHA256 = 0x12;
|
|
|
8
8
|
export const CODEC_RAW = 0x55;
|
|
9
9
|
/** multicodec for DAG-CBOR encoded data */
|
|
10
10
|
export const CODEC_DCBOR = 0x71;
|
|
11
|
-
/** @internal */
|
|
12
|
-
export const CID_STRINGIFY_CACHE = new WeakMap();
|
|
13
11
|
// a SHA-256 CIDv1 is always going to be 36 bytes, that's 4 bytes for the
|
|
14
12
|
// header, and 32 bytes for the digest itself.
|
|
15
13
|
/**
|
|
@@ -111,9 +109,7 @@ export const fromString = (input) => {
|
|
|
111
109
|
throw new SyntaxError(`not a valid cid string`);
|
|
112
110
|
}
|
|
113
111
|
const bytes = fromBase32(input.slice(1));
|
|
114
|
-
|
|
115
|
-
CID_STRINGIFY_CACHE.set(cid, input);
|
|
116
|
-
return cid;
|
|
112
|
+
return decode(bytes);
|
|
117
113
|
};
|
|
118
114
|
/**
|
|
119
115
|
* encodes a CID to a multibase base32 string
|
|
@@ -121,12 +117,7 @@ export const fromString = (input) => {
|
|
|
121
117
|
* @returns base32-encoded string with 'b' prefix
|
|
122
118
|
*/
|
|
123
119
|
export const toString = (cid) => {
|
|
124
|
-
|
|
125
|
-
if (str === undefined) {
|
|
126
|
-
str = `b${toBase32(cid.bytes)}`;
|
|
127
|
-
CID_STRINGIFY_CACHE.set(cid, str);
|
|
128
|
-
}
|
|
129
|
-
return str;
|
|
120
|
+
return `b${toBase32(cid.bytes)}`;
|
|
130
121
|
};
|
|
131
122
|
/**
|
|
132
123
|
* parses a CID from binary format (with 0x00 prefix)
|
package/dist/codec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../lib/codec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEpF,wCAAwC;AACxC,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,kCAAkC;AAClC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAEhC,qCAAqC;AACrC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC;AAC9B,2CAA2C;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../lib/codec.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './cid-link.
|
|
2
|
-
export * from './codec.
|
|
1
|
+
export * from './cid-link.ts';
|
|
2
|
+
export * from './codec.ts';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/cid-link.ts
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { toBase32 } from '@atcute/multibase';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { decode, fromString, type Cid } from './codec.ts';
|
|
4
4
|
|
|
5
5
|
const CID_LINK_SYMBOL = Symbol.for('@atcute/cid-link-wrapper');
|
|
6
6
|
|
|
7
|
-
/** @internal */
|
|
8
|
-
export const CIDLINK_STRINGIFY_CACHE = new WeakMap<CidLinkWrapper, string>();
|
|
9
|
-
|
|
10
7
|
export interface CidLink {
|
|
11
8
|
$link: string;
|
|
12
9
|
}
|
|
@@ -22,14 +19,13 @@ export class CidLinkWrapper implements CidLink {
|
|
|
22
19
|
}
|
|
23
20
|
|
|
24
21
|
get $link(): string {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
22
|
+
const link = `b${toBase32(this.bytes)}`;
|
|
23
|
+
Object.defineProperty(this, '$link', {
|
|
24
|
+
value: link,
|
|
25
|
+
enumerable: true,
|
|
26
|
+
});
|
|
31
27
|
|
|
32
|
-
return
|
|
28
|
+
return link;
|
|
33
29
|
}
|
|
34
30
|
|
|
35
31
|
toJSON(): CidLink {
|
|
@@ -47,14 +43,7 @@ export const isCidLink = (value: unknown): value is CidLink => {
|
|
|
47
43
|
};
|
|
48
44
|
|
|
49
45
|
export const toCidLink = (cid: Cid): CidLink => {
|
|
50
|
-
|
|
51
|
-
const str = CID_STRINGIFY_CACHE.get(cid);
|
|
52
|
-
|
|
53
|
-
if (str !== undefined) {
|
|
54
|
-
CIDLINK_STRINGIFY_CACHE.set(inst, str);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return inst;
|
|
46
|
+
return new CidLinkWrapper(cid.bytes);
|
|
58
47
|
};
|
|
59
48
|
|
|
60
49
|
export const fromCidLink = (link: CidLink): Cid => {
|
package/lib/codec.ts
CHANGED
|
@@ -11,9 +11,6 @@ export const CODEC_RAW = 0x55;
|
|
|
11
11
|
/** multicodec for DAG-CBOR encoded data */
|
|
12
12
|
export const CODEC_DCBOR = 0x71;
|
|
13
13
|
|
|
14
|
-
/** @internal */
|
|
15
|
-
export const CID_STRINGIFY_CACHE = new WeakMap<Cid, string>();
|
|
16
|
-
|
|
17
14
|
/**
|
|
18
15
|
* represents a Content Identifier (CID), in particular, a limited subset of
|
|
19
16
|
* CIDv1 as described by DASL specifications.
|
|
@@ -75,7 +72,7 @@ export const fromDigest = (codec: 0x55 | 0x71, digest: Uint8Array): Cid => {
|
|
|
75
72
|
* @param data raw data to hash
|
|
76
73
|
* @returns CID object
|
|
77
74
|
*/
|
|
78
|
-
export const create = async (codec: 0x55 | 0x71, data: Uint8Array): Promise<Cid> => {
|
|
75
|
+
export const create = async (codec: 0x55 | 0x71, data: Uint8Array<ArrayBuffer>): Promise<Cid> => {
|
|
79
76
|
const digest = await toSha256(data);
|
|
80
77
|
return fromDigest(codec, digest);
|
|
81
78
|
};
|
|
@@ -155,10 +152,7 @@ export const fromString = (input: string): Cid => {
|
|
|
155
152
|
}
|
|
156
153
|
|
|
157
154
|
const bytes = fromBase32(input.slice(1));
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
CID_STRINGIFY_CACHE.set(cid, input);
|
|
161
|
-
return cid;
|
|
155
|
+
return decode(bytes);
|
|
162
156
|
};
|
|
163
157
|
|
|
164
158
|
/**
|
|
@@ -167,14 +161,7 @@ export const fromString = (input: string): Cid => {
|
|
|
167
161
|
* @returns base32-encoded string with 'b' prefix
|
|
168
162
|
*/
|
|
169
163
|
export const toString = (cid: Cid): string => {
|
|
170
|
-
|
|
171
|
-
if (str === undefined) {
|
|
172
|
-
str = `b${toBase32(cid.bytes)}`;
|
|
173
|
-
|
|
174
|
-
CID_STRINGIFY_CACHE.set(cid, str);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
return str;
|
|
164
|
+
return `b${toBase32(cid.bytes)}`;
|
|
178
165
|
};
|
|
179
166
|
|
|
180
167
|
/**
|
package/lib/index.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
{
|
|
2
|
-
"type": "module",
|
|
3
2
|
"name": "@atcute/cid",
|
|
4
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.1",
|
|
5
4
|
"description": "lightweight DASL CID codec library for AT Protocol",
|
|
6
5
|
"keywords": [
|
|
7
6
|
"atproto",
|
|
8
|
-
"
|
|
9
|
-
"
|
|
7
|
+
"cid",
|
|
8
|
+
"dasl"
|
|
10
9
|
],
|
|
11
10
|
"license": "0BSD",
|
|
12
11
|
"repository": {
|
|
13
12
|
"url": "https://github.com/mary-ext/atcute",
|
|
14
13
|
"directory": "packages/utilities/cid"
|
|
15
14
|
},
|
|
16
|
-
"publishConfig": {
|
|
17
|
-
"access": "public"
|
|
18
|
-
},
|
|
19
15
|
"files": [
|
|
20
16
|
"dist/",
|
|
21
17
|
"lib/",
|
|
22
18
|
"!lib/**/*.bench.ts",
|
|
23
19
|
"!lib/**/*.test.ts"
|
|
24
20
|
],
|
|
21
|
+
"type": "module",
|
|
22
|
+
"sideEffects": false,
|
|
25
23
|
"exports": {
|
|
26
24
|
".": "./dist/index.js",
|
|
27
25
|
"./cid-link": "./dist/cid-link.js"
|
|
28
26
|
},
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
"@vitest/coverage-v8": "^4.0.16",
|
|
32
|
-
"vitest": "^4.0.16"
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public"
|
|
33
29
|
},
|
|
34
30
|
"dependencies": {
|
|
35
|
-
"@atcute/multibase": "^1.1.
|
|
36
|
-
"@atcute/uint8array": "^1.
|
|
31
|
+
"@atcute/multibase": "^1.1.8",
|
|
32
|
+
"@atcute/uint8array": "^1.1.1"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
36
|
+
"vitest": "^4.0.18"
|
|
37
37
|
},
|
|
38
38
|
"scripts": {
|
|
39
39
|
"build": "tsgo --project tsconfig.build.json",
|