wreq-js 0.1.0 → 0.2.0

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.
@@ -3,61 +3,61 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_test_1 = require("node:test");
7
6
  const node_assert_1 = __importDefault(require("node:assert"));
7
+ const node_test_1 = require("node:test");
8
8
  const wreq_js_1 = require("../wreq-js");
9
- (0, node_test_1.describe)('HTTP', () => {
9
+ (0, node_test_1.describe)("HTTP", () => {
10
10
  (0, node_test_1.before)(() => {
11
- console.log('🔌 HTTP Test Suite\n');
11
+ console.log("🔌 HTTP Test Suite\n");
12
12
  });
13
- (0, node_test_1.test)('should return available browser profiles', () => {
13
+ (0, node_test_1.test)("should return available browser profiles", () => {
14
14
  const profiles = (0, wreq_js_1.getProfiles)();
15
- node_assert_1.default.ok(Array.isArray(profiles), 'Profiles should be an array');
16
- node_assert_1.default.ok(profiles.length > 0, 'Should have at least one profile');
17
- node_assert_1.default.ok(profiles.some((p) => p.includes('chrome')) ||
18
- profiles.some((p) => p.includes('firefox')) ||
19
- profiles.some((p) => p.includes('safari')), 'Should include standard browser profiles');
20
- console.log('Available profiles:', profiles.join(', '));
15
+ node_assert_1.default.ok(Array.isArray(profiles), "Profiles should be an array");
16
+ node_assert_1.default.ok(profiles.length > 0, "Should have at least one profile");
17
+ node_assert_1.default.ok(profiles.some((p) => p.includes("chrome")) ||
18
+ profiles.some((p) => p.includes("firefox")) ||
19
+ profiles.some((p) => p.includes("safari")), "Should include standard browser profiles");
20
+ console.log("Available profiles:", profiles.join(", "));
21
21
  });
22
- (0, node_test_1.test)('should make a simple GET request', async () => {
22
+ (0, node_test_1.test)("should make a simple GET request", async () => {
23
23
  const response = await (0, wreq_js_1.request)({
24
- url: 'https://httpbingo.org/get',
25
- browser: 'chrome_131',
24
+ url: "https://httpbingo.org/get",
25
+ browser: "chrome_131",
26
26
  timeout: 10000,
27
27
  });
28
- node_assert_1.default.ok(response.status >= 200 && response.status < 300, 'Should return successful status');
29
- node_assert_1.default.ok(Object.keys(response.headers).length > 0, 'Should have response headers');
30
- node_assert_1.default.ok(response.body.length > 0, 'Should have response body');
28
+ node_assert_1.default.ok(response.status >= 200 && response.status < 300, "Should return successful status");
29
+ node_assert_1.default.ok(Object.keys(response.headers).length > 0, "Should have response headers");
30
+ node_assert_1.default.ok(response.body.length > 0, "Should have response body");
31
31
  const body = JSON.parse(response.body);
32
- node_assert_1.default.ok(body.headers['User-Agent'], 'Should have User-Agent header');
33
- console.log('Status:', response.status);
34
- console.log('User-Agent:', body.headers['User-Agent']);
32
+ node_assert_1.default.ok(body.headers["User-Agent"], "Should have User-Agent header");
33
+ console.log("Status:", response.status);
34
+ console.log("User-Agent:", body.headers["User-Agent"]);
35
35
  });
36
- (0, node_test_1.test)('should work with different browser profiles', async () => {
37
- const testUrl = 'https://httpbingo.org/user-agent';
38
- const browsers = ['chrome_137', 'firefox_139', 'safari_18'];
36
+ (0, node_test_1.test)("should work with different browser profiles", async () => {
37
+ const testUrl = "https://httpbingo.org/user-agent";
38
+ const browsers = ["chrome_137", "firefox_139", "safari_18"];
39
39
  for (const browser of browsers) {
40
40
  const response = await (0, wreq_js_1.request)({
41
41
  url: testUrl,
42
- browser: browser,
42
+ browser,
43
43
  timeout: 10000,
44
44
  });
45
45
  node_assert_1.default.ok(response.status === 200, `${browser} should return status 200`);
46
46
  const data = JSON.parse(response.body);
47
- node_assert_1.default.ok(data['user-agent'], `${browser} should have user-agent`);
48
- console.log(`${browser}:`, data['user-agent'].substring(0, 70) + '...');
47
+ node_assert_1.default.ok(data["user-agent"], `${browser} should have user-agent`);
48
+ console.log(`${browser}:`, `${data["user-agent"].substring(0, 70)}...`);
49
49
  }
50
50
  });
51
- (0, node_test_1.test)('should handle timeout errors', async () => {
51
+ (0, node_test_1.test)("should handle timeout errors", async () => {
52
52
  await node_assert_1.default.rejects(async () => {
53
53
  await (0, wreq_js_1.request)({
54
- url: 'https://httpbingo.org/delay/10',
55
- browser: 'chrome_137',
54
+ url: "https://httpbingo.org/delay/10",
55
+ browser: "chrome_137",
56
56
  timeout: 1000, // 1 second timeout for 10 second delay
57
57
  });
58
58
  }, {
59
- name: 'RequestError',
60
- }, 'Should throw an error on timeout');
59
+ name: "RequestError",
60
+ }, "Should throw an error on timeout");
61
61
  });
62
62
  });
63
63
  //# sourceMappingURL=http.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.spec.js","sourceRoot":"","sources":["../../src/test/http.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.spec.js","sourceRoot":"","sources":["../../src/test/http.spec.ts"],"names":[],"mappings":"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"}
@@ -3,20 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const node_test_1 = require("node:test");
7
6
  const node_assert_1 = __importDefault(require("node:assert"));
7
+ const node_test_1 = require("node:test");
8
8
  const promises_1 = require("node:timers/promises");
9
9
  const wreq_js_1 = require("../wreq-js");
10
- (0, node_test_1.describe)('WebSocket', () => {
10
+ (0, node_test_1.describe)("WebSocket", () => {
11
11
  (0, node_test_1.before)(() => {
12
- console.log('🔌 WebSocket Test Suite\n');
12
+ console.log("🔌 WebSocket Test Suite\n");
13
13
  });
14
- (0, node_test_1.test)('should connect to WebSocket and send/receive messages', async () => {
14
+ (0, node_test_1.test)("should connect to WebSocket and send/receive messages", async () => {
15
15
  const messages = [];
16
16
  let isClosed = false;
17
17
  const ws = await (0, wreq_js_1.websocket)({
18
- url: 'wss://echo.websocket.org',
19
- browser: 'chrome_137',
18
+ url: "wss://echo.websocket.org",
19
+ browser: "chrome_137",
20
20
  onMessage: (data) => {
21
21
  messages.push(data);
22
22
  },
@@ -24,97 +24,97 @@ const wreq_js_1 = require("../wreq-js");
24
24
  isClosed = true;
25
25
  },
26
26
  onError: (error) => {
27
- console.error('WebSocket error:', error);
27
+ console.error("WebSocket error:", error);
28
28
  },
29
29
  });
30
- console.log('WebSocket connected');
31
- await ws.send('Hello!');
30
+ console.log("WebSocket connected");
31
+ await ws.send("Hello!");
32
32
  // Wait for echo response
33
33
  await (0, promises_1.setTimeout)(1000);
34
- node_assert_1.default.ok(messages.length > 0, 'Should receive at least one message');
34
+ node_assert_1.default.ok(messages.length > 0, "Should receive at least one message");
35
35
  // Wait a bit for close callback
36
36
  await ws.close();
37
- await (0, promises_1.setTimeout)(5000);
38
- node_assert_1.default.ok(isClosed, 'Should receive close event');
37
+ await (0, promises_1.setTimeout)(10000);
38
+ node_assert_1.default.ok(isClosed, "Should receive close event");
39
39
  // Rate limit protection: wait before next test
40
40
  await (0, promises_1.setTimeout)(2000);
41
41
  });
42
- (0, node_test_1.test)('should handle parallel sends on same WebSocket', async () => {
42
+ (0, node_test_1.test)("should handle parallel sends on same WebSocket", async () => {
43
43
  const messages = [];
44
- const expectedMessages = ['Message 1', 'Message 2', 'Message 3', 'Message 4', 'Message 5'];
44
+ const expectedMessages = ["Message 1", "Message 2", "Message 3", "Message 4", "Message 5"];
45
45
  const ws = await (0, wreq_js_1.websocket)({
46
- url: 'wss://echo.websocket.org',
47
- browser: 'chrome_137',
46
+ url: "wss://echo.websocket.org",
47
+ browser: "chrome_137",
48
48
  onMessage: (data) => {
49
49
  messages.push(data);
50
50
  },
51
51
  onClose: () => { },
52
52
  onError: (error) => {
53
- console.error('WebSocket error:', error);
53
+ console.error("WebSocket error:", error);
54
54
  },
55
55
  });
56
- console.log('Testing parallel sends...');
56
+ console.log("Testing parallel sends...");
57
57
  // Send multiple messages in parallel
58
58
  await Promise.all([
59
- ws.send('Message 1'),
60
- ws.send('Message 2'),
61
- ws.send('Message 3'),
62
- ws.send('Message 4'),
63
- ws.send('Message 5'),
59
+ ws.send("Message 1"),
60
+ ws.send("Message 2"),
61
+ ws.send("Message 3"),
62
+ ws.send("Message 4"),
63
+ ws.send("Message 5"),
64
64
  ]);
65
- console.log('All messages sent in parallel');
65
+ console.log("All messages sent in parallel");
66
66
  // Wait for echo responses
67
67
  await (0, promises_1.setTimeout)(2000);
68
- node_assert_1.default.ok(messages.length >= 5, 'Should receive at least 5 messages');
68
+ node_assert_1.default.ok(messages.length >= 5, "Should receive at least 5 messages");
69
69
  // Verify that all expected messages were received (order may vary)
70
70
  const receivedStrings = messages.map((m) => (Buffer.isBuffer(m) ? m.toString() : m));
71
71
  for (const expected of expectedMessages) {
72
- node_assert_1.default.ok(receivedStrings.includes(expected), `Should receive message: "${expected}". Got: ${receivedStrings.join(', ')}`);
72
+ node_assert_1.default.ok(receivedStrings.includes(expected), `Should receive message: "${expected}". Got: ${receivedStrings.join(", ")}`);
73
73
  }
74
- console.log('All messages received correctly:', receivedStrings.join(', '));
74
+ console.log("All messages received correctly:", receivedStrings.join(", "));
75
75
  await ws.close();
76
76
  // Rate limit protection: wait before next test
77
77
  await (0, promises_1.setTimeout)(2000);
78
78
  });
79
- (0, node_test_1.test)('should handle multiple WebSocket connections simultaneously', async () => {
79
+ (0, node_test_1.test)("should handle multiple WebSocket connections simultaneously", async () => {
80
80
  const ws1Messages = [];
81
81
  const ws2Messages = [];
82
82
  // Create two WebSocket connections in parallel
83
83
  const [ws1, ws2] = await Promise.all([
84
84
  (0, wreq_js_1.websocket)({
85
- url: 'wss://echo.websocket.org',
86
- browser: 'chrome_137',
85
+ url: "wss://echo.websocket.org",
86
+ browser: "chrome_137",
87
87
  onMessage: (data) => ws1Messages.push(data),
88
88
  onClose: () => { },
89
89
  onError: () => { },
90
90
  }),
91
91
  (0, wreq_js_1.websocket)({
92
- url: 'wss://echo.websocket.org',
93
- browser: 'firefox_139',
92
+ url: "wss://echo.websocket.org",
93
+ browser: "firefox_139",
94
94
  onMessage: (data) => ws2Messages.push(data),
95
95
  onClose: () => { },
96
96
  onError: () => { },
97
97
  }),
98
98
  ]);
99
- console.log('WebSocket connections created');
99
+ console.log("WebSocket connections created");
100
100
  // Send unique messages on both connections in parallel
101
- await Promise.all([ws1.send('From WS1'), ws2.send('From WS2')]);
102
- // Wait for responses
103
- await (0, promises_1.setTimeout)(1500);
104
- node_assert_1.default.ok(ws1Messages.length > 0, 'WS1 should receive messages');
105
- node_assert_1.default.ok(ws2Messages.length > 0, 'WS2 should receive messages');
101
+ await Promise.all([ws1.send("From WS1"), ws2.send("From WS2")]);
102
+ // Wait for responses (long timeout for CI)
103
+ await (0, promises_1.setTimeout)(5000);
104
+ node_assert_1.default.ok(ws1Messages.length > 0, "WS1 should receive messages");
105
+ node_assert_1.default.ok(ws2Messages.length > 0, "WS2 should receive messages");
106
106
  // Verify that each connection received the correct message (not mixed up)
107
107
  // Note: echo.websocket.org sends a "Request served by..." message first, then echoes
108
108
  const ws1Strings = ws1Messages.map((m) => (Buffer.isBuffer(m) ? m.toString() : m));
109
109
  const ws2Strings = ws2Messages.map((m) => (Buffer.isBuffer(m) ? m.toString() : m));
110
- node_assert_1.default.ok(ws1Strings.includes('From WS1'), 'WS1 should receive its own message');
111
- node_assert_1.default.ok(ws2Strings.includes('From WS2'), 'WS2 should receive its own message');
110
+ node_assert_1.default.ok(ws1Strings.includes("From WS1"), "WS1 should receive its own message");
111
+ node_assert_1.default.ok(ws2Strings.includes("From WS2"), "WS2 should receive its own message");
112
112
  // Verify messages are not mixed up between connections
113
- node_assert_1.default.ok(!ws1Strings.includes('From WS2'), 'WS1 should NOT receive WS2 message');
114
- node_assert_1.default.ok(!ws2Strings.includes('From WS1'), 'WS2 should NOT receive WS1 message');
115
- console.log('Messages correctly isolated between connections:');
116
- console.log(' WS1:', ws1Strings);
117
- console.log(' WS2:', ws2Strings);
113
+ node_assert_1.default.ok(!ws1Strings.includes("From WS2"), "WS1 should NOT receive WS2 message");
114
+ node_assert_1.default.ok(!ws2Strings.includes("From WS1"), "WS2 should NOT receive WS1 message");
115
+ console.log("Messages correctly isolated between connections:");
116
+ console.log(" WS1:", ws1Strings);
117
+ console.log(" WS2:", ws2Strings);
118
118
  // Close both connections
119
119
  await Promise.all([ws1.close(), ws2.close()]);
120
120
  });
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.spec.js","sourceRoot":"","sources":["../../src/test/websocket.spec.ts"],"names":[],"mappings":";;;;;AAAA,yCAAmD;AACnD,8DAAiC;AACjC,mDAA2D;AAC3D,wCAAuC;AAEvC,IAAA,oBAAQ,EAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAA,kBAAM,EAAC,GAAG,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,gBAAI,EAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,QAAQ,GAAwB,EAAE,CAAC;QACzC,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,MAAM,EAAE,GAAG,MAAM,IAAA,mBAAS,EAAC;YACzB,GAAG,EAAE,0BAA0B;YAC/B,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;gBAClB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;YACD,OAAO,EAAE,GAAG,EAAE;gBACZ,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;YACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;YAC3C,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAEnC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAExB,yBAAyB;QACzB,MAAM,IAAA,qBAAK,EAAC,IAAI,CAAC,CAAC;QAClB,qBAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,qCAAqC,CAAC,CAAC;QAEtE,gCAAgC;QAChC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAA,qBAAK,EAAC,IAAI,CAAC,CAAC;QAClB,qBAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAC;QAElD,+CAA+C;QAC/C,MAAM,IAAA,qBAAK,EAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,IAAA,gBAAI,EAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,QAAQ,GAAwB,EAAE,CAAC;QACzC,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAE3F,MAAM,EAAE,GAAG,MAAM,IAAA,mBAAS,EAAC;YACzB,GAAG,EAAE,0BAA0B;YAC/B,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;gBAClB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;YACjB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;YAC3C,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAEzC,qCAAqC;QACrC,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;YACpB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;YACpB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;YACpB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;YACpB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;SACrB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAE7C,0BAA0B;QAC1B,MAAM,IAAA,qBAAK,EAAC,IAAI,CAAC,CAAC;QAElB,qBAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,oCAAoC,CAAC,CAAC;QAEtE,mEAAmE;QACnE,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAErF,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YACxC,qBAAM,CAAC,EAAE,CACP,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAClC,4BAA4B,QAAQ,WAAW,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5E,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5E,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QAEjB,+CAA+C;QAC/C,MAAM,IAAA,qBAAK,EAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,IAAA,gBAAI,EAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,WAAW,GAAwB,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAwB,EAAE,CAAC;QAE5C,+CAA+C;QAC/C,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnC,IAAA,mBAAS,EAAC;gBACR,GAAG,EAAE,0BAA0B;gBAC/B,OAAO,EAAE,YAAY;gBACrB,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3C,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;gBACjB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;aAClB,CAAC;YACF,IAAA,mBAAS,EAAC;gBACR,GAAG,EAAE,0BAA0B;gBAC/B,OAAO,EAAE,aAAa;gBACtB,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3C,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;gBACjB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;aAClB,CAAC;SACH,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAE7C,uDAAuD;QACvD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAEhE,qBAAqB;QACrB,MAAM,IAAA,qBAAK,EAAC,IAAI,CAAC,CAAC;QAElB,qBAAM,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAC;QACjE,qBAAM,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAEjE,0EAA0E;QAC1E,qFAAqF;QACrF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnF,qBAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,oCAAoC,CAAC,CAAC;QACjF,qBAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,oCAAoC,CAAC,CAAC;QAEjF,uDAAuD;QACvD,qBAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,oCAAoC,CAAC,CAAC;QAClF,qBAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,oCAAoC,CAAC,CAAC;QAElF,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAElC,yBAAyB;QACzB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"websocket.spec.js","sourceRoot":"","sources":["../../src/test/websocket.spec.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import type { BrowserProfile } from './generated-types';
1
+ import type { BrowserProfile } from "./generated-types";
2
2
  export type { BrowserProfile };
3
3
  /**
4
4
  * HTTP method types
5
5
  */
6
- export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD';
6
+ export type HttpMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD";
7
7
  /**
8
8
  * Request options for making HTTP requests with browser impersonation
9
9
  */
package/dist/types.js CHANGED
@@ -4,7 +4,7 @@ exports.RequestError = void 0;
4
4
  class RequestError extends Error {
5
5
  constructor(message) {
6
6
  super(message);
7
- this.name = 'RequestError';
7
+ this.name = "RequestError";
8
8
  }
9
9
  }
10
10
  exports.RequestError = RequestError;
package/dist/wreq-js.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { RequestOptions, Response, BrowserProfile, WebSocketOptions, NativeWebSocketConnection } from './types';
2
- import { RequestError } from './types';
1
+ import type { BrowserProfile, NativeWebSocketConnection, RequestOptions, Response, WebSocketOptions } from "./types";
2
+ import { RequestError } from "./types";
3
3
  /**
4
4
  * Make an HTTP request with browser impersonation
5
5
  *
@@ -51,7 +51,7 @@ export declare function getProfiles(): BrowserProfile[];
51
51
  * const response = await get('https://example.com/api');
52
52
  * ```
53
53
  */
54
- export declare function get(url: string, options?: Omit<RequestOptions, 'url' | 'method'>): Promise<Response>;
54
+ export declare function get(url: string, options?: Omit<RequestOptions, "url" | "method">): Promise<Response>;
55
55
  /**
56
56
  * Convenience function for POST requests
57
57
  *
@@ -71,7 +71,7 @@ export declare function get(url: string, options?: Omit<RequestOptions, 'url' |
71
71
  * );
72
72
  * ```
73
73
  */
74
- export declare function post(url: string, body?: string, options?: Omit<RequestOptions, 'url' | 'method' | 'body'>): Promise<Response>;
74
+ export declare function post(url: string, body?: string, options?: Omit<RequestOptions, "url" | "method" | "body">): Promise<Response>;
75
75
  /**
76
76
  * WebSocket connection class
77
77
  *
@@ -105,6 +105,8 @@ export declare function post(url: string, body?: string, options?: Omit<RequestO
105
105
  */
106
106
  export declare class WebSocket {
107
107
  private _connection;
108
+ private _finalizerToken;
109
+ private _closed;
108
110
  constructor(connection: NativeWebSocketConnection);
109
111
  /**
110
112
  * Send a message (text or binary)
@@ -122,7 +124,7 @@ export declare class WebSocket {
122
124
  * @returns Promise that resolves to the WebSocket instance
123
125
  */
124
126
  export declare function websocket(options: WebSocketOptions): Promise<WebSocket>;
125
- export type { RequestOptions, Response, BrowserProfile, HttpMethod, WebSocketOptions, } from './types';
127
+ export type { BrowserProfile, HttpMethod, RequestOptions, Response, WebSocketOptions, } from "./types";
126
128
  export type { RequestError };
127
129
  declare const _default: {
128
130
  request: typeof request;
@@ -1 +1 @@
1
- {"version":3,"file":"wreq-js.d.ts","sourceRoot":"","sources":["../src/wreq-js.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA0EvC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAoBxE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,IAAI,cAAc,EAAE,CAE9C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,GAAG,CACvB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,QAAQ,CAAC,GAC/C,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,IAAI,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC,GACxD,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAA4B;gBAEnC,UAAU,EAAE,yBAAyB;IAIjD;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAkC7E;AAED,YAAY,EACV,cAAc,EACd,QAAQ,EACR,cAAc,EACd,UAAU,EACV,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,YAAY,EAAE,CAAC;;;;;;;;;AAE7B,wBAOE"}
1
+ {"version":3,"file":"wreq-js.d.ts","sourceRoot":"","sources":["../src/wreq-js.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,yBAAyB,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACrH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA+EvC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkBxE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,IAAI,cAAc,EAAE,CAM9C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAE1G;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,IAAI,CACxB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC,GACxD,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,OAAO,CAAS;gBAEZ,UAAU,EAAE,yBAAyB;IASjD;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB7B;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAgC7E;AAED,YAAY,EACV,cAAc,EACd,UAAU,EACV,cAAc,EACd,QAAQ,EACR,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,YAAY,EAAE,CAAC;;;;;;;;;AAE7B,wBAOE"}
package/dist/wreq-js.js CHANGED
@@ -8,6 +8,7 @@ exports.post = post;
8
8
  exports.websocket = websocket;
9
9
  const types_1 = require("./types");
10
10
  let nativeBinding;
11
+ let cachedProfiles;
11
12
  function loadNativeBinding() {
12
13
  const platform = process.platform;
13
14
  const arch = process.arch;
@@ -15,15 +16,15 @@ function loadNativeBinding() {
15
16
  // napi-rs creates files like: wreq-js.linux-x64-gnu.node
16
17
  const platformArchMap = {
17
18
  darwin: {
18
- x64: 'darwin-x64',
19
- arm64: 'darwin-arm64',
19
+ x64: "darwin-x64",
20
+ arm64: "darwin-arm64",
20
21
  },
21
22
  linux: {
22
- x64: 'linux-x64-gnu',
23
- arm64: 'linux-arm64-gnu',
23
+ x64: "linux-x64-gnu",
24
+ arm64: "linux-arm64-gnu",
24
25
  },
25
26
  win32: {
26
- x64: 'win32-x64-msvc',
27
+ x64: "win32-x64-msvc",
27
28
  },
28
29
  };
29
30
  const platformArch = platformArchMap[platform]?.[arch];
@@ -36,24 +37,24 @@ function loadNativeBinding() {
36
37
  try {
37
38
  return require(`../rust/${binaryName}`);
38
39
  }
39
- catch (e1) {
40
+ catch {
40
41
  // Fallback to wreq-js.node (for local development)
41
42
  try {
42
- return require('../rust/wreq-js.node');
43
+ return require("../rust/wreq-js.node");
43
44
  }
44
- catch (e2) {
45
+ catch {
45
46
  throw new Error(`Failed to load native module for ${platform}-${arch}. ` +
46
47
  `Tried: ../rust/${binaryName} and ../rust/wreq-js.node. ` +
47
48
  `Make sure the package is installed correctly and the native module is built for your platform.`);
48
49
  }
49
50
  }
50
51
  }
51
- try {
52
- nativeBinding = loadNativeBinding();
53
- }
54
- catch (error) {
55
- throw error;
56
- }
52
+ nativeBinding = loadNativeBinding();
53
+ const websocketFinalizer = typeof FinalizationRegistry === "function"
54
+ ? new FinalizationRegistry((connection) => {
55
+ void nativeBinding.websocketClose(connection).catch(() => undefined);
56
+ })
57
+ : undefined;
57
58
  /**
58
59
  * Make an HTTP request with browser impersonation
59
60
  *
@@ -78,12 +79,12 @@ catch (error) {
78
79
  */
79
80
  async function request(options) {
80
81
  if (!options.url) {
81
- throw new types_1.RequestError('URL is required');
82
+ throw new types_1.RequestError("URL is required");
82
83
  }
83
84
  if (options.browser) {
84
85
  const profiles = getProfiles();
85
86
  if (!profiles.includes(options.browser)) {
86
- throw new types_1.RequestError(`Invalid browser profile: ${options.browser}. Available profiles: ${profiles.join(', ')}`);
87
+ throw new types_1.RequestError(`Invalid browser profile: ${options.browser}. Available profiles: ${profiles.join(", ")}`);
87
88
  }
88
89
  }
89
90
  try {
@@ -107,7 +108,10 @@ async function request(options) {
107
108
  * ```
108
109
  */
109
110
  function getProfiles() {
110
- return nativeBinding.getProfiles();
111
+ if (!cachedProfiles) {
112
+ cachedProfiles = nativeBinding.getProfiles();
113
+ }
114
+ return cachedProfiles;
111
115
  }
112
116
  /**
113
117
  * Convenience function for GET requests
@@ -124,7 +128,7 @@ function getProfiles() {
124
128
  * ```
125
129
  */
126
130
  async function get(url, options) {
127
- return request({ ...options, url, method: 'GET' });
131
+ return request({ ...options, url, method: "GET" });
128
132
  }
129
133
  /**
130
134
  * Convenience function for POST requests
@@ -146,7 +150,7 @@ async function get(url, options) {
146
150
  * ```
147
151
  */
148
152
  async function post(url, body, options) {
149
- return request({ ...options, url, method: 'POST', body });
153
+ return request({ ...options, url, method: "POST", ...(body !== undefined && { body }) });
150
154
  }
151
155
  /**
152
156
  * WebSocket connection class
@@ -181,7 +185,12 @@ async function post(url, body, options) {
181
185
  */
182
186
  class WebSocket {
183
187
  constructor(connection) {
188
+ this._closed = false;
184
189
  this._connection = connection;
190
+ if (websocketFinalizer) {
191
+ this._finalizerToken = connection;
192
+ websocketFinalizer.register(this, connection, connection);
193
+ }
185
194
  }
186
195
  /**
187
196
  * Send a message (text or binary)
@@ -198,6 +207,14 @@ class WebSocket {
198
207
  * Close the WebSocket connection
199
208
  */
200
209
  async close() {
210
+ if (this._closed) {
211
+ return;
212
+ }
213
+ this._closed = true;
214
+ if (this._finalizerToken && websocketFinalizer) {
215
+ websocketFinalizer.unregister(this._finalizerToken);
216
+ this._finalizerToken = undefined;
217
+ }
201
218
  try {
202
219
  await nativeBinding.websocketClose(this._connection);
203
220
  }
@@ -215,26 +232,26 @@ exports.WebSocket = WebSocket;
215
232
  */
216
233
  async function websocket(options) {
217
234
  if (!options.url) {
218
- throw new types_1.RequestError('URL is required');
235
+ throw new types_1.RequestError("URL is required");
219
236
  }
220
237
  if (!options.onMessage) {
221
- throw new types_1.RequestError('onMessage callback is required');
238
+ throw new types_1.RequestError("onMessage callback is required");
222
239
  }
223
240
  if (options.browser) {
224
241
  const profiles = getProfiles();
225
242
  if (!profiles.includes(options.browser)) {
226
- throw new types_1.RequestError(`Invalid browser profile: ${options.browser}. Available profiles: ${profiles.join(', ')}`);
243
+ throw new types_1.RequestError(`Invalid browser profile: ${options.browser}. Available profiles: ${profiles.join(", ")}`);
227
244
  }
228
245
  }
229
246
  try {
230
247
  const connection = await nativeBinding.websocketConnect({
231
248
  url: options.url,
232
- browser: options.browser || 'chrome_137',
249
+ browser: options.browser || "chrome_137",
233
250
  headers: options.headers || {},
234
- proxy: options.proxy,
251
+ ...(options.proxy !== undefined && { proxy: options.proxy }),
235
252
  onMessage: options.onMessage,
236
- onClose: options.onClose,
237
- onError: options.onError,
253
+ ...(options.onClose !== undefined && { onClose: options.onClose }),
254
+ ...(options.onError !== undefined && { onError: options.onError }),
238
255
  });
239
256
  return new WebSocket(connection);
240
257
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wreq-js.js","sourceRoot":"","sources":["../src/wreq-js.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wreq-js.js","sourceRoot":"","sources":["../src/wreq-js.ts"],"names":[],"mappings":";;;AAsGA,0BAkBC;AAeD,kCAMC;AAgBD,kBAEC;AAqBD,oBAMC;AAuFD,8BAgCC;AAhTD,mCAAuC;AAYvC,IAAI,aAMH,CAAC;AAEF,IAAI,cAA4C,CAAC;AAEjD,SAAS,iBAAiB;IACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,2DAA2D;IAC3D,yDAAyD;IACzD,MAAM,eAAe,GAA2C;QAC9D,MAAM,EAAE;YACN,GAAG,EAAE,YAAY;YACjB,KAAK,EAAE,cAAc;SACtB;QACD,KAAK,EAAE;YACL,GAAG,EAAE,eAAe;YACpB,KAAK,EAAE,iBAAiB;SACzB;QACD,KAAK,EAAE;YACL,GAAG,EAAE,gBAAgB;SACtB;KACF,CAAC;IAEF,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAEvD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,yBAAyB,QAAQ,IAAI,IAAI,IAAI;YAC3C,kFAAkF,CACrF,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,MAAM,UAAU,GAAG,WAAW,YAAY,OAAO,CAAC;IAElD,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,mDAAmD;QACnD,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,oCAAoC,QAAQ,IAAI,IAAI,IAAI;gBACtD,kBAAkB,UAAU,6BAA6B;gBACzD,gGAAgG,CACnG,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,aAAa,GAAG,iBAAiB,EAAE,CAAC;AAEpC,MAAM,kBAAkB,GACtB,OAAO,oBAAoB,KAAK,UAAU;IACxC,CAAC,CAAC,IAAI,oBAAoB,CAA4B,CAAC,UAAqC,EAAE,EAAE;QAC5F,KAAK,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACvE,CAAC,CAAC;IACJ,CAAC,CAAC,SAAS,CAAC;AAEhB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACI,KAAK,UAAU,OAAO,CAAC,OAAuB;IACnD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,IAAI,oBAAY,CAAC,iBAAiB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAE/B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,oBAAY,CAAC,4BAA4B,OAAO,CAAC,OAAO,yBAAyB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpH,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,WAAW;IACzB,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,aAAa,CAAC,WAAW,EAAsB,CAAC;IACnE,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,GAAG,CAAC,GAAW,EAAE,OAAgD;IACrF,OAAO,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACI,KAAK,UAAU,IAAI,CACxB,GAAW,EACX,IAAa,EACb,OAAyD;IAEzD,OAAO,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AAC3F,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAa,SAAS;IAKpB,YAAY,UAAqC;QAFzC,YAAO,GAAG,KAAK,CAAC;QAGtB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAE9B,IAAI,kBAAkB,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;YAClC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,IAAqB;QAC9B,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,IAAI,CAAC,eAAe,IAAI,kBAAkB,EAAE,CAAC;YAC/C,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpD,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;CACF;AA9CD,8BA8CC;AAED;;;;;GAKG;AACI,KAAK,UAAU,SAAS,CAAC,OAAyB;IACvD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,IAAI,oBAAY,CAAC,iBAAiB,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,oBAAY,CAAC,gCAAgC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAE/B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,oBAAY,CAAC,4BAA4B,OAAO,CAAC,OAAO,yBAAyB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpH,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC;YACtD,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,YAAY;YACxC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YAC5D,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YAClE,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;SACnE,CAAC,CAAC;QAEH,OAAO,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAYD,kBAAe;IACb,OAAO;IACP,GAAG;IACH,IAAI;IACJ,WAAW;IACX,SAAS;IACT,SAAS;CACV,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wreq-js",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Browser fingerprint bypass library using Rust for TLS/HTTP2 impersonation",
5
5
  "main": "dist/wreq-js.js",
6
6
  "types": "dist/wreq-js.d.ts",
@@ -13,14 +13,15 @@
13
13
  },
14
14
  "scripts": {
15
15
  "build": "npm run build:rust && npm run build:ts",
16
- "build:rust": "napi build --platform --release --cargo-cwd rust rust",
16
+ "build:rust": "napi build --platform --release --manifest-path rust/Cargo.toml",
17
17
  "build:ts": "npm run clean:dist && tsc",
18
18
  "clean:dist": "rimraf dist",
19
19
  "artifacts": "napi artifacts",
20
20
  "clean": "rimraf dist rust/target rust/*.node",
21
21
  "test": "npm run build && node --test dist/test/http.spec.js dist/test/websocket.spec.js",
22
- "format": "prettier --write \"src/**/*.{ts,js,json,md}\"",
23
- "format:check": "prettier --check \"src/**/*.{ts,js,json,md}\""
22
+ "check": "biome check .",
23
+ "check:fix": "biome check --write .",
24
+ "ci:biome": "biome ci ."
24
25
  },
25
26
  "keywords": [
26
27
  "browser",
@@ -35,8 +36,8 @@
35
36
  "web-scraper",
36
37
  "wreq",
37
38
  "ja3",
38
- "tls-fingerprint",
39
- "ja4",
39
+ "tls-fingerprint",
40
+ "ja4",
40
41
  "browser-fingerprint-bypass"
41
42
  ],
42
43
  "author": "Oleksandr Herasymov <herasymov7@icloud.com>",
@@ -53,10 +54,10 @@
53
54
  },
54
55
  "homepage": "https://github.com/sqdshguy/wreq-js#readme",
55
56
  "devDependencies": {
56
- "@napi-rs/cli": "^2.18.0",
57
- "@types/node": "^20.0.0",
58
- "prettier": "^3.2.5",
59
- "rimraf": "^6.0.1",
57
+ "@biomejs/biome": "^2.3.4",
58
+ "@napi-rs/cli": "^3.4.1",
59
+ "@types/node": "^24.10.0",
60
+ "rimraf": "^6.1.0",
60
61
  "typescript": "^5.0.0"
61
62
  },
62
63
  "engines": {
@@ -76,16 +77,13 @@
76
77
  "rust/*.node"
77
78
  ],
78
79
  "napi": {
79
- "name": "wreq-js",
80
- "triples": {
81
- "defaults": true,
82
- "additional": [
83
- "x86_64-apple-darwin",
84
- "aarch64-apple-darwin",
85
- "x86_64-unknown-linux-gnu",
86
- "aarch64-unknown-linux-gnu",
87
- "x86_64-pc-windows-msvc"
88
- ]
89
- }
80
+ "binaryName": "wreq-js",
81
+ "targets": [
82
+ "x86_64-apple-darwin",
83
+ "aarch64-apple-darwin",
84
+ "x86_64-unknown-linux-gnu",
85
+ "aarch64-unknown-linux-gnu",
86
+ "x86_64-pc-windows-msvc"
87
+ ]
90
88
  }
91
89
  }
Binary file
Binary file
Binary file
Binary file
Binary file