@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,162 @@
1
+ /**
2
+ * Component Handler
3
+ * Manages component render tracking and event creation
4
+ */
5
+
6
+ import type { ComponentRenderEvent, ComponentTreeEvent, ComponentTreeNode, MemoType } from '@salve-software/mako-types';
7
+ import type { ComponentHandlerConfig, ComponentRegistryEntry } from './types';
8
+ import type { ComponentRenderInfo, ComponentRenderCallbacks } from '../interceptors/react-devtools';
9
+ import { projectHandler } from '../project';
10
+ import { deviceHandler } from '../device';
11
+
12
+ export class ComponentHandler {
13
+ private registry = new Map<string, ComponentRegistryEntry>();
14
+ private config: ComponentHandlerConfig;
15
+ private treeSnapshotInterval: ReturnType<typeof setInterval> | null = null;
16
+
17
+ constructor(config: ComponentHandlerConfig) {
18
+ this.config = config;
19
+ }
20
+
21
+ getCallbacks(): ComponentRenderCallbacks {
22
+ return {
23
+ onComponentRender: this.handleComponentRender.bind(this),
24
+ };
25
+ }
26
+
27
+ private handleComponentRender(info: ComponentRenderInfo): void {
28
+ const { componentId, componentName, renderDuration, parentId, propsChanged, stateChanged, contextChanged, isMemoized, memoType } = info;
29
+
30
+ // Get or create registry entry
31
+ let entry = this.registry.get(componentId);
32
+ if (!entry) {
33
+ entry = {
34
+ id: componentId,
35
+ name: componentName,
36
+ renderCount: 0,
37
+ lastRenderTime: 0,
38
+ lastRenderTimestamp: 0,
39
+ totalRenderTime: 0,
40
+ parentId,
41
+ propsChangeCount: 0,
42
+ stateChangeCount: 0,
43
+ contextChangeCount: 0,
44
+ isMemoized,
45
+ memoType,
46
+ };
47
+ this.registry.set(componentId, entry);
48
+ }
49
+
50
+ // Update metrics
51
+ entry.renderCount++;
52
+ entry.lastRenderTime = renderDuration;
53
+ entry.lastRenderTimestamp = Date.now();
54
+ entry.totalRenderTime += renderDuration;
55
+
56
+ if (propsChanged) entry.propsChangeCount++;
57
+ if (stateChanged) entry.stateChangeCount++;
58
+ if (contextChanged) entry.contextChangeCount++;
59
+
60
+ // Send render event
61
+ const event: ComponentRenderEvent = {
62
+ type: 'component_render',
63
+ componentId,
64
+ componentName,
65
+ renderCount: entry.renderCount,
66
+ renderDuration,
67
+ timestamp: entry.lastRenderTimestamp,
68
+ parentId,
69
+ propsChanged,
70
+ stateChanged,
71
+ contextChanged,
72
+ isMemoized,
73
+ memoType: memoType as MemoType,
74
+ deviceId: deviceHandler.getDeviceInfo().deviceId,
75
+ projectId: projectHandler.getProjectId(),
76
+ };
77
+
78
+ this.config.onEvent(event);
79
+ }
80
+
81
+ startTreeSnapshots(intervalMs: number = 5000): void {
82
+ if (this.treeSnapshotInterval) {
83
+ console.warn('[Mako] Component tree snapshots already running');
84
+ return;
85
+ }
86
+
87
+ this.treeSnapshotInterval = setInterval(() => {
88
+ this.sendTreeSnapshot();
89
+ }, intervalMs);
90
+
91
+ // Send initial snapshot
92
+ this.sendTreeSnapshot();
93
+ }
94
+
95
+ stopTreeSnapshots(): void {
96
+ if (this.treeSnapshotInterval) {
97
+ clearInterval(this.treeSnapshotInterval);
98
+ this.treeSnapshotInterval = null;
99
+ }
100
+ }
101
+
102
+ private sendTreeSnapshot(): void {
103
+ const tree: ComponentTreeNode[] = [];
104
+ const depthMap = new Map<string, number>();
105
+
106
+ // Calculate depth for each component
107
+ for (const entry of this.registry.values()) {
108
+ const depth = this.calculateDepth(entry.id, depthMap);
109
+ depthMap.set(entry.id, depth);
110
+ }
111
+
112
+ // Build tree nodes
113
+ for (const entry of this.registry.values()) {
114
+ const children = this.getChildrenIds(entry.id);
115
+ const depth = depthMap.get(entry.id) ?? 0;
116
+
117
+ tree.push({
118
+ id: entry.id,
119
+ name: entry.name,
120
+ parentId: entry.parentId,
121
+ children,
122
+ depth,
123
+ });
124
+ }
125
+
126
+ const event: ComponentTreeEvent = {
127
+ type: 'component_tree',
128
+ tree,
129
+ timestamp: Date.now(),
130
+ deviceId: deviceHandler.getDeviceInfo().deviceId,
131
+ projectId: projectHandler.getProjectId(),
132
+ };
133
+
134
+ this.config.onEvent(event);
135
+ }
136
+
137
+ private calculateDepth(componentId: string, depthMap: Map<string, number>): number {
138
+ const cached = depthMap.get(componentId);
139
+ if (cached !== undefined) return cached;
140
+
141
+ const entry = this.registry.get(componentId);
142
+ if (!entry || !entry.parentId) return 0;
143
+
144
+ const parentDepth = this.calculateDepth(entry.parentId, depthMap);
145
+ return parentDepth + 1;
146
+ }
147
+
148
+ private getChildrenIds(parentId: string): string[] {
149
+ const children: string[] = [];
150
+ for (const entry of this.registry.values()) {
151
+ if (entry.parentId === parentId) {
152
+ children.push(entry.id);
153
+ }
154
+ }
155
+ return children;
156
+ }
157
+
158
+ clear(): void {
159
+ this.registry.clear();
160
+ this.stopTreeSnapshots();
161
+ }
162
+ }
@@ -0,0 +1,3 @@
1
+ export * from './component-handler';
2
+ export * from './types';
3
+ export * from './utils';
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Component Handler Types
3
+ */
4
+
5
+ import type { ComponentRenderEvent, ComponentTreeEvent } from '@salve-software/mako-types';
6
+
7
+ export interface ComponentHandlerConfig {
8
+ onEvent: (event: ComponentRenderEvent | ComponentTreeEvent) => void;
9
+ }
10
+
11
+ export interface ComponentRegistryEntry {
12
+ id: string;
13
+ name: string;
14
+ renderCount: number;
15
+ lastRenderTime: number;
16
+ lastRenderTimestamp: number;
17
+ totalRenderTime: number;
18
+ parentId: string | null;
19
+ propsChangeCount: number;
20
+ stateChangeCount: number;
21
+ contextChangeCount: number;
22
+ isMemoized: boolean;
23
+ memoType: string;
24
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Component Handler Utilities
3
+ */
4
+
5
+ import type { MemoType } from '@salve-software/mako-types';
6
+
7
+ /**
8
+ * Generate a unique component instance ID
9
+ */
10
+ export function generateComponentId(): string {
11
+ return `comp_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
12
+ }
13
+
14
+ /**
15
+ * Detect memoization type from component info
16
+ */
17
+ export function detectMemoType(
18
+ isMemoized: boolean,
19
+ memoType: MemoType
20
+ ): MemoType {
21
+ if (!isMemoized) return 'none';
22
+ return memoType;
23
+ }
@@ -0,0 +1,86 @@
1
+ jest.mock('react-native', () => ({
2
+ Platform: {
3
+ OS: 'ios',
4
+ },
5
+ }));
6
+
7
+ import { Platform } from 'react-native';
8
+
9
+ import { DeviceHandler } from '../device-handler';
10
+
11
+ import { NitroMako } from '../../../index';
12
+
13
+ import { generateUUID } from '../utils/generate-uuid';
14
+
15
+ jest.mock('../../../index', () => ({
16
+ NitroMako: {
17
+ getDeviceInfo: jest.fn(),
18
+ getStoredDeviceId: jest.fn(),
19
+ storeDeviceId: jest.fn(),
20
+ },
21
+ }));
22
+
23
+ jest.mock('../utils/generate-uuid', () => ({
24
+ generateUUID: jest.fn(),
25
+ }));
26
+
27
+ describe('DeviceHandler', () => {
28
+ beforeEach(() => {
29
+ jest.clearAllMocks();
30
+
31
+ (
32
+ generateUUID as jest.Mock
33
+ ).mockReturnValue('generated-uuid');
34
+ });
35
+
36
+ it('should fallback to iOS device name', () => {
37
+ Platform.OS = 'ios';
38
+
39
+ (
40
+ NitroMako.getDeviceInfo as jest.Mock
41
+ ).mockReturnValue({});
42
+
43
+ const handler = new DeviceHandler();
44
+
45
+ expect(
46
+ handler.getDeviceName(),
47
+ ).toBe('iOS Device');
48
+ });
49
+
50
+ it('should fallback to Android device name', () => {
51
+ Platform.OS = 'android';
52
+
53
+ (
54
+ NitroMako.getDeviceInfo as jest.Mock
55
+ ).mockReturnValue({});
56
+
57
+ const handler = new DeviceHandler();
58
+
59
+ expect(
60
+ handler.getDeviceName(),
61
+ ).toBe('Android Device');
62
+ });
63
+
64
+ it('should return platform in device info', () => {
65
+ Platform.OS = 'android';
66
+
67
+ (
68
+ NitroMako.getDeviceInfo as jest.Mock
69
+ ).mockReturnValue({
70
+ deviceId: 'id',
71
+ deviceName: 'Pixel',
72
+ appName: 'App',
73
+ bundleId: 'com.test',
74
+ });
75
+
76
+ const handler = new DeviceHandler();
77
+
78
+ expect(handler.getDeviceInfo()).toEqual({
79
+ deviceId: 'id',
80
+ deviceName: 'Pixel',
81
+ platform: 'android',
82
+ appName: 'App',
83
+ bundleId: 'com.test',
84
+ });
85
+ });
86
+ });
@@ -0,0 +1,85 @@
1
+ import { Platform } from 'react-native'
2
+ import { NitroMako } from '../../index'
3
+ import { generateUUID } from './utils/generate-uuid'
4
+ import type { DeviceInfoData } from './types'
5
+
6
+ export class DeviceHandler {
7
+ private cachedDeviceId: string | null = null
8
+ private cachedDeviceName: string | null = null
9
+
10
+ private getOrCreateDeviceId(): string {
11
+ if (this.cachedDeviceId) {
12
+ return this.cachedDeviceId
13
+ }
14
+
15
+ try {
16
+ const nativeInfo = NitroMako.getDeviceInfo()
17
+ if (nativeInfo.deviceId) {
18
+ this.cachedDeviceId = nativeInfo.deviceId
19
+ return nativeInfo.deviceId
20
+ }
21
+
22
+ const storedId = NitroMako.getStoredDeviceId()
23
+ if (storedId) {
24
+ this.cachedDeviceId = storedId
25
+ return storedId
26
+ }
27
+
28
+ const newId = generateUUID()
29
+ NitroMako.storeDeviceId(newId)
30
+ this.cachedDeviceId = newId
31
+ return newId
32
+ } catch (err) {
33
+ this.cachedDeviceId = generateUUID()
34
+ return this.cachedDeviceId
35
+ }
36
+ }
37
+
38
+ getDeviceName(): string {
39
+ if (this.cachedDeviceName) {
40
+ return this.cachedDeviceName
41
+ }
42
+
43
+ const nativeInfo = NitroMako.getDeviceInfo()
44
+ if (nativeInfo.deviceName) {
45
+ this.cachedDeviceName = nativeInfo.deviceName
46
+ return nativeInfo.deviceName
47
+ }
48
+
49
+ const model = Platform.OS === 'ios' ? 'iOS Device' : 'Android Device'
50
+ this.cachedDeviceName = model
51
+ return model
52
+ }
53
+
54
+ getAppName(): string {
55
+ try {
56
+ const nativeInfo = NitroMako.getDeviceInfo()
57
+ return nativeInfo.appName || 'React Native App'
58
+ } catch {
59
+ return 'React Native App'
60
+ }
61
+ }
62
+
63
+ getBundleId(): string {
64
+ try {
65
+ const nativeInfo = NitroMako.getDeviceInfo()
66
+ return nativeInfo.bundleId || ''
67
+ } catch {
68
+ return ''
69
+ }
70
+ }
71
+
72
+ getDeviceInfo(): DeviceInfoData {
73
+ const deviceId = this.getOrCreateDeviceId()
74
+ const deviceName = this.getDeviceName()
75
+ const appName = this.getAppName()
76
+
77
+ return {
78
+ deviceId,
79
+ deviceName,
80
+ platform: Platform.OS as 'ios' | 'android',
81
+ appName,
82
+ bundleId: this.getBundleId(),
83
+ }
84
+ }
85
+ }
@@ -0,0 +1,3 @@
1
+ import { DeviceHandler } from './device-handler'
2
+
3
+ export const deviceHandler = new DeviceHandler()
@@ -0,0 +1,7 @@
1
+ export interface DeviceInfoData {
2
+ deviceId: string;
3
+ deviceName: string;
4
+ platform: 'ios' | 'android';
5
+ appName: string;
6
+ bundleId: string;
7
+ }
@@ -0,0 +1,7 @@
1
+ export function generateUUID(): string {
2
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
3
+ const r = (Math.random() * 16) | 0;
4
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
5
+ return v.toString(16);
6
+ });
7
+ }
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Mako SDK for React Native
3
+ *
4
+ * Captures network requests and sends them to the Mako macOS app
5
+ * for debugging and inspection.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { Mako } from 'mako-react-native';
10
+ *
11
+ * if (__DEV__) {
12
+ * Mako.connect({
13
+ * host: 'localhost',
14
+ * port: 8765,
15
+ * });
16
+ * }
17
+ * ```
18
+ */
19
+
20
+ import { client } from './client'
21
+ import type { MakoConfig } from './types'
22
+
23
+ /**
24
+ * Mako SDK main interface
25
+ */
26
+ export default {
27
+ /**
28
+ * Connect to Mako macOS app
29
+ *
30
+ * @param config - Configuration options
31
+ * @example
32
+ * ```typescript
33
+ * Mako.connect({
34
+ * host: '192.168.1.100', // Mac IP address
35
+ * port: 8765,
36
+ * enableNetworkCapture: true,
37
+ * ignoredUrls: [/my-internal-api/],
38
+ * onConnect: () => console.log('Connected to Mako'),
39
+ * onDisconnect: () => console.log('Disconnected from Mako'),
40
+ * });
41
+ * ```
42
+ */
43
+ connect(config?: MakoConfig): void {
44
+ client.connect(config)
45
+ },
46
+
47
+ /**
48
+ * Disconnect from Mako macOS app
49
+ */
50
+ disconnect(): void {
51
+ client.disconnect()
52
+ },
53
+
54
+ /**
55
+ * Check if currently connected to Mako
56
+ */
57
+ isConnected(): boolean {
58
+ return client.isConnected()
59
+ },
60
+
61
+ /**
62
+ * Send a log message (info level)
63
+ * @param message - The log message
64
+ * @param metadata - Optional metadata object
65
+ */
66
+ log(message: string, metadata?: Record<string, unknown>): void {
67
+ client.sendLog('info', message, metadata)
68
+ },
69
+
70
+ /**
71
+ * Send a debug log message
72
+ * @param message - The log message
73
+ * @param metadata - Optional metadata object
74
+ */
75
+ debug(message: string, metadata?: Record<string, unknown>): void {
76
+ client.sendLog('debug', message, metadata)
77
+ },
78
+
79
+ /**
80
+ * Send an info log message
81
+ * @param message - The log message
82
+ * @param metadata - Optional metadata object
83
+ */
84
+ info(message: string, metadata?: Record<string, unknown>): void {
85
+ client.sendLog('info', message, metadata)
86
+ },
87
+
88
+ /**
89
+ * Send a warning log message
90
+ * @param message - The log message
91
+ * @param metadata - Optional metadata object
92
+ */
93
+ warn(message: string, metadata?: Record<string, unknown>): void {
94
+ client.sendLog('warn', message, metadata)
95
+ },
96
+
97
+ /**
98
+ * Send an error log message
99
+ * @param message - The log message
100
+ * @param metadata - Optional metadata object
101
+ */
102
+ error(message: string, metadata?: Record<string, unknown>): void {
103
+ client.sendLog('error', message, metadata)
104
+ },
105
+
106
+ /**
107
+ * Stop capturing native platform logs (NSLog/print on iOS, Logcat on Android)
108
+ * Native log capture starts automatically on connect()
109
+ */
110
+ stopNativeLogCapture(): void {
111
+ client.stopNativeLogCapture()
112
+ },
113
+
114
+ /**
115
+ * Check if native log capture is currently active
116
+ * @returns true if native log capture is enabled
117
+ */
118
+ isNativeLogCaptureEnabled(): boolean {
119
+ return client.isNativeLogCaptureEnabled()
120
+ },
121
+
122
+ /**
123
+ * Start component inspector to track React component renders
124
+ * @returns true if successfully enabled
125
+ */
126
+ startComponentInspector(): boolean {
127
+ return client.startComponentInspector()
128
+ },
129
+
130
+ /**
131
+ * Stop component inspector
132
+ */
133
+ stopComponentInspector(): void {
134
+ client.stopComponentInspector()
135
+ },
136
+
137
+ /**
138
+ * Check if component inspector is currently active
139
+ * @returns true if component inspector is enabled
140
+ */
141
+ isComponentInspectorEnabled(): boolean {
142
+ return client.isComponentInspectorEnabled()
143
+ },
144
+
145
+ /**
146
+ * Start performance monitoring to track FPS, memory, and CPU
147
+ * @returns true if successfully enabled
148
+ */
149
+ startPerformanceMonitoring(): boolean {
150
+ return client.startPerformanceMonitoring()
151
+ },
152
+
153
+ /**
154
+ * Stop performance monitoring
155
+ */
156
+ stopPerformanceMonitoring(): void {
157
+ client.stopPerformanceMonitoring()
158
+ },
159
+
160
+ /**
161
+ * Check if performance monitoring is currently active
162
+ * @returns true if performance monitoring is enabled
163
+ */
164
+ isPerformanceMonitoringEnabled(): boolean {
165
+ return client.isPerformanceMonitoringEnabled()
166
+ },
167
+ }
168
+
169
+ // Export types for consumers
170
+ export type {
171
+ MakoConfig,
172
+ NetworkRequestEvent,
173
+ NetworkResponseEvent,
174
+ NetworkEvent,
175
+ LogEvent,
176
+ NativeLogEvent,
177
+ LogLevel,
178
+ LogSource,
179
+ NativeLogSource,
180
+ ComponentRenderEvent,
181
+ ComponentTreeEvent,
182
+ PerformanceMetricsEvent,
183
+ } from './types'