@optimizely/optimizely-sdk
Version:
JavaScript SDK for Optimizely X Full Stack
45 lines (38 loc) • 2.31 kB
text/typescript
/****************************************************************************
* Copyright 2017, 2020, Optimizely, Inc. and contributors *
* *
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. *
* You may obtain a copy of the License at *
* *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and *
* limitations under the License. *
***************************************************************************/
/**
* Provides utility method for validating that the given user profile service implementation is valid.
*/
import { sprintf } from '@optimizely/js-sdk-utils';
import { ERROR_MESSAGES } from '../enums';
const MODULE_NAME = 'USER_PROFILE_SERVICE_VALIDATOR';
/**
* Validates user's provided user profile service instance
* @param {unknown} userProfileServiceInstance
* @return {boolean} true if the instance is valid
* @throws If the instance is not valid
*/
export function validate(userProfileServiceInstance: unknown): boolean {
if (typeof userProfileServiceInstance === 'object' && userProfileServiceInstance !== null) {
if (typeof userProfileServiceInstance['lookup'] !== 'function') {
throw new Error(sprintf(ERROR_MESSAGES.INVALID_USER_PROFILE_SERVICE, MODULE_NAME, "Missing function 'lookup'"));
} else if (typeof userProfileServiceInstance['save'] !== 'function') {
throw new Error(sprintf(ERROR_MESSAGES.INVALID_USER_PROFILE_SERVICE, MODULE_NAME, "Missing function 'save'"));
}
return true;
}
throw new Error(sprintf(ERROR_MESSAGES.INVALID_USER_PROFILE_SERVICE, MODULE_NAME));
}