@bytebrand/export-cars 1.21.6 → 1.21.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.
Files changed (160) hide show
  1. package/.editorconfig +8 -8
  2. package/.eslintignore +1 -1
  3. package/.eslintrc.js +24 -24
  4. package/.prettierrc.js +7 -7
  5. package/README.md +65 -65
  6. package/dist/configs/index.d.ts +1 -0
  7. package/dist/configs/index.js +1 -0
  8. package/dist/configs/index.js.map +1 -1
  9. package/dist/configs/santander.config.d.ts +5 -0
  10. package/dist/configs/santander.config.js +18 -0
  11. package/dist/configs/santander.config.js.map +1 -0
  12. package/dist/enums/export-type.enum.d.ts +1 -0
  13. package/dist/enums/export-type.enum.js +1 -0
  14. package/dist/enums/export-type.enum.js.map +1 -1
  15. package/dist/export.command.js +1 -1
  16. package/dist/export.command.js.map +1 -1
  17. package/dist/export.schema.d.ts +6 -2
  18. package/dist/export.schema.js +4 -0
  19. package/dist/export.schema.js.map +1 -1
  20. package/dist/exporters/autouncle.exporter.js +5 -1
  21. package/dist/exporters/autouncle.exporter.js.map +1 -1
  22. package/dist/exporters/fb.exporter.js +7 -1
  23. package/dist/exporters/fb.exporter.js.map +1 -1
  24. package/dist/exporters/index.d.ts +1 -0
  25. package/dist/exporters/index.js +1 -0
  26. package/dist/exporters/index.js.map +1 -1
  27. package/dist/exporters/santander.exporter.d.ts +12 -0
  28. package/dist/exporters/santander.exporter.js +63 -0
  29. package/dist/exporters/santander.exporter.js.map +1 -0
  30. package/dist/formats/auto24-xml.builder.js +2 -2
  31. package/dist/formats/google-xml.builder.js +3 -3
  32. package/dist/formats/modix-xml.builder.js +2 -2
  33. package/dist/formats/ooyyo-xml.builder.js +1 -1
  34. package/dist/formats/santander-csv.builder.d.ts +6 -0
  35. package/dist/formats/santander-csv.builder.js +17 -0
  36. package/dist/formats/santander-csv.builder.js.map +1 -0
  37. package/dist/tsconfig.build.tsbuildinfo +1 -1
  38. package/nest-cli.json +5 -5
  39. package/package.json +61 -61
  40. package/src/app.module.ts +38 -38
  41. package/src/configs/alleskralle.config.ts +15 -15
  42. package/src/configs/as24.config.ts +13 -13
  43. package/src/configs/auto24.config.ts +15 -15
  44. package/src/configs/autoboerse.config.ts +16 -16
  45. package/src/configs/autouncle.config.ts +14 -14
  46. package/src/configs/awin.config.ts +15 -15
  47. package/src/configs/by-owner.config.ts +14 -14
  48. package/src/configs/config.ts +83 -83
  49. package/src/configs/criteo.config.ts +17 -17
  50. package/src/configs/dasparking.config.ts +15 -15
  51. package/src/configs/eauto.config.ts +15 -15
  52. package/src/configs/evium.config.ts +18 -18
  53. package/src/configs/facebook-shop.config.ts +16 -16
  54. package/src/configs/fb.config.ts +16 -16
  55. package/src/configs/google.config.ts +14 -14
  56. package/src/configs/index.ts +22 -21
  57. package/src/configs/kleinanzeigeFocus.config.ts +14 -14
  58. package/src/configs/marktde.config.ts +18 -18
  59. package/src/configs/meinstadt.config.ts +15 -15
  60. package/src/configs/mitula.config.ts +14 -14
  61. package/src/configs/ooyyo.config.ts +15 -15
  62. package/src/configs/santander.config.ts +15 -0
  63. package/src/configs/trovit.config.ts +14 -14
  64. package/src/configs/yescar.config.ts +17 -17
  65. package/src/constants/autouncle.contants.ts +4 -4
  66. package/src/constants/fb.constants.ts +7 -7
  67. package/src/constants/index.ts +1 -1
  68. package/src/constants/modix/body-color-name.constant.ts +20 -20
  69. package/src/constants/modix/category.constant.ts +14 -14
  70. package/src/constants/modix/fuel.constant.ts +14 -14
  71. package/src/constants/modix/index.ts +7 -7
  72. package/src/constants/modix/manufacturers.constant.ts +7498 -7498
  73. package/src/constants/modix/transmission.constant.ts +8 -8
  74. package/src/constants/modix/usage-type.constant.ts +13 -13
  75. package/src/constants/modix/vehicle-class.constant.ts +17 -17
  76. package/src/enums/environment.enum.ts +5 -5
  77. package/src/enums/export-type.enum.ts +33 -32
  78. package/src/enums/file-types.enum.ts +8 -8
  79. package/src/enums/image-type.enum.ts +4 -4
  80. package/src/enums/index.ts +4 -4
  81. package/src/export.command.ts +37 -37
  82. package/src/export.schema.ts +134 -128
  83. package/src/exporters/as24.exporter.ts +69 -69
  84. package/src/exporters/auto24.exporter.ts +48 -48
  85. package/src/exporters/autouncle.exporter.ts +60 -58
  86. package/src/exporters/awin.exporter.ts +47 -47
  87. package/src/exporters/by-owner.exporter.ts +44 -44
  88. package/src/exporters/facebook-shop.exporter.ts +51 -51
  89. package/src/exporters/fb.exporter.ts +52 -50
  90. package/src/exporters/google.exporter.ts +45 -45
  91. package/src/exporters/index.ts +15 -14
  92. package/src/exporters/meinstadt.exporter.ts +55 -55
  93. package/src/exporters/mobile.exporter.ts +64 -64
  94. package/src/exporters/modix.exporter.ts +56 -56
  95. package/src/exporters/ooyyo.exporter.ts +48 -48
  96. package/src/exporters/rubrikk.exporter.ts +53 -53
  97. package/src/exporters/santander.exporter.ts +50 -0
  98. package/src/exporters/trovit.exporter.ts +51 -51
  99. package/src/formats/auto24-xml.builder.ts +54 -54
  100. package/src/formats/autouncle-json.builder.ts +20 -20
  101. package/src/formats/awin-csv.builder.ts +16 -16
  102. package/src/formats/facebook-shop.builder.ts +69 -69
  103. package/src/formats/fb-xml.builder.ts +71 -71
  104. package/src/formats/google-xml.builder.ts +35 -35
  105. package/src/formats/index.ts +5 -5
  106. package/src/formats/meinstadt-json.builder.ts +19 -19
  107. package/src/formats/modix-xml.builder.ts +180 -180
  108. package/src/formats/ooyyo-xml.builder.ts +48 -48
  109. package/src/formats/rubrikk-xml.builder.ts +27 -27
  110. package/src/formats/santander-csv.builder.ts +15 -0
  111. package/src/formats/trovit-xml.builder.ts +44 -44
  112. package/src/interfaces/atributes-wrap-item.intreface.ts +6 -6
  113. package/src/interfaces/dealers-mapping.interface.ts +7 -7
  114. package/src/interfaces/description.interface.ts +24 -24
  115. package/src/interfaces/export-item.interface.ts +366 -366
  116. package/src/interfaces/exporter.interface.ts +3 -3
  117. package/src/interfaces/index.ts +3 -3
  118. package/src/interfaces/input.interface.ts +6 -6
  119. package/src/interfaces/mapping-rules.interface.ts +11 -11
  120. package/src/interfaces/modix/index.ts +1 -1
  121. package/src/interfaces/modix/modix-item-list.interface.ts +5 -5
  122. package/src/interfaces/params.interface.ts +13 -13
  123. package/src/interfaces/rule-parser.interface.ts +3 -3
  124. package/src/main.ts +14 -14
  125. package/src/rules/abstract.rule.ts +37 -37
  126. package/src/rules/date.rule.ts +19 -19
  127. package/src/rules/number.rule.ts +15 -15
  128. package/src/rules/string.rule.ts +8 -8
  129. package/src/services/car.service.ts +49 -49
  130. package/src/services/config.service.ts +15 -15
  131. package/src/services/images.service.ts +207 -207
  132. package/src/services/index.ts +9 -9
  133. package/src/services/loader.service.ts +29 -29
  134. package/src/services/mapping.service.ts +91 -91
  135. package/src/services/request.service.ts +44 -44
  136. package/src/services/rules.service.ts +61 -61
  137. package/src/services/transformer.service.ts +129 -129
  138. package/src/services/user.service.ts +57 -57
  139. package/src/transformers/as24.transformer.ts +253 -253
  140. package/src/transformers/auto24.transfomer.ts +155 -155
  141. package/src/transformers/autouncle.transformer.ts +236 -236
  142. package/src/transformers/awin.transformer.ts +193 -193
  143. package/src/transformers/by-owner.transformer.ts +354 -354
  144. package/src/transformers/facebook-shop.transformer.ts +93 -93
  145. package/src/transformers/fb-description.transformer.ts +316 -316
  146. package/src/transformers/fb-equipment.transformer.ts +161 -161
  147. package/src/transformers/fb.transformer.ts +655 -655
  148. package/src/transformers/google.transformer.ts +169 -169
  149. package/src/transformers/index.ts +5 -5
  150. package/src/transformers/meinstadt.transformer.ts +92 -92
  151. package/src/transformers/mobile.transformer.ts +482 -482
  152. package/src/transformers/modix.transformer.ts +227 -227
  153. package/src/transformers/ooyyo.transformer.ts +109 -109
  154. package/src/transformers/rubrikk.transformer.ts +200 -200
  155. package/src/transformers/trovit.transformer.ts +63 -63
  156. package/src/utils/converter.utils.ts +15 -15
  157. package/src/utils/index.ts +2 -2
  158. package/src/utils/validator.utils.ts +7 -7
  159. package/tsconfig.build.json +4 -4
  160. package/tsconfig.json +29 -29
@@ -1,3 +1,3 @@
1
- export interface Exporter {
2
- export(): Promise<void>;
3
- }
1
+ export interface Exporter {
2
+ export(): Promise<void>;
3
+ }
@@ -1,3 +1,3 @@
1
- export * from './export-item.interface';
2
- export * from './modix';
3
- export * from './atributes-wrap-item.intreface';
1
+ export * from './export-item.interface';
2
+ export * from './modix';
3
+ export * from './atributes-wrap-item.intreface';
@@ -1,6 +1,6 @@
1
- import { Params } from './params.interface';
2
-
3
- export interface Input {
4
- id: string;
5
- params: Params;
6
- }
1
+ import { Params } from './params.interface';
2
+
3
+ export interface Input {
4
+ id: string;
5
+ params: Params;
6
+ }
@@ -1,11 +1,11 @@
1
- export interface MappingRules {
2
- importField: string;
3
- importFieldType: string;
4
- autodeField: string;
5
- autodeFieldType: string;
6
- importFieldSelector?: string;
7
- autodeFieldSelector?: string;
8
- selectors?: string[];
9
-
10
- [key: string]: string | string[];
11
- }
1
+ export interface MappingRules {
2
+ importField: string;
3
+ importFieldType: string;
4
+ autodeField: string;
5
+ autodeFieldType: string;
6
+ importFieldSelector?: string;
7
+ autodeFieldSelector?: string;
8
+ selectors?: string[];
9
+
10
+ [key: string]: string | string[];
11
+ }
@@ -1 +1 @@
1
- export * from './modix-item-list.interface';
1
+ export * from './modix-item-list.interface';
@@ -1,5 +1,5 @@
1
- import { IAtributeWrapItem } from '../atributes-wrap-item.intreface';
2
-
3
- export interface IModixItemsList {
4
- [key: string]: IAtributeWrapItem;
5
- }
1
+ import { IAtributeWrapItem } from '../atributes-wrap-item.intreface';
2
+
3
+ export interface IModixItemsList {
4
+ [key: string]: IAtributeWrapItem;
5
+ }
@@ -1,13 +1,13 @@
1
- import { Environment, ExportType } from '../enums';
2
-
3
- export interface Params {
4
- environment: Environment;
5
- exportType?: ExportType;
6
- apikey?: string;
7
- String?: string;
8
- Number?: string;
9
- Date?: string;
10
- isNewCar?: boolean;
11
- cpc?: string;
12
- ownerId?: string;
13
- }
1
+ import { Environment, ExportType } from '../enums';
2
+
3
+ export interface Params {
4
+ environment: Environment;
5
+ exportType?: ExportType;
6
+ apikey?: string;
7
+ String?: string;
8
+ Number?: string;
9
+ Date?: string;
10
+ isNewCar?: boolean;
11
+ cpc?: string;
12
+ ownerId?: string;
13
+ }
@@ -1,3 +1,3 @@
1
- export interface RuleParser<T> {
2
- (e: string): T;
3
- }
1
+ export interface RuleParser<T> {
2
+ (e: string): T;
3
+ }
package/src/main.ts CHANGED
@@ -1,14 +1,14 @@
1
- import { LoggerService } from '@bytebrand/cronicle-helper';
2
- import { CommandFactory } from 'nest-commander';
3
- import { AppModule } from './app.module';
4
-
5
- async function bootstrap() {
6
- try {
7
- await CommandFactory.run(AppModule, false);
8
- LoggerService.complete();
9
- } catch (e) {
10
- console.error(e);
11
- LoggerService.exitError(e.message || e);
12
- }
13
- }
14
- bootstrap();
1
+ import { LoggerService } from '@bytebrand/cronicle-helper';
2
+ import { CommandFactory } from 'nest-commander';
3
+ import { AppModule } from './app.module';
4
+
5
+ async function bootstrap() {
6
+ try {
7
+ await CommandFactory.run(AppModule, false);
8
+ LoggerService.complete();
9
+ } catch (e) {
10
+ console.error(e);
11
+ LoggerService.exitError(e.message || e);
12
+ }
13
+ }
14
+ bootstrap();
@@ -1,37 +1,37 @@
1
- import { DataSchemes } from '@bytebrand/car-schema';
2
- import { get, includes } from 'lodash';
3
- import { RuleParser } from '../interfaces/rule-parser.interface';
4
-
5
- export abstract class AbstractRule<T> {
6
- private readonly _key: string;
7
- private readonly _params: T[];
8
-
9
- protected constructor(key: string, params: string, parser: RuleParser<T>) {
10
- this._params = this.parseParams(params, parser);
11
- this._key = key.trim();
12
- }
13
-
14
- getKey(): string {
15
- return this._key;
16
- }
17
-
18
- getParams(): T[] {
19
- return this._params;
20
- }
21
-
22
- applyRule(car: DataSchemes.Car): boolean {
23
- return this.applyOR(get(car, this._key, false) as T, this._params);
24
- }
25
-
26
- protected parseParams(params: string, parser: RuleParser<T>): T[] {
27
- return params.split(',').map((e: string) => parser(e.trim()));
28
- }
29
-
30
- protected applyOR(value: T, params: T[]): boolean {
31
- return includes(params, value);
32
- }
33
-
34
- protected applyGTE(value: T, parameter: T): boolean {
35
- return value >= parameter;
36
- }
37
- }
1
+ import { DataSchemes } from '@bytebrand/car-schema';
2
+ import { get, includes } from 'lodash';
3
+ import { RuleParser } from '../interfaces/rule-parser.interface';
4
+
5
+ export abstract class AbstractRule<T> {
6
+ private readonly _key: string;
7
+ private readonly _params: T[];
8
+
9
+ protected constructor(key: string, params: string, parser: RuleParser<T>) {
10
+ this._params = this.parseParams(params, parser);
11
+ this._key = key.trim();
12
+ }
13
+
14
+ getKey(): string {
15
+ return this._key;
16
+ }
17
+
18
+ getParams(): T[] {
19
+ return this._params;
20
+ }
21
+
22
+ applyRule(car: DataSchemes.Car): boolean {
23
+ return this.applyOR(get(car, this._key, false) as T, this._params);
24
+ }
25
+
26
+ protected parseParams(params: string, parser: RuleParser<T>): T[] {
27
+ return params.split(',').map((e: string) => parser(e.trim()));
28
+ }
29
+
30
+ protected applyOR(value: T, params: T[]): boolean {
31
+ return includes(params, value);
32
+ }
33
+
34
+ protected applyGTE(value: T, parameter: T): boolean {
35
+ return value >= parameter;
36
+ }
37
+ }
@@ -1,19 +1,19 @@
1
- import { DataSchemes } from '@bytebrand/car-schema';
2
- import { get } from 'lodash';
3
- import * as moment from 'moment';
4
- import { AbstractRule } from './abstract.rule';
5
- import { RuleParser } from '../interfaces/rule-parser.interface';
6
-
7
- export class DateRule extends AbstractRule<number> {
8
- constructor(key: string, params: string, parser: RuleParser<number>) {
9
- super(key, params, parser);
10
- }
11
-
12
- applyRule(car: DataSchemes.Car): boolean {
13
- const value = get(car, this.getKey(), false);
14
- if (!value) return false;
15
- const parameter = this.getParams()[0];
16
-
17
- return this.applyGTE(value, moment().subtract(parameter, 'days').unix());
18
- }
19
- }
1
+ import { DataSchemes } from '@bytebrand/car-schema';
2
+ import { get } from 'lodash';
3
+ import * as moment from 'moment';
4
+ import { AbstractRule } from './abstract.rule';
5
+ import { RuleParser } from '../interfaces/rule-parser.interface';
6
+
7
+ export class DateRule extends AbstractRule<number> {
8
+ constructor(key: string, params: string, parser: RuleParser<number>) {
9
+ super(key, params, parser);
10
+ }
11
+
12
+ applyRule(car: DataSchemes.Car): boolean {
13
+ const value = get(car, this.getKey(), false);
14
+ if (!value) return false;
15
+ const parameter = this.getParams()[0];
16
+
17
+ return this.applyGTE(value, moment().subtract(parameter, 'days').unix());
18
+ }
19
+ }
@@ -1,15 +1,15 @@
1
- import { DataSchemes } from '@bytebrand/car-schema';
2
- import { get } from 'lodash';
3
- import { RuleParser } from '../interfaces/rule-parser.interface';
4
- import { AbstractRule } from './abstract.rule';
5
-
6
- export class NumberRule extends AbstractRule<number> {
7
- constructor(key: string, params: string, parser: RuleParser<number>) {
8
- super(key, params, parser);
9
- }
10
-
11
- applyRule(car: DataSchemes.Car): boolean {
12
- const parameter = this.getParams()[0];
13
- return this.applyGTE(get(car, this.getKey(), 0), parameter);
14
- }
15
- }
1
+ import { DataSchemes } from '@bytebrand/car-schema';
2
+ import { get } from 'lodash';
3
+ import { RuleParser } from '../interfaces/rule-parser.interface';
4
+ import { AbstractRule } from './abstract.rule';
5
+
6
+ export class NumberRule extends AbstractRule<number> {
7
+ constructor(key: string, params: string, parser: RuleParser<number>) {
8
+ super(key, params, parser);
9
+ }
10
+
11
+ applyRule(car: DataSchemes.Car): boolean {
12
+ const parameter = this.getParams()[0];
13
+ return this.applyGTE(get(car, this.getKey(), 0), parameter);
14
+ }
15
+ }
@@ -1,8 +1,8 @@
1
- import { AbstractRule } from './abstract.rule';
2
- import { RuleParser } from '../interfaces/rule-parser.interface';
3
-
4
- export class StringRule extends AbstractRule<string> {
5
- constructor(key: string, params: string, parser: RuleParser<string>) {
6
- super(key, params, parser);
7
- }
8
- }
1
+ import { AbstractRule } from './abstract.rule';
2
+ import { RuleParser } from '../interfaces/rule-parser.interface';
3
+
4
+ export class StringRule extends AbstractRule<string> {
5
+ constructor(key: string, params: string, parser: RuleParser<string>) {
6
+ super(key, params, parser);
7
+ }
8
+ }
@@ -1,49 +1,49 @@
1
- import { CACHE_MANAGER } from '@nestjs/cache-manager';
2
- import { Inject, Injectable } from '@nestjs/common';
3
- import { DataSchemes } from '@bytebrand/car-schema';
4
- import { Cache } from 'cache-manager';
5
- import Bottleneck from 'bottleneck';
6
- import { RequestService } from './request.service';
7
- import { DateRule } from '../rules/date.rule';
8
- import { NumberRule } from '../rules/number.rule';
9
- import { StringRule } from '../rules/string.rule';
10
- import { CarsCounter, CronicleUtils } from '@bytebrand/cronicle-helper';
11
- import { DealerProfileInterface } from '@bytebrand/autode-request';
12
-
13
- @Injectable()
14
- export class CarService {
15
- private bottleneck: Bottleneck = new Bottleneck({ maxConcurrent: 50 })
16
-
17
- constructor(
18
- @Inject(CACHE_MANAGER) private cacheManager: Cache,
19
- private requestService: RequestService,
20
- ) { }
21
-
22
- private _counter: CarsCounter;
23
-
24
- get counter() {
25
- if (!this._counter) {
26
- this._counter = new CarsCounter();
27
- }
28
- return this._counter;
29
- }
30
-
31
- filterCar({ car }: { car: DataSchemes.Car }, rules: Array<StringRule | NumberRule | DateRule>): boolean {
32
- return rules.every(e => e.applyRule(car));
33
- }
34
-
35
- async getOwner(ownerId: string): Promise<DealerProfileInterface> {
36
- let owner = (await this.cacheManager.get(ownerId)) as DealerProfileInterface;
37
- if (!owner) {
38
- try {
39
- owner = await this.bottleneck.schedule(() => CronicleUtils.retry(() => this.requestService.upaRequest.getDealerProfile(ownerId), 4, 7_500, true));
40
- } catch (e) {
41
- console.log(e.message, ownerId);
42
- throw e;
43
- } finally {
44
- await this.cacheManager.set(ownerId, owner);
45
- }
46
- }
47
- return owner;
48
- }
49
- }
1
+ import { CACHE_MANAGER } from '@nestjs/cache-manager';
2
+ import { Inject, Injectable } from '@nestjs/common';
3
+ import { DataSchemes } from '@bytebrand/car-schema';
4
+ import { Cache } from 'cache-manager';
5
+ import Bottleneck from 'bottleneck';
6
+ import { RequestService } from './request.service';
7
+ import { DateRule } from '../rules/date.rule';
8
+ import { NumberRule } from '../rules/number.rule';
9
+ import { StringRule } from '../rules/string.rule';
10
+ import { CarsCounter, CronicleUtils } from '@bytebrand/cronicle-helper';
11
+ import { DealerProfileInterface } from '@bytebrand/autode-request';
12
+
13
+ @Injectable()
14
+ export class CarService {
15
+ private bottleneck: Bottleneck = new Bottleneck({ maxConcurrent: 50 })
16
+
17
+ constructor(
18
+ @Inject(CACHE_MANAGER) private cacheManager: Cache,
19
+ private requestService: RequestService,
20
+ ) { }
21
+
22
+ private _counter: CarsCounter;
23
+
24
+ get counter() {
25
+ if (!this._counter) {
26
+ this._counter = new CarsCounter();
27
+ }
28
+ return this._counter;
29
+ }
30
+
31
+ filterCar({ car }: { car: DataSchemes.Car }, rules: Array<StringRule | NumberRule | DateRule>): boolean {
32
+ return rules.every(e => e.applyRule(car));
33
+ }
34
+
35
+ async getOwner(ownerId: string): Promise<DealerProfileInterface> {
36
+ let owner = (await this.cacheManager.get(ownerId)) as DealerProfileInterface;
37
+ if (!owner) {
38
+ try {
39
+ owner = await this.bottleneck.schedule(() => CronicleUtils.retry(() => this.requestService.upaRequest.getDealerProfile(ownerId), 4, 7_500, true));
40
+ } catch (e) {
41
+ console.log(e.message, ownerId);
42
+ throw e;
43
+ } finally {
44
+ await this.cacheManager.set(ownerId, owner);
45
+ }
46
+ }
47
+ return owner;
48
+ }
49
+ }
@@ -1,15 +1,15 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { Config } from '../configs/config';
3
-
4
- @Injectable()
5
- export class ConfigService {
6
- private _config: Config;
7
-
8
- set config(config: Config) {
9
- this._config = config;
10
- }
11
-
12
- get config() {
13
- return this._config;
14
- }
15
- }
1
+ import { Injectable } from '@nestjs/common';
2
+ import { Config } from '../configs/config';
3
+
4
+ @Injectable()
5
+ export class ConfigService {
6
+ private _config: Config;
7
+
8
+ set config(config: Config) {
9
+ this._config = config;
10
+ }
11
+
12
+ get config() {
13
+ return this._config;
14
+ }
15
+ }