{"version":3,"file":"index.cjs","sources":["../src/lib/load-userorbit.ts","../src/index.ts"],"sourcesContent":["/*\n  eslint-disable no-console --\n  * Required for logging errors\n*/\nimport { type Result } from \"@userorbit/types/error-handlers\";\n\nlet isInitializing = false;\nlet isInitialized = false;\n\n// Load the SDK, return the result\nconst loadUserorbitSDK = async (cdnHostParam: string): Promise<Result<void>> => {\n  if (!window.userorbit) {\n    const scriptTag = document.createElement(\"script\");\n    scriptTag.type = \"text/javascript\";\n    scriptTag.src = `${cdnHostParam}/userorbit.umd.cjs`;\n    scriptTag.async = true;\n\n    const getUserorbit = async (): Promise<void> =>\n      new Promise<void>((resolve, reject) => {\n        const timeoutId = setTimeout(() => {\n          reject(new Error(`Userorbit SDK loading timed out`));\n        }, 10000);\n        scriptTag.onload = () => {\n          clearTimeout(timeoutId);\n          resolve();\n        };\n        scriptTag.onerror = () => {\n          clearTimeout(timeoutId);\n          reject(new Error(`Failed to load Userorbit SDK`));\n        };\n      });\n\n    document.head.appendChild(scriptTag);\n\n    try {\n      await getUserorbit();\n      return { ok: true, data: undefined };\n    } catch (error) {\n      const err = error as { message?: string };\n\n      return {\n        ok: false,\n        error: new Error(err.message ?? `Failed to load Userorbit SDK`),\n      };\n    }\n  }\n\n  return { ok: true, data: undefined };\n};\n\nconst functionsToProcess: { prop: string; args: unknown[] }[] = [];\n\nexport const loadUserorbitToProxy = async (prop: string, ...args: unknown[]): Promise<void> => {\n  // all of this should happen when not initialized:\n  if (!isInitialized) {\n    if (prop === \"init\") {\n      if (isInitializing) {\n        console.warn(\"🧱 Userorbit - Warning: Userorbit is already initializing.\");\n        return;\n      }\n\n      // reset the initialization state\n      isInitializing = true;\n\n      const cdnHost = (args[0] as { cdnHost: string }).cdnHost || \"https://cdn.userorbit.com\";\n      const loadSDKResult = await loadUserorbitSDK(cdnHost);\n\n      if (loadSDKResult.ok) {\n        if (window.userorbit) {\n          const initFn = window.userorbit.init as (...args: unknown[]) => unknown;\n          void initFn(...args);\n\n          isInitializing = false;\n          isInitialized = true;\n\n          // process the queued functions\n          for (const { prop: functionProp, args: functionArgs } of functionsToProcess) {\n            type UserorbitProp = keyof typeof window.userorbit;\n\n            if (typeof window.userorbit[functionProp as UserorbitProp] !== \"function\") {\n              console.error(`🧱 Userorbit - Error: Method ${functionProp} does not exist on userorbit`);\n              continue;\n            }\n            const fn = window.userorbit[functionProp as UserorbitProp] as (...args: unknown[]) => unknown;\n            fn(...functionArgs);\n          }\n        }\n      }\n    } else {\n      console.warn(\n        \"🧱 Userorbit - Warning: Userorbit not initialized. This method will be queued and executed after initialization.\",\n      );\n\n      functionsToProcess.push({ prop, args });\n    }\n  } else if (window.userorbit) {\n    type Userorbit = typeof window.userorbit;\n    type FunctionProp = keyof Userorbit;\n    const functionPropTyped = prop as FunctionProp;\n    const fn = window.userorbit[functionPropTyped] as (...args: unknown[]) => unknown;\n\n    await fn(...args);\n  }\n};\n","import { type TUserorbitApp, type OpenWidgetOptions } from \"userorbit-js-core\";\nimport { loadUserorbitToProxy } from \"./lib/load-userorbit\";\n\ndeclare global {\n  interface Window {\n    userorbit: TUserorbitApp | undefined;\n  }\n}\n\nfunction createProxyMethod<K extends keyof TUserorbitApp>(prop: K): TUserorbitApp[K] {\n  return ((...args: Parameters<TUserorbitApp[K]>) => {\n    return loadUserorbitToProxy(prop as string, ...args);\n  }) as TUserorbitApp[K];\n}\n\nconst userorbitProxyHandler: ProxyHandler<TUserorbitApp> = {\n  get<T extends keyof TUserorbitApp>(_target: TUserorbitApp, prop: T, _receiver: TUserorbitApp): TUserorbitApp[T] {\n    return createProxyMethod(prop);\n  },\n};\n\nconst userorbitApp: TUserorbitApp = new Proxy({} as TUserorbitApp, userorbitProxyHandler);\n\nexport type { OpenWidgetOptions };\nexport type { TUserorbitApp };\n\n// eslint-disable-next-line import/no-default-export -- Required for UMD\nexport default userorbitApp;\n"],"names":["isInitializing","isInitialized","functionsToProcess","loadUserorbitToProxy","async","prop","args","window","userorbit","functionPropTyped","fn","console","warn","cdnHost","cdnHostParam","scriptTag","document","createElement","type","src","getUserorbit","Promise","resolve","reject","timeoutId","setTimeout","Error","onload","clearTimeout","onerror","head","appendChild","ok","data","error","message","loadUserorbitSDK","initFn","init","functionProp","functionArgs","push","userorbitApp","Proxy","get","_target","_receiver","createProxyMethod"],"mappings":"aAMA,IAAIA,GAAiB,EACjBC,GAAgB,EAGpB,MAwCMC,EAA0D,GAEnDC,EAAuBC,MAAOC,KAAiBC,KAE1D,GAAKL,GAyCL,GAAWM,OAAOC,UAAW,CAG3B,MAAMC,EAAoBJ,EACpBK,EAAKH,OAAOC,UAAUC,SAEtBC,KAAMJ,EACd,OA/CE,GAAa,SAATD,EAAiB,CACnB,GAAIL,EAEF,YADAW,QAAQC,KAAK,8DAKfZ,GAAiB,EAEjB,MAAMa,EAAWP,EAAK,GAA2BO,SAAW,4BAG5D,SAzDmBT,OAAOU,IAC9B,IAAKP,OAAOC,UAAW,CACrB,MAAMO,EAAYC,SAASC,cAAc,UACzCF,EAAUG,KAAO,kBACjBH,EAAUI,IAAM,GAAGL,sBACnBC,EAAUX,OAAQ,EAElB,MAAMgB,EAAehB,SACnB,IAAIiB,SAAc,CAACC,EAASC,KAC1B,MAAMC,EAAYC,YAAW,KAC3BF,EAAO,IAAIG,MAAM,mCAAkC,GAClD,KACHX,EAAUY,OAAS,KACjBC,aAAaJ,GACbF,GAAA,EAEFP,EAAUc,QAAU,KAClBD,aAAaJ,GACbD,EAAO,IAAIG,MAAM,gCAA+B,CAClD,IAGJV,SAASc,KAAKC,YAAYhB,GAE1B,IAEE,aADMK,IACC,CAAEY,IAAI,EAAMC,UAAM,EAC3B,OAASC,GAGP,MAAO,CACLF,IAAI,EACJE,MAAO,IAAIR,MAJDQ,EAIWC,SAAW,gCAEpC,CACF,CAEA,MAAO,CAAEH,IAAI,EAAMC,UAAM,EAAA,EAkBOG,CAAiBvB,IAE3BmB,IACZzB,OAAOC,UAAW,EAEf6B,EADU9B,OAAOC,UAAU8B,SACjBhC,GAEfN,GAAiB,EACjBC,GAAgB,EAGhB,IAAA,MAAaI,KAAMkC,EAAcjC,KAAMkC,KAAkBtC,EAAoB,CAG3E,GAA+D,mBAApDK,OAAOC,UAAU+B,GAA+C,CACzE5B,QAAQuB,MAAM,gCAAgCK,iCAC9C,QACF,EAEA7B,EADWH,OAAOC,UAAU+B,OACtBC,EACR,CACF,CAEJ,MACE7B,QAAQC,KACN,oHAGFV,EAAmBuC,KAAK,CAAEpC,OAAMC,QASpC,ECvFF,MAMMoC,EAA8B,IAAIC,MAAM,CAAA,EANa,CACzDC,IAAA,CAAmCC,EAAwBxC,EAASyC,IAPtE,SAA0DzC,GACxD,MAAQ,IAAIC,IACHH,EAAqBE,KAAmBC,EAEnD,CAIWyC,CAAkB1C"}