mikrojs 0.0.0 → 0.0.7

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 (497) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +76 -0
  3. package/bin/mikrojs.js +3 -0
  4. package/dist/_exports/ble.d.ts +3 -0
  5. package/dist/_exports/ble.d.ts.map +1 -0
  6. package/dist/_exports/ble.js +2 -0
  7. package/dist/_exports/ble.js.map +1 -0
  8. package/dist/_exports/cbor.d.ts +3 -0
  9. package/dist/_exports/cbor.d.ts.map +1 -0
  10. package/dist/_exports/cbor.js +2 -0
  11. package/dist/_exports/cbor.js.map +1 -0
  12. package/dist/_exports/console.d.ts +2 -0
  13. package/dist/_exports/console.d.ts.map +1 -0
  14. package/dist/_exports/console.js +2 -0
  15. package/dist/_exports/console.js.map +1 -0
  16. package/dist/_exports/env.d.ts +2 -0
  17. package/dist/_exports/env.d.ts.map +1 -0
  18. package/dist/_exports/env.js +2 -0
  19. package/dist/_exports/env.js.map +1 -0
  20. package/dist/_exports/format.d.ts +2 -0
  21. package/dist/_exports/format.d.ts.map +1 -0
  22. package/dist/_exports/format.js +2 -0
  23. package/dist/_exports/format.js.map +1 -0
  24. package/dist/_exports/fs.d.ts +2 -0
  25. package/dist/_exports/fs.d.ts.map +1 -0
  26. package/dist/_exports/fs.js +2 -0
  27. package/dist/_exports/fs.js.map +1 -0
  28. package/dist/_exports/http/helpers.d.ts +3 -0
  29. package/dist/_exports/http/helpers.d.ts.map +1 -0
  30. package/dist/_exports/http/helpers.js +5 -0
  31. package/dist/_exports/http/helpers.js.map +1 -0
  32. package/dist/_exports/http/request.d.ts +4 -0
  33. package/dist/_exports/http/request.d.ts.map +1 -0
  34. package/dist/_exports/http/request.js +10 -0
  35. package/dist/_exports/http/request.js.map +1 -0
  36. package/dist/_exports/i2c.d.ts +2 -0
  37. package/dist/_exports/i2c.d.ts.map +1 -0
  38. package/dist/_exports/i2c.js +2 -0
  39. package/dist/_exports/i2c.js.map +1 -0
  40. package/dist/_exports/index.d.ts +61 -0
  41. package/dist/_exports/index.d.ts.map +1 -0
  42. package/dist/_exports/index.js +4 -0
  43. package/dist/_exports/index.js.map +1 -0
  44. package/dist/_exports/inspect.d.ts +2 -0
  45. package/dist/_exports/inspect.d.ts.map +1 -0
  46. package/dist/_exports/inspect.js +2 -0
  47. package/dist/_exports/inspect.js.map +1 -0
  48. package/dist/_exports/kv/nvs.d.ts +3 -0
  49. package/dist/_exports/kv/nvs.d.ts.map +1 -0
  50. package/dist/_exports/kv/nvs.js +2 -0
  51. package/dist/_exports/kv/nvs.js.map +1 -0
  52. package/dist/_exports/kv/rtc.d.ts +3 -0
  53. package/dist/_exports/kv/rtc.d.ts.map +1 -0
  54. package/dist/_exports/kv/rtc.js +2 -0
  55. package/dist/_exports/kv/rtc.js.map +1 -0
  56. package/dist/_exports/neopixel.d.ts +2 -0
  57. package/dist/_exports/neopixel.d.ts.map +1 -0
  58. package/dist/_exports/neopixel.js +2 -0
  59. package/dist/_exports/neopixel.js.map +1 -0
  60. package/dist/_exports/pin.d.ts +2 -0
  61. package/dist/_exports/pin.d.ts.map +1 -0
  62. package/dist/_exports/pin.js +2 -0
  63. package/dist/_exports/pin.js.map +1 -0
  64. package/dist/_exports/pwm.d.ts +2 -0
  65. package/dist/_exports/pwm.d.ts.map +1 -0
  66. package/dist/_exports/pwm.js +2 -0
  67. package/dist/_exports/pwm.js.map +1 -0
  68. package/dist/_exports/reader.d.ts +2 -0
  69. package/dist/_exports/reader.d.ts.map +1 -0
  70. package/dist/_exports/reader.js +2 -0
  71. package/dist/_exports/reader.js.map +1 -0
  72. package/dist/_exports/result.d.ts +2 -0
  73. package/dist/_exports/result.d.ts.map +1 -0
  74. package/dist/_exports/result.js +2 -0
  75. package/dist/_exports/result.js.map +1 -0
  76. package/dist/_exports/schema.d.ts +2 -0
  77. package/dist/_exports/schema.d.ts.map +1 -0
  78. package/dist/_exports/schema.js +2 -0
  79. package/dist/_exports/schema.js.map +1 -0
  80. package/dist/_exports/sim.d.ts +199 -0
  81. package/dist/_exports/sim.d.ts.map +1 -0
  82. package/dist/_exports/sim.js +8 -0
  83. package/dist/_exports/sim.js.map +1 -0
  84. package/dist/_exports/sleep.d.ts +2 -0
  85. package/dist/_exports/sleep.d.ts.map +1 -0
  86. package/dist/_exports/sleep.js +2 -0
  87. package/dist/_exports/sleep.js.map +1 -0
  88. package/dist/_exports/sntp.d.ts +3 -0
  89. package/dist/_exports/sntp.d.ts.map +1 -0
  90. package/dist/_exports/sntp.js +2 -0
  91. package/dist/_exports/sntp.js.map +1 -0
  92. package/dist/_exports/spi.d.ts +2 -0
  93. package/dist/_exports/spi.d.ts.map +1 -0
  94. package/dist/_exports/spi.js +2 -0
  95. package/dist/_exports/spi.js.map +1 -0
  96. package/dist/_exports/stdio.d.ts +2 -0
  97. package/dist/_exports/stdio.d.ts.map +1 -0
  98. package/dist/_exports/stdio.js +2 -0
  99. package/dist/_exports/stdio.js.map +1 -0
  100. package/dist/_exports/stream.d.ts +2 -0
  101. package/dist/_exports/stream.d.ts.map +1 -0
  102. package/dist/_exports/stream.js +2 -0
  103. package/dist/_exports/stream.js.map +1 -0
  104. package/dist/_exports/sys.d.ts +2 -0
  105. package/dist/_exports/sys.d.ts.map +1 -0
  106. package/dist/_exports/sys.js +2 -0
  107. package/dist/_exports/sys.js.map +1 -0
  108. package/dist/_exports/test.d.ts +2 -0
  109. package/dist/_exports/test.d.ts.map +1 -0
  110. package/dist/_exports/test.js +2 -0
  111. package/dist/_exports/test.js.map +1 -0
  112. package/dist/_exports/uart.d.ts +2 -0
  113. package/dist/_exports/uart.d.ts.map +1 -0
  114. package/dist/_exports/uart.js +2 -0
  115. package/dist/_exports/uart.js.map +1 -0
  116. package/dist/_exports/wifi.d.ts +3 -0
  117. package/dist/_exports/wifi.d.ts.map +1 -0
  118. package/dist/_exports/wifi.js +2 -0
  119. package/dist/_exports/wifi.js.map +1 -0
  120. package/dist/cli/cli.d.ts +3 -0
  121. package/dist/cli/cli.d.ts.map +1 -0
  122. package/dist/cli/cli.js +215 -0
  123. package/dist/cli/cli.js.map +1 -0
  124. package/dist/cli/cliWrapper.d.ts +3 -0
  125. package/dist/cli/cliWrapper.d.ts.map +1 -0
  126. package/dist/cli/cliWrapper.js +27 -0
  127. package/dist/cli/cliWrapper.js.map +1 -0
  128. package/dist/cli/commands/build-runtime.d.ts +14 -0
  129. package/dist/cli/commands/build-runtime.d.ts.map +1 -0
  130. package/dist/cli/commands/build-runtime.js +122 -0
  131. package/dist/cli/commands/build-runtime.js.map +1 -0
  132. package/dist/cli/commands/build.d.ts +31 -0
  133. package/dist/cli/commands/build.d.ts.map +1 -0
  134. package/dist/cli/commands/build.js +145 -0
  135. package/dist/cli/commands/build.js.map +1 -0
  136. package/dist/cli/commands/clean.d.ts +16 -0
  137. package/dist/cli/commands/clean.d.ts.map +1 -0
  138. package/dist/cli/commands/clean.js +148 -0
  139. package/dist/cli/commands/clean.js.map +1 -0
  140. package/dist/cli/commands/console.d.ts +19 -0
  141. package/dist/cli/commands/console.d.ts.map +1 -0
  142. package/dist/cli/commands/console.js +32 -0
  143. package/dist/cli/commands/console.js.map +1 -0
  144. package/dist/cli/commands/deploy.d.ts +63 -0
  145. package/dist/cli/commands/deploy.d.ts.map +1 -0
  146. package/dist/cli/commands/deploy.js +242 -0
  147. package/dist/cli/commands/deploy.js.map +1 -0
  148. package/dist/cli/commands/dev.d.ts +41 -0
  149. package/dist/cli/commands/dev.d.ts.map +1 -0
  150. package/dist/cli/commands/dev.js +170 -0
  151. package/dist/cli/commands/dev.js.map +1 -0
  152. package/dist/cli/commands/docs.d.ts +7 -0
  153. package/dist/cli/commands/docs.d.ts.map +1 -0
  154. package/dist/cli/commands/docs.js +20 -0
  155. package/dist/cli/commands/docs.js.map +1 -0
  156. package/dist/cli/commands/env.d.ts +59 -0
  157. package/dist/cli/commands/env.d.ts.map +1 -0
  158. package/dist/cli/commands/env.js +257 -0
  159. package/dist/cli/commands/env.js.map +1 -0
  160. package/dist/cli/commands/erase.d.ts +18 -0
  161. package/dist/cli/commands/erase.d.ts.map +1 -0
  162. package/dist/cli/commands/erase.js +90 -0
  163. package/dist/cli/commands/erase.js.map +1 -0
  164. package/dist/cli/commands/flash.d.ts +30 -0
  165. package/dist/cli/commands/flash.d.ts.map +1 -0
  166. package/dist/cli/commands/flash.js +243 -0
  167. package/dist/cli/commands/flash.js.map +1 -0
  168. package/dist/cli/commands/home.d.ts +7 -0
  169. package/dist/cli/commands/home.d.ts.map +1 -0
  170. package/dist/cli/commands/home.js +20 -0
  171. package/dist/cli/commands/home.js.map +1 -0
  172. package/dist/cli/commands/ls.d.ts +17 -0
  173. package/dist/cli/commands/ls.d.ts.map +1 -0
  174. package/dist/cli/commands/ls.js +62 -0
  175. package/dist/cli/commands/ls.js.map +1 -0
  176. package/dist/cli/commands/sim/clean.d.ts +7 -0
  177. package/dist/cli/commands/sim/clean.d.ts.map +1 -0
  178. package/dist/cli/commands/sim/clean.js +34 -0
  179. package/dist/cli/commands/sim/clean.js.map +1 -0
  180. package/dist/cli/commands/sim/deploy.d.ts +46 -0
  181. package/dist/cli/commands/sim/deploy.d.ts.map +1 -0
  182. package/dist/cli/commands/sim/deploy.js +127 -0
  183. package/dist/cli/commands/sim/deploy.js.map +1 -0
  184. package/dist/cli/commands/sim/dev.d.ts +40 -0
  185. package/dist/cli/commands/sim/dev.d.ts.map +1 -0
  186. package/dist/cli/commands/sim/dev.js +254 -0
  187. package/dist/cli/commands/sim/dev.js.map +1 -0
  188. package/dist/cli/commands/sim/env.d.ts +56 -0
  189. package/dist/cli/commands/sim/env.d.ts.map +1 -0
  190. package/dist/cli/commands/sim/env.js +204 -0
  191. package/dist/cli/commands/sim/env.js.map +1 -0
  192. package/dist/cli/commands/sim/profile.d.ts +67 -0
  193. package/dist/cli/commands/sim/profile.d.ts.map +1 -0
  194. package/dist/cli/commands/sim/profile.js +354 -0
  195. package/dist/cli/commands/sim/profile.js.map +1 -0
  196. package/dist/cli/commands/sim/repl.d.ts +16 -0
  197. package/dist/cli/commands/sim/repl.d.ts.map +1 -0
  198. package/dist/cli/commands/sim/repl.js +119 -0
  199. package/dist/cli/commands/sim/repl.js.map +1 -0
  200. package/dist/cli/commands/sim/reset.d.ts +11 -0
  201. package/dist/cli/commands/sim/reset.d.ts.map +1 -0
  202. package/dist/cli/commands/sim/reset.js +59 -0
  203. package/dist/cli/commands/sim/reset.js.map +1 -0
  204. package/dist/cli/commands/sim/scaffold.d.ts +11 -0
  205. package/dist/cli/commands/sim/scaffold.d.ts.map +1 -0
  206. package/dist/cli/commands/sim/scaffold.js +41 -0
  207. package/dist/cli/commands/sim/scaffold.js.map +1 -0
  208. package/dist/cli/commands/sim/test.d.ts +49 -0
  209. package/dist/cli/commands/sim/test.d.ts.map +1 -0
  210. package/dist/cli/commands/sim/test.js +364 -0
  211. package/dist/cli/commands/sim/test.js.map +1 -0
  212. package/dist/cli/commands/sim.d.ts +220 -0
  213. package/dist/cli/commands/sim.d.ts.map +1 -0
  214. package/dist/cli/commands/sim.js +69 -0
  215. package/dist/cli/commands/sim.js.map +1 -0
  216. package/dist/cli/commands/tail.d.ts +14 -0
  217. package/dist/cli/commands/tail.d.ts.map +1 -0
  218. package/dist/cli/commands/tail.js +50 -0
  219. package/dist/cli/commands/tail.js.map +1 -0
  220. package/dist/cli/commands/test.d.ts +39 -0
  221. package/dist/cli/commands/test.d.ts.map +1 -0
  222. package/dist/cli/commands/test.js +432 -0
  223. package/dist/cli/commands/test.js.map +1 -0
  224. package/dist/cli/components/DevicePicker.d.ts +9 -0
  225. package/dist/cli/components/DevicePicker.d.ts.map +1 -0
  226. package/dist/cli/components/DevicePicker.js +71 -0
  227. package/dist/cli/components/DevicePicker.js.map +1 -0
  228. package/dist/cli/components/EnvEditor.d.ts +12 -0
  229. package/dist/cli/components/EnvEditor.d.ts.map +1 -0
  230. package/dist/cli/components/EnvEditor.js +201 -0
  231. package/dist/cli/components/EnvEditor.js.map +1 -0
  232. package/dist/cli/components/TextInput.d.ts +28 -0
  233. package/dist/cli/components/TextInput.d.ts.map +1 -0
  234. package/dist/cli/components/TextInput.js +73 -0
  235. package/dist/cli/components/TextInput.js.map +1 -0
  236. package/dist/cli/components/TitledBox.d.ts +27 -0
  237. package/dist/cli/components/TitledBox.d.ts.map +1 -0
  238. package/dist/cli/components/TitledBox.js +111 -0
  239. package/dist/cli/components/TitledBox.js.map +1 -0
  240. package/dist/cli/hooks/useDevices.d.ts +23 -0
  241. package/dist/cli/hooks/useDevices.d.ts.map +1 -0
  242. package/dist/cli/hooks/useDevices.js +19 -0
  243. package/dist/cli/hooks/useDevices.js.map +1 -0
  244. package/dist/cli/lib/RenderAndExit.d.ts +6 -0
  245. package/dist/cli/lib/RenderAndExit.d.ts.map +1 -0
  246. package/dist/cli/lib/RenderAndExit.js +8 -0
  247. package/dist/cli/lib/RenderAndExit.js.map +1 -0
  248. package/dist/cli/lib/Spinner.d.ts +11 -0
  249. package/dist/cli/lib/Spinner.d.ts.map +1 -0
  250. package/dist/cli/lib/Spinner.js +22 -0
  251. package/dist/cli/lib/Spinner.js.map +1 -0
  252. package/dist/cli/lib/agent.d.ts +38 -0
  253. package/dist/cli/lib/agent.d.ts.map +1 -0
  254. package/dist/cli/lib/agent.js +87 -0
  255. package/dist/cli/lib/agent.js.map +1 -0
  256. package/dist/cli/lib/boards.d.ts +23 -0
  257. package/dist/cli/lib/boards.d.ts.map +1 -0
  258. package/dist/cli/lib/boards.js +67 -0
  259. package/dist/cli/lib/boards.js.map +1 -0
  260. package/dist/cli/lib/build.d.ts +47 -0
  261. package/dist/cli/lib/build.d.ts.map +1 -0
  262. package/dist/cli/lib/build.js +533 -0
  263. package/dist/cli/lib/build.js.map +1 -0
  264. package/dist/cli/lib/connectSim.d.ts +21 -0
  265. package/dist/cli/lib/connectSim.d.ts.map +1 -0
  266. package/dist/cli/lib/connectSim.js +20 -0
  267. package/dist/cli/lib/connectSim.js.map +1 -0
  268. package/dist/cli/lib/deploy.d.ts +42 -0
  269. package/dist/cli/lib/deploy.d.ts.map +1 -0
  270. package/dist/cli/lib/deploy.js +121 -0
  271. package/dist/cli/lib/deploy.js.map +1 -0
  272. package/dist/cli/lib/deployProgress.d.ts +8 -0
  273. package/dist/cli/lib/deployProgress.d.ts.map +1 -0
  274. package/dist/cli/lib/deployProgress.js +32 -0
  275. package/dist/cli/lib/deployProgress.js.map +1 -0
  276. package/dist/cli/lib/dotenv.d.ts +16 -0
  277. package/dist/cli/lib/dotenv.d.ts.map +1 -0
  278. package/dist/cli/lib/dotenv.js +33 -0
  279. package/dist/cli/lib/dotenv.js.map +1 -0
  280. package/dist/cli/lib/esbuild.d.ts +7 -0
  281. package/dist/cli/lib/esbuild.d.ts.map +1 -0
  282. package/dist/cli/lib/esbuild.js +15 -0
  283. package/dist/cli/lib/esbuild.js.map +1 -0
  284. package/dist/cli/lib/esptool.d.ts +41 -0
  285. package/dist/cli/lib/esptool.d.ts.map +1 -0
  286. package/dist/cli/lib/esptool.js +43 -0
  287. package/dist/cli/lib/esptool.js.map +1 -0
  288. package/dist/cli/lib/firmware.d.ts +24 -0
  289. package/dist/cli/lib/firmware.d.ts.map +1 -0
  290. package/dist/cli/lib/firmware.js +379 -0
  291. package/dist/cli/lib/firmware.js.map +1 -0
  292. package/dist/cli/lib/firmwareCompat.d.ts +19 -0
  293. package/dist/cli/lib/firmwareCompat.d.ts.map +1 -0
  294. package/dist/cli/lib/firmwareCompat.js +31 -0
  295. package/dist/cli/lib/firmwareCompat.js.map +1 -0
  296. package/dist/cli/lib/heapBaseline.d.ts +15 -0
  297. package/dist/cli/lib/heapBaseline.d.ts.map +1 -0
  298. package/dist/cli/lib/heapBaseline.js +39 -0
  299. package/dist/cli/lib/heapBaseline.js.map +1 -0
  300. package/dist/cli/lib/ink-table/index.d.ts +88 -0
  301. package/dist/cli/lib/ink-table/index.d.ts.map +1 -0
  302. package/dist/cli/lib/ink-table/index.js +217 -0
  303. package/dist/cli/lib/ink-table/index.js.map +1 -0
  304. package/dist/cli/lib/loadMikroConfig.d.ts +7 -0
  305. package/dist/cli/lib/loadMikroConfig.d.ts.map +1 -0
  306. package/dist/cli/lib/loadMikroConfig.js +26 -0
  307. package/dist/cli/lib/loadMikroConfig.js.map +1 -0
  308. package/dist/cli/lib/minify.d.ts +3 -0
  309. package/dist/cli/lib/minify.d.ts.map +1 -0
  310. package/dist/cli/lib/minify.js +89 -0
  311. package/dist/cli/lib/minify.js.map +1 -0
  312. package/dist/cli/lib/openSim.d.ts +29 -0
  313. package/dist/cli/lib/openSim.d.ts.map +1 -0
  314. package/dist/cli/lib/openSim.js +32 -0
  315. package/dist/cli/lib/openSim.js.map +1 -0
  316. package/dist/cli/lib/ospawn.d.ts +34 -0
  317. package/dist/cli/lib/ospawn.d.ts.map +1 -0
  318. package/dist/cli/lib/ospawn.js +90 -0
  319. package/dist/cli/lib/ospawn.js.map +1 -0
  320. package/dist/cli/lib/parseMinifier.d.ts +10 -0
  321. package/dist/cli/lib/parseMinifier.d.ts.map +1 -0
  322. package/dist/cli/lib/parseMinifier.js +49 -0
  323. package/dist/cli/lib/parseMinifier.js.map +1 -0
  324. package/dist/cli/lib/parseSize.d.ts +6 -0
  325. package/dist/cli/lib/parseSize.d.ts.map +1 -0
  326. package/dist/cli/lib/parseSize.js +25 -0
  327. package/dist/cli/lib/parseSize.js.map +1 -0
  328. package/dist/cli/lib/projectRoot.d.ts +11 -0
  329. package/dist/cli/lib/projectRoot.d.ts.map +1 -0
  330. package/dist/cli/lib/projectRoot.js +28 -0
  331. package/dist/cli/lib/projectRoot.js.map +1 -0
  332. package/dist/cli/lib/protocol.d.ts +144 -0
  333. package/dist/cli/lib/protocol.d.ts.map +1 -0
  334. package/dist/cli/lib/protocol.js +385 -0
  335. package/dist/cli/lib/protocol.js.map +1 -0
  336. package/dist/cli/lib/recover.d.ts +25 -0
  337. package/dist/cli/lib/recover.d.ts.map +1 -0
  338. package/dist/cli/lib/recover.js +144 -0
  339. package/dist/cli/lib/recover.js.map +1 -0
  340. package/dist/cli/lib/resolveEntry.d.ts +7 -0
  341. package/dist/cli/lib/resolveEntry.d.ts.map +1 -0
  342. package/dist/cli/lib/resolveEntry.js +30 -0
  343. package/dist/cli/lib/resolveEntry.js.map +1 -0
  344. package/dist/cli/lib/runHooks.d.ts +34 -0
  345. package/dist/cli/lib/runHooks.d.ts.map +1 -0
  346. package/dist/cli/lib/runHooks.js +90 -0
  347. package/dist/cli/lib/runHooks.js.map +1 -0
  348. package/dist/cli/lib/serial/InkReplConsole.d.ts +27 -0
  349. package/dist/cli/lib/serial/InkReplConsole.d.ts.map +1 -0
  350. package/dist/cli/lib/serial/InkReplConsole.js +24 -0
  351. package/dist/cli/lib/serial/InkReplConsole.js.map +1 -0
  352. package/dist/cli/lib/serial/InkReplMode.d.ts +38 -0
  353. package/dist/cli/lib/serial/InkReplMode.d.ts.map +1 -0
  354. package/dist/cli/lib/serial/InkReplMode.js +90 -0
  355. package/dist/cli/lib/serial/InkReplMode.js.map +1 -0
  356. package/dist/cli/lib/serial/ReplConsole.d.ts +21 -0
  357. package/dist/cli/lib/serial/ReplConsole.d.ts.map +1 -0
  358. package/dist/cli/lib/serial/ReplConsole.js +249 -0
  359. package/dist/cli/lib/serial/ReplConsole.js.map +1 -0
  360. package/dist/cli/lib/serial/devSession.d.ts +53 -0
  361. package/dist/cli/lib/serial/devSession.d.ts.map +1 -0
  362. package/dist/cli/lib/serial/devSession.js +160 -0
  363. package/dist/cli/lib/serial/devSession.js.map +1 -0
  364. package/dist/cli/lib/serial/dispatchReplCommand.d.ts +25 -0
  365. package/dist/cli/lib/serial/dispatchReplCommand.d.ts.map +1 -0
  366. package/dist/cli/lib/serial/dispatchReplCommand.js +27 -0
  367. package/dist/cli/lib/serial/dispatchReplCommand.js.map +1 -0
  368. package/dist/cli/lib/serial/openSession.d.ts +28 -0
  369. package/dist/cli/lib/serial/openSession.d.ts.map +1 -0
  370. package/dist/cli/lib/serial/openSession.js +48 -0
  371. package/dist/cli/lib/serial/openSession.js.map +1 -0
  372. package/dist/cli/lib/serial/replStateMachine.d.ts +169 -0
  373. package/dist/cli/lib/serial/replStateMachine.d.ts.map +1 -0
  374. package/dist/cli/lib/serial/replStateMachine.js +650 -0
  375. package/dist/cli/lib/serial/replStateMachine.js.map +1 -0
  376. package/dist/cli/lib/serial/runAgentRepl.d.ts +33 -0
  377. package/dist/cli/lib/serial/runAgentRepl.d.ts.map +1 -0
  378. package/dist/cli/lib/serial/runAgentRepl.js +80 -0
  379. package/dist/cli/lib/serial/runAgentRepl.js.map +1 -0
  380. package/dist/cli/lib/session.d.ts +163 -0
  381. package/dist/cli/lib/session.d.ts.map +1 -0
  382. package/dist/cli/lib/session.js +490 -0
  383. package/dist/cli/lib/session.js.map +1 -0
  384. package/dist/cli/lib/simConfig.d.ts +15 -0
  385. package/dist/cli/lib/simConfig.d.ts.map +1 -0
  386. package/dist/cli/lib/simConfig.js +25 -0
  387. package/dist/cli/lib/simConfig.js.map +1 -0
  388. package/dist/cli/lib/simPid.d.ts +30 -0
  389. package/dist/cli/lib/simPid.d.ts.map +1 -0
  390. package/dist/cli/lib/simPid.js +112 -0
  391. package/dist/cli/lib/simPid.js.map +1 -0
  392. package/dist/cli/lib/simTransport.d.ts +17 -0
  393. package/dist/cli/lib/simTransport.d.ts.map +1 -0
  394. package/dist/cli/lib/simTransport.js +80 -0
  395. package/dist/cli/lib/simTransport.js.map +1 -0
  396. package/dist/cli/lib/testRunner.d.ts +86 -0
  397. package/dist/cli/lib/testRunner.d.ts.map +1 -0
  398. package/dist/cli/lib/testRunner.js +469 -0
  399. package/dist/cli/lib/testRunner.js.map +1 -0
  400. package/dist/cli/lib/transport.d.ts +34 -0
  401. package/dist/cli/lib/transport.d.ts.map +1 -0
  402. package/dist/cli/lib/transport.js +117 -0
  403. package/dist/cli/lib/transport.js.map +1 -0
  404. package/dist/cli/lib/useObservable.d.ts +4 -0
  405. package/dist/cli/lib/useObservable.d.ts.map +1 -0
  406. package/dist/cli/lib/useObservable.js +22 -0
  407. package/dist/cli/lib/useObservable.js.map +1 -0
  408. package/dist/cli/lib/watcher.d.ts +10 -0
  409. package/dist/cli/lib/watcher.d.ts.map +1 -0
  410. package/dist/cli/lib/watcher.js +34 -0
  411. package/dist/cli/lib/watcher.js.map +1 -0
  412. package/dist/constants.d.ts +13 -0
  413. package/dist/constants.d.ts.map +1 -0
  414. package/dist/constants.js +27 -0
  415. package/dist/constants.js.map +1 -0
  416. package/dist/simulator/builtins/ble.d.ts +3 -0
  417. package/dist/simulator/builtins/ble.d.ts.map +1 -0
  418. package/dist/simulator/builtins/ble.js +45 -0
  419. package/dist/simulator/builtins/ble.js.map +1 -0
  420. package/dist/simulator/builtins/console.d.ts +8 -0
  421. package/dist/simulator/builtins/console.d.ts.map +1 -0
  422. package/dist/simulator/builtins/console.js +24 -0
  423. package/dist/simulator/builtins/console.js.map +1 -0
  424. package/dist/simulator/builtins/http.d.ts +3 -0
  425. package/dist/simulator/builtins/http.d.ts.map +1 -0
  426. package/dist/simulator/builtins/http.js +32 -0
  427. package/dist/simulator/builtins/http.js.map +1 -0
  428. package/dist/simulator/builtins/i2c.d.ts +3 -0
  429. package/dist/simulator/builtins/i2c.d.ts.map +1 -0
  430. package/dist/simulator/builtins/i2c.js +16 -0
  431. package/dist/simulator/builtins/i2c.js.map +1 -0
  432. package/dist/simulator/builtins/index.d.ts +7 -0
  433. package/dist/simulator/builtins/index.d.ts.map +1 -0
  434. package/dist/simulator/builtins/index.js +49 -0
  435. package/dist/simulator/builtins/index.js.map +1 -0
  436. package/dist/simulator/builtins/kv.d.ts +3 -0
  437. package/dist/simulator/builtins/kv.d.ts.map +1 -0
  438. package/dist/simulator/builtins/kv.js +38 -0
  439. package/dist/simulator/builtins/kv.js.map +1 -0
  440. package/dist/simulator/builtins/neopixel.d.ts +3 -0
  441. package/dist/simulator/builtins/neopixel.d.ts.map +1 -0
  442. package/dist/simulator/builtins/neopixel.js +13 -0
  443. package/dist/simulator/builtins/neopixel.js.map +1 -0
  444. package/dist/simulator/builtins/nvs-kv.d.ts +3 -0
  445. package/dist/simulator/builtins/nvs-kv.d.ts.map +1 -0
  446. package/dist/simulator/builtins/nvs-kv.js +34 -0
  447. package/dist/simulator/builtins/nvs-kv.js.map +1 -0
  448. package/dist/simulator/builtins/pin.d.ts +3 -0
  449. package/dist/simulator/builtins/pin.d.ts.map +1 -0
  450. package/dist/simulator/builtins/pin.js +31 -0
  451. package/dist/simulator/builtins/pin.js.map +1 -0
  452. package/dist/simulator/builtins/pwm.d.ts +3 -0
  453. package/dist/simulator/builtins/pwm.d.ts.map +1 -0
  454. package/dist/simulator/builtins/pwm.js +29 -0
  455. package/dist/simulator/builtins/pwm.js.map +1 -0
  456. package/dist/simulator/builtins/sleep.d.ts +3 -0
  457. package/dist/simulator/builtins/sleep.d.ts.map +1 -0
  458. package/dist/simulator/builtins/sleep.js +32 -0
  459. package/dist/simulator/builtins/sleep.js.map +1 -0
  460. package/dist/simulator/builtins/sntp.d.ts +3 -0
  461. package/dist/simulator/builtins/sntp.d.ts.map +1 -0
  462. package/dist/simulator/builtins/sntp.js +12 -0
  463. package/dist/simulator/builtins/sntp.js.map +1 -0
  464. package/dist/simulator/builtins/spi.d.ts +3 -0
  465. package/dist/simulator/builtins/spi.d.ts.map +1 -0
  466. package/dist/simulator/builtins/spi.js +15 -0
  467. package/dist/simulator/builtins/spi.js.map +1 -0
  468. package/dist/simulator/builtins/types.d.ts +24 -0
  469. package/dist/simulator/builtins/types.d.ts.map +1 -0
  470. package/dist/simulator/builtins/types.js +2 -0
  471. package/dist/simulator/builtins/types.js.map +1 -0
  472. package/dist/simulator/builtins/uart.d.ts +3 -0
  473. package/dist/simulator/builtins/uart.d.ts.map +1 -0
  474. package/dist/simulator/builtins/uart.js +20 -0
  475. package/dist/simulator/builtins/uart.js.map +1 -0
  476. package/dist/simulator/builtins/wifi.d.ts +3 -0
  477. package/dist/simulator/builtins/wifi.d.ts.map +1 -0
  478. package/dist/simulator/builtins/wifi.js +54 -0
  479. package/dist/simulator/builtins/wifi.js.map +1 -0
  480. package/dist/simulator/devRunner.d.ts +41 -0
  481. package/dist/simulator/devRunner.d.ts.map +1 -0
  482. package/dist/simulator/devRunner.js +140 -0
  483. package/dist/simulator/devRunner.js.map +1 -0
  484. package/dist/simulator/loadSimStubs.d.ts +15 -0
  485. package/dist/simulator/loadSimStubs.d.ts.map +1 -0
  486. package/dist/simulator/loadSimStubs.js +54 -0
  487. package/dist/simulator/loadSimStubs.js.map +1 -0
  488. package/dist/simulator/simProcess.d.ts +11 -0
  489. package/dist/simulator/simProcess.d.ts.map +1 -0
  490. package/dist/simulator/simProcess.js +963 -0
  491. package/dist/simulator/simProcess.js.map +1 -0
  492. package/dist/simulator/simTemplates.d.ts +6 -0
  493. package/dist/simulator/simTemplates.d.ts.map +1 -0
  494. package/dist/simulator/simTemplates.js +21 -0
  495. package/dist/simulator/simTemplates.js.map +1 -0
  496. package/package.json +123 -2
  497. package/runtime.d.ts +95 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliWrapper.js","sourceRoot":"","sources":["../../src/cli/cliWrapper.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,IAAI,EAAC,MAAM,oBAAoB,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AAEzD,SAAS,GAAG;IACV,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAElD,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;QACpC,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QACxB,CAAC;QACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,CAAA;IACD,SAAS,IAAI,CAAC,MAA4B,EAAE,OAAgB;QAC1D,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACrB,KAAK,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAA;QACnC,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,CAAC,CAAA;QACnF,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,EAAE,CAAA;QACP,CAAC;IACH,CAAC;IACD,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AAChC,CAAC;AAED,GAAG,EAAE,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { type InferValue } from '@optique/core';
2
+ export declare const args: import("@optique/core").Parser<"sync", {
3
+ readonly action: "build-runtime";
4
+ readonly outDir: string;
5
+ readonly minifier: string | undefined;
6
+ readonly minifyLevel: string | undefined;
7
+ }, ["matched", string] | ["parsing", {
8
+ readonly action: "build-runtime";
9
+ readonly outDir: import("@optique/core").ValueParserResult<string> | undefined;
10
+ readonly minifier: [import("@optique/core").ValueParserResult<string> | undefined] | undefined;
11
+ readonly minifyLevel: [import("@optique/core").ValueParserResult<string> | undefined] | undefined;
12
+ }] | undefined>;
13
+ export default function buildRuntime(props: InferValue<typeof args>): Promise<void>;
14
+ //# sourceMappingURL=build-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-runtime.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build-runtime.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,UAAU,EAAoB,MAAM,eAAe,CAAA;AAYnF,eAAO,MAAM,IAAI;;;;;;;;;;eAiBhB,CAAA;AAuGD,wBAA8B,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,iBAgCxE"}
@@ -0,0 +1,122 @@
1
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
2
+ import * as pathlib from 'node:path';
3
+ import { compileBytecodeToHeader } from '@mikrojs/native';
4
+ import { command, constant, message, optional } from '@optique/core';
5
+ import { object } from '@optique/core/constructs';
6
+ import { argument, option } from '@optique/core/primitives';
7
+ import { string } from '@optique/core/valueparser';
8
+ import { path } from '@optique/run';
9
+ import * as esbuild from 'esbuild';
10
+ import figures from 'figures';
11
+ import { getBuildOptions } from '../lib/esbuild.js';
12
+ import { minifyJs } from '../lib/minify.js';
13
+ import { parseMinifier, parseMinifyLevel } from '../lib/parseMinifier.js';
14
+ export const args = command('build-runtime', object({
15
+ action: constant('build-runtime'),
16
+ outDir: argument(path({ metavar: 'OUTDIR', allowCreate: true, type: 'directory' })),
17
+ minifier: optional(option('--minifier', string({ metavar: 'NAME' }), {
18
+ description: message `Minifier: esbuild, terser, or swc (default: esbuild)`,
19
+ })),
20
+ minifyLevel: optional(option('--minify-level', string({ metavar: 'LEVEL' }), {
21
+ description: message `Minify level: default or max`,
22
+ })),
23
+ }), { hidden: true });
24
+ // Resolve relative to package root (works from both src/ and dist/)
25
+ const PKG_ROOT = pathlib.join(import.meta.dirname, '../../..');
26
+ const RUNTIME_MODULES_DIR = pathlib.join(PKG_ROOT, 'src/runtime');
27
+ const MODULE_NAMES = [
28
+ 'fetch',
29
+ 'i2c',
30
+ 'neopixel',
31
+ 'pin',
32
+ 'pwm',
33
+ 'rtc',
34
+ 'sleep',
35
+ 'spi',
36
+ 'sntp',
37
+ 'stdio',
38
+ 'sys',
39
+ 'wifi',
40
+ ];
41
+ function getRuntimeModules(outDir) {
42
+ const genTargetPath = pathlib.resolve(outDir);
43
+ return MODULE_NAMES.map((name) => ({
44
+ name,
45
+ entry: pathlib.join(RUNTIME_MODULES_DIR, `${name}.ts`),
46
+ target: pathlib.join(genTargetPath, `mikrojs_${name}.h`),
47
+ esbuildOptions: {
48
+ minify: true,
49
+ bundle: true,
50
+ },
51
+ }));
52
+ }
53
+ /**
54
+ * Extract external import specifiers (mikrojs/*) from bundled JS source so
55
+ * they can be declared as external modules to the bytecode compiler.
56
+ */
57
+ function extractExternalImports(source) {
58
+ const imports = new Set();
59
+ for (const match of source.matchAll(/from\s*["'](mikrojs\/[^"']+)["']/g)) {
60
+ imports.add(match[1]);
61
+ }
62
+ return [...imports];
63
+ }
64
+ async function buildModule(module, options) {
65
+ await mkdir(pathlib.dirname(module.target), { recursive: true });
66
+ const minifier = parseMinifier(options.minifier) ?? 'esbuild';
67
+ const minifyLevel = parseMinifyLevel(options.minifyLevel) ?? 'default';
68
+ const useEsbuildMinify = minifier === 'esbuild';
69
+ const buildOpts = getBuildOptions(module.entry.replace('file://', ''), {
70
+ ...module.esbuildOptions,
71
+ minify: useEsbuildMinify && (module.esbuildOptions?.minify ?? true),
72
+ });
73
+ const bundle = await esbuild.build(buildOpts);
74
+ const output = bundle.outputFiles?.[0];
75
+ if (!output) {
76
+ throw new Error(`Bundling ${module.name} did not produce a file`);
77
+ }
78
+ let bundleSource = new TextDecoder().decode(output.contents);
79
+ if (!useEsbuildMinify) {
80
+ bundleSource = await minifyJs(bundleSource, minifier, minifyLevel);
81
+ }
82
+ const bundleBytes = Buffer.byteLength(bundleSource);
83
+ const externals = extractExternalImports(bundleSource);
84
+ const moduleName = `mikrojs/${module.name}`;
85
+ const symbolName = `mikrojs_${module.name}_bytecode`;
86
+ const header = compileBytecodeToHeader(bundleSource, moduleName, symbolName, externals);
87
+ // Only write if content changed to avoid unnecessary recompilation
88
+ const existing = await readFile(module.target, 'utf-8').catch(() => null);
89
+ if (existing !== header) {
90
+ await writeFile(module.target, header);
91
+ }
92
+ // Extract bytecode size from the generated header's array length comment
93
+ const sizeMatch = header.match(/\[(\d+)\]/);
94
+ const bytecodeBytes = sizeMatch ? Number(sizeMatch[1]) : 0;
95
+ return { bundleBytes, bytecodeBytes };
96
+ }
97
+ export default async function buildRuntime(props) {
98
+ const modules = getRuntimeModules(props.outDir);
99
+ const minifierOptions = {
100
+ minifier: props.minifier ?? 'esbuild',
101
+ minifyLevel: props.minifyLevel ?? 'default',
102
+ };
103
+ const results = await Promise.allSettled(modules.map((mod) => buildModule(mod, minifierOptions)));
104
+ for (const [i, result] of results.entries()) {
105
+ const mod = modules[i];
106
+ const target = pathlib.relative(process.cwd(), mod.target);
107
+ if (result.status === 'fulfilled') {
108
+ const { bundleBytes, bytecodeBytes } = result.value;
109
+ // eslint-disable-next-line no-console
110
+ console.log(`\t${figures.tick} Compiled runtime module: ${mod.name} (bundle: ${bundleBytes} B, bytecode: ${bytecodeBytes} B)`);
111
+ }
112
+ else {
113
+ // eslint-disable-next-line no-console
114
+ console.error(`\t${figures.cross} Error compiling runtime module "${mod.name}" to ${target}: ${result.reason}`);
115
+ }
116
+ }
117
+ const failed = results.filter((r) => r.status === 'rejected');
118
+ if (failed.length > 0) {
119
+ process.exit(1);
120
+ }
121
+ }
122
+ //# sourceMappingURL=build-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-runtime.js","sourceRoot":"","sources":["../../../src/cli/commands/build-runtime.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { InferValue } from '@optique/core/parser';
2
+ export declare const args: import("@optique/core").Parser<"sync", {
3
+ readonly action: "build";
4
+ readonly entry: string | undefined;
5
+ readonly outDir: string;
6
+ readonly noMinify: true | undefined;
7
+ readonly minifier: string | undefined;
8
+ readonly minifyLevel: string | undefined;
9
+ readonly noBytecode: true | undefined;
10
+ readonly logLevel: string | undefined;
11
+ readonly json: true | undefined;
12
+ readonly agent: true | undefined;
13
+ }, ["matched", string] | ["parsing", {
14
+ readonly action: "build";
15
+ readonly entry: [import("@optique/core").ValueParserResult<string> | undefined] | undefined;
16
+ readonly outDir: [import("@optique/core").ValueParserResult<string> | undefined] | undefined;
17
+ readonly noMinify: [import("@optique/core").ValueParserResult<true> | undefined] | undefined;
18
+ readonly minifier: [import("@optique/core").ValueParserResult<string> | undefined] | undefined;
19
+ readonly minifyLevel: [import("@optique/core").ValueParserResult<string> | undefined] | undefined;
20
+ readonly noBytecode: [import("@optique/core").ValueParserResult<true> | undefined] | undefined;
21
+ readonly logLevel: [import("@optique/core").ValueParserResult<string> | undefined] | undefined;
22
+ readonly json: [import("@optique/core").ValueParserResult<true> | undefined] | undefined;
23
+ readonly agent: [import("@optique/core").ValueParserResult<true> | undefined] | undefined;
24
+ }] | undefined>;
25
+ export declare function run(config: InferValue<typeof args>): Promise<void>;
26
+ type Props = {
27
+ args: InferValue<typeof args>;
28
+ };
29
+ export default function Build(props: Props): import("react/jsx-runtime").JSX.Element;
30
+ export {};
31
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAA;AAkBpD,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;eA6BhB,CAAA;AAUD,wBAAsB,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,iBAiDxD;AAED,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAA;CAC9B,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,KAAK,EAAE,KAAK,2CAkBzC"}
@@ -0,0 +1,145 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { readdir, stat } from 'node:fs/promises';
3
+ import * as pathlib from 'node:path';
4
+ import { command, constant, message, object, optional, withDefault } from '@optique/core';
5
+ import { argument, flag, option } from '@optique/core/primitives';
6
+ import { string } from '@optique/core/valueparser';
7
+ import { path } from '@optique/run';
8
+ import spinners from 'cli-spinners';
9
+ import figures from 'figures';
10
+ import { Box, Text } from 'ink';
11
+ import React, { useEffect, useMemo, useReducer } from 'react';
12
+ import { lastValueFrom } from 'rxjs';
13
+ import { agentError, agentResult, isAgentMode } from '../lib/agent.js';
14
+ import { build } from '../lib/build.js';
15
+ import { parseLogLevel, parseMinifier, parseMinifyLevel } from '../lib/parseMinifier.js';
16
+ import { RenderAndExit } from '../lib/RenderAndExit.js';
17
+ import { resolveEntry } from '../lib/resolveEntry.js';
18
+ import { Spinner } from '../lib/Spinner.js';
19
+ export const args = command('build', object({
20
+ action: constant('build'),
21
+ entry: optional(argument(path({ metavar: 'ENTRY', mustExist: true, type: 'file' }))),
22
+ outDir: withDefault(argument(path({ metavar: 'OUTDIR', allowCreate: true, type: 'directory' })), 'build'),
23
+ noMinify: optional(flag('--no-minify', { description: message `Skip minification` })),
24
+ minifier: optional(option('--minifier', string({ metavar: 'NAME' }), {
25
+ description: message `Minifier: esbuild, terser, or swc (default: esbuild)`,
26
+ })),
27
+ minifyLevel: optional(option('--minify-level', string({ metavar: 'LEVEL' }), {
28
+ description: message `Minify level: default or max`,
29
+ })),
30
+ noBytecode: optional(flag('--no-bytecode', { description: message `Skip bytecode compilation` })),
31
+ logLevel: optional(option('--loglevel', string({ metavar: 'LEVEL' }), {
32
+ description: message `Log level: none, error, warn, info, debug. Console calls below this level are eliminated at build time.`,
33
+ })),
34
+ json: optional(flag('--json', { description: message `Output as JSON` })),
35
+ agent: optional(flag('--agent', { description: message `Output as JSON (agent mode)` })),
36
+ }));
37
+ function formatSize(bytes) {
38
+ if (bytes < 1024)
39
+ return `${bytes} B`;
40
+ const kb = bytes / 1024;
41
+ if (kb < 1024)
42
+ return `${kb.toFixed(1)} KB`;
43
+ const mb = kb / 1024;
44
+ return `${mb.toFixed(1)} MB`;
45
+ }
46
+ export async function run(config) {
47
+ const entry = resolveEntry(config.entry);
48
+ const { outDir, noMinify, noBytecode } = config;
49
+ const minifier = parseMinifier(config.minifier);
50
+ const minifyLevel = parseMinifyLevel(config.minifyLevel);
51
+ const logLevel = parseLogLevel(config.logLevel) ?? 'warn';
52
+ const jsonOutput = config.json === true || isAgentMode(config.agent);
53
+ try {
54
+ await lastValueFrom(build(entry, outDir, {
55
+ minify: !noMinify,
56
+ bytecode: !noBytecode,
57
+ minifier,
58
+ minifyLevel,
59
+ logLevel,
60
+ }), { defaultValue: undefined });
61
+ const entries = await readdir(outDir, { recursive: true });
62
+ const files = [];
63
+ for (const e of entries) {
64
+ const full = pathlib.join(outDir, e);
65
+ const s = await stat(full);
66
+ if (s.isFile())
67
+ files.push({ path: '/' + e, size: s.size });
68
+ }
69
+ if (jsonOutput) {
70
+ agentResult('build', { entry, outDir, files }, [
71
+ { command: 'mikro deploy', description: 'Deploy build to device' },
72
+ { command: `mikro build ${entry} --no-bytecode`, description: 'Rebuild without bytecode' },
73
+ ]);
74
+ }
75
+ else {
76
+ const totalSize = files.reduce((sum, f) => sum + f.size, 0);
77
+ // eslint-disable-next-line no-console
78
+ console.log(`Built ${files.length} file(s) to ${outDir}, ${formatSize(totalSize)} total`);
79
+ for (const file of files) {
80
+ // eslint-disable-next-line no-console
81
+ console.log(` ${file.path} ${formatSize(file.size)}`);
82
+ }
83
+ }
84
+ }
85
+ catch (err) {
86
+ const msg = err instanceof Error ? err.message : String(err);
87
+ if (jsonOutput) {
88
+ agentError('build', msg, { fix: `Check that ${entry} exists and has valid syntax` });
89
+ }
90
+ else {
91
+ // eslint-disable-next-line no-console
92
+ console.error(`Error: ${msg}`);
93
+ }
94
+ process.exit(1);
95
+ }
96
+ }
97
+ export default function Build(props) {
98
+ const { outDir, noMinify, noBytecode } = props.args;
99
+ const minifier = parseMinifier(props.args.minifier);
100
+ const minifyLevel = parseMinifyLevel(props.args.minifyLevel);
101
+ const logLevel = parseLogLevel(props.args.logLevel);
102
+ const entry = resolveEntry(props.args.entry);
103
+ return (_jsx(Run, { entry: entry, outDir: outDir, minify: !noMinify, bytecode: !noBytecode, minifier: minifier, minifyLevel: minifyLevel, logLevel: logLevel }));
104
+ }
105
+ function buildReducer(state, event) {
106
+ switch (event.type) {
107
+ case 'phase':
108
+ return { ...state, phase: event.phase };
109
+ case 'file':
110
+ return { ...state, files: [...state.files, { path: event.path, size: event.size }] };
111
+ case 'done':
112
+ return { ...state, done: true };
113
+ case 'error':
114
+ return { ...state, error: event.message };
115
+ default:
116
+ return state;
117
+ }
118
+ }
119
+ const initialState = {
120
+ phase: 'Starting',
121
+ files: [],
122
+ done: false,
123
+ error: null,
124
+ };
125
+ function Run(props) {
126
+ const { entry, outDir, minify, bytecode, minifier, minifyLevel, logLevel } = props;
127
+ const [state, dispatch] = useReducer(buildReducer, initialState);
128
+ const _build = useMemo(() => build(entry, outDir, { minify, bytecode, minifier, minifyLevel, logLevel }), [entry, outDir, minify, bytecode, minifier, minifyLevel, logLevel]);
129
+ useEffect(() => {
130
+ const sub = _build.subscribe({
131
+ next: (event) => dispatch(event),
132
+ error: (err) => dispatch({ type: 'error', message: err instanceof Error ? err.message : String(err) }),
133
+ });
134
+ return () => sub.unsubscribe();
135
+ }, [_build]);
136
+ if (state.error) {
137
+ return (_jsx(RenderAndExit, { exitCode: 1, children: _jsxs(Text, { color: "red", children: [figures.cross, " ", state.error] }) }));
138
+ }
139
+ if (state.done) {
140
+ const totalSize = state.files.reduce((sum, f) => sum + f.size, 0);
141
+ return (_jsx(RenderAndExit, { exitCode: 0, children: _jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: "green", children: [figures.tick, " Built ", state.files.length, " file(s) to ", _jsx(Text, { color: "cyan", children: outDir }), ",", ' ', formatSize(totalSize), " total"] }), state.files.map((file) => (_jsxs(Text, { dimColor: true, children: [' ', file.path, " ", _jsx(Text, { color: "cyan", children: formatSize(file.size) })] }, file.path)))] }) }));
142
+ }
143
+ return (_jsxs(Text, { children: [_jsx(Spinner, { spinner: spinners.dots }), " ", state.phase, "\u2026"] }));
144
+ }
145
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { InferValue } from '@optique/core/parser';
2
+ export declare const args: import("@optique/core").Parser<"sync", {
3
+ readonly action: "clean";
4
+ readonly port: string | undefined;
5
+ readonly full: true | undefined;
6
+ readonly recover: true | undefined;
7
+ readonly yes: true | undefined;
8
+ }, ["matched", string] | ["parsing", {
9
+ readonly action: "clean";
10
+ readonly port: [import("@optique/core").ValueParserResult<string> | undefined] | undefined;
11
+ readonly full: [import("@optique/core").ValueParserResult<true> | undefined] | undefined;
12
+ readonly recover: [import("@optique/core").ValueParserResult<true> | undefined] | undefined;
13
+ readonly yes: [import("@optique/core").ValueParserResult<true> | undefined] | undefined;
14
+ }] | undefined>;
15
+ export declare function run(config: InferValue<typeof args>): Promise<void>;
16
+ //# sourceMappingURL=clean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAA;AAiBpD,eAAO,MAAM,IAAI;;;;;;;;;;;;eA0BhB,CAAA;AAED,wBAAsB,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAKxE"}
@@ -0,0 +1,148 @@
1
+ import * as readline from 'node:readline/promises';
2
+ import { command, constant, message, optional } from '@optique/core';
3
+ import { object } from '@optique/core/constructs';
4
+ import { flag, option } from '@optique/core/primitives';
5
+ import { string } from '@optique/core/valueparser';
6
+ import figures from 'figures';
7
+ import { filter, firstValueFrom } from 'rxjs';
8
+ import { SerialPort } from 'serialport';
9
+ import { BAUD_RATE, resolvePort } from '../lib/deploy.js';
10
+ import { triggerSafeMode } from '../lib/recover.js';
11
+ import { connectRepl } from '../lib/session.js';
12
+ import { createSerialTransport } from '../lib/transport.js';
13
+ const green = (s) => `\x1b[32m${s}\x1b[0m`;
14
+ const yellow = (s) => `\x1b[33m${s}\x1b[0m`;
15
+ const red = (s) => `\x1b[31m${s}\x1b[0m`;
16
+ const dim = (s) => `\x1b[2m${s}\x1b[0m`;
17
+ export const args = command('clean', object({
18
+ action: constant('clean'),
19
+ port: optional(option('-p', '--port', string({ metavar: 'PORT' }), {
20
+ description: message `Serial port of device`,
21
+ })),
22
+ full: optional(flag('--full', {
23
+ description: message `Remove all files and environment variables (not just the deployed app)`,
24
+ })),
25
+ recover: optional(flag('--recover', {
26
+ description: message `Reset the device into safe mode before cleaning. Use when the deployed app is crash-looping.`,
27
+ })),
28
+ yes: optional(flag('-y', '--yes', {
29
+ description: message `Skip confirmation prompt`,
30
+ })),
31
+ }), { description: message `Remove deployed app from device` });
32
+ export async function run(config) {
33
+ const isFull = config.full === true;
34
+ const skipConfirm = config.yes === true;
35
+ const doRecover = config.recover === true;
36
+ await cleanDevice(config.port, isFull, skipConfirm, doRecover);
37
+ }
38
+ async function cleanDevice(portOption, full, skipConfirm, recover) {
39
+ if (full && !skipConfirm) {
40
+ const confirmed = await confirm('This will delete all files and environment variables on the device.');
41
+ if (!confirmed)
42
+ return;
43
+ }
44
+ const devicePath = await resolvePort(portOption);
45
+ log(dim(`Connecting to ${devicePath}…`));
46
+ const serial = new SerialPort({ path: devicePath, baudRate: BAUD_RATE, autoOpen: false });
47
+ await new Promise((resolve, reject) => {
48
+ serial.open((err) => (err ? reject(err) : resolve()));
49
+ });
50
+ // IMPORTANT: create the session BEFORE triggerSafeMode so connectRepl's
51
+ // eager subscription is listening when the post-reset MSG_READY arrives.
52
+ // If we reverse the order, the bytes from the device's boot phase reach
53
+ // node-serialport before any listener exists and get dropped on the floor.
54
+ const transport = createSerialTransport(serial);
55
+ const session = connectRepl(transport);
56
+ if (recover) {
57
+ log(dim('Triggering safe mode…'));
58
+ await triggerSafeMode(serial);
59
+ }
60
+ try {
61
+ if (full) {
62
+ await cleanDeviceFull(session);
63
+ }
64
+ else {
65
+ await cleanDeviceApp(session);
66
+ }
67
+ log(`${green(figures.tick)} Device restarted`);
68
+ }
69
+ catch (err) {
70
+ log(`${red(figures.cross)} ${err instanceof Error ? err.message : String(err)}`);
71
+ process.exit(1);
72
+ }
73
+ finally {
74
+ session.close();
75
+ serial.close();
76
+ }
77
+ }
78
+ async function cleanDeviceApp(session) {
79
+ // Direct ERASE + DONE (no empty deploy staging, no .checksums stub)
80
+ await session.eraseApp({ restart: true });
81
+ log(`${green(figures.tick)} Removed deployed app`);
82
+ }
83
+ async function cleanDeviceFull(session) {
84
+ // First, clear env vars via config API
85
+ const entries = await session.config.list();
86
+ for (const entry of entries) {
87
+ await session.config.delete(entry.key);
88
+ }
89
+ log(`${green(figures.tick)} Cleared environment variables`);
90
+ // Delete non-/app files via eval (since /app is read-only from JS).
91
+ // Uses dynamic import() because the REPL evaluates as global script, not module.
92
+ await evalAndWait(session, `(async () => {
93
+ const {unlink, readDir, rmdir, stat} = await import('mikrojs/fs')
94
+ function safeName(name) {
95
+ return name && !name.includes('/') && name !== '.' && name !== '..'
96
+ }
97
+ function rmrf(path) {
98
+ const s = stat(path)
99
+ if (!s.ok) return
100
+ if (s.value.isDirectory) {
101
+ const entries = readDir(path)
102
+ if (entries.ok) {
103
+ for (const entry of entries.value) {
104
+ if (safeName(entry.name)) rmrf(path + '/' + entry.name)
105
+ }
106
+ }
107
+ rmdir(path)
108
+ } else {
109
+ unlink(path)
110
+ }
111
+ }
112
+ const root = readDir('/')
113
+ if (root.ok) {
114
+ for (const entry of root.value) {
115
+ if (safeName(entry.name) && entry.name !== 'app') {
116
+ rmrf('/' + entry.name)
117
+ }
118
+ }
119
+ }
120
+ })()`);
121
+ log(`${green(figures.tick)} Removed all files`);
122
+ // Erase the read-only /app directory + restart
123
+ await session.eraseApp({ restart: true });
124
+ }
125
+ /** Eval JS on device and wait for the result (or error) indicating completion */
126
+ async function evalAndWait(session, code) {
127
+ const done = firstValueFrom(session.messages$.pipe(filter((e) => e.type === 'result' || e.type === 'eval_error')));
128
+ session.eval(code);
129
+ await done;
130
+ }
131
+ async function confirm(msg) {
132
+ if (!process.stdin.isTTY) {
133
+ log(red('Error: --full requires confirmation. Use -y to skip in non-interactive mode.'));
134
+ process.exit(1);
135
+ }
136
+ const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
137
+ try {
138
+ log(`${yellow(figures.warning)} ${msg}`);
139
+ const answer = await rl.question('Continue? (y/N) ');
140
+ return answer.toLowerCase() === 'y';
141
+ }
142
+ finally {
143
+ rl.close();
144
+ }
145
+ }
146
+ // eslint-disable-next-line no-console
147
+ const log = (msg) => console.error(msg);
148
+ //# sourceMappingURL=clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { InferValue } from '@optique/core/parser';
2
+ export declare const args: import("@optique/core").Parser<"sync", {
3
+ readonly action: "console";
4
+ readonly port: string | undefined;
5
+ readonly agent: true | undefined;
6
+ readonly recover: true | undefined;
7
+ }, ["matched", string] | ["parsing", {
8
+ readonly action: "console";
9
+ readonly port: [import("@optique/core").ValueParserResult<string> | undefined] | undefined;
10
+ readonly agent: [import("@optique/core").ValueParserResult<true> | undefined] | undefined;
11
+ readonly recover: [import("@optique/core").ValueParserResult<true> | undefined] | undefined;
12
+ }] | undefined>;
13
+ type Props = {
14
+ args: InferValue<typeof args>;
15
+ };
16
+ export declare function run(config: InferValue<typeof args>): Promise<never>;
17
+ export default function ConsoleCmd(props: Props): import("react/jsx-runtime").JSX.Element;
18
+ export {};
19
+ //# sourceMappingURL=console.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/console.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAA;AAQpD,eAAO,MAAM,IAAI;;;;;;;;;;eAgBhB,CAAA;AAED,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAA;CAC9B,CAAA;AAED,wBAAsB,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,kBAWxD;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,KAAK,2CAO9C"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { command, constant, message, optional } from '@optique/core';
3
+ import { object } from '@optique/core/constructs';
4
+ import { flag, option } from '@optique/core/primitives';
5
+ import { string } from '@optique/core/valueparser';
6
+ import { DevicePicker } from '../components/DevicePicker.js';
7
+ import { InkReplMode } from '../lib/serial/InkReplMode.js';
8
+ import { runAgentRepl } from '../lib/serial/runAgentRepl.js';
9
+ export const args = command('console', object({
10
+ action: constant('console'),
11
+ port: optional(option('-p', '--port', string({ metavar: 'PORT' }), {
12
+ description: message `Serial port to connect to, example: /dev/cu.usbmodem101`,
13
+ })),
14
+ agent: optional(flag('--agent', { description: message `NDJSON agent protocol over stdio` })),
15
+ recover: optional(flag('--recover', {
16
+ description: message `Reset the device and force safe mode (skips autorun). Use when the deployed app is crash-looping.`,
17
+ })),
18
+ }));
19
+ export async function run(config) {
20
+ return runAgentRepl({ port: config.port, recover: config.recover === true }, {
21
+ command: 'console',
22
+ nextActions: [
23
+ { command: 'mikro dev', description: 'Start device development' },
24
+ { command: 'mikro deploy', description: 'Deploy to device' },
25
+ ],
26
+ });
27
+ }
28
+ export default function ConsoleCmd(props) {
29
+ const { port, recover } = props.args;
30
+ return (_jsx(DevicePicker, { port: port, children: (device) => _jsx(InkReplMode, { devicePath: device.path, recover: recover === true }) }));
31
+ }
32
+ //# sourceMappingURL=console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../../src/cli/commands/console.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAC,MAAM,eAAe,CAAA;AAClE,OAAO,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAA;AAE/C,OAAO,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAC,MAAM,EAAC,MAAM,2BAA2B,CAAA;AAEhD,OAAO,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAA;AAC1D,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAC,YAAY,EAAC,MAAM,+BAA+B,CAAA;AAE1D,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CACzB,SAAS,EACT,MAAM,CAAC;IACL,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC;IAC3B,IAAI,EAAE,QAAQ,CACZ,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAC,OAAO,EAAE,MAAM,EAAC,CAAC,EAAE;QAChD,WAAW,EAAE,OAAO,CAAA,yDAAyD;KAC9E,CAAC,CACH;IACD,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAC,WAAW,EAAE,OAAO,CAAA,kCAAkC,EAAC,CAAC,CAAC;IAC1F,OAAO,EAAE,QAAQ,CACf,IAAI,CAAC,WAAW,EAAE;QAChB,WAAW,EAAE,OAAO,CAAA,mGAAmG;KACxH,CAAC,CACH;CACF,CAAC,CACH,CAAA;AAMD,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,MAA+B;IACvD,OAAO,YAAY,CACjB,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,EAAC,EACrD;QACE,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE;YACX,EAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAC;YAC/D,EAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,kBAAkB,EAAC;SAC3D;KACF,CACF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAY;IAC7C,MAAM,EAAC,IAAI,EAAE,OAAO,EAAC,GAAG,KAAK,CAAC,IAAI,CAAA;IAClC,OAAO,CACL,KAAC,YAAY,IAAC,IAAI,EAAE,IAAI,YACrB,CAAC,MAAM,EAAE,EAAE,CAAC,KAAC,WAAW,IAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GAAI,GACnE,CAChB,CAAA;AACH,CAAC"}