mikrojs 0.0.0 → 0.0.8
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.
- package/LICENSE +21 -0
- package/README.md +76 -0
- package/bin/mikrojs.js +3 -0
- package/dist/_exports/ble.d.ts +3 -0
- package/dist/_exports/ble.d.ts.map +1 -0
- package/dist/_exports/ble.js +2 -0
- package/dist/_exports/ble.js.map +1 -0
- package/dist/_exports/cbor.d.ts +3 -0
- package/dist/_exports/cbor.d.ts.map +1 -0
- package/dist/_exports/cbor.js +2 -0
- package/dist/_exports/cbor.js.map +1 -0
- package/dist/_exports/console.d.ts +2 -0
- package/dist/_exports/console.d.ts.map +1 -0
- package/dist/_exports/console.js +2 -0
- package/dist/_exports/console.js.map +1 -0
- package/dist/_exports/env.d.ts +2 -0
- package/dist/_exports/env.d.ts.map +1 -0
- package/dist/_exports/env.js +2 -0
- package/dist/_exports/env.js.map +1 -0
- package/dist/_exports/format.d.ts +2 -0
- package/dist/_exports/format.d.ts.map +1 -0
- package/dist/_exports/format.js +2 -0
- package/dist/_exports/format.js.map +1 -0
- package/dist/_exports/fs.d.ts +2 -0
- package/dist/_exports/fs.d.ts.map +1 -0
- package/dist/_exports/fs.js +2 -0
- package/dist/_exports/fs.js.map +1 -0
- package/dist/_exports/http/helpers.d.ts +3 -0
- package/dist/_exports/http/helpers.d.ts.map +1 -0
- package/dist/_exports/http/helpers.js +5 -0
- package/dist/_exports/http/helpers.js.map +1 -0
- package/dist/_exports/http/request.d.ts +4 -0
- package/dist/_exports/http/request.d.ts.map +1 -0
- package/dist/_exports/http/request.js +10 -0
- package/dist/_exports/http/request.js.map +1 -0
- package/dist/_exports/i2c.d.ts +2 -0
- package/dist/_exports/i2c.d.ts.map +1 -0
- package/dist/_exports/i2c.js +2 -0
- package/dist/_exports/i2c.js.map +1 -0
- package/dist/_exports/index.d.ts +61 -0
- package/dist/_exports/index.d.ts.map +1 -0
- package/dist/_exports/index.js +4 -0
- package/dist/_exports/index.js.map +1 -0
- package/dist/_exports/inspect.d.ts +2 -0
- package/dist/_exports/inspect.d.ts.map +1 -0
- package/dist/_exports/inspect.js +2 -0
- package/dist/_exports/inspect.js.map +1 -0
- package/dist/_exports/kv/nvs.d.ts +3 -0
- package/dist/_exports/kv/nvs.d.ts.map +1 -0
- package/dist/_exports/kv/nvs.js +2 -0
- package/dist/_exports/kv/nvs.js.map +1 -0
- package/dist/_exports/kv/rtc.d.ts +3 -0
- package/dist/_exports/kv/rtc.d.ts.map +1 -0
- package/dist/_exports/kv/rtc.js +2 -0
- package/dist/_exports/kv/rtc.js.map +1 -0
- package/dist/_exports/neopixel.d.ts +2 -0
- package/dist/_exports/neopixel.d.ts.map +1 -0
- package/dist/_exports/neopixel.js +2 -0
- package/dist/_exports/neopixel.js.map +1 -0
- package/dist/_exports/pin.d.ts +2 -0
- package/dist/_exports/pin.d.ts.map +1 -0
- package/dist/_exports/pin.js +2 -0
- package/dist/_exports/pin.js.map +1 -0
- package/dist/_exports/pwm.d.ts +2 -0
- package/dist/_exports/pwm.d.ts.map +1 -0
- package/dist/_exports/pwm.js +2 -0
- package/dist/_exports/pwm.js.map +1 -0
- package/dist/_exports/reader.d.ts +2 -0
- package/dist/_exports/reader.d.ts.map +1 -0
- package/dist/_exports/reader.js +2 -0
- package/dist/_exports/reader.js.map +1 -0
- package/dist/_exports/result.d.ts +2 -0
- package/dist/_exports/result.d.ts.map +1 -0
- package/dist/_exports/result.js +2 -0
- package/dist/_exports/result.js.map +1 -0
- package/dist/_exports/schema.d.ts +2 -0
- package/dist/_exports/schema.d.ts.map +1 -0
- package/dist/_exports/schema.js +2 -0
- package/dist/_exports/schema.js.map +1 -0
- package/dist/_exports/sim.d.ts +199 -0
- package/dist/_exports/sim.d.ts.map +1 -0
- package/dist/_exports/sim.js +8 -0
- package/dist/_exports/sim.js.map +1 -0
- package/dist/_exports/sleep.d.ts +2 -0
- package/dist/_exports/sleep.d.ts.map +1 -0
- package/dist/_exports/sleep.js +2 -0
- package/dist/_exports/sleep.js.map +1 -0
- package/dist/_exports/sntp.d.ts +3 -0
- package/dist/_exports/sntp.d.ts.map +1 -0
- package/dist/_exports/sntp.js +2 -0
- package/dist/_exports/sntp.js.map +1 -0
- package/dist/_exports/spi.d.ts +2 -0
- package/dist/_exports/spi.d.ts.map +1 -0
- package/dist/_exports/spi.js +2 -0
- package/dist/_exports/spi.js.map +1 -0
- package/dist/_exports/stdio.d.ts +2 -0
- package/dist/_exports/stdio.d.ts.map +1 -0
- package/dist/_exports/stdio.js +2 -0
- package/dist/_exports/stdio.js.map +1 -0
- package/dist/_exports/stream.d.ts +2 -0
- package/dist/_exports/stream.d.ts.map +1 -0
- package/dist/_exports/stream.js +2 -0
- package/dist/_exports/stream.js.map +1 -0
- package/dist/_exports/sys.d.ts +2 -0
- package/dist/_exports/sys.d.ts.map +1 -0
- package/dist/_exports/sys.js +2 -0
- package/dist/_exports/sys.js.map +1 -0
- package/dist/_exports/test.d.ts +2 -0
- package/dist/_exports/test.d.ts.map +1 -0
- package/dist/_exports/test.js +2 -0
- package/dist/_exports/test.js.map +1 -0
- package/dist/_exports/uart.d.ts +2 -0
- package/dist/_exports/uart.d.ts.map +1 -0
- package/dist/_exports/uart.js +2 -0
- package/dist/_exports/uart.js.map +1 -0
- package/dist/_exports/wifi.d.ts +3 -0
- package/dist/_exports/wifi.d.ts.map +1 -0
- package/dist/_exports/wifi.js +2 -0
- package/dist/_exports/wifi.js.map +1 -0
- package/dist/cli/cli.d.ts +3 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +215 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/cliWrapper.d.ts +3 -0
- package/dist/cli/cliWrapper.d.ts.map +1 -0
- package/dist/cli/cliWrapper.js +40 -0
- package/dist/cli/cliWrapper.js.map +1 -0
- package/dist/cli/commands/build-runtime.d.ts +14 -0
- package/dist/cli/commands/build-runtime.d.ts.map +1 -0
- package/dist/cli/commands/build-runtime.js +122 -0
- package/dist/cli/commands/build-runtime.js.map +1 -0
- package/dist/cli/commands/build.d.ts +31 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/build.js +145 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/cli/commands/clean.d.ts +16 -0
- package/dist/cli/commands/clean.d.ts.map +1 -0
- package/dist/cli/commands/clean.js +148 -0
- package/dist/cli/commands/clean.js.map +1 -0
- package/dist/cli/commands/console.d.ts +19 -0
- package/dist/cli/commands/console.d.ts.map +1 -0
- package/dist/cli/commands/console.js +32 -0
- package/dist/cli/commands/console.js.map +1 -0
- package/dist/cli/commands/deploy.d.ts +63 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -0
- package/dist/cli/commands/deploy.js +242 -0
- package/dist/cli/commands/deploy.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +41 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/dev.js +170 -0
- package/dist/cli/commands/dev.js.map +1 -0
- package/dist/cli/commands/docs.d.ts +7 -0
- package/dist/cli/commands/docs.d.ts.map +1 -0
- package/dist/cli/commands/docs.js +20 -0
- package/dist/cli/commands/docs.js.map +1 -0
- package/dist/cli/commands/env.d.ts +59 -0
- package/dist/cli/commands/env.d.ts.map +1 -0
- package/dist/cli/commands/env.js +257 -0
- package/dist/cli/commands/env.js.map +1 -0
- package/dist/cli/commands/erase.d.ts +18 -0
- package/dist/cli/commands/erase.d.ts.map +1 -0
- package/dist/cli/commands/erase.js +90 -0
- package/dist/cli/commands/erase.js.map +1 -0
- package/dist/cli/commands/flash.d.ts +30 -0
- package/dist/cli/commands/flash.d.ts.map +1 -0
- package/dist/cli/commands/flash.js +243 -0
- package/dist/cli/commands/flash.js.map +1 -0
- package/dist/cli/commands/home.d.ts +7 -0
- package/dist/cli/commands/home.d.ts.map +1 -0
- package/dist/cli/commands/home.js +20 -0
- package/dist/cli/commands/home.js.map +1 -0
- package/dist/cli/commands/ls.d.ts +17 -0
- package/dist/cli/commands/ls.d.ts.map +1 -0
- package/dist/cli/commands/ls.js +62 -0
- package/dist/cli/commands/ls.js.map +1 -0
- package/dist/cli/commands/sim/clean.d.ts +7 -0
- package/dist/cli/commands/sim/clean.d.ts.map +1 -0
- package/dist/cli/commands/sim/clean.js +34 -0
- package/dist/cli/commands/sim/clean.js.map +1 -0
- package/dist/cli/commands/sim/deploy.d.ts +46 -0
- package/dist/cli/commands/sim/deploy.d.ts.map +1 -0
- package/dist/cli/commands/sim/deploy.js +127 -0
- package/dist/cli/commands/sim/deploy.js.map +1 -0
- package/dist/cli/commands/sim/dev.d.ts +52 -0
- package/dist/cli/commands/sim/dev.d.ts.map +1 -0
- package/dist/cli/commands/sim/dev.js +380 -0
- package/dist/cli/commands/sim/dev.js.map +1 -0
- package/dist/cli/commands/sim/env.d.ts +56 -0
- package/dist/cli/commands/sim/env.d.ts.map +1 -0
- package/dist/cli/commands/sim/env.js +204 -0
- package/dist/cli/commands/sim/env.js.map +1 -0
- package/dist/cli/commands/sim/profile.d.ts +67 -0
- package/dist/cli/commands/sim/profile.d.ts.map +1 -0
- package/dist/cli/commands/sim/profile.js +356 -0
- package/dist/cli/commands/sim/profile.js.map +1 -0
- package/dist/cli/commands/sim/repl.d.ts +16 -0
- package/dist/cli/commands/sim/repl.d.ts.map +1 -0
- package/dist/cli/commands/sim/repl.js +119 -0
- package/dist/cli/commands/sim/repl.js.map +1 -0
- package/dist/cli/commands/sim/reset.d.ts +11 -0
- package/dist/cli/commands/sim/reset.d.ts.map +1 -0
- package/dist/cli/commands/sim/reset.js +59 -0
- package/dist/cli/commands/sim/reset.js.map +1 -0
- package/dist/cli/commands/sim/scaffold.d.ts +11 -0
- package/dist/cli/commands/sim/scaffold.d.ts.map +1 -0
- package/dist/cli/commands/sim/scaffold.js +41 -0
- package/dist/cli/commands/sim/scaffold.js.map +1 -0
- package/dist/cli/commands/sim/test.d.ts +49 -0
- package/dist/cli/commands/sim/test.d.ts.map +1 -0
- package/dist/cli/commands/sim/test.js +364 -0
- package/dist/cli/commands/sim/test.js.map +1 -0
- package/dist/cli/commands/sim.d.ts +228 -0
- package/dist/cli/commands/sim.d.ts.map +1 -0
- package/dist/cli/commands/sim.js +69 -0
- package/dist/cli/commands/sim.js.map +1 -0
- package/dist/cli/commands/tail.d.ts +14 -0
- package/dist/cli/commands/tail.d.ts.map +1 -0
- package/dist/cli/commands/tail.js +50 -0
- package/dist/cli/commands/tail.js.map +1 -0
- package/dist/cli/commands/test.d.ts +39 -0
- package/dist/cli/commands/test.d.ts.map +1 -0
- package/dist/cli/commands/test.js +432 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/components/DevicePicker.d.ts +9 -0
- package/dist/cli/components/DevicePicker.d.ts.map +1 -0
- package/dist/cli/components/DevicePicker.js +71 -0
- package/dist/cli/components/DevicePicker.js.map +1 -0
- package/dist/cli/components/EnvEditor.d.ts +12 -0
- package/dist/cli/components/EnvEditor.d.ts.map +1 -0
- package/dist/cli/components/EnvEditor.js +201 -0
- package/dist/cli/components/EnvEditor.js.map +1 -0
- package/dist/cli/components/TextInput.d.ts +28 -0
- package/dist/cli/components/TextInput.d.ts.map +1 -0
- package/dist/cli/components/TextInput.js +73 -0
- package/dist/cli/components/TextInput.js.map +1 -0
- package/dist/cli/components/TitledBox.d.ts +27 -0
- package/dist/cli/components/TitledBox.d.ts.map +1 -0
- package/dist/cli/components/TitledBox.js +111 -0
- package/dist/cli/components/TitledBox.js.map +1 -0
- package/dist/cli/hooks/useDevices.d.ts +23 -0
- package/dist/cli/hooks/useDevices.d.ts.map +1 -0
- package/dist/cli/hooks/useDevices.js +19 -0
- package/dist/cli/hooks/useDevices.js.map +1 -0
- package/dist/cli/lib/RenderAndExit.d.ts +6 -0
- package/dist/cli/lib/RenderAndExit.d.ts.map +1 -0
- package/dist/cli/lib/RenderAndExit.js +8 -0
- package/dist/cli/lib/RenderAndExit.js.map +1 -0
- package/dist/cli/lib/Spinner.d.ts +11 -0
- package/dist/cli/lib/Spinner.d.ts.map +1 -0
- package/dist/cli/lib/Spinner.js +22 -0
- package/dist/cli/lib/Spinner.js.map +1 -0
- package/dist/cli/lib/agent.d.ts +38 -0
- package/dist/cli/lib/agent.d.ts.map +1 -0
- package/dist/cli/lib/agent.js +87 -0
- package/dist/cli/lib/agent.js.map +1 -0
- package/dist/cli/lib/boards.d.ts +23 -0
- package/dist/cli/lib/boards.d.ts.map +1 -0
- package/dist/cli/lib/boards.js +67 -0
- package/dist/cli/lib/boards.js.map +1 -0
- package/dist/cli/lib/build.d.ts +47 -0
- package/dist/cli/lib/build.d.ts.map +1 -0
- package/dist/cli/lib/build.js +533 -0
- package/dist/cli/lib/build.js.map +1 -0
- package/dist/cli/lib/connectSim.d.ts +21 -0
- package/dist/cli/lib/connectSim.d.ts.map +1 -0
- package/dist/cli/lib/connectSim.js +20 -0
- package/dist/cli/lib/connectSim.js.map +1 -0
- package/dist/cli/lib/deploy.d.ts +42 -0
- package/dist/cli/lib/deploy.d.ts.map +1 -0
- package/dist/cli/lib/deploy.js +121 -0
- package/dist/cli/lib/deploy.js.map +1 -0
- package/dist/cli/lib/deployProgress.d.ts +8 -0
- package/dist/cli/lib/deployProgress.d.ts.map +1 -0
- package/dist/cli/lib/deployProgress.js +32 -0
- package/dist/cli/lib/deployProgress.js.map +1 -0
- package/dist/cli/lib/dotenv.d.ts +16 -0
- package/dist/cli/lib/dotenv.d.ts.map +1 -0
- package/dist/cli/lib/dotenv.js +33 -0
- package/dist/cli/lib/dotenv.js.map +1 -0
- package/dist/cli/lib/esbuild.d.ts +7 -0
- package/dist/cli/lib/esbuild.d.ts.map +1 -0
- package/dist/cli/lib/esbuild.js +15 -0
- package/dist/cli/lib/esbuild.js.map +1 -0
- package/dist/cli/lib/esptool.d.ts +41 -0
- package/dist/cli/lib/esptool.d.ts.map +1 -0
- package/dist/cli/lib/esptool.js +43 -0
- package/dist/cli/lib/esptool.js.map +1 -0
- package/dist/cli/lib/firmware.d.ts +24 -0
- package/dist/cli/lib/firmware.d.ts.map +1 -0
- package/dist/cli/lib/firmware.js +406 -0
- package/dist/cli/lib/firmware.js.map +1 -0
- package/dist/cli/lib/firmwareCompat.d.ts +19 -0
- package/dist/cli/lib/firmwareCompat.d.ts.map +1 -0
- package/dist/cli/lib/firmwareCompat.js +31 -0
- package/dist/cli/lib/firmwareCompat.js.map +1 -0
- package/dist/cli/lib/heapBaseline.d.ts +15 -0
- package/dist/cli/lib/heapBaseline.d.ts.map +1 -0
- package/dist/cli/lib/heapBaseline.js +39 -0
- package/dist/cli/lib/heapBaseline.js.map +1 -0
- package/dist/cli/lib/ink-table/index.d.ts +88 -0
- package/dist/cli/lib/ink-table/index.d.ts.map +1 -0
- package/dist/cli/lib/ink-table/index.js +217 -0
- package/dist/cli/lib/ink-table/index.js.map +1 -0
- package/dist/cli/lib/loadMikroConfig.d.ts +7 -0
- package/dist/cli/lib/loadMikroConfig.d.ts.map +1 -0
- package/dist/cli/lib/loadMikroConfig.js +26 -0
- package/dist/cli/lib/loadMikroConfig.js.map +1 -0
- package/dist/cli/lib/minify.d.ts +3 -0
- package/dist/cli/lib/minify.d.ts.map +1 -0
- package/dist/cli/lib/minify.js +89 -0
- package/dist/cli/lib/minify.js.map +1 -0
- package/dist/cli/lib/openSim.d.ts +29 -0
- package/dist/cli/lib/openSim.d.ts.map +1 -0
- package/dist/cli/lib/openSim.js +32 -0
- package/dist/cli/lib/openSim.js.map +1 -0
- package/dist/cli/lib/ospawn.d.ts +34 -0
- package/dist/cli/lib/ospawn.d.ts.map +1 -0
- package/dist/cli/lib/ospawn.js +90 -0
- package/dist/cli/lib/ospawn.js.map +1 -0
- package/dist/cli/lib/parseMinifier.d.ts +10 -0
- package/dist/cli/lib/parseMinifier.d.ts.map +1 -0
- package/dist/cli/lib/parseMinifier.js +49 -0
- package/dist/cli/lib/parseMinifier.js.map +1 -0
- package/dist/cli/lib/parseSize.d.ts +6 -0
- package/dist/cli/lib/parseSize.d.ts.map +1 -0
- package/dist/cli/lib/parseSize.js +25 -0
- package/dist/cli/lib/parseSize.js.map +1 -0
- package/dist/cli/lib/projectRoot.d.ts +11 -0
- package/dist/cli/lib/projectRoot.d.ts.map +1 -0
- package/dist/cli/lib/projectRoot.js +28 -0
- package/dist/cli/lib/projectRoot.js.map +1 -0
- package/dist/cli/lib/protocol.d.ts +144 -0
- package/dist/cli/lib/protocol.d.ts.map +1 -0
- package/dist/cli/lib/protocol.js +385 -0
- package/dist/cli/lib/protocol.js.map +1 -0
- package/dist/cli/lib/recover.d.ts +25 -0
- package/dist/cli/lib/recover.d.ts.map +1 -0
- package/dist/cli/lib/recover.js +144 -0
- package/dist/cli/lib/recover.js.map +1 -0
- package/dist/cli/lib/resolveEntry.d.ts +7 -0
- package/dist/cli/lib/resolveEntry.d.ts.map +1 -0
- package/dist/cli/lib/resolveEntry.js +30 -0
- package/dist/cli/lib/resolveEntry.js.map +1 -0
- package/dist/cli/lib/runHooks.d.ts +34 -0
- package/dist/cli/lib/runHooks.d.ts.map +1 -0
- package/dist/cli/lib/runHooks.js +90 -0
- package/dist/cli/lib/runHooks.js.map +1 -0
- package/dist/cli/lib/serial/InkReplConsole.d.ts +27 -0
- package/dist/cli/lib/serial/InkReplConsole.d.ts.map +1 -0
- package/dist/cli/lib/serial/InkReplConsole.js +24 -0
- package/dist/cli/lib/serial/InkReplConsole.js.map +1 -0
- package/dist/cli/lib/serial/InkReplMode.d.ts +38 -0
- package/dist/cli/lib/serial/InkReplMode.d.ts.map +1 -0
- package/dist/cli/lib/serial/InkReplMode.js +90 -0
- package/dist/cli/lib/serial/InkReplMode.js.map +1 -0
- package/dist/cli/lib/serial/ReplConsole.d.ts +21 -0
- package/dist/cli/lib/serial/ReplConsole.d.ts.map +1 -0
- package/dist/cli/lib/serial/ReplConsole.js +249 -0
- package/dist/cli/lib/serial/ReplConsole.js.map +1 -0
- package/dist/cli/lib/serial/devSession.d.ts +57 -0
- package/dist/cli/lib/serial/devSession.d.ts.map +1 -0
- package/dist/cli/lib/serial/devSession.js +160 -0
- package/dist/cli/lib/serial/devSession.js.map +1 -0
- package/dist/cli/lib/serial/dispatchReplCommand.d.ts +25 -0
- package/dist/cli/lib/serial/dispatchReplCommand.d.ts.map +1 -0
- package/dist/cli/lib/serial/dispatchReplCommand.js +27 -0
- package/dist/cli/lib/serial/dispatchReplCommand.js.map +1 -0
- package/dist/cli/lib/serial/openSession.d.ts +28 -0
- package/dist/cli/lib/serial/openSession.d.ts.map +1 -0
- package/dist/cli/lib/serial/openSession.js +48 -0
- package/dist/cli/lib/serial/openSession.js.map +1 -0
- package/dist/cli/lib/serial/replStateMachine.d.ts +169 -0
- package/dist/cli/lib/serial/replStateMachine.d.ts.map +1 -0
- package/dist/cli/lib/serial/replStateMachine.js +657 -0
- package/dist/cli/lib/serial/replStateMachine.js.map +1 -0
- package/dist/cli/lib/serial/runAgentRepl.d.ts +33 -0
- package/dist/cli/lib/serial/runAgentRepl.d.ts.map +1 -0
- package/dist/cli/lib/serial/runAgentRepl.js +80 -0
- package/dist/cli/lib/serial/runAgentRepl.js.map +1 -0
- package/dist/cli/lib/session.d.ts +163 -0
- package/dist/cli/lib/session.d.ts.map +1 -0
- package/dist/cli/lib/session.js +490 -0
- package/dist/cli/lib/session.js.map +1 -0
- package/dist/cli/lib/simConfig.d.ts +15 -0
- package/dist/cli/lib/simConfig.d.ts.map +1 -0
- package/dist/cli/lib/simConfig.js +25 -0
- package/dist/cli/lib/simConfig.js.map +1 -0
- package/dist/cli/lib/simPid.d.ts +30 -0
- package/dist/cli/lib/simPid.d.ts.map +1 -0
- package/dist/cli/lib/simPid.js +120 -0
- package/dist/cli/lib/simPid.js.map +1 -0
- package/dist/cli/lib/simTransport.d.ts +17 -0
- package/dist/cli/lib/simTransport.d.ts.map +1 -0
- package/dist/cli/lib/simTransport.js +80 -0
- package/dist/cli/lib/simTransport.js.map +1 -0
- package/dist/cli/lib/testRunner.d.ts +86 -0
- package/dist/cli/lib/testRunner.d.ts.map +1 -0
- package/dist/cli/lib/testRunner.js +469 -0
- package/dist/cli/lib/testRunner.js.map +1 -0
- package/dist/cli/lib/transport.d.ts +34 -0
- package/dist/cli/lib/transport.d.ts.map +1 -0
- package/dist/cli/lib/transport.js +117 -0
- package/dist/cli/lib/transport.js.map +1 -0
- package/dist/cli/lib/useObservable.d.ts +4 -0
- package/dist/cli/lib/useObservable.d.ts.map +1 -0
- package/dist/cli/lib/useObservable.js +22 -0
- package/dist/cli/lib/useObservable.js.map +1 -0
- package/dist/cli/lib/watcher.d.ts +10 -0
- package/dist/cli/lib/watcher.d.ts.map +1 -0
- package/dist/cli/lib/watcher.js +34 -0
- package/dist/cli/lib/watcher.js.map +1 -0
- package/dist/constants.d.ts +13 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +27 -0
- package/dist/constants.js.map +1 -0
- package/dist/simulator/builtins/ble.d.ts +3 -0
- package/dist/simulator/builtins/ble.d.ts.map +1 -0
- package/dist/simulator/builtins/ble.js +46 -0
- package/dist/simulator/builtins/ble.js.map +1 -0
- package/dist/simulator/builtins/console.d.ts +8 -0
- package/dist/simulator/builtins/console.d.ts.map +1 -0
- package/dist/simulator/builtins/console.js +24 -0
- package/dist/simulator/builtins/console.js.map +1 -0
- package/dist/simulator/builtins/http.d.ts +3 -0
- package/dist/simulator/builtins/http.d.ts.map +1 -0
- package/dist/simulator/builtins/http.js +90 -0
- package/dist/simulator/builtins/http.js.map +1 -0
- package/dist/simulator/builtins/i2c.d.ts +3 -0
- package/dist/simulator/builtins/i2c.d.ts.map +1 -0
- package/dist/simulator/builtins/i2c.js +17 -0
- package/dist/simulator/builtins/i2c.js.map +1 -0
- package/dist/simulator/builtins/index.d.ts +7 -0
- package/dist/simulator/builtins/index.d.ts.map +1 -0
- package/dist/simulator/builtins/index.js +49 -0
- package/dist/simulator/builtins/index.js.map +1 -0
- package/dist/simulator/builtins/kv.d.ts +3 -0
- package/dist/simulator/builtins/kv.d.ts.map +1 -0
- package/dist/simulator/builtins/kv.js +39 -0
- package/dist/simulator/builtins/kv.js.map +1 -0
- package/dist/simulator/builtins/neopixel.d.ts +3 -0
- package/dist/simulator/builtins/neopixel.d.ts.map +1 -0
- package/dist/simulator/builtins/neopixel.js +15 -0
- package/dist/simulator/builtins/neopixel.js.map +1 -0
- package/dist/simulator/builtins/nvs-kv.d.ts +3 -0
- package/dist/simulator/builtins/nvs-kv.d.ts.map +1 -0
- package/dist/simulator/builtins/nvs-kv.js +69 -0
- package/dist/simulator/builtins/nvs-kv.js.map +1 -0
- package/dist/simulator/builtins/pin.d.ts +3 -0
- package/dist/simulator/builtins/pin.d.ts.map +1 -0
- package/dist/simulator/builtins/pin.js +32 -0
- package/dist/simulator/builtins/pin.js.map +1 -0
- package/dist/simulator/builtins/pwm.d.ts +3 -0
- package/dist/simulator/builtins/pwm.d.ts.map +1 -0
- package/dist/simulator/builtins/pwm.js +31 -0
- package/dist/simulator/builtins/pwm.js.map +1 -0
- package/dist/simulator/builtins/sleep.d.ts +3 -0
- package/dist/simulator/builtins/sleep.d.ts.map +1 -0
- package/dist/simulator/builtins/sleep.js +33 -0
- package/dist/simulator/builtins/sleep.js.map +1 -0
- package/dist/simulator/builtins/sntp.d.ts +3 -0
- package/dist/simulator/builtins/sntp.d.ts.map +1 -0
- package/dist/simulator/builtins/sntp.js +14 -0
- package/dist/simulator/builtins/sntp.js.map +1 -0
- package/dist/simulator/builtins/spi.d.ts +3 -0
- package/dist/simulator/builtins/spi.d.ts.map +1 -0
- package/dist/simulator/builtins/spi.js +16 -0
- package/dist/simulator/builtins/spi.js.map +1 -0
- package/dist/simulator/builtins/types.d.ts +24 -0
- package/dist/simulator/builtins/types.d.ts.map +1 -0
- package/dist/simulator/builtins/types.js +2 -0
- package/dist/simulator/builtins/types.js.map +1 -0
- package/dist/simulator/builtins/uart.d.ts +3 -0
- package/dist/simulator/builtins/uart.d.ts.map +1 -0
- package/dist/simulator/builtins/uart.js +22 -0
- package/dist/simulator/builtins/uart.js.map +1 -0
- package/dist/simulator/builtins/wifi.d.ts +3 -0
- package/dist/simulator/builtins/wifi.d.ts.map +1 -0
- package/dist/simulator/builtins/wifi.js +55 -0
- package/dist/simulator/builtins/wifi.js.map +1 -0
- package/dist/simulator/devRunner.d.ts +41 -0
- package/dist/simulator/devRunner.d.ts.map +1 -0
- package/dist/simulator/devRunner.js +201 -0
- package/dist/simulator/devRunner.js.map +1 -0
- package/dist/simulator/loadSimStubs.d.ts +15 -0
- package/dist/simulator/loadSimStubs.d.ts.map +1 -0
- package/dist/simulator/loadSimStubs.js +54 -0
- package/dist/simulator/loadSimStubs.js.map +1 -0
- package/dist/simulator/simProcess.d.ts +11 -0
- package/dist/simulator/simProcess.d.ts.map +1 -0
- package/dist/simulator/simProcess.js +957 -0
- package/dist/simulator/simProcess.js.map +1 -0
- package/dist/simulator/simTemplates.d.ts +6 -0
- package/dist/simulator/simTemplates.d.ts.map +1 -0
- package/dist/simulator/simTemplates.js +21 -0
- package/dist/simulator/simTemplates.js.map +1 -0
- package/package.json +123 -2
- package/runtime.d.ts +95 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/usr/bin/env node --watch
|
|
2
|
+
import { fork } from 'node:child_process';
|
|
3
|
+
import * as path from 'node:path';
|
|
4
|
+
const cliPath = path.join(import.meta.dirname, '/cli.js');
|
|
5
|
+
function run() {
|
|
6
|
+
const child = fork(cliPath, process.argv.slice(2));
|
|
7
|
+
// Track whether we're tearing down to start a fresh child (reload) so we
|
|
8
|
+
// can suppress the wrapper's own exit on the dying child.
|
|
9
|
+
let restarting = false;
|
|
10
|
+
const onMessage = (message) => {
|
|
11
|
+
if (message === 'exit') {
|
|
12
|
+
exit('SIGTERM', false);
|
|
13
|
+
}
|
|
14
|
+
if (message === 'reload') {
|
|
15
|
+
exit('SIGINT', true);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
function exit(signal, restart) {
|
|
19
|
+
restarting = restart;
|
|
20
|
+
child.kill('SIGTERM');
|
|
21
|
+
child.removeAllListeners('message');
|
|
22
|
+
// eslint-disable-next-line no-console
|
|
23
|
+
console.log(`${restart ? 'Restart' : 'Exit'} at %s\n`, new Date().toLocaleString());
|
|
24
|
+
if (restart) {
|
|
25
|
+
run();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Forward the child's exit code to the wrapper. Without this, a child that
|
|
29
|
+
// calls process.exit(1) (e.g. on a fatal CLI error like a missing env file)
|
|
30
|
+
// would leave the wrapper exiting 0, masking the failure from shell scripts
|
|
31
|
+
// and CI. Suppressed during reload so the new child's lifetime drives exit.
|
|
32
|
+
child.on('exit', (code, signal) => {
|
|
33
|
+
if (restarting)
|
|
34
|
+
return;
|
|
35
|
+
process.exit(code ?? (signal ? 1 : 0));
|
|
36
|
+
});
|
|
37
|
+
child.on('message', onMessage);
|
|
38
|
+
}
|
|
39
|
+
run();
|
|
40
|
+
//# sourceMappingURL=cliWrapper.js.map
|
|
@@ -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;IAClD,yEAAyE;IACzE,0DAA0D;IAC1D,IAAI,UAAU,GAAG,KAAK,CAAA;IAEtB,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,UAAU,GAAG,OAAO,CAAA;QACpB,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,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAC5E,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAChC,IAAI,UAAU;YAAE,OAAM;QACtB,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IACF,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"}
|