@salve-software/salvetron-react-native 1.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 (285) hide show
  1. package/LICENSE +21 -0
  2. package/NitroRnTuiSdk.podspec +31 -0
  3. package/README.md +90 -0
  4. package/android/CMakeLists.txt +32 -0
  5. package/android/build.gradle +148 -0
  6. package/android/fix-prefab.gradle +51 -0
  7. package/android/gradle.properties +5 -0
  8. package/android/src/main/AndroidManifest.xml +2 -0
  9. package/android/src/main/cpp/cpp-adapter.cpp +9 -0
  10. package/android/src/main/java/com/margelo/nitro/rntuisdk/HybridRnTuiSdk.kt +235 -0
  11. package/android/src/main/java/com/margelo/nitro/rntuisdk/PerformanceMonitor.kt +260 -0
  12. package/android/src/main/java/com/margelo/nitro/rntuisdk/RnTuiSdkPackage.kt +18 -0
  13. package/ios/Bridge.h +8 -0
  14. package/ios/HybridRnTuiSdk.swift +245 -0
  15. package/ios/PerformanceMonitor.swift +223 -0
  16. package/lib/commonjs/index.js +17 -0
  17. package/lib/commonjs/index.js.map +1 -0
  18. package/lib/commonjs/library/client/constants.js +33 -0
  19. package/lib/commonjs/library/client/constants.js.map +1 -0
  20. package/lib/commonjs/library/client/index.js +28 -0
  21. package/lib/commonjs/library/client/index.js.map +1 -0
  22. package/lib/commonjs/library/client/salvetron-client.js +363 -0
  23. package/lib/commonjs/library/client/salvetron-client.js.map +1 -0
  24. package/lib/commonjs/library/device/device-handler.js +80 -0
  25. package/lib/commonjs/library/device/device-handler.js.map +1 -0
  26. package/lib/commonjs/library/device/index.js +9 -0
  27. package/lib/commonjs/library/device/index.js.map +1 -0
  28. package/lib/commonjs/library/device/types.js +2 -0
  29. package/lib/commonjs/library/device/types.js.map +1 -0
  30. package/lib/commonjs/library/device/utils/generate-uuid.js +14 -0
  31. package/lib/commonjs/library/device/utils/generate-uuid.js.map +1 -0
  32. package/lib/commonjs/library/index.js +136 -0
  33. package/lib/commonjs/library/index.js.map +1 -0
  34. package/lib/commonjs/library/interceptors/index.js +11 -0
  35. package/lib/commonjs/library/interceptors/index.js.map +1 -0
  36. package/lib/commonjs/library/interceptors/js-console.js +88 -0
  37. package/lib/commonjs/library/interceptors/js-console.js.map +1 -0
  38. package/lib/commonjs/library/interceptors/xhr.js +74 -0
  39. package/lib/commonjs/library/interceptors/xhr.js.map +1 -0
  40. package/lib/commonjs/library/network-handler/index.js +17 -0
  41. package/lib/commonjs/library/network-handler/index.js.map +1 -0
  42. package/lib/commonjs/library/network-handler/network-handler.js +103 -0
  43. package/lib/commonjs/library/network-handler/network-handler.js.map +1 -0
  44. package/lib/commonjs/library/network-handler/types.js +6 -0
  45. package/lib/commonjs/library/network-handler/types.js.map +1 -0
  46. package/lib/commonjs/library/network-handler/utils/generate-request-id.js +13 -0
  47. package/lib/commonjs/library/network-handler/utils/generate-request-id.js.map +1 -0
  48. package/lib/commonjs/library/network-handler/utils/index.js +41 -0
  49. package/lib/commonjs/library/network-handler/utils/index.js.map +1 -0
  50. package/lib/commonjs/library/network-handler/utils/parse-response-headers.js +26 -0
  51. package/lib/commonjs/library/network-handler/utils/parse-response-headers.js.map +1 -0
  52. package/lib/commonjs/library/network-handler/utils/read-blob-as-text.js +18 -0
  53. package/lib/commonjs/library/network-handler/utils/read-blob-as-text.js.map +1 -0
  54. package/lib/commonjs/library/network-handler/utils/response-to-string.js +35 -0
  55. package/lib/commonjs/library/network-handler/utils/response-to-string.js.map +1 -0
  56. package/lib/commonjs/library/network-handler/utils/should-ignore-url.js +13 -0
  57. package/lib/commonjs/library/network-handler/utils/should-ignore-url.js.map +1 -0
  58. package/lib/commonjs/library/performance-handler/index.js +13 -0
  59. package/lib/commonjs/library/performance-handler/index.js.map +1 -0
  60. package/lib/commonjs/library/performance-handler/performance-handler.js +94 -0
  61. package/lib/commonjs/library/performance-handler/performance-handler.js.map +1 -0
  62. package/lib/commonjs/library/performance-handler/types.js +6 -0
  63. package/lib/commonjs/library/performance-handler/types.js.map +1 -0
  64. package/lib/commonjs/library/project/index.js +15 -0
  65. package/lib/commonjs/library/project/index.js.map +1 -0
  66. package/lib/commonjs/library/project/project-handler.js +31 -0
  67. package/lib/commonjs/library/project/project-handler.js.map +1 -0
  68. package/lib/commonjs/library/types.js +2 -0
  69. package/lib/commonjs/library/types.js.map +1 -0
  70. package/lib/commonjs/package.json +1 -0
  71. package/lib/commonjs/specs/rn-tui-sdk.nitro.js +6 -0
  72. package/lib/commonjs/specs/rn-tui-sdk.nitro.js.map +1 -0
  73. package/lib/module/index.js +6 -0
  74. package/lib/module/index.js.map +1 -0
  75. package/lib/module/library/client/constants.js +29 -0
  76. package/lib/module/library/client/constants.js.map +1 -0
  77. package/lib/module/library/client/index.js +6 -0
  78. package/lib/module/library/client/index.js.map +1 -0
  79. package/lib/module/library/client/salvetron-client.js +359 -0
  80. package/lib/module/library/client/salvetron-client.js.map +1 -0
  81. package/lib/module/library/device/device-handler.js +75 -0
  82. package/lib/module/library/device/device-handler.js.map +1 -0
  83. package/lib/module/library/device/index.js +5 -0
  84. package/lib/module/library/device/index.js.map +1 -0
  85. package/lib/module/library/device/types.js +2 -0
  86. package/lib/module/library/device/types.js.map +1 -0
  87. package/lib/module/library/device/utils/generate-uuid.js +10 -0
  88. package/lib/module/library/device/utils/generate-uuid.js.map +1 -0
  89. package/lib/module/library/index.js +135 -0
  90. package/lib/module/library/index.js.map +1 -0
  91. package/lib/module/library/interceptors/index.js +7 -0
  92. package/lib/module/library/interceptors/index.js.map +1 -0
  93. package/lib/module/library/interceptors/js-console.js +83 -0
  94. package/lib/module/library/interceptors/js-console.js.map +1 -0
  95. package/lib/module/library/interceptors/xhr.js +69 -0
  96. package/lib/module/library/interceptors/xhr.js.map +1 -0
  97. package/lib/module/library/network-handler/index.js +4 -0
  98. package/lib/module/library/network-handler/index.js.map +1 -0
  99. package/lib/module/library/network-handler/network-handler.js +98 -0
  100. package/lib/module/library/network-handler/network-handler.js.map +1 -0
  101. package/lib/module/library/network-handler/types.js +4 -0
  102. package/lib/module/library/network-handler/types.js.map +1 -0
  103. package/lib/module/library/network-handler/utils/generate-request-id.js +9 -0
  104. package/lib/module/library/network-handler/utils/generate-request-id.js.map +1 -0
  105. package/lib/module/library/network-handler/utils/index.js +8 -0
  106. package/lib/module/library/network-handler/utils/index.js.map +1 -0
  107. package/lib/module/library/network-handler/utils/parse-response-headers.js +22 -0
  108. package/lib/module/library/network-handler/utils/parse-response-headers.js.map +1 -0
  109. package/lib/module/library/network-handler/utils/read-blob-as-text.js +14 -0
  110. package/lib/module/library/network-handler/utils/read-blob-as-text.js.map +1 -0
  111. package/lib/module/library/network-handler/utils/response-to-string.js +31 -0
  112. package/lib/module/library/network-handler/utils/response-to-string.js.map +1 -0
  113. package/lib/module/library/network-handler/utils/should-ignore-url.js +9 -0
  114. package/lib/module/library/network-handler/utils/should-ignore-url.js.map +1 -0
  115. package/lib/module/library/performance-handler/index.js +4 -0
  116. package/lib/module/library/performance-handler/index.js.map +1 -0
  117. package/lib/module/library/performance-handler/performance-handler.js +89 -0
  118. package/lib/module/library/performance-handler/performance-handler.js.map +1 -0
  119. package/lib/module/library/performance-handler/types.js +4 -0
  120. package/lib/module/library/performance-handler/types.js.map +1 -0
  121. package/lib/module/library/project/index.js +6 -0
  122. package/lib/module/library/project/index.js.map +1 -0
  123. package/lib/module/library/project/project-handler.js +26 -0
  124. package/lib/module/library/project/project-handler.js.map +1 -0
  125. package/lib/module/library/types.js +2 -0
  126. package/lib/module/library/types.js.map +1 -0
  127. package/lib/module/specs/rn-tui-sdk.nitro.js +4 -0
  128. package/lib/module/specs/rn-tui-sdk.nitro.js.map +1 -0
  129. package/lib/typescript/src/index.d.ts +4 -0
  130. package/lib/typescript/src/index.d.ts.map +1 -0
  131. package/lib/typescript/src/library/client/constants.d.ts +23 -0
  132. package/lib/typescript/src/library/client/constants.d.ts.map +1 -0
  133. package/lib/typescript/src/library/client/index.d.ts +4 -0
  134. package/lib/typescript/src/library/client/index.d.ts.map +1 -0
  135. package/lib/typescript/src/library/client/salvetron-client.d.ts +73 -0
  136. package/lib/typescript/src/library/client/salvetron-client.d.ts.map +1 -0
  137. package/lib/typescript/src/library/device/__tests__/device-handler.test.d.ts +2 -0
  138. package/lib/typescript/src/library/device/__tests__/device-handler.test.d.ts.map +1 -0
  139. package/lib/typescript/src/library/device/device-handler.d.ts +11 -0
  140. package/lib/typescript/src/library/device/device-handler.d.ts.map +1 -0
  141. package/lib/typescript/src/library/device/index.d.ts +3 -0
  142. package/lib/typescript/src/library/device/index.d.ts.map +1 -0
  143. package/lib/typescript/src/library/device/types.d.ts +8 -0
  144. package/lib/typescript/src/library/device/types.d.ts.map +1 -0
  145. package/lib/typescript/src/library/device/utils/generate-uuid.d.ts +2 -0
  146. package/lib/typescript/src/library/device/utils/generate-uuid.d.ts.map +1 -0
  147. package/lib/typescript/src/library/index.d.ts +106 -0
  148. package/lib/typescript/src/library/index.d.ts.map +1 -0
  149. package/lib/typescript/src/library/interceptors/__tests__/js-console.test.d.ts +2 -0
  150. package/lib/typescript/src/library/interceptors/__tests__/js-console.test.d.ts.map +1 -0
  151. package/lib/typescript/src/library/interceptors/__tests__/xhr.test.d.ts +2 -0
  152. package/lib/typescript/src/library/interceptors/__tests__/xhr.test.d.ts.map +1 -0
  153. package/lib/typescript/src/library/interceptors/index.d.ts +5 -0
  154. package/lib/typescript/src/library/interceptors/index.d.ts.map +1 -0
  155. package/lib/typescript/src/library/interceptors/js-console.d.ts +17 -0
  156. package/lib/typescript/src/library/interceptors/js-console.d.ts.map +1 -0
  157. package/lib/typescript/src/library/interceptors/xhr.d.ts +14 -0
  158. package/lib/typescript/src/library/interceptors/xhr.d.ts.map +1 -0
  159. package/lib/typescript/src/library/network-handler/__tests__/network-handler.test.d.ts +2 -0
  160. package/lib/typescript/src/library/network-handler/__tests__/network-handler.test.d.ts.map +1 -0
  161. package/lib/typescript/src/library/network-handler/index.d.ts +2 -0
  162. package/lib/typescript/src/library/network-handler/index.d.ts.map +1 -0
  163. package/lib/typescript/src/library/network-handler/network-handler.d.ts +19 -0
  164. package/lib/typescript/src/library/network-handler/network-handler.d.ts.map +1 -0
  165. package/lib/typescript/src/library/network-handler/types.d.ts +6 -0
  166. package/lib/typescript/src/library/network-handler/types.d.ts.map +1 -0
  167. package/lib/typescript/src/library/network-handler/utils/__tests__/generate-request-id.test.d.ts +2 -0
  168. package/lib/typescript/src/library/network-handler/utils/__tests__/generate-request-id.test.d.ts.map +1 -0
  169. package/lib/typescript/src/library/network-handler/utils/__tests__/parse-response-headers.test.d.ts +2 -0
  170. package/lib/typescript/src/library/network-handler/utils/__tests__/parse-response-headers.test.d.ts.map +1 -0
  171. package/lib/typescript/src/library/network-handler/utils/__tests__/read-blob-as-text.test.d.ts +2 -0
  172. package/lib/typescript/src/library/network-handler/utils/__tests__/read-blob-as-text.test.d.ts.map +1 -0
  173. package/lib/typescript/src/library/network-handler/utils/__tests__/response-to-string.test.d.ts +2 -0
  174. package/lib/typescript/src/library/network-handler/utils/__tests__/response-to-string.test.d.ts.map +1 -0
  175. package/lib/typescript/src/library/network-handler/utils/__tests__/should-ignore-url.test.d.ts +2 -0
  176. package/lib/typescript/src/library/network-handler/utils/__tests__/should-ignore-url.test.d.ts.map +1 -0
  177. package/lib/typescript/src/library/network-handler/utils/generate-request-id.d.ts +5 -0
  178. package/lib/typescript/src/library/network-handler/utils/generate-request-id.d.ts.map +1 -0
  179. package/lib/typescript/src/library/network-handler/utils/index.d.ts +6 -0
  180. package/lib/typescript/src/library/network-handler/utils/index.d.ts.map +1 -0
  181. package/lib/typescript/src/library/network-handler/utils/parse-response-headers.d.ts +5 -0
  182. package/lib/typescript/src/library/network-handler/utils/parse-response-headers.d.ts.map +1 -0
  183. package/lib/typescript/src/library/network-handler/utils/read-blob-as-text.d.ts +5 -0
  184. package/lib/typescript/src/library/network-handler/utils/read-blob-as-text.d.ts.map +1 -0
  185. package/lib/typescript/src/library/network-handler/utils/response-to-string.d.ts +5 -0
  186. package/lib/typescript/src/library/network-handler/utils/response-to-string.d.ts.map +1 -0
  187. package/lib/typescript/src/library/network-handler/utils/should-ignore-url.d.ts +5 -0
  188. package/lib/typescript/src/library/network-handler/utils/should-ignore-url.d.ts.map +1 -0
  189. package/lib/typescript/src/library/performance-handler/index.d.ts +3 -0
  190. package/lib/typescript/src/library/performance-handler/index.d.ts.map +1 -0
  191. package/lib/typescript/src/library/performance-handler/performance-handler.d.ts +27 -0
  192. package/lib/typescript/src/library/performance-handler/performance-handler.d.ts.map +1 -0
  193. package/lib/typescript/src/library/performance-handler/types.d.ts +20 -0
  194. package/lib/typescript/src/library/performance-handler/types.d.ts.map +1 -0
  195. package/lib/typescript/src/library/project/index.d.ts +4 -0
  196. package/lib/typescript/src/library/project/index.d.ts.map +1 -0
  197. package/lib/typescript/src/library/project/project-handler.d.ts +7 -0
  198. package/lib/typescript/src/library/project/project-handler.d.ts.map +1 -0
  199. package/lib/typescript/src/library/types.d.ts +39 -0
  200. package/lib/typescript/src/library/types.d.ts.map +1 -0
  201. package/lib/typescript/src/specs/rn-tui-sdk.nitro.d.ts +100 -0
  202. package/lib/typescript/src/specs/rn-tui-sdk.nitro.d.ts.map +1 -0
  203. package/nitro.json +24 -0
  204. package/nitrogen/generated/.gitattributes +1 -0
  205. package/nitrogen/generated/android/NitroRnTuiSdk+autolinking.cmake +81 -0
  206. package/nitrogen/generated/android/NitroRnTuiSdk+autolinking.gradle +27 -0
  207. package/nitrogen/generated/android/NitroRnTuiSdkOnLoad.cpp +58 -0
  208. package/nitrogen/generated/android/NitroRnTuiSdkOnLoad.hpp +34 -0
  209. package/nitrogen/generated/android/c++/JDeviceInfoResult.hpp +69 -0
  210. package/nitrogen/generated/android/c++/JFunc_void_NativeLogEntry.hpp +80 -0
  211. package/nitrogen/generated/android/c++/JFunc_void_PerformanceMetrics.hpp +77 -0
  212. package/nitrogen/generated/android/c++/JHybridNitroRnTuiSdkSpec.cpp +124 -0
  213. package/nitrogen/generated/android/c++/JHybridNitroRnTuiSdkSpec.hpp +74 -0
  214. package/nitrogen/generated/android/c++/JNativeLogEntry.hpp +71 -0
  215. package/nitrogen/generated/android/c++/JNativeLogLevel.hpp +64 -0
  216. package/nitrogen/generated/android/c++/JPerformanceMetrics.hpp +69 -0
  217. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rntuisdk/DeviceInfoResult.kt +47 -0
  218. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rntuisdk/Func_void_NativeLogEntry.kt +80 -0
  219. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rntuisdk/Func_void_PerformanceMetrics.kt +80 -0
  220. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rntuisdk/HybridNitroRnTuiSdkSpec.kt +108 -0
  221. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rntuisdk/NativeLogEntry.kt +47 -0
  222. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rntuisdk/NativeLogLevel.kt +25 -0
  223. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rntuisdk/NitroRnTuiSdkOnLoad.kt +35 -0
  224. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rntuisdk/PerformanceMetrics.kt +47 -0
  225. package/nitrogen/generated/ios/NitroRnTuiSdk+autolinking.rb +62 -0
  226. package/nitrogen/generated/ios/NitroRnTuiSdk-Swift-Cxx-Bridge.cpp +49 -0
  227. package/nitrogen/generated/ios/NitroRnTuiSdk-Swift-Cxx-Bridge.hpp +185 -0
  228. package/nitrogen/generated/ios/NitroRnTuiSdk-Swift-Cxx-Umbrella.hpp +58 -0
  229. package/nitrogen/generated/ios/NitroRnTuiSdkAutolinking.mm +33 -0
  230. package/nitrogen/generated/ios/NitroRnTuiSdkAutolinking.swift +26 -0
  231. package/nitrogen/generated/ios/c++/HybridNitroRnTuiSdkSpecSwift.cpp +11 -0
  232. package/nitrogen/generated/ios/c++/HybridNitroRnTuiSdkSpecSwift.hpp +175 -0
  233. package/nitrogen/generated/ios/swift/DeviceInfoResult.swift +44 -0
  234. package/nitrogen/generated/ios/swift/Func_void_NativeLogEntry.swift +46 -0
  235. package/nitrogen/generated/ios/swift/Func_void_PerformanceMetrics.swift +46 -0
  236. package/nitrogen/generated/ios/swift/HybridNitroRnTuiSdkSpec.swift +66 -0
  237. package/nitrogen/generated/ios/swift/HybridNitroRnTuiSdkSpec_cxx.swift +289 -0
  238. package/nitrogen/generated/ios/swift/NativeLogEntry.swift +44 -0
  239. package/nitrogen/generated/ios/swift/NativeLogLevel.swift +48 -0
  240. package/nitrogen/generated/ios/swift/PerformanceMetrics.swift +44 -0
  241. package/nitrogen/generated/shared/c++/DeviceInfoResult.hpp +95 -0
  242. package/nitrogen/generated/shared/c++/HybridNitroRnTuiSdkSpec.cpp +32 -0
  243. package/nitrogen/generated/shared/c++/HybridNitroRnTuiSdkSpec.hpp +83 -0
  244. package/nitrogen/generated/shared/c++/NativeLogEntry.hpp +97 -0
  245. package/nitrogen/generated/shared/c++/NativeLogLevel.hpp +84 -0
  246. package/nitrogen/generated/shared/c++/PerformanceMetrics.hpp +95 -0
  247. package/package.json +128 -0
  248. package/react-native.config.js +16 -0
  249. package/src/index.ts +7 -0
  250. package/src/library/client/constants.ts +35 -0
  251. package/src/library/client/index.ts +9 -0
  252. package/src/library/client/salvetron-client.ts +433 -0
  253. package/src/library/device/__tests__/device-handler.test.ts +86 -0
  254. package/src/library/device/device-handler.ts +85 -0
  255. package/src/library/device/index.ts +3 -0
  256. package/src/library/device/types.ts +7 -0
  257. package/src/library/device/utils/generate-uuid.ts +7 -0
  258. package/src/library/index.ts +158 -0
  259. package/src/library/interceptors/__tests__/js-console.test.ts +186 -0
  260. package/src/library/interceptors/__tests__/xhr.test.ts +313 -0
  261. package/src/library/interceptors/index.ts +5 -0
  262. package/src/library/interceptors/js-console.ts +93 -0
  263. package/src/library/interceptors/xhr.ts +123 -0
  264. package/src/library/network-handler/__tests__/network-handler.test.ts +265 -0
  265. package/src/library/network-handler/index.ts +1 -0
  266. package/src/library/network-handler/network-handler.ts +141 -0
  267. package/src/library/network-handler/types.ts +6 -0
  268. package/src/library/network-handler/utils/__tests__/generate-request-id.test.ts +22 -0
  269. package/src/library/network-handler/utils/__tests__/parse-response-headers.test.ts +71 -0
  270. package/src/library/network-handler/utils/__tests__/read-blob-as-text.test.ts +79 -0
  271. package/src/library/network-handler/utils/__tests__/response-to-string.test.ts +85 -0
  272. package/src/library/network-handler/utils/__tests__/should-ignore-url.test.ts +45 -0
  273. package/src/library/network-handler/utils/generate-request-id.ts +6 -0
  274. package/src/library/network-handler/utils/index.ts +5 -0
  275. package/src/library/network-handler/utils/parse-response-headers.ts +20 -0
  276. package/src/library/network-handler/utils/read-blob-as-text.ts +11 -0
  277. package/src/library/network-handler/utils/response-to-string.ts +32 -0
  278. package/src/library/network-handler/utils/should-ignore-url.ts +6 -0
  279. package/src/library/performance-handler/index.ts +2 -0
  280. package/src/library/performance-handler/performance-handler.ts +104 -0
  281. package/src/library/performance-handler/types.ts +22 -0
  282. package/src/library/project/index.ts +4 -0
  283. package/src/library/project/project-handler.ts +28 -0
  284. package/src/library/types.ts +78 -0
  285. package/src/specs/rn-tui-sdk.nitro.ts +114 -0
package/package.json ADDED
@@ -0,0 +1,128 @@
1
+ {
2
+ "name": "@salve-software/salvetron-react-native",
3
+ "version": "1.0.1",
4
+ "description": "salvetron-react-native is a React Native package built with Nitro",
5
+ "main": "./lib/commonjs/index.js",
6
+ "module": "./lib/module/index.js",
7
+ "types": "./lib/typescript/src/index.d.ts",
8
+ "react-native": "src/index",
9
+ "source": "src/index",
10
+ "scripts": {
11
+ "typecheck": "tsc --noEmit",
12
+ "clean": "git clean -dfX",
13
+ "build": "yarn typecheck && bob build",
14
+ "codegen": "nitrogen --logLevel=\"debug\" && yarn build && node post-script.js",
15
+ "test": "jest",
16
+ "example": "yarn workspace react-native-nitro-trace-example"
17
+ },
18
+ "keywords": [
19
+ "react-native",
20
+ "salvetron"
21
+ ],
22
+ "files": [
23
+ "src",
24
+ "react-native.config.js",
25
+ "lib",
26
+ "nitrogen",
27
+ "cpp",
28
+ "nitro.json",
29
+ "android/build.gradle",
30
+ "android/fix-prefab.gradle",
31
+ "android/gradle.properties",
32
+ "android/CMakeLists.txt",
33
+ "android/src",
34
+ "ios/**/*.h",
35
+ "ios/**/*.m",
36
+ "ios/**/*.mm",
37
+ "ios/**/*.cpp",
38
+ "ios/**/*.swift",
39
+ "app.plugin.js",
40
+ "*.podspec",
41
+ "README.md"
42
+ ],
43
+ "packageManager": "yarn@4.9.1",
44
+ "workspaces": [
45
+ "example"
46
+ ],
47
+ "repository": {
48
+ "type": "git",
49
+ "url": "https://github.com/Salve-Software/salvetron.git",
50
+ "directory": "packages/salvetron-react-native"
51
+ },
52
+ "author": "Gabriel-Pereira1788",
53
+ "license": "MIT",
54
+ "bugs": "https://github.com/Salve-Software/salvetron/issues",
55
+ "homepage": "https://github.com/Salve-Software/salvetron/tree/main/packages/salvetron-react-native#readme",
56
+ "publishConfig": {
57
+ "access": "public",
58
+ "registry": "https://registry.npmjs.org/"
59
+ },
60
+ "devDependencies": {
61
+ "@jamesacarr/eslint-formatter-github-actions": "^0.2.0",
62
+ "@types/jest": "^29.5.12",
63
+ "@types/react": "19.2.0",
64
+ "nitrogen": "0.35.4",
65
+ "react": "19.2.3",
66
+ "react-native": "0.84.1",
67
+ "react-native-builder-bob": "^0.40.18",
68
+ "react-native-nitro-modules": "0.35.4",
69
+ "typescript": "^5.8.3"
70
+ },
71
+ "peerDependencies": {
72
+ "react": "*",
73
+ "react-native": "*",
74
+ "react-native-nitro-modules": "*"
75
+ },
76
+ "eslintConfig": {
77
+ "root": true,
78
+ "extends": [
79
+ "@react-native",
80
+ "prettier"
81
+ ],
82
+ "plugins": [
83
+ "prettier"
84
+ ],
85
+ "rules": {
86
+ "prettier/prettier": [
87
+ "warn",
88
+ {
89
+ "quoteProps": "consistent",
90
+ "singleQuote": true,
91
+ "tabWidth": 2,
92
+ "trailingComma": "es5",
93
+ "useTabs": false
94
+ }
95
+ ]
96
+ }
97
+ },
98
+ "eslintIgnore": [
99
+ "node_modules/",
100
+ "lib/"
101
+ ],
102
+ "prettier": {
103
+ "quoteProps": "consistent",
104
+ "singleQuote": true,
105
+ "tabWidth": 2,
106
+ "trailingComma": "es5",
107
+ "useTabs": false,
108
+ "semi": false
109
+ },
110
+ "react-native-builder-bob": {
111
+ "source": "src",
112
+ "output": "lib",
113
+ "targets": [
114
+ "commonjs",
115
+ "module",
116
+ [
117
+ "typescript",
118
+ {
119
+ "project": "tsconfig.json"
120
+ }
121
+ ]
122
+ ]
123
+ },
124
+ "dependencies": {
125
+ "@salve-software/salvetron-types": "^1.0.0",
126
+ "jest": "^30.4.2"
127
+ }
128
+ }
@@ -0,0 +1,16 @@
1
+ // https://github.com/react-native-community/cli/blob/main/docs/dependencies.md
2
+
3
+ module.exports = {
4
+ dependency: {
5
+ platforms: {
6
+ /**
7
+ * @type {import('@react-native-community/cli-types').IOSDependencyParams}
8
+ */
9
+ ios: {},
10
+ /**
11
+ * @type {import('@react-native-community/cli-types').AndroidDependencyParams}
12
+ */
13
+ android: {},
14
+ },
15
+ },
16
+ };
package/src/index.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { NitroModules } from 'react-native-nitro-modules'
2
+ import type { NitroRnTuiSdk as NitroRnTuiSdkSpec } from './specs/rn-tui-sdk.nitro'
3
+
4
+ export const NitroRnTuiSdk =
5
+ NitroModules.createHybridObject<NitroRnTuiSdkSpec>('NitroRnTuiSdk')
6
+
7
+ export { default } from './library'
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Default URL patterns to ignore during network interception
3
+ * Includes Metro bundler, hot reload, and debugger URLs
4
+ */
5
+ export const DEFAULT_IGNORED_URLS: RegExp[] = [
6
+ /localhost:8081/,
7
+ /127\.0\.0\.1:8081/,
8
+ /10\.0\.2\.2:8081/, // Android emulator
9
+ /symbolicate/,
10
+ /\.hot-update\./,
11
+ /hot$/,
12
+ /\.bundle/,
13
+ /__packager/,
14
+ /debugger-ui/,
15
+ /devtools/,
16
+ ];
17
+
18
+ /**
19
+ * WebSocket reconnection settings
20
+ */
21
+ export const RECONNECT_CONFIG = {
22
+ maxAttempts: 5,
23
+ maxDelay: 30000,
24
+ baseDelay: 1000,
25
+ } as const;
26
+
27
+ /**
28
+ * Default client configuration
29
+ */
30
+ export const DEFAULT_CONFIG = {
31
+ host: 'localhost',
32
+ port: 8765,
33
+ enableNetworkCapture: true,
34
+ enablePerformanceMonitoring: false,
35
+ } as const;
@@ -0,0 +1,9 @@
1
+ import { SalvetronClient } from './salvetron-client'
2
+
3
+ export {
4
+ DEFAULT_IGNORED_URLS,
5
+ RECONNECT_CONFIG,
6
+ DEFAULT_CONFIG,
7
+ } from './constants'
8
+
9
+ export const client = new SalvetronClient()
@@ -0,0 +1,433 @@
1
+ /**
2
+ * WebSocket client for communicating with Salvetron CLI
3
+ */
4
+
5
+ import { Platform } from 'react-native'
6
+ import { NitroModules } from 'react-native-nitro-modules'
7
+ import type {
8
+ SalvetronConfig,
9
+ RnTuiEvent,
10
+ DeviceInfoEvent,
11
+ LogEvent,
12
+ NativeLogEvent,
13
+ LogLevel,
14
+ NativeLogSource,
15
+ ProjectInfoEvent,
16
+ } from '../types'
17
+ import type { NitroRnTuiSdk as NitroRnTuiSdkSpec } from '../../specs/rn-tui-sdk.nitro'
18
+
19
+ import {
20
+ DEFAULT_IGNORED_URLS,
21
+ RECONNECT_CONFIG,
22
+ DEFAULT_CONFIG,
23
+ } from './constants'
24
+ import { NetworkHandler } from '../network-handler'
25
+ import { PerformanceHandler } from '../performance-handler'
26
+ import { deviceHandler } from '../device'
27
+ import { projectHandler } from '../project'
28
+ import { xhrInterceptor, jsConsoleInterceptor } from '../interceptors'
29
+
30
+ /**
31
+ * Salvetron WebSocket Client
32
+ */
33
+ export class SalvetronClient {
34
+ private ws: WebSocket | null = null
35
+ private config: Required<SalvetronConfig>
36
+ private messageQueue: RnTuiEvent[] = []
37
+ private reconnectAttempts = 0
38
+ private reconnectTimeout: ReturnType<typeof setTimeout> | null = null
39
+ private isConnecting = false
40
+ private manualDisconnect = false
41
+
42
+ // Native log capture
43
+ private nitroRnTuiSdk: NitroRnTuiSdkSpec | null = null
44
+ private nativeLogCaptureEnabled = false
45
+
46
+ // Network handler
47
+ private networkHandler: NetworkHandler | null = null
48
+
49
+ // Performance handler
50
+ private performanceHandler: PerformanceHandler | null = null
51
+ private performanceMonitoringEnabled = false
52
+
53
+ constructor() {
54
+ this.config = {
55
+ host: DEFAULT_CONFIG.host,
56
+ port: DEFAULT_CONFIG.port,
57
+ enableNetworkCapture: DEFAULT_CONFIG.enableNetworkCapture,
58
+ enablePerformanceMonitoring: DEFAULT_CONFIG.enablePerformanceMonitoring,
59
+ ignoredUrls: [],
60
+ onConnect: () => {},
61
+ onDisconnect: () => {},
62
+ onError: () => {},
63
+ }
64
+ }
65
+
66
+ /**
67
+ * Connect to Salvetron CLI
68
+ */
69
+ connect(userConfig: SalvetronConfig = {}): void {
70
+ if (typeof __DEV__ !== 'undefined' && !__DEV__) {
71
+ console.warn('[Salvetron] SDK only works in development mode')
72
+ return
73
+ }
74
+
75
+ this.config = {
76
+ host: userConfig.host ?? DEFAULT_CONFIG.host,
77
+ port: userConfig.port ?? DEFAULT_CONFIG.port,
78
+ enableNetworkCapture:
79
+ userConfig.enableNetworkCapture ?? DEFAULT_CONFIG.enableNetworkCapture,
80
+ enablePerformanceMonitoring:
81
+ userConfig.enablePerformanceMonitoring ?? DEFAULT_CONFIG.enablePerformanceMonitoring,
82
+ ignoredUrls: [...DEFAULT_IGNORED_URLS, ...(userConfig.ignoredUrls ?? [])],
83
+ onConnect: userConfig.onConnect ?? (() => {}),
84
+ onDisconnect: userConfig.onDisconnect ?? (() => {}),
85
+ onError: userConfig.onError ?? (() => {}),
86
+ }
87
+
88
+ this.manualDisconnect = false
89
+ this.connectWebSocket()
90
+ }
91
+
92
+ /**
93
+ * Disconnect from Salvetron
94
+ */
95
+ disconnect(): void {
96
+ this.manualDisconnect = true
97
+ this.cleanup()
98
+ }
99
+
100
+ /**
101
+ * Check if connected
102
+ */
103
+ isConnected(): boolean {
104
+ return this.ws?.readyState === WebSocket.OPEN
105
+ }
106
+
107
+ /**
108
+ * Send a log event to Salvetron
109
+ */
110
+ sendLog(
111
+ level: LogLevel,
112
+ message: string,
113
+ metadata?: Record<string, unknown>
114
+ ): void {
115
+ const event: LogEvent = {
116
+ type: 'log',
117
+ source: 'js',
118
+ level,
119
+ message,
120
+ timestamp: Date.now(),
121
+ metadata,
122
+ projectId: projectHandler.getProjectId(),
123
+ }
124
+ this.send(event)
125
+ }
126
+
127
+ /**
128
+ * Start capturing native platform logs
129
+ */
130
+ startNativeLogCapture(): boolean {
131
+ if (this.nativeLogCaptureEnabled) {
132
+ console.warn('[Salvetron] Native log capture already enabled')
133
+ return false
134
+ }
135
+
136
+ try {
137
+ const nitro = this.getNitroRnTuiSdk()
138
+ const success = nitro.startLogCapture((log) => {
139
+ this.handleNativeLog(log)
140
+ })
141
+
142
+ if (success) {
143
+ this.nativeLogCaptureEnabled = true
144
+ console.log('[Salvetron] Native log capture enabled')
145
+ }
146
+ return success
147
+ } catch (error) {
148
+ console.error('[Salvetron] Failed to start native log capture:', error)
149
+ return false
150
+ }
151
+ }
152
+
153
+ /**
154
+ * Stop capturing native platform logs
155
+ */
156
+ stopNativeLogCapture(): void {
157
+ if (!this.nativeLogCaptureEnabled) return
158
+
159
+ try {
160
+ const nitro = this.getNitroRnTuiSdk()
161
+ nitro.stopLogCapture()
162
+ this.nativeLogCaptureEnabled = false
163
+ console.log('[Salvetron] Native log capture disabled')
164
+ } catch (error) {
165
+ console.error('[Salvetron] Failed to stop native log capture:', error)
166
+ }
167
+ }
168
+
169
+ /**
170
+ * Check if native log capture is active
171
+ */
172
+ isNativeLogCaptureEnabled(): boolean {
173
+ return this.nativeLogCaptureEnabled
174
+ }
175
+
176
+ /**
177
+ * Start performance monitoring
178
+ */
179
+ startPerformanceMonitoring(): boolean {
180
+ if (this.performanceMonitoringEnabled) {
181
+ console.warn('[Salvetron] Performance monitoring already enabled')
182
+ return false
183
+ }
184
+
185
+ this.performanceHandler = new PerformanceHandler({
186
+ nitroRnTuiSdk: this.getNitroRnTuiSdk(),
187
+ onEvent: (event) => this.send(event),
188
+ })
189
+
190
+ const success = this.performanceHandler.start()
191
+ if (success) {
192
+ this.performanceMonitoringEnabled = true
193
+ console.log('[Salvetron] Performance monitoring enabled')
194
+ }
195
+ return success
196
+ }
197
+
198
+ /**
199
+ * Stop performance monitoring
200
+ */
201
+ stopPerformanceMonitoring(): void {
202
+ if (!this.performanceMonitoringEnabled) return
203
+
204
+ try {
205
+ if (this.performanceHandler) {
206
+ this.performanceHandler.stop()
207
+ this.performanceHandler = null
208
+ }
209
+ this.performanceMonitoringEnabled = false
210
+ console.log('[Salvetron] Performance monitoring disabled')
211
+ } catch (error) {
212
+ console.error('[Salvetron] Failed to stop performance monitoring:', error)
213
+ }
214
+ }
215
+
216
+ /**
217
+ * Check if performance monitoring is active
218
+ */
219
+ isPerformanceMonitoringEnabled(): boolean {
220
+ return this.performanceMonitoringEnabled
221
+ }
222
+
223
+ private getNitroRnTuiSdk(): NitroRnTuiSdkSpec {
224
+ if (!this.nitroRnTuiSdk) {
225
+ this.nitroRnTuiSdk =
226
+ NitroModules.createHybridObject<NitroRnTuiSdkSpec>('NitroRnTuiSdk')
227
+ }
228
+ return this.nitroRnTuiSdk
229
+ }
230
+
231
+ private handleNativeLog(log: {
232
+ level: string
233
+ message: string
234
+ tag: string
235
+ timestamp: number
236
+ }): void {
237
+ const platform = Platform.OS as NativeLogSource
238
+ const level = log.level === 'verbose' ? 'debug' : log.level
239
+
240
+ const event: NativeLogEvent = {
241
+ type: 'native',
242
+ source: platform,
243
+ level: level as LogLevel,
244
+ message: log.message,
245
+ timestamp: log.timestamp,
246
+ metadata: log.tag ? { tag: log.tag } : undefined,
247
+ projectId: projectHandler.getProjectId(),
248
+ }
249
+
250
+ this.send(event)
251
+ }
252
+
253
+ private connectWebSocket(): void {
254
+ jsConsoleInterceptor.start({
255
+ onLog: (level, message, metadata) => this.sendLog(level, message, metadata),
256
+ })
257
+
258
+ if (this.isConnecting || this.isConnected()) return
259
+
260
+ this.isConnecting = true
261
+ const url = `ws://${this.config.host}:${this.config.port}`
262
+
263
+ try {
264
+ this.ws = new WebSocket(url)
265
+
266
+ this.ws.onopen = () => {
267
+ this.isConnecting = false
268
+ this.reconnectAttempts = 0
269
+ console.log(`[Salvetron] Connected to ${url}`)
270
+ this.config.onConnect()
271
+
272
+ this.sendProjectInfo()
273
+ this.sendDeviceInfo()
274
+ this.flushQueue()
275
+
276
+ if (this.config.enableNetworkCapture) {
277
+ this.setupNetworkInterception()
278
+ }
279
+
280
+ if (this.config.enablePerformanceMonitoring) {
281
+ this.startPerformanceMonitoring()
282
+ }
283
+
284
+ this.startNativeLogCapture()
285
+ }
286
+
287
+ this.ws.onclose = () => {
288
+ this.isConnecting = false
289
+ console.log('[Salvetron] Disconnected')
290
+ this.config.onDisconnect()
291
+
292
+ if (!this.manualDisconnect) {
293
+ this.scheduleReconnect()
294
+ }
295
+ }
296
+
297
+ this.ws.onerror = (event) => {
298
+ this.isConnecting = false
299
+ const error = new Error('WebSocket error')
300
+ console.error('[Salvetron] Connection error:', event)
301
+ this.config.onError(error)
302
+ }
303
+
304
+ this.ws.onmessage = (event) => {
305
+ console.log('[Salvetron] Received:', event.data)
306
+ }
307
+ } catch (error) {
308
+ this.isConnecting = false
309
+ console.error('[Salvetron] Failed to create WebSocket:', error)
310
+ this.scheduleReconnect()
311
+ }
312
+ }
313
+
314
+ private scheduleReconnect(): void {
315
+ if (this.manualDisconnect) return
316
+ if (this.reconnectAttempts >= RECONNECT_CONFIG.maxAttempts) {
317
+ console.warn('[Salvetron] Max reconnection attempts reached')
318
+ return
319
+ }
320
+
321
+ const delay = Math.min(
322
+ RECONNECT_CONFIG.baseDelay * Math.pow(2, this.reconnectAttempts),
323
+ RECONNECT_CONFIG.maxDelay
324
+ )
325
+ this.reconnectAttempts++
326
+
327
+ console.log(
328
+ `[Salvetron] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempts})`
329
+ )
330
+
331
+ this.reconnectTimeout = setTimeout(() => {
332
+ this.connectWebSocket()
333
+ }, delay)
334
+ }
335
+
336
+ private cleanup(): void {
337
+ if (this.reconnectTimeout) {
338
+ clearTimeout(this.reconnectTimeout)
339
+ this.reconnectTimeout = null
340
+ }
341
+
342
+ this.stopNativeLogCapture()
343
+ this.stopPerformanceMonitoring()
344
+ xhrInterceptor.disable()
345
+ jsConsoleInterceptor.stop()
346
+
347
+ if (this.networkHandler) {
348
+ this.networkHandler.clear()
349
+ this.networkHandler = null
350
+ }
351
+
352
+ if (this.ws) {
353
+ this.ws.onopen = null
354
+ this.ws.onclose = null
355
+ this.ws.onerror = null
356
+ this.ws.onmessage = null
357
+ this.ws.close()
358
+ this.ws = null
359
+ }
360
+
361
+ this.messageQueue = []
362
+ this.reconnectAttempts = 0
363
+ this.isConnecting = false
364
+ }
365
+
366
+ private send(event: RnTuiEvent): void {
367
+ if (this.isConnected() && this.ws) {
368
+ try {
369
+ this.ws.send(JSON.stringify(event))
370
+ } catch (error) {
371
+ console.error('[Salvetron] Failed to send event:', error)
372
+ this.messageQueue.push(event)
373
+ }
374
+ } else {
375
+ this.messageQueue.push(event)
376
+ }
377
+ }
378
+
379
+ private sendProjectInfo(): void {
380
+ try {
381
+ const projectInfo = projectHandler.getProjectInfo()
382
+ const event: ProjectInfoEvent = {
383
+ type: 'project_info',
384
+ ...projectInfo,
385
+ }
386
+ this.send(event)
387
+ console.log(
388
+ `[Salvetron] Project registered: ${projectInfo.appName} (${projectInfo.projectId})`
389
+ )
390
+ } catch (error) {
391
+ console.warn('[Salvetron] Failed to send project info:', error)
392
+ }
393
+ }
394
+
395
+ private async sendDeviceInfo(): Promise<void> {
396
+ try {
397
+ const deviceInfo = deviceHandler.getDeviceInfo()
398
+ const projectId = projectHandler.getProjectId()
399
+ const event: DeviceInfoEvent = {
400
+ type: 'device_info',
401
+ ...deviceInfo,
402
+ projectId,
403
+ }
404
+ this.send(event)
405
+ console.log(
406
+ `[Salvetron] Device registered: ${deviceInfo.deviceName} (${deviceInfo.deviceId})`
407
+ )
408
+ } catch (error) {
409
+ console.warn('[Salvetron] Failed to send device info:', error)
410
+ }
411
+ }
412
+
413
+ private flushQueue(): void {
414
+ while (this.messageQueue.length > 0 && this.isConnected()) {
415
+ const event = this.messageQueue.shift()
416
+ if (event) {
417
+ this.send(event)
418
+ }
419
+ }
420
+ }
421
+
422
+ private setupNetworkInterception(): void {
423
+ this.networkHandler = new NetworkHandler({
424
+ ignoredUrls: this.config.ignoredUrls,
425
+ onEvent: (event) => this.send(event),
426
+ })
427
+
428
+ const success = xhrInterceptor.enable(this.networkHandler.getCallbacks())
429
+ if (success) {
430
+ console.log('[Salvetron] Network capture enabled')
431
+ }
432
+ }
433
+ }