@nathanclaire/edge-telemetry-sdk 3.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 (155) hide show
  1. package/README.md +348 -0
  2. package/dist/appLifecycle-Cynw0kAv.js +14 -0
  3. package/dist/appLifecycle-Cynw0kAv.js.map +1 -0
  4. package/dist/appLifecycle-DvJIt7ym.cjs +2 -0
  5. package/dist/appLifecycle-DvJIt7ym.cjs.map +1 -0
  6. package/dist/batch-CLBFgYPC.cjs +2 -0
  7. package/dist/batch-CLBFgYPC.cjs.map +1 -0
  8. package/dist/batch-DLG_gtOm.js +12 -0
  9. package/dist/batch-DLG_gtOm.js.map +1 -0
  10. package/dist/crashCapture-BYTM4FLC.cjs +2 -0
  11. package/dist/crashCapture-BYTM4FLC.cjs.map +1 -0
  12. package/dist/crashCapture-D_rkkBVa.js +31 -0
  13. package/dist/crashCapture-D_rkkBVa.js.map +1 -0
  14. package/dist/crashHandler.web-BSxDpFTo.cjs +2 -0
  15. package/dist/crashHandler.web-BSxDpFTo.cjs.map +1 -0
  16. package/dist/crashHandler.web-D59bmhg9.js +32 -0
  17. package/dist/crashHandler.web-D59bmhg9.js.map +1 -0
  18. package/dist/crashHandlerNative.native-DeAFze4E.cjs +2 -0
  19. package/dist/crashHandlerNative.native-DeAFze4E.cjs.map +1 -0
  20. package/dist/crashHandlerNative.native-d7qJkzA6.js +41 -0
  21. package/dist/crashHandlerNative.native-d7qJkzA6.js.map +1 -0
  22. package/dist/debug-DsvQ9y3W.js +68 -0
  23. package/dist/debug-DsvQ9y3W.js.map +1 -0
  24. package/dist/debug-rnOOxFpN.cjs +2 -0
  25. package/dist/debug-rnOOxFpN.cjs.map +1 -0
  26. package/dist/deviceInfo.native-7hbRYixR.cjs +2 -0
  27. package/dist/deviceInfo.native-7hbRYixR.cjs.map +1 -0
  28. package/dist/deviceInfo.native-D2k0LDhI.js +1171 -0
  29. package/dist/deviceInfo.native-D2k0LDhI.js.map +1 -0
  30. package/dist/deviceInfo.web-ByNAlEJh.cjs +2 -0
  31. package/dist/deviceInfo.web-ByNAlEJh.cjs.map +1 -0
  32. package/dist/deviceInfo.web-DzQyEku6.js +40 -0
  33. package/dist/deviceInfo.web-DzQyEku6.js.map +1 -0
  34. package/dist/frameAggregate-C_HoVFcK.cjs +2 -0
  35. package/dist/frameAggregate-C_HoVFcK.cjs.map +1 -0
  36. package/dist/frameAggregate-Cwh1juw1.js +17 -0
  37. package/dist/frameAggregate-Cwh1juw1.js.map +1 -0
  38. package/dist/frameDropsNative.native-CP7zrXDf.js +23 -0
  39. package/dist/frameDropsNative.native-CP7zrXDf.js.map +1 -0
  40. package/dist/frameDropsNative.native-DKqEDqip.cjs +2 -0
  41. package/dist/frameDropsNative.native-DKqEDqip.cjs.map +1 -0
  42. package/dist/frameDropsWeb.web-C9Lt3Fuj.js +22 -0
  43. package/dist/frameDropsWeb.web-C9Lt3Fuj.js.map +1 -0
  44. package/dist/frameDropsWeb.web-azpwQCUz.cjs +2 -0
  45. package/dist/frameDropsWeb.web-azpwQCUz.cjs.map +1 -0
  46. package/dist/httpAttributes-BV50UKQU.js +19 -0
  47. package/dist/httpAttributes-BV50UKQU.js.map +1 -0
  48. package/dist/httpAttributes-xXOD9trQ.cjs +2 -0
  49. package/dist/httpAttributes-xXOD9trQ.cjs.map +1 -0
  50. package/dist/index.native.cjs +2 -0
  51. package/dist/index.native.cjs.map +1 -0
  52. package/dist/index.native.d.ts +2 -0
  53. package/dist/index.native.js +109 -0
  54. package/dist/index.native.js.map +1 -0
  55. package/dist/index.web.cjs +2 -0
  56. package/dist/index.web.cjs.map +1 -0
  57. package/dist/index.web.d.ts +2 -0
  58. package/dist/index.web.js +80 -0
  59. package/dist/index.web.js.map +1 -0
  60. package/dist/interaction-CH8yoY5-.js +23 -0
  61. package/dist/interaction-CH8yoY5-.js.map +1 -0
  62. package/dist/interaction-DcNFBW7a.cjs +2 -0
  63. package/dist/interaction-DcNFBW7a.cjs.map +1 -0
  64. package/dist/interceptFetchNative.native-VlhtMG-U.js +49 -0
  65. package/dist/interceptFetchNative.native-VlhtMG-U.js.map +1 -0
  66. package/dist/interceptFetchNative.native-jEAldH14.cjs +2 -0
  67. package/dist/interceptFetchNative.native-jEAldH14.cjs.map +1 -0
  68. package/dist/interceptFetchWeb.web-DFzZliik.cjs +2 -0
  69. package/dist/interceptFetchWeb.web-DFzZliik.cjs.map +1 -0
  70. package/dist/interceptFetchWeb.web-DfsMfoRP.js +77 -0
  71. package/dist/interceptFetchWeb.web-DfsMfoRP.js.map +1 -0
  72. package/dist/memoryNative.native-BWLh2S9L.js +48 -0
  73. package/dist/memoryNative.native-BWLh2S9L.js.map +1 -0
  74. package/dist/memoryNative.native-DCXSOd4Q.cjs +2 -0
  75. package/dist/memoryNative.native-DCXSOd4Q.cjs.map +1 -0
  76. package/dist/memoryWeb.web-B3YuV-cB.js +48 -0
  77. package/dist/memoryWeb.web-B3YuV-cB.js.map +1 -0
  78. package/dist/memoryWeb.web-CheXAcJn.cjs +2 -0
  79. package/dist/memoryWeb.web-CheXAcJn.cjs.map +1 -0
  80. package/dist/nativeSender-BE_mzw_S.js +70 -0
  81. package/dist/nativeSender-BE_mzw_S.js.map +1 -0
  82. package/dist/nativeSender-DyAUGY7c.cjs +2 -0
  83. package/dist/nativeSender-DyAUGY7c.cjs.map +1 -0
  84. package/dist/navigationNative.native-3tO5JxSd.cjs +2 -0
  85. package/dist/navigationNative.native-3tO5JxSd.cjs.map +1 -0
  86. package/dist/navigationNative.native-BUCGPQX2.js +25 -0
  87. package/dist/navigationNative.native-BUCGPQX2.js.map +1 -0
  88. package/dist/navigationTracker-B2GMwyKk.cjs +2 -0
  89. package/dist/navigationTracker-B2GMwyKk.cjs.map +1 -0
  90. package/dist/navigationTracker-Cts68dgG.js +19 -0
  91. package/dist/navigationTracker-Cts68dgG.js.map +1 -0
  92. package/dist/navigationWeb.web-B0necr5j.cjs +2 -0
  93. package/dist/navigationWeb.web-B0necr5j.cjs.map +1 -0
  94. package/dist/navigationWeb.web-CORzE_Id.js +46 -0
  95. package/dist/navigationWeb.web-CORzE_Id.js.map +1 -0
  96. package/dist/networkChange-CUO1hRLj.cjs +2 -0
  97. package/dist/networkChange-CUO1hRLj.cjs.map +1 -0
  98. package/dist/networkChange-D39hdSb0.js +16 -0
  99. package/dist/networkChange-D39hdSb0.js.map +1 -0
  100. package/dist/networkInfo.native-BK5fpAOL.js +343 -0
  101. package/dist/networkInfo.native-BK5fpAOL.js.map +1 -0
  102. package/dist/networkInfo.native-cxuw93Uy.cjs +2 -0
  103. package/dist/networkInfo.native-cxuw93Uy.cjs.map +1 -0
  104. package/dist/networkInfo.web-DJmw1sNK.cjs +2 -0
  105. package/dist/networkInfo.web-DJmw1sNK.cjs.map +1 -0
  106. package/dist/networkInfo.web-twcNn_hc.js +32 -0
  107. package/dist/networkInfo.web-twcNn_hc.js.map +1 -0
  108. package/dist/src/adapters/appLifecycle.d.ts +15 -0
  109. package/dist/src/adapters/batch.d.ts +2 -0
  110. package/dist/src/adapters/crashCapture.d.ts +13 -0
  111. package/dist/src/adapters/frameAggregate.d.ts +12 -0
  112. package/dist/src/adapters/httpAttributes.d.ts +9 -0
  113. package/dist/src/adapters/interaction.d.ts +17 -0
  114. package/dist/src/adapters/native/crashHandlerNative.native.d.ts +9 -0
  115. package/dist/src/adapters/native/deviceInfo.native.d.ts +10 -0
  116. package/dist/src/adapters/native/frameDropsNative.native.d.ts +16 -0
  117. package/dist/src/adapters/native/interceptFetchNative.native.d.ts +23 -0
  118. package/dist/src/adapters/native/memoryNative.native.d.ts +25 -0
  119. package/dist/src/adapters/native/navigationNative.native.d.ts +12 -0
  120. package/dist/src/adapters/native/networkInfo.native.d.ts +12 -0
  121. package/dist/src/adapters/nativeSender.d.ts +3 -0
  122. package/dist/src/adapters/navigationTracker.d.ts +6 -0
  123. package/dist/src/adapters/networkChange.d.ts +15 -0
  124. package/dist/src/adapters/screenTiming.d.ts +9 -0
  125. package/dist/src/adapters/web/crashHandler.web.d.ts +9 -0
  126. package/dist/src/adapters/web/deviceInfo.web.d.ts +7 -0
  127. package/dist/src/adapters/web/frameDropsWeb.web.d.ts +16 -0
  128. package/dist/src/adapters/web/interceptFetchWeb.web.d.ts +29 -0
  129. package/dist/src/adapters/web/memoryWeb.web.d.ts +26 -0
  130. package/dist/src/adapters/web/navigationWeb.web.d.ts +29 -0
  131. package/dist/src/adapters/web/networkInfo.web.d.ts +8 -0
  132. package/dist/src/adapters/webSender.d.ts +3 -0
  133. package/dist/src/core/breadcrumbs.d.ts +12 -0
  134. package/dist/src/core/debug.d.ts +6 -0
  135. package/dist/src/core/telemetry.d.ts +233 -0
  136. package/dist/src/core/utils/uuid.d.ts +2 -0
  137. package/dist/src/createTelemetry.native.d.ts +16 -0
  138. package/dist/src/createTelemetry.web.d.ts +16 -0
  139. package/dist/src/index.base.d.ts +36 -0
  140. package/dist/src/index.native.d.ts +28 -0
  141. package/dist/src/index.web.d.ts +24 -0
  142. package/dist/src/shims/react-native-web-shim.d.ts +6 -0
  143. package/dist/telemetry-Co4MYdwa.cjs +2 -0
  144. package/dist/telemetry-Co4MYdwa.cjs.map +1 -0
  145. package/dist/telemetry-KI0x4gzC.js +389 -0
  146. package/dist/telemetry-KI0x4gzC.js.map +1 -0
  147. package/dist/v4-BysszJq8.js +31 -0
  148. package/dist/v4-BysszJq8.js.map +1 -0
  149. package/dist/v4-CqdK_b8Y.cjs +2 -0
  150. package/dist/v4-CqdK_b8Y.cjs.map +1 -0
  151. package/dist/webSender-B27tmT1w.js +42 -0
  152. package/dist/webSender-B27tmT1w.js.map +1 -0
  153. package/dist/webSender-BWi4x1df.cjs +2 -0
  154. package/dist/webSender-BWi4x1df.cjs.map +1 -0
  155. package/package.json +91 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceInfo.native-D2k0LDhI.js","sources":["../node_modules/react-native-device-info/lib/module/internal/asyncHookWrappers.js","../node_modules/react-native-device-info/lib/module/internal/devicesWithDynamicIsland.js","../node_modules/react-native-device-info/lib/module/internal/devicesWithNotch.js","../node_modules/react-native-device-info/lib/module/internal/nativeInterface.js","../node_modules/react-native-device-info/lib/module/internal/supported-platform-info.js","../node_modules/react-native-device-info/lib/module/index.js","../src/adapters/native/deviceInfo.native.ts"],"sourcesContent":["import { useState, useEffect, useMemo } from 'react';\nimport { NativeEventEmitter, NativeModules } from 'react-native';\n\n/**\n * simple hook wrapper for async functions for 'on-mount / componentDidMount' that only need to fired once\n * @param asyncGetter async function that 'gets' something\n * @param initialResult -1 | false | 'unknown'\n */\nexport function useOnMount(asyncGetter, initialResult) {\n const [response, setResponse] = useState({\n loading: true,\n result: initialResult\n });\n useEffect(() => {\n // async function cuz react complains if useEffect's effect param is an async function\n const getAsync = async () => {\n const result = await asyncGetter();\n setResponse({\n loading: false,\n result\n });\n };\n\n getAsync();\n }, [asyncGetter]);\n return response;\n}\nexport const deviceInfoEmitter = new NativeEventEmitter(NativeModules.RNDeviceInfo);\n/**\n * simple hook wrapper for handling events\n * @param eventName\n * @param initialValueAsyncGetter\n * @param defaultValue\n */\n\nexport function useOnEvent(eventName, initialValueAsyncGetter, defaultValue) {\n const {\n loading,\n result: initialResult\n } = useOnMount(initialValueAsyncGetter, defaultValue);\n const [result, setResult] = useState(defaultValue); // sets the result to what the intial value is on mount\n\n useEffect(() => {\n setResult(initialResult);\n }, [initialResult]); // - set up the event listener to set the result\n // - set up the clean up function to remove subscription on unmount\n\n useEffect(() => {\n const subscription = deviceInfoEmitter.addListener(eventName, setResult);\n return () => subscription.remove();\n }, [eventName]); // loading will only be true while getting the inital value. After that, it will always be false, but a new result may occur\n\n return useMemo(() => ({\n loading,\n result\n }), [loading, result]);\n}\n//# sourceMappingURL=asyncHookWrappers.js.map","const devicesWithDynamicIsland = [{\n brand: 'Apple',\n model: 'iPhone 16'\n}, {\n brand: 'Apple',\n model: 'iPhone 16 Plus'\n}, {\n brand: 'Apple',\n model: 'iPhone 16 Pro'\n}, {\n brand: 'Apple',\n model: 'iPhone 16 Pro Max'\n}, {\n brand: 'Apple',\n model: 'iPhone 15'\n}, {\n brand: 'Apple',\n model: 'iPhone 15 Plus'\n}, {\n brand: 'Apple',\n model: 'iPhone 15 Pro'\n}, {\n brand: 'Apple',\n model: 'iPhone 15 Pro Max'\n}, {\n brand: 'Apple',\n model: 'iPhone 14 Pro'\n}, {\n brand: 'Apple',\n model: 'iPhone 14 Pro Max'\n}];\nexport default devicesWithDynamicIsland;\n//# sourceMappingURL=devicesWithDynamicIsland.js.map","const devicesWithNotch = [{\n brand: 'Apple',\n model: 'iPhone 16'\n}, {\n brand: 'Apple',\n model: 'iPhone 16 Plus'\n}, {\n brand: 'Apple',\n model: 'iPhone 16 Pro'\n}, {\n brand: 'Apple',\n model: 'iPhone 16 Pro Max'\n}, {\n brand: 'Apple',\n model: 'iPhone 15'\n}, {\n brand: 'Apple',\n model: 'iPhone 15 Plus'\n}, {\n brand: 'Apple',\n model: 'iPhone 15 Pro'\n}, {\n brand: 'Apple',\n model: 'iPhone 15 Pro Max'\n}, {\n brand: 'Apple',\n model: 'iPhone 14'\n}, {\n brand: 'Apple',\n model: 'iPhone 14 Plus'\n}, {\n brand: 'Apple',\n model: 'iPhone 14 Pro'\n}, {\n brand: 'Apple',\n model: 'iPhone 14 Pro Max'\n}, {\n brand: 'Apple',\n model: 'iPhone 13 mini'\n}, {\n brand: 'Apple',\n model: 'iPhone 13'\n}, {\n brand: 'Apple',\n model: 'iPhone 13 Pro'\n}, {\n brand: 'Apple',\n model: 'iPhone 13 Pro Max'\n}, {\n brand: 'Apple',\n model: 'iPhone 12 mini'\n}, {\n brand: 'Apple',\n model: 'iPhone 12'\n}, {\n brand: 'Apple',\n model: 'iPhone 12 Pro'\n}, {\n brand: 'Apple',\n model: 'iPhone 12 Pro Max'\n}, {\n brand: 'Apple',\n model: 'iPhone 11'\n}, {\n brand: 'Apple',\n model: 'iPhone 11 Pro'\n}, {\n brand: 'Apple',\n model: 'iPhone 11 Pro Max'\n}, {\n brand: 'Apple',\n model: 'iPhone X'\n}, {\n brand: 'Apple',\n model: 'iPhone XS'\n}, {\n brand: 'Apple',\n model: 'iPhone XS Max'\n}, {\n brand: 'Apple',\n model: 'iPhone XR'\n}, {\n brand: 'Asus',\n model: 'ZenFone 5'\n}, {\n brand: 'Asus',\n model: 'ZenFone 5z'\n}, {\n brand: 'google',\n model: 'Pixel 3 XL'\n}, {\n brand: 'google',\n model: 'Pixel 4a'\n}, {\n brand: 'Huawei',\n model: 'P20'\n}, {\n brand: 'Huawei',\n model: 'P20 Plus'\n}, {\n brand: 'Huawei',\n model: 'P20 Lite'\n}, {\n brand: 'Huawei',\n model: 'ANE-LX1'\n}, {\n brand: 'Huawei',\n model: 'INE-LX1'\n}, {\n brand: 'Huawei',\n model: 'POT-LX1'\n}, {\n brand: 'Huawei',\n model: 'Honor Play'\n}, {\n brand: 'Huawei',\n model: 'Honor 10'\n}, {\n brand: 'Huawei',\n model: 'Mate 20 Lite'\n}, {\n brand: 'Huawei',\n model: 'Mate 20 Pro'\n}, {\n brand: 'Huawei',\n model: 'ELE-L29' // P30\n\n}, {\n brand: 'Huawei',\n model: 'P30 Lite'\n}, {\n brand: 'Huawei',\n model: 'P30 Pro'\n}, {\n brand: 'Huawei',\n model: 'JNY-LX1' // P40 Lite\n\n}, {\n brand: 'Huawei',\n model: 'Nova 3'\n}, {\n brand: 'Huawei',\n model: 'Nova 3i'\n}, {\n brand: 'Leagoo',\n model: 'S9'\n}, {\n brand: 'LG',\n model: 'G7'\n}, {\n brand: 'LG',\n model: 'G7 ThinQ'\n}, {\n brand: 'LG',\n model: 'G7+ ThinQ'\n}, {\n brand: 'LG',\n model: 'LM-Q910' //G7 One\n\n}, {\n brand: 'LG',\n model: 'LM-G710' //G7 ThinQ\n\n}, {\n brand: 'LG',\n model: 'LM-V405' //V40 ThinQ\n\n}, {\n brand: 'Motorola',\n model: 'Moto g7 Play'\n}, {\n brand: 'Motorola',\n model: 'Moto g7 Power'\n}, {\n brand: 'Motorola',\n model: 'One'\n}, {\n brand: 'Motorola',\n model: 'Motorola One Vision'\n}, {\n brand: 'Nokia',\n model: '5.1 Plus'\n}, {\n brand: 'Nokia',\n model: 'Nokia 6.1 Plus'\n}, {\n brand: 'Nokia',\n model: '7.1'\n}, {\n brand: 'Nokia',\n model: '8.1'\n}, {\n brand: 'OnePlus',\n model: '6'\n}, {\n brand: 'OnePlus',\n model: 'A6003'\n}, {\n brand: 'ONEPLUS',\n model: 'A6000'\n}, {\n brand: 'OnePlus',\n model: 'OnePlus A6003'\n}, {\n brand: 'OnePlus',\n model: 'ONEPLUS A6010'\n}, {\n brand: 'OnePlus',\n model: 'ONEPLUS A6013'\n}, {\n brand: 'OnePlus',\n model: 'ONEPLUS A6000'\n}, {\n brand: 'Oppo',\n model: 'R15'\n}, {\n brand: 'Oppo',\n model: 'R15 Pro'\n}, {\n brand: 'Oppo',\n model: 'F7'\n}, {\n brand: 'Oukitel',\n model: 'U18'\n}, {\n brand: 'Redmi',\n model: 'M2004J19C'\n}, {\n brand: 'Sharp',\n model: 'Aquos S3'\n}, {\n brand: 'Vivo',\n model: 'V9'\n}, {\n brand: 'Vivo',\n model: 'X21'\n}, {\n brand: 'Vivo',\n model: 'X21 UD'\n}, {\n brand: 'xiaomi',\n model: 'MI 8'\n}, {\n brand: 'xiaomi',\n model: 'MI 8 Explorer Edition'\n}, {\n brand: 'xiaomi',\n model: 'MI 8 SE'\n}, {\n brand: 'xiaomi',\n model: 'MI 8 UD'\n}, {\n brand: 'xiaomi',\n model: 'MI 8 Lite'\n}, {\n brand: 'xiaomi',\n model: 'Mi 9'\n}, {\n brand: 'xiaomi',\n model: 'POCO F1'\n}, {\n brand: 'xiaomi',\n model: 'POCOPHONE F1'\n}, {\n brand: 'xiaomi',\n model: 'Redmi 6 Pro'\n}, {\n brand: 'xiaomi',\n model: 'Redmi Note 7'\n}, {\n brand: 'xiaomi',\n model: 'Redmi 7'\n}, {\n brand: 'xiaomi',\n model: 'Redmi Note 8'\n}, {\n brand: 'xiaomi',\n model: 'Redmi Note 8 Pro'\n}, {\n brand: 'xiaomi',\n model: 'Mi A2 Lite'\n}, {\n brand: 'Blackview',\n model: 'A30'\n}, {\n brand: 'Samsung',\n model: 'SM-A202F'\n}, {\n brand: 'Samsung',\n model: 'SM-A217F'\n}, {\n brand: 'Samsung',\n model: 'SM-A715F'\n}];\nexport default devicesWithNotch;\n//# sourceMappingURL=devicesWithNotch.js.map","import { Platform, NativeModules } from 'react-native';\nlet RNDeviceInfo = NativeModules.RNDeviceInfo; // @ts-ignore\n\nif (Platform.OS === 'web' || Platform.OS === 'dom') {\n RNDeviceInfo = require('../web');\n}\n\nif (!RNDeviceInfo) {\n // Produce an error if we don't have the native module\n if (Platform.OS === 'android' || Platform.OS === 'ios' || Platform.OS === 'web' || // @ts-ignore\n Platform.OS === 'dom') {\n throw new Error(`react-native-device-info: NativeModule.RNDeviceInfo is null. To fix this issue try these steps:\n • For react-native <= 0.59: Run \\`react-native link react-native-device-info\\` in the project root.\n • Rebuild and re-run the app.\n • If you are using CocoaPods on iOS, run \\`pod install\\` in the \\`ios\\` directory and then rebuild and re-run the app. You may also need to re-open Xcode to get the new pods.\n If none of these fix the issue, please open an issue on the Github repository: https://github.com/react-native-device-info/react-native-device-info`);\n }\n}\n\nexport default RNDeviceInfo;\n//# sourceMappingURL=nativeInterface.js.map","import { Platform } from 'react-native';\n// centralized memo object\nlet memo = {};\nexport function clearMemo() {\n memo = {};\n}\n/**\n * function returns the proper getter based current platform X supported platforms\n * @param supportedPlatforms array of supported platforms (OS)\n * @param getter desired function used to get info\n * @param defaultGetter getter that returns a default value if desired getter is not supported by current platform\n */\n\nfunction getSupportedFunction(supportedPlatforms, getter, defaultGetter) {\n let supportedMap = {};\n supportedPlatforms.filter(key => Platform.OS == key).forEach(key => supportedMap[key] = getter);\n return Platform.select({ ...supportedMap,\n default: defaultGetter\n });\n}\n/**\n * function used to get desired info synchronously — with optional memoization\n * @param param0\n */\n\n\nexport function getSupportedPlatformInfoSync({\n getter,\n supportedPlatforms,\n defaultValue,\n memoKey\n}) {\n if (memoKey && memo[memoKey] != undefined) {\n return memo[memoKey];\n } else {\n const output = getSupportedFunction(supportedPlatforms, getter, () => defaultValue)();\n\n if (memoKey) {\n memo[memoKey] = output;\n }\n\n return output;\n }\n}\n/**\n * function used to get desired info asynchronously — with optional memoization\n * @param param0\n */\n\nexport async function getSupportedPlatformInfoAsync({\n getter,\n supportedPlatforms,\n defaultValue,\n memoKey\n}) {\n if (memoKey && memo[memoKey] != undefined) {\n return memo[memoKey];\n } else {\n const output = await getSupportedFunction(supportedPlatforms, getter, () => Promise.resolve(defaultValue))();\n\n if (memoKey) {\n memo[memoKey] = output;\n }\n\n return output;\n }\n}\n/**\n * function that returns array of getter functions [async, sync]\n * @param param0\n */\n\nexport function getSupportedPlatformInfoFunctions({\n syncGetter,\n ...asyncParams\n}) {\n return [() => getSupportedPlatformInfoAsync(asyncParams), () => getSupportedPlatformInfoSync({ ...asyncParams,\n getter: syncGetter\n })];\n}\n//# sourceMappingURL=supported-platform-info.js.map","import { useCallback, useEffect, useState } from 'react';\nimport { Dimensions, NativeEventEmitter, NativeModules, Platform } from 'react-native';\nimport { useOnEvent, useOnMount } from './internal/asyncHookWrappers';\nimport devicesWithDynamicIsland from \"./internal/devicesWithDynamicIsland\";\nimport devicesWithNotch from './internal/devicesWithNotch';\nimport RNDeviceInfo from './internal/nativeInterface';\nimport { getSupportedPlatformInfoAsync, getSupportedPlatformInfoFunctions, getSupportedPlatformInfoSync } from './internal/supported-platform-info';\nexport const [getUniqueId, getUniqueIdSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'uniqueId',\n supportedPlatforms: ['android', 'ios', 'windows'],\n getter: () => RNDeviceInfo.getUniqueId(),\n syncGetter: () => RNDeviceInfo.getUniqueIdSync(),\n defaultValue: 'unknown'\n});\nlet uniqueId;\nexport async function syncUniqueId() {\n if (Platform.OS === 'ios') {\n uniqueId = await RNDeviceInfo.syncUniqueId();\n } else {\n uniqueId = await getUniqueId();\n }\n\n return uniqueId;\n}\nexport const [getInstanceId, getInstanceIdSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'instanceId',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getInstanceId(),\n syncGetter: () => RNDeviceInfo.getInstanceIdSync(),\n defaultValue: 'unknown'\n});\nexport const [getSerialNumber, getSerialNumberSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'serialNumber',\n supportedPlatforms: ['android', 'windows'],\n getter: () => RNDeviceInfo.getSerialNumber(),\n syncGetter: () => RNDeviceInfo.getSerialNumberSync(),\n defaultValue: 'unknown'\n});\nexport const [getAndroidId, getAndroidIdSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'androidId',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getAndroidId(),\n syncGetter: () => RNDeviceInfo.getAndroidIdSync(),\n defaultValue: 'unknown'\n});\nexport const [getIpAddress, getIpAddressSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios', 'windows'],\n getter: () => RNDeviceInfo.getIpAddress(),\n syncGetter: () => RNDeviceInfo.getIpAddressSync(),\n defaultValue: 'unknown'\n});\nexport const [isCameraPresent, isCameraPresentSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'windows', 'web'],\n getter: () => RNDeviceInfo.isCameraPresent(),\n syncGetter: () => RNDeviceInfo.isCameraPresentSync(),\n defaultValue: false\n});\nexport async function getMacAddress() {\n if (Platform.OS === 'android') {\n return RNDeviceInfo.getMacAddress();\n } else if (Platform.OS === 'ios') {\n return '02:00:00:00:00:00';\n }\n\n return 'unknown';\n}\nexport function getMacAddressSync() {\n if (Platform.OS === 'android') {\n return RNDeviceInfo.getMacAddressSync();\n } else if (Platform.OS === 'ios') {\n return '02:00:00:00:00:00';\n }\n\n return 'unknown';\n}\nexport const getDeviceId = () => getSupportedPlatformInfoSync({\n defaultValue: 'unknown',\n memoKey: 'deviceId',\n getter: () => RNDeviceInfo.deviceId,\n supportedPlatforms: ['android', 'ios', 'windows']\n});\nexport const [getManufacturer, getManufacturerSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'manufacturer',\n supportedPlatforms: ['android', 'ios', 'windows'],\n getter: () => Platform.OS == 'ios' ? Promise.resolve('Apple') : RNDeviceInfo.getSystemManufacturer(),\n syncGetter: () => Platform.OS == 'ios' ? 'Apple' : RNDeviceInfo.getSystemManufacturerSync(),\n defaultValue: 'unknown'\n});\nexport const getModel = () => getSupportedPlatformInfoSync({\n memoKey: 'model',\n defaultValue: 'unknown',\n supportedPlatforms: ['ios', 'android', 'windows'],\n getter: () => RNDeviceInfo.model\n});\nexport const getBrand = () => getSupportedPlatformInfoSync({\n memoKey: 'brand',\n supportedPlatforms: ['android', 'ios', 'windows'],\n defaultValue: 'unknown',\n getter: () => RNDeviceInfo.brand\n});\nexport const getSystemName = () => getSupportedPlatformInfoSync({\n defaultValue: 'unknown',\n supportedPlatforms: ['ios', 'android', 'windows'],\n memoKey: 'systemName',\n getter: () => Platform.select({\n ios: RNDeviceInfo.systemName,\n android: 'Android',\n windows: 'Windows',\n default: 'unknown'\n })\n});\nexport const getSystemVersion = () => getSupportedPlatformInfoSync({\n defaultValue: 'unknown',\n getter: () => RNDeviceInfo.systemVersion,\n supportedPlatforms: ['android', 'ios', 'windows'],\n memoKey: 'systemVersion'\n});\nexport const [getBuildId, getBuildIdSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'buildId',\n supportedPlatforms: ['android', 'ios', 'windows'],\n getter: () => RNDeviceInfo.getBuildId(),\n syncGetter: () => RNDeviceInfo.getBuildIdSync(),\n defaultValue: 'unknown'\n});\nexport const [getApiLevel, getApiLevelSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'apiLevel',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getApiLevel(),\n syncGetter: () => RNDeviceInfo.getApiLevelSync(),\n defaultValue: -1\n});\nexport const getBundleId = () => getSupportedPlatformInfoSync({\n memoKey: 'bundleId',\n supportedPlatforms: ['android', 'ios', 'windows'],\n defaultValue: 'unknown',\n getter: () => RNDeviceInfo.bundleId\n});\nexport const [getInstallerPackageName, getInstallerPackageNameSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'installerPackageName',\n supportedPlatforms: ['android', 'windows', 'ios'],\n getter: () => RNDeviceInfo.getInstallerPackageName(),\n syncGetter: () => RNDeviceInfo.getInstallerPackageNameSync(),\n defaultValue: 'unknown'\n});\nexport const getApplicationName = () => getSupportedPlatformInfoSync({\n memoKey: 'appName',\n defaultValue: 'unknown',\n getter: () => RNDeviceInfo.appName,\n supportedPlatforms: ['android', 'ios', 'windows']\n});\nexport const getBuildNumber = () => getSupportedPlatformInfoSync({\n memoKey: 'buildNumber',\n supportedPlatforms: ['android', 'ios', 'windows'],\n getter: () => RNDeviceInfo.buildNumber,\n defaultValue: 'unknown'\n});\nexport const getVersion = () => getSupportedPlatformInfoSync({\n memoKey: 'version',\n defaultValue: 'unknown',\n supportedPlatforms: ['android', 'ios', 'windows'],\n getter: () => RNDeviceInfo.appVersion\n});\nexport function getReadableVersion() {\n return getVersion() + '.' + getBuildNumber();\n}\nexport const [getDeviceName, getDeviceNameSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios', 'windows'],\n getter: () => RNDeviceInfo.getDeviceName(),\n syncGetter: () => RNDeviceInfo.getDeviceNameSync(),\n defaultValue: 'unknown'\n});\nexport const [getUsedMemory, getUsedMemorySync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios', 'windows', 'web'],\n getter: () => RNDeviceInfo.getUsedMemory(),\n syncGetter: () => RNDeviceInfo.getUsedMemorySync(),\n defaultValue: -1\n});\nexport const getUserAgent = () => getSupportedPlatformInfoAsync({\n memoKey: 'userAgent',\n defaultValue: 'unknown',\n supportedPlatforms: ['android', 'ios', 'web'],\n getter: () => RNDeviceInfo.getUserAgent()\n});\nexport const getUserAgentSync = () => getSupportedPlatformInfoSync({\n memoKey: 'userAgentSync',\n defaultValue: 'unknown',\n supportedPlatforms: ['android', 'web'],\n getter: () => RNDeviceInfo.getUserAgentSync()\n});\nexport const [getFontScale, getFontScaleSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios', 'windows'],\n getter: () => RNDeviceInfo.getFontScale(),\n syncGetter: () => RNDeviceInfo.getFontScaleSync(),\n defaultValue: -1\n});\nexport const [getBootloader, getBootloaderSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'bootloader',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getBootloader(),\n syncGetter: () => RNDeviceInfo.getBootloaderSync(),\n defaultValue: 'unknown'\n});\nexport const [getDevice, getDeviceSync] = getSupportedPlatformInfoFunctions({\n getter: () => RNDeviceInfo.getDevice(),\n syncGetter: () => RNDeviceInfo.getDeviceSync(),\n defaultValue: 'unknown',\n memoKey: 'device',\n supportedPlatforms: ['android']\n});\nexport const [getDisplay, getDisplaySync] = getSupportedPlatformInfoFunctions({\n memoKey: 'display',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getDisplay(),\n syncGetter: () => RNDeviceInfo.getDisplaySync(),\n defaultValue: 'unknown'\n});\nexport const [getFingerprint, getFingerprintSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'fingerprint',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getFingerprint(),\n syncGetter: () => RNDeviceInfo.getFingerprintSync(),\n defaultValue: 'unknown'\n});\nexport const [getHardware, getHardwareSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'hardware',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getHardware(),\n syncGetter: () => RNDeviceInfo.getHardwareSync(),\n defaultValue: 'unknown'\n});\nexport const [getHost, getHostSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'host',\n supportedPlatforms: ['android', 'windows'],\n getter: () => RNDeviceInfo.getHost(),\n syncGetter: () => RNDeviceInfo.getHostSync(),\n defaultValue: 'unknown'\n});\nexport const [getHostNames, getHostNamesSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'hostNames',\n supportedPlatforms: ['windows'],\n getter: () => RNDeviceInfo.getHostNames(),\n syncGetter: () => RNDeviceInfo.getHostNamesSync(),\n defaultValue: []\n});\nexport const [getProduct, getProductSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'product',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getProduct(),\n syncGetter: () => RNDeviceInfo.getProductSync(),\n defaultValue: 'unknown'\n});\nexport const [getTags, getTagsSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'tags',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getTags(),\n syncGetter: () => RNDeviceInfo.getTagsSync(),\n defaultValue: 'unknown'\n});\nexport const [getType, getTypeSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'type',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getType(),\n syncGetter: () => RNDeviceInfo.getTypeSync(),\n defaultValue: 'unknown'\n});\nexport const [getBaseOs, getBaseOsSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'baseOs',\n supportedPlatforms: ['android', 'web', 'windows'],\n getter: () => RNDeviceInfo.getBaseOs(),\n syncGetter: () => RNDeviceInfo.getBaseOsSync(),\n defaultValue: 'unknown'\n});\nexport const [getPreviewSdkInt, getPreviewSdkIntSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'previewSdkInt',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getPreviewSdkInt(),\n syncGetter: () => RNDeviceInfo.getPreviewSdkIntSync(),\n defaultValue: -1\n});\nexport const [getSecurityPatch, getSecurityPatchSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'securityPatch',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getSecurityPatch(),\n syncGetter: () => RNDeviceInfo.getSecurityPatchSync(),\n defaultValue: 'unknown'\n});\nexport const [getCodename, getCodenameSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'codeName',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getCodename(),\n syncGetter: () => RNDeviceInfo.getCodenameSync(),\n defaultValue: 'unknown'\n});\nexport const [getIncremental, getIncrementalSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'incremental',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getIncremental(),\n syncGetter: () => RNDeviceInfo.getIncrementalSync(),\n defaultValue: 'unknown'\n});\nexport const [isEmulator, isEmulatorSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'emulator',\n supportedPlatforms: ['android', 'ios', 'windows'],\n getter: () => RNDeviceInfo.isEmulator(),\n syncGetter: () => RNDeviceInfo.isEmulatorSync(),\n defaultValue: false\n});\nexport const isTablet = () => getSupportedPlatformInfoSync({\n defaultValue: false,\n supportedPlatforms: ['android', 'ios', 'windows'],\n memoKey: 'tablet',\n getter: () => RNDeviceInfo.isTablet\n});\nexport const isLowRamDevice = () => getSupportedPlatformInfoSync({\n defaultValue: false,\n supportedPlatforms: ['android'],\n memoKey: 'lowRam',\n getter: () => RNDeviceInfo.isLowRamDevice\n});\nexport const isDisplayZoomed = () => getSupportedPlatformInfoSync({\n defaultValue: false,\n supportedPlatforms: ['ios'],\n memoKey: 'zoomed',\n getter: () => RNDeviceInfo.isDisplayZoomed\n});\nexport const [isPinOrFingerprintSet, isPinOrFingerprintSetSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios', 'windows'],\n getter: () => RNDeviceInfo.isPinOrFingerprintSet(),\n syncGetter: () => RNDeviceInfo.isPinOrFingerprintSetSync(),\n defaultValue: false\n});\nlet notch;\nexport function hasNotch() {\n if (notch === undefined) {\n let _brand = getBrand();\n\n let _model = getModel();\n\n notch = devicesWithNotch.findIndex(item => item.brand.toLowerCase() === _brand.toLowerCase() && item.model.toLowerCase() === _model.toLowerCase()) !== -1;\n }\n\n return notch;\n}\nlet dynamicIsland;\nexport function hasDynamicIsland() {\n if (dynamicIsland === undefined) {\n let _brand = getBrand();\n\n let _model = getModel();\n\n dynamicIsland = devicesWithDynamicIsland.findIndex(item => item.brand.toLowerCase() === _brand.toLowerCase() && item.model.toLowerCase() === _model.toLowerCase()) !== -1;\n }\n\n return dynamicIsland;\n}\nexport const [hasGms, hasGmsSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.hasGms(),\n syncGetter: () => RNDeviceInfo.hasGmsSync(),\n defaultValue: false\n});\nexport const [hasHms, hasHmsSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.hasHms(),\n syncGetter: () => RNDeviceInfo.hasHmsSync(),\n defaultValue: false\n});\nexport const [getFirstInstallTime, getFirstInstallTimeSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'firstInstallTime',\n supportedPlatforms: ['android', 'ios', 'windows'],\n getter: () => RNDeviceInfo.getFirstInstallTime(),\n syncGetter: () => RNDeviceInfo.getFirstInstallTimeSync(),\n defaultValue: -1\n});\nexport const [getInstallReferrer, getInstallReferrerSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'installReferrer',\n supportedPlatforms: ['android', 'windows', 'web'],\n getter: () => RNDeviceInfo.getInstallReferrer(),\n syncGetter: () => RNDeviceInfo.getInstallReferrerSync(),\n defaultValue: 'unknown'\n});\nexport const [getLastUpdateTime, getLastUpdateTimeSync] = getSupportedPlatformInfoFunctions({\n memoKey: 'lastUpdateTime',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getLastUpdateTime(),\n syncGetter: () => RNDeviceInfo.getLastUpdateTimeSync(),\n defaultValue: -1\n});\nexport const [getCarrier, getCarrierSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios'],\n getter: () => RNDeviceInfo.getCarrier(),\n syncGetter: () => RNDeviceInfo.getCarrierSync(),\n defaultValue: 'unknown'\n});\nexport const [getTotalMemory, getTotalMemorySync] = getSupportedPlatformInfoFunctions({\n memoKey: 'totalMemory',\n supportedPlatforms: ['android', 'ios', 'windows', 'web'],\n getter: () => RNDeviceInfo.getTotalMemory(),\n syncGetter: () => RNDeviceInfo.getTotalMemorySync(),\n defaultValue: -1\n});\nexport const [getMaxMemory, getMaxMemorySync] = getSupportedPlatformInfoFunctions({\n memoKey: 'maxMemory',\n supportedPlatforms: ['android', 'windows', 'web'],\n getter: () => RNDeviceInfo.getMaxMemory(),\n syncGetter: () => RNDeviceInfo.getMaxMemorySync(),\n defaultValue: -1\n});\nexport const [getTotalDiskCapacity, getTotalDiskCapacitySync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios', 'windows', 'web'],\n getter: () => RNDeviceInfo.getTotalDiskCapacity(),\n syncGetter: () => RNDeviceInfo.getTotalDiskCapacitySync(),\n defaultValue: -1\n});\nexport async function getTotalDiskCapacityOld() {\n if (Platform.OS === 'android') {\n return RNDeviceInfo.getTotalDiskCapacityOld();\n }\n\n if (Platform.OS === 'ios' || Platform.OS === 'windows' || Platform.OS === 'web') {\n return getTotalDiskCapacity();\n }\n\n return -1;\n}\nexport function getTotalDiskCapacityOldSync() {\n if (Platform.OS === 'android') {\n return RNDeviceInfo.getTotalDiskCapacityOldSync();\n }\n\n if (Platform.OS === 'ios' || Platform.OS === 'windows' || Platform.OS === 'web') {\n return getTotalDiskCapacitySync();\n }\n\n return -1;\n}\nexport const [getFreeDiskStorage, getFreeDiskStorageSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios', 'windows', 'web'],\n getter: () => RNDeviceInfo.getFreeDiskStorage(),\n syncGetter: () => RNDeviceInfo.getFreeDiskStorageSync(),\n defaultValue: -1\n});\nexport async function getFreeDiskStorageOld() {\n if (Platform.OS === 'android') {\n return RNDeviceInfo.getFreeDiskStorageOld();\n }\n\n if (Platform.OS === 'ios' || Platform.OS === 'windows' || Platform.OS === 'web') {\n return getFreeDiskStorage();\n }\n\n return -1;\n}\nexport function getFreeDiskStorageOldSync() {\n if (Platform.OS === 'android') {\n return RNDeviceInfo.getFreeDiskStorageOldSync();\n }\n\n if (Platform.OS === 'ios' || Platform.OS === 'windows' || Platform.OS === 'web') {\n return getFreeDiskStorageSync();\n }\n\n return -1;\n}\nexport const [getBatteryLevel, getBatteryLevelSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios', 'windows', 'web'],\n getter: () => RNDeviceInfo.getBatteryLevel(),\n syncGetter: () => RNDeviceInfo.getBatteryLevelSync(),\n defaultValue: -1\n});\nexport const [getPowerState, getPowerStateSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['ios', 'android', 'windows', 'web'],\n getter: () => RNDeviceInfo.getPowerState(),\n syncGetter: () => RNDeviceInfo.getPowerStateSync(),\n defaultValue: {}\n});\nexport const [isBatteryCharging, isBatteryChargingSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios', 'windows', 'web'],\n getter: () => RNDeviceInfo.isBatteryCharging(),\n syncGetter: () => RNDeviceInfo.isBatteryChargingSync(),\n defaultValue: false\n});\nexport async function isLandscape() {\n return Promise.resolve(isLandscapeSync());\n}\nexport function isLandscapeSync() {\n const {\n height,\n width\n } = Dimensions.get('window');\n return width >= height;\n}\nexport const [isAirplaneMode, isAirplaneModeSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'web'],\n getter: () => RNDeviceInfo.isAirplaneMode(),\n syncGetter: () => RNDeviceInfo.isAirplaneModeSync(),\n defaultValue: false\n});\nexport const getDeviceType = () => {\n return getSupportedPlatformInfoSync({\n memoKey: 'deviceType',\n supportedPlatforms: ['android', 'ios', 'windows'],\n defaultValue: 'unknown',\n getter: () => RNDeviceInfo.deviceType\n });\n};\nexport const getDeviceTypeSync = () => {\n return getSupportedPlatformInfoSync({\n memoKey: 'deviceType',\n supportedPlatforms: ['android', 'ios', 'windows'],\n defaultValue: 'unknown',\n getter: () => RNDeviceInfo.deviceType\n });\n};\nexport const [supportedAbis, supportedAbisSync] = getSupportedPlatformInfoFunctions({\n memoKey: '_supportedAbis',\n supportedPlatforms: ['android', 'ios', 'windows'],\n getter: () => RNDeviceInfo.getSupportedAbis(),\n syncGetter: () => RNDeviceInfo.getSupportedAbisSync(),\n defaultValue: []\n});\nexport const [supported32BitAbis, supported32BitAbisSync] = getSupportedPlatformInfoFunctions({\n memoKey: '_supported32BitAbis',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getSupported32BitAbis(),\n syncGetter: () => RNDeviceInfo.getSupported32BitAbisSync(),\n defaultValue: []\n});\nexport const [supported64BitAbis, supported64BitAbisSync] = getSupportedPlatformInfoFunctions({\n memoKey: '_supported64BitAbis',\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getSupported64BitAbis(),\n syncGetter: () => RNDeviceInfo.getSupported64BitAbisSync(),\n defaultValue: []\n});\nexport async function hasSystemFeature(feature) {\n if (Platform.OS === 'android') {\n return RNDeviceInfo.hasSystemFeature(feature);\n }\n\n return false;\n}\nexport function hasSystemFeatureSync(feature) {\n if (Platform.OS === 'android') {\n return RNDeviceInfo.hasSystemFeatureSync(feature);\n }\n\n return false;\n}\nexport function isLowBatteryLevel(level) {\n if (Platform.OS === 'android') {\n return level < 0.15;\n }\n\n return level < 0.2;\n}\nexport const [getSystemAvailableFeatures, getSystemAvailableFeaturesSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getSystemAvailableFeatures(),\n syncGetter: () => RNDeviceInfo.getSystemAvailableFeaturesSync(),\n defaultValue: []\n});\nexport const [isLocationEnabled, isLocationEnabledSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios', 'web'],\n getter: () => RNDeviceInfo.isLocationEnabled(),\n syncGetter: () => RNDeviceInfo.isLocationEnabledSync(),\n defaultValue: false\n});\nexport const [isHeadphonesConnected, isHeadphonesConnectedSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios'],\n getter: () => RNDeviceInfo.isHeadphonesConnected(),\n syncGetter: () => RNDeviceInfo.isHeadphonesConnectedSync(),\n defaultValue: false\n});\nexport const [isWiredHeadphonesConnected, isWiredHeadphonesConnectedSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios'],\n getter: () => RNDeviceInfo.isWiredHeadphonesConnected(),\n syncGetter: () => RNDeviceInfo.isWiredHeadphonesConnectedSync(),\n defaultValue: false\n});\nexport const [isBluetoothHeadphonesConnected, isBluetoothHeadphonesConnectedSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios'],\n getter: () => RNDeviceInfo.isBluetoothHeadphonesConnected(),\n syncGetter: () => RNDeviceInfo.isBluetoothHeadphonesConnectedSync(),\n defaultValue: false\n});\nexport const [isMouseConnected, isMouseConnectedSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['windows'],\n getter: () => RNDeviceInfo.isMouseConnected(),\n syncGetter: () => RNDeviceInfo.isMouseConnectedSync(),\n defaultValue: false\n});\nexport const [isKeyboardConnected, isKeyboardConnectedSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['windows'],\n getter: () => RNDeviceInfo.isKeyboardConnected(),\n syncGetter: () => RNDeviceInfo.isKeyboardConnectedSync(),\n defaultValue: false\n});\nexport const [getSupportedMediaTypeList, getSupportedMediaTypeListSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android'],\n getter: () => RNDeviceInfo.getSupportedMediaTypeList(),\n syncGetter: () => RNDeviceInfo.getSupportedMediaTypeListSync(),\n defaultValue: []\n});\nexport const isTabletMode = () => getSupportedPlatformInfoAsync({\n supportedPlatforms: ['windows'],\n getter: () => RNDeviceInfo.isTabletMode(),\n defaultValue: false\n});\nexport const [getAvailableLocationProviders, getAvailableLocationProvidersSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['android', 'ios'],\n getter: () => RNDeviceInfo.getAvailableLocationProviders(),\n syncGetter: () => RNDeviceInfo.getAvailableLocationProvidersSync(),\n defaultValue: {}\n});\nexport const [getBrightness, getBrightnessSync] = getSupportedPlatformInfoFunctions({\n supportedPlatforms: ['ios'],\n getter: () => RNDeviceInfo.getBrightness(),\n syncGetter: () => RNDeviceInfo.getBrightnessSync(),\n defaultValue: -1\n});\nexport async function getDeviceToken() {\n if (Platform.OS === 'ios') {\n return RNDeviceInfo.getDeviceToken();\n }\n\n return 'unknown';\n}\nconst deviceInfoEmitter = new NativeEventEmitter(NativeModules.RNDeviceInfo);\nexport function useBatteryLevel() {\n const [batteryLevel, setBatteryLevel] = useState(null);\n useEffect(() => {\n const setInitialValue = async () => {\n const initialValue = await getBatteryLevel();\n setBatteryLevel(initialValue);\n };\n\n const onChange = level => {\n setBatteryLevel(level);\n };\n\n setInitialValue();\n const subscription = deviceInfoEmitter.addListener('RNDeviceInfo_batteryLevelDidChange', onChange);\n return () => subscription.remove();\n }, []);\n return batteryLevel;\n}\nexport function useBatteryLevelIsLow() {\n const [batteryLevelIsLow, setBatteryLevelIsLow] = useState(null);\n useEffect(() => {\n const setInitialValue = async () => {\n const initialValue = await getBatteryLevel();\n isLowBatteryLevel(initialValue) && setBatteryLevelIsLow(initialValue);\n };\n\n setInitialValue();\n\n const onChange = level => {\n setBatteryLevelIsLow(level);\n };\n\n const subscription = deviceInfoEmitter.addListener('RNDeviceInfo_batteryLevelIsLow', onChange);\n return () => subscription.remove();\n }, []);\n return batteryLevelIsLow;\n}\nexport function usePowerState() {\n const [powerState, setPowerState] = useState({});\n useEffect(() => {\n const setInitialValue = async () => {\n const initialValue = await getPowerState();\n setPowerState(initialValue);\n };\n\n const onChange = state => {\n setPowerState(state);\n };\n\n setInitialValue();\n const subscription = deviceInfoEmitter.addListener('RNDeviceInfo_powerStateDidChange', onChange);\n return () => subscription.remove();\n }, []);\n return powerState;\n}\nexport function useIsHeadphonesConnected() {\n return useOnEvent('RNDeviceInfo_headphoneConnectionDidChange', isHeadphonesConnected, false);\n}\nexport function useIsWiredHeadphonesConnected() {\n return useOnEvent('RNDeviceInfo_headphoneWiredConnectionDidChange', isWiredHeadphonesConnected, false);\n}\nexport function useIsBluetoothHeadphonesConnected() {\n return useOnEvent('RNDeviceInfo_headphoneBluetoothConnectionDidChange', isBluetoothHeadphonesConnected, false);\n}\nexport function useFirstInstallTime() {\n return useOnMount(getFirstInstallTime, -1);\n}\nexport function useDeviceName() {\n return useOnMount(getDeviceName, 'unknown');\n}\nexport function useHasSystemFeature(feature) {\n const asyncGetter = useCallback(() => hasSystemFeature(feature), [feature]);\n return useOnMount(asyncGetter, false);\n}\nexport function useIsEmulator() {\n return useOnMount(isEmulator, false);\n}\nexport function useManufacturer() {\n return useOnMount(getManufacturer, 'unknown');\n}\nexport function useBrightness() {\n const [brightness, setBrightness] = useState(null);\n useEffect(() => {\n const setInitialValue = async () => {\n const initialValue = await getBrightness();\n setBrightness(initialValue);\n };\n\n const onChange = value => {\n setBrightness(value);\n };\n\n setInitialValue();\n const subscription = deviceInfoEmitter.addListener('RNDeviceInfo_brightnessDidChange', onChange);\n return () => subscription.remove();\n }, []);\n return brightness;\n}\nconst DeviceInfo = {\n getAndroidId,\n getAndroidIdSync,\n getApiLevel,\n getApiLevelSync,\n getApplicationName,\n getAvailableLocationProviders,\n getAvailableLocationProvidersSync,\n getBaseOs,\n getBaseOsSync,\n getBatteryLevel,\n getBatteryLevelSync,\n getBootloader,\n getBootloaderSync,\n getBrand,\n getBuildId,\n getBuildIdSync,\n getBuildNumber,\n getBundleId,\n getCarrier,\n getCarrierSync,\n getCodename,\n getCodenameSync,\n getDevice,\n getDeviceId,\n getDeviceName,\n getDeviceNameSync,\n getDeviceSync,\n getDeviceToken,\n getDeviceType,\n getDisplay,\n getDisplaySync,\n getFingerprint,\n getFingerprintSync,\n getFirstInstallTime,\n getFirstInstallTimeSync,\n getFontScale,\n getFontScaleSync,\n getFreeDiskStorage,\n getFreeDiskStorageOld,\n getFreeDiskStorageSync,\n getFreeDiskStorageOldSync,\n getHardware,\n getHardwareSync,\n getHost,\n getHostSync,\n getHostNames,\n getHostNamesSync,\n getIncremental,\n getIncrementalSync,\n getInstallerPackageName,\n getInstallerPackageNameSync,\n getInstallReferrer,\n getInstallReferrerSync,\n getInstanceId,\n getInstanceIdSync,\n getIpAddress,\n getIpAddressSync,\n getLastUpdateTime,\n getLastUpdateTimeSync,\n getMacAddress,\n getMacAddressSync,\n getManufacturer,\n getManufacturerSync,\n getMaxMemory,\n getMaxMemorySync,\n getModel,\n getPowerState,\n getPowerStateSync,\n getPreviewSdkInt,\n getPreviewSdkIntSync,\n getProduct,\n getProductSync,\n getReadableVersion,\n getSecurityPatch,\n getSecurityPatchSync,\n getSerialNumber,\n getSerialNumberSync,\n getSystemAvailableFeatures,\n getSystemAvailableFeaturesSync,\n getSystemName,\n getSystemVersion,\n getTags,\n getTagsSync,\n getTotalDiskCapacity,\n getTotalDiskCapacityOld,\n getTotalDiskCapacitySync,\n getTotalDiskCapacityOldSync,\n getTotalMemory,\n getTotalMemorySync,\n getType,\n getTypeSync,\n getUniqueId,\n getUniqueIdSync,\n getUsedMemory,\n getUsedMemorySync,\n getUserAgent,\n getUserAgentSync,\n getVersion,\n getBrightness,\n getBrightnessSync,\n hasGms,\n hasGmsSync,\n hasHms,\n hasHmsSync,\n hasNotch,\n hasDynamicIsland,\n hasSystemFeature,\n hasSystemFeatureSync,\n isAirplaneMode,\n isAirplaneModeSync,\n isBatteryCharging,\n isBatteryChargingSync,\n isCameraPresent,\n isCameraPresentSync,\n isEmulator,\n isEmulatorSync,\n isHeadphonesConnected,\n isHeadphonesConnectedSync,\n isWiredHeadphonesConnected,\n isWiredHeadphonesConnectedSync,\n isBluetoothHeadphonesConnected,\n isBluetoothHeadphonesConnectedSync,\n isLandscape,\n isLandscapeSync,\n isLocationEnabled,\n isLocationEnabledSync,\n isPinOrFingerprintSet,\n isPinOrFingerprintSetSync,\n isMouseConnected,\n isMouseConnectedSync,\n isKeyboardConnected,\n isKeyboardConnectedSync,\n isTabletMode,\n isTablet,\n isLowRamDevice,\n isDisplayZoomed,\n supported32BitAbis,\n supported32BitAbisSync,\n supported64BitAbis,\n supported64BitAbisSync,\n supportedAbis,\n supportedAbisSync,\n syncUniqueId,\n useBatteryLevel,\n useBatteryLevelIsLow,\n useDeviceName,\n useFirstInstallTime,\n useHasSystemFeature,\n useIsEmulator,\n usePowerState,\n useManufacturer,\n useIsHeadphonesConnected,\n useIsWiredHeadphonesConnected,\n useIsBluetoothHeadphonesConnected,\n useBrightness,\n getSupportedMediaTypeList,\n getSupportedMediaTypeListSync\n};\nexport default DeviceInfo;\n//# sourceMappingURL=index.js.map","// adapters/native/deviceInfoNative.native.ts\nimport { Platform } from \"react-native\";\nimport DeviceInfoLib from \"react-native-device-info\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { Telemetry } from \"../../core/telemetry\";\nimport { DeviceInfo } from \"../../core/telemetry\";\n\nexport class DeviceInfoTrackerNative {\n // private telemetry: Telemetry;\n\n // constructor(telemetry?: Telemetry) {\n // this.telemetry = telemetry || new Telemetry();\n // }\n\n constructor() {\n }\n\n async collect(): Promise<DeviceInfo> {\n // 🔹 Device ID\n let uniqueId = \"\";\n try {\n uniqueId = await DeviceInfoLib.getUniqueId();\n } catch {\n uniqueId = `device_${Date.now()}_${uuidv4()}_${Platform.OS}`;\n }\n\n // 🔹 App metadata\n const appName = (await DeviceInfoLib.getApplicationName()) || \"UnknownApp\";\n const appVersion = (await DeviceInfoLib.getVersion()) || \"0.0.0\";\n const buildNumber = (await DeviceInfoLib.getBuildNumber()) || \"0\";\n const packageName = (await DeviceInfoLib.getBundleId()) || \"unknown.package\";\n\n // 🔹 Common Device metadata\n const brand = await DeviceInfoLib.getBrand();\n const manufacturer = (await DeviceInfoLib.getManufacturer()) || \"\";\n const model = (await DeviceInfoLib.getModel()) || \"\";\n const systemVersion = (await DeviceInfoLib.getSystemVersion()) || \"\";\n const systemName = (await DeviceInfoLib.getSystemName()) || \"\"; // iOS: \"iOS\", Android: \"Android\"\n const deviceName = (await DeviceInfoLib.getDeviceName()) || \"\";\n\n // 🔹 Android-only fields\n const sdk = Platform.OS === \"android\" ? await DeviceInfoLib.getApiLevel() : undefined;\n const fingerprint = Platform.OS === \"android\" ? await DeviceInfoLib.getFingerprint?.() : undefined;\n const hardware = Platform.OS === \"android\" ? await DeviceInfoLib.getHardware?.() : undefined;\n const product = Platform.OS === \"android\" ? await DeviceInfoLib.getProduct?.() : undefined;\n\n // 🔹 iOS-only fields\n const iosSystemName = Platform.OS === \"ios\" ? systemName : undefined;\n const iosDeviceName = Platform.OS === \"ios\" ? deviceName : undefined;\n\n const info: DeviceInfo = {\n app: {\n name: appName,\n version: appVersion,\n buildNumber,\n packageName,\n },\n device: {\n id: uniqueId,\n platform: Platform.OS,\n platformVersion: systemVersion,\n model,\n manufacturer,\n brand,\n\n // Android fields\n androidSdk: sdk ? String(sdk) : undefined,\n androidRelease: Platform.OS === \"android\" ? systemVersion : undefined,\n fingerprint,\n hardware,\n product,\n\n // iOS fields\n iosSystemName,\n iosDeviceName,\n },\n };\n\n return info;\n }\n\n /**\n * Context-only adapter. collect() feeds the Context block on every event;\n * start() emits no standalone device_info event (ADR-0002).\n */\n async start(_telemetry: Telemetry): Promise<void> {\n // no-op: device metadata rides as attributes on every event\n }\n}\n"],"names":["useOnMount","asyncGetter","initialResult","response","setResponse","useState","useEffect","result","deviceInfoEmitter","NativeEventEmitter","NativeModules","useOnEvent","eventName","initialValueAsyncGetter","defaultValue","loading","setResult","subscription","useMemo","devicesWithDynamicIsland","devicesWithNotch","RNDeviceInfo","Platform","memo","getSupportedFunction","supportedPlatforms","getter","defaultGetter","supportedMap","key","getSupportedPlatformInfoSync","memoKey","output","getSupportedPlatformInfoAsync","getSupportedPlatformInfoFunctions","syncGetter","asyncParams","getUniqueId","getUniqueIdSync","uniqueId","syncUniqueId","getInstanceId","getInstanceIdSync","getSerialNumber","getSerialNumberSync","getAndroidId","getAndroidIdSync","getIpAddress","getIpAddressSync","isCameraPresent","isCameraPresentSync","getMacAddress","getMacAddressSync","getDeviceId","getManufacturer","getManufacturerSync","getModel","getBrand","getSystemName","getSystemVersion","getBuildId","getBuildIdSync","getApiLevel","getApiLevelSync","getBundleId","getInstallerPackageName","getInstallerPackageNameSync","getApplicationName","getBuildNumber","getVersion","getReadableVersion","getDeviceName","getDeviceNameSync","getUsedMemory","getUsedMemorySync","getUserAgent","getUserAgentSync","getFontScale","getFontScaleSync","getBootloader","getBootloaderSync","getDevice","getDeviceSync","getDisplay","getDisplaySync","getFingerprint","getFingerprintSync","getHardware","getHardwareSync","getHost","getHostSync","getHostNames","getHostNamesSync","getProduct","getProductSync","getTags","getTagsSync","getType","getTypeSync","getBaseOs","getBaseOsSync","getPreviewSdkInt","getPreviewSdkIntSync","getSecurityPatch","getSecurityPatchSync","getCodename","getCodenameSync","getIncremental","getIncrementalSync","isEmulator","isEmulatorSync","isTablet","isLowRamDevice","isDisplayZoomed","isPinOrFingerprintSet","isPinOrFingerprintSetSync","notch","hasNotch","_brand","_model","item","dynamicIsland","hasDynamicIsland","hasGms","hasGmsSync","hasHms","hasHmsSync","getFirstInstallTime","getFirstInstallTimeSync","getInstallReferrer","getInstallReferrerSync","getLastUpdateTime","getLastUpdateTimeSync","getCarrier","getCarrierSync","getTotalMemory","getTotalMemorySync","getMaxMemory","getMaxMemorySync","getTotalDiskCapacity","getTotalDiskCapacitySync","getTotalDiskCapacityOld","getTotalDiskCapacityOldSync","getFreeDiskStorage","getFreeDiskStorageSync","getFreeDiskStorageOld","getFreeDiskStorageOldSync","getBatteryLevel","getBatteryLevelSync","getPowerState","getPowerStateSync","isBatteryCharging","isBatteryChargingSync","isLandscape","isLandscapeSync","height","width","Dimensions","isAirplaneMode","isAirplaneModeSync","getDeviceType","supportedAbis","supportedAbisSync","supported32BitAbis","supported32BitAbisSync","supported64BitAbis","supported64BitAbisSync","hasSystemFeature","feature","hasSystemFeatureSync","isLowBatteryLevel","level","getSystemAvailableFeatures","getSystemAvailableFeaturesSync","isLocationEnabled","isLocationEnabledSync","isHeadphonesConnected","isHeadphonesConnectedSync","isWiredHeadphonesConnected","isWiredHeadphonesConnectedSync","isBluetoothHeadphonesConnected","isBluetoothHeadphonesConnectedSync","isMouseConnected","isMouseConnectedSync","isKeyboardConnected","isKeyboardConnectedSync","getSupportedMediaTypeList","getSupportedMediaTypeListSync","isTabletMode","getAvailableLocationProviders","getAvailableLocationProvidersSync","getBrightness","getBrightnessSync","getDeviceToken","useBatteryLevel","batteryLevel","setBatteryLevel","setInitialValue","initialValue","onChange","useBatteryLevelIsLow","batteryLevelIsLow","setBatteryLevelIsLow","usePowerState","powerState","setPowerState","state","useIsHeadphonesConnected","useIsWiredHeadphonesConnected","useIsBluetoothHeadphonesConnected","useFirstInstallTime","useDeviceName","useHasSystemFeature","useCallback","useIsEmulator","useManufacturer","useBrightness","brightness","setBrightness","value","DeviceInfo","DeviceInfoTrackerNative","DeviceInfoLib","uuidv4","appName","appVersion","buildNumber","packageName","brand","manufacturer","model","systemVersion","systemName","deviceName","sdk","fingerprint","hardware","product","iosSystemName","iosDeviceName","_telemetry"],"mappings":";;;AAQO,SAASA,EAAWC,GAAaC,GAAe;AACrD,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAS;AAAA,IACvC,SAAS;AAAA,IACT,QAAQH;AAAA,EACZ,CAAG;AACD,SAAAI,EAAU,MAAM;AAUd,KARiB,YAAY;AAC3B,YAAMC,IAAS,MAAMN,EAAW;AAChC,MAAAG,EAAY;AAAA,QACV,SAAS;AAAA,QACT,QAAAG;AAAA,MACR,CAAO;AAAA,IACH,GAEQ;AAAA,EACV,GAAG,CAACN,CAAW,CAAC,GACTE;AACT;AACO,MAAMK,KAAoB,IAAIC,EAAmBC,EAAc,YAAY;AAQ3E,SAASC,EAAWC,GAAWC,GAAyBC,GAAc;AAC3E,QAAM;AAAA,IACJ,SAAAC;AAAA,IACA,QAAQb;AAAA,EACZ,IAAMF,EAAWa,GAAyBC,CAAY,GAC9C,CAACP,GAAQS,CAAS,IAAIX,EAASS,CAAY;AAEjD,SAAAR,EAAU,MAAM;AACd,IAAAU,EAAUd,CAAa;AAAA,EACzB,GAAG,CAACA,CAAa,CAAC,GAGlBI,EAAU,MAAM;AACd,UAAMW,IAAeT,GAAkB,YAAYI,GAAWI,CAAS;AACvE,WAAO,MAAMC,EAAa,OAAM;AAAA,EAClC,GAAG,CAACL,CAAS,CAAC,GAEPM,GAAQ,OAAO;AAAA,IACpB,SAAAH;AAAA,IACA,QAAAR;AAAA,EACJ,IAAM,CAACQ,GAASR,CAAM,CAAC;AACvB;ACxDA,MAAMY,KAA2B,CAAC;AAAA,EAChC,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,CAAC,GC9BKC,KAAmB,CAAC;AAAA,EACxB,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AAAA;AAET,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AAAA;AAET,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AAAA;AAET,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AAAA;AAET,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AAAA;AAET,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AACT,GAAG;AAAA,EACD,OAAO;AAAA,EACP,OAAO;AAC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","x_google_ignoreList":[0,1,2,3,4,5]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./v4-CqdK_b8Y.cjs");class r{constructor(){}async collect(){const e=navigator.userAgent;return{app:{name:document.title||"WebApp",version:process.env.APP_VERSION||"1.0.0",buildNumber:process.env.BUILD_NUMBER,packageName:window.location.hostname},device:{id:`device_${Date.now()}_${o.v4()}_web`,platform:"web",platformVersion:navigator.appVersion,model:e,manufacturer:"browser",brand:navigator.vendor||"unknown",androidSdk:void 0,androidRelease:void 0,fingerprint:void 0,hardware:void 0,product:void 0,iosSystemName:void 0,iosDeviceName:void 0}}}async start(e){this.telemetry=e}}exports.DeviceInfoTrackerWeb=r;
2
+ //# sourceMappingURL=deviceInfo.web-ByNAlEJh.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceInfo.web-ByNAlEJh.cjs","sources":["../src/adapters/web/deviceInfo.web.ts"],"sourcesContent":["// adapters/web/deviceInfoWeb.web.ts\nimport { v4 as uuidv4 } from \"uuid\";\nimport { DeviceInfo, Telemetry } from \"../../core/telemetry\";\n\nexport class DeviceInfoTrackerWeb {\n private telemetry?: Telemetry;\n\n\n constructor() {\n }\n async collect(): Promise<DeviceInfo> {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n\n return {\n app: {\n name: document.title || \"WebApp\",\n version: process.env.APP_VERSION || \"1.0.0\",\n buildNumber: process.env.BUILD_NUMBER,\n packageName: window.location.hostname,\n },\n device: {\n id: `device_${Date.now()}_${uuidv4()}_web`,\n platform: \"web\",\n platformVersion: navigator.appVersion,\n model: ua,\n manufacturer: \"browser\",\n brand: navigator.vendor || \"unknown\",\n\n // Android placeholders\n androidSdk: undefined,\n androidRelease: undefined,\n fingerprint: undefined,\n hardware: undefined,\n product: undefined,\n\n // iOS placeholders\n iosSystemName: undefined,\n iosDeviceName: undefined,\n },\n };\n }\n\n async start(telemetry: Telemetry): Promise<void> {\n // context-only adapter — collect() feeds the Context block on every event;\n // no standalone device_info event (ADR-0002)\n this.telemetry = telemetry;\n }\n}\n"],"names":["DeviceInfoTrackerWeb","ua","uuidv4","telemetry"],"mappings":"qHAIO,MAAMA,CAAqB,CAI9B,aAAc,CACd,CACA,MAAM,SAA+B,CACjC,MAAMC,EAAK,UAAU,UAGrB,MAAO,CACH,IAAK,CACD,KAAM,SAAS,OAAS,SACxB,QAAS,QAAQ,IAAI,aAAe,QACpC,YAAa,QAAQ,IAAI,aACzB,YAAa,OAAO,SAAS,QAAA,EAEjC,OAAQ,CACJ,GAAI,UAAU,KAAK,KAAK,IAAIC,EAAAA,IAAQ,OACpC,SAAU,MACV,gBAAiB,UAAU,WAC3B,MAAOD,EACP,aAAc,UACd,MAAO,UAAU,QAAU,UAG3B,WAAY,OACZ,eAAgB,OAChB,YAAa,OACb,SAAU,OACV,QAAS,OAGT,cAAe,OACf,cAAe,MAAA,CACnB,CAER,CAEA,MAAM,MAAME,EAAqC,CAG7C,KAAK,UAAYA,CACrB,CACJ"}
@@ -0,0 +1,40 @@
1
+ import { v as o } from "./v4-BysszJq8.js";
2
+ class n {
3
+ constructor() {
4
+ }
5
+ async collect() {
6
+ const e = navigator.userAgent;
7
+ return {
8
+ app: {
9
+ name: document.title || "WebApp",
10
+ version: process.env.APP_VERSION || "1.0.0",
11
+ buildNumber: process.env.BUILD_NUMBER,
12
+ packageName: window.location.hostname
13
+ },
14
+ device: {
15
+ id: `device_${Date.now()}_${o()}_web`,
16
+ platform: "web",
17
+ platformVersion: navigator.appVersion,
18
+ model: e,
19
+ manufacturer: "browser",
20
+ brand: navigator.vendor || "unknown",
21
+ // Android placeholders
22
+ androidSdk: void 0,
23
+ androidRelease: void 0,
24
+ fingerprint: void 0,
25
+ hardware: void 0,
26
+ product: void 0,
27
+ // iOS placeholders
28
+ iosSystemName: void 0,
29
+ iosDeviceName: void 0
30
+ }
31
+ };
32
+ }
33
+ async start(e) {
34
+ this.telemetry = e;
35
+ }
36
+ }
37
+ export {
38
+ n as DeviceInfoTrackerWeb
39
+ };
40
+ //# sourceMappingURL=deviceInfo.web-DzQyEku6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deviceInfo.web-DzQyEku6.js","sources":["../src/adapters/web/deviceInfo.web.ts"],"sourcesContent":["// adapters/web/deviceInfoWeb.web.ts\nimport { v4 as uuidv4 } from \"uuid\";\nimport { DeviceInfo, Telemetry } from \"../../core/telemetry\";\n\nexport class DeviceInfoTrackerWeb {\n private telemetry?: Telemetry;\n\n\n constructor() {\n }\n async collect(): Promise<DeviceInfo> {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n\n return {\n app: {\n name: document.title || \"WebApp\",\n version: process.env.APP_VERSION || \"1.0.0\",\n buildNumber: process.env.BUILD_NUMBER,\n packageName: window.location.hostname,\n },\n device: {\n id: `device_${Date.now()}_${uuidv4()}_web`,\n platform: \"web\",\n platformVersion: navigator.appVersion,\n model: ua,\n manufacturer: \"browser\",\n brand: navigator.vendor || \"unknown\",\n\n // Android placeholders\n androidSdk: undefined,\n androidRelease: undefined,\n fingerprint: undefined,\n hardware: undefined,\n product: undefined,\n\n // iOS placeholders\n iosSystemName: undefined,\n iosDeviceName: undefined,\n },\n };\n }\n\n async start(telemetry: Telemetry): Promise<void> {\n // context-only adapter — collect() feeds the Context block on every event;\n // no standalone device_info event (ADR-0002)\n this.telemetry = telemetry;\n }\n}\n"],"names":["DeviceInfoTrackerWeb","ua","uuidv4","telemetry"],"mappings":";AAIO,MAAMA,EAAqB;AAAA,EAI9B,cAAc;AAAA,EACd;AAAA,EACA,MAAM,UAA+B;AACjC,UAAMC,IAAK,UAAU;AAGrB,WAAO;AAAA,MACH,KAAK;AAAA,QACD,MAAM,SAAS,SAAS;AAAA,QACxB,SAAS,QAAQ,IAAI,eAAe;AAAA,QACpC,aAAa,QAAQ,IAAI;AAAA,QACzB,aAAa,OAAO,SAAS;AAAA,MAAA;AAAA,MAEjC,QAAQ;AAAA,QACJ,IAAI,UAAU,KAAK,KAAK,IAAIC,GAAQ;AAAA,QACpC,UAAU;AAAA,QACV,iBAAiB,UAAU;AAAA,QAC3B,OAAOD;AAAA,QACP,cAAc;AAAA,QACd,OAAO,UAAU,UAAU;AAAA;AAAA,QAG3B,YAAY;AAAA,QACZ,gBAAgB;AAAA,QAChB,aAAa;AAAA,QACb,UAAU;AAAA,QACV,SAAS;AAAA;AAAA,QAGT,eAAe;AAAA,QACf,eAAe;AAAA,MAAA;AAAA,IACnB;AAAA,EAER;AAAA,EAEA,MAAM,MAAME,GAAqC;AAG7C,SAAK,YAAYA;AAAA,EACrB;AACJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";function u(r,a,n){const o=1e3/a,e=[...r].sort((t,g)=>t-g),m=e[e.length-1],s=e[Math.ceil(.95*e.length)-1],c=r.filter(t=>t>o*2).length;return{value:s,attributes:{"frame.max_ms":m,"frame.p95_ms":s,"frame.dropped_count":c,"frame.target_hz":a,"frame.source":n}}}exports.aggregateFrames=u;
2
+ //# sourceMappingURL=frameAggregate-C_HoVFcK.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frameAggregate-C_HoVFcK.cjs","sources":["../src/adapters/frameAggregate.ts"],"sourcesContent":["// Aggregate a window of frame deltas (ms) into the iOS-shape frame_render_time metric.\n// Shared by the web and native frame trackers so the percentile math lives in one place.\n// Additive attributes (frame.*) are tracked in docs/backend-additions-ledger.md.\n\nexport interface FrameAggregate {\n value: number; // metric value = p95 frame time (representative render time)\n attributes: {\n \"frame.max_ms\": number;\n \"frame.p95_ms\": number;\n \"frame.dropped_count\": number; // frames slower than 2x budget\n \"frame.target_hz\": number;\n \"frame.source\": string;\n };\n}\n\n/** deltas must be non-empty. Percentile is nearest-rank on the sorted deltas. */\nexport function aggregateFrames(deltas: number[], targetFPS: number, source: string): FrameAggregate {\n const budget = 1000 / targetFPS;\n const sorted = [...deltas].sort((a, b) => a - b);\n const max = sorted[sorted.length - 1];\n const p95 = sorted[Math.ceil(0.95 * sorted.length) - 1];\n const dropped = deltas.filter((d) => d > budget * 2).length;\n\n return {\n value: p95,\n attributes: {\n \"frame.max_ms\": max,\n \"frame.p95_ms\": p95,\n \"frame.dropped_count\": dropped,\n \"frame.target_hz\": targetFPS,\n \"frame.source\": source,\n },\n };\n}\n"],"names":["aggregateFrames","deltas","targetFPS","source","budget","sorted","a","b","max","p95","dropped","d"],"mappings":"aAgBO,SAASA,EAAgBC,EAAkBC,EAAmBC,EAAgC,CACjG,MAAMC,EAAS,IAAOF,EAChBG,EAAS,CAAC,GAAGJ,CAAM,EAAE,KAAK,CAACK,EAAGC,IAAMD,EAAIC,CAAC,EACzCC,EAAMH,EAAOA,EAAO,OAAS,CAAC,EAC9BI,EAAMJ,EAAO,KAAK,KAAK,IAAOA,EAAO,MAAM,EAAI,CAAC,EAChDK,EAAUT,EAAO,OAAQU,GAAMA,EAAIP,EAAS,CAAC,EAAE,OAErD,MAAO,CACH,MAAOK,EACP,WAAY,CACR,eAAgBD,EAChB,eAAgBC,EAChB,sBAAuBC,EACvB,kBAAmBR,EACnB,eAAgBC,CAAA,CACpB,CAER"}
@@ -0,0 +1,17 @@
1
+ function g(r, a, n) {
2
+ const s = 1e3 / a, e = [...r].sort((t, f) => t - f), m = e[e.length - 1], o = e[Math.ceil(0.95 * e.length) - 1], c = r.filter((t) => t > s * 2).length;
3
+ return {
4
+ value: o,
5
+ attributes: {
6
+ "frame.max_ms": m,
7
+ "frame.p95_ms": o,
8
+ "frame.dropped_count": c,
9
+ "frame.target_hz": a,
10
+ "frame.source": n
11
+ }
12
+ };
13
+ }
14
+ export {
15
+ g as a
16
+ };
17
+ //# sourceMappingURL=frameAggregate-Cwh1juw1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frameAggregate-Cwh1juw1.js","sources":["../src/adapters/frameAggregate.ts"],"sourcesContent":["// Aggregate a window of frame deltas (ms) into the iOS-shape frame_render_time metric.\n// Shared by the web and native frame trackers so the percentile math lives in one place.\n// Additive attributes (frame.*) are tracked in docs/backend-additions-ledger.md.\n\nexport interface FrameAggregate {\n value: number; // metric value = p95 frame time (representative render time)\n attributes: {\n \"frame.max_ms\": number;\n \"frame.p95_ms\": number;\n \"frame.dropped_count\": number; // frames slower than 2x budget\n \"frame.target_hz\": number;\n \"frame.source\": string;\n };\n}\n\n/** deltas must be non-empty. Percentile is nearest-rank on the sorted deltas. */\nexport function aggregateFrames(deltas: number[], targetFPS: number, source: string): FrameAggregate {\n const budget = 1000 / targetFPS;\n const sorted = [...deltas].sort((a, b) => a - b);\n const max = sorted[sorted.length - 1];\n const p95 = sorted[Math.ceil(0.95 * sorted.length) - 1];\n const dropped = deltas.filter((d) => d > budget * 2).length;\n\n return {\n value: p95,\n attributes: {\n \"frame.max_ms\": max,\n \"frame.p95_ms\": p95,\n \"frame.dropped_count\": dropped,\n \"frame.target_hz\": targetFPS,\n \"frame.source\": source,\n },\n };\n}\n"],"names":["aggregateFrames","deltas","targetFPS","source","budget","sorted","a","b","max","p95","dropped","d"],"mappings":"AAgBO,SAASA,EAAgBC,GAAkBC,GAAmBC,GAAgC;AACjG,QAAMC,IAAS,MAAOF,GAChBG,IAAS,CAAC,GAAGJ,CAAM,EAAE,KAAK,CAACK,GAAGC,MAAMD,IAAIC,CAAC,GACzCC,IAAMH,EAAOA,EAAO,SAAS,CAAC,GAC9BI,IAAMJ,EAAO,KAAK,KAAK,OAAOA,EAAO,MAAM,IAAI,CAAC,GAChDK,IAAUT,EAAO,OAAO,CAACU,MAAMA,IAAIP,IAAS,CAAC,EAAE;AAErD,SAAO;AAAA,IACH,OAAOK;AAAA,IACP,YAAY;AAAA,MACR,gBAAgBD;AAAA,MAChB,gBAAgBC;AAAA,MAChB,uBAAuBC;AAAA,MACvB,mBAAmBR;AAAA,MACnB,gBAAgBC;AAAA,IAAA;AAAA,EACpB;AAER;"}
@@ -0,0 +1,23 @@
1
+ import { a as i } from "./frameAggregate-Cwh1juw1.js";
2
+ class m {
3
+ constructor(r, e = 60, t = 1e4) {
4
+ this.telemetry = r, this.targetFPS = e, this.windowMs = t, this.lastFrameTime = performance.now(), this.windowStart = performance.now(), this.deltas = [];
5
+ }
6
+ start() {
7
+ return new Promise((r) => {
8
+ const e = () => {
9
+ const t = performance.now();
10
+ if (this.deltas.push(t - this.lastFrameTime), this.lastFrameTime = t, t - this.windowStart >= this.windowMs && this.deltas.length > 0) {
11
+ const { value: s, attributes: a } = i(this.deltas, this.targetFPS, "requestAnimationFrame");
12
+ this.telemetry.logMetric("frame_render_time", s, a), this.deltas = [], this.windowStart = t;
13
+ }
14
+ requestAnimationFrame(e);
15
+ };
16
+ requestAnimationFrame(e), r();
17
+ });
18
+ }
19
+ }
20
+ export {
21
+ m as FrameDropTrackerNative
22
+ };
23
+ //# sourceMappingURL=frameDropsNative.native-CP7zrXDf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frameDropsNative.native-CP7zrXDf.js","sources":["../src/adapters/native/frameDropsNative.native.ts"],"sourcesContent":["import { Telemetry } from \"../../core/telemetry\";\nimport { aggregateFrames } from \"../frameAggregate\";\n\n/**\n * Samples frame deltas via requestAnimationFrame and emits an aggregated\n * `frame_render_time` metric (max/p95/dropped_count) once per window — instead of one event\n * per dropped frame. The metric shape matches the iOS contract (docs/edgerum-contract.md).\n */\nexport class FrameDropTrackerNative {\n private lastFrameTime = performance.now();\n private windowStart = performance.now();\n private deltas: number[] = [];\n\n constructor(\n private telemetry: Telemetry,\n private targetFPS = 60,\n private windowMs = 10000,\n ) { }\n\n start(): Promise<void> {\n return new Promise((resolve) => {\n const loop = () => {\n const now = performance.now();\n this.deltas.push(now - this.lastFrameTime);\n this.lastFrameTime = now;\n\n if (now - this.windowStart >= this.windowMs && this.deltas.length > 0) {\n // ponytail: first window includes the startup delta; acceptable noise, not worth gating.\n const { value, attributes } = aggregateFrames(this.deltas, this.targetFPS, \"requestAnimationFrame\");\n this.telemetry.logMetric(\"frame_render_time\", value, attributes);\n this.deltas = [];\n this.windowStart = now;\n }\n\n requestAnimationFrame(loop);\n };\n\n requestAnimationFrame(loop);\n resolve();\n });\n }\n}\n"],"names":["FrameDropTrackerNative","telemetry","targetFPS","windowMs","resolve","loop","now","value","attributes","aggregateFrames"],"mappings":";AAQO,MAAMA,EAAuB;AAAA,EAKhC,YACYC,GACAC,IAAY,IACZC,IAAW,KACrB;AAHU,SAAA,YAAAF,GACA,KAAA,YAAAC,GACA,KAAA,WAAAC,GAPZ,KAAQ,gBAAgB,YAAY,IAAA,GACpC,KAAQ,cAAc,YAAY,IAAA,GAClC,KAAQ,SAAmB,CAAA;AAAA,EAMvB;AAAA,EAEJ,QAAuB;AACnB,WAAO,IAAI,QAAQ,CAACC,MAAY;AAC5B,YAAMC,IAAO,MAAM;AACf,cAAMC,IAAM,YAAY,IAAA;AAIxB,YAHA,KAAK,OAAO,KAAKA,IAAM,KAAK,aAAa,GACzC,KAAK,gBAAgBA,GAEjBA,IAAM,KAAK,eAAe,KAAK,YAAY,KAAK,OAAO,SAAS,GAAG;AAEnE,gBAAM,EAAE,OAAAC,GAAO,YAAAC,EAAA,IAAeC,EAAgB,KAAK,QAAQ,KAAK,WAAW,uBAAuB;AAClG,eAAK,UAAU,UAAU,qBAAqBF,GAAOC,CAAU,GAC/D,KAAK,SAAS,CAAA,GACd,KAAK,cAAcF;AAAA,QACvB;AAEA,8BAAsBD,CAAI;AAAA,MAC9B;AAEA,4BAAsBA,CAAI,GAC1BD,EAAA;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./frameAggregate-C_HoVFcK.cjs");class o{constructor(r,e=60,t=1e4){this.telemetry=r,this.targetFPS=e,this.windowMs=t,this.lastFrameTime=performance.now(),this.windowStart=performance.now(),this.deltas=[]}start(){return new Promise(r=>{const e=()=>{const t=performance.now();if(this.deltas.push(t-this.lastFrameTime),this.lastFrameTime=t,t-this.windowStart>=this.windowMs&&this.deltas.length>0){const{value:s,attributes:a}=i.aggregateFrames(this.deltas,this.targetFPS,"requestAnimationFrame");this.telemetry.logMetric("frame_render_time",s,a),this.deltas=[],this.windowStart=t}requestAnimationFrame(e)};requestAnimationFrame(e),r()})}}exports.FrameDropTrackerNative=o;
2
+ //# sourceMappingURL=frameDropsNative.native-DKqEDqip.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frameDropsNative.native-DKqEDqip.cjs","sources":["../src/adapters/native/frameDropsNative.native.ts"],"sourcesContent":["import { Telemetry } from \"../../core/telemetry\";\nimport { aggregateFrames } from \"../frameAggregate\";\n\n/**\n * Samples frame deltas via requestAnimationFrame and emits an aggregated\n * `frame_render_time` metric (max/p95/dropped_count) once per window — instead of one event\n * per dropped frame. The metric shape matches the iOS contract (docs/edgerum-contract.md).\n */\nexport class FrameDropTrackerNative {\n private lastFrameTime = performance.now();\n private windowStart = performance.now();\n private deltas: number[] = [];\n\n constructor(\n private telemetry: Telemetry,\n private targetFPS = 60,\n private windowMs = 10000,\n ) { }\n\n start(): Promise<void> {\n return new Promise((resolve) => {\n const loop = () => {\n const now = performance.now();\n this.deltas.push(now - this.lastFrameTime);\n this.lastFrameTime = now;\n\n if (now - this.windowStart >= this.windowMs && this.deltas.length > 0) {\n // ponytail: first window includes the startup delta; acceptable noise, not worth gating.\n const { value, attributes } = aggregateFrames(this.deltas, this.targetFPS, \"requestAnimationFrame\");\n this.telemetry.logMetric(\"frame_render_time\", value, attributes);\n this.deltas = [];\n this.windowStart = now;\n }\n\n requestAnimationFrame(loop);\n };\n\n requestAnimationFrame(loop);\n resolve();\n });\n }\n}\n"],"names":["FrameDropTrackerNative","telemetry","targetFPS","windowMs","resolve","loop","now","value","attributes","aggregateFrames"],"mappings":"iIAQO,MAAMA,CAAuB,CAKhC,YACYC,EACAC,EAAY,GACZC,EAAW,IACrB,CAHU,KAAA,UAAAF,EACA,KAAA,UAAAC,EACA,KAAA,SAAAC,EAPZ,KAAQ,cAAgB,YAAY,IAAA,EACpC,KAAQ,YAAc,YAAY,IAAA,EAClC,KAAQ,OAAmB,CAAA,CAMvB,CAEJ,OAAuB,CACnB,OAAO,IAAI,QAASC,GAAY,CAC5B,MAAMC,EAAO,IAAM,CACf,MAAMC,EAAM,YAAY,IAAA,EAIxB,GAHA,KAAK,OAAO,KAAKA,EAAM,KAAK,aAAa,EACzC,KAAK,cAAgBA,EAEjBA,EAAM,KAAK,aAAe,KAAK,UAAY,KAAK,OAAO,OAAS,EAAG,CAEnE,KAAM,CAAE,MAAAC,EAAO,WAAAC,CAAA,EAAeC,EAAAA,gBAAgB,KAAK,OAAQ,KAAK,UAAW,uBAAuB,EAClG,KAAK,UAAU,UAAU,oBAAqBF,EAAOC,CAAU,EAC/D,KAAK,OAAS,CAAA,EACd,KAAK,YAAcF,CACvB,CAEA,sBAAsBD,CAAI,CAC9B,EAEA,sBAAsBA,CAAI,EAC1BD,EAAA,CACJ,CAAC,CACL,CACJ"}
@@ -0,0 +1,22 @@
1
+ import { a as r } from "./frameAggregate-Cwh1juw1.js";
2
+ class h {
3
+ constructor(s, e = 60, t = 1e4) {
4
+ this.telemetry = s, this.targetFPS = e, this.windowMs = t, this.lastFrameTime = performance.now(), this.windowStart = performance.now(), this.deltas = [];
5
+ }
6
+ start() {
7
+ return new Promise((s) => {
8
+ const e = (t) => {
9
+ if (this.deltas.push(t - this.lastFrameTime), this.lastFrameTime = t, t - this.windowStart >= this.windowMs && this.deltas.length > 0) {
10
+ const { value: a, attributes: i } = r(this.deltas, this.targetFPS, "requestAnimationFrame");
11
+ this.telemetry.logMetric("frame_render_time", a, i), this.deltas = [], this.windowStart = t;
12
+ }
13
+ requestAnimationFrame(e);
14
+ };
15
+ requestAnimationFrame(e), s();
16
+ });
17
+ }
18
+ }
19
+ export {
20
+ h as FrameDropTrackerWeb
21
+ };
22
+ //# sourceMappingURL=frameDropsWeb.web-C9Lt3Fuj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frameDropsWeb.web-C9Lt3Fuj.js","sources":["../src/adapters/web/frameDropsWeb.web.ts"],"sourcesContent":["import { Telemetry } from \"../../core/telemetry\";\nimport { aggregateFrames } from \"../frameAggregate\";\n\n/**\n * Samples frame deltas via requestAnimationFrame and emits an aggregated\n * `frame_render_time` metric (max/p95/dropped_count) once per window — instead of one event\n * per dropped frame. The metric shape matches the iOS contract (docs/edgerum-contract.md).\n */\nexport class FrameDropTrackerWeb {\n private lastFrameTime = performance.now();\n private windowStart = performance.now();\n private deltas: number[] = [];\n\n constructor(\n private telemetry: Telemetry,\n private targetFPS = 60,\n private windowMs = 10000,\n ) { }\n\n start(): Promise<void> {\n return new Promise((resolve) => {\n const loop = (currentTime: number) => {\n this.deltas.push(currentTime - this.lastFrameTime);\n this.lastFrameTime = currentTime;\n\n if (currentTime - this.windowStart >= this.windowMs && this.deltas.length > 0) {\n // ponytail: first window includes the startup delta; acceptable noise, not worth gating.\n const { value, attributes } = aggregateFrames(this.deltas, this.targetFPS, \"requestAnimationFrame\");\n this.telemetry.logMetric(\"frame_render_time\", value, attributes);\n this.deltas = [];\n this.windowStart = currentTime;\n }\n\n requestAnimationFrame(loop);\n };\n\n requestAnimationFrame(loop);\n resolve();\n });\n }\n}\n"],"names":["FrameDropTrackerWeb","telemetry","targetFPS","windowMs","resolve","loop","currentTime","value","attributes","aggregateFrames"],"mappings":";AAQO,MAAMA,EAAoB;AAAA,EAK7B,YACYC,GACAC,IAAY,IACZC,IAAW,KACrB;AAHU,SAAA,YAAAF,GACA,KAAA,YAAAC,GACA,KAAA,WAAAC,GAPZ,KAAQ,gBAAgB,YAAY,IAAA,GACpC,KAAQ,cAAc,YAAY,IAAA,GAClC,KAAQ,SAAmB,CAAA;AAAA,EAMvB;AAAA,EAEJ,QAAuB;AACnB,WAAO,IAAI,QAAQ,CAACC,MAAY;AAC5B,YAAMC,IAAO,CAACC,MAAwB;AAIlC,YAHA,KAAK,OAAO,KAAKA,IAAc,KAAK,aAAa,GACjD,KAAK,gBAAgBA,GAEjBA,IAAc,KAAK,eAAe,KAAK,YAAY,KAAK,OAAO,SAAS,GAAG;AAE3E,gBAAM,EAAE,OAAAC,GAAO,YAAAC,EAAA,IAAeC,EAAgB,KAAK,QAAQ,KAAK,WAAW,uBAAuB;AAClG,eAAK,UAAU,UAAU,qBAAqBF,GAAOC,CAAU,GAC/D,KAAK,SAAS,CAAA,GACd,KAAK,cAAcF;AAAA,QACvB;AAEA,8BAAsBD,CAAI;AAAA,MAC9B;AAEA,4BAAsBA,CAAI,GAC1BD,EAAA;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./frameAggregate-C_HoVFcK.cjs");class o{constructor(r,e=60,t=1e4){this.telemetry=r,this.targetFPS=e,this.windowMs=t,this.lastFrameTime=performance.now(),this.windowStart=performance.now(),this.deltas=[]}start(){return new Promise(r=>{const e=t=>{if(this.deltas.push(t-this.lastFrameTime),this.lastFrameTime=t,t-this.windowStart>=this.windowMs&&this.deltas.length>0){const{value:s,attributes:a}=i.aggregateFrames(this.deltas,this.targetFPS,"requestAnimationFrame");this.telemetry.logMetric("frame_render_time",s,a),this.deltas=[],this.windowStart=t}requestAnimationFrame(e)};requestAnimationFrame(e),r()})}}exports.FrameDropTrackerWeb=o;
2
+ //# sourceMappingURL=frameDropsWeb.web-azpwQCUz.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frameDropsWeb.web-azpwQCUz.cjs","sources":["../src/adapters/web/frameDropsWeb.web.ts"],"sourcesContent":["import { Telemetry } from \"../../core/telemetry\";\nimport { aggregateFrames } from \"../frameAggregate\";\n\n/**\n * Samples frame deltas via requestAnimationFrame and emits an aggregated\n * `frame_render_time` metric (max/p95/dropped_count) once per window — instead of one event\n * per dropped frame. The metric shape matches the iOS contract (docs/edgerum-contract.md).\n */\nexport class FrameDropTrackerWeb {\n private lastFrameTime = performance.now();\n private windowStart = performance.now();\n private deltas: number[] = [];\n\n constructor(\n private telemetry: Telemetry,\n private targetFPS = 60,\n private windowMs = 10000,\n ) { }\n\n start(): Promise<void> {\n return new Promise((resolve) => {\n const loop = (currentTime: number) => {\n this.deltas.push(currentTime - this.lastFrameTime);\n this.lastFrameTime = currentTime;\n\n if (currentTime - this.windowStart >= this.windowMs && this.deltas.length > 0) {\n // ponytail: first window includes the startup delta; acceptable noise, not worth gating.\n const { value, attributes } = aggregateFrames(this.deltas, this.targetFPS, \"requestAnimationFrame\");\n this.telemetry.logMetric(\"frame_render_time\", value, attributes);\n this.deltas = [];\n this.windowStart = currentTime;\n }\n\n requestAnimationFrame(loop);\n };\n\n requestAnimationFrame(loop);\n resolve();\n });\n }\n}\n"],"names":["FrameDropTrackerWeb","telemetry","targetFPS","windowMs","resolve","loop","currentTime","value","attributes","aggregateFrames"],"mappings":"iIAQO,MAAMA,CAAoB,CAK7B,YACYC,EACAC,EAAY,GACZC,EAAW,IACrB,CAHU,KAAA,UAAAF,EACA,KAAA,UAAAC,EACA,KAAA,SAAAC,EAPZ,KAAQ,cAAgB,YAAY,IAAA,EACpC,KAAQ,YAAc,YAAY,IAAA,EAClC,KAAQ,OAAmB,CAAA,CAMvB,CAEJ,OAAuB,CACnB,OAAO,IAAI,QAASC,GAAY,CAC5B,MAAMC,EAAQC,GAAwB,CAIlC,GAHA,KAAK,OAAO,KAAKA,EAAc,KAAK,aAAa,EACjD,KAAK,cAAgBA,EAEjBA,EAAc,KAAK,aAAe,KAAK,UAAY,KAAK,OAAO,OAAS,EAAG,CAE3E,KAAM,CAAE,MAAAC,EAAO,WAAAC,CAAA,EAAeC,EAAAA,gBAAgB,KAAK,OAAQ,KAAK,UAAW,uBAAuB,EAClG,KAAK,UAAU,UAAU,oBAAqBF,EAAOC,CAAU,EAC/D,KAAK,OAAS,CAAA,EACd,KAAK,YAAcF,CACvB,CAEA,sBAAsBD,CAAI,CAC9B,EAEA,sBAAsBA,CAAI,EAC1BD,EAAA,CACJ,CAAC,CACL,CACJ"}
@@ -0,0 +1,19 @@
1
+ function a(p) {
2
+ const { url: e, method: n, statusCode: s, durationMs: u, error: i, requestBody: o, responseSize: r } = p, t = {
3
+ "http.url": e,
4
+ "http.method": n,
5
+ "http.status_code": s,
6
+ "http.duration_ms": u,
7
+ "http.success": !i && s >= 200 && s < 400
8
+ };
9
+ try {
10
+ const h = new URL(e);
11
+ t["http.host"] = h.host, t["http.path"] = h.pathname;
12
+ } catch {
13
+ }
14
+ return typeof o == "string" && (t["http.request_size"] = o.length), r && (t["http.response_size"] = r), t;
15
+ }
16
+ export {
17
+ a as b
18
+ };
19
+ //# sourceMappingURL=httpAttributes-BV50UKQU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpAttributes-BV50UKQU.js","sources":["../src/adapters/httpAttributes.ts"],"sourcesContent":["// Shared http.request attribute builder — the single source of truth so the web and\n// native fetch/XHR adapters stay in lockstep on the v3 contract (#25).\n// Baseline keys are always present; iOS-parity additive keys ride only when honestly\n// available (recorded in docs/backend-additions-ledger.md).\nexport function buildHttpAttributes(args: {\n url: string;\n method: string;\n statusCode: number;\n durationMs: number;\n error?: unknown;\n requestBody?: unknown;\n responseSize?: number;\n}): Record<string, any> {\n const { url, method, statusCode, durationMs, error, requestBody, responseSize } = args;\n\n const attrs: Record<string, any> = {\n \"http.url\": url,\n \"http.method\": method,\n \"http.status_code\": statusCode,\n \"http.duration_ms\": durationMs,\n \"http.success\": !error && statusCode >= 200 && statusCode < 400,\n };\n\n // additive — only emit what the platform actually exposes\n try {\n const u = new URL(url);\n attrs[\"http.host\"] = u.host;\n attrs[\"http.path\"] = u.pathname;\n } catch {\n // ponytail: relative/invalid URL → no host/path, baseline still ships\n }\n if (typeof requestBody === \"string\") attrs[\"http.request_size\"] = requestBody.length;\n if (responseSize) attrs[\"http.response_size\"] = responseSize;\n\n return attrs;\n}\n"],"names":["buildHttpAttributes","args","url","method","statusCode","durationMs","error","requestBody","responseSize","attrs","u"],"mappings":"AAIO,SAASA,EAAoBC,GAQZ;AACtB,QAAM,EAAE,KAAAC,GAAK,QAAAC,GAAQ,YAAAC,GAAY,YAAAC,GAAY,OAAAC,GAAO,aAAAC,GAAa,cAAAC,MAAiBP,GAE5EQ,IAA6B;AAAA,IACjC,YAAYP;AAAA,IACZ,eAAeC;AAAA,IACf,oBAAoBC;AAAA,IACpB,oBAAoBC;AAAA,IACpB,gBAAgB,CAACC,KAASF,KAAc,OAAOA,IAAa;AAAA,EAAA;AAI9D,MAAI;AACF,UAAMM,IAAI,IAAI,IAAIR,CAAG;AACrB,IAAAO,EAAM,WAAW,IAAIC,EAAE,MACvBD,EAAM,WAAW,IAAIC,EAAE;AAAA,EACzB,QAAQ;AAAA,EAER;AACA,SAAI,OAAOH,KAAgB,aAAUE,EAAM,mBAAmB,IAAIF,EAAY,SAC1EC,MAAcC,EAAM,oBAAoB,IAAID,IAEzCC;AACT;"}
@@ -0,0 +1,2 @@
1
+ "use strict";function c(u){const{url:e,method:p,statusCode:s,durationMs:i,error:n,requestBody:r,responseSize:h}=u,t={"http.url":e,"http.method":p,"http.status_code":s,"http.duration_ms":i,"http.success":!n&&s>=200&&s<400};try{const o=new URL(e);t["http.host"]=o.host,t["http.path"]=o.pathname}catch{}return typeof r=="string"&&(t["http.request_size"]=r.length),h&&(t["http.response_size"]=h),t}exports.buildHttpAttributes=c;
2
+ //# sourceMappingURL=httpAttributes-xXOD9trQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpAttributes-xXOD9trQ.cjs","sources":["../src/adapters/httpAttributes.ts"],"sourcesContent":["// Shared http.request attribute builder — the single source of truth so the web and\n// native fetch/XHR adapters stay in lockstep on the v3 contract (#25).\n// Baseline keys are always present; iOS-parity additive keys ride only when honestly\n// available (recorded in docs/backend-additions-ledger.md).\nexport function buildHttpAttributes(args: {\n url: string;\n method: string;\n statusCode: number;\n durationMs: number;\n error?: unknown;\n requestBody?: unknown;\n responseSize?: number;\n}): Record<string, any> {\n const { url, method, statusCode, durationMs, error, requestBody, responseSize } = args;\n\n const attrs: Record<string, any> = {\n \"http.url\": url,\n \"http.method\": method,\n \"http.status_code\": statusCode,\n \"http.duration_ms\": durationMs,\n \"http.success\": !error && statusCode >= 200 && statusCode < 400,\n };\n\n // additive — only emit what the platform actually exposes\n try {\n const u = new URL(url);\n attrs[\"http.host\"] = u.host;\n attrs[\"http.path\"] = u.pathname;\n } catch {\n // ponytail: relative/invalid URL → no host/path, baseline still ships\n }\n if (typeof requestBody === \"string\") attrs[\"http.request_size\"] = requestBody.length;\n if (responseSize) attrs[\"http.response_size\"] = responseSize;\n\n return attrs;\n}\n"],"names":["buildHttpAttributes","args","url","method","statusCode","durationMs","error","requestBody","responseSize","attrs","u"],"mappings":"aAIO,SAASA,EAAoBC,EAQZ,CACtB,KAAM,CAAE,IAAAC,EAAK,OAAAC,EAAQ,WAAAC,EAAY,WAAAC,EAAY,MAAAC,EAAO,YAAAC,EAAa,aAAAC,GAAiBP,EAE5EQ,EAA6B,CACjC,WAAYP,EACZ,cAAeC,EACf,mBAAoBC,EACpB,mBAAoBC,EACpB,eAAgB,CAACC,GAASF,GAAc,KAAOA,EAAa,GAAA,EAI9D,GAAI,CACF,MAAMM,EAAI,IAAI,IAAIR,CAAG,EACrBO,EAAM,WAAW,EAAIC,EAAE,KACvBD,EAAM,WAAW,EAAIC,EAAE,QACzB,MAAQ,CAER,CACA,OAAI,OAAOH,GAAgB,WAAUE,EAAM,mBAAmB,EAAIF,EAAY,QAC1EC,IAAcC,EAAM,oBAAoB,EAAID,GAEzCC,CACT"}
@@ -0,0 +1,2 @@
1
+ "use strict";var g=Object.create;var w=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var p=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var P=(a,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of f(e))!N.call(a,n)&&n!==t&&w(a,n,{get:()=>e[n],enumerable:!(r=y(e,n))||r.enumerable});return a};var c=(a,e,t)=>(t=a!=null?g(p(a)):{},P(e||!a||!a.__esModule?w(t,"default",{value:a,enumerable:!0}):t,a));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./debug-rnOOxFpN.cjs");function S(a){if(!a||!a.startsWith("edge_"))throw new Error("createTelemetry: apiKey is required and must start with 'edge_'")}function T(a){return S(a?.apiKey),new h(a)}class h extends i.TelemetryBase{constructor(e){i.setDebug(e?.debug??!1),super(),i.debug.log("🌍 Running Native Telemetry"),this.instancePromise=(async()=>{const{Telemetry:t}=await Promise.resolve().then(()=>require("./telemetry-Co4MYdwa.cjs")),{nativeSender:r}=await Promise.resolve().then(()=>require("./nativeSender-DyAUGY7c.cjs")),{replayFailedNative:n}=await Promise.resolve().then(()=>require("./nativeSender-DyAUGY7c.cjs")),{DeviceInfoTrackerNative:s}=await Promise.resolve().then(()=>require("./deviceInfo.native-7hbRYixR.cjs")),{NetworkInfoTrackerNative:u}=await Promise.resolve().then(()=>require("./networkInfo.native-cxuw93Uy.cjs"));let o;try{({Platform:{OS:o}}=await import("react-native"))}catch{}const l=new u,m=new s,v=e?.sender??r(e?.endpoint,e?.apiKey),d=new t({sender:v,batchSize:e?.batchSize,flushIntervalMs:e?.flushIntervalMs,endpoint:e?.endpoint,platform:o,deviceInfoHandler:m,networkInfoHandler:l});return n(e?.endpoint,e?.apiKey).catch(k=>{i.debug.warn("Native replay failed:",k)}),d})(),this.startSessionOnInit().catch(t=>i.debug.warn("Native startSession failed:",t)),this.attachAppState().catch(t=>i.debug.warn("Native AppState attach failed:",t)),this.attachAppLifecycle().catch(t=>{i.debug.log("Native attachAppLifecycle errors",t)}),this.trackErrors({captureConsole:e?.captureConsole}).catch(t=>{i.debug.warn("Native trackErrors failed:",t)}),this.trackFrameDrops().catch(t=>{i.debug.log("Native trackFrameDrops errors",t)}),this.trackNetworkRequests().catch(t=>{i.debug.log("Native trackNetworkRequests errors",t)}),this.trackMemoryUsage().catch(t=>{i.debug.log("Native trackMemoryUsage errors",t)})}async startSessionOnInit(){await(await this.instancePromise).startSession()}async attachAppState(){const{AppState:e}=await import("react-native"),t=await this.instancePromise;let r=e.currentState;e.addEventListener("change",n=>{n==="background"?t.finalizeSession().catch(s=>i.debug.warn("finalizeSession failed:",s)):n==="active"&&r==="background"&&t.newSession().catch(s=>i.debug.warn("newSession failed:",s)),r=n})}async attachAppLifecycle(){const{AppState:e}=await import("react-native"),t=await this.instancePromise,{AppLifecycleEmitter:r}=await Promise.resolve().then(()=>require("./appLifecycle-DvJIt7ym.cjs")),n=new r(t);n.onState(e.currentState==="active"),e.addEventListener("change",s=>n.onState(s==="active"))}async getDeviceInfo(){const{DeviceInfoTrackerNative:e}=await Promise.resolve().then(()=>require("./deviceInfo.native-7hbRYixR.cjs")),t=await this.instancePromise,r=new e;return t.getDeviceInfo(r)}async getNetworkInfo(){const{NetworkInfoTrackerNative:e}=await Promise.resolve().then(()=>require("./networkInfo.native-cxuw93Uy.cjs")),t=await this.instancePromise,r=new e;return t.getNetworkInfo(r)}async trackFrameDrops(){const{FrameDropTrackerNative:e}=await Promise.resolve().then(()=>require("./frameDropsNative.native-DKqEDqip.cjs")),t=await this.instancePromise,r=new e(t);return t.trackFrameDrops(r)}async trackNetworkRequests(){const{NetworkTrackerNative:e}=await Promise.resolve().then(()=>require("./interceptFetchNative.native-jEAldH14.cjs")),t=await this.instancePromise,r=new e(t);return t.trackNetworkRequests(r)}async trackMemoryUsage(){const{TelemetryMemoryUsageNative:e}=await Promise.resolve().then(()=>require("./memoryNative.native-DCXSOd4Q.cjs")),t=await this.instancePromise,r=new e(t);return t.trackMemoryUsage(r)}async screenStart(e){(await this.instancePromise).screens.startScreen(e)}async screenEnd(e){(await this.instancePromise).screens.endScreen(e)}async trackRoute(e,t){(await this.instancePromise).recordRouteChange(e,t)}async interactionProps(){const e=await this.instancePromise,{InteractionEmitter:t}=await Promise.resolve().then(()=>require("./interaction-DcNFBW7a.cjs"));return new t(e).responderProps()}async attachNavigation(e){if(i.debug.log("Attaching navigation tracker"),!e){i.debug.warn("Navigation reference is undefined. Cannot attach navigation tracker.");return}const t=await this.instancePromise,{NavigationTrackerNative:r}=await Promise.resolve().then(()=>require("./navigationNative.native-3tO5JxSd.cjs"));new r(t).attach(e)}}exports.TelemetryNative=h;exports.createTelemetry=T;
2
+ //# sourceMappingURL=index.native.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.native.cjs","sources":["../src/createTelemetry.native.ts","../src/index.native.ts"],"sourcesContent":["import { TelemetryNative } from \"./index.native\";\n\nexport type TelemetryOpts = {\n apiKey: string; // required; must start with \"edge_\"\n sender?: any;\n batchSize?: number;\n flushIntervalMs?: number;\n endpoint?: string;\n captureConsole?: boolean; // funnel console.error/warn into app.crash (default on, opt-out)\n debug?: boolean; // SDK-internal diagnostics; off by default (#23)\n};\n\nexport function assertApiKey(apiKey?: string) {\n if (!apiKey || !apiKey.startsWith(\"edge_\")) {\n throw new Error(\"createTelemetry: apiKey is required and must start with 'edge_'\");\n }\n}\n\n/**\n * Cross-platform factory for telemetry. The platform is chosen by the bundler\n * via the .web / .native file split — no runtime navigator sniffing.\n */\nexport function createTelemetry(opts: TelemetryOpts) {\n assertApiKey(opts?.apiKey);\n return new TelemetryNative(opts);\n}\n","// React Native telemetry implementation\nimport { TelemetryBase } from \"./index.base\";\nimport { debug, setDebug } from \"./core/debug\";\n\nexport { createTelemetry, type TelemetryOpts } from \"./createTelemetry.native\";\n\nexport class TelemetryNative extends TelemetryBase {\n constructor(opts?: {\n apiKey?: string;\n sender?: any;\n batchSize?: number;\n flushIntervalMs?: number;\n endpoint?: string;\n captureConsole?: boolean;\n debug?: boolean;\n }) {\n setDebug(opts?.debug ?? false); // gate SDK console noise before anything logs (#23)\n super();\n\n debug.log(\"🌍 Running Native Telemetry\");\n this.instancePromise = (async () => {\n const { Telemetry } = await import(\"./core/telemetry\");\n const { nativeSender } = await import(\"./adapters/nativeSender\");\n\n const { replayFailedNative } = await import(\"./adapters/nativeSender\");\n const { DeviceInfoTrackerNative } = await import(\"./adapters/native/deviceInfo.native\");\n const { NetworkInfoTrackerNative } = await import(\"./adapters/native/networkInfo.native\");\n\n // device OS forms the device/session id suffix (ios|android)\n let platform: string | undefined;\n try {\n ({ Platform: { OS: platform } } = await import(\"react-native\") as any);\n } catch { /* non-RN context (e.g. tests) — omit the suffix */ }\n\n const networkInfoTrackerNative = new NetworkInfoTrackerNative();\n const deviceInfoTrackerNative = new DeviceInfoTrackerNative();\n\n const sender = opts?.sender ?? nativeSender(opts?.endpoint, opts?.apiKey);\n\n const telemetry = new Telemetry({\n sender,\n batchSize: opts?.batchSize,\n flushIntervalMs: opts?.flushIntervalMs,\n endpoint: opts?.endpoint,\n platform,\n deviceInfoHandler: deviceInfoTrackerNative,\n networkInfoHandler: networkInfoTrackerNative,\n });\n\n // 🔄 recover failed events right after init\n replayFailedNative(opts?.endpoint, opts?.apiKey).catch(err => {\n debug.warn(\"Native replay failed:\", err);\n });\n\n return telemetry;\n })();\n\n // session.started on init; AppState drives background→finalize, foreground→new session (#29)\n this.startSessionOnInit().catch(err => debug.warn(\"Native startSession failed:\", err));\n this.attachAppState().catch(err => debug.warn(\"Native AppState attach failed:\", err));\n\n // app_lifecycle on foreground/background (#30)\n this.attachAppLifecycle().catch(err => {\n debug.log(\"Native attachAppLifecycle errors\", err);\n });\n\n this.trackErrors({ captureConsole: opts?.captureConsole }).catch(err => {\n debug.warn(\"Native trackErrors failed:\", err);\n });\n\n this.trackFrameDrops().catch(err => {\n debug.log(\"Native trackFrameDrops errors\", err);\n });\n this.trackNetworkRequests().catch(err => {\n debug.log(\"Native trackNetworkRequests errors\", err);\n });\n this.trackMemoryUsage().catch(err => {\n debug.log(\"Native trackMemoryUsage errors\", err);\n });\n }\n\n private async startSessionOnInit() {\n const inst = await this.instancePromise;\n await inst.startSession();\n }\n\n // Background → finalize (immediate flush). Foreground after background → fresh session. (#29)\n private async attachAppState() {\n const { AppState } = await import(\"react-native\") as any;\n const inst = await this.instancePromise;\n let prev: string = AppState.currentState;\n AppState.addEventListener(\"change\", (next: string) => {\n if (next === \"background\") {\n inst.finalizeSession().catch((e: any) => debug.warn(\"finalizeSession failed:\", e));\n } else if (next === \"active\" && prev === \"background\") {\n inst.newSession().catch((e: any) => debug.warn(\"newSession failed:\", e));\n }\n prev = next;\n });\n }\n\n // app_lifecycle on foreground/background via RN AppState (#30)\n async attachAppLifecycle() {\n const { AppState } = await import(\"react-native\") as any;\n const inst = await this.instancePromise;\n const { AppLifecycleEmitter } = await import(\"./adapters/appLifecycle\");\n const emitter = new AppLifecycleEmitter(inst);\n emitter.onState(AppState.currentState === \"active\"); // seed current state\n AppState.addEventListener(\"change\", (next: string) => emitter.onState(next === \"active\"));\n }\n\n async getDeviceInfo() {\n const { DeviceInfoTrackerNative } = await import(\"./adapters/native/deviceInfo.native\");\n const inst = await this.instancePromise;\n const deviceInfoTrackerNative = new DeviceInfoTrackerNative();\n return inst.getDeviceInfo(deviceInfoTrackerNative);\n }\n\n async getNetworkInfo() {\n const { NetworkInfoTrackerNative } = await import(\"./adapters/native/networkInfo.native\");\n const inst = await this.instancePromise;\n const networkInfoTrackerNative = new NetworkInfoTrackerNative();\n return inst.getNetworkInfo(networkInfoTrackerNative);\n }\n\n async trackFrameDrops() {\n const { FrameDropTrackerNative } = await import(\"./adapters/native/frameDropsNative.native\");\n const inst = await this.instancePromise;\n const frameDropTracker = new FrameDropTrackerNative(inst);\n return inst.trackFrameDrops(frameDropTracker);\n }\n\n async trackNetworkRequests() {\n const { NetworkTrackerNative } = await import(\"./adapters/native/interceptFetchNative.native\");\n const inst = await this.instancePromise;\n const networkTracker = new NetworkTrackerNative(inst);\n return inst.trackNetworkRequests(networkTracker);\n }\n\n async trackMemoryUsage() {\n const { TelemetryMemoryUsageNative } = await import(\"./adapters/native/memoryNative.native\");\n const inst = await this.instancePromise;\n const memoryTracker = new TelemetryMemoryUsageNative(inst);\n return inst.trackMemoryUsage(memoryTracker);\n }\n\n // ---------- Screen Management ----------\n\n async screenStart(name: string) {\n const inst = await this.instancePromise;\n inst.screens.startScreen(name);\n }\n\n async screenEnd(name: string) {\n const inst = await this.instancePromise;\n inst.screens.endScreen(name);\n }\n\n async trackRoute(from: string, to: string) {\n const inst = await this.instancePromise;\n inst.recordRouteChange(from, to);\n }\n\n // Best-effort native taps → user.interaction (#33). Spread the returned props on your\n // app root <View>; each tap emits user.interaction with the current screen when known.\n // const props = await telemetry.interactionProps();\n // <View {...props}>{app}</View>\n async interactionProps() {\n const inst = await this.instancePromise;\n const { InteractionEmitter } = await import(\"./adapters/interaction\");\n return new InteractionEmitter(inst).responderProps();\n }\n\n async attachNavigation(navigationRef: any) {\n debug.log(\"Attaching navigation tracker\");\n if (!navigationRef) {\n debug.warn(\"Navigation reference is undefined. Cannot attach navigation tracker.\");\n return;\n }\n const inst = await this.instancePromise;\n const { NavigationTrackerNative } = await import(\"./adapters/native/navigationNative.native\");\n const tracker = new NavigationTrackerNative(inst);\n tracker.attach(navigationRef);\n }\n}\n"],"names":["assertApiKey","apiKey","createTelemetry","opts","TelemetryNative","TelemetryBase","setDebug","debug","Telemetry","nativeSender","replayFailedNative","DeviceInfoTrackerNative","NetworkInfoTrackerNative","platform","networkInfoTrackerNative","deviceInfoTrackerNative","sender","telemetry","err","AppState","inst","prev","next","e","AppLifecycleEmitter","emitter","FrameDropTrackerNative","frameDropTracker","NetworkTrackerNative","networkTracker","TelemetryMemoryUsageNative","memoryTracker","name","from","to","InteractionEmitter","navigationRef","NavigationTrackerNative"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './src/index.native'
2
+ export {}
@@ -0,0 +1,109 @@
1
+ import { T as l, s as v, d as r } from "./debug-DsvQ9y3W.js";
2
+ function f(s) {
3
+ if (!s || !s.startsWith("edge_"))
4
+ throw new Error("createTelemetry: apiKey is required and must start with 'edge_'");
5
+ }
6
+ function N(s) {
7
+ return f(s?.apiKey), new d(s);
8
+ }
9
+ class d extends l {
10
+ constructor(e) {
11
+ v(e?.debug ?? !1), super(), r.log("🌍 Running Native Telemetry"), this.instancePromise = (async () => {
12
+ const { Telemetry: t } = await import("./telemetry-KI0x4gzC.js"), { nativeSender: a } = await import("./nativeSender-BE_mzw_S.js"), { replayFailedNative: n } = await import("./nativeSender-BE_mzw_S.js"), { DeviceInfoTrackerNative: i } = await import("./deviceInfo.native-D2k0LDhI.js"), { NetworkInfoTrackerNative: o } = await import("./networkInfo.native-BK5fpAOL.js");
13
+ let c;
14
+ try {
15
+ ({ Platform: { OS: c } } = await import("react-native"));
16
+ } catch {
17
+ }
18
+ const w = new o(), m = new i(), h = e?.sender ?? a(e?.endpoint, e?.apiKey), p = new t({
19
+ sender: h,
20
+ batchSize: e?.batchSize,
21
+ flushIntervalMs: e?.flushIntervalMs,
22
+ endpoint: e?.endpoint,
23
+ platform: c,
24
+ deviceInfoHandler: m,
25
+ networkInfoHandler: w
26
+ });
27
+ return n(e?.endpoint, e?.apiKey).catch((k) => {
28
+ r.warn("Native replay failed:", k);
29
+ }), p;
30
+ })(), this.startSessionOnInit().catch((t) => r.warn("Native startSession failed:", t)), this.attachAppState().catch((t) => r.warn("Native AppState attach failed:", t)), this.attachAppLifecycle().catch((t) => {
31
+ r.log("Native attachAppLifecycle errors", t);
32
+ }), this.trackErrors({ captureConsole: e?.captureConsole }).catch((t) => {
33
+ r.warn("Native trackErrors failed:", t);
34
+ }), this.trackFrameDrops().catch((t) => {
35
+ r.log("Native trackFrameDrops errors", t);
36
+ }), this.trackNetworkRequests().catch((t) => {
37
+ r.log("Native trackNetworkRequests errors", t);
38
+ }), this.trackMemoryUsage().catch((t) => {
39
+ r.log("Native trackMemoryUsage errors", t);
40
+ });
41
+ }
42
+ async startSessionOnInit() {
43
+ await (await this.instancePromise).startSession();
44
+ }
45
+ // Background → finalize (immediate flush). Foreground after background → fresh session. (#29)
46
+ async attachAppState() {
47
+ const { AppState: e } = await import("react-native"), t = await this.instancePromise;
48
+ let a = e.currentState;
49
+ e.addEventListener("change", (n) => {
50
+ n === "background" ? t.finalizeSession().catch((i) => r.warn("finalizeSession failed:", i)) : n === "active" && a === "background" && t.newSession().catch((i) => r.warn("newSession failed:", i)), a = n;
51
+ });
52
+ }
53
+ // app_lifecycle on foreground/background via RN AppState (#30)
54
+ async attachAppLifecycle() {
55
+ const { AppState: e } = await import("react-native"), t = await this.instancePromise, { AppLifecycleEmitter: a } = await import("./appLifecycle-Cynw0kAv.js"), n = new a(t);
56
+ n.onState(e.currentState === "active"), e.addEventListener("change", (i) => n.onState(i === "active"));
57
+ }
58
+ async getDeviceInfo() {
59
+ const { DeviceInfoTrackerNative: e } = await import("./deviceInfo.native-D2k0LDhI.js"), t = await this.instancePromise, a = new e();
60
+ return t.getDeviceInfo(a);
61
+ }
62
+ async getNetworkInfo() {
63
+ const { NetworkInfoTrackerNative: e } = await import("./networkInfo.native-BK5fpAOL.js"), t = await this.instancePromise, a = new e();
64
+ return t.getNetworkInfo(a);
65
+ }
66
+ async trackFrameDrops() {
67
+ const { FrameDropTrackerNative: e } = await import("./frameDropsNative.native-CP7zrXDf.js"), t = await this.instancePromise, a = new e(t);
68
+ return t.trackFrameDrops(a);
69
+ }
70
+ async trackNetworkRequests() {
71
+ const { NetworkTrackerNative: e } = await import("./interceptFetchNative.native-VlhtMG-U.js"), t = await this.instancePromise, a = new e(t);
72
+ return t.trackNetworkRequests(a);
73
+ }
74
+ async trackMemoryUsage() {
75
+ const { TelemetryMemoryUsageNative: e } = await import("./memoryNative.native-BWLh2S9L.js"), t = await this.instancePromise, a = new e(t);
76
+ return t.trackMemoryUsage(a);
77
+ }
78
+ // ---------- Screen Management ----------
79
+ async screenStart(e) {
80
+ (await this.instancePromise).screens.startScreen(e);
81
+ }
82
+ async screenEnd(e) {
83
+ (await this.instancePromise).screens.endScreen(e);
84
+ }
85
+ async trackRoute(e, t) {
86
+ (await this.instancePromise).recordRouteChange(e, t);
87
+ }
88
+ // Best-effort native taps → user.interaction (#33). Spread the returned props on your
89
+ // app root <View>; each tap emits user.interaction with the current screen when known.
90
+ // const props = await telemetry.interactionProps();
91
+ // <View {...props}>{app}</View>
92
+ async interactionProps() {
93
+ const e = await this.instancePromise, { InteractionEmitter: t } = await import("./interaction-CH8yoY5-.js");
94
+ return new t(e).responderProps();
95
+ }
96
+ async attachNavigation(e) {
97
+ if (r.log("Attaching navigation tracker"), !e) {
98
+ r.warn("Navigation reference is undefined. Cannot attach navigation tracker.");
99
+ return;
100
+ }
101
+ const t = await this.instancePromise, { NavigationTrackerNative: a } = await import("./navigationNative.native-BUCGPQX2.js");
102
+ new a(t).attach(e);
103
+ }
104
+ }
105
+ export {
106
+ d as TelemetryNative,
107
+ N as createTelemetry
108
+ };
109
+ //# sourceMappingURL=index.native.js.map