{"version":3,"sources":["../../src/setup/index.ts"],"sourcesContent":["import type { Environment, Platform, ThirdPartyTracker, TrackTags } from '../track/types';\nimport type { ThirdPartyUserSetter, Visitor } from '../visitor/types';\n\nexport interface Storage {\n  getItem: (key: string) => string | null;\n  setItem: (key: string, value: string) => void;\n}\n\nexport interface Options {\n  release: string;\n  storage: Storage;\n  endpoint: string;\n  platform: Platform;\n  environment: Environment;\n  getTags: () => TrackTags | Promise<TrackTags>;\n  getDeviceId: () => string | Promise<string>;\n  getHeaders?: () => Record<string, string> | Promise<Record<string, string>>;\n  thirdPartyTrackers?: ThirdPartyTracker[];\n  thirdPartyUserSetters?: ThirdPartyUserSetter[];\n}\n\ninterface Config {\n  release: string;\n  endpoint: string;\n  storage: Storage;\n  platform: Platform;\n  environment: Environment;\n  getTags: () => TrackTags | Promise<TrackTags>;\n  getDeviceId: () => string | Promise<string>;\n  getHeaders: () => Record<string, string> | Promise<Record<string, string>>;\n  thirdPartyTrackers: ThirdPartyTracker[];\n  thirdPartyUserSetters: ThirdPartyUserSetter[];\n}\n\ninterface Cache {\n  tags: TrackTags | null;\n  visitor: Visitor | null;\n}\n\nexport const cache: Cache = {\n  tags: null,\n  visitor: null,\n};\n\n// oxlint-disable typescript/no-non-null-assertion\nexport const config: Config = {\n  endpoint: '',\n  release: '0.0.0',\n  storage: null!,\n  platform: null!,\n  environment: null!,\n  getTags: null!,\n  getDeviceId: null!,\n  getHeaders: null!,\n  thirdPartyTrackers: [],\n  thirdPartyUserSetters: [],\n};\n// oxlint-enable typescript/no-non-null-assertion\n\nexport function setupAnalytics(init: Options) {\n  config.release = init.release;\n  config.storage = init.storage;\n  config.platform = init.platform;\n  config.environment = init.environment;\n  config.endpoint = init.endpoint.endsWith('/') ? init.endpoint.slice(0, -1) : init.endpoint;\n  config.getTags = init.getTags;\n  config.getDeviceId = init.getDeviceId;\n  config.getHeaders = async () => ({\n    'Content-Type': 'application/json',\n    ...(await init.getHeaders?.()),\n  });\n  config.thirdPartyTrackers = init.thirdPartyTrackers ?? [];\n  config.thirdPartyUserSetters = init.thirdPartyUserSetters ?? [];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuCO,IAAM,QAAe;AAAA,EAC1B,MAAM;AAAA,EACN,SAAS;AACX;AAGO,IAAM,SAAiB;AAAA,EAC5B,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,UAAU;AAAA,EACV,aAAa;AAAA,EACb,SAAS;AAAA,EACT,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,oBAAoB,CAAC;AAAA,EACrB,uBAAuB,CAAC;AAC1B;AAGO,SAAS,eAAe,MAAe;AAC5C,SAAO,UAAU,KAAK;AACtB,SAAO,UAAU,KAAK;AACtB,SAAO,WAAW,KAAK;AACvB,SAAO,cAAc,KAAK;AAC1B,SAAO,WAAW,KAAK,SAAS,SAAS,GAAG,IAAI,KAAK,SAAS,MAAM,GAAG,EAAE,IAAI,KAAK;AAClF,SAAO,UAAU,KAAK;AACtB,SAAO,cAAc,KAAK;AAC1B,SAAO,aAAa,YAAS;AAnE/B;AAmEmC;AAAA,MAC/B,gBAAgB;AAAA,MAChB,GAAI,QAAM,UAAK,eAAL;AAAA,IACZ;AAAA;AACA,SAAO,qBAAqB,KAAK,sBAAsB,CAAC;AACxD,SAAO,wBAAwB,KAAK,yBAAyB,CAAC;AAChE;","names":[]}