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,249 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import spinners from 'cli-spinners';
|
|
3
|
+
import { Box, Static, Text, useInput } from 'ink';
|
|
4
|
+
import React, { useCallback, useEffect, useState } from 'react';
|
|
5
|
+
import { whichPMRuns } from 'which-pm-runs';
|
|
6
|
+
import { EnvEditor } from '../../components/EnvEditor.js';
|
|
7
|
+
import { BorderFill, TitledBox } from '../../components/TitledBox.js';
|
|
8
|
+
import { logLevelAllows } from '../parseMinifier.js';
|
|
9
|
+
import { Spinner } from '../Spinner.js';
|
|
10
|
+
import { useObservable } from '../useObservable.js';
|
|
11
|
+
import { createInitialState, MULTILINE_HINT, WELCOME_HINT, } from './replStateMachine.js';
|
|
12
|
+
// ── Event rendering ────────────────────────────────────────
|
|
13
|
+
function testEventColor(e, data) {
|
|
14
|
+
switch (e) {
|
|
15
|
+
case 2:
|
|
16
|
+
return 'green';
|
|
17
|
+
case 3:
|
|
18
|
+
case 7:
|
|
19
|
+
return 'red';
|
|
20
|
+
case 4:
|
|
21
|
+
return 'yellow';
|
|
22
|
+
case 6:
|
|
23
|
+
return data.f > 0 ? 'red' : 'green';
|
|
24
|
+
case 8:
|
|
25
|
+
return 'gray';
|
|
26
|
+
default:
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const deviceIdSpinner = {
|
|
31
|
+
interval: 150,
|
|
32
|
+
frames: [
|
|
33
|
+
' ∙∙∙●∙∙∙∙∙∙ ',
|
|
34
|
+
' ∙∙∙∙●∙∙∙∙∙ ',
|
|
35
|
+
' ∙∙∙∙∙●∙∙∙∙ ',
|
|
36
|
+
' ∙∙∙∙∙∙●∙∙∙ ',
|
|
37
|
+
' ∙∙∙∙∙●∙∙∙∙ ',
|
|
38
|
+
' ∙∙∙∙●∙∙∙∙∙ ',
|
|
39
|
+
' ∙∙∙●∙∙∙∙∙∙ ',
|
|
40
|
+
],
|
|
41
|
+
};
|
|
42
|
+
function eventColor(event) {
|
|
43
|
+
switch (event.type) {
|
|
44
|
+
case 'error':
|
|
45
|
+
case 'eval_error':
|
|
46
|
+
case 'disconnect':
|
|
47
|
+
return 'red';
|
|
48
|
+
case 'warn':
|
|
49
|
+
return 'yellow';
|
|
50
|
+
case 'info':
|
|
51
|
+
return 'cyan';
|
|
52
|
+
case 'input':
|
|
53
|
+
return 'blue';
|
|
54
|
+
case 'result':
|
|
55
|
+
return 'green';
|
|
56
|
+
case 'connecting':
|
|
57
|
+
case 'restarting':
|
|
58
|
+
return 'yellow';
|
|
59
|
+
case 'ready':
|
|
60
|
+
return 'green';
|
|
61
|
+
case 'test':
|
|
62
|
+
return testEventColor(event.data.e, event.data);
|
|
63
|
+
default:
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function testEventText(data) {
|
|
68
|
+
switch (data.e) {
|
|
69
|
+
case 1: // suite_start
|
|
70
|
+
return String(data.s);
|
|
71
|
+
case 2: // test_pass
|
|
72
|
+
return ` ✓ ${data.t} (${data.d}ms)`;
|
|
73
|
+
case 3: // test_fail
|
|
74
|
+
return ` ✗ ${data.t} (${data.d}ms)\n ${data.m}`;
|
|
75
|
+
case 4: // test_skip
|
|
76
|
+
return ` - ${data.t}`;
|
|
77
|
+
case 6: {
|
|
78
|
+
// run_done
|
|
79
|
+
const parts = [];
|
|
80
|
+
if (data.p > 0)
|
|
81
|
+
parts.push(`${data.p} passed`);
|
|
82
|
+
if (data.f > 0)
|
|
83
|
+
parts.push(`${data.f} failed`);
|
|
84
|
+
if (data.k > 0)
|
|
85
|
+
parts.push(`${data.k} skipped`);
|
|
86
|
+
return `${parts.join(', ')} (${data.d}ms)`;
|
|
87
|
+
}
|
|
88
|
+
case 7: // beforeAll error
|
|
89
|
+
return ` ✗ beforeAll: ${data.m}`;
|
|
90
|
+
case 8: {
|
|
91
|
+
// heap
|
|
92
|
+
const used = (data.u / 1024) | 0;
|
|
93
|
+
const total = (data.t / 1024) | 0;
|
|
94
|
+
const parts = [`heap: ${used}/${total}KB, free: ${total - used}KB`];
|
|
95
|
+
if (typeof data.f === 'number') {
|
|
96
|
+
parts.push(`sysFree: ${(data.f / 1024) | 0}KB`);
|
|
97
|
+
}
|
|
98
|
+
if (typeof data.mf === 'number') {
|
|
99
|
+
parts.push(`sysMinFree: ${(data.mf / 1024) | 0}KB`);
|
|
100
|
+
}
|
|
101
|
+
return `[${parts.join(', ')}]`;
|
|
102
|
+
}
|
|
103
|
+
default:
|
|
104
|
+
return '';
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function eventText(event) {
|
|
108
|
+
switch (event.type) {
|
|
109
|
+
case 'connecting':
|
|
110
|
+
return event.port ? `Connecting to ${event.port}…` : 'Connecting…';
|
|
111
|
+
case 'restarting':
|
|
112
|
+
return 'Restarting…';
|
|
113
|
+
case 'ready': {
|
|
114
|
+
const name = event.id ?? event.chip ?? 'device';
|
|
115
|
+
const chip = event.id && event.chip ? ` (${event.chip})` : '';
|
|
116
|
+
const version = event.version ? ` Mikro.js v${event.version}` : '';
|
|
117
|
+
return `Connected to ${name}${chip}${version}`;
|
|
118
|
+
}
|
|
119
|
+
case 'input':
|
|
120
|
+
return event.code;
|
|
121
|
+
case 'raw':
|
|
122
|
+
return event.text;
|
|
123
|
+
case 'completions':
|
|
124
|
+
return event.result?.items.join(' ') ?? '';
|
|
125
|
+
case 'disconnect':
|
|
126
|
+
return event.error ?? 'Disconnected';
|
|
127
|
+
case 'log':
|
|
128
|
+
case 'warn':
|
|
129
|
+
case 'error':
|
|
130
|
+
case 'info':
|
|
131
|
+
case 'debug':
|
|
132
|
+
case 'result':
|
|
133
|
+
case 'eval_error':
|
|
134
|
+
return event.text;
|
|
135
|
+
case 'test':
|
|
136
|
+
return testEventText(event.data);
|
|
137
|
+
default:
|
|
138
|
+
return '';
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function shouldRender(event, logLevel) {
|
|
142
|
+
switch (event.type) {
|
|
143
|
+
case 'connecting':
|
|
144
|
+
case 'restarting':
|
|
145
|
+
case 'prompt':
|
|
146
|
+
case 'ok':
|
|
147
|
+
case 'err':
|
|
148
|
+
case 'checksum_result':
|
|
149
|
+
case 'config_entries':
|
|
150
|
+
return false;
|
|
151
|
+
case 'disconnect':
|
|
152
|
+
return Boolean(event.error);
|
|
153
|
+
case 'completions':
|
|
154
|
+
return (event.result?.items.length ?? 0) > 1;
|
|
155
|
+
case 'raw':
|
|
156
|
+
return event.text.trim().length > 0;
|
|
157
|
+
case 'test':
|
|
158
|
+
return event.data.e !== 5; // skip suite_end
|
|
159
|
+
case 'log':
|
|
160
|
+
case 'warn':
|
|
161
|
+
case 'error':
|
|
162
|
+
case 'info':
|
|
163
|
+
case 'debug':
|
|
164
|
+
return logLevelAllows(logLevel, event.type);
|
|
165
|
+
default:
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function getPackageRunner() {
|
|
170
|
+
const pm = whichPMRuns();
|
|
171
|
+
return pm?.name === 'pnpm'
|
|
172
|
+
? 'pnpm mikro'
|
|
173
|
+
: pm?.name === 'yarn'
|
|
174
|
+
? 'yarn mikro'
|
|
175
|
+
: pm?.name === 'bun'
|
|
176
|
+
? 'bunx mikro'
|
|
177
|
+
: 'npx mikro';
|
|
178
|
+
}
|
|
179
|
+
const INITIAL_STATE = createInitialState();
|
|
180
|
+
// ── Component ──────────────────────────────────────────────
|
|
181
|
+
export function ReplConsole({ repl, config, logLevel = 'debug', watch }) {
|
|
182
|
+
const state = useObservable(repl.state$, INITIAL_STATE);
|
|
183
|
+
const handleCloseOverlay = useCallback(() => repl.closeOverlay(), [repl]);
|
|
184
|
+
useInput((ch, key) => {
|
|
185
|
+
if (!state.overlay)
|
|
186
|
+
repl.keyInput(ch, key);
|
|
187
|
+
});
|
|
188
|
+
// Eval spinner (shown after 500ms of waiting for result)
|
|
189
|
+
const [showEvalSpinner, setShowEvalSpinner] = useState(false);
|
|
190
|
+
useEffect(() => {
|
|
191
|
+
if (!state.evaluating)
|
|
192
|
+
return;
|
|
193
|
+
const timer = setTimeout(() => setShowEvalSpinner(true), 500);
|
|
194
|
+
return () => {
|
|
195
|
+
clearTimeout(timer);
|
|
196
|
+
setShowEvalSpinner(false);
|
|
197
|
+
};
|
|
198
|
+
}, [state.evaluating]);
|
|
199
|
+
// ── Derived render state ───────────────────────────────────
|
|
200
|
+
const conn = state.connection;
|
|
201
|
+
if (conn.type === 'fallback') {
|
|
202
|
+
return (_jsx(Text, { color: "yellow", children: "Device does not support protocol REPL mode. Use `mikro console --raw` for legacy mode." }));
|
|
203
|
+
}
|
|
204
|
+
if (state.overlay === 'env' && config) {
|
|
205
|
+
return _jsx(EnvEditor, { config: config, onClose: handleCloseOverlay });
|
|
206
|
+
}
|
|
207
|
+
const isConnecting = conn.type === 'connecting' || conn.type === 'negotiating';
|
|
208
|
+
const isError = conn.type === 'error';
|
|
209
|
+
// One footer line drives both progress and watch-mode messaging so the
|
|
210
|
+
// REPL has a single "what's the dev loop doing right now" signal.
|
|
211
|
+
// Priority: active work outranks sticky errors outranks watch-mode
|
|
212
|
+
// idle copy. A sticky error stays pinned until the next cycle starts.
|
|
213
|
+
const footer = isConnecting
|
|
214
|
+
? {
|
|
215
|
+
message: conn.message ?? (state.port ? `Connecting to ${state.port}…` : 'Connecting…'),
|
|
216
|
+
tone: 'busy',
|
|
217
|
+
}
|
|
218
|
+
: state.disabled
|
|
219
|
+
? { message: state.deployStatus ?? 'Deploying…', tone: 'busy' }
|
|
220
|
+
: state.footerError
|
|
221
|
+
? { message: state.footerError, tone: 'error' }
|
|
222
|
+
: watch === true
|
|
223
|
+
? { message: 'Watching for file changes…', tone: 'watching' }
|
|
224
|
+
: watch === false
|
|
225
|
+
? { message: 'File watching off. Press Ctrl+S to redeploy', tone: 'idle' }
|
|
226
|
+
: null;
|
|
227
|
+
const renderableEvents = state.events.filter((event) => shouldRender(event, logLevel));
|
|
228
|
+
const prompt = '❯ ';
|
|
229
|
+
return (_jsxs(_Fragment, { children: [_jsx(Static, { items: renderableEvents, children: (event, index) => {
|
|
230
|
+
const text = eventText(event);
|
|
231
|
+
const color = eventColor(event);
|
|
232
|
+
const isDimmed = event.type === 'input' || event.type === 'debug';
|
|
233
|
+
const timing = event.type === 'input' ? event.timing : undefined;
|
|
234
|
+
return (_jsxs(Text, { color: color, dimColor: isDimmed, children: [timing ? `${timing} ` : '', text] }, index));
|
|
235
|
+
} }), state.showTroubleshooting && (_jsxs(Text, { color: isError ? 'red' : undefined, dimColor: !isError, children: ['\n Troubleshooting:\n\n', ' • Check that the device is connected and the correct port is selected\n', ' • Try power-cycling the device\n', ' • Check that no other program is using the serial port\n', ' • Check that the firmware is compatible. Run ', _jsxs(Text, { underline: true, children: [getPackageRunner(), " flash"] }), ' to update.\n'] })), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [footer && (_jsxs(Text, { color: footer.tone === 'busy' ? 'magenta' : footer.tone === 'error' ? 'red' : 'gray', dimColor: footer.tone === 'idle' || footer.tone === 'watching', children: [footer.tone === 'busy' ? (_jsxs(_Fragment, { children: [_jsx(Spinner, { spinner: spinners.dots }), ' '] })) : footer.tone === 'error' ? ('✗ ') : footer.tone === 'watching' ? (_jsx(Text, { color: "green", children: "\u25CF " })) : (''), footer.message] })), _jsxs(TitledBox, { header: _jsx(BorderFill, { char: "\u2500", color: isError || isConnecting ? 'gray' : state.disabled ? 'yellow' : 'blue', dimColor: isConnecting || isError, justifyContent: "end", children: _jsxs(Box, { gap: 1, marginX: 1, children: [_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: '⌬ ' }), _jsx(Text, { dimColor: true, children: "Mikro." }), _jsx(Text, { bold: true, color: "yellow", dimColor: true, children: "js" })] }), conn.type === 'ready' ? (_jsx(Text, { color: "black", backgroundColor: conn.chip === 'simulator' ? 'magenta' : 'blue', children: ` ${conn.deviceId ?? conn.chip ?? 'device'} ` })) : (_jsx(Text, { color: "grey", children: _jsx(Spinner, { spinner: deviceIdSpinner }) }))] }) }), borderStyle: "single", borderLeft: false, borderRight: false, borderColor: isError || isConnecting ? 'gray' : state.disabled ? 'yellow' : 'blue', borderDimColor: isConnecting || isError, paddingLeft: 1, children: [_jsx(Text, { color: isConnecting || isError ? 'gray' : 'blue', dimColor: isConnecting || isError, children: showEvalSpinner ? (_jsxs(_Fragment, { children: [_jsx(Spinner, { spinner: spinners.dots }), ' '] })) : (prompt) }), state.input === '' ? (_jsxs(Text, { dimColor: isConnecting || isError, children: [_jsx(Text, { inverse: true, color: isConnecting || isError ? 'gray' : undefined, children: ' ' }), showEvalSpinner && _jsx(Text, { dimColor: true, children: " Evaluating\u2026" })] })) : (_jsxs(Text, { color: isConnecting || isError ? 'gray' : undefined, children: [state.input.slice(0, state.cursor), _jsx(Text, { inverse: true, color: isConnecting || isError ? 'gray' : undefined, children: state.cursor >= state.input.length
|
|
236
|
+
? ' '
|
|
237
|
+
: state.input[state.cursor] === '\n'
|
|
238
|
+
? ' '
|
|
239
|
+
: state.input[state.cursor] }), state.cursor < state.input.length
|
|
240
|
+
? (state.input[state.cursor] === '\n' ? '\n' : '') +
|
|
241
|
+
state.input.slice(state.cursor + 1)
|
|
242
|
+
: ''] }))] }), _jsx(Text, { dimColor: true, children: isConnecting || isError
|
|
243
|
+
? 'Ctrl+D to exit'
|
|
244
|
+
: (state.overrideHint ??
|
|
245
|
+
(state.input.includes('\n') ? MULTILINE_HINT : null) ??
|
|
246
|
+
(state.showWelcome ? WELCOME_HINT : state.contextHint) ??
|
|
247
|
+
' ') })] })] }));
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=ReplConsole.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReplConsole.js","sourceRoot":"","sources":["../../../../src/cli/lib/serial/ReplConsole.tsx"],"names":[],"mappings":";AAAA,OAAO,QAAQ,MAAM,cAAc,CAAA;AACnC,OAAO,EAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAC,MAAM,KAAK,CAAA;AAC/C,OAAO,KAAK,EAAE,EAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAA;AAC7D,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAA;AAGzC,OAAO,EAAC,SAAS,EAAuB,MAAM,+BAA+B,CAAA;AAC7E,OAAO,EAAC,UAAU,EAAE,SAAS,EAAC,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAA;AACrC,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAA;AACjD,OAAO,EACL,kBAAkB,EAClB,cAAc,EAGd,YAAY,GACb,MAAM,uBAAuB,CAAA;AAmB9B,8DAA8D;AAE9D,SAAS,cAAc,CAAC,CAAS,EAAE,IAA6B;IAC9D,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,CAAC;YACJ,OAAO,OAAO,CAAA;QAChB,KAAK,CAAC,CAAC;QACP,KAAK,CAAC;YACJ,OAAO,KAAK,CAAA;QACd,KAAK,CAAC;YACJ,OAAO,QAAQ,CAAA;QACjB,KAAK,CAAC;YACJ,OAAQ,IAAI,CAAC,CAAY,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAA;QACjD,KAAK,CAAC;YACJ,OAAO,MAAM,CAAA;QACf;YACE,OAAO,SAAS,CAAA;IACpB,CAAC;AACH,CAAC;AAED,MAAM,eAAe,GAAG;IACtB,QAAQ,EAAE,GAAG;IACb,MAAM,EAAE;QACN,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;QACd,cAAc;KACf;CACF,CAAA;AAED,SAAS,UAAU,CAAC,KAAmB;IACrC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,OAAO,CAAC;QACb,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YACf,OAAO,KAAK,CAAA;QACd,KAAK,MAAM;YACT,OAAO,QAAQ,CAAA;QACjB,KAAK,MAAM;YACT,OAAO,MAAM,CAAA;QACf,KAAK,OAAO;YACV,OAAO,MAAM,CAAA;QACf,KAAK,QAAQ;YACX,OAAO,OAAO,CAAA;QAChB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YACf,OAAO,QAAQ,CAAA;QACjB,KAAK,OAAO;YACV,OAAO,OAAO,CAAA;QAChB,KAAK,MAAM;YACT,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3D;YACE,OAAO,SAAS,CAAA;IACpB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAA6B;IAClD,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC;QACf,KAAK,CAAC,EAAE,cAAc;YACpB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvB,KAAK,CAAC,EAAE,YAAY;YAClB,OAAO,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAA;QACtC,KAAK,CAAC,EAAE,YAAY;YAClB,OAAO,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,EAAE,CAAA;QACrD,KAAK,CAAC,EAAE,YAAY;YAClB,OAAO,OAAO,IAAI,CAAC,CAAC,EAAE,CAAA;QACxB,KAAK,CAAC,CAAC,CAAC,CAAC;YACP,WAAW;YACX,MAAM,KAAK,GAAa,EAAE,CAAA;YAC1B,IAAK,IAAI,CAAC,CAAY,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,CAAA;YAC1D,IAAK,IAAI,CAAC,CAAY,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,CAAA;YAC1D,IAAK,IAAI,CAAC,CAAY,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,CAAA;YAC3D,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAA;QAC5C,CAAC;QACD,KAAK,CAAC,EAAE,kBAAkB;YACxB,OAAO,kBAAkB,IAAI,CAAC,CAAC,EAAE,CAAA;QACnC,KAAK,CAAC,CAAC,CAAC,CAAC;YACP,OAAO;YACP,MAAM,IAAI,GAAG,CAAE,IAAI,CAAC,CAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YAC5C,MAAM,KAAK,GAAG,CAAE,IAAI,CAAC,CAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;YAC7C,MAAM,KAAK,GAAG,CAAC,SAAS,IAAI,IAAI,KAAK,aAAa,KAAK,GAAG,IAAI,IAAI,CAAC,CAAA;YACnE,IAAI,OAAO,IAAI,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACjD,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACrD,CAAC;YACD,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAChC,CAAC;QACD;YACE,OAAO,EAAE,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAmB;IACpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa,CAAA;QACpE,KAAK,YAAY;YACf,OAAO,aAAa,CAAA;QACtB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAA;YAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;YAC7D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAClE,OAAO,gBAAgB,IAAI,GAAG,IAAI,GAAG,OAAO,EAAE,CAAA;QAChD,CAAC;QACD,KAAK,OAAO;YACV,OAAO,KAAK,CAAC,IAAI,CAAA;QACnB,KAAK,KAAK;YACR,OAAO,KAAK,CAAC,IAAI,CAAA;QACnB,KAAK,aAAa;YAChB,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QAC7C,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,KAAK,IAAI,cAAc,CAAA;QACtC,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,IAAI,CAAA;QACnB,KAAK,MAAM;YACT,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAClC;YACE,OAAO,EAAE,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAmB,EAAE,QAAkB;IAC3D,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY,CAAC;QAClB,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,KAAK,CAAC;QACX,KAAK,iBAAiB,CAAC;QACvB,KAAK,gBAAgB;YACnB,OAAO,KAAK,CAAA;QACd,KAAK,YAAY;YACf,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC7B,KAAK,aAAa;YAChB,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QAC9C,KAAK,KAAK;YACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;QACrC,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAA,CAAC,iBAAiB;QAC7C,KAAK,KAAK,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC7C;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;IACxB,OAAO,EAAE,EAAE,IAAI,KAAK,MAAM;QACxB,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,EAAE,EAAE,IAAI,KAAK,MAAM;YACnB,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,EAAE,EAAE,IAAI,KAAK,KAAK;gBAClB,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,WAAW,CAAA;AACrB,CAAC;AAED,MAAM,aAAa,GAAG,kBAAkB,EAAE,CAAA;AAE1C,8DAA8D;AAE9D,MAAM,UAAU,WAAW,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,EAAE,KAAK,EAAmB;IACrF,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAEvD,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEzE,QAAQ,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;QACnB,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,yDAAyD;IACzD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,UAAU;YAAE,OAAM;QAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QAC7D,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,kBAAkB,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;IAEtB,8DAA8D;IAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAA;IAE7B,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uGAEb,CACR,CAAA;IACH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,MAAM,EAAE,CAAC;QACtC,OAAO,KAAC,SAAS,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAI,CAAA;IACnE,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAA;IAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAA;IAErC,uEAAuE;IACvE,kEAAkE;IAClE,mEAAmE;IACnE,sEAAsE;IACtE,MAAM,MAAM,GACV,YAAY;QACV,CAAC,CAAC;YACE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC;YACtF,IAAI,EAAE,MAAM;SACb;QACH,CAAC,CAAC,KAAK,CAAC,QAAQ;YACd,CAAC,CAAC,EAAC,OAAO,EAAE,KAAK,CAAC,YAAY,IAAI,YAAY,EAAE,IAAI,EAAE,MAAM,EAAC;YAC7D,CAAC,CAAC,KAAK,CAAC,WAAW;gBACjB,CAAC,CAAC,EAAC,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAC;gBAC7C,CAAC,CAAC,KAAK,KAAK,IAAI;oBACd,CAAC,CAAC,EAAC,OAAO,EAAE,4BAA4B,EAAE,IAAI,EAAE,UAAU,EAAC;oBAC3D,CAAC,CAAC,KAAK,KAAK,KAAK;wBACf,CAAC,CAAC,EAAC,OAAO,EAAE,6CAA6C,EAAE,IAAI,EAAE,MAAM,EAAC;wBACxE,CAAC,CAAC,IAAI,CAAA;IAElB,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEtF,MAAM,MAAM,GAAG,IAAI,CAAA;IAEnB,OAAO,CACL,8BACE,KAAC,MAAM,IAAC,KAAK,EAAE,gBAAgB,YAC5B,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBAChB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;oBAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;oBAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAA;oBACjE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;oBAEhE,OAAO,CACL,MAAC,IAAI,IAAa,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,aAC/C,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAC1B,IAAI,KAFI,KAAK,CAGT,CACR,CAAA;gBACH,CAAC,GACM,EAER,KAAK,CAAC,mBAAmB,IAAI,CAC5B,MAAC,IAAI,IAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,OAAO,aACzD,0BAA0B,EAC1B,2EAA2E,EAC3E,oCAAoC,EACpC,4DAA4D,EAC5D,iDAAiD,EAClD,MAAC,IAAI,IAAC,SAAS,mBAAE,gBAAgB,EAAE,cAAc,EAChD,eAAe,IACX,CACR,EACD,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACrC,MAAM,IAAI,CACT,MAAC,IAAI,IACH,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EACpF,QAAQ,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,aAE7D,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CACxB,8BACE,KAAC,OAAO,IAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,GAAI,EAAC,GAAG,IACtC,CACJ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAC5B,IAAI,CACL,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAC/B,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,wBAAU,CAC9B,CAAC,CAAC,CAAC,CACF,EAAE,CACH,EACA,MAAM,CAAC,OAAO,IACV,CACR,EACD,MAAC,SAAS,IACR,MAAM,EACJ,KAAC,UAAU,IACT,IAAI,EAAC,QAAG,EACR,KAAK,EAAE,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAC5E,QAAQ,EAAE,YAAY,IAAI,OAAO,EACjC,cAAc,EAAC,KAAK,YAEpB,MAAC,GAAG,IAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,aACrB,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,GAAQ,EAC5B,KAAC,IAAI,IAAC,QAAQ,6BAAc,EAC5B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,QAAQ,EAAC,QAAQ,yBAE3B,IACH,EACL,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CACvB,KAAC,IAAI,IACH,KAAK,EAAC,OAAO,EACb,eAAe,EAAE,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,YAE9D,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,GAAG,GACzC,CACR,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAChB,KAAC,OAAO,IAAC,OAAO,EAAE,eAAe,GAAI,GAChC,CACR,IACG,GACK,EAEf,WAAW,EAAC,QAAQ,EACpB,UAAU,EAAE,KAAK,EACjB,WAAW,EAAE,KAAK,EAClB,WAAW,EAAE,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAClF,cAAc,EAAE,YAAY,IAAI,OAAO,EACvC,WAAW,EAAE,CAAC,aAEd,KAAC,IAAI,IACH,KAAK,EAAE,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAChD,QAAQ,EAAE,YAAY,IAAI,OAAO,YAEhC,eAAe,CAAC,CAAC,CAAC,CACjB,8BACE,KAAC,OAAO,IAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,GAAI,EAAC,GAAG,IACtC,CACJ,CAAC,CAAC,CAAC,CACF,MAAM,CACP,GACI,EACN,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,CACpB,MAAC,IAAI,IAAC,QAAQ,EAAE,YAAY,IAAI,OAAO,aACrC,KAAC,IAAI,IAAC,OAAO,QAAC,KAAK,EAAE,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAC9D,GAAG,GACC,EACN,eAAe,IAAI,KAAC,IAAI,IAAC,QAAQ,wCAAoB,IACjD,CACR,CAAC,CAAC,CAAC,CACF,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,aACtD,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EACnC,KAAC,IAAI,IAAC,OAAO,QAAC,KAAK,EAAE,YAAY,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAC9D,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM;4CACjC,CAAC,CAAC,GAAG;4CACL,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI;gDAClC,CAAC,CAAC,GAAG;gDACL,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAC1B,EACN,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM;wCAChC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;4CAChD,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;wCACrC,CAAC,CAAC,EAAE,IACD,CACR,IACS,EACZ,KAAC,IAAI,IAAC,QAAQ,kBACX,YAAY,IAAI,OAAO;4BACtB,CAAC,CAAC,gBAAgB;4BAClB,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY;gCACnB,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;gCACpD,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;gCACtD,GAAG,CAAC,GACH,IACH,IACL,CACJ,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type Observable } from 'rxjs';
|
|
2
|
+
import type { LogLevel, Minifier, MinifyLevel } from '../../../_exports/index.js';
|
|
3
|
+
import type { DeployEvent, ReplSession } from '../session.js';
|
|
4
|
+
import type { ReplHandle } from './replStateMachine.js';
|
|
5
|
+
export type DevStatus = {
|
|
6
|
+
type: 'building';
|
|
7
|
+
} | {
|
|
8
|
+
type: 'rebuilding';
|
|
9
|
+
} | {
|
|
10
|
+
type: 'checking';
|
|
11
|
+
command: string;
|
|
12
|
+
} | {
|
|
13
|
+
type: 'deploying';
|
|
14
|
+
event: DeployEvent;
|
|
15
|
+
} | {
|
|
16
|
+
type: 'watching';
|
|
17
|
+
} | {
|
|
18
|
+
type: 'error';
|
|
19
|
+
message: string;
|
|
20
|
+
};
|
|
21
|
+
export interface DevSessionState {
|
|
22
|
+
status: DevStatus;
|
|
23
|
+
}
|
|
24
|
+
export interface DevSessionHandle {
|
|
25
|
+
state$: Observable<DevSessionState>;
|
|
26
|
+
close(): void;
|
|
27
|
+
}
|
|
28
|
+
export declare function createDevSession(options: {
|
|
29
|
+
session: ReplSession;
|
|
30
|
+
entry: string;
|
|
31
|
+
forceDeploy: boolean;
|
|
32
|
+
minify: boolean;
|
|
33
|
+
bytecode: boolean;
|
|
34
|
+
watch: boolean;
|
|
35
|
+
/** Skip package.json `mikrojs.predeploy` hooks. */
|
|
36
|
+
noHooks?: boolean;
|
|
37
|
+
/** REPL handle for the Ink-mode UI. Omit in agent mode. When present, the
|
|
38
|
+
* dev session drives the status line, disables the prompt during deploy,
|
|
39
|
+
* and subscribes to `repl.deploys$` for Ctrl+S triggers. */
|
|
40
|
+
repl?: ReplHandle;
|
|
41
|
+
/** Extra deploy trigger source (e.g. an agent-mode stdin 'deploy' command).
|
|
42
|
+
* Merged with `repl?.deploys$` if both are present. */
|
|
43
|
+
externalDeploys$?: Observable<{
|
|
44
|
+
force: boolean;
|
|
45
|
+
}>;
|
|
46
|
+
minifier?: Minifier;
|
|
47
|
+
minifyLevel?: MinifyLevel;
|
|
48
|
+
logLevel?: LogLevel;
|
|
49
|
+
envFile?: string;
|
|
50
|
+
secretsFile?: string;
|
|
51
|
+
noEnvFile?: boolean;
|
|
52
|
+
/** Drives `MIKRO_ENV` and the `.env.<mode>` file picked up by
|
|
53
|
+
* `loadEnvFiles`. `mikro dev` passes `'development'` (default);
|
|
54
|
+
* `mikro sim dev` passes `'simulator'`. */
|
|
55
|
+
mode?: string;
|
|
56
|
+
}): DevSessionHandle;
|
|
57
|
+
//# sourceMappingURL=devSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devSession.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/serial/devSession.ts"],"names":[],"mappings":"AAEA,OAAO,EAQL,KAAK,UAAU,EAShB,MAAM,MAAM,CAAA;AAGb,OAAO,KAAK,EAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAC,MAAM,4BAA4B,CAAA;AAM/E,OAAO,KAAK,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,eAAe,CAAA;AAE3D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAA;AAIrD,MAAM,MAAM,SAAS,GACjB;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,GAClB;IAAC,IAAI,EAAE,YAAY,CAAA;CAAC,GACpB;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,GACnC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAC,GACvC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,GAClB;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC,CAAA;AAEpC,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;IACnC,KAAK,IAAI,IAAI,CAAA;CACd;AASD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IACxC,OAAO,EAAE,WAAW,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;IACpB,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,mDAAmD;IACnD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;iEAE6D;IAC7D,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB;4DACwD;IACxD,gBAAgB,CAAC,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAC,CAAC,CAAA;IAC/C,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;gDAE4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,GAAG,gBAAgB,CAgNnB"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import * as pathlib from 'node:path';
|
|
2
|
+
import { catchError, concat, defer, EMPTY, ignoreElements, map, merge, of, shareReplay, startWith, Subject, switchMap, tap, throttle, timer, } from 'rxjs';
|
|
3
|
+
import { exhaustMapWithTrailing } from 'rxjs-exhaustmap-with-trailing';
|
|
4
|
+
import { build } from '../build.js';
|
|
5
|
+
import { collectFiles, loadEnvFiles, validateNvsKeys } from '../deploy.js';
|
|
6
|
+
import { formatDeployEvent } from '../deployProgress.js';
|
|
7
|
+
import { getMikroDir, resolveProjectRoot } from '../projectRoot.js';
|
|
8
|
+
import { getPredeployCommands, runHooks } from '../runHooks.js';
|
|
9
|
+
import { createWatcher } from '../watcher.js';
|
|
10
|
+
// ── Factory ────────────────────────────────────────────────
|
|
11
|
+
export function createDevSession(options) {
|
|
12
|
+
const { session, repl, externalDeploys$, entry, forceDeploy, minify, bytecode, watch, noHooks, minifier, minifyLevel, logLevel, envFile, secretsFile, noEnvFile, mode = 'development', } = options;
|
|
13
|
+
const buildDir = pathlib.join(getMikroDir(), 'build');
|
|
14
|
+
const watchDir = process.cwd();
|
|
15
|
+
const projectRoot = resolveProjectRoot();
|
|
16
|
+
const watcher = watch ? createWatcher(watchDir) : null;
|
|
17
|
+
// Pre-deploy hooks gate each deploy. A trigger fires `hookStage$`, which
|
|
18
|
+
// runs `mikrojs.predeploy` commands from package.json; on success it feeds
|
|
19
|
+
// `deployNow$`, which is serialized by `exhaustMapWithTrailing` into the
|
|
20
|
+
// real build+upload. `switchMap` on the hook stream means a fresh save
|
|
21
|
+
// during a running `tsc`/`eslint` aborts the in-flight hook and restarts.
|
|
22
|
+
// Build+upload itself is not cancelable — aborting a partial flash would
|
|
23
|
+
// leave the device in an inconsistent state.
|
|
24
|
+
const deployNow$ = new Subject();
|
|
25
|
+
function hookStage$(trigger) {
|
|
26
|
+
// Re-read package.json per trigger so edits to `mikrojs.predeploy` are
|
|
27
|
+
// picked up without restarting the dev session.
|
|
28
|
+
let commands;
|
|
29
|
+
try {
|
|
30
|
+
commands = noHooks ? [] : getPredeployCommands(projectRoot);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
34
|
+
repl?.setError(message);
|
|
35
|
+
return of({ status: { type: 'error', message } });
|
|
36
|
+
}
|
|
37
|
+
const advanceToDeploy$ = defer(() => {
|
|
38
|
+
deployNow$.next(trigger);
|
|
39
|
+
return EMPTY;
|
|
40
|
+
});
|
|
41
|
+
const firstCommand = commands[0];
|
|
42
|
+
if (firstCommand === undefined)
|
|
43
|
+
return advanceToDeploy$;
|
|
44
|
+
const decoder = new TextDecoder();
|
|
45
|
+
// Accumulate hook output so a failure can pin it into the footer
|
|
46
|
+
// alongside the summary line. Captured per-run via defer so every
|
|
47
|
+
// subscription gets a fresh buffer.
|
|
48
|
+
return defer(() => {
|
|
49
|
+
let output = '';
|
|
50
|
+
return concat(of({ status: { type: 'checking', command: firstCommand } }), runHooks(commands, projectRoot).pipe(tap((event) => {
|
|
51
|
+
if (event.type === 'start') {
|
|
52
|
+
repl?.setDeployStatus(`Checking: ${event.command}`);
|
|
53
|
+
}
|
|
54
|
+
else if (event.type === 'stdout' || event.type === 'stderr') {
|
|
55
|
+
output += decoder.decode(event.chunk, { stream: true });
|
|
56
|
+
// In agent/no-repl mode, stream chunks to stderr so
|
|
57
|
+
// output is still visible live.
|
|
58
|
+
if (!repl)
|
|
59
|
+
process.stderr.write(event.chunk);
|
|
60
|
+
}
|
|
61
|
+
}), ignoreElements()), advanceToDeploy$).pipe(tap({ subscribe: () => repl?.setDisabled(true) }), catchError((err) => {
|
|
62
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
63
|
+
const trimmed = output.trimEnd();
|
|
64
|
+
const pinned = trimmed.length > 0 ? `${trimmed}\n\n${message}` : message;
|
|
65
|
+
repl?.setFooterError(pinned);
|
|
66
|
+
repl?.setDisabled(false);
|
|
67
|
+
return of({ status: { type: 'error', message } });
|
|
68
|
+
}));
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
function buildAndDeploy$(trigger) {
|
|
72
|
+
const buildStatus = trigger.isInitial ? { type: 'building' } : { type: 'rebuilding' };
|
|
73
|
+
return concat(
|
|
74
|
+
// Build phase
|
|
75
|
+
of({ status: buildStatus }), build(entry, buildDir, { minify, bytecode, minifier, minifyLevel, logLevel }).pipe(ignoreElements()),
|
|
76
|
+
// Deploy phase
|
|
77
|
+
defer(async () => {
|
|
78
|
+
const files = await collectFiles(buildDir);
|
|
79
|
+
const envVars = [
|
|
80
|
+
{ key: 'MIKRO_ENV', value: mode, secret: false },
|
|
81
|
+
...(await loadEnvFiles({
|
|
82
|
+
cwd: projectRoot,
|
|
83
|
+
mode,
|
|
84
|
+
envFile,
|
|
85
|
+
secretsFile,
|
|
86
|
+
noEnvFile,
|
|
87
|
+
})),
|
|
88
|
+
];
|
|
89
|
+
validateNvsKeys(envVars);
|
|
90
|
+
return { files, envVars };
|
|
91
|
+
}).pipe(switchMap(({ files, envVars }) => session.deploy({ files, envVars, force: forceDeploy || trigger.force, restart: true }).pipe(
|
|
92
|
+
// Throttle only `checking` events so fast checksum scans don't flicker;
|
|
93
|
+
// other event types pass through instantly via EMPTY.
|
|
94
|
+
throttle((event) => (event.type === 'checking' ? timer(80) : EMPTY), {
|
|
95
|
+
leading: true,
|
|
96
|
+
trailing: true,
|
|
97
|
+
}), tap((event) => {
|
|
98
|
+
if (!repl)
|
|
99
|
+
return;
|
|
100
|
+
const msg = event.type === 'checking'
|
|
101
|
+
? `Checking [${event.index + 1}/${event.total}] ${event.file}`
|
|
102
|
+
: formatDeployEvent(event);
|
|
103
|
+
if (msg !== null)
|
|
104
|
+
repl.setDeployStatus(msg);
|
|
105
|
+
}), map((event) => ({ status: { type: 'deploying', event } }))))),
|
|
106
|
+
// Done
|
|
107
|
+
of({ status: { type: 'watching' } })).pipe(tap({
|
|
108
|
+
subscribe: () => repl?.setDisabled(true),
|
|
109
|
+
complete: () => repl?.setDisabled(false),
|
|
110
|
+
}), catchError((err) => {
|
|
111
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
112
|
+
repl?.setError(message);
|
|
113
|
+
repl?.setDisabled(false);
|
|
114
|
+
return of({ status: { type: 'error', message } });
|
|
115
|
+
}));
|
|
116
|
+
}
|
|
117
|
+
// External triggers: file changes (if watching) and explicit deploys
|
|
118
|
+
// (Ctrl+S via repl, or agent-mode stdin command).
|
|
119
|
+
const fileTriggers$ = watcher
|
|
120
|
+
? watcher.changes$.pipe(map(() => ({ force: false, isInitial: false })))
|
|
121
|
+
: EMPTY;
|
|
122
|
+
const deployTriggers$ = repl && externalDeploys$
|
|
123
|
+
? merge(repl.deploys$, externalDeploys$)
|
|
124
|
+
: (repl?.deploys$ ?? externalDeploys$ ?? EMPTY);
|
|
125
|
+
const explicitTriggers$ = deployTriggers$.pipe(map((t) => ({ force: t.force, isInitial: false })));
|
|
126
|
+
// Initial trigger injected at subscription time. Concat ensures it fires
|
|
127
|
+
// before any external trigger is processed. We also issue a one-shot
|
|
128
|
+
// `session.restart()` here so the device boots fresh and emits MSG_READY
|
|
129
|
+
// — the REPL's `ready` transition would otherwise ride on the deploy
|
|
130
|
+
// path's awaitReady$, leaving the session stuck in 'connecting' (with
|
|
131
|
+
// troubleshooting UI) whenever a hook failure short-circuits the deploy.
|
|
132
|
+
let hasKickedReady = false;
|
|
133
|
+
const initialTrigger$ = defer(() => {
|
|
134
|
+
if (!hasKickedReady) {
|
|
135
|
+
hasKickedReady = true;
|
|
136
|
+
session.restart();
|
|
137
|
+
}
|
|
138
|
+
return of({ force: forceDeploy, isInitial: true });
|
|
139
|
+
});
|
|
140
|
+
const triggers$ = concat(initialTrigger$, merge(fileTriggers$, explicitTriggers$));
|
|
141
|
+
// Hook phase is cancelable via switchMap: a new save mid-`tsc` aborts the
|
|
142
|
+
// in-flight hook run and restarts with the latest files. On success, the
|
|
143
|
+
// trigger is pushed into deployNow$ for the (non-cancelable) build+upload.
|
|
144
|
+
const hookPhase$ = triggers$.pipe(switchMap((trigger) => hookStage$(trigger)));
|
|
145
|
+
// Build+upload phase: exhaust-with-trailing so rapid triggers during a
|
|
146
|
+
// running deploy coalesce into a single trailing rerun.
|
|
147
|
+
const deployPhase$ = deployNow$.pipe(exhaustMapWithTrailing((trigger) => buildAndDeploy$(trigger)));
|
|
148
|
+
// Order matters in the merge: deployPhase$ subscribes to deployNow$ before
|
|
149
|
+
// hookPhase$ starts emitting, so a synchronous `deployNow$.next(...)` from
|
|
150
|
+
// a no-hooks initial trigger isn't dropped.
|
|
151
|
+
const state$ = merge(deployPhase$, hookPhase$).pipe(startWith({ status: { type: 'building' } }), shareReplay({ bufferSize: 1, refCount: true }));
|
|
152
|
+
return {
|
|
153
|
+
state$,
|
|
154
|
+
close() {
|
|
155
|
+
watcher?.close();
|
|
156
|
+
deployNow$.complete();
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=devSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devSession.js","sourceRoot":"","sources":["../../../../src/cli/lib/serial/devSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ComponentType } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Dispatch a REPL-class command (`dev`, `console`, `deploy`) between its
|
|
4
|
+
* agent-mode `run` entry point and its interactive Ink `Component`. Keeps
|
|
5
|
+
* the three `case` blocks in `cli.ts` from each re-deriving the same
|
|
6
|
+
* "is this interactive" check and re-specifying the same render options.
|
|
7
|
+
*/
|
|
8
|
+
export declare function dispatchReplCommand<T extends {
|
|
9
|
+
agent?: boolean;
|
|
10
|
+
}>(opts: {
|
|
11
|
+
/** Used only for the TTY-required error message. */
|
|
12
|
+
commandName: 'dev' | 'console' | 'deploy';
|
|
13
|
+
config: T;
|
|
14
|
+
/** Extra forcing conditions for the async path (e.g. deploy's `--json`). */
|
|
15
|
+
nonInteractive?: boolean;
|
|
16
|
+
/** When true, absence of a TTY is an error unless `--agent` is set.
|
|
17
|
+
* `dev` and `console` need this (the Ink UI has no sensible fallback).
|
|
18
|
+
* `deploy` sets it false and silently falls through to `run`. */
|
|
19
|
+
requireTtyForInteractive: boolean;
|
|
20
|
+
Component: ComponentType<{
|
|
21
|
+
args: T;
|
|
22
|
+
}>;
|
|
23
|
+
run: (config: T) => void | Promise<unknown>;
|
|
24
|
+
}): void;
|
|
25
|
+
//# sourceMappingURL=dispatchReplCommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatchReplCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/serial/dispatchReplCommand.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,aAAa,EAAgB,MAAM,OAAO,CAAA;AAIvD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAC,EAAE,IAAI,EAAE;IACrE,oDAAoD;IACpD,WAAW,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAA;IACzC,MAAM,EAAE,CAAC,CAAA;IACT,4EAA4E;IAC5E,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;sEAEkE;IAClE,wBAAwB,EAAE,OAAO,CAAA;IACjC,SAAS,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAC,CAAC,CAAA;IACnC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC5C,GAAG,IAAI,CAqBP"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { render } from 'ink';
|
|
2
|
+
import { createElement } from 'react';
|
|
3
|
+
import { isAgentMode } from '../agent.js';
|
|
4
|
+
/**
|
|
5
|
+
* Dispatch a REPL-class command (`dev`, `console`, `deploy`) between its
|
|
6
|
+
* agent-mode `run` entry point and its interactive Ink `Component`. Keeps
|
|
7
|
+
* the three `case` blocks in `cli.ts` from each re-deriving the same
|
|
8
|
+
* "is this interactive" check and re-specifying the same render options.
|
|
9
|
+
*/
|
|
10
|
+
export function dispatchReplCommand(opts) {
|
|
11
|
+
const isAgent = isAgentMode(opts.config.agent);
|
|
12
|
+
const nonTty = !process.stdin.isTTY;
|
|
13
|
+
if (opts.requireTtyForInteractive && nonTty && !isAgent) {
|
|
14
|
+
// eslint-disable-next-line no-console
|
|
15
|
+
console.error(`Error: mikro ${opts.commandName} requires an interactive terminal (use --agent for NDJSON mode)`);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
if (isAgent || opts.nonInteractive === true || nonTty) {
|
|
19
|
+
void opts.run(opts.config);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
render(createElement(opts.Component, { args: opts.config }), {
|
|
23
|
+
exitOnCtrlC: false,
|
|
24
|
+
kittyKeyboard: { mode: 'enabled' },
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=dispatchReplCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatchReplCommand.js","sourceRoot":"","sources":["../../../../src/cli/lib/serial/dispatchReplCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAqB,aAAa,EAAC,MAAM,OAAO,CAAA;AAEvD,OAAO,EAAC,WAAW,EAAC,MAAM,aAAa,CAAA;AAEvC;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAA8B,IAYhE;IACC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAA;IAEnC,IAAI,IAAI,CAAC,wBAAwB,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACxD,sCAAsC;QACtC,OAAO,CAAC,KAAK,CACX,gBAAgB,IAAI,CAAC,WAAW,iEAAiE,CAClG,CAAA;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,OAAO,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,MAAM,EAAE,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC1B,OAAM;IACR,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,EAAE;QACzD,WAAW,EAAE,KAAK;QAClB,aAAa,EAAE,EAAC,IAAI,EAAE,SAAS,EAAC;KACjC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SerialPort } from 'serialport';
|
|
2
|
+
import { type ReplSession } from '../session.js';
|
|
3
|
+
export interface SessionHandles {
|
|
4
|
+
session: ReplSession;
|
|
5
|
+
serial: SerialPort;
|
|
6
|
+
devicePath: string;
|
|
7
|
+
/** Close session + serial. Safe to call more than once. */
|
|
8
|
+
close(): void;
|
|
9
|
+
}
|
|
10
|
+
export interface OpenSessionOptions {
|
|
11
|
+
port?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Safe-mode recovery. Runs `triggerSafeMode` after the session has
|
|
14
|
+
* subscribed — the post-reset MSG_READY needs that eager subscription
|
|
15
|
+
* to be in place.
|
|
16
|
+
*/
|
|
17
|
+
recover?: boolean;
|
|
18
|
+
/** Called with the resolved device path before the serial is opened. */
|
|
19
|
+
onConnecting?: (path: string) => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Resolve a port, open the serial, and bring up a `ReplSession`. The returned
|
|
23
|
+
* handles close the session and the serial when `close()` is called. The
|
|
24
|
+
* session is created before any optional `triggerSafeMode` call so the
|
|
25
|
+
* eager subscription is listening when the post-reset MSG_READY arrives.
|
|
26
|
+
*/
|
|
27
|
+
export declare function openSession(options: OpenSessionOptions): Promise<SessionHandles>;
|
|
28
|
+
//# sourceMappingURL=openSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openSession.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/serial/openSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,YAAY,CAAA;AAIrC,OAAO,EAAc,KAAK,WAAW,EAAC,MAAM,eAAe,CAAA;AAG3D,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,WAAW,CAAA;IACpB,MAAM,EAAE,UAAU,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,KAAK,IAAI,IAAI,CAAA;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wEAAwE;IACxE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACtC;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAoCtF"}
|