expo-app-metrics 58.0.0 → 58.0.2

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 (512) hide show
  1. package/.npmignore +5 -0
  2. package/CHANGELOG.md +10 -0
  3. package/android/src/main/java/expo/modules/appmetrics/AppMetricsModule.kt +31 -2
  4. package/android/src/main/java/expo/modules/appmetrics/AppMetricsPreferences.kt +24 -0
  5. package/android/src/main/java/expo/modules/appmetrics/networkrequests/NetworkRequestPersistence.kt +31 -2
  6. package/android/src/main/java/expo/modules/appmetrics/networkrequests/NetworkTracesConfiguration.kt +67 -0
  7. package/build/module.web.d.ts +2 -1
  8. package/build/module.web.js +1 -0
  9. package/build/module.web.js.map +1 -1
  10. package/build/types.d.ts +20 -0
  11. package/build/types.js.map +1 -1
  12. package/expo-module.config.json +1 -1
  13. package/ios/AppMetricsAppDelegateSubscriber.swift +6 -1
  14. package/ios/AppMetricsModule.swift +25 -0
  15. package/ios/AppMetricsUserDefaults.swift +12 -0
  16. package/ios/NetworkRequests/NetworkRequestFilter.swift +2 -5
  17. package/ios/NetworkRequests/NetworkRequestPersistence.swift +16 -1
  18. package/ios/NetworkRequests/NetworkTracesConfiguration.swift +27 -0
  19. package/ios/Tests/NetworkRequestPersistenceTests.swift +64 -3
  20. package/ios/Tests/NetworkTracesConfigurationTests.swift +99 -0
  21. package/{android/build/intermediates/source_jar/release/release-sources.jar → local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2-sources.jar} +0 -0
  22. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2-sources.jar.md5 +1 -0
  23. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2-sources.jar.sha1 +1 -0
  24. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2-sources.jar.sha256 +1 -0
  25. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2-sources.jar.sha512 +1 -0
  26. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2.aar +0 -0
  27. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2.aar.md5 +1 -0
  28. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2.aar.sha1 +1 -0
  29. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2.aar.sha256 +1 -0
  30. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2.aar.sha512 +1 -0
  31. package/{android/build/publications/release/module.json → local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2.module} +22 -22
  32. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2.module.md5 +1 -0
  33. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2.module.sha1 +1 -0
  34. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2.module.sha256 +1 -0
  35. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2.module.sha512 +1 -0
  36. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/{58.0.0/expo.modules.appmetrics-58.0.0.pom → 58.0.2/expo.modules.appmetrics-58.0.2.pom} +1 -1
  37. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2.pom.md5 +1 -0
  38. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2.pom.sha1 +1 -0
  39. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2.pom.sha256 +1 -0
  40. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.2/expo.modules.appmetrics-58.0.2.pom.sha512 +1 -0
  41. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/maven-metadata.xml +4 -4
  42. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/maven-metadata.xml.md5 +1 -1
  43. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/maven-metadata.xml.sha1 +1 -1
  44. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/maven-metadata.xml.sha256 +1 -1
  45. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/maven-metadata.xml.sha512 +1 -1
  46. package/package.json +3 -3
  47. package/src/module.web.ts +1 -0
  48. package/src/types.ts +21 -0
  49. package/android/build/generated/ksp/release/kotlin/expo/modules/appmetrics/storage/CrashReportDao_Impl.kt +0 -148
  50. package/android/build/generated/ksp/release/kotlin/expo/modules/appmetrics/storage/LogDao_Impl.kt +0 -220
  51. package/android/build/generated/ksp/release/kotlin/expo/modules/appmetrics/storage/MetricDao_Impl.kt +0 -231
  52. package/android/build/generated/ksp/release/kotlin/expo/modules/appmetrics/storage/MetricsDatabase_Impl.kt +0 -268
  53. package/android/build/generated/ksp/release/kotlin/expo/modules/appmetrics/storage/SessionDao_Impl.kt +0 -1208
  54. package/android/build/generated/ksp/release/kotlin/expo/modules/appmetrics/storage/SpanDao_Impl.kt +0 -285
  55. package/android/build/generated/source/buildConfig/release/expo/modules/appmetrics/BuildConfig.java +0 -18
  56. package/android/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/AndroidManifest.xml +0 -7
  57. package/android/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/output-metadata.json +0 -18
  58. package/android/build/intermediates/aar_main_jar/release/syncReleaseLibJars/classes.jar +0 -0
  59. package/android/build/intermediates/aar_metadata/release/writeReleaseAarMetadata/aar-metadata.properties +0 -7
  60. package/android/build/intermediates/annotation_processor_list/release/javaPreCompileRelease/annotationProcessors.json +0 -1
  61. package/android/build/intermediates/annotations_typedef_file/release/extractReleaseAnnotations/typedefs.txt +0 -0
  62. package/android/build/intermediates/compile_library_classes_jar/release/bundleLibCompileToJarRelease/classes.jar +0 -0
  63. package/android/build/intermediates/compile_r_class_jar/release/generateReleaseRFile/R.jar +0 -0
  64. package/android/build/intermediates/compile_symbol_list/release/generateReleaseRFile/R.txt +0 -0
  65. package/android/build/intermediates/incremental/mergeReleaseAssets/merger.xml +0 -2
  66. package/android/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml +0 -2
  67. package/android/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties +0 -1
  68. package/android/build/intermediates/incremental/release/packageReleaseResources/merger.xml +0 -2
  69. package/android/build/intermediates/incremental/release-mergeJavaRes/merge-state +0 -0
  70. package/android/build/intermediates/java_res/release/processReleaseJavaRes/out/META-INF/expo-app-metrics_release.kotlin_module +0 -0
  71. package/android/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/expo/modules/appmetrics/BuildConfig.class +0 -0
  72. package/android/build/intermediates/local_only_symbol_list/release/parseReleaseLocalResources/R-def.txt +0 -2
  73. package/android/build/intermediates/manifest_merge_blame_file/release/processReleaseManifest/manifest-merger-blame-release-report.txt +0 -9
  74. package/android/build/intermediates/merged_java_res/release/mergeReleaseJavaResource/feature-expo-app-metrics.jar +0 -0
  75. package/android/build/intermediates/merged_manifest/release/processReleaseManifest/AndroidManifest.xml +0 -7
  76. package/android/build/intermediates/nested_resources_validation_report/release/generateReleaseResources/nestedResourcesValidationReport.txt +0 -1
  77. package/android/build/intermediates/symbol_list_with_package_name/release/generateReleaseRFile/package-aware-r.txt +0 -1
  78. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  79. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  80. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  81. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  82. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values +0 -0
  83. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  84. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.s +0 -1
  85. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  86. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  87. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  88. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  89. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  90. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  91. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  92. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  93. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  94. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  95. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  96. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  97. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  98. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values +0 -0
  99. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  100. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.s +0 -1
  101. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  102. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  103. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  104. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  105. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  106. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  107. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  108. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  109. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  110. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  111. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  112. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  113. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  114. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values +0 -0
  115. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  116. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.s +0 -1
  117. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  118. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  119. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab +0 -0
  120. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream +0 -0
  121. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len +0 -0
  122. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len +0 -0
  123. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at +0 -0
  124. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i +0 -0
  125. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len +0 -0
  126. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  127. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  128. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  129. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  130. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values +0 -0
  131. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  132. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.s +0 -1
  133. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  134. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  135. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  136. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  137. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  138. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  139. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values +0 -0
  140. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  141. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.s +0 -1
  142. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  143. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  144. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  145. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  146. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  147. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  148. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  149. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  150. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  151. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  152. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  153. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  154. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  155. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  156. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  157. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  158. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
  159. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  160. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  161. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  162. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  163. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  164. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  165. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  166. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  167. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  168. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  169. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  170. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  171. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  172. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  173. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  174. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  175. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  176. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  177. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  178. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  179. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  180. package/android/build/kotlin/compileReleaseKotlin/cacheable/last-build.bin +0 -0
  181. package/android/build/kotlin/compileReleaseKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  182. package/android/build/kspCaches/release/ap-classpath-entries.bin +0 -0
  183. package/android/build/kspCaches/release/backups/kotlin/expo/modules/appmetrics/storage/CrashReportDao_Impl.kt +0 -148
  184. package/android/build/kspCaches/release/backups/kotlin/expo/modules/appmetrics/storage/LogDao_Impl.kt +0 -220
  185. package/android/build/kspCaches/release/backups/kotlin/expo/modules/appmetrics/storage/MetricDao_Impl.kt +0 -231
  186. package/android/build/kspCaches/release/backups/kotlin/expo/modules/appmetrics/storage/MetricsDatabase_Impl.kt +0 -268
  187. package/android/build/kspCaches/release/backups/kotlin/expo/modules/appmetrics/storage/SessionDao_Impl.kt +0 -1208
  188. package/android/build/kspCaches/release/backups/kotlin/expo/modules/appmetrics/storage/SpanDao_Impl.kt +0 -285
  189. package/android/build/kspCaches/release/caches.uptodate +0 -0
  190. package/android/build/kspCaches/release/classpath-entries.bin +0 -0
  191. package/android/build/kspCaches/release/classpath-structure.bin +0 -0
  192. package/android/build/kspCaches/release/sealed +0 -1
  193. package/android/build/kspCaches/release/sourceToOutputs +0 -1
  194. package/android/build/kspCaches/release/symbolLookups/counters.tab +0 -2
  195. package/android/build/kspCaches/release/symbolLookups/file-to-id.tab +0 -0
  196. package/android/build/kspCaches/release/symbolLookups/file-to-id.tab.keystream +0 -0
  197. package/android/build/kspCaches/release/symbolLookups/file-to-id.tab.keystream.len +0 -0
  198. package/android/build/kspCaches/release/symbolLookups/file-to-id.tab.len +0 -0
  199. package/android/build/kspCaches/release/symbolLookups/file-to-id.tab.values.at +0 -0
  200. package/android/build/kspCaches/release/symbolLookups/file-to-id.tab_i +0 -0
  201. package/android/build/kspCaches/release/symbolLookups/file-to-id.tab_i.len +0 -0
  202. package/android/build/kspCaches/release/symbolLookups/id-to-file.tab +0 -0
  203. package/android/build/kspCaches/release/symbolLookups/id-to-file.tab.keystream +0 -0
  204. package/android/build/kspCaches/release/symbolLookups/id-to-file.tab.keystream.len +0 -0
  205. package/android/build/kspCaches/release/symbolLookups/id-to-file.tab.len +0 -0
  206. package/android/build/kspCaches/release/symbolLookups/id-to-file.tab.values.at +0 -0
  207. package/android/build/kspCaches/release/symbolLookups/id-to-file.tab_i +0 -0
  208. package/android/build/kspCaches/release/symbolLookups/id-to-file.tab_i.len +0 -0
  209. package/android/build/kspCaches/release/symbolLookups/lookups.tab +0 -0
  210. package/android/build/kspCaches/release/symbolLookups/lookups.tab.keystream +0 -0
  211. package/android/build/kspCaches/release/symbolLookups/lookups.tab.keystream.len +0 -0
  212. package/android/build/kspCaches/release/symbolLookups/lookups.tab.len +0 -0
  213. package/android/build/kspCaches/release/symbolLookups/lookups.tab.values.at +0 -0
  214. package/android/build/kspCaches/release/symbolLookups/lookups.tab_i +0 -0
  215. package/android/build/kspCaches/release/symbolLookups/lookups.tab_i.len +0 -0
  216. package/android/build/kspCaches/release/symbols +0 -1
  217. package/android/build/outputs/aar/expo-app-metrics-release.aar +0 -0
  218. package/android/build/outputs/logs/manifest-merger-release-report.txt +0 -14
  219. package/android/build/publications/release/pom-default.xml +0 -100
  220. package/android/build/tmp/compileReleaseJavaWithJavac/previous-compilation-data.bin +0 -0
  221. package/android/build/tmp/kotlin-classes/release/META-INF/expo-app-metrics_release.kotlin_module +0 -0
  222. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetadata.class +0 -0
  223. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetadataProvider.class +0 -0
  224. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetadataProviderKt.class +0 -0
  225. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsActivityLifecycleListeners.class +0 -0
  226. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsApplicationLifecycleListeners.class +0 -0
  227. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$1$14$1.class +0 -0
  228. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$1$2$1.class +0 -0
  229. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$1$3$1.class +0 -0
  230. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$1$5$1.class +0 -0
  231. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$1$5$2.class +0 -0
  232. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$1$5$3$1.class +0 -0
  233. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$1$5$3.class +0 -0
  234. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$1$5$5.class +0 -0
  235. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$1$6$1.class +0 -0
  236. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$1$8$2.class +0 -0
  237. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$AsyncFunctionWithoutArgs$1.class +0 -0
  238. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Class$1.class +0 -0
  239. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Class$2.class +0 -0
  240. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Coroutine$1.class +0 -0
  241. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Coroutine$2.class +0 -0
  242. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Coroutine$3.class +0 -0
  243. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Coroutine$4.class +0 -0
  244. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Coroutine$5.class +0 -0
  245. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Coroutine$6.class +0 -0
  246. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Coroutine$7.class +0 -0
  247. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Function$1.class +0 -0
  248. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Function$2.class +0 -0
  249. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Function$3.class +0 -0
  250. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Function$4.class +0 -0
  251. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Function$5.class +0 -0
  252. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Function$6.class +0 -0
  253. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Function$7.class +0 -0
  254. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Function$8.class +0 -0
  255. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$Function$9.class +0 -0
  256. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$FunctionWithoutArgs$1.class +0 -0
  257. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$FunctionWithoutArgs$2.class +0 -0
  258. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$OnActivityDestroys$1.class +0 -0
  259. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$OnActivityEntersBackground$1.class +0 -0
  260. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$OnCreate$1.class +0 -0
  261. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$$inlined$OnDestroy$1.class +0 -0
  262. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$23$$inlined$Constructor$1.class +0 -0
  263. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$23$$inlined$Constructor$2.class +0 -0
  264. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$23$$inlined$Function$1.class +0 -0
  265. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$23$$inlined$Function$2.class +0 -0
  266. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$23$$inlined$Function$3.class +0 -0
  267. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Constructor$1.class +0 -0
  268. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Coroutine$1.class +0 -0
  269. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Coroutine$10.class +0 -0
  270. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Coroutine$11.class +0 -0
  271. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Coroutine$2.class +0 -0
  272. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Coroutine$3.class +0 -0
  273. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Coroutine$4.class +0 -0
  274. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Coroutine$5.class +0 -0
  275. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Coroutine$6.class +0 -0
  276. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Coroutine$7.class +0 -0
  277. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Coroutine$8.class +0 -0
  278. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Coroutine$9.class +0 -0
  279. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Property$1.class +0 -0
  280. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Property$2.class +0 -0
  281. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$definition$lambda$35$lambda$34$$inlined$Property$3.class +0 -0
  282. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$saveStartupMetricsJob$2$1.class +0 -0
  283. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$setEnvironment$1.class +0 -0
  284. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule$updatesStateDidChange$1$1.class +0 -0
  285. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsModule.class +0 -0
  286. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsPackage$createReactActivityHandlers$1.class +0 -0
  287. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsPackage.class +0 -0
  288. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsPreferences.class +0 -0
  289. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppMetricsPreferencesKt.class +0 -0
  290. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppStartupMetric$Companion.class +0 -0
  291. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppStartupMetric.class +0 -0
  292. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/AppUpdatesInfo.class +0 -0
  293. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/ConstantsKt.class +0 -0
  294. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/GlobalAttributes.class +0 -0
  295. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/MemoryMetric$Companion.class +0 -0
  296. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/MemoryMetric.class +0 -0
  297. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/MetricAttributes$__Pika.class +0 -0
  298. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/MetricAttributes.class +0 -0
  299. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/MetricCategory.class +0 -0
  300. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/appstartup/AppStartType.class +0 -0
  301. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/appstartup/AppStartupManager$WhenMappings.class +0 -0
  302. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/appstartup/AppStartupManager.class +0 -0
  303. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/appstartup/EASObserveAppStartupInfo.class +0 -0
  304. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/appstartup/StartupState.class +0 -0
  305. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CallStackTreeBuilder.class +0 -0
  306. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashFileFormat.class +0 -0
  307. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashFileReader$Companion.class +0 -0
  308. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashFileReader.class +0 -0
  309. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashFileWriter$Companion.class +0 -0
  310. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashFileWriter.class +0 -0
  311. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashLogDetails.class +0 -0
  312. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashOrigin.class +0 -0
  313. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReport$$serializer.class +0 -0
  314. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReport$CallStackTree$$serializer.class +0 -0
  315. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReport$CallStackTree$CallStack$$serializer.class +0 -0
  316. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReport$CallStackTree$CallStack$Companion.class +0 -0
  317. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReport$CallStackTree$CallStack.class +0 -0
  318. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReport$CallStackTree$Companion.class +0 -0
  319. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReport$CallStackTree$Frame$$serializer.class +0 -0
  320. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReport$CallStackTree$Frame$Companion.class +0 -0
  321. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReport$CallStackTree$Frame.class +0 -0
  322. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReport$CallStackTree.class +0 -0
  323. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReport$Companion.class +0 -0
  324. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReport.class +0 -0
  325. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReportAttributionKt$attributeAndStoreCrashReport$1.class +0 -0
  326. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReportAttributionKt.class +0 -0
  327. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReportProcessor$process$1.class +0 -0
  328. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReportProcessor$processCrashes$1.class +0 -0
  329. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/CrashReportProcessor.class +0 -0
  330. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/ExitInfoProvider.class +0 -0
  331. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/ExitInfoProviderImpl$Companion.class +0 -0
  332. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/ExitInfoProviderImpl.class +0 -0
  333. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/ExitRecord$Companion.class +0 -0
  334. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/ExitRecord.class +0 -0
  335. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/JvmCrashHandler$Companion.class +0 -0
  336. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/JvmCrashHandler.class +0 -0
  337. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/LastProcessedExitStore.class +0 -0
  338. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/PendingJvmCrash.class +0 -0
  339. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/PendingJvmCrashPayload$$serializer.class +0 -0
  340. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/PendingJvmCrashPayload$Companion.class +0 -0
  341. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/PendingJvmCrashPayload.class +0 -0
  342. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/crashreporting/PreferencesLastProcessedExitStore.class +0 -0
  343. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/frames/FrameMetricsRecord.class +0 -0
  344. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/frames/FrameMetricsRecorder$Companion.class +0 -0
  345. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/frames/FrameMetricsRecorder.class +0 -0
  346. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/frames/FrameRateMonitor.class +0 -0
  347. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/jserrors/ErrorReport$__Pika.class +0 -0
  348. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/jserrors/ErrorReport.class +0 -0
  349. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/jserrors/ErrorReportKt.class +0 -0
  350. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/jserrors/ErrorSource.class +0 -0
  351. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/jserrors/PendingErrorStore$PendingError$$serializer.class +0 -0
  352. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/jserrors/PendingErrorStore$PendingError$Companion.class +0 -0
  353. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/jserrors/PendingErrorStore$PendingError.class +0 -0
  354. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/jserrors/PendingErrorStore$drain$$inlined$sortedBy$1.class +0 -0
  355. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/jserrors/PendingErrorStore.class +0 -0
  356. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/logevents/AttributeValidationKt.class +0 -0
  357. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/logevents/DisplayNameValidationKt.class +0 -0
  358. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/logevents/EventBodyValidationKt.class +0 -0
  359. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/logevents/EventNameValidationKt.class +0 -0
  360. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/logevents/LogEventOptions$__Pika.class +0 -0
  361. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/logevents/LogEventOptions.class +0 -0
  362. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/logevents/SanitizedLogAttributes.class +0 -0
  363. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/logevents/Severity$Companion.class +0 -0
  364. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/logevents/Severity$WhenMappings.class +0 -0
  365. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/logevents/Severity.class +0 -0
  366. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/logevents/TruncationKt.class +0 -0
  367. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/memory/MemoryMetricsManager$takeMemorySnapshot$1.class +0 -0
  368. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/memory/MemoryMetricsManager.class +0 -0
  369. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/memory/MemoryUsageSnapshot$$serializer.class +0 -0
  370. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/memory/MemoryUsageSnapshot$Companion.class +0 -0
  371. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/memory/MemoryUsageSnapshot$__Pika.class +0 -0
  372. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/memory/MemoryUsageSnapshot.class +0 -0
  373. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/AlreadyObservedMarker.class +0 -0
  374. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/BodyCloseSignal$signalingSource$2$1.class +0 -0
  375. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/BodyCloseSignal.class +0 -0
  376. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequest$FetchType.class +0 -0
  377. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequest$Redirect.class +0 -0
  378. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequest$Timings.class +0 -0
  379. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequest.class +0 -0
  380. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestEventListener$Companion.class +0 -0
  381. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestEventListener$MutablePhaseTimings.class +0 -0
  382. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestEventListener$PhaseTimings.class +0 -0
  383. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestEventListener.class +0 -0
  384. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestFilter$__Pika.class +0 -0
  385. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestFilter.class +0 -0
  386. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestInterceptor$Companion.class +0 -0
  387. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestInterceptor.class +0 -0
  388. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestInterceptorKt.class +0 -0
  389. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestMonitor$Companion.class +0 -0
  390. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestMonitor.class +0 -0
  391. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestObserver$Companion.class +0 -0
  392. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestObserver.class +0 -0
  393. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestObserverDelegate$DefaultImpls.class +0 -0
  394. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestObserverDelegate.class +0 -0
  395. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestObserverKt.class +0 -0
  396. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestPersistence$persist$1.class +0 -0
  397. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestPersistence$persistBuffered$2.class +0 -0
  398. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestPersistence.class +0 -0
  399. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestPersistenceKt.class +0 -0
  400. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestStarted.class +0 -0
  401. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestSummary$Companion$busyDuration$$inlined$sortedBy$1.class +0 -0
  402. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestSummary$Companion.class +0 -0
  403. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestSummary$SlowestRequest.class +0 -0
  404. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestSummary.class +0 -0
  405. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/NetworkRequestSummaryKt.class +0 -0
  406. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/OkHttpClientProviderHook$installIfNeeded$1.class +0 -0
  407. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/networkrequests/OkHttpClientProviderHook.class +0 -0
  408. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/CrashReportDao.class +0 -0
  409. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/CrashReportDao_Impl$1.class +0 -0
  410. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/CrashReportDao_Impl$Companion.class +0 -0
  411. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/CrashReportDao_Impl.class +0 -0
  412. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/CrashReportEntity.class +0 -0
  413. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/JsDebugSession$Companion.class +0 -0
  414. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/JsDebugSession$__Pika.class +0 -0
  415. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/JsDebugSession.class +0 -0
  416. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/JsLogRecord$Companion.class +0 -0
  417. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/JsLogRecord$__Pika.class +0 -0
  418. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/JsLogRecord.class +0 -0
  419. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/JsMetric$Companion.class +0 -0
  420. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/JsMetric$__Pika.class +0 -0
  421. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/JsMetric.class +0 -0
  422. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/LogDao.class +0 -0
  423. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/LogDao_Impl$1.class +0 -0
  424. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/LogDao_Impl$2.class +0 -0
  425. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/LogDao_Impl$Companion.class +0 -0
  426. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/LogDao_Impl.class +0 -0
  427. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/LogRecord$$serializer.class +0 -0
  428. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/LogRecord$Companion.class +0 -0
  429. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/LogRecord.class +0 -0
  430. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/Metric$$serializer.class +0 -0
  431. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/Metric$Companion.class +0 -0
  432. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/Metric.class +0 -0
  433. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/MetricDao.class +0 -0
  434. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/MetricDao_Impl$1.class +0 -0
  435. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/MetricDao_Impl$2.class +0 -0
  436. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/MetricDao_Impl$Companion.class +0 -0
  437. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/MetricDao_Impl.class +0 -0
  438. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/MetricsConstants.class +0 -0
  439. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/MetricsDatabase$Companion.class +0 -0
  440. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/MetricsDatabase.class +0 -0
  441. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/MetricsDatabase_Impl$createOpenDelegate$_openDelegate$1.class +0 -0
  442. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/MetricsDatabase_Impl.class +0 -0
  443. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/Session$$serializer.class +0 -0
  444. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/Session$Companion.class +0 -0
  445. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/Session.class +0 -0
  446. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionDao.class +0 -0
  447. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionDao_Impl$1.class +0 -0
  448. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionDao_Impl$Companion.class +0 -0
  449. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionDao_Impl.class +0 -0
  450. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionManager$cleanupOldSessions$1.class +0 -0
  451. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionManager$clearAllData$1.class +0 -0
  452. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionManager$getCrashReport$1.class +0 -0
  453. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionManager$getSessions$1.class +0 -0
  454. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionManager$storeCrashReportIfNew$2.class +0 -0
  455. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionManager.class +0 -0
  456. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionMappersKt.class +0 -0
  457. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionMetricInput$__Pika.class +0 -0
  458. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionMetricInput.class +0 -0
  459. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionSharedObject$addLogs$1.class +0 -0
  460. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionSharedObject$addMetrics$1.class +0 -0
  461. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionSharedObject$getEndDate$1.class +0 -0
  462. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionSharedObject$isActive$1.class +0 -0
  463. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionSharedObject$sessionStartJob$2$1.class +0 -0
  464. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionSharedObject$stop$1.class +0 -0
  465. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionSharedObject.class +0 -0
  466. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionWithChildren.class +0 -0
  467. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SessionWithMetrics.class +0 -0
  468. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/Span$Companion.class +0 -0
  469. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/Span.class +0 -0
  470. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SpanDao$Companion.class +0 -0
  471. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SpanDao$DefaultImpls.class +0 -0
  472. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SpanDao$insert$1.class +0 -0
  473. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SpanDao.class +0 -0
  474. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SpanDao_Impl$1.class +0 -0
  475. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SpanDao_Impl$Companion.class +0 -0
  476. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SpanDao_Impl$insert$2.class +0 -0
  477. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/storage/SpanDao_Impl.class +0 -0
  478. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/updates/UpdatesMonitoring.class +0 -0
  479. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/updates/UpdatesStateEvent$Companion.class +0 -0
  480. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/updates/UpdatesStateEvent$EventType.class +0 -0
  481. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/updates/UpdatesStateEvent.class +0 -0
  482. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/utils/DeviceConditions.class +0 -0
  483. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/utils/DeviceState.class +0 -0
  484. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/utils/JsonAny.class +0 -0
  485. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/utils/MetricParamsBuilder$WhenMappings.class +0 -0
  486. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/utils/MetricParamsBuilder.class +0 -0
  487. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/utils/NetworkState.class +0 -0
  488. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/utils/NetworkTransport.class +0 -0
  489. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/utils/ThermalState.class +0 -0
  490. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/utils/TimeUtils$utcFormatter$1.class +0 -0
  491. package/android/build/tmp/kotlin-classes/release/expo/modules/appmetrics/utils/TimeUtils.class +0 -0
  492. package/android/build/tmp/publishReleasePublicationToNPMPackageRepository/module-maven-metadata.xml +0 -13
  493. package/android/build/tmp/sourceReleaseJar/MANIFEST.MF +0 -2
  494. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0-sources.jar +0 -0
  495. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0-sources.jar.md5 +0 -1
  496. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0-sources.jar.sha1 +0 -1
  497. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0-sources.jar.sha256 +0 -1
  498. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0-sources.jar.sha512 +0 -1
  499. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0.aar +0 -0
  500. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0.aar.md5 +0 -1
  501. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0.aar.sha1 +0 -1
  502. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0.aar.sha256 +0 -1
  503. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0.aar.sha512 +0 -1
  504. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0.module +0 -156
  505. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0.module.md5 +0 -1
  506. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0.module.sha1 +0 -1
  507. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0.module.sha256 +0 -1
  508. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0.module.sha512 +0 -1
  509. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0.pom.md5 +0 -1
  510. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0.pom.sha1 +0 -1
  511. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0.pom.sha256 +0 -1
  512. package/local-maven-repo/expo/modules/appmetrics/expo.modules.appmetrics/58.0.0/expo.modules.appmetrics-58.0.0.pom.sha512 +0 -1
package/.npmignore CHANGED
@@ -20,3 +20,8 @@ __rsc_tests__
20
20
  # Ensure native dirs aren't excluded by root .gitignore
21
21
  !/ios
22
22
  !/android
23
+
24
+ # Exclude native build output (pnpm pack ignores nested .gitignore files)
25
+ .cxx/
26
+ .gradle/
27
+ /android/build/
package/CHANGELOG.md CHANGED
@@ -10,6 +10,16 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 58.0.2 — 2026-09-15
14
+
15
+ ### 💡 Others
16
+
17
+ - Add an internal `setNetworkTracesConfig` to gate and filter network span recording at capture time. ([#48891](https://github.com/expo/expo/pull/48891) by [@tsapeta](https://github.com/tsapeta))
18
+
19
+ ## 58.0.1 — 2026-09-14
20
+
21
+ _This version does not introduce any user-facing changes._
22
+
13
23
  ## 58.0.0 — 2026-09-10
14
24
 
15
25
  ### 🛠 Breaking changes
@@ -16,6 +16,7 @@ import expo.modules.appmetrics.networkrequests.NetworkRequestFilter
16
16
  import expo.modules.appmetrics.networkrequests.NetworkRequestMonitor
17
17
  import expo.modules.appmetrics.networkrequests.NetworkRequestObserver
18
18
  import expo.modules.appmetrics.networkrequests.NetworkRequestPersistence
19
+ import expo.modules.appmetrics.networkrequests.NetworkTracesConfiguration
19
20
  import expo.modules.appmetrics.logevents.Severity
20
21
  import expo.modules.appmetrics.logevents.sanitizeLogEventAttributes
21
22
  import expo.modules.appmetrics.logevents.validateDisplayName
@@ -69,8 +70,9 @@ class AppMetricsModule : Module(), UpdatesStateChangeListener {
69
70
  lateinit var mainSession: SessionSharedObject
70
71
 
71
72
  /**
72
- * The span producer installed on the monitor in `OnCreate`, kept so `OnDestroy` can
73
- * uninstall it when the module is torn down (a JS reload).
73
+ * The span producer installed on the monitor in `OnCreate`, kept so `setNetworkTracesConfig`
74
+ * can apply a new recording policy to the live instance and `OnDestroy` can uninstall it
75
+ * when the module is torn down (a JS reload).
74
76
  */
75
77
  private var networkRequestPersistence: NetworkRequestPersistence? = null
76
78
 
@@ -136,6 +138,22 @@ class AppMetricsModule : Module(), UpdatesStateChangeListener {
136
138
  GlobalAttributes.set(attributes)
137
139
  }
138
140
 
141
+ Function("setNetworkTracesConfig") { config: NetworkTracesConfigParam ->
142
+ val configuration = NetworkTracesConfiguration(
143
+ enabled = config.enabled,
144
+ hosts = config.filter?.hosts,
145
+ methods = config.filter?.methods
146
+ )
147
+ // Persisted before the hop, so a configure racing startup is either read from
148
+ // preferences by the installing producer or applied to the live one below.
149
+ AppMetricsPreferences.setNetworkTracesConfiguration(context, configuration)
150
+ scope.launch {
151
+ // `modulesQueue` is a single thread fed from the JS thread, so rapid calls land in
152
+ // order. iOS re-reads instead, because its actor hops carry no such guarantee.
153
+ networkRequestPersistence?.setConfiguration(configuration)
154
+ }
155
+ }
156
+
139
157
  OnCreate {
140
158
  sessionManager = SessionManager(context)
141
159
 
@@ -167,6 +185,7 @@ class AppMetricsModule : Module(), UpdatesStateChangeListener {
167
185
  val persistence = NetworkRequestPersistence(
168
186
  database = MetricsDatabase.getDatabase(context),
169
187
  scope = scope,
188
+ initialConfiguration = AppMetricsPreferences.getNetworkTracesConfiguration(context),
170
189
  sessionId = mainSession.sessionId
171
190
  )
172
191
  networkRequestPersistence = persistence
@@ -390,3 +409,13 @@ data class MetricAttributes(
390
409
  @Field val routeName: String? = null,
391
410
  @Field val params: Map<String, Any>? = null
392
411
  ) : Record
412
+
413
+ /**
414
+ * Payload of `setNetworkTracesConfig`: the normalized `networkTraces` setting pushed down by
415
+ * `Observe.configure`.
416
+ */
417
+ @OptimizedRecord
418
+ data class NetworkTracesConfigParam(
419
+ @Field val enabled: Boolean = true,
420
+ @Field val filter: NetworkRequestFilter? = null
421
+ ) : Record
@@ -2,10 +2,12 @@ package expo.modules.appmetrics
2
2
 
3
3
  import android.content.Context
4
4
  import androidx.core.content.edit
5
+ import expo.modules.appmetrics.networkrequests.NetworkTracesConfiguration
5
6
 
6
7
  private const val PREFS_NAME = "dev.expo.app-metrics"
7
8
  private const val KEY_ENVIRONMENT = "environment"
8
9
  private const val KEY_LAST_PROCESSED_EXIT_MILLIS = "lastProcessedExitMillis"
10
+ private const val KEY_NETWORK_TRACES_CONFIGURATION = "networkTracesConfiguration"
9
11
 
10
12
  object AppMetricsPreferences {
11
13
  /**
@@ -41,4 +43,26 @@ object AppMetricsPreferences {
41
43
  fun getDefaultEnvironment(): String? {
42
44
  return if (BuildConfig.DEBUG) "development" else null
43
45
  }
46
+
47
+ /**
48
+ * Last-applied network traces recording policy, or the default when JS never configured one.
49
+ * Persisted so requests observed before the JS bundle configures the SDK (early startup, or
50
+ * the next launch) follow the last-known setting.
51
+ */
52
+ fun getNetworkTracesConfiguration(context: Context): NetworkTracesConfiguration {
53
+ val prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
54
+ val json = prefs.getString(KEY_NETWORK_TRACES_CONFIGURATION, null)
55
+ ?: return NetworkTracesConfiguration()
56
+ return NetworkTracesConfiguration.fromJson(json)
57
+ }
58
+
59
+ fun setNetworkTracesConfiguration(
60
+ context: Context,
61
+ configuration: NetworkTracesConfiguration
62
+ ) {
63
+ val prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
64
+ // `apply()` rather than `commit()`: this runs inline on the JS thread, and iOS persists
65
+ // through `UserDefaults` without a synchronous flush either.
66
+ prefs.edit { putString(KEY_NETWORK_TRACES_CONFIGURATION, configuration.toJson()) }
67
+ }
44
68
  }
@@ -23,16 +23,37 @@ private const val TAG = "ExpoAppMetrics"
23
23
  class NetworkRequestPersistence(
24
24
  private val database: MetricsDatabase,
25
25
  private val scope: CoroutineScope,
26
+ initialConfiguration: NetworkTracesConfiguration = NetworkTracesConfiguration(),
26
27
  // A plain value rather than a provider: the id is constant for an instance, and resolving it
27
28
  // eagerly keeps the monitor's record path off module state a teardown could have invalidated.
28
29
  private val sessionId: String
29
30
  ) {
31
+ /**
32
+ * Capture-time recording policy. Volatile because the monitor reads it from OkHttp dispatcher
33
+ * threads while reconfigures land on the modules queue.
34
+ */
35
+ @Volatile
36
+ private var configuration: NetworkTracesConfiguration = initialConfiguration
37
+
38
+ /**
39
+ * Applies a new recording policy. Affects future requests only; rows already written stay.
40
+ */
41
+ fun setConfiguration(configuration: NetworkTracesConfiguration) {
42
+ this.configuration = configuration
43
+ }
44
+
30
45
  /**
31
46
  * Records one completed request as a span.
32
47
  */
33
48
  fun persist(request: NetworkRequest) {
34
- // Converts and inserts on `scope`, so OkHttp dispatcher threads pay neither the URL parsing
35
- // and JSON building nor the database write. Matches `persistBuffered`.
49
+ // Checked before dispatching: a request the policy excludes costs nothing beyond this. A
50
+ // `hosts` list does parse the URL here, on the dispatcher thread, which is the price of
51
+ // deciding before the hop.
52
+ if (!configuration.allows(request.url, request.method)) {
53
+ return
54
+ }
55
+ // Converts and inserts on `scope`, so past the gate the dispatcher threads pay neither the
56
+ // span building nor the database write. Matches `persistBuffered`.
36
57
  scope.launch {
37
58
  val span = request.toSpan(sessionId) ?: return@launch
38
59
  try {
@@ -60,7 +81,15 @@ class NetworkRequestPersistence(
60
81
  // with the session INSERT and crash-report processing, so converting up to 200 requests
61
82
  // there would be the most expensive place to do it.
62
83
  scope.launch {
84
+ // Snapshotted once, unlike `persist`, which samples the policy per request. Everything in
85
+ // this batch was observed before the install that triggered the drain, so one policy keeps
86
+ // their treatment from depending on how far the loop happened to get before a reconfigure
87
+ // landed.
88
+ val policy = configuration
63
89
  for (request in requests) {
90
+ if (!policy.allows(request.url, request.method)) {
91
+ continue
92
+ }
64
93
  val span = request.toSpan(sessionId) ?: continue
65
94
  try {
66
95
  database.spanDao().insert(span)
@@ -0,0 +1,67 @@
1
+ // Copyright 2025-present 650 Industries. All rights reserved.
2
+
3
+ package expo.modules.appmetrics.networkrequests
4
+
5
+ import org.json.JSONArray
6
+ import org.json.JSONObject
7
+
8
+ /**
9
+ * Which network requests get recorded as spans. Unlike the dispatch-side gates, a request
10
+ * rejected here never reaches disk.
11
+ *
12
+ * Persisted, so requests observed before JS configures anything follow the last-applied setting.
13
+ * Mirrors the iOS `NetworkTracesConfiguration`, except for how a partially corrupt blob decodes:
14
+ * this side recovers the readable fields, while iOS falls back to the default wholesale.
15
+ */
16
+ data class NetworkTracesConfiguration(
17
+ val enabled: Boolean = false,
18
+ /**
19
+ * Allowed hosts, compared for exact, case-insensitive equality. `null` allows every host;
20
+ * an empty list allows none.
21
+ */
22
+ val hosts: List<String>? = null,
23
+ /** Allowed HTTP methods, compared case-insensitively. `null` allows every method. */
24
+ val methods: List<String>? = null
25
+ ) {
26
+ /**
27
+ * Whether a request should be recorded. Matching is delegated to `NetworkRequestFilter`, so
28
+ * the capture gate and the JS-facing observer can't drift apart.
29
+ */
30
+ fun allows(url: String, method: String): Boolean {
31
+ if (!enabled) {
32
+ return false
33
+ }
34
+ return filter.matches(url, method)
35
+ }
36
+
37
+ // `persist` gates on the OkHttp dispatcher thread, before the hop to the database queue, so this
38
+ // is built once instead of per request. The instance is immutable, so the filter is too.
39
+ private val filter by lazy { NetworkRequestFilter(hosts = hosts, methods = methods) }
40
+
41
+ /** JSON form for the preferences store. */
42
+ fun toJson(): String {
43
+ val json = JSONObject()
44
+ json.put("enabled", enabled)
45
+ hosts?.let { json.put("hosts", JSONArray(it)) }
46
+ methods?.let { json.put("methods", JSONArray(it)) }
47
+ return json.toString()
48
+ }
49
+
50
+ companion object {
51
+ /** Parses the preferences-store form; a malformed blob falls back to the default policy. */
52
+ fun fromJson(json: String): NetworkTracesConfiguration {
53
+ return runCatching {
54
+ val obj = JSONObject(json)
55
+ NetworkTracesConfiguration(
56
+ enabled = obj.optBoolean("enabled", false),
57
+ hosts = obj.optJSONArray("hosts")?.let { array ->
58
+ List(array.length()) { index -> array.getString(index) }
59
+ },
60
+ methods = obj.optJSONArray("methods")?.let { array ->
61
+ List(array.length()) { index -> array.getString(index) }
62
+ }
63
+ )
64
+ }.getOrDefault(NetworkTracesConfiguration())
65
+ }
66
+ }
67
+ }
@@ -10,11 +10,12 @@ declare class ExpoAppMetricsModule extends NativeModule implements ExpoAppMetric
10
10
  markInteractive(attributes?: MetricAttributes): Promise<void>;
11
11
  logEvent(name: string, options?: LogEventOptions): void;
12
12
  setGlobalAttributes(attributes?: Record<string, LogAttributeValue> | null): void;
13
+ setNetworkTracesConfig(): void;
13
14
  clearStoredEntries(): Promise<void>;
14
15
  getInactiveSessions(): Promise<never[]>;
15
16
  reportError(): void;
16
17
  getMainSession(): Session;
17
18
  getForegroundSession(): Promise<null>;
18
19
  }
19
- declare const _default: typeof ExpoAppMetricsModule;
20
+ declare const _default: ExpoAppMetricsModule;
20
21
  export default _default;
@@ -31,6 +31,7 @@ class ExpoAppMetricsModule extends NativeModule {
31
31
  async markInteractive(attributes) {}
32
32
  logEvent(name, options) {}
33
33
  setGlobalAttributes(attributes) {}
34
+ setNetworkTracesConfig() {}
34
35
  async clearStoredEntries() {}
35
36
  async getInactiveSessions() {
36
37
  return [];
@@ -1 +1 @@
1
- {"version":3,"sources":["module.web.ts"],"sourcesContent":[null],"names":["NativeModule","registerWebModule","SharedObject","NetworkRequestObserverWeb","WebSession","globalThis","expo","id","startDate","Date","toISOString","type","isActive","getEndDate","getMetrics","getLogs","addMetric","_metric","ExpoAppMetricsModule","NetworkRequestObserver","Session","mainSession","markFirstRender","markInteractive","attributes","logEvent","name","options","setGlobalAttributes","clearStoredEntries","getInactiveSessions","reportError","getMainSession","getForegroundSession"],"mappings":"AAAA,SAASA,YAAY,EAAEC,iBAAiB,EAAEC,YAAY,QAAQ,OAAO;AAerE,cAAc,UAAU;AAExB,MAAMC,kCAAkCD;AAGxC;AAEA,MAAME,mBAAmBC,WAAWC,IAAI,CAACJ,YAAY;;IAC1CK,KAAK,cAAc;IACnBC,YAAY,IAAIC,OAAOC,WAAW,GAAG;IAE9C,YAAY,AAASC,OAAoB,MAAM,CAAE;QAC/C,KAAK,SADcA,OAAAA;IAErB;IAEA,MAAMC,WAA6B;QACjC,OAAO;IACT;IACA,MAAMC,aAAqC;QACzC,OAAO;IACT;IACA,MAAMC,aAAgC;QACpC,OAAO,EAAE;IACX;IACA,MAAMC,UAAgC;QACpC,OAAO,EAAE;IACX;IACA,MAAMC,UAAUC,OAAoB,EAAiB,CAAC;AACxD;AAEA,MAAMC,6BAA6BlB;IACjCmB,yBACEhB,0BAA2F;IAC7FiB,UAAUhB,WAAwC;IAE1CiB,cAAiC,KAAK;IAE9C,MAAMC,kBAAkB,CAAC;IACzB,MAAMC,gBAAgBC,UAA6B,EAAE,CAAC;IACtDC,SAASC,IAAY,EAAEC,OAAyB,EAAE,CAAC;IACnDC,oBAAoBJ,UAAqD,EAAE,CAAC;IAC5E,MAAMK,qBAAqB,CAAC;IAC5B,MAAMC,sBAAsB;QAC1B,OAAO,EAAE;IACX;IACAC,cAAc,CAAC;IACfC,iBAA0B;QACxB,IAAI,CAACX,WAAW,KAAK,IAAIjB,WAAW;QACpC,OAAO,IAAI,CAACiB,WAAW;IACzB;IACA,MAAMY,uBAAuB;QAC3B,OAAO;IACT;AACF;AAEA,eAAehC,kBAAkBiB,sBAAsB,kBAAkB"}
1
+ {"version":3,"sources":["module.web.ts"],"sourcesContent":[null],"names":["NativeModule","registerWebModule","SharedObject","NetworkRequestObserverWeb","WebSession","globalThis","expo","id","startDate","Date","toISOString","type","isActive","getEndDate","getMetrics","getLogs","addMetric","_metric","ExpoAppMetricsModule","NetworkRequestObserver","Session","mainSession","markFirstRender","markInteractive","attributes","logEvent","name","options","setGlobalAttributes","setNetworkTracesConfig","clearStoredEntries","getInactiveSessions","reportError","getMainSession","getForegroundSession"],"mappings":"AAAA,SAASA,YAAY,EAAEC,iBAAiB,EAAEC,YAAY,QAAQ,OAAO;AAerE,cAAc,UAAU;AAExB,MAAMC,kCAAkCD;AAGxC;AAEA,MAAME,mBAAmBC,WAAWC,IAAI,CAACJ,YAAY;;IAC1CK,KAAK,cAAc;IACnBC,YAAY,IAAIC,OAAOC,WAAW,GAAG;IAE9C,YAAY,AAASC,OAAoB,MAAM,CAAE;QAC/C,KAAK,SADcA,OAAAA;IAErB;IAEA,MAAMC,WAA6B;QACjC,OAAO;IACT;IACA,MAAMC,aAAqC;QACzC,OAAO;IACT;IACA,MAAMC,aAAgC;QACpC,OAAO,EAAE;IACX;IACA,MAAMC,UAAgC;QACpC,OAAO,EAAE;IACX;IACA,MAAMC,UAAUC,OAAoB,EAAiB,CAAC;AACxD;AAEA,MAAMC,6BAA6BlB;IACjCmB,yBACEhB,0BAA2F;IAC7FiB,UAAUhB,WAAwC;IAE1CiB,cAAiC,KAAK;IAE9C,MAAMC,kBAAkB,CAAC;IACzB,MAAMC,gBAAgBC,UAA6B,EAAE,CAAC;IACtDC,SAASC,IAAY,EAAEC,OAAyB,EAAE,CAAC;IACnDC,oBAAoBJ,UAAqD,EAAE,CAAC;IAC5EK,yBAAyB,CAAC;IAC1B,MAAMC,qBAAqB,CAAC;IAC5B,MAAMC,sBAAsB;QAC1B,OAAO,EAAE;IACX;IACAC,cAAc,CAAC;IACfC,iBAA0B;QACxB,IAAI,CAACZ,WAAW,KAAK,IAAIjB,WAAW;QACpC,OAAO,IAAI,CAACiB,WAAW;IACzB;IACA,MAAMa,uBAAuB;QAC3B,OAAO;IACT;AACF;AAEA,eAAejC,kBAAkBiB,sBAAsB,kBAAkB"}
package/build/types.d.ts CHANGED
@@ -470,6 +470,20 @@ export type DebugSession = {
470
470
  /** Crash report attached to the session, if any. */
471
471
  crashReport?: CrashReport | null;
472
472
  };
473
+ /**
474
+ * Normalized form of `Observe.configure({ networkTraces })`, persisted natively.
475
+ * @hidden
476
+ */
477
+ export type NetworkTracesConfig = {
478
+ /**
479
+ * Whether completed network requests are written to the local `spans` table.
480
+ */
481
+ enabled: boolean;
482
+ /**
483
+ * Only requests matching the filter are recorded. An omitted filter records every request.
484
+ */
485
+ filter?: NetworkRequestFilter | null;
486
+ };
473
487
  export interface ExpoAppMetricsModuleType {
474
488
  markFirstRender(): void;
475
489
  markInteractive(attributes?: MetricAttributes): void;
@@ -484,6 +498,12 @@ export interface ExpoAppMetricsModuleType {
484
498
  * @param options Optional body, attributes, and severity overrides.
485
499
  */
486
500
  logEvent(name: string, options?: LogEventOptions): void;
501
+ /**
502
+ * Applies and persists the network traces recording setting. Affects future captures only;
503
+ * spans already written keep dispatching.
504
+ * @hidden
505
+ */
506
+ setNetworkTracesConfig(config: NetworkTracesConfig): void;
487
507
  /**
488
508
  * Sets attributes merged into every subsequent metric and log event.
489
509
  * Per-record keys win on collision. Pass `null`, `undefined`, or an empty
@@ -1 +1 @@
1
- {"version":3,"sources":["types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAufA,WAkHC"}
1
+ {"version":3,"sources":["types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAsgBA,WAwHC"}
@@ -9,7 +9,7 @@
9
9
  "publication": {
10
10
  "groupId": "expo.modules.appmetrics",
11
11
  "artifactId": "expo.modules.appmetrics",
12
- "version": "58.0.0",
12
+ "version": "58.0.2",
13
13
  "repository": "local-maven-repo"
14
14
  }
15
15
  }
@@ -14,7 +14,12 @@ public class AppMetricsAppDelegateSubscriber: ExpoAppDelegateSubscriber {
14
14
  // From here on every completed request is written to the database, attributed to the main
15
15
  // session. The session's row INSERT was enqueued on the actor when `mainSession` was first
16
16
  // touched above, so it lands before any request row that references it.
17
- NetworkRequestMonitor.shared.persistence = NetworkRequestPersistence(database: AppMetrics.database) {
17
+ // The persisted recording policy applies from the first observed request; JS can replace
18
+ // it later via `setNetworkTracesConfig`, affecting subsequent requests only.
19
+ NetworkRequestMonitor.shared.persistence = NetworkRequestPersistence(
20
+ database: AppMetrics.database,
21
+ configuration: AppMetricsUserDefaults.networkTracesConfiguration ?? NetworkTracesConfiguration()
22
+ ) {
18
23
  return AppMetrics.mainSession.id
19
24
  }
20
25
  }
@@ -64,6 +64,23 @@ public final class AppMetricsModule: Module, UpdatesStateChangeListener {
64
64
  GlobalAttributes.set(attributes)
65
65
  }
66
66
 
67
+ Function("setNetworkTracesConfig") { (config: NetworkTracesConfigParam) in
68
+ let configuration = NetworkTracesConfiguration(
69
+ enabled: config.enabled,
70
+ hosts: config.filter?.hosts,
71
+ methods: config.filter?.methods
72
+ )
73
+ // Persisted before the hop, so a configure racing startup is either read from
74
+ // `UserDefaults` by the installing producer or applied to the live one below.
75
+ AppMetricsUserDefaults.networkTracesConfiguration = configuration
76
+ AppMetricsActor.isolated {
77
+ // Re-read rather than captured: actor hops are unordered, so two rapid calls could
78
+ // otherwise apply out of order. Android captures, since its queue is a single thread.
79
+ let latest = AppMetricsUserDefaults.networkTracesConfiguration ?? NetworkTracesConfiguration()
80
+ NetworkRequestMonitor.shared.persistence?.setConfiguration(latest)
81
+ }
82
+ }
83
+
67
84
  AsyncFunction("getAppStartupTimesAsync") {
68
85
  return await AppMetrics.mainSession.appStartupMonitor.metrics
69
86
  }
@@ -195,6 +212,14 @@ private func storedSession(id: String) throws -> StoredSession? {
195
212
  return StoredSession(from: row)
196
213
  }
197
214
 
215
+ /// Payload of `setNetworkTracesConfig`: the normalized `networkTraces` setting pushed down by
216
+ /// `Observe.configure`.
217
+ @Record
218
+ internal struct NetworkTracesConfigParam {
219
+ var enabled: Bool = true
220
+ var filter: NetworkRequestFilter?
221
+ }
222
+
198
223
  struct MetricAttributes: Record {
199
224
  @Field var routeName: String?
200
225
  @Field var params: [String: Any]?
@@ -8,6 +8,7 @@ public final class AppMetricsUserDefaults: UserDefaults {
8
8
  private enum Keys: String {
9
9
  case lastAppLaunchState
10
10
  case environment
11
+ case networkTracesConfiguration
11
12
  }
12
13
 
13
14
  private init() {
@@ -41,4 +42,15 @@ public final class AppMetricsUserDefaults: UserDefaults {
41
42
  defaults.set(codable: newValue, forKey: Keys.lastAppLaunchState.rawValue)
42
43
  }
43
44
  }
45
+
46
+ /// Last-applied network traces policy, or `nil` when JS never configured one. Persisted so
47
+ /// early-startup requests follow the last-known setting.
48
+ static var networkTracesConfiguration: NetworkTracesConfiguration? {
49
+ get {
50
+ return defaults.codable(forKey: Keys.networkTracesConfiguration.rawValue, as: NetworkTracesConfiguration.self)
51
+ }
52
+ set {
53
+ defaults.set(codable: newValue, forKey: Keys.networkTracesConfiguration.rawValue)
54
+ }
55
+ }
44
56
  }
@@ -15,13 +15,10 @@ import Foundation
15
15
  /// unset places no constraint on its dimension, while a field set to an empty array allows nothing
16
16
  /// through it (an empty allow-list matches no value), so any empty field drops every request. A
17
17
  /// filter with no fields set matches every request, matching the no-filter default.
18
- public struct NetworkRequestFilter: Record, Sendable {
19
- public init() {}
20
-
21
- @Field
18
+ @Record
19
+ public struct NetworkRequestFilter: Sendable {
22
20
  public var hosts: [String]?
23
21
 
24
- @Field
25
22
  public var methods: [String]?
26
23
 
27
24
  /// Returns whether a request with the given URL and method passes this filter. Host and method
@@ -15,13 +15,28 @@ final class NetworkRequestPersistence: Sendable {
15
15
  /// the app delegate finished wiring it.
16
16
  private let sessionId: @Sendable () -> String
17
17
 
18
- init(database: MetricsDatabase?, sessionId: @escaping @Sendable () -> String) {
18
+ private var configuration: NetworkTracesConfiguration
19
+
20
+ init(
21
+ database: MetricsDatabase?,
22
+ configuration: NetworkTracesConfiguration = NetworkTracesConfiguration(),
23
+ sessionId: @escaping @Sendable () -> String
24
+ ) {
19
25
  self.database = database
26
+ self.configuration = configuration
20
27
  self.sessionId = sessionId
21
28
  }
22
29
 
30
+ /// Applies a new recording policy. Affects future requests only; rows already written stay.
31
+ func setConfiguration(_ configuration: NetworkTracesConfiguration) {
32
+ self.configuration = configuration
33
+ }
34
+
23
35
  /// Records one completed request as a span.
24
36
  func persist(_ request: NetworkRequest) {
37
+ guard configuration.allows(url: request.url, method: request.method) else {
38
+ return
39
+ }
25
40
  guard let database, let row = SpanRow.from(request: request, sessionId: sessionId()) else {
26
41
  return
27
42
  }
@@ -0,0 +1,27 @@
1
+ // Copyright 2025-present 650 Industries. All rights reserved.
2
+
3
+ import Foundation
4
+
5
+ /// Which network requests get recorded as spans. Unlike the dispatch-side gates, a request
6
+ /// rejected here never reaches disk.
7
+ ///
8
+ /// Persisted, so requests observed before JS configures anything follow the last-applied setting.
9
+ internal struct NetworkTracesConfiguration: Codable, Sendable {
10
+ var enabled: Bool = false
11
+
12
+ /// Allowed hosts, compared for exact, case-insensitive equality. `nil` allows every host;
13
+ /// an empty array allows none.
14
+ var hosts: [String]?
15
+
16
+ /// Allowed HTTP methods, compared case-insensitively. `nil` allows every method.
17
+ var methods: [String]?
18
+
19
+ /// Whether a request should be recorded. Matching is delegated to `NetworkRequestFilter`, so the
20
+ /// capture gate and the JS-facing observer can't drift apart.
21
+ func allows(url: URL, method: String) -> Bool {
22
+ guard enabled else {
23
+ return false
24
+ }
25
+ return NetworkRequestFilter(hosts: hosts, methods: methods).matches(url: url, method: method)
26
+ }
27
+ }
@@ -458,11 +458,66 @@ struct NetworkRequestPersistenceTests {
458
458
  )
459
459
  }
460
460
 
461
+ @Test
462
+ func `drops every request while recording is disabled`() throws {
463
+ try withTemporaryDatabase { database in
464
+ try insertSession(id: "s", into: database)
465
+ let persistence = NetworkRequestPersistence(
466
+ database: database,
467
+ configuration: NetworkTracesConfiguration(enabled: false)
468
+ ) {
469
+ return "s"
470
+ }
471
+ persistence.persist(makeRequest())
472
+ #expect(try database.getSpans(afterId: -1).isEmpty)
473
+ }
474
+ }
475
+
476
+ @Test
477
+ func `records only requests matching the configured filter`() throws {
478
+ try withTemporaryDatabase { database in
479
+ try insertSession(id: "s", into: database)
480
+ let persistence = NetworkRequestPersistence(
481
+ database: database,
482
+ configuration: NetworkTracesConfiguration(enabled: true, hosts: ["API.myapp.com"], methods: nil)
483
+ ) {
484
+ return "s"
485
+ }
486
+ persistence.persist(makeRequest(url: "https://api.example.com/skip"))
487
+ persistence.persist(makeRequest(url: "https://api.myapp.com/keep"))
488
+ let rows = try database.getSpans(afterId: -1)
489
+ #expect(rows.count == 1)
490
+ let attributes = try attributesDict(#require(rows.first))
491
+ #expect(attributes["url.full"] as? String == "https://api.myapp.com/keep")
492
+ }
493
+ }
494
+
495
+ @Test
496
+ func `applies a configuration change to subsequent requests only`() throws {
497
+ // "Applies forward": rows persisted before the change stay in the table and still dispatch.
498
+ try withTemporaryDatabase { database in
499
+ try insertSession(id: "s", into: database)
500
+ let persistence = NetworkRequestPersistence(
501
+ database: database,
502
+ configuration: NetworkTracesConfiguration(enabled: true)
503
+ ) {
504
+ return "s"
505
+ }
506
+ persistence.persist(makeRequest())
507
+ persistence.setConfiguration(NetworkTracesConfiguration(enabled: false))
508
+ persistence.persist(makeRequest())
509
+ #expect(try database.getSpans(afterId: -1).count == 1)
510
+ }
511
+ }
512
+
461
513
  @Test
462
514
  func `persists a completed request as a span attributed to the provided session`() throws {
463
515
  try withTemporaryDatabase { database in
464
516
  try insertSession(id: "main-session", into: database)
465
- let persistence = NetworkRequestPersistence(database: database) {
517
+ let persistence = NetworkRequestPersistence(
518
+ database: database,
519
+ configuration: NetworkTracesConfiguration(enabled: true)
520
+ ) {
466
521
  return "main-session"
467
522
  }
468
523
  persistence.persist(makeRequest())
@@ -479,7 +534,10 @@ struct NetworkRequestPersistenceTests {
479
534
  try withTemporaryDatabase { database in
480
535
  try insertSession(id: "main-session", into: database)
481
536
  let monitor = NetworkRequestMonitor()
482
- monitor.persistence = NetworkRequestPersistence(database: database) {
537
+ monitor.persistence = NetworkRequestPersistence(
538
+ database: database,
539
+ configuration: NetworkTracesConfiguration(enabled: true)
540
+ ) {
483
541
  return "main-session"
484
542
  }
485
543
  monitor.record(makeRequest(method: "GET"))
@@ -494,7 +552,10 @@ struct NetworkRequestPersistenceTests {
494
552
  // The sessions FK protects referential integrity; persistence must degrade to a dropped
495
553
  // row rather than throw into the monitor's record path.
496
554
  try withTemporaryDatabase { database in
497
- let persistence = NetworkRequestPersistence(database: database) {
555
+ let persistence = NetworkRequestPersistence(
556
+ database: database,
557
+ configuration: NetworkTracesConfiguration(enabled: true)
558
+ ) {
498
559
  return "never-inserted"
499
560
  }
500
561
  persistence.persist(makeRequest())