Request Transformers
Transformers are pure functions which receive data and return transformed data.
applyTransform
Apply transform functions to passed data.
js
import applyTransform from '@webitel/ui-sdk/src/api/transformers';
const result = applyTransform(data, [
() => {},
// ...
]);camelToSnake
Convert camelCase to snake_case.
js
import { camelToSnake } from '@webitel/ui-sdk/src/api/transformers';
// => camel_case
camelToSnake('camelCase');snakeToCamel
Convert snake_case to camelCase.
js
import { snakeToCamel } from '@webitel/ui-sdk/src/api/transformers';
// => snakeCase
snakeToCamel('snake_case');generateUrl
Generate URL from passed params.
js
import { generateUrl } from '@webitel/ui-sdk/src/api/transformers';
const base = '/base';
// => /base?q1=v1&q2=v2
generateUrl(base)({ q1: 'v1', q2: 'v2' });addQueryParamsToUrl
Add query parameters to the URL.
js
import { addQueryParamsToUrl } from '@webitel/ui-sdk/src/api/transformers';
const url = 'api_url/base?page=1&page=2';
const queryArray = ['q=test*', 'user_id=2'];
// => api_url/base?page=1&page=2&q=test*&user_id=2
addQueryParamsToUrl(queryArray)(url);log
Log passed data.
js
import { log } from '@webitel/ui-sdk/src/api/transformers';
// => console.log('message'), returns 'message'
log('message');merge
Merge passed data.
js
import { merge } from '@webitel/ui-sdk/src/api/transformers';
const base = {
value: 'value',
};
const data = {
value2: 'value2',
};
// => { value: 'value', value2: 'value2' }
merge(base)(data);mergeEach
Merge each item of passed data.
js
import { mergeEach } from '@webitel/ui-sdk/src/api/transformers';
const base = {
value: 'value',
};
const data = [
{
value2: 'value2',
},
{
value3: 'value3',
},
];
// => [{ value: 'value', value2: 'value2' }, { value: 'value', value3: 'value3' }]
mergeEach(base)(data);notify
emits event to eventBus from @webitel/ui-sdk with passed data.
- If passed data is an Error, emits event with type 'error' and text from Error;
- If passed data is a Function, calls it with callback which emits event with received data.
js
import { notify } from '@webitel/ui-sdk/src/api/transformers';
// case 1
const notificationCallback = ({
// callback which actually emits event with received
callback,
}) => {
callback({ type: 'success', text: 'custom message' });
};
// => emits event; returns data;
notify(notificationCallback)(data);
// case 2
// => emits event; returns new Error('error message');
notify(new Error('error message'));sanitize
Sanitize passed data.
js
import { sanitize } from '@webitel/ui-sdk/src/api/transformers';
const fieldsToSend = ['field1', 'field2'];
// => { field1: 'value1', field2: 'value2' }
sanitize(fieldsToSend)({
field1: 'value1',
field2: 'value2',
field3: 'value3',
});starToSearch
Add * to property from passed object, if not exists.
js
import { starToSearch } from '@webitel/ui-sdk/src/api/transformers';
// => { search: 'string*' }
starToSearch('search')({ search: 'string' });
// => { search: 'string*' }
starToSearch('search')({ search: 'string*' });withContext
You can pass withContext option to pass context into transformer function as a second argument.
example:
js
const context = {
value: '1',
// ...
};
convert = () => {
return applyTransform({}, [transformSchema], {
withContext: context,
});
};How it passes context into transformer function:
js
transformer(result, withContext);That give you option to work with node context into transformer.