UNPKG

@segment/analytics-next

Version:

Analytics Next (aka Analytics 2.0) is the latest version of Segment’s JavaScript SDK - enabling you to send your data to any tool without having to learn, test, or use a new API every time.

65 lines (59 loc) 1.71 kB
import { CookieOptions, CookieStorage } from './cookieStorage' import { LocalStorage } from './localStorage' import { MemoryStorage } from './memoryStorage' import { isStoreTypeWithSettings } from './settings' import { StoreType, Store, InitializeStorageArgs } from './types' export * from './types' export * from './localStorage' export * from './cookieStorage' export * from './memoryStorage' export * from './universalStorage' export * from './settings' /** * Creates multiple storage systems from an array of StoreType and options * @param args StoreType and options * @returns Storage array */ export function initializeStorages(args: InitializeStorageArgs): Store[] { const storages = args.map((s) => { let type: StoreType let settings if (isStoreTypeWithSettings(s)) { type = s.name settings = s.settings } else { type = s } switch (type) { case StoreType.Cookie: return new CookieStorage(settings) case StoreType.LocalStorage: return new LocalStorage() case StoreType.Memory: return new MemoryStorage() default: throw new Error(`Unknown Store Type: ${s}`) } }) return storages } /** * Injects the CookieOptions into a the arguments for initializeStorage * @param storeTypes list of storeType * @param cookieOptions cookie Options * @returns arguments for initializeStorage */ export function applyCookieOptions( storeTypes: StoreType[], cookieOptions?: CookieOptions ): InitializeStorageArgs { return storeTypes.map((s) => { if (cookieOptions && s === StoreType.Cookie) { return { name: s, settings: cookieOptions, } } return s }) }