@launchdarkly/react-native-client-sdk
Version:
React Native LaunchDarkly SDK
52 lines • 1.83 kB
JavaScript
import { OptionMessages, TypeValidators, } from '@launchdarkly/js-client-sdk-common';
class ConnectionModeValidator {
is(u) {
return u === 'offline' || u === 'streaming' || u === 'polling';
}
getType() {
return 'ConnectionMode (offline | streaming | polling)';
}
}
const optDefaults = {
runInBackground: false,
automaticNetworkHandling: true,
automaticBackgroundHandling: true,
storage: undefined,
initialConnectionMode: 'streaming',
plugins: [],
};
const validators = {
runInBackground: TypeValidators.Boolean,
automaticNetworkHandling: TypeValidators.Boolean,
automaticBackgroundHandling: TypeValidators.Boolean,
storage: TypeValidators.Object,
initialConnectionMode: new ConnectionModeValidator(),
plugins: TypeValidators.createTypeArray('LDPlugin[]', {}),
};
export function filterToBaseOptions(opts) {
const baseOptions = Object.assign({}, opts);
// Remove any RN specific configuration keys so we don't get warnings from
// the base implementation for unknown configuration.
Object.keys(optDefaults).forEach((key) => {
delete baseOptions[key];
});
return baseOptions;
}
export default function validateOptions(opts, logger) {
const output = Object.assign({}, optDefaults);
Object.entries(validators).forEach((entry) => {
const [key, validator] = entry;
const value = opts[key];
if (value !== undefined) {
if (validator.is(value)) {
// @ts-ignore The type inference has some problems here.
output[key] = value;
}
else {
logger.warn(OptionMessages.wrongOptionType(key, validator.getType(), typeof value));
}
}
});
return output;
}
//# sourceMappingURL=options.js.map