wreq-js 1.4.0 → 1.5.2

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 (62) hide show
  1. package/README.md +45 -228
  2. package/dist/wreq-js.cjs +1174 -0
  3. package/dist/wreq-js.cjs.map +1 -0
  4. package/dist/{types.d.ts → wreq-js.d.cts} +244 -22
  5. package/dist/wreq-js.d.ts +479 -27
  6. package/dist/wreq-js.js +1049 -1095
  7. package/dist/wreq-js.js.map +1 -1
  8. package/package.json +23 -14
  9. package/rust/wreq-js.darwin-arm64.node +0 -0
  10. package/rust/wreq-js.darwin-x64.node +0 -0
  11. package/rust/wreq-js.linux-arm64-gnu.node +0 -0
  12. package/rust/wreq-js.linux-x64-gnu.node +0 -0
  13. package/rust/wreq-js.linux-x64-musl.node +0 -0
  14. package/rust/wreq-js.win32-x64-msvc.node +0 -0
  15. package/dist/generated-types.d.ts +0 -13
  16. package/dist/generated-types.d.ts.map +0 -1
  17. package/dist/generated-types.js +0 -7
  18. package/dist/generated-types.js.map +0 -1
  19. package/dist/test/helpers/http.d.ts +0 -4
  20. package/dist/test/helpers/http.d.ts.map +0 -1
  21. package/dist/test/helpers/http.js +0 -14
  22. package/dist/test/helpers/http.js.map +0 -1
  23. package/dist/test/helpers/local-test-server.d.ts +0 -7
  24. package/dist/test/helpers/local-test-server.d.ts.map +0 -1
  25. package/dist/test/helpers/local-test-server.js +0 -406
  26. package/dist/test/helpers/local-test-server.js.map +0 -1
  27. package/dist/test/http/errors.spec.d.ts +0 -2
  28. package/dist/test/http/errors.spec.d.ts.map +0 -1
  29. package/dist/test/http/errors.spec.js +0 -33
  30. package/dist/test/http/errors.spec.js.map +0 -1
  31. package/dist/test/http/headers.spec.d.ts +0 -2
  32. package/dist/test/http/headers.spec.d.ts.map +0 -1
  33. package/dist/test/http/headers.spec.js +0 -98
  34. package/dist/test/http/headers.spec.js.map +0 -1
  35. package/dist/test/http/insecure.spec.d.ts +0 -2
  36. package/dist/test/http/insecure.spec.d.ts.map +0 -1
  37. package/dist/test/http/insecure.spec.js +0 -126
  38. package/dist/test/http/insecure.spec.js.map +0 -1
  39. package/dist/test/http/profiles.spec.d.ts +0 -2
  40. package/dist/test/http/profiles.spec.d.ts.map +0 -1
  41. package/dist/test/http/profiles.spec.js +0 -28
  42. package/dist/test/http/profiles.spec.js.map +0 -1
  43. package/dist/test/http/requests.spec.d.ts +0 -2
  44. package/dist/test/http/requests.spec.d.ts.map +0 -1
  45. package/dist/test/http/requests.spec.js +0 -198
  46. package/dist/test/http/requests.spec.js.map +0 -1
  47. package/dist/test/http/sessions.spec.d.ts +0 -2
  48. package/dist/test/http/sessions.spec.d.ts.map +0 -1
  49. package/dist/test/http/sessions.spec.js +0 -68
  50. package/dist/test/http/sessions.spec.js.map +0 -1
  51. package/dist/test/run-with-local-server.d.ts +0 -2
  52. package/dist/test/run-with-local-server.d.ts.map +0 -1
  53. package/dist/test/run-with-local-server.js +0 -71
  54. package/dist/test/run-with-local-server.js.map +0 -1
  55. package/dist/test/websocket.spec.d.ts +0 -2
  56. package/dist/test/websocket.spec.d.ts.map +0 -1
  57. package/dist/test/websocket.spec.js +0 -122
  58. package/dist/test/websocket.spec.js.map +0 -1
  59. package/dist/types.d.ts.map +0 -1
  60. package/dist/types.js +0 -26
  61. package/dist/types.js.map +0 -1
  62. package/dist/wreq-js.d.ts.map +0 -1
@@ -1,406 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.startLocalTestServer = startLocalTestServer;
4
- const node_crypto_1 = require("node:crypto");
5
- const node_http_1 = require("node:http");
6
- const promises_1 = require("node:timers/promises");
7
- const WS_MAGIC_STRING = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
8
- async function startLocalTestServer() {
9
- let baseUrl = "http://127.0.0.1";
10
- const sockets = new Set();
11
- const hangingRequests = new Map();
12
- const server = (0, node_http_1.createServer)(async (req, res) => {
13
- try {
14
- await routeHttpRequest(req, res, baseUrl);
15
- }
16
- catch (error) {
17
- console.error("Local test server request error:", error);
18
- if (!res.headersSent) {
19
- res.statusCode = 500;
20
- res.setHeader("Content-Type", "application/json");
21
- }
22
- res.end(JSON.stringify({ error: "internal server error" }));
23
- }
24
- });
25
- server.on("connection", (socket) => {
26
- sockets.add(socket);
27
- socket.on("close", () => sockets.delete(socket));
28
- socket.on("error", () => {
29
- // Ignore connection-level errors during tests to avoid crashing the harness.
30
- });
31
- });
32
- server.on("connect", (req, socket, head) => {
33
- // Respond with a simple JSON body to exercise CONNECT handling without tunneling.
34
- socket.on("error", () => {
35
- // Swallow errors; client may close the tunnel abruptly.
36
- });
37
- try {
38
- const payload = JSON.stringify({
39
- method: req.method ?? "CONNECT",
40
- target: req.url ?? "",
41
- headers: req.headers,
42
- headLength: head.length,
43
- });
44
- socket.write([
45
- "HTTP/1.1 200 Connection Established",
46
- "Content-Type: application/json",
47
- `Content-Length: ${Buffer.byteLength(payload)}`,
48
- "Connection: close",
49
- "",
50
- "",
51
- ].join("\r\n"));
52
- socket.write(payload);
53
- }
54
- catch (error) {
55
- console.error("Local test server CONNECT handler error:", error);
56
- socket.write("HTTP/1.1 500 Internal Server Error\r\nConnection: close\r\n\r\n");
57
- }
58
- finally {
59
- socket.end();
60
- }
61
- });
62
- server.on("upgrade", (req, socket, head) => {
63
- handleWebSocketUpgrade(req, socket, head);
64
- });
65
- await new Promise((resolve, reject) => {
66
- const onError = (error) => {
67
- server.off("listening", onListening);
68
- reject(error);
69
- };
70
- const onListening = () => {
71
- server.off("error", onError);
72
- resolve();
73
- };
74
- server.once("error", onError);
75
- server.once("listening", onListening);
76
- server.listen(0, "127.0.0.1");
77
- });
78
- const address = server.address();
79
- if (!address) {
80
- await new Promise((resolve, reject) => server.close((error) => (error ? reject(error) : resolve())));
81
- throw new Error("Unable to determine local test server address");
82
- }
83
- baseUrl = `http://127.0.0.1:${address.port}`;
84
- const wsUrl = `ws://127.0.0.1:${address.port}/ws`;
85
- const close = async () => {
86
- for (const socket of sockets) {
87
- socket.destroy();
88
- }
89
- await new Promise((resolve, reject) => {
90
- server.close((error) => (error ? reject(error) : resolve()));
91
- });
92
- };
93
- return {
94
- httpBaseUrl: baseUrl,
95
- wsUrl,
96
- close,
97
- };
98
- async function routeHttpRequest(req, res, resolvedBase) {
99
- const url = new URL(req.url ?? "/", resolvedBase);
100
- const path = url.pathname;
101
- if (path === "/get") {
102
- return json(res, createEchoPayload(req, url));
103
- }
104
- if (path === "/json") {
105
- return json(res, {
106
- message: "local test server",
107
- status: "ok",
108
- ts: Date.now(),
109
- });
110
- }
111
- if (path === "/user-agent") {
112
- return json(res, { "user-agent": req.headers["user-agent"] ?? "" });
113
- }
114
- if (path === "/headers") {
115
- return json(res, {
116
- headers: canonicalizeHeaders(req),
117
- rawHeaders: req.rawHeaders,
118
- });
119
- }
120
- if (req.method === "TRACE") {
121
- return json(res, {
122
- method: req.method,
123
- path,
124
- headers: canonicalizeHeaders(req),
125
- });
126
- }
127
- if (path === "/binary") {
128
- const lengthParam = url.searchParams.get("len");
129
- const length = Number.isFinite(Number(lengthParam)) && Number(lengthParam) > 0 ? Math.min(Number(lengthParam), 4096) : 256;
130
- const payload = Buffer.alloc(length);
131
- for (let i = 0; i < length; i += 1) {
132
- payload[i] = i % 256;
133
- }
134
- res.statusCode = 200;
135
- res.setHeader("Content-Type", "application/octet-stream");
136
- res.setHeader("Content-Length", payload.length);
137
- res.end(payload);
138
- return;
139
- }
140
- if (path === "/stream/chunks") {
141
- const chunkCount = Math.max(1, Math.min(Number(url.searchParams.get("n") ?? "3"), 16));
142
- const chunkSize = Math.max(1, Math.min(Number(url.searchParams.get("size") ?? "1024"), 65536));
143
- res.statusCode = 200;
144
- res.setHeader("Content-Type", "application/octet-stream");
145
- for (let i = 0; i < chunkCount; i += 1) {
146
- const chunk = Buffer.alloc(chunkSize, i);
147
- res.write(chunk);
148
- await (0, promises_1.setTimeout)(5);
149
- }
150
- res.end();
151
- return;
152
- }
153
- if (path === "/cookies") {
154
- return json(res, { cookies: parseCookies(req.headers.cookie) });
155
- }
156
- if (path.startsWith("/cookies/set")) {
157
- const cookiesToSet = Array.from(url.searchParams.entries()).map(([key, value]) => `${key}=${value}; Path=/`);
158
- const existingCookies = parseCookies(req.headers.cookie);
159
- const newCookies = Object.fromEntries(url.searchParams.entries());
160
- if (cookiesToSet.length > 0) {
161
- res.setHeader("Set-Cookie", cookiesToSet);
162
- }
163
- return json(res, { cookies: { ...existingCookies, ...newCookies } });
164
- }
165
- if (path === "/redirect") {
166
- res.statusCode = 302;
167
- res.setHeader("Location", `${resolvedBase}/json`);
168
- res.end();
169
- return;
170
- }
171
- const delayMatch = path.match(/^\/delay\/(\d+)/);
172
- if (delayMatch) {
173
- const seconds = Number(delayMatch[1]);
174
- await (0, promises_1.setTimeout)(seconds * 1000);
175
- return json(res, { delayed: seconds, ...createEchoPayload(req, url) });
176
- }
177
- if (path === "/hang") {
178
- const id = url.searchParams.get("id");
179
- if (!id) {
180
- res.statusCode = 400;
181
- return json(res, { error: "id query param required" });
182
- }
183
- const state = { closed: false };
184
- hangingRequests.set(id, state);
185
- const markClosed = () => {
186
- state.closed = true;
187
- };
188
- req.socket.on("close", markClosed);
189
- req.socket.on("error", markClosed);
190
- return;
191
- }
192
- if (path === "/hang/status") {
193
- const id = url.searchParams.get("id");
194
- if (!id) {
195
- res.statusCode = 400;
196
- return json(res, { error: "id query param required" });
197
- }
198
- const closed = hangingRequests.get(id)?.closed ?? false;
199
- hangingRequests.delete(id);
200
- return json(res, { closed });
201
- }
202
- res.statusCode = 404;
203
- json(res, { error: "not found", path });
204
- }
205
- function createEchoPayload(req, url) {
206
- const args = Object.fromEntries(url.searchParams.entries());
207
- return {
208
- args,
209
- headers: canonicalizeHeaders(req),
210
- method: req.method ?? "GET",
211
- origin: req.socket.remoteAddress ?? "127.0.0.1",
212
- url: url.toString(),
213
- };
214
- }
215
- function canonicalizeHeaders(req) {
216
- const headers = {};
217
- for (const [name, value] of Object.entries(req.headers)) {
218
- if (typeof value === "undefined")
219
- continue;
220
- const canonicalName = name
221
- .split("-")
222
- .map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1))
223
- .join("-");
224
- headers[canonicalName] = Array.isArray(value) ? value.join(", ") : value;
225
- }
226
- return headers;
227
- }
228
- function parseCookies(cookieHeader) {
229
- if (!cookieHeader) {
230
- return {};
231
- }
232
- return cookieHeader.split(";").reduce((acc, cookie) => {
233
- const [key, ...rest] = cookie.trim().split("=");
234
- if (!key) {
235
- return acc;
236
- }
237
- acc[key] = rest.join("=");
238
- return acc;
239
- }, {});
240
- }
241
- function json(res, body) {
242
- if (!res.hasHeader("Content-Type")) {
243
- res.setHeader("Content-Type", "application/json");
244
- }
245
- res.end(JSON.stringify(body));
246
- }
247
- function handleWebSocketUpgrade(req, socket, head) {
248
- try {
249
- const url = new URL(req.url ?? "/", baseUrl);
250
- if (url.pathname !== "/ws") {
251
- socket.write("HTTP/1.1 404 Not Found\r\nConnection: close\r\n\r\n");
252
- socket.destroy();
253
- return;
254
- }
255
- const secKey = req.headers["sec-websocket-key"];
256
- if (!secKey || Array.isArray(secKey)) {
257
- socket.write("HTTP/1.1 400 Bad Request\r\nConnection: close\r\n\r\n");
258
- socket.destroy();
259
- return;
260
- }
261
- const acceptKey = (0, node_crypto_1.createHash)("sha1")
262
- .update(secKey + WS_MAGIC_STRING)
263
- .digest("base64");
264
- const responseHeaders = [
265
- "HTTP/1.1 101 Switching Protocols",
266
- "Upgrade: websocket",
267
- "Connection: Upgrade",
268
- `Sec-WebSocket-Accept: ${acceptKey}`,
269
- ];
270
- socket.write(`${responseHeaders.join("\r\n")}\r\n\r\n`);
271
- if (head.length > 0) {
272
- socket.unshift(head);
273
- }
274
- setupEchoWebSocket(socket);
275
- }
276
- catch (error) {
277
- console.error("Local test server WebSocket upgrade error:", error);
278
- socket.destroy();
279
- }
280
- }
281
- }
282
- function setupEchoWebSocket(socket) {
283
- let buffer = Buffer.alloc(0);
284
- let closed = false;
285
- socket.on("data", (chunk) => {
286
- buffer = Buffer.concat([buffer, chunk]);
287
- parseFrames();
288
- });
289
- socket.on("close", () => {
290
- closed = true;
291
- });
292
- socket.on("error", () => {
293
- socket.destroy();
294
- });
295
- function parseFrames() {
296
- while (buffer.length >= 2) {
297
- const firstByte = buffer[0];
298
- const secondByte = buffer[1];
299
- const opcode = firstByte & 0x0f;
300
- const isMasked = Boolean(secondByte & 0x80);
301
- let offset = 2;
302
- let payloadLength = secondByte & 0x7f;
303
- if (payloadLength === 126) {
304
- if (buffer.length < offset + 2)
305
- return;
306
- payloadLength = buffer.readUInt16BE(offset);
307
- offset += 2;
308
- }
309
- else if (payloadLength === 127) {
310
- if (buffer.length < offset + 8)
311
- return;
312
- const bigLength = buffer.readBigUInt64BE(offset);
313
- payloadLength = Number(bigLength);
314
- offset += 8;
315
- }
316
- const maskEnd = offset + (isMasked ? 4 : 0);
317
- if (buffer.length < maskEnd)
318
- return;
319
- const maskingKey = isMasked ? buffer.subarray(offset, maskEnd) : undefined;
320
- offset = maskEnd;
321
- const frameEnd = offset + payloadLength;
322
- if (buffer.length < frameEnd)
323
- return;
324
- const payload = buffer.subarray(offset, frameEnd);
325
- buffer = buffer.subarray(frameEnd);
326
- const data = isMasked && maskingKey ? unmask(payload, maskingKey) : payload;
327
- handleFrame(opcode, data);
328
- }
329
- }
330
- function handleFrame(opcode, data) {
331
- if (closed) {
332
- return;
333
- }
334
- switch (opcode) {
335
- case 0x1: {
336
- // Text frame: echo payload back
337
- sendFrame(0x1, data);
338
- break;
339
- }
340
- case 0x2: {
341
- // Binary frame: echo back
342
- sendFrame(0x2, data);
343
- break;
344
- }
345
- case 0x8: {
346
- // Close frame
347
- sendFrame(0x8, data);
348
- closed = true;
349
- socket.end();
350
- break;
351
- }
352
- case 0x9: {
353
- // Ping
354
- sendFrame(0xa, data);
355
- break;
356
- }
357
- case 0xa: {
358
- // Pong - ignore
359
- break;
360
- }
361
- default: {
362
- // Unsupported opcode: close connection
363
- sendFrame(0x8, Buffer.alloc(0));
364
- closed = true;
365
- socket.end();
366
- }
367
- }
368
- }
369
- function sendFrame(opcode, data) {
370
- const payloadLength = data.length;
371
- let headerLength = 2;
372
- if (payloadLength >= 126 && payloadLength < 65536) {
373
- headerLength += 2;
374
- }
375
- else if (payloadLength >= 65536) {
376
- headerLength += 8;
377
- }
378
- const frame = Buffer.alloc(headerLength + payloadLength);
379
- frame[0] = 0x80 | (opcode & 0x0f);
380
- let offset = 2;
381
- if (payloadLength < 126) {
382
- frame[1] = payloadLength;
383
- }
384
- else if (payloadLength < 65536) {
385
- frame[1] = 126;
386
- frame.writeUInt16BE(payloadLength, offset);
387
- offset += 2;
388
- }
389
- else {
390
- frame[1] = 127;
391
- frame.writeBigUInt64BE(BigInt(payloadLength), offset);
392
- offset += 8;
393
- }
394
- data.copy(frame, offset);
395
- socket.write(frame);
396
- }
397
- function unmask(payload, maskingKey) {
398
- const result = Buffer.alloc(payload.length);
399
- for (let i = 0; i < payload.length; i++) {
400
- const maskByte = maskingKey[i % 4];
401
- result[i] = payload[i] ^ maskByte;
402
- }
403
- return result;
404
- }
405
- }
406
- //# sourceMappingURL=local-test-server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-test-server.js","sourceRoot":"","sources":["../../../src/test/helpers/local-test-server.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=errors.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.spec.d.ts","sourceRoot":"","sources":["../../../src/test/http/errors.spec.ts"],"names":[],"mappings":""}
@@ -1,33 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_assert_1 = __importDefault(require("node:assert"));
7
- const node_test_1 = require("node:test");
8
- const wreq_js_1 = require("../../wreq-js");
9
- const http_1 = require("../helpers/http");
10
- (0, node_test_1.describe)("HTTP errors", () => {
11
- (0, node_test_1.test)("handles timeout errors", async () => {
12
- await node_assert_1.default.rejects(async () => {
13
- await (0, wreq_js_1.fetch)((0, http_1.httpUrl)("/delay/10"), {
14
- browser: "chrome_142",
15
- timeout: 1000,
16
- });
17
- }, {
18
- name: "RequestError",
19
- }, "Should throw an error on timeout");
20
- });
21
- (0, node_test_1.test)("rejects aborted requests with AbortError", async () => {
22
- const controller = new AbortController();
23
- controller.abort();
24
- await node_assert_1.default.rejects(async () => {
25
- await (0, wreq_js_1.fetch)((0, http_1.httpUrl)("/get"), {
26
- browser: "chrome_142",
27
- signal: controller.signal,
28
- timeout: 1000,
29
- });
30
- }, (error) => error instanceof Error && error.name === "AbortError", "Should reject with AbortError");
31
- });
32
- });
33
- //# sourceMappingURL=errors.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.spec.js","sourceRoot":"","sources":["../../../src/test/http/errors.spec.ts"],"names":[],"mappings":";;;;;AAAA,8DAAiC;AACjC,yCAA2C;AAC3C,2CAAmD;AACnD,0CAA0C;AAE1C,IAAA,oBAAQ,EAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAA,gBAAI,EAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,qBAAM,CAAC,OAAO,CAClB,KAAK,IAAI,EAAE;YACT,MAAM,IAAA,eAAS,EAAC,IAAA,cAAO,EAAC,WAAW,CAAC,EAAE;gBACpC,OAAO,EAAE,YAAY;gBACrB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC,EACD;YACE,IAAI,EAAE,cAAc;SACrB,EACD,kCAAkC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,gBAAI,EAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,UAAU,CAAC,KAAK,EAAE,CAAC;QAEnB,MAAM,qBAAM,CAAC,OAAO,CAClB,KAAK,IAAI,EAAE;YACT,MAAM,IAAA,eAAS,EAAC,IAAA,cAAO,EAAC,MAAM,CAAC,EAAE;gBAC/B,OAAO,EAAE,YAAY;gBACrB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC,EACD,CAAC,KAAc,EAAE,EAAE,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EACzE,+BAA+B,CAChC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=headers.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"headers.spec.d.ts","sourceRoot":"","sources":["../../../src/test/http/headers.spec.ts"],"names":[],"mappings":""}
@@ -1,98 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_assert_1 = __importDefault(require("node:assert"));
7
- const node_test_1 = require("node:test");
8
- const wreq_js_1 = require("../../wreq-js");
9
- const http_1 = require("../helpers/http");
10
- (0, node_test_1.describe)("HTTP headers", () => {
11
- (0, node_test_1.test)("disables default headers when requested", async () => {
12
- const customAccept = "*/*";
13
- const response = await (0, wreq_js_1.fetch)((0, http_1.httpUrl)("/headers"), {
14
- browser: "chrome_142",
15
- headers: {
16
- Accept: customAccept,
17
- },
18
- disableDefaultHeaders: true,
19
- timeout: 10000,
20
- });
21
- node_assert_1.default.strictEqual(response.status, 200, "Should return status 200");
22
- const body = await response.json();
23
- node_assert_1.default.strictEqual(body.headers.Accept, customAccept, "Should use only custom Accept header without emulation headers appended");
24
- });
25
- (0, node_test_1.test)("appends emulation headers by default", async () => {
26
- const customAccept = "*/*";
27
- const response = await (0, wreq_js_1.fetch)((0, http_1.httpUrl)("/headers"), {
28
- browser: "chrome_142",
29
- headers: {
30
- Accept: customAccept,
31
- },
32
- timeout: 10000,
33
- });
34
- node_assert_1.default.strictEqual(response.status, 200, "Should return status 200");
35
- const body = await response.json();
36
- const accept = body.headers.Accept;
37
- node_assert_1.default.ok(accept, "Should have Accept header");
38
- node_assert_1.default.ok(accept.includes(customAccept), "Should include custom Accept header");
39
- });
40
- (0, node_test_1.test)("maintains header ordering for Headers instances", async () => {
41
- const orderedHeaders = new wreq_js_1.Headers();
42
- orderedHeaders.append("X-First", "one");
43
- orderedHeaders.append("X-Second", "two");
44
- orderedHeaders.append("X-Third", "three");
45
- const response = await (0, wreq_js_1.fetch)((0, http_1.httpUrl)("/headers"), {
46
- browser: "chrome_142",
47
- headers: orderedHeaders,
48
- disableDefaultHeaders: true,
49
- timeout: 10000,
50
- });
51
- node_assert_1.default.strictEqual(response.status, 200, "Should return status 200");
52
- const body = await response.json();
53
- node_assert_1.default.ok(body.rawHeaders, "Should include rawHeaders in the response");
54
- const firstIndex = (0, http_1.headerIndex)(body.rawHeaders, "X-First");
55
- const secondIndex = (0, http_1.headerIndex)(body.rawHeaders, "X-Second");
56
- const thirdIndex = (0, http_1.headerIndex)(body.rawHeaders, "X-Third");
57
- node_assert_1.default.ok(firstIndex !== -1, "X-First header should be present");
58
- node_assert_1.default.ok(secondIndex !== -1, "X-Second header should be present");
59
- node_assert_1.default.ok(thirdIndex !== -1, "X-Third header should be present");
60
- node_assert_1.default.ok(firstIndex < secondIndex, "X-First should appear before X-Second");
61
- node_assert_1.default.ok(secondIndex < thirdIndex, "X-Second should appear before X-Third");
62
- });
63
- (0, node_test_1.test)("maintains header ordering for plain objects", async () => {
64
- const response = await (0, wreq_js_1.fetch)((0, http_1.httpUrl)("/headers"), {
65
- browser: "chrome_142",
66
- headers: {
67
- "X-Start": "alpha",
68
- "X-Middle": "beta",
69
- "X-End": "gamma",
70
- },
71
- disableDefaultHeaders: true,
72
- timeout: 10000,
73
- });
74
- node_assert_1.default.strictEqual(response.status, 200, "Should return status 200");
75
- const body = await response.json();
76
- node_assert_1.default.ok(body.rawHeaders, "Should include rawHeaders in the response");
77
- const startIndex = (0, http_1.headerIndex)(body.rawHeaders, "X-Start");
78
- const middleIndex = (0, http_1.headerIndex)(body.rawHeaders, "X-Middle");
79
- const endIndex = (0, http_1.headerIndex)(body.rawHeaders, "X-End");
80
- node_assert_1.default.ok(startIndex !== -1, "X-Start header should be present");
81
- node_assert_1.default.ok(middleIndex !== -1, "X-Middle header should be present");
82
- node_assert_1.default.ok(endIndex !== -1, "X-End header should be present");
83
- node_assert_1.default.ok(startIndex < middleIndex, "X-Start should precede X-Middle");
84
- node_assert_1.default.ok(middleIndex < endIndex, "X-Middle should precede X-End");
85
- });
86
- (0, node_test_1.test)("supports the Headers helper API", () => {
87
- const headers = new wreq_js_1.Headers({
88
- "X-Test": "alpha",
89
- });
90
- headers.append("x-test", "beta");
91
- headers.set("X-Another", "value");
92
- const collected = Array.from(headers.entries());
93
- node_assert_1.default.strictEqual(headers.get("X-Test"), "alpha, beta", "append should concatenate values");
94
- node_assert_1.default.strictEqual(headers.get("x-another"), "value", "set should overwrite values");
95
- node_assert_1.default.ok(collected.length >= 2, "entries should iterate all headers");
96
- });
97
- });
98
- //# sourceMappingURL=headers.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"headers.spec.js","sourceRoot":"","sources":["../../../src/test/http/headers.spec.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=insecure.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"insecure.spec.d.ts","sourceRoot":"","sources":["../../../src/test/http/insecure.spec.ts"],"names":[],"mappings":""}