{"version":3,"file":"auto.mjs","names":[],"sources":["../src/auto.ts"],"sourcesContent":["import { createEmbed, getClickId, init, reset } from \"./index\";\nimport type { RefportTrackingOptions, RefportTrackingResult } from \"./types\";\n\ninterface RefportAutoGlobal {\n  createEmbed: typeof createEmbed;\n  getClickId: typeof getClickId;\n  init: typeof init;\n  reset: typeof reset;\n  result: RefportTrackingResult;\n}\n\ndeclare global {\n  interface Window {\n    Refport?: RefportAutoGlobal;\n    _refport?: RefportAutoGlobal;\n  }\n}\n\nfunction parseBoolean(value: string | undefined): boolean | undefined {\n  if (value === undefined) {\n    return undefined;\n  }\n\n  if (value === \"true\") {\n    return true;\n  }\n\n  if (value === \"false\") {\n    return false;\n  }\n\n  return undefined;\n}\n\nfunction parseNumber(value: string | undefined): number | undefined {\n  if (value === undefined) {\n    return undefined;\n  }\n\n  const parsed = Number(value);\n  return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction parseCookieOptions(\n  value: string | undefined\n): Partial<RefportTrackingOptions> {\n  if (value === undefined) {\n    return {};\n  }\n\n  try {\n    const parsed: unknown = JSON.parse(value);\n    if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n      return {};\n    }\n\n    const cookieOptions = parsed as Record<string, unknown>;\n    const options: Partial<RefportTrackingOptions> = {};\n\n    if (typeof cookieOptions.domain === \"string\") {\n      options.domain = cookieOptions.domain;\n    }\n    if (typeof cookieOptions.path === \"string\") {\n      options.path = cookieOptions.path;\n    }\n    if (typeof cookieOptions.maxAge === \"number\") {\n      options.maxAge = cookieOptions.maxAge;\n    }\n    if (typeof cookieOptions.expiresInDays === \"number\") {\n      options.maxAge = cookieOptions.expiresInDays * 24 * 60 * 60;\n    }\n    if (\n      cookieOptions.sameSite === \"Strict\" ||\n      cookieOptions.sameSite === \"Lax\" ||\n      cookieOptions.sameSite === \"None\"\n    ) {\n      options.sameSite = cookieOptions.sameSite;\n    }\n    if (typeof cookieOptions.secure === \"boolean\") {\n      options.secure = cookieOptions.secure;\n    }\n\n    return options;\n  } catch {\n    return {};\n  }\n}\n\nfunction firstAvailableQueryParam(params: string[]): string | undefined {\n  const [fallback] = params;\n  if (typeof window === \"undefined\") {\n    return fallback;\n  }\n\n  const searchParams = new URLSearchParams(window.location.search);\n  return params.find((param) => searchParams.has(param)) ?? fallback;\n}\n\nfunction parseQueryParam(dataset: DOMStringMap): string | undefined {\n  if (dataset.queryParam) {\n    return dataset.queryParam;\n  }\n\n  if (dataset.queryParams) {\n    try {\n      const parsed: unknown = JSON.parse(dataset.queryParams);\n      if (Array.isArray(parsed)) {\n        return firstAvailableQueryParam(\n          parsed.filter(\n            (param): param is string =>\n              typeof param === \"string\" && param.length > 0\n          )\n        );\n      }\n    } catch {\n      return firstAvailableQueryParam(\n        dataset.queryParams\n          .split(\",\")\n          .map((param) => param.trim())\n          .filter((param) => param.length > 0)\n      );\n    }\n  }\n\n  return dataset.paramName;\n}\n\nfunction optionsFromCurrentScript(): RefportTrackingOptions {\n  if (typeof document === \"undefined\") {\n    return {};\n  }\n\n  const script = document.currentScript;\n  if (!(script instanceof HTMLScriptElement)) {\n    return {};\n  }\n\n  const { dataset } = script;\n  const options: RefportTrackingOptions = parseCookieOptions(\n    dataset.cookieOptions\n  );\n  const cleanUrl = parseBoolean(dataset.cleanUrl);\n  const domain = dataset.cookieDomain ?? dataset.domain;\n  const maxAge = parseNumber(dataset.maxAge);\n  const paramName = parseQueryParam(dataset);\n  const path = dataset.cookiePath ?? dataset.path;\n  const secure = parseBoolean(dataset.secure);\n\n  if (cleanUrl !== undefined) {\n    options.cleanUrl = cleanUrl;\n  }\n  if (dataset.cookieName) {\n    options.cookieName = dataset.cookieName;\n  }\n  if (domain) {\n    options.domain = domain;\n  }\n  if (maxAge !== undefined) {\n    options.maxAge = maxAge;\n  }\n  if (paramName) {\n    options.paramName = paramName;\n  }\n  if (path) {\n    options.path = path;\n  }\n  if (\n    dataset.sameSite === \"Strict\" ||\n    dataset.sameSite === \"Lax\" ||\n    dataset.sameSite === \"None\"\n  ) {\n    options.sameSite = dataset.sameSite;\n  }\n  if (secure !== undefined) {\n    options.secure = secure;\n  }\n\n  return options;\n}\n\nconst options = optionsFromCurrentScript();\nconst result = init(options);\nconst refport = { createEmbed, getClickId, init, reset, result };\n\nif (typeof window !== \"undefined\") {\n  window.Refport = refport;\n  window._refport = refport;\n}\n\nexport { createEmbed, getClickId, init, reset, result };\n"],"mappings":"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"}