msw 0.0.0-fetch.rc-14 → 0.0.0-fetch.rc-16
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/README.md +28 -10
- package/lib/browser/index.d.ts +0 -6
- package/lib/browser/index.js +25 -40
- package/lib/browser/index.mjs +25 -40
- package/lib/core/NetworkError.d.ts +2 -2
- package/lib/core/SetupApi.d.ts +0 -1
- package/lib/core/handlers/GraphQLHandler.js +2 -2
- package/lib/core/handlers/GraphQLHandler.mjs +2 -2
- package/lib/core/handlers/{RestHandler.d.ts → HttpHandler.d.ts} +12 -12
- package/lib/core/handlers/{RestHandler.js → HttpHandler.js} +18 -18
- package/lib/core/handlers/{RestHandler.mjs → HttpHandler.mjs} +15 -15
- package/lib/core/{rest.d.ts → http.d.ts} +11 -11
- package/lib/core/{rest.js → http.js} +16 -16
- package/lib/core/http.mjs +22 -0
- package/lib/core/{rest.spec.js → http.spec.js} +3 -3
- package/lib/core/{rest.spec.mjs → http.spec.mjs} +3 -3
- package/lib/core/index.d.ts +2 -2
- package/lib/core/index.js +6 -6
- package/lib/core/index.mjs +6 -6
- package/lib/core/passthrough.d.ts +5 -2
- package/lib/core/sharedOptions.d.ts +45 -7
- package/lib/core/utils/handleRequest.js +13 -10
- package/lib/core/utils/handleRequest.mjs +13 -10
- package/lib/core/utils/logging/serializeResponse.js +16 -2
- package/lib/core/utils/logging/serializeResponse.mjs +6 -2
- package/lib/core/utils/request/onUnhandledRequest.js +6 -6
- package/lib/core/utils/request/onUnhandledRequest.mjs +7 -7
- package/lib/iife/index.js +494 -482
- package/lib/mockServiceWorker.js +20 -3
- package/lib/native/index.d.ts +0 -6
- package/lib/native/index.js +13 -17
- package/lib/native/index.mjs +13 -17
- package/lib/node/index.d.ts +0 -6
- package/lib/node/index.js +13 -17
- package/lib/node/index.mjs +13 -17
- package/package.json +5 -5
- package/lib/core/rest.mjs +0 -22
- /package/lib/core/{rest.spec.d.ts → http.spec.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -71,12 +71,12 @@ In-browser usage is what sets Mock Service Worker apart from other tools. Utiliz
|
|
|
71
71
|
```js
|
|
72
72
|
// src/mocks.js
|
|
73
73
|
// 1. Import the library.
|
|
74
|
-
import {
|
|
74
|
+
import { http, HttpResponse } from 'msw'
|
|
75
75
|
import { setupWorker } from 'msw/browser'
|
|
76
76
|
|
|
77
77
|
// 2. Describe network behavior with request handlers.
|
|
78
78
|
const worker = setupWorker(
|
|
79
|
-
|
|
79
|
+
http.get('https://github.com/octocat', ({ request, params, cookies }) => {
|
|
80
80
|
return HttpResponse.json(
|
|
81
81
|
{
|
|
82
82
|
message: 'Mocked response',
|
|
@@ -121,7 +121,7 @@ Take a look at the example of an integration test in Jest that uses [React Testi
|
|
|
121
121
|
// test/Dashboard.test.js
|
|
122
122
|
|
|
123
123
|
import React from 'react'
|
|
124
|
-
import {
|
|
124
|
+
import { http, HttpResponse } from 'msw'
|
|
125
125
|
import { setupServer } from 'msw/node'
|
|
126
126
|
import { render, screen, waitFor } from '@testing-library/react'
|
|
127
127
|
import Dashboard from '../src/components/Dashboard'
|
|
@@ -130,7 +130,7 @@ const server = setupServer(
|
|
|
130
130
|
// Describe network behavior with request handlers.
|
|
131
131
|
// Tip: move the handlers into their own module and
|
|
132
132
|
// import it across your browser and Node.js setups!
|
|
133
|
-
|
|
133
|
+
http.get('/posts', ({ request, params, cookies }) => {
|
|
134
134
|
return HttpResponse.json([
|
|
135
135
|
{
|
|
136
136
|
id: 'f8dd058f-9006-4174-8d49-e3086bc39c21',
|
|
@@ -193,12 +193,18 @@ Mock Service Worker is trusted by hundreds of thousands of engineers around the
|
|
|
193
193
|
|
|
194
194
|
<br />
|
|
195
195
|
|
|
196
|
-
<
|
|
197
|
-
<
|
|
198
|
-
<
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
196
|
+
<table>
|
|
197
|
+
<tr>
|
|
198
|
+
<td>
|
|
199
|
+
<a href="https://www.github.com/" target="_blank">
|
|
200
|
+
<picture>
|
|
201
|
+
<source media="(prefers-color-scheme: dark)" srcset="media/sponsors/github-light.svg" />
|
|
202
|
+
<img src="media/sponsors/github.svg" alt="GitHub" width="75" />
|
|
203
|
+
</picture>
|
|
204
|
+
</a>
|
|
205
|
+
</td>
|
|
206
|
+
</tr>
|
|
207
|
+
</table>
|
|
202
208
|
|
|
203
209
|
### Silver Sponsors
|
|
204
210
|
|
|
@@ -229,6 +235,18 @@ Mock Service Worker is trusted by hundreds of thousands of engineers around the
|
|
|
229
235
|
>
|
|
230
236
|
> **Learn more on our [GitHub Sponsors profile](https://github.com/sponsors/mswjs)**.
|
|
231
237
|
|
|
238
|
+
<br />
|
|
239
|
+
|
|
240
|
+
<table>
|
|
241
|
+
<tr>
|
|
242
|
+
<td>
|
|
243
|
+
<a href="https://materialize.com/" target="_blank">
|
|
244
|
+
<img src="media/sponsors/materialize.svg" alt="Materialize" width="75" />
|
|
245
|
+
</a>
|
|
246
|
+
</td>
|
|
247
|
+
</tr>
|
|
248
|
+
</table>
|
|
249
|
+
|
|
232
250
|
## Awards & Mentions
|
|
233
251
|
|
|
234
252
|
We've been extremely humbled to receive awards and mentions from the community for all the innovation and reach Mock Service Worker brings to the JavaScript ecosystem.
|
package/lib/browser/index.d.ts
CHANGED
|
@@ -68,11 +68,6 @@ interface SetupWorker {
|
|
|
68
68
|
* @see {@link https://mswjs.io/docs/api/setup-worker/list-handlers `worker.listHandlers()`}
|
|
69
69
|
*/
|
|
70
70
|
listHandlers(): ReadonlyArray<RequestHandler<RequestHandlerDefaultInfo, any>>;
|
|
71
|
-
/**
|
|
72
|
-
* Lists all active request handlers.
|
|
73
|
-
* @see {@link https://mswjs.io/docs/api/setup-worker/print-handlers `worker.printHandlers()`}
|
|
74
|
-
*/
|
|
75
|
-
printHandlers: () => void;
|
|
76
71
|
events: LifeCycleEventEmitter<LifeCycleEventsMap>;
|
|
77
72
|
}
|
|
78
73
|
|
|
@@ -84,7 +79,6 @@ declare class SetupWorkerApi extends SetupApi<LifeCycleEventsMap> implements Set
|
|
|
84
79
|
constructor(...handlers: Array<RequestHandler>);
|
|
85
80
|
private createWorkerContext;
|
|
86
81
|
start(options?: StartOptions): StartReturnType;
|
|
87
|
-
printHandlers(): void;
|
|
88
82
|
stop(): void;
|
|
89
83
|
}
|
|
90
84
|
/**
|
package/lib/browser/index.js
CHANGED
|
@@ -276,7 +276,7 @@ var createRequestListener = (context, options) => {
|
|
|
276
276
|
responseStream ? [responseStream] : void 0
|
|
277
277
|
);
|
|
278
278
|
if (!options.quiet) {
|
|
279
|
-
context.emitter.once("response:mocked", (response2) => {
|
|
279
|
+
context.emitter.once("response:mocked", ({ response: response2 }) => {
|
|
280
280
|
handler.log(requestCloneForLogs, response2, parsedRequest);
|
|
281
281
|
});
|
|
282
282
|
}
|
|
@@ -327,9 +327,9 @@ function requestIntegrityCheck(context, serviceWorker) {
|
|
|
327
327
|
const { payload: actualChecksum } = yield context.events.once(
|
|
328
328
|
"INTEGRITY_CHECK_RESPONSE"
|
|
329
329
|
);
|
|
330
|
-
if (actualChecksum !== "
|
|
330
|
+
if (actualChecksum !== "42fb047ce943b9103a6ed499f86548c4") {
|
|
331
331
|
throw new Error(
|
|
332
|
-
`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"
|
|
332
|
+
`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"42fb047ce943b9103a6ed499f86548c4"}).`
|
|
333
333
|
);
|
|
334
334
|
}
|
|
335
335
|
return serviceWorker;
|
|
@@ -362,27 +362,19 @@ function createResponseListener(context) {
|
|
|
362
362
|
if ((_a = responseJson.type) == null ? void 0 : _a.includes("opaque")) {
|
|
363
363
|
return;
|
|
364
364
|
}
|
|
365
|
-
const response = new Response(responseJson.body, responseJson);
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
"response:mocked",
|
|
365
|
+
const response = responseJson.status === 0 ? Response.error() : new Response(responseJson.body, responseJson);
|
|
366
|
+
context.emitter.emit(
|
|
367
|
+
responseJson.isMockedResponse ? "response:mocked" : "response:bypass",
|
|
368
|
+
{
|
|
370
369
|
response,
|
|
371
370
|
/**
|
|
372
371
|
* @todo @fixme In this context, we don't know anything about
|
|
373
372
|
* the request.
|
|
374
373
|
*/
|
|
375
|
-
null,
|
|
376
|
-
responseJson.requestId
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
context.emitter.emit(
|
|
380
|
-
"response:bypass",
|
|
381
|
-
response,
|
|
382
|
-
null,
|
|
383
|
-
responseJson.requestId
|
|
384
|
-
);
|
|
385
|
-
}
|
|
374
|
+
request: null,
|
|
375
|
+
requestId: responseJson.requestId
|
|
376
|
+
}
|
|
377
|
+
);
|
|
386
378
|
};
|
|
387
379
|
}
|
|
388
380
|
|
|
@@ -544,7 +536,7 @@ function createFallbackRequestListener(context, options) {
|
|
|
544
536
|
name: "fallback",
|
|
545
537
|
interceptors: [new import_fetch.FetchInterceptor(), new import_XMLHttpRequest.XMLHttpRequestInterceptor()]
|
|
546
538
|
});
|
|
547
|
-
interceptor.on("request", (
|
|
539
|
+
interceptor.on("request", (_0) => __async(this, [_0], function* ({ request, requestId }) {
|
|
548
540
|
const requestCloneForLogs = request.clone();
|
|
549
541
|
const response = yield (0, import_handleRequest2.handleRequest)(
|
|
550
542
|
request,
|
|
@@ -555,7 +547,7 @@ function createFallbackRequestListener(context, options) {
|
|
|
555
547
|
{
|
|
556
548
|
onMockedResponse(_, { handler, parsedRequest }) {
|
|
557
549
|
if (!options.quiet) {
|
|
558
|
-
context.emitter.once("response:mocked", (response2) => {
|
|
550
|
+
context.emitter.once("response:mocked", ({ response: response2 }) => {
|
|
559
551
|
handler.log(requestCloneForLogs, response2, parsedRequest);
|
|
560
552
|
});
|
|
561
553
|
}
|
|
@@ -566,13 +558,19 @@ function createFallbackRequestListener(context, options) {
|
|
|
566
558
|
request.respondWith(response);
|
|
567
559
|
}
|
|
568
560
|
}));
|
|
569
|
-
interceptor.on(
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
561
|
+
interceptor.on(
|
|
562
|
+
"response",
|
|
563
|
+
({ response, isMockedResponse, request, requestId }) => {
|
|
564
|
+
context.emitter.emit(
|
|
565
|
+
isMockedResponse ? "response:mocked" : "response:bypass",
|
|
566
|
+
{
|
|
567
|
+
response,
|
|
568
|
+
request,
|
|
569
|
+
requestId
|
|
570
|
+
}
|
|
571
|
+
);
|
|
574
572
|
}
|
|
575
|
-
|
|
573
|
+
);
|
|
576
574
|
interceptor.apply();
|
|
577
575
|
return interceptor;
|
|
578
576
|
}
|
|
@@ -719,19 +717,6 @@ var SetupWorkerApi = class extends import_SetupApi.SetupApi {
|
|
|
719
717
|
return yield this.startHandler(this.context.startOptions, options);
|
|
720
718
|
});
|
|
721
719
|
}
|
|
722
|
-
printHandlers() {
|
|
723
|
-
const handlers = this.listHandlers();
|
|
724
|
-
handlers.forEach((handler) => {
|
|
725
|
-
const { header, callFrame } = handler.info;
|
|
726
|
-
const pragma = handler.info.hasOwnProperty("operationType") ? "[graphql]" : "[rest]";
|
|
727
|
-
console.groupCollapsed(`${pragma} ${header}`);
|
|
728
|
-
if (callFrame) {
|
|
729
|
-
console.log(`Declaration: ${callFrame}`);
|
|
730
|
-
}
|
|
731
|
-
console.log("Handler:", handler);
|
|
732
|
-
console.groupEnd();
|
|
733
|
-
});
|
|
734
|
-
}
|
|
735
720
|
stop() {
|
|
736
721
|
super.dispose();
|
|
737
722
|
this.context.events.removeAllListeners();
|
package/lib/browser/index.mjs
CHANGED
|
@@ -252,7 +252,7 @@ var createRequestListener = (context, options) => {
|
|
|
252
252
|
responseStream ? [responseStream] : void 0
|
|
253
253
|
);
|
|
254
254
|
if (!options.quiet) {
|
|
255
|
-
context.emitter.once("response:mocked", (response2) => {
|
|
255
|
+
context.emitter.once("response:mocked", ({ response: response2 }) => {
|
|
256
256
|
handler.log(requestCloneForLogs, response2, parsedRequest);
|
|
257
257
|
});
|
|
258
258
|
}
|
|
@@ -303,9 +303,9 @@ function requestIntegrityCheck(context, serviceWorker) {
|
|
|
303
303
|
const { payload: actualChecksum } = yield context.events.once(
|
|
304
304
|
"INTEGRITY_CHECK_RESPONSE"
|
|
305
305
|
);
|
|
306
|
-
if (actualChecksum !== "
|
|
306
|
+
if (actualChecksum !== "42fb047ce943b9103a6ed499f86548c4") {
|
|
307
307
|
throw new Error(
|
|
308
|
-
`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"
|
|
308
|
+
`Currently active Service Worker (${actualChecksum}) is behind the latest published one (${"42fb047ce943b9103a6ed499f86548c4"}).`
|
|
309
309
|
);
|
|
310
310
|
}
|
|
311
311
|
return serviceWorker;
|
|
@@ -338,27 +338,19 @@ function createResponseListener(context) {
|
|
|
338
338
|
if ((_a = responseJson.type) == null ? void 0 : _a.includes("opaque")) {
|
|
339
339
|
return;
|
|
340
340
|
}
|
|
341
|
-
const response = new Response(responseJson.body, responseJson);
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
"response:mocked",
|
|
341
|
+
const response = responseJson.status === 0 ? Response.error() : new Response(responseJson.body, responseJson);
|
|
342
|
+
context.emitter.emit(
|
|
343
|
+
responseJson.isMockedResponse ? "response:mocked" : "response:bypass",
|
|
344
|
+
{
|
|
346
345
|
response,
|
|
347
346
|
/**
|
|
348
347
|
* @todo @fixme In this context, we don't know anything about
|
|
349
348
|
* the request.
|
|
350
349
|
*/
|
|
351
|
-
null,
|
|
352
|
-
responseJson.requestId
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
context.emitter.emit(
|
|
356
|
-
"response:bypass",
|
|
357
|
-
response,
|
|
358
|
-
null,
|
|
359
|
-
responseJson.requestId
|
|
360
|
-
);
|
|
361
|
-
}
|
|
350
|
+
request: null,
|
|
351
|
+
requestId: responseJson.requestId
|
|
352
|
+
}
|
|
353
|
+
);
|
|
362
354
|
};
|
|
363
355
|
}
|
|
364
356
|
|
|
@@ -522,7 +514,7 @@ function createFallbackRequestListener(context, options) {
|
|
|
522
514
|
name: "fallback",
|
|
523
515
|
interceptors: [new FetchInterceptor(), new XMLHttpRequestInterceptor()]
|
|
524
516
|
});
|
|
525
|
-
interceptor.on("request", (
|
|
517
|
+
interceptor.on("request", (_0) => __async(this, [_0], function* ({ request, requestId }) {
|
|
526
518
|
const requestCloneForLogs = request.clone();
|
|
527
519
|
const response = yield handleRequest2(
|
|
528
520
|
request,
|
|
@@ -533,7 +525,7 @@ function createFallbackRequestListener(context, options) {
|
|
|
533
525
|
{
|
|
534
526
|
onMockedResponse(_, { handler, parsedRequest }) {
|
|
535
527
|
if (!options.quiet) {
|
|
536
|
-
context.emitter.once("response:mocked", (response2) => {
|
|
528
|
+
context.emitter.once("response:mocked", ({ response: response2 }) => {
|
|
537
529
|
handler.log(requestCloneForLogs, response2, parsedRequest);
|
|
538
530
|
});
|
|
539
531
|
}
|
|
@@ -544,13 +536,19 @@ function createFallbackRequestListener(context, options) {
|
|
|
544
536
|
request.respondWith(response);
|
|
545
537
|
}
|
|
546
538
|
}));
|
|
547
|
-
interceptor.on(
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
539
|
+
interceptor.on(
|
|
540
|
+
"response",
|
|
541
|
+
({ response, isMockedResponse, request, requestId }) => {
|
|
542
|
+
context.emitter.emit(
|
|
543
|
+
isMockedResponse ? "response:mocked" : "response:bypass",
|
|
544
|
+
{
|
|
545
|
+
response,
|
|
546
|
+
request,
|
|
547
|
+
requestId
|
|
548
|
+
}
|
|
549
|
+
);
|
|
552
550
|
}
|
|
553
|
-
|
|
551
|
+
);
|
|
554
552
|
interceptor.apply();
|
|
555
553
|
return interceptor;
|
|
556
554
|
}
|
|
@@ -697,19 +695,6 @@ var SetupWorkerApi = class extends SetupApi {
|
|
|
697
695
|
return yield this.startHandler(this.context.startOptions, options);
|
|
698
696
|
});
|
|
699
697
|
}
|
|
700
|
-
printHandlers() {
|
|
701
|
-
const handlers = this.listHandlers();
|
|
702
|
-
handlers.forEach((handler) => {
|
|
703
|
-
const { header, callFrame } = handler.info;
|
|
704
|
-
const pragma = handler.info.hasOwnProperty("operationType") ? "[graphql]" : "[rest]";
|
|
705
|
-
console.groupCollapsed(`${pragma} ${header}`);
|
|
706
|
-
if (callFrame) {
|
|
707
|
-
console.log(`Declaration: ${callFrame}`);
|
|
708
|
-
}
|
|
709
|
-
console.log("Handler:", handler);
|
|
710
|
-
console.groupEnd();
|
|
711
|
-
});
|
|
712
|
-
}
|
|
713
698
|
stop() {
|
|
714
699
|
super.dispose();
|
|
715
700
|
this.context.events.removeAllListeners();
|
package/lib/core/SetupApi.d.ts
CHANGED
|
@@ -21,7 +21,6 @@ declare abstract class SetupApi<EventsMap extends EventMap> extends Disposable {
|
|
|
21
21
|
resetHandlers(...nextHandlers: Array<RequestHandler>): void;
|
|
22
22
|
listHandlers(): ReadonlyArray<RequestHandler<RequestHandlerDefaultInfo, any, any>>;
|
|
23
23
|
private createLifeCycleEvents;
|
|
24
|
-
abstract printHandlers(): void;
|
|
25
24
|
}
|
|
26
25
|
|
|
27
26
|
export { SetupApi };
|
|
@@ -120,14 +120,14 @@ Consider naming this operation or using "graphql.operation()" request handler to
|
|
|
120
120
|
return __async(this, null, function* () {
|
|
121
121
|
const loggedRequest = yield (0, import_serializeRequest.serializeRequest)(request);
|
|
122
122
|
const loggedResponse = yield (0, import_serializeResponse.serializeResponse)(response);
|
|
123
|
-
const statusColor = (0, import_getStatusCodeColor.getStatusCodeColor)(
|
|
123
|
+
const statusColor = (0, import_getStatusCodeColor.getStatusCodeColor)(loggedResponse.status);
|
|
124
124
|
const requestInfo = (parsedRequest == null ? void 0 : parsedRequest.operationName) ? `${parsedRequest == null ? void 0 : parsedRequest.operationType} ${parsedRequest == null ? void 0 : parsedRequest.operationName}` : `anonymous ${parsedRequest == null ? void 0 : parsedRequest.operationType}`;
|
|
125
125
|
console.groupCollapsed(
|
|
126
126
|
import_devUtils.devUtils.formatMessage("%s %s (%c%s%c)"),
|
|
127
127
|
(0, import_getTimestamp.getTimestamp)(),
|
|
128
128
|
`${requestInfo}`,
|
|
129
129
|
`color:${statusColor}`,
|
|
130
|
-
`${
|
|
130
|
+
`${loggedResponse.status} ${loggedResponse.statusText}`,
|
|
131
131
|
"color:inherit"
|
|
132
132
|
);
|
|
133
133
|
console.log("Request:", loggedRequest);
|
|
@@ -101,14 +101,14 @@ Consider naming this operation or using "graphql.operation()" request handler to
|
|
|
101
101
|
return __async(this, null, function* () {
|
|
102
102
|
const loggedRequest = yield serializeRequest(request);
|
|
103
103
|
const loggedResponse = yield serializeResponse(response);
|
|
104
|
-
const statusColor = getStatusCodeColor(
|
|
104
|
+
const statusColor = getStatusCodeColor(loggedResponse.status);
|
|
105
105
|
const requestInfo = (parsedRequest == null ? void 0 : parsedRequest.operationName) ? `${parsedRequest == null ? void 0 : parsedRequest.operationType} ${parsedRequest == null ? void 0 : parsedRequest.operationName}` : `anonymous ${parsedRequest == null ? void 0 : parsedRequest.operationType}`;
|
|
106
106
|
console.groupCollapsed(
|
|
107
107
|
devUtils.formatMessage("%s %s (%c%s%c)"),
|
|
108
108
|
getTimestamp(),
|
|
109
109
|
`${requestInfo}`,
|
|
110
110
|
`color:${statusColor}`,
|
|
111
|
-
`${
|
|
111
|
+
`${loggedResponse.status} ${loggedResponse.statusText}`,
|
|
112
112
|
"color:inherit"
|
|
113
113
|
);
|
|
114
114
|
console.log("Request:", loggedRequest);
|
|
@@ -2,12 +2,12 @@ import { g as RequestHandlerDefaultInfo, R as RequestHandler, a as ResponseResol
|
|
|
2
2
|
import { Path, Match, PathParams } from '../utils/matching/matchRequestUrl.js';
|
|
3
3
|
import '../typeUtils.js';
|
|
4
4
|
|
|
5
|
-
type
|
|
6
|
-
interface
|
|
7
|
-
method:
|
|
5
|
+
type HttpHandlerMethod = string | RegExp;
|
|
6
|
+
interface HttpHandlerInfo extends RequestHandlerDefaultInfo {
|
|
7
|
+
method: HttpHandlerMethod;
|
|
8
8
|
path: Path;
|
|
9
9
|
}
|
|
10
|
-
declare enum
|
|
10
|
+
declare enum HttpMethods {
|
|
11
11
|
HEAD = "HEAD",
|
|
12
12
|
GET = "GET",
|
|
13
13
|
POST = "POST",
|
|
@@ -19,32 +19,32 @@ declare enum RESTMethods {
|
|
|
19
19
|
type RequestQuery = {
|
|
20
20
|
[queryName: string]: string;
|
|
21
21
|
};
|
|
22
|
-
type
|
|
22
|
+
type HttpRequestParsedResult = {
|
|
23
23
|
match: Match;
|
|
24
24
|
cookies: Record<string, string>;
|
|
25
25
|
};
|
|
26
|
-
type
|
|
26
|
+
type HttpRequestResolverExtras<Params extends PathParams> = {
|
|
27
27
|
params: Params;
|
|
28
28
|
cookies: Record<string, string | Array<string>>;
|
|
29
29
|
};
|
|
30
30
|
/**
|
|
31
|
-
* Request handler for
|
|
31
|
+
* Request handler for HTTP requests.
|
|
32
32
|
* Provides request matching based on method and URL.
|
|
33
33
|
*/
|
|
34
|
-
declare class
|
|
35
|
-
constructor(method:
|
|
34
|
+
declare class HttpHandler extends RequestHandler<HttpHandlerInfo, HttpRequestParsedResult, HttpRequestResolverExtras<any>> {
|
|
35
|
+
constructor(method: HttpHandlerMethod, path: Path, resolver: ResponseResolver<HttpRequestResolverExtras<any>, any, any>, options?: RequestHandlerPublicOptions);
|
|
36
36
|
private checkRedundantQueryParameters;
|
|
37
37
|
parse(request: Request, resolutionContext?: ResponseResolutionContext): Promise<{
|
|
38
38
|
match: Match;
|
|
39
39
|
cookies: Record<string, string>;
|
|
40
40
|
}>;
|
|
41
|
-
predicate(request: Request, parsedResult:
|
|
41
|
+
predicate(request: Request, parsedResult: HttpRequestParsedResult): boolean;
|
|
42
42
|
private matchMethod;
|
|
43
|
-
protected extendInfo(_request: Request, parsedResult:
|
|
43
|
+
protected extendInfo(_request: Request, parsedResult: HttpRequestParsedResult): {
|
|
44
44
|
params: PathParams<string>;
|
|
45
45
|
cookies: Record<string, string>;
|
|
46
46
|
};
|
|
47
47
|
log(request: Request, response: Response): Promise<void>;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
export {
|
|
50
|
+
export { HttpHandler, HttpHandlerInfo, HttpMethods, HttpRequestParsedResult, HttpRequestResolverExtras, RequestQuery };
|
|
@@ -36,12 +36,12 @@ var __async = (__this, __arguments, generator) => {
|
|
|
36
36
|
step((generator = generator.apply(__this, __arguments)).next());
|
|
37
37
|
});
|
|
38
38
|
};
|
|
39
|
-
var
|
|
40
|
-
__export(
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
var HttpHandler_exports = {};
|
|
40
|
+
__export(HttpHandler_exports, {
|
|
41
|
+
HttpHandler: () => HttpHandler,
|
|
42
|
+
HttpMethods: () => HttpMethods
|
|
43
43
|
});
|
|
44
|
-
module.exports = __toCommonJS(
|
|
44
|
+
module.exports = __toCommonJS(HttpHandler_exports);
|
|
45
45
|
var import_devUtils = require("../utils/internal/devUtils.js");
|
|
46
46
|
var import_isStringEqual = require("../utils/internal/isStringEqual.js");
|
|
47
47
|
var import_getStatusCodeColor = require("../utils/logging/getStatusCodeColor.js");
|
|
@@ -53,17 +53,17 @@ var import_getPublicUrlFromRequest = require("../utils/request/getPublicUrlFromR
|
|
|
53
53
|
var import_getRequestCookies = require("../utils/request/getRequestCookies.js");
|
|
54
54
|
var import_cleanUrl = require("../utils/url/cleanUrl.js");
|
|
55
55
|
var import_RequestHandler = require("./RequestHandler.js");
|
|
56
|
-
var
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
return
|
|
65
|
-
})(
|
|
66
|
-
class
|
|
56
|
+
var HttpMethods = /* @__PURE__ */ ((HttpMethods2) => {
|
|
57
|
+
HttpMethods2["HEAD"] = "HEAD";
|
|
58
|
+
HttpMethods2["GET"] = "GET";
|
|
59
|
+
HttpMethods2["POST"] = "POST";
|
|
60
|
+
HttpMethods2["PUT"] = "PUT";
|
|
61
|
+
HttpMethods2["PATCH"] = "PATCH";
|
|
62
|
+
HttpMethods2["OPTIONS"] = "OPTIONS";
|
|
63
|
+
HttpMethods2["DELETE"] = "DELETE";
|
|
64
|
+
return HttpMethods2;
|
|
65
|
+
})(HttpMethods || {});
|
|
66
|
+
class HttpHandler extends import_RequestHandler.RequestHandler {
|
|
67
67
|
constructor(method, path, resolver, options) {
|
|
68
68
|
super({
|
|
69
69
|
info: {
|
|
@@ -129,14 +129,14 @@ class RestHandler extends import_RequestHandler.RequestHandler {
|
|
|
129
129
|
const publicUrl = (0, import_getPublicUrlFromRequest.getPublicUrlFromRequest)(request);
|
|
130
130
|
const loggedRequest = yield (0, import_serializeRequest.serializeRequest)(request);
|
|
131
131
|
const loggedResponse = yield (0, import_serializeResponse.serializeResponse)(response);
|
|
132
|
-
const statusColor = (0, import_getStatusCodeColor.getStatusCodeColor)(
|
|
132
|
+
const statusColor = (0, import_getStatusCodeColor.getStatusCodeColor)(loggedResponse.status);
|
|
133
133
|
console.groupCollapsed(
|
|
134
134
|
import_devUtils.devUtils.formatMessage("%s %s %s (%c%s%c)"),
|
|
135
135
|
(0, import_getTimestamp.getTimestamp)(),
|
|
136
136
|
request.method,
|
|
137
137
|
publicUrl,
|
|
138
138
|
`color:${statusColor}`,
|
|
139
|
-
`${
|
|
139
|
+
`${loggedResponse.status} ${loggedResponse.statusText}`,
|
|
140
140
|
"color:inherit"
|
|
141
141
|
);
|
|
142
142
|
console.log("Request", loggedRequest);
|
|
@@ -33,17 +33,17 @@ import { cleanUrl, getSearchParams } from '../utils/url/cleanUrl.mjs';
|
|
|
33
33
|
import {
|
|
34
34
|
RequestHandler
|
|
35
35
|
} from './RequestHandler.mjs';
|
|
36
|
-
var
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return
|
|
45
|
-
})(
|
|
46
|
-
class
|
|
36
|
+
var HttpMethods = /* @__PURE__ */ ((HttpMethods2) => {
|
|
37
|
+
HttpMethods2["HEAD"] = "HEAD";
|
|
38
|
+
HttpMethods2["GET"] = "GET";
|
|
39
|
+
HttpMethods2["POST"] = "POST";
|
|
40
|
+
HttpMethods2["PUT"] = "PUT";
|
|
41
|
+
HttpMethods2["PATCH"] = "PATCH";
|
|
42
|
+
HttpMethods2["OPTIONS"] = "OPTIONS";
|
|
43
|
+
HttpMethods2["DELETE"] = "DELETE";
|
|
44
|
+
return HttpMethods2;
|
|
45
|
+
})(HttpMethods || {});
|
|
46
|
+
class HttpHandler extends RequestHandler {
|
|
47
47
|
constructor(method, path, resolver, options) {
|
|
48
48
|
super({
|
|
49
49
|
info: {
|
|
@@ -109,14 +109,14 @@ class RestHandler extends RequestHandler {
|
|
|
109
109
|
const publicUrl = getPublicUrlFromRequest(request);
|
|
110
110
|
const loggedRequest = yield serializeRequest(request);
|
|
111
111
|
const loggedResponse = yield serializeResponse(response);
|
|
112
|
-
const statusColor = getStatusCodeColor(
|
|
112
|
+
const statusColor = getStatusCodeColor(loggedResponse.status);
|
|
113
113
|
console.groupCollapsed(
|
|
114
114
|
devUtils.formatMessage("%s %s %s (%c%s%c)"),
|
|
115
115
|
getTimestamp(),
|
|
116
116
|
request.method,
|
|
117
117
|
publicUrl,
|
|
118
118
|
`color:${statusColor}`,
|
|
119
|
-
`${
|
|
119
|
+
`${loggedResponse.status} ${loggedResponse.statusText}`,
|
|
120
120
|
"color:inherit"
|
|
121
121
|
);
|
|
122
122
|
console.log("Request", loggedRequest);
|
|
@@ -127,6 +127,6 @@ class RestHandler extends RequestHandler {
|
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
export {
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
HttpHandler,
|
|
131
|
+
HttpMethods
|
|
132
132
|
};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { D as DefaultBodyType, a as ResponseResolver, f as RequestHandlerPublicOptions } from './RequestHandler-e964183f.js';
|
|
2
|
-
import {
|
|
2
|
+
import { HttpRequestResolverExtras, HttpHandler } from './handlers/HttpHandler.js';
|
|
3
3
|
import { PathParams, Path } from './utils/matching/matchRequestUrl.js';
|
|
4
4
|
import './typeUtils.js';
|
|
5
5
|
|
|
6
|
-
declare const
|
|
7
|
-
all: <Params extends PathParams<keyof Params> = PathParams, RequestBodyType extends DefaultBodyType = DefaultBodyType, ResponseBodyType extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<
|
|
8
|
-
head: <Params_1 extends PathParams<keyof Params_1> = PathParams, RequestBodyType_1 extends DefaultBodyType = DefaultBodyType, ResponseBodyType_1 extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<
|
|
9
|
-
get: <Params_2 extends PathParams<keyof Params_2> = PathParams, RequestBodyType_2 extends DefaultBodyType = DefaultBodyType, ResponseBodyType_2 extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<
|
|
10
|
-
post: <Params_3 extends PathParams<keyof Params_3> = PathParams, RequestBodyType_3 extends DefaultBodyType = DefaultBodyType, ResponseBodyType_3 extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<
|
|
11
|
-
put: <Params_4 extends PathParams<keyof Params_4> = PathParams, RequestBodyType_4 extends DefaultBodyType = DefaultBodyType, ResponseBodyType_4 extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<
|
|
12
|
-
delete: <Params_5 extends PathParams<keyof Params_5> = PathParams, RequestBodyType_5 extends DefaultBodyType = DefaultBodyType, ResponseBodyType_5 extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<
|
|
13
|
-
patch: <Params_6 extends PathParams<keyof Params_6> = PathParams, RequestBodyType_6 extends DefaultBodyType = DefaultBodyType, ResponseBodyType_6 extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<
|
|
14
|
-
options: <Params_7 extends PathParams<keyof Params_7> = PathParams, RequestBodyType_7 extends DefaultBodyType = DefaultBodyType, ResponseBodyType_7 extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<
|
|
6
|
+
declare const http: {
|
|
7
|
+
all: <Params extends PathParams<keyof Params> = PathParams, RequestBodyType extends DefaultBodyType = DefaultBodyType, ResponseBodyType extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<HttpRequestResolverExtras<Params>, RequestBodyType, ResponseBodyType>, options?: RequestHandlerPublicOptions) => HttpHandler;
|
|
8
|
+
head: <Params_1 extends PathParams<keyof Params_1> = PathParams, RequestBodyType_1 extends DefaultBodyType = DefaultBodyType, ResponseBodyType_1 extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<HttpRequestResolverExtras<Params_1>, RequestBodyType_1, ResponseBodyType_1>, options?: RequestHandlerPublicOptions) => HttpHandler;
|
|
9
|
+
get: <Params_2 extends PathParams<keyof Params_2> = PathParams, RequestBodyType_2 extends DefaultBodyType = DefaultBodyType, ResponseBodyType_2 extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<HttpRequestResolverExtras<Params_2>, RequestBodyType_2, ResponseBodyType_2>, options?: RequestHandlerPublicOptions) => HttpHandler;
|
|
10
|
+
post: <Params_3 extends PathParams<keyof Params_3> = PathParams, RequestBodyType_3 extends DefaultBodyType = DefaultBodyType, ResponseBodyType_3 extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<HttpRequestResolverExtras<Params_3>, RequestBodyType_3, ResponseBodyType_3>, options?: RequestHandlerPublicOptions) => HttpHandler;
|
|
11
|
+
put: <Params_4 extends PathParams<keyof Params_4> = PathParams, RequestBodyType_4 extends DefaultBodyType = DefaultBodyType, ResponseBodyType_4 extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<HttpRequestResolverExtras<Params_4>, RequestBodyType_4, ResponseBodyType_4>, options?: RequestHandlerPublicOptions) => HttpHandler;
|
|
12
|
+
delete: <Params_5 extends PathParams<keyof Params_5> = PathParams, RequestBodyType_5 extends DefaultBodyType = DefaultBodyType, ResponseBodyType_5 extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<HttpRequestResolverExtras<Params_5>, RequestBodyType_5, ResponseBodyType_5>, options?: RequestHandlerPublicOptions) => HttpHandler;
|
|
13
|
+
patch: <Params_6 extends PathParams<keyof Params_6> = PathParams, RequestBodyType_6 extends DefaultBodyType = DefaultBodyType, ResponseBodyType_6 extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<HttpRequestResolverExtras<Params_6>, RequestBodyType_6, ResponseBodyType_6>, options?: RequestHandlerPublicOptions) => HttpHandler;
|
|
14
|
+
options: <Params_7 extends PathParams<keyof Params_7> = PathParams, RequestBodyType_7 extends DefaultBodyType = DefaultBodyType, ResponseBodyType_7 extends DefaultBodyType = undefined>(path: Path, resolver: ResponseResolver<HttpRequestResolverExtras<Params_7>, RequestBodyType_7, ResponseBodyType_7>, options?: RequestHandlerPublicOptions) => HttpHandler;
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
export {
|
|
17
|
+
export { http };
|