From 8642d5de7e54b104dab5c133e485fc5f5f36f085 Mon Sep 17 00:00:00 2001 From: Frederik Bolding Date: Thu, 7 May 2026 14:26:17 +0200 Subject: [PATCH 1/3] feat: Add legacy createOriginMiddleware --- .../src/createOriginMiddleware.test.ts | 20 +++++++++++++++++++ .../src/createOriginMiddleware.ts | 16 +++++++++++++++ packages/json-rpc-engine/src/index.test.ts | 1 + packages/json-rpc-engine/src/index.ts | 1 + 4 files changed, 38 insertions(+) create mode 100644 packages/json-rpc-engine/src/createOriginMiddleware.test.ts create mode 100644 packages/json-rpc-engine/src/createOriginMiddleware.ts diff --git a/packages/json-rpc-engine/src/createOriginMiddleware.test.ts b/packages/json-rpc-engine/src/createOriginMiddleware.test.ts new file mode 100644 index 0000000000..de7e93e877 --- /dev/null +++ b/packages/json-rpc-engine/src/createOriginMiddleware.test.ts @@ -0,0 +1,20 @@ +import { JsonRpcRequest } from "@metamask/utils"; +import { makeRequest } from "../tests/utils"; +import { JsonRpcEngine } from "./JsonRpcEngine" +import { createOriginMiddleware } from "./createOriginMiddleware"; + +describe('createOriginMiddleware', () => { + it('adds the origin property to the request', async () => { + const origin = 'https://metamask.io'; + const engine = new JsonRpcEngine(); + + engine.push(createOriginMiddleware(origin)); + + engine.push((request, response, _next, end) => { + response.result = (request as unknown as JsonRpcRequest & { origin: string }).origin; + end(); + }) + + expect(await engine.handle(makeRequest())).toStrictEqual({"id": "1", "jsonrpc": "2.0", result: origin}); + }) +}) \ No newline at end of file diff --git a/packages/json-rpc-engine/src/createOriginMiddleware.ts b/packages/json-rpc-engine/src/createOriginMiddleware.ts new file mode 100644 index 0000000000..7fe2b70d0d --- /dev/null +++ b/packages/json-rpc-engine/src/createOriginMiddleware.ts @@ -0,0 +1,16 @@ +import { Json, JsonRpcRequest } from "@metamask/utils"; +import { JsonRpcMiddleware } from "./JsonRpcEngine"; + +/** + * Create a middleware function that adds `origin` to the request object. + * + * @deprecated Use the v2 `createOriginMiddleware` instead. + * @param origin - The origin. + * @returns The middleware. + */ +export function createOriginMiddleware(origin: string): JsonRpcMiddleware { + return (request, _result, next) => { + (request as unknown as JsonRpcRequest & { origin: string }).origin = origin; + next(); + }; +} \ No newline at end of file diff --git a/packages/json-rpc-engine/src/index.test.ts b/packages/json-rpc-engine/src/index.test.ts index e2b811b55a..071d71fa36 100644 --- a/packages/json-rpc-engine/src/index.test.ts +++ b/packages/json-rpc-engine/src/index.test.ts @@ -7,6 +7,7 @@ describe('@metamask/json-rpc-engine', () => { "asV2Middleware", "createAsyncMiddleware", "createMethodMiddleware", + "createOriginMiddleware", "createScaffoldMiddleware", "getUniqueId", "createIdRemapMiddleware", diff --git a/packages/json-rpc-engine/src/index.ts b/packages/json-rpc-engine/src/index.ts index 746cd0c362..1960fe5e3f 100644 --- a/packages/json-rpc-engine/src/index.ts +++ b/packages/json-rpc-engine/src/index.ts @@ -10,6 +10,7 @@ export type { MethodHandlerImplementation, } from './createMethodMiddleware'; export { createMethodMiddleware } from './createMethodMiddleware'; +export { createOriginMiddleware } from './createOriginMiddleware'; export { createScaffoldMiddleware } from './createScaffoldMiddleware'; export { getUniqueId } from './getUniqueId'; export { createIdRemapMiddleware } from './idRemapMiddleware'; From 62e22980537ed56608ab7783c3b5a6541fd80ccb Mon Sep 17 00:00:00 2001 From: Frederik Bolding Date: Thu, 7 May 2026 14:29:53 +0200 Subject: [PATCH 2/3] Fix lint --- .../src/createOriginMiddleware.test.ts | 37 +++++++++++-------- .../src/createOriginMiddleware.ts | 13 ++++--- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/packages/json-rpc-engine/src/createOriginMiddleware.test.ts b/packages/json-rpc-engine/src/createOriginMiddleware.test.ts index de7e93e877..5c441e977d 100644 --- a/packages/json-rpc-engine/src/createOriginMiddleware.test.ts +++ b/packages/json-rpc-engine/src/createOriginMiddleware.test.ts @@ -1,20 +1,27 @@ -import { JsonRpcRequest } from "@metamask/utils"; -import { makeRequest } from "../tests/utils"; -import { JsonRpcEngine } from "./JsonRpcEngine" -import { createOriginMiddleware } from "./createOriginMiddleware"; +import { JsonRpcRequest } from '@metamask/utils'; + +import { makeRequest } from '../tests/utils'; +import { createOriginMiddleware } from './createOriginMiddleware'; +import { JsonRpcEngine } from './JsonRpcEngine'; describe('createOriginMiddleware', () => { - it('adds the origin property to the request', async () => { - const origin = 'https://metamask.io'; - const engine = new JsonRpcEngine(); + it('adds the origin property to the request', async () => { + const origin = 'https://metamask.io'; + const engine = new JsonRpcEngine(); - engine.push(createOriginMiddleware(origin)); + engine.push(createOriginMiddleware(origin)); - engine.push((request, response, _next, end) => { - response.result = (request as unknown as JsonRpcRequest & { origin: string }).origin; - end(); - }) + engine.push((request, response, _next, end) => { + response.result = ( + request as unknown as JsonRpcRequest & { origin: string } + ).origin; + end(); + }); - expect(await engine.handle(makeRequest())).toStrictEqual({"id": "1", "jsonrpc": "2.0", result: origin}); - }) -}) \ No newline at end of file + expect(await engine.handle(makeRequest())).toStrictEqual({ + id: '1', + jsonrpc: '2.0', + result: origin, + }); + }); +}); diff --git a/packages/json-rpc-engine/src/createOriginMiddleware.ts b/packages/json-rpc-engine/src/createOriginMiddleware.ts index 7fe2b70d0d..e2100aa4fa 100644 --- a/packages/json-rpc-engine/src/createOriginMiddleware.ts +++ b/packages/json-rpc-engine/src/createOriginMiddleware.ts @@ -1,16 +1,19 @@ -import { Json, JsonRpcRequest } from "@metamask/utils"; -import { JsonRpcMiddleware } from "./JsonRpcEngine"; +import { Json, JsonRpcRequest } from '@metamask/utils'; + +import { JsonRpcMiddleware } from './JsonRpcEngine'; /** * Create a middleware function that adds `origin` to the request object. - * + * * @deprecated Use the v2 `createOriginMiddleware` instead. * @param origin - The origin. * @returns The middleware. */ -export function createOriginMiddleware(origin: string): JsonRpcMiddleware { +export function createOriginMiddleware( + origin: string, +): JsonRpcMiddleware { return (request, _result, next) => { (request as unknown as JsonRpcRequest & { origin: string }).origin = origin; next(); }; -} \ No newline at end of file +} From 710f93151161cea848d66925e5158708ba21daf5 Mon Sep 17 00:00:00 2001 From: Frederik Bolding Date: Thu, 7 May 2026 14:32:10 +0200 Subject: [PATCH 3/3] Update CHANGELOG --- packages/json-rpc-engine/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/json-rpc-engine/CHANGELOG.md b/packages/json-rpc-engine/CHANGELOG.md index cb0e6e0268..0716a6270b 100644 --- a/packages/json-rpc-engine/CHANGELOG.md +++ b/packages/json-rpc-engine/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Add legacy `createOriginMiddleware` utility ([#8734](https://github.com/MetaMask/core/pull/8734)) + ## [10.3.0] ### Added