@webitel/ui-sdk 24.4.19 → 24.4.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/img/sprite/custom-chat-gateway.svg +5 -0
  2. package/dist/img/sprite/index.js +1 -0
  3. package/dist/ui-sdk.mjs +1069 -1069
  4. package/dist/ui-sdk.umd.js +9 -9
  5. package/package.json +3 -2
  6. package/src/api/clients/agents/agents.js +292 -0
  7. package/src/api/clients/buckets/buckets.js +138 -0
  8. package/src/api/clients/calendars/calendars.js +248 -0
  9. package/src/api/clients/chatGateways/chatGateways.js +309 -0
  10. package/src/api/clients/chatGateways/defaults/defaultChatGateway.js +18 -0
  11. package/src/api/clients/chatGateways/defaults/webChatGateway.js +73 -0
  12. package/src/api/clients/chatGateways/enums/WebchatAlternativeChannel.enum.js +14 -0
  13. package/src/api/clients/chatGateways/scripts/generateUri.js +9 -0
  14. package/src/api/clients/communications/communications.js +162 -0
  15. package/src/api/clients/flows/flow.js +256 -0
  16. package/src/api/clients/gateways/defaults/defaultGateway.js +9 -0
  17. package/src/api/clients/gateways/defaults/registerGateway.js +12 -0
  18. package/src/api/clients/gateways/defaults/trunkingGateway.js +16 -0
  19. package/src/api/clients/gateways/gateways.js +204 -0
  20. package/src/api/clients/index.js +27 -0
  21. package/src/api/clients/lists/blacklists.js +144 -0
  22. package/src/api/clients/media/media.js +136 -0
  23. package/src/api/clients/queues/defaults/processing.js +10 -0
  24. package/src/api/clients/queues/queues.js +275 -0
  25. package/src/api/clients/roles/roles.js +213 -0
  26. package/src/api/clients/users/__tests__/users.spec.js +200 -0
  27. package/src/api/clients/users/users.js +254 -0
  28. package/src/api/defaults/getDefaultInstance/getDefaultInstance.js +14 -0
  29. package/src/api/defaults/getDefaultOpenAPIConfig/getDefaultOpenAPIConfig.js +9 -0
  30. package/src/api/defaults/index.js +4 -0
  31. package/src/enums/ChatGatewayProvider/ChatGatewayProvider.enum.js +1 -0
@@ -0,0 +1,256 @@
1
+ import {
2
+ EngineRoutingSchemaType,
3
+ RoutingSchemaServiceApiFactory,
4
+ } from 'webitel-sdk';
5
+ import {
6
+ getDefaultGetListResponse,
7
+ getDefaultGetParams,
8
+ getDefaultInstance,
9
+ getDefaultOpenAPIConfig,
10
+ } from '../../defaults';
11
+ import applyTransform, {
12
+ camelToSnake,
13
+ merge,
14
+ mergeEach,
15
+ notify,
16
+ sanitize,
17
+ snakeToCamel,
18
+ starToSearch,
19
+ } from '../../transformers';
20
+
21
+ const instance = getDefaultInstance();
22
+ const configuration = getDefaultOpenAPIConfig();
23
+
24
+ const flowService = new RoutingSchemaServiceApiFactory(configuration, '', instance);
25
+
26
+ /*
27
+ CONVERT "SCHEMA" FIELD TO JSON TO PREVENT ITS CHANGE
28
+ BY CAMEL-SNAKE TRANSFORMERS
29
+ */
30
+ const doNotConvertKeys = ['schema'];
31
+
32
+ const fieldsToSend = ['name', 'schema', 'type', 'payload', 'editor', 'tags'];
33
+
34
+ const getFlowList = async (params) => {
35
+ const defaultObject = {
36
+ type: EngineRoutingSchemaType.Default,
37
+ editor: false,
38
+ };
39
+
40
+ const paramsCopy = {
41
+ ...params,
42
+ };
43
+
44
+ if (paramsCopy.type) {
45
+ const _type = Array.isArray(paramsCopy.type)
46
+ ? paramsCopy.type
47
+ : [paramsCopy.type];
48
+ if (!paramsCopy.type.includes(EngineRoutingSchemaType.Default)) {
49
+ _type.push(EngineRoutingSchemaType.Default);
50
+ }
51
+ paramsCopy.type = _type;
52
+ }
53
+
54
+ const {
55
+ page,
56
+ size,
57
+ search,
58
+ sort,
59
+ fields,
60
+ id,
61
+ name,
62
+ type,
63
+ tags,
64
+ } = applyTransform(paramsCopy, [
65
+ merge(getDefaultGetParams()),
66
+ starToSearch('search'),
67
+ camelToSnake(doNotConvertKeys),
68
+ ]);
69
+
70
+ try {
71
+ const response = await flowService.searchRoutingSchema(
72
+ page,
73
+ size,
74
+ search,
75
+ sort,
76
+ fields,
77
+ id,
78
+ name,
79
+ type,
80
+ undefined,
81
+ tags,
82
+ );
83
+ const { items, next } = applyTransform(response.data, [
84
+ snakeToCamel(doNotConvertKeys),
85
+ merge(getDefaultGetListResponse()),
86
+ ]);
87
+ return {
88
+ items: applyTransform(items, [
89
+ mergeEach(defaultObject),
90
+ ]),
91
+ next,
92
+ };
93
+ } catch (err) {
94
+ throw applyTransform(err, [
95
+
96
+ notify,
97
+ ]);
98
+ }
99
+ };
100
+ const getFlow = async ({ itemId: id }) => {
101
+ const defaultObject = {
102
+ tags: [],
103
+ editor: false,
104
+ type: EngineRoutingSchemaType.Default,
105
+ };
106
+
107
+ const itemResponseHandler = (item) => ({
108
+ ...item,
109
+ schema: JSON.stringify(item.schema, null, 4),
110
+ });
111
+
112
+ try {
113
+ const response = await flowService.readRoutingSchema(id);
114
+ return applyTransform(response.data, [
115
+ ({ payload, schema, ...rest }) => ({
116
+ payload,
117
+ schema,
118
+ ...snakeToCamel(doNotConvertKeys)(rest),
119
+ }),
120
+ merge(defaultObject),
121
+ itemResponseHandler,
122
+ ]);
123
+ } catch (err) {
124
+ throw applyTransform(err, [
125
+
126
+ notify,
127
+ ]);
128
+ }
129
+ };
130
+
131
+ const preRequestHandler = (item) => ({
132
+ ...item,
133
+ schema: typeof item.schema === 'string'
134
+ ? JSON.parse(item.schema)
135
+ : item.schema,
136
+ });
137
+
138
+ const addFlow = async ({ itemInstance }) => {
139
+ const item = applyTransform(itemInstance, [
140
+ preRequestHandler,
141
+ sanitize(fieldsToSend),
142
+ ({ payload, schema, ...rest }) => ({
143
+ payload,
144
+ schema,
145
+ ...camelToSnake(doNotConvertKeys)(rest),
146
+ }),
147
+ ]);
148
+ try {
149
+ const response = await flowService.createRoutingSchema(item);
150
+ return applyTransform(response.data, [
151
+ ({ payload, schema, ...rest }) => ({
152
+ payload,
153
+ schema,
154
+ ...snakeToCamel(doNotConvertKeys)(rest),
155
+ }),
156
+ ]);
157
+ } catch (err) {
158
+ throw applyTransform(err, [
159
+
160
+ notify,
161
+ ]);
162
+ }
163
+ };
164
+ const updateFlow = async ({ itemInstance, itemId: id }) => {
165
+ const item = applyTransform(itemInstance, [
166
+ preRequestHandler,
167
+ sanitize(fieldsToSend),
168
+ ({ payload, schema, ...rest }) => ({
169
+ payload,
170
+ schema,
171
+ ...camelToSnake(doNotConvertKeys)(rest),
172
+ }),
173
+ ]);
174
+ try {
175
+ const response = await flowService.updateRoutingSchema(id, item);
176
+ return applyTransform(response.data, [
177
+ ({ payload, schema, ...rest }) => ({
178
+ payload,
179
+ schema,
180
+ ...snakeToCamel(doNotConvertKeys)(rest),
181
+ }),
182
+ ]);
183
+ } catch (err) {
184
+ throw applyTransform(err, [
185
+
186
+ notify,
187
+ ]);
188
+ }
189
+ };
190
+
191
+ const deleteFlow = async ({ id }) => {
192
+ try {
193
+ const response = await flowService.deleteRoutingSchema(id);
194
+ return applyTransform(response.data, []);
195
+ } catch (err) {
196
+ throw applyTransform(err, [
197
+
198
+ notify,
199
+ ]);
200
+ }
201
+ };
202
+
203
+ const getFlowsLookup = (params) => getFlowList({
204
+ ...params,
205
+ fields: params.fields || ['id', 'name', 'type'],
206
+ });
207
+
208
+ const getFlowTags = async (params) => {
209
+ const {
210
+ page,
211
+ size,
212
+ search,
213
+ sort,
214
+ fields,
215
+ ids,
216
+ } = applyTransform(params, [
217
+ merge(getDefaultGetParams()),
218
+ starToSearch(),
219
+ camelToSnake(doNotConvertKeys),
220
+ ]);
221
+ try {
222
+ const response = await flowService.searchRoutingSchemaTags(
223
+ page,
224
+ size,
225
+ search,
226
+ sort,
227
+ fields,
228
+ ids,
229
+ );
230
+ const { items, next } = applyTransform(response.data, [
231
+ snakeToCamel(doNotConvertKeys),
232
+ merge(getDefaultGetListResponse()),
233
+ ]);
234
+ return {
235
+ items,
236
+ next,
237
+ };
238
+ } catch (err) {
239
+ throw applyTransform(err, [
240
+
241
+ notify,
242
+ ]);
243
+ }
244
+ };
245
+
246
+ const FlowsAPI = {
247
+ getList: getFlowList,
248
+ get: getFlow,
249
+ add: addFlow,
250
+ update: updateFlow,
251
+ delete: deleteFlow,
252
+ getLookup: getFlowsLookup,
253
+ getFlowTags,
254
+ };
255
+
256
+ export default FlowsAPI;
@@ -0,0 +1,9 @@
1
+ const defaultGateway = () => ({
2
+ name: '',
3
+ usage: '',
4
+ proxy: '',
5
+ schema: {},
6
+ enable: true,
7
+ });
8
+
9
+ export default defaultGateway;
@@ -0,0 +1,12 @@
1
+ import defaultGateway from './defaultGateway';
2
+
3
+ const registerGateway = () => ({
4
+ ...defaultGateway(),
5
+ register: true,
6
+ account: '',
7
+ username: '',
8
+ expires: 600,
9
+ password: '',
10
+ });
11
+
12
+ export default registerGateway;
@@ -0,0 +1,16 @@
1
+ import defaultGateway from './defaultGateway';
2
+
3
+ const trunkingGateway = () => ({
4
+ ...defaultGateway(),
5
+ register: false,
6
+ host: '',
7
+ ipacl: [
8
+ // {
9
+ // ip: '',
10
+ // proto: 'any',
11
+ // port: null,
12
+ // },
13
+ ],
14
+ });
15
+
16
+ export default trunkingGateway;
@@ -0,0 +1,204 @@
1
+ import {
2
+ getDefaultGetListResponse,
3
+ getDefaultGetParams,
4
+ getDefaultInstance,
5
+ } from '../../defaults';
6
+ import applyTransform, {
7
+ camelToSnake,
8
+ generateUrl,
9
+ merge,
10
+ mergeEach,
11
+ notify,
12
+ sanitize,
13
+ snakeToCamel,
14
+ starToSearch,
15
+ } from '../../transformers';
16
+ import registerGateway from './defaults/registerGateway';
17
+ import trunkingGateway from './defaults/trunkingGateway';
18
+
19
+ const instance = getDefaultInstance();
20
+
21
+ const baseUrl = '/sip/gateways';
22
+
23
+ const getGatewayList = async (params) => {
24
+ const fieldsToSend = ['page', 'size', 'q', 'sort', 'fields', 'id'];
25
+
26
+ const defaultObject = {
27
+ name: '',
28
+ proxy: '',
29
+ enable: false,
30
+ };
31
+
32
+ const url = applyTransform(params, [
33
+ merge(getDefaultGetParams()),
34
+ starToSearch('search'),
35
+ (params) => ({ ...params, q: params.search }),
36
+ sanitize(fieldsToSend),
37
+ camelToSnake(),
38
+ generateUrl(baseUrl),
39
+ ]);
40
+ try {
41
+ const response = await instance.get(url);
42
+ const { items, next } = applyTransform(response.data, [
43
+ snakeToCamel(),
44
+ merge(getDefaultGetListResponse()),
45
+ ]);
46
+ return {
47
+ items: applyTransform(items, [
48
+ mergeEach(defaultObject),
49
+ ]),
50
+ next,
51
+ };
52
+ } catch (err) {
53
+ throw applyTransform(err, [
54
+
55
+ notify,
56
+ ]);
57
+ }
58
+ };
59
+
60
+ const getGateway = async ({ itemId: id }) => {
61
+ const coerceTrunkingResponse = (response) => {
62
+ const defaultIPacl = {
63
+ ip: '',
64
+ proto: 'any',
65
+ port: null,
66
+ };
67
+
68
+ const result = { ...trunkingGateway(), ...response };
69
+ result.ipacl = result.ipacl.map((acl) => (
70
+ { ...defaultIPacl, ...acl }
71
+ ));
72
+ return result;
73
+ };
74
+
75
+ const coerceRegisterResponse = (response) => {
76
+ const result = { ...registerGateway(), ...response };
77
+ return result;
78
+ };
79
+
80
+ const itemResponseHandler = (response) => {
81
+ if (response.register) return coerceRegisterResponse(response);
82
+ return coerceTrunkingResponse(response);
83
+ };
84
+
85
+ const url = `${baseUrl}/${id}`;
86
+
87
+ try {
88
+ const response = await instance.get(url);
89
+ return applyTransform(response.data, [
90
+ snakeToCamel(),
91
+ itemResponseHandler,
92
+ ]);
93
+ } catch (err) {
94
+ throw applyTransform(err, [
95
+
96
+ notify,
97
+ ]);
98
+ }
99
+ };
100
+
101
+ const fieldsToSend = [
102
+ 'name',
103
+ 'proxy',
104
+ 'id',
105
+ 'host',
106
+ 'ipacl',
107
+ 'account',
108
+ 'username',
109
+ 'expires',
110
+ 'account',
111
+ 'registrar',
112
+ 'name',
113
+ 'register',
114
+ 'password',
115
+ 'schema',
116
+ 'usage',
117
+ 'enable',
118
+ ];
119
+
120
+ const addGateway = async ({ itemInstance }) => {
121
+ const item = applyTransform(itemInstance, [
122
+ sanitize(fieldsToSend),
123
+ camelToSnake(),
124
+ ]);
125
+ try {
126
+ const response = await instance.post(baseUrl, item);
127
+ return applyTransform(response.data, [
128
+ snakeToCamel(),
129
+ ]);
130
+ } catch (err) {
131
+ throw applyTransform(err, [
132
+
133
+ notify,
134
+ ]);
135
+ }
136
+ };
137
+ const updateGateway = async ({ itemInstance, itemId: id }) => {
138
+ const item = applyTransform(itemInstance, [
139
+ sanitize(fieldsToSend),
140
+ camelToSnake(),
141
+ ]);
142
+
143
+ const url = `${baseUrl}/${id}`;
144
+ try {
145
+ const response = await instance.put(url, item);
146
+ return applyTransform(response.data, [
147
+ snakeToCamel(),
148
+ ]);
149
+ } catch (err) {
150
+ throw applyTransform(err, [
151
+
152
+ notify,
153
+ ]);
154
+ }
155
+ };
156
+
157
+ const patchGateway = async ({ changes, id }) => {
158
+ const body = applyTransform(changes, [
159
+ sanitize(fieldsToSend),
160
+ camelToSnake(),
161
+ ]);
162
+ const url = `${baseUrl}/${id}`;
163
+ try {
164
+ const response = await instance.patch(url, body);
165
+ return applyTransform(response.data, [
166
+ snakeToCamel(),
167
+ ]);
168
+ } catch (err) {
169
+ throw applyTransform(err, [
170
+
171
+ notify,
172
+ ]);
173
+ }
174
+ };
175
+
176
+ const deleteGateway = async ({ id }) => {
177
+ const url = `${baseUrl}/${id}`;
178
+ try {
179
+ const response = await instance.delete(url);
180
+ return applyTransform(response.data, []);
181
+ } catch (err) {
182
+ throw applyTransform(err, [
183
+
184
+ notify,
185
+ ]);
186
+ }
187
+ };
188
+
189
+ const getGatewaysLookup = (params) => getGatewayList({
190
+ ...params,
191
+ fields: params.fields || ['id', 'name'],
192
+ });
193
+
194
+ const GatewaysAPI = {
195
+ getList: getGatewayList,
196
+ get: getGateway,
197
+ add: addGateway,
198
+ patch: patchGateway,
199
+ update: updateGateway,
200
+ delete: deleteGateway,
201
+ getLookup: getGatewaysLookup,
202
+ };
203
+
204
+ export default GatewaysAPI;
@@ -0,0 +1,27 @@
1
+ import agents from './agents/agents';
2
+ import buckets from './buckets/buckets';
3
+ import calendars from './calendars/calendars';
4
+ import chatGateways from './chatGateways/chatGateways';
5
+ import communications from './communications/communications';
6
+ import flows from './flows/flow';
7
+ import gateways from './gateways/gateways';
8
+ import lists from './lists/blacklists';
9
+ import media from './media/media';
10
+ import queues from './queues/queues';
11
+ import roles from './roles/roles';
12
+ import users from './users/users';
13
+
14
+ export {
15
+ agents,
16
+ buckets,
17
+ calendars,
18
+ chatGateways,
19
+ communications,
20
+ flows,
21
+ gateways,
22
+ lists,
23
+ media,
24
+ queues,
25
+ roles,
26
+ users,
27
+ };
@@ -0,0 +1,144 @@
1
+ import { ListServiceApiFactory } from 'webitel-sdk';
2
+ import {
3
+ getDefaultGetListResponse,
4
+ getDefaultGetParams,
5
+ getDefaultInstance,
6
+ getDefaultOpenAPIConfig,
7
+ } from '../../defaults';
8
+ import applyTransform, {
9
+ camelToSnake,
10
+ merge, mergeEach,
11
+ notify, sanitize,
12
+ snakeToCamel,
13
+ starToSearch,
14
+ } from '../../transformers';
15
+
16
+ const instance = getDefaultInstance();
17
+ const configuration = getDefaultOpenAPIConfig();
18
+
19
+ const listService = new ListServiceApiFactory(configuration, '', instance);
20
+
21
+ const getBlacklistList = async (params) => {
22
+ const defaultObject = {
23
+ name: '',
24
+ count: 0,
25
+ };
26
+
27
+ const {
28
+ page,
29
+ size,
30
+ search,
31
+ sort,
32
+ fields,
33
+ id,
34
+ } = applyTransform(params, [
35
+ merge(getDefaultGetParams()),
36
+ starToSearch('search'),
37
+ camelToSnake(),
38
+ ]);
39
+
40
+ try {
41
+ const response = await listService.searchList(
42
+ page,
43
+ size,
44
+ search,
45
+ sort,
46
+ fields,
47
+ id,
48
+ );
49
+ const { items, next } = applyTransform(response.data, [
50
+ snakeToCamel(),
51
+ merge(getDefaultGetListResponse()),
52
+ ]);
53
+ return {
54
+ items: applyTransform(items, [
55
+ mergeEach(defaultObject),
56
+ ]),
57
+ next,
58
+ };
59
+ } catch (err) {
60
+ throw applyTransform(err, [
61
+
62
+ notify,
63
+ ]);
64
+ }
65
+ };
66
+
67
+ const getBlacklist = async ({ itemId: id }) => {
68
+ try {
69
+ const response = await listService.readList(id);
70
+ return applyTransform(response.data, [
71
+ snakeToCamel(),
72
+ ]);
73
+ } catch (err) {
74
+ throw applyTransform(err, [
75
+
76
+ notify,
77
+ ]);
78
+ }
79
+ };
80
+
81
+ const fieldsToSend = ['name', 'description'];
82
+
83
+ const addBlacklist = async ({ itemInstance }) => {
84
+ const item = applyTransform(itemInstance, [
85
+ sanitize(fieldsToSend),
86
+ camelToSnake(),
87
+ ]);
88
+ try {
89
+ const response = await listService.createList(item);
90
+ return applyTransform(response.data, [
91
+ snakeToCamel(),
92
+ ]);
93
+ } catch (err) {
94
+ throw applyTransform(err, [
95
+
96
+ notify,
97
+ ]);
98
+ }
99
+ };
100
+
101
+ const updateBlacklist = async ({ itemInstance, itemId: id }) => {
102
+ const item = applyTransform(itemInstance, [
103
+ sanitize(fieldsToSend),
104
+ camelToSnake(),
105
+ ]);
106
+ try {
107
+ const response = await listService.updateList(id, item);
108
+ return applyTransform(response.data, [
109
+ snakeToCamel(),
110
+ ]);
111
+ } catch (err) {
112
+ throw applyTransform(err, [
113
+
114
+ notify,
115
+ ]);
116
+ }
117
+ };
118
+
119
+ const deleteBlacklist = async ({ id }) => {
120
+ try {
121
+ const response = await listService.deleteList(id);
122
+ return applyTransform(response.data, []);
123
+ } catch (err) {
124
+ throw applyTransform(err, [
125
+
126
+ notify,
127
+ ]);
128
+ }
129
+ };
130
+ const getBlacklistsLookup = (params) => getBlacklistList({
131
+ ...params,
132
+ fields: params.fields || ['id', 'name'],
133
+ });
134
+
135
+ const BlacklistsAPI = {
136
+ getList: getBlacklistList,
137
+ get: getBlacklist,
138
+ add: addBlacklist,
139
+ update: updateBlacklist,
140
+ delete: deleteBlacklist,
141
+ getLookup: getBlacklistsLookup,
142
+ };
143
+
144
+ export default BlacklistsAPI;