@salve-software/mako-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 (323) hide show
  1. package/LICENSE +21 -0
  2. package/NitroMako.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/mako/HybridMako.kt +235 -0
  11. package/android/src/main/java/com/margelo/nitro/mako/MakoPackage.kt +18 -0
  12. package/android/src/main/java/com/margelo/nitro/mako/PerformanceMonitor.kt +260 -0
  13. package/ios/Bridge.h +8 -0
  14. package/ios/HybridMako.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 +34 -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/mako-client.js +419 -0
  23. package/lib/commonjs/library/client/mako-client.js.map +1 -0
  24. package/lib/commonjs/library/component-handler/component-handler.js +158 -0
  25. package/lib/commonjs/library/component-handler/component-handler.js.map +1 -0
  26. package/lib/commonjs/library/component-handler/index.js +39 -0
  27. package/lib/commonjs/library/component-handler/index.js.map +1 -0
  28. package/lib/commonjs/library/component-handler/types.js +6 -0
  29. package/lib/commonjs/library/component-handler/types.js.map +1 -0
  30. package/lib/commonjs/library/component-handler/utils/index.js +26 -0
  31. package/lib/commonjs/library/component-handler/utils/index.js.map +1 -0
  32. package/lib/commonjs/library/device/device-handler.js +80 -0
  33. package/lib/commonjs/library/device/device-handler.js.map +1 -0
  34. package/lib/commonjs/library/device/index.js +9 -0
  35. package/lib/commonjs/library/device/index.js.map +1 -0
  36. package/lib/commonjs/library/device/types.js +2 -0
  37. package/lib/commonjs/library/device/types.js.map +1 -0
  38. package/lib/commonjs/library/device/utils/generate-uuid.js +14 -0
  39. package/lib/commonjs/library/device/utils/generate-uuid.js.map +1 -0
  40. package/lib/commonjs/library/index.js +156 -0
  41. package/lib/commonjs/library/index.js.map +1 -0
  42. package/lib/commonjs/library/interceptors/index.js +13 -0
  43. package/lib/commonjs/library/interceptors/index.js.map +1 -0
  44. package/lib/commonjs/library/interceptors/js-console.js +88 -0
  45. package/lib/commonjs/library/interceptors/js-console.js.map +1 -0
  46. package/lib/commonjs/library/interceptors/react-devtools.js +219 -0
  47. package/lib/commonjs/library/interceptors/react-devtools.js.map +1 -0
  48. package/lib/commonjs/library/interceptors/xhr.js +74 -0
  49. package/lib/commonjs/library/interceptors/xhr.js.map +1 -0
  50. package/lib/commonjs/library/network-handler/index.js +17 -0
  51. package/lib/commonjs/library/network-handler/index.js.map +1 -0
  52. package/lib/commonjs/library/network-handler/network-handler.js +103 -0
  53. package/lib/commonjs/library/network-handler/network-handler.js.map +1 -0
  54. package/lib/commonjs/library/network-handler/types.js +6 -0
  55. package/lib/commonjs/library/network-handler/types.js.map +1 -0
  56. package/lib/commonjs/library/network-handler/utils/generate-request-id.js +13 -0
  57. package/lib/commonjs/library/network-handler/utils/generate-request-id.js.map +1 -0
  58. package/lib/commonjs/library/network-handler/utils/index.js +41 -0
  59. package/lib/commonjs/library/network-handler/utils/index.js.map +1 -0
  60. package/lib/commonjs/library/network-handler/utils/parse-response-headers.js +26 -0
  61. package/lib/commonjs/library/network-handler/utils/parse-response-headers.js.map +1 -0
  62. package/lib/commonjs/library/network-handler/utils/read-blob-as-text.js +18 -0
  63. package/lib/commonjs/library/network-handler/utils/read-blob-as-text.js.map +1 -0
  64. package/lib/commonjs/library/network-handler/utils/response-to-string.js +35 -0
  65. package/lib/commonjs/library/network-handler/utils/response-to-string.js.map +1 -0
  66. package/lib/commonjs/library/network-handler/utils/should-ignore-url.js +13 -0
  67. package/lib/commonjs/library/network-handler/utils/should-ignore-url.js.map +1 -0
  68. package/lib/commonjs/library/performance-handler/index.js +13 -0
  69. package/lib/commonjs/library/performance-handler/index.js.map +1 -0
  70. package/lib/commonjs/library/performance-handler/performance-handler.js +94 -0
  71. package/lib/commonjs/library/performance-handler/performance-handler.js.map +1 -0
  72. package/lib/commonjs/library/performance-handler/types.js +6 -0
  73. package/lib/commonjs/library/performance-handler/types.js.map +1 -0
  74. package/lib/commonjs/library/project/index.js +15 -0
  75. package/lib/commonjs/library/project/index.js.map +1 -0
  76. package/lib/commonjs/library/project/project-handler.js +31 -0
  77. package/lib/commonjs/library/project/project-handler.js.map +1 -0
  78. package/lib/commonjs/library/types.js +2 -0
  79. package/lib/commonjs/library/types.js.map +1 -0
  80. package/lib/commonjs/package.json +1 -0
  81. package/lib/commonjs/specs/mako.nitro.js +6 -0
  82. package/lib/commonjs/specs/mako.nitro.js.map +1 -0
  83. package/lib/module/index.js +6 -0
  84. package/lib/module/index.js.map +1 -0
  85. package/lib/module/library/client/constants.js +30 -0
  86. package/lib/module/library/client/constants.js.map +1 -0
  87. package/lib/module/library/client/index.js +6 -0
  88. package/lib/module/library/client/index.js.map +1 -0
  89. package/lib/module/library/client/mako-client.js +415 -0
  90. package/lib/module/library/client/mako-client.js.map +1 -0
  91. package/lib/module/library/component-handler/component-handler.js +153 -0
  92. package/lib/module/library/component-handler/component-handler.js.map +1 -0
  93. package/lib/module/library/component-handler/index.js +6 -0
  94. package/lib/module/library/component-handler/index.js.map +1 -0
  95. package/lib/module/library/component-handler/types.js +4 -0
  96. package/lib/module/library/component-handler/types.js.map +1 -0
  97. package/lib/module/library/component-handler/utils/index.js +21 -0
  98. package/lib/module/library/component-handler/utils/index.js.map +1 -0
  99. package/lib/module/library/device/device-handler.js +75 -0
  100. package/lib/module/library/device/device-handler.js.map +1 -0
  101. package/lib/module/library/device/index.js +5 -0
  102. package/lib/module/library/device/index.js.map +1 -0
  103. package/lib/module/library/device/types.js +2 -0
  104. package/lib/module/library/device/types.js.map +1 -0
  105. package/lib/module/library/device/utils/generate-uuid.js +10 -0
  106. package/lib/module/library/device/utils/generate-uuid.js.map +1 -0
  107. package/lib/module/library/index.js +155 -0
  108. package/lib/module/library/index.js.map +1 -0
  109. package/lib/module/library/interceptors/index.js +9 -0
  110. package/lib/module/library/interceptors/index.js.map +1 -0
  111. package/lib/module/library/interceptors/js-console.js +83 -0
  112. package/lib/module/library/interceptors/js-console.js.map +1 -0
  113. package/lib/module/library/interceptors/react-devtools.js +214 -0
  114. package/lib/module/library/interceptors/react-devtools.js.map +1 -0
  115. package/lib/module/library/interceptors/xhr.js +69 -0
  116. package/lib/module/library/interceptors/xhr.js.map +1 -0
  117. package/lib/module/library/network-handler/index.js +4 -0
  118. package/lib/module/library/network-handler/index.js.map +1 -0
  119. package/lib/module/library/network-handler/network-handler.js +98 -0
  120. package/lib/module/library/network-handler/network-handler.js.map +1 -0
  121. package/lib/module/library/network-handler/types.js +4 -0
  122. package/lib/module/library/network-handler/types.js.map +1 -0
  123. package/lib/module/library/network-handler/utils/generate-request-id.js +9 -0
  124. package/lib/module/library/network-handler/utils/generate-request-id.js.map +1 -0
  125. package/lib/module/library/network-handler/utils/index.js +8 -0
  126. package/lib/module/library/network-handler/utils/index.js.map +1 -0
  127. package/lib/module/library/network-handler/utils/parse-response-headers.js +22 -0
  128. package/lib/module/library/network-handler/utils/parse-response-headers.js.map +1 -0
  129. package/lib/module/library/network-handler/utils/read-blob-as-text.js +14 -0
  130. package/lib/module/library/network-handler/utils/read-blob-as-text.js.map +1 -0
  131. package/lib/module/library/network-handler/utils/response-to-string.js +31 -0
  132. package/lib/module/library/network-handler/utils/response-to-string.js.map +1 -0
  133. package/lib/module/library/network-handler/utils/should-ignore-url.js +9 -0
  134. package/lib/module/library/network-handler/utils/should-ignore-url.js.map +1 -0
  135. package/lib/module/library/performance-handler/index.js +4 -0
  136. package/lib/module/library/performance-handler/index.js.map +1 -0
  137. package/lib/module/library/performance-handler/performance-handler.js +89 -0
  138. package/lib/module/library/performance-handler/performance-handler.js.map +1 -0
  139. package/lib/module/library/performance-handler/types.js +4 -0
  140. package/lib/module/library/performance-handler/types.js.map +1 -0
  141. package/lib/module/library/project/index.js +6 -0
  142. package/lib/module/library/project/index.js.map +1 -0
  143. package/lib/module/library/project/project-handler.js +26 -0
  144. package/lib/module/library/project/project-handler.js.map +1 -0
  145. package/lib/module/library/types.js +2 -0
  146. package/lib/module/library/types.js.map +1 -0
  147. package/lib/module/specs/mako.nitro.js +4 -0
  148. package/lib/module/specs/mako.nitro.js.map +1 -0
  149. package/lib/typescript/src/index.d.ts +4 -0
  150. package/lib/typescript/src/index.d.ts.map +1 -0
  151. package/lib/typescript/src/library/client/constants.d.ts +24 -0
  152. package/lib/typescript/src/library/client/constants.d.ts.map +1 -0
  153. package/lib/typescript/src/library/client/index.d.ts +4 -0
  154. package/lib/typescript/src/library/client/index.d.ts.map +1 -0
  155. package/lib/typescript/src/library/client/mako-client.d.ts +87 -0
  156. package/lib/typescript/src/library/client/mako-client.d.ts.map +1 -0
  157. package/lib/typescript/src/library/component-handler/component-handler.d.ts +21 -0
  158. package/lib/typescript/src/library/component-handler/component-handler.d.ts.map +1 -0
  159. package/lib/typescript/src/library/component-handler/index.d.ts +4 -0
  160. package/lib/typescript/src/library/component-handler/index.d.ts.map +1 -0
  161. package/lib/typescript/src/library/component-handler/types.d.ts +22 -0
  162. package/lib/typescript/src/library/component-handler/types.d.ts.map +1 -0
  163. package/lib/typescript/src/library/component-handler/utils/index.d.ts +13 -0
  164. package/lib/typescript/src/library/component-handler/utils/index.d.ts.map +1 -0
  165. package/lib/typescript/src/library/device/__tests__/device-handler.test.d.ts +2 -0
  166. package/lib/typescript/src/library/device/__tests__/device-handler.test.d.ts.map +1 -0
  167. package/lib/typescript/src/library/device/device-handler.d.ts +11 -0
  168. package/lib/typescript/src/library/device/device-handler.d.ts.map +1 -0
  169. package/lib/typescript/src/library/device/index.d.ts +3 -0
  170. package/lib/typescript/src/library/device/index.d.ts.map +1 -0
  171. package/lib/typescript/src/library/device/types.d.ts +8 -0
  172. package/lib/typescript/src/library/device/types.d.ts.map +1 -0
  173. package/lib/typescript/src/library/device/utils/generate-uuid.d.ts +2 -0
  174. package/lib/typescript/src/library/device/utils/generate-uuid.d.ts.map +1 -0
  175. package/lib/typescript/src/library/index.d.ts +120 -0
  176. package/lib/typescript/src/library/index.d.ts.map +1 -0
  177. package/lib/typescript/src/library/interceptors/__tests__/js-console.test.d.ts +2 -0
  178. package/lib/typescript/src/library/interceptors/__tests__/js-console.test.d.ts.map +1 -0
  179. package/lib/typescript/src/library/interceptors/__tests__/react-devtools.test.d.ts +2 -0
  180. package/lib/typescript/src/library/interceptors/__tests__/react-devtools.test.d.ts.map +1 -0
  181. package/lib/typescript/src/library/interceptors/__tests__/xhr.test.d.ts +2 -0
  182. package/lib/typescript/src/library/interceptors/__tests__/xhr.test.d.ts.map +1 -0
  183. package/lib/typescript/src/library/interceptors/index.d.ts +7 -0
  184. package/lib/typescript/src/library/interceptors/index.d.ts.map +1 -0
  185. package/lib/typescript/src/library/interceptors/js-console.d.ts +17 -0
  186. package/lib/typescript/src/library/interceptors/js-console.d.ts.map +1 -0
  187. package/lib/typescript/src/library/interceptors/react-devtools.d.ts +54 -0
  188. package/lib/typescript/src/library/interceptors/react-devtools.d.ts.map +1 -0
  189. package/lib/typescript/src/library/interceptors/xhr.d.ts +14 -0
  190. package/lib/typescript/src/library/interceptors/xhr.d.ts.map +1 -0
  191. package/lib/typescript/src/library/network-handler/__tests__/network-handler.test.d.ts +2 -0
  192. package/lib/typescript/src/library/network-handler/__tests__/network-handler.test.d.ts.map +1 -0
  193. package/lib/typescript/src/library/network-handler/index.d.ts +2 -0
  194. package/lib/typescript/src/library/network-handler/index.d.ts.map +1 -0
  195. package/lib/typescript/src/library/network-handler/network-handler.d.ts +19 -0
  196. package/lib/typescript/src/library/network-handler/network-handler.d.ts.map +1 -0
  197. package/lib/typescript/src/library/network-handler/types.d.ts +6 -0
  198. package/lib/typescript/src/library/network-handler/types.d.ts.map +1 -0
  199. package/lib/typescript/src/library/network-handler/utils/__tests__/generate-request-id.test.d.ts +2 -0
  200. package/lib/typescript/src/library/network-handler/utils/__tests__/generate-request-id.test.d.ts.map +1 -0
  201. package/lib/typescript/src/library/network-handler/utils/__tests__/parse-response-headers.test.d.ts +2 -0
  202. package/lib/typescript/src/library/network-handler/utils/__tests__/parse-response-headers.test.d.ts.map +1 -0
  203. package/lib/typescript/src/library/network-handler/utils/__tests__/read-blob-as-text.test.d.ts +2 -0
  204. package/lib/typescript/src/library/network-handler/utils/__tests__/read-blob-as-text.test.d.ts.map +1 -0
  205. package/lib/typescript/src/library/network-handler/utils/__tests__/response-to-string.test.d.ts +2 -0
  206. package/lib/typescript/src/library/network-handler/utils/__tests__/response-to-string.test.d.ts.map +1 -0
  207. package/lib/typescript/src/library/network-handler/utils/__tests__/should-ignore-url.test.d.ts +2 -0
  208. package/lib/typescript/src/library/network-handler/utils/__tests__/should-ignore-url.test.d.ts.map +1 -0
  209. package/lib/typescript/src/library/network-handler/utils/generate-request-id.d.ts +5 -0
  210. package/lib/typescript/src/library/network-handler/utils/generate-request-id.d.ts.map +1 -0
  211. package/lib/typescript/src/library/network-handler/utils/index.d.ts +6 -0
  212. package/lib/typescript/src/library/network-handler/utils/index.d.ts.map +1 -0
  213. package/lib/typescript/src/library/network-handler/utils/parse-response-headers.d.ts +5 -0
  214. package/lib/typescript/src/library/network-handler/utils/parse-response-headers.d.ts.map +1 -0
  215. package/lib/typescript/src/library/network-handler/utils/read-blob-as-text.d.ts +5 -0
  216. package/lib/typescript/src/library/network-handler/utils/read-blob-as-text.d.ts.map +1 -0
  217. package/lib/typescript/src/library/network-handler/utils/response-to-string.d.ts +5 -0
  218. package/lib/typescript/src/library/network-handler/utils/response-to-string.d.ts.map +1 -0
  219. package/lib/typescript/src/library/network-handler/utils/should-ignore-url.d.ts +5 -0
  220. package/lib/typescript/src/library/network-handler/utils/should-ignore-url.d.ts.map +1 -0
  221. package/lib/typescript/src/library/performance-handler/index.d.ts +3 -0
  222. package/lib/typescript/src/library/performance-handler/index.d.ts.map +1 -0
  223. package/lib/typescript/src/library/performance-handler/performance-handler.d.ts +27 -0
  224. package/lib/typescript/src/library/performance-handler/performance-handler.d.ts.map +1 -0
  225. package/lib/typescript/src/library/performance-handler/types.d.ts +20 -0
  226. package/lib/typescript/src/library/performance-handler/types.d.ts.map +1 -0
  227. package/lib/typescript/src/library/project/index.d.ts +4 -0
  228. package/lib/typescript/src/library/project/index.d.ts.map +1 -0
  229. package/lib/typescript/src/library/project/project-handler.d.ts +7 -0
  230. package/lib/typescript/src/library/project/project-handler.d.ts.map +1 -0
  231. package/lib/typescript/src/library/types.d.ts +41 -0
  232. package/lib/typescript/src/library/types.d.ts.map +1 -0
  233. package/lib/typescript/src/specs/mako.nitro.d.ts +100 -0
  234. package/lib/typescript/src/specs/mako.nitro.d.ts.map +1 -0
  235. package/nitro.json +24 -0
  236. package/nitrogen/generated/.gitattributes +1 -0
  237. package/nitrogen/generated/android/NitroMako+autolinking.cmake +81 -0
  238. package/nitrogen/generated/android/NitroMako+autolinking.gradle +27 -0
  239. package/nitrogen/generated/android/NitroMakoOnLoad.cpp +58 -0
  240. package/nitrogen/generated/android/NitroMakoOnLoad.hpp +34 -0
  241. package/nitrogen/generated/android/c++/JDeviceInfoResult.hpp +69 -0
  242. package/nitrogen/generated/android/c++/JFunc_void_NativeLogEntry.hpp +80 -0
  243. package/nitrogen/generated/android/c++/JFunc_void_PerformanceMetrics.hpp +77 -0
  244. package/nitrogen/generated/android/c++/JHybridNitroMakoSpec.cpp +124 -0
  245. package/nitrogen/generated/android/c++/JHybridNitroMakoSpec.hpp +74 -0
  246. package/nitrogen/generated/android/c++/JNativeLogEntry.hpp +71 -0
  247. package/nitrogen/generated/android/c++/JNativeLogLevel.hpp +64 -0
  248. package/nitrogen/generated/android/c++/JPerformanceMetrics.hpp +69 -0
  249. package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/DeviceInfoResult.kt +47 -0
  250. package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/Func_void_NativeLogEntry.kt +80 -0
  251. package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/Func_void_PerformanceMetrics.kt +80 -0
  252. package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/HybridNitroMakoSpec.kt +108 -0
  253. package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/NativeLogEntry.kt +47 -0
  254. package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/NativeLogLevel.kt +25 -0
  255. package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/NitroMakoOnLoad.kt +35 -0
  256. package/nitrogen/generated/android/kotlin/com/margelo/nitro/mako/PerformanceMetrics.kt +47 -0
  257. package/nitrogen/generated/ios/NitroMako+autolinking.rb +62 -0
  258. package/nitrogen/generated/ios/NitroMako-Swift-Cxx-Bridge.cpp +49 -0
  259. package/nitrogen/generated/ios/NitroMako-Swift-Cxx-Bridge.hpp +185 -0
  260. package/nitrogen/generated/ios/NitroMako-Swift-Cxx-Umbrella.hpp +58 -0
  261. package/nitrogen/generated/ios/NitroMakoAutolinking.mm +33 -0
  262. package/nitrogen/generated/ios/NitroMakoAutolinking.swift +26 -0
  263. package/nitrogen/generated/ios/c++/HybridNitroMakoSpecSwift.cpp +11 -0
  264. package/nitrogen/generated/ios/c++/HybridNitroMakoSpecSwift.hpp +175 -0
  265. package/nitrogen/generated/ios/swift/DeviceInfoResult.swift +44 -0
  266. package/nitrogen/generated/ios/swift/Func_void_NativeLogEntry.swift +46 -0
  267. package/nitrogen/generated/ios/swift/Func_void_PerformanceMetrics.swift +46 -0
  268. package/nitrogen/generated/ios/swift/HybridNitroMakoSpec.swift +66 -0
  269. package/nitrogen/generated/ios/swift/HybridNitroMakoSpec_cxx.swift +289 -0
  270. package/nitrogen/generated/ios/swift/NativeLogEntry.swift +44 -0
  271. package/nitrogen/generated/ios/swift/NativeLogLevel.swift +48 -0
  272. package/nitrogen/generated/ios/swift/PerformanceMetrics.swift +44 -0
  273. package/nitrogen/generated/shared/c++/DeviceInfoResult.hpp +95 -0
  274. package/nitrogen/generated/shared/c++/HybridNitroMakoSpec.cpp +32 -0
  275. package/nitrogen/generated/shared/c++/HybridNitroMakoSpec.hpp +83 -0
  276. package/nitrogen/generated/shared/c++/NativeLogEntry.hpp +97 -0
  277. package/nitrogen/generated/shared/c++/NativeLogLevel.hpp +84 -0
  278. package/nitrogen/generated/shared/c++/PerformanceMetrics.hpp +95 -0
  279. package/package.json +128 -0
  280. package/react-native.config.js +16 -0
  281. package/src/index.ts +7 -0
  282. package/src/library/client/constants.ts +36 -0
  283. package/src/library/client/index.ts +9 -0
  284. package/src/library/client/mako-client.ts +494 -0
  285. package/src/library/component-handler/component-handler.ts +162 -0
  286. package/src/library/component-handler/index.ts +3 -0
  287. package/src/library/component-handler/types.ts +24 -0
  288. package/src/library/component-handler/utils/index.ts +23 -0
  289. package/src/library/device/__tests__/device-handler.test.ts +86 -0
  290. package/src/library/device/device-handler.ts +85 -0
  291. package/src/library/device/index.ts +3 -0
  292. package/src/library/device/types.ts +7 -0
  293. package/src/library/device/utils/generate-uuid.ts +7 -0
  294. package/src/library/index.ts +183 -0
  295. package/src/library/interceptors/__tests__/js-console.test.ts +186 -0
  296. package/src/library/interceptors/__tests__/react-devtools.test.ts +848 -0
  297. package/src/library/interceptors/__tests__/xhr.test.ts +313 -0
  298. package/src/library/interceptors/index.ts +7 -0
  299. package/src/library/interceptors/js-console.ts +93 -0
  300. package/src/library/interceptors/react-devtools.ts +268 -0
  301. package/src/library/interceptors/xhr.ts +123 -0
  302. package/src/library/network-handler/__tests__/network-handler.test.ts +265 -0
  303. package/src/library/network-handler/index.ts +1 -0
  304. package/src/library/network-handler/network-handler.ts +141 -0
  305. package/src/library/network-handler/types.ts +6 -0
  306. package/src/library/network-handler/utils/__tests__/generate-request-id.test.ts +22 -0
  307. package/src/library/network-handler/utils/__tests__/parse-response-headers.test.ts +71 -0
  308. package/src/library/network-handler/utils/__tests__/read-blob-as-text.test.ts +79 -0
  309. package/src/library/network-handler/utils/__tests__/response-to-string.test.ts +85 -0
  310. package/src/library/network-handler/utils/__tests__/should-ignore-url.test.ts +45 -0
  311. package/src/library/network-handler/utils/generate-request-id.ts +6 -0
  312. package/src/library/network-handler/utils/index.ts +5 -0
  313. package/src/library/network-handler/utils/parse-response-headers.ts +20 -0
  314. package/src/library/network-handler/utils/read-blob-as-text.ts +11 -0
  315. package/src/library/network-handler/utils/response-to-string.ts +32 -0
  316. package/src/library/network-handler/utils/should-ignore-url.ts +6 -0
  317. package/src/library/performance-handler/index.ts +2 -0
  318. package/src/library/performance-handler/performance-handler.ts +104 -0
  319. package/src/library/performance-handler/types.ts +22 -0
  320. package/src/library/project/index.ts +4 -0
  321. package/src/library/project/project-handler.ts +28 -0
  322. package/src/library/types.ts +82 -0
  323. package/src/specs/mako.nitro.ts +114 -0
@@ -0,0 +1,260 @@
1
+ package com.margelo.nitro.mako
2
+
3
+ import android.os.Handler
4
+ import android.os.Looper
5
+ import android.view.Choreographer
6
+ import java.io.RandomAccessFile
7
+
8
+ data class PerformanceMetricsData(
9
+ val uiFps: Double,
10
+ val jsFps: Double,
11
+ val memoryUsageMB: Double,
12
+ val cpuUsagePercent: Double
13
+ )
14
+
15
+ typealias PerformanceMetricsCallback = (PerformanceMetricsData) -> Unit
16
+
17
+ class PerformanceMonitor {
18
+
19
+ // MARK: - Properties
20
+
21
+ private var choreographerCallback: Choreographer.FrameCallback? = null
22
+ private var handler: Handler? = null
23
+ private var reportRunnable: Runnable? = null
24
+ private var callback: PerformanceMetricsCallback? = null
25
+
26
+ // UI FPS tracking
27
+ private var uiFrameCount = 0
28
+ private var lastUiFpsUpdateTime = 0L
29
+ private var currentUiFps = 0.0
30
+
31
+ // JS FPS tracking
32
+ private var lastJsCallbackTime = 0L
33
+ private var jsFrameCount = 0
34
+ private var lastJsFpsUpdateTime = 0L
35
+ private var currentJsFps = 0.0
36
+
37
+ private var isMonitoring = false
38
+ private var intervalMs = 1000
39
+
40
+ // CPU tracking
41
+ private var lastCpuTime = 0L
42
+ private var lastAppCpuTime = 0L
43
+
44
+ // MARK: - Public Methods
45
+
46
+ fun start(callback: PerformanceMetricsCallback, intervalMs: Int = 1000): Boolean {
47
+ if (isMonitoring) {
48
+ return false // Already monitoring
49
+ }
50
+
51
+ this.callback = callback
52
+ this.intervalMs = intervalMs
53
+ this.isMonitoring = true
54
+
55
+ // Reset counters
56
+ uiFrameCount = 0
57
+ jsFrameCount = 0
58
+ val now = System.nanoTime()
59
+ lastUiFpsUpdateTime = now
60
+ lastJsFpsUpdateTime = now
61
+ lastJsCallbackTime = now
62
+ currentUiFps = 0.0
63
+ currentJsFps = 0.0
64
+
65
+ // Initialize CPU tracking
66
+ initCpuTracking()
67
+
68
+ // Set up Choreographer for UI FPS
69
+ setupChoreographer()
70
+
71
+ // Set up timer for reporting metrics
72
+ handler = Handler(Looper.getMainLooper())
73
+ reportRunnable = object : Runnable {
74
+ override fun run() {
75
+ if (isMonitoring) {
76
+ reportMetrics()
77
+ handler?.postDelayed(this, intervalMs.toLong())
78
+ }
79
+ }
80
+ }
81
+ handler?.postDelayed(reportRunnable!!, intervalMs.toLong())
82
+
83
+ return true
84
+ }
85
+
86
+ fun stop() {
87
+ if (!isMonitoring) return
88
+
89
+ isMonitoring = false
90
+ callback = null
91
+
92
+ // Stop choreographer
93
+ choreographerCallback?.let {
94
+ Choreographer.getInstance().removeFrameCallback(it)
95
+ }
96
+ choreographerCallback = null
97
+
98
+ // Stop report handler
99
+ reportRunnable?.let {
100
+ handler?.removeCallbacks(it)
101
+ }
102
+ reportRunnable = null
103
+ handler = null
104
+ }
105
+
106
+ fun isRunning(): Boolean {
107
+ return isMonitoring
108
+ }
109
+
110
+ fun getSnapshot(): PerformanceMetricsData {
111
+ return PerformanceMetricsData(
112
+ uiFps = currentUiFps,
113
+ jsFps = currentJsFps,
114
+ memoryUsageMB = getMemoryUsage(),
115
+ cpuUsagePercent = getCpuUsage()
116
+ )
117
+ }
118
+
119
+ fun recordJsFrame() {
120
+ if (!isMonitoring) return
121
+
122
+ val now = System.nanoTime()
123
+ lastJsCallbackTime = now
124
+ jsFrameCount++
125
+
126
+ // Calculate JS FPS every 500ms
127
+ val elapsed = (now - lastJsFpsUpdateTime) / 1_000_000_000.0
128
+ if (elapsed >= 0.5) {
129
+ currentJsFps = jsFrameCount / elapsed
130
+ jsFrameCount = 0
131
+ lastJsFpsUpdateTime = now
132
+ }
133
+ }
134
+
135
+ // MARK: - Private Methods
136
+
137
+ private fun setupChoreographer() {
138
+ choreographerCallback = object : Choreographer.FrameCallback {
139
+ override fun doFrame(frameTimeNanos: Long) {
140
+ if (!isMonitoring) return
141
+
142
+ uiFrameCount++
143
+
144
+ val now = frameTimeNanos
145
+ val elapsed = (now - lastUiFpsUpdateTime) / 1_000_000_000.0
146
+
147
+ // Calculate UI FPS every 500ms
148
+ if (elapsed >= 0.5) {
149
+ currentUiFps = uiFrameCount / elapsed
150
+
151
+ // Cap at 120 FPS (reasonable max for Android devices)
152
+ if (currentUiFps > 120.0) {
153
+ currentUiFps = 120.0
154
+ }
155
+
156
+ uiFrameCount = 0
157
+ lastUiFpsUpdateTime = now
158
+ }
159
+
160
+ // Schedule next frame
161
+ Choreographer.getInstance().postFrameCallback(this)
162
+ }
163
+ }
164
+
165
+ Choreographer.getInstance().postFrameCallback(choreographerCallback!!)
166
+ }
167
+
168
+ private fun reportMetrics() {
169
+ val metrics = PerformanceMetricsData(
170
+ uiFps = currentUiFps,
171
+ jsFps = currentJsFps,
172
+ memoryUsageMB = getMemoryUsage(),
173
+ cpuUsagePercent = getCpuUsage()
174
+ )
175
+
176
+ callback?.invoke(metrics)
177
+ }
178
+
179
+ private fun getMemoryUsage(): Double {
180
+ val runtime = Runtime.getRuntime()
181
+ val usedMemory = runtime.totalMemory() - runtime.freeMemory()
182
+ return usedMemory / 1024.0 / 1024.0 // Convert to MB
183
+ }
184
+
185
+ private fun initCpuTracking() {
186
+ try {
187
+ val stat = RandomAccessFile("/proc/stat", "r")
188
+ val cpuLine = stat.readLine()
189
+ stat.close()
190
+
191
+ val appStat = RandomAccessFile("/proc/self/stat", "r")
192
+ val appLine = appStat.readLine()
193
+ appStat.close()
194
+
195
+ lastCpuTime = parseCpuTime(cpuLine)
196
+ lastAppCpuTime = parseAppCpuTime(appLine)
197
+ } catch (e: Exception) {
198
+ // If we can't read CPU stats, just initialize to 0
199
+ lastCpuTime = 0
200
+ lastAppCpuTime = 0
201
+ }
202
+ }
203
+
204
+ private fun getCpuUsage(): Double {
205
+ try {
206
+ val stat = RandomAccessFile("/proc/stat", "r")
207
+ val cpuLine = stat.readLine()
208
+ stat.close()
209
+
210
+ val appStat = RandomAccessFile("/proc/self/stat", "r")
211
+ val appLine = appStat.readLine()
212
+ appStat.close()
213
+
214
+ val currentCpuTime = parseCpuTime(cpuLine)
215
+ val currentAppCpuTime = parseAppCpuTime(appLine)
216
+
217
+ val cpuDelta = currentCpuTime - lastCpuTime
218
+ val appCpuDelta = currentAppCpuTime - lastAppCpuTime
219
+
220
+ lastCpuTime = currentCpuTime
221
+ lastAppCpuTime = currentAppCpuTime
222
+
223
+ if (cpuDelta == 0L) {
224
+ return 0.0
225
+ }
226
+
227
+ val cpuUsage = (appCpuDelta.toDouble() / cpuDelta.toDouble()) * 100.0
228
+
229
+ // Cap at 100%
230
+ return minOf(cpuUsage, 100.0)
231
+ } catch (e: Exception) {
232
+ return 0.0
233
+ }
234
+ }
235
+
236
+ private fun parseCpuTime(line: String): Long {
237
+ // /proc/stat format: cpu user nice system idle iowait irq softirq
238
+ val parts = line.split("\\s+".toRegex())
239
+ if (parts.size < 5) return 0
240
+
241
+ val user = parts[1].toLongOrNull() ?: 0
242
+ val nice = parts[2].toLongOrNull() ?: 0
243
+ val system = parts[3].toLongOrNull() ?: 0
244
+ val idle = parts[4].toLongOrNull() ?: 0
245
+
246
+ return user + nice + system + idle
247
+ }
248
+
249
+ private fun parseAppCpuTime(line: String): Long {
250
+ // /proc/self/stat format: pid (name) state ... utime stime ...
251
+ // utime is field 14 (index 13), stime is field 15 (index 14)
252
+ val parts = line.split("\\s+".toRegex())
253
+ if (parts.size < 15) return 0
254
+
255
+ val utime = parts[13].toLongOrNull() ?: 0
256
+ val stime = parts[14].toLongOrNull() ?: 0
257
+
258
+ return utime + stime
259
+ }
260
+ }
package/ios/Bridge.h ADDED
@@ -0,0 +1,8 @@
1
+ //
2
+ // Bridge.h
3
+ // nitro-trace
4
+ //
5
+ // Created by Gabriel-Pereira1788 on 4/13/2026
6
+ //
7
+
8
+ #pragma once
@@ -0,0 +1,245 @@
1
+ //
2
+ // HybridMako.swift
3
+ // NitroMako
4
+ //
5
+ // Native log capture implementation for iOS
6
+ //
7
+
8
+ import Foundation
9
+ import UIKit
10
+
11
+ class HybridMako: HybridNitroMakoSpec {
12
+
13
+ // MARK: - Properties
14
+
15
+ private var logCallback: ((_ log: NativeLogEntry) -> Void)?
16
+ private var isCapturingLogs = false
17
+ private var stderrPipe: Pipe?
18
+ private var originalStderr: Int32 = -1
19
+ private var readSource: DispatchSourceRead?
20
+
21
+ // Storage key for device ID
22
+ private let deviceIdStorageKey = "mako_device_id"
23
+
24
+ // Performance monitoring
25
+ private let performanceMonitor = PerformanceMonitor()
26
+
27
+ // MARK: - Existing Methods
28
+
29
+ func sum(num1: Double, num2: Double) throws -> Double {
30
+ return num1 + num2
31
+ }
32
+
33
+ // MARK: - Log Capture Methods
34
+
35
+ func startLogCapture(onLog: @escaping (_ log: NativeLogEntry) -> Void) throws -> Bool {
36
+ guard !isCapturingLogs else {
37
+ return false // Already capturing
38
+ }
39
+
40
+ logCallback = onLog
41
+ isCapturingLogs = true
42
+
43
+ // Create pipe for stderr redirection
44
+ stderrPipe = Pipe()
45
+ guard let pipe = stderrPipe else {
46
+ isCapturingLogs = false
47
+ logCallback = nil
48
+ return false
49
+ }
50
+
51
+ // Save original stderr
52
+ originalStderr = dup(STDERR_FILENO)
53
+
54
+ // Disable buffering on stderr
55
+ setvbuf(stderr, nil, _IONBF, 0)
56
+
57
+ // Redirect stderr to our pipe
58
+ dup2(pipe.fileHandleForWriting.fileDescriptor, STDERR_FILENO)
59
+
60
+ // Set up dispatch source to read from pipe
61
+ let fileDescriptor = pipe.fileHandleForReading.fileDescriptor
62
+ readSource = DispatchSource.makeReadSource(fileDescriptor: fileDescriptor, queue: DispatchQueue.global(qos: .utility))
63
+
64
+ readSource?.setEventHandler { [weak self] in
65
+ guard let self = self else { return }
66
+
67
+ let data = pipe.fileHandleForReading.availableData
68
+ guard !data.isEmpty else { return }
69
+
70
+ // Write to original stderr so logs still appear in Xcode console
71
+ if self.originalStderr >= 0 {
72
+ _ = data.withUnsafeBytes { bytes in
73
+ write(self.originalStderr, bytes.baseAddress, data.count)
74
+ }
75
+ }
76
+
77
+ // Process the log
78
+ if let output = String(data: data, encoding: .utf8) {
79
+ self.processLogOutput(output)
80
+ }
81
+ }
82
+
83
+ readSource?.setCancelHandler { [weak self] in
84
+ self?.stderrPipe?.fileHandleForReading.closeFile()
85
+ }
86
+
87
+ readSource?.resume()
88
+
89
+ return true
90
+ }
91
+
92
+ func stopLogCapture() throws {
93
+ guard isCapturingLogs else { return }
94
+
95
+ isCapturingLogs = false
96
+ logCallback = nil
97
+
98
+ // Cancel read source
99
+ readSource?.cancel()
100
+ readSource = nil
101
+
102
+ // Restore original stderr
103
+ if originalStderr >= 0 {
104
+ dup2(originalStderr, STDERR_FILENO)
105
+ close(originalStderr)
106
+ originalStderr = -1
107
+ }
108
+
109
+ // Close pipe
110
+ stderrPipe?.fileHandleForWriting.closeFile()
111
+ stderrPipe = nil
112
+ }
113
+
114
+ func isCapturing() throws -> Bool {
115
+ return isCapturingLogs
116
+ }
117
+
118
+ // MARK: - Device Info Methods
119
+
120
+ func getDeviceInfo() throws -> DeviceInfoResult {
121
+ let deviceId = UIDevice.current.identifierForVendor?.uuidString ?? generateUUID()
122
+ let deviceName = UIDevice.current.name
123
+ let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String
124
+ ?? Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String
125
+ ?? "React Native App"
126
+ let bundleId = Bundle.main.bundleIdentifier ?? ""
127
+
128
+ return DeviceInfoResult(deviceId: deviceId, deviceName: deviceName, appName: appName, bundleId: bundleId)
129
+ }
130
+
131
+ func getStoredDeviceId() throws -> String? {
132
+ return UserDefaults.standard.string(forKey: deviceIdStorageKey)
133
+ }
134
+
135
+ func storeDeviceId(deviceId: String) throws {
136
+ UserDefaults.standard.set(deviceId, forKey: deviceIdStorageKey)
137
+ }
138
+
139
+ private func generateUUID() -> String {
140
+ return UUID().uuidString
141
+ }
142
+
143
+ // MARK: - Private Helpers
144
+
145
+ private func processLogOutput(_ output: String) {
146
+ // Split by newlines and process each line
147
+ let lines = output.components(separatedBy: .newlines)
148
+
149
+ for line in lines where !line.isEmpty {
150
+ let level = detectLogLevel(from: line)
151
+ let tag = extractTag(from: line)
152
+
153
+ let entry = NativeLogEntry(
154
+ level: level,
155
+ message: line,
156
+ tag: tag,
157
+ timestamp: Date().timeIntervalSince1970 * 1000
158
+ )
159
+
160
+ // Invoke callback on main thread for React Native
161
+ DispatchQueue.main.async { [weak self] in
162
+ self?.logCallback?(entry)
163
+ }
164
+ }
165
+ }
166
+
167
+ private func detectLogLevel(from line: String) -> NativeLogLevel {
168
+ let lowercased = line.lowercased()
169
+
170
+ if lowercased.contains("error") || lowercased.contains("fault") || lowercased.contains("❌") {
171
+ return .error
172
+ } else if lowercased.contains("warning") || lowercased.contains("warn") || lowercased.contains("⚠️") {
173
+ return .warn
174
+ } else if lowercased.contains("debug") || lowercased.contains("🔍") {
175
+ return .verbose
176
+ }
177
+ return .info
178
+ }
179
+
180
+ private func extractTag(from line: String) -> String {
181
+ // Try to extract subsystem/category from NSLog format
182
+ // Format: "timestamp process[pid:tid] message" or similar
183
+
184
+ // Try to match patterns like "[CategoryName]" at the start
185
+ let bracketPattern = #"^\[([^\]]+)\]"#
186
+ if let regex = try? NSRegularExpression(pattern: bracketPattern),
187
+ let match = regex.firstMatch(in: line, range: NSRange(line.startIndex..., in: line)),
188
+ let range = Range(match.range(at: 1), in: line) {
189
+ return String(line[range])
190
+ }
191
+
192
+ // Try to extract from NSLog format: "AppName[pid:tid]"
193
+ let nslogPattern = #"^[\d\-:\.\s]+([A-Za-z0-9_]+)\["#
194
+ if let regex = try? NSRegularExpression(pattern: nslogPattern),
195
+ let match = regex.firstMatch(in: line, range: NSRange(line.startIndex..., in: line)),
196
+ let range = Range(match.range(at: 1), in: line) {
197
+ return String(line[range])
198
+ }
199
+
200
+ return "native"
201
+ }
202
+
203
+ // MARK: - Performance Monitoring Methods
204
+
205
+ func startPerformanceMonitoring(onMetrics: @escaping (_ metrics: PerformanceMetrics) -> Void, intervalMs: Double?) throws -> Bool {
206
+ let interval = intervalMs.map { Int($0) } ?? 1000
207
+
208
+ return performanceMonitor.start(callback: { data in
209
+ let metrics = PerformanceMetrics(
210
+ uiFps: data.uiFps,
211
+ jsFps: data.jsFps,
212
+ memoryUsageMB: data.memoryUsageMB,
213
+ cpuUsagePercent: data.cpuUsagePercent
214
+ )
215
+ onMetrics(metrics)
216
+ }, intervalMs: interval)
217
+ }
218
+
219
+ func stopPerformanceMonitoring() throws {
220
+ performanceMonitor.stop()
221
+ }
222
+
223
+ func isPerformanceMonitoring() throws -> Bool {
224
+ return performanceMonitor.isRunning()
225
+ }
226
+
227
+ func getPerformanceSnapshot() throws -> PerformanceMetrics {
228
+ let data = performanceMonitor.getSnapshot()
229
+ return PerformanceMetrics(
230
+ uiFps: data.uiFps,
231
+ jsFps: data.jsFps,
232
+ memoryUsageMB: data.memoryUsageMB,
233
+ cpuUsagePercent: data.cpuUsagePercent
234
+ )
235
+ }
236
+
237
+ func recordJsFrame() throws {
238
+ performanceMonitor.recordJsFrame()
239
+ }
240
+
241
+ deinit {
242
+ try? stopLogCapture()
243
+ performanceMonitor.stop()
244
+ }
245
+ }