@rafikidota/cuba-ofertas-scraping 0.26.3 → 0.27.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/dist/modules/cloudflare/cloudflare.service.js +9 -1
- package/dist/modules/cloudflare/cloudflare.service.js.map +1 -1
- package/dist/modules/delayer/delayer.service.js +8 -0
- package/dist/modules/delayer/delayer.service.js.map +1 -1
- package/dist/modules/delayer/use-cases/delayer-mapper.service.d.ts +0 -2
- package/dist/modules/delayer/use-cases/delayer-mapper.service.js +7 -18
- package/dist/modules/delayer/use-cases/delayer-mapper.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -12,6 +12,7 @@ var CloudflareService_1;
|
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.CloudflareService = void 0;
|
|
14
14
|
const common_1 = require("@nestjs/common");
|
|
15
|
+
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
15
16
|
const delayer_service_1 = require("../delayer/delayer.service");
|
|
16
17
|
const logger_1 = require("../../common/logger/logger");
|
|
17
18
|
const check_cloudflare_block_use_case_1 = require("./use-cases/check-cloudflare-block.use-case");
|
|
@@ -19,6 +20,7 @@ const report_cloudflare_use_case_1 = require("./use-cases/report-cloudflare.use-
|
|
|
19
20
|
const cloudflare_repository_service_1 = require("./services/cloudflare-repository.service");
|
|
20
21
|
const normalize_cloudflare_response_use_case_1 = require("./use-cases/normalize-cloudflare-response.use-case");
|
|
21
22
|
const handle_request_types_1 = require("./types/handle-request.types");
|
|
23
|
+
const event_enum_1 = require("../../common/enum/event.enum");
|
|
22
24
|
let CloudflareService = CloudflareService_1 = class CloudflareService {
|
|
23
25
|
constructor(delayer, checker, reporter, repository, normalizer) {
|
|
24
26
|
this.delayer = delayer;
|
|
@@ -47,10 +49,16 @@ let CloudflareService = CloudflareService_1 = class CloudflareService {
|
|
|
47
49
|
return this.reporter.execute(stats);
|
|
48
50
|
}
|
|
49
51
|
reset() {
|
|
50
|
-
this.
|
|
52
|
+
this.repository.reset();
|
|
51
53
|
}
|
|
52
54
|
};
|
|
53
55
|
exports.CloudflareService = CloudflareService;
|
|
56
|
+
__decorate([
|
|
57
|
+
(0, event_emitter_1.OnEvent)(event_enum_1.ScrapingEvent.RESET),
|
|
58
|
+
__metadata("design:type", Function),
|
|
59
|
+
__metadata("design:paramtypes", []),
|
|
60
|
+
__metadata("design:returntype", void 0)
|
|
61
|
+
], CloudflareService.prototype, "reset", null);
|
|
54
62
|
exports.CloudflareService = CloudflareService = CloudflareService_1 = __decorate([
|
|
55
63
|
(0, common_1.Injectable)(),
|
|
56
64
|
__metadata("design:paramtypes", [delayer_service_1.DelayerService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare.service.js","sourceRoot":"","sources":["../../../src/modules/cloudflare/cloudflare.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA4C;
|
|
1
|
+
{"version":3,"file":"cloudflare.service.js","sourceRoot":"","sources":["../../../src/modules/cloudflare/cloudflare.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yDAAgD;AAGhD,gEAA4D;AAC5D,uDAAoD;AACpD,iGAA0F;AAC1F,uFAAiF;AACjF,4FAAuF;AACvF,+GAAwG;AAKxG,uEAAiE;AACjE,6DAA6D;AAGtD,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAG5B,YACmB,OAAuB,EACvB,OAAoC,EACpC,QAAiC,EACjC,UAAuC,EACvC,UAA8C;QAJ9C,YAAO,GAAP,OAAO,CAAgB;QACvB,YAAO,GAAP,OAAO,CAA6B;QACpC,aAAQ,GAAR,QAAQ,CAAyB;QACjC,eAAU,GAAV,UAAU,CAA6B;QACvC,eAAU,GAAV,UAAU,CAAoC;QAPzD,WAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;IAQjD,CAAC;IAEJ,KAAK,CAAC,QAAyB;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAyB,EAAE,YAAiC;QACvE,MAAM,UAAU,GAAuB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,wCAAiB,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC;QACvC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,UAAU,IAAI,GAAG,EAAE,CAAC,CAAC;QAC7C,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,KAAsB;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAGD,KAAK;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;CACF,CAAA;AArCY,8CAAiB;AAkC5B;IADC,IAAA,uBAAO,EAAC,0BAAa,CAAC,KAAK,CAAC;;;;8CAG5B;4BApCU,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAKiB,gCAAc;QACd,6DAA2B;QAC1B,oDAAuB;QACrB,2DAA2B;QAC3B,2EAAkC;GARtD,iBAAiB,CAqC7B"}
|
|
@@ -11,8 +11,10 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.DelayerService = void 0;
|
|
13
13
|
const common_1 = require("@nestjs/common");
|
|
14
|
+
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
14
15
|
const delayer_sleeper_service_1 = require("./use-cases/delayer-sleeper.service");
|
|
15
16
|
const delayer_mapper_service_1 = require("./use-cases/delayer-mapper.service");
|
|
17
|
+
const event_enum_1 = require("../../common/enum/event.enum");
|
|
16
18
|
let DelayerService = class DelayerService {
|
|
17
19
|
constructor(sleeper, mapper) {
|
|
18
20
|
this.sleeper = sleeper;
|
|
@@ -39,6 +41,12 @@ let DelayerService = class DelayerService {
|
|
|
39
41
|
}
|
|
40
42
|
};
|
|
41
43
|
exports.DelayerService = DelayerService;
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, event_emitter_1.OnEvent)(event_enum_1.ScrapingEvent.RESET),
|
|
46
|
+
__metadata("design:type", Function),
|
|
47
|
+
__metadata("design:paramtypes", []),
|
|
48
|
+
__metadata("design:returntype", void 0)
|
|
49
|
+
], DelayerService.prototype, "reset", null);
|
|
42
50
|
exports.DelayerService = DelayerService = __decorate([
|
|
43
51
|
(0, common_1.Injectable)(),
|
|
44
52
|
__metadata("design:paramtypes", [delayer_sleeper_service_1.DelayerSleepService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delayer.service.js","sourceRoot":"","sources":["../../../src/modules/delayer/delayer.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;
|
|
1
|
+
{"version":3,"file":"delayer.service.js","sourceRoot":"","sources":["../../../src/modules/delayer/delayer.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yDAAgD;AAEhD,iFAA0E;AAC1E,+EAAuE;AAEvE,6DAA6D;AAGtD,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YACmB,OAA4B,EAC5B,MAAyB;QADzB,YAAO,GAAP,OAAO,CAAqB;QAC5B,WAAM,GAAN,MAAM,CAAmB;IACzC,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,GAAY,EAAE,GAAY,EAAE,GAAY;QACjD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,UAAkB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAY,EAAE,GAAY;QACpC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAGD,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF,CAAA;AA/BY,wCAAc;AA2BzB;IADC,IAAA,uBAAO,EAAC,0BAAa,CAAC,KAAK,CAAC;;;;2CAI5B;yBA9BU,cAAc;IAD1B,IAAA,mBAAU,GAAE;qCAGiB,6CAAmB;QACpB,0CAAiB;GAHjC,cAAc,CA+B1B"}
|
|
@@ -55,30 +55,19 @@ let DelayerMapService = class DelayerMapService {
|
|
|
55
55
|
if (!current) {
|
|
56
56
|
return { min, max };
|
|
57
57
|
}
|
|
58
|
-
if (this.check(current, mapConfig.max)) {
|
|
59
|
-
return this.build(url);
|
|
60
|
-
}
|
|
61
58
|
return this.increase(url, current, mapConfig);
|
|
62
59
|
}
|
|
63
|
-
|
|
64
|
-
return range.min >= max && range.max >= max;
|
|
65
|
-
}
|
|
66
|
-
build(url) {
|
|
60
|
+
increase(url, range, config) {
|
|
67
61
|
const retries = this.retries.get(url) ?? 0;
|
|
68
62
|
const count = retries + 1;
|
|
69
63
|
this.retries.set(url, count);
|
|
70
|
-
const
|
|
71
|
-
const
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return { min: delay, max: delay };
|
|
76
|
-
}
|
|
77
|
-
increase(url, range, config) {
|
|
78
|
-
const min = Math.min(config.max, range.min + config.step);
|
|
79
|
-
const max = Math.min(config.max, range.max + config.step);
|
|
64
|
+
const multiplier = Math.min(1 + count * 0.5, 10);
|
|
65
|
+
const step = config.step * multiplier;
|
|
66
|
+
const min = Math.min(config.max, range.min + step);
|
|
67
|
+
const max = Math.min(config.max, range.max + step);
|
|
68
|
+
const detail = `(retry #${count}, step: ${Math.round(step)}ms)`;
|
|
80
69
|
this.logger.log(`🔇 ${url}`);
|
|
81
|
-
this.logger.log(`🔂 Increasing range: ${min}ms - ${max}ms`);
|
|
70
|
+
this.logger.log(`🔂 Increasing range: ${min}ms - ${max}ms ${detail}`);
|
|
82
71
|
return { min, max };
|
|
83
72
|
}
|
|
84
73
|
async sleep(ms) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delayer-mapper.service.js","sourceRoot":"","sources":["../../../../src/modules/delayer/use-cases/delayer-mapper.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAE5C,0DAAuD;AACvD,wDAAoD;AACpD,qEAAgE;AAKzD,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAK5B,YAA6B,MAA4B;QAA5B,WAAM,GAAN,MAAM,CAAsB;QAJxC,WAAM,GAAG,IAAI,eAAM,CAAC,gCAAc,CAAC,IAAI,CAAC,CAAC;QACzC,WAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;QACvC,YAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEO,CAAC;IAE7D,KAAK,CAAC,IAAI,CAAC,GAAY,EAAE,GAAY,EAAE,GAAY;QACjD,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5B,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YAChB,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QAClB,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,GAAG,IAAI,UAAU,CAAC;QACnC,MAAM,QAAQ,GAAG,GAAG,IAAI,UAAU,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAExD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,GAAY;QAChB,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAEO,OAAO,CAAC,GAAW,EAAE,GAAY,EAAE,GAAY;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACtB,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"delayer-mapper.service.js","sourceRoot":"","sources":["../../../../src/modules/delayer/use-cases/delayer-mapper.service.ts"],"names":[],"mappings":"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"}
|