@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,69 +1,69 @@
1
- import { XMLBuilderBase } from '@bytebrand/cronicle-helper';
2
- import { FacebookShopItem, FacebookShopTag } from '../interfaces';
3
- import { Description, DescriptionValue } from '../interfaces/description.interface';
4
- import { isNotEmptyArray } from '../utils/validator.utils';
5
-
6
- export class FacebookShopXmlBuilder extends XMLBuilderBase {
7
- async buildStart(): Promise<void> {
8
- await this.write(
9
- '<?xml version="1.0" encoding="utf-8"?>\n<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0" xmlns:atom="http://www.w3.org/2005/Atom">' +
10
- '\n<channel>\n<title>Produkt für auto.de</title>\n<description>Produkt für auto.de</description> \n<link>https://www.auto.de/</link>\n' +
11
- '<atom:link href="https://www.mydealsshop.foo/pages/test-feed" rel="self" type="application/rss+xml" />\n',
12
- );
13
- }
14
-
15
- async addItem(car: FacebookShopItem): Promise<void> {
16
- let item = '\n<item>\n';
17
-
18
- const tags = Object.keys(car);
19
-
20
- for (const tag of tags) {
21
- if (tag === 'description') {
22
- item += this.getDescriptionElement(tag, car[tag].value);
23
- } else {
24
- item += this.buildTagElement(tag, car[tag]);
25
- }
26
- }
27
- item += '</item>';
28
-
29
- await this.write(item);
30
- }
31
-
32
- buildTagElement(tag: string, params: FacebookShopTag) {
33
- if (params.isGoogle) {
34
- return this.getElement(`g:${tag}`, params.value);
35
- }
36
- return this.getElement(tag, params.value);
37
- }
38
- private getDescriptionElement(rootTag: string, descriptionBlocks: Description[]): string {
39
- const description: string = descriptionBlocks
40
- .map(({ title, values }: Description) => {
41
- if (values) {
42
- return `${title}\n${this.buildDescriptionValues(values)} `;
43
- }
44
- return '';
45
- })
46
- .join('\n');
47
- return `<${rootTag}>${description}</${rootTag}>`;
48
- }
49
-
50
- private buildDescriptionValues(values: DescriptionValue[]): string {
51
- const validValues = [];
52
-
53
- values.forEach(element => {
54
- const filteredValues = element.value.filter(el => el);
55
- if (isNotEmptyArray(filteredValues)) validValues.push(element);
56
- });
57
-
58
- return validValues
59
- .map(({ title, value }: DescriptionValue) => {
60
- return `${title}: ${value.join(', ')}`;
61
- })
62
- .join(';\n');
63
- }
64
-
65
- async buildEnd(): Promise<void> {
66
- await this.write('\n</channel>\n</rss>\n');
67
- await this.end();
68
- }
69
- }
1
+ import { XMLBuilderBase } from '@bytebrand/cronicle-helper';
2
+ import { FacebookShopItem, FacebookShopTag } from '../interfaces';
3
+ import { Description, DescriptionValue } from '../interfaces/description.interface';
4
+ import { isNotEmptyArray } from '../utils/validator.utils';
5
+
6
+ export class FacebookShopXmlBuilder extends XMLBuilderBase {
7
+ async buildStart(): Promise<void> {
8
+ await this.write(
9
+ '<?xml version="1.0" encoding="utf-8"?>\n<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0" xmlns:atom="http://www.w3.org/2005/Atom">' +
10
+ '\n<channel>\n<title>Produkt für auto.de</title>\n<description>Produkt für auto.de</description> \n<link>https://www.auto.de/</link>\n' +
11
+ '<atom:link href="https://www.mydealsshop.foo/pages/test-feed" rel="self" type="application/rss+xml" />\n',
12
+ );
13
+ }
14
+
15
+ async addItem(car: FacebookShopItem): Promise<void> {
16
+ let item = '\n<item>\n';
17
+
18
+ const tags = Object.keys(car);
19
+
20
+ for (const tag of tags) {
21
+ if (tag === 'description') {
22
+ item += this.getDescriptionElement(tag, car[tag].value);
23
+ } else {
24
+ item += this.buildTagElement(tag, car[tag]);
25
+ }
26
+ }
27
+ item += '</item>';
28
+
29
+ await this.write(item);
30
+ }
31
+
32
+ buildTagElement(tag: string, params: FacebookShopTag) {
33
+ if (params.isGoogle) {
34
+ return this.getElement(`g:${tag}`, params.value);
35
+ }
36
+ return this.getElement(tag, params.value);
37
+ }
38
+ private getDescriptionElement(rootTag: string, descriptionBlocks: Description[]): string {
39
+ const description: string = descriptionBlocks
40
+ .map(({ title, values }: Description) => {
41
+ if (values) {
42
+ return `${title}\n${this.buildDescriptionValues(values)} `;
43
+ }
44
+ return '';
45
+ })
46
+ .join('\n');
47
+ return `<${rootTag}>${description}</${rootTag}>`;
48
+ }
49
+
50
+ private buildDescriptionValues(values: DescriptionValue[]): string {
51
+ const validValues = [];
52
+
53
+ values.forEach(element => {
54
+ const filteredValues = element.value.filter(el => el);
55
+ if (isNotEmptyArray(filteredValues)) validValues.push(element);
56
+ });
57
+
58
+ return validValues
59
+ .map(({ title, value }: DescriptionValue) => {
60
+ return `${title}: ${value.join(', ')}`;
61
+ })
62
+ .join(';\n');
63
+ }
64
+
65
+ async buildEnd(): Promise<void> {
66
+ await this.write('\n</channel>\n</rss>\n');
67
+ await this.end();
68
+ }
69
+ }
@@ -1,71 +1,71 @@
1
- import { XMLBuilderBase } from '@bytebrand/cronicle-helper';
2
- import { isObject } from 'lodash';
3
- import { Description, DescriptionValue } from '../interfaces/description.interface';
4
- import { FbXmlItem } from '../interfaces';
5
-
6
- export class FbXmlBuilder extends XMLBuilderBase {
7
- async buildStart(url?: string): Promise<void> {
8
- await this.write(
9
- `<?xml version="1.0" encoding="UTF-8"?><listings><title>Auto de feed</title><link rel="self" href="${url}"/>`,
10
- );
11
- }
12
-
13
- async addItem(car: FbXmlItem): Promise<void> {
14
- const listing: string = Object.entries(car)
15
- .map(([key, data]): string => {
16
- if (key === 'description') {
17
- return this.getDescriptionElement(key, data);
18
- }
19
- if (Array.isArray(data)) {
20
- return this.getElementsArray(key, data);
21
- }
22
- if (isObject(data)) {
23
- if (key === 'address') {
24
- return this.getElementWithComponents(key, data, { format: 'simple' });
25
- }
26
- return this.getElementsTree(key, data, true);
27
- }
28
- return this.getElement(key, data, true);
29
- })
30
- .join('');
31
-
32
- await this.write(`<listing>${listing}</listing>\n`);
33
- }
34
-
35
- private getDescriptionElement(rootTag: string, descriptionBlocks: Description[]): string {
36
- const description: string = descriptionBlocks
37
- .map(({ title, values }: Description) => {
38
- return `<![CDATA[${title}\n${this.buildDescriptionValues(values)}.]]>`;
39
- })
40
- .join('\n');
41
- return `<${rootTag}>${description}</${rootTag}>`;
42
- }
43
-
44
- private buildDescriptionValues(values: DescriptionValue[]): string {
45
- return values
46
- .map(({ title, value }: DescriptionValue) => {
47
- return `${title}: ${value.join(', ')}`;
48
- })
49
- .join(';\n');
50
- }
51
-
52
- private getElementsArray(rootTag: string, data: object[]): string {
53
- return data.reduce((elements, item) => `${elements}${this.getElementsTree(rootTag, item, true)}`, '');
54
- }
55
-
56
- private getElementWithComponents(rootTag: string, data: object, attr: object): string {
57
- const components: string = Object.entries(data)
58
- .map(([key, data]) => `<component name="${key}">${data}</component>`)
59
- .join('');
60
-
61
- const attrs = Object.entries(attr)
62
- .map(([key, value]) => `${key}="${value}"`)
63
- .join(' ');
64
-
65
- return `<${rootTag} ${attrs}>${components}</${rootTag}>`;
66
- }
67
- async buildEnd(): Promise<void> {
68
- await this.write('</listings>');
69
- await this.end();
70
- }
71
- }
1
+ import { XMLBuilderBase } from '@bytebrand/cronicle-helper';
2
+ import { isObject } from 'lodash';
3
+ import { Description, DescriptionValue } from '../interfaces/description.interface';
4
+ import { FbXmlItem } from '../interfaces';
5
+
6
+ export class FbXmlBuilder extends XMLBuilderBase {
7
+ async buildStart(url?: string): Promise<void> {
8
+ await this.write(
9
+ `<?xml version="1.0" encoding="UTF-8"?><listings><title>Auto de feed</title><link rel="self" href="${url}"/>`,
10
+ );
11
+ }
12
+
13
+ async addItem(car: FbXmlItem): Promise<void> {
14
+ const listing: string = Object.entries(car)
15
+ .map(([key, data]): string => {
16
+ if (key === 'description') {
17
+ return this.getDescriptionElement(key, data);
18
+ }
19
+ if (Array.isArray(data)) {
20
+ return this.getElementsArray(key, data);
21
+ }
22
+ if (isObject(data)) {
23
+ if (key === 'address') {
24
+ return this.getElementWithComponents(key, data, { format: 'simple' });
25
+ }
26
+ return this.getElementsTree(key, data, true);
27
+ }
28
+ return this.getElement(key, data, true);
29
+ })
30
+ .join('');
31
+
32
+ await this.write(`<listing>${listing}</listing>\n`);
33
+ }
34
+
35
+ private getDescriptionElement(rootTag: string, descriptionBlocks: Description[]): string {
36
+ const description: string = descriptionBlocks
37
+ .map(({ title, values }: Description) => {
38
+ return `<![CDATA[${title}\n${this.buildDescriptionValues(values)}.]]>`;
39
+ })
40
+ .join('\n');
41
+ return `<${rootTag}>${description}</${rootTag}>`;
42
+ }
43
+
44
+ private buildDescriptionValues(values: DescriptionValue[]): string {
45
+ return values
46
+ .map(({ title, value }: DescriptionValue) => {
47
+ return `${title}: ${value.join(', ')}`;
48
+ })
49
+ .join(';\n');
50
+ }
51
+
52
+ private getElementsArray(rootTag: string, data: object[]): string {
53
+ return data.reduce((elements, item) => `${elements}${this.getElementsTree(rootTag, item, true)}`, '');
54
+ }
55
+
56
+ private getElementWithComponents(rootTag: string, data: object, attr: object): string {
57
+ const components: string = Object.entries(data)
58
+ .map(([key, data]) => `<component name="${key}">${data}</component>`)
59
+ .join('');
60
+
61
+ const attrs = Object.entries(attr)
62
+ .map(([key, value]) => `${key}="${value}"`)
63
+ .join(' ');
64
+
65
+ return `<${rootTag} ${attrs}>${components}</${rootTag}>`;
66
+ }
67
+ async buildEnd(): Promise<void> {
68
+ await this.write('</listings>');
69
+ await this.end();
70
+ }
71
+ }
@@ -1,35 +1,35 @@
1
- import { XMLBuilderBase } from '@bytebrand/cronicle-helper';
2
- import { GoogleXmlItem, FbXmlItem } from '../interfaces';
3
-
4
- export class GoogleXmlBuilder extends XMLBuilderBase {
5
- async buildStart(url?: string): Promise<void> {
6
- await this.write(
7
- `<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:g="http://base.google.com/ns/1.0"><channel><title>Auto de feed</title><link>${url}</link>`,
8
- );
9
- }
10
-
11
- async addItem(item: FbXmlItem | GoogleXmlItem): Promise<void> {
12
- const listing: string = Object.entries(item)
13
- .map(([key, data]): string => {
14
- if (key === 'installment') {
15
- return this.getInstallmentElement(key, data);
16
- }
17
- return this.getElement(`g:${key}`, data);
18
- })
19
- .join('');
20
-
21
- await this.write(`<item>${listing}</item>\n`);
22
- }
23
-
24
- async buildEnd(): Promise<void> {
25
- await this.write('</channel></rss>');
26
- await this.end();
27
- }
28
-
29
- private getInstallmentElement(rootTag: string, data: { paybackPeriod: string; monthlyInstallment: string }): string {
30
- return `<g:${rootTag}>
31
- <g:months>${data.paybackPeriod}</g:months>
32
- <g:amount>${data.monthlyInstallment} EUR</g:amount>
33
- </g:${rootTag}>`;
34
- }
35
- }
1
+ import { XMLBuilderBase } from '@bytebrand/cronicle-helper';
2
+ import { GoogleXmlItem, FbXmlItem } from '../interfaces';
3
+
4
+ export class GoogleXmlBuilder extends XMLBuilderBase {
5
+ async buildStart(url?: string): Promise<void> {
6
+ await this.write(
7
+ `<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:g="http://base.google.com/ns/1.0"><channel><title>Auto de feed</title><link>${url}</link>`,
8
+ );
9
+ }
10
+
11
+ async addItem(item: FbXmlItem | GoogleXmlItem): Promise<void> {
12
+ const listing: string = Object.entries(item)
13
+ .map(([key, data]): string => {
14
+ if (key === 'installment') {
15
+ return this.getInstallmentElement(key, data);
16
+ }
17
+ return this.getElement(`g:${key}`, data);
18
+ })
19
+ .join('');
20
+
21
+ await this.write(`<item>${listing}</item>\n`);
22
+ }
23
+
24
+ async buildEnd(): Promise<void> {
25
+ await this.write('</channel></rss>');
26
+ await this.end();
27
+ }
28
+
29
+ private getInstallmentElement(rootTag: string, data: { paybackPeriod: string; monthlyInstallment: string }): string {
30
+ return `<g:${rootTag}>
31
+ <g:months>${data.paybackPeriod}</g:months>
32
+ <g:amount>${data.monthlyInstallment} EUR</g:amount>
33
+ </g:${rootTag}>`;
34
+ }
35
+ }
@@ -1,5 +1,5 @@
1
- export * from './rubrikk-xml.builder';
2
- export * from './modix-xml.builder';
3
- export * from './facebook-shop.builder';
4
- export * from './trovit-xml.builder';
5
- export * from './awin-csv.builder';
1
+ export * from './rubrikk-xml.builder';
2
+ export * from './modix-xml.builder';
3
+ export * from './facebook-shop.builder';
4
+ export * from './trovit-xml.builder';
5
+ export * from './awin-csv.builder';
@@ -1,19 +1,19 @@
1
- import { XMLBuilderBase } from '@bytebrand/cronicle-helper';
2
- import { MeinstadtJsonItem } from '../interfaces';
3
-
4
- export class MeinstadtJsonBuilder extends XMLBuilderBase {
5
- async buildStart(): Promise<void> {
6
- await this.write('[');
7
- }
8
-
9
- async addItem(car: MeinstadtJsonItem, firstSym?: boolean): Promise<void> {
10
- if (firstSym) {
11
- await this.write(`${JSON.stringify(car)}`);
12
- } else await this.write(`,${JSON.stringify(car)}`);
13
- }
14
-
15
- async buildEnd(): Promise<void> {
16
- await this.write(']');
17
- await this.end();
18
- }
19
- }
1
+ import { XMLBuilderBase } from '@bytebrand/cronicle-helper';
2
+ import { MeinstadtJsonItem } from '../interfaces';
3
+
4
+ export class MeinstadtJsonBuilder extends XMLBuilderBase {
5
+ async buildStart(): Promise<void> {
6
+ await this.write('[');
7
+ }
8
+
9
+ async addItem(car: MeinstadtJsonItem, firstSym?: boolean): Promise<void> {
10
+ if (firstSym) {
11
+ await this.write(`${JSON.stringify(car)}`);
12
+ } else await this.write(`,${JSON.stringify(car)}`);
13
+ }
14
+
15
+ async buildEnd(): Promise<void> {
16
+ await this.write(']');
17
+ await this.end();
18
+ }
19
+ }