{"version":3,"sources":["../src/loadTernUIScript.ts"],"sourcesContent":["import type { TernSecureInstanceTreeOptions, TernSecureSDK } from '@tern-secure/types';\n\nimport { loadScript } from './loadScript';\nimport { resolveVersion } from './resolveVersion';\n\nexport type LoadTernUISCriptOptions = TernSecureInstanceTreeOptions & {\n  apiKey?: string;\n  customDomain?: string;\n  proxyUrl?: string;\n  ternUIVersion?: string;\n  sdkMetadata?: TernSecureSDK;\n  scriptHost?: string;\n  localPort?: string;\n  nonce?: string;\n};\n\nexport const loadTernUIScript = async (options?: LoadTernUISCriptOptions) => {\n  const existingScript = document.querySelector<HTMLScriptElement>('script[data-ternui-script]');\n  console.log('[TernSecure-shared] Existing script:', existingScript);\n\n  if (existingScript) {\n    return new Promise((resolve, reject) => {\n      existingScript.addEventListener('load', () => {\n        resolve(existingScript);\n      });\n\n      existingScript.addEventListener('error', error => {\n        reject(error);\n      });\n    });\n  }\n\n  if (!options?.customDomain) {\n    throw new Error(\n      'TernUI script requires a custom domain or proxy URL to be specified in options.',\n    );\n  }\n\n  return loadScript(ternUIgetScriptUrl(options), {\n    async: true,\n    //crossOrigin: undefined,\n    beforeLoad: beforeLoadWithOptions(options),\n  }).catch(error => {\n    console.error('[TernSecure] Failed to load TernUI script:', error);\n    throw new Error('Failed to load TernUI script');\n  });\n};\n\nexport const ternUIgetScriptUrl = (options: LoadTernUISCriptOptions) => {\n  const { ternUIVersion, isTernSecureDev } = options;\n  const version = resolveVersion(ternUIVersion);\n\n  if (isTernSecureDev) {\n    const localHost = process.env.TERN_UI_HOST || 'localhost';\n    const localPort = options?.localPort || process.env.TERN_UI_PORT || '4000';\n    return `http://${localHost}:${localPort}/ternsecure.browser.js`;\n    //return `http://cdn.lifesprintcare.ca/dist/ternsecure.browser.js`\n  }\n  //return `https://cdn.lifesprintcare.ca/dist/ternsecure.browser.js`\n  return `https://cdn.jsdelivr.net/npm/@tern-secure/ui@${version}/dist/ternsecure.browser.js`;\n\n  //const ternsecureCDN = options?.customDomain ||\n  //(options?.proxyUrl && new URL(options.proxyUrl).host) || 'cdn.tern-secure.com';\n  //return `${ternsecureCDN}/ternsecure.browser.js`;\n  //return `https://${ternsecureCDN}/npm/@ternsecure/tern-ui@${version}/dist/ternsecure.browser.js`;\n};\n\nconst beforeLoadWithOptions =\n  (options?: LoadTernUISCriptOptions) => (script: HTMLScriptElement) => {\n    const attributes = constructScriptAttributes(options);\n    Object.entries(attributes).forEach(([key, value]) => {\n      if (value) script.setAttribute(key, String(value));\n    });\n    console.log('[TernSecure-shared] Script attributes set:', attributes);\n  };\n\nexport const constructScriptAttributes = (options?: LoadTernUISCriptOptions) => {\n  return {\n    'data-domain': options?.customDomain || '',\n    'data-apikey': options?.apiKey || '',\n    'data-proxyUrl': options?.proxyUrl || '',\n    ...(options?.nonce ? { nonce: options.nonce } : {}),\n  };\n};\n"],"mappings":";;;;;;;;AAgBO,IAAM,mBAAmB,OAAO,YAAsC;AAC3E,QAAM,iBAAiB,SAAS,cAAiC,4BAA4B;AAC7F,UAAQ,IAAI,wCAAwC,cAAc;AAElE,MAAI,gBAAgB;AAClB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,qBAAe,iBAAiB,QAAQ,MAAM;AAC5C,gBAAQ,cAAc;AAAA,MACxB,CAAC;AAED,qBAAe,iBAAiB,SAAS,WAAS;AAChD,eAAO,KAAK;AAAA,MACd,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAEA,MAAI,EAAC,mCAAS,eAAc;AAC1B,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO,WAAW,mBAAmB,OAAO,GAAG;AAAA,IAC7C,OAAO;AAAA;AAAA,IAEP,YAAY,sBAAsB,OAAO;AAAA,EAC3C,CAAC,EAAE,MAAM,WAAS;AAChB,YAAQ,MAAM,8CAA8C,KAAK;AACjE,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD,CAAC;AACH;AAEO,IAAM,qBAAqB,CAAC,YAAqC;AACtE,QAAM,EAAE,eAAe,gBAAgB,IAAI;AAC3C,QAAM,UAAU,eAAe,aAAa;AAE5C,MAAI,iBAAiB;AACnB,UAAM,YAAY,QAAQ,IAAI,gBAAgB;AAC9C,UAAM,aAAY,mCAAS,cAAa,QAAQ,IAAI,gBAAgB;AACpE,WAAO,UAAU,SAAS,IAAI,SAAS;AAAA,EAEzC;AAEA,SAAO,gDAAgD,OAAO;AAMhE;AAEA,IAAM,wBACJ,CAAC,YAAsC,CAAC,WAA8B;AACpE,QAAM,aAAa,0BAA0B,OAAO;AACpD,SAAO,QAAQ,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACnD,QAAI,MAAO,QAAO,aAAa,KAAK,OAAO,KAAK,CAAC;AAAA,EACnD,CAAC;AACD,UAAQ,IAAI,8CAA8C,UAAU;AACtE;AAEK,IAAM,4BAA4B,CAAC,YAAsC;AAC9E,SAAO;AAAA,IACL,gBAAe,mCAAS,iBAAgB;AAAA,IACxC,gBAAe,mCAAS,WAAU;AAAA,IAClC,kBAAiB,mCAAS,aAAY;AAAA,IACtC,IAAI,mCAAS,SAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,EACnD;AACF;","names":[]}