{"version":3,"sources":["../src/normalization.ts"],"names":["safeIntlSupported"],"mappings":";;;;;AAEA,IAAM,sBAAA,GAAyB,eAAA;AAUxB,SAAS,kBAAkB,QAAA,EAA6C;AAC7E,EAAA,IAAI,CAAC,UAAU,OAAO,KAAA;AACtB,EAAA,MAAM,WAAW,QAAA,CAAS,OAAA,CAAQ,sBAAA,EAAwB,EAAE,EAAE,IAAA,EAAK;AACnE,EAAA,OAAO,QAAA,IAAY,KAAA;AACrB;AAGO,SAAS,oBAAoB,QAAA,EAA2B;AAC7D,EAAA,IAAI,CAACA,qCAAA,EAAkB,EAAG,OAAO,IAAA;AACjC,EAAA,IAAI;AACF,IAAA,IAAA,CAAK,cAAA,CAAe,KAAA,CAAA,EAAW,EAAE,QAAA,EAAU,CAAA;AAC3C,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAMO,SAAS,YAAA,CAAa,QAAA,EAAqC,QAAA,GAAW,KAAA,EAAe;AAC1F,EAAA,MAAM,EAAA,GAAK,kBAAkB,QAAQ,CAAA;AACrC,EAAA,IAAI,mBAAA,CAAoB,EAAE,CAAA,EAAG,OAAO,EAAA;AACpC,EAAA,OAAA,CAAQ,IAAA;AAAA,IACN,uCAAuC,MAAA,CAAO,QAAQ,CAAC,CAAA,gBAAA,EAAmB,EAAE,uBAAuB,QAAQ,CAAA;AAAA,GAC7G;AACA,EAAA,OAAO,QAAA;AACT;AASO,SAAS,sBAAsB,QAAA,EAA6C;AACjF,EAAA,OAAO,aAAa,QAAQ,CAAA;AAC9B","file":"normalization.cjs","sourcesContent":["import { safeIntlSupported } from \"@multisystemsuite/timezone-engine-utils\";\n\nconst DISPLAY_SUFFIX_PATTERN = /\\s*\\(.*\\)\\s*$/;\n\n/**\n * Strip any display suffix from a timezone string and return a bare IANA id.\n *\n * @example\n * normalizeTimezone(\"America/New_York (GMT-5:00)\") // \"America/New_York\"\n * normalizeTimezone(\"Asia/Kolkata (GMT+5:30)\")     // \"Asia/Kolkata\"\n * normalizeTimezone(\"\")                            // \"UTC\"\n */\nexport function normalizeTimezone(timeZone: string | null | undefined): string {\n  if (!timeZone) return \"UTC\";\n  const stripped = timeZone.replace(DISPLAY_SUFFIX_PATTERN, \"\").trim();\n  return stripped || \"UTC\";\n}\n\n/** Validate a bare IANA timezone id using the runtime Intl implementation */\nexport function isValidIanaTimezone(timeZone: string): boolean {\n  if (!safeIntlSupported()) return true;\n  try {\n    Intl.DateTimeFormat(undefined, { timeZone });\n    return true;\n  } catch {\n    return false;\n  }\n}\n\n/**\n * Normalise and validate in one step. Returns the IANA id if valid,\n * otherwise returns the fallback and logs a warning.\n */\nexport function safeTimezone(timeZone: string | null | undefined, fallback = \"UTC\"): string {\n  const tz = normalizeTimezone(timeZone);\n  if (isValidIanaTimezone(tz)) return tz;\n  console.warn(\n    `[timezone-engine] Invalid timezone \"${String(timeZone)}\" (normalised: \"${tz}\"), falling back to ${fallback}`,\n  );\n  return fallback;\n}\n\n/**\n * Sanitise a timezone value before saving it to the database.\n * Strips any display suffix so only the bare IANA id is persisted.\n *\n * @example\n * site.TimeZone = sanitizeTimezoneForDB(req.body.TimeZone);\n */\nexport function sanitizeTimezoneForDB(timeZone: string | null | undefined): string {\n  return safeTimezone(timeZone);\n}\n"]}