bx-rest 0.26.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +52 -4
- package/README.md +71 -14
- package/esm2022/functions/lowerCaseOrder.mjs +23 -0
- package/esm2022/request-navvy/crm/company.mjs +8 -2
- package/esm2022/request-navvy/crm/contact.mjs +8 -2
- package/esm2022/request-navvy/crm/deal.mjs +8 -2
- package/esm2022/request-navvy/crm/lead.mjs +8 -2
- package/esm2022/services/http/HttpBX.mjs +38 -31
- package/esm2022/services/http/sessionKey.mjs +21 -2
- package/esm2022/typification/rest/crm/company/list.mjs +1 -1
- package/esm2022/typification/rest/crm/contact/list.mjs +1 -1
- package/esm2022/typification/rest/crm/deal/list.mjs +1 -1
- package/esm2022/typification/rest/crm/lead/list.mjs +1 -1
- package/esm2022/typification/settings.mjs +1 -1
- package/fesm2022/bx-rest.mjs +104 -35
- package/fesm2022/bx-rest.mjs.map +1 -1
- package/functions/lowerCaseOrder.d.ts +15 -0
- package/package.json +1 -1
- package/request-navvy/crm/company.d.ts +6 -1
- package/request-navvy/crm/contact.d.ts +6 -1
- package/request-navvy/crm/deal.d.ts +6 -1
- package/request-navvy/crm/lead.d.ts +6 -1
- package/services/http/sessionKey.d.ts +7 -1
- package/typification/rest/crm/company/list.d.ts +2 -1
- package/typification/rest/crm/contact/list.d.ts +2 -1
- package/typification/rest/crm/deal/list.d.ts +2 -1
- package/typification/rest/crm/lead/list.d.ts +2 -1
- package/typification/settings.d.ts +9 -0
package/README.en.md
CHANGED
|
@@ -17,11 +17,13 @@ Also known as: Bitrix24 REST client, BX24 REST SDK, Bitrix24 API client, Bitrix
|
|
|
17
17
|
- [Quick Start](#quick-start)
|
|
18
18
|
- [Result modes](#result-modes)
|
|
19
19
|
- [Authentication and OAuth2](#authentication-and-oauth2)
|
|
20
|
+
- [`withCredentials`](#withcredentials)
|
|
20
21
|
- [Error handling](#error-handling)
|
|
21
22
|
- [Usage in Angular](#usage-in-angular)
|
|
22
23
|
- [SessionKeyServices](#sessionkeyservices)
|
|
23
24
|
- [Usage in Vue](#usage-in-vue)
|
|
24
25
|
- [Usage in React](#usage-in-react)
|
|
26
|
+
- [Demo](#demo)
|
|
25
27
|
- [Custom REST methods](#custom-rest-methods)
|
|
26
28
|
- [Mapper](#mapper)
|
|
27
29
|
- [A custom method with `simple()`](#a-custom-method-with-simple)
|
|
@@ -107,14 +109,35 @@ REST calls are lazy: the request starts when the returned `Observable` is subscr
|
|
|
107
109
|
| Scenario | `auth.source` | `auth.key` | Behaviour |
|
|
108
110
|
| --- | --- | --- | --- |
|
|
109
111
|
| Access token from application state | `() => accessToken` | `auth` | Calls the function before each request and sends its value in the `auth` parameter. Recommended for OAuth2 access tokens managed by the application. |
|
|
110
|
-
| Access token in local storage | `localStorage` | `auth` | Reads `localStorage["auth"]` and sends it as `auth`. |
|
|
111
|
-
| Access token in a cookie | `cookies` | `auth` | Reads the `auth` cookie and sends it as `auth`. |
|
|
112
|
+
| Access token in local storage | `localStorage` | `auth` | Reads `localStorage["auth"]` and sends it as `auth`. The value is fully readable by any JS on the page (including via XSS) — a good fit for local development/prototyping; for production, prefer the function-based source managed by your application. |
|
|
113
|
+
| Access token in a cookie | `cookies` | `auth` | Reads the `auth` cookie via `document.cookie` and sends it as `auth`. Your own JS code reads the cookie, so it can't be `HttpOnly` — from an XSS-protection standpoint this is no safer than `localStorage`. Like the previous option, mainly useful for local development. |
|
|
112
114
|
| Embedded Bitrix page / local session | `cookies` | `sessid` | Tries `window.BX.bitrix_sessid()`, the `sessid` query parameter, `localStorage.sessid`, then the `auth` cookie. Sends the resolved value as `sessid`. |
|
|
113
|
-
| Incoming webhook
|
|
114
|
-
| Cookie-based credential request | Any source returning a non-empty value | `OAuth2` | Does not append the resolved value to request params and enables Axios `withCredentials
|
|
115
|
+
| Incoming webhook, an already-authorized URL, or your own proxy | `off` | Any value | Skips credential lookup and does not add an authorization parameter — used both for webhooks (the secret is already in the URL) and for routing through your own backend proxy (the secret stays server-side, the browser never sees it). For the proxy case, if it authenticates the browser with its own session cookie, see `withCredentials` below. |
|
|
116
|
+
| Cookie-based credential request | Any source returning a non-empty value | `OAuth2` | Does not append the resolved value to request params and, by default, enables Axios `withCredentials` (unless overridden by the `withCredentials` setting, see below). Use only when the portal and CORS policy support credential cookies — also keep in mind that modern browsers increasingly block third-party cookies by default. |
|
|
115
117
|
|
|
116
118
|
For a regular Bitrix OAuth2 `access_token`, use `auth.key: 'auth'` and provide the current token through a function or `localStorage`. The special `auth.key: 'OAuth2'` mode is for credential cookies; it does not send an OAuth access token by itself.
|
|
117
119
|
|
|
120
|
+
### `withCredentials`
|
|
121
|
+
|
|
122
|
+
By default, the axios `withCredentials` option (whether to attach browser cookies to the request) is only enabled for `auth.key: 'OAuth2'`. If you need it in another case — e.g. `auth.source: 'off'` points at your own proxy, and the browser should attach *that proxy's* session cookie (not Bitrix24's) — set `withCredentials` explicitly, independent of `auth.key`:
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
BXRestSettings.update({
|
|
126
|
+
auth: {
|
|
127
|
+
source: 'off',
|
|
128
|
+
key: 'auth'
|
|
129
|
+
},
|
|
130
|
+
urls: {
|
|
131
|
+
source: 'string',
|
|
132
|
+
key: 'https://your-proxy.example.com/bitrix-proxy',
|
|
133
|
+
additional_part: ''
|
|
134
|
+
},
|
|
135
|
+
withCredentials: true
|
|
136
|
+
})
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
An explicit value always takes priority over the "only for `OAuth2`" rule — you can also force `withCredentials` off for `auth.key: 'OAuth2'` if you don't need it.
|
|
140
|
+
|
|
118
141
|
For an incoming webhook URL, keep the full webhook path in `urls.key`, set `additional_part` to an empty string and disable additional authorization:
|
|
119
142
|
|
|
120
143
|
```typescript
|
|
@@ -381,6 +404,31 @@ export function Deals() {
|
|
|
381
404
|
}
|
|
382
405
|
```
|
|
383
406
|
|
|
407
|
+
## Demo
|
|
408
|
+
|
|
409
|
+
There are three independent demo apps in [`projects/`](../) — Angular, Vue
|
|
410
|
+
and React (`demo-angular`, `demo-vue`, `demo-react`). Each one has a
|
|
411
|
+
connection form covering every scenario from the "Authentication and OAuth2"
|
|
412
|
+
section above (not just an access token and a webhook), a Monaco-based code
|
|
413
|
+
editor with real autocompletion from `bx-rest`'s own types (not a plain text
|
|
414
|
+
box or a request-builder form), and a result panel that actually runs the
|
|
415
|
+
code you write against your portal. The UI switches between Russian and
|
|
416
|
+
English automatically based on the browser/OS language. The shared logic
|
|
417
|
+
(Monaco typings, code execution, ready-made snippets, i18n) lives in
|
|
418
|
+
`projects/demo-shared` — the three demos mainly differ in the integration
|
|
419
|
+
style (a DI provider in Angular, a plugin in Vue, a singleton + hook in
|
|
420
|
+
React — see the sections above) and, for Angular, in the UI library
|
|
421
|
+
(Angular Material — the idiomatic choice for that framework).
|
|
422
|
+
|
|
423
|
+
Run from the repository root:
|
|
424
|
+
|
|
425
|
+
```shell
|
|
426
|
+
npm run demo:bootstrap
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
Then, in any of `projects/demo-angular|demo-vue|demo-react`: `npm run dev`
|
|
430
|
+
(for Angular, `npm start`). See each demo's own README for details.
|
|
431
|
+
|
|
384
432
|
## Custom REST methods
|
|
385
433
|
|
|
386
434
|
`Navvy` is exported from `bx-rest`. In Angular, register the `NavvyProvider` shown above and inject `Navvy` into your custom API service. A method URL is represented as an array and is joined with dots before the request is sent.
|
package/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<!-- This file is generated from projects/bx-rest/README.md by `npm run sync-readme`. Do not edit directly. -->
|
|
2
|
+
|
|
1
3
|
<img src="https://flagcdn.com/20x15/ru.png" width="20" height="15" alt="RU"> **Русский** | <img src="https://flagcdn.com/20x15/gb.png" width="20" height="15" alt="GB"> [English](README.en.md)
|
|
2
4
|
|
|
3
5
|
# bx-rest — REST API клиент Bitrix24 для TypeScript, Angular, Vue и React
|
|
@@ -6,9 +8,7 @@
|
|
|
6
8
|
[](https://www.npmjs.com/package/bx-rest)
|
|
7
9
|
[](https://github.com/Aricatofuka/bx-rest/blob/main/LICENSE)
|
|
8
10
|
|
|
9
|
-
`bx-rest` — SDK
|
|
10
|
-
|
|
11
|
-
Также известен как: REST-клиент Bitrix24, BX24 REST SDK, API-клиент Bitrix24, Bitrix REST TypeScript библиотека.
|
|
11
|
+
`bx-rest` — TypeScript SDK для работы с REST API Bitrix24. Предоставляет типизированный интерфейс для вызова REST-методов, управления авторизацией и токенами (sessid, OAuth 2.0), обработки пагинации и преобразования данных с помощью мапперов.
|
|
12
12
|
|
|
13
13
|
## Содержание
|
|
14
14
|
|
|
@@ -17,11 +17,13 @@
|
|
|
17
17
|
- [Быстрый старт](#быстрый-старт)
|
|
18
18
|
- [Режимы результата](#режимы-результата)
|
|
19
19
|
- [Аутентификация и OAuth2](#аутентификация-и-oauth2)
|
|
20
|
+
- [`withCredentials`](#withcredentials)
|
|
20
21
|
- [Обработка ошибок](#обработка-ошибок)
|
|
21
22
|
- [Использование в Angular](#использование-в-angular)
|
|
22
23
|
- [SessionKeyServices](#sessionkeyservices)
|
|
23
24
|
- [Использование в Vue](#использование-в-vue)
|
|
24
25
|
- [Использование в React](#использование-в-react)
|
|
26
|
+
- [Демо](#демо)
|
|
25
27
|
- [Кастомные REST-методы](#кастомные-rest-методы)
|
|
26
28
|
- [Mapper](#mapper)
|
|
27
29
|
- [Кастомный метод с `simple()`](#кастомный-метод-с-simple)
|
|
@@ -40,11 +42,21 @@ npm install bx-rest
|
|
|
40
42
|
|
|
41
43
|
## Требования
|
|
42
44
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
* **Формат модулей:** `bx-rest` поставляется только в формате ES Modules. Сборка CommonJS и поддержка `require()` не предусмотрены. Используйте пакет через ESM-совместимый бандлер (Angular CLI, Vite, webpack 5+, Next.js и др.) или нативный `import()`.
|
|
46
|
+
|
|
47
|
+
* **TypeScript:** требуется TypeScript 5.5 или выше. Рекомендуется включить режим `strict`, поскольку типизация SDK рассчитана на работу со строгой проверкой типов.
|
|
48
|
+
|
|
49
|
+
* **RxJS:** `rxjs` версии `^7.8` является обычной зависимостью пакета и поставляется вместе с `bx-rest`, а не объявляется как `peerDependency`. Поэтому установка отдельной версии RxJS на стороне приложения не требуется. Все REST-запросы возвращают `Observable`.
|
|
50
|
+
|
|
51
|
+
* **Фреймворки:** `bx-rest` не зависит от конкретного frontend-фреймворка и не объявляет Angular, Vue или React в качестве `peerDependencies`. Примеры интеграции рассчитаны на Angular 18/19, Vue 3 и React 18+ — эти версии используются при сборке и тестировании библиотеки.
|
|
52
|
+
|
|
53
|
+
* **Окружение:** `bx-rest` ориентирован преимущественно на браузерное окружение. Источники авторизации `cookies`, `localStorage`, `sessid` и `SessionKeyServices` используют браузерные API (`window`, `document`, `localStorage`). При использовании SSR (Angular Universal, Next.js и др.) такой код должен выполняться только на стороне клиента. Например, можно использовать проверки `isPlatformBrowser` / `typeof window !== 'undefined'` либо источник авторизации, не зависящий от браузерных глобальных объектов:
|
|
54
|
+
|
|
55
|
+
`source: () => accessToken`
|
|
56
|
+
|
|
57
|
+
или
|
|
58
|
+
|
|
59
|
+
`source: 'off'`.
|
|
48
60
|
|
|
49
61
|
## Быстрый старт
|
|
50
62
|
|
|
@@ -107,14 +119,35 @@ REST-вызовы ленивые: запрос начинается, когда
|
|
|
107
119
|
| Сценарий | `auth.source` | `auth.key` | Поведение |
|
|
108
120
|
| --- | --- | --- | --- |
|
|
109
121
|
| Access-токен из состояния приложения | `() => accessToken` | `auth` | Вызывает функцию перед каждым запросом и отправляет её значение в параметре `auth`. Рекомендуется для OAuth2 access-токенов, которыми управляет приложение. |
|
|
110
|
-
| Access-токен в local storage | `localStorage` | `auth` | Читает `localStorage["auth"]` и отправляет его как `auth`. |
|
|
111
|
-
| Access-токен в куке | `cookies` | `auth` | Читает куку `auth` и отправляет её как `auth`. |
|
|
122
|
+
| Access-токен в local storage | `localStorage` | `auth` | Читает `localStorage["auth"]` и отправляет его как `auth`. Значение полностью доступно любому JS на странице (в том числе через XSS) — годится для локальной разработки/прототипирования, для продакшена предпочтительнее источник-функция, управляемый приложением. |
|
|
123
|
+
| Access-токен в куке | `cookies` | `auth` | Читает куку `auth` через `document.cookie` и отправляет её как `auth`. Куку читает сам JS-код, поэтому она не может быть `HttpOnly` — с точки зрения защиты от XSS это не безопаснее `localStorage`. Как и предыдущий вариант, в первую очередь удобен для локальной разработки. |
|
|
112
124
|
| Встроенная страница Bitrix / локальная сессия | `cookies` | `sessid` | Пробует `window.BX.bitrix_sessid()`, query-параметр `sessid`, `localStorage.sessid`, затем куку `auth`. Отправляет полученное значение как `sessid`. |
|
|
113
|
-
| Входящий
|
|
114
|
-
| Запрос учётных данных через куки | Любой источник, возвращающий непустое значение | `OAuth2` | Не добавляет полученное значение в параметры запроса и включает `withCredentials` в Axios. Используйте только если портал и политика CORS поддерживают куки с учётными
|
|
125
|
+
| Входящий вебхук, URL с авторизацией или собственный прокси | `off` | Любое значение | Пропускает поиск учётных данных и не добавляет параметр авторизации — используется и для вебхука (секрет уже в URL), и для запроса через собственный бэкенд-прокси (секрет остаётся на сервере, браузер токен не видит вообще). Для второго случая, если прокси авторизует браузер собственной cookie-сессией, см. настройку `withCredentials` ниже. |
|
|
126
|
+
| Запрос учётных данных через куки | Любой источник, возвращающий непустое значение | `OAuth2` | Не добавляет полученное значение в параметры запроса и по умолчанию включает `withCredentials` в Axios (если не переопределено настройкой `withCredentials`, см. ниже). Используйте только если портал и политика CORS поддерживают куки с учётными данными — учтите также, что современные браузеры всё активнее блокируют сторонние (third-party) куки по умолчанию. |
|
|
115
127
|
|
|
116
128
|
Для обычного OAuth2 `access_token` Bitrix используйте `auth.key: 'auth'` и передавайте текущий токен через функцию или `localStorage`. Специальный режим `auth.key: 'OAuth2'` предназначен для куки с учётными данными; сам по себе он не отправляет OAuth access-токен.
|
|
117
129
|
|
|
130
|
+
### `withCredentials`
|
|
131
|
+
|
|
132
|
+
По умолчанию axios-опция `withCredentials` (прикладывать ли браузерные куки к запросу) включается только при `auth.key: 'OAuth2'`. Если нужен другой случай — например, `auth.source: 'off'` указывает на собственный прокси, а браузер должен приложить куку сессии *этого прокси* (не Bitrix24) — задайте `withCredentials` явно в настройках, независимо от `auth.key`:
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
BXRestSettings.update({
|
|
136
|
+
auth: {
|
|
137
|
+
source: 'off',
|
|
138
|
+
key: 'auth'
|
|
139
|
+
},
|
|
140
|
+
urls: {
|
|
141
|
+
source: 'string',
|
|
142
|
+
key: 'https://your-proxy.example.com/bitrix-proxy',
|
|
143
|
+
additional_part: ''
|
|
144
|
+
},
|
|
145
|
+
withCredentials: true
|
|
146
|
+
})
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Явное значение всегда имеет приоритет над правилом «включать только для `OAuth2`» — можно и принудительно выключить `withCredentials` при `auth.key: 'OAuth2'`, если он не нужен.
|
|
150
|
+
|
|
118
151
|
Для URL входящего вебхука сохраните полный путь вебхука в `urls.key`, установите `additional_part` в пустую строку и отключите дополнительную авторизацию:
|
|
119
152
|
|
|
120
153
|
```typescript
|
|
@@ -381,6 +414,31 @@ export function Deals() {
|
|
|
381
414
|
}
|
|
382
415
|
```
|
|
383
416
|
|
|
417
|
+
## Демо
|
|
418
|
+
|
|
419
|
+
В [`projects/`](../) есть три независимых демо-приложения — Angular, Vue и React
|
|
420
|
+
(`demo-angular`, `demo-vue`, `demo-react`). Каждое: форма подключения,
|
|
421
|
+
покрывающая все варианты из раздела «Аутентификация и OAuth2» выше (а не
|
|
422
|
+
только access-токен и вебхук), редактор кода на Monaco с
|
|
423
|
+
автодополнением по типам `bx-rest` (а не текстовое поле или конструктор
|
|
424
|
+
запроса) и панель результата, которая реально выполняет написанный код
|
|
425
|
+
против вашего портала. Интерфейс переключается между русским и английским
|
|
426
|
+
автоматически по языку браузера/ОС. Общая логика (типы для Monaco,
|
|
427
|
+
выполнение кода, готовые примеры, i18n) вынесена в `projects/demo-shared` —
|
|
428
|
+
разница между тремя демо в первую очередь в способе интеграции (DI-провайдер
|
|
429
|
+
в Angular, плагин в Vue, синглтон+хук в React — см. разделы выше) и, для
|
|
430
|
+
Angular, в UI-библиотеке (Angular Material — идиоматичный выбор для этого
|
|
431
|
+
фреймворка).
|
|
432
|
+
|
|
433
|
+
Запуск из корня репозитория:
|
|
434
|
+
|
|
435
|
+
```shell
|
|
436
|
+
npm run demo:bootstrap
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
Дальше в любой из `projects/demo-angular|demo-vue|demo-react`: `npm run dev`
|
|
440
|
+
(для Angular — `npm start`). Подробности — в README каждого демо.
|
|
441
|
+
|
|
384
442
|
## Кастомные REST-методы
|
|
385
443
|
|
|
386
444
|
`Navvy` экспортируется из `bx-rest`. В Angular зарегистрируйте показанный выше `NavvyProvider` и внедрите `Navvy` в ваш кастомный API-сервис. URL метода представлен массивом и перед отправкой запроса соединяется точками.
|
|
@@ -568,8 +626,7 @@ bxRest.crm.callList.get({ ID: 1 }, dateTimeFormat).res()
|
|
|
568
626
|
```
|
|
569
627
|
|
|
570
628
|
## Планы на будущее
|
|
571
|
-
- Автоматическое получение токена
|
|
572
|
-
- Мапперы для типов нормализации
|
|
629
|
+
- Автоматическое получение токена авторизации
|
|
573
630
|
|
|
574
631
|
Есть предложение по функциональности или нашли баг? Посмотрите [существующие issues](https://github.com/Aricatofuka/bx-rest/issues) или создайте новый.
|
|
575
632
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* crm.deal.list, crm.lead.list, crm.contact.list и crm.company.list — в
|
|
3
|
+
* отличие от остального REST API Bitrix24 — принимают значения `order` в
|
|
4
|
+
* нижнем регистре (`'asc'`/`'desc'`), а не в верхнем (`'ASC'`/`'DESC'`, как
|
|
5
|
+
* везде остальном, см. {@link iBXRestParamSort}). Публичный тип этих
|
|
6
|
+
* четырёх методов унифицирован на `iBXRestParamSort` ради единообразия
|
|
7
|
+
* во всей библиотеке — эта функция перед отправкой запроса приводит
|
|
8
|
+
* значения обратно к регистру, которого реально ожидает конкретно этот
|
|
9
|
+
* метод, так что на бэкенд уходит то же самое, что уходило бы и без
|
|
10
|
+
* унификации типов.
|
|
11
|
+
*
|
|
12
|
+
* @hidden
|
|
13
|
+
*/
|
|
14
|
+
export function lowerCaseOrder(order) {
|
|
15
|
+
if (!order)
|
|
16
|
+
return undefined;
|
|
17
|
+
const result = {};
|
|
18
|
+
for (const field of Object.keys(order)) {
|
|
19
|
+
result[field] = order[field].toLowerCase();
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG93ZXJDYXNlT3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9mdW5jdGlvbnMvbG93ZXJDYXNlT3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsS0FBbUQ7SUFFbkQsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLFNBQVMsQ0FBQTtJQUU1QixNQUFNLE1BQU0sR0FBbUMsRUFBRSxDQUFBO0lBQ2pELEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFvQixDQUFBO0lBQzlELENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpQlhSZXN0UGFyYW1Tb3J0IH0gZnJvbSAnLi4vdHlwaWZpY2F0aW9uL3Jlc3QvYmFzZS9zb3J0J1xuXG4vKipcbiAqIGNybS5kZWFsLmxpc3QsIGNybS5sZWFkLmxpc3QsIGNybS5jb250YWN0Lmxpc3Qg0LggY3JtLmNvbXBhbnkubGlzdCDigJQg0LJcbiAqINC+0YLQu9C40YfQuNC1INC+0YIg0L7RgdGC0LDQu9GM0L3QvtCz0L4gUkVTVCBBUEkgQml0cml4MjQg4oCUINC/0YDQuNC90LjQvNCw0Y7RgiDQt9C90LDRh9C10L3QuNGPIGBvcmRlcmAg0LJcbiAqINC90LjQttC90LXQvCDRgNC10LPQuNGB0YLRgNC1IChgJ2FzYydgL2AnZGVzYydgKSwg0LAg0L3QtSDQsiDQstC10YDRhdC90LXQvCAoYCdBU0MnYC9gJ0RFU0MnYCwg0LrQsNC6XG4gKiDQstC10LfQtNC1INC+0YHRgtCw0LvRjNC90L7QvCwg0YHQvC4ge0BsaW5rIGlCWFJlc3RQYXJhbVNvcnR9KS4g0J/Rg9Cx0LvQuNGH0L3Ri9C5INGC0LjQvyDRjdGC0LjRhVxuICog0YfQtdGC0YvRgNGR0YUg0LzQtdGC0L7QtNC+0LIg0YPQvdC40YTQuNGG0LjRgNC+0LLQsNC9INC90LAgYGlCWFJlc3RQYXJhbVNvcnRgINGA0LDQtNC4INC10LTQuNC90L7QvtCx0YDQsNC30LjRj1xuICog0LLQviDQstGB0LXQuSDQsdC40LHQu9C40L7RgtC10LrQtSDigJQg0Y3RgtCwINGE0YPQvdC60YbQuNGPINC/0LXRgNC10LQg0L7RgtC/0YDQsNCy0LrQvtC5INC30LDQv9GA0L7RgdCwINC/0YDQuNCy0L7QtNC40YJcbiAqINC30L3QsNGH0LXQvdC40Y8g0L7QsdGA0LDRgtC90L4g0Log0YDQtdCz0LjRgdGC0YDRgywg0LrQvtGC0L7RgNC+0LPQviDRgNC10LDQu9GM0L3QviDQvtC20LjQtNCw0LXRgiDQutC+0L3QutGA0LXRgtC90L4g0Y3RgtC+0YJcbiAqINC80LXRgtC+0LQsINGC0LDQuiDRh9GC0L4g0L3QsCDQsdGN0LrQtdC90LQg0YPRhdC+0LTQuNGCINGC0L4g0LbQtSDRgdCw0LzQvtC1LCDRh9GC0L4g0YPRhdC+0LTQuNC70L4g0LHRiyDQuCDQsdC10LdcbiAqINGD0L3QuNGE0LjQutCw0YbQuNC4INGC0LjQv9C+0LIuXG4gKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgZnVuY3Rpb24gbG93ZXJDYXNlT3JkZXIoXG4gIG9yZGVyOiBSZWNvcmQ8c3RyaW5nLCBpQlhSZXN0UGFyYW1Tb3J0PiB8IHVuZGVmaW5lZFxuKTogUmVjb3JkPHN0cmluZywgJ2FzYycgfCAnZGVzYyc+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFvcmRlcikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgJ2FzYycgfCAnZGVzYyc+ID0ge31cbiAgZm9yIChjb25zdCBmaWVsZCBvZiBPYmplY3Qua2V5cyhvcmRlcikpIHtcbiAgICByZXN1bHRbZmllbGRdID0gb3JkZXJbZmllbGRdLnRvTG93ZXJDYXNlKCkgYXMgJ2FzYycgfCAnZGVzYydcbiAgfVxuICByZXR1cm4gcmVzdWx0XG59XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Navvy } from '../../services/navvy';
|
|
2
|
+
import { lowerCaseOrder } from '../../functions/lowerCaseOrder';
|
|
2
3
|
import { $add, $company, $crm, $delete, $fields, $get, $list, $update } from '../../consts/part-name-methods';
|
|
3
4
|
import { BXRestMapCrmCompany } from '../../map/crm';
|
|
4
5
|
import { BXRestNavvyCrmCompanyContact } from './company/contact';
|
|
@@ -65,7 +66,12 @@ export class BXRestNavvyCrmCompany {
|
|
|
65
66
|
* @param param
|
|
66
67
|
*/
|
|
67
68
|
list(param) {
|
|
68
|
-
return this.Navvy.pagNav(this.url.list,
|
|
69
|
+
return this.Navvy.pagNav(this.url.list,
|
|
70
|
+
// crm.company.list ждёт order в нижнем регистре ('asc'/'desc'), в отличие
|
|
71
|
+
// от остального REST API — публичный тип унифицирован на iBXRestParamSort
|
|
72
|
+
// ('ASC'/'DESC'), а тут приводим обратно к тому, что реально нужно
|
|
73
|
+
// отправить на бэкенд. См. lowerCaseOrder.
|
|
74
|
+
{ ...param, order: lowerCaseOrder(param.order) }, BXRestMapCrmCompany.list);
|
|
69
75
|
}
|
|
70
76
|
/**
|
|
71
77
|
* Обновляет существующую компанию
|
|
@@ -88,4 +94,4 @@ export class BXRestNavvyCrmCompany {
|
|
|
88
94
|
return this.Navvy.simple(this.url.fields);
|
|
89
95
|
}
|
|
90
96
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3JlcXVlc3QtbmF2dnkvY3JtL2NvbXBhbnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBUTdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVwRSxNQUFNLE9BQU8scUJBQXFCO0lBQWxDO1FBQ0U7O1dBRUc7UUFDYSxZQUFPLEdBQUcsSUFBSSw0QkFBNEIsRUFBRSxDQUFBO1FBQzVEOztXQUVHO1FBQ2EsWUFBTyxHQUFHLElBQUksNEJBQTRCLEVBQUUsQ0FBQTtRQUM1RDs7V0FFRztRQUNhLGNBQVMsR0FBRyxJQUFJLDhCQUE4QixFQUFFLENBQUE7UUFDaEUsUUFBRyxHQUFHO1lBQ0o7O2VBRUc7WUFDSCxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQztZQUMzQjs7ZUFFRztZQUNILEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDO1lBQzNCOztlQUVHO1lBQ0gsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUM7WUFDN0I7O2VBRUc7WUFDSCxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQztZQUNqQzs7ZUFFRztZQUNILE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO1lBQ2pDOztlQUVHO1lBQ0gsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUM7U0FDbEMsQ0FBQTtRQUVPLFVBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO0lBNEQ3QixDQUFDO0lBMURDOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxLQUFnQztRQUNsQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUE0QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUMxRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsR0FBRyxDQUFDLEtBQWdDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUNaLEtBQUssRUFDTCxtQkFBbUIsQ0FBQyxHQUFHLENBQ3hCLENBQUE7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLEtBQWlDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSTtRQUNiLDBFQUEwRTtRQUMxRSwwRUFBMEU7UUFDMUUsbUVBQW1FO1FBQ25FLDJDQUEyQztRQUMzQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQ2hELG1CQUFtQixDQUFDLElBQUksQ0FDekIsQ0FBQTtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsS0FBbUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBaUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDbEcsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFtQztRQUN4QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFpRCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUNsRyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBc0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNoRyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYXZ2eSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25hdnZ5J1xyXG5pbXBvcnQgeyBsb3dlckNhc2VPcmRlciB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9sb3dlckNhc2VPcmRlcidcclxuaW1wb3J0IHsgJGFkZCwgJGNvbXBhbnksICRjcm0sICRkZWxldGUsICRmaWVsZHMsICRnZXQsICRsaXN0LCAkdXBkYXRlIH0gZnJvbSAnLi4vLi4vY29uc3RzL3BhcnQtbmFtZS1tZXRob2RzJ1xyXG5pbXBvcnQge1xyXG4gIGlCWFJlc3RQYXJhbUNybUNvbXBhbnlBZGQsXHJcbiAgaUJYUmVzdFBhcmFtQ3JtQ29tcGFueUdldCxcclxuICBpQlhSZXN0UGFyYW1Dcm1Db21wYW55TGlzdCxcclxuICBpQlhSZXN0UGFyYW1Dcm1Db21wYW55VXBkYXRlLFxyXG4gIGlCWFJlc3RQYXJhbUNybUNvbXBhbnlEZWxldGVcclxufSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9jcm0nXHJcbmltcG9ydCB7IEJYUmVzdE1hcENybUNvbXBhbnkgfSBmcm9tICcuLi8uLi9tYXAvY3JtJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUNybUNvbXBhbnlDb250YWN0IH0gZnJvbSAnLi9jb21wYW55L2NvbnRhY3QnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5Q3JtQ29tcGFueURldGFpbHMgfSBmcm9tICcuL2NvbXBhbnkvZGV0YWlscydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlDcm1Db21wYW55VXNlckZpZWxkIH0gZnJvbSAnLi9jb21wYW55L3VzZXJmaWVsZCdcclxuXHJcbmV4cG9ydCBjbGFzcyBCWFJlc3ROYXZ2eUNybUNvbXBhbnkge1xyXG4gIC8qKlxyXG4gICAqINCa0L7QvdGC0LDQutGC0Ysg0LrQvtC80L/QsNC90LjQuCAoYGNybS5jb21wYW55LmNvbnRhY3QuKmApLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBjb250YWN0ID0gbmV3IEJYUmVzdE5hdnZ5Q3JtQ29tcGFueUNvbnRhY3QoKVxyXG4gIC8qKlxyXG4gICAqINCa0LDRgNGC0L7Rh9C60LAg0LrQvtC80L/QsNC90LjQuCAoYGNybS5jb21wYW55LmRldGFpbHMuKmApLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBkZXRhaWxzID0gbmV3IEJYUmVzdE5hdnZ5Q3JtQ29tcGFueURldGFpbHMoKVxyXG4gIC8qKlxyXG4gICAqINCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQuNC1INC/0L7Qu9GPINC60L7QvNC/0LDQvdC40LkgKGBjcm0uY29tcGFueS51c2VyZmllbGQuKmApLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSB1c2VyRmllbGQgPSBuZXcgQlhSZXN0TmF2dnlDcm1Db21wYW55VXNlckZpZWxkKClcclxuICB1cmwgPSB7XHJcbiAgICAvKipcclxuICAgICAqINCh0L7Qt9C00LDQtdGCINC90L7QstGD0Y4g0LrQvtC80L/QsNC90LjRjlxyXG4gICAgICovXHJcbiAgICBhZGQ6IFskY3JtLCAkY29tcGFueSwgJGFkZF0sXHJcbiAgICAvKipcclxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC60L7QvNC/0LDQvdC40Y4g0L/QviDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNGDXHJcbiAgICAgKi9cclxuICAgIGdldDogWyRjcm0sICRjb21wYW55LCAkZ2V0XSxcclxuICAgIC8qKlxyXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6INC60L7QvNC/0LDQvdC40LlcclxuICAgICAqL1xyXG4gICAgbGlzdDogWyRjcm0sICRjb21wYW55LCAkbGlzdF0sXHJcbiAgICAvKipcclxuICAgICAqINCe0LHQvdC+0LLQu9GP0LXRgiDRgdGD0YnQtdGB0YLQstGD0Y7RidGD0Y4g0LrQvtC80L/QsNC90LjRjlxyXG4gICAgICovXHJcbiAgICB1cGRhdGU6IFskY3JtLCAkY29tcGFueSwgJHVwZGF0ZV0sXHJcbiAgICAvKipcclxuICAgICAqINCj0LTQsNC70Y/QtdGCINC60L7QvNC/0LDQvdC40Y5cclxuICAgICAqL1xyXG4gICAgZGVsZXRlOiBbJGNybSwgJGNvbXBhbnksICRkZWxldGVdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQvtC/0LjRgdCw0L3QuNC1INC/0L7Qu9C10Lkg0LrQvtC80L/QsNC90LjQuFxyXG4gICAgICovXHJcbiAgICBmaWVsZHM6IFskY3JtLCAkY29tcGFueSwgJGZpZWxkc11cclxuICB9XHJcblxyXG4gIHByaXZhdGUgTmF2dnkgPSBuZXcgTmF2dnkoKVxyXG5cclxuICAvKipcclxuICAgKiDQodC+0LfQtNCw0LXRgiDQvdC+0LLRg9GOINC60L7QvNC/0LDQvdC40Y5cclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICBhZGQocGFyYW06IGlCWFJlc3RQYXJhbUNybUNvbXBhbnlBZGQpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxudW1iZXIsIG51bWJlciwgaUJYUmVzdFBhcmFtQ3JtQ29tcGFueUFkZD4odGhpcy51cmwuYWRkLCBwYXJhbSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC60L7QvNC/0LDQvdC40Y4g0L/QviDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNGDXHJcbiAgICogQHBhcmFtIHBhcmFtXHJcbiAgICovXHJcbiAgZ2V0KHBhcmFtOiBpQlhSZXN0UGFyYW1Dcm1Db21wYW55R2V0KSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGUoXHJcbiAgICAgIHRoaXMudXJsLmdldCxcclxuICAgICAgcGFyYW0sXHJcbiAgICAgIEJYUmVzdE1hcENybUNvbXBhbnkuZ2V0XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDRgdC/0LjRgdC+0Log0LrQvtC80L/QsNC90LjQuVxyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIGxpc3QocGFyYW06IGlCWFJlc3RQYXJhbUNybUNvbXBhbnlMaXN0KSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5wYWdOYXYoXHJcbiAgICAgIHRoaXMudXJsLmxpc3QsXHJcbiAgICAgIC8vIGNybS5jb21wYW55Lmxpc3Qg0LbQtNGR0YIgb3JkZXIg0LIg0L3QuNC20L3QtdC8INGA0LXQs9C40YHRgtGA0LUgKCdhc2MnLydkZXNjJyksINCyINC+0YLQu9C40YfQuNC1XHJcbiAgICAgIC8vINC+0YIg0L7RgdGC0LDQu9GM0L3QvtCz0L4gUkVTVCBBUEkg4oCUINC/0YPQsdC70LjRh9C90YvQuSDRgtC40L8g0YPQvdC40YTQuNGG0LjRgNC+0LLQsNC9INC90LAgaUJYUmVzdFBhcmFtU29ydFxyXG4gICAgICAvLyAoJ0FTQycvJ0RFU0MnKSwg0LAg0YLRg9GCINC/0YDQuNCy0L7QtNC40Lwg0L7QsdGA0LDRgtC90L4g0Log0YLQvtC80YMsINGH0YLQviDRgNC10LDQu9GM0L3QviDQvdGD0LbQvdC+XHJcbiAgICAgIC8vINC+0YLQv9GA0LDQstC40YLRjCDQvdCwINCx0Y3QutC10L3QtC4g0KHQvC4gbG93ZXJDYXNlT3JkZXIuXHJcbiAgICAgIHsgLi4ucGFyYW0sIG9yZGVyOiBsb3dlckNhc2VPcmRlcihwYXJhbS5vcmRlcikgfSxcclxuICAgICAgQlhSZXN0TWFwQ3JtQ29tcGFueS5saXN0XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQntCx0L3QvtCy0LvRj9C10YIg0YHRg9GJ0LXRgdGC0LLRg9GO0YnRg9GOINC60L7QvNC/0LDQvdC40Y5cclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICB1cGRhdGUocGFyYW06IGlCWFJlc3RQYXJhbUNybUNvbXBhbnlVcGRhdGUpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxib29sZWFuLCBib29sZWFuLCBpQlhSZXN0UGFyYW1Dcm1Db21wYW55VXBkYXRlPih0aGlzLnVybC51cGRhdGUsIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0KPQtNCw0LvRj9C10YIg0LrQvtC80L/QsNC90LjRjlxyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIGRlbGV0ZShwYXJhbTogaUJYUmVzdFBhcmFtQ3JtQ29tcGFueURlbGV0ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPGJvb2xlYW4sIGJvb2xlYW4sIGlCWFJlc3RQYXJhbUNybUNvbXBhbnlEZWxldGU+KHRoaXMudXJsLmRlbGV0ZSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiDQvtC/0LjRgdCw0L3QuNC1INC/0L7Qu9C10Lkg0LrQvtC80L/QsNC90LjQuFxyXG4gICAqL1xyXG4gIGZpZWxkcygpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxSZWNvcmQ8c3RyaW5nLCBhbnk+LCBSZWNvcmQ8c3RyaW5nLCBhbnk+LCB1bmRlZmluZWQ+KHRoaXMudXJsLmZpZWxkcylcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Navvy } from '../../services/navvy';
|
|
2
|
+
import { lowerCaseOrder } from '../../functions/lowerCaseOrder';
|
|
2
3
|
import { $add, $contact, $crm, $delete, $fields, $get, $list, $update } from '../../consts/part-name-methods';
|
|
3
4
|
import { BXRestMapCrmContact } from '../../map/crm';
|
|
4
5
|
import { BXRestNavvyCrmContactCompany } from './contact/company';
|
|
@@ -65,7 +66,12 @@ export class BXRestNavvyCrmContact {
|
|
|
65
66
|
* @param param
|
|
66
67
|
*/
|
|
67
68
|
list(param) {
|
|
68
|
-
return this.Navvy.pagNav(this.url.list,
|
|
69
|
+
return this.Navvy.pagNav(this.url.list,
|
|
70
|
+
// crm.contact.list ждёт order в нижнем регистре ('asc'/'desc'), в отличие
|
|
71
|
+
// от остального REST API — публичный тип унифицирован на iBXRestParamSort
|
|
72
|
+
// ('ASC'/'DESC'), а тут приводим обратно к тому, что реально нужно
|
|
73
|
+
// отправить на бэкенд. См. lowerCaseOrder.
|
|
74
|
+
{ ...param, order: lowerCaseOrder(param.order) }, BXRestMapCrmContact.list);
|
|
69
75
|
}
|
|
70
76
|
/**
|
|
71
77
|
* Обновляет существующий контакт
|
|
@@ -88,4 +94,4 @@ export class BXRestNavvyCrmContact {
|
|
|
88
94
|
return this.Navvy.simple(this.url.fields);
|
|
89
95
|
}
|
|
90
96
|
}
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3JlcXVlc3QtbmF2dnkvY3JtL2NvbnRhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBUTdHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVwRSxNQUFNLE9BQU8scUJBQXFCO0lBQWxDO1FBQ0U7O1dBRUc7UUFDYSxZQUFPLEdBQUcsSUFBSSw0QkFBNEIsRUFBRSxDQUFBO1FBQzVEOztXQUVHO1FBQ2EsWUFBTyxHQUFHLElBQUksNEJBQTRCLEVBQUUsQ0FBQTtRQUM1RDs7V0FFRztRQUNhLGNBQVMsR0FBRyxJQUFJLDhCQUE4QixFQUFFLENBQUE7UUFDaEUsUUFBRyxHQUFHO1lBQ0o7O2VBRUc7WUFDSCxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQztZQUMzQjs7ZUFFRztZQUNILEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDO1lBQzNCOztlQUVHO1lBQ0gsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUM7WUFDN0I7O2VBRUc7WUFDSCxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQztZQUNqQzs7ZUFFRztZQUNILE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO1lBQ2pDOztlQUVHO1lBQ0gsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUM7U0FDbEMsQ0FBQTtRQUVPLFVBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO0lBNEQ3QixDQUFDO0lBMURDOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxLQUFnQztRQUNsQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUE0QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUMxRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsR0FBRyxDQUFDLEtBQWdDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUNaLEtBQUssRUFDTCxtQkFBbUIsQ0FBQyxHQUFHLENBQ3hCLENBQUE7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLEtBQWlDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSTtRQUNiLDBFQUEwRTtRQUMxRSwwRUFBMEU7UUFDMUUsbUVBQW1FO1FBQ25FLDJDQUEyQztRQUMzQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQ2hELG1CQUFtQixDQUFDLElBQUksQ0FDekIsQ0FBQTtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsS0FBbUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBaUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDbEcsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFtQztRQUN4QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFpRCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUNsRyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBc0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNoRyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYXZ2eSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25hdnZ5J1xyXG5pbXBvcnQgeyBsb3dlckNhc2VPcmRlciB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9sb3dlckNhc2VPcmRlcidcclxuaW1wb3J0IHsgJGFkZCwgJGNvbnRhY3QsICRjcm0sICRkZWxldGUsICRmaWVsZHMsICRnZXQsICRsaXN0LCAkdXBkYXRlIH0gZnJvbSAnLi4vLi4vY29uc3RzL3BhcnQtbmFtZS1tZXRob2RzJ1xyXG5pbXBvcnQge1xyXG4gIGlCWFJlc3RQYXJhbUNybUNvbnRhY3RBZGQsXHJcbiAgaUJYUmVzdFBhcmFtQ3JtQ29udGFjdEdldCxcclxuICBpQlhSZXN0UGFyYW1Dcm1Db250YWN0TGlzdCxcclxuICBpQlhSZXN0UGFyYW1Dcm1Db250YWN0VXBkYXRlLFxyXG4gIGlCWFJlc3RQYXJhbUNybUNvbnRhY3REZWxldGVcclxufSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9jcm0nXHJcbmltcG9ydCB7IEJYUmVzdE1hcENybUNvbnRhY3QgfSBmcm9tICcuLi8uLi9tYXAvY3JtJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUNybUNvbnRhY3RDb21wYW55IH0gZnJvbSAnLi9jb250YWN0L2NvbXBhbnknXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5Q3JtQ29udGFjdERldGFpbHMgfSBmcm9tICcuL2NvbnRhY3QvZGV0YWlscydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlDcm1Db250YWN0VXNlckZpZWxkIH0gZnJvbSAnLi9jb250YWN0L3VzZXJmaWVsZCdcclxuXHJcbmV4cG9ydCBjbGFzcyBCWFJlc3ROYXZ2eUNybUNvbnRhY3Qge1xyXG4gIC8qKlxyXG4gICAqINCa0L7QvNC/0LDQvdC40Lgg0LrQvtC90YLQsNC60YLQsCAoYGNybS5jb250YWN0LmNvbXBhbnkuKmApLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBjb21wYW55ID0gbmV3IEJYUmVzdE5hdnZ5Q3JtQ29udGFjdENvbXBhbnkoKVxyXG4gIC8qKlxyXG4gICAqINCa0LDRgNGC0L7Rh9C60LAg0LrQvtC90YLQsNC60YLQsCAoYGNybS5jb250YWN0LmRldGFpbHMuKmApLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBkZXRhaWxzID0gbmV3IEJYUmVzdE5hdnZ5Q3JtQ29udGFjdERldGFpbHMoKVxyXG4gIC8qKlxyXG4gICAqINCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQuNC1INC/0L7Qu9GPINC60L7QvdGC0LDQutGC0L7QsiAoYGNybS5jb250YWN0LnVzZXJmaWVsZC4qYCkuXHJcbiAgICovXHJcbiAgcHVibGljIHJlYWRvbmx5IHVzZXJGaWVsZCA9IG5ldyBCWFJlc3ROYXZ2eUNybUNvbnRhY3RVc2VyRmllbGQoKVxyXG4gIHVybCA9IHtcclxuICAgIC8qKlxyXG4gICAgICog0KHQvtC30LTQsNC10YIg0L3QvtCy0YvQuSDQutC+0L3RgtCw0LrRglxyXG4gICAgICovXHJcbiAgICBhZGQ6IFskY3JtLCAkY29udGFjdCwgJGFkZF0sXHJcbiAgICAvKipcclxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC60L7QvdGC0LDQutGCINC/0L4g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDRg1xyXG4gICAgICovXHJcbiAgICBnZXQ6IFskY3JtLCAkY29udGFjdCwgJGdldF0sXHJcbiAgICAvKipcclxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDQutC+0L3RgtCw0LrRgtC+0LJcclxuICAgICAqL1xyXG4gICAgbGlzdDogWyRjcm0sICRjb250YWN0LCAkbGlzdF0sXHJcbiAgICAvKipcclxuICAgICAqINCe0LHQvdC+0LLQu9GP0LXRgiDRgdGD0YnQtdGB0YLQstGD0Y7RidC40Lkg0LrQvtC90YLQsNC60YJcclxuICAgICAqL1xyXG4gICAgdXBkYXRlOiBbJGNybSwgJGNvbnRhY3QsICR1cGRhdGVdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQo9C00LDQu9GP0LXRgiDQutC+0L3RgtCw0LrRglxyXG4gICAgICovXHJcbiAgICBkZWxldGU6IFskY3JtLCAkY29udGFjdCwgJGRlbGV0ZV0sXHJcbiAgICAvKipcclxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC+0L/QuNGB0LDQvdC40LUg0L/QvtC70LXQuSDQutC+0L3RgtCw0LrRgtCwXHJcbiAgICAgKi9cclxuICAgIGZpZWxkczogWyRjcm0sICRjb250YWN0LCAkZmllbGRzXVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBOYXZ2eSA9IG5ldyBOYXZ2eSgpXHJcblxyXG4gIC8qKlxyXG4gICAqINCh0L7Qt9C00LDQtdGCINC90L7QstGL0Lkg0LrQvtC90YLQsNC60YJcclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICBhZGQocGFyYW06IGlCWFJlc3RQYXJhbUNybUNvbnRhY3RBZGQpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxudW1iZXIsIG51bWJlciwgaUJYUmVzdFBhcmFtQ3JtQ29udGFjdEFkZD4odGhpcy51cmwuYWRkLCBwYXJhbSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC60L7QvdGC0LDQutGCINC/0L4g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDRg1xyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIGdldChwYXJhbTogaUJYUmVzdFBhcmFtQ3JtQ29udGFjdEdldCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlKFxyXG4gICAgICB0aGlzLnVybC5nZXQsXHJcbiAgICAgIHBhcmFtLFxyXG4gICAgICBCWFJlc3RNYXBDcm1Db250YWN0LmdldFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6INC60L7QvdGC0LDQutGC0L7QslxyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIGxpc3QocGFyYW06IGlCWFJlc3RQYXJhbUNybUNvbnRhY3RMaXN0KSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5wYWdOYXYoXHJcbiAgICAgIHRoaXMudXJsLmxpc3QsXHJcbiAgICAgIC8vIGNybS5jb250YWN0Lmxpc3Qg0LbQtNGR0YIgb3JkZXIg0LIg0L3QuNC20L3QtdC8INGA0LXQs9C40YHRgtGA0LUgKCdhc2MnLydkZXNjJyksINCyINC+0YLQu9C40YfQuNC1XHJcbiAgICAgIC8vINC+0YIg0L7RgdGC0LDQu9GM0L3QvtCz0L4gUkVTVCBBUEkg4oCUINC/0YPQsdC70LjRh9C90YvQuSDRgtC40L8g0YPQvdC40YTQuNGG0LjRgNC+0LLQsNC9INC90LAgaUJYUmVzdFBhcmFtU29ydFxyXG4gICAgICAvLyAoJ0FTQycvJ0RFU0MnKSwg0LAg0YLRg9GCINC/0YDQuNCy0L7QtNC40Lwg0L7QsdGA0LDRgtC90L4g0Log0YLQvtC80YMsINGH0YLQviDRgNC10LDQu9GM0L3QviDQvdGD0LbQvdC+XHJcbiAgICAgIC8vINC+0YLQv9GA0LDQstC40YLRjCDQvdCwINCx0Y3QutC10L3QtC4g0KHQvC4gbG93ZXJDYXNlT3JkZXIuXHJcbiAgICAgIHsgLi4ucGFyYW0sIG9yZGVyOiBsb3dlckNhc2VPcmRlcihwYXJhbS5vcmRlcikgfSxcclxuICAgICAgQlhSZXN0TWFwQ3JtQ29udGFjdC5saXN0XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQntCx0L3QvtCy0LvRj9C10YIg0YHRg9GJ0LXRgdGC0LLRg9GO0YnQuNC5INC60L7QvdGC0LDQutGCXHJcbiAgICogQHBhcmFtIHBhcmFtXHJcbiAgICovXHJcbiAgdXBkYXRlKHBhcmFtOiBpQlhSZXN0UGFyYW1Dcm1Db250YWN0VXBkYXRlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8Ym9vbGVhbiwgYm9vbGVhbiwgaUJYUmVzdFBhcmFtQ3JtQ29udGFjdFVwZGF0ZT4odGhpcy51cmwudXBkYXRlLCBwYXJhbSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCj0LTQsNC70Y/QtdGCINC60L7QvdGC0LDQutGCXHJcbiAgICogQHBhcmFtIHBhcmFtXHJcbiAgICovXHJcbiAgZGVsZXRlKHBhcmFtOiBpQlhSZXN0UGFyYW1Dcm1Db250YWN0RGVsZXRlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8Ym9vbGVhbiwgYm9vbGVhbiwgaUJYUmVzdFBhcmFtQ3JtQ29udGFjdERlbGV0ZT4odGhpcy51cmwuZGVsZXRlLCBwYXJhbSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC+0L/QuNGB0LDQvdC40LUg0L/QvtC70LXQuSDQutC+0L3RgtCw0LrRgtCwXHJcbiAgICovXHJcbiAgZmllbGRzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPFJlY29yZDxzdHJpbmcsIGFueT4sIFJlY29yZDxzdHJpbmcsIGFueT4sIHVuZGVmaW5lZD4odGhpcy51cmwuZmllbGRzKVxyXG4gIH1cclxufVxyXG5cclxuIl19
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Navvy } from '../../services/navvy';
|
|
2
|
+
import { lowerCaseOrder } from '../../functions/lowerCaseOrder';
|
|
2
3
|
import { $add, $crm, $deal, $delete, $fields, $get, $list, $update } from '../../consts/part-name-methods';
|
|
3
4
|
import { BXRestMapCrmDeal } from '../../map/crm';
|
|
4
5
|
import { BXRestNavvyCrmDealContact } from './deal/contact';
|
|
@@ -75,7 +76,12 @@ export class BXRestNavvyCrmDeal {
|
|
|
75
76
|
* @param param
|
|
76
77
|
*/
|
|
77
78
|
list(param) {
|
|
78
|
-
return this.Navvy.pagNav(this.url.list,
|
|
79
|
+
return this.Navvy.pagNav(this.url.list,
|
|
80
|
+
// crm.deal.list ждёт order в нижнем регистре ('asc'/'desc'), в отличие
|
|
81
|
+
// от остального REST API — публичный тип унифицирован на iBXRestParamSort
|
|
82
|
+
// ('ASC'/'DESC'), а тут приводим обратно к тому, что реально нужно
|
|
83
|
+
// отправить на бэкенд. См. lowerCaseOrder.
|
|
84
|
+
{ ...param, order: lowerCaseOrder(param.order) }, BXRestMapCrmDeal.list);
|
|
79
85
|
}
|
|
80
86
|
/**
|
|
81
87
|
* Обновляет существующую сделку
|
|
@@ -98,4 +104,4 @@ export class BXRestNavvyCrmDeal {
|
|
|
98
104
|
return this.Navvy.simple(this.url.fields);
|
|
99
105
|
}
|
|
100
106
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3JlcXVlc3QtbmF2dnkvY3JtL2RlYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBUTFHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNoRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMxRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUU5RCxNQUFNLE9BQU8sa0JBQWtCO0lBQS9CO1FBQ0U7O1dBRUc7UUFDYSxZQUFPLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxDQUFBO1FBQ3pEOztXQUVHO1FBQ2EsWUFBTyxHQUFHLElBQUkseUJBQXlCLEVBQUUsQ0FBQTtRQUN6RDs7V0FFRztRQUNhLGdCQUFXLEdBQUcsSUFBSSw2QkFBNkIsRUFBRSxDQUFBO1FBQ2pFOztXQUVHO1FBQ2EsY0FBUyxHQUFHLElBQUksMkJBQTJCLEVBQUUsQ0FBQTtRQUM3RDs7V0FFRztRQUNhLGNBQVMsR0FBRyxJQUFJLDJCQUEyQixFQUFFLENBQUE7UUFDN0QsUUFBRyxHQUFHO1lBQ0o7O2VBRUc7WUFDSCxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQztZQUN4Qjs7ZUFFRztZQUNILEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDO1lBQ3hCOztlQUVHO1lBQ0gsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7WUFDMUI7O2VBRUc7WUFDSCxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUM5Qjs7ZUFFRztZQUNILE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDO1lBQzlCOztlQUVHO1lBQ0gsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7U0FDL0IsQ0FBQTtRQUVPLFVBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFBO0lBNEQ3QixDQUFDO0lBMURDOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxLQUE2QjtRQUMvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUF5QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN2RixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsR0FBRyxDQUFDLEtBQTZCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUNaLEtBQUssRUFDTCxnQkFBZ0IsQ0FBQyxHQUFHLENBQ3JCLENBQUE7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLEtBQThCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSTtRQUNiLHVFQUF1RTtRQUN2RSwwRUFBMEU7UUFDMUUsbUVBQW1FO1FBQ25FLDJDQUEyQztRQUMzQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQ2hELGdCQUFnQixDQUFDLElBQUksQ0FDdEIsQ0FBQTtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsS0FBZ0M7UUFDckMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBOEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDL0YsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFnQztRQUNyQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUE4QyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUMvRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBc0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNoRyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOYXZ2eSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25hdnZ5J1xyXG5pbXBvcnQgeyBsb3dlckNhc2VPcmRlciB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9sb3dlckNhc2VPcmRlcidcclxuaW1wb3J0IHsgJGFkZCwgJGNybSwgJGRlYWwsICRkZWxldGUsICRmaWVsZHMsICRnZXQsICRsaXN0LCAkdXBkYXRlIH0gZnJvbSAnLi4vLi4vY29uc3RzL3BhcnQtbmFtZS1tZXRob2RzJ1xyXG5pbXBvcnQge1xyXG4gIGlCWFJlc3RQYXJhbUNybURlYWxBZGQsXHJcbiAgaUJYUmVzdFBhcmFtQ3JtRGVhbEdldCxcclxuICBpQlhSZXN0UGFyYW1Dcm1EZWFsTGlzdCxcclxuICBpQlhSZXN0UGFyYW1Dcm1EZWFsVXBkYXRlLFxyXG4gIGlCWFJlc3RQYXJhbUNybURlYWxEZWxldGVcclxufSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9jcm0nXHJcbmltcG9ydCB7IEJYUmVzdE1hcENybURlYWwgfSBmcm9tICcuLi8uLi9tYXAvY3JtJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUNybURlYWxDb250YWN0IH0gZnJvbSAnLi9kZWFsL2NvbnRhY3QnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5Q3JtRGVhbERldGFpbHMgfSBmcm9tICcuL2RlYWwvZGV0YWlscydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlDcm1EZWFsUHJvZHVjdFJvd3MgfSBmcm9tICcuL2RlYWwvcHJvZHVjdHJvd3MnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5Q3JtRGVhbFJlY3VycmluZyB9IGZyb20gJy4vZGVhbC9yZWN1cnJpbmcnXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5Q3JtRGVhbFVzZXJGaWVsZCB9IGZyb20gJy4vZGVhbC91c2VyZmllbGQnXHJcblxyXG5leHBvcnQgY2xhc3MgQlhSZXN0TmF2dnlDcm1EZWFsIHtcclxuICAvKipcclxuICAgKiDQmtC+0L3RgtCw0LrRgtGLINGB0LTQtdC70LrQuCAoYGNybS5kZWFsLmNvbnRhY3QuKmApLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBjb250YWN0ID0gbmV3IEJYUmVzdE5hdnZ5Q3JtRGVhbENvbnRhY3QoKVxyXG4gIC8qKlxyXG4gICAqINCa0LDRgNGC0L7Rh9C60LAg0YHQtNC10LvQutC4IChgY3JtLmRlYWwuZGV0YWlscy4qYCkuXHJcbiAgICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGRldGFpbHMgPSBuZXcgQlhSZXN0TmF2dnlDcm1EZWFsRGV0YWlscygpXHJcbiAgLyoqXHJcbiAgICog0KLQvtCy0LDRgNC90YvQtSDQv9C+0LfQuNGG0LjQuCDRgdC00LXQu9C60LggKGBjcm0uZGVhbC5wcm9kdWN0cm93cy4qYCkuXHJcbiAgICovXHJcbiAgcHVibGljIHJlYWRvbmx5IHByb2R1Y3RSb3dzID0gbmV3IEJYUmVzdE5hdnZ5Q3JtRGVhbFByb2R1Y3RSb3dzKClcclxuICAvKipcclxuICAgKiDQqNCw0LHQu9C+0L3RiyDRgNC10LPRg9C70Y/RgNC90YvRhSDRgdC00LXQu9C+0LogKGBjcm0uZGVhbC5yZWN1cnJpbmcuKmApLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSByZWN1cnJpbmcgPSBuZXcgQlhSZXN0TmF2dnlDcm1EZWFsUmVjdXJyaW5nKClcclxuICAvKipcclxuICAgKiDQn9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjQtSDQv9C+0LvRjyDRgdC00LXQu9C+0LogKGBjcm0uZGVhbC51c2VyZmllbGQuKmApLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSB1c2VyRmllbGQgPSBuZXcgQlhSZXN0TmF2dnlDcm1EZWFsVXNlckZpZWxkKClcclxuICB1cmwgPSB7XHJcbiAgICAvKipcclxuICAgICAqINCh0L7Qt9C00LDQtdGCINC90L7QstGD0Y4g0YHQtNC10LvQutGDXHJcbiAgICAgKi9cclxuICAgIGFkZDogWyRjcm0sICRkZWFsLCAkYWRkXSxcclxuICAgIC8qKlxyXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQtNC10LvQutGDINC/0L4g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDRg1xyXG4gICAgICovXHJcbiAgICBnZXQ6IFskY3JtLCAkZGVhbCwgJGdldF0sXHJcbiAgICAvKipcclxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDRgdC00LXQu9C+0LpcclxuICAgICAqL1xyXG4gICAgbGlzdDogWyRjcm0sICRkZWFsLCAkbGlzdF0sXHJcbiAgICAvKipcclxuICAgICAqINCe0LHQvdC+0LLQu9GP0LXRgiDRgdGD0YnQtdGB0YLQstGD0Y7RidGD0Y4g0YHQtNC10LvQutGDXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZTogWyRjcm0sICRkZWFsLCAkdXBkYXRlXSxcclxuICAgIC8qKlxyXG4gICAgICog0KPQtNCw0LvRj9C10YIg0YHQtNC10LvQutGDXHJcbiAgICAgKi9cclxuICAgIGRlbGV0ZTogWyRjcm0sICRkZWFsLCAkZGVsZXRlXSxcclxuICAgIC8qKlxyXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L7Qv9C40YHQsNC90LjQtSDQv9C+0LvQtdC5INGB0LTQtdC70LrQuFxyXG4gICAgICovXHJcbiAgICBmaWVsZHM6IFskY3JtLCAkZGVhbCwgJGZpZWxkc11cclxuICB9XHJcblxyXG4gIHByaXZhdGUgTmF2dnkgPSBuZXcgTmF2dnkoKVxyXG5cclxuICAvKipcclxuICAgKiDQodC+0LfQtNCw0LXRgiDQvdC+0LLRg9GOINGB0LTQtdC70LrRg1xyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIGFkZChwYXJhbTogaUJYUmVzdFBhcmFtQ3JtRGVhbEFkZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPG51bWJlciwgbnVtYmVyLCBpQlhSZXN0UGFyYW1Dcm1EZWFsQWRkPih0aGlzLnVybC5hZGQsIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQtNC10LvQutGDINC/0L4g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDRg1xyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIGdldChwYXJhbTogaUJYUmVzdFBhcmFtQ3JtRGVhbEdldCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlKFxyXG4gICAgICB0aGlzLnVybC5nZXQsXHJcbiAgICAgIHBhcmFtLFxyXG4gICAgICBCWFJlc3RNYXBDcm1EZWFsLmdldFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6INGB0LTQtdC70L7QulxyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIGxpc3QocGFyYW06IGlCWFJlc3RQYXJhbUNybURlYWxMaXN0KSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5wYWdOYXYoXHJcbiAgICAgIHRoaXMudXJsLmxpc3QsXHJcbiAgICAgIC8vIGNybS5kZWFsLmxpc3Qg0LbQtNGR0YIgb3JkZXIg0LIg0L3QuNC20L3QtdC8INGA0LXQs9C40YHRgtGA0LUgKCdhc2MnLydkZXNjJyksINCyINC+0YLQu9C40YfQuNC1XHJcbiAgICAgIC8vINC+0YIg0L7RgdGC0LDQu9GM0L3QvtCz0L4gUkVTVCBBUEkg4oCUINC/0YPQsdC70LjRh9C90YvQuSDRgtC40L8g0YPQvdC40YTQuNGG0LjRgNC+0LLQsNC9INC90LAgaUJYUmVzdFBhcmFtU29ydFxyXG4gICAgICAvLyAoJ0FTQycvJ0RFU0MnKSwg0LAg0YLRg9GCINC/0YDQuNCy0L7QtNC40Lwg0L7QsdGA0LDRgtC90L4g0Log0YLQvtC80YMsINGH0YLQviDRgNC10LDQu9GM0L3QviDQvdGD0LbQvdC+XHJcbiAgICAgIC8vINC+0YLQv9GA0LDQstC40YLRjCDQvdCwINCx0Y3QutC10L3QtC4g0KHQvC4gbG93ZXJDYXNlT3JkZXIuXHJcbiAgICAgIHsgLi4ucGFyYW0sIG9yZGVyOiBsb3dlckNhc2VPcmRlcihwYXJhbS5vcmRlcikgfSxcclxuICAgICAgQlhSZXN0TWFwQ3JtRGVhbC5saXN0XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQntCx0L3QvtCy0LvRj9C10YIg0YHRg9GJ0LXRgdGC0LLRg9GO0YnRg9GOINGB0LTQtdC70LrRg1xyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIHVwZGF0ZShwYXJhbTogaUJYUmVzdFBhcmFtQ3JtRGVhbFVwZGF0ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPGJvb2xlYW4sIGJvb2xlYW4sIGlCWFJlc3RQYXJhbUNybURlYWxVcGRhdGU+KHRoaXMudXJsLnVwZGF0ZSwgcGFyYW0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQo9C00LDQu9GP0LXRgiDRgdC00LXQu9C60YNcclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICBkZWxldGUocGFyYW06IGlCWFJlc3RQYXJhbUNybURlYWxEZWxldGUpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxib29sZWFuLCBib29sZWFuLCBpQlhSZXN0UGFyYW1Dcm1EZWFsRGVsZXRlPih0aGlzLnVybC5kZWxldGUsIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0L7Qv9C40YHQsNC90LjQtSDQv9C+0LvQtdC5INGB0LTQtdC70LrQuFxyXG4gICAqL1xyXG4gIGZpZWxkcygpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxSZWNvcmQ8c3RyaW5nLCBhbnk+LCBSZWNvcmQ8c3RyaW5nLCBhbnk+LCB1bmRlZmluZWQ+KHRoaXMudXJsLmZpZWxkcylcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Navvy } from '../../services/navvy';
|
|
2
|
+
import { lowerCaseOrder } from '../../functions/lowerCaseOrder';
|
|
2
3
|
import { $add, $crm, $delete, $fields, $get, $lead, $list, $update } from '../../consts/part-name-methods';
|
|
3
4
|
import { BXRestMapCrmLead } from '../../map/crm';
|
|
4
5
|
import { BXRestNavvyCrmLeadContact } from './lead/contact';
|
|
@@ -70,7 +71,12 @@ export class BXRestNavvyCrmLead {
|
|
|
70
71
|
* @param param
|
|
71
72
|
*/
|
|
72
73
|
list(param) {
|
|
73
|
-
return this.Navvy.pagNav(this.url.list,
|
|
74
|
+
return this.Navvy.pagNav(this.url.list,
|
|
75
|
+
// crm.lead.list ждёт order в нижнем регистре ('asc'/'desc'), в отличие
|
|
76
|
+
// от остального REST API — публичный тип унифицирован на iBXRestParamSort
|
|
77
|
+
// ('ASC'/'DESC'), а тут приводим обратно к тому, что реально нужно
|
|
78
|
+
// отправить на бэкенд. См. lowerCaseOrder.
|
|
79
|
+
{ ...param, order: lowerCaseOrder(param.order) }, BXRestMapCrmLead.list);
|
|
74
80
|
}
|
|
75
81
|
/**
|
|
76
82
|
* Обновляет существующий лид
|
|
@@ -93,4 +99,4 @@ export class BXRestNavvyCrmLead {
|
|
|
93
99
|
return this.Navvy.simple(this.url.fields);
|
|
94
100
|
}
|
|
95
101
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3JlcXVlc3QtbmF2dnkvY3JtL2xlYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzVDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBUTFHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNoRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMxRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNsRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUU5RCxNQUFNLE9BQU8sa0JBQWtCO0lBQS9CO1FBQ0U7O1dBRUc7UUFDYSxZQUFPLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxDQUFBO1FBQ3pEOztXQUVHO1FBQ2EsWUFBTyxHQUFHLElBQUkseUJBQXlCLEVBQUUsQ0FBQTtRQUN6RDs7V0FFRztRQUNhLGdCQUFXLEdBQUcsSUFBSSw2QkFBNkIsRUFBRSxDQUFBO1FBQ2pFOztXQUVHO1FBQ2EsY0FBUyxHQUFHLElBQUksMkJBQTJCLEVBQUUsQ0FBQTtRQUM3RCxRQUFHLEdBQUc7WUFDSjs7ZUFFRztZQUNILEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDO1lBQ3hCOztlQUVHO1lBQ0gsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7WUFDeEI7O2VBRUc7WUFDSCxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztZQUMxQjs7ZUFFRztZQUNILE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDO1lBQzlCOztlQUVHO1lBQ0gsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7WUFDOUI7O2VBRUc7WUFDSCxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztTQUMvQixDQUFBO1FBRU8sVUFBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7SUE0RDdCLENBQUM7SUExREM7OztPQUdHO0lBQ0gsR0FBRyxDQUFDLEtBQTZCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQXlDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ3ZGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxHQUFHLENBQUMsS0FBNkI7UUFDL0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQ1osS0FBSyxFQUNMLGdCQUFnQixDQUFDLEdBQUcsQ0FDckIsQ0FBQTtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsS0FBOEI7UUFDakMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJO1FBQ2IsdUVBQXVFO1FBQ3ZFLDBFQUEwRTtRQUMxRSxtRUFBbUU7UUFDbkUsMkNBQTJDO1FBQzNDLEVBQUUsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFDaEQsZ0JBQWdCLENBQUMsSUFBSSxDQUN0QixDQUFBO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxLQUFnQztRQUNyQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUE4QyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUMvRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQWdDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQThDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQy9GLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFzRCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2hHLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5hdnZ5IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbmF2dnknXHJcbmltcG9ydCB7IGxvd2VyQ2FzZU9yZGVyIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2xvd2VyQ2FzZU9yZGVyJ1xyXG5pbXBvcnQgeyAkYWRkLCAkY3JtLCAkZGVsZXRlLCAkZmllbGRzLCAkZ2V0LCAkbGVhZCwgJGxpc3QsICR1cGRhdGUgfSBmcm9tICcuLi8uLi9jb25zdHMvcGFydC1uYW1lLW1ldGhvZHMnXHJcbmltcG9ydCB7XHJcbiAgaUJYUmVzdFBhcmFtQ3JtTGVhZEFkZCxcclxuICBpQlhSZXN0UGFyYW1Dcm1MZWFkR2V0LFxyXG4gIGlCWFJlc3RQYXJhbUNybUxlYWRMaXN0LFxyXG4gIGlCWFJlc3RQYXJhbUNybUxlYWRVcGRhdGUsXHJcbiAgaUJYUmVzdFBhcmFtQ3JtTGVhZERlbGV0ZVxyXG59IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2NybSdcclxuaW1wb3J0IHsgQlhSZXN0TWFwQ3JtTGVhZCB9IGZyb20gJy4uLy4uL21hcC9jcm0nXHJcbmltcG9ydCB7IEJYUmVzdE5hdnZ5Q3JtTGVhZENvbnRhY3QgfSBmcm9tICcuL2xlYWQvY29udGFjdCdcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlDcm1MZWFkRGV0YWlscyB9IGZyb20gJy4vbGVhZC9kZXRhaWxzJ1xyXG5pbXBvcnQgeyBCWFJlc3ROYXZ2eUNybUxlYWRQcm9kdWN0Um93cyB9IGZyb20gJy4vbGVhZC9wcm9kdWN0cm93cydcclxuaW1wb3J0IHsgQlhSZXN0TmF2dnlDcm1MZWFkVXNlckZpZWxkIH0gZnJvbSAnLi9sZWFkL3VzZXJmaWVsZCdcclxuXHJcbmV4cG9ydCBjbGFzcyBCWFJlc3ROYXZ2eUNybUxlYWQge1xyXG4gIC8qKlxyXG4gICAqINCa0L7QvdGC0LDQutGC0Ysg0LvQuNC00LAgKGBjcm0ubGVhZC5jb250YWN0LipgKS5cclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgY29udGFjdCA9IG5ldyBCWFJlc3ROYXZ2eUNybUxlYWRDb250YWN0KClcclxuICAvKipcclxuICAgKiDQmtCw0YDRgtC+0YfQutCwINC70LjQtNCwIChgY3JtLmxlYWQuZGV0YWlscy4qYCkuXHJcbiAgICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGRldGFpbHMgPSBuZXcgQlhSZXN0TmF2dnlDcm1MZWFkRGV0YWlscygpXHJcbiAgLyoqXHJcbiAgICog0KLQvtCy0LDRgNGLINC70LjQtNCwIChgY3JtLmxlYWQucHJvZHVjdHJvd3MuKmApLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSBwcm9kdWN0Um93cyA9IG5ldyBCWFJlc3ROYXZ2eUNybUxlYWRQcm9kdWN0Um93cygpXHJcbiAgLyoqXHJcbiAgICog0J/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40LUg0L/QvtC70Y8g0LvQuNC00LAgKGBjcm0ubGVhZC51c2VyZmllbGQuKmApLlxyXG4gICAqL1xyXG4gIHB1YmxpYyByZWFkb25seSB1c2VyRmllbGQgPSBuZXcgQlhSZXN0TmF2dnlDcm1MZWFkVXNlckZpZWxkKClcclxuICB1cmwgPSB7XHJcbiAgICAvKipcclxuICAgICAqINCh0L7Qt9C00LDQtdGCINC90L7QstGL0Lkg0LvQuNC0XHJcbiAgICAgKi9cclxuICAgIGFkZDogWyRjcm0sICRsZWFkLCAkYWRkXSxcclxuICAgIC8qKlxyXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LvQuNC0INC/0L4g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDRg1xyXG4gICAgICovXHJcbiAgICBnZXQ6IFskY3JtLCAkbGVhZCwgJGdldF0sXHJcbiAgICAvKipcclxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDQu9C40LTQvtCyXHJcbiAgICAgKi9cclxuICAgIGxpc3Q6IFskY3JtLCAkbGVhZCwgJGxpc3RdLFxyXG4gICAgLyoqXHJcbiAgICAgKiDQntCx0L3QvtCy0LvRj9C10YIg0YHRg9GJ0LXRgdGC0LLRg9GO0YnQuNC5INC70LjQtFxyXG4gICAgICovXHJcbiAgICB1cGRhdGU6IFskY3JtLCAkbGVhZCwgJHVwZGF0ZV0sXHJcbiAgICAvKipcclxuICAgICAqINCj0LTQsNC70Y/QtdGCINC70LjQtFxyXG4gICAgICovXHJcbiAgICBkZWxldGU6IFskY3JtLCAkbGVhZCwgJGRlbGV0ZV0sXHJcbiAgICAvKipcclxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC+0L/QuNGB0LDQvdC40LUg0L/QvtC70LXQuSDQu9C40LTQsFxyXG4gICAgICovXHJcbiAgICBmaWVsZHM6IFskY3JtLCAkbGVhZCwgJGZpZWxkc11cclxuICB9XHJcblxyXG4gIHByaXZhdGUgTmF2dnkgPSBuZXcgTmF2dnkoKVxyXG5cclxuICAvKipcclxuICAgKiDQodC+0LfQtNCw0LXRgiDQvdC+0LLRi9C5INC70LjQtFxyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIGFkZChwYXJhbTogaUJYUmVzdFBhcmFtQ3JtTGVhZEFkZCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlPG51bWJlciwgbnVtYmVyLCBpQlhSZXN0UGFyYW1Dcm1MZWFkQWRkPih0aGlzLnVybC5hZGQsIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0LvQuNC0INC/0L4g0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDRg1xyXG4gICAqIEBwYXJhbSBwYXJhbVxyXG4gICAqL1xyXG4gIGdldChwYXJhbTogaUJYUmVzdFBhcmFtQ3JtTGVhZEdldCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkuc2ltcGxlKFxyXG4gICAgICB0aGlzLnVybC5nZXQsXHJcbiAgICAgIHBhcmFtLFxyXG4gICAgICBCWFJlc3RNYXBDcm1MZWFkLmdldFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0JLQvtC30LLRgNCw0YnQsNC10YIg0YHQv9C40YHQvtC6INC70LjQtNC+0LJcclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICBsaXN0KHBhcmFtOiBpQlhSZXN0UGFyYW1Dcm1MZWFkTGlzdCkge1xyXG4gICAgcmV0dXJuIHRoaXMuTmF2dnkucGFnTmF2KFxyXG4gICAgICB0aGlzLnVybC5saXN0LFxyXG4gICAgICAvLyBjcm0ubGVhZC5saXN0INC20LTRkdGCIG9yZGVyINCyINC90LjQttC90LXQvCDRgNC10LPQuNGB0YLRgNC1ICgnYXNjJy8nZGVzYycpLCDQsiDQvtGC0LvQuNGH0LjQtVxyXG4gICAgICAvLyDQvtGCINC+0YHRgtCw0LvRjNC90L7Qs9C+IFJFU1QgQVBJIOKAlCDQv9GD0LHQu9C40YfQvdGL0Lkg0YLQuNC/INGD0L3QuNGE0LjRhtC40YDQvtCy0LDQvSDQvdCwIGlCWFJlc3RQYXJhbVNvcnRcclxuICAgICAgLy8gKCdBU0MnLydERVNDJyksINCwINGC0YPRgiDQv9GA0LjQstC+0LTQuNC8INC+0LHRgNCw0YLQvdC+INC6INGC0L7QvNGDLCDRh9GC0L4g0YDQtdCw0LvRjNC90L4g0L3Rg9C20L3QvlxyXG4gICAgICAvLyDQvtGC0L/RgNCw0LLQuNGC0Ywg0L3QsCDQsdGN0LrQtdC90LQuINCh0LwuIGxvd2VyQ2FzZU9yZGVyLlxyXG4gICAgICB7IC4uLnBhcmFtLCBvcmRlcjogbG93ZXJDYXNlT3JkZXIocGFyYW0ub3JkZXIpIH0sXHJcbiAgICAgIEJYUmVzdE1hcENybUxlYWQubGlzdFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0J7QsdC90L7QstC70Y/QtdGCINGB0YPRidC10YHRgtCy0YPRjtGJ0LjQuSDQu9C40LRcclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICB1cGRhdGUocGFyYW06IGlCWFJlc3RQYXJhbUNybUxlYWRVcGRhdGUpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxib29sZWFuLCBib29sZWFuLCBpQlhSZXN0UGFyYW1Dcm1MZWFkVXBkYXRlPih0aGlzLnVybC51cGRhdGUsIHBhcmFtKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0KPQtNCw0LvRj9C10YIg0LvQuNC0XHJcbiAgICogQHBhcmFtIHBhcmFtXHJcbiAgICovXHJcbiAgZGVsZXRlKHBhcmFtOiBpQlhSZXN0UGFyYW1Dcm1MZWFkRGVsZXRlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5OYXZ2eS5zaW1wbGU8Ym9vbGVhbiwgYm9vbGVhbiwgaUJYUmVzdFBhcmFtQ3JtTGVhZERlbGV0ZT4odGhpcy51cmwuZGVsZXRlLCBwYXJhbSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCINC+0L/QuNGB0LDQvdC40LUg0L/QvtC70LXQuSDQu9C40LTQsFxyXG4gICAqL1xyXG4gIGZpZWxkcygpIHtcclxuICAgIHJldHVybiB0aGlzLk5hdnZ5LnNpbXBsZTxSZWNvcmQ8c3RyaW5nLCBhbnk+LCBSZWNvcmQ8c3RyaW5nLCBhbnk+LCB1bmRlZmluZWQ+KHRoaXMudXJsLmZpZWxkcylcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|