@lableb/javascript-sdk
Version:
Lableb cloud search client for javascript
54 lines (40 loc) • 2.01 kB
text/typescript
import * as yup from 'yup';
import { MESSAGES } from '../../config/messages';
import { BaseRequestParams, OptionalBaseRequestParams } from '../../types';
import { isValidDocumentIdForYup, isValidIPAddress, validateSessionIdGenerator } from '../../utils';
import { GlobalRequestOptions } from './main.request.type';
// @ts-ignore
export const optionalBaseRequestSchema: yup.SchemaOf<OptionalBaseRequestParams> = yup.object()
.shape({
sessionId: yup.string().optional(),
userId: yup.string().optional().test('test-id', MESSAGES.INVALID_USER_ID, isValidDocumentIdForYup),
userIp: yup.string().optional().test('test-ip', MESSAGES.INVALID_IP_ADDRESS, isValidIPAddress),
userCountry: yup.string().length(2, MESSAGES.COUNTRY_NAME_LENGTH_IS_INVALID).optional().uppercase(),
sessionIdGenerator: yup.mixed().test('test-type', MESSAGES.SESSION_ID_GENERATOR_TYPE_ERROR, validateSessionIdGenerator)
});
// @ts-ignore
export const mainRequestSchema: yup.SchemaOf<GlobalRequestOptions> =
optionalBaseRequestSchema.concat(
// @ts-ignore
yup.object()
.shape({
APIKey: yup.string().optional(),
indexingAPIKey: yup.string().optional(),
platformName: yup.string().optional(),
indexName: yup.string().optional(),
searchHandler: yup.string().optional(),
autocompleteHandler: yup.string().optional(),
recommendHandler: yup.string().optional(),
})
);
// @ts-ignore
export const baseRequestSchema: yup.SchemaOf<BaseRequestParams> =
optionalBaseRequestSchema.concat(
yup.object()
.shape({
platformName: yup.string().required(MESSAGES.PLATFORM_NAME_IS_REQUIRED),
indexName: yup.string().required(MESSAGES.INDEX_NAME_IS_REQUIRED),
indexingAPIKey: yup.string().optional(),
APIKey: yup.string().optional(),
})
);