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.mjs
CHANGED
|
@@ -1650,7 +1650,7 @@ Learn more about creating the Service Worker script: https://mswjs.io/docs/cli/i
|
|
|
1650
1650
|
return registrationResult;
|
|
1651
1651
|
};
|
|
1652
1652
|
|
|
1653
|
-
// node_modules/.pnpm/rettime@0.11.
|
|
1653
|
+
// node_modules/.pnpm/rettime@0.11.11/node_modules/rettime/build/lens-list.mjs
|
|
1654
1654
|
var LensList = class {
|
|
1655
1655
|
#list;
|
|
1656
1656
|
#lens;
|
|
@@ -1692,15 +1692,17 @@ var LensList = class {
|
|
|
1692
1692
|
}
|
|
1693
1693
|
/**
|
|
1694
1694
|
* Delete the value belonging to the given key.
|
|
1695
|
+
* Returns `true` if the value was present and removed, `false` otherwise.
|
|
1695
1696
|
*/
|
|
1696
1697
|
delete(key, value) {
|
|
1697
|
-
if (this.size === 0) return;
|
|
1698
|
-
this.#list = this.#list.filter((item) => item[1] !== value);
|
|
1698
|
+
if (this.size === 0) return false;
|
|
1699
1699
|
const values = this.#lens.get(key);
|
|
1700
|
-
if (values)
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1700
|
+
if (!values) return false;
|
|
1701
|
+
const index = values.indexOf(value);
|
|
1702
|
+
if (index === -1) return false;
|
|
1703
|
+
values.splice(index, 1);
|
|
1704
|
+
this.#list.splice(this.#list.findIndex((item) => item[0] === key && item[1] === value), 1);
|
|
1705
|
+
return true;
|
|
1704
1706
|
}
|
|
1705
1707
|
/**
|
|
1706
1708
|
* Delete all values belogning to the given key.
|
|
@@ -1723,7 +1725,7 @@ var LensList = class {
|
|
|
1723
1725
|
}
|
|
1724
1726
|
};
|
|
1725
1727
|
|
|
1726
|
-
// node_modules/.pnpm/rettime@0.11.
|
|
1728
|
+
// node_modules/.pnpm/rettime@0.11.11/node_modules/rettime/build/index.mjs
|
|
1727
1729
|
var kDefaultPrevented2 = Symbol("kDefaultPrevented");
|
|
1728
1730
|
var kPropagationStopped = Symbol("kPropagationStopped");
|
|
1729
1731
|
var kImmediatePropagationStopped = Symbol("kImmediatePropagationStopped");
|
|
@@ -1756,37 +1758,66 @@ var TypedEvent = class extends MessageEvent {
|
|
|
1756
1758
|
var Emitter2 = class {
|
|
1757
1759
|
#listeners;
|
|
1758
1760
|
#listenerOptions;
|
|
1761
|
+
#listenerAbortCleanups;
|
|
1759
1762
|
#typelessListeners;
|
|
1760
1763
|
#hookListeners;
|
|
1761
1764
|
#hookListenerOptions;
|
|
1765
|
+
#hookListenerAbortCleanups;
|
|
1762
1766
|
hooks;
|
|
1763
1767
|
constructor() {
|
|
1764
1768
|
this.#listeners = new LensList();
|
|
1765
1769
|
this.#listenerOptions = /* @__PURE__ */ new WeakMap();
|
|
1770
|
+
this.#listenerAbortCleanups = /* @__PURE__ */ new WeakMap();
|
|
1766
1771
|
this.#typelessListeners = /* @__PURE__ */ new WeakSet();
|
|
1767
1772
|
this.#hookListeners = new LensList();
|
|
1768
1773
|
this.#hookListenerOptions = /* @__PURE__ */ new WeakMap();
|
|
1774
|
+
this.#hookListenerAbortCleanups = /* @__PURE__ */ new WeakMap();
|
|
1769
1775
|
this.hooks = {
|
|
1770
1776
|
on: (hook, callback, options) => {
|
|
1777
|
+
if (options?.signal?.aborted) return;
|
|
1771
1778
|
if (options?.once) {
|
|
1772
1779
|
const original = callback;
|
|
1773
1780
|
const wrapper = ((...args) => {
|
|
1774
|
-
this.#
|
|
1781
|
+
this.#deleteHookListener(hook, wrapper);
|
|
1775
1782
|
return original(...args);
|
|
1776
1783
|
});
|
|
1777
1784
|
callback = wrapper;
|
|
1778
1785
|
}
|
|
1779
1786
|
this.#hookListeners.append(hook, callback);
|
|
1780
1787
|
if (options) this.#hookListenerOptions.set(callback, options);
|
|
1781
|
-
if (options?.signal)
|
|
1782
|
-
|
|
1783
|
-
|
|
1788
|
+
if (options?.signal) {
|
|
1789
|
+
const { signal } = options;
|
|
1790
|
+
const onAbort = () => {
|
|
1791
|
+
this.#deleteHookListener(hook, callback);
|
|
1792
|
+
};
|
|
1793
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
1794
|
+
this.#hookListenerAbortCleanups.set(callback, () => {
|
|
1795
|
+
signal.removeEventListener("abort", onAbort);
|
|
1796
|
+
});
|
|
1797
|
+
}
|
|
1784
1798
|
},
|
|
1785
1799
|
removeListener: (hook, callback) => {
|
|
1786
|
-
this.#
|
|
1800
|
+
this.#deleteHookListener(hook, callback);
|
|
1787
1801
|
}
|
|
1788
1802
|
};
|
|
1789
1803
|
}
|
|
1804
|
+
#deleteHookListener(hook, callback) {
|
|
1805
|
+
this.#hookListeners.delete(hook, callback);
|
|
1806
|
+
const cleanup = this.#hookListenerAbortCleanups.get(callback);
|
|
1807
|
+
if (cleanup) {
|
|
1808
|
+
cleanup();
|
|
1809
|
+
this.#hookListenerAbortCleanups.delete(callback);
|
|
1810
|
+
}
|
|
1811
|
+
}
|
|
1812
|
+
#deleteListener(type, listener) {
|
|
1813
|
+
const removed = this.#listeners.delete(type, listener);
|
|
1814
|
+
const cleanup = this.#listenerAbortCleanups.get(listener);
|
|
1815
|
+
if (cleanup) {
|
|
1816
|
+
cleanup();
|
|
1817
|
+
this.#listenerAbortCleanups.delete(listener);
|
|
1818
|
+
}
|
|
1819
|
+
return removed;
|
|
1820
|
+
}
|
|
1790
1821
|
/**
|
|
1791
1822
|
* Adds a listener for the given event type.
|
|
1792
1823
|
*/
|
|
@@ -1888,8 +1919,8 @@ var Emitter2 = class {
|
|
|
1888
1919
|
*/
|
|
1889
1920
|
removeListener(type, listener) {
|
|
1890
1921
|
const options = this.#listenerOptions.get(listener);
|
|
1891
|
-
this.#
|
|
1892
|
-
for (const hook of this.#hookListeners.get("removeListener")) hook(type, listener, options);
|
|
1922
|
+
if (!this.#deleteListener(type, listener)) return;
|
|
1923
|
+
for (const hook of this.#hookListeners.get("removeListener").slice()) hook(type, listener, options);
|
|
1893
1924
|
}
|
|
1894
1925
|
/**
|
|
1895
1926
|
* Removes all listeners for the given event type.
|
|
@@ -1897,11 +1928,12 @@ var Emitter2 = class {
|
|
|
1897
1928
|
*/
|
|
1898
1929
|
removeAllListeners(type) {
|
|
1899
1930
|
if (type == null) {
|
|
1900
|
-
this.#listeners.
|
|
1901
|
-
for (const [hookType, hookListener] of this.#hookListeners) if (!this.#hookListenerOptions.get(hookListener)?.persist) this.#
|
|
1931
|
+
for (const [listenerType, listeners$1] of this.#listeners.entries()) while (listeners$1.length > 0) this.removeListener(listenerType, listeners$1[0]);
|
|
1932
|
+
for (const [hookType, hookListener] of [...this.#hookListeners]) if (!this.#hookListenerOptions.get(hookListener)?.persist) this.#deleteHookListener(hookType, hookListener);
|
|
1902
1933
|
return;
|
|
1903
1934
|
}
|
|
1904
|
-
this
|
|
1935
|
+
const listeners = this.listeners(type);
|
|
1936
|
+
while (listeners.length > 0) this.removeListener(type, listeners[0]);
|
|
1905
1937
|
}
|
|
1906
1938
|
/**
|
|
1907
1939
|
* Returns the list of listeners for the given event type.
|
|
@@ -1920,15 +1952,23 @@ var Emitter2 = class {
|
|
|
1920
1952
|
return this.listeners(type).length;
|
|
1921
1953
|
}
|
|
1922
1954
|
#addListener(type, listener, options, insertMode = "append") {
|
|
1923
|
-
|
|
1955
|
+
if (options?.signal?.aborted) return;
|
|
1956
|
+
for (const hook of this.#hookListeners.get("newListener").slice()) hook(type, listener, options);
|
|
1924
1957
|
if (type === "*") this.#typelessListeners.add(listener);
|
|
1925
1958
|
if (insertMode === "prepend") this.#listeners.prepend(type, listener);
|
|
1926
1959
|
else this.#listeners.append(type, listener);
|
|
1927
1960
|
if (options) {
|
|
1928
1961
|
this.#listenerOptions.set(listener, options);
|
|
1929
|
-
if (options.signal)
|
|
1930
|
-
|
|
1931
|
-
|
|
1962
|
+
if (options.signal) {
|
|
1963
|
+
const { signal } = options;
|
|
1964
|
+
const onAbort = () => {
|
|
1965
|
+
this.removeListener(type, listener);
|
|
1966
|
+
};
|
|
1967
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
1968
|
+
this.#listenerAbortCleanups.set(listener, () => {
|
|
1969
|
+
signal.removeEventListener("abort", onAbort);
|
|
1970
|
+
});
|
|
1971
|
+
}
|
|
1932
1972
|
}
|
|
1933
1973
|
}
|
|
1934
1974
|
#proxyEvent(event) {
|
|
@@ -1945,22 +1985,27 @@ var Emitter2 = class {
|
|
|
1945
1985
|
};
|
|
1946
1986
|
}
|
|
1947
1987
|
#callListener(event, listener) {
|
|
1948
|
-
for (const hook of this.#hookListeners.get("beforeEmit")) if (hook(event) === false) return;
|
|
1988
|
+
for (const hook of this.#hookListeners.get("beforeEmit").slice()) if (hook(event) === false) return;
|
|
1949
1989
|
const returnValue = listener.call(this, event);
|
|
1950
1990
|
const options = this.#listenerOptions.get(listener);
|
|
1951
1991
|
if (options?.once) {
|
|
1952
1992
|
const type = this.#isTypelessListener(listener) ? "*" : event.type;
|
|
1953
|
-
this.#
|
|
1954
|
-
for (const hook of this.#hookListeners.get("removeListener")) hook(type, listener, options);
|
|
1993
|
+
if (this.#deleteListener(type, listener)) for (const hook of this.#hookListeners.get("removeListener").slice()) hook(type, listener, options);
|
|
1955
1994
|
}
|
|
1956
1995
|
return returnValue;
|
|
1957
1996
|
}
|
|
1958
1997
|
/**
|
|
1959
1998
|
* Return a list of all event listeners relevant for the given event type.
|
|
1960
1999
|
* This includes the explicit event listeners and also typeless event listeners.
|
|
2000
|
+
*
|
|
2001
|
+
* @note Snapshot the matching listeners before yielding. Listeners can add or
|
|
2002
|
+
* remove other listeners during emission (e.g. `earlyOn` unshifts `#list`),
|
|
2003
|
+
* which would otherwise shift the live iterator and re-yield prior entries.
|
|
1961
2004
|
*/
|
|
1962
2005
|
*#matchListeners(type) {
|
|
1963
|
-
|
|
2006
|
+
const snapshot = [];
|
|
2007
|
+
for (const [key, listener] of this.#listeners) if (key === "*" || key === type) snapshot.push(listener);
|
|
2008
|
+
yield* snapshot;
|
|
1964
2009
|
}
|
|
1965
2010
|
#isTypelessListener(listener) {
|
|
1966
2011
|
return this.#typelessListeners.has(listener);
|
|
@@ -2274,11 +2319,12 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
2274
2319
|
}
|
|
2275
2320
|
async #handleResponse(event) {
|
|
2276
2321
|
const { request, response, isMockedResponse } = event.data;
|
|
2322
|
+
const frame = this.#frames.get(request.id);
|
|
2277
2323
|
if (response.type?.includes("opaque")) {
|
|
2278
2324
|
this.#frames.delete(request.id);
|
|
2325
|
+
frame?.events.removeAllListeners();
|
|
2279
2326
|
return;
|
|
2280
2327
|
}
|
|
2281
|
-
const frame = this.#frames.get(request.id);
|
|
2282
2328
|
this.#frames.delete(request.id);
|
|
2283
2329
|
if (frame == null) {
|
|
2284
2330
|
return;
|
|
@@ -2302,17 +2348,21 @@ Please consider using a custom "serviceWorker.url" option to point to the actual
|
|
|
2302
2348
|
url: request.url
|
|
2303
2349
|
}
|
|
2304
2350
|
);
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2351
|
+
try {
|
|
2352
|
+
frame.events.emit(
|
|
2353
|
+
new ResponseEvent(
|
|
2354
|
+
isMockedResponse ? "response:mocked" : "response:bypass",
|
|
2355
|
+
{
|
|
2356
|
+
requestId: frame.data.id,
|
|
2357
|
+
request: fetchRequest,
|
|
2358
|
+
response: fetchResponse,
|
|
2359
|
+
isMockedResponse
|
|
2360
|
+
}
|
|
2361
|
+
)
|
|
2362
|
+
);
|
|
2363
|
+
} finally {
|
|
2364
|
+
frame.events.removeAllListeners();
|
|
2365
|
+
}
|
|
2316
2366
|
}
|
|
2317
2367
|
#defaultFindWorker = (workerUrl, mockServiceWorkerUrl) => {
|
|
2318
2368
|
return workerUrl === mockServiceWorkerUrl;
|