@metamask-previews/json-rpc-middleware-stream 8.0.2-preview-9edcf0e0 → 8.0.2-preview-9d310688
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/dist/createEngineStream.cjs +39 -0
- package/dist/createEngineStream.cjs.map +1 -0
- package/dist/{types/createEngineStream.d.ts → createEngineStream.d.cts} +3 -3
- package/dist/createEngineStream.d.cts.map +1 -0
- package/dist/createEngineStream.d.mts +15 -0
- package/dist/createEngineStream.d.mts.map +1 -0
- package/dist/createEngineStream.mjs +35 -6
- package/dist/createEngineStream.mjs.map +1 -1
- package/dist/createStreamMiddleware.cjs +123 -0
- package/dist/createStreamMiddleware.cjs.map +1 -0
- package/dist/{types/createStreamMiddleware.d.ts → createStreamMiddleware.d.cts} +5 -5
- package/dist/createStreamMiddleware.d.cts.map +1 -0
- package/dist/createStreamMiddleware.d.mts +23 -0
- package/dist/createStreamMiddleware.d.mts.map +1 -0
- package/dist/createStreamMiddleware.mjs +116 -6
- package/dist/createStreamMiddleware.mjs.map +1 -1
- package/dist/index.cjs +11 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +4 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +4 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +3 -10
- package/dist/index.mjs.map +1 -1
- package/package.json +12 -7
- package/dist/chunk-2YBP3PJ2.mjs +0 -26
- package/dist/chunk-2YBP3PJ2.mjs.map +0 -1
- package/dist/chunk-CUV6EOT3.js +0 -79
- package/dist/chunk-CUV6EOT3.js.map +0 -1
- package/dist/chunk-IDTAZSDC.js +0 -26
- package/dist/chunk-IDTAZSDC.js.map +0 -1
- package/dist/chunk-UL572XET.mjs +0 -79
- package/dist/chunk-UL572XET.mjs.map +0 -1
- package/dist/createEngineStream.js +0 -7
- package/dist/createEngineStream.js.map +0 -1
- package/dist/createStreamMiddleware.js +0 -7
- package/dist/createStreamMiddleware.js.map +0 -1
- package/dist/index.js +0 -11
- package/dist/index.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/dist/types/createEngineStream.d.ts.map +0 -1
- package/dist/types/createStreamMiddleware.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -4
- package/dist/types/index.d.ts.map +0 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const readable_stream_1 = require("readable-stream");
|
|
4
|
+
/**
|
|
5
|
+
* Takes a JsonRpcEngine and returns a Duplex stream wrapping it.
|
|
6
|
+
*
|
|
7
|
+
* @param opts - Options bag.
|
|
8
|
+
* @param opts.engine - The JsonRpcEngine to wrap in a stream.
|
|
9
|
+
* @returns The stream wrapping the engine.
|
|
10
|
+
*/
|
|
11
|
+
function createEngineStream(opts) {
|
|
12
|
+
if (!opts?.engine) {
|
|
13
|
+
throw new Error('Missing engine parameter!');
|
|
14
|
+
}
|
|
15
|
+
const { engine } = opts;
|
|
16
|
+
const stream = new readable_stream_1.Duplex({ objectMode: true, read: () => undefined, write });
|
|
17
|
+
// forward notifications
|
|
18
|
+
if (engine.on) {
|
|
19
|
+
engine.on('notification', (message) => {
|
|
20
|
+
stream.push(message);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return stream;
|
|
24
|
+
/**
|
|
25
|
+
* Write a JSON-RPC request to the stream.
|
|
26
|
+
*
|
|
27
|
+
* @param req - The JSON-rpc request.
|
|
28
|
+
* @param _encoding - The stream encoding, not used.
|
|
29
|
+
* @param streamWriteCallback - The stream write callback.
|
|
30
|
+
*/
|
|
31
|
+
function write(req, _encoding, streamWriteCallback) {
|
|
32
|
+
engine.handle(req, (_err, res) => {
|
|
33
|
+
stream.push(res);
|
|
34
|
+
});
|
|
35
|
+
streamWriteCallback();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.default = createEngineStream;
|
|
39
|
+
//# sourceMappingURL=createEngineStream.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createEngineStream.cjs","sourceRoot":"","sources":["../src/createEngineStream.ts"],"names":[],"mappings":";;AAEA,qDAAyC;AAMzC;;;;;;GAMG;AACH,SAAwB,kBAAkB,CAAC,IAAyB;IAClE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;KAC9C;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,MAAM,MAAM,GAAG,IAAI,wBAAM,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9E,wBAAwB;IACxB,IAAI,MAAM,CAAC,EAAE,EAAE;QACb,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE;YACpC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,MAAM,CAAC;IAEd;;;;;;OAMG;IACH,SAAS,KAAK,CACZ,GAAmB,EACnB,SAAkB,EAClB,mBAAmD;QAEnD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;QACH,mBAAmB,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAhCD,qCAgCC","sourcesContent":["import type { JsonRpcEngine } from '@metamask/json-rpc-engine';\nimport type { JsonRpcRequest } from '@metamask/utils';\nimport { Duplex } from 'readable-stream';\n\ntype EngineStreamOptions = {\n engine: JsonRpcEngine;\n};\n\n/**\n * Takes a JsonRpcEngine and returns a Duplex stream wrapping it.\n *\n * @param opts - Options bag.\n * @param opts.engine - The JsonRpcEngine to wrap in a stream.\n * @returns The stream wrapping the engine.\n */\nexport default function createEngineStream(opts: EngineStreamOptions): Duplex {\n if (!opts?.engine) {\n throw new Error('Missing engine parameter!');\n }\n\n const { engine } = opts;\n const stream = new Duplex({ objectMode: true, read: () => undefined, write });\n // forward notifications\n if (engine.on) {\n engine.on('notification', (message) => {\n stream.push(message);\n });\n }\n return stream;\n\n /**\n * Write a JSON-RPC request to the stream.\n *\n * @param req - The JSON-rpc request.\n * @param _encoding - The stream encoding, not used.\n * @param streamWriteCallback - The stream write callback.\n */\n function write(\n req: JsonRpcRequest,\n _encoding: unknown,\n streamWriteCallback: (error?: Error | null) => void,\n ) {\n engine.handle(req, (_err, res) => {\n stream.push(res);\n });\n streamWriteCallback();\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { JsonRpcEngine } from
|
|
2
|
-
import { Duplex } from
|
|
1
|
+
import type { JsonRpcEngine } from "@metamask/json-rpc-engine";
|
|
2
|
+
import { Duplex } from "readable-stream";
|
|
3
3
|
type EngineStreamOptions = {
|
|
4
4
|
engine: JsonRpcEngine;
|
|
5
5
|
};
|
|
@@ -12,4 +12,4 @@ type EngineStreamOptions = {
|
|
|
12
12
|
*/
|
|
13
13
|
export default function createEngineStream(opts: EngineStreamOptions): Duplex;
|
|
14
14
|
export {};
|
|
15
|
-
//# sourceMappingURL=createEngineStream.d.
|
|
15
|
+
//# sourceMappingURL=createEngineStream.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createEngineStream.d.cts","sourceRoot":"","sources":["../src/createEngineStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kCAAkC;AAE/D,OAAO,EAAE,MAAM,EAAE,wBAAwB;AAEzC,KAAK,mBAAmB,GAAG;IACzB,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAgC5E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { JsonRpcEngine } from "@metamask/json-rpc-engine";
|
|
2
|
+
import { Duplex } from "readable-stream";
|
|
3
|
+
type EngineStreamOptions = {
|
|
4
|
+
engine: JsonRpcEngine;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Takes a JsonRpcEngine and returns a Duplex stream wrapping it.
|
|
8
|
+
*
|
|
9
|
+
* @param opts - Options bag.
|
|
10
|
+
* @param opts.engine - The JsonRpcEngine to wrap in a stream.
|
|
11
|
+
* @returns The stream wrapping the engine.
|
|
12
|
+
*/
|
|
13
|
+
export default function createEngineStream(opts: EngineStreamOptions): Duplex;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=createEngineStream.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createEngineStream.d.mts","sourceRoot":"","sources":["../src/createEngineStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kCAAkC;AAE/D,OAAO,EAAE,MAAM,EAAE,wBAAwB;AAEzC,KAAK,mBAAmB,GAAG;IACzB,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAgC5E"}
|
|
@@ -1,7 +1,36 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { Duplex } from "readable-stream";
|
|
2
|
+
/**
|
|
3
|
+
* Takes a JsonRpcEngine and returns a Duplex stream wrapping it.
|
|
4
|
+
*
|
|
5
|
+
* @param opts - Options bag.
|
|
6
|
+
* @param opts.engine - The JsonRpcEngine to wrap in a stream.
|
|
7
|
+
* @returns The stream wrapping the engine.
|
|
8
|
+
*/
|
|
9
|
+
export default function createEngineStream(opts) {
|
|
10
|
+
if (!opts?.engine) {
|
|
11
|
+
throw new Error('Missing engine parameter!');
|
|
12
|
+
}
|
|
13
|
+
const { engine } = opts;
|
|
14
|
+
const stream = new Duplex({ objectMode: true, read: () => undefined, write });
|
|
15
|
+
// forward notifications
|
|
16
|
+
if (engine.on) {
|
|
17
|
+
engine.on('notification', (message) => {
|
|
18
|
+
stream.push(message);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return stream;
|
|
22
|
+
/**
|
|
23
|
+
* Write a JSON-RPC request to the stream.
|
|
24
|
+
*
|
|
25
|
+
* @param req - The JSON-rpc request.
|
|
26
|
+
* @param _encoding - The stream encoding, not used.
|
|
27
|
+
* @param streamWriteCallback - The stream write callback.
|
|
28
|
+
*/
|
|
29
|
+
function write(req, _encoding, streamWriteCallback) {
|
|
30
|
+
engine.handle(req, (_err, res) => {
|
|
31
|
+
stream.push(res);
|
|
32
|
+
});
|
|
33
|
+
streamWriteCallback();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
7
36
|
//# sourceMappingURL=createEngineStream.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"
|
|
1
|
+
{"version":3,"file":"createEngineStream.mjs","sourceRoot":"","sources":["../src/createEngineStream.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,wBAAwB;AAMzC;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,IAAyB;IAClE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;KAC9C;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9E,wBAAwB;IACxB,IAAI,MAAM,CAAC,EAAE,EAAE;QACb,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE;YACpC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,MAAM,CAAC;IAEd;;;;;;OAMG;IACH,SAAS,KAAK,CACZ,GAAmB,EACnB,SAAkB,EAClB,mBAAmD;QAEnD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;QACH,mBAAmB,EAAE,CAAC;IACxB,CAAC;AACH,CAAC","sourcesContent":["import type { JsonRpcEngine } from '@metamask/json-rpc-engine';\nimport type { JsonRpcRequest } from '@metamask/utils';\nimport { Duplex } from 'readable-stream';\n\ntype EngineStreamOptions = {\n engine: JsonRpcEngine;\n};\n\n/**\n * Takes a JsonRpcEngine and returns a Duplex stream wrapping it.\n *\n * @param opts - Options bag.\n * @param opts.engine - The JsonRpcEngine to wrap in a stream.\n * @returns The stream wrapping the engine.\n */\nexport default function createEngineStream(opts: EngineStreamOptions): Duplex {\n if (!opts?.engine) {\n throw new Error('Missing engine parameter!');\n }\n\n const { engine } = opts;\n const stream = new Duplex({ objectMode: true, read: () => undefined, write });\n // forward notifications\n if (engine.on) {\n engine.on('notification', (message) => {\n stream.push(message);\n });\n }\n return stream;\n\n /**\n * Write a JSON-RPC request to the stream.\n *\n * @param req - The JSON-rpc request.\n * @param _encoding - The stream encoding, not used.\n * @param streamWriteCallback - The stream write callback.\n */\n function write(\n req: JsonRpcRequest,\n _encoding: unknown,\n streamWriteCallback: (error?: Error | null) => void,\n ) {\n engine.handle(req, (_err, res) => {\n stream.push(res);\n });\n streamWriteCallback();\n }\n}\n"]}
|
|
@@ -0,0 +1,123 @@
|
|
|
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
|
+
const safe_event_emitter_1 = __importDefault(require("@metamask/safe-event-emitter"));
|
|
7
|
+
const utils_1 = require("@metamask/utils");
|
|
8
|
+
const readable_stream_1 = require("readable-stream");
|
|
9
|
+
/**
|
|
10
|
+
* Creates a JsonRpcEngine middleware with an associated Duplex stream and
|
|
11
|
+
* EventEmitter. The middleware, and by extension stream, assume that middleware
|
|
12
|
+
* parameters are properly formatted. No runtime type checking or validation is
|
|
13
|
+
* performed.
|
|
14
|
+
*
|
|
15
|
+
* @param options - Configuration options for middleware.
|
|
16
|
+
* @returns The event emitter, middleware, and stream.
|
|
17
|
+
*/
|
|
18
|
+
function createStreamMiddleware(options = {}) {
|
|
19
|
+
const idMap = {}; // TODO: replace with actual Map
|
|
20
|
+
const stream = new readable_stream_1.Duplex({
|
|
21
|
+
objectMode: true,
|
|
22
|
+
read: () => undefined,
|
|
23
|
+
write: processMessage,
|
|
24
|
+
});
|
|
25
|
+
const events = new safe_event_emitter_1.default();
|
|
26
|
+
const middleware = (req, res, next, end) => {
|
|
27
|
+
// register request on id map *before* sending it to the stream, to avoid race issues
|
|
28
|
+
idMap[req.id] = { req, res, next, end };
|
|
29
|
+
// write req to stream
|
|
30
|
+
sendToStream(req);
|
|
31
|
+
};
|
|
32
|
+
return { events, middleware, stream };
|
|
33
|
+
/**
|
|
34
|
+
* Forwards JSON-RPC request to the stream.
|
|
35
|
+
*
|
|
36
|
+
* @param req - The JSON-RPC request object.
|
|
37
|
+
*/
|
|
38
|
+
function sendToStream(req) {
|
|
39
|
+
// TODO: limiting retries could be implemented here
|
|
40
|
+
stream.push(req);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Writes a JSON-RPC object to the stream.
|
|
44
|
+
*
|
|
45
|
+
* @param res - The JSON-RPC response object.
|
|
46
|
+
* @param _encoding - The stream encoding, not used.
|
|
47
|
+
* @param streamWriteCallback - The stream write callback.
|
|
48
|
+
*/
|
|
49
|
+
function processMessage(res, _encoding, streamWriteCallback) {
|
|
50
|
+
let errorObj = null;
|
|
51
|
+
try {
|
|
52
|
+
const isNotification = !(0, utils_1.hasProperty)(res, 'id');
|
|
53
|
+
if (isNotification) {
|
|
54
|
+
processNotification(res);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
processResponse(res);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (_err) {
|
|
61
|
+
errorObj = _err;
|
|
62
|
+
}
|
|
63
|
+
// continue processing stream
|
|
64
|
+
streamWriteCallback(errorObj);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Processes a JSON-RPC response.
|
|
68
|
+
*
|
|
69
|
+
* @param res - The response to process.
|
|
70
|
+
*/
|
|
71
|
+
function processResponse(res) {
|
|
72
|
+
const { id: responseId } = res;
|
|
73
|
+
if (responseId === null) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const context = idMap[responseId];
|
|
77
|
+
if (!context) {
|
|
78
|
+
console.warn(`StreamMiddleware - Unknown response id "${responseId}"`);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
delete idMap[responseId];
|
|
82
|
+
// copy whole res onto original res
|
|
83
|
+
Object.assign(context.res, res);
|
|
84
|
+
// run callback on empty stack,
|
|
85
|
+
// prevent internal stream-handler from catching errors
|
|
86
|
+
// TODO: remove eslint-disable once issue #1989 is resolved.
|
|
87
|
+
// eslint-disable-next-line @typescript-eslint/no-implied-eval
|
|
88
|
+
setTimeout(context.end);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Processes a JSON-RPC notification.
|
|
92
|
+
*
|
|
93
|
+
* @param notif - The notification to process.
|
|
94
|
+
*/
|
|
95
|
+
function processNotification(notif) {
|
|
96
|
+
if (options?.retryOnMessage && notif.method === options.retryOnMessage) {
|
|
97
|
+
retryStuckRequests();
|
|
98
|
+
}
|
|
99
|
+
events.emit('notification', notif);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Retry pending requests.
|
|
103
|
+
*/
|
|
104
|
+
function retryStuckRequests() {
|
|
105
|
+
Object.values(idMap).forEach(({ req, retryCount = 0 }) => {
|
|
106
|
+
// Avoid retrying requests without an id - they cannot have matching responses so retry logic doesn't apply
|
|
107
|
+
// Check for retry count below ensure that a request is not retried more than 3 times
|
|
108
|
+
if (!req.id) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (retryCount >= 3) {
|
|
112
|
+
throw new Error(`StreamMiddleware - Retry limit exceeded for request id "${req.id}"`);
|
|
113
|
+
}
|
|
114
|
+
const idMapObject = idMap[req.id];
|
|
115
|
+
if (idMapObject) {
|
|
116
|
+
idMapObject.retryCount = retryCount + 1;
|
|
117
|
+
}
|
|
118
|
+
sendToStream(req);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.default = createStreamMiddleware;
|
|
123
|
+
//# sourceMappingURL=createStreamMiddleware.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createStreamMiddleware.cjs","sourceRoot":"","sources":["../src/createStreamMiddleware.ts"],"names":[],"mappings":";;;;;AAKA,sFAA4D;AAC5D,2CAMyB;AACzB,qDAAyC;AAkBzC;;;;;;;;GAQG;AACH,SAAwB,sBAAsB,CAAC,UAAmB,EAAE;IAClE,MAAM,KAAK,GAAU,EAAE,CAAC,CAAC,gCAAgC;IACzD,MAAM,MAAM,GAAG,IAAI,wBAAM,CAAC;QACxB,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;QACrB,KAAK,EAAE,cAAc;KACtB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,4BAAgB,EAAE,CAAC;IAEtC,MAAM,UAAU,GAAoD,CAClE,GAAG,EACH,GAAG,EACH,IAAI,EACJ,GAAG,EACH,EAAE;QACF,qFAAqF;QACrF,KAAK,CAAC,GAAG,CAAC,EAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAC7D,sBAAsB;QACtB,YAAY,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAEtC;;;;OAIG;IACH,SAAS,YAAY,CAAC,GAAmB;QACvC,mDAAmD;QACnD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,SAAS,cAAc,CACrB,GAA0C,EAC1C,SAAkB,EAClB,mBAAmD;QAEnD,IAAI,QAAQ,GAAiB,IAAI,CAAC;QAClC,IAAI;YACF,MAAM,cAAc,GAAG,CAAC,IAAA,mBAAW,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,cAAc,EAAE;gBAClB,mBAAmB,CAAC,GAAqC,CAAC,CAAC;aAC5D;iBAAM;gBACL,eAAe,CAAC,GAAG,CAAC,CAAC;aACtB;SACF;QAAC,OAAO,IAAI,EAAE;YACb,QAAQ,GAAG,IAAa,CAAC;SAC1B;QACD,6BAA6B;QAC7B,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,SAAS,eAAe,CAAC,GAA0C;QACjE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;QAC/B,IAAI,UAAU,KAAK,IAAI,EAAE;YACvB,OAAO;SACR;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,CAAC,IAAI,CAAC,2CAA2C,UAAU,GAAG,CAAC,CAAC;YACvE,OAAO;SACR;QAED,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC;QACzB,mCAAmC;QACnC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChC,+BAA+B;QAC/B,uDAAuD;QACvD,4DAA4D;QAC5D,8DAA8D;QAC9D,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,SAAS,mBAAmB,CAAC,KAA0B;QACrD,IAAI,OAAO,EAAE,cAAc,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE;YACtE,kBAAkB,EAAE,CAAC;SACtB;QACD,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,SAAS,kBAAkB;QACzB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE;YACvD,2GAA2G;YAC3G,qFAAqF;YACrF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;gBACX,OAAO;aACR;YAED,IAAI,UAAU,IAAI,CAAC,EAAE;gBACnB,MAAM,IAAI,KAAK,CACb,2DAA2D,GAAG,CAAC,EAAE,GAAG,CACrE,CAAC;aACH;YACD,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,WAAW,EAAE;gBACf,WAAW,CAAC,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;aACzC;YACD,YAAY,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AA3HD,yCA2HC","sourcesContent":["import type {\n JsonRpcEngineNextCallback,\n JsonRpcEngineEndCallback,\n JsonRpcMiddleware,\n} from '@metamask/json-rpc-engine';\nimport SafeEventEmitter from '@metamask/safe-event-emitter';\nimport {\n hasProperty,\n type JsonRpcNotification,\n type JsonRpcParams,\n type JsonRpcRequest,\n type PendingJsonRpcResponse,\n} from '@metamask/utils';\nimport { Duplex } from 'readable-stream';\n\ntype IdMapValue = {\n req: JsonRpcRequest;\n res: PendingJsonRpcResponse<JsonRpcParams>;\n next: JsonRpcEngineNextCallback;\n end: JsonRpcEngineEndCallback;\n retryCount?: number;\n};\n\ntype IdMap = {\n [requestId: string]: IdMapValue;\n};\n\ntype Options = {\n retryOnMessage?: string;\n};\n\n/**\n * Creates a JsonRpcEngine middleware with an associated Duplex stream and\n * EventEmitter. The middleware, and by extension stream, assume that middleware\n * parameters are properly formatted. No runtime type checking or validation is\n * performed.\n *\n * @param options - Configuration options for middleware.\n * @returns The event emitter, middleware, and stream.\n */\nexport default function createStreamMiddleware(options: Options = {}) {\n const idMap: IdMap = {}; // TODO: replace with actual Map\n const stream = new Duplex({\n objectMode: true,\n read: () => undefined,\n write: processMessage,\n });\n\n const events = new SafeEventEmitter();\n\n const middleware: JsonRpcMiddleware<JsonRpcParams, JsonRpcParams> = (\n req,\n res,\n next,\n end,\n ) => {\n // register request on id map *before* sending it to the stream, to avoid race issues\n idMap[req.id as unknown as string] = { req, res, next, end };\n // write req to stream\n sendToStream(req);\n };\n\n return { events, middleware, stream };\n\n /**\n * Forwards JSON-RPC request to the stream.\n *\n * @param req - The JSON-RPC request object.\n */\n function sendToStream(req: JsonRpcRequest) {\n // TODO: limiting retries could be implemented here\n stream.push(req);\n }\n\n /**\n * Writes a JSON-RPC object to the stream.\n *\n * @param res - The JSON-RPC response object.\n * @param _encoding - The stream encoding, not used.\n * @param streamWriteCallback - The stream write callback.\n */\n function processMessage(\n res: PendingJsonRpcResponse<JsonRpcParams>,\n _encoding: unknown,\n streamWriteCallback: (error?: Error | null) => void,\n ) {\n let errorObj: Error | null = null;\n try {\n const isNotification = !hasProperty(res, 'id');\n if (isNotification) {\n processNotification(res as unknown as JsonRpcNotification);\n } else {\n processResponse(res);\n }\n } catch (_err) {\n errorObj = _err as Error;\n }\n // continue processing stream\n streamWriteCallback(errorObj);\n }\n\n /**\n * Processes a JSON-RPC response.\n *\n * @param res - The response to process.\n */\n function processResponse(res: PendingJsonRpcResponse<JsonRpcParams>) {\n const { id: responseId } = res;\n if (responseId === null) {\n return;\n }\n\n const context = idMap[responseId];\n if (!context) {\n console.warn(`StreamMiddleware - Unknown response id \"${responseId}\"`);\n return;\n }\n\n delete idMap[responseId];\n // copy whole res onto original res\n Object.assign(context.res, res);\n // run callback on empty stack,\n // prevent internal stream-handler from catching errors\n // TODO: remove eslint-disable once issue #1989 is resolved.\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n setTimeout(context.end);\n }\n\n /**\n * Processes a JSON-RPC notification.\n *\n * @param notif - The notification to process.\n */\n function processNotification(notif: JsonRpcNotification) {\n if (options?.retryOnMessage && notif.method === options.retryOnMessage) {\n retryStuckRequests();\n }\n events.emit('notification', notif);\n }\n\n /**\n * Retry pending requests.\n */\n function retryStuckRequests() {\n Object.values(idMap).forEach(({ req, retryCount = 0 }) => {\n // Avoid retrying requests without an id - they cannot have matching responses so retry logic doesn't apply\n // Check for retry count below ensure that a request is not retried more than 3 times\n if (!req.id) {\n return;\n }\n\n if (retryCount >= 3) {\n throw new Error(\n `StreamMiddleware - Retry limit exceeded for request id \"${req.id}\"`,\n );\n }\n const idMapObject = idMap[req.id];\n if (idMapObject) {\n idMapObject.retryCount = retryCount + 1;\n }\n sendToStream(req);\n });\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { JsonRpcMiddleware } from
|
|
2
|
-
import SafeEventEmitter from
|
|
3
|
-
import { type JsonRpcParams } from
|
|
4
|
-
import { Duplex } from
|
|
1
|
+
import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine";
|
|
2
|
+
import SafeEventEmitter from "@metamask/safe-event-emitter";
|
|
3
|
+
import { type JsonRpcParams } from "@metamask/utils";
|
|
4
|
+
import { Duplex } from "readable-stream";
|
|
5
5
|
type Options = {
|
|
6
6
|
retryOnMessage?: string;
|
|
7
7
|
};
|
|
@@ -20,4 +20,4 @@ export default function createStreamMiddleware(options?: Options): {
|
|
|
20
20
|
stream: Duplex;
|
|
21
21
|
};
|
|
22
22
|
export {};
|
|
23
|
-
//# sourceMappingURL=createStreamMiddleware.d.
|
|
23
|
+
//# sourceMappingURL=createStreamMiddleware.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createStreamMiddleware.d.cts","sourceRoot":"","sources":["../src/createStreamMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,iBAAiB,EAClB,kCAAkC;AACnC,OAAO,gBAAgB,qCAAqC;AAC5D,OAAO,EAGL,KAAK,aAAa,EAGnB,wBAAwB;AACzB,OAAO,EAAE,MAAM,EAAE,wBAAwB;AAczC,KAAK,OAAO,GAAG;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,OAAO,GAAE,OAAY;;;;EA2HnE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine";
|
|
2
|
+
import SafeEventEmitter from "@metamask/safe-event-emitter";
|
|
3
|
+
import { type JsonRpcParams } from "@metamask/utils";
|
|
4
|
+
import { Duplex } from "readable-stream";
|
|
5
|
+
type Options = {
|
|
6
|
+
retryOnMessage?: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Creates a JsonRpcEngine middleware with an associated Duplex stream and
|
|
10
|
+
* EventEmitter. The middleware, and by extension stream, assume that middleware
|
|
11
|
+
* parameters are properly formatted. No runtime type checking or validation is
|
|
12
|
+
* performed.
|
|
13
|
+
*
|
|
14
|
+
* @param options - Configuration options for middleware.
|
|
15
|
+
* @returns The event emitter, middleware, and stream.
|
|
16
|
+
*/
|
|
17
|
+
export default function createStreamMiddleware(options?: Options): {
|
|
18
|
+
events: SafeEventEmitter;
|
|
19
|
+
middleware: JsonRpcMiddleware<JsonRpcParams, JsonRpcParams>;
|
|
20
|
+
stream: Duplex;
|
|
21
|
+
};
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=createStreamMiddleware.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createStreamMiddleware.d.mts","sourceRoot":"","sources":["../src/createStreamMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,iBAAiB,EAClB,kCAAkC;AACnC,OAAO,gBAAgB,qCAAqC;AAC5D,OAAO,EAGL,KAAK,aAAa,EAGnB,wBAAwB;AACzB,OAAO,EAAE,MAAM,EAAE,wBAAwB;AAczC,KAAK,OAAO,GAAG;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,OAAO,GAAE,OAAY;;;;EA2HnE"}
|
|
@@ -1,7 +1,117 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
} from "
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import SafeEventEmitter from "@metamask/safe-event-emitter";
|
|
2
|
+
import { hasProperty } from "@metamask/utils";
|
|
3
|
+
import { Duplex } from "readable-stream";
|
|
4
|
+
/**
|
|
5
|
+
* Creates a JsonRpcEngine middleware with an associated Duplex stream and
|
|
6
|
+
* EventEmitter. The middleware, and by extension stream, assume that middleware
|
|
7
|
+
* parameters are properly formatted. No runtime type checking or validation is
|
|
8
|
+
* performed.
|
|
9
|
+
*
|
|
10
|
+
* @param options - Configuration options for middleware.
|
|
11
|
+
* @returns The event emitter, middleware, and stream.
|
|
12
|
+
*/
|
|
13
|
+
export default function createStreamMiddleware(options = {}) {
|
|
14
|
+
const idMap = {}; // TODO: replace with actual Map
|
|
15
|
+
const stream = new Duplex({
|
|
16
|
+
objectMode: true,
|
|
17
|
+
read: () => undefined,
|
|
18
|
+
write: processMessage,
|
|
19
|
+
});
|
|
20
|
+
const events = new SafeEventEmitter();
|
|
21
|
+
const middleware = (req, res, next, end) => {
|
|
22
|
+
// register request on id map *before* sending it to the stream, to avoid race issues
|
|
23
|
+
idMap[req.id] = { req, res, next, end };
|
|
24
|
+
// write req to stream
|
|
25
|
+
sendToStream(req);
|
|
26
|
+
};
|
|
27
|
+
return { events, middleware, stream };
|
|
28
|
+
/**
|
|
29
|
+
* Forwards JSON-RPC request to the stream.
|
|
30
|
+
*
|
|
31
|
+
* @param req - The JSON-RPC request object.
|
|
32
|
+
*/
|
|
33
|
+
function sendToStream(req) {
|
|
34
|
+
// TODO: limiting retries could be implemented here
|
|
35
|
+
stream.push(req);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Writes a JSON-RPC object to the stream.
|
|
39
|
+
*
|
|
40
|
+
* @param res - The JSON-RPC response object.
|
|
41
|
+
* @param _encoding - The stream encoding, not used.
|
|
42
|
+
* @param streamWriteCallback - The stream write callback.
|
|
43
|
+
*/
|
|
44
|
+
function processMessage(res, _encoding, streamWriteCallback) {
|
|
45
|
+
let errorObj = null;
|
|
46
|
+
try {
|
|
47
|
+
const isNotification = !hasProperty(res, 'id');
|
|
48
|
+
if (isNotification) {
|
|
49
|
+
processNotification(res);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
processResponse(res);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (_err) {
|
|
56
|
+
errorObj = _err;
|
|
57
|
+
}
|
|
58
|
+
// continue processing stream
|
|
59
|
+
streamWriteCallback(errorObj);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Processes a JSON-RPC response.
|
|
63
|
+
*
|
|
64
|
+
* @param res - The response to process.
|
|
65
|
+
*/
|
|
66
|
+
function processResponse(res) {
|
|
67
|
+
const { id: responseId } = res;
|
|
68
|
+
if (responseId === null) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const context = idMap[responseId];
|
|
72
|
+
if (!context) {
|
|
73
|
+
console.warn(`StreamMiddleware - Unknown response id "${responseId}"`);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
delete idMap[responseId];
|
|
77
|
+
// copy whole res onto original res
|
|
78
|
+
Object.assign(context.res, res);
|
|
79
|
+
// run callback on empty stack,
|
|
80
|
+
// prevent internal stream-handler from catching errors
|
|
81
|
+
// TODO: remove eslint-disable once issue #1989 is resolved.
|
|
82
|
+
// eslint-disable-next-line @typescript-eslint/no-implied-eval
|
|
83
|
+
setTimeout(context.end);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Processes a JSON-RPC notification.
|
|
87
|
+
*
|
|
88
|
+
* @param notif - The notification to process.
|
|
89
|
+
*/
|
|
90
|
+
function processNotification(notif) {
|
|
91
|
+
if (options?.retryOnMessage && notif.method === options.retryOnMessage) {
|
|
92
|
+
retryStuckRequests();
|
|
93
|
+
}
|
|
94
|
+
events.emit('notification', notif);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Retry pending requests.
|
|
98
|
+
*/
|
|
99
|
+
function retryStuckRequests() {
|
|
100
|
+
Object.values(idMap).forEach(({ req, retryCount = 0 }) => {
|
|
101
|
+
// Avoid retrying requests without an id - they cannot have matching responses so retry logic doesn't apply
|
|
102
|
+
// Check for retry count below ensure that a request is not retried more than 3 times
|
|
103
|
+
if (!req.id) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (retryCount >= 3) {
|
|
107
|
+
throw new Error(`StreamMiddleware - Retry limit exceeded for request id "${req.id}"`);
|
|
108
|
+
}
|
|
109
|
+
const idMapObject = idMap[req.id];
|
|
110
|
+
if (idMapObject) {
|
|
111
|
+
idMapObject.retryCount = retryCount + 1;
|
|
112
|
+
}
|
|
113
|
+
sendToStream(req);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
7
117
|
//# sourceMappingURL=createStreamMiddleware.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"
|
|
1
|
+
{"version":3,"file":"createStreamMiddleware.mjs","sourceRoot":"","sources":["../src/createStreamMiddleware.ts"],"names":[],"mappings":"AAKA,OAAO,gBAAgB,qCAAqC;AAC5D,OAAO,EACL,WAAW,EAKZ,wBAAwB;AACzB,OAAO,EAAE,MAAM,EAAE,wBAAwB;AAkBzC;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,UAAmB,EAAE;IAClE,MAAM,KAAK,GAAU,EAAE,CAAC,CAAC,gCAAgC;IACzD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;QACrB,KAAK,EAAE,cAAc;KACtB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAEtC,MAAM,UAAU,GAAoD,CAClE,GAAG,EACH,GAAG,EACH,IAAI,EACJ,GAAG,EACH,EAAE;QACF,qFAAqF;QACrF,KAAK,CAAC,GAAG,CAAC,EAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAC7D,sBAAsB;QACtB,YAAY,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAEtC;;;;OAIG;IACH,SAAS,YAAY,CAAC,GAAmB;QACvC,mDAAmD;QACnD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED;;;;;;OAMG;IACH,SAAS,cAAc,CACrB,GAA0C,EAC1C,SAAkB,EAClB,mBAAmD;QAEnD,IAAI,QAAQ,GAAiB,IAAI,CAAC;QAClC,IAAI;YACF,MAAM,cAAc,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,cAAc,EAAE;gBAClB,mBAAmB,CAAC,GAAqC,CAAC,CAAC;aAC5D;iBAAM;gBACL,eAAe,CAAC,GAAG,CAAC,CAAC;aACtB;SACF;QAAC,OAAO,IAAI,EAAE;YACb,QAAQ,GAAG,IAAa,CAAC;SAC1B;QACD,6BAA6B;QAC7B,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,SAAS,eAAe,CAAC,GAA0C;QACjE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;QAC/B,IAAI,UAAU,KAAK,IAAI,EAAE;YACvB,OAAO;SACR;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,CAAC,IAAI,CAAC,2CAA2C,UAAU,GAAG,CAAC,CAAC;YACvE,OAAO;SACR;QAED,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC;QACzB,mCAAmC;QACnC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChC,+BAA+B;QAC/B,uDAAuD;QACvD,4DAA4D;QAC5D,8DAA8D;QAC9D,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,SAAS,mBAAmB,CAAC,KAA0B;QACrD,IAAI,OAAO,EAAE,cAAc,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,cAAc,EAAE;YACtE,kBAAkB,EAAE,CAAC;SACtB;QACD,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,SAAS,kBAAkB;QACzB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,GAAG,CAAC,EAAE,EAAE,EAAE;YACvD,2GAA2G;YAC3G,qFAAqF;YACrF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;gBACX,OAAO;aACR;YAED,IAAI,UAAU,IAAI,CAAC,EAAE;gBACnB,MAAM,IAAI,KAAK,CACb,2DAA2D,GAAG,CAAC,EAAE,GAAG,CACrE,CAAC;aACH;YACD,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,WAAW,EAAE;gBACf,WAAW,CAAC,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;aACzC;YACD,YAAY,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC","sourcesContent":["import type {\n JsonRpcEngineNextCallback,\n JsonRpcEngineEndCallback,\n JsonRpcMiddleware,\n} from '@metamask/json-rpc-engine';\nimport SafeEventEmitter from '@metamask/safe-event-emitter';\nimport {\n hasProperty,\n type JsonRpcNotification,\n type JsonRpcParams,\n type JsonRpcRequest,\n type PendingJsonRpcResponse,\n} from '@metamask/utils';\nimport { Duplex } from 'readable-stream';\n\ntype IdMapValue = {\n req: JsonRpcRequest;\n res: PendingJsonRpcResponse<JsonRpcParams>;\n next: JsonRpcEngineNextCallback;\n end: JsonRpcEngineEndCallback;\n retryCount?: number;\n};\n\ntype IdMap = {\n [requestId: string]: IdMapValue;\n};\n\ntype Options = {\n retryOnMessage?: string;\n};\n\n/**\n * Creates a JsonRpcEngine middleware with an associated Duplex stream and\n * EventEmitter. The middleware, and by extension stream, assume that middleware\n * parameters are properly formatted. No runtime type checking or validation is\n * performed.\n *\n * @param options - Configuration options for middleware.\n * @returns The event emitter, middleware, and stream.\n */\nexport default function createStreamMiddleware(options: Options = {}) {\n const idMap: IdMap = {}; // TODO: replace with actual Map\n const stream = new Duplex({\n objectMode: true,\n read: () => undefined,\n write: processMessage,\n });\n\n const events = new SafeEventEmitter();\n\n const middleware: JsonRpcMiddleware<JsonRpcParams, JsonRpcParams> = (\n req,\n res,\n next,\n end,\n ) => {\n // register request on id map *before* sending it to the stream, to avoid race issues\n idMap[req.id as unknown as string] = { req, res, next, end };\n // write req to stream\n sendToStream(req);\n };\n\n return { events, middleware, stream };\n\n /**\n * Forwards JSON-RPC request to the stream.\n *\n * @param req - The JSON-RPC request object.\n */\n function sendToStream(req: JsonRpcRequest) {\n // TODO: limiting retries could be implemented here\n stream.push(req);\n }\n\n /**\n * Writes a JSON-RPC object to the stream.\n *\n * @param res - The JSON-RPC response object.\n * @param _encoding - The stream encoding, not used.\n * @param streamWriteCallback - The stream write callback.\n */\n function processMessage(\n res: PendingJsonRpcResponse<JsonRpcParams>,\n _encoding: unknown,\n streamWriteCallback: (error?: Error | null) => void,\n ) {\n let errorObj: Error | null = null;\n try {\n const isNotification = !hasProperty(res, 'id');\n if (isNotification) {\n processNotification(res as unknown as JsonRpcNotification);\n } else {\n processResponse(res);\n }\n } catch (_err) {\n errorObj = _err as Error;\n }\n // continue processing stream\n streamWriteCallback(errorObj);\n }\n\n /**\n * Processes a JSON-RPC response.\n *\n * @param res - The response to process.\n */\n function processResponse(res: PendingJsonRpcResponse<JsonRpcParams>) {\n const { id: responseId } = res;\n if (responseId === null) {\n return;\n }\n\n const context = idMap[responseId];\n if (!context) {\n console.warn(`StreamMiddleware - Unknown response id \"${responseId}\"`);\n return;\n }\n\n delete idMap[responseId];\n // copy whole res onto original res\n Object.assign(context.res, res);\n // run callback on empty stack,\n // prevent internal stream-handler from catching errors\n // TODO: remove eslint-disable once issue #1989 is resolved.\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n setTimeout(context.end);\n }\n\n /**\n * Processes a JSON-RPC notification.\n *\n * @param notif - The notification to process.\n */\n function processNotification(notif: JsonRpcNotification) {\n if (options?.retryOnMessage && notif.method === options.retryOnMessage) {\n retryStuckRequests();\n }\n events.emit('notification', notif);\n }\n\n /**\n * Retry pending requests.\n */\n function retryStuckRequests() {\n Object.values(idMap).forEach(({ req, retryCount = 0 }) => {\n // Avoid retrying requests without an id - they cannot have matching responses so retry logic doesn't apply\n // Check for retry count below ensure that a request is not retried more than 3 times\n if (!req.id) {\n return;\n }\n\n if (retryCount >= 3) {\n throw new Error(\n `StreamMiddleware - Retry limit exceeded for request id \"${req.id}\"`,\n );\n }\n const idMapObject = idMap[req.id];\n if (idMapObject) {\n idMapObject.retryCount = retryCount + 1;\n }\n sendToStream(req);\n });\n }\n}\n"]}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
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.createStreamMiddleware = exports.createEngineStream = void 0;
|
|
7
|
+
const createEngineStream_1 = __importDefault(require("./createEngineStream.cjs"));
|
|
8
|
+
exports.createEngineStream = createEngineStream_1.default;
|
|
9
|
+
const createStreamMiddleware_1 = __importDefault(require("./createStreamMiddleware.cjs"));
|
|
10
|
+
exports.createStreamMiddleware = createStreamMiddleware_1.default;
|
|
11
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,kFAAsD;AAG7C,6BAHF,4BAAkB,CAGE;AAF3B,0FAA8D;AAEjC,iCAFtB,gCAAsB,CAEsB","sourcesContent":["import createEngineStream from './createEngineStream';\nimport createStreamMiddleware from './createStreamMiddleware';\n\nexport { createEngineStream, createStreamMiddleware };\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,iCAA6B;AACtD,OAAO,sBAAsB,qCAAiC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,CAAC"}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,iCAA6B;AACtD,OAAO,sBAAsB,qCAAiC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,CAAC"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
createStreamMiddleware
|
|
6
|
-
} from "./chunk-UL572XET.mjs";
|
|
7
|
-
export {
|
|
8
|
-
createEngineStream,
|
|
9
|
-
createStreamMiddleware
|
|
10
|
-
};
|
|
1
|
+
import createEngineStream from "./createEngineStream.mjs";
|
|
2
|
+
import createStreamMiddleware from "./createStreamMiddleware.mjs";
|
|
3
|
+
export { createEngineStream, createStreamMiddleware };
|
|
11
4
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,iCAA6B;AACtD,OAAO,sBAAsB,qCAAiC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,CAAC","sourcesContent":["import createEngineStream from './createEngineStream';\nimport createStreamMiddleware from './createStreamMiddleware';\n\nexport { createEngineStream, createStreamMiddleware };\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask-previews/json-rpc-middleware-stream",
|
|
3
|
-
"version": "8.0.2-preview-
|
|
3
|
+
"version": "8.0.2-preview-9d310688",
|
|
4
4
|
"description": "A small toolset for streaming JSON-RPC data and matching requests and responses",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|
|
@@ -18,19 +18,24 @@
|
|
|
18
18
|
"sideEffects": false,
|
|
19
19
|
"exports": {
|
|
20
20
|
".": {
|
|
21
|
-
"import":
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
"import": {
|
|
22
|
+
"types": "./dist/index.d.mts",
|
|
23
|
+
"default": "./dist/index.mjs"
|
|
24
|
+
},
|
|
25
|
+
"require": {
|
|
26
|
+
"types": "./dist/index.d.cts",
|
|
27
|
+
"default": "./dist/index.cjs"
|
|
28
|
+
}
|
|
24
29
|
},
|
|
25
30
|
"./package.json": "./package.json"
|
|
26
31
|
},
|
|
27
|
-
"main": "./dist/index.
|
|
28
|
-
"types": "./dist/
|
|
32
|
+
"main": "./dist/index.cjs",
|
|
33
|
+
"types": "./dist/index.d.cts",
|
|
29
34
|
"files": [
|
|
30
35
|
"dist/"
|
|
31
36
|
],
|
|
32
37
|
"scripts": {
|
|
33
|
-
"build": "
|
|
38
|
+
"build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references",
|
|
34
39
|
"build:docs": "typedoc",
|
|
35
40
|
"changelog:update": "../../scripts/update-changelog.sh @metamask/json-rpc-middleware-stream --tag-prefix-before-package-rename json-rpc-middleware-stream@ --version-before-package-rename 5.0.1",
|
|
36
41
|
"changelog:validate": "../../scripts/validate-changelog.sh @metamask/json-rpc-middleware-stream --tag-prefix-before-package-rename json-rpc-middleware-stream@ --version-before-package-rename 5.0.1",
|
package/dist/chunk-2YBP3PJ2.mjs
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
// src/createEngineStream.ts
|
|
2
|
-
import { Duplex } from "readable-stream";
|
|
3
|
-
function createEngineStream(opts) {
|
|
4
|
-
if (!opts?.engine) {
|
|
5
|
-
throw new Error("Missing engine parameter!");
|
|
6
|
-
}
|
|
7
|
-
const { engine } = opts;
|
|
8
|
-
const stream = new Duplex({ objectMode: true, read: () => void 0, write });
|
|
9
|
-
if (engine.on) {
|
|
10
|
-
engine.on("notification", (message) => {
|
|
11
|
-
stream.push(message);
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
return stream;
|
|
15
|
-
function write(req, _encoding, streamWriteCallback) {
|
|
16
|
-
engine.handle(req, (_err, res) => {
|
|
17
|
-
stream.push(res);
|
|
18
|
-
});
|
|
19
|
-
streamWriteCallback();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export {
|
|
24
|
-
createEngineStream
|
|
25
|
-
};
|
|
26
|
-
//# sourceMappingURL=chunk-2YBP3PJ2.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/createEngineStream.ts"],"sourcesContent":["import type { JsonRpcEngine } from '@metamask/json-rpc-engine';\nimport type { JsonRpcRequest } from '@metamask/utils';\nimport { Duplex } from 'readable-stream';\n\ntype EngineStreamOptions = {\n engine: JsonRpcEngine;\n};\n\n/**\n * Takes a JsonRpcEngine and returns a Duplex stream wrapping it.\n *\n * @param opts - Options bag.\n * @param opts.engine - The JsonRpcEngine to wrap in a stream.\n * @returns The stream wrapping the engine.\n */\nexport default function createEngineStream(opts: EngineStreamOptions): Duplex {\n if (!opts?.engine) {\n throw new Error('Missing engine parameter!');\n }\n\n const { engine } = opts;\n const stream = new Duplex({ objectMode: true, read: () => undefined, write });\n // forward notifications\n if (engine.on) {\n engine.on('notification', (message) => {\n stream.push(message);\n });\n }\n return stream;\n\n /**\n * Write a JSON-RPC request to the stream.\n *\n * @param req - The JSON-rpc request.\n * @param _encoding - The stream encoding, not used.\n * @param streamWriteCallback - The stream write callback.\n */\n function write(\n req: JsonRpcRequest,\n _encoding: unknown,\n streamWriteCallback: (error?: Error | null) => void,\n ) {\n engine.handle(req, (_err, res) => {\n stream.push(res);\n });\n streamWriteCallback();\n }\n}\n"],"mappings":";AAEA,SAAS,cAAc;AAaR,SAAR,mBAAoC,MAAmC;AAC5E,MAAI,CAAC,MAAM,QAAQ;AACjB,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC7C;AAEA,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,SAAS,IAAI,OAAO,EAAE,YAAY,MAAM,MAAM,MAAM,QAAW,MAAM,CAAC;AAE5E,MAAI,OAAO,IAAI;AACb,WAAO,GAAG,gBAAgB,CAAC,YAAY;AACrC,aAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAAA,EACH;AACA,SAAO;AASP,WAAS,MACP,KACA,WACA,qBACA;AACA,WAAO,OAAO,KAAK,CAAC,MAAM,QAAQ;AAChC,aAAO,KAAK,GAAG;AAAA,IACjB,CAAC;AACD,wBAAoB;AAAA,EACtB;AACF;","names":[]}
|
package/dist/chunk-CUV6EOT3.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/createStreamMiddleware.ts
|
|
2
|
-
var _safeeventemitter = require('@metamask/safe-event-emitter'); var _safeeventemitter2 = _interopRequireDefault(_safeeventemitter);
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var _utils = require('@metamask/utils');
|
|
6
|
-
var _readablestream = require('readable-stream');
|
|
7
|
-
function createStreamMiddleware(options = {}) {
|
|
8
|
-
const idMap = {};
|
|
9
|
-
const stream = new (0, _readablestream.Duplex)({
|
|
10
|
-
objectMode: true,
|
|
11
|
-
read: () => void 0,
|
|
12
|
-
write: processMessage
|
|
13
|
-
});
|
|
14
|
-
const events = new (0, _safeeventemitter2.default)();
|
|
15
|
-
const middleware = (req, res, next, end) => {
|
|
16
|
-
idMap[req.id] = { req, res, next, end };
|
|
17
|
-
sendToStream(req);
|
|
18
|
-
};
|
|
19
|
-
return { events, middleware, stream };
|
|
20
|
-
function sendToStream(req) {
|
|
21
|
-
stream.push(req);
|
|
22
|
-
}
|
|
23
|
-
function processMessage(res, _encoding, streamWriteCallback) {
|
|
24
|
-
let errorObj = null;
|
|
25
|
-
try {
|
|
26
|
-
const isNotification = !_utils.hasProperty.call(void 0, res, "id");
|
|
27
|
-
if (isNotification) {
|
|
28
|
-
processNotification(res);
|
|
29
|
-
} else {
|
|
30
|
-
processResponse(res);
|
|
31
|
-
}
|
|
32
|
-
} catch (_err) {
|
|
33
|
-
errorObj = _err;
|
|
34
|
-
}
|
|
35
|
-
streamWriteCallback(errorObj);
|
|
36
|
-
}
|
|
37
|
-
function processResponse(res) {
|
|
38
|
-
const { id: responseId } = res;
|
|
39
|
-
if (responseId === null) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
const context = idMap[responseId];
|
|
43
|
-
if (!context) {
|
|
44
|
-
console.warn(`StreamMiddleware - Unknown response id "${responseId}"`);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
delete idMap[responseId];
|
|
48
|
-
Object.assign(context.res, res);
|
|
49
|
-
setTimeout(context.end);
|
|
50
|
-
}
|
|
51
|
-
function processNotification(notif) {
|
|
52
|
-
if (options?.retryOnMessage && notif.method === options.retryOnMessage) {
|
|
53
|
-
retryStuckRequests();
|
|
54
|
-
}
|
|
55
|
-
events.emit("notification", notif);
|
|
56
|
-
}
|
|
57
|
-
function retryStuckRequests() {
|
|
58
|
-
Object.values(idMap).forEach(({ req, retryCount = 0 }) => {
|
|
59
|
-
if (!req.id) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
if (retryCount >= 3) {
|
|
63
|
-
throw new Error(
|
|
64
|
-
`StreamMiddleware - Retry limit exceeded for request id "${req.id}"`
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
const idMapObject = idMap[req.id];
|
|
68
|
-
if (idMapObject) {
|
|
69
|
-
idMapObject.retryCount = retryCount + 1;
|
|
70
|
-
}
|
|
71
|
-
sendToStream(req);
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
exports.createStreamMiddleware = createStreamMiddleware;
|
|
79
|
-
//# sourceMappingURL=chunk-CUV6EOT3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/createStreamMiddleware.ts"],"names":[],"mappings":";AAKA,OAAO,sBAAsB;AAC7B;AAAA,EACE;AAAA,OAKK;AACP,SAAS,cAAc;AA2BR,SAAR,uBAAwC,UAAmB,CAAC,GAAG;AACpE,QAAM,QAAe,CAAC;AACtB,QAAM,SAAS,IAAI,OAAO;AAAA,IACxB,YAAY;AAAA,IACZ,MAAM,MAAM;AAAA,IACZ,OAAO;AAAA,EACT,CAAC;AAED,QAAM,SAAS,IAAI,iBAAiB;AAEpC,QAAM,aAA8D,CAClE,KACA,KACA,MACA,QACG;AAEH,UAAM,IAAI,EAAuB,IAAI,EAAE,KAAK,KAAK,MAAM,IAAI;AAE3D,iBAAa,GAAG;AAAA,EAClB;AAEA,SAAO,EAAE,QAAQ,YAAY,OAAO;AAOpC,WAAS,aAAa,KAAqB;AAEzC,WAAO,KAAK,GAAG;AAAA,EACjB;AASA,WAAS,eACP,KACA,WACA,qBACA;AACA,QAAI,WAAyB;AAC7B,QAAI;AACF,YAAM,iBAAiB,CAAC,YAAY,KAAK,IAAI;AAC7C,UAAI,gBAAgB;AAClB,4BAAoB,GAAqC;AAAA,MAC3D,OAAO;AACL,wBAAgB,GAAG;AAAA,MACrB;AAAA,IACF,SAAS,MAAM;AACb,iBAAW;AAAA,IACb;AAEA,wBAAoB,QAAQ;AAAA,EAC9B;AAOA,WAAS,gBAAgB,KAA4C;AACnE,UAAM,EAAE,IAAI,WAAW,IAAI;AAC3B,QAAI,eAAe,MAAM;AACvB;AAAA,IACF;AAEA,UAAM,UAAU,MAAM,UAAU;AAChC,QAAI,CAAC,SAAS;AACZ,cAAQ,KAAK,2CAA2C,UAAU,GAAG;AACrE;AAAA,IACF;AAEA,WAAO,MAAM,UAAU;AAEvB,WAAO,OAAO,QAAQ,KAAK,GAAG;AAK9B,eAAW,QAAQ,GAAG;AAAA,EACxB;AAOA,WAAS,oBAAoB,OAA4B;AACvD,QAAI,SAAS,kBAAkB,MAAM,WAAW,QAAQ,gBAAgB;AACtE,yBAAmB;AAAA,IACrB;AACA,WAAO,KAAK,gBAAgB,KAAK;AAAA,EACnC;AAKA,WAAS,qBAAqB;AAC5B,WAAO,OAAO,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,aAAa,EAAE,MAAM;AAGxD,UAAI,CAAC,IAAI,IAAI;AACX;AAAA,MACF;AAEA,UAAI,cAAc,GAAG;AACnB,cAAM,IAAI;AAAA,UACR,2DAA2D,IAAI,EAAE;AAAA,QACnE;AAAA,MACF;AACA,YAAM,cAAc,MAAM,IAAI,EAAE;AAChC,UAAI,aAAa;AACf,oBAAY,aAAa,aAAa;AAAA,MACxC;AACA,mBAAa,GAAG;AAAA,IAClB,CAAC;AAAA,EACH;AACF","sourcesContent":["import type {\n JsonRpcEngineNextCallback,\n JsonRpcEngineEndCallback,\n JsonRpcMiddleware,\n} from '@metamask/json-rpc-engine';\nimport SafeEventEmitter from '@metamask/safe-event-emitter';\nimport {\n hasProperty,\n type JsonRpcNotification,\n type JsonRpcParams,\n type JsonRpcRequest,\n type PendingJsonRpcResponse,\n} from '@metamask/utils';\nimport { Duplex } from 'readable-stream';\n\ntype IdMapValue = {\n req: JsonRpcRequest;\n res: PendingJsonRpcResponse<JsonRpcParams>;\n next: JsonRpcEngineNextCallback;\n end: JsonRpcEngineEndCallback;\n retryCount?: number;\n};\n\ntype IdMap = {\n [requestId: string]: IdMapValue;\n};\n\ntype Options = {\n retryOnMessage?: string;\n};\n\n/**\n * Creates a JsonRpcEngine middleware with an associated Duplex stream and\n * EventEmitter. The middleware, and by extension stream, assume that middleware\n * parameters are properly formatted. No runtime type checking or validation is\n * performed.\n *\n * @param options - Configuration options for middleware.\n * @returns The event emitter, middleware, and stream.\n */\nexport default function createStreamMiddleware(options: Options = {}) {\n const idMap: IdMap = {}; // TODO: replace with actual Map\n const stream = new Duplex({\n objectMode: true,\n read: () => undefined,\n write: processMessage,\n });\n\n const events = new SafeEventEmitter();\n\n const middleware: JsonRpcMiddleware<JsonRpcParams, JsonRpcParams> = (\n req,\n res,\n next,\n end,\n ) => {\n // register request on id map *before* sending it to the stream, to avoid race issues\n idMap[req.id as unknown as string] = { req, res, next, end };\n // write req to stream\n sendToStream(req);\n };\n\n return { events, middleware, stream };\n\n /**\n * Forwards JSON-RPC request to the stream.\n *\n * @param req - The JSON-RPC request object.\n */\n function sendToStream(req: JsonRpcRequest) {\n // TODO: limiting retries could be implemented here\n stream.push(req);\n }\n\n /**\n * Writes a JSON-RPC object to the stream.\n *\n * @param res - The JSON-RPC response object.\n * @param _encoding - The stream encoding, not used.\n * @param streamWriteCallback - The stream write callback.\n */\n function processMessage(\n res: PendingJsonRpcResponse<JsonRpcParams>,\n _encoding: unknown,\n streamWriteCallback: (error?: Error | null) => void,\n ) {\n let errorObj: Error | null = null;\n try {\n const isNotification = !hasProperty(res, 'id');\n if (isNotification) {\n processNotification(res as unknown as JsonRpcNotification);\n } else {\n processResponse(res);\n }\n } catch (_err) {\n errorObj = _err as Error;\n }\n // continue processing stream\n streamWriteCallback(errorObj);\n }\n\n /**\n * Processes a JSON-RPC response.\n *\n * @param res - The response to process.\n */\n function processResponse(res: PendingJsonRpcResponse<JsonRpcParams>) {\n const { id: responseId } = res;\n if (responseId === null) {\n return;\n }\n\n const context = idMap[responseId];\n if (!context) {\n console.warn(`StreamMiddleware - Unknown response id \"${responseId}\"`);\n return;\n }\n\n delete idMap[responseId];\n // copy whole res onto original res\n Object.assign(context.res, res);\n // run callback on empty stack,\n // prevent internal stream-handler from catching errors\n // TODO: remove eslint-disable once issue #1989 is resolved.\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n setTimeout(context.end);\n }\n\n /**\n * Processes a JSON-RPC notification.\n *\n * @param notif - The notification to process.\n */\n function processNotification(notif: JsonRpcNotification) {\n if (options?.retryOnMessage && notif.method === options.retryOnMessage) {\n retryStuckRequests();\n }\n events.emit('notification', notif);\n }\n\n /**\n * Retry pending requests.\n */\n function retryStuckRequests() {\n Object.values(idMap).forEach(({ req, retryCount = 0 }) => {\n // Avoid retrying requests without an id - they cannot have matching responses so retry logic doesn't apply\n // Check for retry count below ensure that a request is not retried more than 3 times\n if (!req.id) {\n return;\n }\n\n if (retryCount >= 3) {\n throw new Error(\n `StreamMiddleware - Retry limit exceeded for request id \"${req.id}\"`,\n );\n }\n const idMapObject = idMap[req.id];\n if (idMapObject) {\n idMapObject.retryCount = retryCount + 1;\n }\n sendToStream(req);\n });\n }\n}\n"]}
|
package/dist/chunk-IDTAZSDC.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/createEngineStream.ts
|
|
2
|
-
var _readablestream = require('readable-stream');
|
|
3
|
-
function createEngineStream(opts) {
|
|
4
|
-
if (!opts?.engine) {
|
|
5
|
-
throw new Error("Missing engine parameter!");
|
|
6
|
-
}
|
|
7
|
-
const { engine } = opts;
|
|
8
|
-
const stream = new (0, _readablestream.Duplex)({ objectMode: true, read: () => void 0, write });
|
|
9
|
-
if (engine.on) {
|
|
10
|
-
engine.on("notification", (message) => {
|
|
11
|
-
stream.push(message);
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
return stream;
|
|
15
|
-
function write(req, _encoding, streamWriteCallback) {
|
|
16
|
-
engine.handle(req, (_err, res) => {
|
|
17
|
-
stream.push(res);
|
|
18
|
-
});
|
|
19
|
-
streamWriteCallback();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
exports.createEngineStream = createEngineStream;
|
|
26
|
-
//# sourceMappingURL=chunk-IDTAZSDC.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/createEngineStream.ts"],"names":[],"mappings":";AAEA,SAAS,cAAc;AAaR,SAAR,mBAAoC,MAAmC;AAC5E,MAAI,CAAC,MAAM,QAAQ;AACjB,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC7C;AAEA,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,SAAS,IAAI,OAAO,EAAE,YAAY,MAAM,MAAM,MAAM,QAAW,MAAM,CAAC;AAE5E,MAAI,OAAO,IAAI;AACb,WAAO,GAAG,gBAAgB,CAAC,YAAY;AACrC,aAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAAA,EACH;AACA,SAAO;AASP,WAAS,MACP,KACA,WACA,qBACA;AACA,WAAO,OAAO,KAAK,CAAC,MAAM,QAAQ;AAChC,aAAO,KAAK,GAAG;AAAA,IACjB,CAAC;AACD,wBAAoB;AAAA,EACtB;AACF","sourcesContent":["import type { JsonRpcEngine } from '@metamask/json-rpc-engine';\nimport type { JsonRpcRequest } from '@metamask/utils';\nimport { Duplex } from 'readable-stream';\n\ntype EngineStreamOptions = {\n engine: JsonRpcEngine;\n};\n\n/**\n * Takes a JsonRpcEngine and returns a Duplex stream wrapping it.\n *\n * @param opts - Options bag.\n * @param opts.engine - The JsonRpcEngine to wrap in a stream.\n * @returns The stream wrapping the engine.\n */\nexport default function createEngineStream(opts: EngineStreamOptions): Duplex {\n if (!opts?.engine) {\n throw new Error('Missing engine parameter!');\n }\n\n const { engine } = opts;\n const stream = new Duplex({ objectMode: true, read: () => undefined, write });\n // forward notifications\n if (engine.on) {\n engine.on('notification', (message) => {\n stream.push(message);\n });\n }\n return stream;\n\n /**\n * Write a JSON-RPC request to the stream.\n *\n * @param req - The JSON-rpc request.\n * @param _encoding - The stream encoding, not used.\n * @param streamWriteCallback - The stream write callback.\n */\n function write(\n req: JsonRpcRequest,\n _encoding: unknown,\n streamWriteCallback: (error?: Error | null) => void,\n ) {\n engine.handle(req, (_err, res) => {\n stream.push(res);\n });\n streamWriteCallback();\n }\n}\n"]}
|
package/dist/chunk-UL572XET.mjs
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
// src/createStreamMiddleware.ts
|
|
2
|
-
import SafeEventEmitter from "@metamask/safe-event-emitter";
|
|
3
|
-
import {
|
|
4
|
-
hasProperty
|
|
5
|
-
} from "@metamask/utils";
|
|
6
|
-
import { Duplex } from "readable-stream";
|
|
7
|
-
function createStreamMiddleware(options = {}) {
|
|
8
|
-
const idMap = {};
|
|
9
|
-
const stream = new Duplex({
|
|
10
|
-
objectMode: true,
|
|
11
|
-
read: () => void 0,
|
|
12
|
-
write: processMessage
|
|
13
|
-
});
|
|
14
|
-
const events = new SafeEventEmitter();
|
|
15
|
-
const middleware = (req, res, next, end) => {
|
|
16
|
-
idMap[req.id] = { req, res, next, end };
|
|
17
|
-
sendToStream(req);
|
|
18
|
-
};
|
|
19
|
-
return { events, middleware, stream };
|
|
20
|
-
function sendToStream(req) {
|
|
21
|
-
stream.push(req);
|
|
22
|
-
}
|
|
23
|
-
function processMessage(res, _encoding, streamWriteCallback) {
|
|
24
|
-
let errorObj = null;
|
|
25
|
-
try {
|
|
26
|
-
const isNotification = !hasProperty(res, "id");
|
|
27
|
-
if (isNotification) {
|
|
28
|
-
processNotification(res);
|
|
29
|
-
} else {
|
|
30
|
-
processResponse(res);
|
|
31
|
-
}
|
|
32
|
-
} catch (_err) {
|
|
33
|
-
errorObj = _err;
|
|
34
|
-
}
|
|
35
|
-
streamWriteCallback(errorObj);
|
|
36
|
-
}
|
|
37
|
-
function processResponse(res) {
|
|
38
|
-
const { id: responseId } = res;
|
|
39
|
-
if (responseId === null) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
const context = idMap[responseId];
|
|
43
|
-
if (!context) {
|
|
44
|
-
console.warn(`StreamMiddleware - Unknown response id "${responseId}"`);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
delete idMap[responseId];
|
|
48
|
-
Object.assign(context.res, res);
|
|
49
|
-
setTimeout(context.end);
|
|
50
|
-
}
|
|
51
|
-
function processNotification(notif) {
|
|
52
|
-
if (options?.retryOnMessage && notif.method === options.retryOnMessage) {
|
|
53
|
-
retryStuckRequests();
|
|
54
|
-
}
|
|
55
|
-
events.emit("notification", notif);
|
|
56
|
-
}
|
|
57
|
-
function retryStuckRequests() {
|
|
58
|
-
Object.values(idMap).forEach(({ req, retryCount = 0 }) => {
|
|
59
|
-
if (!req.id) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
if (retryCount >= 3) {
|
|
63
|
-
throw new Error(
|
|
64
|
-
`StreamMiddleware - Retry limit exceeded for request id "${req.id}"`
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
const idMapObject = idMap[req.id];
|
|
68
|
-
if (idMapObject) {
|
|
69
|
-
idMapObject.retryCount = retryCount + 1;
|
|
70
|
-
}
|
|
71
|
-
sendToStream(req);
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export {
|
|
77
|
-
createStreamMiddleware
|
|
78
|
-
};
|
|
79
|
-
//# sourceMappingURL=chunk-UL572XET.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/createStreamMiddleware.ts"],"sourcesContent":["import type {\n JsonRpcEngineNextCallback,\n JsonRpcEngineEndCallback,\n JsonRpcMiddleware,\n} from '@metamask/json-rpc-engine';\nimport SafeEventEmitter from '@metamask/safe-event-emitter';\nimport {\n hasProperty,\n type JsonRpcNotification,\n type JsonRpcParams,\n type JsonRpcRequest,\n type PendingJsonRpcResponse,\n} from '@metamask/utils';\nimport { Duplex } from 'readable-stream';\n\ntype IdMapValue = {\n req: JsonRpcRequest;\n res: PendingJsonRpcResponse<JsonRpcParams>;\n next: JsonRpcEngineNextCallback;\n end: JsonRpcEngineEndCallback;\n retryCount?: number;\n};\n\ntype IdMap = {\n [requestId: string]: IdMapValue;\n};\n\ntype Options = {\n retryOnMessage?: string;\n};\n\n/**\n * Creates a JsonRpcEngine middleware with an associated Duplex stream and\n * EventEmitter. The middleware, and by extension stream, assume that middleware\n * parameters are properly formatted. No runtime type checking or validation is\n * performed.\n *\n * @param options - Configuration options for middleware.\n * @returns The event emitter, middleware, and stream.\n */\nexport default function createStreamMiddleware(options: Options = {}) {\n const idMap: IdMap = {}; // TODO: replace with actual Map\n const stream = new Duplex({\n objectMode: true,\n read: () => undefined,\n write: processMessage,\n });\n\n const events = new SafeEventEmitter();\n\n const middleware: JsonRpcMiddleware<JsonRpcParams, JsonRpcParams> = (\n req,\n res,\n next,\n end,\n ) => {\n // register request on id map *before* sending it to the stream, to avoid race issues\n idMap[req.id as unknown as string] = { req, res, next, end };\n // write req to stream\n sendToStream(req);\n };\n\n return { events, middleware, stream };\n\n /**\n * Forwards JSON-RPC request to the stream.\n *\n * @param req - The JSON-RPC request object.\n */\n function sendToStream(req: JsonRpcRequest) {\n // TODO: limiting retries could be implemented here\n stream.push(req);\n }\n\n /**\n * Writes a JSON-RPC object to the stream.\n *\n * @param res - The JSON-RPC response object.\n * @param _encoding - The stream encoding, not used.\n * @param streamWriteCallback - The stream write callback.\n */\n function processMessage(\n res: PendingJsonRpcResponse<JsonRpcParams>,\n _encoding: unknown,\n streamWriteCallback: (error?: Error | null) => void,\n ) {\n let errorObj: Error | null = null;\n try {\n const isNotification = !hasProperty(res, 'id');\n if (isNotification) {\n processNotification(res as unknown as JsonRpcNotification);\n } else {\n processResponse(res);\n }\n } catch (_err) {\n errorObj = _err as Error;\n }\n // continue processing stream\n streamWriteCallback(errorObj);\n }\n\n /**\n * Processes a JSON-RPC response.\n *\n * @param res - The response to process.\n */\n function processResponse(res: PendingJsonRpcResponse<JsonRpcParams>) {\n const { id: responseId } = res;\n if (responseId === null) {\n return;\n }\n\n const context = idMap[responseId];\n if (!context) {\n console.warn(`StreamMiddleware - Unknown response id \"${responseId}\"`);\n return;\n }\n\n delete idMap[responseId];\n // copy whole res onto original res\n Object.assign(context.res, res);\n // run callback on empty stack,\n // prevent internal stream-handler from catching errors\n // TODO: remove eslint-disable once issue #1989 is resolved.\n // eslint-disable-next-line @typescript-eslint/no-implied-eval\n setTimeout(context.end);\n }\n\n /**\n * Processes a JSON-RPC notification.\n *\n * @param notif - The notification to process.\n */\n function processNotification(notif: JsonRpcNotification) {\n if (options?.retryOnMessage && notif.method === options.retryOnMessage) {\n retryStuckRequests();\n }\n events.emit('notification', notif);\n }\n\n /**\n * Retry pending requests.\n */\n function retryStuckRequests() {\n Object.values(idMap).forEach(({ req, retryCount = 0 }) => {\n // Avoid retrying requests without an id - they cannot have matching responses so retry logic doesn't apply\n // Check for retry count below ensure that a request is not retried more than 3 times\n if (!req.id) {\n return;\n }\n\n if (retryCount >= 3) {\n throw new Error(\n `StreamMiddleware - Retry limit exceeded for request id \"${req.id}\"`,\n );\n }\n const idMapObject = idMap[req.id];\n if (idMapObject) {\n idMapObject.retryCount = retryCount + 1;\n }\n sendToStream(req);\n });\n }\n}\n"],"mappings":";AAKA,OAAO,sBAAsB;AAC7B;AAAA,EACE;AAAA,OAKK;AACP,SAAS,cAAc;AA2BR,SAAR,uBAAwC,UAAmB,CAAC,GAAG;AACpE,QAAM,QAAe,CAAC;AACtB,QAAM,SAAS,IAAI,OAAO;AAAA,IACxB,YAAY;AAAA,IACZ,MAAM,MAAM;AAAA,IACZ,OAAO;AAAA,EACT,CAAC;AAED,QAAM,SAAS,IAAI,iBAAiB;AAEpC,QAAM,aAA8D,CAClE,KACA,KACA,MACA,QACG;AAEH,UAAM,IAAI,EAAuB,IAAI,EAAE,KAAK,KAAK,MAAM,IAAI;AAE3D,iBAAa,GAAG;AAAA,EAClB;AAEA,SAAO,EAAE,QAAQ,YAAY,OAAO;AAOpC,WAAS,aAAa,KAAqB;AAEzC,WAAO,KAAK,GAAG;AAAA,EACjB;AASA,WAAS,eACP,KACA,WACA,qBACA;AACA,QAAI,WAAyB;AAC7B,QAAI;AACF,YAAM,iBAAiB,CAAC,YAAY,KAAK,IAAI;AAC7C,UAAI,gBAAgB;AAClB,4BAAoB,GAAqC;AAAA,MAC3D,OAAO;AACL,wBAAgB,GAAG;AAAA,MACrB;AAAA,IACF,SAAS,MAAM;AACb,iBAAW;AAAA,IACb;AAEA,wBAAoB,QAAQ;AAAA,EAC9B;AAOA,WAAS,gBAAgB,KAA4C;AACnE,UAAM,EAAE,IAAI,WAAW,IAAI;AAC3B,QAAI,eAAe,MAAM;AACvB;AAAA,IACF;AAEA,UAAM,UAAU,MAAM,UAAU;AAChC,QAAI,CAAC,SAAS;AACZ,cAAQ,KAAK,2CAA2C,UAAU,GAAG;AACrE;AAAA,IACF;AAEA,WAAO,MAAM,UAAU;AAEvB,WAAO,OAAO,QAAQ,KAAK,GAAG;AAK9B,eAAW,QAAQ,GAAG;AAAA,EACxB;AAOA,WAAS,oBAAoB,OAA4B;AACvD,QAAI,SAAS,kBAAkB,MAAM,WAAW,QAAQ,gBAAgB;AACtE,yBAAmB;AAAA,IACrB;AACA,WAAO,KAAK,gBAAgB,KAAK;AAAA,EACnC;AAKA,WAAS,qBAAqB;AAC5B,WAAO,OAAO,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,aAAa,EAAE,MAAM;AAGxD,UAAI,CAAC,IAAI,IAAI;AACX;AAAA,MACF;AAEA,UAAI,cAAc,GAAG;AACnB,cAAM,IAAI;AAAA,UACR,2DAA2D,IAAI,EAAE;AAAA,QACnE;AAAA,MACF;AACA,YAAM,cAAc,MAAM,IAAI,EAAE;AAChC,UAAI,aAAa;AACf,oBAAY,aAAa,aAAa;AAAA,MACxC;AACA,mBAAa,GAAG;AAAA,IAClB,CAAC;AAAA,EACH;AACF;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":""}
|
package/dist/index.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
-
|
|
3
|
-
var _chunkIDTAZSDCjs = require('./chunk-IDTAZSDC.js');
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var _chunkCUV6EOT3js = require('./chunk-CUV6EOT3.js');
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
exports.createEngineStream = _chunkIDTAZSDCjs.createEngineStream; exports.createStreamMiddleware = _chunkCUV6EOT3js.createStreamMiddleware;
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../types/eth-ens-namehash.d.ts","../../../types/ethereum-ens-network-map.d.ts","../../../types/ethjs-query.d.ts","../../../types/global.d.ts","../../../types/single-call-balance-checker-abi.d.ts","../../../types/@metamask/contract-metadata.d.ts","../../../types/@metamask/eth-hd-keyring.d.ts","../../../types/@metamask/eth-simple-keyring.d.ts","../../../types/@metamask/ethjs-provider-http.d.ts","../../../types/@metamask/ethjs-unit.d.ts","../../../types/@metamask/metamask-eth-abis.d.ts","../../../types/eth-json-rpc-infura/src/createProvider.d.ts","../../../types/eth-phishing-detect/src/config.json.d.ts","../../../types/eth-phishing-detect/src/detector.d.ts","../../../node_modules/@metamask/superstruct/dist/error.d.cts","../../../node_modules/@metamask/superstruct/dist/utils.d.cts","../../../node_modules/@metamask/superstruct/dist/struct.d.cts","../../../node_modules/@metamask/superstruct/dist/structs/coercions.d.cts","../../../node_modules/@metamask/superstruct/dist/structs/refinements.d.cts","../../../node_modules/@metamask/superstruct/dist/structs/types.d.cts","../../../node_modules/@metamask/superstruct/dist/structs/utilities.d.cts","../../../node_modules/@metamask/superstruct/dist/index.d.cts","../../../node_modules/@metamask/utils/dist/assert.d.cts","../../../node_modules/@metamask/utils/dist/base64.d.cts","../../../node_modules/@metamask/utils/dist/hex.d.cts","../../../node_modules/@metamask/utils/dist/bytes.d.cts","../../../node_modules/@metamask/utils/dist/caip-types.d.cts","../../../node_modules/@metamask/utils/dist/checksum.d.cts","../../../node_modules/@metamask/utils/dist/coercers.d.cts","../../../node_modules/@metamask/utils/dist/collections.d.cts","../../../node_modules/@metamask/utils/dist/encryption-types.d.cts","../../../node_modules/@metamask/utils/dist/errors.d.cts","../../../node_modules/@metamask/utils/dist/json.d.cts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@ethereumjs/common/dist/enums.d.ts","../../../node_modules/@ethereumjs/common/dist/types.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@ethereumjs/util/dist/constants.d.ts","../../../node_modules/@ethereumjs/util/dist/units.d.ts","../../../node_modules/@ethereumjs/util/dist/address.d.ts","../../../node_modules/@ethereumjs/util/dist/bytes.d.ts","../../../node_modules/@ethereumjs/util/dist/types.d.ts","../../../node_modules/@ethereumjs/util/dist/account.d.ts","../../../node_modules/@ethereumjs/util/dist/withdrawal.d.ts","../../../node_modules/@ethereumjs/util/dist/signature.d.ts","../../../node_modules/@ethereumjs/util/dist/encoding.d.ts","../../../node_modules/@ethereumjs/util/dist/asyncEventEmitter.d.ts","../../../node_modules/@ethereumjs/util/dist/internal.d.ts","../../../node_modules/@ethereumjs/util/dist/lock.d.ts","../../../node_modules/@ethereumjs/util/dist/provider.d.ts","../../../node_modules/@ethereumjs/util/dist/index.d.ts","../../../node_modules/@ethereumjs/common/dist/common.d.ts","../../../node_modules/@ethereumjs/common/dist/utils.d.ts","../../../node_modules/@ethereumjs/common/dist/index.d.ts","../../../node_modules/@ethereumjs/tx/dist/eip2930Transaction.d.ts","../../../node_modules/@ethereumjs/tx/dist/legacyTransaction.d.ts","../../../node_modules/@ethereumjs/tx/dist/types.d.ts","../../../node_modules/@ethereumjs/tx/dist/baseTransaction.d.ts","../../../node_modules/@ethereumjs/tx/dist/eip1559Transaction.d.ts","../../../node_modules/@ethereumjs/tx/dist/transactionFactory.d.ts","../../../node_modules/@ethereumjs/tx/dist/index.d.ts","../../../node_modules/@metamask/utils/dist/keyring.d.cts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../../node_modules/@metamask/utils/dist/logging.d.cts","../../../node_modules/@metamask/utils/dist/misc.d.cts","../../../node_modules/@metamask/utils/dist/number.d.cts","../../../node_modules/@metamask/utils/dist/opaque.d.cts","../../../node_modules/@metamask/utils/dist/promise.d.cts","../../../node_modules/@metamask/utils/dist/time.d.cts","../../../node_modules/@metamask/utils/dist/transaction-types.d.cts","../../../node_modules/@metamask/utils/dist/versions.d.cts","../../../node_modules/@metamask/utils/dist/index.d.cts","../../../node_modules/@metamask/safe-event-emitter/dist/cjs/index.d.ts","../../json-rpc-engine/dist/types/JsonRpcEngine.d.ts","../../json-rpc-engine/dist/types/createAsyncMiddleware.d.ts","../../json-rpc-engine/dist/types/createScaffoldMiddleware.d.ts","../../json-rpc-engine/dist/types/getUniqueId.d.ts","../../json-rpc-engine/dist/types/idRemapMiddleware.d.ts","../../json-rpc-engine/dist/types/mergeMiddleware.d.ts","../../json-rpc-engine/dist/types/index.d.ts","../../../node_modules/@types/readable-stream/node_modules/safe-buffer/index.d.ts","../../../node_modules/@types/readable-stream/index.d.ts","../src/createEngineStream.ts","../src/createStreamMiddleware.ts","../src/index.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/bn.js/index.d.ts","../../../node_modules/@types/deep-freeze-strict/index.d.ts","../../../node_modules/@types/eslint/helpers.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/eslint/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/chalk/index.d.ts","../../../node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../node_modules/pretty-format/build/types.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/types.d.ts","../../../node_modules/jest-diff/build/diffLines.d.ts","../../../node_modules/jest-diff/build/printDiffs.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/jest-when/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/pbkdf2/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/punycode/index.d.ts","../../../node_modules/@types/secp256k1/index.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/sinonjs__fake-timers/index.d.ts","../../../node_modules/@types/sinon/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/uuid/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true,"impliedFormat":1},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true,"impliedFormat":1},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true,"impliedFormat":1},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true,"impliedFormat":1},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true,"impliedFormat":1},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true,"impliedFormat":1},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true,"impliedFormat":1},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true,"impliedFormat":1},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true,"impliedFormat":1},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true,"impliedFormat":1},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"70bbfaec021ac4a0c805374225b55d70887f987df8b8dd7711d79464bb7b4385","impliedFormat":1},{"version":"869089d60b67219f63e6aca810284c89bae1b384b5cbc7ce64e53d82ad223ed5","impliedFormat":1},{"version":"fe8f00e1ffe6c8069f2568844debb342a661980c30e52b132f002b93f66de47e","impliedFormat":1},{"version":"f31113ac9492fdd6e78bf6151b338c92e5b1837be426ef4aa0648ce82d13b518","affectsGlobalScope":true,"impliedFormat":1},{"version":"62a0875a0397b35a2364f1d401c0ce17975dfa4d47bf6844de858ae04da349f9","impliedFormat":1},{"version":"ee7491d0318d1fafcba97d5b72b450eb52671570f7a4ecd9e8898d40eaae9472","impliedFormat":1},{"version":"e3e7d217d89b380c1f34395eadc9289542851b0f0a64007dfe1fb7cf7423d24e","impliedFormat":1},{"version":"fd79909e93b4d50fd0ed9f3d39ddf8ba0653290bac25c295aac49f6befbd081b","impliedFormat":1},{"version":"345a9cc2945406f53051cd0e9b51f82e1e53929848eab046fdda91ee8aa7da31","impliedFormat":1},{"version":"9debe2de883da37a914e5e784a7be54c201b8f1d783822ad6f443ff409a5ea21","impliedFormat":1},{"version":"dee5d5c5440cda1f3668f11809a5503c30db0476ad117dd450f7ba5a45300e8f","impliedFormat":1},{"version":"f5e396c1424c391078c866d6f84afe0b4d2f7f85a160b9c756cd63b5b1775d93","impliedFormat":1},{"version":"5caa6f4fff16066d377d4e254f6c34c16540da3809cd66cd626a303bc33c419f","impliedFormat":1},{"version":"730d055528bdf12c8524870bb33d237991be9084c57634e56e5d8075f6605e02","impliedFormat":1},{"version":"c26b7050e19f8f555605db02f6cfae645ec7928d2dd6f428790e01a163795f97","impliedFormat":1},{"version":"df877ab086035627f1d36150d33204d3d7d097b67a41b8d31f621afd32b618ba","impliedFormat":1},{"version":"30a340292b28c797f55fe80ccab953d6ff310165a5c871717a0ff7ba474b05c6","impliedFormat":1},{"version":"d2e0607a2ea008ec9f4cf46954e8e21c94bd42373bdb780ed8f27d8deab90907","impliedFormat":1},{"version":"8a6e0aeb87d2ec01563a82b20f98e0a740d81d8e600286fb378b39c1cf0905b4","impliedFormat":1},{"version":"d645973bd03c1b0b0d2817ffcfc6346c7e6ce94df7cf6a46087d27a347eb6f73","impliedFormat":1},{"version":"17ae0674c777ae1c8f912c247b0195604494b417d8da457ac6dfec8907a180c1","impliedFormat":1},{"version":"4cb8668d4cdad969d15718ffed6a75a68ffa026b3d4208a37a5842dc3f8aee9f","impliedFormat":1},{"version":"8e775a861341ec44847ac043ab2b60edc18dafc6b895acbb5f5628b465c61f62","impliedFormat":1},{"version":"69896bb78fcf1307b0f592839c8f1a7f6977bc4d55ec1fb2db046c8c7c0c25ae","impliedFormat":1},{"version":"c8ef51808d56e538840e26043483eab15df31026cf2b3fd47a279b0eec01fa69","impliedFormat":1},{"version":"11f688c9704ffff4c6dd7b9892d379b5f36f4e7408833168fe491181e5e049fe","impliedFormat":1},{"version":"05f81de0826c2631a7fce8bdbce6a79773ab397a122670c19564c8246b43a45a","impliedFormat":1},{"version":"70dbd132cafd25ff48f589e4adc467eefe258f640a651b3846fe9218e0ee2fe3","impliedFormat":1},{"version":"457b8e22ca4672e962ec7b55ab0cc5d68cfcdd8cf4ffba250df9e6c1eb0540a5","impliedFormat":1},{"version":"30e81e0d15a6cca02397e1aa517166e03ce0a28f0e6d53e25440ef22b31f64ab","impliedFormat":1},{"version":"d85503a3b889c475f2a56348c44d7c2aba42e5a7587fa06bbc46ccdd4258bd94","impliedFormat":1},{"version":"3442bd24d7d746b3a79f2bc44d8456f58ea4d841dbf6eced8c41607e980287c0","impliedFormat":1},{"version":"57540a291cb6fbd3b75616d3db9cf2b27a5f6b96733774ccac542432b86b8daa","impliedFormat":1},{"version":"3e0d35597ff6c5142082e60814fa39c8a2077a58d8a6a262e619afb5f855f6ba","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"056097110efd16869ec118cedb44ecbac9a019576eee808d61304ca6d5cb2cbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"f51b4042a3ac86f1f707500a9768f88d0b0c1fc3f3e45a73333283dea720cdc6","impliedFormat":1},{"version":"4e77922a2627fe9a0cc6c96adddc7cc5b3c0666b2581b812582380714cd4492a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3dca3e952c8df3d5f78c55e53b6bb735bebf323ec6bae656c503e892cd4eb78d","impliedFormat":1},{"version":"661a11d16ad2e3543a77c53bcd4017ee9a450f47ab7def3ab493a86eae4d550c","impliedFormat":1},{"version":"8cdc646cec7819581ef343b83855b1bfe4fe674f2c84f4fb8dc90d82fb56bd3a","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"a847ac812e3f49e72601b1462faa1f80984b3e606190f548f4dfe9f0c8ef35cf","impliedFormat":1},{"version":"6c39d4dbdb372b364442854e42d8c473e2ec67badb226745af17ed5ac41ce6f5","impliedFormat":1},{"version":"7693b90b3075deaccafd5efb467bf9f2b747a3075be888652ef73e64396d8628","impliedFormat":1},{"version":"1bcc1e650cb04a29b65ef9227290792476ea416b5c342ce025417727618ecf6f","impliedFormat":1},{"version":"988b518a683e0203d1a4aa56dce733814299e0869d87da5899b098baa08fb40f","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4a3399b36463f19d8b5654caee162eb9def18c1ba3f735ba3c06413ab0b72a5","impliedFormat":1},{"version":"f7f13beb30daef3fabb51734f79aa39a876569b528364871ef91a5e01b9733d2","affectsGlobalScope":true,"impliedFormat":1},{"version":"171d02c5040b15102025d9e6357cc884e36c232a7e491c6be6259d85e9ac8437","impliedFormat":1},{"version":"addacad25729b8ba7c3f8cdd74a3afa191dbdd46e4efcc7b7db2ec4f8f0b9f71","impliedFormat":1},{"version":"aaa36a3ede6e754b88ad45ac785de8563f1808937e4a133f13fe36e22dac0593","impliedFormat":1},{"version":"bb6d313b87960df2630a8dd9119751723e3600038e5ca123ccaf9a15f47e9eaa","impliedFormat":1},{"version":"7e4217814fc7349400fa44f24d53f0932b6b0b70b21ea9024225f634afa998a1","impliedFormat":1},{"version":"43ec77c369473e92e2ecebf0554a0fdaa9c256644a6070f28228dfcceec77351","impliedFormat":1},{"version":"2dc06aeb1e2a47b03dfbe68952956fc9b82afed9a921424f91b9ba00e1d3205a","affectsGlobalScope":true,"impliedFormat":1},{"version":"d2388edcfda2b2f9a9762b196387b95e0b688f6c3e21ff8a86c6a7518f8ce0a8","impliedFormat":1},{"version":"4be60abb12ee8573738f06e47e3fe99436669d4b3546f0ae7a9a59b93fba3951","impliedFormat":1},{"version":"dd67d2b5e4e8a182a38de8e69fb736945eaa4588e0909c14e01a14bd3cc1fd1e","impliedFormat":1},{"version":"c161a5c9072c8807a3369d940ab0b9d2d98ed406c080afa6063ebc7ee20eb44d","affectsGlobalScope":true,"impliedFormat":1},{"version":"0d09f4b48899d342b5d6cd846f95f969a401933b0dcd375a8a7e45832328bb86","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc6ef5733d4ea6d2e06310a32dffd2c16418b467c5033d49cecc4f3a25de7497","impliedFormat":1},{"version":"94768454c3348b6ebe48e45fbad8c92e2bb7af4a35243edbe2b90823d0bd7f9a","impliedFormat":1},{"version":"0be79b3ff0f16b6c2f9bc8c4cc7097ea417d8d67f8267f7e1eec8e32b548c2ff","impliedFormat":1},{"version":"88e485c93a1443952cb336167d49b82c33f6c0ca598608c943dc44f724f13e72","impliedFormat":1},{"version":"1ad9ae9e496d80dfb5cd49c7958aca4d48647599f2599d2ca1c67a72c23c7899","impliedFormat":1},{"version":"269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","impliedFormat":1},{"version":"6e191fea1db6e9e4fa828259cf489e820ec9170effff57fb081a2f3295db4722","impliedFormat":1},{"version":"aed943465fbce1efe49ee16b5ea409050f15cd8eaf116f6fadb64ef0772e7d95","impliedFormat":1},{"version":"70d08483a67bf7050dbedace398ef3fee9f436fcd60517c97c4c1e22e3c6f3e8","impliedFormat":1},{"version":"f71188f97c9f7d309798ec02a56dd3bf50a4e4d079b3480f275ac13719953898","impliedFormat":1},{"version":"e933de8143e1d12dd51d89b398760fd5a9081896be366dad88a922d0b29f3c69","affectsGlobalScope":true,"impliedFormat":1},{"version":"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","impliedFormat":1},{"version":"c92436ab2b0f306458fefa7121f81edd53c9b4bb3bb92d8b1cf6c9a2355e944b","impliedFormat":1},{"version":"8e1f7c597c91a204847ea79b8f225ebe2e817278959b41afaabc5a297dfe802b","impliedFormat":1},{"version":"875c46cfd441e361416221859dc40617936fbbbe77c4b842b66b6a1fd74f2368","impliedFormat":1},{"version":"a05e2d784c9be7051c4ac87a407c66d2106e23490c18c038bbd0712bde7602fd","affectsGlobalScope":true,"impliedFormat":1},{"version":"9f045c02a95c50d245e35aae2c070ac0a804f13c7a810f49f4b296361da133a7","affectsGlobalScope":true,"impliedFormat":1},{"version":"cf434b5c04792f62d6f4bdd5e2c8673f36e638e910333c172614d5def9b17f98","impliedFormat":1},{"version":"1d65d4798df9c2df008884035c41d3e67731f29db5ecb64cd7378797c7c53a2f","impliedFormat":1},{"version":"0faee6b555890a1cb106e2adc5d3ffd89545b1da894d474e9d436596d654998f","impliedFormat":1},{"version":"129f54f0e0b0dbf88d6578d627c54bd8599ecbdd9743b6788320d26e49fc5485","impliedFormat":1},{"version":"867f95abf1df444aab146b19847391fc2f922a55f6a970a27ed8226766cee29f","impliedFormat":1},{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b0297b09e607bec9698cac7cf55463d6731406efb1161ee4d448293b47397c84","impliedFormat":1},{"version":"f9623ef5cecfa8ae05c1a3bb8cf81c0c723ec124e46f71e3104ef665fe74ad10","impliedFormat":1},{"version":"809a57de65ca328f47f4639ba1a8a4348af2c9f91a060e77bdd3dd92dd71b492","impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"016990463a717488f46aeba06125b987d0d7c77dc09d27d47ea2760f1af7f4da","impliedFormat":1},{"version":"692c448209a6699a345b5318ae2fc0612ee95c52812f0abf81dc902260ce572f","impliedFormat":1},{"version":"6ba92d2209defae5551c58f024665ad2fd965f03dd80e17b1bb1cee57ebd706a","impliedFormat":1},{"version":"d50fc26add4a7d835a29482544e4605558f3706fe14e191b1009ce70f76dadf0","impliedFormat":1},{"version":"39eb436d0226a590cc35f84b7bffae0fd613e2c4c83124be83969726df8cf269","impliedFormat":1},{"version":"e7dbb1423e552557b09a125be1c6772c94c169677146e3eaee95e6d1fc6851c8","impliedFormat":1},{"version":"aa184f01f3f0b540bddf441dc658bd472a59d519da188a2f048acb365e8ca77a","impliedFormat":1},{"version":"49798c9e2d9624bbc01cdf8371171b64a4eead49fef2853b69fe1bc2e7c75207","impliedFormat":1},{"version":"c7fb2b8c48f3a20faad1673b23366f24992afaf7d3854190e51d72e0dcad5bc8","impliedFormat":1},{"version":"c0a48e69d2a824fcf1fdd6ec59604e280c56998ac7a7e3a8514823db1de68cdd","impliedFormat":1},{"version":"4e78c87355f7e4fd9524d7582a14bf72771aeee33acb73a848de8bf2e44d8831","impliedFormat":1},{"version":"ff00f23ec0c6c986df2778657ef18073548634b31757bd496902cd00c183ae96","impliedFormat":1},{"version":"6c3351c0361b6fa16a3379508e2c4114cba7ad6d6bfcc0d5b2fb9f02aa2f83c4","impliedFormat":1},{"version":"69071e42231f3b87f71b076904875bdef914f01c3017eb6a39a33694e437b5e0","impliedFormat":1},{"version":"dee490d4ee8b309fcba02b3c49ab263b4a40946c1cd29e7b12e08b48c70cd9a2","impliedFormat":1},{"version":"7ddda341b1ad729e8da34de6378d9d1b3f64a7bef3a4a8fcdf4261c9a9c68ccb","impliedFormat":1},{"version":"174f185e6b6399ea73366bff1e454c5e54bef9b0804a57bef7f5009d1f21b9ad","impliedFormat":1},{"version":"e0d39ecd8a0627a45b9fece85425d5d048e2d0cf23d4c444d9594147605ca4bf","impliedFormat":1},{"version":"10b3b799f9675ebe2785104b5ac69a898accc5d32f86cda152fa646a2c3cdfc2","impliedFormat":1},{"version":"41ca098760de99ca2cc5de79e73e0b837e2661767e5772a983bc535ba4d86690","impliedFormat":1},{"version":"f78570ffe02941be6f7ad1b8a54642a1d6069d16cdbbb75bfe1cdf81610f0c69","impliedFormat":1},{"version":"c0a90b05dc7d2a78b2f90c9e2b1d464887ee23a71799acba659b0359785d07de","impliedFormat":1},{"version":"0557cef4f85111361244bad1e684ce9cadb326e582f78ad70d31c93ddb0d99f3","impliedFormat":1},{"version":"bf5413a1e4c9a2127b83ff92b52f9b3f344f91841ffb95a8a78eec6059730caf","impliedFormat":1},{"version":"c7d64c42ea284a34e9aa757537f7a37d79b07a04d409b1bea51f5a8ddda45e25","impliedFormat":1},{"version":"68cc8d6fcc2f270d7108f02f3ebc59480a54615be3e09a47e14527f349e9d53e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"04e90044c2e8fd4b0938a4d3f9d8e1efee7fd77ced068e4e6f0eea1102735e40","impliedFormat":1},{"version":"4ff91243ea4afd0a59dfe0704d069bcb4e23b413ba821667669102fe3ca78c78","impliedFormat":1},{"version":"b16327ee01357bc4b698d8d464e0050585d17357420f2b4d184c96abf6373990","impliedFormat":1},{"version":"e247271d2e5f60a37056511587b7c3df27f9abcf0a5ea95ed8cee786cef48478","impliedFormat":1},{"version":"01dfb59624113bd88e1059623cecd7943c845b09c4394acea0aa439786d13edb","impliedFormat":1},{"version":"fe81fb714ee64eb7219b1cabad2fcad57bbd38f9474a583d718c8eb82b6241e0","impliedFormat":1},{"version":"9bdfb026298a0a75c054478fdd19b0de4b1bf7dfbfff84781b0f1da25d81c6b4","impliedFormat":1},{"version":"3c332d20a736ef5b8e760ac9100f4fdd0022534d51e4f0f29d40eea9c15ecd86","impliedFormat":1},{"version":"6c1a41c6039219da236aba5ca487585e9e98958c885023f1d39c066b48949734","impliedFormat":1},{"version":"fcc8beef29f39f09b1d9c9f99c42f9fed605ab1c28d2a630185f732b9ba53763","impliedFormat":1},{"version":"edd82680fc06857c9c68cbf2a51dac1e564abf6e76ec4e38b988d04d0ff51edb","impliedFormat":1},{"version":"157215532390e57958b0de473e7c7b9ca83d1c9b2fc4f81f6fba0fc90e48e142","impliedFormat":1},{"version":"3361c55fe7cdff8fa385bd78d5f352a2ac6a688f156d499b14285fba112372df","impliedFormat":1},{"version":"b61f393bdbf923344adb8a683889a65fc615cc2b12565778c5605aa8fd6b607b","impliedFormat":1},{"version":"596def1ac1ab5af6f6d86d30c0e4cdea6c4b11d6595b2fb0849ab70fee65961f","impliedFormat":1},{"version":"f9b859fb0396522c5c978fd57d7381c47fee6f066f75c32b06472ecf44a38890","impliedFormat":1},{"version":"8580e68e36581bd1acf4fd64b617a6545e7a37fdf29a5b26cf94e8f5f06aa931","impliedFormat":1},{"version":"5e379df3d61561c2ed7789b5995b9ba2143bbba21a905e2381e16efe7d1fa424","impliedFormat":1},{"version":"f07a137bbe2de7a122c37bfea00e761975fb264c49f18003d398d71b3fb35a5f","impliedFormat":1},{"version":"3b42296d0cf9ddcfa8aaa5ddf4265d3eaaffb181135c838aad888f88200910e5","signature":"c79247cc26606aef856181713acb941ae465e2db732e892cc947f41a722713ae","impliedFormat":1},{"version":"092e0dad2875834475ac91d712d5fe308b4839734a5cb36890d61c890105e292","signature":"5e12ed8df21afacc46b1ecc0c849fafc80f4592cf7710e6ab2a6301e5b534fc1","impliedFormat":1},{"version":"71e1fa3826f77593ee75b955aa379894b194a506749bf8136d6024cdbbe08ba5","signature":"74707f63e6702f584096b3d9950f89ede5eba68120c2c3ada099e3b0eb6b0a18","impliedFormat":1},{"version":"e74998d5cefc2f29d583c10b99c1478fb810f1e46fbb06535bfb0bbba3c84aa5","impliedFormat":1},{"version":"2c8e55457aaf4902941dfdba4061935922e8ee6e120539c9801cd7b400fae050","impliedFormat":1},{"version":"43d058146b002d075f5d0033a6870321048297f1658eb0db559ba028383803a6","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"9e0cf651e8e2c5b9bebbabdff2f7c6f8cedd91b1d9afcc0a854cdff053a88f1b","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"8aceb205dcc6f814ad99635baf1e40b6e01d06d3fe27b72fd766c6d0b8c0c600","impliedFormat":1},{"version":"8c95f96ccd4be0674944077aec1e4f2cccd515ca06d4327562dd017250e7d3fc","impliedFormat":1},{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true,"impliedFormat":1},{"version":"ee7d8894904b465b072be0d2e4b45cf6b887cdba16a467645c4e200982ece7ea","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"dd0c1b380ba3437adedef134b2e48869449b1db0b07b2a229069309ce7b9dd39","impliedFormat":1},{"version":"afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","impliedFormat":1},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","impliedFormat":1},{"version":"462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","impliedFormat":1},{"version":"5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","impliedFormat":1},{"version":"7adecb2c3238794c378d336a8182d4c3dd2c4fa6fa1785e2797a3db550edea62","impliedFormat":1},{"version":"dc12dc0e5aa06f4e1a7692149b78f89116af823b9e1f1e4eae140cd3e0e674e6","impliedFormat":1},{"version":"1bfc6565b90c8771615cd8cfcf9b36efc0275e5e83ac7d9181307e96eb495161","impliedFormat":1},{"version":"8a8a96898906f065f296665e411f51010b51372fa260d5373bf9f64356703190","impliedFormat":1},{"version":"7f82ef88bdb67d9a850dd1c7cd2d690f33e0f0acd208e3c9eba086f3670d4f73","impliedFormat":1},{"version":"ccfd8774cd9b929f63ff7dcf657977eb0652e3547f1fcac1b3a1dc5db22d4d58","affectsGlobalScope":true,"impliedFormat":1},{"version":"d92dc90fecd2552db74d8dc3c6fb4db9145b2aa0efe2c127236ba035969068d4","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"ff81bffa4ecfceae2e86b5920c3fcb250b66b1d6ed72944dffdf58123be2481b","impliedFormat":1},{"version":"458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","impliedFormat":1},{"version":"da2b6356b84a40111aaecb18304ea4e4fcb43d70efb1c13ca7d7a906445ee0d3","impliedFormat":1},{"version":"187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","impliedFormat":1},{"version":"aa2c18a1b5a086bbcaae10a4efba409cc95ba7287d8cf8f2591b53704fea3dea","impliedFormat":1},{"version":"6f294731b495c65ecf46a5694f0082954b961cf05463bea823f8014098eaffa0","impliedFormat":1},{"version":"0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","impliedFormat":1},{"version":"00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","impliedFormat":1},{"version":"bdf0ed7d9ebae6175a5d1b4ec4065d07f8099379370a804b1faff05004dc387d","impliedFormat":1},{"version":"3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","impliedFormat":1},{"version":"b03afe4bec768ae333582915146f48b161e567a81b5ebc31c4d78af089770ac9","impliedFormat":1},{"version":"df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","impliedFormat":1},{"version":"4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","impliedFormat":1},{"version":"8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","impliedFormat":1},{"version":"916be7d770b0ae0406be9486ac12eb9825f21514961dd050594c4b250617d5a8","impliedFormat":1},{"version":"254d9fb8c872d73d34594be8a200fd7311dbfa10a4116bfc465fba408052f2b3","impliedFormat":1},{"version":"d88a5e779faf033be3d52142a04fbe1cb96009868e3bbdd296b2bc6c59e06c0e","impliedFormat":1},{"version":"2ccea88888048bbfcacbc9531a5596ea48a3e7dcd0a25f531a81bb717903ba4f","impliedFormat":1},{"version":"d8f7109e14f20eb735225a62fd3f8366da1a8349e90331cdad57f4b04caf6c5a","impliedFormat":1},{"version":"cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","impliedFormat":1},{"version":"cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"7d8ddf0f021c53099e34ee831a06c394d50371816caa98684812f089b4c6b3d4","impliedFormat":1},{"version":"7d2a0ba1297be385a89b5515b88cd31b4a1eeef5236f710166dc1b36b1741e1b","impliedFormat":1},{"version":"9d92b037978bb9525bc4b673ebddd443277542e010c0aef019c03a170ccdaa73","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"fab58e600970e66547644a44bc9918e3223aa2cbd9e8763cec004b2cfb48827e","impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"ae271d475b632ce7b03fea6d9cf6da72439e57a109672671cbc79f54e1386938","impliedFormat":1}],"root":[[46,59],[181,183]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"inlineSources":true,"module":100,"outDir":"./types","rootDir":"../src","sourceMap":true,"strict":true,"target":7},"fileIdsList":[[184],[95,131,132,133,148],[132,133,149,150],[131,132],[131,148,151,154],[131,151,154,155],[152,153,154,156,157],[131,154],[131,148,151,152,153,156],[131,139],[131],[95,131],[83,131],[135,136,137,138,139,140,141,142,143,144,145,146,147],[131,137,138],[131,137,139],[60,61,62,63,64,65,66],[60,61],[62],[61,62],[60,62],[67],[70],[67,70],[68,69,70,71,72,73,74,75,76,77,78,159,162,163,164,165,166,167,168,169],[67,68],[70,76,78,158],[161],[70,71],[67,165],[184,185,186,187,188],[184,186],[160],[192,193,194],[96,131],[197],[198],[209],[203,208],[212,214,215,216,217,218,219,220,221,222,223,224],[212,213,215,216,217,218,219,220,221,222,223,224],[213,214,215,216,217,218,219,220,221,222,223,224],[212,213,214,216,217,218,219,220,221,222,223,224],[212,213,214,215,217,218,219,220,221,222,223,224],[212,213,214,215,216,218,219,220,221,222,223,224],[212,213,214,215,216,217,219,220,221,222,223,224],[212,213,214,215,216,217,218,220,221,222,223,224],[212,213,214,215,216,217,218,219,221,222,223,224],[212,213,214,215,216,217,218,219,220,222,223,224],[212,213,214,215,216,217,218,219,220,221,223,224],[212,213,214,215,216,217,218,219,220,221,222,224],[212,213,214,215,216,217,218,219,220,221,222,223],[79],[82],[83,88,115],[84,95,96,103,112,123],[84,85,95,103],[86,124],[87,88,96,104],[88,112,120],[89,91,95,103],[90],[91,92],[95],[94,95],[82,95],[95,96,97,112,123],[95,96,97,112],[95,98,103,112,123],[95,96,98,99,103,112,120,123],[98,100,112,120,123],[79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130],[95,101],[102,123,128],[91,95,103,112],[104],[105],[82,106],[107,122,128],[108],[109],[95,110],[110,111,124,126],[83,95,112,113,114],[83,112,114],[112,113],[115],[116],[95,118,119],[118,119],[88,103,112,120],[121],[103,122],[83,98,109,123],[88,124],[112,125],[126],[127],[83,88,95,97,106,112,123,126,128],[112,129],[131,179],[231,270],[231,255,270],[270],[231],[231,256,270],[231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269],[256,270],[271],[275],[201,204],[201,204,205,206],[203],[200,207],[202],[170,171],[170,172],[172,173,174,175,176,177],[170,178,180],[170,171,178,180],[181,182],[178,180]],"referencedMap":[[186,1],[149,2],[151,3],[133,4],[155,5],[156,6],[152,6],[158,7],[153,6],[157,8],[154,9],[140,10],[137,11],[144,12],[138,10],[135,13],[148,14],[142,11],[139,15],[141,16],[171,12],[67,17],[62,18],[63,19],[64,19],[65,20],[66,20],[61,21],[68,22],[69,22],[71,23],[72,22],[73,22],[74,24],[70,22],[170,25],[78,26],[159,27],[162,28],[164,23],[168,29],[169,30],[189,31],[185,1],[187,32],[188,1],[190,11],[161,33],[195,34],[196,35],[198,36],[199,37],[210,38],[209,39],[213,40],[214,41],[212,42],[215,43],[216,44],[217,45],[218,46],[219,47],[220,48],[221,49],[222,50],[223,51],[224,52],[79,53],[80,53],[82,54],[83,55],[84,56],[85,57],[86,58],[87,59],[88,60],[89,61],[90,62],[91,63],[92,63],[93,64],[94,65],[95,66],[96,67],[97,68],[98,69],[99,70],[100,71],[131,72],[101,73],[102,74],[103,75],[104,76],[105,77],[106,78],[107,79],[108,80],[109,81],[110,82],[111,83],[112,84],[114,85],[113,86],[115,87],[116,88],[118,89],[119,90],[120,91],[121,92],[122,93],[123,94],[124,95],[125,96],[126,97],[127,98],[128,99],[129,100],[227,11],[180,101],[230,11],[255,102],[256,103],[231,104],[234,104],[253,102],[254,102],[244,102],[243,105],[241,102],[236,102],[249,102],[247,102],[251,102],[235,102],[248,102],[252,102],[237,102],[238,102],[250,102],[232,102],[239,102],[240,102],[242,102],[246,102],[257,106],[245,102],[233,102],[270,107],[264,106],[266,108],[265,106],[258,106],[259,106],[261,106],[263,106],[267,108],[268,108],[260,108],[262,108],[272,109],[276,110],[205,111],[207,112],[206,111],[204,113],[208,114],[203,115],[172,116],[173,117],[174,117],[176,117],[178,118],[177,117],[181,119],[182,120],[183,121]],"exportedModulesMap":[[186,1],[149,2],[151,3],[133,4],[155,5],[156,6],[152,6],[158,7],[153,6],[157,8],[154,9],[140,10],[137,11],[144,12],[138,10],[135,13],[148,14],[142,11],[139,15],[141,16],[171,12],[67,17],[62,18],[63,19],[64,19],[65,20],[66,20],[61,21],[68,22],[69,22],[71,23],[72,22],[73,22],[74,24],[70,22],[170,25],[78,26],[159,27],[162,28],[164,23],[168,29],[169,30],[189,31],[185,1],[187,32],[188,1],[190,11],[161,33],[195,34],[196,35],[198,36],[199,37],[210,38],[209,39],[213,40],[214,41],[212,42],[215,43],[216,44],[217,45],[218,46],[219,47],[220,48],[221,49],[222,50],[223,51],[224,52],[79,53],[80,53],[82,54],[83,55],[84,56],[85,57],[86,58],[87,59],[88,60],[89,61],[90,62],[91,63],[92,63],[93,64],[94,65],[95,66],[96,67],[97,68],[98,69],[99,70],[100,71],[131,72],[101,73],[102,74],[103,75],[104,76],[105,77],[106,78],[107,79],[108,80],[109,81],[110,82],[111,83],[112,84],[114,85],[113,86],[115,87],[116,88],[118,89],[119,90],[120,91],[121,92],[122,93],[123,94],[124,95],[125,96],[126,97],[127,98],[128,99],[129,100],[227,11],[180,101],[230,11],[255,102],[256,103],[231,104],[234,104],[253,102],[254,102],[244,102],[243,105],[241,102],[236,102],[249,102],[247,102],[251,102],[235,102],[248,102],[252,102],[237,102],[238,102],[250,102],[232,102],[239,102],[240,102],[242,102],[246,102],[257,106],[245,102],[233,102],[270,107],[264,106],[266,108],[265,106],[258,106],[259,106],[261,106],[263,106],[267,108],[268,108],[260,108],[262,108],[272,109],[276,110],[205,111],[207,112],[206,111],[204,113],[208,114],[203,115],[172,116],[173,117],[174,117],[176,117],[178,118],[177,117],[181,122],[182,120],[183,121]],"semanticDiagnosticsPerFile":[186,184,149,132,151,133,150,155,156,152,158,153,157,154,140,137,144,138,135,143,148,145,146,147,142,139,136,141,171,60,67,62,63,64,65,66,61,68,69,71,72,73,74,75,76,77,70,170,78,159,162,163,164,165,166,167,168,169,189,185,187,188,190,161,191,192,195,193,196,197,198,199,210,209,194,211,213,214,212,215,216,217,218,219,220,221,222,223,224,225,160,79,80,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,81,130,98,99,100,131,101,102,103,104,105,106,107,108,109,110,111,112,114,113,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,226,227,228,229,180,179,230,255,256,231,234,253,254,244,243,241,236,249,247,251,235,248,252,237,238,250,232,239,240,242,246,257,245,233,270,269,264,266,265,258,259,261,263,267,268,260,262,272,271,273,274,275,276,134,200,201,205,207,206,204,208,203,202,44,45,8,10,9,2,11,12,13,14,15,16,17,18,3,4,19,23,20,21,22,24,25,26,5,27,28,29,30,6,34,31,32,33,35,7,36,41,42,37,38,39,40,1,43,172,173,174,175,176,178,177,181,182,183,51,52,53,54,55,56,46,57,58,59,47,48,49,50],"latestChangedDtsFile":"./types/index.d.ts"},"version":"5.2.2"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createEngineStream.d.ts","sourceRoot":"","sources":["../../src/createEngineStream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,KAAK,mBAAmB,GAAG;IACzB,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAgC5E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createStreamMiddleware.d.ts","sourceRoot":"","sources":["../../src/createStreamMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,gBAAgB,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAGL,KAAK,aAAa,EAGnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAczC,KAAK,OAAO,GAAG;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,OAAO,GAAE,OAAY;;;;EA2HnE"}
|
package/dist/types/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,CAAC"}
|