msw 2.0.14 → 2.1.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 (135) hide show
  1. package/cli/index.js +11 -3
  2. package/cli/init.js +126 -73
  3. package/config/scripts/postinstall.js +8 -20
  4. package/lib/browser/index.js +111 -176
  5. package/lib/browser/index.js.map +1 -1
  6. package/lib/browser/index.mjs +111 -179
  7. package/lib/browser/index.mjs.map +1 -1
  8. package/lib/core/{GraphQLHandler-JB4bsrLF.d.ts → GraphQLHandler-2guuZL5R.d.ts} +1 -1
  9. package/lib/core/{GraphQLHandler-mT-MmgeB.d.mts → GraphQLHandler-fe5IYUg3.d.mts} +1 -1
  10. package/lib/core/HttpResponse.d.mts +1 -1
  11. package/lib/core/HttpResponse.d.ts +1 -1
  12. package/lib/core/{RequestHandler-rmY-HeFN.d.ts → RequestHandler-TRh8Eh4H.d.ts} +9 -1
  13. package/lib/core/{RequestHandler-YiqamK0M.d.mts → RequestHandler-nfjVJ8Tp.d.mts} +9 -1
  14. package/lib/core/SetupApi.d.mts +1 -1
  15. package/lib/core/SetupApi.d.ts +1 -1
  16. package/lib/core/SetupApi.js +5 -0
  17. package/lib/core/SetupApi.js.map +1 -1
  18. package/lib/core/SetupApi.mjs +5 -0
  19. package/lib/core/SetupApi.mjs.map +1 -1
  20. package/lib/core/delay.js +24 -46
  21. package/lib/core/delay.js.map +1 -1
  22. package/lib/core/delay.mjs +24 -46
  23. package/lib/core/delay.mjs.map +1 -1
  24. package/lib/core/graphql.d.mts +2 -2
  25. package/lib/core/graphql.d.ts +2 -2
  26. package/lib/core/graphql.js +3 -19
  27. package/lib/core/graphql.js.map +1 -1
  28. package/lib/core/graphql.mjs +3 -21
  29. package/lib/core/graphql.mjs.map +1 -1
  30. package/lib/core/handlers/GraphQLHandler.d.mts +2 -2
  31. package/lib/core/handlers/GraphQLHandler.d.ts +2 -2
  32. package/lib/core/handlers/GraphQLHandler.js +51 -77
  33. package/lib/core/handlers/GraphQLHandler.js.map +1 -1
  34. package/lib/core/handlers/GraphQLHandler.mjs +51 -77
  35. package/lib/core/handlers/GraphQLHandler.mjs.map +1 -1
  36. package/lib/core/handlers/HttpHandler.d.mts +1 -1
  37. package/lib/core/handlers/HttpHandler.d.ts +1 -1
  38. package/lib/core/handlers/HttpHandler.js +29 -55
  39. package/lib/core/handlers/HttpHandler.js.map +1 -1
  40. package/lib/core/handlers/HttpHandler.mjs +29 -55
  41. package/lib/core/handlers/HttpHandler.mjs.map +1 -1
  42. package/lib/core/handlers/RequestHandler.d.mts +1 -1
  43. package/lib/core/handlers/RequestHandler.d.ts +1 -1
  44. package/lib/core/handlers/RequestHandler.js +79 -103
  45. package/lib/core/handlers/RequestHandler.js.map +1 -1
  46. package/lib/core/handlers/RequestHandler.mjs +79 -105
  47. package/lib/core/handlers/RequestHandler.mjs.map +1 -1
  48. package/lib/core/http.d.mts +1 -1
  49. package/lib/core/http.d.ts +1 -1
  50. package/lib/core/index.d.mts +2 -2
  51. package/lib/core/index.d.ts +2 -2
  52. package/lib/core/sharedOptions.d.mts +1 -1
  53. package/lib/core/sharedOptions.d.ts +1 -1
  54. package/lib/core/utils/HttpResponse/decorators.d.mts +1 -1
  55. package/lib/core/utils/HttpResponse/decorators.d.ts +1 -1
  56. package/lib/core/utils/HttpResponse/decorators.js +7 -24
  57. package/lib/core/utils/HttpResponse/decorators.js.map +1 -1
  58. package/lib/core/utils/HttpResponse/decorators.mjs +7 -26
  59. package/lib/core/utils/HttpResponse/decorators.mjs.map +1 -1
  60. package/lib/core/utils/getResponse.d.mts +1 -1
  61. package/lib/core/utils/getResponse.d.ts +1 -1
  62. package/lib/core/utils/getResponse.js +11 -26
  63. package/lib/core/utils/getResponse.js.map +1 -1
  64. package/lib/core/utils/getResponse.mjs +11 -26
  65. package/lib/core/utils/getResponse.mjs.map +1 -1
  66. package/lib/core/utils/handleRequest.d.mts +1 -1
  67. package/lib/core/utils/handleRequest.d.ts +1 -1
  68. package/lib/core/utils/handleRequest.js +49 -72
  69. package/lib/core/utils/handleRequest.js.map +1 -1
  70. package/lib/core/utils/handleRequest.mjs +49 -72
  71. package/lib/core/utils/handleRequest.mjs.map +1 -1
  72. package/lib/core/utils/internal/Disposable.js +3 -27
  73. package/lib/core/utils/internal/Disposable.js.map +1 -1
  74. package/lib/core/utils/internal/Disposable.mjs +3 -27
  75. package/lib/core/utils/internal/Disposable.mjs.map +1 -1
  76. package/lib/core/utils/internal/parseGraphQLRequest.d.mts +2 -2
  77. package/lib/core/utils/internal/parseGraphQLRequest.d.ts +2 -2
  78. package/lib/core/utils/internal/parseGraphQLRequest.js +72 -112
  79. package/lib/core/utils/internal/parseGraphQLRequest.js.map +1 -1
  80. package/lib/core/utils/internal/parseGraphQLRequest.mjs +72 -113
  81. package/lib/core/utils/internal/parseGraphQLRequest.mjs.map +1 -1
  82. package/lib/core/utils/internal/parseMultipartData.d.mts +1 -1
  83. package/lib/core/utils/internal/parseMultipartData.d.ts +1 -1
  84. package/lib/core/utils/internal/parseMultipartData.js +3 -4
  85. package/lib/core/utils/internal/parseMultipartData.js.map +1 -1
  86. package/lib/core/utils/internal/parseMultipartData.mjs +3 -4
  87. package/lib/core/utils/internal/parseMultipartData.mjs.map +1 -1
  88. package/lib/core/utils/internal/requestHandlerUtils.d.mts +1 -1
  89. package/lib/core/utils/internal/requestHandlerUtils.d.ts +1 -1
  90. package/lib/core/utils/internal/tryCatch.js +1 -1
  91. package/lib/core/utils/internal/tryCatch.js.map +1 -1
  92. package/lib/core/utils/internal/tryCatch.mjs +1 -1
  93. package/lib/core/utils/internal/tryCatch.mjs.map +1 -1
  94. package/lib/core/utils/logging/serializeRequest.js +9 -31
  95. package/lib/core/utils/logging/serializeRequest.js.map +1 -1
  96. package/lib/core/utils/logging/serializeRequest.mjs +9 -31
  97. package/lib/core/utils/logging/serializeRequest.mjs.map +1 -1
  98. package/lib/core/utils/logging/serializeResponse.js +11 -33
  99. package/lib/core/utils/logging/serializeResponse.js.map +1 -1
  100. package/lib/core/utils/logging/serializeResponse.mjs +11 -33
  101. package/lib/core/utils/logging/serializeResponse.mjs.map +1 -1
  102. package/lib/core/utils/request/getRequestCookies.js +9 -18
  103. package/lib/core/utils/request/getRequestCookies.js.map +1 -1
  104. package/lib/core/utils/request/getRequestCookies.mjs +9 -20
  105. package/lib/core/utils/request/getRequestCookies.mjs.map +1 -1
  106. package/lib/core/utils/request/onUnhandledRequest.d.mts +1 -1
  107. package/lib/core/utils/request/onUnhandledRequest.d.ts +1 -1
  108. package/lib/core/utils/request/onUnhandledRequest.js +62 -84
  109. package/lib/core/utils/request/onUnhandledRequest.js.map +1 -1
  110. package/lib/core/utils/request/onUnhandledRequest.mjs +62 -84
  111. package/lib/core/utils/request/onUnhandledRequest.mjs.map +1 -1
  112. package/lib/core/utils/request/readResponseCookies.js +1 -18
  113. package/lib/core/utils/request/readResponseCookies.js.map +1 -1
  114. package/lib/core/utils/request/readResponseCookies.mjs +1 -20
  115. package/lib/core/utils/request/readResponseCookies.mjs.map +1 -1
  116. package/lib/iife/index.js +678 -958
  117. package/lib/iife/index.js.map +1 -1
  118. package/lib/mockServiceWorker.js +2 -2
  119. package/lib/native/index.js +5 -23
  120. package/lib/native/index.js.map +1 -1
  121. package/lib/native/index.mjs +5 -24
  122. package/lib/native/index.mjs.map +1 -1
  123. package/lib/node/index.js +5 -23
  124. package/lib/node/index.js.map +1 -1
  125. package/lib/node/index.mjs +5 -24
  126. package/lib/node/index.mjs.map +1 -1
  127. package/package.json +32 -37
  128. package/src/browser/setupWorker/setupWorker.ts +6 -0
  129. package/src/browser/setupWorker/start/createStartHandler.ts +0 -8
  130. package/src/core/handlers/GraphQLHandler.test.ts +7 -3
  131. package/src/core/handlers/HttpHandler.test.ts +7 -2
  132. package/src/core/handlers/RequestHandler.ts +24 -4
  133. package/src/core/utils/getResponse.ts +12 -6
  134. package/src/core/utils/handleRequest.test.ts +20 -0
  135. package/src/core/utils/handleRequest.ts +4 -3
@@ -1,51 +1,15 @@
1
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
2
- var __hasOwnProp = Object.prototype.hasOwnProperty;
3
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
4
- var __objRest = (source, exclude) => {
5
- var target = {};
6
- for (var prop in source)
7
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
8
- target[prop] = source[prop];
9
- if (source != null && __getOwnPropSymbols)
10
- for (var prop of __getOwnPropSymbols(source)) {
11
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
12
- target[prop] = source[prop];
13
- }
14
- return target;
15
- };
16
- var __async = (__this, __arguments, generator) => {
17
- return new Promise((resolve, reject) => {
18
- var fulfilled = (value) => {
19
- try {
20
- step(generator.next(value));
21
- } catch (e) {
22
- reject(e);
23
- }
24
- };
25
- var rejected = (value) => {
26
- try {
27
- step(generator.throw(value));
28
- } catch (e) {
29
- reject(e);
30
- }
31
- };
32
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
33
- step((generator = generator.apply(__this, __arguments)).next());
34
- });
35
- };
36
1
  import { parse } from "graphql";
37
2
  import { getPublicUrlFromRequest } from '../request/getPublicUrlFromRequest.mjs';
38
3
  import { devUtils } from './devUtils.mjs';
39
4
  import { jsonParse } from './jsonParse.mjs';
40
5
  import { parseMultipartData } from './parseMultipartData.mjs';
41
6
  function parseDocumentNode(node) {
42
- var _a;
43
7
  const operationDef = node.definitions.find((definition) => {
44
8
  return definition.kind === "OperationDefinition";
45
9
  });
46
10
  return {
47
- operationType: operationDef == null ? void 0 : operationDef.operation,
48
- operationName: (_a = operationDef == null ? void 0 : operationDef.name) == null ? void 0 : _a.value
11
+ operationType: operationDef?.operation,
12
+ operationName: operationDef?.name?.value
49
13
  };
50
14
  }
51
15
  function parseQuery(query) {
@@ -77,87 +41,82 @@ function extractMultipartVariables(variables, map, files) {
77
41
  }
78
42
  return operations.variables;
79
43
  }
80
- function getGraphQLInput(request) {
81
- return __async(this, null, function* () {
82
- var _a;
83
- switch (request.method) {
84
- case "GET": {
85
- const url = new URL(request.url);
86
- const query = url.searchParams.get("query");
87
- const variables = url.searchParams.get("variables") || "";
44
+ async function getGraphQLInput(request) {
45
+ switch (request.method) {
46
+ case "GET": {
47
+ const url = new URL(request.url);
48
+ const query = url.searchParams.get("query");
49
+ const variables = url.searchParams.get("variables") || "";
50
+ return {
51
+ query,
52
+ variables: jsonParse(variables)
53
+ };
54
+ }
55
+ case "POST": {
56
+ const requestClone = request.clone();
57
+ if (request.headers.get("content-type")?.includes("multipart/form-data")) {
58
+ const responseJson = parseMultipartData(
59
+ await requestClone.text(),
60
+ request.headers
61
+ );
62
+ if (!responseJson) {
63
+ return null;
64
+ }
65
+ const { operations, map, ...files } = responseJson;
66
+ const parsedOperations = jsonParse(
67
+ operations
68
+ ) || {};
69
+ if (!parsedOperations.query) {
70
+ return null;
71
+ }
72
+ const parsedMap = jsonParse(map || "") || {};
73
+ const variables = parsedOperations.variables ? extractMultipartVariables(
74
+ parsedOperations.variables,
75
+ parsedMap,
76
+ files
77
+ ) : {};
88
78
  return {
89
- query,
90
- variables: jsonParse(variables)
79
+ query: parsedOperations.query,
80
+ variables
91
81
  };
92
82
  }
93
- case "POST": {
94
- const requestClone = request.clone();
95
- if ((_a = request.headers.get("content-type")) == null ? void 0 : _a.includes("multipart/form-data")) {
96
- const responseJson = parseMultipartData(
97
- yield requestClone.text(),
98
- request.headers
99
- );
100
- if (!responseJson) {
101
- return null;
102
- }
103
- const _b = responseJson, { operations, map } = _b, files = __objRest(_b, ["operations", "map"]);
104
- const parsedOperations = jsonParse(
105
- operations
106
- ) || {};
107
- if (!parsedOperations.query) {
108
- return null;
109
- }
110
- const parsedMap = jsonParse(map || "") || {};
111
- const variables = parsedOperations.variables ? extractMultipartVariables(
112
- parsedOperations.variables,
113
- parsedMap,
114
- files
115
- ) : {};
116
- return {
117
- query: parsedOperations.query,
118
- variables
119
- };
120
- }
121
- const requestJson = yield requestClone.json().catch(() => null);
122
- if (requestJson == null ? void 0 : requestJson.query) {
123
- const { query, variables } = requestJson;
124
- return {
125
- query,
126
- variables
127
- };
128
- }
83
+ const requestJson = await requestClone.json().catch(() => null);
84
+ if (requestJson?.query) {
85
+ const { query, variables } = requestJson;
86
+ return {
87
+ query,
88
+ variables
89
+ };
129
90
  }
130
- default:
131
- return null;
132
91
  }
133
- });
92
+ default:
93
+ return null;
94
+ }
134
95
  }
135
- function parseGraphQLRequest(request) {
136
- return __async(this, null, function* () {
137
- const input = yield getGraphQLInput(request);
138
- if (!input || !input.query) {
139
- return;
140
- }
141
- const { query, variables } = input;
142
- const parsedResult = parseQuery(query);
143
- if (parsedResult instanceof Error) {
144
- const requestPublicUrl = getPublicUrlFromRequest(request);
145
- throw new Error(
146
- devUtils.formatMessage(
147
- 'Failed to intercept a GraphQL request to "%s %s": cannot parse query. See the error message from the parser below.\n\n%s',
148
- request.method,
149
- requestPublicUrl,
150
- parsedResult.message
151
- )
152
- );
153
- }
154
- return {
155
- query: input.query,
156
- operationType: parsedResult.operationType,
157
- operationName: parsedResult.operationName,
158
- variables
159
- };
160
- });
96
+ async function parseGraphQLRequest(request) {
97
+ const input = await getGraphQLInput(request);
98
+ if (!input || !input.query) {
99
+ return;
100
+ }
101
+ const { query, variables } = input;
102
+ const parsedResult = parseQuery(query);
103
+ if (parsedResult instanceof Error) {
104
+ const requestPublicUrl = getPublicUrlFromRequest(request);
105
+ throw new Error(
106
+ devUtils.formatMessage(
107
+ 'Failed to intercept a GraphQL request to "%s %s": cannot parse query. See the error message from the parser below.\n\n%s',
108
+ request.method,
109
+ requestPublicUrl,
110
+ parsedResult.message
111
+ )
112
+ );
113
+ }
114
+ return {
115
+ query: input.query,
116
+ operationType: parsedResult.operationType,
117
+ operationName: parsedResult.operationName,
118
+ variables
119
+ };
161
120
  }
162
121
  export {
163
122
  parseDocumentNode,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/core/utils/internal/parseGraphQLRequest.ts"],"sourcesContent":["import type {\n DocumentNode,\n OperationDefinitionNode,\n OperationTypeNode,\n} from 'graphql'\nimport { parse } from 'graphql'\nimport type { GraphQLVariables } from '../../handlers/GraphQLHandler'\nimport { getPublicUrlFromRequest } from '../request/getPublicUrlFromRequest'\nimport { devUtils } from './devUtils'\nimport { jsonParse } from './jsonParse'\nimport { parseMultipartData } from './parseMultipartData'\n\ninterface GraphQLInput {\n query: string | null\n variables?: GraphQLVariables\n}\n\nexport interface ParsedGraphQLQuery {\n operationType: OperationTypeNode\n operationName?: string\n}\n\nexport type ParsedGraphQLRequest<\n VariablesType extends GraphQLVariables = GraphQLVariables,\n> =\n | (ParsedGraphQLQuery & {\n query: string\n variables?: VariablesType\n })\n | undefined\n\nexport function parseDocumentNode(node: DocumentNode): ParsedGraphQLQuery {\n const operationDef = node.definitions.find((definition) => {\n return definition.kind === 'OperationDefinition'\n }) as OperationDefinitionNode\n\n return {\n operationType: operationDef?.operation,\n operationName: operationDef?.name?.value,\n }\n}\n\nfunction parseQuery(query: string): ParsedGraphQLQuery | Error {\n try {\n const ast = parse(query)\n return parseDocumentNode(ast)\n } catch (error) {\n return error as Error\n }\n}\n\nexport type GraphQLParsedOperationsMap = Record<string, string[]>\nexport type GraphQLMultipartRequestBody = {\n operations: string\n map?: string\n} & {\n [fileName: string]: File\n}\n\nfunction extractMultipartVariables<VariablesType extends GraphQLVariables>(\n variables: VariablesType,\n map: GraphQLParsedOperationsMap,\n files: Record<string, File>,\n) {\n const operations = { variables }\n\n for (const [key, pathArray] of Object.entries(map)) {\n if (!(key in files)) {\n throw new Error(`Given files do not have a key '${key}' .`)\n }\n\n for (const dotPath of pathArray) {\n const [lastPath, ...reversedPaths] = dotPath.split('.').reverse()\n const paths = reversedPaths.reverse()\n let target: Record<string, any> = operations\n\n for (const path of paths) {\n if (!(path in target)) {\n throw new Error(`Property '${paths}' is not in operations.`)\n }\n\n target = target[path]\n }\n\n target[lastPath] = files[key]\n }\n }\n\n return operations.variables\n}\n\nasync function getGraphQLInput(request: Request): Promise<GraphQLInput | null> {\n switch (request.method) {\n case 'GET': {\n const url = new URL(request.url)\n const query = url.searchParams.get('query')\n const variables = url.searchParams.get('variables') || ''\n\n return {\n query,\n variables: jsonParse(variables),\n }\n }\n\n case 'POST': {\n // Clone the request so we could read its body without locking\n // the body stream to the downward consumers.\n const requestClone = request.clone()\n\n // Handle multipart body GraphQL operations.\n if (\n request.headers.get('content-type')?.includes('multipart/form-data')\n ) {\n const responseJson = parseMultipartData<GraphQLMultipartRequestBody>(\n await requestClone.text(),\n request.headers,\n )\n\n if (!responseJson) {\n return null\n }\n\n const { operations, map, ...files } = responseJson\n const parsedOperations =\n jsonParse<{ query?: string; variables?: GraphQLVariables }>(\n operations,\n ) || {}\n\n if (!parsedOperations.query) {\n return null\n }\n\n const parsedMap = jsonParse<GraphQLParsedOperationsMap>(map || '') || {}\n const variables = parsedOperations.variables\n ? extractMultipartVariables(\n parsedOperations.variables,\n parsedMap,\n files,\n )\n : {}\n\n return {\n query: parsedOperations.query,\n variables,\n }\n }\n\n // Handle plain POST GraphQL operations.\n const requestJson: {\n query: string\n variables?: GraphQLVariables\n operations?: any /** @todo Annotate this */\n } = await requestClone.json().catch(() => null)\n\n if (requestJson?.query) {\n const { query, variables } = requestJson\n\n return {\n query,\n variables,\n }\n }\n }\n\n default:\n return null\n }\n}\n\n/**\n * Determines if a given request can be considered a GraphQL request.\n * Does not parse the query and does not guarantee its validity.\n */\nexport async function parseGraphQLRequest(\n request: Request,\n): Promise<ParsedGraphQLRequest> {\n const input = await getGraphQLInput(request)\n\n if (!input || !input.query) {\n return\n }\n\n const { query, variables } = input\n const parsedResult = parseQuery(query)\n\n if (parsedResult instanceof Error) {\n const requestPublicUrl = getPublicUrlFromRequest(request)\n\n throw new Error(\n devUtils.formatMessage(\n 'Failed to intercept a GraphQL request to \"%s %s\": cannot parse query. See the error message from the parser below.\\n\\n%s',\n request.method,\n requestPublicUrl,\n parsedResult.message,\n ),\n )\n }\n\n return {\n query: input.query,\n operationType: parsedResult.operationType,\n operationName: parsedResult.operationName,\n variables,\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/core/utils/internal/parseGraphQLRequest.ts"],"sourcesContent":["import type {\n DocumentNode,\n OperationDefinitionNode,\n OperationTypeNode,\n} from 'graphql'\nimport { parse } from 'graphql'\nimport type { GraphQLVariables } from '../../handlers/GraphQLHandler'\nimport { getPublicUrlFromRequest } from '../request/getPublicUrlFromRequest'\nimport { devUtils } from './devUtils'\nimport { jsonParse } from './jsonParse'\nimport { parseMultipartData } from './parseMultipartData'\n\ninterface GraphQLInput {\n query: string | null\n variables?: GraphQLVariables\n}\n\nexport interface ParsedGraphQLQuery {\n operationType: OperationTypeNode\n operationName?: string\n}\n\nexport type ParsedGraphQLRequest<\n VariablesType extends GraphQLVariables = GraphQLVariables,\n> =\n | (ParsedGraphQLQuery & {\n query: string\n variables?: VariablesType\n })\n | undefined\n\nexport function parseDocumentNode(node: DocumentNode): ParsedGraphQLQuery {\n const operationDef = node.definitions.find((definition) => {\n return definition.kind === 'OperationDefinition'\n }) as OperationDefinitionNode\n\n return {\n operationType: operationDef?.operation,\n operationName: operationDef?.name?.value,\n }\n}\n\nfunction parseQuery(query: string): ParsedGraphQLQuery | Error {\n try {\n const ast = parse(query)\n return parseDocumentNode(ast)\n } catch (error) {\n return error as Error\n }\n}\n\nexport type GraphQLParsedOperationsMap = Record<string, string[]>\nexport type GraphQLMultipartRequestBody = {\n operations: string\n map?: string\n} & {\n [fileName: string]: File\n}\n\nfunction extractMultipartVariables<VariablesType extends GraphQLVariables>(\n variables: VariablesType,\n map: GraphQLParsedOperationsMap,\n files: Record<string, File>,\n) {\n const operations = { variables }\n\n for (const [key, pathArray] of Object.entries(map)) {\n if (!(key in files)) {\n throw new Error(`Given files do not have a key '${key}' .`)\n }\n\n for (const dotPath of pathArray) {\n const [lastPath, ...reversedPaths] = dotPath.split('.').reverse()\n const paths = reversedPaths.reverse()\n let target: Record<string, any> = operations\n\n for (const path of paths) {\n if (!(path in target)) {\n throw new Error(`Property '${paths}' is not in operations.`)\n }\n\n target = target[path]\n }\n\n target[lastPath] = files[key]\n }\n }\n\n return operations.variables\n}\n\nasync function getGraphQLInput(request: Request): Promise<GraphQLInput | null> {\n switch (request.method) {\n case 'GET': {\n const url = new URL(request.url)\n const query = url.searchParams.get('query')\n const variables = url.searchParams.get('variables') || ''\n\n return {\n query,\n variables: jsonParse(variables),\n }\n }\n\n case 'POST': {\n // Clone the request so we could read its body without locking\n // the body stream to the downward consumers.\n const requestClone = request.clone()\n\n // Handle multipart body GraphQL operations.\n if (\n request.headers.get('content-type')?.includes('multipart/form-data')\n ) {\n const responseJson = parseMultipartData<GraphQLMultipartRequestBody>(\n await requestClone.text(),\n request.headers,\n )\n\n if (!responseJson) {\n return null\n }\n\n const { operations, map, ...files } = responseJson\n const parsedOperations =\n jsonParse<{ query?: string; variables?: GraphQLVariables }>(\n operations,\n ) || {}\n\n if (!parsedOperations.query) {\n return null\n }\n\n const parsedMap = jsonParse<GraphQLParsedOperationsMap>(map || '') || {}\n const variables = parsedOperations.variables\n ? extractMultipartVariables(\n parsedOperations.variables,\n parsedMap,\n files,\n )\n : {}\n\n return {\n query: parsedOperations.query,\n variables,\n }\n }\n\n // Handle plain POST GraphQL operations.\n const requestJson: {\n query: string\n variables?: GraphQLVariables\n operations?: any /** @todo Annotate this */\n } = await requestClone.json().catch(() => null)\n\n if (requestJson?.query) {\n const { query, variables } = requestJson\n\n return {\n query,\n variables,\n }\n }\n }\n\n default:\n return null\n }\n}\n\n/**\n * Determines if a given request can be considered a GraphQL request.\n * Does not parse the query and does not guarantee its validity.\n */\nexport async function parseGraphQLRequest(\n request: Request,\n): Promise<ParsedGraphQLRequest> {\n const input = await getGraphQLInput(request)\n\n if (!input || !input.query) {\n return\n }\n\n const { query, variables } = input\n const parsedResult = parseQuery(query)\n\n if (parsedResult instanceof Error) {\n const requestPublicUrl = getPublicUrlFromRequest(request)\n\n throw new Error(\n devUtils.formatMessage(\n 'Failed to intercept a GraphQL request to \"%s %s\": cannot parse query. See the error message from the parser below.\\n\\n%s',\n request.method,\n requestPublicUrl,\n parsedResult.message,\n ),\n )\n }\n\n return {\n query: input.query,\n operationType: parsedResult.operationType,\n operationName: parsedResult.operationName,\n variables,\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,4 +1,4 @@
1
- import { d as DefaultRequestMultipartBody } from '../../RequestHandler-YiqamK0M.mjs';
1
+ import { d as DefaultRequestMultipartBody } from '../../RequestHandler-nfjVJ8Tp.mjs';
2
2
  import '../../typeUtils.mjs';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { d as DefaultRequestMultipartBody } from '../../RequestHandler-rmY-HeFN.js';
1
+ import { d as DefaultRequestMultipartBody } from '../../RequestHandler-TRh8Eh4H.js';
2
2
  import '../../typeUtils.js';
3
3
 
4
4
  /**
@@ -23,7 +23,6 @@ __export(parseMultipartData_exports, {
23
23
  module.exports = __toCommonJS(parseMultipartData_exports);
24
24
  var import_headers_polyfill = require("headers-polyfill");
25
25
  function parseContentHeaders(headersString) {
26
- var _a, _b;
27
26
  const headers = (0, import_headers_polyfill.stringToHeaders)(headersString);
28
27
  const contentType = headers.get("content-type") || "text/plain";
29
28
  const disposition = headers.get("content-disposition");
@@ -35,8 +34,8 @@ function parseContentHeaders(headersString) {
35
34
  acc[name2] = rest.join("=");
36
35
  return acc;
37
36
  }, {});
38
- const name = (_a = directives.name) == null ? void 0 : _a.slice(1, -1);
39
- const filename = (_b = directives.filename) == null ? void 0 : _b.slice(1, -1);
37
+ const name = directives.name?.slice(1, -1);
38
+ const filename = directives.filename?.slice(1, -1);
40
39
  return {
41
40
  name,
42
41
  filename,
@@ -44,7 +43,7 @@ function parseContentHeaders(headersString) {
44
43
  };
45
44
  }
46
45
  function parseMultipartData(data, headers) {
47
- const contentType = headers == null ? void 0 : headers.get("content-type");
46
+ const contentType = headers?.get("content-type");
48
47
  if (!contentType) {
49
48
  return void 0;
50
49
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/core/utils/internal/parseMultipartData.ts"],"sourcesContent":["import { stringToHeaders } from 'headers-polyfill'\nimport { DefaultRequestMultipartBody } from '../../handlers/RequestHandler'\n\ninterface ParsedContentHeaders {\n name: string\n filename?: string\n contentType: string\n}\n\ninterface ContentDispositionDirective {\n [key: string]: string | undefined\n name: string\n filename?: string\n 'form-data': string\n}\n\nfunction parseContentHeaders(headersString: string): ParsedContentHeaders {\n const headers = stringToHeaders(headersString)\n const contentType = headers.get('content-type') || 'text/plain'\n const disposition = headers.get('content-disposition')\n\n if (!disposition) {\n throw new Error('\"Content-Disposition\" header is required.')\n }\n\n const directives = disposition.split(';').reduce((acc, chunk) => {\n const [name, ...rest] = chunk.trim().split('=')\n acc[name] = rest.join('=')\n return acc\n }, {} as ContentDispositionDirective)\n\n const name = directives.name?.slice(1, -1)\n const filename = directives.filename?.slice(1, -1)\n\n return {\n name,\n filename,\n contentType,\n }\n}\n\n/**\n * Parses a given string as a multipart/form-data.\n * Does not throw an exception on an invalid multipart string.\n */\nexport function parseMultipartData<T extends DefaultRequestMultipartBody>(\n data: string,\n headers?: Headers,\n): T | undefined {\n const contentType = headers?.get('content-type')\n\n if (!contentType) {\n return undefined\n }\n\n const [, ...directives] = contentType.split(/; */)\n const boundary = directives\n .filter((d) => d.startsWith('boundary='))\n .map((s) => s.replace(/^boundary=/, ''))[0]\n\n if (!boundary) {\n return undefined\n }\n\n const boundaryRegExp = new RegExp(`--+${boundary}`)\n const fields = data\n .split(boundaryRegExp)\n .filter((chunk) => chunk.startsWith('\\r\\n') && chunk.endsWith('\\r\\n'))\n .map((chunk) => chunk.trimStart().replace(/\\r\\n$/, ''))\n\n if (!fields.length) {\n return undefined\n }\n\n const parsedBody: DefaultRequestMultipartBody = {}\n\n try {\n for (const field of fields) {\n const [contentHeaders, ...rest] = field.split('\\r\\n\\r\\n')\n const contentBody = rest.join('\\r\\n\\r\\n')\n const { contentType, filename, name } =\n parseContentHeaders(contentHeaders)\n\n const value =\n filename === undefined\n ? contentBody\n : new File([contentBody], filename, { type: contentType })\n\n const parsedValue = parsedBody[name]\n\n if (parsedValue === undefined) {\n parsedBody[name] = value\n } else if (Array.isArray(parsedValue)) {\n parsedBody[name] = [...parsedValue, value]\n } else {\n parsedBody[name] = [parsedValue, value]\n }\n }\n\n return parsedBody as T\n } catch (error) {\n return undefined\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAAgC;AAgBhC,SAAS,oBAAoB,eAA6C;AAhB1E;AAiBE,QAAM,cAAU,yCAAgB,aAAa;AAC7C,QAAM,cAAc,QAAQ,IAAI,cAAc,KAAK;AACnD,QAAM,cAAc,QAAQ,IAAI,qBAAqB;AAErD,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AAEA,QAAM,aAAa,YAAY,MAAM,GAAG,EAAE,OAAO,CAAC,KAAK,UAAU;AAC/D,UAAM,CAACA,OAAM,GAAG,IAAI,IAAI,MAAM,KAAK,EAAE,MAAM,GAAG;AAC9C,QAAIA,KAAI,IAAI,KAAK,KAAK,GAAG;AACzB,WAAO;AAAA,EACT,GAAG,CAAC,CAAgC;AAEpC,QAAM,QAAO,gBAAW,SAAX,mBAAiB,MAAM,GAAG;AACvC,QAAM,YAAW,gBAAW,aAAX,mBAAqB,MAAM,GAAG;AAE/C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAMO,SAAS,mBACd,MACA,SACe;AACf,QAAM,cAAc,mCAAS,IAAI;AAEjC,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,CAAC,EAAE,GAAG,UAAU,IAAI,YAAY,MAAM,KAAK;AACjD,QAAM,WAAW,WACd,OAAO,CAAC,MAAM,EAAE,WAAW,WAAW,CAAC,EACvC,IAAI,CAAC,MAAM,EAAE,QAAQ,cAAc,EAAE,CAAC,EAAE,CAAC;AAE5C,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,IAAI,OAAO,MAAM,QAAQ,EAAE;AAClD,QAAM,SAAS,KACZ,MAAM,cAAc,EACpB,OAAO,CAAC,UAAU,MAAM,WAAW,MAAM,KAAK,MAAM,SAAS,MAAM,CAAC,EACpE,IAAI,CAAC,UAAU,MAAM,UAAU,EAAE,QAAQ,SAAS,EAAE,CAAC;AAExD,MAAI,CAAC,OAAO,QAAQ;AAClB,WAAO;AAAA,EACT;AAEA,QAAM,aAA0C,CAAC;AAEjD,MAAI;AACF,eAAW,SAAS,QAAQ;AAC1B,YAAM,CAAC,gBAAgB,GAAG,IAAI,IAAI,MAAM,MAAM,UAAU;AACxD,YAAM,cAAc,KAAK,KAAK,UAAU;AACxC,YAAM,EAAE,aAAAC,cAAa,UAAU,KAAK,IAClC,oBAAoB,cAAc;AAEpC,YAAM,QACJ,aAAa,SACT,cACA,IAAI,KAAK,CAAC,WAAW,GAAG,UAAU,EAAE,MAAMA,aAAY,CAAC;AAE7D,YAAM,cAAc,WAAW,IAAI;AAEnC,UAAI,gBAAgB,QAAW;AAC7B,mBAAW,IAAI,IAAI;AAAA,MACrB,WAAW,MAAM,QAAQ,WAAW,GAAG;AACrC,mBAAW,IAAI,IAAI,CAAC,GAAG,aAAa,KAAK;AAAA,MAC3C,OAAO;AACL,mBAAW,IAAI,IAAI,CAAC,aAAa,KAAK;AAAA,MACxC;AAAA,IACF;AAEA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,WAAO;AAAA,EACT;AACF;","names":["name","contentType"]}
1
+ {"version":3,"sources":["../../../../src/core/utils/internal/parseMultipartData.ts"],"sourcesContent":["import { stringToHeaders } from 'headers-polyfill'\nimport { DefaultRequestMultipartBody } from '../../handlers/RequestHandler'\n\ninterface ParsedContentHeaders {\n name: string\n filename?: string\n contentType: string\n}\n\ninterface ContentDispositionDirective {\n [key: string]: string | undefined\n name: string\n filename?: string\n 'form-data': string\n}\n\nfunction parseContentHeaders(headersString: string): ParsedContentHeaders {\n const headers = stringToHeaders(headersString)\n const contentType = headers.get('content-type') || 'text/plain'\n const disposition = headers.get('content-disposition')\n\n if (!disposition) {\n throw new Error('\"Content-Disposition\" header is required.')\n }\n\n const directives = disposition.split(';').reduce((acc, chunk) => {\n const [name, ...rest] = chunk.trim().split('=')\n acc[name] = rest.join('=')\n return acc\n }, {} as ContentDispositionDirective)\n\n const name = directives.name?.slice(1, -1)\n const filename = directives.filename?.slice(1, -1)\n\n return {\n name,\n filename,\n contentType,\n }\n}\n\n/**\n * Parses a given string as a multipart/form-data.\n * Does not throw an exception on an invalid multipart string.\n */\nexport function parseMultipartData<T extends DefaultRequestMultipartBody>(\n data: string,\n headers?: Headers,\n): T | undefined {\n const contentType = headers?.get('content-type')\n\n if (!contentType) {\n return undefined\n }\n\n const [, ...directives] = contentType.split(/; */)\n const boundary = directives\n .filter((d) => d.startsWith('boundary='))\n .map((s) => s.replace(/^boundary=/, ''))[0]\n\n if (!boundary) {\n return undefined\n }\n\n const boundaryRegExp = new RegExp(`--+${boundary}`)\n const fields = data\n .split(boundaryRegExp)\n .filter((chunk) => chunk.startsWith('\\r\\n') && chunk.endsWith('\\r\\n'))\n .map((chunk) => chunk.trimStart().replace(/\\r\\n$/, ''))\n\n if (!fields.length) {\n return undefined\n }\n\n const parsedBody: DefaultRequestMultipartBody = {}\n\n try {\n for (const field of fields) {\n const [contentHeaders, ...rest] = field.split('\\r\\n\\r\\n')\n const contentBody = rest.join('\\r\\n\\r\\n')\n const { contentType, filename, name } =\n parseContentHeaders(contentHeaders)\n\n const value =\n filename === undefined\n ? contentBody\n : new File([contentBody], filename, { type: contentType })\n\n const parsedValue = parsedBody[name]\n\n if (parsedValue === undefined) {\n parsedBody[name] = value\n } else if (Array.isArray(parsedValue)) {\n parsedBody[name] = [...parsedValue, value]\n } else {\n parsedBody[name] = [parsedValue, value]\n }\n }\n\n return parsedBody as T\n } catch (error) {\n return undefined\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAAgC;AAgBhC,SAAS,oBAAoB,eAA6C;AACxE,QAAM,cAAU,yCAAgB,aAAa;AAC7C,QAAM,cAAc,QAAQ,IAAI,cAAc,KAAK;AACnD,QAAM,cAAc,QAAQ,IAAI,qBAAqB;AAErD,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AAEA,QAAM,aAAa,YAAY,MAAM,GAAG,EAAE,OAAO,CAAC,KAAK,UAAU;AAC/D,UAAM,CAACA,OAAM,GAAG,IAAI,IAAI,MAAM,KAAK,EAAE,MAAM,GAAG;AAC9C,QAAIA,KAAI,IAAI,KAAK,KAAK,GAAG;AACzB,WAAO;AAAA,EACT,GAAG,CAAC,CAAgC;AAEpC,QAAM,OAAO,WAAW,MAAM,MAAM,GAAG,EAAE;AACzC,QAAM,WAAW,WAAW,UAAU,MAAM,GAAG,EAAE;AAEjD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAMO,SAAS,mBACd,MACA,SACe;AACf,QAAM,cAAc,SAAS,IAAI,cAAc;AAE/C,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,CAAC,EAAE,GAAG,UAAU,IAAI,YAAY,MAAM,KAAK;AACjD,QAAM,WAAW,WACd,OAAO,CAAC,MAAM,EAAE,WAAW,WAAW,CAAC,EACvC,IAAI,CAAC,MAAM,EAAE,QAAQ,cAAc,EAAE,CAAC,EAAE,CAAC;AAE5C,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,IAAI,OAAO,MAAM,QAAQ,EAAE;AAClD,QAAM,SAAS,KACZ,MAAM,cAAc,EACpB,OAAO,CAAC,UAAU,MAAM,WAAW,MAAM,KAAK,MAAM,SAAS,MAAM,CAAC,EACpE,IAAI,CAAC,UAAU,MAAM,UAAU,EAAE,QAAQ,SAAS,EAAE,CAAC;AAExD,MAAI,CAAC,OAAO,QAAQ;AAClB,WAAO;AAAA,EACT;AAEA,QAAM,aAA0C,CAAC;AAEjD,MAAI;AACF,eAAW,SAAS,QAAQ;AAC1B,YAAM,CAAC,gBAAgB,GAAG,IAAI,IAAI,MAAM,MAAM,UAAU;AACxD,YAAM,cAAc,KAAK,KAAK,UAAU;AACxC,YAAM,EAAE,aAAAC,cAAa,UAAU,KAAK,IAClC,oBAAoB,cAAc;AAEpC,YAAM,QACJ,aAAa,SACT,cACA,IAAI,KAAK,CAAC,WAAW,GAAG,UAAU,EAAE,MAAMA,aAAY,CAAC;AAE7D,YAAM,cAAc,WAAW,IAAI;AAEnC,UAAI,gBAAgB,QAAW;AAC7B,mBAAW,IAAI,IAAI;AAAA,MACrB,WAAW,MAAM,QAAQ,WAAW,GAAG;AACrC,mBAAW,IAAI,IAAI,CAAC,GAAG,aAAa,KAAK;AAAA,MAC3C,OAAO;AACL,mBAAW,IAAI,IAAI,CAAC,aAAa,KAAK;AAAA,MACxC;AAAA,IACF;AAEA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,WAAO;AAAA,EACT;AACF;","names":["name","contentType"]}
@@ -1,6 +1,5 @@
1
1
  import { stringToHeaders } from "headers-polyfill";
2
2
  function parseContentHeaders(headersString) {
3
- var _a, _b;
4
3
  const headers = stringToHeaders(headersString);
5
4
  const contentType = headers.get("content-type") || "text/plain";
6
5
  const disposition = headers.get("content-disposition");
@@ -12,8 +11,8 @@ function parseContentHeaders(headersString) {
12
11
  acc[name2] = rest.join("=");
13
12
  return acc;
14
13
  }, {});
15
- const name = (_a = directives.name) == null ? void 0 : _a.slice(1, -1);
16
- const filename = (_b = directives.filename) == null ? void 0 : _b.slice(1, -1);
14
+ const name = directives.name?.slice(1, -1);
15
+ const filename = directives.filename?.slice(1, -1);
17
16
  return {
18
17
  name,
19
18
  filename,
@@ -21,7 +20,7 @@ function parseContentHeaders(headersString) {
21
20
  };
22
21
  }
23
22
  function parseMultipartData(data, headers) {
24
- const contentType = headers == null ? void 0 : headers.get("content-type");
23
+ const contentType = headers?.get("content-type");
25
24
  if (!contentType) {
26
25
  return void 0;
27
26
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/core/utils/internal/parseMultipartData.ts"],"sourcesContent":["import { stringToHeaders } from 'headers-polyfill'\nimport { DefaultRequestMultipartBody } from '../../handlers/RequestHandler'\n\ninterface ParsedContentHeaders {\n name: string\n filename?: string\n contentType: string\n}\n\ninterface ContentDispositionDirective {\n [key: string]: string | undefined\n name: string\n filename?: string\n 'form-data': string\n}\n\nfunction parseContentHeaders(headersString: string): ParsedContentHeaders {\n const headers = stringToHeaders(headersString)\n const contentType = headers.get('content-type') || 'text/plain'\n const disposition = headers.get('content-disposition')\n\n if (!disposition) {\n throw new Error('\"Content-Disposition\" header is required.')\n }\n\n const directives = disposition.split(';').reduce((acc, chunk) => {\n const [name, ...rest] = chunk.trim().split('=')\n acc[name] = rest.join('=')\n return acc\n }, {} as ContentDispositionDirective)\n\n const name = directives.name?.slice(1, -1)\n const filename = directives.filename?.slice(1, -1)\n\n return {\n name,\n filename,\n contentType,\n }\n}\n\n/**\n * Parses a given string as a multipart/form-data.\n * Does not throw an exception on an invalid multipart string.\n */\nexport function parseMultipartData<T extends DefaultRequestMultipartBody>(\n data: string,\n headers?: Headers,\n): T | undefined {\n const contentType = headers?.get('content-type')\n\n if (!contentType) {\n return undefined\n }\n\n const [, ...directives] = contentType.split(/; */)\n const boundary = directives\n .filter((d) => d.startsWith('boundary='))\n .map((s) => s.replace(/^boundary=/, ''))[0]\n\n if (!boundary) {\n return undefined\n }\n\n const boundaryRegExp = new RegExp(`--+${boundary}`)\n const fields = data\n .split(boundaryRegExp)\n .filter((chunk) => chunk.startsWith('\\r\\n') && chunk.endsWith('\\r\\n'))\n .map((chunk) => chunk.trimStart().replace(/\\r\\n$/, ''))\n\n if (!fields.length) {\n return undefined\n }\n\n const parsedBody: DefaultRequestMultipartBody = {}\n\n try {\n for (const field of fields) {\n const [contentHeaders, ...rest] = field.split('\\r\\n\\r\\n')\n const contentBody = rest.join('\\r\\n\\r\\n')\n const { contentType, filename, name } =\n parseContentHeaders(contentHeaders)\n\n const value =\n filename === undefined\n ? contentBody\n : new File([contentBody], filename, { type: contentType })\n\n const parsedValue = parsedBody[name]\n\n if (parsedValue === undefined) {\n parsedBody[name] = value\n } else if (Array.isArray(parsedValue)) {\n parsedBody[name] = [...parsedValue, value]\n } else {\n parsedBody[name] = [parsedValue, value]\n }\n }\n\n return parsedBody as T\n } catch (error) {\n return undefined\n }\n}\n"],"mappings":"AAAA,SAAS,uBAAuB;AAgBhC,SAAS,oBAAoB,eAA6C;AAhB1E;AAiBE,QAAM,UAAU,gBAAgB,aAAa;AAC7C,QAAM,cAAc,QAAQ,IAAI,cAAc,KAAK;AACnD,QAAM,cAAc,QAAQ,IAAI,qBAAqB;AAErD,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AAEA,QAAM,aAAa,YAAY,MAAM,GAAG,EAAE,OAAO,CAAC,KAAK,UAAU;AAC/D,UAAM,CAACA,OAAM,GAAG,IAAI,IAAI,MAAM,KAAK,EAAE,MAAM,GAAG;AAC9C,QAAIA,KAAI,IAAI,KAAK,KAAK,GAAG;AACzB,WAAO;AAAA,EACT,GAAG,CAAC,CAAgC;AAEpC,QAAM,QAAO,gBAAW,SAAX,mBAAiB,MAAM,GAAG;AACvC,QAAM,YAAW,gBAAW,aAAX,mBAAqB,MAAM,GAAG;AAE/C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAMO,SAAS,mBACd,MACA,SACe;AACf,QAAM,cAAc,mCAAS,IAAI;AAEjC,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,CAAC,EAAE,GAAG,UAAU,IAAI,YAAY,MAAM,KAAK;AACjD,QAAM,WAAW,WACd,OAAO,CAAC,MAAM,EAAE,WAAW,WAAW,CAAC,EACvC,IAAI,CAAC,MAAM,EAAE,QAAQ,cAAc,EAAE,CAAC,EAAE,CAAC;AAE5C,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,IAAI,OAAO,MAAM,QAAQ,EAAE;AAClD,QAAM,SAAS,KACZ,MAAM,cAAc,EACpB,OAAO,CAAC,UAAU,MAAM,WAAW,MAAM,KAAK,MAAM,SAAS,MAAM,CAAC,EACpE,IAAI,CAAC,UAAU,MAAM,UAAU,EAAE,QAAQ,SAAS,EAAE,CAAC;AAExD,MAAI,CAAC,OAAO,QAAQ;AAClB,WAAO;AAAA,EACT;AAEA,QAAM,aAA0C,CAAC;AAEjD,MAAI;AACF,eAAW,SAAS,QAAQ;AAC1B,YAAM,CAAC,gBAAgB,GAAG,IAAI,IAAI,MAAM,MAAM,UAAU;AACxD,YAAM,cAAc,KAAK,KAAK,UAAU;AACxC,YAAM,EAAE,aAAAC,cAAa,UAAU,KAAK,IAClC,oBAAoB,cAAc;AAEpC,YAAM,QACJ,aAAa,SACT,cACA,IAAI,KAAK,CAAC,WAAW,GAAG,UAAU,EAAE,MAAMA,aAAY,CAAC;AAE7D,YAAM,cAAc,WAAW,IAAI;AAEnC,UAAI,gBAAgB,QAAW;AAC7B,mBAAW,IAAI,IAAI;AAAA,MACrB,WAAW,MAAM,QAAQ,WAAW,GAAG;AACrC,mBAAW,IAAI,IAAI,CAAC,GAAG,aAAa,KAAK;AAAA,MAC3C,OAAO;AACL,mBAAW,IAAI,IAAI,CAAC,aAAa,KAAK;AAAA,MACxC;AAAA,IACF;AAEA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,WAAO;AAAA,EACT;AACF;","names":["name","contentType"]}
1
+ {"version":3,"sources":["../../../../src/core/utils/internal/parseMultipartData.ts"],"sourcesContent":["import { stringToHeaders } from 'headers-polyfill'\nimport { DefaultRequestMultipartBody } from '../../handlers/RequestHandler'\n\ninterface ParsedContentHeaders {\n name: string\n filename?: string\n contentType: string\n}\n\ninterface ContentDispositionDirective {\n [key: string]: string | undefined\n name: string\n filename?: string\n 'form-data': string\n}\n\nfunction parseContentHeaders(headersString: string): ParsedContentHeaders {\n const headers = stringToHeaders(headersString)\n const contentType = headers.get('content-type') || 'text/plain'\n const disposition = headers.get('content-disposition')\n\n if (!disposition) {\n throw new Error('\"Content-Disposition\" header is required.')\n }\n\n const directives = disposition.split(';').reduce((acc, chunk) => {\n const [name, ...rest] = chunk.trim().split('=')\n acc[name] = rest.join('=')\n return acc\n }, {} as ContentDispositionDirective)\n\n const name = directives.name?.slice(1, -1)\n const filename = directives.filename?.slice(1, -1)\n\n return {\n name,\n filename,\n contentType,\n }\n}\n\n/**\n * Parses a given string as a multipart/form-data.\n * Does not throw an exception on an invalid multipart string.\n */\nexport function parseMultipartData<T extends DefaultRequestMultipartBody>(\n data: string,\n headers?: Headers,\n): T | undefined {\n const contentType = headers?.get('content-type')\n\n if (!contentType) {\n return undefined\n }\n\n const [, ...directives] = contentType.split(/; */)\n const boundary = directives\n .filter((d) => d.startsWith('boundary='))\n .map((s) => s.replace(/^boundary=/, ''))[0]\n\n if (!boundary) {\n return undefined\n }\n\n const boundaryRegExp = new RegExp(`--+${boundary}`)\n const fields = data\n .split(boundaryRegExp)\n .filter((chunk) => chunk.startsWith('\\r\\n') && chunk.endsWith('\\r\\n'))\n .map((chunk) => chunk.trimStart().replace(/\\r\\n$/, ''))\n\n if (!fields.length) {\n return undefined\n }\n\n const parsedBody: DefaultRequestMultipartBody = {}\n\n try {\n for (const field of fields) {\n const [contentHeaders, ...rest] = field.split('\\r\\n\\r\\n')\n const contentBody = rest.join('\\r\\n\\r\\n')\n const { contentType, filename, name } =\n parseContentHeaders(contentHeaders)\n\n const value =\n filename === undefined\n ? contentBody\n : new File([contentBody], filename, { type: contentType })\n\n const parsedValue = parsedBody[name]\n\n if (parsedValue === undefined) {\n parsedBody[name] = value\n } else if (Array.isArray(parsedValue)) {\n parsedBody[name] = [...parsedValue, value]\n } else {\n parsedBody[name] = [parsedValue, value]\n }\n }\n\n return parsedBody as T\n } catch (error) {\n return undefined\n }\n}\n"],"mappings":"AAAA,SAAS,uBAAuB;AAgBhC,SAAS,oBAAoB,eAA6C;AACxE,QAAM,UAAU,gBAAgB,aAAa;AAC7C,QAAM,cAAc,QAAQ,IAAI,cAAc,KAAK;AACnD,QAAM,cAAc,QAAQ,IAAI,qBAAqB;AAErD,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AAEA,QAAM,aAAa,YAAY,MAAM,GAAG,EAAE,OAAO,CAAC,KAAK,UAAU;AAC/D,UAAM,CAACA,OAAM,GAAG,IAAI,IAAI,MAAM,KAAK,EAAE,MAAM,GAAG;AAC9C,QAAIA,KAAI,IAAI,KAAK,KAAK,GAAG;AACzB,WAAO;AAAA,EACT,GAAG,CAAC,CAAgC;AAEpC,QAAM,OAAO,WAAW,MAAM,MAAM,GAAG,EAAE;AACzC,QAAM,WAAW,WAAW,UAAU,MAAM,GAAG,EAAE;AAEjD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAMO,SAAS,mBACd,MACA,SACe;AACf,QAAM,cAAc,SAAS,IAAI,cAAc;AAE/C,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,CAAC,EAAE,GAAG,UAAU,IAAI,YAAY,MAAM,KAAK;AACjD,QAAM,WAAW,WACd,OAAO,CAAC,MAAM,EAAE,WAAW,WAAW,CAAC,EACvC,IAAI,CAAC,MAAM,EAAE,QAAQ,cAAc,EAAE,CAAC,EAAE,CAAC;AAE5C,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,IAAI,OAAO,MAAM,QAAQ,EAAE;AAClD,QAAM,SAAS,KACZ,MAAM,cAAc,EACpB,OAAO,CAAC,UAAU,MAAM,WAAW,MAAM,KAAK,MAAM,SAAS,MAAM,CAAC,EACpE,IAAI,CAAC,UAAU,MAAM,UAAU,EAAE,QAAQ,SAAS,EAAE,CAAC;AAExD,MAAI,CAAC,OAAO,QAAQ;AAClB,WAAO;AAAA,EACT;AAEA,QAAM,aAA0C,CAAC;AAEjD,MAAI;AACF,eAAW,SAAS,QAAQ;AAC1B,YAAM,CAAC,gBAAgB,GAAG,IAAI,IAAI,MAAM,MAAM,UAAU;AACxD,YAAM,cAAc,KAAK,KAAK,UAAU;AACxC,YAAM,EAAE,aAAAC,cAAa,UAAU,KAAK,IAClC,oBAAoB,cAAc;AAEpC,YAAM,QACJ,aAAa,SACT,cACA,IAAI,KAAK,CAAC,WAAW,GAAG,UAAU,EAAE,MAAMA,aAAY,CAAC;AAE7D,YAAM,cAAc,WAAW,IAAI;AAEnC,UAAI,gBAAgB,QAAW;AAC7B,mBAAW,IAAI,IAAI;AAAA,MACrB,WAAW,MAAM,QAAQ,WAAW,GAAG;AACrC,mBAAW,IAAI,IAAI,CAAC,GAAG,aAAa,KAAK;AAAA,MAC3C,OAAO;AACL,mBAAW,IAAI,IAAI,CAAC,aAAa,KAAK;AAAA,MACxC;AAAA,IACF;AAEA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,WAAO;AAAA,EACT;AACF;","names":["name","contentType"]}
@@ -1,4 +1,4 @@
1
- import { R as RequestHandler, g as RequestHandlerDefaultInfo, c as RequestHandlerOptions } from '../../RequestHandler-YiqamK0M.mjs';
1
+ import { R as RequestHandler, g as RequestHandlerDefaultInfo, c as RequestHandlerOptions } from '../../RequestHandler-nfjVJ8Tp.mjs';
2
2
  import '../../typeUtils.mjs';
3
3
 
4
4
  declare function use(currentHandlers: Array<RequestHandler>, ...handlers: Array<RequestHandler>): void;
@@ -1,4 +1,4 @@
1
- import { R as RequestHandler, g as RequestHandlerDefaultInfo, c as RequestHandlerOptions } from '../../RequestHandler-rmY-HeFN.js';
1
+ import { R as RequestHandler, g as RequestHandlerDefaultInfo, c as RequestHandlerOptions } from '../../RequestHandler-TRh8Eh4H.js';
2
2
  import '../../typeUtils.js';
3
3
 
4
4
  declare function use(currentHandlers: Array<RequestHandler>, ...handlers: Array<RequestHandler>): void;
@@ -26,7 +26,7 @@ function tryCatch(fn, onException) {
26
26
  const result = fn();
27
27
  return result;
28
28
  } catch (error) {
29
- onException == null ? void 0 : onException(error);
29
+ onException?.(error);
30
30
  }
31
31
  }
32
32
  //# sourceMappingURL=tryCatch.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/core/utils/internal/tryCatch.ts"],"sourcesContent":["export function tryCatch<Fn extends (...args: any[]) => any>(\n fn: Fn,\n onException?: (error: Error) => void,\n): ReturnType<Fn> | undefined {\n try {\n const result = fn()\n return result\n } catch (error) {\n onException?.(error as Error)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,SACd,IACA,aAC4B;AAC5B,MAAI;AACF,UAAM,SAAS,GAAG;AAClB,WAAO;AAAA,EACT,SAAS,OAAO;AACd,+CAAc;AAAA,EAChB;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/core/utils/internal/tryCatch.ts"],"sourcesContent":["export function tryCatch<Fn extends (...args: any[]) => any>(\n fn: Fn,\n onException?: (error: Error) => void,\n): ReturnType<Fn> | undefined {\n try {\n const result = fn()\n return result\n } catch (error) {\n onException?.(error as Error)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,SACd,IACA,aAC4B;AAC5B,MAAI;AACF,UAAM,SAAS,GAAG;AAClB,WAAO;AAAA,EACT,SAAS,OAAO;AACd,kBAAc,KAAc;AAAA,EAC9B;AACF;","names":[]}
@@ -3,7 +3,7 @@ function tryCatch(fn, onException) {
3
3
  const result = fn();
4
4
  return result;
5
5
  } catch (error) {
6
- onException == null ? void 0 : onException(error);
6
+ onException?.(error);
7
7
  }
8
8
  }
9
9
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/core/utils/internal/tryCatch.ts"],"sourcesContent":["export function tryCatch<Fn extends (...args: any[]) => any>(\n fn: Fn,\n onException?: (error: Error) => void,\n): ReturnType<Fn> | undefined {\n try {\n const result = fn()\n return result\n } catch (error) {\n onException?.(error as Error)\n }\n}\n"],"mappings":"AAAO,SAAS,SACd,IACA,aAC4B;AAC5B,MAAI;AACF,UAAM,SAAS,GAAG;AAClB,WAAO;AAAA,EACT,SAAS,OAAO;AACd,+CAAc;AAAA,EAChB;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/core/utils/internal/tryCatch.ts"],"sourcesContent":["export function tryCatch<Fn extends (...args: any[]) => any>(\n fn: Fn,\n onException?: (error: Error) => void,\n): ReturnType<Fn> | undefined {\n try {\n const result = fn()\n return result\n } catch (error) {\n onException?.(error as Error)\n }\n}\n"],"mappings":"AAAO,SAAS,SACd,IACA,aAC4B;AAC5B,MAAI;AACF,UAAM,SAAS,GAAG;AAClB,WAAO;AAAA,EACT,SAAS,OAAO;AACd,kBAAc,KAAc;AAAA,EAC9B;AACF;","names":[]}
@@ -16,41 +16,19 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var __async = (__this, __arguments, generator) => {
20
- return new Promise((resolve, reject) => {
21
- var fulfilled = (value) => {
22
- try {
23
- step(generator.next(value));
24
- } catch (e) {
25
- reject(e);
26
- }
27
- };
28
- var rejected = (value) => {
29
- try {
30
- step(generator.throw(value));
31
- } catch (e) {
32
- reject(e);
33
- }
34
- };
35
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
36
- step((generator = generator.apply(__this, __arguments)).next());
37
- });
38
- };
39
19
  var serializeRequest_exports = {};
40
20
  __export(serializeRequest_exports, {
41
21
  serializeRequest: () => serializeRequest
42
22
  });
43
23
  module.exports = __toCommonJS(serializeRequest_exports);
44
- function serializeRequest(request) {
45
- return __async(this, null, function* () {
46
- const requestClone = request.clone();
47
- const requestText = yield requestClone.text();
48
- return {
49
- url: new URL(request.url),
50
- method: request.method,
51
- headers: Object.fromEntries(request.headers.entries()),
52
- body: requestText
53
- };
54
- });
24
+ async function serializeRequest(request) {
25
+ const requestClone = request.clone();
26
+ const requestText = await requestClone.text();
27
+ return {
28
+ url: new URL(request.url),
29
+ method: request.method,
30
+ headers: Object.fromEntries(request.headers.entries()),
31
+ body: requestText
32
+ };
55
33
  }
56
34
  //# sourceMappingURL=serializeRequest.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/core/utils/logging/serializeRequest.ts"],"sourcesContent":["export interface LoggedRequest {\n url: URL\n method: string\n headers: Record<string, string>\n body: string\n}\n\n/**\n * Formats a mocked request for introspection in browser's console.\n */\nexport async function serializeRequest(\n request: Request,\n): Promise<LoggedRequest> {\n const requestClone = request.clone()\n const requestText = await requestClone.text()\n\n return {\n url: new URL(request.url),\n method: request.method,\n headers: Object.fromEntries(request.headers.entries()),\n body: requestText,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,SAAsB,iBACpB,SACwB;AAAA;AACxB,UAAM,eAAe,QAAQ,MAAM;AACnC,UAAM,cAAc,MAAM,aAAa,KAAK;AAE5C,WAAO;AAAA,MACL,KAAK,IAAI,IAAI,QAAQ,GAAG;AAAA,MACxB,QAAQ,QAAQ;AAAA,MAChB,SAAS,OAAO,YAAY,QAAQ,QAAQ,QAAQ,CAAC;AAAA,MACrD,MAAM;AAAA,IACR;AAAA,EACF;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../../../src/core/utils/logging/serializeRequest.ts"],"sourcesContent":["export interface LoggedRequest {\n url: URL\n method: string\n headers: Record<string, string>\n body: string\n}\n\n/**\n * Formats a mocked request for introspection in browser's console.\n */\nexport async function serializeRequest(\n request: Request,\n): Promise<LoggedRequest> {\n const requestClone = request.clone()\n const requestText = await requestClone.text()\n\n return {\n url: new URL(request.url),\n method: request.method,\n headers: Object.fromEntries(request.headers.entries()),\n body: requestText,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA,eAAsB,iBACpB,SACwB;AACxB,QAAM,eAAe,QAAQ,MAAM;AACnC,QAAM,cAAc,MAAM,aAAa,KAAK;AAE5C,SAAO;AAAA,IACL,KAAK,IAAI,IAAI,QAAQ,GAAG;AAAA,IACxB,QAAQ,QAAQ;AAAA,IAChB,SAAS,OAAO,YAAY,QAAQ,QAAQ,QAAQ,CAAC;AAAA,IACrD,MAAM;AAAA,EACR;AACF;","names":[]}
@@ -1,34 +1,12 @@
1
- var __async = (__this, __arguments, generator) => {
2
- return new Promise((resolve, reject) => {
3
- var fulfilled = (value) => {
4
- try {
5
- step(generator.next(value));
6
- } catch (e) {
7
- reject(e);
8
- }
9
- };
10
- var rejected = (value) => {
11
- try {
12
- step(generator.throw(value));
13
- } catch (e) {
14
- reject(e);
15
- }
16
- };
17
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
- step((generator = generator.apply(__this, __arguments)).next());
19
- });
20
- };
21
- function serializeRequest(request) {
22
- return __async(this, null, function* () {
23
- const requestClone = request.clone();
24
- const requestText = yield requestClone.text();
25
- return {
26
- url: new URL(request.url),
27
- method: request.method,
28
- headers: Object.fromEntries(request.headers.entries()),
29
- body: requestText
30
- };
31
- });
1
+ async function serializeRequest(request) {
2
+ const requestClone = request.clone();
3
+ const requestText = await requestClone.text();
4
+ return {
5
+ url: new URL(request.url),
6
+ method: request.method,
7
+ headers: Object.fromEntries(request.headers.entries()),
8
+ body: requestText
9
+ };
32
10
  }
33
11
  export {
34
12
  serializeRequest
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/core/utils/logging/serializeRequest.ts"],"sourcesContent":["export interface LoggedRequest {\n url: URL\n method: string\n headers: Record<string, string>\n body: string\n}\n\n/**\n * Formats a mocked request for introspection in browser's console.\n */\nexport async function serializeRequest(\n request: Request,\n): Promise<LoggedRequest> {\n const requestClone = request.clone()\n const requestText = await requestClone.text()\n\n return {\n url: new URL(request.url),\n method: request.method,\n headers: Object.fromEntries(request.headers.entries()),\n body: requestText,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAUA,SAAsB,iBACpB,SACwB;AAAA;AACxB,UAAM,eAAe,QAAQ,MAAM;AACnC,UAAM,cAAc,MAAM,aAAa,KAAK;AAE5C,WAAO;AAAA,MACL,KAAK,IAAI,IAAI,QAAQ,GAAG;AAAA,MACxB,QAAQ,QAAQ;AAAA,MAChB,SAAS,OAAO,YAAY,QAAQ,QAAQ,QAAQ,CAAC;AAAA,MACrD,MAAM;AAAA,IACR;AAAA,EACF;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../../../src/core/utils/logging/serializeRequest.ts"],"sourcesContent":["export interface LoggedRequest {\n url: URL\n method: string\n headers: Record<string, string>\n body: string\n}\n\n/**\n * Formats a mocked request for introspection in browser's console.\n */\nexport async function serializeRequest(\n request: Request,\n): Promise<LoggedRequest> {\n const requestClone = request.clone()\n const requestText = await requestClone.text()\n\n return {\n url: new URL(request.url),\n method: request.method,\n headers: Object.fromEntries(request.headers.entries()),\n body: requestText,\n }\n}\n"],"mappings":"AAUA,eAAsB,iBACpB,SACwB;AACxB,QAAM,eAAe,QAAQ,MAAM;AACnC,QAAM,cAAc,MAAM,aAAa,KAAK;AAE5C,SAAO;AAAA,IACL,KAAK,IAAI,IAAI,QAAQ,GAAG;AAAA,IACxB,QAAQ,QAAQ;AAAA,IAChB,SAAS,OAAO,YAAY,QAAQ,QAAQ,QAAQ,CAAC;AAAA,IACrD,MAAM;AAAA,EACR;AACF;","names":[]}
@@ -26,26 +26,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var __async = (__this, __arguments, generator) => {
30
- return new Promise((resolve, reject) => {
31
- var fulfilled = (value) => {
32
- try {
33
- step(generator.next(value));
34
- } catch (e) {
35
- reject(e);
36
- }
37
- };
38
- var rejected = (value) => {
39
- try {
40
- step(generator.throw(value));
41
- } catch (e) {
42
- reject(e);
43
- }
44
- };
45
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
46
- step((generator = generator.apply(__this, __arguments)).next());
47
- });
48
- };
49
29
  var serializeResponse_exports = {};
50
30
  __export(serializeResponse_exports, {
51
31
  serializeResponse: () => serializeResponse
@@ -53,18 +33,16 @@ __export(serializeResponse_exports, {
53
33
  module.exports = __toCommonJS(serializeResponse_exports);
54
34
  var import_statuses = __toESM(require("@bundled-es-modules/statuses"));
55
35
  const { message } = import_statuses.default;
56
- function serializeResponse(response) {
57
- return __async(this, null, function* () {
58
- const responseClone = response.clone();
59
- const responseText = yield responseClone.text();
60
- const responseStatus = responseClone.status || 200;
61
- const responseStatusText = responseClone.statusText || message[responseStatus] || "OK";
62
- return {
63
- status: responseStatus,
64
- statusText: responseStatusText,
65
- headers: Object.fromEntries(responseClone.headers.entries()),
66
- body: responseText
67
- };
68
- });
36
+ async function serializeResponse(response) {
37
+ const responseClone = response.clone();
38
+ const responseText = await responseClone.text();
39
+ const responseStatus = responseClone.status || 200;
40
+ const responseStatusText = responseClone.statusText || message[responseStatus] || "OK";
41
+ return {
42
+ status: responseStatus,
43
+ statusText: responseStatusText,
44
+ headers: Object.fromEntries(responseClone.headers.entries()),
45
+ body: responseText
46
+ };
69
47
  }
70
48
  //# sourceMappingURL=serializeResponse.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/core/utils/logging/serializeResponse.ts"],"sourcesContent":["import statuses from '@bundled-es-modules/statuses'\n\nconst { message } = statuses\n\nexport interface SerializedResponse {\n status: number\n statusText: string\n headers: Record<string, any>\n body: string\n}\n\nexport async function serializeResponse(\n response: Response,\n): Promise<SerializedResponse> {\n const responseClone = response.clone()\n const responseText = await responseClone.text()\n\n // Normalize the response status and status text when logging\n // since the default Response instance doesn't infer status texts\n // from status codes. This has no effect on the actual response instance.\n const responseStatus = responseClone.status || 200\n const responseStatusText =\n responseClone.statusText || message[responseStatus] || 'OK'\n\n return {\n status: responseStatus,\n statusText: responseStatusText,\n headers: Object.fromEntries(responseClone.headers.entries()),\n body: responseText,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAqB;AAErB,MAAM,EAAE,QAAQ,IAAI,gBAAAA;AASpB,SAAsB,kBACpB,UAC6B;AAAA;AAC7B,UAAM,gBAAgB,SAAS,MAAM;AACrC,UAAM,eAAe,MAAM,cAAc,KAAK;AAK9C,UAAM,iBAAiB,cAAc,UAAU;AAC/C,UAAM,qBACJ,cAAc,cAAc,QAAQ,cAAc,KAAK;AAEzD,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,SAAS,OAAO,YAAY,cAAc,QAAQ,QAAQ,CAAC;AAAA,MAC3D,MAAM;AAAA,IACR;AAAA,EACF;AAAA;","names":["statuses"]}
1
+ {"version":3,"sources":["../../../../src/core/utils/logging/serializeResponse.ts"],"sourcesContent":["import statuses from '@bundled-es-modules/statuses'\n\nconst { message } = statuses\n\nexport interface SerializedResponse {\n status: number\n statusText: string\n headers: Record<string, any>\n body: string\n}\n\nexport async function serializeResponse(\n response: Response,\n): Promise<SerializedResponse> {\n const responseClone = response.clone()\n const responseText = await responseClone.text()\n\n // Normalize the response status and status text when logging\n // since the default Response instance doesn't infer status texts\n // from status codes. This has no effect on the actual response instance.\n const responseStatus = responseClone.status || 200\n const responseStatusText =\n responseClone.statusText || message[responseStatus] || 'OK'\n\n return {\n status: responseStatus,\n statusText: responseStatusText,\n headers: Object.fromEntries(responseClone.headers.entries()),\n body: responseText,\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAqB;AAErB,MAAM,EAAE,QAAQ,IAAI,gBAAAA;AASpB,eAAsB,kBACpB,UAC6B;AAC7B,QAAM,gBAAgB,SAAS,MAAM;AACrC,QAAM,eAAe,MAAM,cAAc,KAAK;AAK9C,QAAM,iBAAiB,cAAc,UAAU;AAC/C,QAAM,qBACJ,cAAc,cAAc,QAAQ,cAAc,KAAK;AAEzD,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS,OAAO,YAAY,cAAc,QAAQ,QAAQ,CAAC;AAAA,IAC3D,MAAM;AAAA,EACR;AACF;","names":["statuses"]}