@atproto/common 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/buffers.d.ts +0 -1
- package/dist/buffers.d.ts.map +1 -1
- package/dist/buffers.js +2 -3
- package/dist/buffers.js.map +1 -1
- package/dist/dates.js +1 -2
- package/dist/dates.js.map +1 -1
- package/dist/fs.d.ts.map +1 -1
- package/dist/ipld.d.ts +1 -8
- package/dist/ipld.d.ts.map +1 -1
- package/dist/ipld.js +25 -34
- package/dist/ipld.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/obfuscate.js +8 -9
- package/dist/obfuscate.js.map +1 -1
- package/dist/streams.d.ts +5 -5
- package/dist/streams.d.ts.map +1 -1
- package/dist/streams.js +16 -5
- package/dist/streams.js.map +1 -1
- package/package.json +2 -2
- package/src/ipld.ts +24 -26
- package/src/streams.ts +19 -6
- package/tsconfig.build.tsbuildinfo +1 -0
- package/tsconfig.tests.tsbuildinfo +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @atproto/common
|
|
2
2
|
|
|
3
|
+
## 0.4.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#3178](https://github.com/bluesky-social/atproto/pull/3178) [`588baae12`](https://github.com/bluesky-social/atproto/commit/588baae1212a3cba3bf0d95d2f268e80513fd9c4) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Minor adaptation of VerifyCidTransform
|
|
8
|
+
|
|
9
|
+
## 0.4.4
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#2834](https://github.com/bluesky-social/atproto/pull/2834) [`4098d9890`](https://github.com/bluesky-social/atproto/commit/4098d9890173f4d6c6512f2d8994eebbf12b5e13) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Allow contentEncoding to be an array for consistency with typing of headers
|
|
14
|
+
|
|
3
15
|
## 0.4.3
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/buffers.d.ts
CHANGED
package/dist/buffers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffers.d.ts","sourceRoot":"","sources":["../src/buffers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"buffers.d.ts","sourceRoot":"","sources":["../src/buffers.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAErD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAK/D"}
|
package/dist/buffers.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ui8ToBuffer = ui8ToBuffer;
|
|
4
|
+
exports.ui8ToArrayBuffer = ui8ToArrayBuffer;
|
|
4
5
|
function ui8ToBuffer(bytes) {
|
|
5
6
|
return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
6
7
|
}
|
|
7
|
-
exports.ui8ToBuffer = ui8ToBuffer;
|
|
8
8
|
function ui8ToArrayBuffer(bytes) {
|
|
9
9
|
return bytes.buffer.slice(bytes.byteOffset, bytes.byteLength + bytes.byteOffset);
|
|
10
10
|
}
|
|
11
|
-
exports.ui8ToArrayBuffer = ui8ToArrayBuffer;
|
|
12
11
|
//# sourceMappingURL=buffers.js.map
|
package/dist/buffers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffers.js","sourceRoot":"","sources":["../src/buffers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"buffers.js","sourceRoot":"","sources":["../src/buffers.ts"],"names":[],"mappings":";;AAAA,kCAEC;AAED,4CAKC;AATD,SAAgB,WAAW,CAAC,KAAiB;IAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;AACtE,CAAC;AAED,SAAgB,gBAAgB,CAAC,KAAiB;IAChD,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CACvB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CACpC,CAAA;AACH,CAAC"}
|
package/dist/dates.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toSimplifiedISOSafe =
|
|
3
|
+
exports.toSimplifiedISOSafe = toSimplifiedISOSafe;
|
|
4
4
|
const iso_datestring_validator_1 = require("iso-datestring-validator");
|
|
5
5
|
// Normalize date strings to simplified ISO so that the lexical sort preserves temporal sort.
|
|
6
6
|
// Rather than failing on an invalid date format, returns valid unix epoch.
|
|
@@ -16,5 +16,4 @@ function toSimplifiedISOSafe(dateStr) {
|
|
|
16
16
|
}
|
|
17
17
|
return iso; // YYYY-MM-DDTHH:mm:ss.sssZ
|
|
18
18
|
}
|
|
19
|
-
exports.toSimplifiedISOSafe = toSimplifiedISOSafe;
|
|
20
19
|
//# sourceMappingURL=dates.js.map
|
package/dist/dates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dates.js","sourceRoot":"","sources":["../src/dates.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dates.js","sourceRoot":"","sources":["../src/dates.ts"],"names":[],"mappings":";;AAIA,kDAWC;AAfD,uEAA+D;AAE/D,6FAA6F;AAC7F,2EAA2E;AAC3E,SAAgB,mBAAmB,CAAC,OAAe;IACjD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IAClC,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IAC9B,IAAI,CAAC,IAAA,+CAAoB,EAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,2GAA2G;QAC3G,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IAClC,CAAC;IACD,OAAO,GAAG,CAAA,CAAC,2BAA2B;AACxC,CAAC"}
|
package/dist/fs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,aAAoB,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,aAAoB,MAAM,KAAG,OAAO,CAAC,OAAO,CAUlE,CAAA;AAED,eAAO,MAAM,YAAY,aACb,MAAM,KACf,OAAO,CAAC,UAAU,GAAG,SAAS,CAShC,CAAA;AAED,eAAO,MAAM,UAAU,aACX,MAAM,0BAEf,OAAO,CAAC,IAAI,CASd,CAAA"}
|
package/dist/ipld.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
/// <reference types="node" />
|
|
4
|
-
import crypto from 'crypto';
|
|
5
|
-
import { Transform, TransformCallback } from 'stream';
|
|
1
|
+
import { Transform } from 'node:stream';
|
|
6
2
|
import { CID } from 'multiformats/cid';
|
|
7
3
|
import * as Block from 'multiformats/block';
|
|
8
4
|
import * as cborCodec from '@ipld/dag-cbor';
|
|
@@ -17,10 +13,7 @@ export declare const sha256ToCid: (hash: Uint8Array, codec: number) => CID;
|
|
|
17
13
|
export declare const sha256RawToCid: (hash: Uint8Array) => CID;
|
|
18
14
|
export declare class VerifyCidTransform extends Transform {
|
|
19
15
|
cid: CID;
|
|
20
|
-
hasher: crypto.Hash;
|
|
21
16
|
constructor(cid: CID);
|
|
22
|
-
_transform(chunk: Uint8Array, _enc: BufferEncoding, cb: TransformCallback): void;
|
|
23
|
-
_flush(cb: TransformCallback): void;
|
|
24
17
|
}
|
|
25
18
|
export declare class VerifyCidError extends Error {
|
|
26
19
|
expected: CID;
|
package/dist/ipld.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipld.d.ts","sourceRoot":"","sources":["../src/ipld.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ipld.d.ts","sourceRoot":"","sources":["../src/ipld.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AACtC,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAI3C,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,eAAO,MAAM,UAAU,yBAAmB,CAAA;AAC1C,eAAO,MAAM,UAAU,yBAAmB,CAAA;AAE1C,eAAO,MAAM,eAAe,SAAgB,OAAO,kCAMlD,CAAA;AAED,eAAO,MAAM,UAAU,SAAgB,OAAO,KAAG,OAAO,CAAC,GAAG,CAG3D,CAAA;AAED,eAAO,MAAM,UAAU,WAAkB,MAAM,KAAG,OAAO,CAAC,OAAO,CAOhE,CAAA;AAED,eAAO,MAAM,iBAAiB,UACrB,UAAU,KAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAMxB,CAAA;AAED,eAAO,MAAM,iBAAiB,QAAe,GAAG,SAAS,UAAU,kBAQlE,CAAA;AAED,eAAO,MAAM,WAAW,SAAU,UAAU,SAAS,MAAM,KAAG,GAG7D,CAAA;AAED,eAAO,MAAM,cAAc,SAAU,UAAU,KAAG,GAEjD,CAAA;AAED,qBAAa,kBAAmB,SAAQ,SAAS;IAC5B,GAAG,EAAE,GAAG;gBAAR,GAAG,EAAE,GAAG;CAqB5B;AAKD,qBAAa,cAAe,SAAQ,KAAK;IAE9B,QAAQ,EAAE,GAAG;IACb,MAAM,EAAE,GAAG;gBADX,QAAQ,EAAE,GAAG,EACb,MAAM,EAAE,GAAG;CAIrB"}
|
package/dist/ipld.js
CHANGED
|
@@ -22,13 +22,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
26
|
exports.VerifyCidError = exports.VerifyCidTransform = exports.sha256RawToCid = exports.sha256ToCid = exports.verifyCidForBytes = exports.cborBytesToRecord = exports.isValidCid = exports.cidForCbor = exports.dataToCborBlock = exports.cborDecode = exports.cborEncode = void 0;
|
|
30
|
-
const
|
|
31
|
-
const
|
|
27
|
+
const node_crypto_1 = require("node:crypto");
|
|
28
|
+
const node_stream_1 = require("node:stream");
|
|
32
29
|
const common_web_1 = require("@atproto/common-web");
|
|
33
30
|
const cid_1 = require("multiformats/cid");
|
|
34
31
|
const Block = __importStar(require("multiformats/block"));
|
|
@@ -86,45 +83,39 @@ const sha256RawToCid = (hash) => {
|
|
|
86
83
|
return (0, exports.sha256ToCid)(hash, rawCodec.code);
|
|
87
84
|
};
|
|
88
85
|
exports.sha256RawToCid = sha256RawToCid;
|
|
89
|
-
class VerifyCidTransform extends
|
|
86
|
+
class VerifyCidTransform extends node_stream_1.Transform {
|
|
90
87
|
constructor(cid) {
|
|
91
|
-
|
|
88
|
+
const hasher = (0, node_crypto_1.createHash)('sha256');
|
|
89
|
+
super({
|
|
90
|
+
transform(chunk, encoding, callback) {
|
|
91
|
+
hasher.update(chunk);
|
|
92
|
+
callback(null, chunk);
|
|
93
|
+
},
|
|
94
|
+
flush(callback) {
|
|
95
|
+
try {
|
|
96
|
+
const actual = (0, exports.sha256RawToCid)(hasher.digest());
|
|
97
|
+
if (actual.equals(cid)) {
|
|
98
|
+
return callback();
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
return callback(new VerifyCidError(cid, actual));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
return callback(asError(err));
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
});
|
|
92
109
|
Object.defineProperty(this, "cid", {
|
|
93
110
|
enumerable: true,
|
|
94
111
|
configurable: true,
|
|
95
112
|
writable: true,
|
|
96
113
|
value: cid
|
|
97
114
|
});
|
|
98
|
-
Object.defineProperty(this, "hasher", {
|
|
99
|
-
enumerable: true,
|
|
100
|
-
configurable: true,
|
|
101
|
-
writable: true,
|
|
102
|
-
value: crypto_1.default.createHash('sha256')
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
_transform(chunk, _enc, cb) {
|
|
106
|
-
this.hasher.update(chunk);
|
|
107
|
-
cb(null, chunk);
|
|
108
|
-
}
|
|
109
|
-
_flush(cb) {
|
|
110
|
-
try {
|
|
111
|
-
const cid = (0, exports.sha256RawToCid)(this.hasher.digest());
|
|
112
|
-
if (this.cid.equals(cid)) {
|
|
113
|
-
return cb();
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
return cb(new VerifyCidError(this.cid, cid));
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
catch (_err) {
|
|
120
|
-
const err = _err instanceof Error
|
|
121
|
-
? _err
|
|
122
|
-
: new Error('Unexpected error', { cause: _err });
|
|
123
|
-
return cb(err);
|
|
124
|
-
}
|
|
125
115
|
}
|
|
126
116
|
}
|
|
127
117
|
exports.VerifyCidTransform = VerifyCidTransform;
|
|
118
|
+
const asError = (err) => err instanceof Error ? err : new Error('Unexpected error', { cause: err });
|
|
128
119
|
class VerifyCidError extends Error {
|
|
129
120
|
constructor(expected, actual) {
|
|
130
121
|
super('Bad cid check');
|
package/dist/ipld.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipld.js","sourceRoot":"","sources":["../src/ipld.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ipld.js","sourceRoot":"","sources":["../src/ipld.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAwBvB,eAAO,MAAM,eAAe,SAAU,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAwBvB,eAAO,MAAM,eAAe,SAAU,MAAM,KAAG,IAAI,CAAC,MAWnD,CAAA"}
|
package/dist/obfuscate.js
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.obfuscateEmail = obfuscateEmail;
|
|
4
|
+
exports.obfuscateWord = obfuscateWord;
|
|
5
|
+
exports.obfuscateHeaders = obfuscateHeaders;
|
|
6
|
+
exports.obfuscateAuthHeader = obfuscateAuthHeader;
|
|
7
|
+
exports.obfuscateBasic = obfuscateBasic;
|
|
8
|
+
exports.obfuscateBearer = obfuscateBearer;
|
|
9
|
+
exports.obfuscateToken = obfuscateToken;
|
|
10
|
+
exports.obfuscateJwt = obfuscateJwt;
|
|
4
11
|
function obfuscateEmail(email) {
|
|
5
12
|
const [local, domain] = email.split('@');
|
|
6
13
|
return `${obfuscateWord(local)}@${obfuscateWord(domain)}`;
|
|
7
14
|
}
|
|
8
|
-
exports.obfuscateEmail = obfuscateEmail;
|
|
9
15
|
function obfuscateWord(word) {
|
|
10
16
|
return `${word.charAt(0)}***${word.charAt(word.length - 1)}`;
|
|
11
17
|
}
|
|
12
|
-
exports.obfuscateWord = obfuscateWord;
|
|
13
18
|
function obfuscateHeaders(headers) {
|
|
14
19
|
const obfuscatedHeaders = {};
|
|
15
20
|
for (const key in headers) {
|
|
@@ -25,7 +30,6 @@ function obfuscateHeaders(headers) {
|
|
|
25
30
|
}
|
|
26
31
|
return obfuscatedHeaders;
|
|
27
32
|
}
|
|
28
|
-
exports.obfuscateHeaders = obfuscateHeaders;
|
|
29
33
|
function obfuscateAuthHeader(authHeader) {
|
|
30
34
|
// This is a hot path (runs on every request). Avoid using split() or regex.
|
|
31
35
|
const spaceIdx = authHeader.indexOf(' ');
|
|
@@ -42,7 +46,6 @@ function obfuscateAuthHeader(authHeader) {
|
|
|
42
46
|
return `Invalid`;
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
|
-
exports.obfuscateAuthHeader = obfuscateAuthHeader;
|
|
46
49
|
function obfuscateBasic(token) {
|
|
47
50
|
if (!token)
|
|
48
51
|
return null;
|
|
@@ -56,17 +59,14 @@ function obfuscateBasic(token) {
|
|
|
56
59
|
const username = authHeader.slice(0, colIdx);
|
|
57
60
|
return `${username}:***`;
|
|
58
61
|
}
|
|
59
|
-
exports.obfuscateBasic = obfuscateBasic;
|
|
60
62
|
function obfuscateBearer(token) {
|
|
61
63
|
return obfuscateJwt(token) || obfuscateToken(token);
|
|
62
64
|
}
|
|
63
|
-
exports.obfuscateBearer = obfuscateBearer;
|
|
64
65
|
function obfuscateToken(token) {
|
|
65
66
|
if (token.length >= 12)
|
|
66
67
|
return obfuscateWord(token);
|
|
67
68
|
return token ? '***' : '';
|
|
68
69
|
}
|
|
69
|
-
exports.obfuscateToken = obfuscateToken;
|
|
70
70
|
function obfuscateJwt(token) {
|
|
71
71
|
const firstDot = token.indexOf('.');
|
|
72
72
|
if (firstDot === -1)
|
|
@@ -92,5 +92,4 @@ function obfuscateJwt(token) {
|
|
|
92
92
|
// Strip the signature
|
|
93
93
|
return token.slice(0, secondDot) + '.obfuscated';
|
|
94
94
|
}
|
|
95
|
-
exports.obfuscateJwt = obfuscateJwt;
|
|
96
95
|
//# sourceMappingURL=obfuscate.js.map
|
package/dist/obfuscate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obfuscate.js","sourceRoot":"","sources":["../src/obfuscate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"obfuscate.js","sourceRoot":"","sources":["../src/obfuscate.ts"],"names":[],"mappings":"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"}
|
package/dist/streams.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
/// <reference types="node" />
|
|
3
1
|
import { Duplex, Readable, Stream, Transform, TransformCallback } from 'node:stream';
|
|
4
2
|
export declare const forwardStreamErrors: (...streams: Stream[]) => void;
|
|
5
3
|
export declare const cloneStream: (stream: Readable) => Readable;
|
|
@@ -15,11 +13,13 @@ export declare class MaxSizeChecker extends Transform {
|
|
|
15
13
|
constructor(maxSize: number, createError: () => Error);
|
|
16
14
|
_transform(chunk: Uint8Array, _enc: BufferEncoding, cb: TransformCallback): void;
|
|
17
15
|
}
|
|
18
|
-
export declare function decodeStream(stream: Readable, contentEncoding?: string): Readable;
|
|
19
|
-
export declare function decodeStream(stream: AsyncIterable<Uint8Array>, contentEncoding?: string): AsyncIterable<Uint8Array> | Readable;
|
|
16
|
+
export declare function decodeStream(stream: Readable, contentEncoding?: string | string[]): Readable;
|
|
17
|
+
export declare function decodeStream(stream: AsyncIterable<Uint8Array>, contentEncoding?: string | string[]): AsyncIterable<Uint8Array> | Readable;
|
|
20
18
|
/**
|
|
21
19
|
* Create a series of decoding streams based on the content-encoding header. The
|
|
22
20
|
* resulting streams should be piped together to decode the content.
|
|
21
|
+
*
|
|
22
|
+
* @see {@link https://datatracker.ietf.org/doc/html/rfc9110#section-8.4.1}
|
|
23
23
|
*/
|
|
24
|
-
export declare function createDecoders(contentEncoding?: string): Duplex[];
|
|
24
|
+
export declare function createDecoders(contentEncoding?: string | string[]): Duplex[];
|
|
25
25
|
//# sourceMappingURL=streams.d.ts.map
|
package/dist/streams.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../src/streams.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../src/streams.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAGN,QAAQ,EACR,MAAM,EACN,SAAS,EACT,iBAAiB,EAClB,MAAM,aAAa,CAAA;AAGpB,eAAO,MAAM,mBAAmB,eAAgB,MAAM,EAAE,SAOvD,CAAA;AAED,eAAO,MAAM,WAAW,WAAY,QAAQ,KAAG,QAI9C,CAAA;AAED,eAAO,MAAM,UAAU,WAAkB,QAAQ,KAAG,OAAO,CAAC,MAAM,CAMjE,CAAA;AAED,eAAO,MAAM,aAAa,WAAkB,aAAa,CAAC,UAAU,CAAC,wBAInB,CAAA;AAGlD,eAAO,MAAM,kBAAkB,WACrB,QAAQ,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,KACvD,OAAO,CAAC,MAAM,CAYhB,CAAA;AAED,eAAO,MAAM,oBAAoB,SACzB,aAAa,CAAC,UAAU,CAAC,KAC9B,QAEF,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,UAAU,KAAG,QAKjD,CAAA;AAED,qBAAa,cAAe,SAAQ,SAAS;IAGlC,OAAO,EAAE,MAAM;IACf,WAAW,EAAE,MAAM,KAAK;IAHjC,SAAS,SAAI;gBAEJ,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,KAAK;IAIjC,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,iBAAiB;CAQ1E;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,QAAQ,EAChB,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAClC,QAAQ,CAAA;AACX,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EACjC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAClC,aAAa,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAA;AAUvC;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAqB5E"}
|
package/dist/streams.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.MaxSizeChecker = exports.bytesToStream = exports.byteIterableToStream = exports.streamToNodeBuffer = exports.streamToBytes = exports.streamSize = exports.cloneStream = exports.forwardStreamErrors = void 0;
|
|
4
|
+
exports.decodeStream = decodeStream;
|
|
5
|
+
exports.createDecoders = createDecoders;
|
|
4
6
|
const node_stream_1 = require("node:stream");
|
|
5
7
|
const node_zlib_1 = require("node:zlib");
|
|
6
8
|
const forwardStreamErrors = (...streams) => {
|
|
@@ -97,17 +99,24 @@ function decodeStream(stream, contentEncoding) {
|
|
|
97
99
|
return stream;
|
|
98
100
|
return (0, node_stream_1.pipeline)([stream, ...decoders], () => { });
|
|
99
101
|
}
|
|
100
|
-
exports.decodeStream = decodeStream;
|
|
101
102
|
/**
|
|
102
103
|
* Create a series of decoding streams based on the content-encoding header. The
|
|
103
104
|
* resulting streams should be piped together to decode the content.
|
|
105
|
+
*
|
|
106
|
+
* @see {@link https://datatracker.ietf.org/doc/html/rfc9110#section-8.4.1}
|
|
104
107
|
*/
|
|
105
108
|
function createDecoders(contentEncoding) {
|
|
106
109
|
const decoders = [];
|
|
107
|
-
if (contentEncoding) {
|
|
108
|
-
const encodings =
|
|
110
|
+
if (contentEncoding?.length) {
|
|
111
|
+
const encodings = Array.isArray(contentEncoding)
|
|
112
|
+
? contentEncoding.flatMap(commaSplit)
|
|
113
|
+
: contentEncoding.split(',');
|
|
109
114
|
for (const encoding of encodings) {
|
|
110
115
|
const normalizedEncoding = normalizeEncoding(encoding);
|
|
116
|
+
// @NOTE
|
|
117
|
+
// > The default (identity) encoding [...] is used only in the
|
|
118
|
+
// > Accept-Encoding header, and SHOULD NOT be used in the
|
|
119
|
+
// > Content-Encoding header.
|
|
111
120
|
if (normalizedEncoding === 'identity')
|
|
112
121
|
continue;
|
|
113
122
|
decoders.push(createDecoder(normalizedEncoding));
|
|
@@ -115,7 +124,9 @@ function createDecoders(contentEncoding) {
|
|
|
115
124
|
}
|
|
116
125
|
return decoders.reverse();
|
|
117
126
|
}
|
|
118
|
-
|
|
127
|
+
function commaSplit(header) {
|
|
128
|
+
return header.split(',');
|
|
129
|
+
}
|
|
119
130
|
function normalizeEncoding(encoding) {
|
|
120
131
|
// https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1
|
|
121
132
|
// > All content-coding values are case-insensitive...
|
package/dist/streams.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../src/streams.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../src/streams.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/common",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.5",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Shared web-platform-friendly code for atproto libraries",
|
|
6
6
|
"keywords": [
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"jest": "^28.1.2",
|
|
27
|
-
"typescript": "^5.
|
|
27
|
+
"typescript": "^5.6.3",
|
|
28
28
|
"uint8arrays": "3.0.0"
|
|
29
29
|
},
|
|
30
30
|
"scripts": {
|
package/src/ipld.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Transform
|
|
1
|
+
import { createHash } from 'node:crypto'
|
|
2
|
+
import { Transform } from 'node:stream'
|
|
3
3
|
import { check, schema } from '@atproto/common-web'
|
|
4
4
|
import { CID } from 'multiformats/cid'
|
|
5
5
|
import * as Block from 'multiformats/block'
|
|
@@ -63,34 +63,32 @@ export const sha256RawToCid = (hash: Uint8Array): CID => {
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
export class VerifyCidTransform extends Transform {
|
|
66
|
-
hasher = crypto.createHash('sha256')
|
|
67
66
|
constructor(public cid: CID) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
? _err
|
|
88
|
-
: new Error('Unexpected error', { cause: _err })
|
|
89
|
-
return cb(err)
|
|
90
|
-
}
|
|
67
|
+
const hasher = createHash('sha256')
|
|
68
|
+
super({
|
|
69
|
+
transform(chunk, encoding, callback) {
|
|
70
|
+
hasher.update(chunk)
|
|
71
|
+
callback(null, chunk)
|
|
72
|
+
},
|
|
73
|
+
flush(callback) {
|
|
74
|
+
try {
|
|
75
|
+
const actual = sha256RawToCid(hasher.digest())
|
|
76
|
+
if (actual.equals(cid)) {
|
|
77
|
+
return callback()
|
|
78
|
+
} else {
|
|
79
|
+
return callback(new VerifyCidError(cid, actual))
|
|
80
|
+
}
|
|
81
|
+
} catch (err) {
|
|
82
|
+
return callback(asError(err))
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
})
|
|
91
86
|
}
|
|
92
87
|
}
|
|
93
88
|
|
|
89
|
+
const asError = (err: unknown): Error =>
|
|
90
|
+
err instanceof Error ? err : new Error('Unexpected error', { cause: err })
|
|
91
|
+
|
|
94
92
|
export class VerifyCidError extends Error {
|
|
95
93
|
constructor(
|
|
96
94
|
public expected: CID,
|
package/src/streams.ts
CHANGED
|
@@ -88,15 +88,15 @@ export class MaxSizeChecker extends Transform {
|
|
|
88
88
|
|
|
89
89
|
export function decodeStream(
|
|
90
90
|
stream: Readable,
|
|
91
|
-
contentEncoding?: string,
|
|
91
|
+
contentEncoding?: string | string[],
|
|
92
92
|
): Readable
|
|
93
93
|
export function decodeStream(
|
|
94
94
|
stream: AsyncIterable<Uint8Array>,
|
|
95
|
-
contentEncoding?: string,
|
|
95
|
+
contentEncoding?: string | string[],
|
|
96
96
|
): AsyncIterable<Uint8Array> | Readable
|
|
97
97
|
export function decodeStream(
|
|
98
98
|
stream: Readable | AsyncIterable<Uint8Array>,
|
|
99
|
-
contentEncoding?: string,
|
|
99
|
+
contentEncoding?: string | string[],
|
|
100
100
|
): Readable | AsyncIterable<Uint8Array> {
|
|
101
101
|
const decoders = createDecoders(contentEncoding)
|
|
102
102
|
if (decoders.length === 0) return stream
|
|
@@ -106,14 +106,23 @@ export function decodeStream(
|
|
|
106
106
|
/**
|
|
107
107
|
* Create a series of decoding streams based on the content-encoding header. The
|
|
108
108
|
* resulting streams should be piped together to decode the content.
|
|
109
|
+
*
|
|
110
|
+
* @see {@link https://datatracker.ietf.org/doc/html/rfc9110#section-8.4.1}
|
|
109
111
|
*/
|
|
110
|
-
export function createDecoders(contentEncoding?: string): Duplex[] {
|
|
112
|
+
export function createDecoders(contentEncoding?: string | string[]): Duplex[] {
|
|
111
113
|
const decoders: Duplex[] = []
|
|
112
114
|
|
|
113
|
-
if (contentEncoding) {
|
|
114
|
-
const encodings =
|
|
115
|
+
if (contentEncoding?.length) {
|
|
116
|
+
const encodings: string[] = Array.isArray(contentEncoding)
|
|
117
|
+
? contentEncoding.flatMap(commaSplit)
|
|
118
|
+
: contentEncoding.split(',')
|
|
115
119
|
for (const encoding of encodings) {
|
|
116
120
|
const normalizedEncoding = normalizeEncoding(encoding)
|
|
121
|
+
|
|
122
|
+
// @NOTE
|
|
123
|
+
// > The default (identity) encoding [...] is used only in the
|
|
124
|
+
// > Accept-Encoding header, and SHOULD NOT be used in the
|
|
125
|
+
// > Content-Encoding header.
|
|
117
126
|
if (normalizedEncoding === 'identity') continue
|
|
118
127
|
|
|
119
128
|
decoders.push(createDecoder(normalizedEncoding))
|
|
@@ -123,6 +132,10 @@ export function createDecoders(contentEncoding?: string): Duplex[] {
|
|
|
123
132
|
return decoders.reverse()
|
|
124
133
|
}
|
|
125
134
|
|
|
135
|
+
function commaSplit(header: string): string[] {
|
|
136
|
+
return header.split(',')
|
|
137
|
+
}
|
|
138
|
+
|
|
126
139
|
function normalizeEncoding(encoding: string) {
|
|
127
140
|
// https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1
|
|
128
141
|
// > All content-coding values are case-insensitive...
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["./src/buffers.ts","./src/dates.ts","./src/env.ts","./src/fs.ts","./src/index.ts","./src/ipld-multi.ts","./src/ipld.ts","./src/logger.ts","./src/obfuscate.ts","./src/streams.ts"],"version":"5.6.3"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["./tests/ipld-multi.test.ts","./tests/ipld-vectors.ts","./tests/ipld.test.ts","./tests/streams.test.ts"],"version":"5.6.3"}
|