@webitel/api-services 1.0.16 → 1.0.18

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webitel/api-services",
3
- "version": "1.0.16",
3
+ "version": "1.0.18",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -204,7 +204,11 @@ const updateFieldsToSend = [
204
204
 
205
205
  const sanitizeManagers = (itemInstance: ApiParams) => {
206
206
  // handle many managers and even no managers field cases
207
- const managers = (itemInstance.managers || []).filter(
207
+ const list = Array.isArray(itemInstance.managers)
208
+ ? itemInstance.managers
209
+ : (itemInstance.managers?.data ?? []);
210
+
211
+ const managers = list.filter(
208
212
  ({
209
213
  user,
210
214
  }: {
@@ -221,7 +225,11 @@ const sanitizeManagers = (itemInstance: ApiParams) => {
221
225
 
222
226
  const sanitizeTimezones = (itemInstance: ApiParams) => {
223
227
  // handle many timezones and even no timezones field cases
224
- const timezones = (itemInstance.timezones || []).filter(
228
+ const list = Array.isArray(itemInstance.timezones)
229
+ ? itemInstance.timezones
230
+ : (itemInstance.timezones?.data ?? []);
231
+
232
+ const timezones = list.filter(
225
233
  ({
226
234
  timezone,
227
235
  }: {
@@ -238,7 +246,14 @@ const sanitizeTimezones = (itemInstance: ApiParams) => {
238
246
 
239
247
  const sanitizeGroups = (itemInstance: ApiParams) => {
240
248
  // handle many groups and even no groups field cases
241
- const groups = (itemInstance.groups || []).map((item: ApiParams) => ({
249
+ if (!Array.isArray(itemInstance.groups)) {
250
+ return {
251
+ ...itemInstance,
252
+ groups: itemInstance.groups?.data ?? [],
253
+ };
254
+ }
255
+
256
+ const groups = itemInstance.groups.map((item: ApiParams) => ({
242
257
  group: item,
243
258
  }));
244
259
  return {
@@ -247,6 +262,28 @@ const sanitizeGroups = (itemInstance: ApiParams) => {
247
262
  };
248
263
  };
249
264
 
265
+ const flatListFields = [
266
+ 'labels',
267
+ 'phones',
268
+ 'emails',
269
+ 'imclients',
270
+ 'variables',
271
+ ] as const;
272
+
273
+ const sanitizeListFields = (itemInstance: ApiParams) => {
274
+ const patch: ApiParams = {};
275
+ for (const field of flatListFields) {
276
+ const value = itemInstance[field];
277
+ if (value && !Array.isArray(value)) {
278
+ patch[field] = value.data ?? [];
279
+ }
280
+ }
281
+ return {
282
+ ...itemInstance,
283
+ ...patch,
284
+ };
285
+ };
286
+
250
287
  const add = async ({ itemInstance }: AddItemParams) => {
251
288
  // `name`/`managers[].user`/`timezones[].timezone`/`groups[].group` are
252
289
  // expected already in the shape `ContactsInputContact` declares (e.g.
@@ -257,6 +294,7 @@ const add = async ({ itemInstance }: AddItemParams) => {
257
294
  sanitizeManagers,
258
295
  sanitizeTimezones,
259
296
  sanitizeGroups,
297
+ sanitizeListFields,
260
298
  sanitizeToWire(createFieldsToSend),
261
299
  ]);
262
300
  try {
@@ -279,6 +317,7 @@ const update = async ({ itemInstance }: AddItemParams) => {
279
317
  sanitizeManagers,
280
318
  sanitizeTimezones,
281
319
  sanitizeGroups,
320
+ sanitizeListFields,
282
321
  sanitizeToWire(updateFieldsToSend),
283
322
  ]);
284
323
  try {
@@ -5,7 +5,7 @@ import type { ZodShape } from '../types';
5
5
  export const contactSchema = z.object<ZodShape<WebitelContactsContact>>({
6
6
  name: z
7
7
  .object({
8
- commonName: z.string().optional(),
8
+ commonName: z.string().min(1),
9
9
  })
10
10
  .passthrough()
11
11
  .optional(),