msw 2.14.2 → 2.14.3
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 +88 -38
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/index.mjs +88 -38
- package/lib/browser/index.mjs.map +1 -1
- package/lib/core/experimental/sources/interceptor-source.js +14 -10
- package/lib/core/experimental/sources/interceptor-source.js.map +1 -1
- package/lib/core/experimental/sources/interceptor-source.mjs +14 -10
- package/lib/core/experimental/sources/interceptor-source.mjs.map +1 -1
- package/lib/iife/index.js +102 -48
- package/lib/iife/index.js.map +1 -1
- package/lib/mockServiceWorker.js +1 -1
- package/package.json +5 -4
- package/src/browser/sources/service-worker-source.ts +17 -12
- package/src/core/experimental/sources/interceptor-source.ts +20 -10
package/lib/browser/index.js
CHANGED
|
@@ -1671,7 +1671,7 @@ Learn more about creating the Service Worker script: https://mswjs.io/docs/cli/i
|
|
|
1671
1671
|
return registrationResult;
|
|
1672
1672
|
};
|
|
1673
1673
|
|
|
1674
|
-
// node_modules/.pnpm/rettime@0.11.
|
|
1674
|
+
// node_modules/.pnpm/rettime@0.11.11/node_modules/rettime/build/lens-list.mjs
|
|
1675
1675
|
var LensList = class {
|
|
1676
1676
|
#list;
|
|
1677
1677
|
#lens;
|
|
@@ -1713,15 +1713,17 @@ var LensList = class {
|
|
|
1713
1713
|
}
|
|
1714
1714
|
/**
|
|
1715
1715
|
* Delete the value belonging to the given key.
|
|
1716
|
+
* Returns `true` if the value was present and removed, `false` otherwise.
|
|
1716
1717
|
*/
|
|
1717
1718
|
delete(key, value) {
|
|
1718
|
-
if (this.size === 0) return;
|
|
1719
|
-
this.#list = this.#list.filter((item) => item[1] !== value);
|
|
1719
|
+
if (this.size === 0) return false;
|
|
1720
1720
|
const values = this.#lens.get(key);
|
|
1721
|
-
if (values)
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1721
|
+
if (!values) return false;
|
|
1722
|
+
const index = values.indexOf(value);
|
|
1723
|
+
if (index === -1) return false;
|
|
1724
|
+
values.splice(index, 1);
|
|
1725
|
+
this.#list.splice(this.#list.findIndex((item) => item[0] === key && item[1] === value), 1);
|
|
1726
|
+
return true;
|
|
1725
1727
|
}
|
|
1726
1728
|
/**
|
|
1727
1729
|
* Delete all values belogning to the given key.
|
|
@@ -1744,7 +1746,7 @@ var LensList = class {
|
|
|
1744
1746
|
}
|
|
1745
1747
|
};
|
|
1746
1748
|
|
|
1747
|
-
// node_modules/.pnpm/rettime@0.11.
|
|
1749
|
+
// node_modules/.pnpm/rettime@0.11.11/node_modules/rettime/build/index.mjs
|
|
1748
1750
|
var kDefaultPrevented2 = Symbol("kDefaultPrevented");
|
|
1749
1751
|
var kPropagationStopped = Symbol("kPropagationStopped");
|
|
1750
1752
|
var kImmediatePropagationStopped = Symbol("kImmediatePropagationStopped");
|
|
@@ -1777,37 +1779,66 @@ var TypedEvent = class extends MessageEvent {
|
|
|
1777
1779
|
var Emitter2 = class {
|
|
1778
1780
|
#listeners;
|
|
1779
1781
|
#listenerOptions;
|
|
1782
|
+
#listenerAbortCleanups;
|
|
1780
1783
|
#typelessListeners;
|
|
1781
1784
|
#hookListeners;
|
|
1782
1785
|
#hookListenerOptions;
|
|
1786
|
+
#hookListenerAbortCleanups;
|
|
1783
1787
|
hooks;
|
|
1784
1788
|
constructor() {
|
|
1785
1789
|
this.#listeners = new LensList();
|
|
1786
1790
|
this.#listenerOptions = /* @__PURE__ */ new WeakMap();
|
|
1791
|
+
this.#listenerAbortCleanups = /* @__PURE__ */ new WeakMap();
|
|
1787
1792
|
this.#typelessListeners = /* @__PURE__ */ new WeakSet();
|
|
1788
1793
|
this.#hookListeners = new LensList();
|
|
1789
1794
|
this.#hookListenerOptions = /* @__PURE__ */ new WeakMap();
|
|
1795
|
+
this.#hookListenerAbortCleanups = /* @__PURE__ */ new WeakMap();
|
|
1790
1796
|
this.hooks = {
|
|
1791
1797
|
on: (hook, callback, options) => {
|
|
1798
|
+
if (options?.signal?.aborted) return;
|
|
1792
1799
|
if (options?.once) {
|
|
1793
1800
|
const original = callback;
|
|
1794
1801
|
const wrapper = ((...args) => {
|
|
1795
|
-
this.#
|
|
1802
|
+
this.#deleteHookListener(hook, wrapper);
|
|
1796
1803
|
return original(...args);
|
|
1797
1804
|
});
|
|
1798
1805
|
callback = wrapper;
|
|
1799
1806
|
}
|
|
1800
1807
|
this.#hookListeners.append(hook, callback);
|
|
1801
1808
|
if (options) this.#hookListenerOptions.set(callback, options);
|
|
1802
|
-
if (options?.signal)
|
|
1803
|
-
|
|
1804
|
-
|
|
1809
|
+
if (options?.signal) {
|
|
1810
|
+
const { signal } = options;
|
|
1811
|
+
const onAbort = () => {
|
|
1812
|
+
this.#deleteHookListener(hook, callback);
|
|
1813
|
+
};
|
|
1814
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
1815
|
+
this.#hookListenerAbortCleanups.set(callback, () => {
|
|
1816
|
+
signal.removeEventListener("abort", onAbort);
|
|
1817
|
+
});
|
|
1818
|
+
}
|
|
1805
1819
|
},
|
|
1806
1820
|
removeListener: (hook, callback) => {
|
|
1807
|
-
this.#
|
|
1821
|
+
this.#deleteHookListener(hook, callback);
|
|
1808
1822
|
}
|
|
1809
1823
|
};
|
|
1810
1824
|
}
|
|
1825
|
+
#deleteHookListener(hook, callback) {
|
|
1826
|
+
this.#hookListeners.delete(hook, callback);
|
|
1827
|
+
const cleanup = this.#hookListenerAbortCleanups.get(callback);
|
|
1828
|
+
if (cleanup) {
|
|
1829
|
+
cleanup();
|
|
1830
|
+
this.#hookListenerAbortCleanups.delete(callback);
|
|
1831
|
+
}
|
|
1832
|
+
}
|
|
1833
|
+
#deleteListener(type, listener) {
|
|
1834
|
+
const removed = this.#listeners.delete(type, listener);
|
|
1835
|
+
const cleanup = this.#listenerAbortCleanups.get(listener);
|
|
1836
|
+
if (cleanup) {
|
|
1837
|
+
cleanup();
|
|
1838
|
+
this.#listenerAbortCleanups.delete(listener);
|
|
1839
|
+
}
|
|
1840
|
+
return removed;
|
|
1841
|
+
}
|
|
1811
1842
|
/**
|
|
1812
1843
|
* Adds a listener for the given event type.
|
|
1813
1844
|
*/
|
|
@@ -1909,8 +1940,8 @@ var Emitter2 = class {
|
|
|
1909
1940
|
*/
|
|
1910
1941
|
removeListener(type, listener) {
|
|
1911
1942
|
const options = this.#listenerOptions.get(listener);
|
|
1912
|
-
this.#
|
|
1913
|
-
for (const hook of this.#hookListeners.get("removeListener")) hook(type, listener, options);
|
|
1943
|
+
if (!this.#deleteListener(type, listener)) return;
|
|
1944
|
+
for (const hook of this.#hookListeners.get("removeListener").slice()) hook(type, listener, options);
|
|
1914
1945
|
}
|
|
1915
1946
|
/**
|
|
1916
1947
|
* Removes all listeners for the given event type.
|
|
@@ -1918,11 +1949,12 @@ var Emitter2 = class {
|
|
|
1918
1949
|
*/
|
|
1919
1950
|
removeAllListeners(type) {
|
|
1920
1951
|
if (type == null) {
|
|
1921
|
-
this.#listeners.
|
|
1922
|
-
for (const [hookType, hookListener] of this.#hookListeners) if (!this.#hookListenerOptions.get(hookListener)?.persist) this.#
|
|
1952
|
+
for (const [listenerType, listeners$1] of this.#listeners.entries()) while (listeners$1.length > 0) this.removeListener(listenerType, listeners$1[0]);
|
|
1953
|
+
for (const [hookType, hookListener] of [...this.#hookListeners]) if (!this.#hookListenerOptions.get(hookListener)?.persist) this.#deleteHookListener(hookType, hookListener);
|
|
1923
1954
|
return;
|
|
1924
1955
|
}
|
|
1925
|
-
this
|
|
1956
|
+
const listeners = this.listeners(type);
|
|
1957
|
+
while (listeners.length > 0) this.removeListener(type, listeners[0]);
|
|
1926
1958
|
}
|
|
1927
1959
|
/**
|
|
1928
1960
|
* Returns the list of listeners for the given event type.
|
|
@@ -1941,15 +1973,23 @@ var Emitter2 = class {
|
|
|
1941
1973
|
return this.listeners(type).length;
|
|
1942
1974
|
}
|
|
1943
1975
|
#addListener(type, listener, options, insertMode = "append") {
|
|
1944
|
-
|
|
1976
|
+
if (options?.signal?.aborted) return;
|
|
1977
|
+
for (const hook of this.#hookListeners.get("newListener").slice()) hook(type, listener, options);
|
|
1945
1978
|
if (type === "*") this.#typelessListeners.add(listener);
|
|
1946
1979
|
if (insertMode === "prepend") this.#listeners.prepend(type, listener);
|
|
1947
1980
|
else this.#listeners.append(type, listener);
|
|
1948
1981
|
if (options) {
|
|
1949
1982
|
this.#listenerOptions.set(listener, options);
|
|
1950
|
-
if (options.signal)
|
|
1951
|
-
|
|
1952
|
-
|
|
1983
|
+
if (options.signal) {
|
|
1984
|
+
const { signal } = options;
|
|
1985
|
+
const onAbort = () => {
|
|
1986
|
+
this.removeListener(type, listener);
|
|
1987
|
+
};
|
|
1988
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
1989
|
+
this.#listenerAbortCleanups.set(listener, () => {
|
|
1990
|
+
signal.removeEventListener("abort", onAbort);
|
|
1991
|
+
});
|
|
1992
|
+
}
|
|
1953
1993
|
}
|
|
1954
1994
|
}
|
|
1955
1995
|
#proxyEvent(event) {
|
|
@@ -1966,22 +2006,27 @@ var Emitter2 = class {
|
|
|
1966
2006
|
};
|
|
1967
2007
|
}
|
|
1968
2008
|
#callListener(event, listener) {
|
|
1969
|
-
for (const hook of this.#hookListeners.get("beforeEmit")) if (hook(event) === false) return;
|
|
2009
|
+
for (const hook of this.#hookListeners.get("beforeEmit").slice()) if (hook(event) === false) return;
|
|
1970
2010
|
const returnValue = listener.call(this, event);
|
|
1971
2011
|
const options = this.#listenerOptions.get(listener);
|
|
1972
2012
|
if (options?.once) {
|
|
1973
2013
|
const type = this.#isTypelessListener(listener) ? "*" : event.type;
|
|
1974
|
-
this.#
|
|
1975
|
-
for (const hook of this.#hookListeners.get("removeListener")) hook(type, listener, options);
|
|
2014
|
+
if (this.#deleteListener(type, listener)) for (const hook of this.#hookListeners.get("removeListener").slice()) hook(type, listener, options);
|
|
1976
2015
|
}
|
|
1977
2016
|
return returnValue;
|
|
1978
2017
|
}
|
|
1979
2018
|
/**
|
|
1980
2019
|
* Return a list of all event listeners relevant for the given event type.
|
|
1981
2020
|
* This includes the explicit event listeners and also typeless event listeners.
|
|
2021
|
+
*
|
|
2022
|
+
* @note Snapshot the matching listeners before yielding. Listeners can add or
|
|
2023
|
+
* remove other listeners during emission (e.g. `earlyOn` unshifts `#list`),
|
|
2024
|
+
* which would otherwise shift the live iterator and re-yield prior entries.
|
|
1982
2025
|
*/
|
|
1983
2026
|
*#matchListeners(type) {
|
|
1984
|
-
|
|
2027
|
+
const snapshot = [];
|
|
2028
|
+
for (const [key, listener] of this.#listeners) if (key === "*" || key === type) snapshot.push(listener);
|
|
2029
|
+
yield* snapshot;
|
|
1985
2030
|
}
|
|
1986
2031
|
#isTypelessListener(listener) {
|
|
1987
2032
|
return this.#typelessListeners.has(listener);
|
|
@@ -2295,11 +2340,12 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
2295
2340
|
}
|
|
2296
2341
|
async #handleResponse(event) {
|
|
2297
2342
|
const { request, response, isMockedResponse } = event.data;
|
|
2343
|
+
const frame = this.#frames.get(request.id);
|
|
2298
2344
|
if (response.type?.includes("opaque")) {
|
|
2299
2345
|
this.#frames.delete(request.id);
|
|
2346
|
+
frame?.events.removeAllListeners();
|
|
2300
2347
|
return;
|
|
2301
2348
|
}
|
|
2302
|
-
const frame = this.#frames.get(request.id);
|
|
2303
2349
|
this.#frames.delete(request.id);
|
|
2304
2350
|
if (frame == null) {
|
|
2305
2351
|
return;
|
|
@@ -2323,17 +2369,21 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
2323
2369
|
url: request.url
|
|
2324
2370
|
}
|
|
2325
2371
|
);
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2372
|
+
try {
|
|
2373
|
+
frame.events.emit(
|
|
2374
|
+
new import_http_frame.ResponseEvent(
|
|
2375
|
+
isMockedResponse ? "response:mocked" : "response:bypass",
|
|
2376
|
+
{
|
|
2377
|
+
requestId: frame.data.id,
|
|
2378
|
+
request: fetchRequest,
|
|
2379
|
+
response: fetchResponse,
|
|
2380
|
+
isMockedResponse
|
|
2381
|
+
}
|
|
2382
|
+
)
|
|
2383
|
+
);
|
|
2384
|
+
} finally {
|
|
2385
|
+
frame.events.removeAllListeners();
|
|
2386
|
+
}
|
|
2337
2387
|
}
|
|
2338
2388
|
#defaultFindWorker = (workerUrl, mockServiceWorkerUrl) => {
|
|
2339
2389
|
return workerUrl === mockServiceWorkerUrl;
|