@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,85 @@
1
+ import { responseToString } from '../response-to-string'
2
+
3
+ describe('responseToString', () => {
4
+ it('should return xhr.responseText when available', () => {
5
+ const xhr = {
6
+ responseText: 'xhr response',
7
+ } as XMLHttpRequest
8
+
9
+ const result = responseToString('fallback', xhr)
10
+
11
+ expect(result).toBe('xhr response')
12
+ })
13
+
14
+ it('should fallback to response string when responseText is empty', () => {
15
+ const xhr = {
16
+ responseText: '',
17
+ } as XMLHttpRequest
18
+
19
+ const result = responseToString('response body', xhr)
20
+
21
+ expect(result).toBe('response body')
22
+ })
23
+
24
+ it('should stringify object responses', () => {
25
+ const xhr = {
26
+ responseText: '',
27
+ } as XMLHttpRequest
28
+
29
+ const response = {
30
+ name: 'Gabriel',
31
+ age: 25,
32
+ }
33
+
34
+ const result = responseToString(response, xhr)
35
+
36
+ expect(result).toBe(JSON.stringify(response, null, 2))
37
+ })
38
+
39
+ it('should return String(response) when JSON.stringify throws', () => {
40
+ const xhr = {
41
+ responseText: '',
42
+ } as XMLHttpRequest
43
+
44
+ const circular: any = {}
45
+ circular.self = circular
46
+
47
+ const result = responseToString(circular, xhr)
48
+
49
+ expect(result).toBe('[object Object]')
50
+ })
51
+
52
+ it('should return undefined when response is null', () => {
53
+ const xhr = {
54
+ responseText: '',
55
+ } as XMLHttpRequest
56
+
57
+ const result = responseToString(null, xhr)
58
+
59
+ expect(result).toBeUndefined()
60
+ })
61
+
62
+ it('should return undefined when response is undefined', () => {
63
+ const xhr = {
64
+ responseText: '',
65
+ } as XMLHttpRequest
66
+
67
+ const result = responseToString(undefined, xhr)
68
+
69
+ expect(result).toBeUndefined()
70
+ })
71
+
72
+ it('should fallback when accessing responseText throws', () => {
73
+ const xhr = {} as XMLHttpRequest
74
+
75
+ Object.defineProperty(xhr, 'responseText', {
76
+ get() {
77
+ throw new Error('Invalid responseType')
78
+ },
79
+ })
80
+
81
+ const result = responseToString('fallback response', xhr)
82
+
83
+ expect(result).toBe('fallback response')
84
+ })
85
+ })
@@ -0,0 +1,45 @@
1
+ import { shouldIgnoreUrl } from '../should-ignore-url'
2
+
3
+ describe('shouldIgnoreUrl', () => {
4
+ it('should return true when url matches a pattern', () => {
5
+ const patterns = [/google\.com/, /facebook\.com/]
6
+
7
+ const result = shouldIgnoreUrl('https://google.com/search', patterns)
8
+
9
+ expect(result).toBe(true)
10
+ })
11
+
12
+ it('should return false when url does not match any pattern', () => {
13
+ const patterns = [/google\.com/, /facebook\.com/]
14
+
15
+ const result = shouldIgnoreUrl('https://github.com', patterns)
16
+
17
+ expect(result).toBe(false)
18
+ })
19
+
20
+ it('should return false when patterns array is empty', () => {
21
+ const result = shouldIgnoreUrl('https://google.com', [])
22
+
23
+ expect(result).toBe(false)
24
+ })
25
+
26
+ it('should stop checking after first matching pattern', () => {
27
+ const firstPattern = {
28
+ test: jest.fn().mockReturnValue(true),
29
+ }
30
+
31
+ const secondPattern = {
32
+ test: jest.fn(),
33
+ }
34
+
35
+ const result = shouldIgnoreUrl('https://example.com', [
36
+ firstPattern as unknown as RegExp,
37
+ secondPattern as unknown as RegExp,
38
+ ])
39
+
40
+ expect(result).toBe(true)
41
+
42
+ expect(firstPattern.test).toHaveBeenCalled()
43
+ expect(secondPattern.test).not.toHaveBeenCalled()
44
+ })
45
+ })
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generate unique request ID for network tracking
3
+ */
4
+ export function generateRequestId(): string {
5
+ return `${Date.now()}-${Math.random().toString(36).substring(2, 11)}`;
6
+ }
@@ -0,0 +1,5 @@
1
+ export { generateRequestId } from './generate-request-id';
2
+ export { parseResponseHeaders } from './parse-response-headers';
3
+ export { shouldIgnoreUrl } from './should-ignore-url';
4
+ export { readBlobAsText } from './read-blob-as-text';
5
+ export { responseToString } from './response-to-string';
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Parse HTTP response headers string into object
3
+ */
4
+ export function parseResponseHeaders(headersString: string): Record<string, string> {
5
+ const headers: Record<string, string> = {};
6
+ if (!headersString) return headers;
7
+
8
+ const lines = headersString.trim().split(/[\r\n]+/);
9
+ for (const line of lines) {
10
+ const colonIndex = line.indexOf(':');
11
+ if (colonIndex > 0) {
12
+ const key = line.substring(0, colonIndex).trim();
13
+ const value = line.substring(colonIndex + 1).trim();
14
+ if (key) {
15
+ headers[key] = value;
16
+ }
17
+ }
18
+ }
19
+ return headers;
20
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Read Blob as text using FileReader
3
+ */
4
+ export function readBlobAsText(blob: Blob): Promise<string | undefined> {
5
+ return new Promise((resolve) => {
6
+ const reader = new FileReader();
7
+ reader.onloadend = () => resolve(reader.result as string);
8
+ reader.onerror = () => resolve(undefined);
9
+ reader.readAsText(blob);
10
+ });
11
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Convert response body to string
3
+ */
4
+ export function responseToString(
5
+ response: unknown,
6
+ xhr: XMLHttpRequest
7
+ ): string | undefined {
8
+ // Try xhr.responseText first (most reliable)
9
+ try {
10
+ if (xhr.responseText) {
11
+ return xhr.responseText;
12
+ }
13
+ } catch {
14
+ // responseText may throw if responseType is not '' or 'text'
15
+ }
16
+
17
+ // Fallback: convert response parameter
18
+ if (response !== null && response !== undefined) {
19
+ if (typeof response === 'string') {
20
+ return response;
21
+ }
22
+ if (typeof response === 'object') {
23
+ try {
24
+ return JSON.stringify(response, null, 2);
25
+ } catch {
26
+ return String(response);
27
+ }
28
+ }
29
+ }
30
+
31
+ return undefined;
32
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Check if URL should be ignored based on patterns
3
+ */
4
+ export function shouldIgnoreUrl(url: string, patterns: RegExp[]): boolean {
5
+ return patterns.some((pattern) => pattern.test(url));
6
+ }
@@ -0,0 +1,2 @@
1
+ export { PerformanceHandler } from './performance-handler'
2
+ export type { PerformanceHandlerConfig, PerformanceMetricsEvent } from './types'
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Performance monitoring handler
3
+ * Tracks JS thread responsiveness and forwards native performance metrics
4
+ */
5
+
6
+ import type { NitroMako as NitroMakoSpec } from '../../specs/mako.nitro'
7
+ import type { PerformanceHandlerConfig, PerformanceMetricsEvent } from './types'
8
+
9
+ export class PerformanceHandler {
10
+ private nitroMako: NitroMakoSpec
11
+ private onEvent: (event: PerformanceMetricsEvent) => void
12
+ private intervalMs: number
13
+ private isMonitoring = false
14
+ private jsFrameInterval: ReturnType<typeof setInterval> | null = null
15
+
16
+ constructor(config: PerformanceHandlerConfig) {
17
+ this.nitroMako = config.nitroMako
18
+ this.onEvent = config.onEvent
19
+ this.intervalMs = config.intervalMs ?? 1000
20
+ }
21
+
22
+ /**
23
+ * Start monitoring performance metrics
24
+ */
25
+ start(): boolean {
26
+ if (this.isMonitoring) {
27
+ console.warn('[Mako] Performance monitoring already enabled')
28
+ return false
29
+ }
30
+
31
+ try {
32
+ // Start native performance monitoring
33
+ const success = this.nitroMako.startPerformanceMonitoring((metrics) => {
34
+ this.handleMetrics(metrics)
35
+ }, this.intervalMs)
36
+
37
+ if (success) {
38
+ this.isMonitoring = true
39
+
40
+ // Start JS frame tracking - call recordJsFrame every 16ms (~60fps)
41
+ this.jsFrameInterval = setInterval(() => {
42
+ try {
43
+ this.nitroMako.recordJsFrame()
44
+ } catch (error) {
45
+ console.error('[Mako] Failed to record JS frame:', error)
46
+ }
47
+ }, 16)
48
+
49
+ console.log('[Mako] Performance monitoring enabled')
50
+ }
51
+ return success
52
+ } catch (error) {
53
+ console.error('[Mako] Failed to start performance monitoring:', error)
54
+ return false
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Stop monitoring performance metrics
60
+ */
61
+ stop(): void {
62
+ if (!this.isMonitoring) return
63
+
64
+ try {
65
+ // Stop JS frame tracking
66
+ if (this.jsFrameInterval) {
67
+ clearInterval(this.jsFrameInterval)
68
+ this.jsFrameInterval = null
69
+ }
70
+
71
+ // Stop native monitoring
72
+ this.nitroMako.stopPerformanceMonitoring()
73
+ this.isMonitoring = false
74
+ console.log('[Mako] Performance monitoring disabled')
75
+ } catch (error) {
76
+ console.error('[Mako] Failed to stop performance monitoring:', error)
77
+ }
78
+ }
79
+
80
+ /**
81
+ * Check if performance monitoring is active
82
+ */
83
+ isActive(): boolean {
84
+ return this.isMonitoring
85
+ }
86
+
87
+ private handleMetrics(metrics: {
88
+ uiFps: number
89
+ jsFps: number
90
+ memoryUsageMB: number
91
+ cpuUsagePercent: number
92
+ }): void {
93
+ const event: PerformanceMetricsEvent = {
94
+ type: 'performance_metrics',
95
+ timestamp: Date.now(),
96
+ uiFps: metrics.uiFps,
97
+ jsFps: metrics.jsFps,
98
+ memoryUsage: metrics.memoryUsageMB,
99
+ cpuUsage: metrics.cpuUsagePercent,
100
+ }
101
+
102
+ this.onEvent(event)
103
+ }
104
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Performance handler types
3
+ */
4
+
5
+ import type { NitroMako as NitroMakoSpec } from '../../specs/mako.nitro'
6
+
7
+ export interface PerformanceHandlerConfig {
8
+ nitroMako: NitroMakoSpec
9
+ onEvent: (event: PerformanceMetricsEvent) => void
10
+ intervalMs?: number
11
+ }
12
+
13
+ export interface PerformanceMetricsEvent {
14
+ type: 'performance_metrics'
15
+ timestamp: number
16
+ deviceId?: string
17
+ projectId?: string
18
+ uiFps: number
19
+ jsFps: number
20
+ memoryUsage: number
21
+ cpuUsage: number
22
+ }
@@ -0,0 +1,4 @@
1
+ import { ProjectHandler } from './project-handler'
2
+
3
+ export { ProjectHandler }
4
+ export const projectHandler = new ProjectHandler()
@@ -0,0 +1,28 @@
1
+ import { deviceHandler } from '../device'
2
+ import type { ProjectInfoEvent } from '../types'
3
+
4
+ export class ProjectHandler {
5
+ private cachedProjectId: string | null = null
6
+
7
+ getProjectId(): string {
8
+ if (this.cachedProjectId) {
9
+ return this.cachedProjectId
10
+ }
11
+ // Use bundleId as projectId - it's already unique per app
12
+ const bundleId = deviceHandler.getBundleId()
13
+ this.cachedProjectId = bundleId
14
+ return bundleId
15
+ }
16
+
17
+ getProjectInfo(): Omit<ProjectInfoEvent, 'type'> {
18
+ const projectId = this.getProjectId()
19
+ const appName = deviceHandler.getAppName()
20
+ const bundleId = deviceHandler.getBundleId()
21
+
22
+ return {
23
+ projectId,
24
+ appName,
25
+ bundleId,
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Mako SDK Types
3
+ */
4
+
5
+ // Re-export shared event types from @mako/types
6
+ export type {
7
+ LogLevel,
8
+ LogSource,
9
+ NativeLogSource,
10
+ LogEvent,
11
+ NativeLogEvent,
12
+ NetworkStage,
13
+ NetworkRequestEvent,
14
+ NetworkResponseEvent,
15
+ NetworkEvent,
16
+ DeviceInfoEvent,
17
+ ProjectInfoEvent,
18
+ ComponentRenderEvent,
19
+ ComponentTreeEvent,
20
+ PerformanceMetricsEvent,
21
+ EventType,
22
+ MakoEvent,
23
+ } from '@salve-software/mako-types';
24
+
25
+ // ============================================
26
+ // SDK Configuration (SDK-specific)
27
+ // ============================================
28
+
29
+ export interface MakoConfig {
30
+ /** Host IP/hostname of the Mako macOS app (default: 'localhost') */
31
+ host?: string;
32
+ /** WebSocket port (default: 8765) */
33
+ port?: number;
34
+ /** Enable network request/response capture (default: true) */
35
+ enableNetworkCapture?: boolean;
36
+ /** Enable component inspector for React render tracking (default: false) */
37
+ enableComponentInspector?: boolean;
38
+ /** Enable performance monitoring for FPS, memory, and CPU tracking (default: false) */
39
+ enablePerformanceMonitoring?: boolean;
40
+ /** URL patterns to ignore (default includes Metro bundler URLs) */
41
+ ignoredUrls?: RegExp[];
42
+ /** Callback when connected to Mako */
43
+ onConnect?: () => void;
44
+ /** Callback when disconnected from Mako */
45
+ onDisconnect?: () => void;
46
+ /** Callback on connection error */
47
+ onError?: (error: Error) => void;
48
+ }
49
+
50
+ // ============================================
51
+ // Internal Types (SDK-specific)
52
+ // ============================================
53
+
54
+ export interface PendingRequest {
55
+ id: string;
56
+ method: string;
57
+ url: string;
58
+ headers: Record<string, string>;
59
+ body?: string;
60
+ startTime: number;
61
+ responseHeaders?: Record<string, string>;
62
+ }
63
+
64
+ export interface NetworkCallbacks {
65
+ onOpen: (method: string, url: string, xhr: XMLHttpRequest) => void;
66
+ onSend: (data: unknown, xhr: XMLHttpRequest) => void;
67
+ onRequestHeader: (header: string, value: string, xhr: XMLHttpRequest) => void;
68
+ onHeaderReceived: (
69
+ responseContentType: string | undefined,
70
+ responseSize: number | undefined,
71
+ responseHeaders: string,
72
+ xhr: XMLHttpRequest
73
+ ) => void;
74
+ onResponse: (
75
+ status: number,
76
+ timeout: boolean,
77
+ response: unknown,
78
+ responseURL: string,
79
+ responseType: string,
80
+ xhr: XMLHttpRequest
81
+ ) => void;
82
+ }
@@ -0,0 +1,114 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules'
2
+
3
+ /**
4
+ * Log level for native logs
5
+ * Note: Using 'verbose' instead of 'debug' to avoid conflict with iOS DEBUG preprocessor macro
6
+ */
7
+ export type NativeLogLevel = 'verbose' | 'info' | 'warn' | 'error'
8
+
9
+ /**
10
+ * Native log entry received from iOS/Android
11
+ */
12
+ export interface NativeLogEntry {
13
+ level: NativeLogLevel
14
+ message: string
15
+ tag: string
16
+ timestamp: number
17
+ }
18
+
19
+ /**
20
+ * Callback type for receiving native logs
21
+ */
22
+ export type NativeLogCallback = (log: NativeLogEntry) => void
23
+
24
+ /**
25
+ * Device information result from native APIs
26
+ */
27
+ export interface DeviceInfoResult {
28
+ deviceId: string
29
+ deviceName: string
30
+ appName: string
31
+ bundleId: string
32
+ }
33
+
34
+ /**
35
+ * Performance metrics snapshot from native APIs
36
+ */
37
+ export interface PerformanceMetrics {
38
+ uiFps: number
39
+ jsFps: number
40
+ memoryUsageMB: number
41
+ cpuUsagePercent: number
42
+ }
43
+
44
+ /**
45
+ * Callback type for receiving performance metrics
46
+ */
47
+ export type PerformanceMetricsCallback = (metrics: PerformanceMetrics) => void
48
+
49
+ export interface NitroMako extends HybridObject<{ ios: 'swift', android: 'kotlin' }> {
50
+ sum(num1: number, num2: number): number
51
+
52
+ /**
53
+ * Start capturing native platform logs (NSLog/print on iOS, Logcat on Android)
54
+ * @param onLog Callback invoked for each captured log entry
55
+ * @returns true if capture started successfully
56
+ */
57
+ startLogCapture(onLog: NativeLogCallback): boolean
58
+
59
+ /**
60
+ * Stop capturing native platform logs
61
+ */
62
+ stopLogCapture(): void
63
+
64
+ /**
65
+ * Check if log capture is currently active
66
+ */
67
+ isCapturing(): boolean
68
+
69
+ /**
70
+ * Get device information using native APIs
71
+ * @returns Device info including deviceId, deviceName, appName, and bundleId
72
+ */
73
+ getDeviceInfo(): DeviceInfoResult
74
+
75
+ /**
76
+ * Get stored device ID from native storage (UserDefaults/SharedPreferences)
77
+ * @returns The stored device ID or undefined if not found
78
+ */
79
+ getStoredDeviceId(): string | undefined
80
+
81
+ /**
82
+ * Store device ID in native storage (UserDefaults/SharedPreferences)
83
+ * @param deviceId The device ID to store
84
+ */
85
+ storeDeviceId(deviceId: string): void
86
+
87
+ /**
88
+ * Start monitoring performance metrics (FPS, memory, CPU)
89
+ * @param onMetrics Callback invoked with performance snapshot
90
+ * @param intervalMs How often to report metrics (in milliseconds, default 1000)
91
+ * @returns true if monitoring started successfully
92
+ */
93
+ startPerformanceMonitoring(onMetrics: PerformanceMetricsCallback, intervalMs?: number): boolean
94
+
95
+ /**
96
+ * Stop monitoring performance metrics
97
+ */
98
+ stopPerformanceMonitoring(): void
99
+
100
+ /**
101
+ * Check if performance monitoring is currently active
102
+ */
103
+ isPerformanceMonitoring(): boolean
104
+
105
+ /**
106
+ * Get current performance metrics snapshot (without starting monitoring)
107
+ */
108
+ getPerformanceSnapshot(): PerformanceMetrics
109
+
110
+ /**
111
+ * Record a JS frame tick (called from JS to track JS thread responsiveness)
112
+ */
113
+ recordJsFrame(): void
114
+ }