micrOSDevToolKit 3.4.1__tar.gz → 3.5.0__tar.gz
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.
- {microsdevtoolkit-3.4.1/micrOSDevToolKit.egg-info → microsdevtoolkit-3.5.0}/PKG-INFO +1 -1
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/devToolKit.py +22 -5
- microsdevtoolkit-3.4.1/micrOS/micropython/micrOS-esp32-1.28.0-3.4.0-0.bin → microsdevtoolkit-3.5.0/micrOS/micropython/micrOS-esp32-1.28.0-3.5.0-0.bin +0 -0
- microsdevtoolkit-3.4.1/micrOS/micropython/micrOS-esp32c3-1.28.0-3.4.0-0.bin → microsdevtoolkit-3.5.0/micrOS/micropython/micrOS-esp32c3-1.28.0-3.5.0-0.bin +0 -0
- microsdevtoolkit-3.4.1/micrOS/micropython/micrOS-esp32c6-1.28.0-3.4.0-0.bin → microsdevtoolkit-3.5.0/micrOS/micropython/micrOS-esp32c6-1.28.0-3.5.0-0.bin +0 -0
- microsdevtoolkit-3.4.1/micrOS/micropython/micrOS-esp32s3-1.28.0-3.4.0-0.bin → microsdevtoolkit-3.5.0/micrOS/micropython/micrOS-esp32s3-1.28.0-3.5.0-0.bin +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json +5 -5
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Shell.py +1 -1
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Web.py +5 -3
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Files.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Web.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_web.py +1 -1
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/auth.js +19 -3
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/config.js +1 -2
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/index.html +29 -9
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/uapi.js +2 -2
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/uapi_widgets.js +27 -1
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/utests/test_web_engine.py +28 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0/micrOSDevToolKit.egg-info}/PKG-INFO +1 -1
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOSDevToolKit.egg-info/SOURCES.txt +7 -4
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/setup.py +1 -1
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/SystemTest.py +28 -5
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/lib/micrOSClient.py +15 -8
- microsdevtoolkit-3.5.0/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
- microsdevtoolkit-3.5.0/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
- microsdevtoolkit-3.5.0/toolkit/user_data/webhooks/__pycache__/generic.cpython-312.pyc +0 -0
- microsdevtoolkit-3.5.0/toolkit/user_data/webhooks/__pycache__/macro.cpython-312.pyc +0 -0
- microsdevtoolkit-3.5.0/toolkit/user_data/webhooks/__pycache__/template.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Shell.mpy +0 -0
- microsdevtoolkit-3.5.0/toolkit/workspace/precompiled/Web.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_web.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/auth.js +5 -3
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/config.js +1 -1
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/index.html +29 -9
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/uapi.js +2 -2
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/uapi_widgets.js +3 -1
- microsdevtoolkit-3.4.1/toolkit/simulator_lib/__pycache__/ntptime.cpython-312.pyc +0 -0
- microsdevtoolkit-3.4.1/toolkit/simulator_lib/__pycache__/webrepl.cpython-312.pyc +0 -0
- microsdevtoolkit-3.4.1/toolkit/workspace/precompiled/Web.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/LICENSE +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/MANIFEST.in +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/README.md +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/__init__.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/driver_cp210x/.DS_Store +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x64.exe +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210xVCPInstaller_x86.exe +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/CP210x_Universal_Windows_Driver_ReleaseNotes.txt +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/SLAB_License_Agreement_VCP_Windows.txt +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm/silabser.sys +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/arm64/silabser.sys +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/dpinst.xml +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.cat +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/silabser.inf +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x64/silabser.sys +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/driver_cp210x/CP210x_Universal_Windows_Driver/x86/silabser.sys +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/driver_cp210x/macOS_VCP_Driver/SiLabsUSBDriverDisk.dmg +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/env/driver_cp210x/macOS_VCP_Driver/macOS_VCP_Driver_Release_Notes.txt +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/media/__init__.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/media/dnd.png +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/media/logo.png +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/media/logo_mini.png +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/media/usb_port_icon.png +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/media/wifi_icon.png +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/__init__.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/micropython/board_commands.json +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/micropython/esp32-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/micropython/esp32c3-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/micropython/esp32c5-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/micropython/esp32c6-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/micropython/esp32cam-v1.21.0_camera.bin +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/micropython/esp32s2-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2 +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/micropython/tinypico-20251209-v1.27.0.bin +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/.DS_Store +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Auth.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Buffer.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Common.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Config.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Debug.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Files.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Hooks.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/InterConnect.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Interrupts.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Logger.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Network.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Notify.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Pacman.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Scheduler.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Server.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Tasks.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Time.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/Types.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Auth.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Buffer.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Common.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Config.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Debug.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Hooks.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/InterConnect.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Interrupts.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Logger.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Pacman.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Power.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Scheduler.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Server.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Shell.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Tasks.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Time.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Types.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/micrOS.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/microIO.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/replhelper.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/urequests.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/config/_git.keep +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/helpers.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/main.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/mespnow.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/micrOS.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/micrOSloader.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/microIO.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/IO_esp32.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/IO_esp32c3.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/IO_esp32c5.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/IO_esp32c6.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/IO_esp32s2.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/IO_esp32s3.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/IO_m5stamp.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/IO_qtpy.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/IO_rp2.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/IO_tinypico.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_aht10.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_bme280.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_buzzer.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_cct.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_cluster.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_dht11.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_dht22.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_dimmer.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_ds18.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_esp32.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_espnow.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_fileserver.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_gameOfLife.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_genIO.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_i2c.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_i2s_mic.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_light_sensor.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_neoeffects.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_neopixel.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_oled.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_oled_sh1106.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_oled_ui.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_pacman.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_presence.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_rencoder.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_rest.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_rgb.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_rgbcct.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_robustness.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_rp2w.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_sdcard.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_servo.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_stepper.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_switch.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_system.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_telegram.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_tinyrgb.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/LM_veml7700.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/__pycache__/LM_cct.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/__pycache__/LM_dht11.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/__pycache__/LM_dht22.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/__pycache__/LM_dimmer.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/__pycache__/LM_neopixel.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/__pycache__/LM_pacman.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/__pycache__/LM_rencoder.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/__pycache__/LM_rgb.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/__pycache__/LM_rgbcct.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/__pycache__/LM_roboarm.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/__pycache__/LM_robustness.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/__pycache__/LM_system.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/modules/__pycache__/LM_web.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/urequests.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/config.css +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/config.html +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/dashboard.html +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/editor.js +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/editor_plugins.js +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/favicon.ico +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/filesui.html +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/filesui.js +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/ubashboard.css +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/udashboard.js +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/ustyle.css +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/uwidgets.js +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/web/uwidgets_pro.js +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/utests/__init__.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/utests/test_buffer.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/utests/test_config.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/utests/test_pacman.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/utests/test_scheduler.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/utests/test_time.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/utests/test_urequests.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/utests/test_urequests_real_api.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOSDevToolKit.egg-info/dependency_links.txt +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOSDevToolKit.egg-info/requires.txt +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOSDevToolKit.egg-info/top_level.txt +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/setup.cfg +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/DevEnvCompile.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/DevEnvOTA.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/DevEnvUSB.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/Gateway.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/LM_to_compile.dat +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/MicrOSDevEnv.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/WebRepl.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/__init__.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/BackupRestore.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/CCTDemo.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/CCTTest.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/CamStream.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/CatGame.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/Dimmer.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/GetVersion.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/MicrophoneTest.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/NeoEffectsDemo.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/NeopixelTest.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/PresenceTest.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/QMI8685_GYRO.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/RGBTest.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/RoboArm.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/SED_test.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/SensorsTest.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/Template_app.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/__init__.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/_app_base.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/_capture.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/_gyro_visualizer.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/_micPlotting.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/_presencePlotting.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/dashboard_apps/uLightDemo.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/gateway/gateway.css +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/gateway/img_stream.html +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/gateway/index.html +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/lib/LocalMachine.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/lib/MicrosFiles.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/lib/Repository.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/lib/SafeInput.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/lib/SearchDevices.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/lib/SerialDriverHandler.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/lib/TerminalColors.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/lib/__init__.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/lib/macroScript.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/lib/micrOSClientHistory.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/lib/pip_package_installer.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/micrOSDocGen.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/micrOSImageBuilder.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/micrOSImageConfig.json +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/micrOSdashboard.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/micrOSlint.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/.DS_Store +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/IO_darwin.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/IO_darwin.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/Metrics.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/aioespnow.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/camera.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/dht.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/dht.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/dotstar.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/ds18x20.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/esp32.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/framebuf.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/machine.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/machine.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/machine.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/micropython.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/mip.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/neopixel.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/network.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/network.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/network.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/onewire.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/sim_common.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/simgc.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/simulator.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/tinypico.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/uasyncio.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/uos.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/urandom.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/usocket.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/ussl.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/ustruct.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/ustruct.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/utime.cpython-312.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/utime.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/utime.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-38.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/__pycache__/webrepl.cpython-39.pyc +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/aioespnow.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/camera.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/dht.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/dotstar.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/ds18x20.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/esp32.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/framebuf.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/machine.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/micropython.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/mip.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/neopixel.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/network.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/node_config.json +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/ntptime.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/onewire.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/sim_common.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/simgc.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/simulator.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/tinypico.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/uasyncio.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/uos.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/urandom.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/usocket.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/ussl.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/ustruct.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/utime.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/view01.jpg +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/view02.jpg +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/simulator_lib/webrepl.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/socketClient.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/user_data/.include +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/user_data/webhooks/generic.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/user_data/webhooks/macro.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/user_data/webhooks/template.macro +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/user_data/webhooks/template.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/__init__.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Auth.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Buffer.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Common.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Config.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Debug.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Files.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Hooks.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/InterConnect.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Interrupts.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Logger.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Network.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Notify.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Pacman.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Scheduler.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Server.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Tasks.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Time.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/Types.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/_mpy.version +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/config/_git.keep +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/helpers.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/main.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/mespnow.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/micrOS.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/micrOSloader.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/microIO.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/IO_esp32.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/IO_esp32c3.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/IO_esp32c5.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/IO_esp32c6.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/IO_esp32s2.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/IO_esp32s3.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/IO_m5stamp.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/IO_qtpy.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/IO_rp2.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/IO_tinypico.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_aht10.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_bme280.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_buzzer.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_cct.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_cluster.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_dht11.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_dht22.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_dimmer.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_ds18.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_esp32.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_espnow.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_fileserver.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_gameOfLife.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_genIO.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_i2c.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_i2s_mic.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_light_sensor.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_neoeffects.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_neopixel.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_oled.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_oled_sh1106.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_oled_ui.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_pacman.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_presence.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_rencoder.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_rest.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_rgb.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_rgbcct.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_robustness.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_rp2w.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_sdcard.py +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_servo.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_stepper.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_switch.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_system.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_telegram.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_tinyrgb.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_veml7700.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/urequests.mpy +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/config.css +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/config.html +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/dashboard.html +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/editor.js +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/editor_plugins.js +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/favicon.ico +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/filesui.html +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/filesui.js +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/ubashboard.css +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/udashboard.js +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/ustyle.css +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/uwidgets.js +0 -0
- {microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/uwidgets_pro.js +0 -0
|
@@ -85,7 +85,7 @@ def arg_parse():
|
|
|
85
85
|
dev_group.add_argument("-lint", "--linter", action="store_true", help="Run micrOS system linter (pylint+)")
|
|
86
86
|
dev_group.add_argument("-webrepl", "--open_webrepl", action="store_true", help="(beta) Open webrepl in default browser, micropython repl + file transfers (built-in)")
|
|
87
87
|
dev_group.add_argument("--light", action="store_true", help="Skip optional dependency deployments (low level param: add this as first argument always)")
|
|
88
|
-
dev_group.add_argument("-ut", "--unittest", action="store_true", help="Run micrOS unit tests - for development")
|
|
88
|
+
dev_group.add_argument("-ut", "--unittest", action="store_true", help="Run micrOS and toolkit unit tests - for development")
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
toolkit_group = parser.add_argument_group("Toolkit development")
|
|
@@ -233,10 +233,27 @@ def update_pip_package():
|
|
|
233
233
|
|
|
234
234
|
|
|
235
235
|
def run_unit_tests():
|
|
236
|
-
"""Run micrOS
|
|
236
|
+
"""Run the micrOS runtime and host-side toolkit unit tests."""
|
|
237
237
|
import unittest
|
|
238
|
-
|
|
239
|
-
|
|
238
|
+
|
|
239
|
+
test_roots = (
|
|
240
|
+
("micrOS RUNTIME TESTS", "micrOS/utests"),
|
|
241
|
+
("DevToolKit HOST TESTS", "toolkit/tests"),
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
all_successful = True
|
|
245
|
+
for index, (title, test_dir) in enumerate(test_roots, start=1):
|
|
246
|
+
print("+--------------------------------------------------+")
|
|
247
|
+
print("| [{}/{}] {:<42} |".format(index, len(test_roots), title))
|
|
248
|
+
print("| ROOT: {:<42} |".format(test_dir))
|
|
249
|
+
print("+--------------------------------------------------+")
|
|
250
|
+
sys.stdout.flush()
|
|
251
|
+
|
|
252
|
+
suite = unittest.defaultTestLoader.discover(os.path.join(MYPATH, test_dir))
|
|
253
|
+
result = unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run(suite)
|
|
254
|
+
all_successful = result.wasSuccessful() and all_successful
|
|
255
|
+
|
|
256
|
+
return all_successful
|
|
240
257
|
|
|
241
258
|
|
|
242
259
|
if __name__ == "__main__":
|
|
@@ -334,6 +351,6 @@ if __name__ == "__main__":
|
|
|
334
351
|
executor.run_micro_script(cmd_args.macro)
|
|
335
352
|
|
|
336
353
|
if cmd_args.unittest:
|
|
337
|
-
run_unit_tests()
|
|
354
|
+
sys.exit(0 if run_unit_tests() else 1)
|
|
338
355
|
|
|
339
356
|
sys.exit(0)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
3
|
|
30
30
|
],
|
|
31
31
|
"Web.py": [
|
|
32
|
-
9.
|
|
32
|
+
9.35,
|
|
33
33
|
2
|
|
34
34
|
],
|
|
35
35
|
"Tasks.py": [
|
|
@@ -261,7 +261,7 @@
|
|
|
261
261
|
0
|
|
262
262
|
],
|
|
263
263
|
"modules/LM_fileserver.py": [
|
|
264
|
-
9.
|
|
264
|
+
9.05,
|
|
265
265
|
1
|
|
266
266
|
]
|
|
267
267
|
},
|
|
@@ -280,7 +280,7 @@
|
|
|
280
280
|
23
|
|
281
281
|
],
|
|
282
282
|
"web": [
|
|
283
|
-
|
|
283
|
+
192178,
|
|
284
284
|
18
|
|
285
285
|
],
|
|
286
286
|
"core_dep": [
|
|
@@ -292,7 +292,7 @@
|
|
|
292
292
|
5
|
|
293
293
|
],
|
|
294
294
|
"core_score": 9.28,
|
|
295
|
-
"load_score": 8.
|
|
296
|
-
"version": "3.
|
|
295
|
+
"load_score": 8.35,
|
|
296
|
+
"version": "3.5.0-0"
|
|
297
297
|
}
|
|
298
298
|
}
|
|
@@ -18,7 +18,7 @@ from io import BytesIO
|
|
|
18
18
|
from uos import stat
|
|
19
19
|
from Tasks import lm_exec, lm_is_loaded, TaskBase
|
|
20
20
|
from Config import cfgget
|
|
21
|
-
from Files import OSPath, path_join
|
|
21
|
+
from Files import OSPath, path_join, abs_path
|
|
22
22
|
from Buffer import SlidingBuffer, BufferFullError, MemoryPool
|
|
23
23
|
from Debug import console_write, syslog
|
|
24
24
|
from Auth import AuthRequired, PWD_KEY
|
|
@@ -36,13 +36,15 @@ def url_path_resolve(path:str) -> tuple[bool, str]:
|
|
|
36
36
|
Return: isError, absolutePath
|
|
37
37
|
"""
|
|
38
38
|
# $Extended mount check: WEB_MOUNTS (/modules and /web)
|
|
39
|
-
path
|
|
39
|
+
# Normalize the untrusted request path before joining it to a web root.
|
|
40
|
+
# This keeps parent-directory segments from escaping /web or a mount.
|
|
41
|
+
path = abs_path(path).lstrip("/")
|
|
40
42
|
if path.startswith("$"):
|
|
41
43
|
mount_alias = path.split("/")[0]
|
|
42
44
|
mount_path = WebEngine.WEB_MOUNTS.get(mount_alias, None)
|
|
43
45
|
if mount_path is None:
|
|
44
46
|
return True, f"Invalid mount point: {mount_alias}"
|
|
45
|
-
mount_path = path.replace(mount_alias, mount_path)
|
|
47
|
+
mount_path = path.replace(mount_alias, mount_path, 1)
|
|
46
48
|
return False, mount_path
|
|
47
49
|
# Default web path: /web
|
|
48
50
|
return False, path_join(OSPath.WEB, path)
|
{microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Files.cpython-312.pyc
RENAMED
|
Binary file
|
{microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/micrOS/source/__pycache__/Web.cpython-312.pyc
RENAMED
|
Binary file
|
|
@@ -65,7 +65,7 @@ def _cfg_set_clb(_, body):
|
|
|
65
65
|
"""
|
|
66
66
|
try:
|
|
67
67
|
incoming_data = loads(body.decode('utf-8'))
|
|
68
|
-
print('Received config update
|
|
68
|
+
print('Received config update keys:', tuple(incoming_data))
|
|
69
69
|
failed_keys = []
|
|
70
70
|
for k, v in incoming_data.items():
|
|
71
71
|
try:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function () {
|
|
2
2
|
var ID = 'micrOSAuth', rf = window.fetch && window.fetch.bind(window);
|
|
3
|
-
var user = 'admin', pass = '';
|
|
3
|
+
var user = 'admin', pass = '', challenged = {};
|
|
4
4
|
try {
|
|
5
5
|
sessionStorage.removeItem(ID);
|
|
6
6
|
sessionStorage.removeItem('micros.config.auth');
|
|
@@ -27,6 +27,14 @@
|
|
|
27
27
|
return a.protocol === location.protocol && a.host === location.host;
|
|
28
28
|
} catch (_) { return false; }
|
|
29
29
|
}
|
|
30
|
+
function key(i) {
|
|
31
|
+
try {
|
|
32
|
+
var a = document.createElement('a'), u = url(i);
|
|
33
|
+
if (!u || !same(i)) return '';
|
|
34
|
+
a.href = u;
|
|
35
|
+
return a.pathname;
|
|
36
|
+
} catch (_) { return ''; }
|
|
37
|
+
}
|
|
30
38
|
function hdr(d) {
|
|
31
39
|
d = d || load();
|
|
32
40
|
return d.pass ? {'x-micros-auth': d.pass} : {};
|
|
@@ -59,9 +67,15 @@
|
|
|
59
67
|
}
|
|
60
68
|
function gf(u, o) {
|
|
61
69
|
o = o || {};
|
|
62
|
-
|
|
70
|
+
var k = key(u), d = load();
|
|
71
|
+
var proactive = o.micrOSAuth !== false && k && challenged[k] && d.pass;
|
|
72
|
+
return af(u, o, proactive ? d : null).then(function (r) {
|
|
63
73
|
if (r.status !== 401 || o.micrOSAuth === false || !same(u)) return r;
|
|
64
|
-
|
|
74
|
+
challenged[k] = true;
|
|
75
|
+
if (proactive) {
|
|
76
|
+
clear();
|
|
77
|
+
return prompt({target: u, request: o, message: 'Auth required', ok: function (pr) { return pr; }});
|
|
78
|
+
}
|
|
65
79
|
if (d.pass) {
|
|
66
80
|
return af(u, o, d).then(function (rr) {
|
|
67
81
|
if (rr.status !== 401) return rr;
|
|
@@ -102,6 +116,8 @@
|
|
|
102
116
|
return;
|
|
103
117
|
}
|
|
104
118
|
save(n);
|
|
119
|
+
var k = key(t);
|
|
120
|
+
if (k) challenged[k] = true;
|
|
105
121
|
if (o.ok) {
|
|
106
122
|
rm(p);
|
|
107
123
|
resolve(o.ok(r, n));
|
|
@@ -2033,8 +2033,7 @@ function trackChange(key, value) {
|
|
|
2033
2033
|
changedValues[key] = value;
|
|
2034
2034
|
}
|
|
2035
2035
|
updateSaveButtonState();
|
|
2036
|
-
console.log('
|
|
2037
|
-
console.log('All changes:', changedValues);
|
|
2036
|
+
console.log('Changed config keys:', Object.keys(changedValues));
|
|
2038
2037
|
}
|
|
2039
2038
|
|
|
2040
2039
|
function toggleMenu() {
|
|
@@ -47,12 +47,6 @@
|
|
|
47
47
|
max-width:176px;
|
|
48
48
|
min-width:0;
|
|
49
49
|
padding:8px;
|
|
50
|
-
|
|
51
|
-
border:1px solid rgba(255,255,255,.16);
|
|
52
|
-
border-radius:8px;
|
|
53
|
-
|
|
54
|
-
background:rgba(0,0,0,.55);
|
|
55
|
-
box-shadow:0 2px 8px rgba(0,0,0,.20);
|
|
56
50
|
}
|
|
57
51
|
|
|
58
52
|
/* Main endpoint */
|
|
@@ -64,10 +58,10 @@
|
|
|
64
58
|
width:100%;
|
|
65
59
|
padding:6px 8px;
|
|
66
60
|
|
|
67
|
-
border:
|
|
61
|
+
border:4px solid rgb(0, 0, 0);
|
|
68
62
|
border-radius:6px;
|
|
69
63
|
|
|
70
|
-
background:rgba(
|
|
64
|
+
background:rgba(0,0,0,.55);
|
|
71
65
|
color:white;
|
|
72
66
|
|
|
73
67
|
text-align:center;
|
|
@@ -96,6 +90,25 @@
|
|
|
96
90
|
display:flex;
|
|
97
91
|
flex-wrap:wrap;
|
|
98
92
|
gap:8px;
|
|
93
|
+
justify-content:space-between;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.endpoint-group-actions[hidden] {
|
|
97
|
+
display:none;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.endpoint-children-toggle {
|
|
101
|
+
display:flex;
|
|
102
|
+
align-items:center;
|
|
103
|
+
justify-content:center;
|
|
104
|
+
min-height:0;
|
|
105
|
+
height:20px;
|
|
106
|
+
width:100%;
|
|
107
|
+
padding:0;
|
|
108
|
+
border:0;
|
|
109
|
+
background:transparent;
|
|
110
|
+
color:rgba(255, 255, 255, 0.55);
|
|
111
|
+
font-size:20px;
|
|
99
112
|
}
|
|
100
113
|
|
|
101
114
|
.endpoint-group button {
|
|
@@ -103,14 +116,21 @@
|
|
|
103
116
|
}
|
|
104
117
|
|
|
105
118
|
.endpoint-group-actions button {
|
|
119
|
+
min-width:47px;
|
|
106
120
|
min-height:38px;
|
|
107
121
|
padding:5px 8px;
|
|
122
|
+
background:rgba(0,0,0,.55);
|
|
123
|
+
border:2px solid rgb(0, 0, 0);
|
|
108
124
|
}
|
|
109
125
|
|
|
110
|
-
@media (max-width:
|
|
126
|
+
@media (max-width: 768px) {
|
|
111
127
|
.endpoint-group {
|
|
112
128
|
flex-basis:126px;
|
|
113
129
|
}
|
|
130
|
+
|
|
131
|
+
.endpoint-children-toggle {
|
|
132
|
+
font-size:12px;
|
|
133
|
+
}
|
|
114
134
|
}
|
|
115
135
|
</style>
|
|
116
136
|
<script src="uapi.js" defer></script>
|
|
@@ -5,7 +5,7 @@ let REST_CONSOLE_CACHE;
|
|
|
5
5
|
|
|
6
6
|
function initializeBaseURL() {
|
|
7
7
|
if (!BASE_URL && typeof window !== 'undefined') {
|
|
8
|
-
BASE_URL =
|
|
8
|
+
BASE_URL = window.location.origin;
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
|
|
@@ -102,7 +102,7 @@ function restInfo(showPages=true) {
|
|
|
102
102
|
const endpoints = result['usr_endpoints'] ? Array.from(result['usr_endpoints']) : [];
|
|
103
103
|
renderEndpointGroups(endpoints);
|
|
104
104
|
}
|
|
105
|
-
document.getElementById('restInfoHeader').
|
|
105
|
+
document.getElementById('restInfoHeader').textContent = infoHeader;
|
|
106
106
|
}).catch(error => {
|
|
107
107
|
console.error('Error in restAPI:', error);
|
|
108
108
|
});
|
|
@@ -119,6 +119,27 @@ function endpointLabel(label, entry) {
|
|
|
119
119
|
return icon ? `${icon} ${label}` : label;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
function collapsibleToggle(label, content) {
|
|
123
|
+
const toggle = makeEl('button', {
|
|
124
|
+
className: 'endpoint-children-toggle',
|
|
125
|
+
type: 'button',
|
|
126
|
+
textContent: '\u25A0',
|
|
127
|
+
title: `Show ${label} endpoints`,
|
|
128
|
+
onclick: () => {
|
|
129
|
+
const expanded = toggle.getAttribute('aria-expanded') === 'true';
|
|
130
|
+
const action = expanded ? 'Show' : 'Hide';
|
|
131
|
+
toggle.setAttribute('aria-expanded', String(!expanded));
|
|
132
|
+
toggle.textContent = expanded ? '\u25A0' : '\u25C6';
|
|
133
|
+
toggle.title = `${action} ${label} endpoints`;
|
|
134
|
+
toggle.setAttribute('aria-label', toggle.title);
|
|
135
|
+
content.hidden = expanded;
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
toggle.setAttribute('aria-label', `Show ${label} endpoints`);
|
|
139
|
+
toggle.setAttribute('aria-expanded', 'false');
|
|
140
|
+
return toggle;
|
|
141
|
+
}
|
|
142
|
+
|
|
122
143
|
function renderEndpointGroups(endpoints) {
|
|
123
144
|
const container = byId('endpointGroups');
|
|
124
145
|
if (!container) {return;}
|
|
@@ -153,6 +174,11 @@ function renderEndpointGroups(endpoints) {
|
|
|
153
174
|
const actions = makeEl('div', {className: 'endpoint-group-actions'});
|
|
154
175
|
group.children.sort((a, b) => a.entry.localeCompare(b.entry))
|
|
155
176
|
.forEach(({entry, label}) => actions.appendChild(button(endpointLabel(label, entry), entry)));
|
|
156
|
-
|
|
177
|
+
const children = [mainAction];
|
|
178
|
+
if (group.children.length) {
|
|
179
|
+
actions.hidden = true;
|
|
180
|
+
children.push(collapsibleToggle(main, actions), actions);
|
|
181
|
+
}
|
|
182
|
+
container.appendChild(makeEl('div', {className: 'endpoint-group'}, children));
|
|
157
183
|
});
|
|
158
184
|
}
|
|
@@ -81,6 +81,18 @@ def _install_import_stubs():
|
|
|
81
81
|
pass
|
|
82
82
|
m.OSPath = OSPathStub
|
|
83
83
|
m.path_join = lambda *_a: os.path.join(*_a)
|
|
84
|
+
def abs_path(path):
|
|
85
|
+
stack = []
|
|
86
|
+
for part in path.split("/"):
|
|
87
|
+
if not part or part == ".":
|
|
88
|
+
continue
|
|
89
|
+
if part == "..":
|
|
90
|
+
if stack:
|
|
91
|
+
stack.pop()
|
|
92
|
+
else:
|
|
93
|
+
stack.append(part)
|
|
94
|
+
return "/" + "/".join(stack)
|
|
95
|
+
m.abs_path = abs_path
|
|
84
96
|
sys.modules["Files"] = m
|
|
85
97
|
|
|
86
98
|
m = types.ModuleType("Config")
|
|
@@ -426,6 +438,22 @@ class TestWebStateMachine(unittest.TestCase):
|
|
|
426
438
|
self.assertNotIn(b'<script src="/auth.js"></script>', response_head)
|
|
427
439
|
self.assertEqual(response_handler.getvalue(), body)
|
|
428
440
|
|
|
441
|
+
def test_static_path_traversal_remains_under_web_root(self):
|
|
442
|
+
error, path = self.web_module.url_path_resolve("../config/node_config.json")
|
|
443
|
+
|
|
444
|
+
self.assertFalse(error)
|
|
445
|
+
self.assertEqual(path, "/web/config/node_config.json")
|
|
446
|
+
|
|
447
|
+
def test_mounted_path_traversal_falls_back_under_web_root(self):
|
|
448
|
+
self.web_module.WebEngine.WEB_MOUNTS["$data"] = "/data"
|
|
449
|
+
try:
|
|
450
|
+
error, path = self.web_module.url_path_resolve("$data/../config/node_config.json")
|
|
451
|
+
finally:
|
|
452
|
+
self.web_module.WebEngine.WEB_MOUNTS.pop("$data", None)
|
|
453
|
+
|
|
454
|
+
self.assertFalse(error)
|
|
455
|
+
self.assertEqual(path, "/web/config/node_config.json")
|
|
456
|
+
|
|
429
457
|
def test_mounted_html_streams_without_rewrite(self):
|
|
430
458
|
body = b"<html><head></head><body>User data</body></html>"
|
|
431
459
|
self.web_module.WebEngine.WEB_MOUNTS["$data"] = "/data"
|
|
@@ -36,10 +36,10 @@ micrOS/micropython/esp32s2-LOLIN_MINI-20251209-v1.27.0.bin
|
|
|
36
36
|
micrOS/micropython/esp32s3-4MBflash-20241129-v1.24.1.bin
|
|
37
37
|
micrOS/micropython/esp32s3-8MBflash-20251209-v1.27.0.bin
|
|
38
38
|
micrOS/micropython/esp32s3_spiram_oct-20251209-v1.27.0.bin
|
|
39
|
-
micrOS/micropython/micrOS-esp32-1.28.0-3.
|
|
40
|
-
micrOS/micropython/micrOS-esp32c3-1.28.0-3.
|
|
41
|
-
micrOS/micropython/micrOS-esp32c6-1.28.0-3.
|
|
42
|
-
micrOS/micropython/micrOS-esp32s3-1.28.0-3.
|
|
39
|
+
micrOS/micropython/micrOS-esp32-1.28.0-3.5.0-0.bin
|
|
40
|
+
micrOS/micropython/micrOS-esp32c3-1.28.0-3.5.0-0.bin
|
|
41
|
+
micrOS/micropython/micrOS-esp32c6-1.28.0-3.5.0-0.bin
|
|
42
|
+
micrOS/micropython/micrOS-esp32s3-1.28.0-3.5.0-0.bin
|
|
43
43
|
micrOS/micropython/rpi-pico-w-20251209-v1.27.0.uf2
|
|
44
44
|
micrOS/micropython/tinypico-20251209-v1.27.0.bin
|
|
45
45
|
micrOS/release_info/micrOS_ReleaseInfo/system_analysis_sum.json
|
|
@@ -339,6 +339,9 @@ toolkit/user_data/webhooks/generic.py
|
|
|
339
339
|
toolkit/user_data/webhooks/macro.py
|
|
340
340
|
toolkit/user_data/webhooks/template.macro
|
|
341
341
|
toolkit/user_data/webhooks/template.py
|
|
342
|
+
toolkit/user_data/webhooks/__pycache__/generic.cpython-312.pyc
|
|
343
|
+
toolkit/user_data/webhooks/__pycache__/macro.cpython-312.pyc
|
|
344
|
+
toolkit/user_data/webhooks/__pycache__/template.cpython-312.pyc
|
|
342
345
|
toolkit/workspace/__init__.py
|
|
343
346
|
toolkit/workspace/precompiled/Auth.mpy
|
|
344
347
|
toolkit/workspace/precompiled/Buffer.mpy
|
|
@@ -17,7 +17,7 @@ dependencies = ['adafruit-ampy', 'mpremote', 'esptool', 'ipaddress', 'netaddr',
|
|
|
17
17
|
|
|
18
18
|
setuptools.setup(
|
|
19
19
|
name='micrOSDevToolKit',
|
|
20
|
-
version='3.
|
|
20
|
+
version='3.5.0',
|
|
21
21
|
author='Marcell Ban',
|
|
22
22
|
author_email='miros.framework@gmail.com',
|
|
23
23
|
description='Development and deployment environment for micrOS, the diy micropython automation OS (IoT)',
|
|
@@ -19,6 +19,7 @@ import requests
|
|
|
19
19
|
|
|
20
20
|
CLIENT = None
|
|
21
21
|
TIMEOUT_SEC = 5
|
|
22
|
+
RESULT_CONTINUATION = " " * 51
|
|
22
23
|
|
|
23
24
|
# COLLECT AND SAVE SYSTEM TEST METRICS
|
|
24
25
|
ENABLE_DATA_COLLECTION = os.environ.get("ENABLE_DATA_COLLECTION", False)
|
|
@@ -369,18 +370,40 @@ def micros_alarm_check():
|
|
|
369
370
|
return _micros_alarm_legacy_report(info, alarm_data)
|
|
370
371
|
return False, info + f" invalid alarm response: {output[1]}"
|
|
371
372
|
if not isinstance(alarm_data.get('health'), bool):
|
|
372
|
-
return False, info +
|
|
373
|
+
return False, info + " missing bool health:\n" + _format_alarm_dump(alarm_data)
|
|
373
374
|
verdict = alarm_data.get('verdict', '')
|
|
374
375
|
if not isinstance(verdict, str) or not verdict.startswith(('OK alarm:', 'NOK alarm:')):
|
|
375
|
-
return False, info +
|
|
376
|
+
return False, info + " invalid verdict:\n" + _format_alarm_dump(alarm_data)
|
|
376
377
|
log_data = {key: value for key, value in alarm_data.items() if key not in ('health', 'verdict')}
|
|
377
378
|
if any(key in ('log', 'path', 'text') or not isinstance(value, str) for key, value in log_data.items()):
|
|
378
|
-
return False, info +
|
|
379
|
+
return False, info + " invalid dump:\n" + _format_alarm_dump(alarm_data)
|
|
379
380
|
# Clean alarms after evaluation.
|
|
380
381
|
CLIENT.execute(['system alarms clean=True'])
|
|
382
|
+
formatted_dump = _format_alarm_dump(alarm_data)
|
|
381
383
|
if not alarm_data['health']:
|
|
382
|
-
return True, info + f" !!!WARN!!! {verdict}
|
|
383
|
-
return True, info + f" {verdict}
|
|
384
|
+
return True, info + f" !!!WARN!!! {verdict}\n{formatted_dump}"
|
|
385
|
+
return True, info + f" {verdict}\n{formatted_dump}"
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
def _format_alarm_dump(alarm_data):
|
|
389
|
+
"""Format alarm metadata and multiline logs for the result console."""
|
|
390
|
+
lines = [
|
|
391
|
+
"Alarm dump:",
|
|
392
|
+
" health: {}".format(alarm_data.get('health', '<missing>')),
|
|
393
|
+
" verdict: {}".format(alarm_data.get('verdict', '<missing>')),
|
|
394
|
+
]
|
|
395
|
+
for path, content in alarm_data.items():
|
|
396
|
+
if path in ('health', 'verdict'):
|
|
397
|
+
continue
|
|
398
|
+
lines.append(" {}:".format(path))
|
|
399
|
+
if isinstance(content, str):
|
|
400
|
+
log_lines = content.rstrip('\n').splitlines()
|
|
401
|
+
lines.extend(" {}".format(line) for line in log_lines)
|
|
402
|
+
if not log_lines:
|
|
403
|
+
lines.append(" <empty>")
|
|
404
|
+
else:
|
|
405
|
+
lines.append(" {!r}".format(content))
|
|
406
|
+
return RESULT_CONTINUATION + ("\n" + RESULT_CONTINUATION).join(lines)
|
|
384
407
|
|
|
385
408
|
|
|
386
409
|
def _is_obsolete_alarm_api(output):
|
|
@@ -217,7 +217,10 @@ class micrOSClient:
|
|
|
217
217
|
# Collect answer data
|
|
218
218
|
if select.select([self.conn], [], [], read_timeout)[0]:
|
|
219
219
|
while True:
|
|
220
|
-
|
|
220
|
+
incoming_bytes = self.conn.recv(4096)
|
|
221
|
+
if not incoming_bytes:
|
|
222
|
+
raise ConnectionError("Device disconnected before sending the command prompt")
|
|
223
|
+
incoming_data = incoming_bytes.decode('utf-8')
|
|
221
224
|
if stream:
|
|
222
225
|
incoming_data = incoming_data.replace(self.prompt, f"{color.NC}{color.BOLD}{self.prompt}{color.NC}")
|
|
223
226
|
print(f"\r{color.LIGHT_GRAY}{incoming_data}{color.NC}", end="")
|
|
@@ -314,15 +317,19 @@ class micrOSClient:
|
|
|
314
317
|
for cnt in range(0, retry):
|
|
315
318
|
try:
|
|
316
319
|
out = self.send_cmd(cmd, timeout, stream=stream)
|
|
317
|
-
if out is None
|
|
318
|
-
|
|
320
|
+
if out is not None:
|
|
321
|
+
return out
|
|
319
322
|
except OSError as e:
|
|
320
|
-
|
|
321
|
-
break
|
|
323
|
+
self.dbg_print("Host is down, timed out: {} sec e: {}".format(timeout, e))
|
|
322
324
|
except Exception as e:
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
325
|
+
self.dbg_print("Send command failed: {}".format(e))
|
|
326
|
+
|
|
327
|
+
# A failed send closes the connection in send_cmd(). Ensure other
|
|
328
|
+
# failure paths reconnect as well before the next attempt.
|
|
329
|
+
self.close()
|
|
330
|
+
if cnt + 1 < retry:
|
|
331
|
+
self.dbg_print("[Count] Send retry: {}/{}".format(cnt + 1, retry))
|
|
332
|
+
time.sleep(0.2)
|
|
326
333
|
return out
|
|
327
334
|
|
|
328
335
|
def telnet(self, timeout=5):
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
{microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/modules/LM_web.mpy
RENAMED
|
Binary file
|
|
@@ -1,20 +1,22 @@
|
|
|
1
|
-
(function(){var ID='micrOSAuth',rf=window.fetch&&window.fetch.bind(window);var user='admin',pass='';try{sessionStorage.removeItem(ID);sessionStorage.removeItem('micros.config.auth');}catch(_){}
|
|
1
|
+
(function(){var ID='micrOSAuth',rf=window.fetch&&window.fetch.bind(window);var user='admin',pass='',challenged={};try{sessionStorage.removeItem(ID);sessionStorage.removeItem('micros.config.auth');}catch(_){}
|
|
2
2
|
function rm(e){if(e&&e.parentNode)e.parentNode.removeChild(e);}
|
|
3
3
|
function load(){return{user:user,pass:pass};}
|
|
4
4
|
function save(d){user=d.user||'admin';pass=d.pass||'';return load();}
|
|
5
5
|
function clear(){pass='';}
|
|
6
6
|
function url(i){return typeof i==='string'?i:i&&typeof i.href==='string'?i.href:i&&typeof i.url==='string'?i.url:'';}
|
|
7
7
|
function same(i){try{var a=document.createElement('a'),u=url(i);if(!u)return false;a.href=u;return a.protocol===location.protocol&&a.host===location.host;}catch(_){return false;}}
|
|
8
|
+
function key(i){try{var a=document.createElement('a'),u=url(i);if(!u||!same(i))return'';a.href=u;return a.pathname;}catch(_){return'';}}
|
|
8
9
|
function hdr(d){d=d||load();return d.pass?{'x-micros-auth':d.pass}:{};}
|
|
9
10
|
function ext(a,b){var o={},k;a=a||{};for(k in a)o[k]=a[k];for(k in b)o[k]=b[k];return o;}
|
|
10
11
|
function mh(a,b){var k,o={};if(window.Headers){try{o=new Headers(a||{});for(k in b)o.set(k,b[k]);return o;}catch(_){}}
|
|
11
12
|
a=a||{};for(k in a)o[k]=a[k];for(k in b)o[k]=b[k];return o;}
|
|
12
13
|
function af(u,o,d){o=o||{};if(!rf)return Promise.reject(Error('Fetch unsupported'));return rf(u,ext(o,{headers:mh(o.headers||(u&&u.headers),same(u)&&d?hdr(d):{})}));}
|
|
13
|
-
function gf(u,o){o=o||{};return af(u,o).then(function(r){if(r.status!==401||o.micrOSAuth===false||!same(u))return r;
|
|
14
|
+
function gf(u,o){o=o||{};var k=key(u),d=load();var proactive=o.micrOSAuth!==false&&k&&challenged[k]&&d.pass;return af(u,o,proactive?d:null).then(function(r){if(r.status!==401||o.micrOSAuth===false||!same(u))return r;challenged[k]=true;if(proactive){clear();return prompt({target:u,request:o,message:'Auth required',ok:function(pr){return pr;}});}
|
|
15
|
+
if(d.pass){return af(u,o,d).then(function(rr){if(rr.status!==401)return rr;clear();return prompt({target:u,request:o,message:'Auth required',ok:function(pr){return pr;}});});}
|
|
14
16
|
return prompt({target:u,request:o,message:'Auth required',ok:function(rr){return rr;}});});}
|
|
15
17
|
function css(){if(document.getElementById(ID+'Style'))return;var s=document.createElement('style');s.id=ID+'Style';s.textContent='#'+ID+'{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#0009;font:14px sans-serif;color:#fff}#'+ID+' form{display:flex;flex-direction:column;width:240px;max-width:90%;padding:14px;border:1px solid #555;border-radius:6px;background:#161022}#'+ID+' input,#'+ID+' button{display:block;width:100%;min-width:0;max-width:none;flex:none;height:32px;min-height:32px;margin:8px 0 0;border-radius:4px;border:1px solid #555;padding:0 9px;box-sizing:border-box;font:14px sans-serif}#'+ID+' input{background:#241a36;color:#fff;font-size:16px}#'+ID+' button{background:#17823a;color:#fff;font-weight:bold}#'+ID+' span{min-height:18px;margin-top:6px;color:#ff9a9a}#'+ID+' pre{white-space:pre-wrap;word-break:break-word}';(document.head||document.getElementsByTagName('head')[0]).appendChild(s);}
|
|
16
18
|
function prompt(o){o=o||{};css();rm(document.getElementById(ID));var d=load(),p=document.createElement('div'),f,e,m,t;p.id=ID;p.innerHTML='<form><strong>micrOS Auth</strong><input name="user" autocomplete="username" placeholder="Username"><input name="pass" type="password" autocomplete="current-password" placeholder="Password"><button>Unlock</button><span></span></form>';f=p.getElementsByTagName('form')[0];e=f.elements;m=p.getElementsByTagName('span')[0];t=o.target||location.pathname;e.user.value=d.user||'admin';m.textContent=o.message||'';return new Promise(function(resolve,reject){f.onsubmit=function(ev){ev.preventDefault();var n={user:e.user.value||'admin',pass:e.pass.value||''};af(t,o.request||{},n).then(function(r){if(r.status===401){m.textContent='Access denied';return;}
|
|
17
|
-
save(n);if(o.ok){rm(p);resolve(o.ok(r,n));return;}
|
|
19
|
+
save(n);var k=key(t);if(k)challenged[k]=true;if(o.ok){rm(p);resolve(o.ok(r,n));return;}
|
|
18
20
|
r.text().then(function(body){if((r.headers.get('content-type')||'').indexOf('text/html')>=0){document.open();document.write(body);document.close();}else{p.removeAttribute('id');p.innerHTML='<pre></pre>';p.getElementsByTagName('pre')[0].textContent=body;}
|
|
19
21
|
resolve(r);});}).catch(function(err){m.textContent='Request failed';reject(err);});};document.body.appendChild(p);e.pass.focus();});}
|
|
20
22
|
function ready(fn){if(document.body)fn();else document.addEventListener('DOMContentLoaded',fn);}
|
{microsdevtoolkit-3.4.1 → microsdevtoolkit-3.5.0}/toolkit/workspace/precompiled/web/config.js
RENAMED
|
@@ -190,7 +190,7 @@ if(trigKey in groupData){const wrapper=document.createElement('div');wrapper.cla
|
|
|
190
190
|
if(cbfKey in groupData){renderMultiParamField(groupWrapper,cbfKey,groupData[cbfKey]);}
|
|
191
191
|
container.appendChild(groupWrapper);}
|
|
192
192
|
function trackChange(key,value){if(configData[key]===value){delete changedValues[key];}else{changedValues[key]=value;}
|
|
193
|
-
updateSaveButtonState();console.log('
|
|
193
|
+
updateSaveButtonState();console.log('Changed config keys:',Object.keys(changedValues));}
|
|
194
194
|
function toggleMenu(){const menu=document.getElementById('configMenu');if(!menu)return;menu.classList.toggle('open');}
|
|
195
195
|
function closeMenuOnOutsideClick(event){const menu=document.getElementById('configMenu');const toggle=document.getElementById('menuToggle');if(!menu||!menu.classList.contains('open')||window.innerWidth>768)return;if(menu.contains(event.target)||(toggle&&toggle.contains(event.target)))return;closeMobileMenu();}
|
|
196
196
|
function initializeConfigUi(){addMenuListeners();const toggle=document.getElementById('menuToggle');if(toggle&&!toggle.dataset.bound){toggle.addEventListener('click',toggleMenu);toggle.dataset.bound='1';}
|