@rafikidota/cuba-ofertas-scraping 0.53.1 → 0.55.0

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.
Files changed (31) hide show
  1. package/dist/common/class/cloudflare-block.d.ts +12 -0
  2. package/dist/common/class/cloudflare-block.js +16 -0
  3. package/dist/common/class/cloudflare-block.js.map +1 -0
  4. package/dist/common/enum/shop-slug.enum.d.ts +4 -1
  5. package/dist/common/enum/shop-slug.enum.js +3 -0
  6. package/dist/common/enum/shop-slug.enum.js.map +1 -1
  7. package/dist/common/interface/cloudflare-block.interface.d.ts +8 -0
  8. package/dist/common/interface/cloudflare-block.interface.js +3 -0
  9. package/dist/common/interface/cloudflare-block.interface.js.map +1 -0
  10. package/dist/modules/cloudflare/cloudflare.module.js +2 -1
  11. package/dist/modules/cloudflare/cloudflare.module.js.map +1 -1
  12. package/dist/modules/cloudflare/cloudflare.service.d.ts +2 -2
  13. package/dist/modules/cloudflare/cloudflare.service.js +6 -6
  14. package/dist/modules/cloudflare/cloudflare.service.js.map +1 -1
  15. package/dist/modules/cloudflare/services/cloudflare-repository.service.d.ts +8 -8
  16. package/dist/modules/cloudflare/services/cloudflare-repository.service.js +46 -26
  17. package/dist/modules/cloudflare/services/cloudflare-repository.service.js.map +1 -1
  18. package/dist/modules/repository/config/database.config.d.ts +2 -1
  19. package/dist/modules/repository/config/database.config.js +2 -0
  20. package/dist/modules/repository/config/database.config.js.map +1 -1
  21. package/dist/modules/repository/entities/cloudflare-block.entity.d.ts +8 -0
  22. package/dist/modules/repository/entities/cloudflare-block.entity.js +44 -0
  23. package/dist/modules/repository/entities/cloudflare-block.entity.js.map +1 -0
  24. package/dist/modules/repository/repository.module.js +3 -0
  25. package/dist/modules/repository/repository.module.js.map +1 -1
  26. package/dist/modules/repository/services/cloudflare-block.repository.service.d.ts +16 -0
  27. package/dist/modules/repository/services/cloudflare-block.repository.service.js +52 -0
  28. package/dist/modules/repository/services/cloudflare-block.repository.service.js.map +1 -0
  29. package/dist/modules/storage/storage.service.js +2 -2
  30. package/dist/modules/storage/storage.service.js.map +1 -1
  31. package/package.json +8 -8
@@ -0,0 +1,12 @@
1
+ import { ICloudflareBlock } from '../interface/cloudflare-block.interface';
2
+ export declare class CloudflareBlock implements ICloudflareBlock {
3
+ readonly id: string;
4
+ readonly url: string;
5
+ readonly method: string;
6
+ readonly body?: string;
7
+ readonly count: number;
8
+ readonly timestamp: Date;
9
+ constructor(data: Partial<ICloudflareBlock>);
10
+ update(data: Partial<ICloudflareBlock>): void;
11
+ getData(): ICloudflareBlock;
12
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CloudflareBlock = void 0;
4
+ class CloudflareBlock {
5
+ constructor(data) {
6
+ Object.assign(this, data);
7
+ }
8
+ update(data) {
9
+ Object.assign(this, data);
10
+ }
11
+ getData() {
12
+ return this;
13
+ }
14
+ }
15
+ exports.CloudflareBlock = CloudflareBlock;
16
+ //# sourceMappingURL=cloudflare-block.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-block.js","sourceRoot":"","sources":["../../../src/common/class/cloudflare-block.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAe;IAQ1B,YAAY,IAA+B;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,IAA+B;QAC3C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAnBD,0CAmBC"}
@@ -7,5 +7,8 @@ export declare enum ShopSlugEnum {
7
7
  DIMECUBA = "dimecuba",
8
8
  LAJABALINA = "jabalina",
9
9
  MIHOGAR53 = "mh53",
10
- MALLHABANA = "mallhabana"
10
+ MALLHABANA = "mallhabana",
11
+ NERCADO = "nercado",
12
+ CUBAMAX = "cubamax",
13
+ MERCAVANA = "mercavana"
11
14
  }
@@ -12,5 +12,8 @@ var ShopSlugEnum;
12
12
  ShopSlugEnum["LAJABALINA"] = "jabalina";
13
13
  ShopSlugEnum["MIHOGAR53"] = "mh53";
14
14
  ShopSlugEnum["MALLHABANA"] = "mallhabana";
15
+ ShopSlugEnum["NERCADO"] = "nercado";
16
+ ShopSlugEnum["CUBAMAX"] = "cubamax";
17
+ ShopSlugEnum["MERCAVANA"] = "mercavana";
15
18
  })(ShopSlugEnum || (exports.ShopSlugEnum = ShopSlugEnum = {}));
16
19
  //# sourceMappingURL=shop-slug.enum.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shop-slug.enum.js","sourceRoot":"","sources":["../../../src/common/enum/shop-slug.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAUX;AAVD,WAAY,YAAY;IACtB,sCAAsB,CAAA;IACtB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;IACjB,uCAAuB,CAAA;IACvB,qCAAqB,CAAA;IACrB,uCAAuB,CAAA;IACvB,kCAAkB,CAAA;IAClB,yCAAyB,CAAA;AAC3B,CAAC,EAVW,YAAY,4BAAZ,YAAY,QAUvB"}
1
+ {"version":3,"file":"shop-slug.enum.js","sourceRoot":"","sources":["../../../src/common/enum/shop-slug.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAaX;AAbD,WAAY,YAAY;IACtB,sCAAsB,CAAA;IACtB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;IACjB,uCAAuB,CAAA;IACvB,qCAAqB,CAAA;IACrB,uCAAuB,CAAA;IACvB,kCAAkB,CAAA;IAClB,yCAAyB,CAAA;IACzB,mCAAmB,CAAA;IACnB,mCAAmB,CAAA;IACnB,uCAAuB,CAAA;AACzB,CAAC,EAbW,YAAY,4BAAZ,YAAY,QAavB"}
@@ -0,0 +1,8 @@
1
+ export interface ICloudflareBlock {
2
+ id: string;
3
+ url: string;
4
+ method: string;
5
+ body?: string;
6
+ count: number;
7
+ timestamp: Date;
8
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=cloudflare-block.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-block.interface.js","sourceRoot":"","sources":["../../../src/common/interface/cloudflare-block.interface.ts"],"names":[],"mappings":""}
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.CloudflareModule = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
11
  const delayer_module_1 = require("../delayer/delayer.module");
12
+ const repository_module_1 = require("../repository/repository.module");
12
13
  const cloudflare_service_1 = require("./cloudflare.service");
13
14
  const check_cloudflare_block_use_case_1 = require("./use-cases/check-cloudflare-block.use-case");
14
15
  const normalize_cloudflare_response_use_case_1 = require("./use-cases/normalize-cloudflare-response.use-case");
@@ -19,7 +20,7 @@ let CloudflareModule = class CloudflareModule {
19
20
  exports.CloudflareModule = CloudflareModule;
20
21
  exports.CloudflareModule = CloudflareModule = __decorate([
21
22
  (0, common_1.Module)({
22
- imports: [delayer_module_1.DelayerModule],
23
+ imports: [delayer_module_1.DelayerModule, repository_module_1.RepositoryModule],
23
24
  providers: [
24
25
  cloudflare_service_1.CloudflareService,
25
26
  normalize_cloudflare_response_use_case_1.NormalizeCloudflareResponseUseCase,
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare.module.js","sourceRoot":"","sources":["../../../src/modules/cloudflare/cloudflare.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AAExC,8DAA0D;AAC1D,6DAAyD;AACzD,iGAA0F;AAC1F,+GAAwG;AACxG,uFAAiF;AACjF,4FAAuF;AAahF,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,4CAAgB;2BAAhB,gBAAgB;IAX5B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,8BAAa,CAAC;QACxB,SAAS,EAAE;YACT,sCAAiB;YACjB,2EAAkC;YAClC,6DAA2B;YAC3B,oDAAuB;YACvB,2DAA2B;SAC5B;QACD,OAAO,EAAE,CAAC,sCAAiB,CAAC;KAC7B,CAAC;GACW,gBAAgB,CAAG"}
1
+ {"version":3,"file":"cloudflare.module.js","sourceRoot":"","sources":["../../../src/modules/cloudflare/cloudflare.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AAExC,8DAA0D;AAC1D,uEAAmE;AACnE,6DAAyD;AACzD,iGAA0F;AAC1F,+GAAwG;AACxG,uFAAiF;AACjF,4FAAuF;AAahF,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,4CAAgB;2BAAhB,gBAAgB;IAX5B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,8BAAa,EAAE,oCAAgB,CAAC;QAC1C,SAAS,EAAE;YACT,sCAAiB;YACjB,2EAAkC;YAClC,6DAA2B;YAC3B,oDAAuB;YACvB,2DAA2B;SAC5B;QACD,OAAO,EAAE,CAAC,sCAAiB,CAAC;KAC7B,CAAC;GACW,gBAAgB,CAAG"}
@@ -15,12 +15,12 @@ export declare class CloudflareService {
15
15
  private logger;
16
16
  constructor(delayer: DelayerService, checker: CheckCloudflareBlockUseCase, reporter: ReportCloudflareUseCase, repository: CloudflareRepositoryService, normalizer: NormalizeCloudflareResponseUseCase);
17
17
  check(response: CrawleeResponse): boolean;
18
- get blocks(): import("./types/block-info").BlockInfo[];
18
+ getBlocks(): Promise<import("./types/block-info").BlockInfo[]>;
19
19
  handle(response: CrawleeResponse, blockOptions?: IHandleBlockOption): Promise<void>;
20
20
  report(stats: FinalStatistics): {
21
21
  blocks: number;
22
22
  total: number;
23
23
  percent: number;
24
24
  };
25
- reset(): void;
25
+ reset(): Promise<void>;
26
26
  }
@@ -33,23 +33,23 @@ let CloudflareService = CloudflareService_1 = class CloudflareService {
33
33
  check(response) {
34
34
  return this.checker.execute(response);
35
35
  }
36
- get blocks() {
37
- return this.repository.blocks;
36
+ async getBlocks() {
37
+ return this.repository.getBlocks();
38
38
  }
39
39
  async handle(response, blockOptions) {
40
40
  const normalized = this.normalizer.execute(response);
41
41
  const { options } = new handle_request_types_1.HandleBlockOption(blockOptions);
42
42
  const { url } = normalized;
43
43
  const { method, body, delay } = options;
44
- this.repository.add({ url, method, body });
44
+ await this.repository.add({ url, method, body });
45
45
  this.logger.log(`🚧 ${url}`);
46
46
  return await this.delayer.wait(url, delay?.min, delay?.max);
47
47
  }
48
48
  report(stats) {
49
49
  return this.reporter.execute(stats);
50
50
  }
51
- reset() {
52
- this.repository.reset();
51
+ async reset() {
52
+ await this.repository.reset();
53
53
  }
54
54
  };
55
55
  exports.CloudflareService = CloudflareService;
@@ -57,7 +57,7 @@ __decorate([
57
57
  (0, event_emitter_1.OnEvent)(event_enum_1.ScrapingEvent.RESET),
58
58
  __metadata("design:type", Function),
59
59
  __metadata("design:paramtypes", []),
60
- __metadata("design:returntype", void 0)
60
+ __metadata("design:returntype", Promise)
61
61
  ], CloudflareService.prototype, "reset", null);
62
62
  exports.CloudflareService = CloudflareService = CloudflareService_1 = __decorate([
63
63
  (0, common_1.Injectable)(),
@@ -1 +1 @@
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,GAAG,EAAE,GAAG,UAAU,CAAC;QAC3B,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,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAE7B,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;AAtCY,8CAAiB;AAmC5B;IADC,IAAA,uBAAO,EAAC,0BAAa,CAAC,KAAK,CAAC;;;;8CAG5B;4BArCU,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAKiB,gCAAc;QACd,6DAA2B;QAC1B,oDAAuB;QACrB,2DAA2B;QAC3B,2EAAkC;GARtD,iBAAiB,CAsC7B"}
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,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;IACrC,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,GAAG,EAAE,GAAG,UAAU,CAAC;QAC3B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QACxC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAE7B,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;IAGK,AAAN,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;CACF,CAAA;AAtCY,8CAAiB;AAmCtB;IADL,IAAA,uBAAO,EAAC,0BAAa,CAAC,KAAK,CAAC;;;;8CAG5B;4BArCU,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAKiB,gCAAc;QACd,6DAA2B;QAC1B,oDAAuB;QACrB,2DAA2B;QAC3B,2EAAkC;GARtD,iBAAiB,CAsC7B"}
@@ -1,12 +1,12 @@
1
1
  import { BlockInfo } from '../types/block-info';
2
+ import { CloudflareBlockRepositoryService } from '../../repository/services/cloudflare-block.repository.service';
2
3
  export declare class CloudflareRepositoryService {
3
- private map;
4
- private logger;
5
- constructor();
6
- get size(): number;
7
- get blocks(): BlockInfo[];
4
+ private readonly repo;
5
+ constructor(repo: CloudflareBlockRepositoryService);
6
+ getSize(): Promise<number>;
7
+ getBlocks(): Promise<BlockInfo[]>;
8
8
  private hash;
9
- add(block: BlockInfo): void;
10
- exists(block: BlockInfo): boolean;
11
- reset(): void;
9
+ add(block: BlockInfo): Promise<void>;
10
+ exists(block: BlockInfo): Promise<boolean>;
11
+ reset(): Promise<void>;
12
12
  }
@@ -8,48 +8,68 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var CloudflareRepositoryService_1;
12
11
  Object.defineProperty(exports, "__esModule", { value: true });
13
12
  exports.CloudflareRepositoryService = void 0;
14
13
  const common_1 = require("@nestjs/common");
15
14
  const crypto_1 = require("crypto");
16
- const logger_1 = require("../../../common/logger/logger");
17
- let CloudflareRepositoryService = CloudflareRepositoryService_1 = class CloudflareRepositoryService {
18
- constructor() {
19
- this.map = new Map();
20
- this.logger = new logger_1.Logger(CloudflareRepositoryService_1.name);
15
+ const cloudflare_block_1 = require("../../../common/class/cloudflare-block");
16
+ const cloudflare_block_repository_service_1 = require("../../repository/services/cloudflare-block.repository.service");
17
+ let CloudflareRepositoryService = class CloudflareRepositoryService {
18
+ constructor(repo) {
19
+ this.repo = repo;
21
20
  }
22
- get size() {
23
- return this.map.size;
21
+ async getSize() {
22
+ return this.repo.count();
24
23
  }
25
- get blocks() {
26
- return Array.from(this.map.values());
24
+ async getBlocks() {
25
+ const blocks = await this.repo.find();
26
+ return blocks.map((block) => {
27
+ const { url, method, body, count, timestamp } = block;
28
+ return { url, method, body, count, timestamp };
29
+ });
27
30
  }
28
31
  hash(block) {
29
- const data = JSON.stringify(block);
32
+ const data = JSON.stringify({
33
+ url: block.url,
34
+ method: block.method,
35
+ body: block.body,
36
+ });
30
37
  return (0, crypto_1.createHash)('sha256').update(data).digest('hex');
31
38
  }
32
- add(block) {
33
- const key = this.hash(block);
34
- const mappedBlock = this.map.get(key);
35
- const previous = mappedBlock?.count ?? 0;
36
- this.map.set(key, {
37
- ...block,
38
- count: previous + 1,
39
- timestamp: new Date(),
39
+ async add(block) {
40
+ const id = this.hash(block);
41
+ const [existing] = await this.repo.find({
42
+ where: { id },
40
43
  });
44
+ if (existing) {
45
+ const { count = 1 } = existing;
46
+ const updated = new cloudflare_block_1.CloudflareBlock({
47
+ ...existing.getData(),
48
+ count: count + 1,
49
+ timestamp: new Date(),
50
+ });
51
+ return await this.repo.update([updated]);
52
+ }
53
+ const { url, method, body, count = 1 } = block;
54
+ const timestamp = new Date();
55
+ const props = { id, url, method, body, count, timestamp };
56
+ const newBlock = new cloudflare_block_1.CloudflareBlock(props);
57
+ return await this.repo.save([newBlock]);
41
58
  }
42
- exists(block) {
43
- const key = this.hash(block);
44
- return this.map.has(key);
59
+ async exists(block) {
60
+ const id = this.hash(block);
61
+ const count = await this.repo.count({
62
+ where: { id },
63
+ });
64
+ return count > 0;
45
65
  }
46
- reset() {
47
- this.map.clear();
66
+ async reset() {
67
+ await this.repo.reset();
48
68
  }
49
69
  };
50
70
  exports.CloudflareRepositoryService = CloudflareRepositoryService;
51
- exports.CloudflareRepositoryService = CloudflareRepositoryService = CloudflareRepositoryService_1 = __decorate([
71
+ exports.CloudflareRepositoryService = CloudflareRepositoryService = __decorate([
52
72
  (0, common_1.Injectable)(),
53
- __metadata("design:paramtypes", [])
73
+ __metadata("design:paramtypes", [cloudflare_block_repository_service_1.CloudflareBlockRepositoryService])
54
74
  ], CloudflareRepositoryService);
55
75
  //# sourceMappingURL=cloudflare-repository.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare-repository.service.js","sourceRoot":"","sources":["../../../../src/modules/cloudflare/services/cloudflare-repository.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,mCAAoC;AAEpC,0DAAuD;AAIhD,IAAM,2BAA2B,mCAAjC,MAAM,2BAA2B;IAItC;QAHQ,QAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;QACnC,WAAM,GAAG,IAAI,eAAM,CAAC,6BAA2B,CAAC,IAAI,CAAC,CAAC;IAE/C,CAAC;IAEhB,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IAEO,IAAI,CAAC,KAAgB;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,GAAG,CAAC,KAAgB;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,WAAW,EAAE,KAAK,IAAI,CAAC,CAAC;QAEzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;YAChB,GAAG,KAAK;YACR,KAAK,EAAE,QAAQ,GAAG,CAAC;YACnB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAgB;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;CACF,CAAA;AAvCY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;;GACA,2BAA2B,CAuCvC"}
1
+ {"version":3,"file":"cloudflare-repository.service.js","sourceRoot":"","sources":["../../../../src/modules/cloudflare/services/cloudflare-repository.service.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { TypeOrmModuleOptions } from '@nestjs/typeorm';
2
2
  import { ImageEntity } from '../entities/image.entity';
3
3
  import { ProvinceEntity } from '../entities/province.entity';
4
- export declare const ENTITIES: (typeof ImageEntity | typeof ProvinceEntity)[];
4
+ import { CloudflareBlockEntity } from '../entities/cloudflare-block.entity';
5
+ export declare const ENTITIES: (typeof ProvinceEntity | typeof ImageEntity | typeof CloudflareBlockEntity)[];
5
6
  export declare const DATABASE_PATH = "./output/scraping.db";
6
7
  export declare const DefaultDatabaseConfig: TypeOrmModuleOptions;
@@ -6,12 +6,14 @@ const category_entity_1 = require("../entities/category.entity");
6
6
  const image_entity_1 = require("../entities/image.entity");
7
7
  const provider_entity_1 = require("../entities/provider.entity");
8
8
  const province_entity_1 = require("../entities/province.entity");
9
+ const cloudflare_block_entity_1 = require("../entities/cloudflare-block.entity");
9
10
  exports.ENTITIES = [
10
11
  product_entity_1.ProductEntity,
11
12
  category_entity_1.CategoryEntity,
12
13
  image_entity_1.ImageEntity,
13
14
  provider_entity_1.ProviderEntity,
14
15
  province_entity_1.ProvinceEntity,
16
+ cloudflare_block_entity_1.CloudflareBlockEntity,
15
17
  ];
16
18
  exports.DATABASE_PATH = './output/scraping.db';
17
19
  exports.DefaultDatabaseConfig = {
@@ -1 +1 @@
1
- {"version":3,"file":"database.config.js","sourceRoot":"","sources":["../../../../src/modules/repository/config/database.config.ts"],"names":[],"mappings":";;;AAEA,+DAA2D;AAC3D,iEAA6D;AAC7D,2DAAuD;AACvD,iEAA6D;AAC7D,iEAA6D;AAEhD,QAAA,QAAQ,GAAG;IACtB,8BAAa;IACb,gCAAc;IACd,0BAAW;IACX,gCAAc;IACd,gCAAc;CACf,CAAC;AAEW,QAAA,aAAa,GAAG,sBAAsB,CAAC;AAEvC,QAAA,qBAAqB,GAAyB;IACzD,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,qBAAa;IACvB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,gBAAQ;CACnB,CAAC"}
1
+ {"version":3,"file":"database.config.js","sourceRoot":"","sources":["../../../../src/modules/repository/config/database.config.ts"],"names":[],"mappings":";;;AAEA,+DAA2D;AAC3D,iEAA6D;AAC7D,2DAAuD;AACvD,iEAA6D;AAC7D,iEAA6D;AAC7D,iFAA4E;AAE/D,QAAA,QAAQ,GAAG;IACtB,8BAAa;IACb,gCAAc;IACd,0BAAW;IACX,gCAAc;IACd,gCAAc;IACd,+CAAqB;CACtB,CAAC;AAEW,QAAA,aAAa,GAAG,sBAAsB,CAAC;AAEvC,QAAA,qBAAqB,GAAyB;IACzD,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,qBAAa;IACvB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,gBAAQ;CACnB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare class CloudflareBlockEntity {
2
+ id: string;
3
+ url: string;
4
+ method: string;
5
+ body?: string;
6
+ count: number;
7
+ timestamp: Date;
8
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CloudflareBlockEntity = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ let CloudflareBlockEntity = class CloudflareBlockEntity {
15
+ };
16
+ exports.CloudflareBlockEntity = CloudflareBlockEntity;
17
+ __decorate([
18
+ (0, typeorm_1.PrimaryColumn)(),
19
+ __metadata("design:type", String)
20
+ ], CloudflareBlockEntity.prototype, "id", void 0);
21
+ __decorate([
22
+ (0, typeorm_1.Column)(),
23
+ __metadata("design:type", String)
24
+ ], CloudflareBlockEntity.prototype, "url", void 0);
25
+ __decorate([
26
+ (0, typeorm_1.Column)(),
27
+ __metadata("design:type", String)
28
+ ], CloudflareBlockEntity.prototype, "method", void 0);
29
+ __decorate([
30
+ (0, typeorm_1.Column)({ nullable: true }),
31
+ __metadata("design:type", String)
32
+ ], CloudflareBlockEntity.prototype, "body", void 0);
33
+ __decorate([
34
+ (0, typeorm_1.Column)({ default: 1 }),
35
+ __metadata("design:type", Number)
36
+ ], CloudflareBlockEntity.prototype, "count", void 0);
37
+ __decorate([
38
+ (0, typeorm_1.Column)({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' }),
39
+ __metadata("design:type", Date)
40
+ ], CloudflareBlockEntity.prototype, "timestamp", void 0);
41
+ exports.CloudflareBlockEntity = CloudflareBlockEntity = __decorate([
42
+ (0, typeorm_1.Entity)('cloudflare_blocks')
43
+ ], CloudflareBlockEntity);
44
+ //# sourceMappingURL=cloudflare-block.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-block.entity.js","sourceRoot":"","sources":["../../../../src/modules/repository/entities/cloudflare-block.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAwD;AAGjD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CAkBjC,CAAA;AAlBY,sDAAqB;AAEhC;IADC,IAAA,uBAAa,GAAE;;iDACL;AAGX;IADC,IAAA,gBAAM,GAAE;;kDACG;AAGZ;IADC,IAAA,gBAAM,GAAE;;qDACM;AAGf;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACb;AAGd;IADC,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;oDACT;AAGd;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,EAAE,CAAC;8BACtD,IAAI;wDAAC;gCAjBL,qBAAqB;IADjC,IAAA,gBAAM,EAAC,mBAAmB,CAAC;GACf,qBAAqB,CAkBjC"}
@@ -16,6 +16,7 @@ const product_repository_service_1 = require("./services/product.repository.serv
16
16
  const provider_repository_service_1 = require("./services/provider.repository.service");
17
17
  const province_repository_service_1 = require("./services/province.repository.service");
18
18
  const image_repository_service_1 = require("./services/image.repository.service");
19
+ const cloudflare_block_repository_service_1 = require("./services/cloudflare-block.repository.service");
19
20
  const database_config_1 = require("./config/database.config");
20
21
  let RepositoryModule = RepositoryModule_1 = class RepositoryModule {
21
22
  static forRoot(config) {
@@ -34,6 +35,7 @@ let RepositoryModule = RepositoryModule_1 = class RepositoryModule {
34
35
  product_repository_service_1.ProductRepositoryService,
35
36
  provider_repository_service_1.ProviderRepositoryService,
36
37
  province_repository_service_1.ProvinceRepositoryService,
38
+ cloudflare_block_repository_service_1.CloudflareBlockRepositoryService,
37
39
  ],
38
40
  exports: [
39
41
  typeorm_1.TypeOrmModule,
@@ -43,6 +45,7 @@ let RepositoryModule = RepositoryModule_1 = class RepositoryModule {
43
45
  product_repository_service_1.ProductRepositoryService,
44
46
  provider_repository_service_1.ProviderRepositoryService,
45
47
  province_repository_service_1.ProvinceRepositoryService,
48
+ cloudflare_block_repository_service_1.CloudflareBlockRepositoryService,
46
49
  ],
47
50
  };
48
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"repository.module.js","sourceRoot":"","sources":["../../../src/modules/repository/repository.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,6CAAsE;AAEtE,6DAAyD;AACzD,wFAAmF;AACnF,sFAAiF;AACjF,wFAAmF;AACnF,wFAAmF;AACnF,kFAA6E;AAC7E,8DAA2E;AAGpE,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAC3B,MAAM,CAAC,OAAO,CAAC,MAAsC;QACnD,MAAM,EAAE,GAAG,EAAE,GAAG,uCAAqB,EAAE,GAAG,MAAM,EAA0B,CAAC;QAE3E,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,kBAAgB;YACxB,OAAO,EAAE;gBACP,uBAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;gBAChC,uBAAa,CAAC,UAAU,CAAC,0BAAQ,CAAC;aACnC;YACD,SAAS,EAAE;gBACT,sCAAiB;gBACjB,uDAAyB;gBACzB,iDAAsB;gBACtB,qDAAwB;gBACxB,uDAAyB;gBACzB,uDAAyB;aAC1B;YACD,OAAO,EAAE;gBACP,uBAAa;gBACb,sCAAiB;gBACjB,uDAAyB;gBACzB,iDAAsB;gBACtB,qDAAwB;gBACxB,uDAAyB;gBACzB,uDAAyB;aAC1B;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AA9BY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,gBAAgB,CA8B5B"}
1
+ {"version":3,"file":"repository.module.js","sourceRoot":"","sources":["../../../src/modules/repository/repository.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,6CAAsE;AAEtE,6DAAyD;AACzD,wFAAmF;AACnF,sFAAiF;AACjF,wFAAmF;AACnF,wFAAmF;AACnF,kFAA6E;AAC7E,wGAAkG;AAClG,8DAA2E;AAGpE,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAC3B,MAAM,CAAC,OAAO,CAAC,MAAsC;QACnD,MAAM,EAAE,GAAG,EAAE,GAAG,uCAAqB,EAAE,GAAG,MAAM,EAA0B,CAAC;QAE3E,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,kBAAgB;YACxB,OAAO,EAAE;gBACP,uBAAa,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;gBAChC,uBAAa,CAAC,UAAU,CAAC,0BAAQ,CAAC;aACnC;YACD,SAAS,EAAE;gBACT,sCAAiB;gBACjB,uDAAyB;gBACzB,iDAAsB;gBACtB,qDAAwB;gBACxB,uDAAyB;gBACzB,uDAAyB;gBACzB,sEAAgC;aACjC;YACD,OAAO,EAAE;gBACP,uBAAa;gBACb,sCAAiB;gBACjB,uDAAyB;gBACzB,iDAAsB;gBACtB,qDAAwB;gBACxB,uDAAyB;gBACzB,uDAAyB;gBACzB,sEAAgC;aACjC;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAhCY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,gBAAgB,CAgC5B"}
@@ -0,0 +1,16 @@
1
+ import { ConfigService } from '@nestjs/config';
2
+ import { Repository } from 'typeorm';
3
+ import { CloudflareBlock } from '../../../common/class/cloudflare-block';
4
+ import { CloudflareBlockEntity } from '../entities/cloudflare-block.entity';
5
+ import { EntityRepository } from '../entity.repository.service';
6
+ declare const Repo: abstract new (repository: Repository<CloudflareBlockEntity>, config: ConfigService, key: string, label: string) => EntityRepository<CloudflareBlockEntity, CloudflareBlock>;
7
+ export declare class CloudflareBlockRepositoryService extends Repo {
8
+ protected readonly repository: Repository<CloudflareBlockEntity>;
9
+ protected readonly config: ConfigService;
10
+ constructor(repository: Repository<CloudflareBlockEntity>, config: ConfigService);
11
+ map(entity: CloudflareBlockEntity): CloudflareBlock;
12
+ notify(entity: CloudflareBlockEntity): string;
13
+ save(blocks: CloudflareBlock[]): Promise<void>;
14
+ update(blocks: CloudflareBlock[]): Promise<void>;
15
+ }
16
+ export {};
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.CloudflareBlockRepositoryService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const config_1 = require("@nestjs/config");
18
+ const typeorm_1 = require("@nestjs/typeorm");
19
+ const typeorm_2 = require("typeorm");
20
+ const cloudflare_block_1 = require("../../../common/class/cloudflare-block");
21
+ const cloudflare_block_entity_1 = require("../entities/cloudflare-block.entity");
22
+ const entity_repository_service_1 = require("../entity.repository.service");
23
+ const Repo = (entity_repository_service_1.EntityRepository);
24
+ const key = 'REPOSITORY_SAVE_CLOUDFLARE_BLOCK_LOG';
25
+ const label = 'cloudflare blocks';
26
+ let CloudflareBlockRepositoryService = class CloudflareBlockRepositoryService extends Repo {
27
+ constructor(repository, config) {
28
+ super(repository, config, key, label);
29
+ this.repository = repository;
30
+ this.config = config;
31
+ }
32
+ map(entity) {
33
+ return new cloudflare_block_1.CloudflareBlock(entity);
34
+ }
35
+ notify(entity) {
36
+ return `${entity.method} ${entity.url}`;
37
+ }
38
+ async save(blocks) {
39
+ await this._save(blocks);
40
+ }
41
+ async update(blocks) {
42
+ await this._update(blocks);
43
+ }
44
+ };
45
+ exports.CloudflareBlockRepositoryService = CloudflareBlockRepositoryService;
46
+ exports.CloudflareBlockRepositoryService = CloudflareBlockRepositoryService = __decorate([
47
+ (0, common_1.Injectable)(),
48
+ __param(0, (0, typeorm_1.InjectRepository)(cloudflare_block_entity_1.CloudflareBlockEntity)),
49
+ __metadata("design:paramtypes", [typeorm_2.Repository,
50
+ config_1.ConfigService])
51
+ ], CloudflareBlockRepositoryService);
52
+ //# sourceMappingURL=cloudflare-block.repository.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-block.repository.service.js","sourceRoot":"","sources":["../../../../src/modules/repository/services/cloudflare-block.repository.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAA+C;AAC/C,6CAAmD;AACnD,qCAAqC;AAErC,6EAAyE;AACzE,iFAA4E;AAC5E,4EAAgE;AAEhE,MAAM,IAAI,GAAG,CAAA,4CAAwD,CAAA,CAAC;AACtE,MAAM,GAAG,GAAG,sCAAsC,CAAC;AACnD,MAAM,KAAK,GAAG,mBAAmB,CAAC;AAG3B,IAAM,gCAAgC,GAAtC,MAAM,gCAAiC,SAAQ,IAAI;IACxD,YAEqB,UAA6C,EAC7C,MAAqB;QAExC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAHnB,eAAU,GAAV,UAAU,CAAmC;QAC7C,WAAM,GAAN,MAAM,CAAe;IAG1C,CAAC;IAED,GAAG,CAAC,MAA6B;QAC/B,OAAO,IAAI,kCAAe,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,MAA6B;QAClC,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAyB;QAClC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAyB;QACpC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CACF,CAAA;AAxBY,4EAAgC;2CAAhC,gCAAgC;IAD5C,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,+CAAqB,CAAC,CAAA;qCACT,oBAAU;QACd,sBAAa;GAJ/B,gCAAgC,CAwB5C"}
@@ -15,10 +15,10 @@ const common_1 = require("@nestjs/common");
15
15
  const fs_1 = require("fs");
16
16
  const path_1 = require("path");
17
17
  const output_1 = require("../../common/constant/output");
18
+ const logger_1 = require("../../common/logger/logger");
18
19
  let StorageService = StorageService_1 = class StorageService {
19
20
  constructor() {
20
- const options = { timestamp: true };
21
- this.logger = new common_1.Logger(StorageService_1.name, options);
21
+ this.logger = new logger_1.Logger(StorageService_1.name);
22
22
  }
23
23
  async check() {
24
24
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"storage.service.js","sourceRoot":"","sources":["../../../src/modules/storage/storage.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,2BAAoC;AACpC,+BAA4B;AAG5B,yDAA2D;AAIpD,IAAM,cAAc,sBAApB,MAAM,cAAc;IAGzB;QACE,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAEO,KAAK,CAAC,KAAK;QACjB,IAAI,CAAC;YACH,MAAM,aAAE,CAAC,MAAM,CAAC,oBAAW,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,aAAE,CAAC,KAAK,CAAC,oBAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAW,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,oBAAW,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAsB;QAC/B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,aAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC;YACnD,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,OAAO,EAAE,GAAG,KAAc,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF,CAAA;AAjDY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;;GACA,cAAc,CAiD1B"}
1
+ {"version":3,"file":"storage.service.js","sourceRoot":"","sources":["../../../src/modules/storage/storage.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2BAAoC;AACpC,+BAA4B;AAG5B,yDAA2D;AAE3D,uDAAoD;AAG7C,IAAM,cAAc,sBAApB,MAAM,cAAc;IAGzB;QAFiB,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IAE3C,CAAC;IAER,KAAK,CAAC,KAAK;QACjB,IAAI,CAAC;YACH,MAAM,aAAE,CAAC,MAAM,CAAC,oBAAW,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,aAAE,CAAC,KAAK,CAAC,oBAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAW,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,oBAAW,EAAE,QAAQ,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAsB;QAC/B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,aAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY;QACrB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC;YACnD,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,OAAO,EAAE,GAAG,KAAc,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF,CAAA;AA9CY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;;GACA,cAAc,CA8C1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rafikidota/cuba-ofertas-scraping",
3
- "version": "0.53.1",
3
+ "version": "0.55.0",
4
4
  "description": "Sometimes, the best way to solve your own problems is to help someone else.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,8 +15,8 @@
15
15
  "module": "./dist/index.js",
16
16
  "types": "./dist/index.d.ts",
17
17
  "devDependencies": {
18
- "@aws-sdk/client-s3": "3.1033.0",
19
- "@aws-sdk/s3-request-presigner": "3.1033.0",
18
+ "@aws-sdk/client-s3": "3.1039.0",
19
+ "@aws-sdk/s3-request-presigner": "3.1039.0",
20
20
  "@crawlee/cheerio": "3.16.0",
21
21
  "@crawlee/playwright": "3.16.0",
22
22
  "@eslint/eslintrc": "3.3.5",
@@ -25,7 +25,7 @@
25
25
  "@nestjs/common": "11.1.19",
26
26
  "@nestjs/config": "4.0.4",
27
27
  "@nestjs/core": "11.1.19",
28
- "@nestjs/event-emitter": "3.0.1",
28
+ "@nestjs/event-emitter": "3.1.0",
29
29
  "@nestjs/microservices": "11.1.19",
30
30
  "@nestjs/schedule": "6.1.3",
31
31
  "@nestjs/terminus": "11.1.1",
@@ -33,10 +33,10 @@
33
33
  "@types/archiver": "7.0.0",
34
34
  "@types/better-sqlite3": "7.6.13",
35
35
  "@types/node": "25.6.0",
36
- "@typescript-eslint/eslint-plugin": "8.59.0",
37
- "@typescript-eslint/parser": "8.59.0",
36
+ "@typescript-eslint/eslint-plugin": "8.59.1",
37
+ "@typescript-eslint/parser": "8.59.1",
38
38
  "archiver": "7.0.1",
39
- "axios": "1.15.1",
39
+ "axios": "1.15.2",
40
40
  "better-sqlite3": "12.9.0",
41
41
  "cheerio": "1.2.0",
42
42
  "class-transformer": "0.5.1",
@@ -59,7 +59,7 @@
59
59
  "telegraf": "4.16.3",
60
60
  "typeorm": "0.3.28",
61
61
  "typescript": "5.9.3",
62
- "typescript-eslint": "8.59.0"
62
+ "typescript-eslint": "8.59.1"
63
63
  },
64
64
  "scripts": {
65
65
  "prebuild": "rimraf -rf dist",