pulse-updates 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. package/README.md +333 -0
  2. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/results.bin +1 -0
  3. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/AssetModel.dex +0 -0
  4. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/BuildConfig.dex +0 -0
  5. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/BundleModel.dex +0 -0
  6. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/CheckResult.dex +0 -0
  7. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/FetchResult.dex +0 -0
  8. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/ManifestModel$Companion.dex +0 -0
  9. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/ManifestModel.dex +0 -0
  10. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseController$Companion.dex +0 -0
  11. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseController$Delegate.dex +0 -0
  12. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseController$errorRecoveryDelegate$1.dex +0 -0
  13. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseController.dex +0 -0
  14. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseControllerKt.dex +0 -0
  15. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseIntegrityCheck.dex +0 -0
  16. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseReactHostDelegate.dex +0 -0
  17. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseReactHostFactory.dex +0 -0
  18. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseReaper.dex +0 -0
  19. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseRemoteLoader.dex +0 -0
  20. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseUpdatesConfig.dex +0 -0
  21. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseUpdatesException.dex +0 -0
  22. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseUpdatesModule$Companion.dex +0 -0
  23. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseUpdatesModule.dex +0 -0
  24. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/PulseUpdatesPackage.dex +0 -0
  25. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/SignatureModel.dex +0 -0
  26. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/UiThreadUtil.dex +0 -0
  27. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/database/PulseAsset.dex +0 -0
  28. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/database/PulseDatabase.dex +0 -0
  29. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/database/PulseDatabaseSchema.dex +0 -0
  30. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/database/PulseUpdate.dex +0 -0
  31. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/database/PulseUpdateStatus$Companion.dex +0 -0
  32. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/database/PulseUpdateStatus.dex +0 -0
  33. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/errorrecovery/PulseErrorRecovery$Companion.dex +0 -0
  34. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/errorrecovery/PulseErrorRecovery.dex +0 -0
  35. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/errorrecovery/PulseErrorRecoveryDelegate$LauncherCallback.dex +0 -0
  36. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/errorrecovery/PulseErrorRecoveryDelegate$RemoteLoadStatus.dex +0 -0
  37. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/errorrecovery/PulseErrorRecoveryDelegate.dex +0 -0
  38. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$Companion.dex +0 -0
  39. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$MessageType.dex +0 -0
  40. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$Task.dex +0 -0
  41. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$WhenMappings.dex +0 -0
  42. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$tryRelaunchFromCache$1.dex +0 -0
  43. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler.dex +0 -0
  44. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/launcher/EmbeddedAsset$Companion.dex +0 -0
  45. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/launcher/EmbeddedAsset.dex +0 -0
  46. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/launcher/EmbeddedManifest$Companion.dex +0 -0
  47. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/launcher/EmbeddedManifest.dex +0 -0
  48. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/launcher/LauncherException.dex +0 -0
  49. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/launcher/PulseAppLauncher$Companion.dex +0 -0
  50. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/launcher/PulseAppLauncher.dex +0 -0
  51. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/launcher/PulseDefaultSelectionPolicy.dex +0 -0
  52. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/launcher/PulseSelectionPolicy.dex +0 -0
  53. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/bundleLibRuntimeToDirRelease_dex/app/pulse/updates/launcher/PulseUpdateInfo.dex +0 -0
  54. package/android/build/.transforms/051997ae5715069c07acae848c6dd9c5/transformed/bundleLibRuntimeToDirRelease/desugar_graph.bin +0 -0
  55. package/android/build/.transforms/1a2af57545c1657f87f3de30891a3470/results.bin +1 -0
  56. package/android/build/.transforms/1a2af57545c1657f87f3de30891a3470/transformed/classes/classes_dex/classes.dex +0 -0
  57. package/android/build/generated/source/buildConfig/debug/app/pulse/updates/BuildConfig.java +10 -0
  58. package/android/build/generated/source/buildConfig/release/app/pulse/updates/BuildConfig.java +10 -0
  59. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +9 -0
  60. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
  61. package/android/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/AndroidManifest.xml +9 -0
  62. package/android/build/intermediates/aapt_friendly_merged_manifests/release/processReleaseManifest/aapt/output-metadata.json +18 -0
  63. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
  64. package/android/build/intermediates/aar_metadata/release/writeReleaseAarMetadata/aar-metadata.properties +6 -0
  65. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
  66. package/android/build/intermediates/annotation_processor_list/release/javaPreCompileRelease/annotationProcessors.json +1 -0
  67. package/android/build/intermediates/compile_library_classes_jar/release/bundleLibCompileToJarRelease/classes.jar +0 -0
  68. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  69. package/android/build/intermediates/compile_r_class_jar/release/generateReleaseRFile/R.jar +0 -0
  70. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
  71. package/android/build/intermediates/compile_symbol_list/release/generateReleaseRFile/R.txt +0 -0
  72. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -0
  73. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  74. package/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +2 -0
  75. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  76. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  77. package/android/build/intermediates/incremental/mergeReleaseAssets/merger.xml +2 -0
  78. package/android/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml +2 -0
  79. package/android/build/intermediates/incremental/mergeReleaseShaders/merger.xml +2 -0
  80. package/android/build/intermediates/incremental/release/packageReleaseResources/compile-file-map.properties +1 -0
  81. package/android/build/intermediates/incremental/release/packageReleaseResources/merger.xml +2 -0
  82. package/android/build/intermediates/java_res/release/processReleaseJavaRes/out/META-INF/pulse-updates_release.kotlin_module +0 -0
  83. package/android/build/intermediates/javac/release/compileReleaseJavaWithJavac/classes/app/pulse/updates/BuildConfig.class +0 -0
  84. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +2 -0
  85. package/android/build/intermediates/local_only_symbol_list/release/parseReleaseLocalResources/R-def.txt +2 -0
  86. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +11 -0
  87. package/android/build/intermediates/manifest_merge_blame_file/release/processReleaseManifest/manifest-merger-blame-release-report.txt +11 -0
  88. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +9 -0
  89. package/android/build/intermediates/merged_manifest/release/processReleaseManifest/AndroidManifest.xml +9 -0
  90. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
  91. package/android/build/intermediates/navigation_json/release/extractDeepLinksRelease/navigation.json +1 -0
  92. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
  93. package/android/build/intermediates/nested_resources_validation_report/release/generateReleaseResources/nestedResourcesValidationReport.txt +1 -0
  94. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/META-INF/pulse-updates_release.kotlin_module +0 -0
  95. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/AssetModel.class +0 -0
  96. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/BuildConfig.class +0 -0
  97. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/BundleModel.class +0 -0
  98. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/CheckResult.class +0 -0
  99. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/FetchResult.class +0 -0
  100. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/ManifestModel$Companion.class +0 -0
  101. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/ManifestModel.class +0 -0
  102. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseController$Companion.class +0 -0
  103. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseController$Delegate.class +0 -0
  104. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseController$errorRecoveryDelegate$1.class +0 -0
  105. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseController.class +0 -0
  106. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseControllerKt.class +0 -0
  107. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseIntegrityCheck.class +0 -0
  108. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseReactHostDelegate.class +0 -0
  109. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseReactHostFactory.class +0 -0
  110. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseReaper.class +0 -0
  111. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseRemoteLoader.class +0 -0
  112. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseUpdatesConfig.class +0 -0
  113. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseUpdatesException.class +0 -0
  114. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseUpdatesModule$Companion.class +0 -0
  115. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseUpdatesModule.class +0 -0
  116. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/PulseUpdatesPackage.class +0 -0
  117. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/SignatureModel.class +0 -0
  118. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/UiThreadUtil.class +0 -0
  119. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/database/PulseAsset.class +0 -0
  120. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/database/PulseDatabase.class +0 -0
  121. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/database/PulseDatabaseSchema.class +0 -0
  122. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/database/PulseUpdate.class +0 -0
  123. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/database/PulseUpdateStatus$Companion.class +0 -0
  124. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/database/PulseUpdateStatus.class +0 -0
  125. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/errorrecovery/PulseErrorRecovery$Companion.class +0 -0
  126. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/errorrecovery/PulseErrorRecovery.class +0 -0
  127. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/errorrecovery/PulseErrorRecoveryDelegate$LauncherCallback.class +0 -0
  128. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/errorrecovery/PulseErrorRecoveryDelegate$RemoteLoadStatus.class +0 -0
  129. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/errorrecovery/PulseErrorRecoveryDelegate.class +0 -0
  130. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$Companion.class +0 -0
  131. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$MessageType.class +0 -0
  132. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$Task.class +0 -0
  133. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$WhenMappings.class +0 -0
  134. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$tryRelaunchFromCache$1.class +0 -0
  135. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler.class +0 -0
  136. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/launcher/EmbeddedAsset$Companion.class +0 -0
  137. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/launcher/EmbeddedAsset.class +0 -0
  138. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/launcher/EmbeddedManifest$Companion.class +0 -0
  139. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/launcher/EmbeddedManifest.class +0 -0
  140. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/launcher/LauncherException.class +0 -0
  141. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/launcher/PulseAppLauncher$Companion.class +0 -0
  142. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/launcher/PulseAppLauncher.class +0 -0
  143. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/launcher/PulseDefaultSelectionPolicy.class +0 -0
  144. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/launcher/PulseSelectionPolicy.class +0 -0
  145. package/android/build/intermediates/runtime_library_classes_dir/release/bundleLibRuntimeToDirRelease/app/pulse/updates/launcher/PulseUpdateInfo.class +0 -0
  146. package/android/build/intermediates/runtime_library_classes_jar/release/bundleLibRuntimeToJarRelease/classes.jar +0 -0
  147. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +1 -0
  148. package/android/build/intermediates/symbol_list_with_package_name/release/generateReleaseRFile/package-aware-r.txt +1 -0
  149. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  150. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  151. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  152. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  153. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  154. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  155. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  156. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  157. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  158. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  159. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  160. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  161. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  162. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  163. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  164. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  165. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  166. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  167. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  168. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  169. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  170. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  171. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  172. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  173. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  174. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  175. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  176. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  177. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  178. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  179. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  180. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  181. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  182. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  183. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  184. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab +0 -0
  185. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream +0 -0
  186. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len +0 -0
  187. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len +0 -0
  188. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at +0 -0
  189. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i +0 -0
  190. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len +0 -0
  191. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  192. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  193. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  194. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  195. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values +0 -0
  196. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  197. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.s +1 -0
  198. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  199. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  200. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  201. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  202. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  203. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  204. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  205. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  206. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  207. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  208. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  209. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  210. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  211. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  212. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  213. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  214. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  215. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  216. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  217. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  218. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  219. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  220. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  221. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +2 -0
  222. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  223. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  224. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  225. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  226. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  227. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  228. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  229. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  230. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  231. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  232. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  233. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  234. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  235. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  236. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  237. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  238. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  239. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  240. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  241. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  242. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  243. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  244. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  245. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  246. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  247. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  248. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  249. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  250. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values +0 -0
  251. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  252. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.s +1 -0
  253. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  254. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  255. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  256. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  257. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  258. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  259. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  260. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  261. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  262. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  263. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  264. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  265. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  266. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values +0 -0
  267. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  268. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.s +4 -0
  269. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  270. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  271. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  272. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  273. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  274. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  275. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  276. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  277. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  278. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  279. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  280. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  281. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  282. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values +0 -0
  283. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  284. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.s +3 -0
  285. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  286. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  287. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab +0 -0
  288. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream +0 -0
  289. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len +0 -0
  290. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len +0 -0
  291. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at +0 -0
  292. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i +0 -0
  293. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len +0 -0
  294. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  295. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  296. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  297. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  298. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values +0 -0
  299. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  300. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.s +1 -0
  301. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  302. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  303. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  304. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  305. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  306. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  307. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  308. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  309. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  310. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  311. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  312. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  313. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  314. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  315. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  316. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  317. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  318. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  319. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  320. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  321. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  322. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  323. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  324. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/counters.tab +2 -0
  325. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  326. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  327. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  328. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  329. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  330. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  331. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  332. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  333. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  334. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  335. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  336. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  337. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  338. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  339. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  340. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  341. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  342. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  343. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.values +0 -0
  344. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  345. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.s +1 -0
  346. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  347. package/android/build/kotlin/compileReleaseKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  348. package/android/build/kotlin/compileReleaseKotlin/cacheable/last-build.bin +0 -0
  349. package/android/build/kotlin/compileReleaseKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  350. package/android/build/kotlin/compileReleaseKotlin/local-state/build-history.bin +0 -0
  351. package/android/build/outputs/logs/manifest-merger-debug-report.txt +20 -0
  352. package/android/build/outputs/logs/manifest-merger-release-report.txt +20 -0
  353. package/android/build/tmp/compileReleaseJavaWithJavac/previous-compilation-data.bin +0 -0
  354. package/android/build/tmp/kotlin-classes/debug/META-INF/pulse-updates_debug.kotlin_module +0 -0
  355. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/AssetModel.class +0 -0
  356. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/BundleModel.class +0 -0
  357. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/CheckResult.class +0 -0
  358. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/FetchResult.class +0 -0
  359. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/ManifestModel$Companion.class +0 -0
  360. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/ManifestModel.class +0 -0
  361. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/PulseController$Companion.class +0 -0
  362. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/PulseController$Delegate.class +0 -0
  363. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/PulseController$errorRecoveryDelegate$1.class +0 -0
  364. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/PulseController.class +0 -0
  365. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/PulseControllerKt.class +0 -0
  366. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/PulseIntegrityCheck.class +0 -0
  367. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/PulseReaper.class +0 -0
  368. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/PulseRemoteLoader.class +0 -0
  369. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/PulseUpdatesConfig.class +0 -0
  370. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/PulseUpdatesException.class +0 -0
  371. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/PulseUpdatesModule$Companion.class +0 -0
  372. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/PulseUpdatesModule.class +0 -0
  373. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/PulseUpdatesPackage.class +0 -0
  374. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/SignatureModel.class +0 -0
  375. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/UiThreadUtil.class +0 -0
  376. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/database/PulseAsset.class +0 -0
  377. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/database/PulseDatabase.class +0 -0
  378. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/database/PulseDatabaseSchema.class +0 -0
  379. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/database/PulseUpdate.class +0 -0
  380. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/database/PulseUpdateStatus$Companion.class +0 -0
  381. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/database/PulseUpdateStatus.class +0 -0
  382. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/errorrecovery/PulseErrorRecovery$Companion.class +0 -0
  383. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/errorrecovery/PulseErrorRecovery.class +0 -0
  384. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/errorrecovery/PulseErrorRecoveryDelegate$LauncherCallback.class +0 -0
  385. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/errorrecovery/PulseErrorRecoveryDelegate$RemoteLoadStatus.class +0 -0
  386. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/errorrecovery/PulseErrorRecoveryDelegate.class +0 -0
  387. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$Companion.class +0 -0
  388. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$MessageType.class +0 -0
  389. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$Task.class +0 -0
  390. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$WhenMappings.class +0 -0
  391. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$tryRelaunchFromCache$1.class +0 -0
  392. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler.class +0 -0
  393. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/launcher/EmbeddedAsset$Companion.class +0 -0
  394. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/launcher/EmbeddedAsset.class +0 -0
  395. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/launcher/EmbeddedManifest$Companion.class +0 -0
  396. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/launcher/EmbeddedManifest.class +0 -0
  397. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/launcher/LauncherException.class +0 -0
  398. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/launcher/PulseAppLauncher$Companion.class +0 -0
  399. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/launcher/PulseAppLauncher.class +0 -0
  400. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/launcher/PulseDefaultSelectionPolicy.class +0 -0
  401. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/launcher/PulseSelectionPolicy.class +0 -0
  402. package/android/build/tmp/kotlin-classes/debug/app/pulse/updates/launcher/PulseUpdateInfo.class +0 -0
  403. package/android/build/tmp/kotlin-classes/release/META-INF/pulse-updates_release.kotlin_module +0 -0
  404. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/AssetModel.class +0 -0
  405. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/BundleModel.class +0 -0
  406. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/CheckResult.class +0 -0
  407. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/FetchResult.class +0 -0
  408. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/ManifestModel$Companion.class +0 -0
  409. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/ManifestModel.class +0 -0
  410. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseController$Companion.class +0 -0
  411. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseController$Delegate.class +0 -0
  412. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseController$errorRecoveryDelegate$1.class +0 -0
  413. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseController.class +0 -0
  414. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseControllerKt.class +0 -0
  415. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseIntegrityCheck.class +0 -0
  416. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseReactHostDelegate.class +0 -0
  417. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseReactHostFactory.class +0 -0
  418. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseReaper.class +0 -0
  419. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseRemoteLoader.class +0 -0
  420. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseUpdatesConfig.class +0 -0
  421. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseUpdatesException.class +0 -0
  422. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseUpdatesModule$Companion.class +0 -0
  423. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseUpdatesModule.class +0 -0
  424. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/PulseUpdatesPackage.class +0 -0
  425. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/SignatureModel.class +0 -0
  426. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/UiThreadUtil.class +0 -0
  427. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/database/PulseAsset.class +0 -0
  428. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/database/PulseDatabase.class +0 -0
  429. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/database/PulseDatabaseSchema.class +0 -0
  430. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/database/PulseUpdate.class +0 -0
  431. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/database/PulseUpdateStatus$Companion.class +0 -0
  432. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/database/PulseUpdateStatus.class +0 -0
  433. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/errorrecovery/PulseErrorRecovery$Companion.class +0 -0
  434. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/errorrecovery/PulseErrorRecovery.class +0 -0
  435. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/errorrecovery/PulseErrorRecoveryDelegate$LauncherCallback.class +0 -0
  436. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/errorrecovery/PulseErrorRecoveryDelegate$RemoteLoadStatus.class +0 -0
  437. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/errorrecovery/PulseErrorRecoveryDelegate.class +0 -0
  438. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$Companion.class +0 -0
  439. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$MessageType.class +0 -0
  440. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$Task.class +0 -0
  441. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$WhenMappings.class +0 -0
  442. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler$tryRelaunchFromCache$1.class +0 -0
  443. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler.class +0 -0
  444. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/launcher/EmbeddedAsset$Companion.class +0 -0
  445. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/launcher/EmbeddedAsset.class +0 -0
  446. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/launcher/EmbeddedManifest$Companion.class +0 -0
  447. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/launcher/EmbeddedManifest.class +0 -0
  448. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/launcher/LauncherException.class +0 -0
  449. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/launcher/PulseAppLauncher$Companion.class +0 -0
  450. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/launcher/PulseAppLauncher.class +0 -0
  451. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/launcher/PulseDefaultSelectionPolicy.class +0 -0
  452. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/launcher/PulseSelectionPolicy.class +0 -0
  453. package/android/build/tmp/kotlin-classes/release/app/pulse/updates/launcher/PulseUpdateInfo.class +0 -0
  454. package/android/build.gradle +53 -0
  455. package/android/src/main/AndroidManifest.xml +3 -0
  456. package/android/src/main/java/app/pulse/updates/PulseController.kt +1419 -0
  457. package/android/src/main/java/app/pulse/updates/PulseReactHostFactory.kt +116 -0
  458. package/android/src/main/java/app/pulse/updates/PulseUpdatesModule.kt +314 -0
  459. package/android/src/main/java/app/pulse/updates/PulseUpdatesPackage.kt +16 -0
  460. package/android/src/main/java/app/pulse/updates/database/PulseDatabase.kt +400 -0
  461. package/android/src/main/java/app/pulse/updates/database/PulseDatabaseSchema.kt +90 -0
  462. package/android/src/main/java/app/pulse/updates/errorrecovery/PulseErrorRecovery.kt +89 -0
  463. package/android/src/main/java/app/pulse/updates/errorrecovery/PulseErrorRecoveryDelegate.kt +30 -0
  464. package/android/src/main/java/app/pulse/updates/errorrecovery/PulseErrorRecoveryHandler.kt +159 -0
  465. package/android/src/main/java/app/pulse/updates/launcher/PulseAppLauncher.kt +472 -0
  466. package/ios/PulseUpdates/AppLauncher/PulseAppLauncher.swift +551 -0
  467. package/ios/PulseUpdates/Database/PulseDatabase.swift +557 -0
  468. package/ios/PulseUpdates/Database/PulseDatabaseSchema.swift +229 -0
  469. package/ios/PulseUpdates/Database/PulseDatabaseUtils.swift +247 -0
  470. package/ios/PulseUpdates/ErrorRecovery/PulseErrorRecovery.swift +415 -0
  471. package/ios/PulseUpdates/PulseController.swift +1359 -0
  472. package/ios/PulseUpdates/PulseTypes.swift +289 -0
  473. package/ios/PulseUpdates/PulseUpdates.m +37 -0
  474. package/ios/PulseUpdates/PulseUpdates.swift +236 -0
  475. package/lib/commonjs/NativePulseUpdates.js +9 -0
  476. package/lib/commonjs/NativePulseUpdates.js.map +1 -0
  477. package/lib/commonjs/PulseUpdates.js +315 -0
  478. package/lib/commonjs/PulseUpdates.js.map +1 -0
  479. package/lib/commonjs/assetResolver.js +201 -0
  480. package/lib/commonjs/assetResolver.js.map +1 -0
  481. package/lib/commonjs/index.js +55 -0
  482. package/lib/commonjs/index.js.map +1 -0
  483. package/lib/commonjs/types.js +2 -0
  484. package/lib/commonjs/types.js.map +1 -0
  485. package/lib/commonjs/usePulseUpdates.js +115 -0
  486. package/lib/commonjs/usePulseUpdates.js.map +1 -0
  487. package/lib/module/NativePulseUpdates.js +3 -0
  488. package/lib/module/NativePulseUpdates.js.map +1 -0
  489. package/lib/module/PulseUpdates.js +291 -0
  490. package/lib/module/PulseUpdates.js.map +1 -0
  491. package/lib/module/assetResolver.js +193 -0
  492. package/lib/module/assetResolver.js.map +1 -0
  493. package/lib/module/index.js +5 -0
  494. package/lib/module/index.js.map +1 -0
  495. package/lib/module/types.js +2 -0
  496. package/lib/module/types.js.map +1 -0
  497. package/lib/module/usePulseUpdates.js +108 -0
  498. package/lib/module/usePulseUpdates.js.map +1 -0
  499. package/lib/typescript/NativePulseUpdates.d.ts +34 -0
  500. package/lib/typescript/NativePulseUpdates.d.ts.map +1 -0
  501. package/lib/typescript/PulseUpdates.d.ts +93 -0
  502. package/lib/typescript/PulseUpdates.d.ts.map +1 -0
  503. package/lib/typescript/assetResolver.d.ts +30 -0
  504. package/lib/typescript/assetResolver.d.ts.map +1 -0
  505. package/lib/typescript/index.d.ts +5 -0
  506. package/lib/typescript/index.d.ts.map +1 -0
  507. package/lib/typescript/types.d.ts +70 -0
  508. package/lib/typescript/types.d.ts.map +1 -0
  509. package/lib/typescript/usePulseUpdates.d.ts +21 -0
  510. package/lib/typescript/usePulseUpdates.d.ts.map +1 -0
  511. package/package.json +63 -0
  512. package/pulse-updates.podspec +23 -0
  513. package/react-native.config.js +18 -0
  514. package/scripts/create-pulse-resources-android.sh +93 -0
  515. package/scripts/create-pulse-resources-ios.sh +114 -0
  516. package/scripts/generate-embedded-manifest.mjs +307 -0
  517. package/scripts/manifest-check.js +67 -0
  518. package/scripts/publish.mjs +902 -0
  519. package/src/NativePulseUpdates.ts +52 -0
  520. package/src/PulseUpdates.ts +332 -0
  521. package/src/assetResolver.ts +193 -0
  522. package/src/index.ts +4 -0
  523. package/src/types.ts +78 -0
  524. package/src/usePulseUpdates.ts +135 -0
@@ -0,0 +1,159 @@
1
+ package app.pulse.updates.errorrecovery
2
+
3
+ import android.os.Handler
4
+ import android.os.Looper
5
+ import android.os.Message
6
+ import app.pulse.updates.pulseLog
7
+ import app.pulse.updates.pulseLogError
8
+
9
+ /**
10
+ * Keeps track of and executes tasks in the error recovery pipeline. The pipeline allows us to
11
+ * predictably and serially respond to unpredictably ordered events.
12
+ *
13
+ * This error recovery flow is intended to be lightweight and is *not* a full safety net whose
14
+ * purpose is to avoid crashes at all costs. Rather, its primary purpose is to prevent bad updates
15
+ * from "bricking" an app by causing crashes before there is ever a chance to download a fix.
16
+ *
17
+ * When an error is caught, the pipeline is started and executes the following tasks serially:
18
+ * (a) check for a new update and start downloading if there is one
19
+ * (b) if there is a new update, reload and launch the new update
20
+ * (c) if not, or if another error occurs, fall back to an older working update (if one exists)
21
+ * (d) crash.
22
+ */
23
+ internal class PulseErrorRecoveryHandler(
24
+ looper: Looper,
25
+ private val delegate: PulseErrorRecoveryDelegate
26
+ ) : Handler(looper) {
27
+
28
+ private val pipeline = arrayListOf(
29
+ Task.WAIT_FOR_REMOTE_UPDATE,
30
+ Task.LAUNCH_NEW_UPDATE,
31
+ Task.LAUNCH_CACHED_UPDATE,
32
+ Task.CRASH
33
+ )
34
+ private var isPipelineRunning = false
35
+ private var isWaitingForRemoteUpdate = false
36
+ private var hasContentAppeared = false
37
+ private val encounteredErrors = ArrayList<Exception>()
38
+
39
+ object MessageType {
40
+ const val EXCEPTION_ENCOUNTERED = 0
41
+ const val CONTENT_APPEARED = 1
42
+ const val REMOTE_LOAD_STATUS_CHANGED = 2
43
+ }
44
+
45
+ private enum class Task {
46
+ WAIT_FOR_REMOTE_UPDATE,
47
+ LAUNCH_NEW_UPDATE,
48
+ LAUNCH_CACHED_UPDATE,
49
+ CRASH
50
+ }
51
+
52
+ override fun handleMessage(msg: Message) {
53
+ when (msg.what) {
54
+ MessageType.EXCEPTION_ENCOUNTERED -> maybeStartPipeline(msg.obj as Exception)
55
+ MessageType.CONTENT_APPEARED -> handleContentAppeared()
56
+ MessageType.REMOTE_LOAD_STATUS_CHANGED -> handleRemoteLoadStatusChanged(msg.obj as PulseErrorRecoveryDelegate.RemoteLoadStatus)
57
+ else -> throw RuntimeException("PulseErrorRecoveryHandler cannot handle message " + msg.what)
58
+ }
59
+ }
60
+
61
+ private fun handleContentAppeared() {
62
+ hasContentAppeared = true
63
+ // the launch now counts as "successful" so we don't want to roll back;
64
+ // remove any extraneous tasks from the pipeline as such
65
+ pipeline.retainAll(setOf(Task.WAIT_FOR_REMOTE_UPDATE, Task.CRASH))
66
+ delegate.markSuccessfulLaunchForLaunchedUpdate()
67
+ }
68
+
69
+ private fun handleRemoteLoadStatusChanged(newStatus: PulseErrorRecoveryDelegate.RemoteLoadStatus) {
70
+ if (!isWaitingForRemoteUpdate) {
71
+ return
72
+ }
73
+ isWaitingForRemoteUpdate = false
74
+ if (newStatus != PulseErrorRecoveryDelegate.RemoteLoadStatus.NEW_UPDATE_LOADED) {
75
+ pipeline.remove(Task.LAUNCH_NEW_UPDATE)
76
+ }
77
+ runNextTask()
78
+ }
79
+
80
+ private fun runNextTask() {
81
+ when (pipeline.removeAt(0)) {
82
+ Task.WAIT_FOR_REMOTE_UPDATE -> {
83
+ pulseLog(TAG, "ErrorRecovery: attempting to fetch a new update, waiting")
84
+ waitForRemoteUpdate()
85
+ }
86
+ Task.LAUNCH_NEW_UPDATE -> {
87
+ pulseLog(TAG, "ErrorRecovery: launching new update")
88
+ tryRelaunchFromCache()
89
+ }
90
+ Task.LAUNCH_CACHED_UPDATE -> {
91
+ pulseLog(TAG, "ErrorRecovery: falling back to older update")
92
+ tryRelaunchFromCache()
93
+ }
94
+ Task.CRASH -> {
95
+ pulseLogError(TAG, "ErrorRecovery: could not recover from error, crashing")
96
+ crash()
97
+ }
98
+ }
99
+ }
100
+
101
+ private fun maybeStartPipeline(exception: Exception) {
102
+ encounteredErrors.add(exception)
103
+ if (delegate.getLaunchedUpdateSuccessfulLaunchCount() > 0) {
104
+ pipeline.remove(Task.LAUNCH_CACHED_UPDATE)
105
+ } else if (!hasContentAppeared) {
106
+ delegate.markFailedLaunchForLaunchedUpdate()
107
+ }
108
+
109
+ if (!isPipelineRunning) {
110
+ isPipelineRunning = true
111
+ runNextTask()
112
+ }
113
+ }
114
+
115
+ private fun waitForRemoteUpdate() {
116
+ val remoteLoadStatus = delegate.getRemoteLoadStatus()
117
+ if (remoteLoadStatus == PulseErrorRecoveryDelegate.RemoteLoadStatus.NEW_UPDATE_LOADED) {
118
+ runNextTask()
119
+ } else if (remoteLoadStatus == PulseErrorRecoveryDelegate.RemoteLoadStatus.NEW_UPDATE_LOADING ||
120
+ delegate.getCheckOnLaunchConfiguration().uppercase() != "NEVER"
121
+ ) {
122
+ isWaitingForRemoteUpdate = true
123
+ if (delegate.getRemoteLoadStatus() != PulseErrorRecoveryDelegate.RemoteLoadStatus.NEW_UPDATE_LOADING) {
124
+ delegate.loadRemoteUpdate()
125
+ }
126
+ postDelayed({ handleRemoteLoadStatusChanged(PulseErrorRecoveryDelegate.RemoteLoadStatus.IDLE) }, REMOTE_LOAD_TIMEOUT_MS)
127
+ } else {
128
+ pipeline.remove(Task.LAUNCH_NEW_UPDATE)
129
+ runNextTask()
130
+ }
131
+ }
132
+
133
+ private fun tryRelaunchFromCache() {
134
+ delegate.relaunch(object : PulseErrorRecoveryDelegate.LauncherCallback {
135
+ override fun onFailure(e: Exception) {
136
+ post {
137
+ encounteredErrors.add(e)
138
+ pipeline.removeAll(setOf(Task.LAUNCH_NEW_UPDATE, Task.LAUNCH_CACHED_UPDATE))
139
+ runNextTask()
140
+ }
141
+ }
142
+
143
+ override fun onSuccess() {
144
+ post {
145
+ isPipelineRunning = false
146
+ }
147
+ }
148
+ })
149
+ }
150
+
151
+ private fun crash() {
152
+ delegate.throwException(encounteredErrors[0])
153
+ }
154
+
155
+ companion object {
156
+ private const val TAG = "PulseErrorRecoveryHandler"
157
+ const val REMOTE_LOAD_TIMEOUT_MS = 5000L
158
+ }
159
+ }
@@ -0,0 +1,472 @@
1
+ package app.pulse.updates.launcher
2
+
3
+ import android.content.Context
4
+ import app.pulse.updates.pulseLog
5
+ import app.pulse.updates.pulseLogWarn
6
+ import app.pulse.updates.pulseLogError
7
+ import app.pulse.updates.database.PulseAsset
8
+ import app.pulse.updates.database.PulseDatabase
9
+ import app.pulse.updates.database.PulseUpdate
10
+ import app.pulse.updates.database.PulseUpdateStatus
11
+ import java.io.File
12
+ import java.io.FileOutputStream
13
+ import java.io.InputStream
14
+ import java.net.URL
15
+ import java.security.MessageDigest
16
+ import java.util.concurrent.CountDownLatch
17
+ import java.util.concurrent.atomic.AtomicBoolean
18
+ import java.util.concurrent.atomic.AtomicReference
19
+
20
+ /**
21
+ * PulseUpdates App Launcher
22
+ * Based on expo-updates AppLauncherWithDatabase
23
+ * Handles launching updates with 3-step asset fallback support
24
+ */
25
+ class PulseAppLauncher(
26
+ private val context: Context,
27
+ private val database: PulseDatabase,
28
+ private val directory: File,
29
+ private val selectionPolicy: PulseSelectionPolicy,
30
+ private val runtimeVersion: String
31
+ ) {
32
+ companion object {
33
+ private const val TAG = "PulseAppLauncher"
34
+ }
35
+
36
+ // Public properties
37
+ var launchedUpdate: PulseUpdate? = null
38
+ private set
39
+
40
+ var launchAssetFile: File? = null
41
+ private set
42
+
43
+ var assetFilesMap: Map<String, String> = emptyMap()
44
+ private set
45
+
46
+ val isUsingEmbeddedAssets: Boolean
47
+ get() = launchedUpdate?.isEmbedded == true
48
+
49
+ // Private state
50
+ private var embeddedManifest: EmbeddedManifest? = null
51
+
52
+ /**
53
+ * Launch the best available update
54
+ */
55
+ fun launch(callback: (success: Boolean, error: Exception?) -> Unit) {
56
+ try {
57
+ val updates = database.launchableUpdates(runtimeVersion)
58
+ val selectedUpdate = selectionPolicy.selectUpdateToLaunch(updates)
59
+
60
+ if (selectedUpdate == null) {
61
+ callback(false, LauncherException("No launchable update found"))
62
+ return
63
+ }
64
+
65
+ launchedUpdate = selectedUpdate
66
+ launchUpdate(selectedUpdate, callback)
67
+ } catch (e: Exception) {
68
+ callback(false, e)
69
+ }
70
+ }
71
+
72
+ /**
73
+ * Launch a specific update
74
+ */
75
+ fun launch(update: PulseUpdate, callback: (success: Boolean, error: Exception?) -> Unit) {
76
+ launchedUpdate = update
77
+ launchUpdate(update, callback)
78
+ }
79
+
80
+ private fun launchUpdate(update: PulseUpdate, callback: (success: Boolean, error: Exception?) -> Unit) {
81
+ // Mark update as accessed
82
+ try {
83
+ database.markUpdateAccessed(update.updateId)
84
+ } catch (e: Exception) {
85
+ pulseLogWarn(TAG, "Failed to mark update accessed: ${e.message}")
86
+ }
87
+
88
+ // Handle embedded updates
89
+ if (update.status == PulseUpdateStatus.EMBEDDED) {
90
+ launchEmbeddedUpdate(update, callback)
91
+ return
92
+ }
93
+
94
+ // Handle development updates (no assets to verify)
95
+ if (update.status == PulseUpdateStatus.DEVELOPMENT) {
96
+ callback(true, null)
97
+ return
98
+ }
99
+
100
+ // Handle regular updates - ensure all assets exist
101
+ ensureAllAssetsExist(update, callback)
102
+ }
103
+
104
+ private fun launchEmbeddedUpdate(update: PulseUpdate, callback: (success: Boolean, error: Exception?) -> Unit) {
105
+ // For embedded updates, DON'T set launchAssetFile
106
+ // Let React Native use its default bundle loading mechanism
107
+ // This ensures images from drawable folders are resolved correctly
108
+ launchAssetFile = null
109
+ assetFilesMap = emptyMap()
110
+ callback(true, null)
111
+ }
112
+
113
+ private fun ensureAllAssetsExist(update: PulseUpdate, callback: (success: Boolean, error: Exception?) -> Unit) {
114
+ try {
115
+ val assets = database.assetsForUpdate(update.updateId)
116
+
117
+ if (assets.isEmpty()) {
118
+ // No assets to verify, just find the bundle
119
+ update.bundleHash?.let { hash ->
120
+ launchAssetFile = bundleStorePath(hash)
121
+ }
122
+ callback(launchAssetFile?.exists() == true, if (launchAssetFile?.exists() != true) LauncherException("Bundle not found") else null)
123
+ return
124
+ }
125
+
126
+ // Initialize asset map with embedded assets (fallback)
127
+ val mutableAssetFilesMap = buildEmbeddedAssetsMap().toMutableMap()
128
+
129
+ val totalAssets = assets.size
130
+ val completedAssets = java.util.concurrent.atomic.AtomicInteger(0)
131
+ val launchError = AtomicReference<Exception?>(null)
132
+ val launchAssetFound = AtomicBoolean(false)
133
+ val latch = CountDownLatch(totalAssets)
134
+
135
+ for (asset in assets) {
136
+ val localFile = assetStorePath(asset.hash)
137
+
138
+ Thread {
139
+ try {
140
+ val exists = ensureAssetExists(asset, localFile)
141
+
142
+ if (exists) {
143
+ if (asset.isLaunchAsset) {
144
+ launchAssetFile = localFile
145
+ launchAssetFound.set(true)
146
+ } else {
147
+ val localUri = localFile.toURI().toString()
148
+ synchronized(mutableAssetFilesMap) {
149
+ // Store by SHA256 hash
150
+ mutableAssetFilesMap[asset.hash] = localUri
151
+ // Also store by path-based key for Metro compatibility
152
+ asset.key?.let { key ->
153
+ mutableAssetFilesMap[key] = localUri
154
+ }
155
+ }
156
+ }
157
+ }
158
+ } catch (e: Exception) {
159
+ if (asset.isLaunchAsset) {
160
+ launchError.set(e)
161
+ }
162
+ } finally {
163
+ completedAssets.incrementAndGet()
164
+ latch.countDown()
165
+ }
166
+ }.start()
167
+ }
168
+
169
+ // Wait for all assets to be processed
170
+ Thread {
171
+ latch.await()
172
+ assetFilesMap = mutableAssetFilesMap
173
+ val success = launchAssetFound.get()
174
+ callback(success, if (!success) (launchError.get() ?: LauncherException("Launch asset missing")) else null)
175
+ }.start()
176
+
177
+ } catch (e: Exception) {
178
+ callback(false, e)
179
+ }
180
+ }
181
+
182
+ /**
183
+ * 3-step asset fallback:
184
+ * 1. Check if asset exists at expected location
185
+ * 2. Try to copy from APK assets
186
+ * 3. Try to download from remote
187
+ */
188
+ private fun ensureAssetExists(asset: PulseAsset, localFile: File): Boolean {
189
+ // Step 1: Check if asset exists at expected location
190
+ if (localFile.exists()) {
191
+ return true
192
+ }
193
+
194
+ // Step 2: Try to copy from APK assets
195
+ if (maybeCopyAssetFromBundle(asset, localFile)) {
196
+ return true
197
+ }
198
+
199
+ // Step 3: Try to download the asset
200
+ return downloadAsset(asset, localFile)
201
+ }
202
+
203
+ private fun maybeCopyAssetFromBundle(asset: PulseAsset, toFile: File): Boolean {
204
+ // Load embedded manifest if not cached
205
+ if (embeddedManifest == null) {
206
+ embeddedManifest = loadEmbeddedManifest()
207
+ }
208
+
209
+ val embedded = embeddedManifest ?: return false
210
+
211
+ // Find matching embedded asset by key or hash
212
+ val matchingAsset = embedded.assets.find { embeddedAsset ->
213
+ (asset.key != null && embeddedAsset.key == asset.key) ||
214
+ embeddedAsset.hash.equals(asset.hash, ignoreCase = true)
215
+ } ?: return false
216
+
217
+ val bundleFilename = matchingAsset.mainBundleFilename ?: return false
218
+
219
+ try {
220
+ // Get asset path in APK
221
+ val assetPath = if (matchingAsset.mainBundleDir?.isNotEmpty() == true) {
222
+ "${matchingAsset.mainBundleDir}/$bundleFilename"
223
+ } else {
224
+ bundleFilename
225
+ }
226
+
227
+ // Copy from APK assets
228
+ context.assets.open(assetPath).use { input ->
229
+ toFile.parentFile?.mkdirs()
230
+ FileOutputStream(toFile).use { output ->
231
+ input.copyTo(output)
232
+ }
233
+ }
234
+
235
+ return true
236
+ } catch (e: Exception) {
237
+ pulseLogWarn(TAG, "Failed to copy asset from bundle: ${e.message}")
238
+ return false
239
+ }
240
+ }
241
+
242
+ private fun downloadAsset(asset: PulseAsset, toFile: File): Boolean {
243
+ val remoteUrl = asset.url ?: return false
244
+
245
+ try {
246
+ toFile.parentFile?.mkdirs()
247
+
248
+ URL(remoteUrl).openStream().use { input ->
249
+ FileOutputStream(toFile).use { output ->
250
+ input.copyTo(output)
251
+ }
252
+ }
253
+
254
+ // Verify hash if expected
255
+ asset.expectedHash?.let { expectedHash ->
256
+ val actualHash = sha256Hex(toFile)
257
+ if (actualHash != expectedHash) {
258
+ toFile.delete()
259
+ pulseLogError(TAG, "Asset hash mismatch: expected $expectedHash, got $actualHash")
260
+ return false
261
+ }
262
+ }
263
+
264
+ return true
265
+ } catch (e: Exception) {
266
+ pulseLogError(TAG, "Failed to download asset: ${e.message}")
267
+ toFile.delete()
268
+ return false
269
+ }
270
+ }
271
+
272
+ // MARK: - Asset Path Helpers
273
+
274
+ private fun assetStorePath(hash: String): File {
275
+ return File(directory, "assets/sha256/${hash.lowercase()}")
276
+ }
277
+
278
+ private fun bundleStorePath(hash: String): File {
279
+ // Bundle is stored in assets directory (same location as other assets)
280
+ return File(directory, "assets/sha256/${hash.lowercase()}")
281
+ }
282
+
283
+ // MARK: - Embedded Assets Map
284
+
285
+ private fun buildEmbeddedAssetsMap(): Map<String, String> {
286
+ val embedded = embeddedManifest ?: loadEmbeddedManifest() ?: return emptyMap()
287
+ val result = mutableMapOf<String, String>()
288
+
289
+ for (asset in embedded.assets) {
290
+ if (asset.isLaunchAsset) continue
291
+
292
+ val filename = asset.mainBundleFilename ?: continue
293
+ val assetPath = if (asset.mainBundleDir?.isNotEmpty() == true) {
294
+ "${asset.mainBundleDir}/$filename"
295
+ } else {
296
+ filename
297
+ }
298
+
299
+ // Verify asset exists in APK
300
+ try {
301
+ context.assets.open(assetPath).close()
302
+ val localUri = "asset://$assetPath"
303
+
304
+ // Store by SHA256 hash
305
+ result[asset.hash] = localUri
306
+
307
+ // Also store by path-based key for Metro compatibility
308
+ asset.key?.let { key ->
309
+ result[key] = localUri
310
+ }
311
+ } catch (e: Exception) {
312
+ // Asset doesn't exist in bundle
313
+ }
314
+ }
315
+
316
+ return result
317
+ }
318
+
319
+ private fun buildEmbeddedAssetFilesMap(): Map<String, String> {
320
+ return buildEmbeddedAssetsMap()
321
+ }
322
+
323
+ // MARK: - Embedded Manifest
324
+
325
+ private fun loadEmbeddedManifest(): EmbeddedManifest? {
326
+ return try {
327
+ val json = context.assets.open("embedded-manifest.json").bufferedReader().use { it.readText() }
328
+ EmbeddedManifest.fromJson(json)
329
+ } catch (e: Exception) {
330
+ pulseLogWarn(TAG, "No embedded manifest found: ${e.message}")
331
+ null
332
+ }
333
+ }
334
+
335
+ // MARK: - Crypto
336
+
337
+ private fun sha256Hex(file: File): String {
338
+ val digest = MessageDigest.getInstance("SHA-256")
339
+ file.inputStream().use { fis ->
340
+ val buffer = ByteArray(8192)
341
+ var bytesRead: Int
342
+ while (fis.read(buffer).also { bytesRead = it } != -1) {
343
+ digest.update(buffer, 0, bytesRead)
344
+ }
345
+ }
346
+ return digest.digest().joinToString("") { "%02x".format(it) }
347
+ }
348
+ }
349
+
350
+ // MARK: - Launcher Exception
351
+
352
+ class LauncherException(message: String) : Exception(message)
353
+
354
+ // MARK: - Embedded Manifest Model
355
+
356
+ data class EmbeddedManifest(
357
+ val updateId: String,
358
+ val runtimeVersion: String,
359
+ val commitTime: Long,
360
+ val assets: List<EmbeddedAsset>
361
+ ) {
362
+ companion object {
363
+ fun fromJson(json: String): EmbeddedManifest? {
364
+ return try {
365
+ val root = org.json.JSONObject(json)
366
+ val manifest = root.optJSONObject("manifest") ?: return null
367
+
368
+ val updateId = manifest.getString("updateId")
369
+ val runtimeVersion = manifest.getString("runtimeVersion")
370
+ val commitTime = manifest.optLong("commitTime", System.currentTimeMillis())
371
+
372
+ val assets = mutableListOf<EmbeddedAsset>()
373
+
374
+ // Parse assets array
375
+ manifest.optJSONArray("assets")?.let { assetsJson ->
376
+ for (i in 0 until assetsJson.length()) {
377
+ EmbeddedAsset.fromJson(assetsJson.getJSONObject(i))?.let { assets.add(it) }
378
+ }
379
+ }
380
+
381
+ // Parse launch asset
382
+ manifest.optJSONObject("launchAsset")?.let { launchAssetJson ->
383
+ EmbeddedAsset.fromJson(launchAssetJson, isLaunchAsset = true)?.let { assets.add(it) }
384
+ }
385
+
386
+ EmbeddedManifest(updateId, runtimeVersion, commitTime, assets)
387
+ } catch (e: Exception) {
388
+ pulseLogError("EmbeddedManifest", "Failed to parse: ${e.message}")
389
+ null
390
+ }
391
+ }
392
+ }
393
+ }
394
+
395
+ data class EmbeddedAsset(
396
+ val key: String?,
397
+ val hash: String,
398
+ val type: String?,
399
+ val mainBundleDir: String?,
400
+ val mainBundleFilename: String?,
401
+ val isLaunchAsset: Boolean = false
402
+ ) {
403
+ companion object {
404
+ fun fromJson(json: org.json.JSONObject, isLaunchAsset: Boolean = false): EmbeddedAsset? {
405
+ val hash = json.optString("hash") ?: return null
406
+ return EmbeddedAsset(
407
+ key = json.optString("key", null),
408
+ hash = hash,
409
+ type = json.optString("type", null) ?: json.optString("contentType", null),
410
+ mainBundleDir = json.optString("mainBundleDir", null),
411
+ mainBundleFilename = json.optString("mainBundleFilename", null),
412
+ isLaunchAsset = isLaunchAsset
413
+ )
414
+ }
415
+ }
416
+ }
417
+
418
+ // MARK: - Selection Policy
419
+
420
+ interface PulseSelectionPolicy {
421
+ fun selectUpdateToLaunch(updates: List<PulseUpdate>): PulseUpdate?
422
+ fun selectUpdatesToDelete(launchedUpdate: PulseUpdateInfo, allUpdates: List<PulseUpdateInfo>): List<PulseUpdateInfo>
423
+ }
424
+
425
+ data class PulseUpdateInfo(
426
+ val updateId: String,
427
+ val runtimeVersion: String,
428
+ val commitTime: Long,
429
+ val status: PulseUpdateStatus,
430
+ val successfulLaunchCount: Int = 0,
431
+ val failedLaunchCount: Int = 0,
432
+ val isEmbedded: Boolean = false,
433
+ val bundleHash: String? = null,
434
+ val scopeKey: String? = null
435
+ )
436
+
437
+ class PulseDefaultSelectionPolicy : PulseSelectionPolicy {
438
+ override fun selectUpdateToLaunch(updates: List<PulseUpdate>): PulseUpdate? {
439
+ return updates
440
+ .filter { it.status == PulseUpdateStatus.READY || it.status == PulseUpdateStatus.EMBEDDED }
441
+ .maxByOrNull { it.commitTime.time }
442
+ }
443
+
444
+ override fun selectUpdatesToDelete(launchedUpdate: PulseUpdateInfo, allUpdates: List<PulseUpdateInfo>): List<PulseUpdateInfo> {
445
+ val toDelete = mutableListOf<PulseUpdateInfo>()
446
+ var newestBackup: PulseUpdateInfo? = null
447
+
448
+ for (update in allUpdates) {
449
+ // Never delete the currently launched update
450
+ if (update.updateId == launchedUpdate.updateId) continue
451
+
452
+ // Never delete embedded updates (handled by integrity check)
453
+ if (update.isEmbedded) continue
454
+
455
+ // Mark older updates for deletion, but track the newest as potential backup
456
+ if (update.commitTime < launchedUpdate.commitTime) {
457
+ toDelete.add(update)
458
+
459
+ if (newestBackup == null || update.commitTime > newestBackup.commitTime) {
460
+ newestBackup = update
461
+ }
462
+ }
463
+ }
464
+
465
+ // Keep one backup (the newest older update) for rollback capability
466
+ newestBackup?.let { backup ->
467
+ toDelete.removeAll { it.updateId == backup.updateId }
468
+ }
469
+
470
+ return toDelete
471
+ }
472
+ }