UNPKG

@launchdarkly/react-native-client-sdk

Version:
52 lines 1.83 kB
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