@atproto/common 0.3.4 → 0.4.0
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 +11 -0
- package/dist/buffers.d.ts +1 -0
- package/dist/buffers.d.ts.map +1 -0
- package/dist/buffers.js +12 -0
- package/dist/buffers.js.map +1 -0
- package/dist/dates.d.ts +1 -0
- package/dist/dates.d.ts.map +1 -0
- package/dist/dates.js +20 -0
- package/dist/dates.js.map +1 -0
- package/dist/env.d.ts +1 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +33 -0
- package/dist/env.js.map +1 -0
- package/dist/fs.d.ts +1 -0
- package/dist/fs.d.ts.map +1 -0
- package/dist/fs.js +47 -0
- package/dist/fs.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -23071
- package/dist/index.js.map +1 -7
- package/dist/ipld-multi.d.ts +1 -0
- package/dist/ipld-multi.d.ts.map +1 -0
- package/dist/ipld-multi.js +53 -0
- package/dist/ipld-multi.js.map +1 -0
- package/dist/ipld.d.ts +1 -0
- package/dist/ipld.d.ts.map +1 -0
- package/dist/ipld.js +146 -0
- package/dist/ipld.js.map +1 -0
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +32 -0
- package/dist/logger.js.map +1 -0
- package/dist/streams.d.ts +2 -1
- package/dist/streams.d.ts.map +1 -0
- package/dist/streams.js +81 -0
- package/dist/streams.js.map +1 -0
- package/jest.config.js +3 -3
- package/package.json +10 -8
- package/src/streams.ts +3 -2
- package/tsconfig.build.json +6 -2
- package/tsconfig.json +5 -8
- package/tsconfig.tests.json +7 -0
- package/babel.config.js +0 -1
- package/build.js +0 -14
package/dist/ipld-multi.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipld-multi.d.ts","sourceRoot":"","sources":["../src/ipld-multi.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,eAAe,YAAa,UAAU,KAAG,OAAO,EAM5D,CAAA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.cborDecodeMulti = void 0;
|
|
27
|
+
const cborx = __importStar(require("cbor-x"));
|
|
28
|
+
const cid_1 = require("multiformats/cid");
|
|
29
|
+
// add extension for decoding CIDs
|
|
30
|
+
// decoding code taken from @ipld/dag-cbor
|
|
31
|
+
// does not support encoding cids
|
|
32
|
+
cborx.addExtension({
|
|
33
|
+
Class: cid_1.CID,
|
|
34
|
+
tag: 42,
|
|
35
|
+
encode: () => {
|
|
36
|
+
throw new Error('cannot encode cids');
|
|
37
|
+
},
|
|
38
|
+
decode: (bytes) => {
|
|
39
|
+
if (bytes[0] !== 0) {
|
|
40
|
+
throw new Error('Invalid CID for CBOR tag 42; expected leading 0x00');
|
|
41
|
+
}
|
|
42
|
+
return cid_1.CID.decode(bytes.subarray(1)); // ignore leading 0x00
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
const cborDecodeMulti = (encoded) => {
|
|
46
|
+
const decoded = [];
|
|
47
|
+
cborx.decodeMultiple(encoded, (value) => {
|
|
48
|
+
decoded.push(value);
|
|
49
|
+
});
|
|
50
|
+
return decoded;
|
|
51
|
+
};
|
|
52
|
+
exports.cborDecodeMulti = cborDecodeMulti;
|
|
53
|
+
//# sourceMappingURL=ipld-multi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipld-multi.js","sourceRoot":"","sources":["../src/ipld-multi.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAA+B;AAC/B,0CAAsC;AAEtC,kCAAkC;AAClC,0CAA0C;AAC1C,iCAAiC;AACjC,KAAK,CAAC,YAAY,CAAC;IACjB,KAAK,EAAE,SAAG;IACV,GAAG,EAAE,EAAE;IACP,MAAM,EAAE,GAAG,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACvC,CAAC;IACD,MAAM,EAAE,CAAC,KAAiB,EAAO,EAAE;QACjC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;QACvE,CAAC;QACD,OAAO,SAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,sBAAsB;IAC7D,CAAC;CACF,CAAC,CAAA;AAEK,MAAM,eAAe,GAAG,CAAC,OAAmB,EAAa,EAAE;IAChE,MAAM,OAAO,GAAc,EAAE,CAAA;IAC7B,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACtC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC,CAAC,CAAA;IACF,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AANY,QAAA,eAAe,mBAM3B"}
|
package/dist/ipld.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipld.d.ts","sourceRoot":"","sources":["../src/ipld.ts"],"names":[],"mappings":";;;AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAA;AAErD,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,QAAQ,GAAG,CAG3D,CAAA;AAED,eAAO,MAAM,UAAU,WAAkB,MAAM,KAAG,QAAQ,OAAO,CAOhE,CAAA;AAED,eAAO,MAAM,iBAAiB,UACrB,UAAU,KAChB,OAAO,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;IAE5B,GAAG,EAAE,GAAG;IAD3B,MAAM,cAA8B;gBACjB,GAAG,EAAE,GAAG;IAI3B,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,iBAAiB;IAKzE,MAAM,CAAC,EAAE,EAAE,iBAAiB;CAgB7B;AAED,qBAAa,cAAe,SAAQ,KAAK;IACpB,QAAQ,EAAE,GAAG;IAAS,MAAM,EAAE,GAAG;gBAAjC,QAAQ,EAAE,GAAG,EAAS,MAAM,EAAE,GAAG;CAGrD"}
|
package/dist/ipld.js
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
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 crypto_1 = __importDefault(require("crypto"));
|
|
31
|
+
const stream_1 = require("stream");
|
|
32
|
+
const common_web_1 = require("@atproto/common-web");
|
|
33
|
+
const cid_1 = require("multiformats/cid");
|
|
34
|
+
const Block = __importStar(require("multiformats/block"));
|
|
35
|
+
const rawCodec = __importStar(require("multiformats/codecs/raw"));
|
|
36
|
+
const sha2_1 = require("multiformats/hashes/sha2");
|
|
37
|
+
const mf = __importStar(require("multiformats"));
|
|
38
|
+
const cborCodec = __importStar(require("@ipld/dag-cbor"));
|
|
39
|
+
exports.cborEncode = cborCodec.encode;
|
|
40
|
+
exports.cborDecode = cborCodec.decode;
|
|
41
|
+
const dataToCborBlock = async (data) => {
|
|
42
|
+
return Block.encode({
|
|
43
|
+
value: data,
|
|
44
|
+
codec: cborCodec,
|
|
45
|
+
hasher: sha2_1.sha256,
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
exports.dataToCborBlock = dataToCborBlock;
|
|
49
|
+
const cidForCbor = async (data) => {
|
|
50
|
+
const block = await (0, exports.dataToCborBlock)(data);
|
|
51
|
+
return block.cid;
|
|
52
|
+
};
|
|
53
|
+
exports.cidForCbor = cidForCbor;
|
|
54
|
+
const isValidCid = async (cidStr) => {
|
|
55
|
+
try {
|
|
56
|
+
const parsed = cid_1.CID.parse(cidStr);
|
|
57
|
+
return parsed.toString() === cidStr;
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
exports.isValidCid = isValidCid;
|
|
64
|
+
const cborBytesToRecord = (bytes) => {
|
|
65
|
+
const val = (0, exports.cborDecode)(bytes);
|
|
66
|
+
if (!common_web_1.check.is(val, common_web_1.schema.map)) {
|
|
67
|
+
throw new Error(`Expected object, got: ${val}`);
|
|
68
|
+
}
|
|
69
|
+
return val;
|
|
70
|
+
};
|
|
71
|
+
exports.cborBytesToRecord = cborBytesToRecord;
|
|
72
|
+
const verifyCidForBytes = async (cid, bytes) => {
|
|
73
|
+
const digest = await sha2_1.sha256.digest(bytes);
|
|
74
|
+
const expected = cid_1.CID.createV1(cid.code, digest);
|
|
75
|
+
if (!cid.equals(expected)) {
|
|
76
|
+
throw new Error(`Not a valid CID for bytes. Expected: ${expected.toString()} Got: ${cid.toString()}`);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
exports.verifyCidForBytes = verifyCidForBytes;
|
|
80
|
+
const sha256ToCid = (hash, codec) => {
|
|
81
|
+
const digest = mf.digest.create(sha2_1.sha256.code, hash);
|
|
82
|
+
return cid_1.CID.createV1(codec, digest);
|
|
83
|
+
};
|
|
84
|
+
exports.sha256ToCid = sha256ToCid;
|
|
85
|
+
const sha256RawToCid = (hash) => {
|
|
86
|
+
return (0, exports.sha256ToCid)(hash, rawCodec.code);
|
|
87
|
+
};
|
|
88
|
+
exports.sha256RawToCid = sha256RawToCid;
|
|
89
|
+
class VerifyCidTransform extends stream_1.Transform {
|
|
90
|
+
constructor(cid) {
|
|
91
|
+
super();
|
|
92
|
+
Object.defineProperty(this, "cid", {
|
|
93
|
+
enumerable: true,
|
|
94
|
+
configurable: true,
|
|
95
|
+
writable: true,
|
|
96
|
+
value: cid
|
|
97
|
+
});
|
|
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
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.VerifyCidTransform = VerifyCidTransform;
|
|
128
|
+
class VerifyCidError extends Error {
|
|
129
|
+
constructor(expected, actual) {
|
|
130
|
+
super('Bad cid check');
|
|
131
|
+
Object.defineProperty(this, "expected", {
|
|
132
|
+
enumerable: true,
|
|
133
|
+
configurable: true,
|
|
134
|
+
writable: true,
|
|
135
|
+
value: expected
|
|
136
|
+
});
|
|
137
|
+
Object.defineProperty(this, "actual", {
|
|
138
|
+
enumerable: true,
|
|
139
|
+
configurable: true,
|
|
140
|
+
writable: true,
|
|
141
|
+
value: actual
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.VerifyCidError = VerifyCidError;
|
|
146
|
+
//# sourceMappingURL=ipld.js.map
|
package/dist/ipld.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipld.js","sourceRoot":"","sources":["../src/ipld.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts
CHANGED
|
@@ -0,0 +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,KAAK,MAWnD,CAAA"}
|
package/dist/logger.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.subsystemLogger = void 0;
|
|
7
|
+
const pino_1 = __importDefault(require("pino"));
|
|
8
|
+
const allSystemsEnabled = !process.env.LOG_SYSTEMS;
|
|
9
|
+
const enabledSystems = (process.env.LOG_SYSTEMS || '')
|
|
10
|
+
.replace(',', ' ')
|
|
11
|
+
.split(' ');
|
|
12
|
+
const enabledEnv = process.env.LOG_ENABLED;
|
|
13
|
+
const enabled = enabledEnv === 'true' || enabledEnv === 't' || enabledEnv === '1';
|
|
14
|
+
const level = process.env.LOG_LEVEL || 'info';
|
|
15
|
+
const config = {
|
|
16
|
+
enabled,
|
|
17
|
+
level,
|
|
18
|
+
};
|
|
19
|
+
const rootLogger = process.env.LOG_DESTINATION
|
|
20
|
+
? (0, pino_1.default)(config, pino_1.default.destination(process.env.LOG_DESTINATION))
|
|
21
|
+
: (0, pino_1.default)(config);
|
|
22
|
+
const subsystems = {};
|
|
23
|
+
const subsystemLogger = (name) => {
|
|
24
|
+
if (subsystems[name])
|
|
25
|
+
return subsystems[name];
|
|
26
|
+
const subsystemEnabled = enabled && (allSystemsEnabled || enabledSystems.indexOf(name) > -1);
|
|
27
|
+
// can't disable child loggers, so we just set their level to fatal to effectively turn them off
|
|
28
|
+
subsystems[name] = rootLogger.child({ name }, { level: subsystemEnabled ? level : 'silent' });
|
|
29
|
+
return subsystems[name];
|
|
30
|
+
};
|
|
31
|
+
exports.subsystemLogger = subsystemLogger;
|
|
32
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AAEvB,MAAM,iBAAiB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;AAClD,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;KACnD,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;KACjB,KAAK,CAAC,GAAG,CAAC,CAAA;AAEb,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;AAC1C,MAAM,OAAO,GACX,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,CAAA;AAEnE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAA;AAE7C,MAAM,MAAM,GAAG;IACb,OAAO;IACP,KAAK;CACN,CAAA;AAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe;IAC5C,CAAC,CAAC,IAAA,cAAI,EAAC,MAAM,EAAE,cAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7D,CAAC,CAAC,IAAA,cAAI,EAAC,MAAM,CAAC,CAAA;AAEhB,MAAM,UAAU,GAAgC,EAAE,CAAA;AAE3C,MAAM,eAAe,GAAG,CAAC,IAAY,EAAe,EAAE;IAC3D,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,gBAAgB,GACpB,OAAO,IAAI,CAAC,iBAAiB,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAErE,gGAAgG;IAChG,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CACjC,EAAE,IAAI,EAAE,EACR,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAC/C,CAAA;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC,CAAA;AAXY,QAAA,eAAe,mBAW3B"}
|
package/dist/streams.d.ts
CHANGED
|
@@ -12,5 +12,6 @@ export declare class MaxSizeChecker extends Transform {
|
|
|
12
12
|
createError: () => Error;
|
|
13
13
|
totalSize: number;
|
|
14
14
|
constructor(maxSize: number, createError: () => Error);
|
|
15
|
-
_transform(chunk: Uint8Array, _enc: BufferEncoding, cb: TransformCallback): void
|
|
15
|
+
_transform(chunk: Uint8Array, _enc: BufferEncoding, cb: TransformCallback): void;
|
|
16
16
|
}
|
|
17
|
+
//# sourceMappingURL=streams.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streams.d.ts","sourceRoot":"","sources":["../src/streams.ts"],"names":[],"mappings":";;AAAA,OAAO,EACL,MAAM,EACN,QAAQ,EAER,SAAS,EACT,iBAAiB,EAClB,MAAM,QAAQ,CAAA;AAEf,eAAO,MAAM,mBAAmB,eAAgB,MAAM,EAAE,SAQvD,CAAA;AAED,eAAO,MAAM,WAAW,WAAY,QAAQ,KAAG,QAI9C,CAAA;AAED,eAAO,MAAM,UAAU,WAAkB,QAAQ,KAAG,QAAQ,MAAM,CAMjE,CAAA;AAED,eAAO,MAAM,aAAa,WAAkB,QAAQ,KAAG,QAAQ,UAAU,CAMxE,CAAA;AAED,eAAO,MAAM,oBAAoB,SACzB,cAAc,UAAU,CAAC,KAC9B,QAEF,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,UAAU,KAAG,QAKjD,CAAA;AAED,qBAAa,cAAe,SAAQ,SAAS;IAExB,OAAO,EAAE,MAAM;IAAS,WAAW,EAAE,MAAM,KAAK;IADnE,SAAS,SAAI;gBACM,OAAO,EAAE,MAAM,EAAS,WAAW,EAAE,MAAM,KAAK;IAGnE,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,iBAAiB;CAQ1E"}
|
package/dist/streams.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MaxSizeChecker = exports.bytesToStream = exports.byteIterableToStream = exports.streamToBytes = exports.streamSize = exports.cloneStream = exports.forwardStreamErrors = void 0;
|
|
4
|
+
const stream_1 = require("stream");
|
|
5
|
+
const forwardStreamErrors = (...streams) => {
|
|
6
|
+
for (let i = 0; i < streams.length; ++i) {
|
|
7
|
+
const stream = streams[i];
|
|
8
|
+
const next = streams[i + 1];
|
|
9
|
+
if (next) {
|
|
10
|
+
stream.once('error', (err) => next.emit('error', err));
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
exports.forwardStreamErrors = forwardStreamErrors;
|
|
15
|
+
const cloneStream = (stream) => {
|
|
16
|
+
const passthrough = new stream_1.PassThrough();
|
|
17
|
+
(0, exports.forwardStreamErrors)(stream, passthrough);
|
|
18
|
+
return stream.pipe(passthrough);
|
|
19
|
+
};
|
|
20
|
+
exports.cloneStream = cloneStream;
|
|
21
|
+
const streamSize = async (stream) => {
|
|
22
|
+
let size = 0;
|
|
23
|
+
for await (const chunk of stream) {
|
|
24
|
+
size += chunk.length;
|
|
25
|
+
}
|
|
26
|
+
return size;
|
|
27
|
+
};
|
|
28
|
+
exports.streamSize = streamSize;
|
|
29
|
+
const streamToBytes = async (stream) => {
|
|
30
|
+
const bufs = [];
|
|
31
|
+
for await (const bytes of stream) {
|
|
32
|
+
bufs.push(bytes);
|
|
33
|
+
}
|
|
34
|
+
return new Uint8Array(Buffer.concat(bufs));
|
|
35
|
+
};
|
|
36
|
+
exports.streamToBytes = streamToBytes;
|
|
37
|
+
const byteIterableToStream = (iter) => {
|
|
38
|
+
return stream_1.Readable.from(iter, { objectMode: false });
|
|
39
|
+
};
|
|
40
|
+
exports.byteIterableToStream = byteIterableToStream;
|
|
41
|
+
const bytesToStream = (bytes) => {
|
|
42
|
+
const stream = new stream_1.Readable();
|
|
43
|
+
stream.push(bytes);
|
|
44
|
+
stream.push(null);
|
|
45
|
+
return stream;
|
|
46
|
+
};
|
|
47
|
+
exports.bytesToStream = bytesToStream;
|
|
48
|
+
class MaxSizeChecker extends stream_1.Transform {
|
|
49
|
+
constructor(maxSize, createError) {
|
|
50
|
+
super();
|
|
51
|
+
Object.defineProperty(this, "maxSize", {
|
|
52
|
+
enumerable: true,
|
|
53
|
+
configurable: true,
|
|
54
|
+
writable: true,
|
|
55
|
+
value: maxSize
|
|
56
|
+
});
|
|
57
|
+
Object.defineProperty(this, "createError", {
|
|
58
|
+
enumerable: true,
|
|
59
|
+
configurable: true,
|
|
60
|
+
writable: true,
|
|
61
|
+
value: createError
|
|
62
|
+
});
|
|
63
|
+
Object.defineProperty(this, "totalSize", {
|
|
64
|
+
enumerable: true,
|
|
65
|
+
configurable: true,
|
|
66
|
+
writable: true,
|
|
67
|
+
value: 0
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
_transform(chunk, _enc, cb) {
|
|
71
|
+
this.totalSize += chunk.length;
|
|
72
|
+
if (this.totalSize > this.maxSize) {
|
|
73
|
+
cb(this.createError());
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
cb(null, chunk);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.MaxSizeChecker = MaxSizeChecker;
|
|
81
|
+
//# sourceMappingURL=streams.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../src/streams.ts"],"names":[],"mappings":"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"}
|
package/jest.config.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/common",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Shared web-platform-friendly code for atproto libraries",
|
|
6
6
|
"keywords": [
|
|
@@ -13,20 +13,22 @@
|
|
|
13
13
|
"directory": "packages/common"
|
|
14
14
|
},
|
|
15
15
|
"main": "dist/index.js",
|
|
16
|
+
"types": "dist/index.d.ts",
|
|
16
17
|
"dependencies": {
|
|
17
18
|
"@ipld/dag-cbor": "^7.0.3",
|
|
18
19
|
"cbor-x": "^1.5.1",
|
|
19
20
|
"iso-datestring-validator": "^2.2.2",
|
|
20
21
|
"multiformats": "^9.9.0",
|
|
21
22
|
"pino": "^8.15.0",
|
|
22
|
-
"
|
|
23
|
-
|
|
23
|
+
"@atproto/common-web": "^0.3.0"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"jest": "^28.1.2",
|
|
27
|
+
"typescript": "^5.3.3",
|
|
28
|
+
"uint8arrays": "3.0.0"
|
|
24
29
|
},
|
|
25
30
|
"scripts": {
|
|
26
31
|
"test": "jest",
|
|
27
|
-
"build": "
|
|
28
|
-
|
|
29
|
-
"update-main-to-dist": "node ../../update-main-to-dist.js packages/common"
|
|
30
|
-
},
|
|
31
|
-
"types": "dist/index.d.ts"
|
|
32
|
+
"build": "tsc --build tsconfig.build.json"
|
|
33
|
+
}
|
|
32
34
|
}
|
package/src/streams.ts
CHANGED
|
@@ -59,8 +59,9 @@ export class MaxSizeChecker extends Transform {
|
|
|
59
59
|
_transform(chunk: Uint8Array, _enc: BufferEncoding, cb: TransformCallback) {
|
|
60
60
|
this.totalSize += chunk.length
|
|
61
61
|
if (this.totalSize > this.maxSize) {
|
|
62
|
-
|
|
62
|
+
cb(this.createError())
|
|
63
|
+
} else {
|
|
64
|
+
cb(null, chunk)
|
|
63
65
|
}
|
|
64
|
-
return cb(null, chunk)
|
|
65
66
|
}
|
|
66
67
|
}
|
package/tsconfig.build.json
CHANGED
package/tsconfig.json
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
},
|
|
8
|
-
"include": ["./src", "__tests__/**/**.ts"],
|
|
9
|
-
"references": [{ "path": "../common-web/tsconfig.build.json" }]
|
|
2
|
+
"include": [],
|
|
3
|
+
"references": [
|
|
4
|
+
{ "path": "./tsconfig.build.json" },
|
|
5
|
+
{ "path": "./tsconfig.tests.json" }
|
|
6
|
+
]
|
|
10
7
|
}
|
package/babel.config.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = require('../../babel.config.js')
|
package/build.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
const { nodeExternalsPlugin } = require('esbuild-node-externals')
|
|
2
|
-
|
|
3
|
-
const buildShallow =
|
|
4
|
-
process.argv.includes('--shallow') || process.env.ATP_BUILD_SHALLOW === 'true'
|
|
5
|
-
|
|
6
|
-
require('esbuild').build({
|
|
7
|
-
logLevel: 'info',
|
|
8
|
-
entryPoints: ['src/index.ts'],
|
|
9
|
-
bundle: true,
|
|
10
|
-
sourcemap: true,
|
|
11
|
-
outdir: 'dist',
|
|
12
|
-
platform: 'node',
|
|
13
|
-
plugins: buildShallow ? [nodeExternalsPlugin()] : [],
|
|
14
|
-
})
|