@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,543 @@
1
+ import CryptoKit
2
+ import Foundation
3
+
4
+ package enum CrumbQueuedReportState: String, Codable, Equatable, Sendable {
5
+ case pending
6
+ case uploading
7
+ case failed
8
+ }
9
+
10
+ package struct CrumbQueueLimits: Equatable, Sendable {
11
+ package let maximumReports: Int
12
+ package let maximumTotalBytes: Int
13
+ package let maximumReportBytes: Int
14
+ package let maximumEnvelopeBytes: Int
15
+ package let maximumArtifactBytes: Int
16
+ package let maximumArtifactsPerReport: Int
17
+
18
+ package init(
19
+ maximumReports: Int = 50,
20
+ maximumTotalBytes: Int = 134_217_728,
21
+ maximumReportBytes: Int = 27_262_976,
22
+ maximumEnvelopeBytes: Int = 1_048_576,
23
+ maximumArtifactBytes: Int = 26_214_400,
24
+ maximumArtifactsPerReport: Int = 10
25
+ ) {
26
+ self.maximumReports = maximumReports
27
+ self.maximumTotalBytes = maximumTotalBytes
28
+ self.maximumReportBytes = maximumReportBytes
29
+ self.maximumEnvelopeBytes = maximumEnvelopeBytes
30
+ self.maximumArtifactBytes = maximumArtifactBytes
31
+ self.maximumArtifactsPerReport = maximumArtifactsPerReport
32
+ }
33
+ }
34
+
35
+ package struct CrumbQueueArtifact: Equatable, Sendable {
36
+ package let manifest: CrumbArtifactManifest
37
+ package let data: Data
38
+
39
+ package init(manifest: CrumbArtifactManifest, data: Data) {
40
+ self.manifest = manifest
41
+ self.data = data
42
+ }
43
+ }
44
+
45
+ package struct CrumbQueuedReportSummary: Equatable, Sendable {
46
+ package let reportID: String
47
+ package let submittedAt: Date
48
+ package let state: CrumbQueuedReportState
49
+ package let attemptCount: Int
50
+ package let lastError: String?
51
+ package let totalByteSize: Int
52
+ package let artifactCount: Int
53
+ }
54
+
55
+ package struct CrumbQueuedReportPayload: Equatable, Sendable {
56
+ package let summary: CrumbQueuedReportSummary
57
+ package let envelope: Data
58
+ package let artifacts: [CrumbQueueArtifact]
59
+ }
60
+
61
+ package enum CrumbReportQueueError: Error, Equatable {
62
+ case invalidLimits
63
+ case invalidEnvelope
64
+ case invalidArtifact
65
+ case reportTooLarge
66
+ case queueFull
67
+ case conflictingReport
68
+ case reportNotFound
69
+ case corruptQueue
70
+ case storageFailure
71
+ }
72
+
73
+ package actor CrumbReportQueue {
74
+ package static let shared = CrumbReportQueue(rootURL: defaultRootURL())
75
+
76
+ private let rootURL: URL
77
+ private let limits: CrumbQueueLimits
78
+ private let fileManager: FileManager
79
+ private let encoder: JSONEncoder
80
+ private let decoder: JSONDecoder
81
+
82
+ package init(
83
+ rootURL: URL,
84
+ limits: CrumbQueueLimits = .init(),
85
+ fileManager: FileManager = .default
86
+ ) {
87
+ self.rootURL = rootURL
88
+ self.limits = limits
89
+ self.fileManager = fileManager
90
+ encoder = JSONEncoder()
91
+ encoder.outputFormatting = [.sortedKeys]
92
+ decoder = JSONDecoder()
93
+ }
94
+
95
+ @discardableResult
96
+ package func enqueue(
97
+ envelope: CrumbSerializedReportEnvelope,
98
+ artifacts: [CrumbQueueArtifact]
99
+ ) throws -> CrumbQueuedReportSummary {
100
+ try validateLimits()
101
+ try prepareRoot()
102
+ try cleanupTemporaryDirectories()
103
+ try validate(envelope: envelope, artifacts: artifacts)
104
+
105
+ let totalByteSize = envelope.data.count + artifacts.reduce(0) { $0 + $1.data.count }
106
+ guard totalByteSize <= limits.maximumReportBytes else {
107
+ throw CrumbReportQueueError.reportTooLarge
108
+ }
109
+
110
+ let destination = reportURL(envelope.reportID)
111
+ if fileManager.fileExists(atPath: destination.path) {
112
+ let existing = try load(reportID: envelope.reportID)
113
+ guard existing.envelope == envelope.data,
114
+ artifactDataByID(existing.artifacts) == artifactDataByID(artifacts) else {
115
+ throw CrumbReportQueueError.conflictingReport
116
+ }
117
+ return existing.summary
118
+ }
119
+
120
+ let existingRecords = try readAllRecords()
121
+ guard existingRecords.count < limits.maximumReports,
122
+ existingRecords.reduce(0, { $0 + $1.totalByteSize }) + totalByteSize
123
+ <= limits.maximumTotalBytes else {
124
+ throw CrumbReportQueueError.queueFull
125
+ }
126
+
127
+ let temporary = rootURL.appendingPathComponent(".tmp-\(UUID().uuidString)", isDirectory: true)
128
+ do {
129
+ try createProtectedDirectory(temporary)
130
+ let artifactsURL = temporary.appendingPathComponent("artifacts", isDirectory: true)
131
+ if !artifacts.isEmpty { try createProtectedDirectory(artifactsURL) }
132
+
133
+ try writeProtected(envelope.data, to: temporary.appendingPathComponent("envelope.json"))
134
+ for artifact in artifacts {
135
+ try writeProtected(
136
+ artifact.data,
137
+ to: artifactsURL.appendingPathComponent(fileName(for: artifact.manifest.id))
138
+ )
139
+ }
140
+
141
+ let record = StoredRecord(
142
+ schemaVersion: 1,
143
+ reportID: envelope.reportID,
144
+ submittedAt: envelope.submittedAt,
145
+ state: .pending,
146
+ attemptCount: 0,
147
+ lastError: nil,
148
+ totalByteSize: totalByteSize,
149
+ envelopeByteSize: envelope.data.count,
150
+ envelopeSHA256: sha256(envelope.data),
151
+ artifacts: artifacts.map(StoredArtifact.init)
152
+ )
153
+ try writeRecord(record, inside: temporary)
154
+ try fileManager.moveItem(at: temporary, to: destination)
155
+ try applyStorageAttributes(to: destination)
156
+ return summary(record)
157
+ } catch let error as CrumbReportQueueError {
158
+ try? fileManager.removeItem(at: temporary)
159
+ throw error
160
+ } catch {
161
+ try? fileManager.removeItem(at: temporary)
162
+ throw CrumbReportQueueError.storageFailure
163
+ }
164
+ }
165
+
166
+ package func reports() throws -> [CrumbQueuedReportSummary] {
167
+ try validateLimits()
168
+ try prepareRoot()
169
+ try cleanupTemporaryDirectories()
170
+ return try readAllRecords()
171
+ .sorted { $0.submittedAt < $1.submittedAt }
172
+ .map(summary)
173
+ }
174
+
175
+ package func load(reportID: String) throws -> CrumbQueuedReportPayload {
176
+ guard validReportID(reportID) else {
177
+ throw CrumbReportQueueError.reportNotFound
178
+ }
179
+ try prepareRoot()
180
+ let directory = reportURL(reportID)
181
+ guard fileManager.fileExists(atPath: directory.path) else {
182
+ throw CrumbReportQueueError.reportNotFound
183
+ }
184
+ let record = try readRecord(inside: directory)
185
+ let envelope = try readData(directory.appendingPathComponent("envelope.json"))
186
+ guard envelope.count == record.envelopeByteSize,
187
+ sha256(envelope) == record.envelopeSHA256 else {
188
+ throw CrumbReportQueueError.corruptQueue
189
+ }
190
+
191
+ let artifacts = try record.artifacts.map { stored -> CrumbQueueArtifact in
192
+ let data = try readData(
193
+ directory
194
+ .appendingPathComponent("artifacts", isDirectory: true)
195
+ .appendingPathComponent(stored.fileName)
196
+ )
197
+ guard data.count == stored.byteSize, sha256(data) == stored.sha256 else {
198
+ throw CrumbReportQueueError.corruptQueue
199
+ }
200
+ return CrumbQueueArtifact(manifest: stored.manifest, data: data)
201
+ }
202
+ guard envelope.count + artifacts.reduce(0, { $0 + $1.data.count }) == record.totalByteSize else {
203
+ throw CrumbReportQueueError.corruptQueue
204
+ }
205
+ return CrumbQueuedReportPayload(
206
+ summary: summary(record),
207
+ envelope: envelope,
208
+ artifacts: artifacts
209
+ )
210
+ }
211
+
212
+ package func markUploading(reportID: String) throws {
213
+ try updateRecord(reportID: reportID) { record in
214
+ record.state = .uploading
215
+ record.attemptCount += 1
216
+ record.lastError = nil
217
+ }
218
+ }
219
+
220
+ package func markFailed(reportID: String, reason: String) throws {
221
+ try updateRecord(reportID: reportID) { record in
222
+ record.state = .failed
223
+ record.lastError = sanitizedReason(reason)
224
+ }
225
+ }
226
+
227
+ package func markPending(reportID: String) throws {
228
+ try updateRecord(reportID: reportID) { record in
229
+ record.state = .pending
230
+ record.lastError = nil
231
+ }
232
+ }
233
+
234
+ /// Removes a report only after the server has durably accepted it.
235
+ package func remove(reportID: String) throws {
236
+ guard validReportID(reportID) else {
237
+ throw CrumbReportQueueError.reportNotFound
238
+ }
239
+ let directory = reportURL(reportID)
240
+ guard fileManager.fileExists(atPath: directory.path) else {
241
+ throw CrumbReportQueueError.reportNotFound
242
+ }
243
+ let tombstone = rootURL.appendingPathComponent(
244
+ ".delete-\(reportID)-\(UUID().uuidString)",
245
+ isDirectory: true
246
+ )
247
+ do {
248
+ try fileManager.moveItem(at: directory, to: tombstone)
249
+ // The atomic rename is the durable removal. Byte cleanup may finish later.
250
+ try? fileManager.removeItem(at: tombstone)
251
+ } catch {
252
+ throw CrumbReportQueueError.storageFailure
253
+ }
254
+ }
255
+
256
+ /// Upload work interrupted by process termination becomes retryable on the next launch.
257
+ package func recoverInterruptedUploads() throws {
258
+ try prepareRoot()
259
+ try cleanupTemporaryDirectories()
260
+ for record in try readAllRecords() where record.state == .uploading {
261
+ try updateRecord(reportID: record.reportID) { value in
262
+ value.state = .pending
263
+ value.lastError = nil
264
+ }
265
+ }
266
+ }
267
+
268
+ private func validateLimits() throws {
269
+ guard limits.maximumReports > 0,
270
+ limits.maximumTotalBytes > 0,
271
+ limits.maximumReportBytes > 0,
272
+ limits.maximumEnvelopeBytes > 0,
273
+ limits.maximumArtifactBytes > 0,
274
+ limits.maximumArtifactsPerReport >= 0,
275
+ limits.maximumReportBytes <= limits.maximumTotalBytes else {
276
+ throw CrumbReportQueueError.invalidLimits
277
+ }
278
+ }
279
+
280
+ private func validate(
281
+ envelope: CrumbSerializedReportEnvelope,
282
+ artifacts: [CrumbQueueArtifact]
283
+ ) throws {
284
+ guard envelope.data.count <= limits.maximumEnvelopeBytes,
285
+ artifacts.count <= limits.maximumArtifactsPerReport,
286
+ Set(artifacts.map(\.manifest.id)).count == artifacts.count,
287
+ validReportID(envelope.reportID),
288
+ let root = try? JSONSerialization.jsonObject(with: envelope.data) as? [String: Any],
289
+ root["report_id"] as? String == envelope.reportID,
290
+ let manifests = root["artifacts"] as? [[String: Any]] else {
291
+ throw CrumbReportQueueError.invalidEnvelope
292
+ }
293
+
294
+ let storedByID = Dictionary(uniqueKeysWithValues: artifacts.map { ($0.manifest.id, $0) })
295
+ guard Set(manifests.compactMap { $0["id"] as? String }) == Set(storedByID.keys),
296
+ manifests.count == artifacts.count else {
297
+ throw CrumbReportQueueError.invalidEnvelope
298
+ }
299
+
300
+ for manifest in manifests {
301
+ guard let id = manifest["id"] as? String,
302
+ let artifact = storedByID[id],
303
+ validArtifactID(id),
304
+ artifact.data.count <= limits.maximumArtifactBytes,
305
+ artifact.data.count == artifact.manifest.byteSize,
306
+ sha256(artifact.data) == artifact.manifest.sha256,
307
+ manifest["byte_size"] as? Int == artifact.manifest.byteSize,
308
+ manifest["sha256"] as? String == artifact.manifest.sha256,
309
+ manifest["mime_type"] as? String == artifact.manifest.mimeType else {
310
+ throw CrumbReportQueueError.invalidArtifact
311
+ }
312
+ }
313
+ }
314
+
315
+ private func prepareRoot() throws {
316
+ do {
317
+ if !fileManager.fileExists(atPath: rootURL.path) {
318
+ try createProtectedDirectory(rootURL)
319
+ }
320
+ try applyStorageAttributes(to: rootURL)
321
+ } catch {
322
+ throw CrumbReportQueueError.storageFailure
323
+ }
324
+ }
325
+
326
+ private func cleanupTemporaryDirectories() throws {
327
+ do {
328
+ for url in try fileManager.contentsOfDirectory(
329
+ at: rootURL,
330
+ includingPropertiesForKeys: nil,
331
+ options: []
332
+ ) where url.lastPathComponent.hasPrefix(".tmp-")
333
+ || url.lastPathComponent.hasPrefix(".delete-") {
334
+ if url.lastPathComponent.hasPrefix(".delete-") {
335
+ try? fileManager.removeItem(at: url)
336
+ } else {
337
+ try fileManager.removeItem(at: url)
338
+ }
339
+ }
340
+ } catch {
341
+ throw CrumbReportQueueError.storageFailure
342
+ }
343
+ }
344
+
345
+ private func readAllRecords() throws -> [StoredRecord] {
346
+ do {
347
+ let directories = try fileManager.contentsOfDirectory(
348
+ at: rootURL,
349
+ includingPropertiesForKeys: [.isDirectoryKey],
350
+ options: [.skipsHiddenFiles]
351
+ )
352
+ return try directories.compactMap { url in
353
+ let values = try url.resourceValues(forKeys: [.isDirectoryKey])
354
+ guard values.isDirectory == true else { return nil }
355
+ return try readRecord(inside: url)
356
+ }
357
+ } catch let error as CrumbReportQueueError {
358
+ throw error
359
+ } catch {
360
+ throw CrumbReportQueueError.corruptQueue
361
+ }
362
+ }
363
+
364
+ private func readRecord(inside directory: URL) throws -> StoredRecord {
365
+ do {
366
+ let data = try Data(contentsOf: directory.appendingPathComponent("record.json"))
367
+ let record = try decoder.decode(StoredRecord.self, from: data)
368
+ guard record.schemaVersion == 1,
369
+ record.reportID == directory.lastPathComponent,
370
+ record.totalByteSize >= 0,
371
+ record.envelopeByteSize >= 0,
372
+ record.attemptCount >= 0,
373
+ record.artifacts.allSatisfy({
374
+ validArtifactID($0.id)
375
+ && $0.fileName == fileName(for: $0.id)
376
+ && $0.byteSize >= 0
377
+ }) else {
378
+ throw CrumbReportQueueError.corruptQueue
379
+ }
380
+ return record
381
+ } catch let error as CrumbReportQueueError {
382
+ throw error
383
+ } catch {
384
+ throw CrumbReportQueueError.corruptQueue
385
+ }
386
+ }
387
+
388
+ private func writeRecord(_ record: StoredRecord, inside directory: URL) throws {
389
+ do {
390
+ try writeProtected(
391
+ encoder.encode(record),
392
+ to: directory.appendingPathComponent("record.json")
393
+ )
394
+ } catch {
395
+ throw CrumbReportQueueError.storageFailure
396
+ }
397
+ }
398
+
399
+ private func updateRecord(
400
+ reportID: String,
401
+ mutation: (inout StoredRecord) -> Void
402
+ ) throws {
403
+ guard validReportID(reportID) else {
404
+ throw CrumbReportQueueError.reportNotFound
405
+ }
406
+ let directory = reportURL(reportID)
407
+ guard fileManager.fileExists(atPath: directory.path) else {
408
+ throw CrumbReportQueueError.reportNotFound
409
+ }
410
+ var record = try readRecord(inside: directory)
411
+ mutation(&record)
412
+ try writeRecord(record, inside: directory)
413
+ }
414
+
415
+ private func createProtectedDirectory(_ url: URL) throws {
416
+ try fileManager.createDirectory(at: url, withIntermediateDirectories: true)
417
+ try applyStorageAttributes(to: url)
418
+ }
419
+
420
+ private func writeProtected(_ data: Data, to url: URL) throws {
421
+ try data.write(to: url, options: [.atomic])
422
+ try applyStorageAttributes(to: url)
423
+ }
424
+
425
+ private func applyStorageAttributes(to url: URL) throws {
426
+ var values = URLResourceValues()
427
+ values.isExcludedFromBackup = true
428
+ var mutableURL = url
429
+ try mutableURL.setResourceValues(values)
430
+ #if os(iOS) || os(tvOS) || os(watchOS) || os(visionOS)
431
+ try fileManager.setAttributes(
432
+ [.protectionKey: FileProtectionType.completeUntilFirstUserAuthentication],
433
+ ofItemAtPath: url.path
434
+ )
435
+ #endif
436
+ }
437
+
438
+ private func readData(_ url: URL) throws -> Data {
439
+ do {
440
+ return try Data(contentsOf: url, options: [.mappedIfSafe])
441
+ } catch {
442
+ throw CrumbReportQueueError.corruptQueue
443
+ }
444
+ }
445
+
446
+ private func reportURL(_ reportID: String) -> URL {
447
+ rootURL.appendingPathComponent(reportID, isDirectory: true)
448
+ }
449
+
450
+ private func fileName(for artifactID: String) -> String { "\(artifactID).blob" }
451
+
452
+ private func summary(_ record: StoredRecord) -> CrumbQueuedReportSummary {
453
+ CrumbQueuedReportSummary(
454
+ reportID: record.reportID,
455
+ submittedAt: record.submittedAt,
456
+ state: record.state,
457
+ attemptCount: record.attemptCount,
458
+ lastError: record.lastError,
459
+ totalByteSize: record.totalByteSize,
460
+ artifactCount: record.artifacts.count
461
+ )
462
+ }
463
+
464
+ private func artifactDataByID(_ artifacts: [CrumbQueueArtifact]) -> [String: Data] {
465
+ Dictionary(uniqueKeysWithValues: artifacts.map { ($0.manifest.id, $0.data) })
466
+ }
467
+
468
+ private func validArtifactID(_ value: String) -> Bool {
469
+ value.range(of: "^art_[A-Za-z0-9_-]{12,80}$", options: .regularExpression) != nil
470
+ }
471
+
472
+ private func validReportID(_ value: String) -> Bool {
473
+ value.range(of: "^rpt_[A-Za-z0-9_-]{16,80}$", options: .regularExpression) != nil
474
+ }
475
+
476
+ private func sha256(_ data: Data) -> String {
477
+ SHA256.hash(data: data).map { String(format: "%02x", $0) }.joined()
478
+ }
479
+
480
+ private func sanitizedReason(_ value: String) -> String {
481
+ String(
482
+ value
483
+ .replacingOccurrences(of: "\n", with: " ")
484
+ .replacingOccurrences(of: "\r", with: " ")
485
+ .prefix(512)
486
+ )
487
+ }
488
+
489
+ private static func defaultRootURL() -> URL {
490
+ let base = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)[0]
491
+ return base
492
+ .appendingPathComponent("dev.crumb", isDirectory: true)
493
+ .appendingPathComponent("reports", isDirectory: true)
494
+ }
495
+
496
+ private struct StoredArtifact: Codable, Equatable, Sendable {
497
+ let id: String
498
+ let kind: String
499
+ let mimeType: String
500
+ let byteSize: Int
501
+ let sha256: String
502
+ let redactionState: String
503
+ let uploadID: String
504
+ let fileName: String
505
+
506
+ init(_ artifact: CrumbQueueArtifact) {
507
+ let manifest = artifact.manifest
508
+ id = manifest.id
509
+ kind = manifest.kind
510
+ mimeType = manifest.mimeType
511
+ byteSize = manifest.byteSize
512
+ sha256 = manifest.sha256
513
+ redactionState = manifest.redactionState
514
+ uploadID = manifest.uploadID
515
+ fileName = "\(manifest.id).blob"
516
+ }
517
+
518
+ var manifest: CrumbArtifactManifest {
519
+ CrumbArtifactManifest(
520
+ id: id,
521
+ kind: kind,
522
+ mimeType: mimeType,
523
+ byteSize: byteSize,
524
+ sha256: sha256,
525
+ redactionState: redactionState,
526
+ uploadID: uploadID
527
+ )
528
+ }
529
+ }
530
+
531
+ private struct StoredRecord: Codable, Equatable, Sendable {
532
+ let schemaVersion: Int
533
+ let reportID: String
534
+ let submittedAt: Date
535
+ var state: CrumbQueuedReportState
536
+ var attemptCount: Int
537
+ var lastError: String?
538
+ let totalByteSize: Int
539
+ let envelopeByteSize: Int
540
+ let envelopeSHA256: String
541
+ let artifacts: [StoredArtifact]
542
+ }
543
+ }