@crumbsdk/react-native 0.0.1-rc.3 → 0.0.1-rc.5

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 (373) hide show
  1. package/README.md +280 -8
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/java/com/margelo/nitro/crumbsdk/reactnative/CrumbReactNative.kt +121 -3
  4. package/app.plugin.js +52 -0
  5. package/ios/CrumbReactNative.swift +135 -3
  6. package/lib/module/NativeCrumbReactNative.web.js +5 -1
  7. package/lib/module/NativeCrumbReactNative.web.js.map +1 -1
  8. package/lib/module/build-release.js +19 -0
  9. package/lib/module/build-release.js.map +1 -0
  10. package/lib/module/index.js +94 -2
  11. package/lib/module/index.js.map +1 -1
  12. package/lib/module/javascript-crash-capture.js +497 -0
  13. package/lib/module/javascript-crash-capture.js.map +1 -0
  14. package/lib/module/log-buffer.js +22 -2
  15. package/lib/module/log-buffer.js.map +1 -1
  16. package/lib/module/screen-context.js +127 -0
  17. package/lib/module/screen-context.js.map +1 -0
  18. package/lib/typescript/src/CrumbReactNative.nitro.d.ts +5 -1
  19. package/lib/typescript/src/CrumbReactNative.nitro.d.ts.map +1 -1
  20. package/lib/typescript/src/NativeCrumbReactNative.web.d.ts.map +1 -1
  21. package/lib/typescript/src/build-release.d.ts +6 -0
  22. package/lib/typescript/src/build-release.d.ts.map +1 -0
  23. package/lib/typescript/src/index.d.ts +8 -2
  24. package/lib/typescript/src/index.d.ts.map +1 -1
  25. package/lib/typescript/src/javascript-crash-capture.d.ts +74 -0
  26. package/lib/typescript/src/javascript-crash-capture.d.ts.map +1 -0
  27. package/lib/typescript/src/log-buffer.d.ts +1 -0
  28. package/lib/typescript/src/log-buffer.d.ts.map +1 -1
  29. package/lib/typescript/src/screen-context.d.ts +19 -0
  30. package/lib/typescript/src/screen-context.d.ts.map +1 -0
  31. package/lib/typescript/src/types.d.ts +38 -0
  32. package/lib/typescript/src/types.d.ts.map +1 -1
  33. package/metro.cjs +35 -0
  34. package/metro.d.cts +2 -0
  35. package/native/ios/CrumbSDKCore.podspec +28 -0
  36. package/native/ios/CrumbSDKUI.podspec +38 -0
  37. package/native/ios/LICENSE +201 -0
  38. package/native/ios/PLCrashReporter/CrashReporter.xcframework/Info.plist +96 -0
  39. package/native/ios/PLCrashReporter/CrashReporter.xcframework/PrivacyInfo.xcprivacy +39 -0
  40. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/CrashReporter +0 -0
  41. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/CrashReporter.h +366 -0
  42. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashFeatureConfig.h +108 -0
  43. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashMacros.h +143 -0
  44. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashNamespace.h +320 -0
  45. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReport.h +193 -0
  46. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportApplicationInfo.h +52 -0
  47. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportBinaryImageInfo.h +76 -0
  48. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportExceptionInfo.h +59 -0
  49. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportFormatter.h +55 -0
  50. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportMachExceptionInfo.h +41 -0
  51. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportMachineInfo.h +64 -0
  52. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportProcessInfo.h +80 -0
  53. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportProcessorInfo.h +64 -0
  54. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportRegisterInfo.h +45 -0
  55. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportSignalInfo.h +50 -0
  56. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportStackFrameInfo.h +50 -0
  57. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportSymbolInfo.h +51 -0
  58. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportSystemInfo.h +158 -0
  59. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportTextFormatter.h +59 -0
  60. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReportThreadInfo.h +75 -0
  61. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReporter.h +131 -0
  62. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Headers/PLCrashReporterConfig.h +193 -0
  63. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Info.plist +0 -0
  64. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/Modules/module.modulemap +8 -0
  65. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_arm64e/CrashReporter.framework/PrivacyInfo.xcprivacy +39 -0
  66. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/CrashReporter +0 -0
  67. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/CrashReporter.h +366 -0
  68. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashFeatureConfig.h +108 -0
  69. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashMacros.h +143 -0
  70. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashNamespace.h +320 -0
  71. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReport.h +193 -0
  72. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportApplicationInfo.h +52 -0
  73. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportBinaryImageInfo.h +76 -0
  74. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportExceptionInfo.h +59 -0
  75. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportFormatter.h +55 -0
  76. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportMachExceptionInfo.h +41 -0
  77. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportMachineInfo.h +64 -0
  78. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportProcessInfo.h +80 -0
  79. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportProcessorInfo.h +64 -0
  80. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportRegisterInfo.h +45 -0
  81. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportSignalInfo.h +50 -0
  82. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportStackFrameInfo.h +50 -0
  83. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportSymbolInfo.h +51 -0
  84. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportSystemInfo.h +158 -0
  85. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportTextFormatter.h +59 -0
  86. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReportThreadInfo.h +75 -0
  87. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReporter.h +131 -0
  88. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Headers/PLCrashReporterConfig.h +193 -0
  89. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Modules/module.modulemap +8 -0
  90. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Resources/Info.plist +52 -0
  91. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Resources/PrivacyInfo.xcprivacy +39 -0
  92. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/CrashReporter +0 -0
  93. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/CrashReporter.h +366 -0
  94. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashFeatureConfig.h +108 -0
  95. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashMacros.h +143 -0
  96. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashNamespace.h +320 -0
  97. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReport.h +193 -0
  98. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportApplicationInfo.h +52 -0
  99. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportBinaryImageInfo.h +76 -0
  100. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportExceptionInfo.h +59 -0
  101. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportFormatter.h +55 -0
  102. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportMachExceptionInfo.h +41 -0
  103. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportMachineInfo.h +64 -0
  104. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportProcessInfo.h +80 -0
  105. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportProcessorInfo.h +64 -0
  106. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportRegisterInfo.h +45 -0
  107. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportSignalInfo.h +50 -0
  108. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportStackFrameInfo.h +50 -0
  109. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportSymbolInfo.h +51 -0
  110. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportSystemInfo.h +158 -0
  111. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportTextFormatter.h +59 -0
  112. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReportThreadInfo.h +75 -0
  113. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReporter.h +131 -0
  114. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Headers/PLCrashReporterConfig.h +193 -0
  115. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Modules/module.modulemap +8 -0
  116. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Resources/Info.plist +52 -0
  117. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/A/Resources/PrivacyInfo.xcprivacy +39 -0
  118. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/CrashReporter +0 -0
  119. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/CrashReporter.h +366 -0
  120. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashFeatureConfig.h +108 -0
  121. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashMacros.h +143 -0
  122. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashNamespace.h +320 -0
  123. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReport.h +193 -0
  124. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportApplicationInfo.h +52 -0
  125. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportBinaryImageInfo.h +76 -0
  126. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportExceptionInfo.h +59 -0
  127. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportFormatter.h +55 -0
  128. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportMachExceptionInfo.h +41 -0
  129. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportMachineInfo.h +64 -0
  130. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportProcessInfo.h +80 -0
  131. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportProcessorInfo.h +64 -0
  132. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportRegisterInfo.h +45 -0
  133. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportSignalInfo.h +50 -0
  134. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportStackFrameInfo.h +50 -0
  135. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportSymbolInfo.h +51 -0
  136. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportSystemInfo.h +158 -0
  137. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportTextFormatter.h +59 -0
  138. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReportThreadInfo.h +75 -0
  139. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReporter.h +131 -0
  140. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Headers/PLCrashReporterConfig.h +193 -0
  141. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Modules/module.modulemap +8 -0
  142. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Resources/Info.plist +52 -0
  143. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-maccatalyst/CrashReporter.framework/Versions/Current/Resources/PrivacyInfo.xcprivacy +39 -0
  144. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/CrashReporter +0 -0
  145. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/CrashReporter.h +366 -0
  146. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashFeatureConfig.h +108 -0
  147. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashMacros.h +143 -0
  148. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashNamespace.h +320 -0
  149. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReport.h +193 -0
  150. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportApplicationInfo.h +52 -0
  151. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportBinaryImageInfo.h +76 -0
  152. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportExceptionInfo.h +59 -0
  153. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportFormatter.h +55 -0
  154. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportMachExceptionInfo.h +41 -0
  155. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportMachineInfo.h +64 -0
  156. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportProcessInfo.h +80 -0
  157. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportProcessorInfo.h +64 -0
  158. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportRegisterInfo.h +45 -0
  159. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportSignalInfo.h +50 -0
  160. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportStackFrameInfo.h +50 -0
  161. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportSymbolInfo.h +51 -0
  162. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportSystemInfo.h +158 -0
  163. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportTextFormatter.h +59 -0
  164. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportThreadInfo.h +75 -0
  165. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReporter.h +131 -0
  166. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReporterConfig.h +193 -0
  167. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Info.plist +0 -0
  168. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/Modules/module.modulemap +8 -0
  169. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/PrivacyInfo.xcprivacy +39 -0
  170. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/_CodeSignature/CodeDirectory +0 -0
  171. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/_CodeSignature/CodeRequirements +0 -0
  172. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/_CodeSignature/CodeRequirements-1 +0 -0
  173. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/_CodeSignature/CodeResources +462 -0
  174. package/native/ios/PLCrashReporter/CrashReporter.xcframework/ios-arm64_x86_64-simulator/CrashReporter.framework/_CodeSignature/CodeSignature +0 -0
  175. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/CrashReporter +0 -0
  176. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/CrashReporter.h +366 -0
  177. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashFeatureConfig.h +108 -0
  178. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashMacros.h +143 -0
  179. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashNamespace.h +320 -0
  180. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReport.h +193 -0
  181. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportApplicationInfo.h +52 -0
  182. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportBinaryImageInfo.h +76 -0
  183. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportExceptionInfo.h +59 -0
  184. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportFormatter.h +55 -0
  185. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportMachExceptionInfo.h +41 -0
  186. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportMachineInfo.h +64 -0
  187. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportProcessInfo.h +80 -0
  188. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportProcessorInfo.h +64 -0
  189. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportRegisterInfo.h +45 -0
  190. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportSignalInfo.h +50 -0
  191. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportStackFrameInfo.h +50 -0
  192. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportSymbolInfo.h +51 -0
  193. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportSystemInfo.h +158 -0
  194. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportTextFormatter.h +59 -0
  195. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReportThreadInfo.h +75 -0
  196. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReporter.h +131 -0
  197. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Headers/PLCrashReporterConfig.h +193 -0
  198. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Modules/module.modulemap +8 -0
  199. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Resources/Info.plist +48 -0
  200. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Resources/PrivacyInfo.xcprivacy +39 -0
  201. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/CrashReporter +0 -0
  202. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/CrashReporter.h +366 -0
  203. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashFeatureConfig.h +108 -0
  204. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashMacros.h +143 -0
  205. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashNamespace.h +320 -0
  206. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReport.h +193 -0
  207. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportApplicationInfo.h +52 -0
  208. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportBinaryImageInfo.h +76 -0
  209. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportExceptionInfo.h +59 -0
  210. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportFormatter.h +55 -0
  211. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportMachExceptionInfo.h +41 -0
  212. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportMachineInfo.h +64 -0
  213. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportProcessInfo.h +80 -0
  214. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportProcessorInfo.h +64 -0
  215. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportRegisterInfo.h +45 -0
  216. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportSignalInfo.h +50 -0
  217. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportStackFrameInfo.h +50 -0
  218. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportSymbolInfo.h +51 -0
  219. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportSystemInfo.h +158 -0
  220. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportTextFormatter.h +59 -0
  221. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReportThreadInfo.h +75 -0
  222. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReporter.h +131 -0
  223. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Headers/PLCrashReporterConfig.h +193 -0
  224. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Modules/module.modulemap +8 -0
  225. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Resources/Info.plist +48 -0
  226. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/A/Resources/PrivacyInfo.xcprivacy +39 -0
  227. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/CrashReporter +0 -0
  228. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/CrashReporter.h +366 -0
  229. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashFeatureConfig.h +108 -0
  230. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashMacros.h +143 -0
  231. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashNamespace.h +320 -0
  232. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReport.h +193 -0
  233. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportApplicationInfo.h +52 -0
  234. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportBinaryImageInfo.h +76 -0
  235. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportExceptionInfo.h +59 -0
  236. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportFormatter.h +55 -0
  237. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportMachExceptionInfo.h +41 -0
  238. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportMachineInfo.h +64 -0
  239. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportProcessInfo.h +80 -0
  240. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportProcessorInfo.h +64 -0
  241. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportRegisterInfo.h +45 -0
  242. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportSignalInfo.h +50 -0
  243. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportStackFrameInfo.h +50 -0
  244. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportSymbolInfo.h +51 -0
  245. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportSystemInfo.h +158 -0
  246. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportTextFormatter.h +59 -0
  247. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReportThreadInfo.h +75 -0
  248. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReporter.h +131 -0
  249. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Headers/PLCrashReporterConfig.h +193 -0
  250. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Modules/module.modulemap +8 -0
  251. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Resources/Info.plist +48 -0
  252. package/native/ios/PLCrashReporter/CrashReporter.xcframework/macos-arm64_x86_64/CrashReporter.framework/Versions/Current/Resources/PrivacyInfo.xcprivacy +39 -0
  253. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/CrashReporter +0 -0
  254. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/CrashReporter.h +366 -0
  255. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashFeatureConfig.h +108 -0
  256. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashMacros.h +143 -0
  257. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashNamespace.h +320 -0
  258. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReport.h +193 -0
  259. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportApplicationInfo.h +52 -0
  260. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportBinaryImageInfo.h +76 -0
  261. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportExceptionInfo.h +59 -0
  262. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportFormatter.h +55 -0
  263. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportMachExceptionInfo.h +41 -0
  264. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportMachineInfo.h +64 -0
  265. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportProcessInfo.h +80 -0
  266. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportProcessorInfo.h +64 -0
  267. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportRegisterInfo.h +45 -0
  268. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportSignalInfo.h +50 -0
  269. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportStackFrameInfo.h +50 -0
  270. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportSymbolInfo.h +51 -0
  271. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportSystemInfo.h +158 -0
  272. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportTextFormatter.h +59 -0
  273. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReportThreadInfo.h +75 -0
  274. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReporter.h +131 -0
  275. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Headers/PLCrashReporterConfig.h +193 -0
  276. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Info.plist +0 -0
  277. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/Modules/module.modulemap +8 -0
  278. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64/CrashReporter.framework/PrivacyInfo.xcprivacy +39 -0
  279. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/CrashReporter +0 -0
  280. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/CrashReporter.h +366 -0
  281. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashFeatureConfig.h +108 -0
  282. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashMacros.h +143 -0
  283. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashNamespace.h +320 -0
  284. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReport.h +193 -0
  285. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportApplicationInfo.h +52 -0
  286. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportBinaryImageInfo.h +76 -0
  287. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportExceptionInfo.h +59 -0
  288. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportFormatter.h +55 -0
  289. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportMachExceptionInfo.h +41 -0
  290. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportMachineInfo.h +64 -0
  291. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportProcessInfo.h +80 -0
  292. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportProcessorInfo.h +64 -0
  293. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportRegisterInfo.h +45 -0
  294. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportSignalInfo.h +50 -0
  295. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportStackFrameInfo.h +50 -0
  296. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportSymbolInfo.h +51 -0
  297. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportSystemInfo.h +158 -0
  298. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportTextFormatter.h +59 -0
  299. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReportThreadInfo.h +75 -0
  300. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReporter.h +131 -0
  301. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Headers/PLCrashReporterConfig.h +193 -0
  302. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Info.plist +0 -0
  303. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/Modules/module.modulemap +8 -0
  304. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/PrivacyInfo.xcprivacy +39 -0
  305. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/_CodeSignature/CodeDirectory +0 -0
  306. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/_CodeSignature/CodeRequirements +0 -0
  307. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/_CodeSignature/CodeRequirements-1 +0 -0
  308. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/_CodeSignature/CodeResources +462 -0
  309. package/native/ios/PLCrashReporter/CrashReporter.xcframework/tvos-arm64_x86_64-simulator/CrashReporter.framework/_CodeSignature/CodeSignature +0 -0
  310. package/native/ios/PLCrashReporter/LICENSE.txt +54 -0
  311. package/native/ios/PLCrashReporter/PLCrashReporter.podspec +19 -0
  312. package/native/ios/VERSION +1 -0
  313. package/native/ios/packages/ios/Sources/CrumbCore/Crumb.swift +108 -0
  314. package/native/ios/packages/ios/Sources/CrumbCore/CrumbConfiguration.swift +212 -0
  315. package/native/ios/packages/ios/Sources/CrumbCore/CrumbDiagnostics.swift +158 -0
  316. package/native/ios/packages/ios/Sources/CrumbCore/CrumbFailureStacks.swift +94 -0
  317. package/native/ios/packages/ios/Sources/CrumbCore/CrumbInfrastructureHealthProbe.swift +110 -0
  318. package/native/ios/packages/ios/Sources/CrumbCore/CrumbJavaScriptCrashRecovery.swift +136 -0
  319. package/native/ios/packages/ios/Sources/CrumbCore/CrumbJavaScriptCrashStore.swift +508 -0
  320. package/native/ios/packages/ios/Sources/CrumbCore/CrumbJavaScriptFailureContext.swift +166 -0
  321. package/native/ios/packages/ios/Sources/CrumbCore/CrumbLogs.swift +138 -0
  322. package/native/ios/packages/ios/Sources/CrumbCore/CrumbPolicy.swift +336 -0
  323. package/native/ios/packages/ios/Sources/CrumbCore/CrumbRendering.swift +68 -0
  324. package/native/ios/packages/ios/Sources/CrumbCore/CrumbReportEnvelope.swift +666 -0
  325. package/native/ios/packages/ios/Sources/CrumbCore/CrumbReportQueue.swift +543 -0
  326. package/native/ios/packages/ios/Sources/CrumbCore/CrumbReportUploader.swift +304 -0
  327. package/native/ios/packages/ios/Sources/CrumbCore/CrumbRuntime.swift +306 -0
  328. package/native/ios/packages/ios/Sources/CrumbCore/CrumbSDKVersion.swift +5 -0
  329. package/native/ios/packages/ios/Sources/CrumbCore/CrumbScreenContext.swift +29 -0
  330. package/native/ios/packages/ios/Sources/CrumbUI/CrumbDesign.swift +151 -0
  331. package/native/ios/packages/ios/Sources/CrumbUI/CrumbLocalization.swift +23 -0
  332. package/native/ios/packages/ios/Sources/CrumbUI/CrumbQualityInstrumentation.swift +30 -0
  333. package/native/ios/packages/ios/Sources/CrumbUI/CrumbRenderingMonitor.swift +40 -0
  334. package/native/ios/packages/ios/Sources/CrumbUI/CrumbReporter.swift +1705 -0
  335. package/native/ios/packages/ios/Sources/CrumbUI/CrumbReporterLifecycle.swift +119 -0
  336. package/native/ios/packages/ios/Sources/CrumbUI/CrumbScreenshotArtifact.swift +186 -0
  337. package/native/ios/packages/ios/Sources/CrumbUI/CrumbShakeGestureRecognizer.swift +62 -0
  338. package/native/ios/packages/ios/Sources/CrumbUI/CrumbUploadCoordinator.swift +113 -0
  339. package/native/ios/packages/ios/Sources/CrumbUI/CrumbWorkspacePolicyCoordinator.swift +86 -0
  340. package/native/ios/packages/ios/Sources/CrumbUI/OnDemandDiagnosticsCollector.swift +269 -0
  341. package/native/ios/packages/ios/Sources/CrumbUI/OnDemandLogCollector.swift +213 -0
  342. package/native/ios/packages/ios/Sources/CrumbUI/Resources/en.lproj/Localizable.strings +75 -0
  343. package/native/ios/provenance.json +8 -0
  344. package/nitrogen/generated/android/c++/JHybridCrumbReactNativeSpec.cpp +32 -3
  345. package/nitrogen/generated/android/c++/JHybridCrumbReactNativeSpec.hpp +5 -1
  346. package/nitrogen/generated/android/kotlin/com/margelo/nitro/crumbsdk/reactnative/HybridCrumbReactNativeSpec.kt +17 -1
  347. package/nitrogen/generated/ios/CrumbReactNative-Swift-Cxx-Bridge.hpp +9 -0
  348. package/nitrogen/generated/ios/c++/HybridCrumbReactNativeSpecSwift.hpp +30 -2
  349. package/nitrogen/generated/ios/swift/HybridCrumbReactNativeSpec.swift +5 -1
  350. package/nitrogen/generated/ios/swift/HybridCrumbReactNativeSpec_cxx.swift +55 -2
  351. package/nitrogen/generated/shared/c++/HybridCrumbReactNativeSpec.cpp +4 -0
  352. package/nitrogen/generated/shared/c++/HybridCrumbReactNativeSpec.hpp +5 -1
  353. package/package.json +29 -5
  354. package/plugin/build-hooks.cjs +52 -0
  355. package/plugin/podfile.cjs +21 -0
  356. package/scripts/ios.rb +23 -0
  357. package/src/CrumbReactNative.nitro.ts +5 -1
  358. package/src/NativeCrumbReactNative.web.ts +4 -0
  359. package/src/build-release.ts +30 -0
  360. package/src/index.ts +221 -2
  361. package/src/javascript-crash-capture.ts +774 -0
  362. package/src/log-buffer.ts +27 -2
  363. package/src/screen-context.ts +154 -0
  364. package/src/types.ts +53 -0
  365. package/tools/cli.cjs +116 -0
  366. package/tools/config.cjs +72 -0
  367. package/tools/crumb.gradle +63 -0
  368. package/tools/expo-export.cjs +122 -0
  369. package/tools/ios.cjs +93 -0
  370. package/tools/node.cjs +21 -0
  371. package/tools/release.cjs +65 -0
  372. package/tools/setup.cjs +291 -0
  373. package/tools/upload.cjs +137 -0
@@ -0,0 +1,136 @@
1
+ import Foundation
2
+
3
+ package enum CrumbJavaScriptCrashRecovery {
4
+ package static func recover(settings: CrumbReportSettings) async -> Bool {
5
+ let store = CrumbJavaScriptCrashStore.shared
6
+ let pending = store.records()
7
+ guard !pending.isEmpty else { return false }
8
+
9
+ var recovered = false
10
+ for crash in pending {
11
+ let reportID = recoveryReportID(for: crash.recordID)
12
+ if let queued = try? await CrumbReportQueue.shared.reports(),
13
+ queued.contains(where: { $0.reportID == reportID }) {
14
+ recovered = store.remove(recordID: crash.recordID) || recovered
15
+ continue
16
+ }
17
+ let input = recoveryInput(crash: crash, settings: settings)
18
+
19
+ do {
20
+ let envelope = try CrumbReportEnvelopeBuilder.build(settings: settings, input: input)
21
+ _ = try await CrumbReportQueue.shared.enqueue(envelope: envelope, artifacts: [])
22
+ if store.remove(recordID: crash.recordID) {
23
+ recovered = true
24
+ }
25
+ } catch {
26
+ // Queue-full, corruption, or storage errors leave the crash
27
+ // occurrence pending for a later launch.
28
+ }
29
+ }
30
+ return recovered
31
+ }
32
+
33
+ package static func recoveryInput(crash: CrumbJavaScriptCrash, settings: CrumbReportSettings) -> CrumbReportBuildInput {
34
+ let release = CrumbRelease(
35
+ appVersion: crash.release.appVersion ?? settings.release.appVersion,
36
+ nativeBuild: crash.release.nativeBuild ?? settings.release.nativeBuild,
37
+ bundleVersion: crash.release.bundleVersion ?? settings.release.bundleVersion
38
+ )
39
+ let reportCrash = CrumbJavaScriptCrash(
40
+ recordID: crash.recordID,
41
+ fingerprint: crash.fingerprint,
42
+ source: crash.source,
43
+ kind: crash.kind,
44
+ type: crash.type,
45
+ message: crash.message,
46
+ stack: crash.stack,
47
+ occurredAt: crash.occurredAt,
48
+ release: CrumbJavaScriptCrashRelease(
49
+ appVersion: release.appVersion,
50
+ nativeBuild: release.nativeBuild,
51
+ bundleVersion: release.bundleVersion
52
+ ),
53
+ breadcrumbs: settings.diagnostics.logs.enabled && settings.evidence.contains(.logs) ? crash.breadcrumbs : [],
54
+ context: settings.evidence.contains(.customContext)
55
+ ? crash.context.filter { settings.customContext[$0.key] != nil }
56
+ : [:],
57
+ isFatal: crash.isFatal,
58
+ nativeTerminationWrapperObserved: crash.nativeTerminationWrapperObserved
59
+ )
60
+ let occurredAt = crash.occurredAt
61
+ let description = "JavaScript \(crash.kind): \(crash.message)"
62
+ return CrumbReportBuildInput(
63
+ reportID: recoveryReportID(for: crash.recordID),
64
+ trigger: .programmatic,
65
+ triggeredAt: occurredAt,
66
+ submittedAt: Date(),
67
+ runtime: recoveryRuntime(),
68
+ category: "Bug",
69
+ description: String(description.prefix(4_000)),
70
+ diagnostics: crash.failureContext?.diagnostics() ?? recoveryDiagnostics(),
71
+ screenshotCapture: .disabledByConfiguration,
72
+ screenshotMasking: .notApplicable,
73
+ customContext: settings.customContext,
74
+ policyStatus: settings.policyStatus,
75
+ workspacePolicyVersion: settings.workspacePolicyVersion,
76
+ javascriptCrash: reportCrash
77
+ )
78
+ }
79
+
80
+ private static func recoveryReportID(for recordID: String) -> String {
81
+ "rpt_" + String(recordID.dropFirst(4))
82
+ }
83
+
84
+ private static func recoveryRuntime() -> CrumbReportRuntime {
85
+ #if os(iOS)
86
+ let deviceFamily = "iOS"
87
+ #else
88
+ let deviceFamily = "Apple"
89
+ #endif
90
+ return CrumbReportRuntime(
91
+ osVersion: ProcessInfo.processInfo.operatingSystemVersionString.prefix(64).description,
92
+ deviceFamily: deviceFamily,
93
+ locale: Locale.current.identifier.prefix(64).description,
94
+ timezone: TimeZone.current.identifier.prefix(128).description
95
+ )
96
+ }
97
+
98
+ private static func recoveryDiagnostics() -> CrumbDiagnosticsSnapshot {
99
+ CrumbDiagnosticsSnapshot(
100
+ capturedAt: Date(),
101
+ location: "react_native_recovery",
102
+ processName: "react-native",
103
+ processID: ProcessInfo.processInfo.processIdentifier,
104
+ cpuUsagePercent: nil,
105
+ residentMemoryBytes: nil,
106
+ physicalFootprintBytes: nil,
107
+ thermalState: "unavailable",
108
+ threadCount: 0,
109
+ busiestThreads: [],
110
+ gpuStatus: "unavailable",
111
+ network: CrumbNetworkDiagnostic(
112
+ status: "unknown",
113
+ transport: "unknown",
114
+ cellularGeneration: nil,
115
+ isExpensive: false,
116
+ isConstrained: false,
117
+ healthCheck: nil
118
+ ),
119
+ logs: CrumbLogDiagnostic(
120
+ status: .unavailable,
121
+ sources: [],
122
+ entries: [],
123
+ truncated: false,
124
+ droppedEntryCount: 0,
125
+ failures: []
126
+ ),
127
+ stackTraces: CrumbStackTraceDiagnostic(
128
+ status: .unavailable,
129
+ scope: "none",
130
+ threads: [],
131
+ truncated: false,
132
+ unavailableReason: "unavailable_during_recovery"
133
+ )
134
+ )
135
+ }
136
+ }
@@ -0,0 +1,508 @@
1
+ import Foundation
2
+
3
+ package struct CrumbJavaScriptCrashRelease: Codable, Equatable, Sendable {
4
+ package let appVersion: String?
5
+ package let nativeBuild: String?
6
+ package let bundleVersion: String?
7
+ }
8
+
9
+ package struct CrumbJavaScriptBreadcrumb: Codable, Equatable, Sendable {
10
+ package let timestamp: Date
11
+ package let source: String
12
+ package let category: String
13
+ package let message: String
14
+ }
15
+
16
+ package struct CrumbJavaScriptCrash: Equatable, Sendable {
17
+ package let recordID: String
18
+ package let fingerprint: String
19
+ package let source: String
20
+ package let kind: String
21
+ package let type: String
22
+ package let message: String
23
+ package let stack: String?
24
+ package let occurredAt: Date
25
+ package var release: CrumbJavaScriptCrashRelease
26
+ package var breadcrumbs: [CrumbJavaScriptBreadcrumb]
27
+ package let context: [String: String]
28
+ package let isFatal: Bool
29
+ package let nativeTerminationWrapperObserved: Bool
30
+ package var failureContext: CrumbJavaScriptFailureContext? = nil
31
+ }
32
+
33
+ package struct CrumbJavaScriptCrashStoreLimits: Equatable, Sendable {
34
+ package let maximumRecords: Int
35
+ package let maximumTotalBytes: Int
36
+ package let maximumRecordBytes: Int
37
+ package let maximumBreadcrumbs: Int
38
+ package let maximumBreadcrumbBytes: Int
39
+
40
+ package init(
41
+ maximumRecords: Int = 50,
42
+ maximumTotalBytes: Int = 2_097_152,
43
+ maximumRecordBytes: Int = 32_768,
44
+ maximumBreadcrumbs: Int = 32,
45
+ maximumBreadcrumbBytes: Int = 16_384
46
+ ) {
47
+ self.maximumRecords = maximumRecords
48
+ self.maximumTotalBytes = maximumTotalBytes
49
+ self.maximumRecordBytes = maximumRecordBytes
50
+ self.maximumBreadcrumbs = maximumBreadcrumbs
51
+ self.maximumBreadcrumbBytes = maximumBreadcrumbBytes
52
+ }
53
+ }
54
+
55
+ /// A tiny synchronous store used by the React Native adapter's JavaScript
56
+ /// exception handoff. It deliberately has no uncaught native exception hook.
57
+ package final class CrumbJavaScriptCrashStore: @unchecked Sendable {
58
+ package static let shared = CrumbJavaScriptCrashStore(rootURL: defaultRootURL())
59
+
60
+ private let rootURL: URL
61
+ private let limits: CrumbJavaScriptCrashStoreLimits
62
+ private let fileManager: FileManager
63
+ private let encoder: JSONEncoder
64
+ private let decoder: JSONDecoder
65
+ private let lock = NSLock()
66
+
67
+ package init(
68
+ rootURL: URL,
69
+ limits: CrumbJavaScriptCrashStoreLimits = .init(),
70
+ fileManager: FileManager = .default
71
+ ) {
72
+ self.rootURL = rootURL
73
+ self.limits = limits
74
+ self.fileManager = fileManager
75
+ encoder = JSONEncoder()
76
+ encoder.dateEncodingStrategy = .iso8601
77
+ encoder.outputFormatting = [.sortedKeys]
78
+ decoder = JSONDecoder()
79
+ decoder.dateDecodingStrategy = .iso8601
80
+ }
81
+
82
+ @discardableResult
83
+ package func record(_ recordJSON: String, failureContext: CrumbJavaScriptFailureContext? = nil, includeBreadcrumbs: Bool = true, release: CrumbRelease? = nil) -> Bool {
84
+ lock.lock()
85
+ defer { lock.unlock() }
86
+
87
+ guard validLimits(),
88
+ let data = recordJSON.data(using: .utf8),
89
+ data.count <= limits.maximumRecordBytes,
90
+ let raw = try? decoder.decode(RawRecord.self, from: data),
91
+ var record = normalize(raw) else {
92
+ return false
93
+ }
94
+
95
+ // The JS payload cannot supply native context. Only the trusted capture argument can.
96
+ record.failureContext = failureContext?.validated()
97
+ // Freeze native defaults at failure time, before a later app update can change them.
98
+ record.release = CrumbJavaScriptCrashRelease(
99
+ appVersion: record.release.appVersion ?? release?.appVersion,
100
+ nativeBuild: record.release.nativeBuild ?? release?.nativeBuild,
101
+ bundleVersion: record.release.bundleVersion ?? release?.bundleVersion
102
+ )
103
+ if !includeBreadcrumbs { record.breadcrumbs = [] }
104
+
105
+ do {
106
+ try prepareRoot()
107
+ let existing = try readAllLocked()
108
+ if let match = existing.first(where: { $0.record.fingerprint == record.fingerprint }) {
109
+ let merged = merge(match.record, record)
110
+ let otherBytes = existing.reduce(0) { total, item in
111
+ total + (item.url == match.url ? 0 : (try? item.url.resourceValues(forKeys: [.fileSizeKey]).fileSize) ?? 0)
112
+ }
113
+ guard let mergedData = try encoded(merged, fitting: limits.maximumTotalBytes - otherBytes) else { return false }
114
+ try write(mergedData, to: match.url)
115
+ return true
116
+ }
117
+
118
+ let total = existing.reduce(0) { total, item in
119
+ total + ((try? item.url.resourceValues(forKeys: [.fileSizeKey]).fileSize) ?? 0)
120
+ }
121
+ guard existing.count < limits.maximumRecords,
122
+ let encoded = try encoded(record, fitting: limits.maximumTotalBytes - total) else {
123
+ return false
124
+ }
125
+ try write(encoded, to: url(for: record.recordID))
126
+ return true
127
+ } catch {
128
+ return false
129
+ }
130
+ }
131
+
132
+ package func records() -> [CrumbJavaScriptCrash] {
133
+ lock.lock()
134
+ defer { lock.unlock() }
135
+ guard validLimits(), (try? prepareRoot()) != nil,
136
+ let entries = try? readAllLocked() else {
137
+ return []
138
+ }
139
+
140
+ var byFingerprint: [String: (url: URL, record: CrumbJavaScriptCrash)] = [:]
141
+ for entry in entries {
142
+ if let prior = byFingerprint[entry.record.fingerprint] {
143
+ let merged = merge(prior.record, entry.record)
144
+ byFingerprint[entry.record.fingerprint] = (prior.url, merged)
145
+ if let data = try? encoded(merged) {
146
+ try? write(data, to: prior.url)
147
+ try? fileManager.removeItem(at: entry.url)
148
+ }
149
+ } else {
150
+ byFingerprint[entry.record.fingerprint] = entry
151
+ }
152
+ }
153
+ return byFingerprint.values
154
+ .map(\.record)
155
+ .sorted { $0.occurredAt < $1.occurredAt }
156
+ }
157
+
158
+ @discardableResult
159
+ package func remove(recordID: String) -> Bool {
160
+ lock.lock()
161
+ defer { lock.unlock() }
162
+ guard validRecordID(recordID) else { return false }
163
+ do {
164
+ try prepareRoot()
165
+ let target = url(for: recordID)
166
+ guard fileManager.fileExists(atPath: target.path) else { return false }
167
+ try fileManager.removeItem(at: target)
168
+ return true
169
+ } catch {
170
+ return false
171
+ }
172
+ }
173
+
174
+ private func normalize(_ raw: RawRecord) -> CrumbJavaScriptCrash? {
175
+ guard raw.schemaVersion == "1.0",
176
+ validRecordID(raw.recordID),
177
+ raw.fingerprint.range(of: "^[A-Fa-f0-9]{16}$", options: .regularExpression) != nil,
178
+ ["javascript", "native_termination_wrapper"].contains(raw.source),
179
+ ["exception", "unhandled_rejection", "native_termination_wrapper"].contains(raw.kind),
180
+ let occurredAt = parseDate(raw.occurredAt) else {
181
+ return nil
182
+ }
183
+
184
+ let type = bounded(CrumbLogSanitizer.sanitize(raw.type).trimmingCharacters(in: .whitespacesAndNewlines), maximumBytes: 128)
185
+ let message = bounded(CrumbLogSanitizer.sanitize(raw.message).trimmingCharacters(in: .whitespacesAndNewlines), maximumBytes: 4_000)
186
+ guard !type.isEmpty, !message.isEmpty else { return nil }
187
+
188
+ let stack = raw.stack.map {
189
+ bounded(
190
+ CrumbLogSanitizer.sanitize($0.replacingOccurrences(of: "\n", with: "\u{e000}"))
191
+ .replacingOccurrences(of: "\u{e000}", with: "\n")
192
+ .trimmingCharacters(in: .whitespacesAndNewlines),
193
+ maximumBytes: 16_384
194
+ )
195
+ }.flatMap { $0.isEmpty ? nil : $0 }
196
+
197
+ let breadcrumbs = boundedBreadcrumbs(raw.breadcrumbs)
198
+ let context = CrumbCustomContextSanitizer.sanitize(
199
+ CrumbCustomContextOptions(
200
+ values: raw.context,
201
+ allowedKeys: Set(raw.context.keys)
202
+ )
203
+ )
204
+ return CrumbJavaScriptCrash(
205
+ recordID: raw.recordID,
206
+ fingerprint: raw.fingerprint.lowercased(),
207
+ source: raw.source,
208
+ kind: raw.kind,
209
+ type: type,
210
+ message: message,
211
+ stack: stack,
212
+ occurredAt: occurredAt,
213
+ release: CrumbJavaScriptCrashRelease(
214
+ appVersion: raw.release?.appVersion.map { bounded($0, maximumBytes: 64) },
215
+ nativeBuild: raw.release?.nativeBuild.map { bounded($0, maximumBytes: 64) },
216
+ bundleVersion: raw.release?.bundleVersion.map { bounded($0, maximumBytes: 128) }
217
+ ),
218
+ breadcrumbs: breadcrumbs,
219
+ context: context,
220
+ isFatal: raw.isFatal || raw.source == "native_termination_wrapper",
221
+ nativeTerminationWrapperObserved: raw.nativeTerminationWrapperObserved
222
+ || raw.source == "native_termination_wrapper",
223
+ failureContext: raw.failureContext?.validated()
224
+ )
225
+ }
226
+
227
+ private func boundedBreadcrumbs(_ values: [RawBreadcrumb]) -> [CrumbJavaScriptBreadcrumb] {
228
+ var result: [CrumbJavaScriptBreadcrumb] = []
229
+ var bytes = 0
230
+ for raw in values.suffix(limits.maximumBreadcrumbs) {
231
+ guard let date = parseDate(raw.timestamp) else { continue }
232
+ let breadcrumb = CrumbJavaScriptBreadcrumb(
233
+ timestamp: date,
234
+ source: bounded(CrumbLogSanitizer.sanitize(raw.source), maximumBytes: 64),
235
+ category: bounded(CrumbLogSanitizer.sanitize(raw.category), maximumBytes: 256),
236
+ message: bounded(CrumbLogSanitizer.sanitize(raw.message), maximumBytes: 2_048)
237
+ )
238
+ guard !breadcrumb.source.isEmpty, !breadcrumb.category.isEmpty,
239
+ !breadcrumb.message.isEmpty,
240
+ let encoded = try? encoder.encode(breadcrumb),
241
+ bytes + encoded.count <= limits.maximumBreadcrumbBytes else {
242
+ continue
243
+ }
244
+ result.append(breadcrumb)
245
+ bytes += encoded.count
246
+ }
247
+ return result
248
+ }
249
+
250
+ private func merge(
251
+ _ existing: CrumbJavaScriptCrash,
252
+ _ incoming: CrumbJavaScriptCrash
253
+ ) -> CrumbJavaScriptCrash {
254
+ let preferred = incoming.source == "javascript" && existing.source != "javascript"
255
+ ? incoming
256
+ : existing
257
+ let fallback = preferred.recordID == incoming.recordID ? existing : incoming
258
+ return CrumbJavaScriptCrash(
259
+ recordID: preferred.recordID,
260
+ fingerprint: preferred.fingerprint,
261
+ source: preferred.source,
262
+ kind: preferred.kind,
263
+ type: preferred.type,
264
+ message: preferred.message,
265
+ stack: preferred.stack ?? fallback.stack,
266
+ occurredAt: min(existing.occurredAt, incoming.occurredAt),
267
+ release: CrumbJavaScriptCrashRelease(
268
+ appVersion: preferred.release.appVersion ?? fallback.release.appVersion,
269
+ nativeBuild: preferred.release.nativeBuild ?? fallback.release.nativeBuild,
270
+ bundleVersion: preferred.release.bundleVersion ?? fallback.release.bundleVersion
271
+ ),
272
+ breadcrumbs: preferred.breadcrumbs.isEmpty ? fallback.breadcrumbs : preferred.breadcrumbs,
273
+ context: preferred.context.isEmpty ? fallback.context : preferred.context,
274
+ isFatal: existing.isFatal || incoming.isFatal,
275
+ nativeTerminationWrapperObserved: existing.nativeTerminationWrapperObserved
276
+ || incoming.nativeTerminationWrapperObserved,
277
+ failureContext: preferred.failureContext
278
+ )
279
+ }
280
+
281
+ private func readAllLocked() throws -> [(url: URL, record: CrumbJavaScriptCrash)] {
282
+ let urls = try fileManager.contentsOfDirectory(
283
+ at: rootURL,
284
+ includingPropertiesForKeys: [.isRegularFileKey, .fileSizeKey],
285
+ options: [.skipsHiddenFiles]
286
+ )
287
+ return urls.compactMap { url in
288
+ guard url.pathExtension == "json",
289
+ (try? url.resourceValues(forKeys: [.isRegularFileKey]).isRegularFile) == true else {
290
+ return nil
291
+ }
292
+ do {
293
+ let data = try Data(contentsOf: url, options: [.mappedIfSafe])
294
+ guard data.count <= limits.maximumRecordBytes else { throw StoreError.corrupt }
295
+ let raw = try decoder.decode(RawRecord.self, from: data)
296
+ guard let record = normalize(raw) else { throw StoreError.corrupt }
297
+ return (url, record)
298
+ } catch {
299
+ try? fileManager.removeItem(at: url)
300
+ return nil
301
+ }
302
+ }
303
+ }
304
+
305
+ private func encoded(_ record: CrumbJavaScriptCrash) throws -> Data {
306
+ try encoder.encode(RawRecord(record))
307
+ }
308
+
309
+ private func encoded(_ record: CrumbJavaScriptCrash, fitting remainingBytes: Int) throws -> Data? {
310
+ let budget = min(limits.maximumRecordBytes, remainingBytes)
311
+ let full = try encoded(record)
312
+ if full.count <= budget { return full }
313
+ var core = record
314
+ core.failureContext?.stacks = nil
315
+ let metrics = try encoded(core)
316
+ if metrics.count <= budget { return metrics }
317
+ core.failureContext?.rendering = nil
318
+ let withoutRendering = try encoded(core)
319
+ if withoutRendering.count <= budget { return withoutRendering }
320
+ core.failureContext?.screenContext = nil
321
+ let withoutScreen = try encoded(core)
322
+ if withoutScreen.count <= budget { return withoutScreen }
323
+ core.failureContext = nil
324
+ let fallback = try encoded(core)
325
+ return fallback.count <= budget ? fallback : nil
326
+ }
327
+
328
+ private func prepareRoot() throws {
329
+ try fileManager.createDirectory(at: rootURL, withIntermediateDirectories: true)
330
+ let temporaryFiles = try? fileManager.contentsOfDirectory(
331
+ at: rootURL,
332
+ includingPropertiesForKeys: nil,
333
+ options: []
334
+ ).filter { $0.lastPathComponent.hasPrefix(".tmp-") }
335
+ temporaryFiles?.forEach { try? fileManager.removeItem(at: $0) }
336
+ var values = URLResourceValues()
337
+ values.isExcludedFromBackup = true
338
+ var mutableRoot = rootURL
339
+ try? mutableRoot.setResourceValues(values)
340
+ }
341
+
342
+ private func write(_ data: Data, to url: URL) throws {
343
+ try data.write(to: url, options: [.atomic])
344
+ var values = URLResourceValues()
345
+ values.isExcludedFromBackup = true
346
+ var mutableURL = url
347
+ try? mutableURL.setResourceValues(values)
348
+ #if os(iOS) || os(tvOS) || os(watchOS) || os(visionOS)
349
+ try? fileManager.setAttributes(
350
+ [.protectionKey: FileProtectionType.completeUntilFirstUserAuthentication],
351
+ ofItemAtPath: url.path
352
+ )
353
+ #endif
354
+ }
355
+
356
+ private func url(for recordID: String) -> URL {
357
+ rootURL.appendingPathComponent("\(recordID).json")
358
+ }
359
+
360
+ private func validLimits() -> Bool {
361
+ limits.maximumRecords > 0
362
+ && limits.maximumTotalBytes > 0
363
+ && limits.maximumRecordBytes > 0
364
+ && limits.maximumRecordBytes <= limits.maximumTotalBytes
365
+ && limits.maximumBreadcrumbs >= 0
366
+ && limits.maximumBreadcrumbBytes > 0
367
+ }
368
+
369
+ private func validRecordID(_ value: String) -> Bool {
370
+ value.range(of: "^jsc_[A-Za-z0-9_-]{16,80}$", options: .regularExpression) != nil
371
+ }
372
+
373
+ private func parseDate(_ value: String) -> Date? {
374
+ let formatter = ISO8601DateFormatter()
375
+ formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
376
+ if let date = formatter.date(from: value) { return date }
377
+ formatter.formatOptions = [.withInternetDateTime]
378
+ return formatter.date(from: value)
379
+ }
380
+
381
+ private func bounded(_ value: String, maximumBytes: Int) -> String {
382
+ guard value.utf8.count > maximumBytes else { return value }
383
+ var result = ""
384
+ for character in value {
385
+ let candidate = result + String(character)
386
+ guard candidate.utf8.count <= max(0, maximumBytes - 3) else { break }
387
+ result = candidate
388
+ }
389
+ return result + "…"
390
+ }
391
+
392
+ private static func defaultRootURL() -> URL {
393
+ let base = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)[0]
394
+ return base
395
+ .appendingPathComponent("dev.crumb", isDirectory: true)
396
+ .appendingPathComponent("javascript-crashes", isDirectory: true)
397
+ }
398
+
399
+ private enum StoreError: Error { case corrupt }
400
+
401
+ private struct RawRecord: Codable {
402
+ let schemaVersion: String
403
+ let recordID: String
404
+ let fingerprint: String
405
+ let source: String
406
+ let kind: String
407
+ let type: String
408
+ let message: String
409
+ let stack: String?
410
+ let occurredAt: String
411
+ let release: RawRelease?
412
+ let breadcrumbs: [RawBreadcrumb]
413
+ let context: [String: String]
414
+ let isFatal: Bool
415
+ let nativeTerminationWrapperObserved: Bool
416
+ let failureContext: CrumbJavaScriptFailureContext?
417
+
418
+ init(from decoder: Decoder) throws {
419
+ let container = try decoder.container(keyedBy: CodingKeys.self)
420
+ failureContext = try? container.decodeIfPresent(CrumbJavaScriptFailureContext.self, forKey: .failureContext)
421
+ schemaVersion = try container.decode(String.self, forKey: .schemaVersion)
422
+ recordID = try container.decode(String.self, forKey: .recordID)
423
+ fingerprint = try container.decode(String.self, forKey: .fingerprint)
424
+ source = try container.decode(String.self, forKey: .source)
425
+ kind = try container.decode(String.self, forKey: .kind)
426
+ type = try container.decode(String.self, forKey: .type)
427
+ message = try container.decode(String.self, forKey: .message)
428
+ stack = try container.decodeIfPresent(String.self, forKey: .stack)
429
+ occurredAt = try container.decode(String.self, forKey: .occurredAt)
430
+ release = try container.decodeIfPresent(RawRelease.self, forKey: .release)
431
+ breadcrumbs = try container.decodeIfPresent([RawBreadcrumb].self, forKey: .breadcrumbs) ?? []
432
+ context = try container.decodeIfPresent([String: String].self, forKey: .context) ?? [:]
433
+ isFatal = try container.decodeIfPresent(Bool.self, forKey: .isFatal) ?? false
434
+ nativeTerminationWrapperObserved = try container.decodeIfPresent(
435
+ Bool.self,
436
+ forKey: .nativeTerminationWrapperObserved
437
+ ) ?? false
438
+ }
439
+
440
+ init(_ record: CrumbJavaScriptCrash) {
441
+ failureContext = record.failureContext
442
+ schemaVersion = "1.0"
443
+ recordID = record.recordID
444
+ fingerprint = record.fingerprint
445
+ source = record.source
446
+ kind = record.kind
447
+ type = record.type
448
+ message = record.message
449
+ stack = record.stack
450
+ occurredAt = ISO8601DateFormatter().string(from: record.occurredAt)
451
+ release = RawRelease(record.release)
452
+ breadcrumbs = record.breadcrumbs.map(RawBreadcrumb.init)
453
+ context = record.context
454
+ isFatal = record.isFatal
455
+ nativeTerminationWrapperObserved = record.nativeTerminationWrapperObserved
456
+ }
457
+
458
+ private enum CodingKeys: String, CodingKey {
459
+ case failureContext = "failure_context"
460
+ case schemaVersion = "schema_version"
461
+ case recordID = "record_id"
462
+ case fingerprint
463
+ case source
464
+ case kind
465
+ case type
466
+ case message
467
+ case stack
468
+ case occurredAt = "occurred_at"
469
+ case release
470
+ case breadcrumbs
471
+ case context
472
+ case isFatal = "is_fatal"
473
+ case nativeTerminationWrapperObserved = "native_termination_wrapper_observed"
474
+ }
475
+ }
476
+
477
+ private struct RawRelease: Codable {
478
+ let appVersion: String?
479
+ let nativeBuild: String?
480
+ let bundleVersion: String?
481
+
482
+ init(_ release: CrumbJavaScriptCrashRelease) {
483
+ appVersion = release.appVersion
484
+ nativeBuild = release.nativeBuild
485
+ bundleVersion = release.bundleVersion
486
+ }
487
+
488
+ private enum CodingKeys: String, CodingKey {
489
+ case appVersion = "app_version"
490
+ case nativeBuild = "native_build"
491
+ case bundleVersion = "bundle_version"
492
+ }
493
+ }
494
+
495
+ private struct RawBreadcrumb: Codable {
496
+ let timestamp: String
497
+ let source: String
498
+ let category: String
499
+ let message: String
500
+
501
+ init(_ breadcrumb: CrumbJavaScriptBreadcrumb) {
502
+ timestamp = ISO8601DateFormatter().string(from: breadcrumb.timestamp)
503
+ source = breadcrumb.source
504
+ category = breadcrumb.category
505
+ message = breadcrumb.message
506
+ }
507
+ }
508
+ }