@mswjs/interceptors 0.17.6 → 0.18.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 (115) hide show
  1. package/README.md +49 -47
  2. package/lib/Interceptor.js +4 -4
  3. package/lib/Interceptor.js.map +1 -1
  4. package/lib/RemoteHttpInterceptor.d.ts +15 -0
  5. package/lib/RemoteHttpInterceptor.js +86 -56
  6. package/lib/RemoteHttpInterceptor.js.map +1 -1
  7. package/lib/glossary.d.ts +3 -14
  8. package/lib/glossary.js.map +1 -1
  9. package/lib/index.d.ts +0 -2
  10. package/lib/index.js +0 -2
  11. package/lib/index.js.map +1 -1
  12. package/lib/interceptors/ClientRequest/NodeClientRequest.d.ts +13 -5
  13. package/lib/interceptors/ClientRequest/NodeClientRequest.js +179 -166
  14. package/lib/interceptors/ClientRequest/NodeClientRequest.js.map +1 -1
  15. package/lib/interceptors/ClientRequest/http.get.js +9 -5
  16. package/lib/interceptors/ClientRequest/http.get.js.map +1 -1
  17. package/lib/interceptors/ClientRequest/http.request.js +10 -6
  18. package/lib/interceptors/ClientRequest/http.request.js.map +1 -1
  19. package/lib/interceptors/ClientRequest/index.d.ts +2 -5
  20. package/lib/interceptors/ClientRequest/index.js +2 -13
  21. package/lib/interceptors/ClientRequest/index.js.map +1 -1
  22. package/lib/interceptors/ClientRequest/utils/cloneIncomingMessage.js +9 -5
  23. package/lib/interceptors/ClientRequest/utils/cloneIncomingMessage.js.map +1 -1
  24. package/lib/interceptors/ClientRequest/utils/createRequest.d.ts +6 -0
  25. package/lib/interceptors/ClientRequest/utils/createRequest.js +52 -0
  26. package/lib/interceptors/ClientRequest/utils/createRequest.js.map +1 -0
  27. package/lib/interceptors/ClientRequest/utils/createResponse.d.ts +8 -0
  28. package/lib/interceptors/ClientRequest/utils/createResponse.js +24 -0
  29. package/lib/interceptors/ClientRequest/utils/createResponse.js.map +1 -0
  30. package/lib/interceptors/ClientRequest/utils/getIncomingMessageBody.js +1 -1
  31. package/lib/interceptors/ClientRequest/utils/getIncomingMessageBody.js.map +1 -1
  32. package/lib/interceptors/ClientRequest/utils/normalizeClientRequestArgs.js +8 -8
  33. package/lib/interceptors/ClientRequest/utils/normalizeClientRequestArgs.js.map +1 -1
  34. package/lib/interceptors/ClientRequest/utils/normalizeClientRequestEndArgs.d.ts +1 -1
  35. package/lib/interceptors/ClientRequest/utils/normalizeClientRequestWriteArgs.js +1 -1
  36. package/lib/interceptors/ClientRequest/utils/normalizeClientRequestWriteArgs.js.map +1 -1
  37. package/lib/interceptors/XMLHttpRequest/XMLHttpRequestOverride.d.ts +6 -10
  38. package/lib/interceptors/XMLHttpRequest/XMLHttpRequestOverride.js +203 -143
  39. package/lib/interceptors/XMLHttpRequest/XMLHttpRequestOverride.js.map +1 -1
  40. package/lib/interceptors/XMLHttpRequest/index.d.ts +2 -2
  41. package/lib/interceptors/XMLHttpRequest/index.js +2 -2
  42. package/lib/interceptors/XMLHttpRequest/index.js.map +1 -1
  43. package/lib/interceptors/XMLHttpRequest/utils/concatArrayBuffer.d.ts +4 -0
  44. package/lib/interceptors/XMLHttpRequest/utils/concatArrayBuffer.js +14 -0
  45. package/lib/interceptors/XMLHttpRequest/utils/concatArrayBuffer.js.map +1 -0
  46. package/lib/interceptors/XMLHttpRequest/utils/createResponse.d.ts +2 -0
  47. package/lib/interceptors/XMLHttpRequest/utils/createResponse.js +14 -0
  48. package/lib/interceptors/XMLHttpRequest/utils/createResponse.js.map +1 -0
  49. package/lib/interceptors/fetch/index.js +24 -81
  50. package/lib/interceptors/fetch/index.js.map +1 -1
  51. package/lib/utils/AsyncEventEmitter.js +12 -8
  52. package/lib/utils/AsyncEventEmitter.js.map +1 -1
  53. package/lib/utils/RequestWithCredentials.d.ts +2 -0
  54. package/lib/utils/RequestWithCredentials.js +20 -0
  55. package/lib/utils/RequestWithCredentials.js.map +1 -0
  56. package/lib/utils/bufferUtils.d.ts +7 -2
  57. package/lib/utils/bufferUtils.js +10 -6
  58. package/lib/utils/bufferUtils.js.map +1 -1
  59. package/lib/utils/parseJson.d.ts +1 -1
  60. package/lib/utils/toInteractiveRequest.d.ts +7 -0
  61. package/lib/utils/toInteractiveRequest.js +20 -0
  62. package/lib/utils/toInteractiveRequest.js.map +1 -0
  63. package/package.json +3 -2
  64. package/src/RemoteHttpInterceptor.ts +84 -34
  65. package/src/glossary.ts +5 -18
  66. package/src/index.ts +0 -2
  67. package/src/interceptors/ClientRequest/NodeClientRequest.test.ts +17 -23
  68. package/src/interceptors/ClientRequest/NodeClientRequest.ts +177 -153
  69. package/src/interceptors/ClientRequest/index.test.ts +5 -3
  70. package/src/interceptors/ClientRequest/index.ts +2 -26
  71. package/src/interceptors/ClientRequest/utils/createRequest.test.ts +61 -0
  72. package/src/interceptors/ClientRequest/utils/createRequest.ts +32 -0
  73. package/src/interceptors/ClientRequest/utils/createResponse.test.ts +24 -0
  74. package/src/interceptors/ClientRequest/utils/createResponse.ts +22 -0
  75. package/src/interceptors/ClientRequest/utils/normalizeClientRequestEndArgs.ts +1 -1
  76. package/src/interceptors/XMLHttpRequest/XMLHttpRequestOverride.ts +234 -174
  77. package/src/interceptors/XMLHttpRequest/index.ts +3 -2
  78. package/src/interceptors/XMLHttpRequest/utils/concatArrayBuffer.ts +12 -0
  79. package/src/interceptors/XMLHttpRequest/utils/concateArrayBuffer.test.ts +14 -0
  80. package/src/interceptors/XMLHttpRequest/utils/createResponse.ts +13 -0
  81. package/src/interceptors/fetch/index.ts +30 -69
  82. package/src/utils/RequestWithCredentials.test.ts +20 -0
  83. package/src/utils/RequestWithCredentials.ts +24 -0
  84. package/src/utils/bufferUtils.ts +10 -5
  85. package/src/utils/parseJson.ts +1 -1
  86. package/src/utils/toInteractiveRequest.ts +29 -0
  87. package/lib/InteractiveIsomorphicRequest.d.ts +0 -7
  88. package/lib/InteractiveIsomorphicRequest.js +0 -37
  89. package/lib/InteractiveIsomorphicRequest.js.map +0 -1
  90. package/lib/IsomorphicRequest.d.ts +0 -24
  91. package/lib/IsomorphicRequest.js +0 -107
  92. package/lib/IsomorphicRequest.js.map +0 -1
  93. package/lib/interceptors/ClientRequest/utils/bodyBufferToString.d.ts +0 -2
  94. package/lib/interceptors/ClientRequest/utils/bodyBufferToString.js +0 -11
  95. package/lib/interceptors/ClientRequest/utils/bodyBufferToString.js.map +0 -1
  96. package/lib/interceptors/ClientRequest/utils/concatChunkToBuffer.d.ts +0 -2
  97. package/lib/interceptors/ClientRequest/utils/concatChunkToBuffer.js +0 -11
  98. package/lib/interceptors/ClientRequest/utils/concatChunkToBuffer.js.map +0 -1
  99. package/lib/interceptors/XMLHttpRequest/utils/bufferFrom.d.ts +0 -5
  100. package/lib/interceptors/XMLHttpRequest/utils/bufferFrom.js +0 -20
  101. package/lib/interceptors/XMLHttpRequest/utils/bufferFrom.js.map +0 -1
  102. package/lib/utils/toIsoResponse.d.ts +0 -5
  103. package/lib/utils/toIsoResponse.js +0 -18
  104. package/lib/utils/toIsoResponse.js.map +0 -1
  105. package/src/InteractiveIsomorphicRequest.ts +0 -24
  106. package/src/IsomorphicRequest.test.ts +0 -106
  107. package/src/IsomorphicRequest.ts +0 -86
  108. package/src/interceptors/ClientRequest/utils/bodyBufferToString.test.ts +0 -16
  109. package/src/interceptors/ClientRequest/utils/bodyBufferToString.ts +0 -7
  110. package/src/interceptors/ClientRequest/utils/concatChunkToBuffer.test.ts +0 -13
  111. package/src/interceptors/ClientRequest/utils/concatChunkToBuffer.ts +0 -10
  112. package/src/interceptors/XMLHttpRequest/utils/bufferFrom.test.ts +0 -11
  113. package/src/interceptors/XMLHttpRequest/utils/bufferFrom.ts +0 -16
  114. package/src/utils/toIsoResponse.test.ts +0 -39
  115. package/src/utils/toIsoResponse.ts +0 -14
@@ -0,0 +1,61 @@
1
+ import { debug } from 'debug'
2
+ import { HttpRequestEventMap } from '../../..'
3
+ import { AsyncEventEmitter } from '../../../utils/AsyncEventEmitter'
4
+ import { NodeClientRequest } from '../NodeClientRequest'
5
+ import { createRequest } from './createRequest'
6
+
7
+ const emitter = new AsyncEventEmitter<HttpRequestEventMap>()
8
+ const log = debug('test')
9
+
10
+ it('creates a fetch Request with a JSON body', async () => {
11
+ const clientRequest = new NodeClientRequest(
12
+ [
13
+ new URL('https://api.github.com'),
14
+ {
15
+ method: 'POST',
16
+ headers: {
17
+ 'Content-Type': 'application/json',
18
+ },
19
+ },
20
+ () => {},
21
+ ],
22
+ {
23
+ emitter,
24
+ log,
25
+ }
26
+ )
27
+ clientRequest.write(JSON.stringify({ firstName: 'John' }))
28
+
29
+ const request = createRequest(clientRequest)
30
+
31
+ expect(request.method).toBe('POST')
32
+ expect(request.url).toBe('https://api.github.com/')
33
+ expect(request.headers.get('Content-Type')).toBe('application/json')
34
+ expect(await request.json()).toEqual({ firstName: 'John' })
35
+ })
36
+
37
+ it('creates a fetch Request with an empty body', async () => {
38
+ const clientRequest = new NodeClientRequest(
39
+ [
40
+ new URL('https://api.github.com'),
41
+ {
42
+ method: 'GET',
43
+ headers: {
44
+ Accept: 'application/json',
45
+ },
46
+ },
47
+ () => {},
48
+ ],
49
+ {
50
+ emitter,
51
+ log,
52
+ }
53
+ )
54
+
55
+ const request = createRequest(clientRequest)
56
+
57
+ expect(request.method).toBe('GET')
58
+ expect(request.url).toBe('https://api.github.com/')
59
+ expect(request.headers.get('Accept')).toBe('application/json')
60
+ expect(request.body).toBe(null)
61
+ })
@@ -0,0 +1,32 @@
1
+ import type { Request } from '@remix-run/web-fetch'
2
+ import { Headers } from 'headers-polyfill'
3
+ import { RequestWithCredentials } from '../../../utils/RequestWithCredentials'
4
+ import type { NodeClientRequest } from '../NodeClientRequest'
5
+
6
+ /**
7
+ * Creates a Fetch API `Request` instance from the given `http.ClientRequest`.
8
+ */
9
+ export function createRequest(clientRequest: NodeClientRequest): Request {
10
+ const headers = new Headers()
11
+
12
+ const outgoingHeaders = clientRequest.getHeaders()
13
+ for (const headerName in outgoingHeaders) {
14
+ const headerValue = outgoingHeaders[headerName]
15
+
16
+ if (!headerValue) {
17
+ continue
18
+ }
19
+
20
+ const valuesList = Array.prototype.concat([], headerValue)
21
+ for (const value of valuesList) {
22
+ headers.append(headerName, value.toString())
23
+ }
24
+ }
25
+
26
+ return new RequestWithCredentials(clientRequest.url, {
27
+ method: clientRequest.method || 'GET',
28
+ headers,
29
+ credentials: 'same-origin',
30
+ body: clientRequest.requestBuffer,
31
+ })
32
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @jest-environment node
3
+ */
4
+ import { Socket } from 'net'
5
+ import * as http from 'http'
6
+ import { createResponse } from './createResponse'
7
+
8
+ it('creates a fetch api response from http incoming message', async () => {
9
+ const message = new http.IncomingMessage(new Socket())
10
+ message.statusCode = 201
11
+ message.statusMessage = 'Created'
12
+ message.headers['content-type'] = 'application/json'
13
+
14
+ const response = createResponse(message)
15
+
16
+ message.emit('data', Buffer.from('{"firstName":'))
17
+ message.emit('data', Buffer.from('"John"}'))
18
+ message.emit('end')
19
+
20
+ expect(response.status).toBe(201)
21
+ expect(response.statusText).toBe('Created')
22
+ expect(response.headers.get('content-type')).toBe('application/json')
23
+ expect(await response.json()).toEqual({ firstName: 'John' })
24
+ })
@@ -0,0 +1,22 @@
1
+ import type { IncomingMessage } from 'http'
2
+ import { Response, ReadableStream } from '@remix-run/web-fetch'
3
+ import { objectToHeaders } from 'headers-polyfill'
4
+
5
+ /**
6
+ * Creates a Fetch API `Response` instance from the given
7
+ * `http.IncomingMessage` instance.
8
+ */
9
+ export function createResponse(message: IncomingMessage): Response {
10
+ const readable = new ReadableStream({
11
+ start(controller) {
12
+ message.on('data', (chunk) => controller.enqueue(chunk))
13
+ message.on('end', () => controller.close())
14
+ },
15
+ })
16
+
17
+ return new Response(readable, {
18
+ status: message.statusCode,
19
+ statusText: message.statusMessage,
20
+ headers: objectToHeaders(message.headers),
21
+ })
22
+ }
@@ -1,7 +1,7 @@
1
1
  const debug = require('debug')('http normalizeClientRequestEndArgs')
2
2
 
3
3
  export type ClientRequestEndChunk = string | Buffer
4
- type ClientRequestEndCallback = () => void
4
+ export type ClientRequestEndCallback = () => void
5
5
 
6
6
  type HttpRequestEndArgs =
7
7
  | []