UNPKG

@v4fire/client

Version:

V4Fire client core library

55 lines (45 loc) 1.14 kB
/*! * V4Fire Client Core * https://github.com/V4Fire/Client * * Released under the MIT license * https://github.com/V4Fire/Client/blob/master/LICENSE */ /** * [[include:core/abt/README.md]] * @packageDocumentation */ import state from 'core/component/state'; import adapter from 'core/abt/engines'; import { emitter } from 'core/abt/const'; import type { ExperimentsSet } from 'core/abt/interface'; export * from 'core/abt/const'; export * from 'core/abt/interface'; /** * Saves the specified ABT options * * @param opts * @emits `set(config:` [[ExperimentsSet]]`)` * @emits `clear(config:` [[ExperimentsSet]]`)` */ export default async function saveABT(opts: unknown): Promise<void> { let config = <CanPromise<CanUndef<ExperimentsSet>>>adapter(opts); if (Object.isPromise(config)) { try { config = await config; } catch (err) { stderr(err); config = undefined; } } if (Object.isArray(config)) { if (!Object.fastCompare(state.experiments, config)) { state.experiments = config; emitter.emit('set', config); } } else { state.experiments = []; emitter.emit('clear', config); } }