@hyperwatch/hyperwatch 3.8.2 → 3.9.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/ips.js DELETED
@@ -1,491 +0,0 @@
1
- const ips = [
2
- '100.1.235.26',
3
- '100.2.154.57',
4
- '104.12.120.212',
5
- '104.144.122.202',
6
- '104.153.71.100',
7
- '104.167.172.65',
8
- '104.184.3.230',
9
- '104.220.155.240',
10
- '104.251.243.147',
11
- '107.205.233.14',
12
- '107.77.241.55',
13
- '108.162.28.6',
14
- '108.184.203.175',
15
- '108.28.122.122',
16
- '108.46.210.196',
17
- '108.52.100.136',
18
- '108.58.167.30',
19
- '12.178.100.56',
20
- '135.180.110.60',
21
- '136.24.176.11',
22
- '137.118.167.184',
23
- '138.88.146.210',
24
- '141.149.53.222',
25
- '142.196.176.105',
26
- '152.8.31.212',
27
- '161.77.38.170',
28
- '161.77.38.174',
29
- '162.252.99.46',
30
- '164.153.222.170',
31
- '170.250.49.166',
32
- '172.112.242.95',
33
- '172.249.47.160',
34
- '172.58.184.251',
35
- '172.58.185.192',
36
- '173.11.64.145',
37
- '173.167.46.61',
38
- '173.168.120.166',
39
- '173.171.0.38',
40
- '173.48.135.221',
41
- '173.54.10.179',
42
- '173.70.63.155',
43
- '173.73.167.51',
44
- '173.73.251.45',
45
- '173.80.225.210',
46
- '174.44.17.42',
47
- '174.85.194.95',
48
- '181.214.132.220',
49
- '181.214.178.240',
50
- '181.214.178.74',
51
- '181.214.178.85',
52
- '181.214.178.93',
53
- '181.214.179.129',
54
- '181.214.179.13',
55
- '181.214.179.24',
56
- '181.214.179.252',
57
- '181.214.180.128',
58
- '181.214.181.141',
59
- '181.214.181.243',
60
- '181.214.181.89',
61
- '181.214.183.115',
62
- '181.214.184.100',
63
- '181.214.184.148',
64
- '181.214.184.157',
65
- '181.214.186.117',
66
- '181.214.186.25',
67
- '181.214.186.90',
68
- '181.214.188.70',
69
- '181.214.189.104',
70
- '181.214.189.21',
71
- '181.214.189.60',
72
- '181.214.190.174',
73
- '181.214.190.219',
74
- '181.214.191.11',
75
- '181.214.191.5',
76
- '181.214.191.88',
77
- '181.214.248.187',
78
- '181.214.249.56',
79
- '181.215.121.249',
80
- '181.215.200.17',
81
- '181.215.50.197',
82
- '181.215.50.249',
83
- '181.215.51.7',
84
- '181.215.64.169',
85
- '181.215.74.121',
86
- '181.215.74.134',
87
- '181.215.74.206',
88
- '181.215.74.36',
89
- '181.215.74.85',
90
- '181.215.75.188',
91
- '181.215.75.39',
92
- '181.215.76.236',
93
- '181.215.76.246',
94
- '181.215.78.137',
95
- '181.215.78.157',
96
- '181.215.78.223',
97
- '181.215.79.169',
98
- '181.215.79.79',
99
- '181.215.83.139',
100
- '181.215.93.11',
101
- '184.155.173.139',
102
- '184.182.80.246',
103
- '190.123.219.82',
104
- '191.101.212.254',
105
- '191.101.212.44',
106
- '191.101.213.16',
107
- '191.101.215.133',
108
- '191.96.80.44',
109
- '191.96.81.162',
110
- '191.96.81.171',
111
- '191.96.81.22',
112
- '191.96.82.142',
113
- '191.96.82.5',
114
- '191.96.83.10',
115
- '191.96.83.195',
116
- '191.96.83.223',
117
- '191.96.83.64',
118
- '191.96.84.157',
119
- '191.96.84.247',
120
- '191.96.84.255',
121
- '191.96.85.108',
122
- '191.96.85.82',
123
- '191.96.86.111',
124
- '191.96.86.224',
125
- '191.96.86.79',
126
- '191.96.87.118',
127
- '191.96.87.169',
128
- '191.96.87.212',
129
- '199.66.65.107',
130
- '2001:558:6040:102:18:d3b9:59e6:96e7',
131
- '2001:558:6040:5:4001:2d59:63fe:24b',
132
- '204.116.26.56',
133
- '204.84.50.201',
134
- '205.201.97.170',
135
- '205.237.94.135',
136
- '205.237.94.151',
137
- '205.237.94.156',
138
- '205.237.94.215',
139
- '205.237.94.255',
140
- '205.237.95.153',
141
- '205.237.95.167',
142
- '205.237.95.231',
143
- '205.237.95.60',
144
- '205.243.122.234',
145
- '206.255.73.10',
146
- '206.74.78.137',
147
- '207.138.105.250',
148
- '208.104.234.105',
149
- '208.105.169.158',
150
- '209.122.206.83',
151
- '216.109.167.112',
152
- '216.109.167.60',
153
- '216.128.232.153',
154
- '216.18.253.130',
155
- '216.19.202.47',
156
- '216.19.207.51',
157
- '216.223.213.172',
158
- '216.223.218.10',
159
- '216.80.67.30',
160
- '23.251.64.146',
161
- '24.127.132.197',
162
- '24.129.119.63',
163
- '24.1.37.254',
164
- '24.161.93.132',
165
- '24.173.244.114',
166
- '24.189.84.169',
167
- '24.197.105.69',
168
- '24.207.187.83',
169
- '24.217.166.124',
170
- '24.251.39.19',
171
- '24.252.93.203',
172
- '2600:1700:1151:2c50:f145:e847:6a05:3e46',
173
- '2600:1700:1390:2200:55df:3ae5:989d:1576',
174
- '2600:1700:13a0:7a10:35ae:c7a2:d31:923f',
175
- '2600:1700:1a40:1720:91a8:cec4:606e:d745',
176
- '2600:1700:1e30:f9b0:5d3c:52f:4770:4fc0',
177
- '2600:1700:2320:1ef0:69e4:5be6:1b6a:72d6',
178
- '2600:1700:28e0:cf80:bda7:ae38:be10:c0cb',
179
- '2600:1700:37a0:6131:c8dc:6c25:5db4:2ef4',
180
- '2600:1700:3d06:a000:4583:2308:9573:48a',
181
- '2600:1700:4350:9800:f46b:dc1e:a610:80a6',
182
- '2600:1700:4819:cfa0:7462:9a3e:6a9f:d8b5',
183
- '2600:1700:5230:66a0:34bf:260f:190a:7dbc',
184
- '2600:1700:52c9:9800:c53f:1c45:ea0a:4a8',
185
- '2600:1700:5f4a:8000:1040:e022:f4bc:6ccd',
186
- '2600:1700:6a0:8a60:f993:92e5:61aa:4f84',
187
- '2600:1700:8490:37a0:119b:504c:8b6c:4c23',
188
- '2600:1700:8976:2960:ddd6:bea8:745a:2c8b',
189
- '2600:1700:9280:7bb0:607a:d59e:989:bda',
190
- '2600:1700:95e0:e21f::1007',
191
- '2600:1700:c70:2b10:7118:aa71:d597:3a9a',
192
- '2600:1700:ccb1:1aa0:80b6:9ff1:e50:6656',
193
- '2600:6c44:747f:e9a5:25ac:f22f:bbe6:5977',
194
- '2600:8800:188d:e500:6d96:feb8:d4c9:b7bf',
195
- '2600:8800:b500:2500:4949:6d94:4c47:dd8b',
196
- '2600:8803:7b8d:e500:6941:723c:5ce0:7b3f',
197
- '2600:8807:c012:6b00:d466:7f79:6ef1:d546',
198
- '2601:18a:c67f:5380::e803',
199
- '2601:18d:8801:7500:8052:8ebf:54d6:d54e',
200
- '2601:196:8900:f7b0:956a:cdfd:d437:6f91',
201
- '2601:19b:b00:1970:3c7e:ab79:e2fa:5454',
202
- '2601:19b:b00:1970:8063:747e:2e67:ff5e',
203
- '2601:19b:b00:1970:8914:b668:6de3:ae8d',
204
- '2601:1c0:6101:8e60:4dd0:b0ee:fe2:42d7',
205
- '2601:1c0:6101:8e60:e904:827a:e748:5785',
206
- '2601:1c1:8801:7810:cdbf:5d1c:922:be98',
207
- '2601:249:b00:71f0:3c8c:fe95:f1c5:6c2b',
208
- '2601:285:8700:13e8:68bf:ed2a:5441:6a86',
209
- '2601:2c7:77f:9530:b13d:342e:ca0a:4f6f',
210
- '2601:343:c201:5d8b:14c5:5074:141f:c8f6',
211
- '2601:343:c203:70d0:1402:fabc:4a4a:ab3b',
212
- '2601:405:c100:c0a0:40f3:6a95:38b3:dee8',
213
- '2601:407:8600:7400:d489:ddc5:b277:c15c',
214
- '2601:547:500:5ff0:7c9e:a3cc:11ac:bc1',
215
- '2601:58a:8300:5720:1d37:28dc:91a9:25f7',
216
- '2601:58b:c680:26f0:5ac:7f0d:13a8:5181',
217
- '2601:58c:c580:cc60:cdd4:1f6f:8c55:dde7',
218
- '2601:601:9080:9430:49fd:ce19:771b:13f7',
219
- '2601:646:8d01:fc60:fcbe:fe64:f708:bfdf',
220
- '2601:680:ca80:c450:4953:2368:7d1e:ee49',
221
- '2601:680:ca80:c450:6cef:780c:122f:d47d',
222
- '2601:87:0:6870:9c1d:962c:f76d:38e3',
223
- '2601:8c0:c202:4e50:18b7:162b:6f7:8a4c',
224
- '2601:8c:4302:4da0:55a1:4519:3f6d:644c',
225
- '2601:940:c000:4860:745d:c3f:57cc:db4b',
226
- '2601:989:4580:8050:cd16:1fea:3cb6:a8bf',
227
- '2601:c6:c780:8f60:f0d5:c6bd:df80:74f0',
228
- '2601:cf:8200:10b9:5420:3b32:c6c2:b977',
229
- '2603:3005:5205:1e00:3535:70d6:4090:f0a0',
230
- '2603:3015:bed:6000:e82c:7933:6684:8647',
231
- '2603:6010:e403:678a:cc3a:e6e1:7da1:7fe5',
232
- '2603:6010:f240:1700:e1b4:f991:cac0:b1d9',
233
- '2603:6011:3438:5f00:314f:ee8f:d4bb:b59b',
234
- '2603:6011:4500:178:bd05:db3d:99d:191a',
235
- '2603:6011:dc3f:e3bb:25af:a261:32e5:65cb',
236
- '2603:6080:2a40:168:119:bf91:4136:b7b6',
237
- '2603:6080:5301:9600:841:4223:4c85:80c1',
238
- '2603:6081:2407:dbd4:e4c4:5b2c:81a2:e2d1',
239
- '2603:6081:2407:dbd4:e521:b958:489e:c47e',
240
- '2603:7000:a802:eb9c:341a:3107:4990:46b',
241
- '2603:8000:7601:c12:6444:650:2d5c:c804',
242
- '2603:8080:2040:94:35ab:f07d:9643:43d1',
243
- '2603:8080:5700:b300:6db1:de11:aa8a:532c',
244
- '2603:8080:7440:870b:ac9a:b35:3581:5a7f',
245
- '2603:8080:fb06:955c:54a:79a7:c626:e48e',
246
- '2603:9000:ca1b:1d4:7d96:1fc8:430b:7417',
247
- '2603:9000:eb09:500:dcd8:2e09:832c:b97f',
248
- '2603:9001:1301:129a:b003:9e6d:7636:c867',
249
- '2603:9001:2400:e954:281e:36c7:dca7:6fe7',
250
- '2603:9001:3d00:652a:443b:688:d161:72c7',
251
- '2605:9480:424:ffd0:e979:c104:9ed:332',
252
- '2605:a601:a66a:ac00:acee:a3a1:ffe4:335e',
253
- '2606:5580:30a:7fda:2532:cc3e:6218:f776',
254
- '2607:fb90:1d6e:dc41:b9fd:9a2a:948b:96be',
255
- '38.131.153.141',
256
- '38.131.153.178',
257
- '38.131.154.132',
258
- '38.131.154.177',
259
- '38.131.154.179',
260
- '38.131.154.206',
261
- '38.131.154.37',
262
- '38.131.154.44',
263
- '38.131.155.223',
264
- '38.131.156.106',
265
- '38.131.156.36',
266
- '38.131.156.47',
267
- '38.131.157.55',
268
- '38.131.158.144',
269
- '38.131.158.216',
270
- '38.131.159.46',
271
- '38.131.159.8',
272
- '38.145.76.112',
273
- '38.145.76.21',
274
- '38.145.76.244',
275
- '38.145.76.37',
276
- '38.145.76.44',
277
- '38.145.76.55',
278
- '38.145.77.10',
279
- '38.145.77.106',
280
- '38.145.77.107',
281
- '38.145.77.226',
282
- '38.145.78.170',
283
- '38.145.78.32',
284
- '38.145.78.41',
285
- '38.145.79.143',
286
- '38.145.80.195',
287
- '38.145.80.78',
288
- '38.145.81.116',
289
- '38.145.81.27',
290
- '38.145.82.195',
291
- '38.145.82.203',
292
- '38.145.82.245',
293
- '38.145.83.16',
294
- '38.145.83.65',
295
- '38.145.84.13',
296
- '38.145.84.208',
297
- '38.145.84.81',
298
- '38.145.85.188',
299
- '38.145.85.217',
300
- '38.145.85.43',
301
- '38.145.85.77',
302
- '38.145.86.136',
303
- '38.145.86.177',
304
- '38.145.86.33',
305
- '38.145.87.184',
306
- '38.145.87.205',
307
- '38.145.87.55',
308
- '38.145.88.227',
309
- '38.145.88.51',
310
- '38.145.88.69',
311
- '38.145.88.9',
312
- '38.145.89.210',
313
- '38.145.89.31',
314
- '38.145.89.55',
315
- '38.145.89.59',
316
- '38.145.90.32',
317
- '38.145.91.17',
318
- '38.145.92.117',
319
- '38.145.94.201',
320
- '38.145.94.245',
321
- '38.145.95.116',
322
- '38.145.95.135',
323
- '38.145.95.45',
324
- '38.145.96.135',
325
- '38.145.96.232',
326
- '38.145.96.33',
327
- '38.145.97.246',
328
- '38.29.206.101',
329
- '38.93.227.214',
330
- '38.93.227.93',
331
- '4.34.52.202',
332
- '45.40.120.134',
333
- '45.40.121.102',
334
- '45.40.122.134',
335
- '45.40.122.166',
336
- '45.40.122.177',
337
- '45.40.125.250',
338
- '45.40.125.80',
339
- '45.40.126.142',
340
- '45.40.126.49',
341
- '45.40.127.187',
342
- '45.40.127.27',
343
- '47.148.98.2',
344
- '47.149.150.27',
345
- '47.186.226.189',
346
- '47.188.129.68',
347
- '47.196.0.219',
348
- '47.201.144.126',
349
- '47.217.97.30',
350
- '47.224.34.31',
351
- '50.248.78.1',
352
- '50.248.78.10',
353
- '50.248.78.11',
354
- '50.248.78.12',
355
- '50.248.78.13',
356
- '50.248.78.3',
357
- '50.248.78.4',
358
- '50.248.78.5',
359
- '50.248.78.6',
360
- '50.248.78.7',
361
- '50.248.78.8',
362
- '50.248.78.9',
363
- '50.26.101.122',
364
- '50.4.147.67',
365
- '50.47.106.71',
366
- '50.77.55.85',
367
- '64.184.117.215',
368
- '64.201.232.172',
369
- '64.6.3.41',
370
- '64.64.144.138',
371
- '64.77.244.139',
372
- '64.99.226.149',
373
- '65.122.128.194',
374
- '65.190.19.85',
375
- '65.191.56.161',
376
- '66.108.198.54',
377
- '66.112.240.85',
378
- '66.153.215.65',
379
- '66.168.9.203',
380
- '66.214.177.105',
381
- '66.216.205.161',
382
- '66.226.118.70',
383
- '66.26.67.54',
384
- '67.137.79.196',
385
- '67.189.8.211',
386
- '67.227.97.32',
387
- '67.4.167.78',
388
- '67.53.252.242',
389
- '67.76.36.69',
390
- '68.110.229.112',
391
- '68.112.24.2',
392
- '68.173.155.242',
393
- '68.190.229.195',
394
- '68.190.60.189',
395
- '68.198.49.203',
396
- '68.198.64.119',
397
- '68.224.227.170',
398
- '68.226.156.131',
399
- '68.250.14.169',
400
- '68.42.33.195',
401
- '68.56.111.76',
402
- '68.67.95.44',
403
- '69.129.238.218',
404
- '69.129.238.219',
405
- '69.129.238.222',
406
- '69.131.98.63',
407
- '69.137.237.138',
408
- '69.174.143.202',
409
- '69.174.152.16',
410
- '69.193.186.100',
411
- '69.217.242.21',
412
- '70.175.17.69',
413
- '70.175.17.78',
414
- '70.190.1.46',
415
- '70.90.76.142',
416
- '70.95.129.0',
417
- '71.11.213.24',
418
- '71.115.29.220',
419
- '71.126.242.202',
420
- '71.135.85.207',
421
- '71.190.101.250',
422
- '71.199.77.96',
423
- '71.233.179.116',
424
- '71.66.95.227',
425
- '71.81.238.216',
426
- '71.82.224.119',
427
- '71.90.188.169',
428
- '71.92.93.29',
429
- '71.93.241.236',
430
- '73.11.1.201',
431
- '73.144.206.167',
432
- '73.149.92.14',
433
- '73.199.211.143',
434
- '73.214.98.175',
435
- '73.223.220.244',
436
- '73.229.63.19',
437
- '73.32.141.164',
438
- '73.61.14.38',
439
- '73.62.240.227',
440
- '73.79.229.22',
441
- '73.79.229.32',
442
- '73.79.230.132',
443
- '73.79.230.186',
444
- '73.79.233.36',
445
- '73.79.233.95',
446
- '73.95.136.147',
447
- '73.95.136.255',
448
- '73.95.137.10',
449
- '73.95.137.30',
450
- '73.95.138.178',
451
- '73.95.138.192',
452
- '73.95.139.123',
453
- '73.95.139.81',
454
- '74.101.169.167',
455
- '74.192.162.214',
456
- '74.193.66.37',
457
- '74.194.60.43',
458
- '74.76.235.39',
459
- '75.111.181.218',
460
- '75.134.184.48',
461
- '75.136.58.184',
462
- '75.137.68.170',
463
- '75.151.109.206',
464
- '75.161.208.211',
465
- '75.164.148.47',
466
- '75.167.113.76',
467
- '75.177.198.84',
468
- '75.186.99.160',
469
- '75.188.17.209',
470
- '75.22.142.208',
471
- '75.75.95.25',
472
- '75.76.155.121',
473
- '80.86.25.74',
474
- '96.227.214.233',
475
- '96.230.38.61',
476
- '96.237.249.136',
477
- '96.255.161.169',
478
- '97.100.123.130',
479
- '97.120.59.156',
480
- '97.82.200.247',
481
- '97.93.49.203',
482
- '98.111.202.134',
483
- '98.193.112.177',
484
- '98.196.17.126',
485
- '98.227.63.44',
486
- '99.121.119.63',
487
- '99.53.214.71',
488
- '99.99.72.252',
489
- ];
490
-
491
- module.exports = ips;
@@ -1,145 +0,0 @@
1
- const path = require('path');
2
-
3
- const useragent = require('../src/lib/useragent');
4
-
5
- // const filename = '../test/uas.json';
6
- // const filename = '../test/uas-backup.json';
7
- // const filename = '../data/ua/2020-06-23.json';
8
-
9
- function average(nums) {
10
- return nums.reduce((a, b) => a + b) / nums.length;
11
- }
12
-
13
- // const uas21 = require('../data/ua/2020-06-21.json');
14
- // const uas22 = require('../data/ua/2020-06-22.json');
15
- // const uas = require('../data/ua/2020-06-28.json');
16
- // const uas24 = require('../data/ua/2020-06-24.json');
17
-
18
- // const uas = { ...uas21, ...uas22, ...uas23, ...uas24 };
19
-
20
- const date = new Date().toISOString().slice(0, 10);
21
- // const date = '2020-09-18';
22
-
23
- const filename = path.join(__dirname, '../data/ua', `${date}-parsed.json`);
24
- let uas;
25
- try {
26
- uas = require(filename);
27
- } catch (err) {
28
- uas = [];
29
- }
30
-
31
- const total = Object.keys(uas).length;
32
- console.log(`Total ${total}`);
33
-
34
- const newBenchmark = {};
35
- const oldBenchmark = {};
36
- const combinedBenchmark = {};
37
-
38
- const newMisses = [];
39
- const oldMisses = [];
40
- const combinedMisses = [];
41
-
42
- function shuffle(array) {
43
- let currentIndex = array.length,
44
- temporaryValue,
45
- randomIndex;
46
-
47
- // While there remain elements to shuffle...
48
- while (0 !== currentIndex) {
49
- // Pick a remaining element...
50
- randomIndex = Math.floor(Math.random() * currentIndex);
51
- currentIndex -= 1;
52
-
53
- // And swap it with the current element.
54
- temporaryValue = array[currentIndex];
55
- array[currentIndex] = array[randomIndex];
56
- array[randomIndex] = temporaryValue;
57
- }
58
-
59
- return array;
60
- }
61
-
62
- const uasList = Object.keys(uas);
63
- shuffle(uasList);
64
-
65
- setTimeout(() => {
66
- // Warm everything
67
- for (const ua of uasList) {
68
- useragent.parse(ua, true, true, true);
69
- }
70
-
71
- for (const ua of uasList) {
72
- const combinedStart = process.hrtime.bigint();
73
- const combinedResult = useragent.parse(ua, true, true, true);
74
- const combinedEnd = process.hrtime.bigint();
75
- if (!combinedResult.family) {
76
- combinedMisses.push(ua);
77
- }
78
- combinedBenchmark[ua] = Number(combinedEnd - combinedStart) / 1000 / 1000;
79
-
80
- const newStart = process.hrtime.bigint();
81
- const newResult = useragent.parse(ua, true, true, false);
82
- const newEnd = process.hrtime.bigint();
83
- if (!newResult.family) {
84
- newMisses.push(ua);
85
- }
86
- newBenchmark[ua] = Number(newEnd - newStart) / 1000 / 1000;
87
-
88
- // if (newResult.family) {
89
- // continue;
90
- // }
91
-
92
- const oldStart = process.hrtime.bigint();
93
- const oldResult = useragent.parse(ua, false, false, true);
94
- const oldEnd = process.hrtime.bigint();
95
- if (!oldResult.family) {
96
- oldMisses.push(ua);
97
- }
98
- oldBenchmark[ua] = Number(oldEnd - oldStart) / 1000 / 1000;
99
-
100
- // if (oldResult.family) {
101
- // console.log('->', oldResult.family);
102
- // }
103
- }
104
-
105
- console.log(Object.values(newBenchmark));
106
-
107
- console.log({ New: average(Object.values(newBenchmark)) });
108
- console.log({ Old: average(Object.values(oldBenchmark)) });
109
- console.log({ Combined: average(Object.values(combinedBenchmark)) });
110
-
111
- console.log(
112
- { NewMisses: newMisses.length },
113
- (100 * newMisses.length) / total
114
- );
115
- console.log(
116
- { OldMisses: oldMisses.length },
117
- (100 * oldMisses.length) / total
118
- );
119
- console.log(
120
- { CombinedMisses: combinedMisses.length },
121
- (100 * combinedMisses.length) / total
122
- );
123
- // console.log(newMisses);
124
-
125
- console.log({ newMisses });
126
-
127
- console.log({ combinedMisses });
128
-
129
- // console.log(
130
- // Object.entries(useragent.matchingRegexes['hyperwatch-core']).sort(
131
- // (a, b) => b[1] - a[1]
132
- // )
133
- // );
134
-
135
- // console.log(
136
- // Object.entries(useragent.matchingRegexes['hyperwatch-extra']).sort(
137
- // (a, b) => b[1] - a[1]
138
- // )
139
- // );
140
-
141
- // console.log(Object.entries(newBenchmark).sort((a, b) => b[1] - a[1]));
142
- }, 1 * 1000);
143
-
144
- // When we run Chrome's profiler, it can be handy to delay exit
145
- setTimeout(() => process.exit(), 30 * 1000);