@certik/skynet 0.10.7 → 0.10.8

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/primitive.js CHANGED
@@ -1,77 +1,77 @@
1
- async function getOverrides(docClient, projectId, address, log, primitive) {
2
- try {
3
- console.log("ProjectId:" + projectId + " address:" + address);
4
-
5
- const whitelist = [];
6
- const queryProjectOverrides = await docClient
7
- .get({
8
- TableName: "skynet-prd-primitive-manual-overrides",
9
- Key: {
10
- primitive: primitive,
11
- overrideId: "project/" + projectId,
12
- },
13
- })
14
- .promise();
15
- if (queryProjectOverrides.Item && queryProjectOverrides.Item.whitelist) {
16
- whitelist.push(...queryProjectOverrides.Item.whitelist);
17
- }
18
-
19
- const queryAddressOverrides = await docClient
20
- .get({
21
- TableName: "skynet-prd-primitive-manual-overrides",
22
- Key: {
23
- primitive: primitive,
24
- overrideId: "address/" + address,
25
- },
26
- })
27
- .promise();
28
-
29
- if (queryAddressOverrides.Item && queryAddressOverrides.Item.whitelist) {
30
- console.log(queryAddressOverrides.Item.whitelist);
31
- whitelist.push(...queryAddressOverrides.Item.whitelist);
32
- }
33
- if (whitelist.length === 0) {
34
- log(
35
- "ProjectId " + projectId + " ,Address " + address + " has no override"
36
- );
37
- }
38
- console.log("Whitelist:" + whitelist);
39
- return whitelist;
40
- } catch (scanFeedErr) {
41
- log("scan feed error, check dynamodb table", scanFeedErr);
42
- return null;
43
- }
44
- }
45
-
46
- async function overrideScoreAndIssues(
47
- docClient,
48
- projectId,
49
- address,
50
- score,
51
- issues,
52
- log,
53
- primitive
54
- ) {
55
- const overrides = await getOverrides(
56
- docClient,
57
- projectId,
58
- address,
59
- log,
60
- primitive
61
- );
62
-
63
- issues = issues.filter((issue) => {
64
- if (overrides.includes(issue.code)) {
65
- score += issue.reduction;
66
- return false;
67
- } else return true;
68
- });
69
- return {
70
- score,
71
- issues,
72
- };
73
- }
74
- module.exports = {
75
- getOverrides,
76
- overrideScoreAndIssues,
77
- };
1
+ async function getOverrides(docClient, projectId, address, log, primitive) {
2
+ try {
3
+ console.log("ProjectId:" + projectId + " address:" + address);
4
+
5
+ const whitelist = [];
6
+ const queryProjectOverrides = await docClient
7
+ .get({
8
+ TableName: "skynet-prd-primitive-manual-overrides",
9
+ Key: {
10
+ primitive: primitive,
11
+ overrideId: "project/" + projectId,
12
+ },
13
+ })
14
+ .promise();
15
+ if (queryProjectOverrides.Item && queryProjectOverrides.Item.whitelist) {
16
+ whitelist.push(...queryProjectOverrides.Item.whitelist);
17
+ }
18
+
19
+ const queryAddressOverrides = await docClient
20
+ .get({
21
+ TableName: "skynet-prd-primitive-manual-overrides",
22
+ Key: {
23
+ primitive: primitive,
24
+ overrideId: "address/" + address,
25
+ },
26
+ })
27
+ .promise();
28
+
29
+ if (queryAddressOverrides.Item && queryAddressOverrides.Item.whitelist) {
30
+ console.log(queryAddressOverrides.Item.whitelist);
31
+ whitelist.push(...queryAddressOverrides.Item.whitelist);
32
+ }
33
+ if (whitelist.length === 0) {
34
+ log(
35
+ "ProjectId " + projectId + " ,Address " + address + " has no override"
36
+ );
37
+ }
38
+ console.log("Whitelist:" + whitelist);
39
+ return whitelist;
40
+ } catch (scanFeedErr) {
41
+ log("scan feed error, check dynamodb table", scanFeedErr);
42
+ return null;
43
+ }
44
+ }
45
+
46
+ async function overrideScoreAndIssues(
47
+ docClient,
48
+ projectId,
49
+ address,
50
+ score,
51
+ issues,
52
+ log,
53
+ primitive
54
+ ) {
55
+ const overrides = await getOverrides(
56
+ docClient,
57
+ projectId,
58
+ address,
59
+ log,
60
+ primitive
61
+ );
62
+
63
+ issues = issues.filter((issue) => {
64
+ if (overrides.includes(issue.code)) {
65
+ score += issue.reduction;
66
+ return false;
67
+ } else return true;
68
+ });
69
+ return {
70
+ score,
71
+ issues,
72
+ };
73
+ }
74
+ module.exports = {
75
+ getOverrides,
76
+ overrideScoreAndIssues,
77
+ };
package/proxy.js CHANGED
@@ -1,157 +1,157 @@
1
- const fetch = require("node-fetch");
2
- const AbortController = require("abort-controller");
3
-
4
- const PROXY_INSTANCES = [
5
- "https://dytsr8x71h.execute-api.us-east-1.amazonaws.com/", // 0
6
- "https://mkn6g5z5le.execute-api.us-east-1.amazonaws.com/",
7
- "https://26gzsf530c.execute-api.us-east-1.amazonaws.com/",
8
- "https://v03g7u6z26.execute-api.us-east-1.amazonaws.com/",
9
- "https://v39ebeocc1.execute-api.us-east-1.amazonaws.com/",
10
- "https://hk9h3y9arb.execute-api.us-east-1.amazonaws.com/",
11
- "https://7b15n2ht7l.execute-api.us-east-1.amazonaws.com/",
12
- "https://8uhvhb5e53.execute-api.us-east-1.amazonaws.com/",
13
- "https://7rtrukrk95.execute-api.us-east-1.amazonaws.com/",
14
- "https://3qewm67hn1.execute-api.us-east-1.amazonaws.com/",
15
- "https://556736tpce.execute-api.us-east-1.amazonaws.com/", // 10
16
- "https://mshpz2z7d2.execute-api.us-east-1.amazonaws.com/",
17
- "https://7bt6c7p3gf.execute-api.us-east-1.amazonaws.com/",
18
- "https://oj5iu0u89d.execute-api.us-east-1.amazonaws.com/",
19
- "https://b5ji9tgo5i.execute-api.us-east-1.amazonaws.com/",
20
- "https://pzwpfi3vgk.execute-api.us-east-1.amazonaws.com/",
21
- "https://4la30elqpg.execute-api.us-east-1.amazonaws.com/",
22
- "https://ne5fiss07f.execute-api.us-east-1.amazonaws.com/",
23
- "https://p93gw01mzk.execute-api.us-east-1.amazonaws.com/",
24
- "https://8gidfkkw7f.execute-api.us-east-1.amazonaws.com/",
25
- "https://o0rolv9t54.execute-api.us-east-1.amazonaws.com/", // 20
26
- "https://rmm24o49f5.execute-api.us-east-1.amazonaws.com/",
27
- "https://q44k3y3tll.execute-api.us-east-1.amazonaws.com/",
28
- "https://ox84ynjgoj.execute-api.us-east-1.amazonaws.com/",
29
- "https://ulb25ts130.execute-api.us-east-1.amazonaws.com/",
30
- "https://uu3l7dmkai.execute-api.us-east-1.amazonaws.com/",
31
- "https://o4x7lxh6pj.execute-api.us-east-1.amazonaws.com/",
32
- "https://vc54yom9y4.execute-api.us-east-1.amazonaws.com/",
33
- "https://jev66u1mhf.execute-api.us-east-1.amazonaws.com/",
34
- "https://5da1kozme4.execute-api.us-east-1.amazonaws.com/",
35
- "https://3qmuvrws8l.execute-api.us-east-1.amazonaws.com/", // 30
36
- "https://33czg1g72l.execute-api.us-east-1.amazonaws.com/",
37
- "https://72ofvtgltl.execute-api.us-east-1.amazonaws.com/",
38
- "https://t0exa5kpl1.execute-api.us-east-1.amazonaws.com/",
39
- "https://nwq3dkj7ql.execute-api.us-east-1.amazonaws.com/",
40
- "https://9a9rgtalmc.execute-api.us-east-1.amazonaws.com/",
41
- "https://uvvfu0upwc.execute-api.us-east-1.amazonaws.com/",
42
- "https://aqv429acx6.execute-api.us-east-1.amazonaws.com/",
43
- "https://vlvkahspic.execute-api.us-east-1.amazonaws.com/",
44
- "https://vfyf73o40f.execute-api.us-east-1.amazonaws.com/",
45
- "https://isovddqwik.execute-api.us-east-1.amazonaws.com/", // 40
46
- "https://jjhhqlg789.execute-api.us-east-1.amazonaws.com/",
47
- "https://ggrh0k8mfd.execute-api.us-east-1.amazonaws.com/",
48
- "https://2fq9nfjwb3.execute-api.us-east-1.amazonaws.com/",
49
- "https://jb16e6xz80.execute-api.us-east-1.amazonaws.com/",
50
- "https://mk9uj2vzj6.execute-api.us-east-1.amazonaws.com/",
51
- "https://ps7yr1dgu8.execute-api.us-east-1.amazonaws.com/",
52
- "https://gl4co2x4ud.execute-api.us-east-1.amazonaws.com/",
53
- "https://c6o0e7pra9.execute-api.us-east-1.amazonaws.com/",
54
- "https://omokupco12.execute-api.us-east-1.amazonaws.com/",
55
- "https://hwv5rhlgph.execute-api.us-east-1.amazonaws.com/", // 50
56
- "https://8465ad223e.execute-api.us-east-1.amazonaws.com/",
57
- "https://c6ssgeoj23.execute-api.us-east-1.amazonaws.com/",
58
- "https://g8885ic96d.execute-api.us-east-1.amazonaws.com/",
59
- "https://6rqvbiyfsl.execute-api.us-east-1.amazonaws.com/",
60
- "https://4v9u56sk9g.execute-api.us-east-1.amazonaws.com/",
61
- "https://fdra8xp8p4.execute-api.us-east-1.amazonaws.com/",
62
- "https://lli6c9yt8a.execute-api.us-east-1.amazonaws.com/",
63
- "https://n0vrpscg70.execute-api.us-east-1.amazonaws.com/",
64
- "https://i4cjhmsxgh.execute-api.us-east-1.amazonaws.com/",
65
- "https://j9s8hgctj8.execute-api.us-east-1.amazonaws.com/", // 60
66
- "https://7fsuk56955.execute-api.us-east-1.amazonaws.com/",
67
- "https://njmodl5qii.execute-api.us-east-1.amazonaws.com/",
68
- "https://mxm7y4ehld.execute-api.us-east-1.amazonaws.com/",
69
- "https://3cdpu56ss4.execute-api.us-east-1.amazonaws.com/",
70
- "https://q81i7h2zb9.execute-api.us-east-1.amazonaws.com/",
71
- "https://h4g6ass2o1.execute-api.us-east-1.amazonaws.com/",
72
- "https://j42nkoonok.execute-api.us-east-1.amazonaws.com/",
73
- "https://f2ac36s6b7.execute-api.us-east-1.amazonaws.com/",
74
- "https://7gelmsgjzh.execute-api.us-east-1.amazonaws.com/",
75
- "https://643y52s281.execute-api.us-east-1.amazonaws.com/", // 70
76
- "https://mvlkkujr33.execute-api.us-east-1.amazonaws.com/",
77
- "https://mdefho1x9l.execute-api.us-east-1.amazonaws.com/",
78
- "https://n6dvg4pkz8.execute-api.us-east-1.amazonaws.com/",
79
- "https://u0pvmukqzi.execute-api.us-east-1.amazonaws.com/",
80
- "https://kwrvum76fb.execute-api.us-east-1.amazonaws.com/",
81
- "https://u9pvcl1yjg.execute-api.us-east-1.amazonaws.com/",
82
- "https://uwue37nm47.execute-api.us-east-1.amazonaws.com/",
83
- "https://u4kewxo9ok.execute-api.us-east-1.amazonaws.com/",
84
- "https://8wv9cqqkxk.execute-api.us-east-1.amazonaws.com/",
85
- "https://bkhg2luwra.execute-api.us-east-1.amazonaws.com/", // 80
86
- "https://eykfffi8id.execute-api.us-east-1.amazonaws.com/",
87
- "https://6o9cyhjirk.execute-api.us-east-1.amazonaws.com/",
88
- "https://ei1822av0a.execute-api.us-east-1.amazonaws.com/",
89
- "https://c6g0dt40sa.execute-api.us-east-1.amazonaws.com/",
90
- "https://4usww0c5o6.execute-api.us-east-1.amazonaws.com/",
91
- "https://4zuimplfw9.execute-api.us-east-1.amazonaws.com/",
92
- "https://1rm1s5nih8.execute-api.us-east-1.amazonaws.com/",
93
- "https://00928llmcg.execute-api.us-east-1.amazonaws.com/",
94
- "https://c1891ubva7.execute-api.us-east-1.amazonaws.com/",
95
- "https://46en7n2sa5.execute-api.us-east-1.amazonaws.com/", // 90
96
- "https://b99rerxnn4.execute-api.us-east-1.amazonaws.com/",
97
- "https://swkx9wp64b.execute-api.us-east-1.amazonaws.com/",
98
- "https://fsi7smizx7.execute-api.us-east-1.amazonaws.com/",
99
- "https://62b5vzc2lc.execute-api.us-east-1.amazonaws.com/",
100
- "https://dp51s8airb.execute-api.us-east-1.amazonaws.com/",
101
- "https://mg17vjdpq9.execute-api.us-east-1.amazonaws.com/",
102
- "https://jydmktw9tg.execute-api.us-east-1.amazonaws.com/",
103
- "https://nir1xko0c8.execute-api.us-east-1.amazonaws.com/",
104
- "https://xs59tyiizd.execute-api.us-east-1.amazonaws.com/" // 99
105
- ];
106
-
107
- async function proxyFetch(url, options = {}) {
108
- const rn = Math.floor(Math.random() * PROXY_INSTANCES.length);
109
-
110
- const proxy = PROXY_INSTANCES[rn];
111
-
112
- if (options.verbose) {
113
- console.log(`fetching ${url} using ${proxy}`);
114
- }
115
-
116
- const controller = new AbortController();
117
- const timeout = setTimeout(() => {
118
- controller.abort();
119
- }, options.timeout || 30_000);
120
-
121
- try {
122
- const res = await fetch(proxy, {
123
- signal: controller.signal,
124
- ...options,
125
- headers: {
126
- "fetch-url": url,
127
- ...options.headers
128
- }
129
- });
130
-
131
- if (options.verbose) {
132
- console.log(`DONE fetching ${url}`);
133
- }
134
-
135
- clearTimeout(timeout);
136
-
137
- return res;
138
- } catch (fetchErr) {
139
- clearTimeout(timeout);
140
-
141
- if (fetchErr.name === "AbortError") {
142
- return {
143
- ok: false,
144
- status: 408,
145
- text: () => Promise.resolve("Timeout")
146
- };
147
- }
148
-
149
- return {
150
- ok: false,
151
- status: 500,
152
- text: () => Promise.resolve(fetchErr.message)
153
- };
154
- }
155
- }
156
-
157
- module.exports = proxyFetch;
1
+ const fetch = require("node-fetch");
2
+ const AbortController = require("abort-controller");
3
+
4
+ const PROXY_INSTANCES = [
5
+ "https://dytsr8x71h.execute-api.us-east-1.amazonaws.com/", // 0
6
+ "https://mkn6g5z5le.execute-api.us-east-1.amazonaws.com/",
7
+ "https://26gzsf530c.execute-api.us-east-1.amazonaws.com/",
8
+ "https://v03g7u6z26.execute-api.us-east-1.amazonaws.com/",
9
+ "https://v39ebeocc1.execute-api.us-east-1.amazonaws.com/",
10
+ "https://hk9h3y9arb.execute-api.us-east-1.amazonaws.com/",
11
+ "https://7b15n2ht7l.execute-api.us-east-1.amazonaws.com/",
12
+ "https://8uhvhb5e53.execute-api.us-east-1.amazonaws.com/",
13
+ "https://7rtrukrk95.execute-api.us-east-1.amazonaws.com/",
14
+ "https://3qewm67hn1.execute-api.us-east-1.amazonaws.com/",
15
+ "https://556736tpce.execute-api.us-east-1.amazonaws.com/", // 10
16
+ "https://mshpz2z7d2.execute-api.us-east-1.amazonaws.com/",
17
+ "https://7bt6c7p3gf.execute-api.us-east-1.amazonaws.com/",
18
+ "https://oj5iu0u89d.execute-api.us-east-1.amazonaws.com/",
19
+ "https://b5ji9tgo5i.execute-api.us-east-1.amazonaws.com/",
20
+ "https://pzwpfi3vgk.execute-api.us-east-1.amazonaws.com/",
21
+ "https://4la30elqpg.execute-api.us-east-1.amazonaws.com/",
22
+ "https://ne5fiss07f.execute-api.us-east-1.amazonaws.com/",
23
+ "https://p93gw01mzk.execute-api.us-east-1.amazonaws.com/",
24
+ "https://8gidfkkw7f.execute-api.us-east-1.amazonaws.com/",
25
+ "https://o0rolv9t54.execute-api.us-east-1.amazonaws.com/", // 20
26
+ "https://rmm24o49f5.execute-api.us-east-1.amazonaws.com/",
27
+ "https://q44k3y3tll.execute-api.us-east-1.amazonaws.com/",
28
+ "https://ox84ynjgoj.execute-api.us-east-1.amazonaws.com/",
29
+ "https://ulb25ts130.execute-api.us-east-1.amazonaws.com/",
30
+ "https://uu3l7dmkai.execute-api.us-east-1.amazonaws.com/",
31
+ "https://o4x7lxh6pj.execute-api.us-east-1.amazonaws.com/",
32
+ "https://vc54yom9y4.execute-api.us-east-1.amazonaws.com/",
33
+ "https://jev66u1mhf.execute-api.us-east-1.amazonaws.com/",
34
+ "https://5da1kozme4.execute-api.us-east-1.amazonaws.com/",
35
+ "https://3qmuvrws8l.execute-api.us-east-1.amazonaws.com/", // 30
36
+ "https://33czg1g72l.execute-api.us-east-1.amazonaws.com/",
37
+ "https://72ofvtgltl.execute-api.us-east-1.amazonaws.com/",
38
+ "https://t0exa5kpl1.execute-api.us-east-1.amazonaws.com/",
39
+ "https://nwq3dkj7ql.execute-api.us-east-1.amazonaws.com/",
40
+ "https://9a9rgtalmc.execute-api.us-east-1.amazonaws.com/",
41
+ "https://uvvfu0upwc.execute-api.us-east-1.amazonaws.com/",
42
+ "https://aqv429acx6.execute-api.us-east-1.amazonaws.com/",
43
+ "https://vlvkahspic.execute-api.us-east-1.amazonaws.com/",
44
+ "https://vfyf73o40f.execute-api.us-east-1.amazonaws.com/",
45
+ "https://isovddqwik.execute-api.us-east-1.amazonaws.com/", // 40
46
+ "https://jjhhqlg789.execute-api.us-east-1.amazonaws.com/",
47
+ "https://ggrh0k8mfd.execute-api.us-east-1.amazonaws.com/",
48
+ "https://2fq9nfjwb3.execute-api.us-east-1.amazonaws.com/",
49
+ "https://jb16e6xz80.execute-api.us-east-1.amazonaws.com/",
50
+ "https://mk9uj2vzj6.execute-api.us-east-1.amazonaws.com/",
51
+ "https://ps7yr1dgu8.execute-api.us-east-1.amazonaws.com/",
52
+ "https://gl4co2x4ud.execute-api.us-east-1.amazonaws.com/",
53
+ "https://c6o0e7pra9.execute-api.us-east-1.amazonaws.com/",
54
+ "https://omokupco12.execute-api.us-east-1.amazonaws.com/",
55
+ "https://hwv5rhlgph.execute-api.us-east-1.amazonaws.com/", // 50
56
+ "https://8465ad223e.execute-api.us-east-1.amazonaws.com/",
57
+ "https://c6ssgeoj23.execute-api.us-east-1.amazonaws.com/",
58
+ "https://g8885ic96d.execute-api.us-east-1.amazonaws.com/",
59
+ "https://6rqvbiyfsl.execute-api.us-east-1.amazonaws.com/",
60
+ "https://4v9u56sk9g.execute-api.us-east-1.amazonaws.com/",
61
+ "https://fdra8xp8p4.execute-api.us-east-1.amazonaws.com/",
62
+ "https://lli6c9yt8a.execute-api.us-east-1.amazonaws.com/",
63
+ "https://n0vrpscg70.execute-api.us-east-1.amazonaws.com/",
64
+ "https://i4cjhmsxgh.execute-api.us-east-1.amazonaws.com/",
65
+ "https://j9s8hgctj8.execute-api.us-east-1.amazonaws.com/", // 60
66
+ "https://7fsuk56955.execute-api.us-east-1.amazonaws.com/",
67
+ "https://njmodl5qii.execute-api.us-east-1.amazonaws.com/",
68
+ "https://mxm7y4ehld.execute-api.us-east-1.amazonaws.com/",
69
+ "https://3cdpu56ss4.execute-api.us-east-1.amazonaws.com/",
70
+ "https://q81i7h2zb9.execute-api.us-east-1.amazonaws.com/",
71
+ "https://h4g6ass2o1.execute-api.us-east-1.amazonaws.com/",
72
+ "https://j42nkoonok.execute-api.us-east-1.amazonaws.com/",
73
+ "https://f2ac36s6b7.execute-api.us-east-1.amazonaws.com/",
74
+ "https://7gelmsgjzh.execute-api.us-east-1.amazonaws.com/",
75
+ "https://643y52s281.execute-api.us-east-1.amazonaws.com/", // 70
76
+ "https://mvlkkujr33.execute-api.us-east-1.amazonaws.com/",
77
+ "https://mdefho1x9l.execute-api.us-east-1.amazonaws.com/",
78
+ "https://n6dvg4pkz8.execute-api.us-east-1.amazonaws.com/",
79
+ "https://u0pvmukqzi.execute-api.us-east-1.amazonaws.com/",
80
+ "https://kwrvum76fb.execute-api.us-east-1.amazonaws.com/",
81
+ "https://u9pvcl1yjg.execute-api.us-east-1.amazonaws.com/",
82
+ "https://uwue37nm47.execute-api.us-east-1.amazonaws.com/",
83
+ "https://u4kewxo9ok.execute-api.us-east-1.amazonaws.com/",
84
+ "https://8wv9cqqkxk.execute-api.us-east-1.amazonaws.com/",
85
+ "https://bkhg2luwra.execute-api.us-east-1.amazonaws.com/", // 80
86
+ "https://eykfffi8id.execute-api.us-east-1.amazonaws.com/",
87
+ "https://6o9cyhjirk.execute-api.us-east-1.amazonaws.com/",
88
+ "https://ei1822av0a.execute-api.us-east-1.amazonaws.com/",
89
+ "https://c6g0dt40sa.execute-api.us-east-1.amazonaws.com/",
90
+ "https://4usww0c5o6.execute-api.us-east-1.amazonaws.com/",
91
+ "https://4zuimplfw9.execute-api.us-east-1.amazonaws.com/",
92
+ "https://1rm1s5nih8.execute-api.us-east-1.amazonaws.com/",
93
+ "https://00928llmcg.execute-api.us-east-1.amazonaws.com/",
94
+ "https://c1891ubva7.execute-api.us-east-1.amazonaws.com/",
95
+ "https://46en7n2sa5.execute-api.us-east-1.amazonaws.com/", // 90
96
+ "https://b99rerxnn4.execute-api.us-east-1.amazonaws.com/",
97
+ "https://swkx9wp64b.execute-api.us-east-1.amazonaws.com/",
98
+ "https://fsi7smizx7.execute-api.us-east-1.amazonaws.com/",
99
+ "https://62b5vzc2lc.execute-api.us-east-1.amazonaws.com/",
100
+ "https://dp51s8airb.execute-api.us-east-1.amazonaws.com/",
101
+ "https://mg17vjdpq9.execute-api.us-east-1.amazonaws.com/",
102
+ "https://jydmktw9tg.execute-api.us-east-1.amazonaws.com/",
103
+ "https://nir1xko0c8.execute-api.us-east-1.amazonaws.com/",
104
+ "https://xs59tyiizd.execute-api.us-east-1.amazonaws.com/" // 99
105
+ ];
106
+
107
+ async function proxyFetch(url, options = {}) {
108
+ const rn = Math.floor(Math.random() * PROXY_INSTANCES.length);
109
+
110
+ const proxy = PROXY_INSTANCES[rn];
111
+
112
+ if (options.verbose) {
113
+ console.log(`fetching ${url} using ${proxy}`);
114
+ }
115
+
116
+ const controller = new AbortController();
117
+ const timeout = setTimeout(() => {
118
+ controller.abort();
119
+ }, options.timeout || 30_000);
120
+
121
+ try {
122
+ const res = await fetch(proxy, {
123
+ signal: controller.signal,
124
+ ...options,
125
+ headers: {
126
+ "fetch-url": url,
127
+ ...options.headers
128
+ }
129
+ });
130
+
131
+ if (options.verbose) {
132
+ console.log(`DONE fetching ${url}`);
133
+ }
134
+
135
+ clearTimeout(timeout);
136
+
137
+ return res;
138
+ } catch (fetchErr) {
139
+ clearTimeout(timeout);
140
+
141
+ if (fetchErr.name === "AbortError") {
142
+ return {
143
+ ok: false,
144
+ status: 408,
145
+ text: () => Promise.resolve("Timeout")
146
+ };
147
+ }
148
+
149
+ return {
150
+ ok: false,
151
+ status: 500,
152
+ text: () => Promise.resolve(fetchErr.message)
153
+ };
154
+ }
155
+ }
156
+
157
+ module.exports = proxyFetch;
package/rateLimit.js CHANGED
@@ -1,21 +1,21 @@
1
- const fetch = require("node-fetch");
2
-
3
- /**
4
- * Record the api access and return the rate limit result.
5
- * @async
6
- * @param {string} name - The name of the key.
7
- * @param {number} unitTime - The sliding window for rate limiting, in seconds.
8
- * @param {number} maxAccess - The total count of allowed accesses in a sliding window.
9
- * @returns {Promise<boolean>} This request should be allowed or not.
10
- */
11
- exports.isRateLimited = async (name, unitTime, maxAccess) => {
12
- try {
13
- const url = `https://rate-limit.certik-skynet.com?name=${name}&unitTime=${unitTime}&maxAccess=${maxAccess}`;
14
- const response = await fetch(url);
15
- const result = await response.json();
16
- if (result.remaining > 0) return false;
17
- return true;
18
- } catch {
19
- return false;
20
- }
21
- };
1
+ const fetch = require("node-fetch");
2
+
3
+ /**
4
+ * Record the api access and return the rate limit result.
5
+ * @async
6
+ * @param {string} name - The name of the key.
7
+ * @param {number} unitTime - The sliding window for rate limiting, in seconds.
8
+ * @param {number} maxAccess - The total count of allowed accesses in a sliding window.
9
+ * @returns {Promise<boolean>} This request should be allowed or not.
10
+ */
11
+ exports.isRateLimited = async (name, unitTime, maxAccess) => {
12
+ try {
13
+ const url = `https://rate-limit.certik-skynet.com?name=${name}&unitTime=${unitTime}&maxAccess=${maxAccess}`;
14
+ const response = await fetch(url);
15
+ const result = await response.json();
16
+ if (result.remaining > 0) return false;
17
+ return true;
18
+ } catch {
19
+ return false;
20
+ }
21
+ };