1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 | var _typeof = require("@babel/runtime/helpers/typeof");
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports["default"] = exports.ProxyModule = void 0;
|
9 | var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
10 | var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
11 | var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
12 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
13 | var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
14 | var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
15 | var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
16 | var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
17 | var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
18 | var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
19 | var _module = _interopRequireDefault(require("@lskjs/module"));
|
20 | var _asyncMapValues = _interopRequireDefault(require("@lskjs/utils/asyncMapValues"));
|
21 | var _find = _interopRequireDefault(require("lodash/find"));
|
22 | var _flatten = _interopRequireDefault(require("lodash/flatten"));
|
23 | var _max = _interopRequireDefault(require("lodash/max"));
|
24 | var _pick = _interopRequireDefault(require("lodash/pick"));
|
25 | var _uniq = _interopRequireDefault(require("lodash/uniq"));
|
26 | var _uniqBy = _interopRequireDefault(require("lodash/uniqBy"));
|
27 | var _collectMetrics = require("./collectMetrics");
|
28 | var _Proxy2 = require("./Proxy");
|
29 | var _setProxyWorker = require("./setProxyWorker");
|
30 | var _filterProxy = require("./utils/filterProxy");
|
31 | function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
32 | function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
33 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
34 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
35 | function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
36 | function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
37 |
|
38 | var isDebug = false;
|
39 | var ProxyModule = function (_Module) {
|
40 | (0, _inherits2["default"])(ProxyModule, _Module);
|
41 | var _super = _createSuper(ProxyModule);
|
42 | function ProxyModule() {
|
43 | var _this;
|
44 | (0, _classCallCheck2["default"])(this, ProxyModule);
|
45 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
46 | args[_key] = arguments[_key];
|
47 | }
|
48 | _this = _super.call.apply(_super, [this].concat(args));
|
49 | _this.setProxyWorker = _setProxyWorker.setProxyWorker;
|
50 | return _this;
|
51 | }
|
52 | (0, _createClass2["default"])(ProxyModule, [{
|
53 | key: "getActiveProvidersNames",
|
54 | value: function getActiveProvidersNames() {
|
55 | var _this2 = this;
|
56 | var res = Object.keys(this.config.providers || {}, function (provider) {
|
57 | return !!_this2.config.providers[provider] && !_this2.config.providers[provider].disabled;
|
58 | });
|
59 | return res;
|
60 | }
|
61 | }, {
|
62 | key: "getModules",
|
63 | value: function getModules() {
|
64 | return _objectSpread(_objectSpread({}, (0, _get2["default"])((0, _getPrototypeOf2["default"])(ProxyModule.prototype), "getModules", this).call(this)), {}, {
|
65 | providers: [Promise.resolve().then(function () {
|
66 | return _interopRequireWildcard(require('@lskjs/module/asyncModules'));
|
67 | }), {
|
68 | items: (0, _pick["default"])(this.providers, this.getActiveProvidersNames()),
|
69 | config: this.config.providers
|
70 | }],
|
71 | tests: [Promise.resolve().then(function () {
|
72 | return _interopRequireWildcard(require('./ProxyTests'));
|
73 | }), {
|
74 | tests: this.tests,
|
75 | config: this.config.tests
|
76 | }]
|
77 | });
|
78 | }
|
79 | }, {
|
80 | key: "runProvidersMethod",
|
81 | value: function () {
|
82 | var _runProvidersMethod = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee2(method) {
|
83 | var _this3 = this;
|
84 | var _len2,
|
85 | args,
|
86 | _key2,
|
87 | providers,
|
88 | _args2 = arguments;
|
89 | return _regenerator["default"].wrap(function _callee2$(_context2) {
|
90 | while (1) switch (_context2.prev = _context2.next) {
|
91 | case 0:
|
92 | for (_len2 = _args2.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
93 | args[_key2 - 1] = _args2[_key2];
|
94 | }
|
95 | _context2.next = 3;
|
96 | return this.module('providers.*');
|
97 | case 3:
|
98 | providers = _context2.sent;
|
99 | return _context2.abrupt("return", (0, _asyncMapValues["default"])(providers, function () {
|
100 | var _ref = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee(provider) {
|
101 | var res;
|
102 | return _regenerator["default"].wrap(function _callee$(_context) {
|
103 | while (1) switch (_context.prev = _context.next) {
|
104 | case 0:
|
105 | _context.prev = 0;
|
106 | _context.next = 3;
|
107 | return provider[method].apply(provider, args);
|
108 | case 3:
|
109 | res = _context.sent;
|
110 | return _context.abrupt("return", res);
|
111 | case 7:
|
112 | _context.prev = 7;
|
113 | _context.t0 = _context["catch"](0);
|
114 | _this3.log.error('[provider] err', provider, _context.t0);
|
115 | return _context.abrupt("return", null);
|
116 | case 11:
|
117 | case "end":
|
118 | return _context.stop();
|
119 | }
|
120 | }, _callee, null, [[0, 7]]);
|
121 | }));
|
122 | return function (_x2) {
|
123 | return _ref.apply(this, arguments);
|
124 | };
|
125 | }()));
|
126 | case 5:
|
127 | case "end":
|
128 | return _context2.stop();
|
129 | }
|
130 | }, _callee2, this);
|
131 | }));
|
132 | function runProvidersMethod(_x) {
|
133 | return _runProvidersMethod.apply(this, arguments);
|
134 | }
|
135 | return runProvidersMethod;
|
136 | }()
|
137 | }, {
|
138 | key: "getProxyStats",
|
139 | value: function () {
|
140 | var _getProxyStats = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee3(proxyList) {
|
141 | var tests;
|
142 | return _regenerator["default"].wrap(function _callee3$(_context3) {
|
143 | while (1) switch (_context3.prev = _context3.next) {
|
144 | case 0:
|
145 | _context3.next = 2;
|
146 | return this.module('tests');
|
147 | case 2:
|
148 | tests = _context3.sent;
|
149 | return _context3.abrupt("return", tests.getProxyStats(proxyList));
|
150 | case 4:
|
151 | case "end":
|
152 | return _context3.stop();
|
153 | }
|
154 | }, _callee3, this);
|
155 | }));
|
156 | function getProxyStats(_x3) {
|
157 | return _getProxyStats.apply(this, arguments);
|
158 | }
|
159 | return getProxyStats;
|
160 | }()
|
161 | }, {
|
162 | key: "getAllProxyList",
|
163 | value: function () {
|
164 | var _getAllProxyList = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee4() {
|
165 | var _ref2,
|
166 | _ref2$localhost,
|
167 | localhost,
|
168 | res,
|
169 | listOfLists,
|
170 | rawProxyList,
|
171 | _args4 = arguments;
|
172 | return _regenerator["default"].wrap(function _callee4$(_context4) {
|
173 | while (1) switch (_context4.prev = _context4.next) {
|
174 | case 0:
|
175 | _ref2 = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : {}, _ref2$localhost = _ref2.localhost, localhost = _ref2$localhost === void 0 ? false : _ref2$localhost;
|
176 | _context4.next = 3;
|
177 | return this.runProvidersMethod('getList');
|
178 | case 3:
|
179 | res = _context4.sent;
|
180 | listOfLists = Object.values(res).map(function (a) {
|
181 | return (a === null || a === void 0 ? void 0 : a.list) || [];
|
182 | });
|
183 | if (isDebug) listOfLists = listOfLists.map(function (l) {
|
184 | return l.slice(0, 2);
|
185 | });
|
186 | rawProxyList = (0, _uniqBy["default"])((0, _flatten["default"])(listOfLists), 'key');
|
187 | if (!localhost) {
|
188 | _context4.next = 9;
|
189 | break;
|
190 | }
|
191 | return _context4.abrupt("return", [new _Proxy2.Proxy({
|
192 | provider: 'localhost'
|
193 | })].concat((0, _toConsumableArray2["default"])(rawProxyList)));
|
194 | case 9:
|
195 | return _context4.abrupt("return", rawProxyList);
|
196 | case 10:
|
197 | case "end":
|
198 | return _context4.stop();
|
199 | }
|
200 | }, _callee4, this);
|
201 | }));
|
202 | function getAllProxyList() {
|
203 | return _getAllProxyList.apply(this, arguments);
|
204 | }
|
205 | return getAllProxyList;
|
206 | }()
|
207 | }, {
|
208 | key: "fetchProxyList",
|
209 | value: function () {
|
210 | var _fetchProxyList = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee5() {
|
211 | var res, proxies;
|
212 | return _regenerator["default"].wrap(function _callee5$(_context5) {
|
213 | while (1) switch (_context5.prev = _context5.next) {
|
214 | case 0:
|
215 | _context5.next = 2;
|
216 | return this.runProvidersMethod('fetchList');
|
217 | case 2:
|
218 | res = _context5.sent;
|
219 | proxies = (0, _flatten["default"])(Object.values(res).map(function (a) {
|
220 | return a || [];
|
221 | }));
|
222 | return _context5.abrupt("return", proxies);
|
223 | case 5:
|
224 | case "end":
|
225 | return _context5.stop();
|
226 | }
|
227 | }, _callee5, this);
|
228 | }));
|
229 | function fetchProxyList() {
|
230 | return _fetchProxyList.apply(this, arguments);
|
231 | }
|
232 | return fetchProxyList;
|
233 | }()
|
234 | }, {
|
235 | key: "getProxyTestsResults",
|
236 | value: function () {
|
237 | var _getProxyTestsResults = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee6() {
|
238 | var tests;
|
239 | return _regenerator["default"].wrap(function _callee6$(_context6) {
|
240 | while (1) switch (_context6.prev = _context6.next) {
|
241 | case 0:
|
242 | _context6.next = 2;
|
243 | return this.module('tests');
|
244 | case 2:
|
245 | tests = _context6.sent;
|
246 | return _context6.abrupt("return", tests.getResults());
|
247 | case 4:
|
248 | case "end":
|
249 | return _context6.stop();
|
250 | }
|
251 | }, _callee6, this);
|
252 | }));
|
253 | function getProxyTestsResults() {
|
254 | return _getProxyTestsResults.apply(this, arguments);
|
255 | }
|
256 | return getProxyTestsResults;
|
257 | }()
|
258 | }, {
|
259 | key: "runProxyTests",
|
260 | value: function () {
|
261 | var _runProxyTests = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee7(proxyList) {
|
262 | var tests;
|
263 | return _regenerator["default"].wrap(function _callee7$(_context7) {
|
264 | while (1) switch (_context7.prev = _context7.next) {
|
265 | case 0:
|
266 | _context7.next = 2;
|
267 | return this.module('tests');
|
268 | case 2:
|
269 | tests = _context7.sent;
|
270 | if (proxyList) {
|
271 | _context7.next = 7;
|
272 | break;
|
273 | }
|
274 | _context7.next = 6;
|
275 | return this.getAllProxyList({
|
276 | localhost: true
|
277 | });
|
278 | case 6:
|
279 | proxyList = _context7.sent;
|
280 | case 7:
|
281 | return _context7.abrupt("return", tests.runTests(proxyList));
|
282 | case 8:
|
283 | case "end":
|
284 | return _context7.stop();
|
285 | }
|
286 | }, _callee7, this);
|
287 | }));
|
288 | function runProxyTests(_x4) {
|
289 | return _runProxyTests.apply(this, arguments);
|
290 | }
|
291 | return runProxyTests;
|
292 | }()
|
293 | }, {
|
294 | key: "runProxyTest",
|
295 | value: function () {
|
296 | var _runProxyTest = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee8(_ref3) {
|
297 | var proxyKey, testId, force, tests, proxyList, proxy;
|
298 | return _regenerator["default"].wrap(function _callee8$(_context8) {
|
299 | while (1) switch (_context8.prev = _context8.next) {
|
300 | case 0:
|
301 | proxyKey = _ref3.proxyKey, testId = _ref3.testId, force = _ref3.force;
|
302 | _context8.next = 3;
|
303 | return this.module('tests');
|
304 | case 3:
|
305 | tests = _context8.sent;
|
306 | _context8.next = 6;
|
307 | return this.getAllProxyList();
|
308 | case 6:
|
309 | proxyList = _context8.sent;
|
310 | proxy = (0, _find["default"])(proxyList, {
|
311 | key: proxyKey
|
312 | });
|
313 | return _context8.abrupt("return", tests.runTest({
|
314 | proxy: proxy,
|
315 | testId: testId,
|
316 | force: force
|
317 | }));
|
318 | case 9:
|
319 | case "end":
|
320 | return _context8.stop();
|
321 | }
|
322 | }, _callee8, this);
|
323 | }));
|
324 | function runProxyTest(_x5) {
|
325 | return _runProxyTest.apply(this, arguments);
|
326 | }
|
327 | return runProxyTest;
|
328 | }()
|
329 | }, {
|
330 | key: "getList",
|
331 | value: function () {
|
332 | var _getList = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee9() {
|
333 | var filter,
|
334 | res,
|
335 | fetchedAt,
|
336 | proxyList,
|
337 | proxyStats,
|
338 | filteredProxyList,
|
339 | _args9 = arguments;
|
340 | return _regenerator["default"].wrap(function _callee9$(_context9) {
|
341 | while (1) switch (_context9.prev = _context9.next) {
|
342 | case 0:
|
343 | filter = _args9.length > 0 && _args9[0] !== undefined ? _args9[0] : {};
|
344 | _context9.next = 3;
|
345 | return this.runProvidersMethod('getList');
|
346 | case 3:
|
347 | res = _context9.sent;
|
348 | fetchedAt = (0, _max["default"])(Object.values(res).map(function (a) {
|
349 | return a === null || a === void 0 ? void 0 : a.fetchedAt;
|
350 | }));
|
351 | _context9.next = 7;
|
352 | return this.getAllProxyList();
|
353 | case 7:
|
354 | proxyList = _context9.sent;
|
355 | _context9.next = 10;
|
356 | return this.getProxyStats(proxyList);
|
357 | case 10:
|
358 | proxyStats = _context9.sent;
|
359 | proxyList = proxyList.map(function (p) {
|
360 | var _ref4;
|
361 |
|
362 | var proxyTests = proxyStats[p.key] || [];
|
363 | proxyTests = proxyTests.filter(function (test) {
|
364 | return test.status === 'success';
|
365 | });
|
366 | var testIds = proxyTests.map(function (t) {
|
367 | var _t$test;
|
368 | return t === null || t === void 0 ? void 0 : (_t$test = t.test) === null || _t$test === void 0 ? void 0 : _t$test.id;
|
369 | });
|
370 | var tagsList = proxyTests.map(function (t) {
|
371 | var _t$test2;
|
372 | return t === null || t === void 0 ? void 0 : (_t$test2 = t.test) === null || _t$test2 === void 0 ? void 0 : _t$test2.tags;
|
373 | });
|
374 | var testTags = (0, _uniq["default"])((_ref4 = []).concat.apply(_ref4, (0, _toConsumableArray2["default"])(tagsList)));
|
375 |
|
376 | p.targets = testTags;
|
377 |
|
378 | p.tests = testIds;
|
379 | return p;
|
380 | });
|
381 | this.setProxyWorker(proxyList, this.config.workers);
|
382 |
|
383 |
|
384 | filteredProxyList = (0, _filterProxy.filterProxy)(proxyList, filter);
|
385 | return _context9.abrupt("return", {
|
386 | fetchedAt: fetchedAt,
|
387 |
|
388 | total: proxyList.length,
|
389 | count: filteredProxyList.length,
|
390 | list: filteredProxyList
|
391 | });
|
392 | case 15:
|
393 | case "end":
|
394 | return _context9.stop();
|
395 | }
|
396 | }, _callee9, this);
|
397 | }));
|
398 | function getList() {
|
399 | return _getList.apply(this, arguments);
|
400 | }
|
401 | return getList;
|
402 | }()
|
403 | }, {
|
404 | key: "updateProxyList",
|
405 | value: function () {
|
406 | var _updateProxyList = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee10() {
|
407 | var res;
|
408 | return _regenerator["default"].wrap(function _callee10$(_context10) {
|
409 | while (1) switch (_context10.prev = _context10.next) {
|
410 | case 0:
|
411 |
|
412 | this.log.trace('[updateProxyList] start');
|
413 | _context10.next = 3;
|
414 | return this.runProvidersMethod('update');
|
415 | case 3:
|
416 | res = _context10.sent;
|
417 | this.log.debug('[updateProxyList]', res);
|
418 | case 5:
|
419 | case "end":
|
420 | return _context10.stop();
|
421 | }
|
422 | }, _callee10, this);
|
423 | }));
|
424 | function updateProxyList() {
|
425 | return _updateProxyList.apply(this, arguments);
|
426 | }
|
427 | return updateProxyList;
|
428 | }()
|
429 | }, {
|
430 | key: "updateProxyTests",
|
431 | value: function () {
|
432 | var _updateProxyTests = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee11() {
|
433 | var res;
|
434 | return _regenerator["default"].wrap(function _callee11$(_context11) {
|
435 | while (1) switch (_context11.prev = _context11.next) {
|
436 | case 0:
|
437 |
|
438 | this.log.trace('[updateProxyTests] start');
|
439 | _context11.next = 3;
|
440 | return this.runProxyTests();
|
441 | case 3:
|
442 | res = _context11.sent;
|
443 |
|
444 | this.log.debug('[updateProxyTests]', res.map(function (_ref5) {
|
445 | var id = _ref5.id,
|
446 | status = _ref5.status;
|
447 | return "".concat(id, ": ").concat(status);
|
448 | }));
|
449 | case 5:
|
450 | case "end":
|
451 | return _context11.stop();
|
452 | }
|
453 | }, _callee11, this);
|
454 | }));
|
455 | function updateProxyTests() {
|
456 | return _updateProxyTests.apply(this, arguments);
|
457 | }
|
458 | return updateProxyTests;
|
459 | }()
|
460 | }, {
|
461 | key: "buyProxies",
|
462 | value: function () {
|
463 | var _buyProxies = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee12() {
|
464 | return _regenerator["default"].wrap(function _callee12$(_context12) {
|
465 | while (1) switch (_context12.prev = _context12.next) {
|
466 | case 0:
|
467 |
|
468 | this.log.trace('[buyProxies] nothing');
|
469 | case 1:
|
470 | case "end":
|
471 | return _context12.stop();
|
472 | }
|
473 | }, _callee12, this);
|
474 | }));
|
475 | function buyProxies() {
|
476 | return _buyProxies.apply(this, arguments);
|
477 | }
|
478 | return buyProxies;
|
479 | }()
|
480 | }, {
|
481 | key: "metrics",
|
482 | value: function () {
|
483 | var _metrics = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee13() {
|
484 | return _regenerator["default"].wrap(function _callee13$(_context13) {
|
485 | while (1) switch (_context13.prev = _context13.next) {
|
486 | case 0:
|
487 | return _context13.abrupt("return", _collectMetrics.collectMetrics.call(this));
|
488 | case 1:
|
489 | case "end":
|
490 | return _context13.stop();
|
491 | }
|
492 | }, _callee13, this);
|
493 | }));
|
494 | function metrics() {
|
495 | return _metrics.apply(this, arguments);
|
496 | }
|
497 | return metrics;
|
498 | }()
|
499 | }]);
|
500 | return ProxyModule;
|
501 | }(_module["default"]);
|
502 | exports.ProxyModule = ProxyModule;
|
503 | var _default = ProxyModule;
|
504 | exports["default"] = _default;
|
505 |
|
\ | No newline at end of file |