@metamask-previews/json-rpc-engine 8.0.1-preview-68beceb0 → 8.0.1-preview-59bf6d5d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/JsonRpcEngine.js +2 -2
  2. package/dist/JsonRpcEngine.mjs +1 -1
  3. package/dist/{chunk-IPW2SZMY.js → chunk-2LXAFMJD.js} +13 -6
  4. package/dist/chunk-2LXAFMJD.js.map +1 -0
  5. package/dist/{chunk-SPJ5WO4C.mjs → chunk-5HCYV4FV.mjs} +14 -7
  6. package/dist/chunk-5HCYV4FV.mjs.map +1 -0
  7. package/dist/{chunk-DRSLWOW3.mjs → chunk-KFRJCTOQ.mjs} +2 -2
  8. package/dist/{chunk-T4LUM46H.mjs → chunk-KNT3O2VO.mjs} +1 -1
  9. package/dist/chunk-KNT3O2VO.mjs.map +1 -0
  10. package/dist/{chunk-I2BVUFWR.js → chunk-VK4MHWJV.js} +3 -3
  11. package/dist/{chunk-ENMR2SJC.js → chunk-ZYXL5TCS.js} +1 -1
  12. package/dist/chunk-ZYXL5TCS.js.map +1 -0
  13. package/dist/createAsyncMiddleware.js +2 -2
  14. package/dist/createAsyncMiddleware.mjs +1 -1
  15. package/dist/index.js +4 -4
  16. package/dist/index.mjs +3 -3
  17. package/dist/mergeMiddleware.js +3 -3
  18. package/dist/mergeMiddleware.mjs +2 -2
  19. package/dist/tsconfig.build.tsbuildinfo +1 -1
  20. package/dist/types/JsonRpcEngine.d.ts +7 -7
  21. package/dist/types/JsonRpcEngine.d.ts.map +1 -1
  22. package/dist/types/createAsyncMiddleware.d.ts +2 -2
  23. package/dist/types/createAsyncMiddleware.d.ts.map +1 -1
  24. package/dist/types/createScaffoldMiddleware.d.ts +1 -1
  25. package/dist/types/createScaffoldMiddleware.d.ts.map +1 -1
  26. package/package.json +2 -2
  27. package/dist/chunk-ENMR2SJC.js.map +0 -1
  28. package/dist/chunk-IPW2SZMY.js.map +0 -1
  29. package/dist/chunk-SPJ5WO4C.mjs.map +0 -1
  30. package/dist/chunk-T4LUM46H.mjs.map +0 -1
  31. /package/dist/{chunk-DRSLWOW3.mjs.map → chunk-KFRJCTOQ.mjs.map} +0 -0
  32. /package/dist/{chunk-I2BVUFWR.js.map → chunk-VK4MHWJV.js.map} +0 -0
@@ -1,8 +1,8 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkIPW2SZMYjs = require('./chunk-IPW2SZMY.js');
3
+ var _chunk2LXAFMJDjs = require('./chunk-2LXAFMJD.js');
4
4
  require('./chunk-Z4BLTVTB.js');
5
5
 
6
6
 
7
- exports.JsonRpcEngine = _chunkIPW2SZMYjs.JsonRpcEngine;
7
+ exports.JsonRpcEngine = _chunk2LXAFMJDjs.JsonRpcEngine;
8
8
  //# sourceMappingURL=JsonRpcEngine.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  JsonRpcEngine
3
- } from "./chunk-SPJ5WO4C.mjs";
3
+ } from "./chunk-5HCYV4FV.mjs";
4
4
  import "./chunk-XUI43LEZ.mjs";
5
5
  export {
6
6
  JsonRpcEngine
@@ -8,6 +8,10 @@ var _chunkZ4BLTVTBjs = require('./chunk-Z4BLTVTB.js');
8
8
  // src/JsonRpcEngine.ts
9
9
  var _rpcerrors = require('@metamask/rpc-errors');
10
10
  var _safeeventemitter = require('@metamask/safe-event-emitter'); var _safeeventemitter2 = _interopRequireDefault(_safeeventemitter);
11
+
12
+
13
+
14
+
11
15
  var _utils = require('@metamask/utils');
12
16
  var DESTROYED_ERROR_MESSAGE = "This engine is destroyed and can no longer be used.";
13
17
  var _isDestroyed, _middleware, _notificationHandler, _assertIsNotDestroyed, assertIsNotDestroyed_fn, _handleBatch, handleBatch_fn, _handle, handle_fn, _processRequest, processRequest_fn, _runAllMiddleware, runAllMiddleware_fn, _runMiddleware, runMiddleware_fn, _runReturnHandlers, runReturnHandlers_fn, _checkForCompletion, checkForCompletion_fn;
@@ -87,8 +91,6 @@ var _JsonRpcEngine = class _JsonRpcEngine extends _safeeventemitter2.default {
87
91
  _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _assertIsNotDestroyed, assertIsNotDestroyed_fn).call(this);
88
92
  _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _middleware).push(middleware);
89
93
  }
90
- // TODO: Replace `any` with type
91
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
92
94
  handle(req, callback) {
93
95
  _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _assertIsNotDestroyed, assertIsNotDestroyed_fn).call(this);
94
96
  if (callback && typeof callback !== "function") {
@@ -96,7 +98,13 @@ var _JsonRpcEngine = class _JsonRpcEngine extends _safeeventemitter2.default {
96
98
  }
97
99
  if (Array.isArray(req)) {
98
100
  if (callback) {
99
- return _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _handleBatch, handleBatch_fn).call(this, req, callback);
101
+ return _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _handleBatch, handleBatch_fn).call(
102
+ this,
103
+ req,
104
+ // This assertion is safe because of the runtime checks validating that `req` is an array and `callback` is defined.
105
+ // There is only one overload signature that satisfies both conditions, and its `callback` type is the one that's being asserted.
106
+ callback
107
+ );
100
108
  }
101
109
  return _chunkZ4BLTVTBjs.__privateMethod.call(void 0, this, _handleBatch, handleBatch_fn).call(this, req);
102
110
  }
@@ -229,8 +237,7 @@ handle_fn = async function(callerReq, callback) {
229
237
  jsonrpc: "2.0",
230
238
  error: error2
231
239
  });
232
- }
233
- if (_chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _notificationHandler) && !_utils.isJsonRpcRequest.call(void 0, callerReq)) {
240
+ } else if (_chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _notificationHandler) && _utils.isJsonRpcNotification.call(void 0, callerReq) && !_utils.isJsonRpcRequest.call(void 0, callerReq)) {
234
241
  try {
235
242
  await _chunkZ4BLTVTBjs.__privateGet.call(void 0, this, _notificationHandler).call(this, callerReq);
236
243
  } catch (error2) {
@@ -406,4 +413,4 @@ function jsonify(request) {
406
413
 
407
414
 
408
415
  exports.JsonRpcEngine = JsonRpcEngine;
409
- //# sourceMappingURL=chunk-IPW2SZMY.js.map
416
+ //# sourceMappingURL=chunk-2LXAFMJD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/JsonRpcEngine.ts"],"names":["_a","error"],"mappings":"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","sourcesContent":["import { errorCodes, JsonRpcError, serializeError } from '@metamask/rpc-errors';\nimport SafeEventEmitter from '@metamask/safe-event-emitter';\nimport type {\n JsonRpcError as SerializedJsonRpcError,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcNotification,\n Json,\n JsonRpcParams,\n PendingJsonRpcResponse,\n} from '@metamask/utils';\nimport {\n hasProperty,\n isJsonRpcNotification,\n isJsonRpcRequest,\n} from '@metamask/utils';\n\nexport type JsonRpcEngineCallbackError = Error | SerializedJsonRpcError | null;\n\nexport type JsonRpcEngineReturnHandler = (\n done: (error?: unknown) => void,\n) => void;\n\nexport type JsonRpcEngineNextCallback = (\n returnHandlerCallback?: JsonRpcEngineReturnHandler,\n) => void;\n\nexport type JsonRpcEngineEndCallback = (error?: unknown) => void;\n\nexport type JsonRpcMiddleware<\n Params extends JsonRpcParams,\n Result extends Json,\n> = {\n (\n req: JsonRpcRequest<Params>,\n res: PendingJsonRpcResponse<Result>,\n next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n ): void;\n destroy?: () => void | Promise<void>;\n};\n\nconst DESTROYED_ERROR_MESSAGE =\n 'This engine is destroyed and can no longer be used.';\n\nexport type JsonRpcNotificationHandler<Params extends JsonRpcParams> = (\n notification: JsonRpcNotification<Params>,\n) => void | Promise<void>;\n\ntype JsonRpcEngineArgs = {\n /**\n * A function for handling JSON-RPC notifications. A JSON-RPC notification is\n * defined as a JSON-RPC request without an `id` property. If this option is\n * _not_ provided, notifications will be treated the same as requests. If this\n * option _is_ provided, notifications will be passed to the handler\n * function without touching the engine's middleware stack.\n *\n * This function should not throw or reject.\n */\n notificationHandler?: JsonRpcNotificationHandler<JsonRpcParams>;\n};\n\n/**\n * A JSON-RPC request and response processor.\n * Give it a stack of middleware, pass it requests, and get back responses.\n */\nexport class JsonRpcEngine extends SafeEventEmitter {\n /**\n * Indicating whether this engine is destroyed or not.\n */\n #isDestroyed = false;\n\n #middleware: JsonRpcMiddleware<JsonRpcParams, Json>[];\n\n readonly #notificationHandler?:\n | JsonRpcNotificationHandler<JsonRpcParams>\n | undefined;\n\n /**\n * Constructs a {@link JsonRpcEngine} instance.\n *\n * @param options - Options bag.\n * @param options.notificationHandler - A function for handling JSON-RPC\n * notifications. A JSON-RPC notification is defined as a JSON-RPC request\n * without an `id` property. If this option is _not_ provided, notifications\n * will be treated the same as requests. If this option _is_ provided,\n * notifications will be passed to the handler function without touching\n * the engine's middleware stack. This function should not throw or reject.\n */\n constructor({ notificationHandler }: JsonRpcEngineArgs = {}) {\n super();\n this.#middleware = [];\n this.#notificationHandler = notificationHandler;\n }\n\n /**\n * Throws an error if this engine is destroyed.\n */\n #assertIsNotDestroyed() {\n if (this.#isDestroyed) {\n throw new Error(DESTROYED_ERROR_MESSAGE);\n }\n }\n\n /**\n * Calls the `destroy()` function of any middleware with that property, clears\n * the middleware array, and marks this engine as destroyed. A destroyed\n * engine cannot be used.\n */\n destroy(): void {\n this.#middleware.forEach(\n (middleware: JsonRpcMiddleware<JsonRpcParams, Json>) => {\n if (\n // `in` walks the prototype chain, which is probably the desired\n // behavior here.\n 'destroy' in middleware &&\n typeof middleware.destroy === 'function'\n ) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n middleware.destroy();\n }\n },\n );\n this.#middleware = [];\n this.#isDestroyed = true;\n }\n\n /**\n * Add a middleware function to the engine's middleware stack.\n *\n * @param middleware - The middleware function to add.\n */\n push<Params extends JsonRpcParams, Result extends Json>(\n middleware: JsonRpcMiddleware<Params, Result>,\n ): void {\n this.#assertIsNotDestroyed();\n this.#middleware.push(middleware as JsonRpcMiddleware<JsonRpcParams, Json>);\n }\n\n /**\n * Handle a JSON-RPC request, and return a response.\n *\n * @param request - The request to handle.\n * @param callback - An error-first callback that will receive the response.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n request: JsonRpcRequest<Params>,\n callback: (error: unknown, response: JsonRpcResponse<Result>) => void,\n ): void;\n\n /**\n * Handle a JSON-RPC notification.\n *\n * @param notification - The notification to handle.\n * @param callback - An error-first callback that will receive a `void` response.\n */\n handle<Params extends JsonRpcParams>(\n notification: JsonRpcNotification<Params>,\n callback: (error: unknown, response: void) => void,\n ): void;\n\n /**\n * Handle an array of JSON-RPC requests and/or notifications, and return an\n * array of responses to any included requests.\n *\n * @param request - The requests to handle.\n * @param callback - An error-first callback that will receive the array of\n * responses.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n requests: (JsonRpcRequest<Params> | JsonRpcNotification<Params>)[],\n callback: (error: unknown, responses: JsonRpcResponse<Result>[]) => void,\n ): void;\n\n /**\n * Handle a JSON-RPC request, and return a response.\n *\n * @param request - The JSON-RPC request to handle.\n * @returns The JSON-RPC response.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n request: JsonRpcRequest<Params>,\n ): Promise<JsonRpcResponse<Result>>;\n\n /**\n * Handle a JSON-RPC notification.\n *\n * @param notification - The notification to handle.\n */\n handle<Params extends JsonRpcParams>(\n notification: JsonRpcNotification<Params>,\n ): Promise<void>;\n\n /**\n * Handle an array of JSON-RPC requests and/or notifications, and return an\n * array of responses to any included requests.\n *\n * @param request - The JSON-RPC requests to handle.\n * @returns An array of JSON-RPC responses.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n requests: (JsonRpcRequest<Params> | JsonRpcNotification<Params>)[],\n ): Promise<JsonRpcResponse<Result>[]>;\n\n handle(\n req:\n | (JsonRpcRequest | JsonRpcNotification)[]\n | JsonRpcRequest\n | JsonRpcNotification,\n callback?: (error: unknown, response: never) => void,\n ) {\n this.#assertIsNotDestroyed();\n\n if (callback && typeof callback !== 'function') {\n throw new Error('\"callback\" must be a function if provided.');\n }\n\n if (Array.isArray(req)) {\n if (callback) {\n return this.#handleBatch(\n req,\n // This assertion is safe because of the runtime checks validating that `req` is an array and `callback` is defined.\n // There is only one overload signature that satisfies both conditions, and its `callback` type is the one that's being asserted.\n callback as (\n error: unknown,\n responses?: JsonRpcResponse<Json>[],\n ) => void,\n );\n }\n return this.#handleBatch(req);\n }\n\n if (callback) {\n return this.#handle(\n req,\n callback as (error: unknown, response?: JsonRpcResponse<Json>) => void,\n );\n }\n return this._promiseHandle(req);\n }\n\n /**\n * Returns this engine as a middleware function that can be pushed to other\n * engines.\n *\n * @returns This engine as a middleware function.\n */\n asMiddleware(): JsonRpcMiddleware<JsonRpcParams, Json> {\n this.#assertIsNotDestroyed();\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async (req, res, next, end) => {\n try {\n const [middlewareError, isComplete, returnHandlers] =\n await JsonRpcEngine.#runAllMiddleware(req, res, this.#middleware);\n\n if (isComplete) {\n await JsonRpcEngine.#runReturnHandlers(returnHandlers);\n return end(middlewareError);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return next(async (handlerCallback) => {\n try {\n await JsonRpcEngine.#runReturnHandlers(returnHandlers);\n } catch (error) {\n return handlerCallback(error);\n }\n return handlerCallback();\n });\n } catch (error) {\n return end(error);\n }\n };\n }\n\n /**\n * Like _handle, but for batch requests.\n */\n #handleBatch(\n reqs: (JsonRpcRequest | JsonRpcNotification)[],\n ): Promise<JsonRpcResponse<Json>[]>;\n\n /**\n * Like _handle, but for batch requests.\n */\n #handleBatch(\n reqs: (JsonRpcRequest | JsonRpcNotification)[],\n callback: (error: unknown, responses?: JsonRpcResponse<Json>[]) => void,\n ): Promise<void>;\n\n /**\n * Handles a batch of JSON-RPC requests, either in `async` or callback\n * fashion.\n *\n * @param requests - The request objects to process.\n * @param callback - The completion callback.\n * @returns The array of responses, or nothing if a callback was specified.\n */\n async #handleBatch(\n requests: (JsonRpcRequest | JsonRpcNotification)[],\n callback?: (error: unknown, responses?: JsonRpcResponse<Json>[]) => void,\n ): Promise<JsonRpcResponse<Json>[] | void> {\n // The order here is important\n try {\n // If the batch is an empty array, the response array must contain a single object\n if (requests.length === 0) {\n const response: JsonRpcResponse<Json>[] = [\n {\n id: null,\n jsonrpc: '2.0',\n error: new JsonRpcError(\n errorCodes.rpc.invalidRequest,\n 'Request batch must contain plain objects. Received an empty array',\n ),\n },\n ];\n if (callback) {\n return callback(null, response);\n }\n return response;\n }\n\n // 2. Wait for all requests to finish, or throw on some kind of fatal\n // error\n const responses = (\n await Promise.all(\n // 1. Begin executing each request in the order received\n requests.map(this._promiseHandle.bind(this)),\n )\n ).filter(\n // Filter out any notification responses.\n (response): response is JsonRpcResponse<Json> => response !== undefined,\n );\n\n // 3. Return batch response\n if (callback) {\n return callback(null, responses);\n }\n return responses;\n } catch (error) {\n if (callback) {\n return callback(error);\n }\n\n throw error;\n }\n }\n\n /**\n * A promise-wrapped _handle.\n *\n * @param request - The JSON-RPC request.\n * @returns The JSON-RPC response.\n */\n // This function is used in tests, so we cannot easily change it to use the\n // hash syntax.\n // eslint-disable-next-line no-restricted-syntax\n private async _promiseHandle(\n request: JsonRpcRequest | JsonRpcNotification,\n ): Promise<JsonRpcResponse<Json> | void> {\n return new Promise((resolve, reject) => {\n this.#handle(request, (error, res) => {\n // For notifications, the response will be `undefined`, and any caught\n // errors are unexpected and should be surfaced to the caller.\n if (error && res === undefined) {\n reject(error);\n } else {\n // Excepting notifications, there will always be a response, and it will\n // always have any error that is caught and propagated.\n resolve(res);\n }\n }).catch(reject);\n });\n }\n\n /**\n * Ensures that the request / notification object is valid, processes it, and\n * passes any error and response object to the given callback.\n *\n * Does not reject.\n *\n * @param callerReq - The request object from the caller.\n * @param callback - The callback function.\n * @returns Nothing.\n */\n async #handle(\n callerReq: JsonRpcRequest | JsonRpcNotification,\n callback: (error: unknown, response?: JsonRpcResponse<Json>) => void,\n ): Promise<void> {\n if (\n !callerReq ||\n Array.isArray(callerReq) ||\n typeof callerReq !== 'object'\n ) {\n const error = new JsonRpcError(\n errorCodes.rpc.invalidRequest,\n `Requests must be plain objects. Received: ${typeof callerReq}`,\n { request: callerReq },\n );\n return callback(error, { id: null, jsonrpc: '2.0', error });\n }\n\n if (typeof callerReq.method !== 'string') {\n const error = new JsonRpcError(\n errorCodes.rpc.invalidRequest,\n `Must specify a string method. Received: ${typeof callerReq.method}`,\n { request: callerReq },\n );\n\n if (this.#notificationHandler && !isJsonRpcRequest(callerReq)) {\n // Do not reply to notifications, even if they are malformed.\n return callback(null);\n }\n\n return callback(error, {\n // Typecast: This could be a notification, but we want to access the\n // `id` even if it doesn't exist.\n id: (callerReq as JsonRpcRequest).id ?? null,\n jsonrpc: '2.0',\n error,\n });\n } else if (\n this.#notificationHandler &&\n isJsonRpcNotification(callerReq) &&\n !isJsonRpcRequest(callerReq)\n ) {\n try {\n await this.#notificationHandler(callerReq);\n } catch (error) {\n return callback(error);\n }\n return callback(null);\n }\n let error = null;\n\n // Handle requests.\n // Typecast: Permit missing id's for backwards compatibility.\n const req = { ...(callerReq as JsonRpcRequest) };\n const res: PendingJsonRpcResponse<Json> = {\n id: req.id,\n jsonrpc: req.jsonrpc,\n };\n\n try {\n await JsonRpcEngine.#processRequest(req, res, this.#middleware);\n } catch (_error) {\n // A request handler error, a re-thrown middleware error, or something\n // unexpected.\n error = _error;\n }\n\n if (error) {\n // Ensure no result is present on an errored response\n delete res.result;\n if (!res.error) {\n res.error = serializeError(error);\n }\n }\n\n return callback(error, res as JsonRpcResponse<Json>);\n }\n\n /**\n * For the given request and response, runs all middleware and their return\n * handlers, if any, and ensures that internal request processing semantics\n * are satisfied.\n *\n * @param req - The request object.\n * @param res - The response object.\n * @param middlewares - The stack of middleware functions.\n */\n static async #processRequest(\n req: JsonRpcRequest,\n res: PendingJsonRpcResponse<Json>,\n middlewares: JsonRpcMiddleware<JsonRpcParams, Json>[],\n ): Promise<void> {\n const [error, isComplete, returnHandlers] =\n await JsonRpcEngine.#runAllMiddleware(req, res, middlewares);\n\n // Throw if \"end\" was not called, or if the response has neither a result\n // nor an error.\n JsonRpcEngine.#checkForCompletion(req, res, isComplete);\n\n // The return handlers should run even if an error was encountered during\n // middleware processing.\n await JsonRpcEngine.#runReturnHandlers(returnHandlers);\n\n // Now we re-throw the middleware processing error, if any, to catch it\n // further up the call chain.\n if (error) {\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw error;\n }\n }\n\n /**\n * Serially executes the given stack of middleware.\n *\n * @param req - The request object.\n * @param res - The response object.\n * @param middlewares - The stack of middleware functions to execute.\n * @returns An array of any error encountered during middleware execution,\n * a boolean indicating whether the request was completed, and an array of\n * middleware-defined return handlers.\n */\n static async #runAllMiddleware(\n req: JsonRpcRequest,\n res: PendingJsonRpcResponse<Json>,\n middlewares: JsonRpcMiddleware<JsonRpcParams, Json>[],\n ): Promise<\n [\n unknown, // error\n boolean, // isComplete\n JsonRpcEngineReturnHandler[],\n ]\n > {\n const returnHandlers: JsonRpcEngineReturnHandler[] = [];\n let error = null;\n let isComplete = false;\n\n // Go down stack of middleware, call and collect optional returnHandlers\n for (const middleware of middlewares) {\n [error, isComplete] = await JsonRpcEngine.#runMiddleware(\n req,\n res,\n middleware,\n returnHandlers,\n );\n\n if (isComplete) {\n break;\n }\n }\n return [error, isComplete, returnHandlers.reverse()];\n }\n\n /**\n * Runs an individual middleware function.\n *\n * @param request - The request object.\n * @param response - The response object.\n * @param middleware - The middleware function to execute.\n * @param returnHandlers - The return handlers array for the current request.\n * @returns An array of any error encountered during middleware exection,\n * and a boolean indicating whether the request should end.\n */\n static async #runMiddleware(\n request: JsonRpcRequest,\n response: PendingJsonRpcResponse<Json>,\n middleware: JsonRpcMiddleware<JsonRpcParams, Json>,\n returnHandlers: JsonRpcEngineReturnHandler[],\n ): Promise<[unknown, boolean]> {\n return new Promise((resolve) => {\n const end: JsonRpcEngineEndCallback = (error) => {\n const parsedError = error || response.error;\n if (parsedError) {\n response.error = serializeError(parsedError);\n }\n // True indicates that the request should end\n resolve([parsedError, true]);\n };\n\n const next: JsonRpcEngineNextCallback = (\n returnHandler?: JsonRpcEngineReturnHandler,\n ) => {\n if (response.error) {\n end(response.error);\n } else {\n if (returnHandler) {\n if (typeof returnHandler !== 'function') {\n end(\n new JsonRpcError(\n errorCodes.rpc.internal,\n `JsonRpcEngine: \"next\" return handlers must be functions. ` +\n `Received \"${typeof returnHandler}\" for request:\\n${jsonify(\n request,\n )}`,\n { request },\n ),\n );\n }\n returnHandlers.push(returnHandler);\n }\n\n // False indicates that the request should not end\n resolve([null, false]);\n }\n };\n\n try {\n middleware(request, response, next, end);\n } catch (error) {\n end(error);\n }\n });\n }\n\n /**\n * Serially executes array of return handlers. The request and response are\n * assumed to be in their scope.\n *\n * @param handlers - The return handlers to execute.\n */\n static async #runReturnHandlers(\n handlers: JsonRpcEngineReturnHandler[],\n ): Promise<void> {\n for (const handler of handlers) {\n await new Promise<void>((resolve, reject) => {\n handler((error) => (error ? reject(error) : resolve()));\n });\n }\n }\n\n /**\n * Throws an error if the response has neither a result nor an error, or if\n * the \"isComplete\" flag is falsy.\n *\n * @param request - The request object.\n * @param response - The response object.\n * @param isComplete - Boolean from {@link JsonRpcEngine.#runAllMiddleware}\n * indicating whether a middleware ended the request.\n */\n static #checkForCompletion(\n request: JsonRpcRequest,\n response: PendingJsonRpcResponse<Json>,\n isComplete: boolean,\n ): void {\n if (!hasProperty(response, 'result') && !hasProperty(response, 'error')) {\n throw new JsonRpcError(\n errorCodes.rpc.internal,\n `JsonRpcEngine: Response has no error or result for request:\\n${jsonify(\n request,\n )}`,\n { request },\n );\n }\n\n if (!isComplete) {\n throw new JsonRpcError(\n errorCodes.rpc.internal,\n `JsonRpcEngine: Nothing ended request:\\n${jsonify(request)}`,\n { request },\n );\n }\n }\n}\n\n/**\n * JSON-stringifies a request object.\n *\n * @param request - The request object to JSON-stringify.\n * @returns The JSON-stringified request object.\n */\nfunction jsonify(request: JsonRpcRequest): string {\n return JSON.stringify(request, null, 2);\n}\n"]}
@@ -8,7 +8,11 @@ import {
8
8
  // src/JsonRpcEngine.ts
9
9
  import { errorCodes, JsonRpcError, serializeError } from "@metamask/rpc-errors";
10
10
  import SafeEventEmitter from "@metamask/safe-event-emitter";
11
- import { hasProperty, isJsonRpcRequest } from "@metamask/utils";
11
+ import {
12
+ hasProperty,
13
+ isJsonRpcNotification,
14
+ isJsonRpcRequest
15
+ } from "@metamask/utils";
12
16
  var DESTROYED_ERROR_MESSAGE = "This engine is destroyed and can no longer be used.";
13
17
  var _isDestroyed, _middleware, _notificationHandler, _assertIsNotDestroyed, assertIsNotDestroyed_fn, _handleBatch, handleBatch_fn, _handle, handle_fn, _processRequest, processRequest_fn, _runAllMiddleware, runAllMiddleware_fn, _runMiddleware, runMiddleware_fn, _runReturnHandlers, runReturnHandlers_fn, _checkForCompletion, checkForCompletion_fn;
14
18
  var _JsonRpcEngine = class _JsonRpcEngine extends SafeEventEmitter {
@@ -87,8 +91,6 @@ var _JsonRpcEngine = class _JsonRpcEngine extends SafeEventEmitter {
87
91
  __privateMethod(this, _assertIsNotDestroyed, assertIsNotDestroyed_fn).call(this);
88
92
  __privateGet(this, _middleware).push(middleware);
89
93
  }
90
- // TODO: Replace `any` with type
91
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
92
94
  handle(req, callback) {
93
95
  __privateMethod(this, _assertIsNotDestroyed, assertIsNotDestroyed_fn).call(this);
94
96
  if (callback && typeof callback !== "function") {
@@ -96,7 +98,13 @@ var _JsonRpcEngine = class _JsonRpcEngine extends SafeEventEmitter {
96
98
  }
97
99
  if (Array.isArray(req)) {
98
100
  if (callback) {
99
- return __privateMethod(this, _handleBatch, handleBatch_fn).call(this, req, callback);
101
+ return __privateMethod(this, _handleBatch, handleBatch_fn).call(
102
+ this,
103
+ req,
104
+ // This assertion is safe because of the runtime checks validating that `req` is an array and `callback` is defined.
105
+ // There is only one overload signature that satisfies both conditions, and its `callback` type is the one that's being asserted.
106
+ callback
107
+ );
100
108
  }
101
109
  return __privateMethod(this, _handleBatch, handleBatch_fn).call(this, req);
102
110
  }
@@ -229,8 +237,7 @@ handle_fn = async function(callerReq, callback) {
229
237
  jsonrpc: "2.0",
230
238
  error: error2
231
239
  });
232
- }
233
- if (__privateGet(this, _notificationHandler) && !isJsonRpcRequest(callerReq)) {
240
+ } else if (__privateGet(this, _notificationHandler) && isJsonRpcNotification(callerReq) && !isJsonRpcRequest(callerReq)) {
234
241
  try {
235
242
  await __privateGet(this, _notificationHandler).call(this, callerReq);
236
243
  } catch (error2) {
@@ -406,4 +413,4 @@ function jsonify(request) {
406
413
  export {
407
414
  JsonRpcEngine
408
415
  };
409
- //# sourceMappingURL=chunk-SPJ5WO4C.mjs.map
416
+ //# sourceMappingURL=chunk-5HCYV4FV.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/JsonRpcEngine.ts"],"sourcesContent":["import { errorCodes, JsonRpcError, serializeError } from '@metamask/rpc-errors';\nimport SafeEventEmitter from '@metamask/safe-event-emitter';\nimport type {\n JsonRpcError as SerializedJsonRpcError,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcNotification,\n Json,\n JsonRpcParams,\n PendingJsonRpcResponse,\n} from '@metamask/utils';\nimport {\n hasProperty,\n isJsonRpcNotification,\n isJsonRpcRequest,\n} from '@metamask/utils';\n\nexport type JsonRpcEngineCallbackError = Error | SerializedJsonRpcError | null;\n\nexport type JsonRpcEngineReturnHandler = (\n done: (error?: unknown) => void,\n) => void;\n\nexport type JsonRpcEngineNextCallback = (\n returnHandlerCallback?: JsonRpcEngineReturnHandler,\n) => void;\n\nexport type JsonRpcEngineEndCallback = (error?: unknown) => void;\n\nexport type JsonRpcMiddleware<\n Params extends JsonRpcParams,\n Result extends Json,\n> = {\n (\n req: JsonRpcRequest<Params>,\n res: PendingJsonRpcResponse<Result>,\n next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n ): void;\n destroy?: () => void | Promise<void>;\n};\n\nconst DESTROYED_ERROR_MESSAGE =\n 'This engine is destroyed and can no longer be used.';\n\nexport type JsonRpcNotificationHandler<Params extends JsonRpcParams> = (\n notification: JsonRpcNotification<Params>,\n) => void | Promise<void>;\n\ntype JsonRpcEngineArgs = {\n /**\n * A function for handling JSON-RPC notifications. A JSON-RPC notification is\n * defined as a JSON-RPC request without an `id` property. If this option is\n * _not_ provided, notifications will be treated the same as requests. If this\n * option _is_ provided, notifications will be passed to the handler\n * function without touching the engine's middleware stack.\n *\n * This function should not throw or reject.\n */\n notificationHandler?: JsonRpcNotificationHandler<JsonRpcParams>;\n};\n\n/**\n * A JSON-RPC request and response processor.\n * Give it a stack of middleware, pass it requests, and get back responses.\n */\nexport class JsonRpcEngine extends SafeEventEmitter {\n /**\n * Indicating whether this engine is destroyed or not.\n */\n #isDestroyed = false;\n\n #middleware: JsonRpcMiddleware<JsonRpcParams, Json>[];\n\n readonly #notificationHandler?:\n | JsonRpcNotificationHandler<JsonRpcParams>\n | undefined;\n\n /**\n * Constructs a {@link JsonRpcEngine} instance.\n *\n * @param options - Options bag.\n * @param options.notificationHandler - A function for handling JSON-RPC\n * notifications. A JSON-RPC notification is defined as a JSON-RPC request\n * without an `id` property. If this option is _not_ provided, notifications\n * will be treated the same as requests. If this option _is_ provided,\n * notifications will be passed to the handler function without touching\n * the engine's middleware stack. This function should not throw or reject.\n */\n constructor({ notificationHandler }: JsonRpcEngineArgs = {}) {\n super();\n this.#middleware = [];\n this.#notificationHandler = notificationHandler;\n }\n\n /**\n * Throws an error if this engine is destroyed.\n */\n #assertIsNotDestroyed() {\n if (this.#isDestroyed) {\n throw new Error(DESTROYED_ERROR_MESSAGE);\n }\n }\n\n /**\n * Calls the `destroy()` function of any middleware with that property, clears\n * the middleware array, and marks this engine as destroyed. A destroyed\n * engine cannot be used.\n */\n destroy(): void {\n this.#middleware.forEach(\n (middleware: JsonRpcMiddleware<JsonRpcParams, Json>) => {\n if (\n // `in` walks the prototype chain, which is probably the desired\n // behavior here.\n 'destroy' in middleware &&\n typeof middleware.destroy === 'function'\n ) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n middleware.destroy();\n }\n },\n );\n this.#middleware = [];\n this.#isDestroyed = true;\n }\n\n /**\n * Add a middleware function to the engine's middleware stack.\n *\n * @param middleware - The middleware function to add.\n */\n push<Params extends JsonRpcParams, Result extends Json>(\n middleware: JsonRpcMiddleware<Params, Result>,\n ): void {\n this.#assertIsNotDestroyed();\n this.#middleware.push(middleware as JsonRpcMiddleware<JsonRpcParams, Json>);\n }\n\n /**\n * Handle a JSON-RPC request, and return a response.\n *\n * @param request - The request to handle.\n * @param callback - An error-first callback that will receive the response.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n request: JsonRpcRequest<Params>,\n callback: (error: unknown, response: JsonRpcResponse<Result>) => void,\n ): void;\n\n /**\n * Handle a JSON-RPC notification.\n *\n * @param notification - The notification to handle.\n * @param callback - An error-first callback that will receive a `void` response.\n */\n handle<Params extends JsonRpcParams>(\n notification: JsonRpcNotification<Params>,\n callback: (error: unknown, response: void) => void,\n ): void;\n\n /**\n * Handle an array of JSON-RPC requests and/or notifications, and return an\n * array of responses to any included requests.\n *\n * @param request - The requests to handle.\n * @param callback - An error-first callback that will receive the array of\n * responses.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n requests: (JsonRpcRequest<Params> | JsonRpcNotification<Params>)[],\n callback: (error: unknown, responses: JsonRpcResponse<Result>[]) => void,\n ): void;\n\n /**\n * Handle a JSON-RPC request, and return a response.\n *\n * @param request - The JSON-RPC request to handle.\n * @returns The JSON-RPC response.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n request: JsonRpcRequest<Params>,\n ): Promise<JsonRpcResponse<Result>>;\n\n /**\n * Handle a JSON-RPC notification.\n *\n * @param notification - The notification to handle.\n */\n handle<Params extends JsonRpcParams>(\n notification: JsonRpcNotification<Params>,\n ): Promise<void>;\n\n /**\n * Handle an array of JSON-RPC requests and/or notifications, and return an\n * array of responses to any included requests.\n *\n * @param request - The JSON-RPC requests to handle.\n * @returns An array of JSON-RPC responses.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n requests: (JsonRpcRequest<Params> | JsonRpcNotification<Params>)[],\n ): Promise<JsonRpcResponse<Result>[]>;\n\n handle(\n req:\n | (JsonRpcRequest | JsonRpcNotification)[]\n | JsonRpcRequest\n | JsonRpcNotification,\n callback?: (error: unknown, response: never) => void,\n ) {\n this.#assertIsNotDestroyed();\n\n if (callback && typeof callback !== 'function') {\n throw new Error('\"callback\" must be a function if provided.');\n }\n\n if (Array.isArray(req)) {\n if (callback) {\n return this.#handleBatch(\n req,\n // This assertion is safe because of the runtime checks validating that `req` is an array and `callback` is defined.\n // There is only one overload signature that satisfies both conditions, and its `callback` type is the one that's being asserted.\n callback as (\n error: unknown,\n responses?: JsonRpcResponse<Json>[],\n ) => void,\n );\n }\n return this.#handleBatch(req);\n }\n\n if (callback) {\n return this.#handle(\n req,\n callback as (error: unknown, response?: JsonRpcResponse<Json>) => void,\n );\n }\n return this._promiseHandle(req);\n }\n\n /**\n * Returns this engine as a middleware function that can be pushed to other\n * engines.\n *\n * @returns This engine as a middleware function.\n */\n asMiddleware(): JsonRpcMiddleware<JsonRpcParams, Json> {\n this.#assertIsNotDestroyed();\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async (req, res, next, end) => {\n try {\n const [middlewareError, isComplete, returnHandlers] =\n await JsonRpcEngine.#runAllMiddleware(req, res, this.#middleware);\n\n if (isComplete) {\n await JsonRpcEngine.#runReturnHandlers(returnHandlers);\n return end(middlewareError);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return next(async (handlerCallback) => {\n try {\n await JsonRpcEngine.#runReturnHandlers(returnHandlers);\n } catch (error) {\n return handlerCallback(error);\n }\n return handlerCallback();\n });\n } catch (error) {\n return end(error);\n }\n };\n }\n\n /**\n * Like _handle, but for batch requests.\n */\n #handleBatch(\n reqs: (JsonRpcRequest | JsonRpcNotification)[],\n ): Promise<JsonRpcResponse<Json>[]>;\n\n /**\n * Like _handle, but for batch requests.\n */\n #handleBatch(\n reqs: (JsonRpcRequest | JsonRpcNotification)[],\n callback: (error: unknown, responses?: JsonRpcResponse<Json>[]) => void,\n ): Promise<void>;\n\n /**\n * Handles a batch of JSON-RPC requests, either in `async` or callback\n * fashion.\n *\n * @param requests - The request objects to process.\n * @param callback - The completion callback.\n * @returns The array of responses, or nothing if a callback was specified.\n */\n async #handleBatch(\n requests: (JsonRpcRequest | JsonRpcNotification)[],\n callback?: (error: unknown, responses?: JsonRpcResponse<Json>[]) => void,\n ): Promise<JsonRpcResponse<Json>[] | void> {\n // The order here is important\n try {\n // If the batch is an empty array, the response array must contain a single object\n if (requests.length === 0) {\n const response: JsonRpcResponse<Json>[] = [\n {\n id: null,\n jsonrpc: '2.0',\n error: new JsonRpcError(\n errorCodes.rpc.invalidRequest,\n 'Request batch must contain plain objects. Received an empty array',\n ),\n },\n ];\n if (callback) {\n return callback(null, response);\n }\n return response;\n }\n\n // 2. Wait for all requests to finish, or throw on some kind of fatal\n // error\n const responses = (\n await Promise.all(\n // 1. Begin executing each request in the order received\n requests.map(this._promiseHandle.bind(this)),\n )\n ).filter(\n // Filter out any notification responses.\n (response): response is JsonRpcResponse<Json> => response !== undefined,\n );\n\n // 3. Return batch response\n if (callback) {\n return callback(null, responses);\n }\n return responses;\n } catch (error) {\n if (callback) {\n return callback(error);\n }\n\n throw error;\n }\n }\n\n /**\n * A promise-wrapped _handle.\n *\n * @param request - The JSON-RPC request.\n * @returns The JSON-RPC response.\n */\n // This function is used in tests, so we cannot easily change it to use the\n // hash syntax.\n // eslint-disable-next-line no-restricted-syntax\n private async _promiseHandle(\n request: JsonRpcRequest | JsonRpcNotification,\n ): Promise<JsonRpcResponse<Json> | void> {\n return new Promise((resolve, reject) => {\n this.#handle(request, (error, res) => {\n // For notifications, the response will be `undefined`, and any caught\n // errors are unexpected and should be surfaced to the caller.\n if (error && res === undefined) {\n reject(error);\n } else {\n // Excepting notifications, there will always be a response, and it will\n // always have any error that is caught and propagated.\n resolve(res);\n }\n }).catch(reject);\n });\n }\n\n /**\n * Ensures that the request / notification object is valid, processes it, and\n * passes any error and response object to the given callback.\n *\n * Does not reject.\n *\n * @param callerReq - The request object from the caller.\n * @param callback - The callback function.\n * @returns Nothing.\n */\n async #handle(\n callerReq: JsonRpcRequest | JsonRpcNotification,\n callback: (error: unknown, response?: JsonRpcResponse<Json>) => void,\n ): Promise<void> {\n if (\n !callerReq ||\n Array.isArray(callerReq) ||\n typeof callerReq !== 'object'\n ) {\n const error = new JsonRpcError(\n errorCodes.rpc.invalidRequest,\n `Requests must be plain objects. Received: ${typeof callerReq}`,\n { request: callerReq },\n );\n return callback(error, { id: null, jsonrpc: '2.0', error });\n }\n\n if (typeof callerReq.method !== 'string') {\n const error = new JsonRpcError(\n errorCodes.rpc.invalidRequest,\n `Must specify a string method. Received: ${typeof callerReq.method}`,\n { request: callerReq },\n );\n\n if (this.#notificationHandler && !isJsonRpcRequest(callerReq)) {\n // Do not reply to notifications, even if they are malformed.\n return callback(null);\n }\n\n return callback(error, {\n // Typecast: This could be a notification, but we want to access the\n // `id` even if it doesn't exist.\n id: (callerReq as JsonRpcRequest).id ?? null,\n jsonrpc: '2.0',\n error,\n });\n } else if (\n this.#notificationHandler &&\n isJsonRpcNotification(callerReq) &&\n !isJsonRpcRequest(callerReq)\n ) {\n try {\n await this.#notificationHandler(callerReq);\n } catch (error) {\n return callback(error);\n }\n return callback(null);\n }\n let error = null;\n\n // Handle requests.\n // Typecast: Permit missing id's for backwards compatibility.\n const req = { ...(callerReq as JsonRpcRequest) };\n const res: PendingJsonRpcResponse<Json> = {\n id: req.id,\n jsonrpc: req.jsonrpc,\n };\n\n try {\n await JsonRpcEngine.#processRequest(req, res, this.#middleware);\n } catch (_error) {\n // A request handler error, a re-thrown middleware error, or something\n // unexpected.\n error = _error;\n }\n\n if (error) {\n // Ensure no result is present on an errored response\n delete res.result;\n if (!res.error) {\n res.error = serializeError(error);\n }\n }\n\n return callback(error, res as JsonRpcResponse<Json>);\n }\n\n /**\n * For the given request and response, runs all middleware and their return\n * handlers, if any, and ensures that internal request processing semantics\n * are satisfied.\n *\n * @param req - The request object.\n * @param res - The response object.\n * @param middlewares - The stack of middleware functions.\n */\n static async #processRequest(\n req: JsonRpcRequest,\n res: PendingJsonRpcResponse<Json>,\n middlewares: JsonRpcMiddleware<JsonRpcParams, Json>[],\n ): Promise<void> {\n const [error, isComplete, returnHandlers] =\n await JsonRpcEngine.#runAllMiddleware(req, res, middlewares);\n\n // Throw if \"end\" was not called, or if the response has neither a result\n // nor an error.\n JsonRpcEngine.#checkForCompletion(req, res, isComplete);\n\n // The return handlers should run even if an error was encountered during\n // middleware processing.\n await JsonRpcEngine.#runReturnHandlers(returnHandlers);\n\n // Now we re-throw the middleware processing error, if any, to catch it\n // further up the call chain.\n if (error) {\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw error;\n }\n }\n\n /**\n * Serially executes the given stack of middleware.\n *\n * @param req - The request object.\n * @param res - The response object.\n * @param middlewares - The stack of middleware functions to execute.\n * @returns An array of any error encountered during middleware execution,\n * a boolean indicating whether the request was completed, and an array of\n * middleware-defined return handlers.\n */\n static async #runAllMiddleware(\n req: JsonRpcRequest,\n res: PendingJsonRpcResponse<Json>,\n middlewares: JsonRpcMiddleware<JsonRpcParams, Json>[],\n ): Promise<\n [\n unknown, // error\n boolean, // isComplete\n JsonRpcEngineReturnHandler[],\n ]\n > {\n const returnHandlers: JsonRpcEngineReturnHandler[] = [];\n let error = null;\n let isComplete = false;\n\n // Go down stack of middleware, call and collect optional returnHandlers\n for (const middleware of middlewares) {\n [error, isComplete] = await JsonRpcEngine.#runMiddleware(\n req,\n res,\n middleware,\n returnHandlers,\n );\n\n if (isComplete) {\n break;\n }\n }\n return [error, isComplete, returnHandlers.reverse()];\n }\n\n /**\n * Runs an individual middleware function.\n *\n * @param request - The request object.\n * @param response - The response object.\n * @param middleware - The middleware function to execute.\n * @param returnHandlers - The return handlers array for the current request.\n * @returns An array of any error encountered during middleware exection,\n * and a boolean indicating whether the request should end.\n */\n static async #runMiddleware(\n request: JsonRpcRequest,\n response: PendingJsonRpcResponse<Json>,\n middleware: JsonRpcMiddleware<JsonRpcParams, Json>,\n returnHandlers: JsonRpcEngineReturnHandler[],\n ): Promise<[unknown, boolean]> {\n return new Promise((resolve) => {\n const end: JsonRpcEngineEndCallback = (error) => {\n const parsedError = error || response.error;\n if (parsedError) {\n response.error = serializeError(parsedError);\n }\n // True indicates that the request should end\n resolve([parsedError, true]);\n };\n\n const next: JsonRpcEngineNextCallback = (\n returnHandler?: JsonRpcEngineReturnHandler,\n ) => {\n if (response.error) {\n end(response.error);\n } else {\n if (returnHandler) {\n if (typeof returnHandler !== 'function') {\n end(\n new JsonRpcError(\n errorCodes.rpc.internal,\n `JsonRpcEngine: \"next\" return handlers must be functions. ` +\n `Received \"${typeof returnHandler}\" for request:\\n${jsonify(\n request,\n )}`,\n { request },\n ),\n );\n }\n returnHandlers.push(returnHandler);\n }\n\n // False indicates that the request should not end\n resolve([null, false]);\n }\n };\n\n try {\n middleware(request, response, next, end);\n } catch (error) {\n end(error);\n }\n });\n }\n\n /**\n * Serially executes array of return handlers. The request and response are\n * assumed to be in their scope.\n *\n * @param handlers - The return handlers to execute.\n */\n static async #runReturnHandlers(\n handlers: JsonRpcEngineReturnHandler[],\n ): Promise<void> {\n for (const handler of handlers) {\n await new Promise<void>((resolve, reject) => {\n handler((error) => (error ? reject(error) : resolve()));\n });\n }\n }\n\n /**\n * Throws an error if the response has neither a result nor an error, or if\n * the \"isComplete\" flag is falsy.\n *\n * @param request - The request object.\n * @param response - The response object.\n * @param isComplete - Boolean from {@link JsonRpcEngine.#runAllMiddleware}\n * indicating whether a middleware ended the request.\n */\n static #checkForCompletion(\n request: JsonRpcRequest,\n response: PendingJsonRpcResponse<Json>,\n isComplete: boolean,\n ): void {\n if (!hasProperty(response, 'result') && !hasProperty(response, 'error')) {\n throw new JsonRpcError(\n errorCodes.rpc.internal,\n `JsonRpcEngine: Response has no error or result for request:\\n${jsonify(\n request,\n )}`,\n { request },\n );\n }\n\n if (!isComplete) {\n throw new JsonRpcError(\n errorCodes.rpc.internal,\n `JsonRpcEngine: Nothing ended request:\\n${jsonify(request)}`,\n { request },\n );\n }\n }\n}\n\n/**\n * JSON-stringifies a request object.\n *\n * @param request - The request object to JSON-stringify.\n * @returns The JSON-stringified request object.\n */\nfunction jsonify(request: JsonRpcRequest): string {\n return JSON.stringify(request, null, 2);\n}\n"],"mappings":"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","names":["_a","error"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  JsonRpcEngine
3
- } from "./chunk-SPJ5WO4C.mjs";
3
+ } from "./chunk-5HCYV4FV.mjs";
4
4
 
5
5
  // src/mergeMiddleware.ts
6
6
  function mergeMiddleware(middlewareStack) {
@@ -12,4 +12,4 @@ function mergeMiddleware(middlewareStack) {
12
12
  export {
13
13
  mergeMiddleware
14
14
  };
15
- //# sourceMappingURL=chunk-DRSLWOW3.mjs.map
15
+ //# sourceMappingURL=chunk-KFRJCTOQ.mjs.map
@@ -36,4 +36,4 @@ function createAsyncMiddleware(asyncMiddleware) {
36
36
  export {
37
37
  createAsyncMiddleware
38
38
  };
39
- //# sourceMappingURL=chunk-T4LUM46H.mjs.map
39
+ //# sourceMappingURL=chunk-KNT3O2VO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/createAsyncMiddleware.ts"],"sourcesContent":["import type {\n Json,\n JsonRpcParams,\n JsonRpcRequest,\n PendingJsonRpcResponse,\n} from '@metamask/utils';\n\nimport type {\n JsonRpcEngineReturnHandler,\n JsonRpcMiddleware,\n} from './JsonRpcEngine';\n\nexport type AsyncJsonRpcEngineNextCallback = () => Promise<void>;\n\nexport type AsyncJsonrpcMiddleware<\n Params extends JsonRpcParams,\n Result extends Json,\n> = (\n request: JsonRpcRequest<Params>,\n response: PendingJsonRpcResponse<Result>,\n next: AsyncJsonRpcEngineNextCallback,\n) => Promise<void>;\n\ntype ReturnHandlerCallback = Parameters<JsonRpcEngineReturnHandler>[0];\n\n/**\n * JsonRpcEngine only accepts callback-based middleware directly.\n * createAsyncMiddleware exists to enable consumers to pass in async middleware\n * functions.\n *\n * Async middleware have no \"end\" function. Instead, they \"end\" if they return\n * without calling \"next\". Rather than passing in explicit return handlers,\n * async middleware can simply await \"next\", and perform operations on the\n * response object when execution resumes.\n *\n * To accomplish this, createAsyncMiddleware passes the async middleware a\n * wrapped \"next\" function. That function calls the internal JsonRpcEngine\n * \"next\" function with a return handler that resolves a promise when called.\n *\n * The return handler will always be called. Its resolution of the promise\n * enables the control flow described above.\n *\n * @param asyncMiddleware - The asynchronous middleware function to wrap.\n * @returns The wrapped asynchronous middleware function, ready to be consumed\n * by JsonRpcEngine.\n */\nexport function createAsyncMiddleware<\n Params extends JsonRpcParams,\n Result extends Json,\n>(\n asyncMiddleware: AsyncJsonrpcMiddleware<Params, Result>,\n): JsonRpcMiddleware<Params, Result> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async (request, response, next, end) => {\n // nextPromise is the key to the implementation\n // it is resolved by the return handler passed to the\n // \"next\" function\n let resolveNextPromise: () => void;\n const nextPromise = new Promise<void>((resolve) => {\n resolveNextPromise = resolve;\n });\n\n let returnHandlerCallback: unknown = null;\n let nextWasCalled = false;\n\n // This will be called by the consumer's async middleware.\n const asyncNext = async () => {\n nextWasCalled = true;\n\n // We pass a return handler to next(). When it is called by the engine,\n // the consumer's async middleware will resume executing.\n next((runReturnHandlersCallback) => {\n // This callback comes from JsonRpcEngine._runReturnHandlers\n returnHandlerCallback = runReturnHandlersCallback;\n resolveNextPromise();\n });\n return nextPromise;\n };\n\n try {\n await asyncMiddleware(request, response, asyncNext);\n\n if (nextWasCalled) {\n await nextPromise; // we must wait until the return handler is called\n (returnHandlerCallback as ReturnHandlerCallback)(null);\n } else {\n end(null);\n }\n } catch (error) {\n if (returnHandlerCallback) {\n (returnHandlerCallback as ReturnHandlerCallback)(error);\n } else {\n end(error);\n }\n }\n };\n}\n"],"mappings":";AA8CO,SAAS,sBAId,iBACmC;AAEnC,SAAO,OAAO,SAAS,UAAU,MAAM,QAAQ;AAI7C,QAAI;AACJ,UAAM,cAAc,IAAI,QAAc,CAAC,YAAY;AACjD,2BAAqB;AAAA,IACvB,CAAC;AAED,QAAI,wBAAiC;AACrC,QAAI,gBAAgB;AAGpB,UAAM,YAAY,YAAY;AAC5B,sBAAgB;AAIhB,WAAK,CAAC,8BAA8B;AAElC,gCAAwB;AACxB,2BAAmB;AAAA,MACrB,CAAC;AACD,aAAO;AAAA,IACT;AAEA,QAAI;AACF,YAAM,gBAAgB,SAAS,UAAU,SAAS;AAElD,UAAI,eAAe;AACjB,cAAM;AACN,QAAC,sBAAgD,IAAI;AAAA,MACvD,OAAO;AACL,YAAI,IAAI;AAAA,MACV;AAAA,IACF,SAAS,OAAO;AACd,UAAI,uBAAuB;AACzB,QAAC,sBAAgD,KAAK;AAAA,MACxD,OAAO;AACL,YAAI,KAAK;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1,10 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkIPW2SZMYjs = require('./chunk-IPW2SZMY.js');
3
+ var _chunk2LXAFMJDjs = require('./chunk-2LXAFMJD.js');
4
4
 
5
5
  // src/mergeMiddleware.ts
6
6
  function mergeMiddleware(middlewareStack) {
7
- const engine = new (0, _chunkIPW2SZMYjs.JsonRpcEngine)();
7
+ const engine = new (0, _chunk2LXAFMJDjs.JsonRpcEngine)();
8
8
  middlewareStack.forEach((middleware) => engine.push(middleware));
9
9
  return engine.asMiddleware();
10
10
  }
@@ -12,4 +12,4 @@ function mergeMiddleware(middlewareStack) {
12
12
 
13
13
 
14
14
  exports.mergeMiddleware = mergeMiddleware;
15
- //# sourceMappingURL=chunk-I2BVUFWR.js.map
15
+ //# sourceMappingURL=chunk-VK4MHWJV.js.map
@@ -36,4 +36,4 @@ function createAsyncMiddleware(asyncMiddleware) {
36
36
 
37
37
 
38
38
  exports.createAsyncMiddleware = createAsyncMiddleware;
39
- //# sourceMappingURL=chunk-ENMR2SJC.js.map
39
+ //# sourceMappingURL=chunk-ZYXL5TCS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/createAsyncMiddleware.ts"],"names":[],"mappings":";AA8CO,SAAS,sBAId,iBACmC;AAEnC,SAAO,OAAO,SAAS,UAAU,MAAM,QAAQ;AAI7C,QAAI;AACJ,UAAM,cAAc,IAAI,QAAc,CAAC,YAAY;AACjD,2BAAqB;AAAA,IACvB,CAAC;AAED,QAAI,wBAAiC;AACrC,QAAI,gBAAgB;AAGpB,UAAM,YAAY,YAAY;AAC5B,sBAAgB;AAIhB,WAAK,CAAC,8BAA8B;AAElC,gCAAwB;AACxB,2BAAmB;AAAA,MACrB,CAAC;AACD,aAAO;AAAA,IACT;AAEA,QAAI;AACF,YAAM,gBAAgB,SAAS,UAAU,SAAS;AAElD,UAAI,eAAe;AACjB,cAAM;AACN,QAAC,sBAAgD,IAAI;AAAA,MACvD,OAAO;AACL,YAAI,IAAI;AAAA,MACV;AAAA,IACF,SAAS,OAAO;AACd,UAAI,uBAAuB;AACzB,QAAC,sBAAgD,KAAK;AAAA,MACxD,OAAO;AACL,YAAI,KAAK;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF","sourcesContent":["import type {\n Json,\n JsonRpcParams,\n JsonRpcRequest,\n PendingJsonRpcResponse,\n} from '@metamask/utils';\n\nimport type {\n JsonRpcEngineReturnHandler,\n JsonRpcMiddleware,\n} from './JsonRpcEngine';\n\nexport type AsyncJsonRpcEngineNextCallback = () => Promise<void>;\n\nexport type AsyncJsonrpcMiddleware<\n Params extends JsonRpcParams,\n Result extends Json,\n> = (\n request: JsonRpcRequest<Params>,\n response: PendingJsonRpcResponse<Result>,\n next: AsyncJsonRpcEngineNextCallback,\n) => Promise<void>;\n\ntype ReturnHandlerCallback = Parameters<JsonRpcEngineReturnHandler>[0];\n\n/**\n * JsonRpcEngine only accepts callback-based middleware directly.\n * createAsyncMiddleware exists to enable consumers to pass in async middleware\n * functions.\n *\n * Async middleware have no \"end\" function. Instead, they \"end\" if they return\n * without calling \"next\". Rather than passing in explicit return handlers,\n * async middleware can simply await \"next\", and perform operations on the\n * response object when execution resumes.\n *\n * To accomplish this, createAsyncMiddleware passes the async middleware a\n * wrapped \"next\" function. That function calls the internal JsonRpcEngine\n * \"next\" function with a return handler that resolves a promise when called.\n *\n * The return handler will always be called. Its resolution of the promise\n * enables the control flow described above.\n *\n * @param asyncMiddleware - The asynchronous middleware function to wrap.\n * @returns The wrapped asynchronous middleware function, ready to be consumed\n * by JsonRpcEngine.\n */\nexport function createAsyncMiddleware<\n Params extends JsonRpcParams,\n Result extends Json,\n>(\n asyncMiddleware: AsyncJsonrpcMiddleware<Params, Result>,\n): JsonRpcMiddleware<Params, Result> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async (request, response, next, end) => {\n // nextPromise is the key to the implementation\n // it is resolved by the return handler passed to the\n // \"next\" function\n let resolveNextPromise: () => void;\n const nextPromise = new Promise<void>((resolve) => {\n resolveNextPromise = resolve;\n });\n\n let returnHandlerCallback: unknown = null;\n let nextWasCalled = false;\n\n // This will be called by the consumer's async middleware.\n const asyncNext = async () => {\n nextWasCalled = true;\n\n // We pass a return handler to next(). When it is called by the engine,\n // the consumer's async middleware will resume executing.\n next((runReturnHandlersCallback) => {\n // This callback comes from JsonRpcEngine._runReturnHandlers\n returnHandlerCallback = runReturnHandlersCallback;\n resolveNextPromise();\n });\n return nextPromise;\n };\n\n try {\n await asyncMiddleware(request, response, asyncNext);\n\n if (nextWasCalled) {\n await nextPromise; // we must wait until the return handler is called\n (returnHandlerCallback as ReturnHandlerCallback)(null);\n } else {\n end(null);\n }\n } catch (error) {\n if (returnHandlerCallback) {\n (returnHandlerCallback as ReturnHandlerCallback)(error);\n } else {\n end(error);\n }\n }\n };\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkENMR2SJCjs = require('./chunk-ENMR2SJC.js');
3
+ var _chunkZYXL5TCSjs = require('./chunk-ZYXL5TCS.js');
4
4
  require('./chunk-Z4BLTVTB.js');
5
5
 
6
6
 
7
- exports.createAsyncMiddleware = _chunkENMR2SJCjs.createAsyncMiddleware;
7
+ exports.createAsyncMiddleware = _chunkZYXL5TCSjs.createAsyncMiddleware;
8
8
  //# sourceMappingURL=createAsyncMiddleware.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createAsyncMiddleware
3
- } from "./chunk-T4LUM46H.mjs";
3
+ } from "./chunk-KNT3O2VO.mjs";
4
4
  import "./chunk-XUI43LEZ.mjs";
5
5
  export {
6
6
  createAsyncMiddleware
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkENMR2SJCjs = require('./chunk-ENMR2SJC.js');
3
+ var _chunkZYXL5TCSjs = require('./chunk-ZYXL5TCS.js');
4
4
 
5
5
 
6
6
  var _chunk3AC2MINDjs = require('./chunk-3AC2MIND.js');
@@ -12,10 +12,10 @@ var _chunkPBQXMZM5js = require('./chunk-PBQXMZM5.js');
12
12
  var _chunkXDGWQHNYjs = require('./chunk-XDGWQHNY.js');
13
13
 
14
14
 
15
- var _chunkI2BVUFWRjs = require('./chunk-I2BVUFWR.js');
15
+ var _chunkVK4MHWJVjs = require('./chunk-VK4MHWJV.js');
16
16
 
17
17
 
18
- var _chunkIPW2SZMYjs = require('./chunk-IPW2SZMY.js');
18
+ var _chunk2LXAFMJDjs = require('./chunk-2LXAFMJD.js');
19
19
  require('./chunk-Z4BLTVTB.js');
20
20
 
21
21
 
@@ -24,5 +24,5 @@ require('./chunk-Z4BLTVTB.js');
24
24
 
25
25
 
26
26
 
27
- exports.JsonRpcEngine = _chunkIPW2SZMYjs.JsonRpcEngine; exports.createAsyncMiddleware = _chunkENMR2SJCjs.createAsyncMiddleware; exports.createIdRemapMiddleware = _chunkPBQXMZM5js.createIdRemapMiddleware; exports.createScaffoldMiddleware = _chunk3AC2MINDjs.createScaffoldMiddleware; exports.getUniqueId = _chunkXDGWQHNYjs.getUniqueId; exports.mergeMiddleware = _chunkI2BVUFWRjs.mergeMiddleware;
27
+ exports.JsonRpcEngine = _chunk2LXAFMJDjs.JsonRpcEngine; exports.createAsyncMiddleware = _chunkZYXL5TCSjs.createAsyncMiddleware; exports.createIdRemapMiddleware = _chunkPBQXMZM5js.createIdRemapMiddleware; exports.createScaffoldMiddleware = _chunk3AC2MINDjs.createScaffoldMiddleware; exports.getUniqueId = _chunkXDGWQHNYjs.getUniqueId; exports.mergeMiddleware = _chunkVK4MHWJVjs.mergeMiddleware;
28
28
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createAsyncMiddleware
3
- } from "./chunk-T4LUM46H.mjs";
3
+ } from "./chunk-KNT3O2VO.mjs";
4
4
  import {
5
5
  createScaffoldMiddleware
6
6
  } from "./chunk-KZ5RA76F.mjs";
@@ -12,10 +12,10 @@ import {
12
12
  } from "./chunk-6XXPTZV6.mjs";
13
13
  import {
14
14
  mergeMiddleware
15
- } from "./chunk-DRSLWOW3.mjs";
15
+ } from "./chunk-KFRJCTOQ.mjs";
16
16
  import {
17
17
  JsonRpcEngine
18
- } from "./chunk-SPJ5WO4C.mjs";
18
+ } from "./chunk-5HCYV4FV.mjs";
19
19
  import "./chunk-XUI43LEZ.mjs";
20
20
  export {
21
21
  JsonRpcEngine,
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkI2BVUFWRjs = require('./chunk-I2BVUFWR.js');
4
- require('./chunk-IPW2SZMY.js');
3
+ var _chunkVK4MHWJVjs = require('./chunk-VK4MHWJV.js');
4
+ require('./chunk-2LXAFMJD.js');
5
5
  require('./chunk-Z4BLTVTB.js');
6
6
 
7
7
 
8
- exports.mergeMiddleware = _chunkI2BVUFWRjs.mergeMiddleware;
8
+ exports.mergeMiddleware = _chunkVK4MHWJVjs.mergeMiddleware;
9
9
  //# sourceMappingURL=mergeMiddleware.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  mergeMiddleware
3
- } from "./chunk-DRSLWOW3.mjs";
4
- import "./chunk-SPJ5WO4C.mjs";
3
+ } from "./chunk-KFRJCTOQ.mjs";
4
+ import "./chunk-5HCYV4FV.mjs";
5
5
  import "./chunk-XUI43LEZ.mjs";
6
6
  export {
7
7
  mergeMiddleware
@@ -1 +1 @@
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.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.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","../../../types/eth-ens-namehash.d.ts","../../../types/ethereum-ens-network-map.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/superstruct/dist/error.d.ts","../../../node_modules/superstruct/dist/utils.d.ts","../../../node_modules/superstruct/dist/struct.d.ts","../../../node_modules/superstruct/dist/structs/coercions.d.ts","../../../node_modules/superstruct/dist/structs/refinements.d.ts","../../../node_modules/superstruct/dist/structs/types.d.ts","../../../node_modules/superstruct/dist/structs/utilities.d.ts","../../../node_modules/superstruct/dist/index.d.ts","../../../node_modules/@metamask/utils/dist/types/assert.d.ts","../../../node_modules/@metamask/utils/dist/types/base64.d.ts","../../../node_modules/@metamask/utils/dist/types/hex.d.ts","../../../node_modules/@metamask/utils/dist/types/bytes.d.ts","../../../node_modules/@metamask/utils/dist/types/caip-types.d.ts","../../../node_modules/@metamask/utils/dist/types/checksum.d.ts","../../../node_modules/@metamask/utils/dist/types/coercers.d.ts","../../../node_modules/@metamask/utils/dist/types/collections.d.ts","../../../node_modules/@metamask/utils/dist/types/encryption-types.d.ts","../../../node_modules/@metamask/utils/dist/types/errors.d.ts","../../../node_modules/@metamask/utils/dist/types/json.d.ts","../../../node_modules/@types/node/ts4.8/assert.d.ts","../../../node_modules/@types/node/ts4.8/assert/strict.d.ts","../../../node_modules/@types/node/ts4.8/globals.d.ts","../../../node_modules/@types/node/ts4.8/async_hooks.d.ts","../../../node_modules/@types/node/ts4.8/buffer.d.ts","../../../node_modules/@types/node/ts4.8/child_process.d.ts","../../../node_modules/@types/node/ts4.8/cluster.d.ts","../../../node_modules/@types/node/ts4.8/console.d.ts","../../../node_modules/@types/node/ts4.8/constants.d.ts","../../../node_modules/@types/node/ts4.8/crypto.d.ts","../../../node_modules/@types/node/ts4.8/dgram.d.ts","../../../node_modules/@types/node/ts4.8/diagnostics_channel.d.ts","../../../node_modules/@types/node/ts4.8/dns.d.ts","../../../node_modules/@types/node/ts4.8/dns/promises.d.ts","../../../node_modules/@types/node/ts4.8/domain.d.ts","../../../node_modules/@types/node/ts4.8/events.d.ts","../../../node_modules/@types/node/ts4.8/fs.d.ts","../../../node_modules/@types/node/ts4.8/fs/promises.d.ts","../../../node_modules/@types/node/ts4.8/http.d.ts","../../../node_modules/@types/node/ts4.8/http2.d.ts","../../../node_modules/@types/node/ts4.8/https.d.ts","../../../node_modules/@types/node/ts4.8/inspector.d.ts","../../../node_modules/@types/node/ts4.8/module.d.ts","../../../node_modules/@types/node/ts4.8/net.d.ts","../../../node_modules/@types/node/ts4.8/os.d.ts","../../../node_modules/@types/node/ts4.8/path.d.ts","../../../node_modules/@types/node/ts4.8/perf_hooks.d.ts","../../../node_modules/@types/node/ts4.8/process.d.ts","../../../node_modules/@types/node/ts4.8/punycode.d.ts","../../../node_modules/@types/node/ts4.8/querystring.d.ts","../../../node_modules/@types/node/ts4.8/readline.d.ts","../../../node_modules/@types/node/ts4.8/repl.d.ts","../../../node_modules/@types/node/ts4.8/stream.d.ts","../../../node_modules/@types/node/ts4.8/stream/promises.d.ts","../../../node_modules/@types/node/ts4.8/stream/consumers.d.ts","../../../node_modules/@types/node/ts4.8/stream/web.d.ts","../../../node_modules/@types/node/ts4.8/string_decoder.d.ts","../../../node_modules/@types/node/ts4.8/test.d.ts","../../../node_modules/@types/node/ts4.8/timers.d.ts","../../../node_modules/@types/node/ts4.8/timers/promises.d.ts","../../../node_modules/@types/node/ts4.8/tls.d.ts","../../../node_modules/@types/node/ts4.8/trace_events.d.ts","../../../node_modules/@types/node/ts4.8/tty.d.ts","../../../node_modules/@types/node/ts4.8/url.d.ts","../../../node_modules/@types/node/ts4.8/util.d.ts","../../../node_modules/@types/node/ts4.8/v8.d.ts","../../../node_modules/@types/node/ts4.8/vm.d.ts","../../../node_modules/@types/node/ts4.8/wasi.d.ts","../../../node_modules/@types/node/ts4.8/worker_threads.d.ts","../../../node_modules/@types/node/ts4.8/zlib.d.ts","../../../node_modules/@types/node/ts4.8/globals.global.d.ts","../../../node_modules/@types/node/ts4.8/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/types/keyring.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../../node_modules/@metamask/utils/dist/types/logging.d.ts","../../../node_modules/@metamask/utils/dist/types/misc.d.ts","../../../node_modules/@metamask/utils/dist/types/number.d.ts","../../../node_modules/@metamask/utils/dist/types/opaque.d.ts","../../../node_modules/@metamask/utils/dist/types/promise.d.ts","../../../node_modules/@metamask/utils/dist/types/time.d.ts","../../../node_modules/@metamask/utils/dist/types/transaction-types.d.ts","../../../node_modules/@metamask/utils/dist/types/versions.d.ts","../../../node_modules/@metamask/utils/dist/types/index.d.ts","../../../node_modules/@metamask/rpc-errors/dist/types/utils.d.ts","../../../node_modules/@metamask/rpc-errors/dist/types/classes.d.ts","../../../node_modules/@metamask/rpc-errors/dist/types/errors.d.ts","../../../node_modules/@metamask/rpc-errors/dist/types/error-constants.d.ts","../../../node_modules/@metamask/rpc-errors/dist/types/index.d.ts","../../../node_modules/@metamask/safe-event-emitter/index.d.ts","../src/JsonRpcEngine.ts","../src/createAsyncMiddleware.ts","../src/createScaffoldMiddleware.ts","../src/getUniqueId.ts","../src/idRemapMiddleware.ts","../src/mergeMiddleware.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/readable-stream/node_modules/safe-buffer/index.d.ts","../../../node_modules/@types/readable-stream/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":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"9b087de7268e4efc5f215347a62656663933d63c0b1d7b624913240367b999ea","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"70bbfaec021ac4a0c805374225b55d70887f987df8b8dd7711d79464bb7b4385","869089d60b67219f63e6aca810284c89bae1b384b5cbc7ce64e53d82ad223ed5",{"version":"18338b6a4b920ec7d49b4ffafcbf0fa8a86b4bfd432966efd722dab611157cf4","affectsGlobalScope":true},"62a0875a0397b35a2364f1d401c0ce17975dfa4d47bf6844de858ae04da349f9","ee7491d0318d1fafcba97d5b72b450eb52671570f7a4ecd9e8898d40eaae9472","e3e7d217d89b380c1f34395eadc9289542851b0f0a64007dfe1fb7cf7423d24e","fd79909e93b4d50fd0ed9f3d39ddf8ba0653290bac25c295aac49f6befbd081b","345a9cc2945406f53051cd0e9b51f82e1e53929848eab046fdda91ee8aa7da31","9debe2de883da37a914e5e784a7be54c201b8f1d783822ad6f443ff409a5ea21","dee5d5c5440cda1f3668f11809a5503c30db0476ad117dd450f7ba5a45300e8f","f5e396c1424c391078c866d6f84afe0b4d2f7f85a160b9c756cd63b5b1775d93","5caa6f4fff16066d377d4e254f6c34c16540da3809cd66cd626a303bc33c419f","730d055528bdf12c8524870bb33d237991be9084c57634e56e5d8075f6605e02","e475453e7140e95542332943d3052fe4c7430ad1efce42b3e9157f1fee8cbc5f","ebfdf904255ce746c9d30117c2edef355fb19bf7650478d2405f39f0e4f302e6","f3f63b48addb8e2ea9d20bb671c3c306413b3daa39996d0ae52f63d8e32158e1","a50599c08934a62f11657bdbe0dc929ab66da1b1f09974408fd9a33ec1bb8060","5a20e7d6c630b91be15e9b837853173829d00273197481dc8d3e94df61105a71","8d478048d71cc16f806d4b71b252ecb67c7444ccf4f4b09b29a312712184f859","b4000a0a525fa921e896cbdb32ae802c9684f0fd371b5fc69e7310f7918cc2c3","9df4662ca3dbc2522bc115833ee04faa1afbb4e249a85ef4a0a09c621346bd08","b25d9065cf1c1f537a140bbc508e953ed2262f77134574c432d206ff36f4bdbf","1b103313097041aa9cd705a682c652f08613cb5cf8663321061c0902f845e81c","68ccec8662818911d8a12b8ed028bc5729fb4f1d34793c4701265ba60bc73cf4","5f85b8b79dc4d36af672c035b2beb71545de63a5d60bccbeee64c260941672ab","affb9dc7079c3a3522e046c5dc1325950a843b1ebd7dc0f0386aeb2397b9f0db","40fe4b689225816b31fe5794c0fbf3534568819709e40295ead998a2bc1ab237","f65b5e33b9ad545a1eebbd6afe857314725ad42aaf069913e33f928ab3e4990a","fb6f2a87beb7fb1f4c2b762d0c76a9459fc91f557231569b0ee21399e22aa13d","31c858dc85996fac4b7fa944e1016d5c72f514930a72357ab5001097bf6511c7","3de30a871b3340be8b679c52aa12f90dd1c8c60874517be58968fdbcc4d79445","6fd985bd31eaf77542625306fb0404d32bff978990f0a06428e5f0b9a3b58109","34693fb4a5e771e11668219221344dd1bd7d8b77ed005a1c1d965fb559be8406","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419",{"version":"8c61d5fc50490af59daf69c4e601cc76de260ee5b2ff057d608a78d6acb0b61a","affectsGlobalScope":true},"f51b4042a3ac86f1f707500a9768f88d0b0c1fc3f3e45a73333283dea720cdc6",{"version":"a7289d79eb84a59d2475b4d0136b4404be3cfdd17c3ea46b9194add1d645df01","affectsGlobalScope":true},"0bb26fa2a90ee890eed57ee812c71fa84d3d07850163ec4a204de86412cc57c1","132ca47da601c60141dd6f10bd08c70d0620177e5638439df2464ec3945b6d98",{"version":"55d2bbae076fed7269c3e16faeb32f988f558427b7a1c3bf04aa7551ab86ae90","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","543c6e3a2353e9ad08b4090e1fb88a95cefb756d0d173b6ec045d7dc70a79964","3a41ebe7f089d50f447466b35b6cabb8b584c0994fc9809d0cd0a4ebc41e1239","f5350b93f10178838c23b3a81f3791d839bc44d1a2a89edb60069250fab90899","aa07f7230bcc5733919c941753d067cb8816dcad6651edb815cb302ae8ddd931","649ba4638a25c54a18dffe37367c6b7848a0bca53fa42fbbd7300b0c61aa861c","5f20d20b7607174caf1a6da9141aeb9f2142159ae2410ca30c7a0fccd1d19c99",{"version":"a34d65f61ec5aac5b53502c8b0bd4e00d217bccb95bf94d449e2571baa11fb8c","affectsGlobalScope":true},"8d42e5af5fb0a96a77e135ce84cc60636c9bad39d9dba043a4efe9d1bdeb3cc3","56fcc451e9065eb121c9cc4c1b9994a816306f3b0b3b1fce7ad59f0ac97a9999","d4a13a5a2e6df8ef02a84ac6fd5bad4a1ec54fdef47f33250da386ea6d5c1864","c3759b5bc5cc40f5988d86a497741a80fa91258629ae50a2b3735e774cd377cc","bf268a0aea37ad4ae3b7a9b58559190b6fc01ea16a31e35cd05817a0a60f895a","45dd82fb5aea9b12b2a90b427b28f3a014e8b2ee9b74087a5ab882841cb5fbc5",{"version":"d7dad6db394a3d9f7b49755e4b610fbf8ed6eb0c9810ae5f1a119f6b5d76de45","affectsGlobalScope":true},"48b2f9302651eb31acd5be69bb4e6b35797a7fcd6b77391d10a4ccadf7dc3609","605bed8af3052e790865a35e3d538a5447764a4ff01989c0f6b084a96f40e1cb","dd67d2b5e4e8a182a38de8e69fb736945eaa4588e0909c14e01a14bd3cc1fd1e",{"version":"2db274de1088f268805043df72e21258eae845e6418dada65331d2898998f330","affectsGlobalScope":true},{"version":"2923dee3c897f03e91b54a210cdbefea7290562f0ac4b948667d4c9ee844b79e","affectsGlobalScope":true},"79169698d09a2be54b14f3bcad2575b414bf3525063fde0a1e4fcd5d6efd380e","051d939bcf77caa3cef3282708ab3a6fdfb741a7366e1d74a9e7603b67417ec3","0be79b3ff0f16b6c2f9bc8c4cc7097ea417d8d67f8267f7e1eec8e32b548c2ff","1c61ffa3a71b77363b30d19832c269ef62fba787f5610cac7254728d3b69ab2e","f6877afc4b9d0b72e15378b187492a6547e48783980e9ff1301163b7b1c15b2e","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","09ed02a725db002693236b6dfc49b2c6eb5557be1421d7fbe4f07cfe38211d92","09d801ff4a303d4976d4b9cb94af3a9097c4a70345e662d176975872d2998e51","c8558b01389b5f7610ac293aa612ccea2ae64d83af43b49f8142f190be1f414c","c40fdf7b2e18df49ce0568e37f0292c12807a0748be79e272745e7216bed2606",{"version":"b10b426c56e220b5093bf8a2446ee47af47263b7b1a03f4b18e42326b231b111","affectsGlobalScope":true},"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","b4635ef36bee17e1304337d591c3b6b461ecdbc1876d0effbe6a581e62201fe5","205d50c24359ead003dc537b9b65d2a64208dfdffe368f403cf9e0357831db9e","1265fddcd0c68be9d2a3b29805d0280484c961264dd95e0b675f7bd91f777e78",{"version":"e4507242542bd499238f693d88b2d32e22177cc508854625f87bcc9bc3fa1256","affectsGlobalScope":true},{"version":"d942354e4966a98d3a92d1b1af0b4ac06f33af3f88116743e2c304c027ca26ef","affectsGlobalScope":true},"39f0808e5be3cb38674726c21fe2eb453c55e48a901679b4ce30fef85549b892","6afd66a7432ef100027ea110449e874196381e019e30eda7e7d8ca390366b7a8","befb8a9a78ac99d8fbc3ed392810489a7b90760c7a58934e8f1c8538f581cff3","e670bdf01540d35c170fae68edfd2f288eff909936780c379d6a9103b787b22c","867f95abf1df444aab146b19847391fc2f922a55f6a970a27ed8226766cee29f",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"e3685a8957b4e2af64c3f04a58289ee0858a649dbcd963a2b897fe85858ae18a","175323e2a79a6076e0bada8a390d535a3ea817158bf1b1f46e31efca9028a0a2","7a10053aadc19335532a4d02756db4865974fd69bea5439ddcc5bfdf062d9476","4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","aed9e712a9b168345362e8f3a949f16c99ca1e05d21328f05735dfdbb24414ef","b04fe6922ed3db93afdbd49cdda8576aa75f744592fceea96fb0d5f32158c4f5","ed8d6c8de90fc2a4faaebc28e91f2469928738efd5208fb75ade0fa607e892b7","d7c52b198d680fe65b1a8d1b001f0173ffa2536ca2e7082431d726ce1f6714cd","c07f251e1c4e415a838e5498380b55cfea94f3513229de292d2aa85ae52fc3e9","0ed401424892d6bf294a5374efe512d6951b54a71e5dd0290c55b6d0d915f6f7","b945be6da6a3616ef3a250bfe223362b1c7c6872e775b0c4d82a1bf7a28ff902","beea49237dd7c7110fabf3c7509919c9cb9da841d847c53cac162dc3479e2f87","0f45f8a529c450d8f394106cc622bff79e44a1716e1ac9c3cc68b43f7ecf65ee","c624ce90b04c27ce4f318ba6330d39bde3d4e306f0f497ce78d4bda5ab8e22ca","9b8253aa5cb2c82d505f72afdbf96e83b15cc6b9a6f4fadbbbab46210d5f1977","86a8f52e4b1ac49155e889376bcfa8528a634c90c27fec65aa0e949f77b740c5","aab5dd41c1e2316cc0b42a7dd15684f8582d5a1d16c0516276a2a8a7d0fecd9c","59948226626ee210045296ba1fc6cb0fe748d1ff613204e08e7157ab6862dee7","ec3e54d8b713c170fdc8110a7e4a6a97513a7ab6b05ac9e1100cb064d2bb7349","43beb30ecb39a603fde4376554887310b0699f25f7f39c5c91e3147b51bb3a26","666b77d7f06f49da114b090a399abbfa66d5b6c01a3fd9dc4f063a52ace28507","31997714a93fbc570f52d47d6a8ebfb021a34a68ea9ba58bbb69cdec9565657e","6032e4262822160128e644de3fc4410bcd7517c2f137525fd2623d2bb23cb0d3","8bd5c9b1016629c144fd228983395b9dbf0676a576716bc3d316cab612c33cd5","2ed90bd3925b23aed8f859ffd0e885250be0424ca2b57e9866dabef152e1d6b7","93f6bd17d92dab9db7897e1430a5aeaa03bcf51623156213d8397710367a76ce","3f62b770a42e8c47c7008726f95aa383e69d97e85e680d237b99fcb0ee601dd8","5b84cfe78028c35c3bb89c042f18bf08d09da11e82d275c378ae4d07d8477e6c","980d21b0081cbf81774083b1e3a46f4bbdcd2b68858df0f66d7fad9c82bc34bc","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","93b7325b49dfbf613d940ed0e471216657b2d77459dac34f1b5b1678f08f884c","b17f3bb7d8333479c7e45e5f3d876761b9bca58f97594eca3f6a944fd825e632","3c1f1236cce6d6e0c4e2c1b4371e6f72d7c14842ecd76a98ed0748ee5730c8f3","6d7f58d5ea72d7834946fd7104a734dc7d40661be8b2e1eaced1ddce3268ebaf","4c26222991e6c97d5a8f541d4f2c67585eda9e8b33cf9f52931b098045236e88","3140d587067e55ce4028275cf71b40a3fd431863ad148efc3106af84a0794cf9","47383b45796d525a4039cd22d2840ac55a1ff03a43d027f7f867ba7314a9cf53","6548773b3abbc18de29176c2141f766d4e437e40596ee480447abf83575445ad","6ddd27af0436ce59dd4c1896e2bfdb2bdb2529847d078b83ce67a144dff05491","816264799aef3fd5a09a3b6c25217d5ec26a9dfc7465eac7d6073bcdc7d88f3f","9f9e5bae412fa5909fae636d6733aee27a108cc2ed5b13980611016336774d3c","662fe197bba64bd3f17ee118058cd2d0d2dbe33d7c0c865fd6365d90bfc44e1e","030519c351f800551cac2658038804969ca4584d2c0175a710602ac234ca1340","0278a6939ca83cd040b08ff8c5fc7838b6693ddc52f22526bf158e6b10e0246c","c2d6206e5ba4fd3063b01218c2b3b997afc1cfbeb49fcee991fa8595842ce53d","fcc8beef29f39f09b1d9c9f99c42f9fed605ab1c28d2a630185f732b9ba53763",{"version":"2bc63f38e65dcef5c9eab3f96531b0bd3d63ec7b0f2820e5bf1399e9699a1fca","signature":"14fbf770a4b022c2f050d2140988ee8df0f4c96a0f970758cbd88c71b82cdf87"},{"version":"509e7b80fd39c00b68663903811261c4c4804908f13dc3672605669c62cb6eb8","signature":"aa33b971a2a5b33c05e603e2f7a7d50d004a8304b8df98bfd75c84d0e05d4cf5"},{"version":"3c0913724967da385abf69e4f50dc51d5de5ad7c13d8bedd6746063aab7dd6e0","signature":"4525777519f9dc16bacc951e16b5d48f23a975f2ab1b0161066f829aa9cf2554"},{"version":"1fdd00179cddca98c8cfa1c403016f6703a8c34858cfeda33769d86da188ff8d","signature":"b61f393bdbf923344adb8a683889a65fc615cc2b12565778c5605aa8fd6b607b"},{"version":"47ca123995420c8579f010179d3d5e61399ce538fc6386f2438193d48c0013b9","signature":"596def1ac1ab5af6f6d86d30c0e4cdea6c4b11d6595b2fb0849ab70fee65961f"},{"version":"599d6ebec95d21df7ee33d8eb8f0b791ffac4a32026f32cf91fdf417153be473","signature":"f9b859fb0396522c5c978fd57d7381c47fee6f066f75c32b06472ecf44a38890"},"323a75e01c89a50bb8827d1d624e72c20b0d81d4647a30ee6a695dbb4d76f3b5","a5aaeca001d2f69093d04aac4db321e4c338fd9b20cbc4f0b0af3dc6ae0f235b","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","8041cfce439ff29d339742389de04c136e3029d6b1817f07b2d7fcbfb7534990","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","29a46d003ca3c721e6405f00dee7e3de91b14e09701eba5d887bf76fb2d47d38","069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","8aceb205dcc6f814ad99635baf1e40b6e01d06d3fe27b72fd766c6d0b8c0c600","9990f9e566bc3c2c6e38df81294fb756e7f5b7b0e5bb17ab75384e190548b4b6",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"ee7d8894904b465b072be0d2e4b45cf6b887cdba16a467645c4e200982ece7ea","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","df95e00612c1faa5e0e7ef0dba589b18665bbeb3221db2b6cee1fe4d0e61921f","afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","7adecb2c3238794c378d336a8182d4c3dd2c4fa6fa1785e2797a3db550edea62","dc12dc0e5aa06f4e1a7692149b78f89116af823b9e1f1e4eae140cd3e0e674e6","1bfc6565b90c8771615cd8cfcf9b36efc0275e5e83ac7d9181307e96eb495161","8a8a96898906f065f296665e411f51010b51372fa260d5373bf9f64356703190","7f82ef88bdb67d9a850dd1c7cd2d690f33e0f0acd208e3c9eba086f3670d4f73",{"version":"ccfd8774cd9b929f63ff7dcf657977eb0652e3547f1fcac1b3a1dc5db22d4d58","affectsGlobalScope":true},"d92dc90fecd2552db74d8dc3c6fb4db9145b2aa0efe2c127236ba035969068d4","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","19c816167e076e7c24f074389c6cf3ed87bdbb917d1ea439ca281f9d26db2439","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","a73a445c1e0a6d0f8b48e8eb22dc9d647896783a7f8991cbbc31c0d94bf1f5a2","d88a5e779faf033be3d52142a04fbe1cb96009868e3bbdd296b2bc6c59e06c0e","cd1d2f103b79002cd94b85a640a103f094227a2c4c53bc8af1fdbf4e13d9729e","5e379df3d61561c2ed7789b5995b9ba2143bbba21a905e2381e16efe7d1fa424","f07a137bbe2de7a122c37bfea00e761975fb264c49f18003d398d71b3fb35a5f","3dce33e7eb25594863b8e615f14a45ab98190d85953436750644212d8a18c066","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","b9f96255e1048ed2ea33ec553122716f0e57fc1c3ad778e9aa15f5b46547bd23","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","a1a261624efb3a00ff346b13580f70f3463b8cdcc58b60f5793ff11785d52cab","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","9d92b037978bb9525bc4b673ebddd443277542e010c0aef019c03a170ccdaa73","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","fab58e600970e66547644a44bc9918e3223aa2cbd9e8763cec004b2cfb48827e","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","ed44ba6b95f08b758748be7902e0cc54178b1337c56d0e2469c77b03f63ac73b"],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"inlineSources":true,"module":1,"outDir":"./types","rootDir":"../src","sourceMap":true,"strict":true,"target":7},"fileIdsList":[[118,178],[118],[89,118,125,126,127,142],[118,126,127,143,144],[118,125,126],[118,125,142,145,148],[118,125,145,148,149],[118,146,147,148,150,151],[118,125,148],[118,125,142,145,146,147,150],[118,125,133],[118,125],[89,118,125],[78,118,125],[118,129,130,131,132,133,134,135,136,137,138,139,140,141],[118,125,131,132],[118,125,131,133],[118,164,165],[118,165,166],[118,165,166,167,168],[118,164],[62,118],[65,118],[62,65,118],[63,64,65,66,67,68,69,70,71,72,73,118,153,156,157,158,159,160,161,162,163],[56,62,63,118],[65,71,73,118,152],[118,155],[65,66,118],[62,118,159],[118,178,179,180,181,182],[118,178,180],[118,154],[118,186,187,188],[90,118,125],[118,191],[118,192],[118,203],[118,197,202],[118,206,208,209,210,211,212,213,214,215,216,217,218],[118,206,207,209,210,211,212,213,214,215,216,217,218],[118,207,208,209,210,211,212,213,214,215,216,217,218],[118,206,207,208,210,211,212,213,214,215,216,217,218],[118,206,207,208,209,211,212,213,214,215,216,217,218],[118,206,207,208,209,210,212,213,214,215,216,217,218],[118,206,207,208,209,210,211,213,214,215,216,217,218],[118,206,207,208,209,210,211,212,214,215,216,217,218],[118,206,207,208,209,210,211,212,213,215,216,217,218],[118,206,207,208,209,210,211,212,213,214,216,217,218],[118,206,207,208,209,210,211,212,213,214,215,217,218],[118,206,207,208,209,210,211,212,213,214,215,216,218],[118,206,207,208,209,210,211,212,213,214,215,216,217],[74,118],[77,118],[78,83,109,118],[79,89,90,97,106,117,118],[79,80,89,97,118],[81,118],[82,83,90,98,118],[83,106,114,118],[84,86,89,97,118],[85,118],[86,87,118],[88,89,118],[89,118],[89,90,91,106,117,118],[89,90,91,106,118],[92,97,106,117,118],[89,90,92,93,97,106,114,117,118],[92,94,106,114,117,118],[74,75,76,77,78,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],[89,95,118],[96,117,118,122],[86,89,97,106,118],[98,118],[99,118],[77,100,118],[101,116,118,122],[102,118],[103,118],[89,104,118],[104,105,118,120],[78,89,106,107,108,118],[78,106,108,118],[106,107,118],[109,118],[110,118],[89,112,113,118],[112,113,118],[83,97,114,118],[115,118],[97,116,118],[78,92,103,117,118],[83,118],[106,118,119],[118,120],[118,121],[78,83,89,91,100,106,117,118,120,122],[106,118,123],[118,125,224],[118,227,266],[118,227,251,266],[118,266],[118,227],[118,227,252,266],[118,227,228,229,230,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],[118,252,266],[118,267],[118,271],[118,195,198],[118,195,198,199,200],[118,197],[118,194,201],[118,196],[55,57,58,59,60,61,118],[55,56,118],[57,118],[56,57,118],[55,57,118],[118,164,169,170],[118,164,171],[118,164,171,174],[118,171,172,173,174,175,176],[164,170],[164,171]],"referencedMap":[[180,1],[178,2],[143,3],[126,2],[145,4],[127,5],[144,2],[149,6],[150,7],[146,7],[152,8],[147,7],[151,9],[148,10],[134,11],[131,12],[138,13],[132,11],[129,14],[137,2],[142,15],[139,2],[140,2],[141,2],[136,12],[133,16],[130,2],[135,17],[166,18],[168,2],[167,19],[169,20],[165,21],[170,13],[63,22],[64,22],[66,23],[67,22],[68,22],[69,24],[70,2],[71,2],[72,2],[65,22],[164,25],[73,26],[153,27],[156,28],[157,2],[158,2],[159,2],[160,2],[161,2],[162,29],[163,30],[183,31],[179,1],[181,32],[182,1],[184,12],[155,33],[185,2],[186,2],[189,34],[187,2],[190,35],[191,2],[192,36],[193,37],[204,38],[203,39],[188,2],[205,2],[207,40],[208,41],[206,42],[209,43],[210,44],[211,45],[212,46],[213,47],[214,48],[215,49],[216,50],[217,51],[218,52],[219,2],[154,2],[74,53],[75,53],[77,54],[78,55],[79,56],[80,57],[81,58],[82,59],[83,60],[84,61],[85,62],[86,63],[87,63],[88,64],[89,65],[90,66],[91,67],[76,2],[124,2],[92,68],[93,69],[94,70],[125,71],[95,72],[96,73],[97,74],[98,75],[99,76],[100,77],[101,78],[102,79],[103,80],[104,81],[105,82],[106,83],[108,84],[107,85],[109,86],[110,87],[111,2],[112,88],[113,89],[114,90],[115,91],[116,92],[117,93],[118,94],[119,95],[120,96],[121,97],[122,98],[123,99],[220,2],[221,12],[222,2],[223,2],[225,100],[224,2],[226,12],[251,101],[252,102],[227,103],[230,103],[249,101],[250,101],[240,101],[239,104],[237,101],[232,101],[245,101],[243,101],[247,101],[231,101],[244,101],[248,101],[233,101],[234,101],[246,101],[228,101],[235,101],[236,101],[238,101],[242,101],[253,105],[241,101],[229,101],[266,106],[265,2],[260,105],[262,107],[261,105],[254,105],[255,105],[257,105],[259,105],[263,107],[264,107],[256,107],[258,107],[268,108],[267,2],[269,2],[270,2],[271,2],[272,109],[128,2],[194,2],[195,2],[199,110],[201,111],[200,110],[198,112],[202,113],[197,114],[196,2],[55,2],[62,115],[57,116],[58,117],[59,117],[60,118],[61,118],[56,119],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[30,2],[31,2],[32,2],[33,2],[7,2],[34,2],[39,2],[40,2],[35,2],[36,2],[37,2],[38,2],[1,2],[41,2],[171,120],[172,121],[173,121],[174,2],[175,122],[177,123],[176,121],[46,2],[47,2],[48,2],[49,2],[50,2],[51,2],[42,2],[52,2],[53,2],[54,2],[43,2],[44,2],[45,2]],"exportedModulesMap":[[180,1],[178,2],[143,3],[126,2],[145,4],[127,5],[144,2],[149,6],[150,7],[146,7],[152,8],[147,7],[151,9],[148,10],[134,11],[131,12],[138,13],[132,11],[129,14],[137,2],[142,15],[139,2],[140,2],[141,2],[136,12],[133,16],[130,2],[135,17],[166,18],[168,2],[167,19],[169,20],[165,21],[170,13],[63,22],[64,22],[66,23],[67,22],[68,22],[69,24],[70,2],[71,2],[72,2],[65,22],[164,25],[73,26],[153,27],[156,28],[157,2],[158,2],[159,2],[160,2],[161,2],[162,29],[163,30],[183,31],[179,1],[181,32],[182,1],[184,12],[155,33],[185,2],[186,2],[189,34],[187,2],[190,35],[191,2],[192,36],[193,37],[204,38],[203,39],[188,2],[205,2],[207,40],[208,41],[206,42],[209,43],[210,44],[211,45],[212,46],[213,47],[214,48],[215,49],[216,50],[217,51],[218,52],[219,2],[154,2],[74,53],[75,53],[77,54],[78,55],[79,56],[80,57],[81,58],[82,59],[83,60],[84,61],[85,62],[86,63],[87,63],[88,64],[89,65],[90,66],[91,67],[76,2],[124,2],[92,68],[93,69],[94,70],[125,71],[95,72],[96,73],[97,74],[98,75],[99,76],[100,77],[101,78],[102,79],[103,80],[104,81],[105,82],[106,83],[108,84],[107,85],[109,86],[110,87],[111,2],[112,88],[113,89],[114,90],[115,91],[116,92],[117,93],[118,94],[119,95],[120,96],[121,97],[122,98],[123,99],[220,2],[221,12],[222,2],[223,2],[225,100],[224,2],[226,12],[251,101],[252,102],[227,103],[230,103],[249,101],[250,101],[240,101],[239,104],[237,101],[232,101],[245,101],[243,101],[247,101],[231,101],[244,101],[248,101],[233,101],[234,101],[246,101],[228,101],[235,101],[236,101],[238,101],[242,101],[253,105],[241,101],[229,101],[266,106],[265,2],[260,105],[262,107],[261,105],[254,105],[255,105],[257,105],[259,105],[263,107],[264,107],[256,107],[258,107],[268,108],[267,2],[269,2],[270,2],[271,2],[272,109],[128,2],[194,2],[195,2],[199,110],[201,111],[200,110],[198,112],[202,113],[197,114],[196,2],[55,2],[62,115],[57,116],[58,117],[59,117],[60,118],[61,118],[56,119],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[30,2],[31,2],[32,2],[33,2],[7,2],[34,2],[39,2],[40,2],[35,2],[36,2],[37,2],[38,2],[1,2],[41,2],[171,124],[172,125],[173,125],[175,125],[177,123],[176,125],[46,2],[47,2],[48,2],[49,2],[50,2],[51,2],[42,2],[52,2],[53,2],[54,2],[43,2],[44,2],[45,2]],"semanticDiagnosticsPerFile":[180,178,143,126,145,127,144,149,150,146,152,147,151,148,134,131,138,132,129,137,142,139,140,141,136,133,130,135,166,168,167,169,165,170,63,64,66,67,68,69,70,71,72,65,164,73,153,156,157,158,159,160,161,162,163,183,179,181,182,184,155,185,186,189,187,190,191,192,193,204,203,188,205,207,208,206,209,210,211,212,213,214,215,216,217,218,219,154,74,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,76,124,92,93,94,125,95,96,97,98,99,100,101,102,103,104,105,106,108,107,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,220,221,222,223,225,224,226,251,252,227,230,249,250,240,239,237,232,245,243,247,231,244,248,233,234,246,228,235,236,238,242,253,241,229,266,265,260,262,261,254,255,257,259,263,264,256,258,268,267,269,270,271,272,128,194,195,199,201,200,198,202,197,196,55,62,57,58,59,60,61,56,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,30,31,32,33,7,34,39,40,35,36,37,38,1,41,171,172,173,174,175,177,176,46,47,48,49,50,51,42,52,53,54,43,44,45],"latestChangedDtsFile":"./types/index.d.ts"},"version":"4.8.4"}
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.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.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../types/eth-ens-namehash.d.ts","../../../types/ethereum-ens-network-map.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/superstruct/dist/error.d.ts","../../../node_modules/superstruct/dist/utils.d.ts","../../../node_modules/superstruct/dist/struct.d.ts","../../../node_modules/superstruct/dist/structs/coercions.d.ts","../../../node_modules/superstruct/dist/structs/refinements.d.ts","../../../node_modules/superstruct/dist/structs/types.d.ts","../../../node_modules/superstruct/dist/structs/utilities.d.ts","../../../node_modules/superstruct/dist/index.d.ts","../../../node_modules/@metamask/utils/dist/types/assert.d.ts","../../../node_modules/@metamask/utils/dist/types/base64.d.ts","../../../node_modules/@metamask/utils/dist/types/hex.d.ts","../../../node_modules/@metamask/utils/dist/types/bytes.d.ts","../../../node_modules/@metamask/utils/dist/types/caip-types.d.ts","../../../node_modules/@metamask/utils/dist/types/checksum.d.ts","../../../node_modules/@metamask/utils/dist/types/coercers.d.ts","../../../node_modules/@metamask/utils/dist/types/collections.d.ts","../../../node_modules/@metamask/utils/dist/types/encryption-types.d.ts","../../../node_modules/@metamask/utils/dist/types/errors.d.ts","../../../node_modules/@metamask/utils/dist/types/json.d.ts","../../../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/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/types/keyring.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/debug/index.d.ts","../../../node_modules/@metamask/utils/dist/types/logging.d.ts","../../../node_modules/@metamask/utils/dist/types/misc.d.ts","../../../node_modules/@metamask/utils/dist/types/number.d.ts","../../../node_modules/@metamask/utils/dist/types/opaque.d.ts","../../../node_modules/@metamask/utils/dist/types/promise.d.ts","../../../node_modules/@metamask/utils/dist/types/time.d.ts","../../../node_modules/@metamask/utils/dist/types/transaction-types.d.ts","../../../node_modules/@metamask/utils/dist/types/versions.d.ts","../../../node_modules/@metamask/utils/dist/types/index.d.ts","../../../node_modules/@metamask/rpc-errors/dist/types/utils.d.ts","../../../node_modules/@metamask/rpc-errors/dist/types/classes.d.ts","../../../node_modules/@metamask/rpc-errors/dist/types/errors.d.ts","../../../node_modules/@metamask/rpc-errors/dist/types/error-constants.d.ts","../../../node_modules/@metamask/rpc-errors/dist/types/index.d.ts","../../../node_modules/@metamask/safe-event-emitter/index.d.ts","../src/JsonRpcEngine.ts","../src/createAsyncMiddleware.ts","../src/createScaffoldMiddleware.ts","../src/getUniqueId.ts","../src/idRemapMiddleware.ts","../src/mergeMiddleware.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/readable-stream/node_modules/safe-buffer/index.d.ts","../../../node_modules/@types/readable-stream/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":"8730f4bf322026ff5229336391a18bcaa1f94d4f82416c8b2f3954e2ccaae2ba","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","4b421cbfb3a38a27c279dec1e9112c3d1da296f77a1a85ddadf7e7a425d45d18","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"3aafcb693fe5b5c3bd277bd4c3a617b53db474fe498fc5df067c5603b1eebde7","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"5f406584aef28a331c36523df688ca3650288d14f39c5d2e555c95f0d2ff8f6f","affectsGlobalScope":true},{"version":"22f230e544b35349cfb3bd9110b6ef37b41c6d6c43c3314a31bd0d9652fcec72","affectsGlobalScope":true},{"version":"7ea0b55f6b315cf9ac2ad622b0a7813315bb6e97bf4bb3fbf8f8affbca7dc695","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"eb26de841c52236d8222f87e9e6a235332e0788af8c87a71e9e210314300410a","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"5e5e095c4470c8bab227dbbc61374878ecead104c74ab9960d3adcccfee23205","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"2768ef564cfc0689a1b76106c421a2909bdff0acbe87da010785adab80efdd5c","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"70bbfaec021ac4a0c805374225b55d70887f987df8b8dd7711d79464bb7b4385","869089d60b67219f63e6aca810284c89bae1b384b5cbc7ce64e53d82ad223ed5",{"version":"18338b6a4b920ec7d49b4ffafcbf0fa8a86b4bfd432966efd722dab611157cf4","affectsGlobalScope":true},"62a0875a0397b35a2364f1d401c0ce17975dfa4d47bf6844de858ae04da349f9","ee7491d0318d1fafcba97d5b72b450eb52671570f7a4ecd9e8898d40eaae9472","e3e7d217d89b380c1f34395eadc9289542851b0f0a64007dfe1fb7cf7423d24e","fd79909e93b4d50fd0ed9f3d39ddf8ba0653290bac25c295aac49f6befbd081b","345a9cc2945406f53051cd0e9b51f82e1e53929848eab046fdda91ee8aa7da31","9debe2de883da37a914e5e784a7be54c201b8f1d783822ad6f443ff409a5ea21","dee5d5c5440cda1f3668f11809a5503c30db0476ad117dd450f7ba5a45300e8f","f5e396c1424c391078c866d6f84afe0b4d2f7f85a160b9c756cd63b5b1775d93","5caa6f4fff16066d377d4e254f6c34c16540da3809cd66cd626a303bc33c419f","730d055528bdf12c8524870bb33d237991be9084c57634e56e5d8075f6605e02","e475453e7140e95542332943d3052fe4c7430ad1efce42b3e9157f1fee8cbc5f","ebfdf904255ce746c9d30117c2edef355fb19bf7650478d2405f39f0e4f302e6","f3f63b48addb8e2ea9d20bb671c3c306413b3daa39996d0ae52f63d8e32158e1","a50599c08934a62f11657bdbe0dc929ab66da1b1f09974408fd9a33ec1bb8060","5a20e7d6c630b91be15e9b837853173829d00273197481dc8d3e94df61105a71","8d478048d71cc16f806d4b71b252ecb67c7444ccf4f4b09b29a312712184f859","b4000a0a525fa921e896cbdb32ae802c9684f0fd371b5fc69e7310f7918cc2c3","9df4662ca3dbc2522bc115833ee04faa1afbb4e249a85ef4a0a09c621346bd08","b25d9065cf1c1f537a140bbc508e953ed2262f77134574c432d206ff36f4bdbf","1b103313097041aa9cd705a682c652f08613cb5cf8663321061c0902f845e81c","68ccec8662818911d8a12b8ed028bc5729fb4f1d34793c4701265ba60bc73cf4","5f85b8b79dc4d36af672c035b2beb71545de63a5d60bccbeee64c260941672ab","affb9dc7079c3a3522e046c5dc1325950a843b1ebd7dc0f0386aeb2397b9f0db","40fe4b689225816b31fe5794c0fbf3534568819709e40295ead998a2bc1ab237","f65b5e33b9ad545a1eebbd6afe857314725ad42aaf069913e33f928ab3e4990a","fb6f2a87beb7fb1f4c2b762d0c76a9459fc91f557231569b0ee21399e22aa13d","31c858dc85996fac4b7fa944e1016d5c72f514930a72357ab5001097bf6511c7","3de30a871b3340be8b679c52aa12f90dd1c8c60874517be58968fdbcc4d79445","6fd985bd31eaf77542625306fb0404d32bff978990f0a06428e5f0b9a3b58109","34693fb4a5e771e11668219221344dd1bd7d8b77ed005a1c1d965fb559be8406","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419",{"version":"e44ea2d6b7b853f6c81482416db43dafc11944561b810e469ae423085511ce7e","affectsGlobalScope":true},"f51b4042a3ac86f1f707500a9768f88d0b0c1fc3f3e45a73333283dea720cdc6",{"version":"a7289d79eb84a59d2475b4d0136b4404be3cfdd17c3ea46b9194add1d645df01","affectsGlobalScope":true},"0bb26fa2a90ee890eed57ee812c71fa84d3d07850163ec4a204de86412cc57c1","132ca47da601c60141dd6f10bd08c70d0620177e5638439df2464ec3945b6d98",{"version":"55d2bbae076fed7269c3e16faeb32f988f558427b7a1c3bf04aa7551ab86ae90","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","cf83847c9264dcd592b6c89c1542925b899b277228687f3638614e3fa784cf76","3a41ebe7f089d50f447466b35b6cabb8b584c0994fc9809d0cd0a4ebc41e1239","7693b90b3075deaccafd5efb467bf9f2b747a3075be888652ef73e64396d8628","0c42d6cba77d9ad1cf45256ccb8489aa502fe2dbee1ec9048a29d49f5d532e73","2cf89c17245db65d175d4ef699cd68187516f9b3ae5c572fc0b9ad60f35dc223","5f20d20b7607174caf1a6da9141aeb9f2142159ae2410ca30c7a0fccd1d19c99",{"version":"a34d65f61ec5aac5b53502c8b0bd4e00d217bccb95bf94d449e2571baa11fb8c","affectsGlobalScope":true},"8d42e5af5fb0a96a77e135ce84cc60636c9bad39d9dba043a4efe9d1bdeb3cc3","56fcc451e9065eb121c9cc4c1b9994a816306f3b0b3b1fce7ad59f0ac97a9999","8a6f12b74d3e6c4f5e1b918cb8e64ae16bc6756cf0d48bcc28a28e1bf26ca0cd","c3759b5bc5cc40f5988d86a497741a80fa91258629ae50a2b3735e774cd377cc","bf268a0aea37ad4ae3b7a9b58559190b6fc01ea16a31e35cd05817a0a60f895a","45dd82fb5aea9b12b2a90b427b28f3a014e8b2ee9b74087a5ab882841cb5fbc5",{"version":"d7dad6db394a3d9f7b49755e4b610fbf8ed6eb0c9810ae5f1a119f6b5d76de45","affectsGlobalScope":true},"48b2f9302651eb31acd5be69bb4e6b35797a7fcd6b77391d10a4ccadf7dc3609","0c8c917ef15498c827bd494a0ef365e9f76deb211f8acbb86932e20489310788","dd67d2b5e4e8a182a38de8e69fb736945eaa4588e0909c14e01a14bd3cc1fd1e",{"version":"9cdc2c6144b03822c9842505d09945bcf813b86827fdb260dd7586b63abc19bf","affectsGlobalScope":true},{"version":"2923dee3c897f03e91b54a210cdbefea7290562f0ac4b948667d4c9ee844b79e","affectsGlobalScope":true},"79169698d09a2be54b14f3bcad2575b414bf3525063fde0a1e4fcd5d6efd380e","051d939bcf77caa3cef3282708ab3a6fdfb741a7366e1d74a9e7603b67417ec3","0be79b3ff0f16b6c2f9bc8c4cc7097ea417d8d67f8267f7e1eec8e32b548c2ff","1c61ffa3a71b77363b30d19832c269ef62fba787f5610cac7254728d3b69ab2e","a234d62ae81d012ebf23898a45672edf3e5c93ecf5a438a42b96c08dd68cde43","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","09ed02a725db002693236b6dfc49b2c6eb5557be1421d7fbe4f07cfe38211d92","09d801ff4a303d4976d4b9cb94af3a9097c4a70345e662d176975872d2998e51","c8558b01389b5f7610ac293aa612ccea2ae64d83af43b49f8142f190be1f414c","c40fdf7b2e18df49ce0568e37f0292c12807a0748be79e272745e7216bed2606",{"version":"b10b426c56e220b5093bf8a2446ee47af47263b7b1a03f4b18e42326b231b111","affectsGlobalScope":true},"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","b4635ef36bee17e1304337d591c3b6b461ecdbc1876d0effbe6a581e62201fe5","205d50c24359ead003dc537b9b65d2a64208dfdffe368f403cf9e0357831db9e","1265fddcd0c68be9d2a3b29805d0280484c961264dd95e0b675f7bd91f777e78",{"version":"e4507242542bd499238f693d88b2d32e22177cc508854625f87bcc9bc3fa1256","affectsGlobalScope":true},{"version":"d942354e4966a98d3a92d1b1af0b4ac06f33af3f88116743e2c304c027ca26ef","affectsGlobalScope":true},"39f0808e5be3cb38674726c21fe2eb453c55e48a901679b4ce30fef85549b892","6afd66a7432ef100027ea110449e874196381e019e30eda7e7d8ca390366b7a8","befb8a9a78ac99d8fbc3ed392810489a7b90760c7a58934e8f1c8538f581cff3","e670bdf01540d35c170fae68edfd2f288eff909936780c379d6a9103b787b22c","867f95abf1df444aab146b19847391fc2f922a55f6a970a27ed8226766cee29f",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"88003d9ab15507806f41b120be6d407c1afe566c2f6689ebe3a034dd5ec0c8dc","175323e2a79a6076e0bada8a390d535a3ea817158bf1b1f46e31efca9028a0a2","7a10053aadc19335532a4d02756db4865974fd69bea5439ddcc5bfdf062d9476","4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","aed9e712a9b168345362e8f3a949f16c99ca1e05d21328f05735dfdbb24414ef","b04fe6922ed3db93afdbd49cdda8576aa75f744592fceea96fb0d5f32158c4f5","ed8d6c8de90fc2a4faaebc28e91f2469928738efd5208fb75ade0fa607e892b7","d7c52b198d680fe65b1a8d1b001f0173ffa2536ca2e7082431d726ce1f6714cd","c07f251e1c4e415a838e5498380b55cfea94f3513229de292d2aa85ae52fc3e9","0ed401424892d6bf294a5374efe512d6951b54a71e5dd0290c55b6d0d915f6f7","b945be6da6a3616ef3a250bfe223362b1c7c6872e775b0c4d82a1bf7a28ff902","beea49237dd7c7110fabf3c7509919c9cb9da841d847c53cac162dc3479e2f87","0f45f8a529c450d8f394106cc622bff79e44a1716e1ac9c3cc68b43f7ecf65ee","c624ce90b04c27ce4f318ba6330d39bde3d4e306f0f497ce78d4bda5ab8e22ca","9b8253aa5cb2c82d505f72afdbf96e83b15cc6b9a6f4fadbbbab46210d5f1977","86a8f52e4b1ac49155e889376bcfa8528a634c90c27fec65aa0e949f77b740c5","aab5dd41c1e2316cc0b42a7dd15684f8582d5a1d16c0516276a2a8a7d0fecd9c","59948226626ee210045296ba1fc6cb0fe748d1ff613204e08e7157ab6862dee7","ec3e54d8b713c170fdc8110a7e4a6a97513a7ab6b05ac9e1100cb064d2bb7349","43beb30ecb39a603fde4376554887310b0699f25f7f39c5c91e3147b51bb3a26","666b77d7f06f49da114b090a399abbfa66d5b6c01a3fd9dc4f063a52ace28507","31997714a93fbc570f52d47d6a8ebfb021a34a68ea9ba58bbb69cdec9565657e","6032e4262822160128e644de3fc4410bcd7517c2f137525fd2623d2bb23cb0d3","8bd5c9b1016629c144fd228983395b9dbf0676a576716bc3d316cab612c33cd5","2ed90bd3925b23aed8f859ffd0e885250be0424ca2b57e9866dabef152e1d6b7","93f6bd17d92dab9db7897e1430a5aeaa03bcf51623156213d8397710367a76ce","3f62b770a42e8c47c7008726f95aa383e69d97e85e680d237b99fcb0ee601dd8","5b84cfe78028c35c3bb89c042f18bf08d09da11e82d275c378ae4d07d8477e6c","980d21b0081cbf81774083b1e3a46f4bbdcd2b68858df0f66d7fad9c82bc34bc","6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","93b7325b49dfbf613d940ed0e471216657b2d77459dac34f1b5b1678f08f884c","b17f3bb7d8333479c7e45e5f3d876761b9bca58f97594eca3f6a944fd825e632","3c1f1236cce6d6e0c4e2c1b4371e6f72d7c14842ecd76a98ed0748ee5730c8f3","6d7f58d5ea72d7834946fd7104a734dc7d40661be8b2e1eaced1ddce3268ebaf","4c26222991e6c97d5a8f541d4f2c67585eda9e8b33cf9f52931b098045236e88","3140d587067e55ce4028275cf71b40a3fd431863ad148efc3106af84a0794cf9","47383b45796d525a4039cd22d2840ac55a1ff03a43d027f7f867ba7314a9cf53","6548773b3abbc18de29176c2141f766d4e437e40596ee480447abf83575445ad","6ddd27af0436ce59dd4c1896e2bfdb2bdb2529847d078b83ce67a144dff05491","816264799aef3fd5a09a3b6c25217d5ec26a9dfc7465eac7d6073bcdc7d88f3f","9f9e5bae412fa5909fae636d6733aee27a108cc2ed5b13980611016336774d3c","662fe197bba64bd3f17ee118058cd2d0d2dbe33d7c0c865fd6365d90bfc44e1e","030519c351f800551cac2658038804969ca4584d2c0175a710602ac234ca1340","0278a6939ca83cd040b08ff8c5fc7838b6693ddc52f22526bf158e6b10e0246c","c2d6206e5ba4fd3063b01218c2b3b997afc1cfbeb49fcee991fa8595842ce53d","fcc8beef29f39f09b1d9c9f99c42f9fed605ab1c28d2a630185f732b9ba53763",{"version":"e9d61a89974e5d8231edab199fe1a5f912a344febc74146611c013435f906de3","signature":"edd82680fc06857c9c68cbf2a51dac1e564abf6e76ec4e38b988d04d0ff51edb"},{"version":"813e6dc3098dc7b331ed17bb4a3f96cda83748e989a41c469160ef23776af0f4","signature":"157215532390e57958b0de473e7c7b9ca83d1c9b2fc4f81f6fba0fc90e48e142"},{"version":"3c0913724967da385abf69e4f50dc51d5de5ad7c13d8bedd6746063aab7dd6e0","signature":"3361c55fe7cdff8fa385bd78d5f352a2ac6a688f156d499b14285fba112372df"},{"version":"1fdd00179cddca98c8cfa1c403016f6703a8c34858cfeda33769d86da188ff8d","signature":"b61f393bdbf923344adb8a683889a65fc615cc2b12565778c5605aa8fd6b607b"},{"version":"47ca123995420c8579f010179d3d5e61399ce538fc6386f2438193d48c0013b9","signature":"596def1ac1ab5af6f6d86d30c0e4cdea6c4b11d6595b2fb0849ab70fee65961f"},{"version":"599d6ebec95d21df7ee33d8eb8f0b791ffac4a32026f32cf91fdf417153be473","signature":"f9b859fb0396522c5c978fd57d7381c47fee6f066f75c32b06472ecf44a38890"},"323a75e01c89a50bb8827d1d624e72c20b0d81d4647a30ee6a695dbb4d76f3b5","a5aaeca001d2f69093d04aac4db321e4c338fd9b20cbc4f0b0af3dc6ae0f235b","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","8041cfce439ff29d339742389de04c136e3029d6b1817f07b2d7fcbfb7534990","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","29a46d003ca3c721e6405f00dee7e3de91b14e09701eba5d887bf76fb2d47d38","069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","8aceb205dcc6f814ad99635baf1e40b6e01d06d3fe27b72fd766c6d0b8c0c600","9990f9e566bc3c2c6e38df81294fb756e7f5b7b0e5bb17ab75384e190548b4b6",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"ee7d8894904b465b072be0d2e4b45cf6b887cdba16a467645c4e200982ece7ea","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","df95e00612c1faa5e0e7ef0dba589b18665bbeb3221db2b6cee1fe4d0e61921f","afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","7adecb2c3238794c378d336a8182d4c3dd2c4fa6fa1785e2797a3db550edea62","dc12dc0e5aa06f4e1a7692149b78f89116af823b9e1f1e4eae140cd3e0e674e6","1bfc6565b90c8771615cd8cfcf9b36efc0275e5e83ac7d9181307e96eb495161","8a8a96898906f065f296665e411f51010b51372fa260d5373bf9f64356703190","7f82ef88bdb67d9a850dd1c7cd2d690f33e0f0acd208e3c9eba086f3670d4f73",{"version":"ccfd8774cd9b929f63ff7dcf657977eb0652e3547f1fcac1b3a1dc5db22d4d58","affectsGlobalScope":true},"d92dc90fecd2552db74d8dc3c6fb4db9145b2aa0efe2c127236ba035969068d4","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","19c816167e076e7c24f074389c6cf3ed87bdbb917d1ea439ca281f9d26db2439","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9",{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true},"8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","a73a445c1e0a6d0f8b48e8eb22dc9d647896783a7f8991cbbc31c0d94bf1f5a2","d88a5e779faf033be3d52142a04fbe1cb96009868e3bbdd296b2bc6c59e06c0e","cd1d2f103b79002cd94b85a640a103f094227a2c4c53bc8af1fdbf4e13d9729e","5e379df3d61561c2ed7789b5995b9ba2143bbba21a905e2381e16efe7d1fa424","f07a137bbe2de7a122c37bfea00e761975fb264c49f18003d398d71b3fb35a5f","3dce33e7eb25594863b8e615f14a45ab98190d85953436750644212d8a18c066","2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","b9f96255e1048ed2ea33ec553122716f0e57fc1c3ad778e9aa15f5b46547bd23","7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","a1a261624efb3a00ff346b13580f70f3463b8cdcc58b60f5793ff11785d52cab","f83b320cceccfc48457a818d18fc9a006ab18d0bdd727aa2c2e73dc1b4a45e98","9d92b037978bb9525bc4b673ebddd443277542e010c0aef019c03a170ccdaa73","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","fab58e600970e66547644a44bc9918e3223aa2cbd9e8763cec004b2cfb48827e","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","ed44ba6b95f08b758748be7902e0cc54178b1337c56d0e2469c77b03f63ac73b"],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"inlineSources":true,"module":1,"outDir":"./types","rootDir":"../src","sourceMap":true,"strict":true,"target":7},"fileIdsList":[[120,180],[120],[91,120,127,128,129,144],[120,128,129,145,146],[120,127,128],[120,127,144,147,150],[120,127,147,150,151],[120,148,149,150,152,153],[120,127,150],[120,127,144,147,148,149,152],[120,127,135],[120,127],[91,120,127],[80,120,127],[120,131,132,133,134,135,136,137,138,139,140,141,142,143],[120,127,133,134],[120,127,133,135],[120,166,167],[120,167,168],[120,167,168,169,170],[120,166],[64,120],[67,120],[64,67,120],[65,66,67,68,69,70,71,72,73,74,75,120,155,158,159,160,161,162,163,164,165],[58,64,65,120],[67,73,75,120,154],[120,157],[67,68,120],[64,120,161],[120,180,181,182,183,184],[120,180,182],[120,156],[120,188,189,190],[92,120,127],[120,193],[120,194],[120,205],[120,199,204],[120,208,210,211,212,213,214,215,216,217,218,219,220],[120,208,209,211,212,213,214,215,216,217,218,219,220],[120,209,210,211,212,213,214,215,216,217,218,219,220],[120,208,209,210,212,213,214,215,216,217,218,219,220],[120,208,209,210,211,213,214,215,216,217,218,219,220],[120,208,209,210,211,212,214,215,216,217,218,219,220],[120,208,209,210,211,212,213,215,216,217,218,219,220],[120,208,209,210,211,212,213,214,216,217,218,219,220],[120,208,209,210,211,212,213,214,215,217,218,219,220],[120,208,209,210,211,212,213,214,215,216,218,219,220],[120,208,209,210,211,212,213,214,215,216,217,219,220],[120,208,209,210,211,212,213,214,215,216,217,218,220],[120,208,209,210,211,212,213,214,215,216,217,218,219],[76,120],[79,120],[80,85,111,120],[81,91,92,99,108,119,120],[81,82,91,99,120],[83,120],[84,85,92,100,120],[85,108,116,120],[86,88,91,99,120],[87,120],[88,89,120],[90,91,120],[91,120],[91,92,93,108,119,120],[91,92,93,108,120],[91,94,99,108,119,120],[91,92,94,95,99,108,116,119,120],[94,96,108,116,119,120],[76,77,78,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],[91,97,120],[98,119,120,124],[88,91,99,108,120],[100,120],[101,120],[79,102,120],[103,118,120,124],[104,120],[105,120],[91,106,120],[106,107,120,122],[80,91,108,109,110,120],[80,108,110,120],[108,109,120],[111,120],[112,120],[91,114,115,120],[114,115,120],[85,99,116,120],[117,120],[99,118,120],[80,94,105,119,120],[85,120],[108,120,121],[120,122],[120,123],[80,85,91,93,102,108,119,120,122,124],[108,120,125],[120,127,226],[120,229,268],[120,229,253,268],[120,268],[120,229],[120,229,254,268],[120,229,230,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],[120,254,268],[120,269],[120,273],[120,197,200],[120,197,200,201,202],[120,199],[120,196,203],[120,198],[57,59,60,61,62,63,120],[57,58,120],[59,120],[58,59,120],[57,59,120],[120,166,171,172],[120,166,173],[120,166,173,176],[120,173,174,175,176,177,178],[166,172],[166,173]],"referencedMap":[[182,1],[180,2],[145,3],[128,2],[147,4],[129,5],[146,2],[151,6],[152,7],[148,7],[154,8],[149,7],[153,9],[150,10],[136,11],[133,12],[140,13],[134,11],[131,14],[139,2],[144,15],[141,2],[142,2],[143,2],[138,12],[135,16],[132,2],[137,17],[168,18],[170,2],[169,19],[171,20],[167,21],[172,13],[65,22],[66,22],[68,23],[69,22],[70,22],[71,24],[72,2],[73,2],[74,2],[67,22],[166,25],[75,26],[155,27],[158,28],[159,2],[160,2],[161,2],[162,2],[163,2],[164,29],[165,30],[185,31],[181,1],[183,32],[184,1],[186,12],[157,33],[187,2],[188,2],[191,34],[189,2],[192,35],[193,2],[194,36],[195,37],[206,38],[205,39],[190,2],[207,2],[209,40],[210,41],[208,42],[211,43],[212,44],[213,45],[214,46],[215,47],[216,48],[217,49],[218,50],[219,51],[220,52],[221,2],[156,2],[76,53],[77,53],[79,54],[80,55],[81,56],[82,57],[83,58],[84,59],[85,60],[86,61],[87,62],[88,63],[89,63],[90,64],[91,65],[92,66],[93,67],[78,2],[126,2],[94,68],[95,69],[96,70],[127,71],[97,72],[98,73],[99,74],[100,75],[101,76],[102,77],[103,78],[104,79],[105,80],[106,81],[107,82],[108,83],[110,84],[109,85],[111,86],[112,87],[113,2],[114,88],[115,89],[116,90],[117,91],[118,92],[119,93],[120,94],[121,95],[122,96],[123,97],[124,98],[125,99],[222,2],[223,12],[224,2],[225,2],[227,100],[226,2],[228,12],[253,101],[254,102],[229,103],[232,103],[251,101],[252,101],[242,101],[241,104],[239,101],[234,101],[247,101],[245,101],[249,101],[233,101],[246,101],[250,101],[235,101],[236,101],[248,101],[230,101],[237,101],[238,101],[240,101],[244,101],[255,105],[243,101],[231,101],[268,106],[267,2],[262,105],[264,107],[263,105],[256,105],[257,105],[259,105],[261,105],[265,107],[266,107],[258,107],[260,107],[270,108],[269,2],[271,2],[272,2],[273,2],[274,109],[130,2],[196,2],[197,2],[201,110],[203,111],[202,110],[200,112],[204,113],[199,114],[198,2],[57,2],[64,115],[59,116],[60,117],[61,117],[62,118],[63,118],[58,119],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[33,2],[30,2],[31,2],[32,2],[34,2],[7,2],[35,2],[40,2],[41,2],[36,2],[37,2],[38,2],[39,2],[42,2],[1,2],[43,2],[173,120],[174,121],[175,121],[176,2],[177,122],[179,123],[178,121],[48,2],[49,2],[50,2],[51,2],[52,2],[53,2],[44,2],[54,2],[55,2],[56,2],[45,2],[46,2],[47,2]],"exportedModulesMap":[[182,1],[180,2],[145,3],[128,2],[147,4],[129,5],[146,2],[151,6],[152,7],[148,7],[154,8],[149,7],[153,9],[150,10],[136,11],[133,12],[140,13],[134,11],[131,14],[139,2],[144,15],[141,2],[142,2],[143,2],[138,12],[135,16],[132,2],[137,17],[168,18],[170,2],[169,19],[171,20],[167,21],[172,13],[65,22],[66,22],[68,23],[69,22],[70,22],[71,24],[72,2],[73,2],[74,2],[67,22],[166,25],[75,26],[155,27],[158,28],[159,2],[160,2],[161,2],[162,2],[163,2],[164,29],[165,30],[185,31],[181,1],[183,32],[184,1],[186,12],[157,33],[187,2],[188,2],[191,34],[189,2],[192,35],[193,2],[194,36],[195,37],[206,38],[205,39],[190,2],[207,2],[209,40],[210,41],[208,42],[211,43],[212,44],[213,45],[214,46],[215,47],[216,48],[217,49],[218,50],[219,51],[220,52],[221,2],[156,2],[76,53],[77,53],[79,54],[80,55],[81,56],[82,57],[83,58],[84,59],[85,60],[86,61],[87,62],[88,63],[89,63],[90,64],[91,65],[92,66],[93,67],[78,2],[126,2],[94,68],[95,69],[96,70],[127,71],[97,72],[98,73],[99,74],[100,75],[101,76],[102,77],[103,78],[104,79],[105,80],[106,81],[107,82],[108,83],[110,84],[109,85],[111,86],[112,87],[113,2],[114,88],[115,89],[116,90],[117,91],[118,92],[119,93],[120,94],[121,95],[122,96],[123,97],[124,98],[125,99],[222,2],[223,12],[224,2],[225,2],[227,100],[226,2],[228,12],[253,101],[254,102],[229,103],[232,103],[251,101],[252,101],[242,101],[241,104],[239,101],[234,101],[247,101],[245,101],[249,101],[233,101],[246,101],[250,101],[235,101],[236,101],[248,101],[230,101],[237,101],[238,101],[240,101],[244,101],[255,105],[243,101],[231,101],[268,106],[267,2],[262,105],[264,107],[263,105],[256,105],[257,105],[259,105],[261,105],[265,107],[266,107],[258,107],[260,107],[270,108],[269,2],[271,2],[272,2],[273,2],[274,109],[130,2],[196,2],[197,2],[201,110],[203,111],[202,110],[200,112],[204,113],[199,114],[198,2],[57,2],[64,115],[59,116],[60,117],[61,117],[62,118],[63,118],[58,119],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[33,2],[30,2],[31,2],[32,2],[34,2],[7,2],[35,2],[40,2],[41,2],[36,2],[37,2],[38,2],[39,2],[42,2],[1,2],[43,2],[173,124],[174,125],[175,125],[177,125],[179,123],[178,125],[48,2],[49,2],[50,2],[51,2],[52,2],[53,2],[44,2],[54,2],[55,2],[56,2],[45,2],[46,2],[47,2]],"semanticDiagnosticsPerFile":[182,180,145,128,147,129,146,151,152,148,154,149,153,150,136,133,140,134,131,139,144,141,142,143,138,135,132,137,168,170,169,171,167,172,65,66,68,69,70,71,72,73,74,67,166,75,155,158,159,160,161,162,163,164,165,185,181,183,184,186,157,187,188,191,189,192,193,194,195,206,205,190,207,209,210,208,211,212,213,214,215,216,217,218,219,220,221,156,76,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,78,126,94,95,96,127,97,98,99,100,101,102,103,104,105,106,107,108,110,109,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,222,223,224,225,227,226,228,253,254,229,232,251,252,242,241,239,234,247,245,249,233,246,250,235,236,248,230,237,238,240,244,255,243,231,268,267,262,264,263,256,257,259,261,265,266,258,260,270,269,271,272,273,274,130,196,197,201,203,202,200,204,199,198,57,64,59,60,61,62,63,58,8,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,33,30,31,32,34,7,35,40,41,36,37,38,39,42,1,43,173,174,175,176,177,179,178,48,49,50,51,52,53,44,54,55,56,45,46,47],"latestChangedDtsFile":"./types/index.d.ts"},"version":"4.9.5"}
@@ -1,15 +1,15 @@
1
1
  import SafeEventEmitter from '@metamask/safe-event-emitter';
2
2
  import type { JsonRpcError as SerializedJsonRpcError, JsonRpcRequest, JsonRpcResponse, JsonRpcNotification, Json, JsonRpcParams, PendingJsonRpcResponse } from '@metamask/utils';
3
- export declare type JsonRpcEngineCallbackError = Error | SerializedJsonRpcError | null;
4
- export declare type JsonRpcEngineReturnHandler = (done: (error?: JsonRpcEngineCallbackError) => void) => void;
5
- export declare type JsonRpcEngineNextCallback = (returnHandlerCallback?: JsonRpcEngineReturnHandler) => void;
6
- export declare type JsonRpcEngineEndCallback = (error?: JsonRpcEngineCallbackError) => void;
7
- export declare type JsonRpcMiddleware<Params extends JsonRpcParams, Result extends Json> = {
3
+ export type JsonRpcEngineCallbackError = Error | SerializedJsonRpcError | null;
4
+ export type JsonRpcEngineReturnHandler = (done: (error?: unknown) => void) => void;
5
+ export type JsonRpcEngineNextCallback = (returnHandlerCallback?: JsonRpcEngineReturnHandler) => void;
6
+ export type JsonRpcEngineEndCallback = (error?: unknown) => void;
7
+ export type JsonRpcMiddleware<Params extends JsonRpcParams, Result extends Json> = {
8
8
  (req: JsonRpcRequest<Params>, res: PendingJsonRpcResponse<Result>, next: JsonRpcEngineNextCallback, end: JsonRpcEngineEndCallback): void;
9
9
  destroy?: () => void | Promise<void>;
10
10
  };
11
- export declare type JsonRpcNotificationHandler<Params extends JsonRpcParams> = (notification: JsonRpcNotification<Params>) => void | Promise<void>;
12
- declare type JsonRpcEngineArgs = {
11
+ export type JsonRpcNotificationHandler<Params extends JsonRpcParams> = (notification: JsonRpcNotification<Params>) => void | Promise<void>;
12
+ type JsonRpcEngineArgs = {
13
13
  /**
14
14
  * A function for handling JSON-RPC notifications. A JSON-RPC notification is
15
15
  * defined as a JSON-RPC request without an `id` property. If this option is
@@ -1 +1 @@
1
- {"version":3,"file":"JsonRpcEngine.d.ts","sourceRoot":"","sources":["../../src/JsonRpcEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JsonRpcEngine.d.ts","sourceRoot":"","sources":["../../src/JsonRpcEngine.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { Json, JsonRpcParams, JsonRpcRequest, PendingJsonRpcResponse } from '@metamask/utils';
2
2
  import type { JsonRpcMiddleware } from './JsonRpcEngine';
3
- export declare type AsyncJsonRpcEngineNextCallback = () => Promise<void>;
4
- export declare type AsyncJsonrpcMiddleware<Params extends JsonRpcParams, Result extends Json> = (request: JsonRpcRequest<Params>, response: PendingJsonRpcResponse<Result>, next: AsyncJsonRpcEngineNextCallback) => Promise<void>;
3
+ export type AsyncJsonRpcEngineNextCallback = () => Promise<void>;
4
+ export type AsyncJsonrpcMiddleware<Params extends JsonRpcParams, Result extends Json> = (request: JsonRpcRequest<Params>, response: PendingJsonRpcResponse<Result>, next: AsyncJsonRpcEngineNextCallback) => Promise<void>;
5
5
  /**
6
6
  * JsonRpcEngine only accepts callback-based middleware directly.
7
7
  * createAsyncMiddleware exists to enable consumers to pass in async middleware
@@ -1 +1 @@
1
- {"version":3,"file":"createAsyncMiddleware.d.ts","sourceRoot":"","sources":["../../src/createAsyncMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EACb,cAAc,EACd,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,oBAAY,8BAA8B,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEjE,oBAAY,sBAAsB,CAChC,MAAM,SAAS,aAAa,EAC5B,MAAM,SAAS,IAAI,IACjB,CACF,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,EAC/B,QAAQ,EAAE,sBAAsB,CAAC,MAAM,CAAC,EACxC,IAAI,EAAE,8BAA8B,KACjC,OAAO,CAAC,IAAI,CAAC,CAAC;AAInB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,SAAS,aAAa,EAC5B,MAAM,SAAS,IAAI,EAEnB,eAAe,EAAE,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,GACtD,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CA+CnC"}
1
+ {"version":3,"file":"createAsyncMiddleware.d.ts","sourceRoot":"","sources":["../../src/createAsyncMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,aAAa,EACb,cAAc,EACd,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,8BAA8B,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEjE,MAAM,MAAM,sBAAsB,CAChC,MAAM,SAAS,aAAa,EAC5B,MAAM,SAAS,IAAI,IACjB,CACF,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,EAC/B,QAAQ,EAAE,sBAAsB,CAAC,MAAM,CAAC,EACxC,IAAI,EAAE,8BAA8B,KACjC,OAAO,CAAC,IAAI,CAAC,CAAC;AAInB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,SAAS,aAAa,EAC5B,MAAM,SAAS,IAAI,EAEnB,eAAe,EAAE,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,GACtD,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CA6CnC"}
@@ -1,6 +1,6 @@
1
1
  import type { Json, JsonRpcParams } from '@metamask/utils';
2
2
  import type { JsonRpcMiddleware } from './JsonRpcEngine';
3
- declare type ScaffoldMiddlewareHandler<Params extends JsonRpcParams, Result extends Json> = JsonRpcMiddleware<Params, Result> | Json;
3
+ type ScaffoldMiddlewareHandler<Params extends JsonRpcParams, Result extends Json> = JsonRpcMiddleware<Params, Result> | Json;
4
4
  /**
5
5
  * Creates a middleware function from an object of RPC method handler functions,
6
6
  * keyed to particular method names. If a method corresponding to a key of this
@@ -1 +1 @@
1
- {"version":3,"file":"createScaffoldMiddleware.d.ts","sourceRoot":"","sources":["../../src/createScaffoldMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAkB,MAAM,iBAAiB,CAAC;AAE3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,aAAK,yBAAyB,CAC5B,MAAM,SAAS,aAAa,EAC5B,MAAM,SAAS,IAAI,IACjB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAE7C;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE;IACjD,CAAC,UAAU,EAAE,MAAM,GAAG,yBAAyB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;CACtE,GAAG,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CAgBzC"}
1
+ {"version":3,"file":"createScaffoldMiddleware.d.ts","sourceRoot":"","sources":["../../src/createScaffoldMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAkB,MAAM,iBAAiB,CAAC;AAE3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,KAAK,yBAAyB,CAC5B,MAAM,SAAS,aAAa,EAC5B,MAAM,SAAS,IAAI,IACjB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;AAE7C;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE;IACjD,CAAC,UAAU,EAAE,MAAM,GAAG,yBAAyB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;CACtE,GAAG,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CAgBzC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metamask-previews/json-rpc-engine",
3
- "version": "8.0.1-preview-68beceb0",
3
+ "version": "8.0.1-preview-59bf6d5d",
4
4
  "description": "A tool for processing JSON-RPC messages",
5
5
  "keywords": [
6
6
  "MetaMask",
@@ -63,7 +63,7 @@
63
63
  "jest-it-up": "^2.0.2",
64
64
  "ts-jest": "^27.1.4",
65
65
  "typedoc": "^0.24.8",
66
- "typescript": "~4.8.4"
66
+ "typescript": "~4.9.5"
67
67
  },
68
68
  "packageManager": "yarn@3.3.0",
69
69
  "engines": {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/createAsyncMiddleware.ts"],"names":[],"mappings":";AA2CO,SAAS,sBAId,iBACmC;AAEnC,SAAO,OAAO,SAAS,UAAU,MAAM,QAAQ;AAI7C,QAAI;AACJ,UAAM,cAAc,IAAI,QAAc,CAAC,YAAY;AACjD,2BAAqB;AAAA,IACvB,CAAC;AAED,QAAI,wBAAiC;AACrC,QAAI,gBAAgB;AAGpB,UAAM,YAAY,YAAY;AAC5B,sBAAgB;AAIhB,WAAK,CAAC,8BAA8B;AAElC,gCAAwB;AACxB,2BAAmB;AAAA,MACrB,CAAC;AACD,aAAO;AAAA,IACT;AAEA,QAAI;AACF,YAAM,gBAAgB,SAAS,UAAU,SAAS;AAElD,UAAI,eAAe;AACjB,cAAM;AACN,QAAC,sBAAgD,IAAI;AAAA,MACvD,OAAO;AACL,YAAI,IAAI;AAAA,MACV;AAAA,IAGF,SAAS,OAAY;AACnB,UAAI,uBAAuB;AACzB,QAAC,sBAAgD,KAAK;AAAA,MACxD,OAAO;AACL,YAAI,KAAK;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF","sourcesContent":["import type {\n Json,\n JsonRpcParams,\n JsonRpcRequest,\n PendingJsonRpcResponse,\n} from '@metamask/utils';\n\nimport type { JsonRpcMiddleware } from './JsonRpcEngine';\n\nexport type AsyncJsonRpcEngineNextCallback = () => Promise<void>;\n\nexport type AsyncJsonrpcMiddleware<\n Params extends JsonRpcParams,\n Result extends Json,\n> = (\n request: JsonRpcRequest<Params>,\n response: PendingJsonRpcResponse<Result>,\n next: AsyncJsonRpcEngineNextCallback,\n) => Promise<void>;\n\ntype ReturnHandlerCallback = (error: null | Error) => void;\n\n/**\n * JsonRpcEngine only accepts callback-based middleware directly.\n * createAsyncMiddleware exists to enable consumers to pass in async middleware\n * functions.\n *\n * Async middleware have no \"end\" function. Instead, they \"end\" if they return\n * without calling \"next\". Rather than passing in explicit return handlers,\n * async middleware can simply await \"next\", and perform operations on the\n * response object when execution resumes.\n *\n * To accomplish this, createAsyncMiddleware passes the async middleware a\n * wrapped \"next\" function. That function calls the internal JsonRpcEngine\n * \"next\" function with a return handler that resolves a promise when called.\n *\n * The return handler will always be called. Its resolution of the promise\n * enables the control flow described above.\n *\n * @param asyncMiddleware - The asynchronous middleware function to wrap.\n * @returns The wrapped asynchronous middleware function, ready to be consumed\n * by JsonRpcEngine.\n */\nexport function createAsyncMiddleware<\n Params extends JsonRpcParams,\n Result extends Json,\n>(\n asyncMiddleware: AsyncJsonrpcMiddleware<Params, Result>,\n): JsonRpcMiddleware<Params, Result> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async (request, response, next, end) => {\n // nextPromise is the key to the implementation\n // it is resolved by the return handler passed to the\n // \"next\" function\n let resolveNextPromise: () => void;\n const nextPromise = new Promise<void>((resolve) => {\n resolveNextPromise = resolve;\n });\n\n let returnHandlerCallback: unknown = null;\n let nextWasCalled = false;\n\n // This will be called by the consumer's async middleware.\n const asyncNext = async () => {\n nextWasCalled = true;\n\n // We pass a return handler to next(). When it is called by the engine,\n // the consumer's async middleware will resume executing.\n next((runReturnHandlersCallback) => {\n // This callback comes from JsonRpcEngine._runReturnHandlers\n returnHandlerCallback = runReturnHandlersCallback;\n resolveNextPromise();\n });\n return nextPromise;\n };\n\n try {\n await asyncMiddleware(request, response, asyncNext);\n\n if (nextWasCalled) {\n await nextPromise; // we must wait until the return handler is called\n (returnHandlerCallback as ReturnHandlerCallback)(null);\n } else {\n end(null);\n }\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n if (returnHandlerCallback) {\n (returnHandlerCallback as ReturnHandlerCallback)(error);\n } else {\n end(error);\n }\n }\n };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/JsonRpcEngine.ts"],"names":["_a","error"],"mappings":"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","sourcesContent":["import { errorCodes, JsonRpcError, serializeError } from '@metamask/rpc-errors';\nimport SafeEventEmitter from '@metamask/safe-event-emitter';\nimport type {\n JsonRpcError as SerializedJsonRpcError,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcNotification,\n Json,\n JsonRpcParams,\n PendingJsonRpcResponse,\n} from '@metamask/utils';\nimport { hasProperty, isJsonRpcRequest } from '@metamask/utils';\n\nexport type JsonRpcEngineCallbackError = Error | SerializedJsonRpcError | null;\n\nexport type JsonRpcEngineReturnHandler = (\n done: (error?: JsonRpcEngineCallbackError) => void,\n) => void;\n\nexport type JsonRpcEngineNextCallback = (\n returnHandlerCallback?: JsonRpcEngineReturnHandler,\n) => void;\n\nexport type JsonRpcEngineEndCallback = (\n error?: JsonRpcEngineCallbackError,\n) => void;\n\nexport type JsonRpcMiddleware<\n Params extends JsonRpcParams,\n Result extends Json,\n> = {\n (\n req: JsonRpcRequest<Params>,\n res: PendingJsonRpcResponse<Result>,\n next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n ): void;\n destroy?: () => void | Promise<void>;\n};\n\nconst DESTROYED_ERROR_MESSAGE =\n 'This engine is destroyed and can no longer be used.';\n\nexport type JsonRpcNotificationHandler<Params extends JsonRpcParams> = (\n notification: JsonRpcNotification<Params>,\n) => void | Promise<void>;\n\ntype JsonRpcEngineArgs = {\n /**\n * A function for handling JSON-RPC notifications. A JSON-RPC notification is\n * defined as a JSON-RPC request without an `id` property. If this option is\n * _not_ provided, notifications will be treated the same as requests. If this\n * option _is_ provided, notifications will be passed to the handler\n * function without touching the engine's middleware stack.\n *\n * This function should not throw or reject.\n */\n notificationHandler?: JsonRpcNotificationHandler<JsonRpcParams>;\n};\n\n/**\n * A JSON-RPC request and response processor.\n * Give it a stack of middleware, pass it requests, and get back responses.\n */\nexport class JsonRpcEngine extends SafeEventEmitter {\n /**\n * Indicating whether this engine is destroyed or not.\n */\n #isDestroyed = false;\n\n #middleware: JsonRpcMiddleware<JsonRpcParams, Json>[];\n\n readonly #notificationHandler?:\n | JsonRpcNotificationHandler<JsonRpcParams>\n | undefined;\n\n /**\n * Constructs a {@link JsonRpcEngine} instance.\n *\n * @param options - Options bag.\n * @param options.notificationHandler - A function for handling JSON-RPC\n * notifications. A JSON-RPC notification is defined as a JSON-RPC request\n * without an `id` property. If this option is _not_ provided, notifications\n * will be treated the same as requests. If this option _is_ provided,\n * notifications will be passed to the handler function without touching\n * the engine's middleware stack. This function should not throw or reject.\n */\n constructor({ notificationHandler }: JsonRpcEngineArgs = {}) {\n super();\n this.#middleware = [];\n this.#notificationHandler = notificationHandler;\n }\n\n /**\n * Throws an error if this engine is destroyed.\n */\n #assertIsNotDestroyed() {\n if (this.#isDestroyed) {\n throw new Error(DESTROYED_ERROR_MESSAGE);\n }\n }\n\n /**\n * Calls the `destroy()` function of any middleware with that property, clears\n * the middleware array, and marks this engine as destroyed. A destroyed\n * engine cannot be used.\n */\n destroy(): void {\n this.#middleware.forEach(\n (middleware: JsonRpcMiddleware<JsonRpcParams, Json>) => {\n if (\n // `in` walks the prototype chain, which is probably the desired\n // behavior here.\n 'destroy' in middleware &&\n typeof middleware.destroy === 'function'\n ) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n middleware.destroy();\n }\n },\n );\n this.#middleware = [];\n this.#isDestroyed = true;\n }\n\n /**\n * Add a middleware function to the engine's middleware stack.\n *\n * @param middleware - The middleware function to add.\n */\n push<Params extends JsonRpcParams, Result extends Json>(\n middleware: JsonRpcMiddleware<Params, Result>,\n ): void {\n this.#assertIsNotDestroyed();\n this.#middleware.push(middleware as JsonRpcMiddleware<JsonRpcParams, Json>);\n }\n\n /**\n * Handle a JSON-RPC request, and return a response.\n *\n * @param request - The request to handle.\n * @param callback - An error-first callback that will receive the response.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n request: JsonRpcRequest<Params>,\n callback: (error: unknown, response: JsonRpcResponse<Result>) => void,\n ): void;\n\n /**\n * Handle a JSON-RPC notification.\n *\n * @param notification - The notification to handle.\n * @param callback - An error-first callback that will receive a `void` response.\n */\n handle<Params extends JsonRpcParams>(\n notification: JsonRpcNotification<Params>,\n callback: (error: unknown, response: void) => void,\n ): void;\n\n /**\n * Handle an array of JSON-RPC requests and/or notifications, and return an\n * array of responses to any included requests.\n *\n * @param request - The requests to handle.\n * @param callback - An error-first callback that will receive the array of\n * responses.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n requests: (JsonRpcRequest<Params> | JsonRpcNotification<Params>)[],\n callback: (error: unknown, responses: JsonRpcResponse<Result>[]) => void,\n ): void;\n\n /**\n * Handle a JSON-RPC request, and return a response.\n *\n * @param request - The JSON-RPC request to handle.\n * @returns The JSON-RPC response.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n request: JsonRpcRequest<Params>,\n ): Promise<JsonRpcResponse<Result>>;\n\n /**\n * Handle a JSON-RPC notification.\n *\n * @param notification - The notification to handle.\n */\n handle<Params extends JsonRpcParams>(\n notification: JsonRpcNotification<Params>,\n ): Promise<void>;\n\n /**\n * Handle an array of JSON-RPC requests and/or notifications, and return an\n * array of responses to any included requests.\n *\n * @param request - The JSON-RPC requests to handle.\n * @returns An array of JSON-RPC responses.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n requests: (JsonRpcRequest<Params> | JsonRpcNotification<Params>)[],\n ): Promise<JsonRpcResponse<Result>[]>;\n\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handle(req: unknown, callback?: any) {\n this.#assertIsNotDestroyed();\n\n if (callback && typeof callback !== 'function') {\n throw new Error('\"callback\" must be a function if provided.');\n }\n\n if (Array.isArray(req)) {\n if (callback) {\n return this.#handleBatch(req, callback);\n }\n return this.#handleBatch(req);\n }\n\n if (callback) {\n return this.#handle(req as JsonRpcRequest, callback);\n }\n return this._promiseHandle(req as JsonRpcRequest);\n }\n\n /**\n * Returns this engine as a middleware function that can be pushed to other\n * engines.\n *\n * @returns This engine as a middleware function.\n */\n asMiddleware(): JsonRpcMiddleware<JsonRpcParams, Json> {\n this.#assertIsNotDestroyed();\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async (req, res, next, end) => {\n try {\n const [middlewareError, isComplete, returnHandlers] =\n await JsonRpcEngine.#runAllMiddleware(req, res, this.#middleware);\n\n if (isComplete) {\n await JsonRpcEngine.#runReturnHandlers(returnHandlers);\n return end(middlewareError as JsonRpcEngineCallbackError);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return next(async (handlerCallback) => {\n try {\n await JsonRpcEngine.#runReturnHandlers(returnHandlers);\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n return handlerCallback(error);\n }\n return handlerCallback();\n });\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n return end(error);\n }\n };\n }\n\n /**\n * Like _handle, but for batch requests.\n */\n #handleBatch(\n reqs: (JsonRpcRequest | JsonRpcNotification)[],\n ): Promise<JsonRpcResponse<Json>[]>;\n\n /**\n * Like _handle, but for batch requests.\n */\n #handleBatch(\n reqs: (JsonRpcRequest | JsonRpcNotification)[],\n callback: (error: unknown, responses?: JsonRpcResponse<Json>[]) => void,\n ): Promise<void>;\n\n /**\n * Handles a batch of JSON-RPC requests, either in `async` or callback\n * fashion.\n *\n * @param requests - The request objects to process.\n * @param callback - The completion callback.\n * @returns The array of responses, or nothing if a callback was specified.\n */\n async #handleBatch(\n requests: (JsonRpcRequest | JsonRpcNotification)[],\n callback?: (error: unknown, responses?: JsonRpcResponse<Json>[]) => void,\n ): Promise<JsonRpcResponse<Json>[] | void> {\n // The order here is important\n try {\n // If the batch is an empty array, the response array must contain a single object\n if (requests.length === 0) {\n const response: JsonRpcResponse<Json>[] = [\n {\n id: null,\n jsonrpc: '2.0',\n error: new JsonRpcError(\n errorCodes.rpc.invalidRequest,\n 'Request batch must contain plain objects. Received an empty array',\n ),\n },\n ];\n if (callback) {\n return callback(null, response);\n }\n return response;\n }\n\n // 2. Wait for all requests to finish, or throw on some kind of fatal\n // error\n const responses = (\n await Promise.all(\n // 1. Begin executing each request in the order received\n requests.map(this._promiseHandle.bind(this)),\n )\n ).filter(\n // Filter out any notification responses.\n (response) => response !== undefined,\n ) as JsonRpcResponse<Json>[];\n\n // 3. Return batch response\n if (callback) {\n return callback(null, responses);\n }\n return responses;\n } catch (error) {\n if (callback) {\n return callback(error);\n }\n\n throw error;\n }\n }\n\n /**\n * A promise-wrapped _handle.\n *\n * @param request - The JSON-RPC request.\n * @returns The JSON-RPC response.\n */\n // This function is used in tests, so we cannot easily change it to use the\n // hash syntax.\n // eslint-disable-next-line no-restricted-syntax\n private async _promiseHandle(\n request: JsonRpcRequest | JsonRpcNotification,\n ): Promise<JsonRpcResponse<Json> | void> {\n return new Promise((resolve, reject) => {\n this.#handle(request, (error, res) => {\n // For notifications, the response will be `undefined`, and any caught\n // errors are unexpected and should be surfaced to the caller.\n if (error && res === undefined) {\n reject(error);\n } else {\n // Excepting notifications, there will always be a response, and it will\n // always have any error that is caught and propagated.\n resolve(res);\n }\n }).catch(reject);\n });\n }\n\n /**\n * Ensures that the request / notification object is valid, processes it, and\n * passes any error and response object to the given callback.\n *\n * Does not reject.\n *\n * @param callerReq - The request object from the caller.\n * @param callback - The callback function.\n * @returns Nothing.\n */\n async #handle(\n callerReq: JsonRpcRequest | JsonRpcNotification,\n callback: (error?: unknown, response?: JsonRpcResponse<Json>) => void,\n ): Promise<void> {\n if (\n !callerReq ||\n Array.isArray(callerReq) ||\n typeof callerReq !== 'object'\n ) {\n const error = new JsonRpcError(\n errorCodes.rpc.invalidRequest,\n `Requests must be plain objects. Received: ${typeof callerReq}`,\n { request: callerReq },\n );\n return callback(error, { id: null, jsonrpc: '2.0', error });\n }\n\n if (typeof callerReq.method !== 'string') {\n const error = new JsonRpcError(\n errorCodes.rpc.invalidRequest,\n `Must specify a string method. Received: ${typeof callerReq.method}`,\n { request: callerReq as Json },\n );\n\n if (this.#notificationHandler && !isJsonRpcRequest(callerReq)) {\n // Do not reply to notifications, even if they are malformed.\n return callback(null);\n }\n\n return callback(error, {\n // Typecast: This could be a notification, but we want to access the\n // `id` even if it doesn't exist.\n id: (callerReq as JsonRpcRequest).id ?? null,\n jsonrpc: '2.0',\n error,\n });\n }\n\n // Handle notifications.\n // We can't use isJsonRpcNotification here because that narrows callerReq to\n // \"never\" after the if clause for unknown reasons.\n if (this.#notificationHandler && !isJsonRpcRequest(callerReq)) {\n try {\n await this.#notificationHandler(callerReq);\n } catch (error) {\n return callback(error);\n }\n return callback(null);\n }\n\n let error: JsonRpcEngineCallbackError = null;\n\n // Handle requests.\n // Typecast: Permit missing id's for backwards compatibility.\n const req = { ...(callerReq as JsonRpcRequest) };\n const res: PendingJsonRpcResponse<Json> = {\n id: req.id,\n jsonrpc: req.jsonrpc,\n };\n\n try {\n await JsonRpcEngine.#processRequest(req, res, this.#middleware);\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (_error: any) {\n // A request handler error, a re-thrown middleware error, or something\n // unexpected.\n error = _error;\n }\n\n if (error) {\n // Ensure no result is present on an errored response\n delete res.result;\n if (!res.error) {\n res.error = serializeError(error);\n }\n }\n\n return callback(error, res as JsonRpcResponse<Json>);\n }\n\n /**\n * For the given request and response, runs all middleware and their return\n * handlers, if any, and ensures that internal request processing semantics\n * are satisfied.\n *\n * @param req - The request object.\n * @param res - The response object.\n * @param middlewares - The stack of middleware functions.\n */\n static async #processRequest(\n req: JsonRpcRequest,\n res: PendingJsonRpcResponse<Json>,\n middlewares: JsonRpcMiddleware<JsonRpcParams, Json>[],\n ): Promise<void> {\n const [error, isComplete, returnHandlers] =\n await JsonRpcEngine.#runAllMiddleware(req, res, middlewares);\n\n // Throw if \"end\" was not called, or if the response has neither a result\n // nor an error.\n JsonRpcEngine.#checkForCompletion(req, res, isComplete);\n\n // The return handlers should run even if an error was encountered during\n // middleware processing.\n await JsonRpcEngine.#runReturnHandlers(returnHandlers);\n\n // Now we re-throw the middleware processing error, if any, to catch it\n // further up the call chain.\n if (error) {\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw error;\n }\n }\n\n /**\n * Serially executes the given stack of middleware.\n *\n * @param req - The request object.\n * @param res - The response object.\n * @param middlewares - The stack of middleware functions to execute.\n * @returns An array of any error encountered during middleware execution,\n * a boolean indicating whether the request was completed, and an array of\n * middleware-defined return handlers.\n */\n static async #runAllMiddleware(\n req: JsonRpcRequest,\n res: PendingJsonRpcResponse<Json>,\n middlewares: JsonRpcMiddleware<JsonRpcParams, Json>[],\n ): Promise<\n [\n unknown, // error\n boolean, // isComplete\n JsonRpcEngineReturnHandler[],\n ]\n > {\n const returnHandlers: JsonRpcEngineReturnHandler[] = [];\n let error = null;\n let isComplete = false;\n\n // Go down stack of middleware, call and collect optional returnHandlers\n for (const middleware of middlewares) {\n [error, isComplete] = await JsonRpcEngine.#runMiddleware(\n req,\n res,\n middleware,\n returnHandlers,\n );\n\n if (isComplete) {\n break;\n }\n }\n return [error, isComplete, returnHandlers.reverse()];\n }\n\n /**\n * Runs an individual middleware function.\n *\n * @param request - The request object.\n * @param response - The response object.\n * @param middleware - The middleware function to execute.\n * @param returnHandlers - The return handlers array for the current request.\n * @returns An array of any error encountered during middleware exection,\n * and a boolean indicating whether the request should end.\n */\n static async #runMiddleware(\n request: JsonRpcRequest,\n response: PendingJsonRpcResponse<Json>,\n middleware: JsonRpcMiddleware<JsonRpcParams, Json>,\n returnHandlers: JsonRpcEngineReturnHandler[],\n ): Promise<[unknown, boolean]> {\n return new Promise((resolve) => {\n const end: JsonRpcEngineEndCallback = (error?: unknown) => {\n const parsedError = error || response.error;\n if (parsedError) {\n response.error = serializeError(parsedError);\n }\n // True indicates that the request should end\n resolve([parsedError, true]);\n };\n\n const next: JsonRpcEngineNextCallback = (\n returnHandler?: JsonRpcEngineReturnHandler,\n ) => {\n if (response.error) {\n end(response.error);\n } else {\n if (returnHandler) {\n if (typeof returnHandler !== 'function') {\n end(\n new JsonRpcError(\n errorCodes.rpc.internal,\n `JsonRpcEngine: \"next\" return handlers must be functions. ` +\n `Received \"${typeof returnHandler}\" for request:\\n${jsonify(\n request,\n )}`,\n { request: request as Json },\n ),\n );\n }\n returnHandlers.push(returnHandler);\n }\n\n // False indicates that the request should not end\n resolve([null, false]);\n }\n };\n\n try {\n middleware(request, response, next, end);\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n end(error);\n }\n });\n }\n\n /**\n * Serially executes array of return handlers. The request and response are\n * assumed to be in their scope.\n *\n * @param handlers - The return handlers to execute.\n */\n static async #runReturnHandlers(\n handlers: JsonRpcEngineReturnHandler[],\n ): Promise<void> {\n for (const handler of handlers) {\n await new Promise<void>((resolve, reject) => {\n handler((error) => (error ? reject(error) : resolve()));\n });\n }\n }\n\n /**\n * Throws an error if the response has neither a result nor an error, or if\n * the \"isComplete\" flag is falsy.\n *\n * @param request - The request object.\n * @param response - The response object.\n * @param isComplete - Boolean from {@link JsonRpcEngine.#runAllMiddleware}\n * indicating whether a middleware ended the request.\n */\n static #checkForCompletion(\n request: JsonRpcRequest,\n response: PendingJsonRpcResponse<Json>,\n isComplete: boolean,\n ): void {\n if (!hasProperty(response, 'result') && !hasProperty(response, 'error')) {\n throw new JsonRpcError(\n errorCodes.rpc.internal,\n `JsonRpcEngine: Response has no error or result for request:\\n${jsonify(\n request,\n )}`,\n { request: request as Json },\n );\n }\n\n if (!isComplete) {\n throw new JsonRpcError(\n errorCodes.rpc.internal,\n `JsonRpcEngine: Nothing ended request:\\n${jsonify(request)}`,\n { request: request as Json },\n );\n }\n }\n}\n\n/**\n * JSON-stringifies a request object.\n *\n * @param request - The request object to JSON-stringify.\n * @returns The JSON-stringified request object.\n */\nfunction jsonify(request: JsonRpcRequest): string {\n return JSON.stringify(request, null, 2);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/JsonRpcEngine.ts"],"sourcesContent":["import { errorCodes, JsonRpcError, serializeError } from '@metamask/rpc-errors';\nimport SafeEventEmitter from '@metamask/safe-event-emitter';\nimport type {\n JsonRpcError as SerializedJsonRpcError,\n JsonRpcRequest,\n JsonRpcResponse,\n JsonRpcNotification,\n Json,\n JsonRpcParams,\n PendingJsonRpcResponse,\n} from '@metamask/utils';\nimport { hasProperty, isJsonRpcRequest } from '@metamask/utils';\n\nexport type JsonRpcEngineCallbackError = Error | SerializedJsonRpcError | null;\n\nexport type JsonRpcEngineReturnHandler = (\n done: (error?: JsonRpcEngineCallbackError) => void,\n) => void;\n\nexport type JsonRpcEngineNextCallback = (\n returnHandlerCallback?: JsonRpcEngineReturnHandler,\n) => void;\n\nexport type JsonRpcEngineEndCallback = (\n error?: JsonRpcEngineCallbackError,\n) => void;\n\nexport type JsonRpcMiddleware<\n Params extends JsonRpcParams,\n Result extends Json,\n> = {\n (\n req: JsonRpcRequest<Params>,\n res: PendingJsonRpcResponse<Result>,\n next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n ): void;\n destroy?: () => void | Promise<void>;\n};\n\nconst DESTROYED_ERROR_MESSAGE =\n 'This engine is destroyed and can no longer be used.';\n\nexport type JsonRpcNotificationHandler<Params extends JsonRpcParams> = (\n notification: JsonRpcNotification<Params>,\n) => void | Promise<void>;\n\ntype JsonRpcEngineArgs = {\n /**\n * A function for handling JSON-RPC notifications. A JSON-RPC notification is\n * defined as a JSON-RPC request without an `id` property. If this option is\n * _not_ provided, notifications will be treated the same as requests. If this\n * option _is_ provided, notifications will be passed to the handler\n * function without touching the engine's middleware stack.\n *\n * This function should not throw or reject.\n */\n notificationHandler?: JsonRpcNotificationHandler<JsonRpcParams>;\n};\n\n/**\n * A JSON-RPC request and response processor.\n * Give it a stack of middleware, pass it requests, and get back responses.\n */\nexport class JsonRpcEngine extends SafeEventEmitter {\n /**\n * Indicating whether this engine is destroyed or not.\n */\n #isDestroyed = false;\n\n #middleware: JsonRpcMiddleware<JsonRpcParams, Json>[];\n\n readonly #notificationHandler?:\n | JsonRpcNotificationHandler<JsonRpcParams>\n | undefined;\n\n /**\n * Constructs a {@link JsonRpcEngine} instance.\n *\n * @param options - Options bag.\n * @param options.notificationHandler - A function for handling JSON-RPC\n * notifications. A JSON-RPC notification is defined as a JSON-RPC request\n * without an `id` property. If this option is _not_ provided, notifications\n * will be treated the same as requests. If this option _is_ provided,\n * notifications will be passed to the handler function without touching\n * the engine's middleware stack. This function should not throw or reject.\n */\n constructor({ notificationHandler }: JsonRpcEngineArgs = {}) {\n super();\n this.#middleware = [];\n this.#notificationHandler = notificationHandler;\n }\n\n /**\n * Throws an error if this engine is destroyed.\n */\n #assertIsNotDestroyed() {\n if (this.#isDestroyed) {\n throw new Error(DESTROYED_ERROR_MESSAGE);\n }\n }\n\n /**\n * Calls the `destroy()` function of any middleware with that property, clears\n * the middleware array, and marks this engine as destroyed. A destroyed\n * engine cannot be used.\n */\n destroy(): void {\n this.#middleware.forEach(\n (middleware: JsonRpcMiddleware<JsonRpcParams, Json>) => {\n if (\n // `in` walks the prototype chain, which is probably the desired\n // behavior here.\n 'destroy' in middleware &&\n typeof middleware.destroy === 'function'\n ) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n middleware.destroy();\n }\n },\n );\n this.#middleware = [];\n this.#isDestroyed = true;\n }\n\n /**\n * Add a middleware function to the engine's middleware stack.\n *\n * @param middleware - The middleware function to add.\n */\n push<Params extends JsonRpcParams, Result extends Json>(\n middleware: JsonRpcMiddleware<Params, Result>,\n ): void {\n this.#assertIsNotDestroyed();\n this.#middleware.push(middleware as JsonRpcMiddleware<JsonRpcParams, Json>);\n }\n\n /**\n * Handle a JSON-RPC request, and return a response.\n *\n * @param request - The request to handle.\n * @param callback - An error-first callback that will receive the response.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n request: JsonRpcRequest<Params>,\n callback: (error: unknown, response: JsonRpcResponse<Result>) => void,\n ): void;\n\n /**\n * Handle a JSON-RPC notification.\n *\n * @param notification - The notification to handle.\n * @param callback - An error-first callback that will receive a `void` response.\n */\n handle<Params extends JsonRpcParams>(\n notification: JsonRpcNotification<Params>,\n callback: (error: unknown, response: void) => void,\n ): void;\n\n /**\n * Handle an array of JSON-RPC requests and/or notifications, and return an\n * array of responses to any included requests.\n *\n * @param request - The requests to handle.\n * @param callback - An error-first callback that will receive the array of\n * responses.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n requests: (JsonRpcRequest<Params> | JsonRpcNotification<Params>)[],\n callback: (error: unknown, responses: JsonRpcResponse<Result>[]) => void,\n ): void;\n\n /**\n * Handle a JSON-RPC request, and return a response.\n *\n * @param request - The JSON-RPC request to handle.\n * @returns The JSON-RPC response.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n request: JsonRpcRequest<Params>,\n ): Promise<JsonRpcResponse<Result>>;\n\n /**\n * Handle a JSON-RPC notification.\n *\n * @param notification - The notification to handle.\n */\n handle<Params extends JsonRpcParams>(\n notification: JsonRpcNotification<Params>,\n ): Promise<void>;\n\n /**\n * Handle an array of JSON-RPC requests and/or notifications, and return an\n * array of responses to any included requests.\n *\n * @param request - The JSON-RPC requests to handle.\n * @returns An array of JSON-RPC responses.\n */\n handle<Params extends JsonRpcParams, Result extends Json>(\n requests: (JsonRpcRequest<Params> | JsonRpcNotification<Params>)[],\n ): Promise<JsonRpcResponse<Result>[]>;\n\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handle(req: unknown, callback?: any) {\n this.#assertIsNotDestroyed();\n\n if (callback && typeof callback !== 'function') {\n throw new Error('\"callback\" must be a function if provided.');\n }\n\n if (Array.isArray(req)) {\n if (callback) {\n return this.#handleBatch(req, callback);\n }\n return this.#handleBatch(req);\n }\n\n if (callback) {\n return this.#handle(req as JsonRpcRequest, callback);\n }\n return this._promiseHandle(req as JsonRpcRequest);\n }\n\n /**\n * Returns this engine as a middleware function that can be pushed to other\n * engines.\n *\n * @returns This engine as a middleware function.\n */\n asMiddleware(): JsonRpcMiddleware<JsonRpcParams, Json> {\n this.#assertIsNotDestroyed();\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async (req, res, next, end) => {\n try {\n const [middlewareError, isComplete, returnHandlers] =\n await JsonRpcEngine.#runAllMiddleware(req, res, this.#middleware);\n\n if (isComplete) {\n await JsonRpcEngine.#runReturnHandlers(returnHandlers);\n return end(middlewareError as JsonRpcEngineCallbackError);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return next(async (handlerCallback) => {\n try {\n await JsonRpcEngine.#runReturnHandlers(returnHandlers);\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n return handlerCallback(error);\n }\n return handlerCallback();\n });\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n return end(error);\n }\n };\n }\n\n /**\n * Like _handle, but for batch requests.\n */\n #handleBatch(\n reqs: (JsonRpcRequest | JsonRpcNotification)[],\n ): Promise<JsonRpcResponse<Json>[]>;\n\n /**\n * Like _handle, but for batch requests.\n */\n #handleBatch(\n reqs: (JsonRpcRequest | JsonRpcNotification)[],\n callback: (error: unknown, responses?: JsonRpcResponse<Json>[]) => void,\n ): Promise<void>;\n\n /**\n * Handles a batch of JSON-RPC requests, either in `async` or callback\n * fashion.\n *\n * @param requests - The request objects to process.\n * @param callback - The completion callback.\n * @returns The array of responses, or nothing if a callback was specified.\n */\n async #handleBatch(\n requests: (JsonRpcRequest | JsonRpcNotification)[],\n callback?: (error: unknown, responses?: JsonRpcResponse<Json>[]) => void,\n ): Promise<JsonRpcResponse<Json>[] | void> {\n // The order here is important\n try {\n // If the batch is an empty array, the response array must contain a single object\n if (requests.length === 0) {\n const response: JsonRpcResponse<Json>[] = [\n {\n id: null,\n jsonrpc: '2.0',\n error: new JsonRpcError(\n errorCodes.rpc.invalidRequest,\n 'Request batch must contain plain objects. Received an empty array',\n ),\n },\n ];\n if (callback) {\n return callback(null, response);\n }\n return response;\n }\n\n // 2. Wait for all requests to finish, or throw on some kind of fatal\n // error\n const responses = (\n await Promise.all(\n // 1. Begin executing each request in the order received\n requests.map(this._promiseHandle.bind(this)),\n )\n ).filter(\n // Filter out any notification responses.\n (response) => response !== undefined,\n ) as JsonRpcResponse<Json>[];\n\n // 3. Return batch response\n if (callback) {\n return callback(null, responses);\n }\n return responses;\n } catch (error) {\n if (callback) {\n return callback(error);\n }\n\n throw error;\n }\n }\n\n /**\n * A promise-wrapped _handle.\n *\n * @param request - The JSON-RPC request.\n * @returns The JSON-RPC response.\n */\n // This function is used in tests, so we cannot easily change it to use the\n // hash syntax.\n // eslint-disable-next-line no-restricted-syntax\n private async _promiseHandle(\n request: JsonRpcRequest | JsonRpcNotification,\n ): Promise<JsonRpcResponse<Json> | void> {\n return new Promise((resolve, reject) => {\n this.#handle(request, (error, res) => {\n // For notifications, the response will be `undefined`, and any caught\n // errors are unexpected and should be surfaced to the caller.\n if (error && res === undefined) {\n reject(error);\n } else {\n // Excepting notifications, there will always be a response, and it will\n // always have any error that is caught and propagated.\n resolve(res);\n }\n }).catch(reject);\n });\n }\n\n /**\n * Ensures that the request / notification object is valid, processes it, and\n * passes any error and response object to the given callback.\n *\n * Does not reject.\n *\n * @param callerReq - The request object from the caller.\n * @param callback - The callback function.\n * @returns Nothing.\n */\n async #handle(\n callerReq: JsonRpcRequest | JsonRpcNotification,\n callback: (error?: unknown, response?: JsonRpcResponse<Json>) => void,\n ): Promise<void> {\n if (\n !callerReq ||\n Array.isArray(callerReq) ||\n typeof callerReq !== 'object'\n ) {\n const error = new JsonRpcError(\n errorCodes.rpc.invalidRequest,\n `Requests must be plain objects. Received: ${typeof callerReq}`,\n { request: callerReq },\n );\n return callback(error, { id: null, jsonrpc: '2.0', error });\n }\n\n if (typeof callerReq.method !== 'string') {\n const error = new JsonRpcError(\n errorCodes.rpc.invalidRequest,\n `Must specify a string method. Received: ${typeof callerReq.method}`,\n { request: callerReq as Json },\n );\n\n if (this.#notificationHandler && !isJsonRpcRequest(callerReq)) {\n // Do not reply to notifications, even if they are malformed.\n return callback(null);\n }\n\n return callback(error, {\n // Typecast: This could be a notification, but we want to access the\n // `id` even if it doesn't exist.\n id: (callerReq as JsonRpcRequest).id ?? null,\n jsonrpc: '2.0',\n error,\n });\n }\n\n // Handle notifications.\n // We can't use isJsonRpcNotification here because that narrows callerReq to\n // \"never\" after the if clause for unknown reasons.\n if (this.#notificationHandler && !isJsonRpcRequest(callerReq)) {\n try {\n await this.#notificationHandler(callerReq);\n } catch (error) {\n return callback(error);\n }\n return callback(null);\n }\n\n let error: JsonRpcEngineCallbackError = null;\n\n // Handle requests.\n // Typecast: Permit missing id's for backwards compatibility.\n const req = { ...(callerReq as JsonRpcRequest) };\n const res: PendingJsonRpcResponse<Json> = {\n id: req.id,\n jsonrpc: req.jsonrpc,\n };\n\n try {\n await JsonRpcEngine.#processRequest(req, res, this.#middleware);\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (_error: any) {\n // A request handler error, a re-thrown middleware error, or something\n // unexpected.\n error = _error;\n }\n\n if (error) {\n // Ensure no result is present on an errored response\n delete res.result;\n if (!res.error) {\n res.error = serializeError(error);\n }\n }\n\n return callback(error, res as JsonRpcResponse<Json>);\n }\n\n /**\n * For the given request and response, runs all middleware and their return\n * handlers, if any, and ensures that internal request processing semantics\n * are satisfied.\n *\n * @param req - The request object.\n * @param res - The response object.\n * @param middlewares - The stack of middleware functions.\n */\n static async #processRequest(\n req: JsonRpcRequest,\n res: PendingJsonRpcResponse<Json>,\n middlewares: JsonRpcMiddleware<JsonRpcParams, Json>[],\n ): Promise<void> {\n const [error, isComplete, returnHandlers] =\n await JsonRpcEngine.#runAllMiddleware(req, res, middlewares);\n\n // Throw if \"end\" was not called, or if the response has neither a result\n // nor an error.\n JsonRpcEngine.#checkForCompletion(req, res, isComplete);\n\n // The return handlers should run even if an error was encountered during\n // middleware processing.\n await JsonRpcEngine.#runReturnHandlers(returnHandlers);\n\n // Now we re-throw the middleware processing error, if any, to catch it\n // further up the call chain.\n if (error) {\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw error;\n }\n }\n\n /**\n * Serially executes the given stack of middleware.\n *\n * @param req - The request object.\n * @param res - The response object.\n * @param middlewares - The stack of middleware functions to execute.\n * @returns An array of any error encountered during middleware execution,\n * a boolean indicating whether the request was completed, and an array of\n * middleware-defined return handlers.\n */\n static async #runAllMiddleware(\n req: JsonRpcRequest,\n res: PendingJsonRpcResponse<Json>,\n middlewares: JsonRpcMiddleware<JsonRpcParams, Json>[],\n ): Promise<\n [\n unknown, // error\n boolean, // isComplete\n JsonRpcEngineReturnHandler[],\n ]\n > {\n const returnHandlers: JsonRpcEngineReturnHandler[] = [];\n let error = null;\n let isComplete = false;\n\n // Go down stack of middleware, call and collect optional returnHandlers\n for (const middleware of middlewares) {\n [error, isComplete] = await JsonRpcEngine.#runMiddleware(\n req,\n res,\n middleware,\n returnHandlers,\n );\n\n if (isComplete) {\n break;\n }\n }\n return [error, isComplete, returnHandlers.reverse()];\n }\n\n /**\n * Runs an individual middleware function.\n *\n * @param request - The request object.\n * @param response - The response object.\n * @param middleware - The middleware function to execute.\n * @param returnHandlers - The return handlers array for the current request.\n * @returns An array of any error encountered during middleware exection,\n * and a boolean indicating whether the request should end.\n */\n static async #runMiddleware(\n request: JsonRpcRequest,\n response: PendingJsonRpcResponse<Json>,\n middleware: JsonRpcMiddleware<JsonRpcParams, Json>,\n returnHandlers: JsonRpcEngineReturnHandler[],\n ): Promise<[unknown, boolean]> {\n return new Promise((resolve) => {\n const end: JsonRpcEngineEndCallback = (error?: unknown) => {\n const parsedError = error || response.error;\n if (parsedError) {\n response.error = serializeError(parsedError);\n }\n // True indicates that the request should end\n resolve([parsedError, true]);\n };\n\n const next: JsonRpcEngineNextCallback = (\n returnHandler?: JsonRpcEngineReturnHandler,\n ) => {\n if (response.error) {\n end(response.error);\n } else {\n if (returnHandler) {\n if (typeof returnHandler !== 'function') {\n end(\n new JsonRpcError(\n errorCodes.rpc.internal,\n `JsonRpcEngine: \"next\" return handlers must be functions. ` +\n `Received \"${typeof returnHandler}\" for request:\\n${jsonify(\n request,\n )}`,\n { request: request as Json },\n ),\n );\n }\n returnHandlers.push(returnHandler);\n }\n\n // False indicates that the request should not end\n resolve([null, false]);\n }\n };\n\n try {\n middleware(request, response, next, end);\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n end(error);\n }\n });\n }\n\n /**\n * Serially executes array of return handlers. The request and response are\n * assumed to be in their scope.\n *\n * @param handlers - The return handlers to execute.\n */\n static async #runReturnHandlers(\n handlers: JsonRpcEngineReturnHandler[],\n ): Promise<void> {\n for (const handler of handlers) {\n await new Promise<void>((resolve, reject) => {\n handler((error) => (error ? reject(error) : resolve()));\n });\n }\n }\n\n /**\n * Throws an error if the response has neither a result nor an error, or if\n * the \"isComplete\" flag is falsy.\n *\n * @param request - The request object.\n * @param response - The response object.\n * @param isComplete - Boolean from {@link JsonRpcEngine.#runAllMiddleware}\n * indicating whether a middleware ended the request.\n */\n static #checkForCompletion(\n request: JsonRpcRequest,\n response: PendingJsonRpcResponse<Json>,\n isComplete: boolean,\n ): void {\n if (!hasProperty(response, 'result') && !hasProperty(response, 'error')) {\n throw new JsonRpcError(\n errorCodes.rpc.internal,\n `JsonRpcEngine: Response has no error or result for request:\\n${jsonify(\n request,\n )}`,\n { request: request as Json },\n );\n }\n\n if (!isComplete) {\n throw new JsonRpcError(\n errorCodes.rpc.internal,\n `JsonRpcEngine: Nothing ended request:\\n${jsonify(request)}`,\n { request: request as Json },\n );\n }\n }\n}\n\n/**\n * JSON-stringifies a request object.\n *\n * @param request - The request object to JSON-stringify.\n * @returns The JSON-stringified request object.\n */\nfunction jsonify(request: JsonRpcRequest): string {\n return JSON.stringify(request, null, 2);\n}\n"],"mappings":"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","names":["_a","error"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/createAsyncMiddleware.ts"],"sourcesContent":["import type {\n Json,\n JsonRpcParams,\n JsonRpcRequest,\n PendingJsonRpcResponse,\n} from '@metamask/utils';\n\nimport type { JsonRpcMiddleware } from './JsonRpcEngine';\n\nexport type AsyncJsonRpcEngineNextCallback = () => Promise<void>;\n\nexport type AsyncJsonrpcMiddleware<\n Params extends JsonRpcParams,\n Result extends Json,\n> = (\n request: JsonRpcRequest<Params>,\n response: PendingJsonRpcResponse<Result>,\n next: AsyncJsonRpcEngineNextCallback,\n) => Promise<void>;\n\ntype ReturnHandlerCallback = (error: null | Error) => void;\n\n/**\n * JsonRpcEngine only accepts callback-based middleware directly.\n * createAsyncMiddleware exists to enable consumers to pass in async middleware\n * functions.\n *\n * Async middleware have no \"end\" function. Instead, they \"end\" if they return\n * without calling \"next\". Rather than passing in explicit return handlers,\n * async middleware can simply await \"next\", and perform operations on the\n * response object when execution resumes.\n *\n * To accomplish this, createAsyncMiddleware passes the async middleware a\n * wrapped \"next\" function. That function calls the internal JsonRpcEngine\n * \"next\" function with a return handler that resolves a promise when called.\n *\n * The return handler will always be called. Its resolution of the promise\n * enables the control flow described above.\n *\n * @param asyncMiddleware - The asynchronous middleware function to wrap.\n * @returns The wrapped asynchronous middleware function, ready to be consumed\n * by JsonRpcEngine.\n */\nexport function createAsyncMiddleware<\n Params extends JsonRpcParams,\n Result extends Json,\n>(\n asyncMiddleware: AsyncJsonrpcMiddleware<Params, Result>,\n): JsonRpcMiddleware<Params, Result> {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async (request, response, next, end) => {\n // nextPromise is the key to the implementation\n // it is resolved by the return handler passed to the\n // \"next\" function\n let resolveNextPromise: () => void;\n const nextPromise = new Promise<void>((resolve) => {\n resolveNextPromise = resolve;\n });\n\n let returnHandlerCallback: unknown = null;\n let nextWasCalled = false;\n\n // This will be called by the consumer's async middleware.\n const asyncNext = async () => {\n nextWasCalled = true;\n\n // We pass a return handler to next(). When it is called by the engine,\n // the consumer's async middleware will resume executing.\n next((runReturnHandlersCallback) => {\n // This callback comes from JsonRpcEngine._runReturnHandlers\n returnHandlerCallback = runReturnHandlersCallback;\n resolveNextPromise();\n });\n return nextPromise;\n };\n\n try {\n await asyncMiddleware(request, response, asyncNext);\n\n if (nextWasCalled) {\n await nextPromise; // we must wait until the return handler is called\n (returnHandlerCallback as ReturnHandlerCallback)(null);\n } else {\n end(null);\n }\n // TODO: Replace `any` with type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n if (returnHandlerCallback) {\n (returnHandlerCallback as ReturnHandlerCallback)(error);\n } else {\n end(error);\n }\n }\n };\n}\n"],"mappings":";AA2CO,SAAS,sBAId,iBACmC;AAEnC,SAAO,OAAO,SAAS,UAAU,MAAM,QAAQ;AAI7C,QAAI;AACJ,UAAM,cAAc,IAAI,QAAc,CAAC,YAAY;AACjD,2BAAqB;AAAA,IACvB,CAAC;AAED,QAAI,wBAAiC;AACrC,QAAI,gBAAgB;AAGpB,UAAM,YAAY,YAAY;AAC5B,sBAAgB;AAIhB,WAAK,CAAC,8BAA8B;AAElC,gCAAwB;AACxB,2BAAmB;AAAA,MACrB,CAAC;AACD,aAAO;AAAA,IACT;AAEA,QAAI;AACF,YAAM,gBAAgB,SAAS,UAAU,SAAS;AAElD,UAAI,eAAe;AACjB,cAAM;AACN,QAAC,sBAAgD,IAAI;AAAA,MACvD,OAAO;AACL,YAAI,IAAI;AAAA,MACV;AAAA,IAGF,SAAS,OAAY;AACnB,UAAI,uBAAuB;AACzB,QAAC,sBAAgD,KAAK;AAAA,MACxD,OAAO;AACL,YAAI,KAAK;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;","names":[]}