proxy-rotator-js 1.1.1 → 1.3.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.
- package/README.md +87 -23
- package/assets/GeoLite2-Country.mmdb +0 -0
- package/dist/cjs/index.cjs +12 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/{src/Proxy.js → dist/cjs/src/Proxy.cjs} +28 -32
- package/dist/cjs/src/Proxy.cjs.map +1 -0
- package/dist/cjs/src/ProxyRotator.cjs +323 -0
- package/dist/cjs/src/ProxyRotator.cjs.map +1 -0
- package/dist/cjs/src/Queue.cjs +64 -0
- package/dist/cjs/src/Queue.cjs.map +1 -0
- package/dist/cjs/src/utils/geo.cjs +31 -0
- package/dist/cjs/src/utils/geo.cjs.map +1 -0
- package/dist/cjs/src/utils/makeRequestWithProxy.cjs +26 -0
- package/dist/cjs/src/utils/makeRequestWithProxy.cjs.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/src/Proxy.d.ts +44 -0
- package/dist/src/Proxy.d.ts.map +1 -0
- package/dist/src/Proxy.js +100 -0
- package/dist/src/Proxy.js.map +1 -0
- package/dist/src/ProxyRotator.d.ts +104 -0
- package/dist/src/ProxyRotator.d.ts.map +1 -0
- package/dist/src/ProxyRotator.js +317 -0
- package/dist/src/ProxyRotator.js.map +1 -0
- package/dist/src/Queue.d.ts +16 -0
- package/dist/src/Queue.d.ts.map +1 -0
- package/dist/src/Queue.js +61 -0
- package/dist/src/Queue.js.map +1 -0
- package/dist/src/utils/geo.d.ts +7 -0
- package/dist/src/utils/geo.d.ts.map +1 -0
- package/dist/src/utils/geo.js +25 -0
- package/dist/src/utils/geo.js.map +1 -0
- package/dist/src/utils/makeRequestWithProxy.d.ts +13 -0
- package/dist/src/utils/makeRequestWithProxy.d.ts.map +1 -0
- package/dist/src/utils/makeRequestWithProxy.js +20 -0
- package/dist/src/utils/makeRequestWithProxy.js.map +1 -0
- package/dist/test/status.d.ts +2 -0
- package/dist/test/status.d.ts.map +1 -0
- package/dist/test/status.js +103 -0
- package/dist/test/status.js.map +1 -0
- package/dist/test/status_and_test_output.d.ts +2 -0
- package/dist/test/status_and_test_output.d.ts.map +1 -0
- package/dist/test/status_and_test_output.js +110 -0
- package/dist/test/status_and_test_output.js.map +1 -0
- package/dist/test/test.d.ts +2 -0
- package/dist/test/test.d.ts.map +1 -0
- package/dist/test/test.js +122 -0
- package/dist/test/test.js.map +1 -0
- package/dist/test/test_proxies.d.ts +2 -0
- package/dist/test/test_proxies.d.ts.map +1 -0
- package/dist/test/test_proxies.js +20 -0
- package/dist/test/test_proxies.js.map +1 -0
- package/dist/test/test_proxies_output.d.ts +2 -0
- package/dist/test/test_proxies_output.d.ts.map +1 -0
- package/dist/test/test_proxies_output.js +62 -0
- package/dist/test/test_proxies_output.js.map +1 -0
- package/package.json +29 -4
- package/index.js +0 -2
- package/src/ProxyRotator.js +0 -239
- package/src/Queue.js +0 -61
- package/src/utils/makeRequestWithProxy.js +0 -21
- package/test/options.js +0 -32
- package/test/test.js +0 -204
- package/test/test_proxies.js +0 -22
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import ProxyRotator from '../index.js';
|
|
2
|
+
import assert from 'assert';
|
|
3
|
+
const test_proxies = [
|
|
4
|
+
'139.59.1.14:8080',
|
|
5
|
+
'94.45.74.60:8080',
|
|
6
|
+
'161.35.70.249:3128',
|
|
7
|
+
'217.182.170.224:80',
|
|
8
|
+
];
|
|
9
|
+
describe('status()', () => {
|
|
10
|
+
it('returns pool status with correct structure', () => {
|
|
11
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
12
|
+
const status = rotator.status();
|
|
13
|
+
assert.ok(status.pool, 'should have pool');
|
|
14
|
+
assert.strictEqual(typeof status.pool.size, 'number');
|
|
15
|
+
assert.ok(Array.isArray(status.pool.proxies));
|
|
16
|
+
assert.strictEqual(status.pool.size, test_proxies.length);
|
|
17
|
+
assert.deepStrictEqual(status.pool.proxies, test_proxies);
|
|
18
|
+
assert.ok(status.graveyard, 'should have graveyard');
|
|
19
|
+
assert.strictEqual(typeof status.graveyard.size, 'number');
|
|
20
|
+
assert.ok(Array.isArray(status.graveyard.proxies));
|
|
21
|
+
assert.strictEqual(status.graveyard.size, 0);
|
|
22
|
+
assert.ok(status.config, 'should have config');
|
|
23
|
+
assert.strictEqual(typeof status.config.revive_timer, 'number');
|
|
24
|
+
assert.ok(['string', 'object'].includes(status.config.returnAs));
|
|
25
|
+
assert.strictEqual(typeof status.config.shuffle, 'boolean');
|
|
26
|
+
assert.strictEqual(typeof status.config.assume_aliveness, 'boolean');
|
|
27
|
+
assert.strictEqual(typeof status.config.check_on_next, 'boolean');
|
|
28
|
+
});
|
|
29
|
+
it('status reflects pool and graveyard state', () => {
|
|
30
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
31
|
+
rotator.setDead(test_proxies[2]);
|
|
32
|
+
const status = rotator.status();
|
|
33
|
+
assert.strictEqual(status.pool.size, test_proxies.length - 1);
|
|
34
|
+
assert.strictEqual(status.graveyard.size, 1);
|
|
35
|
+
assert.ok(status.graveyard.proxies.includes(test_proxies[2]));
|
|
36
|
+
assert.ok(!status.pool.proxies.includes(test_proxies[2]));
|
|
37
|
+
});
|
|
38
|
+
it('status config reflects options', () => {
|
|
39
|
+
const rotator = new ProxyRotator(test_proxies, {
|
|
40
|
+
revive_timer: 5000,
|
|
41
|
+
returnAs: 'object',
|
|
42
|
+
protocol: 'http',
|
|
43
|
+
shuffle: true,
|
|
44
|
+
assume_aliveness: true,
|
|
45
|
+
check_on_next: true,
|
|
46
|
+
});
|
|
47
|
+
const status = rotator.status();
|
|
48
|
+
assert.strictEqual(status.config.revive_timer, 5000);
|
|
49
|
+
assert.strictEqual(status.config.returnAs, 'object');
|
|
50
|
+
assert.strictEqual(status.config.protocol, 'http');
|
|
51
|
+
assert.strictEqual(status.config.shuffle, true);
|
|
52
|
+
assert.strictEqual(status.config.assume_aliveness, true);
|
|
53
|
+
assert.strictEqual(status.config.check_on_next, true);
|
|
54
|
+
});
|
|
55
|
+
it('status is JSON-serializable', () => {
|
|
56
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
57
|
+
const status = rotator.status();
|
|
58
|
+
const json = JSON.stringify(status);
|
|
59
|
+
const parsed = JSON.parse(json);
|
|
60
|
+
assert.deepStrictEqual(parsed, status);
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
describe('test_proxies() output options', () => {
|
|
64
|
+
it('output json returns ProxyTestResults structure', async function () {
|
|
65
|
+
this.timeout(30000);
|
|
66
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
67
|
+
const result = await rotator.test_proxies({ output: 'json' });
|
|
68
|
+
assert.ok(result, 'should return result');
|
|
69
|
+
assert.ok(result.results, 'should have results array');
|
|
70
|
+
assert.ok(result.summary, 'should have summary');
|
|
71
|
+
assert.strictEqual(result.results.length, test_proxies.length);
|
|
72
|
+
assert.strictEqual(result.summary.total, test_proxies.length);
|
|
73
|
+
assert.strictEqual(result.summary.working + result.summary.notWorking, result.summary.total);
|
|
74
|
+
});
|
|
75
|
+
it('output json each result has required fields', async function () {
|
|
76
|
+
this.timeout(30000);
|
|
77
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
78
|
+
const result = await rotator.test_proxies({ output: 'json' });
|
|
79
|
+
for (const r of result.results) {
|
|
80
|
+
assert.strictEqual(typeof r.proxy, 'string');
|
|
81
|
+
assert.strictEqual(typeof r.working, 'boolean');
|
|
82
|
+
assert.strictEqual(typeof r.expectedIp, 'string');
|
|
83
|
+
assert.ok(r.actualIp === null || typeof r.actualIp === 'string');
|
|
84
|
+
if (!r.working && r.actualIp === null) {
|
|
85
|
+
assert.ok(r.error === undefined || typeof r.error === 'string', 'error should be string if present');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
it('output json is JSON-serializable', async function () {
|
|
90
|
+
this.timeout(30000);
|
|
91
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
92
|
+
const result = await rotator.test_proxies({ output: 'json' });
|
|
93
|
+
const json = JSON.stringify(result);
|
|
94
|
+
const parsed = JSON.parse(json);
|
|
95
|
+
assert.deepStrictEqual(parsed, result);
|
|
96
|
+
});
|
|
97
|
+
it('output console returns undefined', async function () {
|
|
98
|
+
this.timeout(30000);
|
|
99
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
100
|
+
const result = await rotator.test_proxies();
|
|
101
|
+
assert.strictEqual(result, undefined);
|
|
102
|
+
});
|
|
103
|
+
it('output console explicit returns undefined', async function () {
|
|
104
|
+
this.timeout(30000);
|
|
105
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
106
|
+
const result = await rotator.test_proxies({ output: 'console' });
|
|
107
|
+
assert.strictEqual(result, undefined);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=status_and_test_output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status_and_test_output.js","sourceRoot":"","sources":["../../test/status_and_test_output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../test/test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import ProxyRotator from '../index.js';
|
|
2
|
+
import assert from 'assert';
|
|
3
|
+
const test_proxies = [
|
|
4
|
+
'139.59.1.14:8080',
|
|
5
|
+
'94.45.74.60:8080',
|
|
6
|
+
'161.35.70.249:3128',
|
|
7
|
+
'217.182.170.224:80',
|
|
8
|
+
'222.138.76.6:9002',
|
|
9
|
+
'218.252.206.89:80',
|
|
10
|
+
'18.214.66.210:80',
|
|
11
|
+
'120.234.203.171:9002',
|
|
12
|
+
];
|
|
13
|
+
describe('read form proxy files', () => {
|
|
14
|
+
it('reading file with newlines', () => {
|
|
15
|
+
const proxies_file = './assets/http_proxies_with_newlines.txt';
|
|
16
|
+
const rotator_with_newlines = new ProxyRotator(proxies_file);
|
|
17
|
+
const pool = rotator_with_newlines.getPool();
|
|
18
|
+
assert.deepEqual(test_proxies, pool);
|
|
19
|
+
});
|
|
20
|
+
it('reading file with spaces', () => {
|
|
21
|
+
const proxies_file = './assets/http_proxies_with_spaces.txt';
|
|
22
|
+
const rotator_with_spaces = new ProxyRotator(proxies_file);
|
|
23
|
+
const pool = rotator_with_spaces.getPool();
|
|
24
|
+
assert.deepEqual(test_proxies, pool);
|
|
25
|
+
});
|
|
26
|
+
it('reading file with commas', () => {
|
|
27
|
+
const proxies_file = './assets/http_proxies_with_commas.txt';
|
|
28
|
+
const rotator_with_commas = new ProxyRotator(proxies_file);
|
|
29
|
+
const pool = rotator_with_commas.getPool();
|
|
30
|
+
assert.deepEqual(test_proxies, pool);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe('basic functionality', () => {
|
|
34
|
+
it('add proxies array', () => {
|
|
35
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
36
|
+
assert.deepEqual(test_proxies, rotator.getPool());
|
|
37
|
+
});
|
|
38
|
+
it('add proxy one by one ', async () => {
|
|
39
|
+
const rotator = new ProxyRotator(null, { fetchGeo: false });
|
|
40
|
+
for (const proxy of test_proxies)
|
|
41
|
+
await rotator.add(proxy);
|
|
42
|
+
assert.deepEqual(test_proxies, rotator.getPool());
|
|
43
|
+
});
|
|
44
|
+
it('remove one', () => {
|
|
45
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
46
|
+
const removed = test_proxies.filter((e) => e !== test_proxies[3]);
|
|
47
|
+
rotator.remove(test_proxies[3]);
|
|
48
|
+
assert.deepEqual(removed, rotator.getPool());
|
|
49
|
+
});
|
|
50
|
+
it('remove proxy one by one ', () => {
|
|
51
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
52
|
+
for (const proxy of test_proxies)
|
|
53
|
+
rotator.remove(proxy);
|
|
54
|
+
assert.deepEqual([], rotator.getPool());
|
|
55
|
+
});
|
|
56
|
+
it('set dead to graveyard', () => {
|
|
57
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
58
|
+
rotator.setDead(test_proxies[3]);
|
|
59
|
+
assert.deepEqual(rotator.getGraveyard().includes(test_proxies[3]), true);
|
|
60
|
+
});
|
|
61
|
+
it('set dead remove from pool', () => {
|
|
62
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
63
|
+
rotator.setDead(test_proxies[3]);
|
|
64
|
+
assert.equal(rotator.getPool().includes(test_proxies[3]), false);
|
|
65
|
+
});
|
|
66
|
+
it('resurect proxy from graveyard', () => {
|
|
67
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
68
|
+
rotator.setDead(test_proxies[3]);
|
|
69
|
+
rotator.resurect(test_proxies[3]);
|
|
70
|
+
assert.equal(rotator.getPool().includes(test_proxies[3]), true);
|
|
71
|
+
});
|
|
72
|
+
it('set dead proxy alive', () => {
|
|
73
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
74
|
+
rotator.setDead(test_proxies[3]);
|
|
75
|
+
rotator.setAlive(test_proxies[3]);
|
|
76
|
+
assert.equal(rotator.getPool().includes(test_proxies[3]), true);
|
|
77
|
+
});
|
|
78
|
+
it('get alive', () => {
|
|
79
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
80
|
+
rotator.setAlive(test_proxies[3]);
|
|
81
|
+
const proxy = rotator.getAlive();
|
|
82
|
+
assert.equal(proxy, test_proxies[3]);
|
|
83
|
+
});
|
|
84
|
+
it('test rotation', () => {
|
|
85
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
86
|
+
const removed = test_proxies.filter((e) => e !== test_proxies[3]);
|
|
87
|
+
rotator.setDead(test_proxies[3]);
|
|
88
|
+
for (let i = 0; i < removed.length; i++) {
|
|
89
|
+
const proxy = rotator.next();
|
|
90
|
+
assert.equal(proxy, removed[i]);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
it('resurect timer', function (done) {
|
|
94
|
+
this.timeout(1100);
|
|
95
|
+
const rotator = new ProxyRotator(test_proxies, { revive_timer: 1000 });
|
|
96
|
+
rotator.setDead(test_proxies[3]);
|
|
97
|
+
setTimeout(() => {
|
|
98
|
+
assert.equal(rotator.getPool().includes(test_proxies[3]), true);
|
|
99
|
+
done();
|
|
100
|
+
}, 1000);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
describe('Test return type', () => {
|
|
104
|
+
it('test default return string type', () => {
|
|
105
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
106
|
+
const proxy = rotator.next();
|
|
107
|
+
assert.equal(typeof proxy, 'string');
|
|
108
|
+
});
|
|
109
|
+
it('test if it return object when passed returnAs obj', () => {
|
|
110
|
+
const rotator = new ProxyRotator(test_proxies, { returnAs: 'object' });
|
|
111
|
+
const proxy = rotator.next();
|
|
112
|
+
assert.equal(typeof proxy, 'object');
|
|
113
|
+
});
|
|
114
|
+
it('test if it return obj when passed as paramter', () => {
|
|
115
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
116
|
+
const proxy = rotator.next({ returnAs: 'obj' });
|
|
117
|
+
assert.equal(typeof proxy, 'object');
|
|
118
|
+
const proxy2 = rotator.next({ returnAs: 'str' });
|
|
119
|
+
assert.equal(typeof proxy2, 'string');
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../test/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test_proxies.d.ts","sourceRoot":"","sources":["../../test/test_proxies.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import ProxyRotator from '../index.js';
|
|
2
|
+
import assert from 'assert';
|
|
3
|
+
const test_proxies = [
|
|
4
|
+
'139.59.1.14:8080',
|
|
5
|
+
'94.45.74.60:8080',
|
|
6
|
+
'161.35.70.249:3128',
|
|
7
|
+
'217.182.170.224:80',
|
|
8
|
+
'222.138.76.6:9002',
|
|
9
|
+
'218.252.206.89:80',
|
|
10
|
+
'18.214.66.210:80',
|
|
11
|
+
'120.234.203.171:9002',
|
|
12
|
+
];
|
|
13
|
+
describe('testing testing proxies', () => {
|
|
14
|
+
it('testing proxeis', async () => {
|
|
15
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
16
|
+
await rotator.test();
|
|
17
|
+
assert.deepEqual(test_proxies, rotator.getPool());
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=test_proxies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test_proxies.js","sourceRoot":"","sources":["../../test/test_proxies.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,YAAY,GAAG;IACnB,kBAAkB;IAClB,kBAAkB;IAClB,oBAAoB;IACpB,oBAAoB;IACpB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,sBAAsB;CACvB,CAAC;AAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;QAC/C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test_proxies_output.d.ts","sourceRoot":"","sources":["../../test/test_proxies_output.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import ProxyRotator from '../index.js';
|
|
2
|
+
import assert from 'assert';
|
|
3
|
+
const test_proxies = [
|
|
4
|
+
'139.59.1.14:8080',
|
|
5
|
+
'94.45.74.60:8080',
|
|
6
|
+
'161.35.70.249:3128',
|
|
7
|
+
'217.182.170.224:80',
|
|
8
|
+
];
|
|
9
|
+
describe('test_proxies() output options', () => {
|
|
10
|
+
it('output json returns ProxyTestResults structure', async function () {
|
|
11
|
+
this.timeout(30000);
|
|
12
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
13
|
+
const result = (await rotator.test_proxies({
|
|
14
|
+
output: 'json',
|
|
15
|
+
}));
|
|
16
|
+
assert.ok(result, 'should return result');
|
|
17
|
+
assert.ok(result.results, 'should have results array');
|
|
18
|
+
assert.ok(result.summary, 'should have summary');
|
|
19
|
+
assert.strictEqual(result.results.length, test_proxies.length);
|
|
20
|
+
assert.strictEqual(result.summary.total, test_proxies.length);
|
|
21
|
+
assert.strictEqual(result.summary.working + result.summary.notWorking, result.summary.total);
|
|
22
|
+
});
|
|
23
|
+
it('output json each result has required fields', async function () {
|
|
24
|
+
this.timeout(30000);
|
|
25
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
26
|
+
const result = (await rotator.test_proxies({
|
|
27
|
+
output: 'json',
|
|
28
|
+
}));
|
|
29
|
+
for (const r of result.results) {
|
|
30
|
+
assert.strictEqual(typeof r.proxy, 'string');
|
|
31
|
+
assert.strictEqual(typeof r.working, 'boolean');
|
|
32
|
+
assert.strictEqual(typeof r.expectedIp, 'string');
|
|
33
|
+
assert.ok(r.actualIp === null || typeof r.actualIp === 'string');
|
|
34
|
+
if (!r.working && r.actualIp === null) {
|
|
35
|
+
assert.ok(r.error === undefined || typeof r.error === 'string', 'error should be string if present');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
it('output json is JSON-serializable', async function () {
|
|
40
|
+
this.timeout(30000);
|
|
41
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
42
|
+
const result = (await rotator.test_proxies({
|
|
43
|
+
output: 'json',
|
|
44
|
+
}));
|
|
45
|
+
const json = JSON.stringify(result);
|
|
46
|
+
const parsed = JSON.parse(json);
|
|
47
|
+
assert.deepStrictEqual(parsed, result);
|
|
48
|
+
});
|
|
49
|
+
it('output console returns undefined', async function () {
|
|
50
|
+
this.timeout(30000);
|
|
51
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
52
|
+
const result = await rotator.test_proxies();
|
|
53
|
+
assert.strictEqual(result, undefined);
|
|
54
|
+
});
|
|
55
|
+
it('output console explicit returns undefined', async function () {
|
|
56
|
+
this.timeout(30000);
|
|
57
|
+
const rotator = new ProxyRotator(test_proxies);
|
|
58
|
+
const result = await rotator.test_proxies({ output: 'console' });
|
|
59
|
+
assert.strictEqual(result, undefined);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=test_proxies_output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test_proxies_output.js","sourceRoot":"","sources":["../../test/test_proxies_output.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "proxy-rotator-js",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Proxy Rotator",
|
|
6
|
-
"main": "index.
|
|
6
|
+
"main": "dist/cjs/index.cjs",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"assets"
|
|
12
|
+
],
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"require": "./dist/cjs/index.cjs",
|
|
17
|
+
"import": "./dist/index.js",
|
|
18
|
+
"default": "./dist/index.js"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
7
21
|
"directories": {
|
|
8
22
|
"test": "test"
|
|
9
23
|
},
|
|
@@ -61,6 +75,7 @@
|
|
|
61
75
|
"locate-path": "^6.0.0",
|
|
62
76
|
"log-symbols": "^4.1.0",
|
|
63
77
|
"loupe": "^2.3.6",
|
|
78
|
+
"maxmind": "^5.0.5",
|
|
64
79
|
"minimatch": "^5.0.1",
|
|
65
80
|
"ms": "^2.1.3",
|
|
66
81
|
"nanoid": "^3.3.3",
|
|
@@ -96,10 +111,20 @@
|
|
|
96
111
|
"yocto-queue": "^0.1.0"
|
|
97
112
|
},
|
|
98
113
|
"devDependencies": {
|
|
99
|
-
"
|
|
114
|
+
"@types/chai": "^4.3.0",
|
|
115
|
+
"@types/mocha": "^10.0.0",
|
|
116
|
+
"@types/node": "^20.0.0",
|
|
117
|
+
"mocha": "^10.2.0",
|
|
118
|
+
"tar": "^7.5.11",
|
|
119
|
+
"tsx": "^4.7.0",
|
|
120
|
+
"typescript": "^5.3.0"
|
|
100
121
|
},
|
|
101
122
|
"scripts": {
|
|
102
|
-
"
|
|
123
|
+
"build": "tsc && tsc -p tsconfig.cjs.json && node scripts/fix-cjs.cjs",
|
|
124
|
+
"download:geo": "npx tsx scripts/download-geo.ts",
|
|
125
|
+
"test": "tsc && mocha dist/test/*.js",
|
|
126
|
+
"test:consumer": "npm run build && cd test-consumer && npm install && node require.cjs && node import.js && npx tsx import.ts",
|
|
127
|
+
"prepublishOnly": "npm run build"
|
|
103
128
|
},
|
|
104
129
|
"author": "Goran Topic",
|
|
105
130
|
"license": "ISC"
|
package/index.js
DELETED