@tamagui/cli 1.1.12 → 1.1.13

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 (302) hide show
  1. package/dist/cjs/cli.js +8 -0
  2. package/dist/cjs/cli.js.map +2 -2
  3. package/dist/cjs/dev.js +76 -58
  4. package/dist/cjs/dev.js.map +3 -3
  5. package/dist/cjs/index.js +6 -0
  6. package/dist/cjs/index.js.map +2 -2
  7. package/dist/cjs/studio.js +12 -9
  8. package/dist/cjs/studio.js.map +2 -2
  9. package/dist/cjs/tamaguiConfigUtils.js +14 -5
  10. package/dist/cjs/tamaguiConfigUtils.js.map +2 -2
  11. package/dist/cjs/utils.js +16 -18
  12. package/dist/cjs/utils.js.map +2 -2
  13. package/dist/esm/cli.js +9 -1
  14. package/dist/esm/cli.js.map +2 -2
  15. package/dist/esm/dev.js +75 -57
  16. package/dist/esm/dev.js.map +3 -3
  17. package/dist/esm/index.js +6 -0
  18. package/dist/esm/index.js.map +2 -2
  19. package/dist/esm/studio.js +12 -9
  20. package/dist/esm/studio.js.map +2 -2
  21. package/dist/esm/tamaguiConfigUtils.js +14 -5
  22. package/dist/esm/tamaguiConfigUtils.js.map +2 -2
  23. package/dist/esm/utils.js +13 -16
  24. package/dist/esm/utils.js.map +2 -2
  25. package/package.json +19 -6
  26. package/src/cli.ts +9 -1
  27. package/src/dev/createDevServer.ts +239 -0
  28. package/src/dev.ts +94 -70
  29. package/src/index.ts +8 -0
  30. package/src/studio.ts +14 -9
  31. package/src/tamaguiConfigUtils.ts +16 -5
  32. package/src/utils/constants.ts +1 -0
  33. package/src/utils.ts +14 -15
  34. package/src/vendor/debugger-app/index.d.ts +2 -0
  35. package/src/vendor/debugger-app/index.js +3 -0
  36. package/src/vendor/debugger-app/public/index.html +49 -0
  37. package/src/vendor/debugger-app/src/assets/blue-icon.png +0 -0
  38. package/src/vendor/debugger-app/src/assets/gray-icon.png +0 -0
  39. package/src/vendor/debugger-app/src/assets/orange-icon.png +0 -0
  40. package/src/vendor/debugger-app/src/debuggerWorker.js +84 -0
  41. package/src/vendor/debugger-app/src/index.css +37 -0
  42. package/src/vendor/debugger-app/src/index.js +195 -0
  43. package/src/vendor/debugger-app/webpack.config.cjs +73 -0
  44. package/src/vendor/repack/dev-server/src/createServer.ts +127 -0
  45. package/src/vendor/repack/dev-server/src/img/favicon.ico +0 -0
  46. package/src/vendor/repack/dev-server/src/index.ts +2 -0
  47. package/src/vendor/repack/dev-server/src/plugins/api/apiPlugin.ts +50 -0
  48. package/src/vendor/repack/dev-server/src/plugins/api/index.ts +1 -0
  49. package/src/vendor/repack/dev-server/src/plugins/compiler/compilerPlugin.ts +84 -0
  50. package/src/vendor/repack/dev-server/src/plugins/compiler/index.ts +2 -0
  51. package/src/vendor/repack/dev-server/src/plugins/compiler/types.ts +37 -0
  52. package/src/vendor/repack/dev-server/src/plugins/devtools/devtoolsPlugin.ts +107 -0
  53. package/src/vendor/repack/dev-server/src/plugins/devtools/index.ts +1 -0
  54. package/src/vendor/repack/dev-server/src/plugins/favicon/faviconPlugin.ts +14 -0
  55. package/src/vendor/repack/dev-server/src/plugins/favicon/index.ts +1 -0
  56. package/src/vendor/repack/dev-server/src/plugins/multipart/index.ts +2 -0
  57. package/src/vendor/repack/dev-server/src/plugins/multipart/multipartPlugin.ts +77 -0
  58. package/src/vendor/repack/dev-server/src/plugins/multipart/types.ts +13 -0
  59. package/src/vendor/repack/dev-server/src/plugins/symbolicate/Symbolicator.ts +233 -0
  60. package/src/vendor/repack/dev-server/src/plugins/symbolicate/index.ts +3 -0
  61. package/src/vendor/repack/dev-server/src/plugins/symbolicate/sybmolicatePlugin.ts +48 -0
  62. package/src/vendor/repack/dev-server/src/plugins/symbolicate/types.ts +71 -0
  63. package/src/vendor/repack/dev-server/src/plugins/wss/WebSocketRouter.ts +67 -0
  64. package/src/vendor/repack/dev-server/src/plugins/wss/WebSocketServer.ts +60 -0
  65. package/src/vendor/repack/dev-server/src/plugins/wss/index.ts +3 -0
  66. package/src/vendor/repack/dev-server/src/plugins/wss/servers/HermesInspectorProxy.ts +158 -0
  67. package/src/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketApiServer.ts +66 -0
  68. package/src/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketDebuggerServer.ts +134 -0
  69. package/src/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketDevClientServer.ts +74 -0
  70. package/src/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketEventsServer.ts +202 -0
  71. package/src/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketHMRServer.ts +97 -0
  72. package/src/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketMessageServer.ts +398 -0
  73. package/src/vendor/repack/dev-server/src/plugins/wss/types.ts +17 -0
  74. package/src/vendor/repack/dev-server/src/plugins/wss/wssPlugin.ts +77 -0
  75. package/src/vendor/repack/dev-server/src/types.ts +202 -0
  76. package/src/vendor/repack/dev-server/vendor/metro-inspector-proxy/src/Device.cjs +1 -0
  77. package/src/vendor/repack/dev-server/vendor/metro-inspector-proxy/src/Device.js +1 -0
  78. package/types/build.d.ts.map +1 -0
  79. package/types/cli.d.ts.map +1 -0
  80. package/types/create.d.ts.map +1 -0
  81. package/types/dev/createDevServer.d.ts +28 -0
  82. package/types/dev/createDevServer.d.ts.map +1 -0
  83. package/types/dev/websocket-server/WebSocketRouter.d.ts +33 -0
  84. package/types/dev/websocket-server/WebSocketRouter.d.ts.map +1 -0
  85. package/types/dev/websocket-server/WebSocketServer.d.ts +38 -0
  86. package/types/dev/websocket-server/WebSocketServer.d.ts.map +1 -0
  87. package/types/dev/websocket-server/index.d.ts +4 -0
  88. package/types/dev/websocket-server/index.d.ts.map +1 -0
  89. package/types/dev/websocket-server/servers/HermesInspectorProxy.d.ts +25 -0
  90. package/types/dev/websocket-server/servers/HermesInspectorProxy.d.ts.map +1 -0
  91. package/types/dev/websocket-server/servers/WebSocketApiServer.d.ts +33 -0
  92. package/types/dev/websocket-server/servers/WebSocketApiServer.d.ts.map +1 -0
  93. package/types/dev/websocket-server/servers/WebSocketDebuggerServer.d.ts +65 -0
  94. package/types/dev/websocket-server/servers/WebSocketDebuggerServer.d.ts.map +1 -0
  95. package/types/dev/websocket-server/servers/WebSocketDevClientServer.d.ts +33 -0
  96. package/types/dev/websocket-server/servers/WebSocketDevClientServer.d.ts.map +1 -0
  97. package/types/dev/websocket-server/servers/WebSocketEventsServer.d.ts +76 -0
  98. package/types/dev/websocket-server/servers/WebSocketEventsServer.d.ts.map +1 -0
  99. package/types/dev/websocket-server/servers/WebSocketHMRServer.d.ts +39 -0
  100. package/types/dev/websocket-server/servers/WebSocketHMRServer.d.ts.map +1 -0
  101. package/types/dev/websocket-server/servers/WebSocketMessageServer.d.ts +141 -0
  102. package/types/dev/websocket-server/servers/WebSocketMessageServer.d.ts.map +1 -0
  103. package/types/dev/websocket-server/types.d.ts +17 -0
  104. package/types/dev/websocket-server/types.d.ts.map +1 -0
  105. package/types/dev/websocket-server/wssPlugin.d.ts +25 -0
  106. package/types/dev/websocket-server/wssPlugin.d.ts.map +1 -0
  107. package/types/dev/wss/WebSocketRouter.d.ts +33 -0
  108. package/types/dev/wss/WebSocketRouter.d.ts.map +1 -0
  109. package/types/dev/wss/WebSocketServer.d.ts +38 -0
  110. package/types/dev/wss/WebSocketServer.d.ts.map +1 -0
  111. package/types/dev/wss/index.d.ts +4 -0
  112. package/types/dev/wss/index.d.ts.map +1 -0
  113. package/types/dev/wss/servers/HermesInspectorProxy.d.ts +25 -0
  114. package/types/dev/wss/servers/HermesInspectorProxy.d.ts.map +1 -0
  115. package/types/dev/wss/servers/WebSocketApiServer.d.ts +33 -0
  116. package/types/dev/wss/servers/WebSocketApiServer.d.ts.map +1 -0
  117. package/types/dev/wss/servers/WebSocketDebuggerServer.d.ts +65 -0
  118. package/types/dev/wss/servers/WebSocketDebuggerServer.d.ts.map +1 -0
  119. package/types/dev/wss/servers/WebSocketDevClientServer.d.ts +33 -0
  120. package/types/dev/wss/servers/WebSocketDevClientServer.d.ts.map +1 -0
  121. package/types/dev/wss/servers/WebSocketEventsServer.d.ts +76 -0
  122. package/types/dev/wss/servers/WebSocketEventsServer.d.ts.map +1 -0
  123. package/types/dev/wss/servers/WebSocketHMRServer.d.ts +39 -0
  124. package/types/dev/wss/servers/WebSocketHMRServer.d.ts.map +1 -0
  125. package/types/dev/wss/servers/WebSocketMessageServer.d.ts +141 -0
  126. package/types/dev/wss/servers/WebSocketMessageServer.d.ts.map +1 -0
  127. package/types/dev/wss/types.d.ts +17 -0
  128. package/types/dev/wss/types.d.ts.map +1 -0
  129. package/types/dev/wss/wssPlugin.d.ts +25 -0
  130. package/types/dev/wss/wssPlugin.d.ts.map +1 -0
  131. package/types/dev-debugger-socket.d.ts +1 -0
  132. package/types/dev-debugger-socket.d.ts.map +1 -0
  133. package/types/dev.d.ts.map +1 -0
  134. package/types/generate.d.ts.map +1 -0
  135. package/types/index.d.ts.map +1 -0
  136. package/types/studio.d.ts.map +1 -0
  137. package/types/tamaguiConfigUtils.d.ts.map +1 -0
  138. package/types/test.d.ts.map +1 -0
  139. package/types/types.d.ts.map +1 -0
  140. package/types/update.d.ts.map +1 -0
  141. package/types/utils/constants.d.ts +2 -0
  142. package/types/utils/constants.d.ts.map +1 -0
  143. package/types/utils.d.ts +2 -2
  144. package/types/utils.d.ts.map +1 -0
  145. package/types/vendor/repack/WebSocketRouter.d.ts +33 -0
  146. package/types/vendor/repack/WebSocketRouter.d.ts.map +1 -0
  147. package/types/vendor/repack/WebSocketServer.d.ts +38 -0
  148. package/types/vendor/repack/WebSocketServer.d.ts.map +1 -0
  149. package/types/vendor/repack/dev-server/src/createServer.d.ts +14 -0
  150. package/types/vendor/repack/dev-server/src/createServer.d.ts.map +1 -0
  151. package/types/vendor/repack/dev-server/src/index.d.ts +3 -0
  152. package/types/vendor/repack/dev-server/src/index.d.ts.map +1 -0
  153. package/types/vendor/repack/dev-server/src/plugins/api/apiPlugin.d.ts +7 -0
  154. package/types/vendor/repack/dev-server/src/plugins/api/apiPlugin.d.ts.map +1 -0
  155. package/types/vendor/repack/dev-server/src/plugins/api/index.d.ts +2 -0
  156. package/types/vendor/repack/dev-server/src/plugins/api/index.d.ts.map +1 -0
  157. package/types/vendor/repack/dev-server/src/plugins/compiler/compilerPlugin.d.ts +7 -0
  158. package/types/vendor/repack/dev-server/src/plugins/compiler/compilerPlugin.d.ts.map +1 -0
  159. package/types/vendor/repack/dev-server/src/plugins/compiler/index.d.ts +3 -0
  160. package/types/vendor/repack/dev-server/src/plugins/compiler/index.d.ts.map +1 -0
  161. package/types/vendor/repack/dev-server/src/plugins/compiler/types.d.ts +32 -0
  162. package/types/vendor/repack/dev-server/src/plugins/compiler/types.d.ts.map +1 -0
  163. package/types/vendor/repack/dev-server/src/plugins/devtools/devtoolsPlugin.d.ts +7 -0
  164. package/types/vendor/repack/dev-server/src/plugins/devtools/devtoolsPlugin.d.ts.map +1 -0
  165. package/types/vendor/repack/dev-server/src/plugins/devtools/index.d.ts +2 -0
  166. package/types/vendor/repack/dev-server/src/plugins/devtools/index.d.ts.map +1 -0
  167. package/types/vendor/repack/dev-server/src/plugins/favicon/faviconPlugin.d.ts +4 -0
  168. package/types/vendor/repack/dev-server/src/plugins/favicon/faviconPlugin.d.ts.map +1 -0
  169. package/types/vendor/repack/dev-server/src/plugins/favicon/index.d.ts +2 -0
  170. package/types/vendor/repack/dev-server/src/plugins/favicon/index.d.ts.map +1 -0
  171. package/types/vendor/repack/dev-server/src/plugins/multipart/index.d.ts +3 -0
  172. package/types/vendor/repack/dev-server/src/plugins/multipart/index.d.ts.map +1 -0
  173. package/types/vendor/repack/dev-server/src/plugins/multipart/multipartPlugin.d.ts +4 -0
  174. package/types/vendor/repack/dev-server/src/plugins/multipart/multipartPlugin.d.ts.map +1 -0
  175. package/types/vendor/repack/dev-server/src/plugins/multipart/types.d.ts +13 -0
  176. package/types/vendor/repack/dev-server/src/plugins/multipart/types.d.ts.map +1 -0
  177. package/types/vendor/repack/dev-server/src/plugins/symbolicate/Symbolicator.d.ts +47 -0
  178. package/types/vendor/repack/dev-server/src/plugins/symbolicate/Symbolicator.d.ts.map +1 -0
  179. package/types/vendor/repack/dev-server/src/plugins/symbolicate/index.d.ts +4 -0
  180. package/types/vendor/repack/dev-server/src/plugins/symbolicate/index.d.ts.map +1 -0
  181. package/types/vendor/repack/dev-server/src/plugins/symbolicate/sybmolicatePlugin.d.ts +7 -0
  182. package/types/vendor/repack/dev-server/src/plugins/symbolicate/sybmolicatePlugin.d.ts.map +1 -0
  183. package/types/vendor/repack/dev-server/src/plugins/symbolicate/types.d.ts +66 -0
  184. package/types/vendor/repack/dev-server/src/plugins/symbolicate/types.d.ts.map +1 -0
  185. package/types/vendor/repack/dev-server/src/plugins/wss/WebSocketRouter.d.ts +33 -0
  186. package/types/vendor/repack/dev-server/src/plugins/wss/WebSocketRouter.d.ts.map +1 -0
  187. package/types/vendor/repack/dev-server/src/plugins/wss/WebSocketServer.d.ts +38 -0
  188. package/types/vendor/repack/dev-server/src/plugins/wss/WebSocketServer.d.ts.map +1 -0
  189. package/types/vendor/repack/dev-server/src/plugins/wss/index.d.ts +4 -0
  190. package/types/vendor/repack/dev-server/src/plugins/wss/index.d.ts.map +1 -0
  191. package/types/vendor/repack/dev-server/src/plugins/wss/servers/HermesInspectorProxy.d.ts +25 -0
  192. package/types/vendor/repack/dev-server/src/plugins/wss/servers/HermesInspectorProxy.d.ts.map +1 -0
  193. package/types/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketApiServer.d.ts +33 -0
  194. package/types/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketApiServer.d.ts.map +1 -0
  195. package/types/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketDebuggerServer.d.ts +65 -0
  196. package/types/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketDebuggerServer.d.ts.map +1 -0
  197. package/types/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketDevClientServer.d.ts +33 -0
  198. package/types/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketDevClientServer.d.ts.map +1 -0
  199. package/types/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketEventsServer.d.ts +76 -0
  200. package/types/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketEventsServer.d.ts.map +1 -0
  201. package/types/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketHMRServer.d.ts +39 -0
  202. package/types/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketHMRServer.d.ts.map +1 -0
  203. package/types/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketMessageServer.d.ts +141 -0
  204. package/types/vendor/repack/dev-server/src/plugins/wss/servers/WebSocketMessageServer.d.ts.map +1 -0
  205. package/types/vendor/repack/dev-server/src/plugins/wss/types.d.ts +17 -0
  206. package/types/vendor/repack/dev-server/src/plugins/wss/types.d.ts.map +1 -0
  207. package/types/vendor/repack/dev-server/src/plugins/wss/wssPlugin.d.ts +28 -0
  208. package/types/vendor/repack/dev-server/src/plugins/wss/wssPlugin.d.ts.map +1 -0
  209. package/types/vendor/repack/dev-server/src/types.d.ts +159 -0
  210. package/types/vendor/repack/dev-server/src/types.d.ts.map +1 -0
  211. package/types/vendor/repack/index.d.ts +4 -0
  212. package/types/vendor/repack/index.d.ts.map +1 -0
  213. package/types/vendor/repack/servers/HermesInspectorProxy.d.ts +25 -0
  214. package/types/vendor/repack/servers/HermesInspectorProxy.d.ts.map +1 -0
  215. package/types/vendor/repack/servers/WebSocketApiServer.d.ts +33 -0
  216. package/types/vendor/repack/servers/WebSocketApiServer.d.ts.map +1 -0
  217. package/types/vendor/repack/servers/WebSocketDebuggerServer.d.ts +65 -0
  218. package/types/vendor/repack/servers/WebSocketDebuggerServer.d.ts.map +1 -0
  219. package/types/vendor/repack/servers/WebSocketDevClientServer.d.ts +33 -0
  220. package/types/vendor/repack/servers/WebSocketDevClientServer.d.ts.map +1 -0
  221. package/types/vendor/repack/servers/WebSocketEventsServer.d.ts +76 -0
  222. package/types/vendor/repack/servers/WebSocketEventsServer.d.ts.map +1 -0
  223. package/types/vendor/repack/servers/WebSocketHMRServer.d.ts +39 -0
  224. package/types/vendor/repack/servers/WebSocketHMRServer.d.ts.map +1 -0
  225. package/types/vendor/repack/servers/WebSocketMessageServer.d.ts +141 -0
  226. package/types/vendor/repack/servers/WebSocketMessageServer.d.ts.map +1 -0
  227. package/types/vendor/repack/types.d.ts +159 -0
  228. package/types/vendor/repack/types.d.ts.map +1 -0
  229. package/types/vendor/repack/wss/WebSocketRouter.d.ts +33 -0
  230. package/types/vendor/repack/wss/WebSocketRouter.d.ts.map +1 -0
  231. package/types/vendor/repack/wss/WebSocketServer.d.ts +38 -0
  232. package/types/vendor/repack/wss/WebSocketServer.d.ts.map +1 -0
  233. package/types/vendor/repack/wss/index.d.ts +4 -0
  234. package/types/vendor/repack/wss/index.d.ts.map +1 -0
  235. package/types/vendor/repack/wss/servers/HermesInspectorProxy.d.ts +25 -0
  236. package/types/vendor/repack/wss/servers/HermesInspectorProxy.d.ts.map +1 -0
  237. package/types/vendor/repack/wss/servers/WebSocketApiServer.d.ts +33 -0
  238. package/types/vendor/repack/wss/servers/WebSocketApiServer.d.ts.map +1 -0
  239. package/types/vendor/repack/wss/servers/WebSocketDebuggerServer.d.ts +65 -0
  240. package/types/vendor/repack/wss/servers/WebSocketDebuggerServer.d.ts.map +1 -0
  241. package/types/vendor/repack/wss/servers/WebSocketDevClientServer.d.ts +33 -0
  242. package/types/vendor/repack/wss/servers/WebSocketDevClientServer.d.ts.map +1 -0
  243. package/types/vendor/repack/wss/servers/WebSocketEventsServer.d.ts +76 -0
  244. package/types/vendor/repack/wss/servers/WebSocketEventsServer.d.ts.map +1 -0
  245. package/types/vendor/repack/wss/servers/WebSocketHMRServer.d.ts +39 -0
  246. package/types/vendor/repack/wss/servers/WebSocketHMRServer.d.ts.map +1 -0
  247. package/types/vendor/repack/wss/servers/WebSocketMessageServer.d.ts +141 -0
  248. package/types/vendor/repack/wss/servers/WebSocketMessageServer.d.ts.map +1 -0
  249. package/types/vendor/repack/wss/types.d.ts +17 -0
  250. package/types/vendor/repack/wss/types.d.ts.map +1 -0
  251. package/types/vendor/repack/wss/wssPlugin.d.ts +29 -0
  252. package/types/vendor/repack/wss/wssPlugin.d.ts.map +1 -0
  253. package/types/vendor/repack/wssPlugin.d.ts +25 -0
  254. package/types/vendor/repack/wssPlugin.d.ts.map +1 -0
  255. package/types/vendor/websocket-server/WebSocketRouter.d.ts +33 -0
  256. package/types/vendor/websocket-server/WebSocketRouter.d.ts.map +1 -0
  257. package/types/vendor/websocket-server/WebSocketServer.d.ts +38 -0
  258. package/types/vendor/websocket-server/WebSocketServer.d.ts.map +1 -0
  259. package/types/vendor/websocket-server/index.d.ts +4 -0
  260. package/types/vendor/websocket-server/index.d.ts.map +1 -0
  261. package/types/vendor/websocket-server/servers/HermesInspectorProxy.d.ts +25 -0
  262. package/types/vendor/websocket-server/servers/HermesInspectorProxy.d.ts.map +1 -0
  263. package/types/vendor/websocket-server/servers/WebSocketApiServer.d.ts +33 -0
  264. package/types/vendor/websocket-server/servers/WebSocketApiServer.d.ts.map +1 -0
  265. package/types/vendor/websocket-server/servers/WebSocketDebuggerServer.d.ts +65 -0
  266. package/types/vendor/websocket-server/servers/WebSocketDebuggerServer.d.ts.map +1 -0
  267. package/types/vendor/websocket-server/servers/WebSocketDevClientServer.d.ts +33 -0
  268. package/types/vendor/websocket-server/servers/WebSocketDevClientServer.d.ts.map +1 -0
  269. package/types/vendor/websocket-server/servers/WebSocketEventsServer.d.ts +76 -0
  270. package/types/vendor/websocket-server/servers/WebSocketEventsServer.d.ts.map +1 -0
  271. package/types/vendor/websocket-server/servers/WebSocketHMRServer.d.ts +39 -0
  272. package/types/vendor/websocket-server/servers/WebSocketHMRServer.d.ts.map +1 -0
  273. package/types/vendor/websocket-server/servers/WebSocketMessageServer.d.ts +141 -0
  274. package/types/vendor/websocket-server/servers/WebSocketMessageServer.d.ts.map +1 -0
  275. package/types/vendor/websocket-server/types.d.ts +17 -0
  276. package/types/vendor/websocket-server/types.d.ts.map +1 -0
  277. package/types/vendor/websocket-server/wssPlugin.d.ts +25 -0
  278. package/types/vendor/websocket-server/wssPlugin.d.ts.map +1 -0
  279. package/types/vendor/wss/WebSocketRouter.d.ts +33 -0
  280. package/types/vendor/wss/WebSocketRouter.d.ts.map +1 -0
  281. package/types/vendor/wss/WebSocketServer.d.ts +38 -0
  282. package/types/vendor/wss/WebSocketServer.d.ts.map +1 -0
  283. package/types/vendor/wss/index.d.ts +4 -0
  284. package/types/vendor/wss/index.d.ts.map +1 -0
  285. package/types/vendor/wss/servers/HermesInspectorProxy.d.ts +25 -0
  286. package/types/vendor/wss/servers/HermesInspectorProxy.d.ts.map +1 -0
  287. package/types/vendor/wss/servers/WebSocketApiServer.d.ts +33 -0
  288. package/types/vendor/wss/servers/WebSocketApiServer.d.ts.map +1 -0
  289. package/types/vendor/wss/servers/WebSocketDebuggerServer.d.ts +65 -0
  290. package/types/vendor/wss/servers/WebSocketDebuggerServer.d.ts.map +1 -0
  291. package/types/vendor/wss/servers/WebSocketDevClientServer.d.ts +33 -0
  292. package/types/vendor/wss/servers/WebSocketDevClientServer.d.ts.map +1 -0
  293. package/types/vendor/wss/servers/WebSocketEventsServer.d.ts +76 -0
  294. package/types/vendor/wss/servers/WebSocketEventsServer.d.ts.map +1 -0
  295. package/types/vendor/wss/servers/WebSocketHMRServer.d.ts +39 -0
  296. package/types/vendor/wss/servers/WebSocketHMRServer.d.ts.map +1 -0
  297. package/types/vendor/wss/servers/WebSocketMessageServer.d.ts +141 -0
  298. package/types/vendor/wss/servers/WebSocketMessageServer.d.ts.map +1 -0
  299. package/types/vendor/wss/types.d.ts +17 -0
  300. package/types/vendor/wss/types.d.ts.map +1 -0
  301. package/types/vendor/wss/wssPlugin.d.ts +25 -0
  302. package/types/vendor/wss/wssPlugin.d.ts.map +1 -0
@@ -0,0 +1,239 @@
1
+ import { readFile } from 'fs/promises'
2
+
3
+ import { ResolvedOptions } from '../types.js'
4
+ import { DEFAULT_PORT } from '../utils/constants.js'
5
+ import { Server, createServer } from '../vendor/repack/dev-server/src'
6
+
7
+ export async function createDevServer(
8
+ options: ResolvedOptions,
9
+ {
10
+ indexJson,
11
+ getIndexBundle,
12
+ }: { indexJson: Object; getIndexBundle: () => Promise<string> }
13
+ ) {
14
+ const { start, stop } = await createServer({
15
+ options: {
16
+ rootDir: options.root,
17
+ host: options.host,
18
+ port: options.port ?? DEFAULT_PORT,
19
+ // https: args.https
20
+ // ? {
21
+ // cert: args.cert,
22
+ // key: args.key,
23
+ // }
24
+ // : undefined,
25
+ },
26
+
27
+ delegate: (ctx): Server.Delegate => {
28
+ // if (args.interactive) {
29
+ // bindKeypressInput(ctx)
30
+ // }
31
+
32
+ // if (reversePort && args.port) {
33
+ // runAdbReverse(ctx, args.port)
34
+ // }
35
+
36
+ // let lastStats: webpack.StatsCompilation | undefined
37
+
38
+ // compiler.on('watchRun', ({ platform }) => {
39
+ // ctx.notifyBuildStart(platform)
40
+ // if (platform === 'android') {
41
+ // runAdbReverse(ctx, args.port ?? DEFAULT_PORT)
42
+ // }
43
+ // })
44
+
45
+ // compiler.on('invalid', ({ platform }) => {
46
+ // ctx.notifyBuildStart(platform)
47
+ // ctx.broadcastToHmrClients({ action: 'building' }, platform)
48
+ // })
49
+
50
+ // compiler.on(
51
+ // 'done',
52
+ // ({ platform, stats }: { platform: string; stats: webpack.StatsCompilation }) => {
53
+ // ctx.notifyBuildEnd(platform)
54
+ // lastStats = stats
55
+ // ctx.broadcastToHmrClients(
56
+ // { action: 'built', body: createHmrBody(stats) },
57
+ // platform
58
+ // )
59
+ // }
60
+ // )
61
+
62
+ return {
63
+ compiler: {
64
+ getAsset: async (filename, platform, sendProgress) => {
65
+ console.log('get asset', filename)
66
+ if (filename === 'index.bundle') {
67
+ return await getIndexBundle()
68
+ }
69
+ return ''
70
+ // return (await compiler.getAsset(filename, platform, sendProgress)).data
71
+ },
72
+
73
+ getMimeType: (filename) => {
74
+ console.log('getMimeType', filename)
75
+ return 'application/javascript'
76
+ // return compiler.getMimeType(filename)
77
+ },
78
+
79
+ inferPlatform: (uri) => {
80
+ return 'ios'
81
+
82
+ const url = new URL(uri, 'protocol://domain')
83
+ if (!url.searchParams.get('platform')) {
84
+ const [, platform] = /^\/(.+)\/.+$/.exec(url.pathname) ?? []
85
+ return platform
86
+ }
87
+
88
+ return undefined
89
+ },
90
+ },
91
+
92
+ symbolicator: {
93
+ getSource: async (fileUrl) => {
94
+ console.log('get source', fileUrl)
95
+ // const { filename, platform } = parseFileUrl(fileUrl)
96
+ // return compiler.getSource(filename, platform)
97
+ return ''
98
+ },
99
+ getSourceMap: async (fileUrl) => {
100
+ console.log('get source map', fileUrl)
101
+ // const { filename, platform } = parseFileUrl(fileUrl)
102
+ // if (!platform) {
103
+ // throw new Error('Cannot infer platform for file URL')
104
+ // }
105
+
106
+ // return compiler.getSourceMap(filename, platform)
107
+ return ''
108
+ },
109
+ shouldIncludeFrame: (frame) => {
110
+ // If the frame points to internal bootstrap/module system logic, skip the code frame.
111
+ return !/webpack[/\\]runtime[/\\].+\s/.test(frame.file)
112
+ },
113
+ },
114
+
115
+ hmr: {
116
+ getUriPath: () => '/__hmr',
117
+ onClientConnected: (platform, clientId) => {
118
+ // todo
119
+ const lastStats = {}
120
+
121
+ ctx.broadcastToHmrClients(
122
+ { action: 'sync', body: createHmrBody(lastStats) },
123
+ platform,
124
+ [clientId]
125
+ )
126
+ },
127
+ },
128
+
129
+ messages: {
130
+ getHello: () => indexJson,
131
+ getStatus: () => 'packager-status:running',
132
+ },
133
+
134
+ logger: {
135
+ onMessage: (log) => {
136
+ const logEntry = makeLogEntryFromFastifyLog(log)
137
+ logEntry.issuer = 'DevServer'
138
+ console.log(
139
+ logEntry.type,
140
+ logEntry.issuer,
141
+ JSON.stringify(logEntry.message, null, 2)
142
+ )
143
+ // reporter.process(logEntry)
144
+ },
145
+ },
146
+
147
+ api: {
148
+ // getPlatforms: async () => Object.keys(compiler.workers),
149
+ getPlatforms: async () => ['ios'],
150
+ getAssets: async (platform) => {
151
+ console.log('get assets', platform)
152
+ return []
153
+ // return Object.entries(compiler.assetsCache[platform] ?? {}).map(([name, asset]) => ({
154
+ // name,
155
+ // size: asset.info.size,
156
+ // })),
157
+ },
158
+ getCompilationStats: async (platform) => {
159
+ return null
160
+ // return compiler.statsCache[platform] ?? null
161
+ },
162
+ },
163
+ }
164
+ },
165
+ })
166
+
167
+ await start()
168
+
169
+ return async () => {
170
+ await stop()
171
+ }
172
+ }
173
+
174
+ function createHmrBody(stats?: any): HMRMessageBody | null {
175
+ if (!stats) {
176
+ return null
177
+ }
178
+
179
+ const modules: Record<string, string> = {}
180
+ for (const module of stats.modules ?? []) {
181
+ const { identifier, name } = module
182
+ if (identifier !== undefined && name) {
183
+ modules[identifier] = name
184
+ }
185
+ }
186
+
187
+ return {
188
+ name: stats.name ?? '',
189
+ time: stats.time ?? 0,
190
+ hash: stats.hash ?? '',
191
+ warnings: stats.warnings || [],
192
+ errors: stats.errors || [],
193
+ modules,
194
+ }
195
+ }
196
+
197
+ /**
198
+ * Represent Hot Module Replacement Update body.
199
+ *
200
+ * @internal
201
+ */
202
+ export interface HMRMessageBody {
203
+ name: string
204
+ time: number
205
+ hash: string
206
+ warnings: any
207
+ errors: any
208
+ modules: Record<string, string>
209
+ }
210
+
211
+ /**
212
+ * Represent Hot Module Replacement Update message.
213
+ *
214
+ * @internal
215
+ */
216
+ export interface HMRMessage {
217
+ action: 'building' | 'built' | 'sync'
218
+ body: HMRMessageBody | null
219
+ }
220
+
221
+ function makeLogEntryFromFastifyLog(data: any): any {
222
+ const { level, time, pid, hostname, ...rest } = data
223
+
224
+ const levelToTypeMapping: Record<number, any> = {
225
+ 10: 'debug',
226
+ 20: 'debug',
227
+ 30: 'info',
228
+ 40: 'warn',
229
+ 50: 'error',
230
+ 60: 'error',
231
+ }
232
+
233
+ return {
234
+ type: levelToTypeMapping[level],
235
+ timestamp: time,
236
+ issuer: '',
237
+ message: [rest],
238
+ }
239
+ }
package/src/dev.ts CHANGED
@@ -1,24 +1,28 @@
1
+ import { readFile } from 'fs/promises'
1
2
  import { AddressInfo } from 'net'
2
3
  import { join } from 'path'
3
4
 
4
- import { nativePlugin, tamaguiPlugin } from '@tamagui/vite-plugin'
5
5
  import chalk from 'chalk'
6
- import express from 'express'
7
- import proxy from 'express-http-proxy'
8
6
  import fs from 'fs-extra'
9
- import killPort from 'kill-port'
10
- import morgan from 'morgan'
11
7
  import { build, createServer } from 'vite'
12
8
 
9
+ import { createDevServer } from './dev/createDevServer.js'
13
10
  import { watchTamaguiConfig } from './tamaguiConfigUtils.js'
14
11
  import { ResolvedOptions } from './types.js'
15
- import { closeEvent } from './utils.js'
12
+ import { registerDispose } from './utils.js'
16
13
 
17
14
  export const dev = async (options: ResolvedOptions) => {
18
15
  const { root, mode, paths } = options
19
16
 
20
17
  process.chdir(process.cwd())
21
18
 
19
+ const { tamaguiPlugin, nativePlugin, nativePrebuild } = await import(
20
+ '@tamagui/vite-plugin'
21
+ )
22
+
23
+ // build react-native
24
+ await nativePrebuild()
25
+
22
26
  const plugins = [
23
27
  tamaguiPlugin({
24
28
  components: ['tamagui'],
@@ -26,74 +30,90 @@ export const dev = async (options: ResolvedOptions) => {
26
30
  nativePlugin(),
27
31
  ]
28
32
 
29
- const buildOutput = await build({
30
- plugins,
31
- root,
32
- })
33
- const outputJsFile = 'output' in buildOutput ? buildOutput.output[0]?.fileName : null
34
- if (!outputJsFile) {
35
- throw new Error(`No js?`)
33
+ async function getBundle() {
34
+ const outputJsPath = join(process.cwd(), '.tamagui', 'bundle.js')
35
+ const outputCode = await getBundleCode()
36
+ // debug out each time
37
+ fs.writeFile(outputJsPath, outputCode)
38
+ return outputCode
39
+ }
40
+
41
+ async function getBundleCode() {
42
+ // build app
43
+ const buildOutput = await build({
44
+ plugins,
45
+ appType: 'custom',
46
+ root: join(root, 'src/index.ts'),
47
+ build: {
48
+ ssr: true,
49
+ },
50
+ ssr: {
51
+ format: 'cjs',
52
+ target: 'node',
53
+ },
54
+ mode: 'development',
55
+ define: {
56
+ __DEV__: 'true',
57
+ 'process.env.NODE_ENV': `"development"`,
58
+ },
59
+ })
60
+
61
+ const appCode = 'output' in buildOutput ? buildOutput.output[0].code : null
62
+
63
+ if (!appCode) {
64
+ throw `❌`
65
+ }
66
+
67
+ const [react, reactJsxRuntime, reactNative] = await Promise.all([
68
+ readFile(join(process.cwd(), 'react.js'), 'utf-8'),
69
+ readFile(join(process.cwd(), 'react-jsx-runtime.js'), 'utf-8'),
70
+ readFile(join(process.cwd(), 'react-native.js'), 'utf-8'),
71
+ ])
72
+
73
+ const reactCode = react.replace(
74
+ `module.exports = require_react_development();`,
75
+ `return require_react_development()`
76
+ )
77
+
78
+ const reactJSXRuntimeCode = reactJsxRuntime.replace(
79
+ `module.exports = require_react_jsx_runtime_production_min();`,
80
+ `return require_react_jsx_runtime_production_min()`
81
+ )
82
+
83
+ const reactNativeCode = reactNative
84
+ .replace(
85
+ `module.exports = require_react_native();`,
86
+ `return require_react_native()`
87
+ )
88
+ .replace(
89
+ `renderable = /* @__PURE__ */ react(RootComponentWithMeaningfulName, null, renderable);`,
90
+ ``
91
+ )
92
+
93
+ return (await readFile('template.js', 'utf-8'))
94
+ .replace(`// -- react --`, reactCode)
95
+ .replace(`// -- react-native --`, reactNativeCode)
96
+ .replace(`// -- react/jsx-runtime --`, reactJSXRuntimeCode)
97
+ .replace(`// -- app --`, appCode)
36
98
  }
37
- const outputJsPath = join(process.cwd(), 'dist', outputJsFile)
38
99
 
39
100
  const server = await createServer({
40
- root,
101
+ root: root,
102
+ mode: 'development',
103
+ plugins,
41
104
  server: {
42
105
  port: options.port,
43
106
  host: options.host || 'localhost',
44
107
  },
45
- plugins,
46
108
  })
47
109
 
48
- // these can be lazy loaded (eventually should put in own process)
49
- await Promise.all([
50
- server.listen(),
51
- //
52
- watchTamaguiConfig(options),
53
- // generateTypes(options),
54
- ])
110
+ await server.listen()
111
+ await watchTamaguiConfig(options)
55
112
 
56
113
  const info = server.httpServer?.address() as AddressInfo
57
- const app = express()
58
-
59
- const cleanup = async () => {
60
- console.log('cleaning up')
61
- await server.close()
62
- }
63
-
64
- process.on(`uncaughtException`, (e) => {
65
- console.log('wtdf', e)
66
- })
67
- ;[`exit`, `SIGINT`, `SIGUSR1`, `SIGUSR2`, `SIGTERM`].forEach((eventType) => {
68
- process.on(eventType, cleanup)
69
- })
70
114
 
71
115
  // react native port (it scans 19000 +5)
72
- const port = 19000
73
-
74
- app.disable('x-powered-by')
75
- app.use(express.static(paths.dotDir, { maxAge: '2h' }))
76
- app.use(morgan('tiny'))
77
-
78
- // studio specific - move out eventually to studioPlugin
79
-
80
- app.get('/status', (req, res) => {
81
- res.status(200).send()
82
- })
83
-
84
- app.get('/conf', async (req, res) => {
85
- const conf = await fs.readJSON(paths.conf)
86
- res.status(200).json(conf)
87
- })
88
-
89
- // /index.bundle?platform=ios&dev=true&minify=false&modulesOnly=false&runModule=true&app=dish.motion:2811:36)
90
- app.get('/index.bundle', async (req, res) => {
91
- const output = (await fs.readFile(outputJsPath)).toString()
92
-
93
- res.status(200)
94
- res.header('Content-Type', 'text/javascript')
95
- res.send(output)
96
- })
116
+ const port = 8081
97
117
 
98
118
  const defaultResponse = {
99
119
  name: 'myapp',
@@ -144,18 +164,22 @@ export const dev = async (options: ResolvedOptions) => {
144
164
  id: '@anonymous/myapp-473c4543-3c36-4786-9db1-c66a62ac9b78',
145
165
  }
146
166
 
147
- app.get('/', (req, res) => {
148
- res.status(200).json(defaultResponse)
167
+ // new server
168
+ const dispose = await createDevServer(options, {
169
+ getIndexBundle: getBundle,
170
+ indexJson: defaultResponse,
149
171
  })
150
172
 
151
- // app.use('/', proxy(`${info.address}:${info.port}`))
152
-
153
- await killPort(port)
154
- app.listen(port)
155
-
156
173
  // eslint-disable-next-line no-console
157
- console.log(`Listening on`, chalk.green(`http://localhost:${port}`))
174
+ console.log(`Listening on:`, chalk.green(`http://localhost:${port}`))
158
175
  server.printUrls()
159
176
 
160
- await closeEvent(server)
177
+ registerDispose(() => {
178
+ dispose()
179
+ server.close()
180
+ })
181
+
182
+ await new Promise((res) => server.httpServer?.on('close', res))
183
+
184
+ console.log('closed')
161
185
  }
package/src/index.ts CHANGED
@@ -1,3 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ process.on('beforeExit', () => {
4
+ process.stdout.write(`exiting22123??????`)
5
+ })
6
+
7
+ process.on('SIGINT', () => {
8
+ process.stdout.write(`exiting33123??????`)
9
+ })
10
+
3
11
  import './cli.js'
package/src/studio.ts CHANGED
@@ -12,7 +12,6 @@ import { createServer } from 'vite'
12
12
 
13
13
  import { watchTamaguiConfig } from './tamaguiConfigUtils.js'
14
14
  import { ResolvedOptions } from './types.js'
15
- import { closeEvent } from './utils.js'
16
15
 
17
16
  const resolve =
18
17
  'url' in import.meta ? createRequire(import.meta.url).resolve : require.resolve
@@ -36,12 +35,8 @@ export const studio = async (options: ResolvedOptions) => {
36
35
  })
37
36
 
38
37
  // these can be lazy loaded (eventually should put in own process)
39
- await Promise.all([
40
- server.listen(),
41
- //
42
- watchTamaguiConfig(options),
43
- // generateTypes(options),
44
- ])
38
+ const serverPromise = server.listen()
39
+ const configWatchPromise = watchTamaguiConfig(options)
45
40
 
46
41
  const info = server.httpServer?.address() as AddressInfo
47
42
  console.log('devServerInfo', info)
@@ -63,9 +58,19 @@ export const studio = async (options: ResolvedOptions) => {
63
58
 
64
59
  app.use('/', proxy(`${info.address}:${info.port}`))
65
60
 
66
- app.listen(port)
61
+ const appServer = app.listen(port)
67
62
 
68
63
  console.log(`Listening on`, chalk.green(`http://localhost:${port}`))
69
64
 
70
- await closeEvent(server)
65
+ const longRunning = [
66
+ serverPromise,
67
+ configWatchPromise,
68
+ new Promise((res) => appServer.on('close', res)),
69
+ ]
70
+
71
+ setInterval(() => {
72
+ console.log(longRunning)
73
+ }, 10_000)
74
+
75
+ await Promise.allSettled(longRunning)
71
76
  }
@@ -69,17 +69,28 @@ async function getTamaguiConfig(options: ResolvedOptions) {
69
69
  }
70
70
 
71
71
  export async function watchTamaguiConfig(options: ResolvedOptions) {
72
+ console.warn('❌ disabling watch conf')
73
+ return
72
74
  if (!options.tamaguiOptions.config) return
73
75
  await generateTamaguiConfig(options)
74
- await esbuild.build({
76
+ const context = await esbuild.context({
75
77
  entryPoints: [options.tamaguiOptions.config],
76
78
  sourcemap: false,
77
79
  // dont output just use esbuild as a watcher
78
80
  write: false,
79
- watch: {
80
- onRebuild(err, result) {
81
- generateTamaguiConfig(options)
81
+
82
+ plugins: [
83
+ {
84
+ name: `on-rebuild`,
85
+ setup({ onEnd }) {
86
+ onEnd((res) => {
87
+ generateTamaguiConfig(options)
88
+ })
89
+ },
82
90
  },
83
- },
91
+ ],
84
92
  })
93
+
94
+ await context.watch()
95
+ console.log('done watching')
85
96
  }
@@ -0,0 +1 @@
1
+ export const DEFAULT_PORT = 8081
package/src/utils.ts CHANGED
@@ -16,17 +16,16 @@ export async function getOptions({
16
16
  debug,
17
17
  }: Partial<UserOptions> = {}): Promise<ResolvedOptions> {
18
18
  const tsConfigFilePath = join(root, tsconfigPath)
19
- ensure(
20
- await fs.pathExists(tsConfigFilePath),
21
- `No tsconfig found: ${tsConfigFilePath}`,
22
- )
19
+ ensure(await fs.pathExists(tsConfigFilePath), `No tsconfig found: ${tsConfigFilePath}`)
23
20
  const dotDir = join(root, '.tamagui')
24
21
  const pkgJson = await readJSON(join(root, 'package.json'))
25
22
 
23
+ console.log('host', host)
24
+
26
25
  return {
27
26
  mode: process.env.NODE_ENV === 'production' ? 'production' : 'development',
28
27
  root,
29
- host,
28
+ host: host || '127.0.0.1',
30
29
  pkgJson,
31
30
  debug,
32
31
  tsconfigPath,
@@ -54,9 +53,7 @@ const defaultPaths = ['tamagui.config.ts', join('src', 'tamagui.config.ts')]
54
53
  let cachedPath = ''
55
54
  async function getDefaultTamaguiConfigPath() {
56
55
  if (cachedPath) return cachedPath
57
- const existingPaths = await Promise.all(
58
- defaultPaths.map((path) => pathExists(path)),
59
- )
56
+ const existingPaths = await Promise.all(defaultPaths.map((path) => pathExists(path)))
60
57
  const existing = existingPaths.findIndex((x) => !!x)
61
58
  const found = defaultPaths[existing]
62
59
  if (!found) {
@@ -68,7 +65,7 @@ async function getDefaultTamaguiConfigPath() {
68
65
 
69
66
  let cached: TamaguiProjectInfo | null = null
70
67
  export const loadTamagui = async (
71
- opts: Partial<TamaguiOptions>,
68
+ opts: Partial<TamaguiOptions>
72
69
  ): Promise<TamaguiProjectInfo> => {
73
70
  return (cached ??= await loadTamaguiStatic({
74
71
  config: await getDefaultTamaguiConfigPath(),
@@ -77,10 +74,12 @@ export const loadTamagui = async (
77
74
  }))
78
75
  }
79
76
 
80
- export function closeEvent(server: ViteDevServer): Promise<void> {
81
- return new Promise((resolve) => {
82
- server.ws.on('close', () => {
83
- return resolve()
84
- })
85
- })
77
+ const disposers = new Set<Function>()
78
+
79
+ export function registerDispose(cb: () => void) {
80
+ disposers.add(cb)
81
+ }
82
+
83
+ export function disposeAll() {
84
+ disposers.forEach((cb) => cb())
86
85
  }
@@ -0,0 +1,2 @@
1
+ const debuggerAppPath: string;
2
+ export default debuggerAppPath;
@@ -0,0 +1,3 @@
1
+ import { URL, fileURLToPath } from 'url';
2
+
3
+ export default fileURLToPath(new URL('./dist', import.meta.url));
@@ -0,0 +1,49 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <link rel="icon" href="data:;base64,iVBORw0KGgo=" />
7
+ <title>React Native Debugger</title>
8
+ </head>
9
+ <body>
10
+ <!-- <noscript>You need to enable JavaScript to run Learning Lab.</noscript>
11
+ <div id="root"></div> -->
12
+ <div class="content">
13
+ <label for="dark">
14
+ <input type="checkbox" id="dark" onclick="Page.toggleDarkTheme()" />
15
+ Dark Theme
16
+ </label>
17
+ <label for="maintain-priority">
18
+ <input
19
+ type="checkbox"
20
+ id="maintain-priority"
21
+ onclick="Page.togglePriorityMaintenance()"
22
+ />
23
+ Maintain Priority
24
+ </label>
25
+ <p>
26
+ React Native JS code runs as a web worker inside this tab.
27
+ </p>
28
+ <p>
29
+ Press <kbd id="shortcut" class="shortcut">⌘⌥I</kbd> to open Developer
30
+ Tools. Enable
31
+ <a href="https://stackoverflow.com/a/17324511/232122" target="_blank"
32
+ >Pause On Caught Exceptions</a
33
+ >
34
+ for a better debugging experience.
35
+ </p>
36
+ <p>
37
+ You may also install
38
+ <a href="https://www.npmjs.com/package/react-devtools" target="_blank"
39
+ >the standalone version of React Developer Tools</a
40
+ >
41
+ to inspect the React component hierarchy, their props, and state.
42
+ </p>
43
+ <p>Status: <span id="status">Loading...</span></p>
44
+ <button class="reload-btn" onclick="window.onReloadClicked()">
45
+ Reload app
46
+ </button>
47
+ </div>
48
+ </body>
49
+ </html>