msw 2.3.0-ws.rc-11 → 2.3.0-ws.rc-12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/index.js +9 -9
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/index.mjs +9 -9
- package/lib/browser/index.mjs.map +1 -1
- package/lib/core/handlers/WebSocketHandler.d.mts +1 -0
- package/lib/core/handlers/WebSocketHandler.d.ts +1 -0
- package/lib/core/handlers/WebSocketHandler.js +59 -0
- package/lib/core/handlers/WebSocketHandler.js.map +1 -1
- package/lib/core/handlers/WebSocketHandler.mjs +59 -0
- package/lib/core/handlers/WebSocketHandler.mjs.map +1 -1
- package/lib/iife/index.js +115 -32
- package/lib/iife/index.js.map +1 -1
- package/lib/mockServiceWorker.js +1 -1
- package/package.json +2 -2
- package/src/core/handlers/WebSocketHandler.ts +72 -0
|
@@ -16,6 +16,7 @@ declare const kDispatchEvent: unique symbol;
|
|
|
16
16
|
declare const kSender: unique symbol;
|
|
17
17
|
declare class WebSocketHandler {
|
|
18
18
|
private readonly url;
|
|
19
|
+
id: string;
|
|
19
20
|
callFrame?: string;
|
|
20
21
|
protected [kEmitter]: Emitter<WebSocketHandlerEventMap>;
|
|
21
22
|
constructor(url: Path);
|
|
@@ -16,6 +16,7 @@ declare const kDispatchEvent: unique symbol;
|
|
|
16
16
|
declare const kSender: unique symbol;
|
|
17
17
|
declare class WebSocketHandler {
|
|
18
18
|
private readonly url;
|
|
19
|
+
id: string;
|
|
19
20
|
callFrame?: string;
|
|
20
21
|
protected [kEmitter]: Emitter<WebSocketHandlerEventMap>;
|
|
21
22
|
constructor(url: Path);
|
|
@@ -25,17 +25,22 @@ __export(WebSocketHandler_exports, {
|
|
|
25
25
|
});
|
|
26
26
|
module.exports = __toCommonJS(WebSocketHandler_exports);
|
|
27
27
|
var import_strict_event_emitter = require("strict-event-emitter");
|
|
28
|
+
var import_interceptors = require("@mswjs/interceptors");
|
|
28
29
|
var import_matchRequestUrl = require("../utils/matching/matchRequestUrl.js");
|
|
29
30
|
var import_getCallFrame = require("../utils/internal/getCallFrame.js");
|
|
30
31
|
const kEmitter = Symbol("kEmitter");
|
|
31
32
|
const kDispatchEvent = Symbol("kDispatchEvent");
|
|
32
33
|
const kSender = Symbol("kSender");
|
|
34
|
+
const kStopPropagationPatched = Symbol("kStopPropagationPatched");
|
|
35
|
+
const KOnStopPropagation = Symbol("KOnStopPropagation");
|
|
33
36
|
class WebSocketHandler {
|
|
34
37
|
constructor(url) {
|
|
35
38
|
this.url = url;
|
|
39
|
+
this.id = (0, import_interceptors.createRequestId)();
|
|
36
40
|
this[kEmitter] = new import_strict_event_emitter.Emitter();
|
|
37
41
|
this.callFrame = (0, import_getCallFrame.getCallFrame)(new Error());
|
|
38
42
|
}
|
|
43
|
+
id;
|
|
39
44
|
callFrame;
|
|
40
45
|
[kEmitter];
|
|
41
46
|
parse(args) {
|
|
@@ -55,7 +60,61 @@ class WebSocketHandler {
|
|
|
55
60
|
...connection,
|
|
56
61
|
params: parsedResult.match.params || {}
|
|
57
62
|
};
|
|
63
|
+
connection.client.addEventListener(
|
|
64
|
+
"message",
|
|
65
|
+
createStopPropagationListener(this)
|
|
66
|
+
);
|
|
67
|
+
connection.client.addEventListener(
|
|
68
|
+
"close",
|
|
69
|
+
createStopPropagationListener(this)
|
|
70
|
+
);
|
|
71
|
+
connection.server.addEventListener(
|
|
72
|
+
"open",
|
|
73
|
+
createStopPropagationListener(this)
|
|
74
|
+
);
|
|
75
|
+
connection.server.addEventListener(
|
|
76
|
+
"message",
|
|
77
|
+
createStopPropagationListener(this)
|
|
78
|
+
);
|
|
79
|
+
connection.server.addEventListener(
|
|
80
|
+
"error",
|
|
81
|
+
createStopPropagationListener(this)
|
|
82
|
+
);
|
|
83
|
+
connection.server.addEventListener(
|
|
84
|
+
"close",
|
|
85
|
+
createStopPropagationListener(this)
|
|
86
|
+
);
|
|
58
87
|
this[kEmitter].emit("connection", resolvedConnection);
|
|
59
88
|
}
|
|
60
89
|
}
|
|
90
|
+
function createStopPropagationListener(handler) {
|
|
91
|
+
return function stopPropagationListener(event) {
|
|
92
|
+
const propagationStoppedAt = Reflect.get(event, "kPropagationStoppedAt");
|
|
93
|
+
if (propagationStoppedAt && handler.id !== propagationStoppedAt) {
|
|
94
|
+
event.stopImmediatePropagation();
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
Object.defineProperty(event, KOnStopPropagation, {
|
|
98
|
+
value() {
|
|
99
|
+
Object.defineProperty(event, "kPropagationStoppedAt", {
|
|
100
|
+
value: handler.id
|
|
101
|
+
});
|
|
102
|
+
},
|
|
103
|
+
configurable: true
|
|
104
|
+
});
|
|
105
|
+
if (!Reflect.get(event, kStopPropagationPatched)) {
|
|
106
|
+
event.stopPropagation = new Proxy(event.stopPropagation, {
|
|
107
|
+
apply: (target, thisArg, args) => {
|
|
108
|
+
Reflect.get(event, KOnStopPropagation)?.call(handler);
|
|
109
|
+
return Reflect.apply(target, thisArg, args);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
Object.defineProperty(event, kStopPropagationPatched, {
|
|
113
|
+
value: true,
|
|
114
|
+
// If something else attempts to redefine this, throw.
|
|
115
|
+
configurable: false
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
}
|
|
61
120
|
//# sourceMappingURL=WebSocketHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/handlers/WebSocketHandler.ts"],"sourcesContent":["import { Emitter } from 'strict-event-emitter'\nimport type { WebSocketConnectionData } from '@mswjs/interceptors/WebSocket'\nimport {\n type Match,\n type Path,\n type PathParams,\n matchRequestUrl,\n} from '../utils/matching/matchRequestUrl'\nimport { getCallFrame } from '../utils/internal/getCallFrame'\n\ntype WebSocketHandlerParsedResult = {\n match: Match\n}\n\nexport type WebSocketHandlerEventMap = {\n connection: [args: WebSocketHandlerConnection]\n}\n\ninterface WebSocketHandlerConnection extends WebSocketConnectionData {\n params: PathParams\n}\n\nexport const kEmitter = Symbol('kEmitter')\nexport const kDispatchEvent = Symbol('kDispatchEvent')\nexport const kSender = Symbol('kSender')\n\nexport class WebSocketHandler {\n public callFrame?: string\n\n protected [kEmitter]: Emitter<WebSocketHandlerEventMap>\n\n constructor(private readonly url: Path) {\n this[kEmitter] = new Emitter()\n this.callFrame = getCallFrame(new Error())\n }\n\n public parse(args: {\n event: MessageEvent<WebSocketConnectionData>\n }): WebSocketHandlerParsedResult {\n const connection = args.event.data\n const match = matchRequestUrl(connection.client.url, this.url)\n\n return {\n match,\n }\n }\n\n public predicate(args: {\n event: MessageEvent<WebSocketConnectionData>\n parsedResult: WebSocketHandlerParsedResult\n }): boolean {\n return args.parsedResult.match.matches\n }\n\n async [kDispatchEvent](\n event: MessageEvent<WebSocketConnectionData>,\n ): Promise<void> {\n const parsedResult = this.parse({ event })\n const connection = event.data\n\n const resolvedConnection: WebSocketHandlerConnection = {\n ...connection,\n params: parsedResult.match.params || {},\n }\n\n // Emit the connection event on the handler.\n // This is what the developer adds listeners for.\n this[kEmitter].emit('connection', resolvedConnection)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kCAAwB;
|
|
1
|
+
{"version":3,"sources":["../../../src/core/handlers/WebSocketHandler.ts"],"sourcesContent":["import { Emitter } from 'strict-event-emitter'\nimport { createRequestId } from '@mswjs/interceptors'\nimport type { WebSocketConnectionData } from '@mswjs/interceptors/WebSocket'\nimport {\n type Match,\n type Path,\n type PathParams,\n matchRequestUrl,\n} from '../utils/matching/matchRequestUrl'\nimport { getCallFrame } from '../utils/internal/getCallFrame'\n\ntype WebSocketHandlerParsedResult = {\n match: Match\n}\n\nexport type WebSocketHandlerEventMap = {\n connection: [args: WebSocketHandlerConnection]\n}\n\ninterface WebSocketHandlerConnection extends WebSocketConnectionData {\n params: PathParams\n}\n\nexport const kEmitter = Symbol('kEmitter')\nexport const kDispatchEvent = Symbol('kDispatchEvent')\nexport const kSender = Symbol('kSender')\nconst kStopPropagationPatched = Symbol('kStopPropagationPatched')\nconst KOnStopPropagation = Symbol('KOnStopPropagation')\n\nexport class WebSocketHandler {\n public id: string\n public callFrame?: string\n\n protected [kEmitter]: Emitter<WebSocketHandlerEventMap>\n\n constructor(private readonly url: Path) {\n this.id = createRequestId()\n\n this[kEmitter] = new Emitter()\n this.callFrame = getCallFrame(new Error())\n }\n\n public parse(args: {\n event: MessageEvent<WebSocketConnectionData>\n }): WebSocketHandlerParsedResult {\n const connection = args.event.data\n const match = matchRequestUrl(connection.client.url, this.url)\n\n return {\n match,\n }\n }\n\n public predicate(args: {\n event: MessageEvent<WebSocketConnectionData>\n parsedResult: WebSocketHandlerParsedResult\n }): boolean {\n return args.parsedResult.match.matches\n }\n\n async [kDispatchEvent](\n event: MessageEvent<WebSocketConnectionData>,\n ): Promise<void> {\n const parsedResult = this.parse({ event })\n const connection = event.data\n\n const resolvedConnection: WebSocketHandlerConnection = {\n ...connection,\n params: parsedResult.match.params || {},\n }\n\n // Support `event.stopPropagation()` for various client/server events.\n connection.client.addEventListener(\n 'message',\n createStopPropagationListener(this),\n )\n connection.client.addEventListener(\n 'close',\n createStopPropagationListener(this),\n )\n\n connection.server.addEventListener(\n 'open',\n createStopPropagationListener(this),\n )\n connection.server.addEventListener(\n 'message',\n createStopPropagationListener(this),\n )\n connection.server.addEventListener(\n 'error',\n createStopPropagationListener(this),\n )\n connection.server.addEventListener(\n 'close',\n createStopPropagationListener(this),\n )\n\n // Emit the connection event on the handler.\n // This is what the developer adds listeners for.\n this[kEmitter].emit('connection', resolvedConnection)\n }\n}\n\nfunction createStopPropagationListener(handler: WebSocketHandler) {\n return function stopPropagationListener(event: Event) {\n const propagationStoppedAt = Reflect.get(event, 'kPropagationStoppedAt') as\n | string\n | undefined\n\n if (propagationStoppedAt && handler.id !== propagationStoppedAt) {\n event.stopImmediatePropagation()\n return\n }\n\n Object.defineProperty(event, KOnStopPropagation, {\n value(this: WebSocketHandler) {\n Object.defineProperty(event, 'kPropagationStoppedAt', {\n value: handler.id,\n })\n },\n configurable: true,\n })\n\n // Since the same event instance is shared between all client/server objects,\n // make sure to patch its `stopPropagation` method only once.\n if (!Reflect.get(event, kStopPropagationPatched)) {\n event.stopPropagation = new Proxy(event.stopPropagation, {\n apply: (target, thisArg, args) => {\n Reflect.get(event, KOnStopPropagation)?.call(handler)\n return Reflect.apply(target, thisArg, args)\n },\n })\n\n Object.defineProperty(event, kStopPropagationPatched, {\n value: true,\n // If something else attempts to redefine this, throw.\n configurable: false,\n })\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kCAAwB;AACxB,0BAAgC;AAEhC,6BAKO;AACP,0BAA6B;AActB,MAAM,WAAW,OAAO,UAAU;AAClC,MAAM,iBAAiB,OAAO,gBAAgB;AAC9C,MAAM,UAAU,OAAO,SAAS;AACvC,MAAM,0BAA0B,OAAO,yBAAyB;AAChE,MAAM,qBAAqB,OAAO,oBAAoB;AAE/C,MAAM,iBAAiB;AAAA,EAM5B,YAA6B,KAAW;AAAX;AAC3B,SAAK,SAAK,qCAAgB;AAE1B,SAAK,QAAQ,IAAI,IAAI,oCAAQ;AAC7B,SAAK,gBAAY,kCAAa,IAAI,MAAM,CAAC;AAAA,EAC3C;AAAA,EAVO;AAAA,EACA;AAAA,EAEP,CAAW,QAAQ;AAAA,EASZ,MAAM,MAEoB;AAC/B,UAAM,aAAa,KAAK,MAAM;AAC9B,UAAM,YAAQ,wCAAgB,WAAW,OAAO,KAAK,KAAK,GAAG;AAE7D,WAAO;AAAA,MACL;AAAA,IACF;AAAA,EACF;AAAA,EAEO,UAAU,MAGL;AACV,WAAO,KAAK,aAAa,MAAM;AAAA,EACjC;AAAA,EAEA,OAAO,cAAc,EACnB,OACe;AACf,UAAM,eAAe,KAAK,MAAM,EAAE,MAAM,CAAC;AACzC,UAAM,aAAa,MAAM;AAEzB,UAAM,qBAAiD;AAAA,MACrD,GAAG;AAAA,MACH,QAAQ,aAAa,MAAM,UAAU,CAAC;AAAA,IACxC;AAGA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AACA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AAEA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AACA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AACA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AACA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AAIA,SAAK,QAAQ,EAAE,KAAK,cAAc,kBAAkB;AAAA,EACtD;AACF;AAEA,SAAS,8BAA8B,SAA2B;AAChE,SAAO,SAAS,wBAAwB,OAAc;AACpD,UAAM,uBAAuB,QAAQ,IAAI,OAAO,uBAAuB;AAIvE,QAAI,wBAAwB,QAAQ,OAAO,sBAAsB;AAC/D,YAAM,yBAAyB;AAC/B;AAAA,IACF;AAEA,WAAO,eAAe,OAAO,oBAAoB;AAAA,MAC/C,QAA8B;AAC5B,eAAO,eAAe,OAAO,yBAAyB;AAAA,UACpD,OAAO,QAAQ;AAAA,QACjB,CAAC;AAAA,MACH;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAID,QAAI,CAAC,QAAQ,IAAI,OAAO,uBAAuB,GAAG;AAChD,YAAM,kBAAkB,IAAI,MAAM,MAAM,iBAAiB;AAAA,QACvD,OAAO,CAAC,QAAQ,SAAS,SAAS;AAChC,kBAAQ,IAAI,OAAO,kBAAkB,GAAG,KAAK,OAAO;AACpD,iBAAO,QAAQ,MAAM,QAAQ,SAAS,IAAI;AAAA,QAC5C;AAAA,MACF,CAAC;AAED,aAAO,eAAe,OAAO,yBAAyB;AAAA,QACpD,OAAO;AAAA;AAAA,QAEP,cAAc;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Emitter } from "strict-event-emitter";
|
|
2
|
+
import { createRequestId } from "@mswjs/interceptors";
|
|
2
3
|
import {
|
|
3
4
|
matchRequestUrl
|
|
4
5
|
} from '../utils/matching/matchRequestUrl.mjs';
|
|
@@ -6,12 +7,16 @@ import { getCallFrame } from '../utils/internal/getCallFrame.mjs';
|
|
|
6
7
|
const kEmitter = Symbol("kEmitter");
|
|
7
8
|
const kDispatchEvent = Symbol("kDispatchEvent");
|
|
8
9
|
const kSender = Symbol("kSender");
|
|
10
|
+
const kStopPropagationPatched = Symbol("kStopPropagationPatched");
|
|
11
|
+
const KOnStopPropagation = Symbol("KOnStopPropagation");
|
|
9
12
|
class WebSocketHandler {
|
|
10
13
|
constructor(url) {
|
|
11
14
|
this.url = url;
|
|
15
|
+
this.id = createRequestId();
|
|
12
16
|
this[kEmitter] = new Emitter();
|
|
13
17
|
this.callFrame = getCallFrame(new Error());
|
|
14
18
|
}
|
|
19
|
+
id;
|
|
15
20
|
callFrame;
|
|
16
21
|
[kEmitter];
|
|
17
22
|
parse(args) {
|
|
@@ -31,9 +36,63 @@ class WebSocketHandler {
|
|
|
31
36
|
...connection,
|
|
32
37
|
params: parsedResult.match.params || {}
|
|
33
38
|
};
|
|
39
|
+
connection.client.addEventListener(
|
|
40
|
+
"message",
|
|
41
|
+
createStopPropagationListener(this)
|
|
42
|
+
);
|
|
43
|
+
connection.client.addEventListener(
|
|
44
|
+
"close",
|
|
45
|
+
createStopPropagationListener(this)
|
|
46
|
+
);
|
|
47
|
+
connection.server.addEventListener(
|
|
48
|
+
"open",
|
|
49
|
+
createStopPropagationListener(this)
|
|
50
|
+
);
|
|
51
|
+
connection.server.addEventListener(
|
|
52
|
+
"message",
|
|
53
|
+
createStopPropagationListener(this)
|
|
54
|
+
);
|
|
55
|
+
connection.server.addEventListener(
|
|
56
|
+
"error",
|
|
57
|
+
createStopPropagationListener(this)
|
|
58
|
+
);
|
|
59
|
+
connection.server.addEventListener(
|
|
60
|
+
"close",
|
|
61
|
+
createStopPropagationListener(this)
|
|
62
|
+
);
|
|
34
63
|
this[kEmitter].emit("connection", resolvedConnection);
|
|
35
64
|
}
|
|
36
65
|
}
|
|
66
|
+
function createStopPropagationListener(handler) {
|
|
67
|
+
return function stopPropagationListener(event) {
|
|
68
|
+
const propagationStoppedAt = Reflect.get(event, "kPropagationStoppedAt");
|
|
69
|
+
if (propagationStoppedAt && handler.id !== propagationStoppedAt) {
|
|
70
|
+
event.stopImmediatePropagation();
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
Object.defineProperty(event, KOnStopPropagation, {
|
|
74
|
+
value() {
|
|
75
|
+
Object.defineProperty(event, "kPropagationStoppedAt", {
|
|
76
|
+
value: handler.id
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
configurable: true
|
|
80
|
+
});
|
|
81
|
+
if (!Reflect.get(event, kStopPropagationPatched)) {
|
|
82
|
+
event.stopPropagation = new Proxy(event.stopPropagation, {
|
|
83
|
+
apply: (target, thisArg, args) => {
|
|
84
|
+
Reflect.get(event, KOnStopPropagation)?.call(handler);
|
|
85
|
+
return Reflect.apply(target, thisArg, args);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
Object.defineProperty(event, kStopPropagationPatched, {
|
|
89
|
+
value: true,
|
|
90
|
+
// If something else attempts to redefine this, throw.
|
|
91
|
+
configurable: false
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
}
|
|
37
96
|
export {
|
|
38
97
|
WebSocketHandler,
|
|
39
98
|
kDispatchEvent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/handlers/WebSocketHandler.ts"],"sourcesContent":["import { Emitter } from 'strict-event-emitter'\nimport type { WebSocketConnectionData } from '@mswjs/interceptors/WebSocket'\nimport {\n type Match,\n type Path,\n type PathParams,\n matchRequestUrl,\n} from '../utils/matching/matchRequestUrl'\nimport { getCallFrame } from '../utils/internal/getCallFrame'\n\ntype WebSocketHandlerParsedResult = {\n match: Match\n}\n\nexport type WebSocketHandlerEventMap = {\n connection: [args: WebSocketHandlerConnection]\n}\n\ninterface WebSocketHandlerConnection extends WebSocketConnectionData {\n params: PathParams\n}\n\nexport const kEmitter = Symbol('kEmitter')\nexport const kDispatchEvent = Symbol('kDispatchEvent')\nexport const kSender = Symbol('kSender')\n\nexport class WebSocketHandler {\n public callFrame?: string\n\n protected [kEmitter]: Emitter<WebSocketHandlerEventMap>\n\n constructor(private readonly url: Path) {\n this[kEmitter] = new Emitter()\n this.callFrame = getCallFrame(new Error())\n }\n\n public parse(args: {\n event: MessageEvent<WebSocketConnectionData>\n }): WebSocketHandlerParsedResult {\n const connection = args.event.data\n const match = matchRequestUrl(connection.client.url, this.url)\n\n return {\n match,\n }\n }\n\n public predicate(args: {\n event: MessageEvent<WebSocketConnectionData>\n parsedResult: WebSocketHandlerParsedResult\n }): boolean {\n return args.parsedResult.match.matches\n }\n\n async [kDispatchEvent](\n event: MessageEvent<WebSocketConnectionData>,\n ): Promise<void> {\n const parsedResult = this.parse({ event })\n const connection = event.data\n\n const resolvedConnection: WebSocketHandlerConnection = {\n ...connection,\n params: parsedResult.match.params || {},\n }\n\n // Emit the connection event on the handler.\n // This is what the developer adds listeners for.\n this[kEmitter].emit('connection', resolvedConnection)\n }\n}\n"],"mappings":"AAAA,SAAS,eAAe;
|
|
1
|
+
{"version":3,"sources":["../../../src/core/handlers/WebSocketHandler.ts"],"sourcesContent":["import { Emitter } from 'strict-event-emitter'\nimport { createRequestId } from '@mswjs/interceptors'\nimport type { WebSocketConnectionData } from '@mswjs/interceptors/WebSocket'\nimport {\n type Match,\n type Path,\n type PathParams,\n matchRequestUrl,\n} from '../utils/matching/matchRequestUrl'\nimport { getCallFrame } from '../utils/internal/getCallFrame'\n\ntype WebSocketHandlerParsedResult = {\n match: Match\n}\n\nexport type WebSocketHandlerEventMap = {\n connection: [args: WebSocketHandlerConnection]\n}\n\ninterface WebSocketHandlerConnection extends WebSocketConnectionData {\n params: PathParams\n}\n\nexport const kEmitter = Symbol('kEmitter')\nexport const kDispatchEvent = Symbol('kDispatchEvent')\nexport const kSender = Symbol('kSender')\nconst kStopPropagationPatched = Symbol('kStopPropagationPatched')\nconst KOnStopPropagation = Symbol('KOnStopPropagation')\n\nexport class WebSocketHandler {\n public id: string\n public callFrame?: string\n\n protected [kEmitter]: Emitter<WebSocketHandlerEventMap>\n\n constructor(private readonly url: Path) {\n this.id = createRequestId()\n\n this[kEmitter] = new Emitter()\n this.callFrame = getCallFrame(new Error())\n }\n\n public parse(args: {\n event: MessageEvent<WebSocketConnectionData>\n }): WebSocketHandlerParsedResult {\n const connection = args.event.data\n const match = matchRequestUrl(connection.client.url, this.url)\n\n return {\n match,\n }\n }\n\n public predicate(args: {\n event: MessageEvent<WebSocketConnectionData>\n parsedResult: WebSocketHandlerParsedResult\n }): boolean {\n return args.parsedResult.match.matches\n }\n\n async [kDispatchEvent](\n event: MessageEvent<WebSocketConnectionData>,\n ): Promise<void> {\n const parsedResult = this.parse({ event })\n const connection = event.data\n\n const resolvedConnection: WebSocketHandlerConnection = {\n ...connection,\n params: parsedResult.match.params || {},\n }\n\n // Support `event.stopPropagation()` for various client/server events.\n connection.client.addEventListener(\n 'message',\n createStopPropagationListener(this),\n )\n connection.client.addEventListener(\n 'close',\n createStopPropagationListener(this),\n )\n\n connection.server.addEventListener(\n 'open',\n createStopPropagationListener(this),\n )\n connection.server.addEventListener(\n 'message',\n createStopPropagationListener(this),\n )\n connection.server.addEventListener(\n 'error',\n createStopPropagationListener(this),\n )\n connection.server.addEventListener(\n 'close',\n createStopPropagationListener(this),\n )\n\n // Emit the connection event on the handler.\n // This is what the developer adds listeners for.\n this[kEmitter].emit('connection', resolvedConnection)\n }\n}\n\nfunction createStopPropagationListener(handler: WebSocketHandler) {\n return function stopPropagationListener(event: Event) {\n const propagationStoppedAt = Reflect.get(event, 'kPropagationStoppedAt') as\n | string\n | undefined\n\n if (propagationStoppedAt && handler.id !== propagationStoppedAt) {\n event.stopImmediatePropagation()\n return\n }\n\n Object.defineProperty(event, KOnStopPropagation, {\n value(this: WebSocketHandler) {\n Object.defineProperty(event, 'kPropagationStoppedAt', {\n value: handler.id,\n })\n },\n configurable: true,\n })\n\n // Since the same event instance is shared between all client/server objects,\n // make sure to patch its `stopPropagation` method only once.\n if (!Reflect.get(event, kStopPropagationPatched)) {\n event.stopPropagation = new Proxy(event.stopPropagation, {\n apply: (target, thisArg, args) => {\n Reflect.get(event, KOnStopPropagation)?.call(handler)\n return Reflect.apply(target, thisArg, args)\n },\n })\n\n Object.defineProperty(event, kStopPropagationPatched, {\n value: true,\n // If something else attempts to redefine this, throw.\n configurable: false,\n })\n }\n }\n}\n"],"mappings":"AAAA,SAAS,eAAe;AACxB,SAAS,uBAAuB;AAEhC;AAAA,EAIE;AAAA,OACK;AACP,SAAS,oBAAoB;AActB,MAAM,WAAW,OAAO,UAAU;AAClC,MAAM,iBAAiB,OAAO,gBAAgB;AAC9C,MAAM,UAAU,OAAO,SAAS;AACvC,MAAM,0BAA0B,OAAO,yBAAyB;AAChE,MAAM,qBAAqB,OAAO,oBAAoB;AAE/C,MAAM,iBAAiB;AAAA,EAM5B,YAA6B,KAAW;AAAX;AAC3B,SAAK,KAAK,gBAAgB;AAE1B,SAAK,QAAQ,IAAI,IAAI,QAAQ;AAC7B,SAAK,YAAY,aAAa,IAAI,MAAM,CAAC;AAAA,EAC3C;AAAA,EAVO;AAAA,EACA;AAAA,EAEP,CAAW,QAAQ;AAAA,EASZ,MAAM,MAEoB;AAC/B,UAAM,aAAa,KAAK,MAAM;AAC9B,UAAM,QAAQ,gBAAgB,WAAW,OAAO,KAAK,KAAK,GAAG;AAE7D,WAAO;AAAA,MACL;AAAA,IACF;AAAA,EACF;AAAA,EAEO,UAAU,MAGL;AACV,WAAO,KAAK,aAAa,MAAM;AAAA,EACjC;AAAA,EAEA,OAAO,cAAc,EACnB,OACe;AACf,UAAM,eAAe,KAAK,MAAM,EAAE,MAAM,CAAC;AACzC,UAAM,aAAa,MAAM;AAEzB,UAAM,qBAAiD;AAAA,MACrD,GAAG;AAAA,MACH,QAAQ,aAAa,MAAM,UAAU,CAAC;AAAA,IACxC;AAGA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AACA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AAEA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AACA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AACA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AACA,eAAW,OAAO;AAAA,MAChB;AAAA,MACA,8BAA8B,IAAI;AAAA,IACpC;AAIA,SAAK,QAAQ,EAAE,KAAK,cAAc,kBAAkB;AAAA,EACtD;AACF;AAEA,SAAS,8BAA8B,SAA2B;AAChE,SAAO,SAAS,wBAAwB,OAAc;AACpD,UAAM,uBAAuB,QAAQ,IAAI,OAAO,uBAAuB;AAIvE,QAAI,wBAAwB,QAAQ,OAAO,sBAAsB;AAC/D,YAAM,yBAAyB;AAC/B;AAAA,IACF;AAEA,WAAO,eAAe,OAAO,oBAAoB;AAAA,MAC/C,QAA8B;AAC5B,eAAO,eAAe,OAAO,yBAAyB;AAAA,UACpD,OAAO,QAAQ;AAAA,QACjB,CAAC;AAAA,MACH;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAID,QAAI,CAAC,QAAQ,IAAI,OAAO,uBAAuB,GAAG;AAChD,YAAM,kBAAkB,IAAI,MAAM,MAAM,iBAAiB;AAAA,QACvD,OAAO,CAAC,QAAQ,SAAS,SAAS;AAChC,kBAAQ,IAAI,OAAO,kBAAkB,GAAG,KAAK,OAAO;AACpD,iBAAO,QAAQ,MAAM,QAAQ,SAAS,IAAI;AAAA,QAC5C;AAAA,MACF,CAAC;AAED,aAAO,eAAe,OAAO,yBAAyB;AAAA,QACpD,OAAO;AAAA;AAAA,QAEP,cAAc;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":[]}
|
package/lib/iife/index.js
CHANGED
|
@@ -14412,7 +14412,7 @@ ${operationTypes.join("\n")}
|
|
|
14412
14412
|
return stringToRegexp(path, keys, options);
|
|
14413
14413
|
}
|
|
14414
14414
|
|
|
14415
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.36.
|
|
14415
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.36.4/node_modules/@mswjs/interceptors/lib/browser/chunk-6HYIRFX2.mjs
|
|
14416
14416
|
var encoder = new TextEncoder();
|
|
14417
14417
|
function encodeBuffer(text) {
|
|
14418
14418
|
return encoder.encode(text);
|
|
@@ -14428,7 +14428,7 @@ ${operationTypes.join("\n")}
|
|
|
14428
14428
|
);
|
|
14429
14429
|
}
|
|
14430
14430
|
|
|
14431
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.36.
|
|
14431
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.36.4/node_modules/@mswjs/interceptors/lib/browser/chunk-XVPRNJO7.mjs
|
|
14432
14432
|
var IS_PATCHED_MODULE = Symbol("isPatchedModule");
|
|
14433
14433
|
function isPropertyAccessible(obj, key) {
|
|
14434
14434
|
try {
|
|
@@ -14848,7 +14848,7 @@ ${operationTypes.join("\n")}
|
|
|
14848
14848
|
return message3.toString();
|
|
14849
14849
|
}
|
|
14850
14850
|
|
|
14851
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.36.
|
|
14851
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.36.4/node_modules/@mswjs/interceptors/lib/browser/chunk-QED3Q6Z2.mjs
|
|
14852
14852
|
var INTERNAL_REQUEST_ID_HEADER_NAME = "x-interceptors-internal-request-id";
|
|
14853
14853
|
function getGlobalSymbol(symbol) {
|
|
14854
14854
|
return (
|
|
@@ -14996,7 +14996,7 @@ ${operationTypes.join("\n")}
|
|
|
14996
14996
|
return Math.random().toString(16).slice(2);
|
|
14997
14997
|
}
|
|
14998
14998
|
|
|
14999
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.36.
|
|
14999
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.36.4/node_modules/@mswjs/interceptors/lib/browser/index.mjs
|
|
15000
15000
|
var BatchInterceptor = class extends Interceptor {
|
|
15001
15001
|
constructor(options) {
|
|
15002
15002
|
BatchInterceptor.symbol = Symbol(options.name);
|
|
@@ -28241,12 +28241,16 @@ Consider naming this operation or using "graphql.operation()" request handler to
|
|
|
28241
28241
|
var kEmitter = Symbol("kEmitter");
|
|
28242
28242
|
var kDispatchEvent = Symbol("kDispatchEvent");
|
|
28243
28243
|
var kSender = Symbol("kSender");
|
|
28244
|
+
var kStopPropagationPatched = Symbol("kStopPropagationPatched");
|
|
28245
|
+
var KOnStopPropagation = Symbol("KOnStopPropagation");
|
|
28244
28246
|
var WebSocketHandler = class {
|
|
28245
28247
|
constructor(url) {
|
|
28246
28248
|
this.url = url;
|
|
28249
|
+
this.id = createRequestId();
|
|
28247
28250
|
this[kEmitter] = new Emitter();
|
|
28248
28251
|
this.callFrame = getCallFrame(new Error());
|
|
28249
28252
|
}
|
|
28253
|
+
id;
|
|
28250
28254
|
callFrame;
|
|
28251
28255
|
[kEmitter];
|
|
28252
28256
|
parse(args) {
|
|
@@ -28266,9 +28270,63 @@ Consider naming this operation or using "graphql.operation()" request handler to
|
|
|
28266
28270
|
...connection,
|
|
28267
28271
|
params: parsedResult.match.params || {}
|
|
28268
28272
|
};
|
|
28273
|
+
connection.client.addEventListener(
|
|
28274
|
+
"message",
|
|
28275
|
+
createStopPropagationListener(this)
|
|
28276
|
+
);
|
|
28277
|
+
connection.client.addEventListener(
|
|
28278
|
+
"close",
|
|
28279
|
+
createStopPropagationListener(this)
|
|
28280
|
+
);
|
|
28281
|
+
connection.server.addEventListener(
|
|
28282
|
+
"open",
|
|
28283
|
+
createStopPropagationListener(this)
|
|
28284
|
+
);
|
|
28285
|
+
connection.server.addEventListener(
|
|
28286
|
+
"message",
|
|
28287
|
+
createStopPropagationListener(this)
|
|
28288
|
+
);
|
|
28289
|
+
connection.server.addEventListener(
|
|
28290
|
+
"error",
|
|
28291
|
+
createStopPropagationListener(this)
|
|
28292
|
+
);
|
|
28293
|
+
connection.server.addEventListener(
|
|
28294
|
+
"close",
|
|
28295
|
+
createStopPropagationListener(this)
|
|
28296
|
+
);
|
|
28269
28297
|
this[kEmitter].emit("connection", resolvedConnection);
|
|
28270
28298
|
}
|
|
28271
28299
|
};
|
|
28300
|
+
function createStopPropagationListener(handler) {
|
|
28301
|
+
return function stopPropagationListener(event) {
|
|
28302
|
+
const propagationStoppedAt = Reflect.get(event, "kPropagationStoppedAt");
|
|
28303
|
+
if (propagationStoppedAt && handler.id !== propagationStoppedAt) {
|
|
28304
|
+
event.stopImmediatePropagation();
|
|
28305
|
+
return;
|
|
28306
|
+
}
|
|
28307
|
+
Object.defineProperty(event, KOnStopPropagation, {
|
|
28308
|
+
value() {
|
|
28309
|
+
Object.defineProperty(event, "kPropagationStoppedAt", {
|
|
28310
|
+
value: handler.id
|
|
28311
|
+
});
|
|
28312
|
+
},
|
|
28313
|
+
configurable: true
|
|
28314
|
+
});
|
|
28315
|
+
if (!Reflect.get(event, kStopPropagationPatched)) {
|
|
28316
|
+
event.stopPropagation = new Proxy(event.stopPropagation, {
|
|
28317
|
+
apply: (target, thisArg, args) => {
|
|
28318
|
+
Reflect.get(event, KOnStopPropagation)?.call(handler);
|
|
28319
|
+
return Reflect.apply(target, thisArg, args);
|
|
28320
|
+
}
|
|
28321
|
+
});
|
|
28322
|
+
Object.defineProperty(event, kStopPropagationPatched, {
|
|
28323
|
+
value: true,
|
|
28324
|
+
// If something else attempts to redefine this, throw.
|
|
28325
|
+
configurable: false
|
|
28326
|
+
});
|
|
28327
|
+
}
|
|
28328
|
+
};
|
|
28329
|
+
}
|
|
28272
28330
|
|
|
28273
28331
|
// src/core/ws/WebSocketMemoryClientStore.ts
|
|
28274
28332
|
var WebSocketMemoryClientStore = class {
|
|
@@ -29475,7 +29533,7 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
29475
29533
|
}
|
|
29476
29534
|
};
|
|
29477
29535
|
|
|
29478
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.36.
|
|
29536
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.36.4/node_modules/@mswjs/interceptors/lib/browser/chunk-THPGBWJQ.mjs
|
|
29479
29537
|
var InterceptorError = class extends Error {
|
|
29480
29538
|
constructor(message3) {
|
|
29481
29539
|
super(message3);
|
|
@@ -29643,7 +29701,7 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
29643
29701
|
return false;
|
|
29644
29702
|
}
|
|
29645
29703
|
|
|
29646
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.36.
|
|
29704
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.36.4/node_modules/@mswjs/interceptors/lib/browser/chunk-GHRPKS6J.mjs
|
|
29647
29705
|
function canParseUrl(url) {
|
|
29648
29706
|
try {
|
|
29649
29707
|
new URL(url);
|
|
@@ -29805,12 +29863,12 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
29805
29863
|
this.logger.info(
|
|
29806
29864
|
"no mocked response received, performing request as-is..."
|
|
29807
29865
|
);
|
|
29808
|
-
return pureFetch(request).then((response) => {
|
|
29866
|
+
return pureFetch(request).then(async (response) => {
|
|
29809
29867
|
this.logger.info("original fetch performed", response);
|
|
29810
29868
|
if (this.emitter.listenerCount("response") > 0) {
|
|
29811
29869
|
this.logger.info('emitting the "response" event...');
|
|
29812
29870
|
const responseClone = response.clone();
|
|
29813
|
-
this.emitter
|
|
29871
|
+
await emitAsync(this.emitter, "response", {
|
|
29814
29872
|
response: responseClone,
|
|
29815
29873
|
isMockedResponse: false,
|
|
29816
29874
|
request,
|
|
@@ -29840,7 +29898,7 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
29840
29898
|
var FetchInterceptor = _FetchInterceptor;
|
|
29841
29899
|
FetchInterceptor.symbol = Symbol("fetch");
|
|
29842
29900
|
|
|
29843
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.36.
|
|
29901
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.36.4/node_modules/@mswjs/interceptors/lib/browser/chunk-SUQ32ZQK.mjs
|
|
29844
29902
|
function concatArrayBuffer(left, right) {
|
|
29845
29903
|
const result = new Uint8Array(left.byteLength + right.byteLength);
|
|
29846
29904
|
result.set(left, 0);
|
|
@@ -30711,7 +30769,7 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
30711
30769
|
}
|
|
30712
30770
|
}
|
|
30713
30771
|
|
|
30714
|
-
// node_modules/.pnpm/@mswjs+interceptors@0.36.
|
|
30772
|
+
// node_modules/.pnpm/@mswjs+interceptors@0.36.4/node_modules/@mswjs/interceptors/lib/browser/interceptors/WebSocket/index.mjs
|
|
30715
30773
|
function bindEvent(target, event) {
|
|
30716
30774
|
Object.defineProperties(event, {
|
|
30717
30775
|
target: {
|
|
@@ -30818,14 +30876,17 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
30818
30876
|
* Listen for the outgoing events from the connected WebSocket client.
|
|
30819
30877
|
*/
|
|
30820
30878
|
addEventListener(type, listener, options) {
|
|
30821
|
-
|
|
30822
|
-
|
|
30823
|
-
|
|
30824
|
-
|
|
30825
|
-
|
|
30879
|
+
if (!Reflect.has(listener, kBoundListener)) {
|
|
30880
|
+
const boundListener = listener.bind(this.socket);
|
|
30881
|
+
Object.defineProperty(listener, kBoundListener, {
|
|
30882
|
+
value: boundListener,
|
|
30883
|
+
enumerable: false,
|
|
30884
|
+
configurable: false
|
|
30885
|
+
});
|
|
30886
|
+
}
|
|
30826
30887
|
this[kEmitter2].addEventListener(
|
|
30827
30888
|
type,
|
|
30828
|
-
|
|
30889
|
+
Reflect.get(listener, kBoundListener),
|
|
30829
30890
|
options
|
|
30830
30891
|
);
|
|
30831
30892
|
}
|
|
@@ -30880,9 +30941,11 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
30880
30941
|
if (await this[kPassthroughPromise]) {
|
|
30881
30942
|
return;
|
|
30882
30943
|
}
|
|
30883
|
-
this.readyState = this.OPEN;
|
|
30884
30944
|
this.protocol = typeof protocols === "string" ? protocols : Array.isArray(protocols) && protocols.length > 0 ? protocols[0] : "";
|
|
30885
|
-
this.
|
|
30945
|
+
if (this.readyState === this.CONNECTING) {
|
|
30946
|
+
this.readyState = this.OPEN;
|
|
30947
|
+
this.dispatchEvent(bindEvent(this, new Event("open")));
|
|
30948
|
+
}
|
|
30886
30949
|
});
|
|
30887
30950
|
}
|
|
30888
30951
|
set onopen(listener) {
|
|
@@ -31068,15 +31131,33 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
31068
31131
|
)
|
|
31069
31132
|
);
|
|
31070
31133
|
});
|
|
31071
|
-
this.client.addEventListener(
|
|
31072
|
-
|
|
31073
|
-
|
|
31074
|
-
|
|
31075
|
-
|
|
31076
|
-
|
|
31134
|
+
this.client.addEventListener(
|
|
31135
|
+
"close",
|
|
31136
|
+
(event) => {
|
|
31137
|
+
this.handleMockClose(event);
|
|
31138
|
+
},
|
|
31139
|
+
{
|
|
31140
|
+
signal: this.mockCloseController.signal
|
|
31141
|
+
}
|
|
31142
|
+
);
|
|
31143
|
+
realWebSocket.addEventListener(
|
|
31144
|
+
"close",
|
|
31145
|
+
(event) => {
|
|
31146
|
+
this.handleRealClose(event);
|
|
31147
|
+
},
|
|
31148
|
+
{
|
|
31149
|
+
signal: this.realCloseController.signal
|
|
31150
|
+
}
|
|
31151
|
+
);
|
|
31077
31152
|
realWebSocket.addEventListener("error", () => {
|
|
31078
|
-
|
|
31079
|
-
|
|
31153
|
+
const errorEvent = bindEvent(
|
|
31154
|
+
realWebSocket,
|
|
31155
|
+
new Event("error", { cancelable: true })
|
|
31156
|
+
);
|
|
31157
|
+
this[kEmitter22].dispatchEvent(errorEvent);
|
|
31158
|
+
if (!errorEvent.defaultPrevented) {
|
|
31159
|
+
this.client.dispatchEvent(bindEvent(this.client, new Event("error")));
|
|
31160
|
+
}
|
|
31080
31161
|
});
|
|
31081
31162
|
this.realWebSocket = realWebSocket;
|
|
31082
31163
|
}
|
|
@@ -31084,14 +31165,16 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
31084
31165
|
* Listen for the incoming events from the original WebSocket server.
|
|
31085
31166
|
*/
|
|
31086
31167
|
addEventListener(event, listener, options) {
|
|
31087
|
-
|
|
31088
|
-
|
|
31089
|
-
|
|
31090
|
-
|
|
31091
|
-
|
|
31168
|
+
if (!Reflect.has(listener, kBoundListener2)) {
|
|
31169
|
+
const boundListener = listener.bind(this.client);
|
|
31170
|
+
Object.defineProperty(listener, kBoundListener2, {
|
|
31171
|
+
value: boundListener,
|
|
31172
|
+
enumerable: false
|
|
31173
|
+
});
|
|
31174
|
+
}
|
|
31092
31175
|
this[kEmitter22].addEventListener(
|
|
31093
31176
|
event,
|
|
31094
|
-
|
|
31177
|
+
Reflect.get(listener, kBoundListener2),
|
|
31095
31178
|
options
|
|
31096
31179
|
);
|
|
31097
31180
|
}
|