@webitel/ui-sdk/src/api ➡️ @webitel/api-services
Differences and Migration
IMPORTANT
TLDR; @webitel/ui-sdk/src/api is deprecated, use @webitel/api-services.
CAUTION
Use relative paths inside @webitel/api-services, бо наєбнеться.
General
.js -> .ts
Merge with default object
Більше такого не робимо. Тепер це розрулюватиметься на рівні стора карточки. На крайній, юзаємо Zod-схему
import {CreateSourceBody} from "@webitel/api-services/gen-wire";
import {getDefaultsFromZodSchema} from '@webitel/api-services/gen/utils';
const defaultObject = {
name: '',
enabled: false,
};
const defaultObject = getDefaultsFromZodSchema(CreateSourceBody); API Clients
Usage is same, but the import path has changed.
Imports
// crm: the-contacts.vue
import ContactAPI from '@webitel/ui-sdk/src/api/clients/crm/ContactAPI';
import { ContactAPI } from '@webitel/api-services/api'; Transformers
Imports
// @webitel/api-services/api/clients: SomeServiceAPI.ts
import applyTransform, {
sanitize,
} from '@webitel/ui-sdk/src/api/transformers';
import { applyTransform, sanitize } from '@webitel/api-services/api/transformers'; CAUTION
applyTransform becomes a named export, not a default one.
sanitize.transformer
Use generated Zod objects and getShallowFieldsToSendFromZodSchema to dynamically get fieldsToSend
import { CreateSourceBody } from '@webitel/api-services/gen-wire';
import { getShallowFieldsToSendFromZodSchema } from '@webitel/api-services/gen/utils';
const fieldsToSend = ['id', 'name'];
const fieldsToSend = getShallowFieldsToSendFromZodSchema(CreateSourceBody);
// ... sanitize(fieldsToSend);merge.transformer
See "Merge with default object" Section
Defaults
NOTE
Наразі використовуємо наші старі дефолти. Треба додумати, як їх замінити на генеровані з Zod-схем.
Imports
// crm
import { getDefaultGetListResponse, getDefaultGetParams } from '@webitel/ui-sdk/src/api/defaults';
import { getDefaultGetListResponse, getDefaultGetParams } from '@webitel/api-services/api/defaults'; Next
Тут описую своє бачення, на чому закінчую роботу, і куди хотілося б розвивати це далі.
Коли вичистимо імпорти з
ui-sdk/src/api, треба буде там все зачистити і лишити тільки websocket.Також, хотілося б замінити хардкод дефолти та конвертацію кейсів на Zod-схеми. Але то треба сидіти ще, думати. Не певен щодо цього.