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,406 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { createWriteStream } from 'node:fs';
|
|
3
|
+
import * as fs from 'node:fs/promises';
|
|
4
|
+
import * as os from 'node:os';
|
|
5
|
+
import * as path from 'node:path';
|
|
6
|
+
import { pipeline } from 'node:stream/promises';
|
|
7
|
+
import { promisify } from 'node:util';
|
|
8
|
+
const execFileAsync = promisify(execFile);
|
|
9
|
+
const GITHUB_REPO = 'mikrojs/mikrojs';
|
|
10
|
+
const CACHE_DIR = path.join(os.homedir(), '.cache', 'mikrojs', 'firmware');
|
|
11
|
+
// ── Helpers ──────────────────────────────────────────────────────────────────
|
|
12
|
+
function getAssetName(chip) {
|
|
13
|
+
return `mikrojs-firmware-${chip}.tar.gz`;
|
|
14
|
+
}
|
|
15
|
+
function getBoardAssetName(boardName) {
|
|
16
|
+
return `mikrojs-firmware-${boardName}.tar.gz`;
|
|
17
|
+
}
|
|
18
|
+
/** Returns true if the version string looks like a release tag (starts with "v" followed by a digit). */
|
|
19
|
+
function isReleaseTag(version) {
|
|
20
|
+
return /^v\d/.test(version);
|
|
21
|
+
}
|
|
22
|
+
async function getGitHubToken() {
|
|
23
|
+
// Check environment variable first
|
|
24
|
+
if (process.env.GITHUB_TOKEN) {
|
|
25
|
+
return process.env.GITHUB_TOKEN;
|
|
26
|
+
}
|
|
27
|
+
// Try gh CLI auth
|
|
28
|
+
try {
|
|
29
|
+
const { stdout } = await execFileAsync('gh', ['auth', 'token']);
|
|
30
|
+
const token = stdout.trim();
|
|
31
|
+
if (token)
|
|
32
|
+
return token;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// gh not installed or not authenticated
|
|
36
|
+
}
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
function requireGitHubToken(token) {
|
|
40
|
+
if (!token) {
|
|
41
|
+
throw new Error(`Authentication required to download firmware.\n` +
|
|
42
|
+
`Run \`gh auth login\` or set the GITHUB_TOKEN environment variable.`);
|
|
43
|
+
}
|
|
44
|
+
return token;
|
|
45
|
+
}
|
|
46
|
+
async function downloadUrl(url, destPath) {
|
|
47
|
+
const res = await fetch(url, { redirect: 'follow' });
|
|
48
|
+
if (!res.ok || !res.body) {
|
|
49
|
+
if (res.body)
|
|
50
|
+
await res.text();
|
|
51
|
+
throw new Error(`Failed to download ${url}: ${res.status} ${res.statusText}`);
|
|
52
|
+
}
|
|
53
|
+
await fs.mkdir(path.dirname(destPath), { recursive: true });
|
|
54
|
+
const fileStream = createWriteStream(destPath);
|
|
55
|
+
await pipeline(res.body, fileStream);
|
|
56
|
+
}
|
|
57
|
+
// ── GitHub API ───────────────────────────────────────────────────────────────
|
|
58
|
+
async function resolveRefToSha(token, repo, ref) {
|
|
59
|
+
const res = await fetch(`https://api.github.com/repos/${repo}/commits/${ref}`, {
|
|
60
|
+
headers: {
|
|
61
|
+
Authorization: `Bearer ${token}`,
|
|
62
|
+
Accept: 'application/vnd.github.v3+json',
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
if (!res.ok) {
|
|
66
|
+
await res.text();
|
|
67
|
+
if (res.status === 404 || res.status === 422) {
|
|
68
|
+
throw new Error(`Ref '${ref}' not found in ${repo}.`);
|
|
69
|
+
}
|
|
70
|
+
throw new Error(`GitHub API error: ${res.status} ${res.statusText}`);
|
|
71
|
+
}
|
|
72
|
+
const commit = (await res.json());
|
|
73
|
+
return commit.sha;
|
|
74
|
+
}
|
|
75
|
+
async function fetchRelease(token, repo, tag) {
|
|
76
|
+
const url = tag
|
|
77
|
+
? `https://api.github.com/repos/${repo}/releases/tags/${tag}`
|
|
78
|
+
: `https://api.github.com/repos/${repo}/releases/latest`;
|
|
79
|
+
const res = await fetch(url, {
|
|
80
|
+
headers: {
|
|
81
|
+
Authorization: `Bearer ${token}`,
|
|
82
|
+
Accept: 'application/vnd.github.v3+json',
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
if (!res.ok) {
|
|
86
|
+
await res.text();
|
|
87
|
+
if (res.status === 404) {
|
|
88
|
+
throw new Error(tag ? `No release '${tag}' found in ${repo}.` : `No releases found in ${repo}.`);
|
|
89
|
+
}
|
|
90
|
+
throw new Error(`GitHub API error: ${res.status} ${res.statusText}`);
|
|
91
|
+
}
|
|
92
|
+
return (await res.json());
|
|
93
|
+
}
|
|
94
|
+
function selectReleaseAsset(assets, chip, board, repo) {
|
|
95
|
+
// Try board-specific
|
|
96
|
+
if (board) {
|
|
97
|
+
const boardAsset = assets.find((a) => a.name === getBoardAssetName(board));
|
|
98
|
+
if (boardAsset)
|
|
99
|
+
return boardAsset;
|
|
100
|
+
}
|
|
101
|
+
// Try chip-specific
|
|
102
|
+
if (chip) {
|
|
103
|
+
const chipAsset = assets.find((a) => a.name === getAssetName(chip));
|
|
104
|
+
if (chipAsset)
|
|
105
|
+
return chipAsset;
|
|
106
|
+
}
|
|
107
|
+
// Auto: single firmware archive
|
|
108
|
+
const firmwareAssets = assets.filter((a) => a.name.endsWith('.tar.gz') && a.name.includes('firmware'));
|
|
109
|
+
if (firmwareAssets.length === 1)
|
|
110
|
+
return firmwareAssets[0];
|
|
111
|
+
if (firmwareAssets.length === 0) {
|
|
112
|
+
throw new Error(`No firmware assets found in ${repo} release.\n` +
|
|
113
|
+
`Available assets: ${assets.map((a) => a.name).join(', ') || 'none'}`);
|
|
114
|
+
}
|
|
115
|
+
throw new Error(`Multiple firmware assets found in ${repo} release. Use --target or --board to select one:\n` +
|
|
116
|
+
firmwareAssets.map((a) => ` ${a.name}`).join('\n'));
|
|
117
|
+
}
|
|
118
|
+
async function fetchWorkflowArtifacts(token, repo, sha) {
|
|
119
|
+
// Find all successful workflow runs for this SHA (any workflow). Firmware
|
|
120
|
+
// artifacts may come from `firmware.yml` (PR/dispatch builds, tarball pack)
|
|
121
|
+
// or `release.yml` (release commits, unpacked pack) — we accept both.
|
|
122
|
+
const runsUrl = `https://api.github.com/repos/${repo}/actions/runs?head_sha=${sha}&status=success&per_page=100`;
|
|
123
|
+
const runsRes = await fetch(runsUrl, {
|
|
124
|
+
headers: {
|
|
125
|
+
Authorization: `Bearer ${token}`,
|
|
126
|
+
Accept: 'application/vnd.github.v3+json',
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
if (!runsRes.ok) {
|
|
130
|
+
await runsRes.text();
|
|
131
|
+
throw new Error(`GitHub API error: ${runsRes.status} ${runsRes.statusText}`);
|
|
132
|
+
}
|
|
133
|
+
const runs = (await runsRes.json());
|
|
134
|
+
if (runs.workflow_runs.length === 0) {
|
|
135
|
+
throw new Error(`No successful workflow runs found for commit ${sha.slice(0, 8)} in ${repo}.\n` +
|
|
136
|
+
`The build may have failed, not been triggered, or the artifact may have expired.`);
|
|
137
|
+
}
|
|
138
|
+
const artifactArrays = await Promise.all(runs.workflow_runs.map(async (run) => {
|
|
139
|
+
const url = `https://api.github.com/repos/${repo}/actions/runs/${run.id}/artifacts`;
|
|
140
|
+
const res = await fetch(url, {
|
|
141
|
+
headers: {
|
|
142
|
+
Authorization: `Bearer ${token}`,
|
|
143
|
+
Accept: 'application/vnd.github.v3+json',
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
if (!res.ok) {
|
|
147
|
+
await res.text();
|
|
148
|
+
return [];
|
|
149
|
+
}
|
|
150
|
+
const data = (await res.json());
|
|
151
|
+
return data.artifacts;
|
|
152
|
+
}));
|
|
153
|
+
return artifactArrays.flat();
|
|
154
|
+
}
|
|
155
|
+
// Artifact names produced by firmware-build.yml: `mikrojs-firmware-<x>` (tarball
|
|
156
|
+
// pack, used by firmware.yml) or `firmware-<x>` (unpacked pack, used by
|
|
157
|
+
// release.yml). We accept either.
|
|
158
|
+
function artifactNameCandidates(suffix) {
|
|
159
|
+
return [`mikrojs-firmware-${suffix}`, `firmware-${suffix}`];
|
|
160
|
+
}
|
|
161
|
+
function isFirmwareArtifact(name) {
|
|
162
|
+
return /^(mikrojs-)?firmware(-|$)/.test(name);
|
|
163
|
+
}
|
|
164
|
+
function selectWorkflowArtifact(artifacts, chip, board, repo) {
|
|
165
|
+
// Try board-specific
|
|
166
|
+
if (board) {
|
|
167
|
+
const names = artifactNameCandidates(board);
|
|
168
|
+
const boardArtifact = artifacts.find((a) => names.includes(a.name));
|
|
169
|
+
if (boardArtifact)
|
|
170
|
+
return boardArtifact;
|
|
171
|
+
}
|
|
172
|
+
// Try chip-specific
|
|
173
|
+
if (chip) {
|
|
174
|
+
const names = artifactNameCandidates(chip);
|
|
175
|
+
const chipArtifact = artifacts.find((a) => names.includes(a.name));
|
|
176
|
+
if (chipArtifact)
|
|
177
|
+
return chipArtifact;
|
|
178
|
+
}
|
|
179
|
+
// Auto: single firmware artifact
|
|
180
|
+
const firmwareArtifacts = artifacts.filter((a) => isFirmwareArtifact(a.name));
|
|
181
|
+
if (firmwareArtifacts.length === 1)
|
|
182
|
+
return firmwareArtifacts[0];
|
|
183
|
+
if (firmwareArtifacts.length === 0) {
|
|
184
|
+
throw new Error(`No firmware artifacts found in ${repo} build.\n` +
|
|
185
|
+
`Available artifacts: ${artifacts.map((a) => a.name).join(', ') || 'none'}`);
|
|
186
|
+
}
|
|
187
|
+
throw new Error(`Multiple firmware artifacts found in ${repo} build. Use --target or --board to select one:\n` +
|
|
188
|
+
firmwareArtifacts.map((a) => ` ${a.name}`).join('\n'));
|
|
189
|
+
}
|
|
190
|
+
// ── Download & extract ───────────────────────────────────────────────────────
|
|
191
|
+
async function downloadAndExtractReleaseAsset(token, asset, extractedDir) {
|
|
192
|
+
const archivePath = path.join(CACHE_DIR, asset.name);
|
|
193
|
+
const assetRes = await fetch(asset.url, {
|
|
194
|
+
headers: {
|
|
195
|
+
Authorization: `Bearer ${token}`,
|
|
196
|
+
Accept: 'application/octet-stream',
|
|
197
|
+
},
|
|
198
|
+
redirect: 'follow',
|
|
199
|
+
});
|
|
200
|
+
if (!assetRes.ok || !assetRes.body) {
|
|
201
|
+
if (assetRes.body)
|
|
202
|
+
await assetRes.text();
|
|
203
|
+
throw new Error(`Failed to download firmware: ${assetRes.status} ${assetRes.statusText}`);
|
|
204
|
+
}
|
|
205
|
+
await fs.mkdir(CACHE_DIR, { recursive: true });
|
|
206
|
+
await pipeline(assetRes.body, createWriteStream(archivePath));
|
|
207
|
+
await fs.mkdir(extractedDir, { recursive: true });
|
|
208
|
+
await execFileAsync('tar', ['xzf', archivePath, '-C', extractedDir]);
|
|
209
|
+
await fs.rm(archivePath);
|
|
210
|
+
}
|
|
211
|
+
async function downloadAndExtractWorkflowArtifact(token, repo, artifact, extractedDir) {
|
|
212
|
+
const zipPath = path.join(CACHE_DIR, `${artifact.name}-${Date.now()}.zip`);
|
|
213
|
+
const artifactUrl = `https://api.github.com/repos/${repo}/actions/artifacts/${artifact.id}/zip`;
|
|
214
|
+
const downloadRes = await fetch(artifactUrl, {
|
|
215
|
+
headers: {
|
|
216
|
+
Authorization: `Bearer ${token}`,
|
|
217
|
+
Accept: 'application/vnd.github.v3+json',
|
|
218
|
+
},
|
|
219
|
+
redirect: 'follow',
|
|
220
|
+
});
|
|
221
|
+
if (!downloadRes.ok || !downloadRes.body) {
|
|
222
|
+
if (downloadRes.body)
|
|
223
|
+
await downloadRes.text();
|
|
224
|
+
throw new Error(`Failed to download artifact: ${downloadRes.status} ${downloadRes.statusText}`);
|
|
225
|
+
}
|
|
226
|
+
await fs.mkdir(path.dirname(zipPath), { recursive: true });
|
|
227
|
+
await pipeline(downloadRes.body, createWriteStream(zipPath));
|
|
228
|
+
// Unzip the outer GitHub artifact zip into a temp dir, then handle two
|
|
229
|
+
// possible layouts: tarball pack (zip contains a single .tar.gz to extract)
|
|
230
|
+
// or unpacked pack (zip contains firmware files directly — flasher_args.json
|
|
231
|
+
// alongside bootloader/, partition_table/, mikrojs.bin).
|
|
232
|
+
// Wipe extractedDir first so a partial previous attempt can't trip up
|
|
233
|
+
// fs.rename below (ENOTEMPTY on existing subdirectories).
|
|
234
|
+
await fs.rm(extractedDir, { recursive: true, force: true });
|
|
235
|
+
await fs.mkdir(extractedDir, { recursive: true });
|
|
236
|
+
const tmpDir = `${extractedDir}-tmp`;
|
|
237
|
+
await fs.mkdir(tmpDir, { recursive: true });
|
|
238
|
+
await execFileAsync('unzip', ['-o', zipPath, '-d', tmpDir]);
|
|
239
|
+
const files = await fs.readdir(tmpDir);
|
|
240
|
+
const tarball = files.find((f) => f.endsWith('.tar.gz'));
|
|
241
|
+
if (tarball) {
|
|
242
|
+
await execFileAsync('tar', ['xzf', path.join(tmpDir, tarball), '-C', extractedDir]);
|
|
243
|
+
}
|
|
244
|
+
else if (files.includes('flasher_args.json')) {
|
|
245
|
+
for (const file of files) {
|
|
246
|
+
await fs.rename(path.join(tmpDir, file), path.join(extractedDir, file));
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
await fs.rm(tmpDir, { recursive: true });
|
|
251
|
+
await fs.rm(zipPath);
|
|
252
|
+
throw new Error(`Artifact '${artifact.name}' has no recognized firmware layout ` +
|
|
253
|
+
`(expected a .tar.gz or flasher_args.json at the top level).`);
|
|
254
|
+
}
|
|
255
|
+
await fs.rm(zipPath);
|
|
256
|
+
await fs.rm(tmpDir, { recursive: true });
|
|
257
|
+
}
|
|
258
|
+
// ── Resolution strategies ────────────────────────────────────────────────────
|
|
259
|
+
async function resolveFromUrl(url) {
|
|
260
|
+
const cacheKey = url.replace(/[^a-zA-Z0-9_.-]/g, '_');
|
|
261
|
+
const extractedDir = path.join(CACHE_DIR, `ext-${cacheKey}`);
|
|
262
|
+
const flasherArgsPath = path.join(extractedDir, 'flasher_args.json');
|
|
263
|
+
try {
|
|
264
|
+
await fs.access(flasherArgsPath);
|
|
265
|
+
return extractedDir;
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
// Not cached
|
|
269
|
+
}
|
|
270
|
+
const archivePath = path.join(CACHE_DIR, `ext-${cacheKey}.tar.gz`);
|
|
271
|
+
await downloadUrl(url, archivePath);
|
|
272
|
+
await fs.mkdir(extractedDir, { recursive: true });
|
|
273
|
+
await execFileAsync('tar', ['xzf', archivePath, '-C', extractedDir]);
|
|
274
|
+
await fs.rm(archivePath);
|
|
275
|
+
return extractedDir;
|
|
276
|
+
}
|
|
277
|
+
async function resolveViaRelease(token, repo, tag, chip, board, report) {
|
|
278
|
+
const cacheId = board ?? chip ?? 'firmware';
|
|
279
|
+
const cacheTag = tag ?? 'latest';
|
|
280
|
+
const extractedDir = path.join(CACHE_DIR, `${cacheId}-${cacheTag}`);
|
|
281
|
+
const flasherArgsPath = path.join(extractedDir, 'flasher_args.json');
|
|
282
|
+
try {
|
|
283
|
+
await fs.access(flasherArgsPath);
|
|
284
|
+
return extractedDir;
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
// Not cached
|
|
288
|
+
}
|
|
289
|
+
const release = await fetchRelease(token, repo, tag);
|
|
290
|
+
const asset = selectReleaseAsset(release.assets, chip, board, repo);
|
|
291
|
+
report(`Downloading ${asset.name}…`);
|
|
292
|
+
await downloadAndExtractReleaseAsset(token, asset, extractedDir);
|
|
293
|
+
return extractedDir;
|
|
294
|
+
}
|
|
295
|
+
async function resolveViaActions(token, repo, sha, chip, board, report) {
|
|
296
|
+
const cacheId = board ?? chip ?? 'firmware';
|
|
297
|
+
const extractedDir = path.join(CACHE_DIR, `${cacheId}-${sha}`);
|
|
298
|
+
const flasherArgsPath = path.join(extractedDir, 'flasher_args.json');
|
|
299
|
+
try {
|
|
300
|
+
await fs.access(flasherArgsPath);
|
|
301
|
+
return extractedDir;
|
|
302
|
+
}
|
|
303
|
+
catch {
|
|
304
|
+
// Not cached
|
|
305
|
+
}
|
|
306
|
+
report(`Looking for firmware build in ${repo}…`);
|
|
307
|
+
const artifacts = await fetchWorkflowArtifacts(token, repo, sha);
|
|
308
|
+
const artifact = selectWorkflowArtifact(artifacts, chip, board, repo);
|
|
309
|
+
if (artifact.expired) {
|
|
310
|
+
throw new Error(`Firmware artifact '${artifact.name}' at ${sha.slice(0, 8)} has expired.\n` +
|
|
311
|
+
`GitHub Actions artifacts are retained for a limited time.`);
|
|
312
|
+
}
|
|
313
|
+
report(`Downloading ${artifact.name}…`);
|
|
314
|
+
await downloadAndExtractWorkflowArtifact(token, repo, artifact, extractedDir);
|
|
315
|
+
return extractedDir;
|
|
316
|
+
}
|
|
317
|
+
// ── Public API ───────────────────────────────────────────────────────────────
|
|
318
|
+
/**
|
|
319
|
+
* Resolve firmware from a `--from` reference.
|
|
320
|
+
*
|
|
321
|
+
* Resolution order:
|
|
322
|
+
* 1. URL (http/https) → download directly
|
|
323
|
+
* 2. Contains `/` → external repo (user/repo or user/repo@ref)
|
|
324
|
+
* 3. Starts with `v` + digit → release tag on mikrojs/mikrojs (fallback to Actions)
|
|
325
|
+
* 4. Everything else → resolve as ref (branch/tag/SHA) on mikrojs/mikrojs via Actions
|
|
326
|
+
*
|
|
327
|
+
* Note: for mikrojs/mikrojs, versioned firmware (vX.Y.Z) is bundled in the
|
|
328
|
+
* @mikrojs/firmware npm package and used by the default flash path. The
|
|
329
|
+
* release-asset code path here is exercised by external repos that ship
|
|
330
|
+
* firmware tarballs as GitHub Release assets.
|
|
331
|
+
*/
|
|
332
|
+
export async function resolveFrom(options) {
|
|
333
|
+
const { from, chip, board, onProgress } = options;
|
|
334
|
+
const trail = [];
|
|
335
|
+
const step = (msg) => {
|
|
336
|
+
trail.push(msg);
|
|
337
|
+
onProgress?.(msg);
|
|
338
|
+
};
|
|
339
|
+
try {
|
|
340
|
+
// 1. URL
|
|
341
|
+
if (from.startsWith('http://') || from.startsWith('https://')) {
|
|
342
|
+
step(`Downloading firmware from ${from}…`);
|
|
343
|
+
return await resolveFromUrl(from);
|
|
344
|
+
}
|
|
345
|
+
// Parse repo and ref
|
|
346
|
+
let repo;
|
|
347
|
+
let ref;
|
|
348
|
+
if (from.includes('/')) {
|
|
349
|
+
// External repo: user/repo or user/repo@ref
|
|
350
|
+
const atIndex = from.lastIndexOf('@');
|
|
351
|
+
if (atIndex > from.indexOf('/')) {
|
|
352
|
+
repo = from.slice(0, atIndex);
|
|
353
|
+
ref = from.slice(atIndex + 1);
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
repo = from;
|
|
357
|
+
ref = undefined;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
// Ref on the main repo
|
|
362
|
+
repo = GITHUB_REPO;
|
|
363
|
+
ref = from;
|
|
364
|
+
}
|
|
365
|
+
const token = requireGitHubToken(await getGitHubToken());
|
|
366
|
+
// No ref → latest release
|
|
367
|
+
if (!ref) {
|
|
368
|
+
step(`Fetching latest release from ${repo}…`);
|
|
369
|
+
return await resolveViaRelease(token, repo, undefined, chip, board, step);
|
|
370
|
+
}
|
|
371
|
+
// Release tag (v-prefix) → try Releases first, fall back to Actions
|
|
372
|
+
if (isReleaseTag(ref)) {
|
|
373
|
+
step(`Resolving release ${ref} from ${repo}…`);
|
|
374
|
+
try {
|
|
375
|
+
return await resolveViaRelease(token, repo, ref, chip, board, step);
|
|
376
|
+
}
|
|
377
|
+
catch {
|
|
378
|
+
step(`No release found for ${ref}, trying CI artifacts…`);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
// Resolve ref (branch/tag/SHA) to commit SHA
|
|
382
|
+
step(`Resolving ${ref}…`);
|
|
383
|
+
const fullSha = await resolveRefToSha(token, repo, ref);
|
|
384
|
+
step(`Resolved ${ref} → ${fullSha.slice(0, 8)}`);
|
|
385
|
+
// Try Actions artifacts
|
|
386
|
+
try {
|
|
387
|
+
return await resolveViaActions(token, repo, fullSha, chip, board, step);
|
|
388
|
+
}
|
|
389
|
+
catch (actionsError) {
|
|
390
|
+
// Last resort: try as release tag (handles non-v-prefix tags and expired artifacts)
|
|
391
|
+
try {
|
|
392
|
+
step(`CI artifact not available, trying as release tag…`);
|
|
393
|
+
return await resolveViaRelease(token, repo, ref, chip, board, step);
|
|
394
|
+
}
|
|
395
|
+
catch {
|
|
396
|
+
throw actionsError;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
catch (error) {
|
|
401
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
402
|
+
const trailStr = trail.map((s) => ` ${s}`).join('\n');
|
|
403
|
+
throw new Error(`${msg}\n\nResolution trail:\n${trailStr}`, { cause: error });
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
//# sourceMappingURL=firmware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firmware.js","sourceRoot":"","sources":["../../../src/cli/lib/firmware.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface FirmwareCompatResult {
|
|
2
|
+
compatible: boolean;
|
|
3
|
+
deviceVersion: string | null;
|
|
4
|
+
requiredRange: string | null;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Check whether the device firmware version satisfies the CLI's
|
|
8
|
+
* declared compatibility range (engines["@mikrojs/firmware"]).
|
|
9
|
+
*
|
|
10
|
+
* Incompatible when:
|
|
11
|
+
* - The device didn't report a version (old firmware)
|
|
12
|
+
* - The device version doesn't satisfy the range
|
|
13
|
+
*
|
|
14
|
+
* Compatible when:
|
|
15
|
+
* - The version satisfies the range, OR
|
|
16
|
+
* - No range is declared in engines
|
|
17
|
+
*/
|
|
18
|
+
export declare function checkFirmwareCompat(deviceVersion: string | null): FirmwareCompatResult;
|
|
19
|
+
//# sourceMappingURL=firmwareCompat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firmwareCompat.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/firmwareCompat.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,OAAO,CAAA;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,oBAAoB,CAkBtF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { satisfies } from 'semver';
|
|
3
|
+
/**
|
|
4
|
+
* Check whether the device firmware version satisfies the CLI's
|
|
5
|
+
* declared compatibility range (engines["@mikrojs/firmware"]).
|
|
6
|
+
*
|
|
7
|
+
* Incompatible when:
|
|
8
|
+
* - The device didn't report a version (old firmware)
|
|
9
|
+
* - The device version doesn't satisfy the range
|
|
10
|
+
*
|
|
11
|
+
* Compatible when:
|
|
12
|
+
* - The version satisfies the range, OR
|
|
13
|
+
* - No range is declared in engines
|
|
14
|
+
*/
|
|
15
|
+
export function checkFirmwareCompat(deviceVersion) {
|
|
16
|
+
const require = createRequire(import.meta.url);
|
|
17
|
+
const pkg = require('../../../package.json');
|
|
18
|
+
const range = pkg.engines?.['@mikrojs/firmware'] ?? null;
|
|
19
|
+
if (!range) {
|
|
20
|
+
return { compatible: true, deviceVersion, requiredRange: range };
|
|
21
|
+
}
|
|
22
|
+
if (!deviceVersion) {
|
|
23
|
+
return { compatible: false, deviceVersion, requiredRange: range };
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
compatible: satisfies(deviceVersion, range),
|
|
27
|
+
deviceVersion,
|
|
28
|
+
requiredRange: range,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=firmwareCompat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firmwareCompat.js","sourceRoot":"","sources":["../../../src/cli/lib/firmwareCompat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAA;AAEzC,OAAO,EAAC,SAAS,EAAC,MAAM,QAAQ,CAAA;AAQhC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,aAA4B;IAC9D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,uBAAuB,CAAuC,CAAA;IAClF,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAA;IAExD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAC,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAC,CAAA;IAChE,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,EAAC,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAC,CAAA;IACjE,CAAC;IAED,OAAO;QACL,UAAU,EAAE,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC;QAC3C,aAAa;QACb,aAAa,EAAE,KAAK;KACrB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heap-baseline snapshot stored beside each test file as
|
|
3
|
+
* `<name>.test.heap-baseline.json`. Keyed by chip (e.g. "esp32c6", "host")
|
|
4
|
+
* because heap deltas differ across pointer size, native module availability,
|
|
5
|
+
* and sdkconfig defaults. Committed to the repo; diffs show up in PR review.
|
|
6
|
+
*/
|
|
7
|
+
export interface HeapBaselineFile {
|
|
8
|
+
[chip: string]: {
|
|
9
|
+
heapDelta: number;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export declare function baselineFilePath(testFile: string): string;
|
|
13
|
+
export declare function readBaseline(testFile: string, chip: string): number | undefined;
|
|
14
|
+
export declare function writeBaseline(testFile: string, chip: string, heapDelta: number): void;
|
|
15
|
+
//# sourceMappingURL=heapBaseline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heapBaseline.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/heapBaseline.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,IAAI,EAAE,MAAM,GAAG;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAA;CACpC;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS/E;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAerF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
export function baselineFilePath(testFile) {
|
|
3
|
+
// Strip the script extension so the snapshot is `foo.test.heap-baseline.json`
|
|
4
|
+
// rather than `foo.test.ts.heap-baseline.json` — the `.ts` has no meaning
|
|
5
|
+
// once the test has been compiled and run.
|
|
6
|
+
const base = testFile.replace(/\.(?:ts|tsx|js|mjs)$/, '');
|
|
7
|
+
return `${base}.heap-baseline.json`;
|
|
8
|
+
}
|
|
9
|
+
export function readBaseline(testFile, chip) {
|
|
10
|
+
const path = baselineFilePath(testFile);
|
|
11
|
+
if (!existsSync(path))
|
|
12
|
+
return undefined;
|
|
13
|
+
try {
|
|
14
|
+
const data = JSON.parse(readFileSync(path, 'utf-8'));
|
|
15
|
+
return data[chip]?.heapDelta;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function writeBaseline(testFile, chip, heapDelta) {
|
|
22
|
+
const path = baselineFilePath(testFile);
|
|
23
|
+
let data = {};
|
|
24
|
+
if (existsSync(path)) {
|
|
25
|
+
try {
|
|
26
|
+
data = JSON.parse(readFileSync(path, 'utf-8'));
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
data = {};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
data[chip] = { heapDelta };
|
|
33
|
+
// Sort keys for stable output across runs
|
|
34
|
+
const sorted = {};
|
|
35
|
+
for (const key of Object.keys(data).sort())
|
|
36
|
+
sorted[key] = data[key];
|
|
37
|
+
writeFileSync(path, JSON.stringify(sorted, null, 2) + '\n');
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=heapBaseline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heapBaseline.js","sourceRoot":"","sources":["../../../src/cli/lib/heapBaseline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,YAAY,EAAE,aAAa,EAAC,MAAM,SAAS,CAAA;AAY/D,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,8EAA8E;IAC9E,0EAA0E;IAC1E,2CAA2C;IAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAA;IACzD,OAAO,GAAG,IAAI,qBAAqB,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,IAAY;IACzD,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAA;IACvC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAqB,CAAA;QACxE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,IAAY,EAAE,SAAiB;IAC7E,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,IAAI,GAAqB,EAAE,CAAA;IAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAqB,CAAA;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAC,SAAS,EAAC,CAAA;IACxB,0CAA0C;IAC1C,MAAM,MAAM,GAAqB,EAAE,CAAA;IACnC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAE,CAAA;IACpE,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;AAC7D,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { Component, type JSX, type PropsWithChildren } from 'react';
|
|
2
|
+
export type CellProps<T> = PropsWithChildren<{
|
|
3
|
+
column: number;
|
|
4
|
+
value: T[keyof T];
|
|
5
|
+
}>;
|
|
6
|
+
export type TableProps<T> = {
|
|
7
|
+
/**
|
|
8
|
+
* List of values (rows).
|
|
9
|
+
*/
|
|
10
|
+
data: T[];
|
|
11
|
+
/**
|
|
12
|
+
* Get key of row
|
|
13
|
+
*/
|
|
14
|
+
getKey: (row: T, i: number) => string;
|
|
15
|
+
/**
|
|
16
|
+
* Columns that we should display in the table.
|
|
17
|
+
*/
|
|
18
|
+
columns: {
|
|
19
|
+
[k in keyof T]: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Cell padding.
|
|
23
|
+
*/
|
|
24
|
+
padding: number;
|
|
25
|
+
/**
|
|
26
|
+
* Header component.
|
|
27
|
+
*/
|
|
28
|
+
header: (props: PropsWithChildren) => JSX.Element;
|
|
29
|
+
/**
|
|
30
|
+
* Component used to render a cell in the table.
|
|
31
|
+
*/
|
|
32
|
+
cell: (props: CellProps<T>) => JSX.Element;
|
|
33
|
+
/**
|
|
34
|
+
* Component used to render the skeleton of the table.
|
|
35
|
+
*/
|
|
36
|
+
skeleton: (props: PropsWithChildren) => JSX.Element;
|
|
37
|
+
};
|
|
38
|
+
export default class Table<T> extends Component<Pick<TableProps<T>, 'data'> & Partial<TableProps<T>>> {
|
|
39
|
+
/**
|
|
40
|
+
* Merges provided configuration with defaults.
|
|
41
|
+
*/
|
|
42
|
+
getConfig(): TableProps<T>;
|
|
43
|
+
/**
|
|
44
|
+
* Gets all keyes used in data by traversing through the data.
|
|
45
|
+
*/
|
|
46
|
+
getDataKeys(): { [key in keyof T]: string; };
|
|
47
|
+
/**
|
|
48
|
+
* Calculates the width of each column by finding
|
|
49
|
+
* the longest value in a cell of a particular column.
|
|
50
|
+
*
|
|
51
|
+
* Returns a list of column names and their widths.
|
|
52
|
+
*/
|
|
53
|
+
getColumns(): Column<T>[];
|
|
54
|
+
/**
|
|
55
|
+
* Returns a (data) row representing the headings.
|
|
56
|
+
*/
|
|
57
|
+
getHeadings(): Partial<T>;
|
|
58
|
+
header: (props: RowProps<T>) => JSX.Element;
|
|
59
|
+
heading: (props: RowProps<T>) => JSX.Element;
|
|
60
|
+
separator: (props: RowProps<T>) => JSX.Element;
|
|
61
|
+
data: (props: RowProps<T>) => JSX.Element;
|
|
62
|
+
footer: (props: RowProps<T>) => JSX.Element;
|
|
63
|
+
render(): import("react/jsx-runtime").JSX.Element;
|
|
64
|
+
}
|
|
65
|
+
type RowProps<T> = {
|
|
66
|
+
key: string;
|
|
67
|
+
data: Partial<T>;
|
|
68
|
+
columns: Column<T>[];
|
|
69
|
+
};
|
|
70
|
+
type Column<T> = {
|
|
71
|
+
key: string;
|
|
72
|
+
column: keyof T;
|
|
73
|
+
width: number;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Renders the header of a table.
|
|
77
|
+
*/
|
|
78
|
+
export declare function Header(props: PropsWithChildren): import("react/jsx-runtime").JSX.Element;
|
|
79
|
+
/**
|
|
80
|
+
* Renders a cell in the table.
|
|
81
|
+
*/
|
|
82
|
+
export declare function Cell<T>(props: CellProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
83
|
+
/**
|
|
84
|
+
* Redners the scaffold of the table.
|
|
85
|
+
*/
|
|
86
|
+
export declare function Skeleton(props: PropsWithChildren): import("react/jsx-runtime").JSX.Element;
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/ink-table/index.tsx"],"names":[],"mappings":"AAIA,OAAc,EAAC,SAAS,EAAE,KAAK,GAAG,EAAE,KAAK,iBAAiB,EAAC,MAAM,OAAO,CAAA;AAExE,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,iBAAiB,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;CAClB,CAAC,CAAA;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAC1B;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,CAAA;IACT;;OAEG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IACrC;;OAEG;IACH,OAAO,EAAE;SAAE,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM;KAAC,CAAA;IACjC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,GAAG,CAAC,OAAO,CAAA;IACjD;;OAEG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAA;IAC1C;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,GAAG,CAAC,OAAO,CAAA;CACpD,CAAA;AAID,MAAM,CAAC,OAAO,OAAO,KAAK,CAAC,CAAC,CAAE,SAAQ,SAAS,CAC7C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CACrD;IAGC;;OAEG;IACH,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC;IAY1B;;OAEG;IACH,WAAW,OACY,GAAG;IAY1B;;;;;OAKG;IACH,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;IA0BzB;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC;IAczB,MAAM,0BAqJuD,GAAG,CAAC,OAAO,CA1ItE;IAGF,OAAO,0BAuIsD,GAAG,CAAC,OAAO,CA5HtE;IAGF,SAAS,0BAyHoD,GAAG,CAAC,OAAO,CA9GtE;IAGF,IAAI,0BA2GyD,GAAG,CAAC,OAAO,CAhGtE;IAGF,MAAM,0BA6FuD,GAAG,CAAC,OAAO,CAlFtE;IAIO,MAAM;CAgChB;AA+BD,KAAK,QAAQ,CAAC,CAAC,IAAI;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IAChB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;CACrB,CAAA;AAED,KAAK,MAAM,CAAC,CAAC,IAAI;IACf,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAC,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AA2DD;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,iBAAiB,2CAM9C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,2CAE1C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,2CAEhD"}
|