react-native-dev-guard 0.0.1

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 (356) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +85 -0
  3. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  4. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  5. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  6. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/.cmake/api/v1/reply/cache-v2-ca87e29d866016c47643.json +1287 -0
  7. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/.cmake/api/v1/reply/cmakeFiles-v1-afc39e04c88d618b9499.json +182 -0
  8. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/.cmake/api/v1/reply/codemodel-v2-004ad46f03b4d6b2acd6.json +59 -0
  9. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/.cmake/api/v1/reply/index-2026-05-15T08-21-19-0083.json +92 -0
  10. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/.cmake/api/v1/reply/target-devguard-Debug-8c0ebbb0cdb88d164b64.json +160 -0
  11. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/.ninja_deps +0 -0
  12. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/.ninja_log +15 -0
  13. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/CMakeCache.txt +391 -0
  14. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake +77 -0
  15. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeCXXCompiler.cmake +89 -0
  16. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin +0 -0
  17. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_CXX.bin +0 -0
  18. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake +15 -0
  19. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/CMakeFiles/CMakeOutput.log +236 -0
  20. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/CMakeFiles/TargetDirectories.txt +3 -0
  21. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/CMakeFiles/cmake.check_cache +1 -0
  22. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/CMakeFiles/devguard.dir/devguard-lib.cpp.o +0 -0
  23. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/CMakeFiles/rules.ninja +74 -0
  24. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/additional_project_files.txt +0 -0
  25. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/android_gradle_build.json +40 -0
  26. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/android_gradle_build_mini.json +27 -0
  27. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/build.ninja +154 -0
  28. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/build_file_index.txt +1 -0
  29. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/cmake_install.cmake +54 -0
  30. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/compile_commands.json +12 -0
  31. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/compile_commands.json.bin +0 -0
  32. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/configure_fingerprint.bin +29 -0
  33. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/metadata_generation_command.txt +19 -0
  34. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/prefab_config.json +4 -0
  35. package/android/.cxx/Debug/4s4f1av3/arm64-v8a/symbol_folder_index.txt +1 -0
  36. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  37. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  38. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  39. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/.cmake/api/v1/reply/cache-v2-02400eb6fc4793fa6bf2.json +1287 -0
  40. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/.cmake/api/v1/reply/cmakeFiles-v1-d0fc95efa84cbe47849a.json +379 -0
  41. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/.cmake/api/v1/reply/codemodel-v2-a7a363de64e45a261589.json +59 -0
  42. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/.cmake/api/v1/reply/index-2026-05-15T08-21-21-0243.json +92 -0
  43. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/.cmake/api/v1/reply/target-devguard-Debug-53eeaa7145cf9770f3d7.json +160 -0
  44. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/.ninja_deps +0 -0
  45. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/.ninja_log +10 -0
  46. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/CMakeCache.txt +391 -0
  47. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake +77 -0
  48. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeCXXCompiler.cmake +89 -0
  49. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin +0 -0
  50. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_CXX.bin +0 -0
  51. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake +15 -0
  52. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/CMakeFiles/CMakeOutput.log +240 -0
  53. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/CMakeFiles/TargetDirectories.txt +3 -0
  54. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/CMakeFiles/cmake.check_cache +1 -0
  55. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/CMakeFiles/devguard.dir/devguard-lib.cpp.o +0 -0
  56. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/CMakeFiles/rules.ninja +74 -0
  57. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/additional_project_files.txt +0 -0
  58. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/android_gradle_build.json +40 -0
  59. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/android_gradle_build_mini.json +27 -0
  60. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/build.ninja +154 -0
  61. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/build_file_index.txt +1 -0
  62. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/cmake_install.cmake +54 -0
  63. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/compile_commands.json +12 -0
  64. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/compile_commands.json.bin +0 -0
  65. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/configure_fingerprint.bin +29 -0
  66. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/metadata_generation_command.txt +19 -0
  67. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/prefab_config.json +4 -0
  68. package/android/.cxx/Debug/4s4f1av3/armeabi-v7a/symbol_folder_index.txt +1 -0
  69. package/android/.cxx/Debug/4s4f1av3/hash_key.txt +26 -0
  70. package/android/.cxx/Debug/4s4f1av3/x86/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  71. package/android/.cxx/Debug/4s4f1av3/x86/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  72. package/android/.cxx/Debug/4s4f1av3/x86/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  73. package/android/.cxx/Debug/4s4f1av3/x86/.cmake/api/v1/reply/cache-v2-ec883f5c922c646acf2d.json +1287 -0
  74. package/android/.cxx/Debug/4s4f1av3/x86/.cmake/api/v1/reply/cmakeFiles-v1-028bf03c3b9bd0e609c0.json +379 -0
  75. package/android/.cxx/Debug/4s4f1av3/x86/.cmake/api/v1/reply/codemodel-v2-6c0215a4bb6e3b0b5223.json +59 -0
  76. package/android/.cxx/Debug/4s4f1av3/x86/.cmake/api/v1/reply/index-2026-05-15T08-21-22-0722.json +92 -0
  77. package/android/.cxx/Debug/4s4f1av3/x86/.cmake/api/v1/reply/target-devguard-Debug-2139b18dc63b630666db.json +160 -0
  78. package/android/.cxx/Debug/4s4f1av3/x86/.ninja_deps +0 -0
  79. package/android/.cxx/Debug/4s4f1av3/x86/.ninja_log +10 -0
  80. package/android/.cxx/Debug/4s4f1av3/x86/CMakeCache.txt +391 -0
  81. package/android/.cxx/Debug/4s4f1av3/x86/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake +77 -0
  82. package/android/.cxx/Debug/4s4f1av3/x86/CMakeFiles/3.18.1-g262b901/CMakeCXXCompiler.cmake +89 -0
  83. package/android/.cxx/Debug/4s4f1av3/x86/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin +0 -0
  84. package/android/.cxx/Debug/4s4f1av3/x86/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_CXX.bin +0 -0
  85. package/android/.cxx/Debug/4s4f1av3/x86/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake +15 -0
  86. package/android/.cxx/Debug/4s4f1av3/x86/CMakeFiles/CMakeOutput.log +230 -0
  87. package/android/.cxx/Debug/4s4f1av3/x86/CMakeFiles/TargetDirectories.txt +3 -0
  88. package/android/.cxx/Debug/4s4f1av3/x86/CMakeFiles/cmake.check_cache +1 -0
  89. package/android/.cxx/Debug/4s4f1av3/x86/CMakeFiles/devguard.dir/devguard-lib.cpp.o +0 -0
  90. package/android/.cxx/Debug/4s4f1av3/x86/CMakeFiles/rules.ninja +74 -0
  91. package/android/.cxx/Debug/4s4f1av3/x86/additional_project_files.txt +0 -0
  92. package/android/.cxx/Debug/4s4f1av3/x86/android_gradle_build.json +40 -0
  93. package/android/.cxx/Debug/4s4f1av3/x86/android_gradle_build_mini.json +27 -0
  94. package/android/.cxx/Debug/4s4f1av3/x86/build.ninja +154 -0
  95. package/android/.cxx/Debug/4s4f1av3/x86/build_file_index.txt +1 -0
  96. package/android/.cxx/Debug/4s4f1av3/x86/cmake_install.cmake +54 -0
  97. package/android/.cxx/Debug/4s4f1av3/x86/compile_commands.json +12 -0
  98. package/android/.cxx/Debug/4s4f1av3/x86/compile_commands.json.bin +0 -0
  99. package/android/.cxx/Debug/4s4f1av3/x86/configure_fingerprint.bin +29 -0
  100. package/android/.cxx/Debug/4s4f1av3/x86/metadata_generation_command.txt +19 -0
  101. package/android/.cxx/Debug/4s4f1av3/x86/prefab_config.json +4 -0
  102. package/android/.cxx/Debug/4s4f1av3/x86/symbol_folder_index.txt +1 -0
  103. package/android/.cxx/Debug/4s4f1av3/x86_64/.cmake/api/v1/query/client-agp/cache-v2 +0 -0
  104. package/android/.cxx/Debug/4s4f1av3/x86_64/.cmake/api/v1/query/client-agp/cmakeFiles-v1 +0 -0
  105. package/android/.cxx/Debug/4s4f1av3/x86_64/.cmake/api/v1/query/client-agp/codemodel-v2 +0 -0
  106. package/android/.cxx/Debug/4s4f1av3/x86_64/.cmake/api/v1/reply/cache-v2-7ec870c116aeb770686e.json +1287 -0
  107. package/android/.cxx/Debug/4s4f1av3/x86_64/.cmake/api/v1/reply/cmakeFiles-v1-f2e6a276d8adf420c6b9.json +379 -0
  108. package/android/.cxx/Debug/4s4f1av3/x86_64/.cmake/api/v1/reply/codemodel-v2-a4f2c2fefb1e4261b2d6.json +59 -0
  109. package/android/.cxx/Debug/4s4f1av3/x86_64/.cmake/api/v1/reply/index-2026-05-15T08-21-24-0187.json +92 -0
  110. package/android/.cxx/Debug/4s4f1av3/x86_64/.cmake/api/v1/reply/target-devguard-Debug-077cad881ac8d6864f8f.json +160 -0
  111. package/android/.cxx/Debug/4s4f1av3/x86_64/.ninja_deps +0 -0
  112. package/android/.cxx/Debug/4s4f1av3/x86_64/.ninja_log +10 -0
  113. package/android/.cxx/Debug/4s4f1av3/x86_64/CMakeCache.txt +391 -0
  114. package/android/.cxx/Debug/4s4f1av3/x86_64/CMakeFiles/3.18.1-g262b901/CMakeCCompiler.cmake +77 -0
  115. package/android/.cxx/Debug/4s4f1av3/x86_64/CMakeFiles/3.18.1-g262b901/CMakeCXXCompiler.cmake +89 -0
  116. package/android/.cxx/Debug/4s4f1av3/x86_64/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_C.bin +0 -0
  117. package/android/.cxx/Debug/4s4f1av3/x86_64/CMakeFiles/3.18.1-g262b901/CMakeDetermineCompilerABI_CXX.bin +0 -0
  118. package/android/.cxx/Debug/4s4f1av3/x86_64/CMakeFiles/3.18.1-g262b901/CMakeSystem.cmake +15 -0
  119. package/android/.cxx/Debug/4s4f1av3/x86_64/CMakeFiles/CMakeOutput.log +230 -0
  120. package/android/.cxx/Debug/4s4f1av3/x86_64/CMakeFiles/TargetDirectories.txt +3 -0
  121. package/android/.cxx/Debug/4s4f1av3/x86_64/CMakeFiles/cmake.check_cache +1 -0
  122. package/android/.cxx/Debug/4s4f1av3/x86_64/CMakeFiles/devguard.dir/devguard-lib.cpp.o +0 -0
  123. package/android/.cxx/Debug/4s4f1av3/x86_64/CMakeFiles/rules.ninja +74 -0
  124. package/android/.cxx/Debug/4s4f1av3/x86_64/additional_project_files.txt +0 -0
  125. package/android/.cxx/Debug/4s4f1av3/x86_64/android_gradle_build.json +40 -0
  126. package/android/.cxx/Debug/4s4f1av3/x86_64/android_gradle_build_mini.json +27 -0
  127. package/android/.cxx/Debug/4s4f1av3/x86_64/build.ninja +154 -0
  128. package/android/.cxx/Debug/4s4f1av3/x86_64/build_file_index.txt +1 -0
  129. package/android/.cxx/Debug/4s4f1av3/x86_64/cmake_install.cmake +54 -0
  130. package/android/.cxx/Debug/4s4f1av3/x86_64/compile_commands.json +12 -0
  131. package/android/.cxx/Debug/4s4f1av3/x86_64/compile_commands.json.bin +0 -0
  132. package/android/.cxx/Debug/4s4f1av3/x86_64/configure_fingerprint.bin +29 -0
  133. package/android/.cxx/Debug/4s4f1av3/x86_64/metadata_generation_command.txt +19 -0
  134. package/android/.cxx/Debug/4s4f1av3/x86_64/prefab_config.json +4 -0
  135. package/android/.cxx/Debug/4s4f1av3/x86_64/symbol_folder_index.txt +1 -0
  136. package/android/.cxx/tools/debug/arm64-v8a/compile_commands.json +12 -0
  137. package/android/.cxx/tools/debug/armeabi-v7a/compile_commands.json +12 -0
  138. package/android/.cxx/tools/debug/x86/compile_commands.json +12 -0
  139. package/android/.cxx/tools/debug/x86_64/compile_commands.json +12 -0
  140. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  141. package/android/.gradle/8.9/checksums/md5-checksums.bin +0 -0
  142. package/android/.gradle/8.9/checksums/sha1-checksums.bin +0 -0
  143. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  144. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  145. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  146. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  147. package/android/.gradle/8.9/gc.properties +0 -0
  148. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  149. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  150. package/android/.gradle/vcs-1/gc.properties +0 -0
  151. package/android/build/.transforms/07ab8b2284230b9b98454cb3baa5db54/results.bin +1 -0
  152. package/android/build/.transforms/07ab8b2284230b9b98454cb3baa5db54/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/devguard/BuildConfig.dex +0 -0
  153. package/android/build/.transforms/07ab8b2284230b9b98454cb3baa5db54/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/devguard/DevGuardModule.dex +0 -0
  154. package/android/build/.transforms/07ab8b2284230b9b98454cb3baa5db54/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/devguard/DevGuardPackage.dex +0 -0
  155. package/android/build/.transforms/07ab8b2284230b9b98454cb3baa5db54/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
  156. package/android/build/.transforms/ae351402e6cba75b162136aa850e1ba2/results.bin +1 -0
  157. package/android/build/.transforms/ae351402e6cba75b162136aa850e1ba2/transformed/classes/classes_dex/classes.dex +0 -0
  158. package/android/build/generated/source/buildConfig/debug/com/devguard/BuildConfig.java +10 -0
  159. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +9 -0
  160. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
  161. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
  162. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
  163. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  164. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  165. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
  166. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/arm64-v8a/build_command_devguard +4 -0
  167. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/arm64-v8a/build_model.json +187 -0
  168. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/arm64-v8a/build_stderr_devguard.txt +0 -0
  169. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/arm64-v8a/build_stdout_devguard.txt +2 -0
  170. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/arm64-v8a/generate_cxx_metadata_111_timing.txt +3 -0
  171. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/arm64-v8a/generate_cxx_metadata_1463_timing.txt +3 -0
  172. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/arm64-v8a/generate_cxx_metadata_324_timing.txt +2 -0
  173. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/arm64-v8a/generate_cxx_metadata_475_timing.txt +3 -0
  174. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/arm64-v8a/generate_cxx_metadata_622_timing.txt +2 -0
  175. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/arm64-v8a/metadata_generation_record.json +41 -0
  176. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/armeabi-v7a/build_command_devguard +4 -0
  177. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/armeabi-v7a/build_model.json +187 -0
  178. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/armeabi-v7a/build_stderr_devguard.txt +0 -0
  179. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/armeabi-v7a/build_stdout_devguard.txt +2 -0
  180. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/armeabi-v7a/generate_cxx_metadata_111_timing.txt +3 -0
  181. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/armeabi-v7a/generate_cxx_metadata_1459_timing.txt +3 -0
  182. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/armeabi-v7a/generate_cxx_metadata_324_timing.txt +2 -0
  183. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/armeabi-v7a/generate_cxx_metadata_475_timing.txt +2 -0
  184. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/armeabi-v7a/generate_cxx_metadata_622_timing.txt +3 -0
  185. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/armeabi-v7a/metadata_generation_record.json +41 -0
  186. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86/build_command_devguard +4 -0
  187. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86/build_model.json +187 -0
  188. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86/build_stderr_devguard.txt +0 -0
  189. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86/build_stdout_devguard.txt +2 -0
  190. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86/generate_cxx_metadata_111_timing.txt +2 -0
  191. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86/generate_cxx_metadata_1459_timing.txt +2 -0
  192. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86/generate_cxx_metadata_324_timing.txt +2 -0
  193. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86/generate_cxx_metadata_475_timing.txt +2 -0
  194. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86/generate_cxx_metadata_622_timing.txt +2 -0
  195. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86/metadata_generation_record.json +41 -0
  196. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86_64/build_command_devguard +4 -0
  197. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86_64/build_model.json +187 -0
  198. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86_64/build_stderr_devguard.txt +0 -0
  199. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86_64/build_stdout_devguard.txt +2 -0
  200. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86_64/generate_cxx_metadata_111_timing.txt +2 -0
  201. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86_64/generate_cxx_metadata_1459_timing.txt +3 -0
  202. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86_64/generate_cxx_metadata_324_timing.txt +2 -0
  203. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86_64/generate_cxx_metadata_475_timing.txt +2 -0
  204. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86_64/generate_cxx_metadata_622_timing.txt +2 -0
  205. package/android/build/intermediates/cxx/Debug/4s4f1av3/logs/x86_64/metadata_generation_record.json +41 -0
  206. package/android/build/intermediates/cxx/Debug/4s4f1av3/obj/arm64-v8a/libdevguard.so +0 -0
  207. package/android/build/intermediates/cxx/Debug/4s4f1av3/obj/armeabi-v7a/libdevguard.so +0 -0
  208. package/android/build/intermediates/cxx/Debug/4s4f1av3/obj/x86/libdevguard.so +0 -0
  209. package/android/build/intermediates/cxx/Debug/4s4f1av3/obj/x86_64/libdevguard.so +0 -0
  210. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -0
  211. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  212. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  213. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  214. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
  215. package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/react-native-dev-guard_debug.kotlin_module +0 -0
  216. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/devguard/BuildConfig.class +0 -0
  217. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/arm64-v8a/libdevguard.so +0 -0
  218. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/armeabi-v7a/libdevguard.so +0 -0
  219. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86/libdevguard.so +0 -0
  220. package/android/build/intermediates/library_jni/debug/copyDebugJniLibsProjectOnly/jni/x86_64/libdevguard.so +0 -0
  221. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +2 -0
  222. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +11 -0
  223. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +9 -0
  224. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/arm64-v8a/libdevguard.so +0 -0
  225. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/armeabi-v7a/libdevguard.so +0 -0
  226. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86/libdevguard.so +0 -0
  227. package/android/build/intermediates/merged_native_libs/debug/mergeDebugNativeLibs/out/lib/x86_64/libdevguard.so +0 -0
  228. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
  229. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
  230. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/react-native-dev-guard_debug.kotlin_module +0 -0
  231. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/devguard/BuildConfig.class +0 -0
  232. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/devguard/DevGuardModule.class +0 -0
  233. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/devguard/DevGuardPackage.class +0 -0
  234. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  235. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +1 -0
  236. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  237. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  238. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  239. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  240. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  241. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  242. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  243. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  244. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  245. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  246. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  247. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  248. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  249. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  250. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  251. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  252. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  253. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  254. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  255. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  256. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  257. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  258. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  259. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  260. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  261. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  262. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  263. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  264. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  265. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  266. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  267. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  268. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  269. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  270. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  271. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  272. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  273. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  274. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  275. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  276. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  277. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  278. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  279. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  280. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  281. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  282. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  283. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  284. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  285. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  286. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  287. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  288. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  289. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  290. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  291. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  292. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +2 -0
  293. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  294. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  295. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  296. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  297. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  298. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  299. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  300. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  301. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  302. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  303. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  304. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  305. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  306. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  307. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  308. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  309. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  310. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  311. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  312. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  313. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  314. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  315. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  316. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  317. package/android/build/outputs/logs/manifest-merger-debug-report.txt +21 -0
  318. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  319. package/android/build/tmp/kotlin-classes/debug/META-INF/react-native-dev-guard_debug.kotlin_module +0 -0
  320. package/android/build/tmp/kotlin-classes/debug/com/devguard/DevGuardModule.class +0 -0
  321. package/android/build/tmp/kotlin-classes/debug/com/devguard/DevGuardPackage.class +0 -0
  322. package/android/build.gradle +47 -0
  323. package/android/src/main/AndroidManifest.xml +6 -0
  324. package/android/src/main/cpp/CMakeLists.txt +25 -0
  325. package/android/src/main/cpp/devguard-lib.cpp +38 -0
  326. package/android/src/main/java/com/devguard/DevGuardModule.kt +40 -0
  327. package/android/src/main/java/com/devguard/DevGuardPackage.kt +16 -0
  328. package/cpp/devguard_core.c +239 -0
  329. package/cpp/devguard_core.h +35 -0
  330. package/ios/DevGuard.h +4 -0
  331. package/ios/DevGuard.mm +44 -0
  332. package/lib/components/ContactButton.d.ts +9 -0
  333. package/lib/components/ContactButton.js +31 -0
  334. package/lib/components/DiagnosticOverlay.d.ts +9 -0
  335. package/lib/components/DiagnosticOverlay.js +77 -0
  336. package/lib/components/LockScreen.d.ts +13 -0
  337. package/lib/components/LockScreen.js +201 -0
  338. package/lib/components/SecurityToast.d.ts +7 -0
  339. package/lib/components/SecurityToast.js +92 -0
  340. package/lib/index.d.ts +52 -0
  341. package/lib/index.js +410 -0
  342. package/lib/services/CacheService.d.ts +10 -0
  343. package/lib/services/CacheService.js +109 -0
  344. package/lib/services/DevGuardLogger.d.ts +20 -0
  345. package/lib/services/DevGuardLogger.js +88 -0
  346. package/lib/services/DeviceTokenService.d.ts +27 -0
  347. package/lib/services/DeviceTokenService.js +135 -0
  348. package/lib/services/GuardEnforcement.d.ts +19 -0
  349. package/lib/services/GuardEnforcement.js +32 -0
  350. package/lib/services/HardwareService.d.ts +19 -0
  351. package/lib/services/HardwareService.js +222 -0
  352. package/lib/services/RemoteWipeService.d.ts +20 -0
  353. package/lib/services/RemoteWipeService.js +45 -0
  354. package/lib/services/UsageLogger.d.ts +17 -0
  355. package/lib/services/UsageLogger.js +52 -0
  356. package/package.json +63 -0
package/lib/index.js ADDED
@@ -0,0 +1,410 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useDevGuard = exports.DevGuardProvider = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const react_1 = require("react");
9
+ const react_native_1 = require("react-native");
10
+ const crypto_js_1 = __importDefault(require("crypto-js"));
11
+ const pako_1 = __importDefault(require("pako"));
12
+ const HardwareService_1 = require("./services/HardwareService");
13
+ const LockScreen_1 = require("./components/LockScreen");
14
+ const SecurityToast_1 = require("./components/SecurityToast");
15
+ const UsageLogger_1 = require("./services/UsageLogger");
16
+ const DeviceTokenService_1 = require("./services/DeviceTokenService");
17
+ // @ts-ignore
18
+ const react_native_jailbreak_1 = __importDefault(require("react-native-jailbreak"));
19
+ const CacheService_1 = require("./services/CacheService");
20
+ const DiagnosticOverlay_1 = require("./components/DiagnosticOverlay");
21
+ const DevGuardLogger_1 = require("./services/DevGuardLogger");
22
+ const GuardEnforcement_1 = require("./services/GuardEnforcement");
23
+ const RemoteWipeService_1 = require("./services/RemoteWipeService");
24
+ const react_native_2 = require("react-native");
25
+ const react_native_safe_area_context_1 = require("react-native-safe-area-context");
26
+ const { DevGuard: DevGuardNative } = react_native_1.NativeModules;
27
+ const API_URL = 'https://api.devguard.uk/devguard';
28
+ const DevGuardContext = (0, react_1.createContext)(undefined);
29
+ const DevGuardProvider = ({ children, projectId, secret, apiKey, autoProtect = true, failSafe = 'open' }) => {
30
+ const authSecret = secret ?? apiKey;
31
+ const [status, setStatus] = (0, react_1.useState)(failSafe === 'open' ? 'PENDING' : 'LOCKED');
32
+ const [response, setResponse] = (0, react_1.useState)(null);
33
+ const [showWarning, setShowWarning] = (0, react_1.useState)(false);
34
+ const appState = (0, react_1.useRef)(react_native_1.AppState.currentState);
35
+ const heartbeatTimer = (0, react_1.useRef)(null);
36
+ const lastSyncTime = (0, react_1.useRef)(0);
37
+ const [showDiagnostics, setShowDiagnostics] = (0, react_1.useState)(false);
38
+ const lastLifecycleSyncTime = (0, react_1.useRef)(0);
39
+ // Latest response for long-lived closures (AppState listener, heartbeat).
40
+ const responseRef = (0, react_1.useRef)(null);
41
+ (0, react_1.useEffect)(() => {
42
+ responseRef.current = response;
43
+ }, [response]);
44
+ const shouldSync = (force = false, trigger) => {
45
+ if (force)
46
+ return true;
47
+ const current = responseRef.current;
48
+ if (trigger === 'foreground' || trigger === 'background' || trigger === 'appLaunch') {
49
+ // Determine whether this lifecycle trigger is enabled BEFORE touching the
50
+ // debounce timestamp. Otherwise a skipped trigger (e.g. background with
51
+ // onBackground:false) would stamp the debounce window and suppress the
52
+ // immediately-following foreground sync.
53
+ let enabled;
54
+ if (current?.lifecycleSync) {
55
+ if (trigger === 'foreground')
56
+ enabled = current.lifecycleSync.onForeground === true;
57
+ else if (trigger === 'background')
58
+ enabled = current.lifecycleSync.onBackground === true;
59
+ else
60
+ enabled = current.lifecycleSync.onAppLaunch === true;
61
+ }
62
+ else {
63
+ // No server lifecycle policy: sync on foreground/appLaunch, not background.
64
+ enabled = trigger !== 'background';
65
+ }
66
+ if (!enabled)
67
+ return false;
68
+ const now = Date.now();
69
+ if (now - lastLifecycleSyncTime.current < 60000) {
70
+ return false; // Debounce rapid switching (< 1 min)
71
+ }
72
+ lastLifecycleSyncTime.current = now;
73
+ return true;
74
+ }
75
+ if (current?.lifecycleSync) {
76
+ return true;
77
+ }
78
+ // Legacy sync policy fallback
79
+ const effectivePolicy = current?.syncPolicy || 'immediate';
80
+ if (effectivePolicy === 'immediate')
81
+ return true;
82
+ if (effectivePolicy === 'onDemand')
83
+ return false;
84
+ const now = Date.now();
85
+ const diff = now - lastSyncTime.current;
86
+ if (effectivePolicy === 'daily')
87
+ return diff > 86400000;
88
+ if (effectivePolicy === 'weekly')
89
+ return diff > 604800000;
90
+ return true;
91
+ };
92
+ const verify = async (force = false, trigger) => {
93
+ if (!shouldSync(force, trigger)) {
94
+ console.log('DevGuard: Sync skipped due to policy.');
95
+ return;
96
+ }
97
+ try {
98
+ const hardware = HardwareService_1.HardwareService.getInstance();
99
+ const deviceId = await hardware.getDeviceId();
100
+ // Use the ref (not the possibly-stale closed-over `response`) so advanced
101
+ // telemetry consent is honored on heartbeat/lifecycle-triggered syncs.
102
+ const metadata = await hardware.getMetadata(responseRef.current?.betaFeatures);
103
+ const timestamp = Date.now().toString();
104
+ // Align payload with Flutter: Metadata map is the core payload 'p'
105
+ const payload = JSON.stringify({
106
+ ...metadata,
107
+ projectId,
108
+ timestamp: parseInt(timestamp, 10)
109
+ });
110
+ // GZip + Base64 Tunneling (v1-gzip)
111
+ const compressed = pako_1.default.gzip(payload);
112
+ const uint8ToBase64 = (data) => {
113
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
114
+ let result = '';
115
+ let i;
116
+ const l = data.length;
117
+ for (i = 2; i < l; i += 3) {
118
+ result += chars[data[i - 2] >> 2];
119
+ result += chars[((data[i - 2] & 0x03) << 4) | (data[i - 1] >> 4)];
120
+ result += chars[((data[i - 1] & 0x0f) << 2) | (data[i] >> 6)];
121
+ result += chars[data[i] & 0x3f];
122
+ }
123
+ if (i === l + 1) {
124
+ result += chars[data[i - 2] >> 2];
125
+ result += chars[(data[i - 2] & 0x03) << 4];
126
+ result += '==';
127
+ }
128
+ else if (i === l) {
129
+ result += chars[data[i - 2] >> 2];
130
+ result += chars[((data[i - 2] & 0x03) << 4) | (data[i - 1] >> 4)];
131
+ result += chars[(data[i - 1] & 0x0f) << 2];
132
+ result += '=';
133
+ }
134
+ return result;
135
+ };
136
+ const base64Payload = uint8ToBase64(compressed);
137
+ const signature = await DevGuardNative.generateSignature(projectId, parseInt(timestamp, 10));
138
+ const fetchUrl = API_URL;
139
+ const fetchOptions = {
140
+ method: 'POST',
141
+ headers: {
142
+ 'Content-Type': 'application/json',
143
+ 'X-DevGuard-Signature': signature,
144
+ 'X-DevGuard-Timestamp': timestamp,
145
+ 'X-DevGuard-Tunnel': 'v1-gzip',
146
+ ...(authSecret ? { 'X-DevGuard-API-Key': authSecret } : {})
147
+ },
148
+ body: JSON.stringify({
149
+ projectId,
150
+ deviceId: metadata.deviceId,
151
+ deviceName: metadata.deviceName,
152
+ model: metadata.model,
153
+ os: metadata.os,
154
+ version: metadata.version,
155
+ isPhysicalDevice: metadata.isPhysicalDevice,
156
+ username: metadata.username,
157
+ email: metadata.email,
158
+ phone: metadata.phone,
159
+ customData: metadata.customData,
160
+ fingerprint: metadata.fingerprint,
161
+ deviceToken: metadata.deviceToken,
162
+ location: metadata.location,
163
+ p: base64Payload
164
+ })
165
+ };
166
+ const fetchResponse = await fetch(fetchUrl, fetchOptions);
167
+ if (!fetchResponse.ok) {
168
+ throw new Error('API_UNREACHABLE');
169
+ }
170
+ const responseText = await fetchResponse.text();
171
+ const result = JSON.parse(responseText);
172
+ // Verify Response Signature
173
+ const responseSig = fetchResponse.headers.get('X-DevGuard-Response-Signature');
174
+ if (responseSig) {
175
+ const isValid = await DevGuardNative.verifyResponse(responseText, responseSig);
176
+ if (!isValid) {
177
+ if (result.betaFeatures?.bypassSignature === true) {
178
+ console.warn('DevGuard: Response signature mismatch, but bypassSignature is ACTIVE.');
179
+ }
180
+ else {
181
+ console.error('DevGuard: Response signature mismatch! Possible tampering detected.');
182
+ setStatus('LOCKED');
183
+ return;
184
+ }
185
+ }
186
+ }
187
+ else {
188
+ console.warn('DevGuard: Missing server response signature.');
189
+ }
190
+ // Client-side enforcement (e.g. blockEmulators).
191
+ const enforced = GuardEnforcement_1.GuardEnforcement.apply(result, metadata);
192
+ const finalStatus = String(enforced.status || 'ERROR').toUpperCase();
193
+ responseRef.current = enforced; // keep ref fresh for chained/triggered syncs
194
+ setResponse(enforced);
195
+ setStatus(finalStatus);
196
+ setShowWarning(finalStatus === 'WARNING');
197
+ lastSyncTime.current = Date.now();
198
+ CacheService_1.CacheService.saveResponse(projectId, enforced);
199
+ // Handle beta features from server response
200
+ if (finalStatus === 'WARNING' && result.betaFeatures?.vibrateOnWarning === true) {
201
+ react_native_1.Vibration.vibrate();
202
+ }
203
+ const wipeNonce = result.betaFeatures?.wipeNonce;
204
+ if (typeof wipeNonce === 'number' && wipeNonce > 0) {
205
+ await executeRemoteWipe(wipeNonce);
206
+ }
207
+ // Heartbeat management
208
+ startHeartbeat(result);
209
+ // Persist server-issued device token
210
+ if (result.deviceToken) {
211
+ await DeviceTokenService_1.DeviceTokenService.getInstance().saveToken(result.deviceToken, result.betaFeatures?.secureEnclave === true);
212
+ }
213
+ // Handle remote commands from server
214
+ if (result.remoteCommand && result.remoteCommand !== 'none') {
215
+ await handleRemoteCommand(result.remoteCommand);
216
+ }
217
+ // Clear logs after successful sync
218
+ if (metadata.usageLogs && metadata.usageLogs.length > 0) {
219
+ await UsageLogger_1.UsageLogger.getInstance().clearLogs();
220
+ }
221
+ }
222
+ catch (e) {
223
+ console.error('DevGuard Verification Failed:', e);
224
+ if (failSafe === 'open' && status === 'PENDING') {
225
+ setStatus('ACTIVE');
226
+ }
227
+ else if (failSafe === 'closed') {
228
+ setStatus('LOCKED');
229
+ }
230
+ }
231
+ };
232
+ const startHeartbeat = (res) => {
233
+ if (heartbeatTimer.current)
234
+ clearInterval(heartbeatTimer.current);
235
+ let fallbackMinutes = 24 * 60;
236
+ let jitterMinutes = 15;
237
+ if (res.lifecycleSync) {
238
+ fallbackMinutes = (res.lifecycleSync.fallbackIntervalHours || 24) * 60;
239
+ jitterMinutes = res.lifecycleSync.jitterMaxMinutes || 15;
240
+ }
241
+ else {
242
+ // Legacy fallback
243
+ fallbackMinutes = res.pingInterval || 5;
244
+ jitterMinutes = 0;
245
+ }
246
+ const jitterOffset = jitterMinutes > 0 ? (Date.now() % (jitterMinutes * 60 * 1000)) : 0;
247
+ const intervalMs = (fallbackMinutes * 60 * 1000) + jitterOffset;
248
+ heartbeatTimer.current = setInterval(() => {
249
+ verify(false, 'heartbeat');
250
+ }, Math.max(intervalMs, 60000));
251
+ };
252
+ const handleRemoteCommand = async (command) => {
253
+ console.log(`DevGuard: Executing remote command: ${command}`);
254
+ if (command === 'wipeCache') {
255
+ await CacheService_1.CacheService.clear();
256
+ }
257
+ else if (command === 'syncLogs') {
258
+ await verify(true);
259
+ }
260
+ else if (command === 'clearLogs') {
261
+ await UsageLogger_1.UsageLogger.getInstance().clearLogs();
262
+ }
263
+ else if (command === 'revokeToken') {
264
+ await DeviceTokenService_1.DeviceTokenService.getInstance().clearToken();
265
+ }
266
+ };
267
+ /** Nonce-based remote wipe — runs once per server command. */
268
+ const executeRemoteWipe = async (nonce) => {
269
+ const lastHandled = await CacheService_1.CacheService.getLastWipeNonce(projectId);
270
+ if (lastHandled !== null && nonce <= lastHandled)
271
+ return;
272
+ await RemoteWipeService_1.RemoteWipeService.execute(projectId);
273
+ await CacheService_1.CacheService.setLastWipeNonce(projectId, nonce);
274
+ console.warn(`DevGuard: Hardened Remote Wipe triggered (Nonce: ${nonce}).`);
275
+ };
276
+ const unlock = async (key) => {
277
+ try {
278
+ // LicenseKeyService logic: SHA256 the key
279
+ const hashedKey = crypto_js_1.default.SHA256(key).toString();
280
+ const timestamp = Date.now().toString();
281
+ const signature = await DevGuardNative.generateSignature(projectId, parseInt(timestamp, 10));
282
+ const payload = JSON.stringify({ projectId, providedKey: hashedKey });
283
+ const fetchResponse = await fetch(`${API_URL}/unlock`, {
284
+ method: 'POST',
285
+ headers: {
286
+ 'Content-Type': 'application/json',
287
+ 'X-DevGuard-Signature': signature,
288
+ 'X-DevGuard-Timestamp': timestamp,
289
+ ...(authSecret ? { 'X-DevGuard-API-Key': authSecret } : {})
290
+ },
291
+ body: payload
292
+ });
293
+ if (fetchResponse.ok) {
294
+ const text = await fetchResponse.text();
295
+ if (text === 'Unlocked') {
296
+ await verify();
297
+ return true;
298
+ }
299
+ }
300
+ return false;
301
+ }
302
+ catch (e) {
303
+ console.error('DevGuard Unlock Failed:', e);
304
+ return false;
305
+ }
306
+ };
307
+ const setDeviceUser = async (username, email, phone, customData) => {
308
+ await HardwareService_1.HardwareService.getInstance().setDeviceUser(username, email, phone, customData);
309
+ if (!username && !email && !phone && !customData)
310
+ return;
311
+ await verify(true);
312
+ };
313
+ (0, react_1.useEffect)(() => {
314
+ // Initial fallback if failSafe is closed
315
+ if (failSafe === 'closed') {
316
+ setResponse({
317
+ status: 'LOCKED',
318
+ message: 'Connecting to security server...',
319
+ });
320
+ }
321
+ // Run heavy operations safely in the background JS event loop
322
+ setTimeout(async () => {
323
+ try {
324
+ await DevGuardLogger_1.DevGuardLogger.init();
325
+ const isJailbroken = await react_native_jailbreak_1.default.check();
326
+ if (isJailbroken) {
327
+ console.warn('DevGuard Security Alert: Compromised device detected.');
328
+ setResponse({
329
+ status: 'LOCKED',
330
+ title: 'Security Alert',
331
+ message: 'This application cannot run on jailbroken or rooted devices for security reasons.',
332
+ });
333
+ setStatus('LOCKED');
334
+ return;
335
+ }
336
+ const cached = await CacheService_1.CacheService.getResponse(projectId);
337
+ if (cached) {
338
+ responseRef.current = cached; // ensure the immediate appLaunch sync honors cached consent
339
+ setResponse(cached);
340
+ setStatus(cached.status || 'ACTIVE');
341
+ setShowWarning(cached.status === 'WARNING');
342
+ }
343
+ else {
344
+ // Fallback if no cache
345
+ setResponse({
346
+ status: failSafe === 'open' ? 'ACTIVE' : 'LOCKED',
347
+ message: failSafe === 'open' ? '' : 'Connecting to security server...',
348
+ });
349
+ setStatus(failSafe === 'open' ? 'PENDING' : 'LOCKED');
350
+ }
351
+ UsageLogger_1.UsageLogger.getInstance().logEvent('app_open');
352
+ verify(false, 'appLaunch'); // Respects portal rules
353
+ }
354
+ catch (e) {
355
+ console.error('DevGuard Initialization failed', e);
356
+ if (failSafe === 'closed') {
357
+ setStatus('LOCKED');
358
+ }
359
+ }
360
+ }, 500); // 500ms delay to ensure UI renders smoothly without JS thread blocking
361
+ const subscription = react_native_1.AppState.addEventListener('change', (nextAppState) => {
362
+ if (appState.current.match(/inactive|background/) && nextAppState === 'active') {
363
+ verify(false, 'foreground'); // Re-verify on foreground
364
+ }
365
+ else if (appState.current === 'active' && nextAppState.match(/inactive|background/)) {
366
+ verify(false, 'background'); // Re-verify on background
367
+ }
368
+ appState.current = nextAppState;
369
+ });
370
+ return () => {
371
+ subscription.remove();
372
+ if (heartbeatTimer.current)
373
+ clearInterval(heartbeatTimer.current);
374
+ };
375
+ }, []);
376
+ const isLocked = status === 'LOCKED' || status === 'EXPIRED';
377
+ const showBugIcon = response?.betaFeatures?.showDiagnosticLogs === true;
378
+ return ((0, jsx_runtime_1.jsxs)(DevGuardContext.Provider, { value: { status, verify, unlock, setDeviceUser, isLocked, response }, children: [showWarning && status === 'WARNING' && ((0, jsx_runtime_1.jsx)(SecurityToast_1.SecurityToast, { title: response?.title || 'Security Warning', message: response?.message })), autoProtect && isLocked ? ((0, jsx_runtime_1.jsx)(LockScreen_1.LockScreen, { status: status, title: response?.title, message: response?.message, contactEmail: response?.contactEmail, contactPhone: response?.contactPhone, contactWhatsapp: response?.contactWhatsapp, allowUnlock: response?.allowUnlock, onUnlock: unlock })) : ((0, jsx_runtime_1.jsxs)(react_native_2.View, { style: { flex: 1 }, children: [children, showBugIcon && ((0, jsx_runtime_1.jsx)(react_native_safe_area_context_1.SafeAreaInsetsContext.Consumer, { children: (insets) => {
379
+ const safeInsets = insets || { top: 0, bottom: 0, right: 0, left: 0 };
380
+ return ((0, jsx_runtime_1.jsx)(react_native_2.TouchableOpacity, { style: [
381
+ styles.bugIcon,
382
+ { bottom: safeInsets.bottom > 0 ? safeInsets.bottom + 16 : 32 }
383
+ ], onPress: () => setShowDiagnostics(true), children: (0, jsx_runtime_1.jsx)(react_native_2.Text, { style: { fontSize: 24 }, children: "\uD83D\uDC1B" }) }));
384
+ } })), (0, jsx_runtime_1.jsx)(DiagnosticOverlay_1.DiagnosticOverlay, { visible: showDiagnostics, onClose: () => setShowDiagnostics(false), response: response, projectId: projectId })] }))] }));
385
+ };
386
+ exports.DevGuardProvider = DevGuardProvider;
387
+ const styles = react_native_2.StyleSheet.create({
388
+ bugIcon: {
389
+ position: 'absolute',
390
+ right: 20,
391
+ backgroundColor: 'rgba(255, 179, 0, 0.8)',
392
+ width: 48,
393
+ height: 48,
394
+ borderRadius: 24,
395
+ justifyContent: 'center',
396
+ alignItems: 'center',
397
+ shadowColor: '#000',
398
+ shadowOffset: { width: 0, height: 2 },
399
+ shadowOpacity: 0.3,
400
+ shadowRadius: 4,
401
+ elevation: 5,
402
+ }
403
+ });
404
+ const useDevGuard = () => {
405
+ const context = (0, react_1.useContext)(DevGuardContext);
406
+ if (!context)
407
+ throw new Error('useDevGuard must be used within a DevGuardProvider');
408
+ return context;
409
+ };
410
+ exports.useDevGuard = useDevGuard;
@@ -0,0 +1,10 @@
1
+ export declare class CacheService {
2
+ private static readonly SERVICE_NAME;
3
+ private static readonly WIPE_SERVICE;
4
+ static saveResponse(projectId: string, response: any): Promise<void>;
5
+ static getResponse(projectId: string): Promise<any | null>;
6
+ static clear(): Promise<void>;
7
+ /** Last remote-wipe nonce executed on this device, or null. */
8
+ static getLastWipeNonce(projectId: string): Promise<number | null>;
9
+ static setLastWipeNonce(projectId: string, nonce: number): Promise<void>;
10
+ }
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.CacheService = void 0;
40
+ const Keychain = __importStar(require("react-native-keychain"));
41
+ const crypto_js_1 = __importDefault(require("crypto-js"));
42
+ class CacheService {
43
+ static SERVICE_NAME = 'devguard.cache.service';
44
+ static WIPE_SERVICE = 'devguard.wipe.service';
45
+ static async saveResponse(projectId, response) {
46
+ try {
47
+ const dataString = JSON.stringify(response);
48
+ // Use projectId as the encryption key for the payload
49
+ const encrypted = crypto_js_1.default.AES.encrypt(dataString, projectId).toString();
50
+ // Store in secure keychain
51
+ await Keychain.setGenericPassword(`devguard_${projectId}`, encrypted, { service: this.SERVICE_NAME });
52
+ }
53
+ catch (e) {
54
+ console.warn('DevGuard Cache: Failed to save response securely', e);
55
+ }
56
+ }
57
+ static async getResponse(projectId) {
58
+ try {
59
+ const credentials = await Keychain.getGenericPassword({ service: this.SERVICE_NAME });
60
+ if (credentials && credentials.username === `devguard_${projectId}`) {
61
+ const encrypted = credentials.password;
62
+ // Decrypt using projectId
63
+ const bytes = crypto_js_1.default.AES.decrypt(encrypted, projectId);
64
+ const decrypted = bytes.toString(crypto_js_1.default.enc.Utf8);
65
+ if (decrypted) {
66
+ return JSON.parse(decrypted);
67
+ }
68
+ }
69
+ return null;
70
+ }
71
+ catch (e) {
72
+ console.warn('DevGuard Cache: Failed to retrieve secure response', e);
73
+ return null;
74
+ }
75
+ }
76
+ static async clear() {
77
+ try {
78
+ await Keychain.resetGenericPassword({ service: this.SERVICE_NAME });
79
+ }
80
+ catch (e) {
81
+ console.warn('DevGuard Cache: Failed to clear cache', e);
82
+ }
83
+ }
84
+ /** Last remote-wipe nonce executed on this device, or null. */
85
+ static async getLastWipeNonce(projectId) {
86
+ try {
87
+ const credentials = await Keychain.getGenericPassword({ service: this.WIPE_SERVICE });
88
+ if (credentials && credentials.username === `wipe_${projectId}`) {
89
+ const parsed = parseInt(credentials.password, 10);
90
+ return isNaN(parsed) ? null : parsed;
91
+ }
92
+ return null;
93
+ }
94
+ catch (e) {
95
+ return null;
96
+ }
97
+ }
98
+ static async setLastWipeNonce(projectId, nonce) {
99
+ try {
100
+ await Keychain.setGenericPassword(`wipe_${projectId}`, String(nonce), {
101
+ service: this.WIPE_SERVICE,
102
+ });
103
+ }
104
+ catch (e) {
105
+ console.warn('DevGuard Cache: Failed to persist wipe nonce', e);
106
+ }
107
+ }
108
+ }
109
+ exports.CacheService = CacheService;
@@ -0,0 +1,20 @@
1
+ import { CrashLogModel } from 'react-native-vault-logger';
2
+ export declare class DevGuardLogger {
3
+ static showConsoleLogs: boolean;
4
+ private static initialized;
5
+ private static infoLogs;
6
+ static init(): Promise<void>;
7
+ static enableConsoleLogs(): void;
8
+ static info(message: string, data?: Record<string, any>): void;
9
+ static warning(message: string, data?: Record<string, any>): void;
10
+ static error(error: any, context?: string): void;
11
+ static debug(message: string, data?: Record<string, any>): void;
12
+ private static _log;
13
+ static getErrorLogs(): CrashLogModel[];
14
+ static getInfoLogs(): CrashLogModel[];
15
+ static clearErrors(): Promise<void>;
16
+ static clearInfo(): Promise<void>;
17
+ static clearAll(): Promise<void>;
18
+ static exportErrors(): Promise<string>;
19
+ static getErrorCount(): number;
20
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DevGuardLogger = void 0;
4
+ const react_native_vault_logger_1 = require("react-native-vault-logger");
5
+ class DevGuardLogger {
6
+ static showConsoleLogs = false;
7
+ static initialized = false;
8
+ static infoLogs = [];
9
+ static async init() {
10
+ if (this.initialized)
11
+ return;
12
+ try {
13
+ await react_native_vault_logger_1.CrashLogService.init({
14
+ encryptionKey: 'DevGuard_Secure_Vault_Key_32_Ch!',
15
+ encryptionIV: 'DevGuard_IV_16_C',
16
+ maxLogCount: 1000,
17
+ });
18
+ this.initialized = true;
19
+ }
20
+ catch (e) {
21
+ console.warn('DevGuardLogger: Initialization failed', e);
22
+ }
23
+ }
24
+ static enableConsoleLogs() {
25
+ this.showConsoleLogs = true;
26
+ console.log('[DevGuard] [DEBUG] Console logs enabled via Diagnostic Authorization.');
27
+ }
28
+ static info(message, data) {
29
+ this._log(message, 'INFO', data);
30
+ }
31
+ static warning(message, data) {
32
+ this._log(message, 'WARNING', data);
33
+ react_native_vault_logger_1.CrashLogService.logError(new Error(message), { context: 'WARNING' });
34
+ }
35
+ static error(error, context) {
36
+ const message = error?.message || String(error);
37
+ this._log(message, 'ERROR', { context });
38
+ react_native_vault_logger_1.CrashLogService.logError(error, { context: context || 'ERROR' });
39
+ }
40
+ static debug(message, data) {
41
+ this._log(message, 'DEBUG', data);
42
+ }
43
+ static _log(message, level, data) {
44
+ const formatted = `[DevGuard] [${level}] ${message} ${data ? JSON.stringify(data) : ''}`;
45
+ if (this.showConsoleLogs) {
46
+ console.log(formatted);
47
+ }
48
+ if (!this.initialized)
49
+ return;
50
+ if (level === 'INFO' || level === 'DEBUG') {
51
+ const log = {
52
+ timestamp: new Date().toISOString(),
53
+ error: message,
54
+ stackTrace: 'N/A',
55
+ context: level,
56
+ deviceInfo: '',
57
+ appVersion: '',
58
+ };
59
+ this.infoLogs.unshift(log); // newest first
60
+ if (this.infoLogs.length > 1000) {
61
+ this.infoLogs.pop();
62
+ }
63
+ }
64
+ }
65
+ static getErrorLogs() {
66
+ return react_native_vault_logger_1.CrashLogService.getLogs();
67
+ }
68
+ static getInfoLogs() {
69
+ return [...this.infoLogs];
70
+ }
71
+ static async clearErrors() {
72
+ await react_native_vault_logger_1.CrashLogService.clearLogs();
73
+ }
74
+ static async clearInfo() {
75
+ this.infoLogs = [];
76
+ }
77
+ static async clearAll() {
78
+ await this.clearErrors();
79
+ await this.clearInfo();
80
+ }
81
+ static async exportErrors() {
82
+ return await react_native_vault_logger_1.CrashLogService.exportEncryptedLogs();
83
+ }
84
+ static getErrorCount() {
85
+ return react_native_vault_logger_1.CrashLogService.getLogs().length;
86
+ }
87
+ }
88
+ exports.DevGuardLogger = DevGuardLogger;
@@ -0,0 +1,27 @@
1
+ export declare class DeviceTokenService {
2
+ private static instance;
3
+ private cachedToken;
4
+ private sessionKey;
5
+ private fingerprint;
6
+ private constructor();
7
+ static getInstance(): DeviceTokenService;
8
+ /**
9
+ * Retrieves the device registration token.
10
+ * Reads from Keychain/Keystore if available, otherwise from in-memory cache.
11
+ */
12
+ getToken(): Promise<string | null>;
13
+ /** Persists a registration token using Keychain/Keystore when available. */
14
+ saveToken(token: string, useEnclave?: boolean): Promise<void>;
15
+ /**
16
+ * Removes the registration token. Only called on explicit admin revocation.
17
+ */
18
+ clearToken(): Promise<void>;
19
+ /**
20
+ * Generates a device fingerprint from hardware identifiers.
21
+ * This fingerprint persists even if the token is wiped, allowing
22
+ * the server to detect re-registrations from the same hardware.
23
+ */
24
+ static generateFingerprint(deviceId: string, model: string, os: string): string;
25
+ saveFingerprint(fingerprint: string): Promise<void>;
26
+ getFingerprint(): Promise<string | null>;
27
+ }