Skip to content

Commit b26637a

Browse files
Merge pull request #402 from Web3Auth/fix/postMessageStream-non-browser
fix: handle undefined MessageEvent in postMessageStream
2 parents f2c5f44 + 2cf89be commit b26637a

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

src/jrpc/postMessageStream.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@ import { cloneDeep } from "../utils";
44
import { BasePostMessageStream, isValidStreamMessage, type PostMessageEvent } from "./basePostMessageStream";
55

66
/* istanbul ignore next */
7-
const getSource = Object.getOwnPropertyDescriptor(MessageEvent.prototype, "source")?.get;
7+
const messageEventPrototype = typeof MessageEvent === "undefined" ? undefined : MessageEvent.prototype;
88

99
/* istanbul ignore next */
10-
const getOrigin = Object.getOwnPropertyDescriptor(MessageEvent.prototype, "origin")?.get;
10+
const getSource = messageEventPrototype ? Object.getOwnPropertyDescriptor(messageEventPrototype, "source")?.get : undefined;
11+
12+
/* istanbul ignore next */
13+
const getOrigin = messageEventPrototype ? Object.getOwnPropertyDescriptor(messageEventPrototype, "origin")?.get : undefined;
1114

1215
export interface PostMessageStreamArgs extends DuplexOptions {
1316
name: string;

test/postMessageStream.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,4 +72,12 @@ describe("PostMessageStream", () => {
7272
expect(message.target).toBe("auth");
7373
expect(message.data.data.params[0]._origin).toBe("https://current.example");
7474
});
75+
76+
it("can be imported when MessageEvent is undefined", async () => {
77+
vi.unstubAllGlobals();
78+
// Simulate Hermes/React Native where MessageEvent is absent.
79+
Reflect.deleteProperty(globalThis, "MessageEvent");
80+
81+
await expect(import("../src/jrpc")).resolves.toHaveProperty("PostMessageStream");
82+
});
7583
});

0 commit comments

Comments
 (0)