wisetrack 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/LICENSE +5 -0
  2. package/README.md +128 -0
  3. package/dist/cdn/constants/constants.d.ts +20 -0
  4. package/dist/cdn/constants/endpoints.d.ts +11 -0
  5. package/dist/cdn/constants/environments.d.ts +25 -0
  6. package/dist/cdn/core/caching/queue-data.d.ts +25 -0
  7. package/dist/cdn/core/caching/request-queue-manager.d.ts +54 -0
  8. package/dist/cdn/core/fields/event-fields-builder.d.ts +8 -0
  9. package/dist/cdn/core/fields/fields-builder.d.ts +9 -0
  10. package/dist/cdn/core/network/api-client.d.ts +9 -0
  11. package/dist/cdn/core/network/network-error.d.ts +17 -0
  12. package/dist/cdn/core/network/network-manager.d.ts +22 -0
  13. package/dist/cdn/core/network/retry-policy.d.ts +8 -0
  14. package/dist/cdn/core/storage/storage-manager.d.ts +52 -0
  15. package/dist/cdn/core/wisetrack.d.ts +125 -0
  16. package/dist/cdn/core/wt-tracker.d.ts +25 -0
  17. package/dist/cdn/index.d.ts +4 -0
  18. package/dist/cdn/sdk.bundle.js +3604 -0
  19. package/dist/cdn/sdk.bundle.js.map +1 -0
  20. package/dist/cdn/sdk.bundle.min.js +1 -0
  21. package/dist/cdn/types/config/initial-config.d.ts +43 -0
  22. package/dist/cdn/types/config/wt-app-settings.d.ts +15 -0
  23. package/dist/cdn/types/config/wt-config.d.ts +18 -0
  24. package/dist/cdn/types/event/revenue-currency.d.ts +39 -0
  25. package/dist/cdn/types/event/wt-event.d.ts +94 -0
  26. package/dist/cdn/utils/activity-ticker.d.ts +12 -0
  27. package/dist/cdn/utils/country-finder.d.ts +9 -0
  28. package/dist/cdn/utils/crypto-helper.d.ts +4 -0
  29. package/dist/cdn/utils/device-detector.d.ts +41 -0
  30. package/dist/cdn/utils/logger.d.ts +36 -0
  31. package/dist/cdn/utils/storage-support.d.ts +16 -0
  32. package/dist/cdn/utils/utils.d.ts +5 -0
  33. package/dist/cdn/utils/webgl-fingerprint.d.ts +7 -0
  34. package/dist/cjs/constants/constants.d.ts +20 -0
  35. package/dist/cjs/constants/endpoints.d.ts +11 -0
  36. package/dist/cjs/constants/environments.d.ts +25 -0
  37. package/dist/cjs/core/caching/queue-data.d.ts +25 -0
  38. package/dist/cjs/core/caching/request-queue-manager.d.ts +54 -0
  39. package/dist/cjs/core/fields/event-fields-builder.d.ts +8 -0
  40. package/dist/cjs/core/fields/fields-builder.d.ts +9 -0
  41. package/dist/cjs/core/network/api-client.d.ts +9 -0
  42. package/dist/cjs/core/network/network-error.d.ts +17 -0
  43. package/dist/cjs/core/network/network-manager.d.ts +22 -0
  44. package/dist/cjs/core/network/retry-policy.d.ts +8 -0
  45. package/dist/cjs/core/storage/storage-manager.d.ts +52 -0
  46. package/dist/cjs/core/wisetrack.d.ts +125 -0
  47. package/dist/cjs/core/wt-tracker.d.ts +25 -0
  48. package/dist/cjs/index.d.ts +4 -0
  49. package/dist/cjs/index.js +3599 -0
  50. package/dist/cjs/index.js.map +1 -0
  51. package/dist/cjs/types/config/initial-config.d.ts +43 -0
  52. package/dist/cjs/types/config/wt-app-settings.d.ts +15 -0
  53. package/dist/cjs/types/config/wt-config.d.ts +18 -0
  54. package/dist/cjs/types/event/revenue-currency.d.ts +39 -0
  55. package/dist/cjs/types/event/wt-event.d.ts +94 -0
  56. package/dist/cjs/utils/activity-ticker.d.ts +12 -0
  57. package/dist/cjs/utils/country-finder.d.ts +9 -0
  58. package/dist/cjs/utils/crypto-helper.d.ts +4 -0
  59. package/dist/cjs/utils/device-detector.d.ts +41 -0
  60. package/dist/cjs/utils/logger.d.ts +36 -0
  61. package/dist/cjs/utils/storage-support.d.ts +16 -0
  62. package/dist/cjs/utils/utils.d.ts +5 -0
  63. package/dist/cjs/utils/webgl-fingerprint.d.ts +7 -0
  64. package/dist/constants/constants.d.ts +20 -0
  65. package/dist/constants/constants.js +19 -0
  66. package/dist/constants/constants.js.map +1 -0
  67. package/dist/constants/endpoints.d.ts +11 -0
  68. package/dist/constants/endpoints.js +10 -0
  69. package/dist/constants/endpoints.js.map +1 -0
  70. package/dist/constants/environments.d.ts +25 -0
  71. package/dist/constants/environments.js +37 -0
  72. package/dist/constants/environments.js.map +1 -0
  73. package/dist/core/caching/queue-data.d.ts +25 -0
  74. package/dist/core/caching/queue-data.js +50 -0
  75. package/dist/core/caching/queue-data.js.map +1 -0
  76. package/dist/core/caching/request-queue-manager.d.ts +54 -0
  77. package/dist/core/caching/request-queue-manager.js +333 -0
  78. package/dist/core/caching/request-queue-manager.js.map +1 -0
  79. package/dist/core/fields/event-fields-builder.d.ts +8 -0
  80. package/dist/core/fields/event-fields-builder.js +29 -0
  81. package/dist/core/fields/event-fields-builder.js.map +1 -0
  82. package/dist/core/fields/fields-builder.d.ts +9 -0
  83. package/dist/core/fields/fields-builder.js +120 -0
  84. package/dist/core/fields/fields-builder.js.map +1 -0
  85. package/dist/core/network/api-client.d.ts +9 -0
  86. package/dist/core/network/api-client.js +88 -0
  87. package/dist/core/network/api-client.js.map +1 -0
  88. package/dist/core/network/network-error.d.ts +17 -0
  89. package/dist/core/network/network-error.js +35 -0
  90. package/dist/core/network/network-error.js.map +1 -0
  91. package/dist/core/network/network-manager.d.ts +22 -0
  92. package/dist/core/network/network-manager.js +72 -0
  93. package/dist/core/network/network-manager.js.map +1 -0
  94. package/dist/core/network/retry-policy.d.ts +8 -0
  95. package/dist/core/network/retry-policy.js +26 -0
  96. package/dist/core/network/retry-policy.js.map +1 -0
  97. package/dist/core/storage/storage-manager.d.ts +52 -0
  98. package/dist/core/storage/storage-manager.js +221 -0
  99. package/dist/core/storage/storage-manager.js.map +1 -0
  100. package/dist/core/wisetrack.d.ts +125 -0
  101. package/dist/core/wisetrack.js +277 -0
  102. package/dist/core/wisetrack.js.map +1 -0
  103. package/dist/core/wt-tracker.d.ts +25 -0
  104. package/dist/core/wt-tracker.js +239 -0
  105. package/dist/core/wt-tracker.js.map +1 -0
  106. package/dist/esm/constants/constants.d.ts +20 -0
  107. package/dist/esm/constants/endpoints.d.ts +11 -0
  108. package/dist/esm/constants/environments.d.ts +25 -0
  109. package/dist/esm/core/caching/queue-data.d.ts +25 -0
  110. package/dist/esm/core/caching/request-queue-manager.d.ts +54 -0
  111. package/dist/esm/core/fields/event-fields-builder.d.ts +8 -0
  112. package/dist/esm/core/fields/fields-builder.d.ts +9 -0
  113. package/dist/esm/core/network/api-client.d.ts +9 -0
  114. package/dist/esm/core/network/network-error.d.ts +17 -0
  115. package/dist/esm/core/network/network-manager.d.ts +22 -0
  116. package/dist/esm/core/network/retry-policy.d.ts +8 -0
  117. package/dist/esm/core/storage/storage-manager.d.ts +52 -0
  118. package/dist/esm/core/wisetrack.d.ts +125 -0
  119. package/dist/esm/core/wt-tracker.d.ts +25 -0
  120. package/dist/esm/index.d.ts +4 -0
  121. package/dist/esm/index.js +3594 -0
  122. package/dist/esm/index.js.map +1 -0
  123. package/dist/esm/types/config/initial-config.d.ts +43 -0
  124. package/dist/esm/types/config/wt-app-settings.d.ts +15 -0
  125. package/dist/esm/types/config/wt-config.d.ts +18 -0
  126. package/dist/esm/types/event/revenue-currency.d.ts +39 -0
  127. package/dist/esm/types/event/wt-event.d.ts +94 -0
  128. package/dist/esm/utils/activity-ticker.d.ts +12 -0
  129. package/dist/esm/utils/country-finder.d.ts +9 -0
  130. package/dist/esm/utils/crypto-helper.d.ts +4 -0
  131. package/dist/esm/utils/device-detector.d.ts +41 -0
  132. package/dist/esm/utils/logger.d.ts +36 -0
  133. package/dist/esm/utils/storage-support.d.ts +16 -0
  134. package/dist/esm/utils/utils.d.ts +5 -0
  135. package/dist/esm/utils/webgl-fingerprint.d.ts +7 -0
  136. package/dist/index.d.ts +4 -0
  137. package/dist/index.js +4 -0
  138. package/dist/index.js.map +1 -0
  139. package/dist/types/config/initial-config.d.ts +43 -0
  140. package/dist/types/config/initial-config.js +2 -0
  141. package/dist/types/config/initial-config.js.map +1 -0
  142. package/dist/types/config/wt-app-settings.d.ts +15 -0
  143. package/dist/types/config/wt-app-settings.js +25 -0
  144. package/dist/types/config/wt-app-settings.js.map +1 -0
  145. package/dist/types/config/wt-config.d.ts +18 -0
  146. package/dist/types/config/wt-config.js +28 -0
  147. package/dist/types/config/wt-config.js.map +1 -0
  148. package/dist/types/event/revenue-currency.d.ts +39 -0
  149. package/dist/types/event/revenue-currency.js +39 -0
  150. package/dist/types/event/revenue-currency.js.map +1 -0
  151. package/dist/types/event/wt-event.d.ts +94 -0
  152. package/dist/types/event/wt-event.js +93 -0
  153. package/dist/types/event/wt-event.js.map +1 -0
  154. package/dist/utils/activity-ticker.d.ts +12 -0
  155. package/dist/utils/activity-ticker.js +37 -0
  156. package/dist/utils/activity-ticker.js.map +1 -0
  157. package/dist/utils/country-finder.d.ts +9 -0
  158. package/dist/utils/country-finder.js +71 -0
  159. package/dist/utils/country-finder.js.map +1 -0
  160. package/dist/utils/crypto-helper.d.ts +4 -0
  161. package/dist/utils/crypto-helper.js +7 -0
  162. package/dist/utils/crypto-helper.js.map +1 -0
  163. package/dist/utils/device-detector.d.ts +41 -0
  164. package/dist/utils/device-detector.js +101 -0
  165. package/dist/utils/device-detector.js.map +1 -0
  166. package/dist/utils/logger.d.ts +36 -0
  167. package/dist/utils/logger.js +84 -0
  168. package/dist/utils/logger.js.map +1 -0
  169. package/dist/utils/storage-support.d.ts +16 -0
  170. package/dist/utils/storage-support.js +86 -0
  171. package/dist/utils/storage-support.js.map +1 -0
  172. package/dist/utils/utils.d.ts +5 -0
  173. package/dist/utils/utils.js +95 -0
  174. package/dist/utils/utils.js.map +1 -0
  175. package/dist/utils/webgl-fingerprint.d.ts +7 -0
  176. package/dist/utils/webgl-fingerprint.js +100 -0
  177. package/dist/utils/webgl-fingerprint.js.map +1 -0
  178. package/package.json +71 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.bundle.js","sources":["../../src/constants/constants.ts","../../src/constants/environments.ts","../../src/constants/endpoints.ts","../../src/types/config/wt-app-settings.ts","../../src/types/config/wt-config.ts","../../src/utils/logger.ts","../../src/core/storage/storage-manager.ts","../../src/core/network/network-error.ts","../../src/core/network/retry-policy.ts","../../src/core/network/network-manager.ts","../../src/core/network/api-client.ts","../../src/utils/activity-ticker.ts","../../src/utils/country-finder.ts","../../src/utils/crypto-helper.ts","../../src/core/caching/queue-data.ts","../../src/core/caching/request-queue-manager.ts","../../node_modules/ua-parser-js/src/main/ua-parser.mjs","../../src/utils/device-detector.ts","../../src/utils/storage-support.ts","../../src/utils/utils.ts","../../src/utils/webgl-fingerprint.ts","../../src/core/fields/fields-builder.ts","../../src/core/fields/event-fields-builder.ts","../../src/core/wt-tracker.ts","../../src/core/wisetrack.ts","../../src/types/event/wt-event.ts"],"sourcesContent":["import { WTLogLevel } from \"../utils/logger\";\nimport { WTSDKEnvironment } from \"./environments\";\n\n/** @internal */\nexport const WTConstants = {\n SDK: {\n HASH: \"997bfbb583c1245a426a53dc1899ec779ff354f9\",\n PLATFORM: \"web\",\n VERSION: \"2.0.0\",\n },\n \n CONFIG: {\n BASE_URL: \"https://config.wisetrack.io\",\n DEFAULT_ENVIRONMENT: \"debug\" as WTSDKEnvironment,\n },\n \n DEFAULTS: {\n LOG_LEVEL: \"debug\" as WTLogLevel,\n SESSION_INTERVAL: '1800000', // 30 minutes\n SUBSESSION_INTERVAL: '300000', // 5 minutes\n PARAMETERS_VALUE: undefined as string | undefined,\n },\n} as const;","import { WTConstants } from \"./constants\";\n\n/**\n * Defines the user environment in which the SDK is running.\n * \n * - `SANDBOX`: Use this for testing and development.\n * - `PRODUCTION`: Use this for production deployment.\n */\nexport const WTUserEnvironment = {\n SANDBOX: \"sandbox\",\n PRODUCTION: \"production\",\n} as const;\n\nexport type WTUserEnvironment =\n (typeof WTUserEnvironment)[keyof typeof WTUserEnvironment];\n\n/** @internal */\nexport const WTSDKEnvironment = {\n DEBUG: \"debug\",\n STAGE: \"stage\",\n PRODUCTION: \"production\",\n} as const;\n\n/** @internal */\nexport type WTSDKEnvironment =\n (typeof WTSDKEnvironment)[keyof typeof WTSDKEnvironment];\n\n/** @internal */\nexport const EnvironmentUtils = {\n sdkEnvironment: WTConstants.CONFIG.DEFAULT_ENVIRONMENT as WTSDKEnvironment,\n\n needAppSettings(): boolean {\n return this.sdkEnvironment !== WTSDKEnvironment.PRODUCTION;\n },\n\n baseUrl(): string {\n switch (this.sdkEnvironment) {\n case WTSDKEnvironment.DEBUG:\n return \"https://core.debug.wisetrackdev.ir\";\n case WTSDKEnvironment.STAGE:\n return \"https://core.stage.wisetrackdev.ir\";\n case WTSDKEnvironment.PRODUCTION:\n return \"https://core.wisetrack.io\";\n default:\n throw new Error(`Unknown environment: ${this.sdkEnvironment}`);\n }\n },\n};\n","/** @internal */\nexport const WTEndpoints = {\n EVENTS: \"/api/v1/events\",\n SESSIONS: \"/api/v1/sessions\",\n SDK_CLICKS: \"/api/v1/sdk_clicks\",\n SDK_INFOS: \"/api/v1/sdk_infos\",\n ATTRIBUTIONS: \"/api/v1/attributions\",\n APP_SETTINGS: \"/api/v1/app_settings\",\n} as const;\n\n/** @internal */\nexport type WTEndpoints = (typeof WTEndpoints)[keyof typeof WTEndpoints];\n","import { WTConstants } from \"../../constants/constants\";\nimport { WTEndpoints } from \"../../constants/endpoints\";\nimport { WTConfig } from \"./wt-config\";\n\n/** @internal */\nexport class WTAppSettings {\n events: string;\n sessions: string;\n sdkClicks: string;\n sdkInfos: string;\n attributions: string;\n\n sessionInterval: string;\n subsessionInterval: string;\n\n constructor(\n events: string,\n sessions: string,\n sdkClicks: string,\n sdkInfos: string,\n attributions: string,\n sessionInterval: string = WTConstants.DEFAULTS.SESSION_INTERVAL,\n subsessionInterval: string = WTConstants.DEFAULTS.SUBSESSION_INTERVAL\n ) {\n this.events = events;\n this.sessions = sessions;\n this.sdkClicks = sdkClicks;\n this.sdkInfos = sdkInfos;\n this.attributions = attributions;\n\n this.sessionInterval = sessionInterval;\n this.subsessionInterval = subsessionInterval;\n }\n\n static fromConfig(config: WTConfig): WTAppSettings {\n return new WTAppSettings(\n config.events!,\n config.sessions!,\n config.sdkClicks!,\n config.sdkInfos!,\n config.attributions!,\n config.sessionInterval,\n config.subsessionInterval\n );\n }\n\n static fromJson(json: any) {\n return new WTAppSettings(\n json.events,\n json.sessions,\n json.sdk_clicks,\n json.sdk_infos,\n json.attributions,\n json.session_interval ?? WTConstants.DEFAULTS.SESSION_INTERVAL,\n json.subsession_interval ?? WTConstants.DEFAULTS.SUBSESSION_INTERVAL\n );\n }\n\n static get defaultValue(): WTAppSettings {\n return new WTAppSettings(\n WTEndpoints.EVENTS,\n WTEndpoints.SESSIONS,\n WTEndpoints.SDK_CLICKS,\n WTEndpoints.SDK_INFOS,\n WTEndpoints.ATTRIBUTIONS,\n WTConstants.DEFAULTS.SESSION_INTERVAL,\n WTConstants.DEFAULTS.SUBSESSION_INTERVAL\n );\n }\n}\n","import { WTConstants } from \"../../constants/constants\";\nimport { WTEndpoints } from \"../../constants/endpoints\";\nimport { EnvironmentUtils } from \"../../constants/environments\";\n\n/** @internal */\nexport class WTConfig {\n baseUrl: string;\n events?: string;\n sessions?: string;\n sdkClicks?: string;\n sdkInfos?: string;\n attributions?: string;\n appSettings?: string;\n\n sdkEnabled: boolean;\n forceUpdate: boolean;\n sdkUpdate: boolean;\n\n sessionInterval: string;\n subsessionInterval: string;\n\n constructor(\n baseUrl: string,\n events?: string,\n sessions?: string,\n sdkClicks?: string,\n sdkInfos?: string,\n attributions?: string,\n appSettings?: string,\n sdkEnabled: boolean = true,\n forceUpdate: boolean = false,\n sdkUpdate: boolean = false,\n sessionInterval: string = WTConstants.DEFAULTS.SESSION_INTERVAL,\n subsessionInterval: string = WTConstants.DEFAULTS.SUBSESSION_INTERVAL\n ) {\n this.baseUrl = baseUrl;\n this.events = events;\n this.sessions = sessions;\n this.sdkClicks = sdkClicks;\n this.sdkInfos = sdkInfos;\n this.attributions = attributions;\n this.appSettings = appSettings;\n\n this.sdkEnabled = sdkEnabled;\n this.forceUpdate = forceUpdate;\n this.sdkUpdate = sdkUpdate;\n\n this.sessionInterval = sessionInterval;\n this.subsessionInterval = subsessionInterval;\n }\n\n static fromJson(json: any) {\n return new WTConfig(\n json.base_url,\n json.events,\n json.sessions,\n json.sdk_clicks,\n json.sdk_infos,\n json.attributions,\n json.app_settings,\n json.sdk_enabled ?? true,\n json.force_update ?? false,\n json.sdk_update ?? false,\n json.session_interval ?? WTConstants.DEFAULTS.SESSION_INTERVAL,\n json.subsession_interval ?? WTConstants.DEFAULTS.SUBSESSION_INTERVAL\n );\n }\n\n static get defaultValue(): WTConfig {\n return new WTConfig(\n EnvironmentUtils.baseUrl(),\n WTEndpoints.EVENTS,\n WTEndpoints.SESSIONS,\n WTEndpoints.SDK_CLICKS,\n WTEndpoints.SDK_INFOS,\n WTEndpoints.ATTRIBUTIONS,\n WTEndpoints.APP_SETTINGS\n );\n }\n}\n","import { WTConstants } from \"../constants/constants\";\n\n/** @internal */\nexport abstract class WTLogEngine {\n abstract log(level: string, prefix: string, ...args: any[]): void;\n}\n\n/** @internal */\nclass ConsoleLogEngine extends WTLogEngine {\n log(level: string, prefix: string, ...args: any[]): void {\n switch (level) {\n case \"debug\":\n console.debug(prefix, ...args);\n break;\n case \"info\":\n console.info(prefix, ...args);\n break;\n case \"warn\":\n console.warn(prefix, ...args);\n break;\n case \"error\":\n console.error(prefix, ...args);\n break;\n default:\n console.log(prefix, ...args);\n break;\n }\n }\n}\n\n/**\n * Defines the available log levels for the SDK.\n * \n * - `DEBUG`: Logs everything, including debug info.\n * - `INFO`: Logs general information.\n * - `WARN`: Logs warnings.\n * - `ERROR`: Logs errors only.\n * - `NONE`: Disables logging.\n */\nexport const WTLogLevel = {\n DEBUG: \"debug\",\n INFO: \"info\",\n WARN: \"warn\",\n ERROR: \"error\",\n NONE: \"none\",\n} as const;\n\nexport type WTLogLevel = (typeof WTLogLevel)[keyof typeof WTLogLevel];\n\n/** @internal */\nexport class WTLogger {\n private static level: WTLogLevel = WTConstants.DEFAULTS.LOG_LEVEL;\n private static prefix = \"WT\";\n\n private static outputEngines: WTLogEngine[] = [new ConsoleLogEngine()];\n\n static setLevel(level: WTLogLevel) {\n this.level = level;\n }\n\n static setPrefix(prefix: string) {\n this.prefix = prefix;\n }\n\n static addOutputEngine(engine: WTLogEngine) {\n this.outputEngines.push(engine);\n }\n\n private static shouldLog(type: WTLogLevel): boolean {\n const levels: WTLogLevel[] = [\"debug\", \"info\", \"warn\", \"error\"];\n const currentIndex = levels.indexOf(this.level);\n const typeIndex = levels.indexOf(type);\n return typeIndex >= currentIndex;\n }\n\n private static log(level: WTLogLevel, ...args: any[]) {\n if (!this.shouldLog(level)) return;\n const prefix = `[${this.prefix}-${level.toUpperCase()}]`;\n for (const output of this.outputEngines) {\n output.log(level, prefix, ...args);\n }\n }\n\n static debug(...args: any[]) {\n this.log(\"debug\", ...args);\n }\n\n static info(...args: any[]) {\n this.log(\"info\", ...args);\n }\n\n static warn(...args: any[]) {\n this.log(\"warn\", ...args);\n }\n\n static error(...args: any[]) {\n this.log(\"error\", ...args);\n }\n}\n","import { WTInitialConfig } from \"../../types/config/initial-config\";\nimport { WTAppSettings } from \"../../types/config/wt-app-settings\";\nimport { WTConfig } from \"../../types/config/wt-config\";\nimport { WTLogger } from \"../../utils/logger\";\nimport { RequestRecord } from \"../caching/queue-data\";\n\nconst WTStorageKeys = {\n DEVICE_ID: \"WT.DeviceId\",\n INITIAL_DATE: \"WT.InitialDate\",\n\n INITIAL_CONFIG: \"WT.InitialConfigs\",\n CONFIG: \"WT.Configs\",\n APP_SETTINGS: \"WT.AppSettings\",\n\n SDK_CLICK_SUBMIT: \"WT.SdkClickSubmit\",\n FIRST_SESSION_SUBMIT: \"WT.FirstSessionSubmit\",\n\n SDK_ENABLED: \"WT.SdkEnabled\",\n FCM_TOKEN: \"WT.FcmToken\", // used for calling push token request\n PUSH_TOKEN: \"WT.PushToken\", // used in request param fields as \"push_token\"\n\n EVENT_COUNT: \"WT.EventCount\",\n SESSION_COUNT: \"WT.SessionCount\",\n SESSION_LENGTH: \"WT.SessionLenght\", // ACTIVE_DURATION\n SUBSESSION_COUNT: \"WT.SubSessionCount\",\n\n ACTIVE_TIME: \"WT.ActiveTime\",\n INACTIVE_TIME: \"WT.InactiveTime\",\n INACTIVE_DURATION: \"WT.InactiveDuration\",\n\n REQUEST_QUEUE: \"WT.RequestQueue\",\n PENDING_REQUEST_QUEUE: \"WT.PendingRequestQueue\",\n} as const;\n\ntype WTStorageKeys = (typeof WTStorageKeys)[keyof typeof WTStorageKeys];\n\nclass StorageManager {\n clear(): void {\n localStorage.clear();\n }\n\n private setJson<T>(key: WTStorageKeys, obj: T | null): void {\n if (!obj) {\n localStorage.removeItem(key);\n return;\n }\n try {\n const encoded = JSON.stringify(obj);\n localStorage.setItem(key, encoded);\n } catch (error) {\n WTLogger.error(`Error in encoding object for key '${key}'`, error);\n }\n }\n\n private getJson<T>(key: WTStorageKeys): T | null {\n const data = localStorage.getItem(key);\n if (!data) {\n return null;\n }\n try {\n const decoded = JSON.parse(data) as T;\n return decoded;\n } catch (error) {\n WTLogger.error(\n `Error in JSON decoding for key '${key}': ${error}`,\n error\n );\n return null;\n }\n }\n\n private optionalNumber(key: WTStorageKeys): number | null {\n const value = localStorage.getItem(key);\n if (value === null) {\n return null;\n }\n const num = Number(value);\n return isNaN(num) ? null : num;\n }\n\n private optionalBool(key: WTStorageKeys): boolean | null {\n const value = localStorage.getItem(key);\n if (value === null) {\n return null;\n }\n return value === \"true\" ? true : value === \"false\" ? false : null;\n }\n\n get deviceId(): string | null {\n return localStorage.getItem(WTStorageKeys.DEVICE_ID);\n }\n set deviceId(value: string | null) {\n if (value) {\n localStorage.setItem(WTStorageKeys.DEVICE_ID, value);\n } else {\n localStorage.removeItem(WTStorageKeys.DEVICE_ID);\n }\n }\n\n get initialDate(): string | null {\n return this.getJson(WTStorageKeys.INITIAL_DATE);\n }\n set initialDate(value: string | null) {\n this.setJson(WTStorageKeys.INITIAL_DATE, value);\n }\n\n get initialConfig(): WTInitialConfig | null {\n return this.getJson(WTStorageKeys.INITIAL_CONFIG);\n }\n set initialConfig(value: WTInitialConfig | null) {\n this.setJson(WTStorageKeys.INITIAL_CONFIG, value);\n }\n\n get config(): WTConfig | null {\n return this.getJson(WTStorageKeys.CONFIG);\n }\n set config(value: WTConfig | null) {\n this.setJson(WTStorageKeys.CONFIG, value);\n }\n\n get appSettings(): WTAppSettings | null {\n return this.getJson(WTStorageKeys.APP_SETTINGS);\n }\n set appSettings(value: WTAppSettings | null) {\n this.setJson(WTStorageKeys.APP_SETTINGS, value);\n }\n\n get sdkEnabled(): boolean {\n return this.optionalBool(WTStorageKeys.SDK_ENABLED) ?? false;\n }\n set sdkEnabled(value: boolean) {\n localStorage.setItem(WTStorageKeys.SDK_ENABLED, value.toString());\n }\n\n get sdkClickSubmit(): boolean {\n return this.optionalBool(WTStorageKeys.SDK_CLICK_SUBMIT) ?? false;\n }\n set sdkClickSubmit(value: boolean) {\n localStorage.setItem(WTStorageKeys.SDK_CLICK_SUBMIT, value.toString());\n }\n\n get firstSessionSubmit(): boolean {\n return this.optionalBool(WTStorageKeys.FIRST_SESSION_SUBMIT) ?? false;\n }\n set firstSessionSubmit(value: boolean) {\n localStorage.setItem(WTStorageKeys.FIRST_SESSION_SUBMIT, value.toString());\n }\n\n get fcmToken(): string | null {\n return localStorage.getItem(WTStorageKeys.FCM_TOKEN);\n }\n set fcmToken(value: string | null) {\n if (value) {\n localStorage.setItem(WTStorageKeys.FCM_TOKEN, value);\n } else {\n localStorage.removeItem(WTStorageKeys.FCM_TOKEN);\n }\n }\n\n get pushToken(): string | null {\n return localStorage.getItem(WTStorageKeys.PUSH_TOKEN);\n }\n set pushToken(value: string | null) {\n if (value) {\n localStorage.setItem(WTStorageKeys.PUSH_TOKEN, value);\n } else {\n localStorage.removeItem(WTStorageKeys.PUSH_TOKEN);\n }\n }\n\n get sessionCount(): number {\n return this.optionalNumber(WTStorageKeys.SESSION_COUNT) ?? 1;\n }\n set sessionCount(value: number) {\n localStorage.setItem(WTStorageKeys.SESSION_COUNT, value.toString());\n }\n\n get subSessionCount(): number {\n return this.optionalNumber(WTStorageKeys.SUBSESSION_COUNT) ?? 1;\n }\n set subSessionCount(value: number) {\n localStorage.setItem(WTStorageKeys.SUBSESSION_COUNT, value.toString());\n }\n\n get activeDuration(): number {\n return this.optionalNumber(WTStorageKeys.SESSION_LENGTH) ?? 0;\n }\n set activeDuration(value: number) {\n localStorage.setItem(WTStorageKeys.SESSION_LENGTH, value.toString());\n }\n\n get inactiveDuration(): number {\n return this.optionalNumber(WTStorageKeys.INACTIVE_DURATION) ?? 0;\n }\n set inactiveDuration(value: number) {\n localStorage.setItem(WTStorageKeys.INACTIVE_DURATION, value.toString());\n }\n\n get inactiveTime(): number | null {\n return this.optionalNumber(WTStorageKeys.ACTIVE_TIME);\n }\n set inactiveTime(value: number | null) {\n if (value !== null) {\n localStorage.setItem(WTStorageKeys.ACTIVE_TIME, value.toString());\n } else {\n localStorage.removeItem(WTStorageKeys.ACTIVE_TIME);\n }\n }\n\n get activeTime(): number | null {\n return this.optionalNumber(WTStorageKeys.INACTIVE_TIME);\n }\n set activeTime(value: number | null) {\n if (value !== null) {\n localStorage.setItem(WTStorageKeys.INACTIVE_TIME, value.toString());\n } else {\n localStorage.removeItem(WTStorageKeys.INACTIVE_TIME);\n }\n }\n\n get requestRecords(): RequestRecord[] {\n return this.getJson(WTStorageKeys.REQUEST_QUEUE) ?? [];\n }\n set requestRecords(value: RequestRecord[]) {\n this.setJson(WTStorageKeys.REQUEST_QUEUE, value);\n }\n\n get pendingRequestRecords(): RequestRecord[] {\n return this.getJson(WTStorageKeys.PENDING_REQUEST_QUEUE) ?? [];\n }\n set pendingRequestRecords(value: RequestRecord[]) {\n this.setJson(WTStorageKeys.PENDING_REQUEST_QUEUE, value);\n }\n\n get eventCount(): number {\n return this.optionalNumber(WTStorageKeys.EVENT_COUNT) ?? 0;\n }\n set eventCount(value: number) {\n localStorage.setItem(WTStorageKeys.EVENT_COUNT, value.toString());\n }\n}\n\n/** @internal */\nexport const storageManager = new StorageManager();\n","/** @internal */\nexport namespace ApiError {\n export class InvalidUrl extends Error {\n constructor(url: string) {\n super(`Invalid URL: ${url}`);\n this.name = \"InvalidUrl\";\n }\n }\n\n export class ServerError extends Error {\n constructor(public statusCode: number, public message: string) {\n super(`ServerError ${statusCode}: ${message}`);\n this.name = \"ServerError\";\n }\n }\n\n export class NetworkError extends Error {\n constructor(message: string) {\n super(`NetworkError: ${message}`);\n this.name = \"NetworkFailure\";\n }\n }\n\n export class DecodingError extends Error {\n constructor(message: string) {\n super(`DecodingError: ${message}`);\n this.name = \"DecodingError\";\n }\n }\n}\n","/** @internal */\nexport class RetryPolicy {\n constructor(\n private maxRetries: number = 3,\n private retryInterval: number = 2000 // milliseconds\n ) {}\n\n canRetry(attempt: number): boolean {\n return attempt < this.maxRetries;\n }\n\n async waitBeforeRetry(): Promise<void> {\n return new Promise((res) => setTimeout(res, this.retryInterval));\n }\n}\n","import { WTLogger } from \"../../utils/logger\";\nimport { ApiError } from \"./network-error\";\nimport { RetryPolicy } from \"./retry-policy\";\n\ntype HttpMethod = \"GET\" | \"POST\" | \"PUT\";\n\n/** @internal */\nexport interface RequestOptions {\n method?: HttpMethod;\n headers?: Record<string, string>;\n params?: Record<string, any>;\n formData?: Record<string, any>;\n retryAttempt?: number;\n}\n\n/** @internal */\nexport interface ApiResponseWrapper {\n success: boolean;\n message?: string;\n result?: any;\n}\n\n/** @internal */\nexport const networkManager = {\n retryPolicy(): RetryPolicy {\n return new RetryPolicy();\n },\n\n async sendRequest(\n endpoint: string,\n options: RequestOptions = {}\n ): Promise<ApiResponseWrapper> {\n const retryAttempt = options.retryAttempt || 1;\n\n WTLogger.debug(\n `🚀 REQUEST (${retryAttempt}) => ${options.method} ${endpoint}`\n );\n WTLogger.debug(\n \"-- PARAMETERS =>\",\n options.params || options.formData || {}\n );\n\n let body: BodyInit | undefined;\n const requestHeaders: Record<string, string> = {\n Accept: \"application/json\",\n ...options.headers,\n };\n\n if (options.formData) {\n const form = new FormData();\n for (const key in options.formData) {\n form.append(key, options.formData[key]);\n }\n body = form;\n } else if (options.params) {\n requestHeaders[\"Content-Type\"] = \"application/json\";\n body = JSON.stringify(options.params);\n }\n\n try {\n const response = await fetch(endpoint, {\n method: options.method,\n headers: requestHeaders,\n body,\n });\n\n if (!response.ok) {\n let json: ApiResponseWrapper = await response.json();\n let errorText = json.message || (await response.text());\n WTLogger.warn(`❌ API ERROR (${response.status}) =>`, errorText);\n\n throw new ApiError.ServerError(\n response.status,\n json.message || \"Server error\"\n );\n }\n\n try {\n const result: ApiResponseWrapper = await response.json();\n WTLogger.debug(\n `✅ API SUCCESS (${response.status}) =>`,\n result.message || \"Request successful\"\n );\n return result;\n } catch (error: any) {\n throw new ApiError.DecodingError(error.message || String(error));\n }\n } catch (err: any) {\n if (\n err instanceof ApiError.ServerError ||\n err instanceof ApiError.DecodingError\n ) {\n throw err;\n }\n WTLogger.error(\"Error executing request\", err);\n\n if (this.retryPolicy().canRetry(retryAttempt)) {\n await this.retryPolicy().waitBeforeRetry();\n return this.sendRequest(endpoint, {\n ...options,\n retryAttempt: retryAttempt + 1,\n });\n }\n\n throw new ApiError.NetworkError(err.message || \"Unknown error\");\n }\n },\n} as const;","import { WTConstants } from \"../../constants/constants\";\nimport { WTEndpoints } from \"../../constants/endpoints\";\nimport { EnvironmentUtils, WTSDKEnvironment } from \"../../constants/environments\";\nimport { WTAppSettings } from \"../../types/config/wt-app-settings\";\nimport { WTConfig } from \"../../types/config/wt-config\";\nimport { storageManager } from \"../storage/storage-manager\";\nimport { networkManager } from \"./network-manager\";\n\n/** @internal */\nexport const apiClient = {\n async doGetConfig(): Promise<WTConfig> {\n const initialConfig = storageManager.initialConfig;\n if (!initialConfig) {\n throw \"Initial Config is not set\";\n }\n const params = {\n app_token: initialConfig.appToken,\n app_version: initialConfig.appVersion,\n framework: initialConfig.appFrameWork,\n env: EnvironmentUtils.sdkEnvironment,\n sdk_hash: WTConstants.SDK.HASH,\n package_name: window.location.hostname,\n platform: WTConstants.SDK.PLATFORM,\n store_name: \"other\",\n };\n const response = await networkManager.sendRequest(\n WTConstants.CONFIG.BASE_URL,\n {\n method: \"POST\",\n formData: params,\n }\n );\n\n return WTConfig.fromJson(response.result!);\n },\n\n async doGetAppSettings(): Promise<WTAppSettings> {\n const initialConfig = storageManager.initialConfig;\n const wtConfig = storageManager.config;\n if (!initialConfig) throw \"Initial Config is not set\";\n if (!wtConfig) throw \"SDK Config is not set\";\n if (!wtConfig.appSettings) throw \"AppSettings Url is not set\";\n const params = {\n app_token: initialConfig.appToken,\n app_version: initialConfig.appVersion,\n framework: initialConfig.appFrameWork,\n env: EnvironmentUtils.sdkEnvironment,\n sdk_hash: WTConstants.SDK.HASH,\n package_name: window.location.hostname,\n platform: WTConstants.SDK.PLATFORM,\n store_name: \"other\",\n };\n\n const response = await networkManager.sendRequest(\n wtConfig.baseUrl + wtConfig.appSettings,\n {\n method: \"POST\",\n formData: params,\n }\n );\n return WTAppSettings.fromJson(response.result!);\n },\n\n async doCallRequest(\n endpoint: WTEndpoints,\n params: Record<string, any>\n ): Promise<boolean> {\n const initialConfig = storageManager.initialConfig;\n const wtConfig = storageManager.config;\n if (!initialConfig) throw \"Initial Config is not set\";\n if (!wtConfig) throw \"SDK Config is not set\";\n\n params.updated_at = new Date().toISOString();\n\n const response = await networkManager.sendRequest(\n wtConfig.baseUrl + endpoint,\n {\n method: \"POST\",\n params: {\n needs_response_details:\n EnvironmentUtils.sdkEnvironment != WTSDKEnvironment.PRODUCTION,\n parameters: params,\n },\n }\n );\n\n return response.success;\n },\n};\n","import { storageManager } from \"../core/storage/storage-manager\";\n// import { WTLogger } from \"./logger\";\n\nclass ActivityTicker {\n private tickerDelay = 1000;\n private isPaused = false;\n private tickerJob?: NodeJS.Timeout;\n\n start() {\n if (this.tickerJob) {\n clearInterval(this.tickerJob);\n }\n this.tickerJob = setInterval(() => {\n if (this.isPaused) return;\n if (document.hidden) return;\n if (!document.hasFocus()) return;\n\n console.log(\n `ActivityTicker: active duration= ${\n storageManager.activeDuration / 1000\n }s, inactive duration= ${storageManager.inactiveDuration / 1000}s`\n );\n storageManager.activeTime = Date.now();\n storageManager.activeDuration += this.tickerDelay;\n }, this.tickerDelay);\n }\n\n stop() {\n clearInterval(this.tickerJob);\n this.tickerJob = undefined;\n }\n\n pause() {\n this.isPaused = true;\n }\n\n resume() {\n this.isPaused = false;\n }\n}\n\n/** @internal */\nexport const activityTicker = new ActivityTicker();\n","/** @internal */\nexport class CountryFinder {\n private _country: string | null = null;\n\n async getCountryCode(): Promise<string | null> {\n if (!this._country) {\n this._country = await this.tryAllEndpoints();\n }\n return this._country;\n }\n \n private async tryAllEndpoints(): Promise<string | null> {\n const endpoints = [\n async () => {\n const res = await this.fetchWithTimeout(\"https://api.country.is\");\n if (!res.ok) throw new Error(\"country.is failed\");\n const json = await res.json();\n return json.country || null;\n },\n async () => {\n const res = await this.fetchWithTimeout(\n \"https://free.freeipapi.com/api/json\"\n );\n if (!res.ok) throw new Error(\"country.is failed\");\n const json = await res.json();\n return json.countryCode || null;\n },\n async () => {\n const res = await this.fetchWithTimeout(\"https://ipwho.is/\");\n if (!res.ok) throw new Error(\"ipwho.is failed\");\n const json = await res.json();\n return json.country_code || null;\n },\n ];\n\n for (const tryFetch of endpoints) {\n try {\n const countryCode = await tryFetch();\n if (countryCode) return countryCode;\n } catch (_) {\n // Try next API\n }\n }\n\n return null;\n }\n\n private async fetchWithTimeout(\n url: string,\n timeout = 2000\n ): Promise<Response> {\n const controller = new AbortController();\n const id = setTimeout(() => controller.abort(), timeout);\n return fetch(url, { signal: controller.signal }).finally(() =>\n clearTimeout(id)\n );\n }\n}\n\n/** @internal */\nexport const countryFinder = new CountryFinder();\n","/** @internal */\nexport const cryptoHelper = {\n generateDeviceUUID() : string {\n return crypto.randomUUID();\n }\n};","import { WTEndpoints } from \"../../constants/endpoints\";\nimport { FieldsBuilder } from \"../fields/fields-builder\";\n\n/** @internal */\nexport interface RequestRecordCreator {\n endpoint: WTEndpoints;\n fBuilder?: FieldsBuilder;\n queueType?: \"main\" | \"pending\";\n}\n\n/** @internal */\nexport class RequestRecord {\n readonly id: string;\n readonly endpoint: WTEndpoints;\n readonly parameters: Record<string, any>;\n readonly createdAt: number;\n retryCount: number = 0;\n maxRetries: number = 3;\n\n constructor(endpoint: WTEndpoints, parameters: Record<string, any>) {\n this.id = crypto.randomUUID();\n this.endpoint = endpoint;\n this.parameters = parameters;\n this.createdAt = Date.now();\n }\n}\n\n/** @internal */\nexport class Mutex {\n private locked = false;\n private waitingQueue: Array<() => void> = [];\n\n async acquire(): Promise<void> {\n return new Promise((resolve) => {\n if (!this.locked) {\n this.locked = true;\n resolve();\n } else {\n this.waitingQueue.push(resolve);\n }\n });\n }\n\n release(): void {\n if (this.waitingQueue.length > 0) {\n const next = this.waitingQueue.shift()!;\n next();\n } else {\n this.locked = false;\n }\n }\n}\n","import { WTEndpoints } from \"../../constants/endpoints\";\nimport { WTLogger } from \"../../utils/logger\";\nimport { apiClient } from \"../network/api-client\";\nimport { storageManager } from \"../storage/storage-manager\";\nimport { Mutex, RequestRecord } from \"./queue-data\";\n\n/** @internal */\nexport class RequestsQueueManager {\n private isInitialized = false;\n private isProcessing = false;\n private isCurrentlyProcessing = false;\n\n private mutex = new Mutex();\n private processingInterval: NodeJS.Timeout | null = null;\n private readonly PROCESSING_INTERVAL_MS = 100; // Check queue every 100ms\n\n // Backoff strategy properties\n private failedRequestDelay = 0;\n private readonly MAX_DELAY_MS = 30000; // 30 seconds max delay\n private readonly BACKOFF_MULTIPLIER = 2;\n private readonly BASE_DELAY_MS = 1000; // Start with 1 second\n\n constructor() {}\n\n async initialize(): Promise<void> {\n // Initialize the queue manager if needed\n this.isInitialized = true;\n if (!this.isProcessing) {\n await this.startProcessing();\n }\n }\n\n async shutdown(): Promise<void> {\n if (!this.isInitialized) {\n return; // Nothing to shutdown\n }\n\n await this.stopProcessing();\n this.isInitialized = false;\n }\n\n private async startProcessing(): Promise<void> {\n if (!this.isInitialized) {\n WTLogger.warn(\n \"Queue Manager is not initialized. Call initialize() first.\"\n );\n return;\n }\n\n await this.mutex.acquire();\n try {\n if (this.isProcessing) {\n return;\n }\n\n this.isProcessing = true;\n\n // Start the processing loop\n this.processingInterval = setInterval(async () => {\n try {\n await this.processQueues();\n } catch (error) {\n WTLogger.error(\"Error in processing loop:\", error);\n }\n }, this.PROCESSING_INTERVAL_MS);\n } finally {\n this.mutex.release();\n }\n\n // Process immediately after releasing the mutex\n await this.processQueues();\n }\n\n private async stopProcessing(): Promise<void> {\n await this.mutex.acquire();\n try {\n this.isProcessing = false;\n\n if (this.processingInterval) {\n clearInterval(this.processingInterval);\n this.processingInterval = null;\n }\n } finally {\n this.mutex.release();\n }\n }\n\n async addRequest(request: RequestRecord): Promise<void> {\n await this.mutex.acquire();\n try {\n const mainQueue = this.getMainQueue();\n mainQueue.push(request);\n this.saveMainQueue(mainQueue);\n\n // Reset delay when new request is added (optional - gives fresh chance)\n this.failedRequestDelay = 0;\n\n // Start processing if not already started\n if (!this.isProcessing) {\n // Release mutex before starting processing\n this.mutex.release();\n await this.startProcessing();\n return; // Exit early since mutex was already released\n }\n } finally {\n // Only release if we haven't already released above\n if (this.isProcessing) {\n this.mutex.release();\n }\n }\n }\n\n async addPendingRequest(request: RequestRecord): Promise<void> {\n await this.mutex.acquire();\n try {\n const mainRequestsSent = this.getMainRequestsSentFlag();\n\n if (mainRequestsSent) {\n // Main requests have been sent, add to main queue directly\n const mainQueue = this.getMainQueue();\n mainQueue.push(request);\n this.saveMainQueue(mainQueue);\n } else {\n // Main requests not sent yet, add to pending queue\n const pendingQueue = this.getPendingQueue();\n pendingQueue.push(request);\n this.savePendingQueue(pendingQueue);\n }\n\n // Reset delay when new request is added\n this.failedRequestDelay = 0;\n\n // Start processing if not already started\n if (!this.isProcessing) {\n // Release mutex before starting processing\n this.mutex.release();\n await this.startProcessing();\n return; // Exit early since mutex was already released\n }\n } finally {\n // Only release if we haven't already released above\n if (this.isProcessing) {\n this.mutex.release();\n }\n }\n }\n\n private async processQueues(): Promise<void> {\n if (!this.isProcessing || this.isCurrentlyProcessing) {\n return;\n }\n\n // Check if we're in delay period\n if (this.failedRequestDelay > 0) {\n if (Date.now() < this.failedRequestDelay) {\n return; // Still in delay period\n }\n // Delay period ended\n this.failedRequestDelay = 0;\n WTLogger.debug(\"⏰ Backoff delay ended, resuming queue processing\");\n }\n\n this.isCurrentlyProcessing = true;\n\n await this.mutex.acquire();\n try {\n await this.processMainQueue();\n await this.processPendingQueue();\n } finally {\n this.mutex.release();\n this.isCurrentlyProcessing = false;\n }\n }\n\n private async processMainQueue(): Promise<void> {\n const mainQueue = this.getMainQueue();\n\n if (mainQueue.length === 0) {\n return;\n }\n\n // Take the first request\n const request = mainQueue[0];\n\n try {\n const success = await this.sendRequest(request);\n\n if (success) {\n // Remove the processed request from queue\n mainQueue.shift();\n this.saveMainQueue(mainQueue);\n\n // Set flag that main requests have been sent\n this.postRequestCheck(request);\n\n WTLogger.debug(`✅ Request ${request.id} processed successfully`);\n } else {\n // Update retry count in the queue (not just in memory)\n mainQueue[0].retryCount++;\n\n if (mainQueue[0].retryCount >= mainQueue[0].maxRetries) {\n // Calculate backoff delay\n const delayMs = this.calculateBackoffDelay(mainQueue[0].retryCount);\n this.failedRequestDelay = Date.now() + delayMs;\n\n WTLogger.warn(\n `⏳ Request ${request.id} failed after ${request.maxRetries} attempts. ` +\n `Applying backoff delay of ${delayMs}ms`\n );\n } else {\n WTLogger.warn(\n `⚠️ Request ${request.id} failed. Retry ${mainQueue[0].retryCount}/${mainQueue[0].maxRetries}`\n );\n }\n\n // Save the updated queue with new retry count\n this.saveMainQueue(mainQueue);\n }\n } catch (error) {\n WTLogger.error(`Error sending request ${request.endpoint}:`, error);\n\n // Update retry count in storage\n mainQueue[0].retryCount++;\n\n if (mainQueue[0].retryCount >= mainQueue[0].maxRetries) {\n // Apply backoff delay instead of removing\n const delayMs = this.calculateBackoffDelay(mainQueue[0].retryCount);\n this.failedRequestDelay = Date.now() + delayMs;\n\n WTLogger.warn(\n `⏳ Request ${request.id} failed with error after ${mainQueue[0].maxRetries} attempts. ` +\n `Applying backoff delay of ${delayMs}ms`\n );\n }\n\n // Save the updated queue\n this.saveMainQueue(mainQueue);\n }\n }\n\n private calculateBackoffDelay(retryCount: number): number {\n // Exponential backoff: baseDelay * (multiplier ^ (retryCount - 1))\n const delay =\n this.BASE_DELAY_MS * Math.pow(this.BACKOFF_MULTIPLIER, retryCount - 1);\n return Math.min(delay, this.MAX_DELAY_MS);\n }\n\n private async processPendingQueue(): Promise<void> {\n const mainRequestsSent = this.getMainRequestsSentFlag();\n\n if (!mainRequestsSent) {\n return; // Main requests haven't been sent yet\n }\n\n const pendingQueue = this.getPendingQueue();\n\n if (pendingQueue.length === 0) {\n return;\n }\n\n // Move all pending requests to main queue\n const mainQueue = this.getMainQueue();\n mainQueue.push(...pendingQueue);\n\n // Clear pending queue\n this.saveMainQueue(mainQueue);\n this.savePendingQueue([]);\n\n console.log(\n `📦 Moved ${pendingQueue.length} pending requests to main queue`\n );\n }\n\n private async sendRequest(\n request: RequestRecord,\n attempt: number = 1\n ): Promise<boolean> {\n WTLogger.debug(\n `💥 Sending request (${request.endpoint}): id=${request.id}`\n );\n\n let result = false;\n\n try {\n result = await apiClient.doCallRequest(\n request.endpoint,\n request.parameters\n );\n } catch (error) {\n WTLogger.error(`❌ Request ${request.endpoint} failed`, error);\n }\n\n return result;\n }\n\n private getMainQueue(): RequestRecord[] {\n return storageManager.requestRecords;\n }\n\n private saveMainQueue(queue: RequestRecord[]): void {\n storageManager.requestRecords = queue;\n }\n\n private getPendingQueue(): RequestRecord[] {\n return storageManager.pendingRequestRecords;\n }\n\n private savePendingQueue(queue: RequestRecord[]): void {\n storageManager.pendingRequestRecords = queue;\n }\n\n private getMainRequestsSentFlag(): boolean {\n return storageManager.sdkClickSubmit;\n }\n\n private postRequestCheck(request: RequestRecord) {\n switch (request.endpoint) {\n case WTEndpoints.SDK_CLICKS:\n storageManager.sdkClickSubmit = true;\n break;\n\n case WTEndpoints.SESSIONS:\n if (storageManager.firstSessionSubmit) {\n storageManager.activeDuration = 0;\n storageManager.inactiveDuration = 0;\n storageManager.subSessionCount = 1;\n } else {\n storageManager.firstSessionSubmit = true;\n }\n break;\n\n case WTEndpoints.SDK_INFOS:\n storageManager.fcmToken = request.parameters.push_token;\n break;\n default:\n break;\n }\n }\n\n getQueueStatus(): {\n mainQueueLength: number;\n pendingQueueLength: number;\n isProcessing: boolean;\n mainRequestsSent: boolean;\n isInBackoffDelay: boolean;\n backoffEndsAt: number | null;\n } {\n return {\n mainQueueLength: this.getMainQueue().length,\n pendingQueueLength: this.getPendingQueue().length,\n isProcessing: this.isProcessing,\n mainRequestsSent: this.getMainRequestsSentFlag(),\n isInBackoffDelay:\n this.failedRequestDelay > 0 && Date.now() < this.failedRequestDelay,\n backoffEndsAt:\n this.failedRequestDelay > 0 ? this.failedRequestDelay : null,\n };\n }\n\n /**\n * Manually reset backoff delay (useful for testing or manual recovery)\n */\n resetBackoffDelay(): void {\n this.failedRequestDelay = 0;\n WTLogger.debug(\"🔄 Backoff delay manually reset\");\n }\n\n /**\n * Get current backoff delay configuration\n */\n getBackoffConfig(): {\n baseDelayMs: number;\n multiplier: number;\n maxDelayMs: number;\n } {\n return {\n baseDelayMs: this.BASE_DELAY_MS,\n multiplier: this.BACKOFF_MULTIPLIER,\n maxDelayMs: this.MAX_DELAY_MS,\n };\n }\n}\n\n/** @internal */\nexport const queueManager = new RequestsQueueManager();\n","// Generated ESM version of ua-parser-js\n// DO NOT EDIT THIS FILE!\n// Source: /src/main/ua-parser.js\n\n/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v2.0.4\n Copyright © 2012-2025 Faisal Salman <f@faisalman.com>\n AGPLv3 License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://uaparser.dev\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n/* jshint esversion: 6 */ \n/* globals window */\n\n\n \n //////////////\n // Constants\n /////////////\n\n var LIBVERSION = '2.0.4',\n UA_MAX_LENGTH = 500,\n USER_AGENT = 'user-agent',\n EMPTY = '',\n UNKNOWN = '?',\n\n // typeof\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n\n // properties\n UA_BROWSER = 'browser',\n UA_CPU = 'cpu',\n UA_DEVICE = 'device',\n UA_ENGINE = 'engine',\n UA_OS = 'os',\n UA_RESULT = 'result',\n \n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n MAJOR = 'major',\n MODEL = 'model',\n\n // device types\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n XR = 'xr',\n EMBEDDED = 'embedded',\n\n // browser types\n INAPP = 'inapp',\n\n // client hints\n BRANDS = 'brands',\n FORMFACTORS = 'formFactors',\n FULLVERLIST = 'fullVersionList',\n PLATFORM = 'platform',\n PLATFORMVER = 'platformVersion',\n BITNESS = 'bitness',\n CH_HEADER = 'sec-ch-ua',\n CH_HEADER_FULL_VER_LIST = CH_HEADER + '-full-version-list',\n CH_HEADER_ARCH = CH_HEADER + '-arch',\n CH_HEADER_BITNESS = CH_HEADER + '-' + BITNESS,\n CH_HEADER_FORM_FACTORS = CH_HEADER + '-form-factors',\n CH_HEADER_MOBILE = CH_HEADER + '-' + MOBILE,\n CH_HEADER_MODEL = CH_HEADER + '-' + MODEL,\n CH_HEADER_PLATFORM = CH_HEADER + '-' + PLATFORM,\n CH_HEADER_PLATFORM_VER = CH_HEADER_PLATFORM + '-version',\n CH_ALL_VALUES = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTORS, BITNESS],\n\n // device vendors\n AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LENOVO = 'Lenovo',\n HONOR = 'Honor',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n NVIDIA = 'Nvidia',\n ONEPLUS = 'OnePlus',\n OPPO = 'OPPO',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n\n // browsers\n CHROME = 'Chrome',\n CHROMIUM = 'Chromium',\n CHROMECAST = 'Chromecast',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n OPERA = 'Opera',\n FACEBOOK = 'Facebook',\n SOGOU = 'Sogou',\n\n PREFIX_MOBILE = 'Mobile ',\n SUFFIX_BROWSER = ' Browser',\n\n // os\n WINDOWS = 'Windows';\n \n var isWindow = typeof window !== UNDEF_TYPE,\n NAVIGATOR = (isWindow && window.navigator) ? \n window.navigator : \n undefined,\n NAVIGATOR_UADATA = (NAVIGATOR && NAVIGATOR.userAgentData) ? \n NAVIGATOR.userAgentData : \n undefined;\n\n ///////////\n // Helper\n //////////\n\n var extend = function (defaultRgx, extensions) {\n var mergedRgx = {};\n var extraRgx = extensions;\n if (!isExtensions(extensions)) {\n extraRgx = {};\n for (var i in extensions) {\n for (var j in extensions[i]) {\n extraRgx[j] = extensions[i][j].concat(extraRgx[j] ? extraRgx[j] : []);\n }\n }\n }\n for (var k in defaultRgx) {\n mergedRgx[k] = extraRgx[k] && extraRgx[k].length % 2 === 0 ? extraRgx[k].concat(defaultRgx[k]) : defaultRgx[k];\n }\n return mergedRgx;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i<arr.length; i++) {\n enums[arr[i].toUpperCase()] = arr[i];\n }\n return enums;\n },\n has = function (str1, str2) {\n if (typeof str1 === OBJ_TYPE && str1.length > 0) {\n for (var i in str1) {\n if (lowerize(str2) == lowerize(str1[i])) return true;\n }\n return false;\n }\n return isString(str1) ? lowerize(str2) == lowerize(str1) : false;\n },\n isExtensions = function (obj, deep) {\n for (var prop in obj) {\n return /^(browser|cpu|device|engine|os)$/.test(prop) || (deep ? isExtensions(obj[prop]) : false);\n }\n },\n isString = function (val) {\n return typeof val === STR_TYPE;\n },\n itemListToArray = function (header) {\n if (!header) return undefined;\n var arr = [];\n var tokens = strip(/\\\\?\\\"/g, header).split(',');\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].indexOf(';') > -1) {\n var token = trim(tokens[i]).split(';v=');\n arr[i] = { brand : token[0], version : token[1] };\n } else {\n arr[i] = trim(tokens[i]);\n }\n }\n return arr;\n },\n lowerize = function (str) {\n return isString(str) ? str.toLowerCase() : str;\n },\n majorize = function (version) {\n return isString(version) ? strip(/[^\\d\\.]/g, version).split('.')[0] : undefined;\n },\n setProps = function (arr) {\n for (var i in arr) {\n var propName = arr[i];\n if (typeof propName == OBJ_TYPE && propName.length == 2) {\n this[propName[0]] = propName[1];\n } else {\n this[propName] = undefined;\n }\n }\n return this;\n },\n strip = function (pattern, str) {\n return isString(str) ? str.replace(pattern, EMPTY) : str;\n },\n stripQuotes = function (str) {\n return strip(/\\\\?\\\"/g, str); \n },\n trim = function (str, len) {\n if (isString(str)) {\n str = strip(/^\\s\\s*/, str);\n return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n\n if(!ua || !arrays) return;\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n if (!regex[j]) { break; }\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length >= 3) {\n // Check whether q[1] FUNCTION or REGEX\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n if (q.length > 3) {\n this[q[0]] = match ? q[1].apply(this, q.slice(2)) : undefined;\n } else {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n }\n } else {\n if (q.length == 3) {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n } else if (q.length > 4) {\n this[q[0]] = match ? q[3].apply(this, [match.replace(q[1], q[2])].concat(q.slice(4))) : undefined;\n }\n }\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return map.hasOwnProperty('*') ? map['*'] : str;\n };\n\n ///////////////\n // String map\n //////////////\n\n var windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.51': '3.51',\n 'NT 4.0': '4.0',\n '2000' : ['5.0', '5.01'],\n 'XP' : ['5.1', '5.2'],\n 'Vista' : '6.0',\n '7' : '6.1',\n '8' : '6.2',\n '8.1' : '6.3',\n '10' : ['6.4', '10.0'],\n 'NT' : ''\n },\n \n formFactorsMap = {\n 'embedded' : 'Automotive',\n 'mobile' : 'Mobile',\n 'tablet' : ['Tablet', 'EInk'],\n 'smarttv' : 'TV',\n 'wearable' : 'Watch',\n 'xr' : ['VR', 'XR'],\n '?' : ['Desktop', 'Unknown'],\n '*' : undefined\n },\n\n browserHintsMap = {\n 'Chrome' : 'Google Chrome',\n 'Edge' : 'Microsoft Edge',\n 'Edge WebView2' : 'Microsoft Edge WebView2',\n 'Chrome WebView': 'Android WebView',\n 'Chrome Headless':'HeadlessChrome',\n 'Huawei Browser': 'HuaweiBrowser',\n 'MIUI Browser' : 'Miui Browser',\n 'Opera Mobi' : 'OperaMobile',\n 'Yandex' : 'YaBrowser'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var defaultRegexes = {\n\n browser : [[\n\n // Most common regardless engine\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n /webview.+edge\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, EDGE+' WebView']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i \n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i // Maxthon\n ], [VERSION, [NAME, 'Maxthon']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, \n // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n // Trident based\n /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:lg |qute)browser)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n /(heytap|ovi|115|surf)browser\\/([\\d\\.]+)/i, // HeyTap/Ovi/115/Surf\n /(ecosia|weibo)(?:__| \\w+@)([\\d\\.]+)/i // Ecosia/Weibo\n ], [NAME, VERSION], [\n /quark(?:pc)?\\/([-\\w\\.]+)/i // Quark\n ], [VERSION, [NAME, 'Quark']], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UCBrowser']], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart ' + LENOVO + SUFFIX_BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], [\n /\\bqihoobrowser\\/?([\\w\\.]*)/i // 360\n ], [VERSION, [NAME, '360']], [\n /\\b(qq)\\/([\\w\\.]+)/i // QQ\n ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, SOGOU + ' Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, SOGOU + ' Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i // QQ/2345\n ], [NAME, VERSION], [\n /(lbbrowser|rekonq)/i // LieBao Browser/Rekonq\n ], [NAME], [\n /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, // Iron\n /ome\\/([\\w\\.]+).+qihu (360)[es]e/i // 360\n ], [VERSION, NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], [\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /(daum)apps[\\/ ]([\\w\\.]+)/i, // Daum App\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(instagram|snapchat|klarna)[\\/ ]([-\\w\\.]+)/i // Instagram/Snapchat/Klarna\n ], [NAME, VERSION, [TYPE, INAPP]], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA'], [TYPE, INAPP]], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME, [TYPE, INAPP]], [\n\n /(chromium)[\\/ ]([-\\w\\.]+)/i // Chromium\n ], [NAME, VERSION], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n /wv\\).+chrome\\/([\\w\\.]+).+edgw\\//i // Edge WebView2\n ], [VERSION, [NAME, EDGE+' WebView2']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android' + SUFFIX_BROWSER]], [\n\n /chrome\\/([\\w\\.]+) mobile/i // Chrome Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile(?:\\/\\w+ | ?)safari/i // Safari Mobile\n ], [VERSION, [NAME, PREFIX_MOBILE + 'Safari']], [\n /iphone .*mobile(?:\\/\\w+ | ?)safari/i\n ], [[NAME, PREFIX_MOBILE + 'Safari']], [\n /version\\/([\\w\\.\\,]+) .*(safari)/i // Safari\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, '1']], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(?:mobile|tablet);.*(firefox)\\/([\\w\\.-]+)/i // Firefox Mobile\n ], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], [\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(wolvic|librewolf)\\/([\\w\\.]+)/i // Wolvic/LibreWolf\n ], [NAME, VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n /\\b(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, [VERSION, /_/g, '.']], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /[^\\d\\.]+./, EMPTY]]\n ],\n\n cpu : [[\n\n /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i, // IA32 (quicktime)\n /\\b((i[346]|x)86)(pc)?\\b/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?[89]e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((ppc|powerpc)(64)?)( mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n / sun4\\w[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]((?!sm-[lr]|browser)[-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Honor\n /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n /honor([-\\w ]+)[;\\)]/i\n ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n /\\b((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i, // Xiaomi Mi\n / ([\\w ]+) miui\\/v?\\d/i\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n // OnePlus\n /droid.+; (cph2[3-6]\\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\\d|p[g-k]\\w[1m]10)\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], [\n /\\b(opd2(\\d{3}a?))(?: bui|\\))/i\n ], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['203', '304', '403', '404', '413', '415'], '*' : OPPO }], [TYPE, TABLET]], [\n\n // BLU\n /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\\w\\+ ]*)(?: bui|\\))/i // Vivo series\n ], [MODEL, [VENDOR, 'BLU'], [TYPE, MOBILE]], [ \n\n // Vivo\n /; vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,\n /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [ \n /lenovo[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i\n ], [MODEL, [VENDOR, LENOVO], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ]([\\w\\s]+)(\\)| bui)/i,\n /((?:moto(?! 360)[-\\w\\(\\) ]+|xt\\d{3,4}[cgkosw\\+]?[-\\d]*|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Nokia\n /(nokia) (t[12][01])/i\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n /nokia[-_ ]?(([-\\w\\. ]*))/i\n ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n // Google\n /(pixel (c|tablet))\\b/i // Google Pixel C/Tablet\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n // Google Pixel\n /droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\\d ]*a?( pro)?( xl)?( fold)?( \\(5g\\))?)( bui|\\))/i\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n /(google) (pixelbook( go)?)/i\n ], [VENDOR, MODEL], [\n\n // Sony\n /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-\\w\\w\\d\\d)(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // TCL\n /tcl (xess p17aa)/i,\n /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n /droid [\\w\\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, MOBILE]], [\n\n // itel\n /(itel) ((\\w+))/i\n ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // Energizer\n /; (energy ?\\w+)(?: bui|\\))/i,\n /; energizer ([\\w ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n // Cat\n /; cat (b35);/i,\n /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n // Smartfren\n /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n // Nothing\n /droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i\n ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n // Archos\n /; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,\n /archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i\n ], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [\n /archos ([\\w ]+)( b|\\))/i,\n /; (ac[3-6]\\d\\w{2,8})( b|\\))/i \n ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [\n\n // HMD\n /; (n159v)/i\n ], [MODEL, [VENDOR, 'HMD'], [TYPE, MOBILE]], [\n\n // MIXED\n /(imo) (tab \\w+)/i, // IMO\n /(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i // Infinix XPad / Tecno\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Tecno/Micromax/Advan\n /; (blu|hmd|imo|infinix|lava|oneplus|tcl)[_ ]([\\w\\+ ]+?)(?: bui|\\)|; r)/i, // BLU/HMD/IMO/Infinix/Lava/OnePlus/TCL\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i // Kindle\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i // Nvidia Tablets\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(vizio)(?: |.+model\\/)(\\w+-\\w+)/i, // Vizio\n /tcast.+(lg)e?. ([-\\w]+)/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/chromecast/i // Google Chromecast Third Generation\n ], [[MODEL, CHROMECAST+' Third Generation'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey.*devicetype\\/([^/]*)/i // Google Chromecast with specific device type\n ], [[MODEL, /^/, 'Chromecast '], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /fuchsia.*crkey/i // Google Chromecast Nest Hub\n ], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast, Linux-based or unknown\n ], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /(portaltv)/i // Facebook Portal TV\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /(shield \\w+ tv)/i // Nvidia Shield TV\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mi(tv|box)-?\\w+) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, /.+\\/(\\w+)/, '$1', strMapper, {'LG':'lge'}], [MODEL, trim], [TYPE, SMARTTV]], [\n // SmartTV from Unidentified Vendors\n /droid.+; ([\\w- ]+) (?:android tv|smart[- ]?tv)/i\n ], [MODEL, [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:|large screen[\\w ]+safari)\\b/i\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(playstation \\w+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n /(ouya)/i, // Ouya\n /(nintendo) (\\w+)/i, // Nintendo\n /(retroid) (pocket ([^\\)]+))/i // Retroid Pocket\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield)( bui|\\))/i // Nvidia Portable\n ], [MODEL, [VENDOR, NVIDIA], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i // Samsung Galaxy Watch\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n /((pebble))app/i, // Pebble\n /(asus|google|lg|oppo) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i // Asus ZenWatch / LG Watch / Pixel Watch\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(ow(?:19|20)?we?[1-3]{1,3})/i // Oppo Watch\n ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /(opwwe\\d{3})/i // OnePlus Watch\n ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n /(moto 360)/i // Motorola 360\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n /(smartwatch 3)/i // Sony SmartWatch\n ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n /(g watch r)/i // LG G Watch R\n ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n ///////////////////\n // XR\n ///////////////////\n\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [\n /(pico) (4|neo3(?: link|pro)?)/i // Pico\n ], [VENDOR, MODEL, [TYPE, XR]], [\n /(quest( \\d| pro)?s?).+vr/i // Meta Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [\n /mobile vr; rv.+firefox/i // Unidentifiable VR device using Firefox Reality / Wolvic\n ], [[TYPE, XR]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n /(homepod).+mac os/i // Apple HomePod\n ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n /windows iot/i // Unidentifiable embedded device using Windows IoT\n ], [[TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+?(mobile|vr|\\d) safari/i\n ], [MODEL, [TYPE, strMapper, { 'mobile' : 'Mobile', 'xr' : 'VR', '*' : TABLET }]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /droid .+?; ([\\w\\. -]+)( bui|\\))/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /(arkweb)\\/([\\w\\.]+)/i // ArkWeb\n ], [NAME, VERSION], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n\n /\\b(libweb)/i // LibWeb\n ], [NAME, VERSION], [\n /ladybird\\//i\n ], [[NAME, 'LibWeb']], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /(windows nt) (6\\.[23]); arm/i // Windows RT\n ], [[NAME, /N/, 'R'], [VERSION, strMapper, windowsVersionMap]], [\n /(windows (?:phone|mobile|iot))(?: os)?[\\/ ]?([\\d\\.]*( se)?)/i, // Windows IoT/Mobile/Phone\n // Windows NT/3.1/95/98/ME/2000/XP/Vista/7/8/8.1/10/11\n /(windows)[\\/ ](1[01]|2000|3\\.1|7|8(\\.1)?|9[58]|me|server 20\\d\\d( r2)?|vista|xp)/i\n ], [NAME, VERSION], [\n /windows nt ?([\\d\\.\\)]*)(?!.+xbox)/i,\n /\\bwin(?=3| ?9|n)(?:nt| 9x )?([\\d\\.;]*)/i\n ], [[VERSION, /(;|\\))/g, '', strMapper, windowsVersionMap], [NAME, WINDOWS]], [\n /(windows ce)\\/?([\\d\\.]*)/i // Windows CE\n ], [NAME, VERSION], [\n\n // iOS/macOS\n /[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+(haiku|morphos))/i // Mac OS\n ], [[NAME, 'macOS'], [VERSION, /_/g, '.']], [\n\n // Google Chromecast\n /android ([\\d\\.]+).*crkey/i // Google Chromecast, Android-based\n ], [VERSION, [NAME, CHROMECAST + ' Android']], [\n /fuchsia.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Fuchsia-based\n ], [VERSION, [NAME, CHROMECAST + ' Fuchsia']], [\n /crkey\\/([\\d\\.]+).*devicetype\\/smartspeaker/i // Google Chromecast, Linux-based Smart Speaker\n ], [VERSION, [NAME, CHROMECAST + ' SmartSpeaker']], [\n /linux.*crkey\\/([\\d\\.]+)/i // Google Chromecast, Legacy Linux-based\n ], [VERSION, [NAME, CHROMECAST + ' Linux']], [\n /crkey\\/([\\d\\.]+)/i // Google Chromecast, unknown\n ], [VERSION, [NAME, CHROMECAST]], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i // Android-x86\n ], [VERSION, NAME], [ \n /(ubuntu) ([\\w\\.]+) like android/i // Ubuntu Touch\n ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n /(harmonyos)[\\/ ]?([\\d\\.]*)/i, // HarmonyOS\n // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\\w*[-\\/\\.; ]?([\\d\\.]*)/i\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i, // WebOS\n /webos(?:[ \\/]?|\\.tv-20(?=2[2-9]))(\\d[\\d\\.]*)/i\n ], [VERSION, [NAME, 'webOS']], [\n /web0s;.+?(?:chr[o0]me|safari)\\/(\\d+)/i\n // https://webostv.developer.lge.com/develop/specifications/web-api-and-web-engine\n ], [[VERSION, strMapper, {'25':'120','24':'108','23':'94','22':'87','6':'79','5':'68','4':'53','3':'38','2':'538','1':'537','*':'TV'}], [NAME, 'webOS']], [ \n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google ChromeOS\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, \"Chrome OS\"], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) (\\w+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n /(pico) .+os([\\w\\.]+)/i, // Pico\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /linux.+(mint)[\\/\\(\\) ]?([\\w\\.]*)/i, // Mint\n /(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\\d\\.]*)/i, // Mageia/VectorLinux/Fuchsia/ArcaOS/Arch\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire/Knoppix\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /\\b(aix)[; ]([1-9\\.]{0,4})/i, // AIX\n /(hurd|linux|morphos)(?: (?:arm|x86|ppc)\\w*| ?)([\\w\\.]*)/i, // Hurd/Linux/MorphOS\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) ?(r\\d)?/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\d\\.]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /\\b(beos|os\\/2|amigaos|openvms|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/OpenVMS/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Factories\n ////////////////\n\n var defaultProps = (function () {\n var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};\n setProps.call(props.init, [\n [UA_BROWSER, [NAME, VERSION, MAJOR, TYPE]],\n [UA_CPU, [ARCHITECTURE]],\n [UA_DEVICE, [TYPE, MODEL, VENDOR]],\n [UA_ENGINE, [NAME, VERSION]],\n [UA_OS, [NAME, VERSION]]\n ]);\n setProps.call(props.isIgnore, [\n [UA_BROWSER, [VERSION, MAJOR]],\n [UA_ENGINE, [VERSION]],\n [UA_OS, [VERSION]]\n ]);\n setProps.call(props.isIgnoreRgx, [\n [UA_BROWSER, / ?browser$/i],\n [UA_OS, / ?os$/i]\n ]);\n setProps.call(props.toString, [\n [UA_BROWSER, [NAME, VERSION]],\n [UA_CPU, [ARCHITECTURE]],\n [UA_DEVICE, [VENDOR, MODEL]],\n [UA_ENGINE, [NAME, VERSION]],\n [UA_OS, [NAME, VERSION]]\n ]);\n return props;\n })();\n\n var createIData = function (item, itemType) {\n\n var init_props = defaultProps.init[itemType],\n is_ignoreProps = defaultProps.isIgnore[itemType] || 0,\n is_ignoreRgx = defaultProps.isIgnoreRgx[itemType] || 0,\n toString_props = defaultProps.toString[itemType] || 0;\n\n function IData () {\n setProps.call(this, init_props);\n }\n\n IData.prototype.getItem = function () {\n return item;\n };\n\n IData.prototype.withClientHints = function () {\n\n // nodejs / non-client-hints browsers\n if (!NAVIGATOR_UADATA) {\n return item\n .parseCH()\n .get();\n }\n\n // browsers based on chromium 85+\n return NAVIGATOR_UADATA\n .getHighEntropyValues(CH_ALL_VALUES)\n .then(function (res) {\n return item\n .setCH(new UACHData(res, false))\n .parseCH()\n .get();\n });\n };\n\n IData.prototype.withFeatureCheck = function () {\n return item.detectFeature().get();\n };\n\n if (itemType != UA_RESULT) {\n IData.prototype.is = function (strToCheck) {\n var is = false;\n for (var i in this) {\n if (this.hasOwnProperty(i) && !has(is_ignoreProps, i) && lowerize(is_ignoreRgx ? strip(is_ignoreRgx, this[i]) : this[i]) == lowerize(is_ignoreRgx ? strip(is_ignoreRgx, strToCheck) : strToCheck)) {\n is = true;\n if (strToCheck != UNDEF_TYPE) break;\n } else if (strToCheck == UNDEF_TYPE && is) {\n is = !is;\n break;\n }\n }\n return is;\n };\n IData.prototype.toString = function () {\n var str = EMPTY;\n for (var i in toString_props) {\n if (typeof(this[toString_props[i]]) !== UNDEF_TYPE) {\n str += (str ? ' ' : EMPTY) + this[toString_props[i]];\n }\n }\n return str || UNDEF_TYPE;\n };\n }\n\n if (!NAVIGATOR_UADATA) {\n IData.prototype.then = function (cb) { \n var that = this;\n var IDataResolve = function () {\n for (var prop in that) {\n if (that.hasOwnProperty(prop)) {\n this[prop] = that[prop];\n }\n }\n };\n IDataResolve.prototype = {\n is : IData.prototype.is,\n toString : IData.prototype.toString\n };\n var resolveData = new IDataResolve();\n cb(resolveData);\n return resolveData;\n };\n }\n\n return new IData();\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n function UACHData (uach, isHttpUACH) {\n uach = uach || {};\n setProps.call(this, CH_ALL_VALUES);\n if (isHttpUACH) {\n setProps.call(this, [\n [BRANDS, itemListToArray(uach[CH_HEADER])],\n [FULLVERLIST, itemListToArray(uach[CH_HEADER_FULL_VER_LIST])],\n [MOBILE, /\\?1/.test(uach[CH_HEADER_MOBILE])],\n [MODEL, stripQuotes(uach[CH_HEADER_MODEL])],\n [PLATFORM, stripQuotes(uach[CH_HEADER_PLATFORM])],\n [PLATFORMVER, stripQuotes(uach[CH_HEADER_PLATFORM_VER])],\n [ARCHITECTURE, stripQuotes(uach[CH_HEADER_ARCH])],\n [FORMFACTORS, itemListToArray(uach[CH_HEADER_FORM_FACTORS])],\n [BITNESS, stripQuotes(uach[CH_HEADER_BITNESS])]\n ]);\n } else {\n for (var prop in uach) {\n if(this.hasOwnProperty(prop) && typeof uach[prop] !== UNDEF_TYPE) this[prop] = uach[prop];\n }\n }\n }\n\n function UAItem (itemType, ua, rgxMap, uaCH) {\n\n this.get = function (prop) {\n if (!prop) return this.data;\n return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;\n };\n\n this.set = function (prop, val) {\n this.data[prop] = val;\n return this;\n };\n\n this.setCH = function (ch) {\n this.uaCH = ch;\n return this;\n };\n\n this.detectFeature = function () {\n if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) {\n switch (this.itemType) {\n case UA_BROWSER:\n // Brave-specific detection\n if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == FUNC_TYPE) {\n this.set(NAME, 'Brave');\n }\n break;\n case UA_DEVICE:\n // Chrome-specific detection: check for 'mobile' value of navigator.userAgentData\n if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (this.get(MODEL) == 'Macintosh' && NAVIGATOR && typeof NAVIGATOR.standalone !== UNDEF_TYPE && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) {\n this.set(MODEL, 'iPad')\n .set(TYPE, TABLET);\n }\n break;\n case UA_OS:\n // Chrome-specific detection: check for 'platform' value of navigator.userAgentData\n if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) {\n this.set(NAME, NAVIGATOR_UADATA[PLATFORM]);\n }\n break;\n case UA_RESULT:\n var data = this.data;\n var detect = function (itemType) {\n return data[itemType]\n .getItem()\n .detectFeature()\n .get();\n };\n this.set(UA_BROWSER, detect(UA_BROWSER))\n .set(UA_CPU, detect(UA_CPU))\n .set(UA_DEVICE, detect(UA_DEVICE))\n .set(UA_ENGINE, detect(UA_ENGINE))\n .set(UA_OS, detect(UA_OS));\n }\n }\n return this;\n };\n\n this.parseUA = function () {\n if (this.itemType != UA_RESULT) {\n rgxMapper.call(this.data, this.ua, this.rgxMap);\n }\n if (this.itemType == UA_BROWSER) {\n this.set(MAJOR, majorize(this.get(VERSION)));\n }\n return this;\n };\n\n this.parseCH = function () {\n var uaCH = this.uaCH,\n rgxMap = this.rgxMap;\n \n switch (this.itemType) {\n case UA_BROWSER:\n case UA_ENGINE:\n var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName;\n if (brands) {\n for (var i in brands) {\n var brandName = brands[i].brand || brands[i],\n brandVersion = brands[i].version;\n if (this.itemType == UA_BROWSER && \n !/not.a.brand/i.test(brandName) && \n (!prevName || \n (/Chrom/.test(prevName) && brandName != CHROMIUM) || \n (prevName == EDGE && /WebView2/.test(brandName))\n )) {\n brandName = strMapper(brandName, browserHintsMap);\n prevName = this.get(NAME);\n if (!(prevName && !/Chrom/.test(prevName) && /Chrom/.test(brandName))) {\n this.set(NAME, brandName)\n .set(VERSION, brandVersion)\n .set(MAJOR, majorize(brandVersion));\n }\n prevName = brandName;\n }\n if (this.itemType == UA_ENGINE && brandName == CHROMIUM) {\n this.set(VERSION, brandVersion);\n }\n }\n }\n break;\n case UA_CPU:\n var archName = uaCH[ARCHITECTURE];\n if (archName) {\n if (archName && uaCH[BITNESS] == '64') archName += '64';\n rgxMapper.call(this.data, archName + ';', rgxMap);\n }\n break;\n case UA_DEVICE:\n if (uaCH[MOBILE]) {\n this.set(TYPE, MOBILE);\n }\n if (uaCH[MODEL]) {\n this.set(MODEL, uaCH[MODEL]);\n if (!this.get(TYPE) || !this.get(VENDOR)) {\n var reParse = {};\n rgxMapper.call(reParse, 'droid 9; ' + uaCH[MODEL] + ')', rgxMap);\n if (!this.get(TYPE) && !!reParse.type) {\n this.set(TYPE, reParse.type);\n }\n if (!this.get(VENDOR) && !!reParse.vendor) {\n this.set(VENDOR, reParse.vendor);\n }\n }\n }\n if (uaCH[FORMFACTORS]) {\n var ff;\n if (typeof uaCH[FORMFACTORS] !== 'string') {\n var idx = 0;\n while (!ff && idx < uaCH[FORMFACTORS].length) {\n ff = strMapper(uaCH[FORMFACTORS][idx++], formFactorsMap);\n }\n } else {\n ff = strMapper(uaCH[FORMFACTORS], formFactorsMap);\n }\n this.set(TYPE, ff);\n }\n break;\n case UA_OS:\n var osName = uaCH[PLATFORM];\n if(osName) {\n var osVersion = uaCH[PLATFORMVER];\n if (osName == WINDOWS) osVersion = (parseInt(majorize(osVersion), 10) >= 13 ? '11' : '10');\n this.set(NAME, osName)\n .set(VERSION, osVersion);\n }\n // Xbox-Specific Detection\n if (this.get(NAME) == WINDOWS && uaCH[MODEL] == 'Xbox') {\n this.set(NAME, 'Xbox')\n .set(VERSION, undefined);\n } \n break;\n case UA_RESULT:\n var data = this.data;\n var parse = function (itemType) {\n return data[itemType]\n .getItem()\n .setCH(uaCH)\n .parseCH()\n .get();\n };\n this.set(UA_BROWSER, parse(UA_BROWSER))\n .set(UA_CPU, parse(UA_CPU))\n .set(UA_DEVICE, parse(UA_DEVICE))\n .set(UA_ENGINE, parse(UA_ENGINE))\n .set(UA_OS, parse(UA_OS));\n }\n return this;\n };\n\n setProps.call(this, [\n ['itemType', itemType],\n ['ua', ua],\n ['uaCH', uaCH],\n ['rgxMap', rgxMap],\n ['data', createIData(this, itemType)]\n ]);\n\n return this;\n }\n\n function UAParser (ua, extensions, headers) {\n\n if (typeof ua === OBJ_TYPE) {\n if (isExtensions(ua, true)) {\n if (typeof extensions === OBJ_TYPE) {\n headers = extensions; // case UAParser(extensions, headers) \n }\n extensions = ua; // case UAParser(extensions)\n } else {\n headers = ua; // case UAParser(headers)\n extensions = undefined;\n }\n ua = undefined;\n } else if (typeof ua === STR_TYPE && !isExtensions(extensions, true)) {\n headers = extensions; // case UAParser(ua, headers)\n extensions = undefined;\n }\n\n // Convert Headers object into a plain object\n if (headers && typeof headers.append === FUNC_TYPE) {\n var kv = {};\n headers.forEach(function (v, k) { kv[k] = v; });\n headers = kv;\n }\n \n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions, headers).getResult();\n }\n\n var userAgent = typeof ua === STR_TYPE ? ua : // Passed user-agent string\n (headers && headers[USER_AGENT] ? headers[USER_AGENT] : // User-Agent from passed headers\n ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent\n EMPTY)), // empty string\n\n httpUACH = new UACHData(headers, true),\n regexMap = extensions ? \n extend(defaultRegexes, extensions) : \n defaultRegexes,\n\n createItemFunc = function (itemType) {\n if (itemType == UA_RESULT) {\n return function () {\n return new UAItem(itemType, userAgent, regexMap, httpUACH)\n .set('ua', userAgent)\n .set(UA_BROWSER, this.getBrowser())\n .set(UA_CPU, this.getCPU())\n .set(UA_DEVICE, this.getDevice())\n .set(UA_ENGINE, this.getEngine())\n .set(UA_OS, this.getOS())\n .get();\n };\n } else {\n return function () {\n return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)\n .parseUA()\n .get();\n };\n }\n };\n \n // public methods\n setProps.call(this, [\n ['getBrowser', createItemFunc(UA_BROWSER)],\n ['getCPU', createItemFunc(UA_CPU)],\n ['getDevice', createItemFunc(UA_DEVICE)],\n ['getEngine', createItemFunc(UA_ENGINE)],\n ['getOS', createItemFunc(UA_OS)],\n ['getResult', createItemFunc(UA_RESULT)],\n ['getUA', function () { return userAgent; }],\n ['setUA', function (ua) {\n if (isString(ua))\n userAgent = ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n }]\n ])\n .setUA(userAgent);\n\n return this;\n }\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR, TYPE]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n export {UAParser};","import { UAParser } from \"ua-parser-js\";\n\n/** @internal */\nexport interface DeviceInfo {\n browser: { name?: string; version?: string };\n os: { name?: string; version?: string };\n device: { type?: string; model?: string; vendor?: string };\n cpu: { architecture?: string };\n engine: { name?: string; version?: string };\n ua: string;\n}\n\ntype ScreenType = \"touch\" | \"pointer\";\ntype ScreenDensity = \"high\" | \"low\" | \"medium\";\ntype ScreenFormat = \"long\" | \"normal\" | \"undefined\";\ntype ScreenSize = \"small\" | \"normal\" | \"large\" | \"xlarge\";\n\nclass DeviceDetector {\n getDeviceInfo(): DeviceInfo {\n const parser = new UAParser();\n const result = parser.getResult();\n\n return {\n browser: result.browser,\n os: result.os,\n device: result.device,\n engine: result.engine,\n cpu: result.cpu,\n ua: result.ua,\n };\n }\n\n get screenDensity(): ScreenDensity {\n if (window.devicePixelRatio >= 3) return \"high\";\n if (window.devicePixelRatio >= 2) return \"medium\";\n return \"low\";\n }\n\n get screenFormat(): ScreenFormat {\n return window.innerHeight > window.innerWidth ? \"long\" : \"normal\";\n }\n\n get screenSize(): ScreenSize {\n const width = window.innerWidth;\n if (width < 480) return \"small\";\n else if (width < 768) return \"normal\";\n else if (width < 1440) return \"large\";\n else return \"xlarge\";\n }\n\n get uiMode(): number {\n const deviceInfo = this.getDeviceInfo();\n\n const deviceType = deviceInfo.device?.type || \"\"; // 'mobile', 'tablet', 'smarttv', 'console', 'wearable', 'embedded'\n const model = deviceInfo.device?.model?.toLowerCase() || \"\";\n const ua = deviceInfo.ua.toLowerCase();\n\n if (deviceType === \"wearable\" || model.includes(\"watch\")) {\n return 6; // UI_MODE_TYPE_WATCH\n }\n\n if (\n deviceType === \"smarttv\" ||\n ua.includes(\"smart-tv\") ||\n ua.includes(\"hbbtv\") ||\n ua.includes(\"netcast\") ||\n ua.includes(\"googletv\") ||\n ua.includes(\"appletv\")\n ) {\n return 4; // UI_MODE_TYPE_TELEVISION\n }\n\n if (\n deviceType === \"console\" ||\n ua.includes(\"playstation\") ||\n ua.includes(\"xbox\") ||\n ua.includes(\"nintendo\")\n ) {\n return 5; // UI_MODE_TYPE_APPLIANCE\n }\n\n if (\n ua.includes(\"car\") ||\n ua.includes(\"android auto\") ||\n ua.includes(\"carplay\")\n ) {\n return 3; // UI_MODE_TYPE_CAR\n }\n\n if (\n ua.includes(\"oculus\") ||\n ua.includes(\"vive\") ||\n ua.includes(\"vr\") ||\n deviceType === \"embedded\"\n ) {\n return 7; // UI_MODE_TYPE_VR_HEADSET\n }\n\n if (deviceType === \"mobile\" || deviceType === \"tablet\") {\n return 1; // UI_MODE_TYPE_NORMAL\n }\n\n if (deviceType === \"\" || deviceType === \"desktop\") {\n return 2; // UI_MODE_TYPE_DESK\n }\n\n return 0; // UI_MODE_TYPE_UNDEFINED\n }\n\n get uiStyle(): string {\n const isDarkMode =\n window.matchMedia &&\n window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n return isDarkMode ? \"1\" : \"0\";\n }\n\n get displaySize(): string {\n const dpr = window.devicePixelRatio || 1;\n const pixelWidth = screen.width * dpr;\n const pixelHeight = screen.height * dpr;\n\n const assumedDPI = 160;\n\n const widthInInches = pixelWidth / assumedDPI;\n const heightInInches = pixelHeight / assumedDPI;\n\n const diagonal = Math.sqrt(widthInInches ** 2 + heightInInches ** 2);\n return diagonal.toFixed(2);\n }\n\n get screenType(): ScreenType {\n return \"ontouchstart\" in window || navigator.maxTouchPoints > 0\n ? \"touch\"\n : \"pointer\";\n }\n}\n\n/** @internal */\nexport const deviceDetector = new DeviceDetector();\n","type StorageSupportResult = {\n localStorage: boolean;\n sessionStorage: boolean;\n indexedDB: boolean;\n};\n\nclass StorageSupport {\n private supportResults: StorageSupportResult | null = null;\n\n async getSupportResult(): Promise<StorageSupportResult> {\n if (this.supportResults) return this.supportResults;\n\n const localStorageSupported = this.isLocalStorageSupported();\n const sessionStorageSupported = this.isSessionStorageSupported();\n const indexedDBSupported = await this.isIndexedDBSupported();\n\n this.supportResults = {\n localStorage: localStorageSupported,\n sessionStorage: sessionStorageSupported,\n indexedDB: indexedDBSupported,\n };\n\n return this.supportResults;\n }\n\n getStorageSizeBytes(storage: Storage): number {\n let total = 0;\n\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i);\n if (!key) continue;\n\n const value = storage.getItem(key);\n if (value == null) continue;\n\n total += key.length * 2;\n total += value.length * 2;\n }\n\n return total;\n }\n\n private isLocalStorageSupported(): boolean {\n try {\n const testKey = \"__test__\";\n localStorage.setItem(testKey, \"1\");\n localStorage.removeItem(testKey);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n private isSessionStorageSupported(): boolean {\n try {\n const testKey = \"__test__\";\n sessionStorage.setItem(testKey, \"1\");\n sessionStorage.removeItem(testKey);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n private isIndexedDBSupported(): Promise<boolean> {\n if (!(\"indexedDB\" in window)) return Promise.resolve(false);\n\n return new Promise((resolve) => {\n try {\n const request = indexedDB.open(\"__test__check__\");\n request.onerror = () => resolve(false);\n request.onsuccess = () => {\n request.result.close();\n indexedDB.deleteDatabase(\"__test__check__\");\n resolve(true);\n };\n } catch {\n resolve(false);\n }\n });\n }\n}\n\n/** @internal */\nexport const storageSupport = new StorageSupport();\n","/** @internal */\nexport class Utils {\n static detectWebFramework = (): string | undefined => {\n // Next.js (React)\n if (\n !!document.querySelector(\"script[id=__NEXT_DATA__]\") ||\n [...document.scripts].some((s) => s.src.includes(\"/_next/\"))\n )\n return \"Next.js\";\n\n // React (if next.js dosn't exists)\n if (\n !!(window as any).React ||\n !!document.querySelector(\"[data-reactroot], [data-reactid]\") ||\n Array.from(document.querySelectorAll(\"*\")).some(\n (e) =>\n (e as any)._reactRootContainer !== undefined ||\n Object.keys(e).some((k) => k.startsWith(\"__reactContainer\"))\n ) ||\n (window as any).__REACT_DEVTOOLS_GLOBAL_HOOK__\n )\n return \"React\";\n\n // Vue / Nuxt.js\n if ([...document.scripts].some((s) => s.src.includes(\"/_nuxt/\")))\n return \"Nuxt.js\";\n if (\n (window as any).__VUE__ ||\n (window as any).Vue ||\n document.querySelector(\"[data-v-app], [data-v-]\")\n )\n return \"Vue.js\";\n\n // Gatsby.js\n if (!!document.querySelector(\"[id=___gatsby]\")) return \"Gatsby.js\";\n\n // Angular\n if (\n !!(window as any) ||\n !!document.querySelector(\n \".ng-binding, [ng-app], [data-ng-app], [ng-controller], [data-ng-controller], [ng-repeat], [data-ng-repeat]\"\n ) ||\n !!document.querySelector(\n 'script[src*=\"angular.js\"], script[src*=\"angular.min.js\"]'\n ) ||\n (window as any).ng ||\n document.querySelector(\"[ng-version]\")\n )\n return \"Angular\";\n\n // Svelte\n if (\n [...document.scripts].some(\n (s) => s.src.includes(\"svelte\") || s.textContent?.includes(\"svelte\")\n )\n )\n return \"Svelte\";\n\n // Alpine.js\n if (document.querySelector(\"[x-data], [x-init], [x-bind]\"))\n return \"Alpine.js\";\n\n // jQuery\n if ((window as any).jQuery) return \"jQuery\";\n\n // Backbone\n if (!!(window as any).Backbone) return \"Backbone.js\";\n\n // Meteor\n if (!!(window as any).Meteor) return \"Meteor.js\";\n\n // Zepto\n if (!!(window as any).Zepto) return \"Zepto.js\";\n\n // WordPress (CMS)\n if (\n document.querySelector('meta[name=\"generator\"][content*=\"WordPress\"]') ||\n [...document.scripts].some(\n (s) => s.src.includes(\"wp-content\") || s.src.includes(\"wp-includes\")\n )\n )\n return \"WordPress\";\n\n // Laravel\n if (\n [...document.scripts].some(\n (s) =>\n s.src.includes(\"/js/app.js\") || s.src.includes(\"mix-manifest.json\")\n )\n )\n return \"Laravel\";\n\n // Drupal (CMS)\n if (\n document.querySelector('meta[name=\"generator\"][content*=\"Drupal\"]') ||\n document.documentElement.innerHTML.includes(\"drupal-settings-json\")\n )\n return \"Drupal\";\n\n // Shopify\n if (document.documentElement.innerHTML.includes(\"cdn.shopify.com\"))\n return \"Shopify\";\n\n // Squarespace\n if (\n [...document.scripts].some((s) =>\n s.src.includes(\"static.squarespace.com\")\n )\n )\n return \"Squarespace\";\n\n // Wix\n if ([...document.scripts].some((s) => s.src.includes(\"wix.com\")))\n return \"Wix\";\n\n // Ghost CMS\n if (document.querySelector('meta[name=\"generator\"][content*=\"Ghost\"]'))\n return \"Ghost CMS\";\n\n return undefined;\n };\n\n static getUTMParamsString(): string {\n const params = new URLSearchParams(window.location.search);\n const utmParams: Record<string, string> = {};\n\n for (const [key, value] of params.entries()) {\n if (key.startsWith(\"utm_\") && value) {\n utmParams[key] = value;\n }\n }\n\n if (!utmParams[\"utm_source\"]) {\n const referrer = document.referrer;\n utmParams[\"utm_source\"] = referrer ? new URL(referrer).hostname : \"other\";\n }\n\n if (!utmParams[\"utm_medium\"]) {\n utmParams[\"utm_medium\"] = \"organic\";\n }\n\n return Object.entries(utmParams)\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\n .join(\"&\");\n }\n}\n","/** @internal */\nexport class DeviceFingerprint {\n static isWebGLSupported(): boolean {\n try {\n const canvas = document.createElement(\"canvas\");\n return !!(\n canvas.getContext(\"webgl\") || canvas.getContext(\"experimental-webgl\")\n );\n } catch (e) {\n return false;\n }\n }\n\n static async getWebGLFingerprint(): Promise<string | undefined> {\n const canvas = document.createElement(\"canvas\");\n const gl = (canvas.getContext(\"webgl\") ||\n canvas.getContext(\"experimental-webgl\")) as WebGLRenderingContext | null;\n if (!gl) return undefined;\n\n const info: Record<string, any> = {\n version: gl.getParameter(gl.VERSION),\n shadingLangVersion: gl.getParameter(gl.SHADING_LANGUAGE_VERSION),\n maxTextureSize: gl.getParameter(gl.MAX_TEXTURE_SIZE),\n maxRenderBufferSize: gl.getParameter(gl.MAX_RENDERBUFFER_SIZE),\n supportedExtensions: gl.getSupportedExtensions(),\n };\n try {\n const debugInfo = gl.getExtension(\"WEBGL_debug_renderer_info\");\n info.vendor = debugInfo\n ? gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL)\n : gl.getParameter(gl.VENDOR);\n } catch (_) {\n info.vendor = gl.getParameter(gl.VENDOR);\n }\n try {\n const debugInfo = gl.getExtension(\"WEBGL_debug_renderer_info\");\n info.renderer = debugInfo\n ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL)\n : gl.getParameter(gl.RENDERER);\n } catch (_) {\n info.renderer = gl.getParameter(gl.RENDERER);\n }\n return await this.hashData(JSON.stringify(info));\n }\n\n static async getCanvasFingerprint(): Promise<string | undefined> {\n const canvas = document.createElement(\"canvas\");\n canvas.width = 200;\n canvas.height = 50;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return undefined;\n\n ctx.textBaseline = \"top\";\n ctx.font = \"14px 'Arial'\";\n ctx.fillStyle = \"#f60\";\n ctx.fillRect(0, 0, 200, 50);\n ctx.fillStyle = \"#069\";\n ctx.fillText(\"WiseTrack WebGL Fingerprint!\", 2, 2);\n\n return await this.hashData(canvas.toDataURL());\n }\n\n // static async generateFingerprint(): Promise<string> {\n // const webglData = this.getWebGLFingerprint();\n // const canvasData = this.getCanvasFingerprint();\n // const combined = webglData + \"|\" + canvasData;\n\n // const encoder = new TextEncoder();\n // const data = encoder.encode(combined);\n // const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\n // const hashArray = Array.from(new Uint8Array(hashBuffer));\n // const hashHex = hashArray\n // .map((b) => b.toString(16).padStart(2, \"0\"))\n // .join(\"\");\n\n // return hashHex;\n // }\n\n private static async hashData(input: string | object): Promise<string> {\n const str = typeof input === \"string\" ? input : JSON.stringify(input);\n const encoder = new TextEncoder();\n const data = encoder.encode(str);\n\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n\n return hashHex;\n }\n}\n","import { WTConstants } from \"../../constants/constants\";\nimport { countryFinder } from \"../../utils/country-finder\";\nimport { deviceDetector } from \"../../utils/device-detector\";\nimport { storageSupport } from \"../../utils/storage-support\";\nimport { Utils } from \"../../utils/utils\";\nimport { DeviceFingerprint } from \"../../utils/webgl-fingerprint\";\nimport { storageManager } from \"../storage/storage-manager\";\n\n/** @internal */\nexport class FieldsBuilder {\n async build(): Promise<Record<string, any>> {\n const startTime = window.performance.now();\n\n let fields: Record<string, any> = {};\n fields.created_at = new Date().toISOString();\n\n Object.assign(fields, this.getLocalFields());\n Object.assign(fields, await this.getApplicationFields());\n Object.assign(fields, this.getDeviceFields());\n\n fields.time_spent = (window.performance.now() - startTime).toFixed(1);\n\n if (WTConstants.DEFAULTS.PARAMETERS_VALUE) {\n fields = Object.fromEntries(\n Object.entries(fields).map(([key, value]) => [\n key,\n value === null || value === undefined\n ? WTConstants.DEFAULTS.PARAMETERS_VALUE\n : value,\n ])\n );\n }\n\n if (!WTConstants.DEFAULTS.PARAMETERS_VALUE) {\n fields = Object.fromEntries(\n Object.entries(fields).filter(\n ([_, value]) => value !== null && value !== undefined\n )\n );\n }\n\n return fields;\n }\n\n private async getApplicationFields(): Promise<Record<string, any>> {\n const storageSupportResult = await storageSupport.getSupportResult();\n\n return {\n connectivity_type: navigator.onLine ? \"1\" : \"-1\",\n country: await countryFinder.getCountryCode(),\n package_name: window.location.hostname,\n session_storage_enabled: storageSupportResult.sessionStorage,\n indexed_db_enabled: storageSupportResult.indexedDB,\n local_storage_enabled: storageSupportResult.localStorage,\n session_storage: storageSupport\n .getStorageSizeBytes(sessionStorage)\n .toFixed(0),\n local_storage: storageSupport\n .getStorageSizeBytes(localStorage)\n .toFixed(0),\n web_gl_support: DeviceFingerprint.isWebGLSupported(),\n web_gl_fingerprint: await DeviceFingerprint.getWebGLFingerprint(),\n web_gl_canvas_fingerprint: await DeviceFingerprint.getCanvasFingerprint(),\n };\n }\n\n private getLocalFields(): Record<string, any> {\n const initialConfig = storageManager.initialConfig;\n if (!initialConfig) return {};\n\n return {\n uuid: storageManager.deviceId,\n app_token: initialConfig.appToken,\n environment: initialConfig.userEnvironment,\n store_name: \"other\",\n app_version: initialConfig.appVersion,\n push_token: storageManager.pushToken,\n custom_device_id: initialConfig.customDeviceId,\n default_tracker: initialConfig.defaultTracker,\n platform: WTConstants.SDK.PLATFORM,\n framework: initialConfig.appFrameWork.toLowerCase(),\n initiated_by: `${\n WTConstants.SDK.PLATFORM\n }_${initialConfig.appFrameWork.toLowerCase()}`,\n initiated_version: WTConstants.SDK.VERSION,\n referrer: Utils.getUTMParamsString(),\n installed_at: storageManager.initialDate,\n session_count: storageManager.sessionCount.toString(),\n session_length: parseInt(\n (storageManager.activeDuration / 1000).toString()\n ).toString(),\n subsession_count: parseInt(\n (storageManager.subSessionCount / 1000).toString()\n ).toString(),\n last_interval: parseInt(\n (storageManager.inactiveDuration / 1000).toString()\n ).toString(),\n };\n }\n\n private getDeviceFields(): Record<string, any> {\n const deviceInfo = deviceDetector.getDeviceInfo();\n return {\n browser_version: deviceInfo.browser.version,\n device_manufacturer: deviceInfo.device.vendor,\n device_name: deviceInfo.device.model,\n device_type: deviceInfo.device.type,\n os_name: deviceInfo.os.name,\n os_version: deviceInfo.os.version,\n cpu_type: deviceInfo.cpu.architecture,\n web_user_agent: deviceInfo.ua,\n display_height: window.innerHeight.toFixed(0),\n display_width: window.innerWidth.toFixed(0),\n language: navigator.language.split(\"-\")[0],\n screen_density: deviceDetector.screenDensity,\n screen_format: deviceDetector.screenFormat,\n screen_size: deviceDetector.screenSize,\n ui_mode: deviceDetector.uiMode.toString(),\n cpu_lpc: navigator.hardwareConcurrency.toString(),\n ui_style: deviceDetector.uiStyle,\n wout_width: window.outerWidth.toString(),\n wout_height: window.outerHeight.toString(),\n web_engine: deviceInfo.engine.name,\n web_engine_version: deviceInfo.engine.version,\n display_size: deviceDetector.displaySize,\n screen_type: deviceDetector.screenType,\n };\n }\n}\n\n/** @internal */\nexport const fieldsBuilder = new FieldsBuilder();\n","import { WTEvent } from \"../../types/event/wt-event\";\nimport { FieldsBuilder } from \"./fields-builder\";\n\n/** @internal */\nexport class EventFieldsBuilder extends FieldsBuilder {\n event: WTEvent.Default | WTEvent.Revenue;\n constructor(event: WTEvent.Default | WTEvent.Revenue) {\n super();\n this.event = event;\n }\n\n override async build(): Promise<Record<string, any>> {\n const fields = await super.build();\n\n return new Promise((resolve) => {\n resolve({\n ...fields,\n ...this.event.toJSON(),\n });\n });\n }\n}\n","import { WTEndpoints } from \"../constants/endpoints\";\nimport { WTEvent } from \"../types/event/wt-event\";\nimport { activityTicker } from \"../utils/activity-ticker\";\nimport { countryFinder } from \"../utils/country-finder\";\nimport { cryptoHelper } from \"../utils/crypto-helper\";\nimport { WTLogger } from \"../utils/logger\";\nimport { RequestRecord, RequestRecordCreator } from \"./caching/queue-data\";\nimport { queueManager } from \"./caching/request-queue-manager\";\nimport { EventFieldsBuilder } from \"./fields/event-fields-builder\";\nimport { fieldsBuilder } from \"./fields/fields-builder\";\nimport { storageManager } from \"./storage/storage-manager\";\n\n/** @internal */\nclass WTTracker {\n private isRunning = false;\n private initialized = false;\n\n private get isEnabled() {\n return storageManager.sdkEnabled;\n }\n\n async initialize() {\n this.getCountryCode();\n await this.setActivityTimes();\n this.createDeviceID();\n this.addObservers();\n this.initialized = true;\n }\n\n async startTracking() {\n if (!this.isEnabled) {\n WTLogger.warn(\"SDK is not enabled to start tracking!\");\n return;\n }\n\n WTLogger.debug(\"WT Tracker started\");\n\n await queueManager.initialize();\n\n await this.checkSdkClicks();\n await this.checkFirstSession();\n await this.createAttribution();\n\n this.isRunning = true;\n }\n\n async stopTracking() {\n this.isRunning = false;\n activityTicker.stop();\n await queueManager.shutdown();\n\n WTLogger.debug(\"WT Tracker stopped\");\n }\n\n async checkPushToken(token: string) {\n storageManager.pushToken = token;\n\n if (!this.isEnabled) {\n WTLogger.warn(\"CheckPushToken: SDK is not enabled\");\n return;\n }\n\n if (storageManager.fcmToken === token) {\n WTLogger.info(\"This Notification token has sent to server previously\");\n return;\n }\n\n await this.createRequest({\n endpoint: WTEndpoints.SDK_INFOS,\n queueType: \"pending\",\n });\n }\n\n async trackEvent(event: WTEvent.Default | WTEvent.Revenue) {\n if (!this.isEnabled) {\n WTLogger.warn(\"trackEvent: SDK is not enabled\");\n return;\n }\n\n if (!this.initialized) {\n WTLogger.warn(\"trackEvent: SDK is not initialized yet\");\n return;\n }\n\n storageManager.eventCount += 1;\n await this.createRequest({\n endpoint: WTEndpoints.EVENTS,\n fBuilder: new EventFieldsBuilder(event),\n queueType: \"pending\",\n });\n }\n\n // =======================================================================\n private getCountryCode() {\n countryFinder.getCountryCode();\n }\n\n private async createAttribution() {\n if (!this.isEnabled) {\n WTLogger.warn(\"Creating Attribution: SDK is not enabled!\");\n return;\n }\n await this.createRequest({\n endpoint: WTEndpoints.ATTRIBUTIONS,\n queueType: \"pending\",\n });\n }\n\n private async checkFirstSession() {\n if (!this.isEnabled) {\n WTLogger.warn(\"Creating First Session: SDK is not enabled!\");\n return;\n }\n\n if (storageManager.firstSessionSubmit) {\n WTLogger.debug(\"Creating Session: First-Session has already submitted\");\n return;\n }\n\n await this.createRequest({\n endpoint: WTEndpoints.SESSIONS,\n queueType: storageManager.sdkClickSubmit ? \"main\" : \"pending\",\n });\n }\n\n private async checkSdkClicks() {\n if (!this.isEnabled) {\n WTLogger.warn(\"Creating Install: SDK is not enabled!\");\n return;\n }\n\n if (storageManager.sdkClickSubmit) {\n WTLogger.debug(\"Creating Install: SDK-Clicks has already submitted\");\n return;\n }\n\n await this.createRequest({\n endpoint: WTEndpoints.SDK_CLICKS,\n });\n }\n\n private async createRequest({\n endpoint,\n fBuilder = fieldsBuilder,\n queueType = \"main\",\n }: RequestRecordCreator) {\n const fields = await fBuilder.build();\n const request = new RequestRecord(endpoint, fields);\n\n if (queueType === \"pending\") {\n WTLogger.info(`Add ${endpoint} request to pending queue`);\n await queueManager.addPendingRequest(request);\n } else {\n WTLogger.info(`Add ${endpoint} request to main queue`);\n await queueManager.addRequest(request);\n }\n\n const queueStatus = queueManager.getQueueStatus();\n console.log(JSON.stringify(queueStatus));\n }\n\n private createDeviceID() {\n if (!storageManager.deviceId) {\n storageManager.deviceId = cryptoHelper.generateDeviceUUID();\n }\n if (!storageManager.initialDate) {\n storageManager.initialDate = new Date().toISOString();\n }\n }\n\n private async setActivityTimes() {\n // Update inactive time to last stored active time\n if (storageManager.activeTime) {\n storageManager.inactiveTime = storageManager.activeTime;\n const inteval = Date.now() - storageManager.inactiveTime!!;\n storageManager.inactiveDuration += inteval;\n\n console.log(\n `User was inactived for ${inteval / 1000}s | (${\n storageManager.inactiveDuration / 1000\n }s Totaly)`\n );\n\n await this.checkSessionIntervals();\n }\n\n // update active time to now and start ticker for update active time/duration per 1s\n storageManager.activeTime = Date.now();\n activityTicker.start();\n }\n\n private async checkSessionIntervals() {\n const inactiveTime = storageManager.inactiveTime;\n const sessionInterval = storageManager.appSettings?.sessionInterval;\n const subsessionInterval = storageManager.appSettings?.subsessionInterval;\n\n if (!this.isEnabled) {\n WTLogger.warn(\"Creating Session: SDK is not enabled!\");\n return;\n }\n\n if (!inactiveTime || !sessionInterval || !subsessionInterval) {\n return;\n }\n\n const interval = Date.now() - inactiveTime;\n\n if (interval > parseInt(sessionInterval)) {\n storageManager.sessionCount += 1;\n await this.createRequest({\n endpoint: WTEndpoints.SESSIONS,\n queueType: storageManager.sdkClickSubmit ? \"main\" : \"pending\",\n });\n } else if (interval > parseInt(subsessionInterval)) {\n storageManager.subSessionCount += 1;\n }\n }\n\n private isVisibleFocused(): boolean {\n return document.visibilityState === \"visible\" && document.hasFocus();\n }\n\n private addObservers() {\n // document.addEventListener(\"load\", () => {\n // this.setActivityTimes();\n // });\n\n window.addEventListener(\"beforeunload\", () => {\n activityTicker.stop();\n });\n\n document.addEventListener(\"visibilitychange\", () => {\n if (this.isVisibleFocused()) {\n this.createAttribution();\n this.setActivityTimes();\n } else {\n activityTicker.stop();\n }\n });\n\n window.addEventListener(\"focus\", () => {\n if (this.isVisibleFocused()) {\n this.createAttribution();\n this.setActivityTimes();\n }\n });\n\n window.addEventListener(\"blur\", () => {\n activityTicker.stop();\n });\n }\n}\n\n/** @internal */\nexport const tracker = new WTTracker();\n","import { EnvironmentUtils } from \"../constants/environments\";\nimport { WTInitialConfig } from \"../types/config/initial-config\";\nimport { WTAppSettings } from \"../types/config/wt-app-settings\";\nimport { WTConfig } from \"../types/config/wt-config\";\nimport { WTEvent } from \"../types/event/wt-event\";\nimport { WTLogger, WTLogLevel } from \"../utils/logger\";\nimport { apiClient } from \"./network/api-client\";\nimport { ApiError } from \"./network/network-error\";\nimport { storageManager } from \"./storage/storage-manager\";\nimport { tracker } from \"./wt-tracker\";\n\n/**\n * The main entry point for the WiseTrack Web SDK.\n *\n * Use this singleton to initialize the SDK, configure its behavior, and track events.\n *\n * @example\n * ```ts\n * const initialConfig: WTInitialConfig = {\n * appToken: appToken ?? \"rMN5ZCwpOzY7\",\n * appFrameWork: \"native\",\n * appVersion: \"1.0.0\",\n * };\n * await WiseTrack.instance.init(initialConfig);\n * ```\n */\nexport class WiseTrack {\n private static _instance?: WiseTrack;\n\n /**\n * Returns the singleton instance of the WiseTrack SDK.\n */\n static get instance(): WiseTrack {\n if (!WiseTrack._instance) {\n WiseTrack._instance = new WiseTrack();\n }\n return WiseTrack._instance!;\n }\n\n private constructor() {}\n\n private sdkInitialized: boolean = false;\n\n /**\n * Initializes the WiseTrack SDK with the given configuration.\n *\n * This method must be called before using any tracking features.\n *\n * @param initConfig - The initial configuration object.\n *\n * @example\n * ```ts\n * const initialConfig: WTInitialConfig = {\n * appToken: appToken ?? \"rMN5ZCwpOzY7\",\n * appFrameWork: \"native\", // your current web app framework (native, reactjs, nextjs, ...)\n * appVersion: \"1.0.0\", // your current web app version\n * };\n *\n * ```\n */\n async init(initConfig: WTInitialConfig) {\n const config = await this.getConfig(initConfig);\n this.checkSdkEnabled(config);\n this.checkSdkUpdate(config);\n this.setEnabled(true);\n\n await this.updateAppSettings(config);\n\n this.sdkInitialized = true;\n\n await tracker.initialize();\n\n const autoStart: boolean = initConfig.startTrackerAutomatically ?? true;\n if (autoStart) {\n setTimeout(\n () => this.startTracking(),\n (initConfig.trackingWaitingTime ?? 0) * 1000\n );\n }\n }\n\n /**\n * Sets the log level for internal SDK logging.\n *\n * @param level - The desired log level.\n *\n * @example\n * ```ts\n * WiseTrack.instance.setLogLevel(WTLogLevel.WARN)\n * // or\n * WiseTrack.instance.setLogLevel(\"warn\")\n *\n * ```\n */\n setLogLevel(level: WTLogLevel) {\n WTLogger.setLevel(level);\n }\n\n /**\n * Clears all stored data and stops the tracker.\n */\n flush() {\n WTLogger.info(\"Clearing Data and stop tracker!\");\n storageManager.clear();\n this.stopTracking();\n }\n\n /**\n * Returns whether the SDK is currently enabled.\n */\n isEnabled(): boolean {\n return storageManager.sdkEnabled;\n }\n\n /**\n * Enables or disables the SDK.\n *\n * Throws an error if the SDK is disabled by the server or needs an update.\n *\n * @param enabled - Whether to enable the SDK.\n * @throws If the server has disabled the SDK or a forced update is required.\n */\n setEnabled(enabled: boolean) {\n const config = storageManager.config;\n if (!config) {\n throw new Error(\"Config is not set!\");\n }\n if (!config.sdkEnabled) {\n throw new Error(\n \"SDK is disabled form server, contact your adminstrator!\"\n );\n }\n if (config.forceUpdate) {\n throw new Error(\n \"The version you are currently using has expired and is no longer supported. Please update to the latest version to continue using the SDK\"\n );\n }\n\n storageManager.sdkEnabled = enabled;\n }\n\n /**\n * Starts the tracking process.\n *\n * @remarks\n * The SDK must be initialized and enabled before calling this method.\n *\n * NOTE: call this method just if you set startTrackerAutomatically=false in WTInitialConfig\n */\n async startTracking() {\n if (!this.sdkInitialized) {\n WTLogger.warn(\"‼️ Start Tracking: SDK is not initialized yet\");\n return;\n }\n\n if (!this.isEnabled()) {\n WTLogger.warn(\"Start Tracking: SDK is not enabled!\");\n return;\n }\n\n await tracker.startTracking();\n }\n\n /**\n * Stops the tracking process.\n */\n async stopTracking() {\n await tracker.stopTracking();\n }\n\n /**\n * Sets the Firebase Cloud Messaging (FCM) push token for server.\n *\n * @param token - The FCM token.\n */\n async setFCMToken(token: string) {\n if (!this.sdkInitialized) {\n WTLogger.warn(\"‼️ Set Fcm Token: SDK is not initialized yet\");\n return;\n }\n\n if (!this.isEnabled()) {\n WTLogger.warn(\"Set Fcm Token: SDK is not enabled!\");\n return;\n }\n await tracker.checkPushToken(token);\n }\n\n /**\n * Tracks a custom event or revenue event.\n *\n * @param event - The event object to be tracked.\n *\n * @example\n * ```ts\n * // Create a Default Event\n * const defaultEvent = new WTEvent.Default(\"default-event\");\n * defaultEvent.addParam(\"key1\", \"value1\");\n * defaultEvent.addParam(\"key2\", 123);\n * defaultEvent.addParam(\"key3\", true);\n * await WiseTrack.instance.trackEvent(defaultEvent);\n *\n * // Create a Revenue Event\n * const revenueEvent = new WTEvent.Revenue(\"revenue-event\", 100, \"USD\");\n * revenueEvent.addParam(\"item_id\", \"item123\");\n * revenueEvent.addParam(\"quantity\", 2);\n * await WiseTrack.instance.trackEvent(revenueEvent);\n * ```\n */\n async trackEvent(event: WTEvent.Default | WTEvent.Revenue) {\n if (!this.sdkInitialized) {\n WTLogger.warn(\"‼️ Track Event: SDK is not initialized yet\");\n return;\n }\n\n if (!this.isEnabled()) {\n WTLogger.warn(\"Track Event: SDK is not enabled!\");\n return;\n }\n await tracker.trackEvent(event);\n }\n\n // ===========================================================================\n\n /** @internal */\n private async getConfig(initConfig: WTInitialConfig): Promise<WTConfig> {\n storageManager.initialConfig = initConfig;\n\n let config: WTConfig;\n try {\n config = await apiClient.doGetConfig();\n } catch (error) {\n if (!(error instanceof ApiError.NetworkError)) {\n WTLogger.info(\"‼️ SDK Config NOT set!, check errors.\");\n throw error;\n }\n config = storageManager.config || WTConfig.defaultValue;\n }\n storageManager.config = config;\n WTLogger.info(\"SDK Config set\");\n return config;\n }\n\n /** @internal */\n private async updateAppSettings(config: WTConfig): Promise<WTAppSettings> {\n let appSettings: WTAppSettings;\n if (!EnvironmentUtils.needAppSettings()) {\n appSettings = WTAppSettings.fromConfig(config);\n } else {\n WTLogger.debug(\n `Need to get app-settings for ${EnvironmentUtils.sdkEnvironment} environment`\n );\n try {\n appSettings = await apiClient.doGetAppSettings();\n } catch (error) {\n if (!(error instanceof ApiError.NetworkError)) {\n WTLogger.info(\"‼️ App Settings NOT set!, check errors.\");\n throw error;\n }\n appSettings = WTAppSettings.defaultValue;\n }\n }\n storageManager.appSettings = appSettings;\n WTLogger.info(\"App Settings set\");\n return appSettings;\n }\n\n /** @internal */\n private checkSdkEnabled(config: WTConfig) {\n if (!config.sdkEnabled) {\n const message = \"SDK is disabled form server, contact your adminstrator!\";\n WTLogger.error(message);\n throw new Error(message);\n }\n }\n\n /** @internal */\n private checkSdkUpdate(config: WTConfig) {\n if (config.forceUpdate) {\n const message =\n \"The version you are currently using has expired and is no longer supported. Please update to the latest version to continue using the SDK\";\n WTLogger.error(message);\n throw new Error(message);\n }\n if (config.sdkUpdate) {\n WTLogger.warn(\n \"A new version of the SDK is available. It is recommended to update to the latest version to enjoy improved features and better performance.\"\n );\n }\n }\n}\n","import { RevenueCurrency } from \"./revenue-currency\";\n\ntype WTEventType = \"default\" | \"revenue\";\n\ntype EventParam = string | number | boolean;\n\nexport namespace WTEvent {\n /**\n * Represents a generic custom event.\n * \n * Use this class to log custom actions performed by the user.\n * \n * @example\n * ```ts\n * const event = new WTEvent.Default(\"signup\");\n * event.addParam(\"method\", \"Google\");\n * WiseTrack.instance.trackEvent(event);\n * ```\n */\n export class Default {\n /**\n * The type of event.\n * @internal\n */\n readonly type: WTEventType = \"default\";\n\n /**\n * Optional custom key-value parameters for the event.\n */\n params?: Record<string, EventParam>;\n\n /**\n * The name of the event.\n */\n name: string;\n\n /**\n * Creates a new custom event.\n * @param name - The name of the event.\n */\n constructor(name: string) {\n this.name = name;\n }\n\n /**\n * Adds a parameter to the event.\n * \n * @param key - The parameter key.\n * @param value - The parameter value.\n */\n addParam(key: string, value: EventParam) {\n let _params = this.params ?? {};\n _params[key] = value;\n this.params = _params;\n }\n\n /** @internal */\n toJSON() {\n return {\n event_type: this.type,\n event_name: this.name,\n partner_params: this.params,\n };\n }\n }\n\n /**\n * Represents a revenue event with an amount and currency.\n * \n * Use this class to log purchases or monetary transactions.\n * \n * @example\n * ```ts\n * const purchase = new WTEvent.Revenue(\"order_complete\", 49.99, RevenueCurrency.USD);\n * purchase.addParam(\"item_count\", \"3\");\n * WiseTrack.instance.trackEvent(purchase);\n * ```\n */\n export class Revenue extends Default {\n /**\n * The type of event.\n * @internal\n */\n override readonly type: WTEventType = \"revenue\";\n\n /**\n * The revenue amount.\n */\n amount: number;\n\n /**\n * The currency of the revenue.\n */\n currency: RevenueCurrency;\n\n /**\n * Creates a new revenue event.\n * \n * @param name - The name of the revenue event.\n * @param amount - The amount of revenue.\n * @param currency - The currency of the revenue.\n */\n constructor(name: string, amount: number, currency: RevenueCurrency) {\n super(name);\n this.amount = amount;\n this.currency = currency;\n }\n\n /** @internal */\n override toJSON() {\n return {\n event_type: this.type,\n event_name: this.name,\n revenue: this.amount,\n currency: this.currency,\n partner_params: this.params,\n };\n }\n }\n}\n"],"names":["WTEvent"],"mappings":"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","x_google_ignoreList":[16]}