goods-exporter 0.2.7 → 0.2.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.
package/dist/bundle.d.ts CHANGED
@@ -1,465 +1,475 @@
1
- import { XMLBuilder } from 'fast-xml-parser';
2
-
3
1
  interface Product {
4
2
  /**
5
- * **ID товара**
6
- *
7
- * Любая последовательность длиной до 80 знаков. В нее могут входить английские и русские (кроме ё) буквы, цифры и символы . , / \ ( ) [ ] - = _
8
- *
9
- * Пример: belaya-kofta-12345
10
- */
3
+ * **ID товара**
4
+ *
5
+ * Любая последовательность длиной до 80 знаков. В нее могут входить английские и русские (кроме ё) буквы, цифры и символы . , / \ ( ) [ ] - = _
6
+ *
7
+ * Пример: belaya-kofta-12345
8
+ */
11
9
  productId: number;
12
10
  /**
13
- * **Родительскй SKU**
14
- *
15
- * Любая последовательность длиной до 80 знаков. В нее могут входить английские и русские (кроме ё) буквы, цифры и символы . , / \ ( ) [ ] - = _
16
- *
17
- * Пример: belaya-kofta-12345
18
- */
11
+ * **Родительскй SKU**
12
+ *
13
+ * Любая последовательность длиной до 80 знаков. В нее могут входить английские и русские (кроме ё) буквы, цифры и символы . , / \ ( ) [ ] - = _
14
+ *
15
+ * Пример: belaya-kofta-12345
16
+ */
19
17
  parentId?: number;
20
18
  /**
21
- * **SKU**
22
- *
23
- * Любая последовательность длиной до 80 знаков. В нее могут входить английские и русские (кроме ё) буквы, цифры и символы . , / \ ( ) [ ] - = _
24
- *
25
- * Пример: belaya-kofta-12345
26
- */
19
+ * **SKU**
20
+ *
21
+ * Любая последовательность длиной до 80 знаков. В нее могут входить английские и русские (кроме ё) буквы, цифры и символы . , / \ ( ) [ ] - = _
22
+ *
23
+ * Пример: belaya-kofta-12345
24
+ */
27
25
  variantId: number;
28
26
  /**
29
- * **Название**
30
- *
31
- * Составляйте название по схеме: тип + бренд или производитель + модель + особенности, если есть (например, цвет, размер или вес) и количество в упаковке.
32
- *
33
- * Не включайте в название условия продажи (например, «скидка», «бесплатная доставка» и т. д.), эмоциональные характеристики («хит», «супер» и т. д.). Не пишите слова большими буквами — кроме устоявшихся названий брендов и моделей.
34
- *
35
- * Оптимальная длина — 50–60 символов, максимальная — 150.
36
- *
37
- * Составлять хорошие названия помогут [рекомендации](https://yandex.ru/support/marketplace/assortment/fields/title.html).
38
- *
39
- * Пример: Ударная дрель Makita HP1630, 710 Вт
40
- */
27
+ * **Название**
28
+ *
29
+ * Составляйте название по схеме: тип + бренд или производитель + модель + особенности, если есть (например, цвет, размер или вес) и количество в упаковке.
30
+ *
31
+ * Не включайте в название условия продажи (например, «скидка», «бесплатная доставка» и т. д.), эмоциональные характеристики («хит», «супер» и т. д.). Не пишите слова большими буквами — кроме устоявшихся названий брендов и моделей.
32
+ *
33
+ * Оптимальная длина — 50–60 символов, максимальная — 150.
34
+ *
35
+ * Составлять хорошие названия помогут [рекомендации](https://yandex.ru/support/marketplace/assortment/fields/title.html).
36
+ *
37
+ * Пример: Ударная дрель Makita HP1630, 710 Вт
38
+ */
41
39
  title: string;
42
40
  /**
43
- * **Описание**
44
- *
45
- * Подробное описание товара: например, его преимущества и особенности.
46
- *
47
- * Не давайте в описании инструкций по установке и сборке. Не используйте слова «скидка», «распродажа», «дешевый», «подарок» (кроме подарочных категорий), «бесплатно», «акция», «специальная цена», «новинка», «new», «аналог», «заказ», «хит». Не указывайте никакой контактной информации и не давайте ссылок.
48
- *
49
- * Можно использовать теги:
50
- *
51
- ** <h>, <h1>, <h2> и так далее — для заголовков;
52
- ** <br> и <p> — для переноса строки;
53
- ** <ol> — для нумерованного списка;
54
- ** <ul> — для маркированного списка;
55
- ** <li> — для создания элементов списка (должен находиться внутри <ol> или <ul>);
56
- ** <div> — поддерживается, но не влияет на отображение текста.
57
- * Оптимальная длина — 400–600 символов, максимальная — 6000.
58
- *
59
- * Составить хорошее описание помогут рекомендации.
60
- *
61
- * Пример: В комплекте с детским микроскопом есть все, что нужно вашему ребенку для изучения микромира
62
- */
41
+ * **Описание**
42
+ *
43
+ * Подробное описание товара: например, его преимущества и особенности.
44
+ *
45
+ * Не давайте в описании инструкций по установке и сборке. Не используйте слова «скидка», «распродажа», «дешевый», «подарок» (кроме подарочных категорий), «бесплатно», «акция», «специальная цена», «новинка», «new», «аналог», «заказ», «хит». Не указывайте никакой контактной информации и не давайте ссылок.
46
+ *
47
+ * Можно использовать теги:
48
+ *
49
+ ** <h>, <h1>, <h2> и так далее — для заголовков;
50
+ ** <br> и <p> — для переноса строки;
51
+ ** <ol> — для нумерованного списка;
52
+ ** <ul> — для маркированного списка;
53
+ ** <li> — для создания элементов списка (должен находиться внутри <ol> или <ul>);
54
+ ** <div> — поддерживается, но не влияет на отображение текста.
55
+ * Оптимальная длина — 400–600 символов, максимальная — 6000.
56
+ *
57
+ * Составить хорошее описание помогут рекомендации.
58
+ *
59
+ * Пример: В комплекте с детским микроскопом есть все, что нужно вашему ребенку для изучения микромира
60
+ */
63
61
  description: string;
64
62
  /**
65
- * **Бренд**
66
- *
67
- * Название бренда или производителя.
68
- *
69
- * Записывайте название так, как его пишет сам бренд.
70
- *
71
- * Пример: LEVENHUK
72
- */
63
+ * **Бренд**
64
+ *
65
+ * Название бренда или производителя.
66
+ *
67
+ * Записывайте название так, как его пишет сам бренд.
68
+ *
69
+ * Пример: LEVENHUK
70
+ */
73
71
  vendor?: string;
74
72
  /**
75
- * **Артикул производителя**
76
- *
77
- * Код товара, который ему присвоил производитель.
78
- *
79
- * Если артикулов несколько, укажите их через запятую.
80
- *
81
- * Пример: VNDR-0005A, VNDR-0005B
82
- */
73
+ * **Артикул производителя**
74
+ *
75
+ * Код товара, который ему присвоил производитель.
76
+ *
77
+ * Если артикулов несколько, укажите их через запятую.
78
+ *
79
+ * Пример: VNDR-0005A, VNDR-0005B
80
+ */
83
81
  vendorCode?: string;
84
82
  /**
85
- * **Категория в магазине**
86
- *
87
- * Категория, к которой вы относите товар. Она помогает точнее определить для товара категорию на Маркете.
88
- *
89
- * Указывайте конкретные категории — например, набор ножей лучше отнести к категории Столовые приборы, а не просто Посуда.
90
- *
91
- * Выбирайте категории, которые описывают товар, а не абстрактный признак — например, лучше указать Духи, а не Подарки.
92
- *
93
- * Содержит номер категории, а не ее название.
94
- */
83
+ * **Дата выхода**
84
+ *
85
+ * Пример: 01.01.2000
86
+ */
87
+ saleDate?: string;
88
+ /**
89
+ * **Категория в магазине**
90
+ *
91
+ * Категория, к которой вы относите товар. Она помогает точнее определить для товара категорию на Маркете.
92
+ *
93
+ * Указывайте конкретные категории — например, набор ножей лучше отнести к категории Столовые приборы, а не просто Посуда.
94
+ *
95
+ * Выбирайте категории, которые описывают товар, а не абстрактный признак — например, лучше указать Духи, а не Подарки.
96
+ *
97
+ * Содержит номер категории, а не ее название.
98
+ */
95
99
  categoryId: number;
96
100
  /**
97
- * **Страна производства**
98
- *
99
- * Страна, где был произведен товар.
100
- *
101
- * Записывайте названия стран так, как они записаны в [списке](https://yastatic.net/s3/doc-binary/src/support/market/ru/countries.xlsx).
102
- *
103
- * Пример: Россия
104
- */
101
+ * **Страна производства**
102
+ *
103
+ * Страна, где был произведен товар.
104
+ *
105
+ * Записывайте названия стран так, как они записаны в [списке](https://yastatic.net/s3/doc-binary/src/support/market/ru/countries.xlsx).
106
+ *
107
+ * Пример: Россия
108
+ */
105
109
  countryOfOrigin?: string;
106
110
  /**
107
- * **Изображение**
108
- *
109
- * До двадцати изображений, которые показываются на карточке товара.
110
- *
111
- * Принимаются jpg- или png-изображения товара, соответствующие [требованиям](https://yandex.ru/support/marketplace/assortment/fields/images.html).
112
- *
113
- * В кабинете изображения добавляются в виде файлов. В Excel-файле — в виде ссылок через запятую. Первое фото становится основным.
114
- *
115
- * Чтобы изменить изображение, выложите новое по новой ссылке, иначе картинка не обновится.
116
- */
111
+ * **Изображение**
112
+ *
113
+ * До двадцати изображений, которые показываются на карточке товара.
114
+ *
115
+ * Принимаются jpg- или png-изображения товара, соответствующие [требованиям](https://yandex.ru/support/marketplace/assortment/fields/images.html).
116
+ *
117
+ * В кабинете изображения добавляются в виде файлов. В Excel-файле — в виде ссылок через запятую. Первое фото становится основным.
118
+ *
119
+ * Чтобы изменить изображение, выложите новое по новой ссылке, иначе картинка не обновится.
120
+ */
117
121
  images?: string[];
118
122
  /**
119
- * **Видео**
120
- *
121
- * Видеоиллюстрации для карточки товара.
122
- *
123
- * Видео должно соответствовать [требованиям](https://yandex.ru/support/marketplace/assortment/fields/video.html).
124
- *
125
- * Можно добавить не больше 6 видео.
126
- *
127
- * В кабинете можно загрузить видеофайлы. В Excel-шаблоне укажите ссылки на файлы.
128
- */
123
+ * **Видео**
124
+ *
125
+ * Видеоиллюстрации для карточки товара.
126
+ *
127
+ * Видео должно соответствовать [требованиям](https://yandex.ru/support/marketplace/assortment/fields/video.html).
128
+ *
129
+ * Можно добавить не больше 6 видео.
130
+ *
131
+ * В кабинете можно загрузить видеофайлы. В Excel-шаблоне укажите ссылки на файлы.
132
+ */
129
133
  videos?: string[];
130
134
  /**
131
- * **Базовая цена**
132
- *
133
- * Цена указывается в рублях. Число должно быть целым.
134
- *
135
- * Пример:
136
- *
137
- * 240
138
- */
135
+ * **Базовая цена**
136
+ *
137
+ * Цена указывается в рублях. Число должно быть целым.
138
+ *
139
+ * Пример:
140
+ *
141
+ * 240
142
+ */
139
143
  price: number;
140
144
  /**
141
- * **Цена до скидки**
142
- *
143
- * Цена указывается в рублях. Число должно быть целым.
144
- *
145
- * Вы можете указать цену со скидкой от 5 до 75 %.
146
- *
147
- * Пример:
148
- *
149
- * 250
150
- */
145
+ * **Цена до скидки**
146
+ *
147
+ * Цена указывается в рублях. Число должно быть целым.
148
+ *
149
+ * Вы можете указать цену со скидкой от 5 до 75 %.
150
+ *
151
+ * Пример:
152
+ *
153
+ * 250
154
+ */
151
155
  oldPrice?: number;
152
156
  /**
153
- * **Себестоимость**
154
- *
155
- * Цена указывается в рублях. Число должно быть целым.
156
- *
157
- * Пример:
158
- *
159
- * 200
160
- */
157
+ * **Себестоимость**
158
+ *
159
+ * Цена указывается в рублях. Число должно быть целым.
160
+ *
161
+ * Пример:
162
+ *
163
+ * 200
164
+ */
161
165
  purchasePrice?: number;
162
166
  /**
163
- * **Дополнительные расходы**
164
- *
165
- * Дополнительные расходы на товар. Например, на доставку или упаковку.
166
- *
167
- * После заполнения этого поля в калькуляторе и на странице управления ценами рассчитается потенциальная маржинальность товара.
168
- *
169
- * Цена указывается в рублях. Число должно быть целым.
170
- *
171
- * Пример:
172
- *
173
- * 75
174
- */
167
+ * **Дополнительные расходы**
168
+ *
169
+ * Дополнительные расходы на товар. Например, на доставку или упаковку.
170
+ *
171
+ * После заполнения этого поля в калькуляторе и на странице управления ценами рассчитается потенциальная маржинальность товара.
172
+ *
173
+ * Цена указывается в рублях. Число должно быть целым.
174
+ *
175
+ * Пример:
176
+ *
177
+ * 75
178
+ */
175
179
  additionalExpenses?: number;
176
180
  /**
177
- * **Порог для скидок с Маркетом**
178
- *
179
- * Цена указывается в рублях. Число должно быть целым.
180
- *
181
- * Пример:
182
- *
183
- * 300
184
- */
181
+ * **Порог для скидок с Маркетом**
182
+ *
183
+ * Цена указывается в рублях. Число должно быть целым.
184
+ *
185
+ * Пример:
186
+ *
187
+ * 300
188
+ */
185
189
  cofinancePrice?: number;
186
190
  /**
187
- * **Валюта (DBS)**
188
- *
189
- * Валюта, в которой указана цена товара. Покупателям Маркет показывает цену в рублях, пересчитывая ее по курсу Центробанка.
190
- *
191
- * Поле используется, если для кабинета еще не включена работа с базовыми ценами.
192
- *
193
- * Поддерживаются российские и белорусские рубли, евро, доллары, украинские гривны и казахстанские тенге.
194
- *
195
- * В кабинете валюту можно просто выбрать из списка. В Excel-файле указывается код валюты: RUR, BYN, EUR, USD, UAN, KZT.
196
- */
191
+ * **Валюта (DBS)**
192
+ *
193
+ * Валюта, в которой указана цена товара. Покупателям Маркет показывает цену в рублях, пересчитывая ее по курсу Центробанка.
194
+ *
195
+ * Поле используется, если для кабинета еще не включена работа с базовыми ценами.
196
+ *
197
+ * Поддерживаются российские и белорусские рубли, евро, доллары, украинские гривны и казахстанские тенге.
198
+ *
199
+ * В кабинете валюту можно просто выбрать из списка. В Excel-файле указывается код валюты: RUR, BYN, EUR, USD, UAN, KZT.
200
+ */
197
201
  currency: Currency;
198
202
  /**
199
- * **Ссылка на страницу товара**
200
- *
201
- * Адрес страницы на вашем сайте с фотографиями и описанием товара.
202
- *
203
- * Максимальная длина URL — 512 символов. Записывайте его согласно стандарту RFC 3986.
204
- *
205
- * Пример: http://best.seller.ru/product_page.asp?pid=12346
206
- */
203
+ * **Ссылка на страницу товара**
204
+ *
205
+ * Адрес страницы на вашем сайте с фотографиями и описанием товара.
206
+ *
207
+ * Максимальная длина URL — 512 символов. Записывайте его согласно стандарту RFC 3986.
208
+ *
209
+ * Пример: http://best.seller.ru/product_page.asp?pid=12346
210
+ */
207
211
  url?: string;
208
212
  /**
209
- * **Убрать из продажи**
210
- *
211
- * Поле позволяет приостановить продажу товара.
212
- *
213
- * Укажите значение true, если нужно приостановить продажу.
214
- */
213
+ * **Убрать из продажи**
214
+ *
215
+ * Поле позволяет приостановить продажу товара.
216
+ *
217
+ * Укажите значение true, если нужно приостановить продажу.
218
+ */
215
219
  disabled?: boolean;
216
220
  /**
217
- * **Доступное количество товара**
218
- *
219
- * Общее количество товара, доступное для продажи
220
- *
221
- * Укажите 0, если товара нет в наличии.
222
- *
223
- * Пример: 7
224
- */
221
+ * **Доступное количество товара**
222
+ *
223
+ * Общее количество товара, доступное для продажи
224
+ *
225
+ * Укажите 0, если товара нет в наличии.
226
+ *
227
+ * Пример: 7
228
+ */
225
229
  count?: number;
226
230
  /**
227
- * **Товар в наличии (DBS)**
228
- *
229
- * Поле указывает, есть ли товар в наличии.
230
- */
231
+ * **Товар в наличии (DBS)**
232
+ *
233
+ * Поле указывает, есть ли товар в наличии.
234
+ */
231
235
  available?: boolean;
232
236
  /**
233
- * **Минимальное количество товара**
234
- *
235
- * Если значение задано, покупатель не сможет заказать меньше единиц товара. Ограничение не работает, когда товара на складе осталось меньше этого количества — тогда покупатель сможет сделать заказ на остаток.
236
- *
237
- * Целое число.
238
- */
237
+ * **Минимальное количество товара**
238
+ *
239
+ * Если значение задано, покупатель не сможет заказать меньше единиц товара. Ограничение не работает, когда товара на складе осталось меньше этого количества — тогда покупатель сможет сделать заказ на остаток.
240
+ *
241
+ * Целое число.
242
+ */
239
243
  minQuantity?: number;
240
244
  /**
241
- * **Квант продажи**
242
- *
243
- * Если значение задано, покупатель сможет добавить к заказу только кратное количество товара. Ограничение не работает, когда на складе осталось меньше этого количества — тогда покупатель сможет сделать заказ на остаток.
244
- *
245
- * Целое число.
246
- */
245
+ * **Квант продажи**
246
+ *
247
+ * Если значение задано, покупатель сможет добавить к заказу только кратное количество товара. Ограничение не работает, когда на складе осталось меньше этого количества — тогда покупатель сможет сделать заказ на остаток.
248
+ *
249
+ * Целое число.
250
+ */
247
251
  stepQuantity?: number;
248
252
  /**
249
- * **Штрихкод**
250
- *
251
- * Указывайте в виде последовательности символов. Подойдут коды EAN-13, EAN-8, UPC-A, UPC-E или Code 128.
252
- *
253
- * Для книг указывайте ISBN.
254
- *
255
- * Для товаров [определенных категорий и торговых марок](https://yastatic.net/s3/doc-binary/src/support/market/ru/yandex-market-list-for-gtin.xlsx) штрихкод должен быть действительным кодом GTIN. Обратите внимание: внутренние штрихкоды, начинающиеся на 2 или 02, и коды формата Code 128 не являются GTIN.
256
- *
257
- * Если штрихкодов несколько, напишите все через запятую.
258
- *
259
- * Пример: 46012300000000
260
- */
253
+ * **Штрихкод**
254
+ *
255
+ * Указывайте в виде последовательности символов. Подойдут коды EAN-13, EAN-8, UPC-A, UPC-E или Code 128.
256
+ *
257
+ * Для книг указывайте ISBN.
258
+ *
259
+ * Для товаров [определенных категорий и торговых марок](https://yastatic.net/s3/doc-binary/src/support/market/ru/yandex-market-list-for-gtin.xlsx) штрихкод должен быть действительным кодом GTIN. Обратите внимание: внутренние штрихкоды, начинающиеся на 2 или 02, и коды формата Code 128 не являются GTIN.
260
+ *
261
+ * Если штрихкодов несколько, напишите все через запятую.
262
+ *
263
+ * Пример: 46012300000000
264
+ */
261
265
  barcode?: string;
262
266
  /**
263
- * **Код ТН ВЭД**
264
- *
265
- * Для некоторых категорий товаров код ТН ВЭД обязателен. Если это касается ваших товаров, вы получите уведомление в каталоге.
266
- *
267
- * 10 или 14 цифр без пробелов.
268
- *
269
- * Пример: 8517610008
270
- */
267
+ * **Код ТН ВЭД**
268
+ *
269
+ * Для некоторых категорий товаров код ТН ВЭД обязателен. Если это касается ваших товаров, вы получите уведомление в каталоге.
270
+ *
271
+ * 10 или 14 цифр без пробелов.
272
+ *
273
+ * Пример: 8517610008
274
+ */
271
275
  codesTN?: string[];
272
276
  /**
273
- * **С какого возраста пользоваться**
274
- *
275
- * Если товар не предназначен для детей младше определенного возраста, укажите это.
276
- *
277
- * Возрастные ограничения можно задавать в годах (с нуля, с 6, 12, 16 или 18) или в месяцах (любое число от 0 до 12).
278
- */
277
+ * **С какого возраста пользоваться**
278
+ *
279
+ * Если товар не предназначен для детей младше определенного возраста, укажите это.
280
+ *
281
+ * Возрастные ограничения можно задавать в годах (с нуля, с 6, 12, 16 или 18) или в месяцах (любое число от 0 до 12).
282
+ */
279
283
  age?: {
280
- unit: "year" | "month";
284
+ unit: 'year' | 'month';
281
285
  value: number;
282
286
  };
283
287
  /**
284
- * **Вес с упаковкой**
285
- *
286
- * Вес товара с упаковкой.
287
- *
288
- * Единица измерения — килограммы. Можно дроби: разделитель — точка или запятая, не больше трех цифр после него.
289
- *
290
- * Пример: 3.1
291
- */
288
+ * **Вес с упаковкой**
289
+ *
290
+ * Вес товара с упаковкой.
291
+ *
292
+ * Единица измерения — килограммы. Можно дроби: разделитель — точка или запятая, не больше трех цифр после него.
293
+ *
294
+ * Пример: 3.1
295
+ */
292
296
  weight?: number;
293
297
  /**
294
- * **Габариты с упаковкой**
295
- *
296
- * Длина, ширина, высота в упаковке.
297
- *
298
- * Единица измерения — сантиметры. Можно дроби: разделитель — точка или запятая, не больше трех цифр после него.
299
- *
300
- * Пример: 20.1/20.551/22.5
301
- */
298
+ * **Габариты с упаковкой**
299
+ *
300
+ * Длина, ширина, высота в упаковке.
301
+ *
302
+ * Единица измерения — сантиметры. Можно дроби: разделитель — точка или запятая, не больше трех цифр после него.
303
+ *
304
+ * Пример: 20.1/20.551/22.5
305
+ */
302
306
  dimensions?: string;
303
307
  /**
304
- * **Товар занимает больше одного места**
305
- *
306
- * Если товар занимает одно место (представляет собой одну коробку, упаковку и так далее), оставьте поле пустым. Если товар занимает несколько мест — укажите их количество. Например, кондиционер занимает два места — внешний и внутренний блоки в двух коробках.
307
- *
308
- * Укажите количество мест.
309
- *
310
- * Пример: 2
311
- */
308
+ * **Товар занимает больше одного места**
309
+ *
310
+ * Если товар занимает одно место (представляет собой одну коробку, упаковку и так далее), оставьте поле пустым. Если товар занимает несколько мест — укажите их количество. Например, кондиционер занимает два места — внешний и внутренний блоки в двух коробках.
311
+ *
312
+ * Укажите количество мест.
313
+ *
314
+ * Пример: 2
315
+ */
312
316
  boxCount?: number;
313
317
  /**
314
- * **Ставка НДС**
315
- *
316
- * Значение ставки НДС для товара.
317
- *
318
- * Выберите одно из значений:
319
- *
320
- ** НДС не облагается — 6 или NO_VAT
321
- *
322
- ** 0 % — 5 или VAT_0
323
- *
324
- ** 10 % — 2 или VAT_10
325
- *
326
- ** 20 % — 7 или VAT_20
327
- *
328
- * Если не заполнено, Маркет устанавливает ставку, соответствующую схеме налогообложения.
329
- *
330
- * Пример: VAT_20
331
- */
318
+ * **Ставка НДС**
319
+ *
320
+ * Значение ставки НДС для товара.
321
+ *
322
+ * Выберите одно из значений:
323
+ *
324
+ ** НДС не облагается — 6 или NO_VAT
325
+ *
326
+ ** 0 % — 5 или VAT_0
327
+ *
328
+ ** 10 % — 2 или VAT_10
329
+ *
330
+ ** 20 % — 7 или VAT_20
331
+ *
332
+ * Если не заполнено, Маркет устанавливает ставку, соответствующую схеме налогообложения.
333
+ *
334
+ * Пример: VAT_20
335
+ */
332
336
  vat: Vat;
333
337
  /**
334
- * **Характеристики, которые есть только у товаров конкретной категории**
335
- *
336
- * Кроме общих свойств, у товара есть характеристики, присущие конкретной категории, к которой он относится. Например, у велосипеда есть размер рамы, а детское пюре бывает овощное, мясное или фруктовое.
337
- */
338
+ * **Характеристики, которые есть только у товаров конкретной категории**
339
+ *
340
+ * Кроме общих свойств, у товара есть характеристики, присущие конкретной категории, к которой он относится. Например, у велосипеда есть размер рамы, а детское пюре бывает овощное, мясное или фруктовое.
341
+ */
338
342
  params?: IParam[];
339
343
  /**
340
- * **Теги**
341
- *
342
- * Придумайте любое название — его можно будет изменить после.
343
- *
344
- * Максимальная длина тега — 20 символов.
345
- *
346
- * У одного товара — максимум 10 тегов.
347
- *
348
- * Всего можно создать не больше 50 разных тегов.
344
+ * **Свойства товара**
349
345
  *
350
- * Пример: apple, до 500 рублей
346
+ * *не YML поле
351
347
  */
348
+ properties?: IParam[];
349
+ /**
350
+ * **Теги**
351
+ *
352
+ * Придумайте любое название — его можно будет изменить после.
353
+ *
354
+ * Максимальная длина тега — 20 символов.
355
+ *
356
+ * У одного товара — максимум 10 тегов.
357
+ *
358
+ * Всего можно создать не больше 50 разных тегов.
359
+ *
360
+ * Пример: apple, до 500 рублей
361
+ */
352
362
  tags?: string[];
353
363
  /**
354
- * **Товар для взрослых**
355
- *
356
- * Параметр включает для товара пометку 18+. Устанавливайте ее только для товаров, которые относятся к удовлетворению сексуальных потребностей.
357
- */
364
+ * **Товар для взрослых**
365
+ *
366
+ * Параметр включает для товара пометку 18+. Устанавливайте ее только для товаров, которые относятся к удовлетворению сексуальных потребностей.
367
+ */
358
368
  adult?: boolean;
359
369
  /**
360
- * **Цифровой товар**
361
- *
362
- * Параметр, устанавливаемый для цифровых товаров, которые просто скачиваются.
363
- */
370
+ * **Цифровой товар**
371
+ *
372
+ * Параметр, устанавливаемый для цифровых товаров, которые просто скачиваются.
373
+ */
364
374
  downloadable?: boolean;
365
375
  /**
366
- * **Срок годности**
367
- *
368
- * Период с момента изготовления, по прошествии которого товар становится непригоден.
369
- *
370
- * Указывайте срок, указанный на банке или упаковке. Текущая дата, дата поставки или дата отгрузки значения не имеет.
371
- *
372
- * Срок можно указывать в годах, месяцах, днях, неделях и часах.
373
- *
374
- * Обязательно указывайте срок, если он есть.
375
- *
376
- * Продолжительность указывается согласно ISO 8601, то есть в виде строчки, начинающейся буквой P:
377
- *
378
- ** P1Y — 1 год;
379
- ** P1Y6M — 1 год и 6 месяцев;
380
- ** P15D — 15 дней.
381
- */
376
+ * **Срок годности**
377
+ *
378
+ * Период с момента изготовления, по прошествии которого товар становится непригоден.
379
+ *
380
+ * Указывайте срок, указанный на банке или упаковке. Текущая дата, дата поставки или дата отгрузки значения не имеет.
381
+ *
382
+ * Срок можно указывать в годах, месяцах, днях, неделях и часах.
383
+ *
384
+ * Обязательно указывайте срок, если он есть.
385
+ *
386
+ * Продолжительность указывается согласно ISO 8601, то есть в виде строчки, начинающейся буквой P:
387
+ *
388
+ ** P1Y — 1 год;
389
+ ** P1Y6M — 1 год и 6 месяцев;
390
+ ** P15D — 15 дней.
391
+ */
382
392
  validityPeriod?: string;
383
393
  /**
384
- * **Комментарий к сроку годности**
385
- *
386
- * Поле предназначено для описаний условий хранения.
387
- *
388
- * Не длиннее 250 знаков и без спецсимволов.
389
- *
390
- * Пример: Хранить в сухом помещении
391
- */
394
+ * **Комментарий к сроку годности**
395
+ *
396
+ * Поле предназначено для описаний условий хранения.
397
+ *
398
+ * Не длиннее 250 знаков и без спецсимволов.
399
+ *
400
+ * Пример: Хранить в сухом помещении
401
+ */
392
402
  validityComment?: string;
393
403
  /**
394
- * **Срок службы**
395
- *
396
- * В течение срока службы товар должен исправно выполнять свою функцию.
397
- *
398
- * Обязательно указывайте срок, если он есть.
399
- *
400
- * Срок можно указывать в годах, месяцах и днях.
401
- * Продолжительность указывается согласно ISO 8601, то есть в виде строчки, начинающейся буквой P:
402
- *
403
- ** P1Y — 1 год;
404
- ** P1Y2M — 1 год и 2 месяца;
405
- ** P15D — 15 дней;
406
- ** P2Y10D — 2 года, 10 дней;
407
- ** P2Y6M10D — 2 года, 6 месяцев и 10 дней.
408
- */
404
+ * **Срок службы**
405
+ *
406
+ * В течение срока службы товар должен исправно выполнять свою функцию.
407
+ *
408
+ * Обязательно указывайте срок, если он есть.
409
+ *
410
+ * Срок можно указывать в годах, месяцах и днях.
411
+ * Продолжительность указывается согласно ISO 8601, то есть в виде строчки, начинающейся буквой P:
412
+ *
413
+ ** P1Y — 1 год;
414
+ ** P1Y2M — 1 год и 2 месяца;
415
+ ** P15D — 15 дней;
416
+ ** P2Y10D — 2 года, 10 дней;
417
+ ** P2Y6M10D — 2 года, 6 месяцев и 10 дней.
418
+ */
409
419
  serviceLifePeriod?: string;
410
420
  /**
411
- * **Комментарий к сроку службы**
412
- *
413
- * Поле предназначено для описаний условий использования.
414
- *
415
- * Не длиннее 250 знаков и без спецсимволов.
416
- *
417
- * Пример: Использовать при температуре не ниже −10 градусов
418
- */
421
+ * **Комментарий к сроку службы**
422
+ *
423
+ * Поле предназначено для описаний условий использования.
424
+ *
425
+ * Не длиннее 250 знаков и без спецсимволов.
426
+ *
427
+ * Пример: Использовать при температуре не ниже −10 градусов
428
+ */
419
429
  serviceLifeComment?: string;
420
430
  /**
421
- * **Гарантийный срок**
422
- *
423
- * В течение какого времени можно бесплатно заменить или починить товар.
424
- *
425
- * Срок можно указывать в годах, месяцах или днях.
426
- *
427
- * Продолжительность указывается согласно ISO 8601, то есть в виде строчки, начинающейся буквой P:
428
- *
429
- ** P1Y — 1 год;
430
- ** P1Y2M — 1 год и 2 месяца;
431
- ** P15D — 15 дней;
432
- ** P2Y10D — 2 года, 10 дней;
433
- ** P2Y6M10D — 2 года, 6 месяцев и 10 дней.
434
- */
431
+ * **Гарантийный срок**
432
+ *
433
+ * В течение какого времени можно бесплатно заменить или починить товар.
434
+ *
435
+ * Срок можно указывать в годах, месяцах или днях.
436
+ *
437
+ * Продолжительность указывается согласно ISO 8601, то есть в виде строчки, начинающейся буквой P:
438
+ *
439
+ ** P1Y — 1 год;
440
+ ** P1Y2M — 1 год и 2 месяца;
441
+ ** P15D — 15 дней;
442
+ ** P2Y10D — 2 года, 10 дней;
443
+ ** P2Y6M10D — 2 года, 6 месяцев и 10 дней.
444
+ */
435
445
  warrantyPeriod?: string;
436
446
  /**
437
- * **Комментарий к гарантийному сроку**
438
- *
439
- * Поле предназначено для описания особенностей гарантийных условий.
440
- *
441
- * Указывайте только то, что относится к гарантии изготовителя.
442
- *
443
- * Не длиннее 250 знаков и без спецсимволов.
444
- *
445
- * Пример: Гарантия на аккумулятор — 6 месяцев
446
- */
447
+ * **Комментарий к гарантийному сроку**
448
+ *
449
+ * Поле предназначено для описания особенностей гарантийных условий.
450
+ *
451
+ * Указывайте только то, что относится к гарантии изготовителя.
452
+ *
453
+ * Не длиннее 250 знаков и без спецсимволов.
454
+ *
455
+ * Пример: Гарантия на аккумулятор — 6 месяцев
456
+ */
447
457
  warrantyComment?: string;
448
458
  /**
449
- * **Официальная гарантия производителя**
450
- */
459
+ * **Официальная гарантия производителя**
460
+ */
451
461
  manufacturerWarranty?: boolean;
452
462
  /**
453
- * **Номер документа**
454
- *
455
- * Номер документа на товар: сертификата, декларации соответствия и т. п.
456
- *
457
- * Прежде чем указывать номер документа, загрузите скан документа через кабинет.
458
- *
459
- * Укажите номер документа.
460
- *
461
- * Пример: 6241421
462
- */
463
+ * **Номер документа**
464
+ *
465
+ * Номер документа на товар: сертификата, декларации соответствия и т. п.
466
+ *
467
+ * Прежде чем указывать номер документа, загрузите скан документа через кабинет.
468
+ *
469
+ * Укажите номер документа.
470
+ *
471
+ * Пример: 6241421
472
+ */
463
473
  certificate?: string;
464
474
  }
465
475
  declare enum Vat {
@@ -478,54 +488,94 @@ declare enum Currency {
478
488
  }
479
489
  interface IParam {
480
490
  /**
481
- * **Название характеристики**
482
- */
491
+ * **Название характеристики**
492
+ */
483
493
  key: string;
484
494
  /**
485
- * **Значение**
486
- */
495
+ * **Значение**
496
+ */
487
497
  value: string;
488
498
  }
489
499
 
490
500
  interface Category {
491
501
  /**
492
- * **ID категории**
493
- *
494
- * Целое число
495
- */
502
+ * **ID категории**
503
+ *
504
+ * Целое число
505
+ */
496
506
  id: number;
497
507
  /**
498
- * **ID родительской категории**
499
- *
500
- * Целое число
501
- */
508
+ * **ID родительской категории**
509
+ *
510
+ * Целое число
511
+ */
502
512
  parentId?: number;
503
513
  /**
504
- * **Название категории**
505
- */
514
+ * **Название категории**
515
+ */
506
516
  name: string;
507
517
  }
508
518
 
509
- declare class YMLFormatter implements Formatter {
510
- builder: XMLBuilder;
511
- format(products: Product[], categories?: Category[], options?: FormatterOptions): Promise<string>;
512
- private getOffers;
513
- }
514
-
515
- interface Formatter {
516
- format(products: Product[], categories?: Category[], option?: FormatterOptions): Promise<string>;
519
+ declare abstract class FormatterAbstract {
520
+ abstract formatterName: string;
521
+ abstract fileExtension: Extension;
522
+ abstract format(products: Product[], categories?: Category[], option?: FormatterOptions): Promise<string>;
517
523
  }
518
524
  interface FormatterOptions {
525
+ /**
526
+ * **Название магазина**
527
+ *
528
+ * Используется в YML формате
529
+ */
519
530
  shopName?: string;
531
+ /**
532
+ * **Название компании**
533
+ *
534
+ * Используется в YML формате
535
+ */
520
536
  companyName?: string;
537
+ /**
538
+ * **Параметры в отдельных столбцах**
539
+ *
540
+ * Используется в CSV и XLSX формате
541
+ */
521
542
  splitParams?: boolean;
522
543
  }
523
- declare const Formatters: {
524
- CSV: CSVFormatter;
525
- YML: YMLFormatter;
526
- };
544
+ declare enum Extension {
545
+ CSV = "csv",
546
+ YML = "yml",
547
+ XLSX = "xlsx"
548
+ }
549
+
550
+ declare class CSVFormatter implements FormatterAbstract {
551
+ formatterName: string;
552
+ fileExtension: Extension;
553
+ format(products: Product[], categories?: Category[], option?: FormatterOptions): Promise<string>;
554
+ }
555
+
556
+ declare class TildaFormatter implements FormatterAbstract {
557
+ formatterName: string;
558
+ fileExtension: Extension;
559
+ format(products: Product[], categories?: Category[], option?: FormatterOptions): Promise<string>;
560
+ }
561
+
562
+ declare class YMLFormatter implements FormatterAbstract {
563
+ formatterName: string;
564
+ fileExtension: Extension;
565
+ private readonly builder;
566
+ format(products: Product[], categories?: Category[], options?: FormatterOptions): Promise<string>;
567
+ private getOffers;
568
+ }
569
+
570
+ declare class TgShopFormatter implements FormatterAbstract {
571
+ formatterName: string;
572
+ fileExtension: Extension;
573
+ format(products: Product[], categories?: Category[], option?: FormatterOptions): Promise<string>;
574
+ }
527
575
 
528
- declare class CSVFormatter implements Formatter {
576
+ declare class InsalesFormatter implements FormatterAbstract {
577
+ formatterName: string;
578
+ fileExtension: Extension;
529
579
  format(products: Product[], categories?: Category[], option?: FormatterOptions): Promise<string>;
530
580
  }
531
581
 
@@ -537,9 +587,9 @@ declare class GoodsExporter {
537
587
  private exporter;
538
588
  private transformers;
539
589
  setTransformers(transformers: Transformer[]): void;
540
- setFormatter(formatter: Formatter): void;
590
+ setFormatter(formatter: FormatterAbstract): void;
541
591
  setExporter(exporter: Exporter): void;
542
592
  export<T>(products: Product[], categories?: Category[], option?: FormatterOptions): Promise<T>;
543
593
  }
544
594
 
545
- export { CSVFormatter, type Category, Currency, type Exporter, type Formatter, type FormatterOptions, Formatters, GoodsExporter, type IParam, type Product, type Transformer, Vat, YMLFormatter };
595
+ export { CSVFormatter, type Category, Currency, type Exporter, Extension, FormatterAbstract, type FormatterOptions, GoodsExporter, type IParam, InsalesFormatter, type Product, TgShopFormatter, TildaFormatter, type Transformer, Vat, YMLFormatter };