msw-fetch-mock 0.3.0 → 0.3.1

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.
Files changed (46) hide show
  1. package/README.md +72 -6
  2. package/dist/browser.cjs +43 -0
  3. package/dist/browser.d.cts +15 -0
  4. package/dist/browser.d.ts +15 -9
  5. package/dist/browser.js +42 -7
  6. package/dist/chunk-43CWIVXO.cjs +540 -0
  7. package/dist/chunk-A56K5DPD.cjs +58 -0
  8. package/dist/chunk-ATXIIOZA.js +540 -0
  9. package/dist/chunk-D26SJTTI.js +27 -0
  10. package/dist/chunk-HYRDB2FH.cjs +27 -0
  11. package/dist/chunk-KSDUQENI.js +58 -0
  12. package/dist/fetch-mock-BNke4Oik.d.cts +199 -0
  13. package/dist/fetch-mock-BNke4Oik.d.ts +199 -0
  14. package/dist/index.cjs +19 -0
  15. package/dist/index.d.cts +2 -0
  16. package/dist/index.d.ts +2 -3
  17. package/dist/index.js +19 -1
  18. package/dist/legacy.cjs +71 -0
  19. package/dist/legacy.d.cts +38 -0
  20. package/dist/legacy.d.ts +38 -0
  21. package/dist/legacy.js +71 -0
  22. package/dist/node.cjs +19 -0
  23. package/dist/node.d.cts +18 -0
  24. package/dist/node.d.ts +17 -10
  25. package/dist/node.js +19 -12
  26. package/docs/api.md +121 -13
  27. package/docs/msw-v1-legacy.md +94 -0
  28. package/package.json +34 -10
  29. package/dist/browser-adapter.d.ts +0 -10
  30. package/dist/browser-adapter.d.ts.map +0 -1
  31. package/dist/browser-adapter.js +0 -20
  32. package/dist/browser.d.ts.map +0 -1
  33. package/dist/fetch-mock.d.ts +0 -31
  34. package/dist/fetch-mock.d.ts.map +0 -1
  35. package/dist/fetch-mock.js +0 -347
  36. package/dist/index.d.ts.map +0 -1
  37. package/dist/mock-call-history.d.ts +0 -65
  38. package/dist/mock-call-history.d.ts.map +0 -1
  39. package/dist/mock-call-history.js +0 -140
  40. package/dist/node-adapter.d.ts +0 -11
  41. package/dist/node-adapter.d.ts.map +0 -1
  42. package/dist/node-adapter.js +0 -34
  43. package/dist/node.d.ts.map +0 -1
  44. package/dist/types.d.ts +0 -74
  45. package/dist/types.d.ts.map +0 -1
  46. package/dist/types.js +0 -1
package/README.md CHANGED
@@ -10,6 +10,11 @@ If you're familiar with Cloudflare Workers' `fetchMock` (from `cloudflare:test`)
10
10
 
11
11
  Supports both **Node.js** (`msw/node`) and **Browser** (`msw/browser`) environments via subpath exports.
12
12
 
13
+ ## Requirements
14
+
15
+ - **Node.js** >= 18
16
+ - **MSW** ^1.0.0 (via `/legacy`) or ^2.12.7
17
+
13
18
  ## Install
14
19
 
15
20
  ```bash
@@ -89,6 +94,26 @@ afterEach(() => {
89
94
 
90
95
  > **Note:** Only one MSW server can be active at a time. If another server is already listening, standalone `activate()` will throw an error guiding you to use `new FetchMock(new NodeMswAdapter(server))` instead.
91
96
 
97
+ ### Legacy (MSW v1)
98
+
99
+ ```typescript
100
+ import { rest } from 'msw';
101
+ import { setupServer } from 'msw/node';
102
+ import { createFetchMock } from 'msw-fetch-mock/legacy';
103
+
104
+ const server = setupServer();
105
+ const fetchMock = createFetchMock(rest, server);
106
+
107
+ beforeAll(() => fetchMock.activate());
108
+ afterAll(() => fetchMock.deactivate());
109
+ afterEach(() => {
110
+ fetchMock.assertNoPendingInterceptors();
111
+ fetchMock.reset();
112
+ });
113
+ ```
114
+
115
+ See [MSW v1 Legacy Guide](docs/msw-v1-legacy.md) for details.
116
+
92
117
  ## Unhandled Requests
93
118
 
94
119
  By default `activate()` uses `'error'` mode — unmatched requests cause `fetch()` to reject. This includes requests to **consumed** interceptors (once a one-shot interceptor has been used, its handler is removed from MSW).
@@ -119,11 +144,12 @@ fetchMock.activate({
119
144
 
120
145
  ### Import Paths
121
146
 
122
- | Path | Environment | MSW dependency |
123
- | ------------------------ | ---------------------------- | -------------- |
124
- | `msw-fetch-mock` | Node.js (re-exports `/node`) | `msw/node` |
125
- | `msw-fetch-mock/node` | Node.js | `msw/node` |
126
- | `msw-fetch-mock/browser` | Browser | `msw/browser` |
147
+ | Path | Environment | MSW version |
148
+ | ------------------------ | ---------------------------- | ----------- |
149
+ | `msw-fetch-mock` | Node.js (re-exports `/node`) | v2 |
150
+ | `msw-fetch-mock/node` | Node.js | v2 |
151
+ | `msw-fetch-mock/browser` | Browser | v2 |
152
+ | `msw-fetch-mock/legacy` | Node.js (MSW v1) | v1 |
127
153
 
128
154
  ### `fetchMock` (singleton)
129
155
 
@@ -136,6 +162,7 @@ Factory function that creates a `FetchMock` with the appropriate adapter.
136
162
 
137
163
  - Node: `createFetchMock(server?)` — optionally pass an existing MSW `SetupServer`
138
164
  - Browser: `createFetchMock(worker)` — pass an MSW `SetupWorker` (required)
165
+ - Legacy: `createFetchMock(rest, server?)` — pass MSW v1 `rest` object
139
166
 
140
167
  ### `new FetchMock(adapter?)`
141
168
 
@@ -145,7 +172,7 @@ Creates a `FetchMock` instance with an explicit `MswAdapter`. Use `NodeMswAdapte
145
172
 
146
173
  ```typescript
147
174
  fetchMock
148
- .get(origin) // select origin
175
+ .get(origin) // string, RegExp, or function
149
176
  .intercept({ path, method, headers, body, query }) // match criteria
150
177
  .reply(status, body, options) // define response
151
178
  .times(n) / .persist(); // repeat control
@@ -167,10 +194,49 @@ fetchMock.assertNoPendingInterceptors(); // throws if unconsumed interceptors re
167
194
  fetchMock.reset(); // clears interceptors + call history + handlers
168
195
  ```
169
196
 
197
+ ## Tested Environments
198
+
199
+ E2E tests run on every CI push across these environments:
200
+
201
+ | Environment | Module System | Test Framework |
202
+ | -------------- | ------------- | ------------------- |
203
+ | Jest ESM | ESM (import) | Jest |
204
+ | Jest CJS | CJS (require) | Jest |
205
+ | Node.js Test | ESM (import) | Node test runner |
206
+ | Node.js CJS | CJS (require) | Node test runner |
207
+ | Vitest Browser | ESM (import) | Vitest + Playwright |
208
+
170
209
  ## Documentation
171
210
 
172
211
  - [API Reference](docs/api.md) — full API details, matching options, reply callbacks
173
212
  - [Cloudflare Workers Migration](docs/cloudflare-migration.md) — migrating from `cloudflare:test` fetchMock
213
+ - [MSW v1 Legacy Guide](docs/msw-v1-legacy.md) — using msw-fetch-mock with MSW v1
214
+
215
+ ## Development
216
+
217
+ ```bash
218
+ pnpm install
219
+ pnpm build # build with tsup
220
+ pnpm test # unit tests (vitest)
221
+ pnpm test:e2e # e2e tests (jest-esm, jest-cjs, node-test, node-cjs)
222
+ ```
223
+
224
+ ### E2E Tests
225
+
226
+ E2E tests verify the published package works across different runtimes and module systems. The script builds, packs a tarball via `npm pack`, and installs it into each `e2e/` project — mirroring CI exactly.
227
+
228
+ ```bash
229
+ # Run default suites (skip vitest-browser)
230
+ pnpm test:e2e
231
+
232
+ # Run a single suite
233
+ pnpm test:e2e -- node-cjs
234
+
235
+ # Run all suites including vitest-browser (auto-installs Playwright)
236
+ pnpm test:e2e -- --all
237
+ ```
238
+
239
+ Available suites: `jest-esm`, `jest-cjs`, `node-test`, `node-cjs`, `vitest-browser`
174
240
 
175
241
  ## License
176
242
 
@@ -0,0 +1,43 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkHYRDB2FHcjs = require('./chunk-HYRDB2FH.cjs');
4
+
5
+
6
+
7
+
8
+ var _chunk43CWIVXOcjs = require('./chunk-43CWIVXO.cjs');
9
+
10
+ // src/browser-adapter.ts
11
+ var BrowserMswAdapter = class {
12
+
13
+ constructor(worker) {
14
+ this.worker = worker;
15
+ }
16
+ use(...handlers) {
17
+ this.worker.use(...handlers);
18
+ }
19
+ resetHandlers(...handlers) {
20
+ this.worker.resetHandlers(...handlers);
21
+ }
22
+ async activate(options) {
23
+ await this.worker.start({
24
+ onUnhandledRequest: options.onUnhandledRequest
25
+ });
26
+ }
27
+ deactivate() {
28
+ this.worker.stop();
29
+ }
30
+ };
31
+
32
+ // src/browser.ts
33
+ _chunk43CWIVXOcjs.FetchMock._handlerFactory = _chunkHYRDB2FHcjs.v2HandlerFactory;
34
+ function createFetchMock(worker) {
35
+ return new (0, _chunk43CWIVXOcjs.FetchMock)(new BrowserMswAdapter(worker));
36
+ }
37
+
38
+
39
+
40
+
41
+
42
+
43
+ exports.BrowserMswAdapter = BrowserMswAdapter; exports.FetchMock = _chunk43CWIVXOcjs.FetchMock; exports.MockCallHistory = _chunk43CWIVXOcjs.MockCallHistory; exports.MockCallHistoryLog = _chunk43CWIVXOcjs.MockCallHistoryLog; exports.createFetchMock = createFetchMock;
@@ -0,0 +1,15 @@
1
+ import { M as MswAdapter, S as SetupWorkerLike, R as ResolvedActivateOptions, F as FetchMock } from './fetch-mock-BNke4Oik.cjs';
2
+ export { A as ActivateOptions, C as CallHistoryFilterCriteria, H as HandlerFactory, I as InterceptOptions, a as MockCallHistory, b as MockCallHistoryLog, c as MockCallHistoryLogData, d as MockInterceptor, e as MockPool, f as MockReplyChain, O as OnUnhandledRequest, P as PendingInterceptor, g as ReplyOptions } from './fetch-mock-BNke4Oik.cjs';
3
+
4
+ declare class BrowserMswAdapter implements MswAdapter {
5
+ private readonly worker;
6
+ constructor(worker: SetupWorkerLike);
7
+ use(...handlers: Array<unknown>): void;
8
+ resetHandlers(...handlers: Array<unknown>): void;
9
+ activate(options: ResolvedActivateOptions): Promise<void>;
10
+ deactivate(): void;
11
+ }
12
+
13
+ declare function createFetchMock(worker: SetupWorkerLike): FetchMock;
14
+
15
+ export { BrowserMswAdapter, FetchMock, MswAdapter, SetupWorkerLike, createFetchMock };
package/dist/browser.d.ts CHANGED
@@ -1,9 +1,15 @@
1
- import { FetchMock } from './fetch-mock';
2
- import type { SetupWorkerLike } from './types';
3
- export { FetchMock } from './fetch-mock';
4
- export { BrowserMswAdapter } from './browser-adapter';
5
- export declare function createFetchMock(worker: SetupWorkerLike): FetchMock;
6
- export type { ActivateOptions, OnUnhandledRequest, InterceptOptions, MockPool, MockInterceptor, MockReplyChain, ReplyOptions, PendingInterceptor, MswAdapter, SetupWorkerLike, } from './types';
7
- export { MockCallHistory, MockCallHistoryLog } from './mock-call-history';
8
- export type { MockCallHistoryLogData, CallHistoryFilterCriteria } from './mock-call-history';
9
- //# sourceMappingURL=browser.d.ts.map
1
+ import { M as MswAdapter, S as SetupWorkerLike, R as ResolvedActivateOptions, F as FetchMock } from './fetch-mock-BNke4Oik.js';
2
+ export { A as ActivateOptions, C as CallHistoryFilterCriteria, H as HandlerFactory, I as InterceptOptions, a as MockCallHistory, b as MockCallHistoryLog, c as MockCallHistoryLogData, d as MockInterceptor, e as MockPool, f as MockReplyChain, O as OnUnhandledRequest, P as PendingInterceptor, g as ReplyOptions } from './fetch-mock-BNke4Oik.js';
3
+
4
+ declare class BrowserMswAdapter implements MswAdapter {
5
+ private readonly worker;
6
+ constructor(worker: SetupWorkerLike);
7
+ use(...handlers: Array<unknown>): void;
8
+ resetHandlers(...handlers: Array<unknown>): void;
9
+ activate(options: ResolvedActivateOptions): Promise<void>;
10
+ deactivate(): void;
11
+ }
12
+
13
+ declare function createFetchMock(worker: SetupWorkerLike): FetchMock;
14
+
15
+ export { BrowserMswAdapter, FetchMock, MswAdapter, SetupWorkerLike, createFetchMock };
package/dist/browser.js CHANGED
@@ -1,8 +1,43 @@
1
- import { FetchMock } from './fetch-mock';
2
- import { BrowserMswAdapter } from './browser-adapter';
3
- export { FetchMock } from './fetch-mock';
4
- export { BrowserMswAdapter } from './browser-adapter';
5
- export function createFetchMock(worker) {
6
- return new FetchMock(new BrowserMswAdapter(worker));
1
+ import {
2
+ v2HandlerFactory
3
+ } from "./chunk-D26SJTTI.js";
4
+ import {
5
+ FetchMock,
6
+ MockCallHistory,
7
+ MockCallHistoryLog
8
+ } from "./chunk-ATXIIOZA.js";
9
+
10
+ // src/browser-adapter.ts
11
+ var BrowserMswAdapter = class {
12
+ worker;
13
+ constructor(worker) {
14
+ this.worker = worker;
15
+ }
16
+ use(...handlers) {
17
+ this.worker.use(...handlers);
18
+ }
19
+ resetHandlers(...handlers) {
20
+ this.worker.resetHandlers(...handlers);
21
+ }
22
+ async activate(options) {
23
+ await this.worker.start({
24
+ onUnhandledRequest: options.onUnhandledRequest
25
+ });
26
+ }
27
+ deactivate() {
28
+ this.worker.stop();
29
+ }
30
+ };
31
+
32
+ // src/browser.ts
33
+ FetchMock._handlerFactory = v2HandlerFactory;
34
+ function createFetchMock(worker) {
35
+ return new FetchMock(new BrowserMswAdapter(worker));
7
36
  }
8
- export { MockCallHistory, MockCallHistoryLog } from './mock-call-history';
37
+ export {
38
+ BrowserMswAdapter,
39
+ FetchMock,
40
+ MockCallHistory,
41
+ MockCallHistoryLog,
42
+ createFetchMock
43
+ };