saferoute-api 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,199 @@
1
+ # Пакет для работы с API SafeRoute.
2
+
3
+ [Документация к API](https://wiki.saferoute.ru/ru/api).
4
+
5
+ - [Установка](#установка)
6
+ - [Работа с API](#работа-с-api)
7
+ - [Авторизация, профиль и настройки](#авторизация-профиль-и-настройки)
8
+ - [Авторизация по E-mail и паролю](#авторизация-по-email-и-паролю)
9
+ - [Получение данных и настроек пользователя по токену](#получение-данных-и-настроек-пользоватля-по-токену)
10
+ - [Калькулятор доставки](#калькулятор-доставки)
11
+ - [Расчёт стоимости доставки](#расчёт-стоимости-доставки)
12
+ - [Расчёт стоимости доставки для отдельной транспортной компании](#расчёт-стоимости-доставки-для-отдельной-транспортной-компании)
13
+ - [Получение списка ID транспортных компаний, доставка которыми доступна в выбранный населённый пункт](#получение-списка-id-транспортных-компаний-доставка-которыми-доступна-в-выбранный-населённый-пункт)
14
+ - [Заказы](#заказы)
15
+ - [Получение списка заказов](#получение-списка-заказов)
16
+ - [Получение отдельного заказа](#получение-отдельного-заказа)
17
+ - [Создание заказа](#создание-заказа)
18
+ - [Редактирование заказа](#редактирование-заказа)
19
+ - [Частичное редактирование заказа](#частичное-редактирование-заказа)
20
+ - [Подтверждение заказов](#подтверждение-заказов)
21
+ - [Отмена заказов](#отмена-заказов)
22
+ - [Дублирование заказов](#дублирование-заказов)
23
+ - [Дублирование заказа для возврата](#дублирование-заказа-для-возврата)
24
+ - [Возврат заказов](#возврат-заказов)
25
+ - [Продление хранения на ПВЗ](#продление-хранения-на-пвз)
26
+ - [Комплектация заказов](#комплектация-заказов)
27
+ - [Раскомплектация заказов](#раскомплектация-заказов)
28
+ - [Получение параметров забора для создания заказа без склада и магазина](#получение-параметров-забора-для-создания-заказа-без-склада-и-магазина)
29
+ - [Заборы](#заборы)
30
+ - [Получение списка заборов](#получение-списка-заборов)
31
+ - [Создание забора](#создание-забора)
32
+ - [Отмена забора](#отмена-забора)
33
+ - [Получение списка компаний забора](#получение-списка-компаний-забора)
34
+ - [Товары](#товары)
35
+ - [Получение списка товаров](#получение-списка-товаров)
36
+ - [Получение отдельного товара](#получение-отдельного-товара)
37
+ - [Создание нового товара](#создание-нового-товара)
38
+ - [Редактирование товара](#редактирование-товара)
39
+ - [Частичное редактирование товара](#частичное-редактирование-товара)
40
+ - [Удаление товара](#удаление-товара)
41
+ - [Импорт товаров](#импорт-товаров)
42
+ - [Комплекты товаров](#комплекты-товаров)
43
+ - [Получение списка комплектов](#получение-списка-комплектов)
44
+ - [Получение отдельного комплекта](#получение-отдельного-комплекта)
45
+ - [Создание нового комплекта](#создание-нового-комплекта)
46
+ - [Редактирование комплекта](#редактирование-комплекта)
47
+ - [Удаление комплекта](#удаление-комплекта)
48
+ - [Склады](#склады)
49
+ - [Получение списка складов](#получение-списка-складов)
50
+ - [Получение отдельного склада](#получение-отдельного-склада)
51
+ - [Создание нового склада](#создание-нового-склада)
52
+ - [Редактирование склада](#редактирование-склада)
53
+ - [Удаление склада](#удаление-склада)
54
+ - [Магазины](#магазины)
55
+ - [Получение списка магазинов](#получение-списка-магазинов)
56
+ - [Получение отдельного магазина](#получение-отдельного-магазина)
57
+ - [Создание нового магазина](#создание-нового-магазина)
58
+ - [Редактирование магазина](#редактирование-магазина)
59
+ - [Удаление магазина](#удаление-магазина)
60
+ - [Коробки](#коробки)
61
+ - [Получение списка коробок](#получение-списка-коробок)
62
+ - [Получение отдельной коробки](#получение-отдельной-коробки)
63
+ - [Создание новой коробки](#создание-новой-коробки)
64
+ - [Редактирование коробки](#редактирование-коробки)
65
+ - [Частичное редактирование коробки](#частичное-редактирование-коробки)
66
+ - [Удаление коробки](#удаление-коробки)
67
+ - [Документы](#документы)
68
+ - [Список актов приёма товаров](#cписок-актов-приёма-товаров)
69
+ - [Формирование акта приёма товаров](#формирование-акта-приёма-товаров)
70
+ - [Список актов передачи заказов](#список-актов-передачи-заказов)
71
+ - [Создание актов передачи заказов](#создание-актов-передачи-заказов)
72
+ - [Генерация сборочной ведомости](#генерация-сборочной-ведомости)
73
+ - [Формирование отчёта по движению товаров](#формирование-отчёта-по-движению-товаров)
74
+ - [Список стикеров](#список-стикеров)
75
+ - [Формирование стикеров](#формирование-стикеров)
76
+ - [Отчёты](#отчёты)
77
+ - [Список счетов](#список-счётов)
78
+ - [Список отчётов агента/исполнителя](#список-отчётов-агента-исполнителя)
79
+ - [Список аналитических отчётов](#список-аналитических-отчётов)
80
+ - [Генерация аналитических отчётов](#генерация-аналитических-отчётов)
81
+ - [Маркетплейсы](#маркетплейсы)
82
+ - [Список маркетплейсов](#список-маркетплейсов)
83
+ - [Редактирование настроек маркетплейса](#редактирование-настроек-маркетплейса)
84
+ - [Другое](#другое)
85
+ - [Список дополнительных услуг](#список-дополнительных-услуг)
86
+ - [Информация об интервалах курьерской доставки](#информация-об-интервалах-курьерской-доставки)
87
+ - [Список компаний доставки (кроме возвратных)](#список-компаний-доставки-кроме-возвратных)
88
+ - [Список компаний возврата](#список-компаний-возврата)
89
+ - [Список всех ПВЗ](#список-всех-пвз)
90
+ - [Список маркетплейсов со складами](#список-маркетплейсов-со-складами)
91
+ - [Список статусов заказа](#список-статусов-заказа)
92
+ - [Трекинг заказа](#трекинг-заказа)
93
+ - [Данные по доступным вариантам отгрузки](#данные-по-доступным-вариантам-отгрузки)
94
+ - [Виджеты](#виджеты)
95
+ - [apiScript](#apiScript)
96
+ - [widgets/update-order](#widgets-update-order)
97
+ - [widgets/confirm-order](#widgets-confirm-order)
98
+ - [Константы](#константы)
99
+
100
+ ## Установка
101
+
102
+ ### NPM
103
+ ```
104
+ npm i saferoute-api
105
+ ```
106
+
107
+ ### Yarn
108
+ ```
109
+ yarn add saferoute-api
110
+ ```
111
+
112
+ ## Работа с API
113
+
114
+
115
+
116
+ ## Виджеты
117
+
118
+ Функции для помощи в интеграции виджетов.
119
+
120
+ ### apiScript
121
+
122
+ Реализация API-скрипта виджетов для nodejs.
123
+
124
+ Пример подключения с использованием NestJS.
125
+
126
+ ```typescript
127
+ import { Body, Controller, Get, Post, Query, HttpCode, HttpStatus, Ip } from '@nestjs/common';
128
+
129
+ import api from 'saferoute-api';
130
+
131
+ const token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
132
+ const shopId = 777777;
133
+
134
+ @Controller('widgets')
135
+ export default class WidgetsController {
136
+ @Get('api')
137
+ getApiRequest(@Query() query, @Ip() ip: string) {
138
+ return api.widgets.widgetApi(query.url, 'GET', query.data, { token, shopId }, ip);
139
+ }
140
+
141
+ @Post('api')
142
+ @HttpCode(HttpStatus.OK)
143
+ postApiRequest(@Body('url') url: string, @Body('data') data, @Ip() ip: string) {
144
+ return api.widgets.widgetApi(url, 'POST', data, { token, shopId }, ip);
145
+ }
146
+ }
147
+ ```
148
+
149
+ ### widgets/update-order
150
+
151
+ Функция обновления данных заказа, созданного корзинным виджетом.
152
+
153
+ См. [изменение параметров заказа после его создания](https://wiki.saferoute.ru/ru/widgets/cart#%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D0%BE%D0%B2-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5-%D0%B5%D0%B3%D0%BE-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F).
154
+
155
+ ```typescript
156
+ import api, { WidgetsUpdateOrderResponse } from 'saferoute-api';
157
+
158
+ const token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
159
+ const shopId = 777777;
160
+
161
+ const orderId = '';
162
+
163
+ const res: Promise<WidgetsUpdateOrderResponse> = api.widgets.updateOrder(orderId, {
164
+ status: 'confirmed',
165
+ paymentMethod: 'cod',
166
+ calcCOD: true,
167
+ cmsId: '656565',
168
+ payment: false,
169
+ }, { token, shopId });
170
+ ```
171
+
172
+ ### widgets/confirm-order
173
+
174
+ Функция подтверждения оформления заказа на сайте при оплате через эквайринг корзинного виджета.
175
+
176
+ См. [встроенный эквайринг](https://wiki.saferoute.ru/ru/widgets/cart#%D0%B2%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9-%D1%8D%D0%BA%D0%B2%D0%B0%D0%B9%D1%80%D0%B8%D0%BD%D0%B3).
177
+
178
+ ```typescript
179
+ import api, { WidgetsConfirmOrderResponse } from 'saferoute-api';
180
+
181
+ const token = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
182
+ const shopId = 777777;
183
+
184
+ const checkoutSessId = '';
185
+
186
+ const res: Promise<WidgetsConfirmOrderResponse> = api.widgets.confirmOrder(checkoutSessId, { token, shopId });
187
+ ```
188
+
189
+ ## Константы
190
+
191
+ ### Общие
192
+
193
+
194
+
195
+ ### Виджеты
196
+
197
+ * `WIDGETS_RESPONSE_STATUS_CODES` - Статусы ответа API виджета
198
+ * `WIDGETS_UPDATE_ORDER_ERRORS` - Коды ошибок [API обновления заказа](#widgets-update-order) из виджета
199
+ * `WIDGETS_CONFIRM_ORDER_ERRORS` - Коды ошибок [API подтверждения оформления заказа](#widgets-confirm-order) в виджете (при оплате через эквайринг виджета)
@@ -0,0 +1,44 @@
1
+ import { WidgetsApiResponse, WidgetsConfirmOrderResponse, WidgetsUpdateOrderParams, WidgetsUpdateOrderResponse } from '../../globals';
2
+ /**
3
+ * Обновляет заказ, переданный из виджета
4
+ *
5
+ * @param id ID заказа
6
+ * @param calcCOD Считать ли наложенный платёж
7
+ * @param params Параметры, которые требуется обновить
8
+ * @param credentials Токен аккаунта и ID магазина
9
+ */
10
+ export declare const updateOrder: (id: string | number, { calcCOD, ...params }: WidgetsUpdateOrderParams, credentials: {
11
+ token: string;
12
+ shopId: number;
13
+ }) => Promise<WidgetsUpdateOrderResponse>;
14
+ /**
15
+ * Подтверждает оформление заказа (при оплате через эквайринг виджета)
16
+ *
17
+ * @param checkoutSessId ID сессии
18
+ * @param credentials Токен аккаунта и ID магазина
19
+ */
20
+ export declare const confirmOrder: (checkoutSessId: string, credentials: {
21
+ token: string;
22
+ shopId: number;
23
+ }) => Promise<WidgetsConfirmOrderResponse>;
24
+ declare const _default: {
25
+ widgetApi: (url: string, method: "GET" | "POST", data: object | null | undefined, credentials: {
26
+ token: string;
27
+ shopId: number;
28
+ }, ip?: string | undefined) => Promise<WidgetsApiResponse>;
29
+ updateOrder: (id: string | number, { calcCOD, ...params }: Partial<{
30
+ status: string;
31
+ payment: boolean;
32
+ cmsId: string | number;
33
+ paymentMethod: string;
34
+ calcCOD: boolean;
35
+ }>, credentials: {
36
+ token: string;
37
+ shopId: number;
38
+ }) => Promise<WidgetsUpdateOrderResponse>;
39
+ confirmOrder: (checkoutSessId: string, credentials: {
40
+ token: string;
41
+ shopId: number;
42
+ }) => Promise<WidgetsConfirmOrderResponse>;
43
+ };
44
+ export default _default;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Статусы ответа API виджета
3
+ */
4
+ export declare enum WIDGETS_RESPONSE_STATUS_CODES {
5
+ SUCCESS = 200,
6
+ REQUEST_ERROR = 400,
7
+ AUTH_ERROR = 401,
8
+ SERVER_ERROR = 500
9
+ }
10
+ /**
11
+ * Коды ошибок API обновления заказа из виджета
12
+ */
13
+ export declare enum WIDGETS_UPDATE_ORDER_ERRORS {
14
+ NO_ORDER_ID = 0,
15
+ ORDER_NOT_FOUND = 1001,
16
+ INVALID_SHOP_ID = 2001,
17
+ ORDER_CREATION_ERROR = 1002,
18
+ ORDER_UPDATE_ERROR = 1003
19
+ }
20
+ /**
21
+ * Коды ошибок API подтверждения оформления заказа в виджете (при оплате через эквайринг виджета)
22
+ */
23
+ export declare enum WIDGETS_CONFIRM_ORDER_ERRORS {
24
+ INVALID_SHOP_ID = 2001,
25
+ PAY_SYSTEM_TRANSACTION_CONFIRM_ERROR = 7001,
26
+ INVALID_SESSION_ID = 7003
27
+ }
@@ -0,0 +1,26 @@
1
+ import { WIDGETS_RESPONSE_STATUS_CODES, WIDGETS_UPDATE_ORDER_ERRORS, WIDGETS_CONFIRM_ORDER_ERRORS } from './const';
2
+ import { WidgetsApiResponse, WidgetsUpdateOrderParams, WidgetsUpdateOrderResponse, WidgetsConfirmOrderResponse } from '../globals';
3
+ export { WIDGETS_RESPONSE_STATUS_CODES, WIDGETS_UPDATE_ORDER_ERRORS, WIDGETS_CONFIRM_ORDER_ERRORS, WidgetsApiResponse, WidgetsUpdateOrderParams, WidgetsUpdateOrderResponse, WidgetsConfirmOrderResponse, };
4
+ declare const _default: {
5
+ widgets: {
6
+ widgetApi: (url: string, method: "GET" | "POST", data: object | null | undefined, credentials: {
7
+ token: string;
8
+ shopId: number;
9
+ }, ip?: string | undefined) => Promise<WidgetsApiResponse>;
10
+ updateOrder: (id: string | number, { calcCOD, ...params }: Partial<{
11
+ status: string;
12
+ payment: boolean;
13
+ cmsId: string | number;
14
+ paymentMethod: string;
15
+ calcCOD: boolean;
16
+ }>, credentials: {
17
+ token: string;
18
+ shopId: number;
19
+ }) => Promise<WidgetsUpdateOrderResponse>;
20
+ confirmOrder: (checkoutSessId: string, credentials: {
21
+ token: string;
22
+ shopId: number;
23
+ }) => Promise<WidgetsConfirmOrderResponse>;
24
+ };
25
+ };
26
+ export default _default;
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(this,(()=>(()=>{"use strict";var e={496:(e,t,r)=>{const{isIP:n,isIPv4:o}=r(256),{createSocket:a}=r(696),{ADDRCONFIG:R}=r(880),{lookup:s}=r(880).promises,i=new RegExp(`^(${[/^(:{2}f{4}:)?10(?:\.\d{1,3}){3}$/,/^(:{2}f{4}:)?127(?:\.\d{1,3}){3}$/,/^(::f{4}:)?169\.254\.([1-9]|1?\d\d|2[0-4]\d|25[0-4])\.\d{1,3}$/,/^(:{2}f{4}:)?(172\.1[6-9]|172\.2\d|172\.3[01])(?:\.\d{1,3}){2}$/,/^(:{2}f{4}:)?192\.168(?:\.\d{1,3}){2}$/,/^f[cd][\da-f]{2}(::1$|:[\da-f]{1,4}){1,7}$/,/^fe[89ab][\da-f](::1$|:[\da-f]{1,4}){1,7}$/].map((e=>e.source)).join("|")})$`),u=/(?![\w-]{64})((^(?=[-\w.]{1,253}\.?$)((\w{1,63}|(\w[-\w]{0,61}\w))\.?)+$)(?<!\.{2}))/;e.exports=async function e(t,r=!1){if("string"!=typeof t)return!1;if(n(t))return!(!i.test(t)||r)||async function(e){const t=a(o(e)?"udp4":"udp6");return new Promise((r=>{try{t.once("error",(()=>t.close((()=>r(!1))))).once("listening",(()=>t.close((()=>r(!0))))).unref().bind(0,e)}catch{t.close((()=>r(!1)))}}))}(t);if(!u.test(t))return!1;try{const n=await s(t,{all:!0,family:0,verbatim:!0,hints:R});if(!Array.isArray(n))return!1;for(const{address:t}of n)if(await e(t,r))return!0}catch{}return!1},e.exports.VALID_HOSTNAME=u},412:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.confirmOrder=t.updateOrder=void 0;const o=n(r(496)),a=r(884),R=n(r(792));t.updateOrder=async(e,{calcCOD:t,...r},n)=>{const o=await(0,R.default)({url:"widgets/update-order",method:"POST",data:{id:e,...r,nppOption:t},...n}),s=await o.json();return o.status===a.WIDGETS_RESPONSE_STATUS_CODES.SUCCESS||o.status===a.WIDGETS_RESPONSE_STATUS_CODES.REQUEST_ERROR?{status:o.status,data:s}:{status:o.status}},t.confirmOrder=async(e,t)=>{const r=await(0,R.default)({url:"widgets/confirm-order",method:"POST",data:{checkoutSessId:e},...t});return r.status===a.WIDGETS_RESPONSE_STATUS_CODES.REQUEST_ERROR?{status:r.status,data:{code:(await r.json()).code}}:{status:r.status}},t.default={widgetApi:async(e,t,r,n,a)=>{if(!/\w+\.saferoute\.ru$/.test(new URL(e).host))return"";if(e.endsWith(".html"))return(await(0,R.default)({url:e,method:"GET"})).text();r&&"ip"in r&&!r.ip&&a&&(await(0,o.default)(a)||(r.ip=a));const s=await(0,R.default)({url:e,method:t,data:r,...n,headers:{"From-Widget":"1"}}),i=await s.json();return 200===s.status?{status:s.status,data:i}:{status:s.status,code:i&&"code"in i?i.code:null}},updateOrder:t.updateOrder,confirmOrder:t.confirmOrder}},884:(e,t)=>{var r,n,o;Object.defineProperty(t,"__esModule",{value:!0}),t.WIDGETS_CONFIRM_ORDER_ERRORS=t.WIDGETS_UPDATE_ORDER_ERRORS=t.WIDGETS_RESPONSE_STATUS_CODES=void 0,function(e){e[e.SUCCESS=200]="SUCCESS",e[e.REQUEST_ERROR=400]="REQUEST_ERROR",e[e.AUTH_ERROR=401]="AUTH_ERROR",e[e.SERVER_ERROR=500]="SERVER_ERROR"}(r||(t.WIDGETS_RESPONSE_STATUS_CODES=r={})),function(e){e[e.NO_ORDER_ID=0]="NO_ORDER_ID",e[e.ORDER_NOT_FOUND=1001]="ORDER_NOT_FOUND",e[e.INVALID_SHOP_ID=2001]="INVALID_SHOP_ID",e[e.ORDER_CREATION_ERROR=1002]="ORDER_CREATION_ERROR",e[e.ORDER_UPDATE_ERROR=1003]="ORDER_UPDATE_ERROR"}(n||(t.WIDGETS_UPDATE_ORDER_ERRORS=n={})),function(e){e[e.INVALID_SHOP_ID=2001]="INVALID_SHOP_ID",e[e.PAY_SYSTEM_TRANSACTION_CONFIRM_ERROR=7001]="PAY_SYSTEM_TRANSACTION_CONFIRM_ERROR",e[e.INVALID_SESSION_ID=7003]="INVALID_SESSION_ID"}(o||(t.WIDGETS_CONFIRM_ORDER_ERRORS=o={}))},740:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WIDGETS_CONFIRM_ORDER_ERRORS=t.WIDGETS_UPDATE_ORDER_ERRORS=t.WIDGETS_RESPONSE_STATUS_CODES=void 0;const o=r(884);Object.defineProperty(t,"WIDGETS_RESPONSE_STATUS_CODES",{enumerable:!0,get:function(){return o.WIDGETS_RESPONSE_STATUS_CODES}}),Object.defineProperty(t,"WIDGETS_UPDATE_ORDER_ERRORS",{enumerable:!0,get:function(){return o.WIDGETS_UPDATE_ORDER_ERRORS}}),Object.defineProperty(t,"WIDGETS_CONFIRM_ORDER_ERRORS",{enumerable:!0,get:function(){return o.WIDGETS_CONFIRM_ORDER_ERRORS}});const a=n(r(412));t.default={widgets:a.default}},792:function(e,t,r){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=n(r(832));t.default=({url:e,method:t,data:r,headers:n,token:a,shopId:R})=>{const s=new URL(e.startsWith("https://")?e:(0,o.default)("https://api.saferoute.ru/v2",e));if("GET"===t&&r)for(const[e,t]of Object.entries(r))s.searchParams.set(e,t??"");return fetch(s.toString(),{method:t,body:"POST"===t?JSON.stringify(r):null,headers:{...n,..."POST"===t?{"Content-Type":"application/json"}:null,...a?{Authorization:`Bearer ${a}`}:null,...R?{"Shop-Id":String(R)}:null}})}},696:e=>{e.exports=require("dgram")},880:e=>{e.exports=require("dns")},256:e=>{e.exports=require("net")},832:(e,t,r)=>{function n(){return function(e){var t=[];if(0===e.length)return"";if("string"!=typeof e[0])throw new TypeError("Url must be a string. Received "+e[0]);if(e[0].match(/^[^/:]+:\/*$/)&&e.length>1){var r=e.shift();e[0]=r+e[0]}e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n<e.length;n++){var o=e[n];if("string"!=typeof o)throw new TypeError("Url must be a string. Received "+o);""!==o&&(n>0&&(o=o.replace(/^[\/]+/,"")),o=n<e.length-1?o.replace(/[\/]+$/,""):o.replace(/[\/]+$/,"/"),t.push(o))}var a=t.join("/"),R=(a=a.replace(/\/(\?|&|#[^!])/g,"$1")).split("?");return R.shift()+(R.length>0?"?":"")+R.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}r.r(t),r.d(t,{default:()=>n})}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,r),a.exports}return r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(740)})()));
@@ -0,0 +1,13 @@
1
+ declare const _default: ({ url, method, data, headers, token, shopId, }: {
2
+ url: string;
3
+ method: 'GET' | 'POST';
4
+ data?: {
5
+ [k: string]: any;
6
+ } | null | undefined;
7
+ headers?: {
8
+ [k: string]: string;
9
+ } | undefined;
10
+ token?: string | undefined;
11
+ shopId?: number | undefined;
12
+ }) => Promise<Response>;
13
+ export default _default;
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "saferoute-api",
3
+ "version": "0.0.1",
4
+ "description": "Пакет для работы с API агрегатора служб доставки SafeRoute.",
5
+ "main": "dist/index.js",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "scripts": {
10
+ "dev": "webpack --watch --env dev",
11
+ "publish": "webpack && npm publish"
12
+ },
13
+ "keywords": [
14
+ "saferoute",
15
+ "api",
16
+ "widgets",
17
+ "integration",
18
+ "nodejs",
19
+ "express",
20
+ "nestjs",
21
+ "backend"
22
+ ],
23
+ "author": "Dmitry Mezentsev <mezentsevdmitry51@gmail.com>",
24
+ "license": "ISC",
25
+ "devDependencies": {
26
+ "@types/node-fetch": "^2.6.11",
27
+ "@typescript-eslint/eslint-plugin": "^6.19.1",
28
+ "@typescript-eslint/parser": "^6.19.1",
29
+ "eslint": "^8.56.0",
30
+ "eslint-config-airbnb-base": "^15.0.0",
31
+ "eslint-config-prettier": "^9.1.0",
32
+ "eslint-import-resolver-typescript": "^3.6.1",
33
+ "eslint-plugin-import": "^2.29.1",
34
+ "eslint-plugin-prettier": "^5.1.3",
35
+ "eslint-webpack-plugin": "^4.0.1",
36
+ "i18n-iso-countries": "^7.8.0",
37
+ "prettier": "^3.2.4",
38
+ "ts-loader": "^9.5.1",
39
+ "typescript": "^5.3.3",
40
+ "webpack": "^5.90.0",
41
+ "webpack-cli": "^5.1.4"
42
+ },
43
+ "dependencies": {
44
+ "is-localhost-ip": "^2.0.0",
45
+ "node-fetch": "2.7.0",
46
+ "url-join": "^5.0.0"
47
+ }
48
+ }