From d6f53df7761a136640ea84b389e2d725e02d2feb Mon Sep 17 00:00:00 2001 From: makermelissa Date: Wed, 15 Mar 2023 21:57:11 +0000 Subject: [PATCH] Github Action: Updated dist files --- dist/base_installer.js | 6 +++--- dist/base_installer.min.js | 4 ++-- dist/cpinstaller.js | 10 +++++----- dist/cpinstaller.min.js | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/dist/base_installer.js b/dist/base_installer.js index 82c9a26..a2f21d9 100644 --- a/dist/base_installer.js +++ b/dist/base_installer.js @@ -3,9 +3,9 @@ // SPDX-License-Identifier: MIT 'use strict'; -import {html, render} from 'https://unpkg.com/lit-html?module'; -import {asyncAppend} from 'https://unpkg.com/lit-html/directives/async-append?module'; -import * as esptoolPackage from "https://unpkg.com/esp-web-flasher@5.1.2/dist/web/index.js?module" +import {html, render} from 'https://cdn.jsdelivr.net/npm/lit-html/+esm'; +import {asyncAppend} from 'https://cdn.jsdelivr.net/npm/lit-html/directives/async-append/+esm'; +import * as esptoolPackage from "https://cdn.jsdelivr.net/npm/esp-web-flasher@5.1.2/dist/web/index.js/+esm" export const ESP_ROM_BAUD = 115200; diff --git a/dist/base_installer.min.js b/dist/base_installer.min.js index 3dfa761..935713c 100644 --- a/dist/base_installer.min.js +++ b/dist/base_installer.min.js @@ -1,4 +1,4 @@ -"use strict";import{html,render}from"https://unpkg.com/lit-html?module";import{asyncAppend}from"https://unpkg.com/lit-html/directives/async-append?module";import*as esptoolPackage from"https://unpkg.com/esp-web-flasher@5.1.2/dist/web/index.js?module";const ESP_ROM_BAUD=115200;class InstallButton extends HTMLButtonElement{static isSupported="serial"in navigator;static isAllowed=window.isSecureContext;constructor(){super(),this.dialogElements={},this.currentFlow=null,this.currentStep=0,this.currentDialogElement=null,this.port=null,this.espStub=null,this.dialogCssClass="install-dialog",this.connected=this.connectionStates.DISCONNECTED,this.menuTitle="Installer Menu"}init(){this.preloadDialogs()}previousButton={label:"Previous",onClick:this.prevStep,isEnabled:async()=>0this.currentStep{this.closeDialog()}};defaultButtons=[this.previousButton,this.nextButton];connectionStates={DISCONNECTED:"Connect",CONNECTING:"Connecting...",CONNECTED:"Disconnect"};dialogs={notSupported:{preload:!1,closeable:!0,template:t=>html` +"use strict";import{html,render}from"https://cdn.jsdelivr.net/npm/lit-html/+esm";import{asyncAppend}from"https://cdn.jsdelivr.net/npm/lit-html/directives/async-append/+esm";import*as esptoolPackage from"https://cdn.jsdelivr.net/npm/esp-web-flasher@5.1.2/dist/web/index.js/+esm";const ESP_ROM_BAUD=115200;class InstallButton extends HTMLButtonElement{static isSupported="serial"in navigator;static isAllowed=window.isSecureContext;constructor(){super(),this.dialogElements={},this.currentFlow=null,this.currentStep=0,this.currentDialogElement=null,this.port=null,this.espStub=null,this.dialogCssClass="install-dialog",this.connected=this.connectionStates.DISCONNECTED,this.menuTitle="Installer Menu"}init(){this.preloadDialogs()}previousButton={label:"Previous",onClick:this.prevStep,isEnabled:async()=>0this.currentStep{this.closeDialog()}};defaultButtons=[this.previousButton,this.nextButton];connectionStates={DISCONNECTED:"Connect",CONNECTING:"Connecting...",CONNECTED:"Disconnect"};dialogs={notSupported:{preload:!1,closeable:!0,template:t=>html` Sorry, Web Serial is not supported on your browser at this time. Browsers we expect to work:
  • Google Chrome 89 (and higher)
  • @@ -9,4 +9,4 @@

    ${this.menuTitle}

    `,buttons:[this.closeButton]}};flows={};baudRates=[115200,128e3,153600,230400,460800,921600,15e5,2e6];connectedCallback(){InstallButton.isSupported&&InstallButton.isAllowed?this.toggleAttribute("install-supported",!0):this.toggleAttribute("install-unsupported",!0),this.addEventListener("click",async t=>{t.preventDefault(),InstallButton.isSupported?await this.buttonClickHandler(t):await this.showNotSupported()})}async buttonClickHandler(t){await this.showMenu()}getUrlParams(){var e={};return location.hash&&location.hash.substr(1).split("&").forEach(function(t){e[t.split("=")[0]]=t.split("=")[1]}),e}getUrlParam(t){var e=this.getUrlParams();let s=null;return s=t in e?e[t]:s}async enabledFlowCount(){let t=0;for(var[e,s]of Object.entries(this.flows))await s.isEnabled()&&t++;return t}async*generateMenu(t){0==await this.enabledFlowCount()&&(yield html`
  • No installable options available for this board.
  • `);for(var[e,s]of Object.entries(this.flows))await s.isEnabled()&&(yield t(e,s))}preloadDialogs(){for(var[t,e]of Object.entries(this.dialogs))"preload"in e&&!e.preload||(this.dialogElements[t]=this.getDialogElement(e))}createIdFromLabel(t){return t.replace(/^[^a-z]+|[^\w:.-]+/gi,"")}createDialogElement(t,e){var s=this.querySelector("#cp-installer-"+t);s&&this.remove(s);let i=document.createElement("dialog");i.id=t,i.classList.add(this.dialogCssClass);s=document.createElement("button"),s.href="#",s.classList.add("close-button"),s.addEventListener("click",t=>{t.preventDefault(),i.close()}),i.appendChild(s),t=document.createElement("div");t.classList.add("dialog-body"),i.appendChild(t);let n=this.defaultButtons;return e&&e.buttons&&(n=e.buttons),i.appendChild(this.createNavigation(n)),document.body.appendChild(i),i}createNavigation(t){var e=document.createElement("div");e.classList.add("dialog-navigation");for(const i of t){var s=document.createElement("button");s.innerText=i.label,s.id=this.createIdFromLabel(i.label),s.addEventListener("click",async t=>{t.preventDefault(),await i.onClick.bind(this)()}),s.addEventListener("update",async t=>{"onUpdate"in i&&await i.onUpdate.bind(this)(t),"isEnabled"in i&&(t.target.disabled=!await i.isEnabled.bind(this)())}),e.appendChild(s)}return e}getDialogElement(t,e=!1){s=this.dialogs,i=t;var s,i,n=Object.keys(s).find(t=>s[t]===i);return n?n in this.dialogElements&&!e?this.dialogElements[n]:this.createDialogElement(n,t):null}updateButtons(){if(this.currentDialogElement)for(const t of this.currentDialogElement.querySelectorAll(".dialog-navigation button"))t.dispatchEvent(new Event("update"))}showDialog(t,e={}){var s;this.currentDialogElement&&this.closeDialog(),this.currentDialogElement=this.getDialogElement(t),this.currentDialogElement||console.error("Dialog not found"),this.currentDialogElement&&(s=this.currentDialogElement.querySelector(".dialog-body"),"template"in t&&render(t.template(e),s),"closeable"in t&&t.closeable?this.currentDialogElement.querySelector(".close-button").style.display="block":this.currentDialogElement.querySelector(".close-button").style.display="none",this.defaultButtons,"buttons"in t&&t.buttons,this.updateButtons(),this.currentDialogElement.showModal())}closeDialog(){this.currentDialogElement.close(),this.currentDialogElement=null}errorMsg(t){t=this.stripHtml(t),console.error(t),this.showError(t)}logMsg(t,e=!1){console.info(this.stripHtml(t)),e&&console.trace()}updateEspConnected(t){Object.values(this.connectionStates).includes(t)&&(this.connected=t,this.updateButtons())}stripHtml(t){var e=document.createElement("div");return e.innerHTML=t,e.textContent||e.innerText||""}formatMacAddr(t){return t.map(t=>t.toString(16).toUpperCase().padStart(2,"0")).join(":")}async disconnect(){this.espStub&&(await espStub.disconnect(),await espStub.port.close(),this.updateUIConnected(this.connectionStates.DISCONNECTED),this.espStub=null)}async runFlow(t){if(t instanceof Event){if(t.preventDefault(),t.stopImmediatePropagation(),!(t.target.id in this.flows))return;t=this.flows[t.target.id]}this.currentFlow=t,this.currentStep=0,await this.currentFlow.steps[this.currentStep].bind(this)()}async nextStep(){this.currentFlow&&this.currentStep`,buttons:[this.closeButton]}};flows={};baudRates=[115200,128e3,153600,230400,460800,921600,15e5,2e6];connectedCallback(){InstallButton.isSupported&&InstallButton.isAllowed?this.toggleAttribute("install-supported",!0):this.toggleAttribute("install-unsupported",!0),this.addEventListener("click",async t=>{t.preventDefault(),InstallButton.isSupported?await this.buttonClickHandler(t):await this.showNotSupported()})}async buttonClickHandler(t){await this.showMenu()}getUrlParams(){var e={};return location.hash&&location.hash.substr(1).split("&").forEach(function(t){e[t.split("=")[0]]=t.split("=")[1]}),e}getUrlParam(t){var e=this.getUrlParams();let s=null;return s=t in e?e[t]:s}async enabledFlowCount(){let t=0;for(var[e,s]of Object.entries(this.flows))await s.isEnabled()&&t++;return t}async*generateMenu(t){0==await this.enabledFlowCount()&&(yield html`
  • No installable options available for this board.
  • `);for(var[e,s]of Object.entries(this.flows))await s.isEnabled()&&(yield t(e,s))}preloadDialogs(){for(var[t,e]of Object.entries(this.dialogs))"preload"in e&&!e.preload||(this.dialogElements[t]=this.getDialogElement(e))}createIdFromLabel(t){return t.replace(/^[^a-z]+|[^\w:.-]+/gi,"")}createDialogElement(t,e){var s=this.querySelector("#cp-installer-"+t);s&&this.remove(s);let n=document.createElement("dialog");n.id=t,n.classList.add(this.dialogCssClass);s=document.createElement("button"),s.href="#",s.classList.add("close-button"),s.addEventListener("click",t=>{t.preventDefault(),n.close()}),n.appendChild(s),t=document.createElement("div");t.classList.add("dialog-body"),n.appendChild(t);let i=this.defaultButtons;return e&&e.buttons&&(i=e.buttons),n.appendChild(this.createNavigation(i)),document.body.appendChild(n),n}createNavigation(t){var e=document.createElement("div");e.classList.add("dialog-navigation");for(const n of t){var s=document.createElement("button");s.innerText=n.label,s.id=this.createIdFromLabel(n.label),s.addEventListener("click",async t=>{t.preventDefault(),await n.onClick.bind(this)()}),s.addEventListener("update",async t=>{"onUpdate"in n&&await n.onUpdate.bind(this)(t),"isEnabled"in n&&(t.target.disabled=!await n.isEnabled.bind(this)())}),e.appendChild(s)}return e}getDialogElement(t,e=!1){s=this.dialogs,n=t;var s,n,i=Object.keys(s).find(t=>s[t]===n);return i?i in this.dialogElements&&!e?this.dialogElements[i]:this.createDialogElement(i,t):null}updateButtons(){if(this.currentDialogElement)for(const t of this.currentDialogElement.querySelectorAll(".dialog-navigation button"))t.dispatchEvent(new Event("update"))}showDialog(t,e={}){var s;this.currentDialogElement&&this.closeDialog(),this.currentDialogElement=this.getDialogElement(t),this.currentDialogElement||console.error("Dialog not found"),this.currentDialogElement&&(s=this.currentDialogElement.querySelector(".dialog-body"),"template"in t&&render(t.template(e),s),"closeable"in t&&t.closeable?this.currentDialogElement.querySelector(".close-button").style.display="block":this.currentDialogElement.querySelector(".close-button").style.display="none",this.defaultButtons,"buttons"in t&&t.buttons,this.updateButtons(),this.currentDialogElement.showModal())}closeDialog(){this.currentDialogElement.close(),this.currentDialogElement=null}errorMsg(t){t=this.stripHtml(t),console.error(t),this.showError(t)}logMsg(t,e=!1){console.info(this.stripHtml(t)),e&&console.trace()}updateEspConnected(t){Object.values(this.connectionStates).includes(t)&&(this.connected=t,this.updateButtons())}stripHtml(t){var e=document.createElement("div");return e.innerHTML=t,e.textContent||e.innerText||""}formatMacAddr(t){return t.map(t=>t.toString(16).toUpperCase().padStart(2,"0")).join(":")}async disconnect(){this.espStub&&(await espStub.disconnect(),await espStub.port.close(),this.updateUIConnected(this.connectionStates.DISCONNECTED),this.espStub=null)}async runFlow(t){if(t instanceof Event){if(t.preventDefault(),t.stopImmediatePropagation(),!(t.target.id in this.flows))return;t=this.flows[t.target.id]}this.currentFlow=t,this.currentStep=0,await this.currentFlow.steps[this.currentStep].bind(this)()}async nextStep(){this.currentFlow&&this.currentStep{var i,s=this.parseVersion(e.version),a=this.parseVersion(t.version);for(i of r){if(s[i]a[i])return 1}return 0}),e}async connectedCallback(){this.boardIds=this.getAttribute("boardid").split(","),1===this.boardIds.length&&(this.selectedBoardId=this.boardIds[0]),this.getAttribute("version")&&(this.releaseVersion=this.getAttribute("version"));var e=await fetch(BOARD_DEFS);this.boardDefs=await e.json(),super.connectedCallback()}async loadBoard(e){let t=null;if(Object.keys(this.boardDefs).includes(e)){e=this.boardDefs[e],e=(this.chipFamily=e.chipfamily,e.name&&(this.boardName=e.name),e.bootloader&&(this.bootloaderUrl=this.updateBinaryUrl(e.bootloader)),this.sortReleases(e.releases));if(this.releaseVersion)for(var i of e)if(i.version==this.releaseVersion){t=i;break}t||(t=DEFAULT_RELEASE_LATEST?e[e.length-1]:e[0],this.releaseVersion=t.version),t.uf2file&&(this.uf2FileUrl=this.updateBinaryUrl(t.uf2file)),t.binfile&&(this.binFileUrl=this.updateBinaryUrl(t.binfile))}this.getAttribute("chipfamily")&&(this.chipFamily=this.getAttribute("chipfamily")),this.getAttribute("boardname")&&(this.boardName=this.getAttribute("boardname")),this.menuTitle="CircuitPython Installer for "+this.boardName}attributeChangedCallback(e,t,i){this[attrMap[e]]=i?this.updateBinaryUrl(i):null}updateBinaryUrl(e){return e=e&&e.replace("https://downloads.circuitpython.org/","https://adafruit-circuit-python.s3.amazonaws.com/")}flows={uf2FullProgram:{label:"Full CircuitPython [version] Install",steps:[this.stepWelcome,this.stepSerialConnect,this.stepConfirm,this.stepEraseAll,this.stepBootloader,this.stepSelectBootDrive,this.stepCopyUf2,this.stepSelectCpyDrive,this.stepCredentials,this.stepSuccess],isEnabled:async()=>this.hasNativeUsb()&&!!this.bootloaderUrl&&!!this.uf2FileUrl},binFullProgram:{label:"Full CircuitPython [version] Install",steps:[this.stepWelcome,this.stepSerialConnect,this.stepConfirm,this.stepEraseAll,this.stepFlashBin,this.stepSetupRepl,this.stepCredentials,this.stepSuccess],isEnabled:async()=>!this.hasNativeUsb()&&!!this.binFileUrl},uf2Only:{label:"Upgrade/Install CircuitPython [version] UF2 Only",steps:[this.stepWelcome,this.stepSelectBootDrive,this.stepCopyUf2,this.stepSelectCpyDrive,this.stepCredentials,this.stepSuccess],isEnabled:async()=>this.hasNativeUsb()&&!!this.uf2FileUrl},binOnly:{label:"Upgrade CircuitPython [version] Bin Only",steps:[this.stepWelcome,this.stepSerialConnect,this.stepConfirm,this.stepEraseAll,this.stepFlashBin,this.stepSuccess],isEnabled:async()=>!!this.binFileUrl},bootloaderOnly:{label:"Install Bootloader Only",steps:[this.stepWelcome,this.stepSerialConnect,this.stepConfirm,this.stepEraseAll,this.stepBootloader,this.stepSuccess],isEnabled:async()=>this.hasNativeUsb()&&!!this.bootloaderUrl},credentialsOnlyRepl:{label:"Update WiFi credentials",steps:[this.stepWelcome,this.stepSetupRepl,this.stepCredentials,this.stepSuccess],isEnabled:async()=>!this.hasNativeUsb()},credentialsOnlyDrive:{label:"Update WiFi credentials",steps:[this.stepWelcome,this.stepSelectCpyDrive,this.stepCredentials,this.stepSuccess],isEnabled:async()=>this.hasNativeUsb()}};cpDialogs={boardSelect:{closeable:!0,template:i=>html` +"use strict";import{html}from"https://cdn.jsdelivr.net/npm/lit-html/+esm";import{map}from"https://cdn.jsdelivr.net/npm/lit-html/directives/map/+esm";import*as toml from"https://cdn.jsdelivr.net/npm/iarna-toml-esm@3.0.5/+esm";import*as zip from"https://cdn.jsdelivr.net/npm/@zip.js/zip.js@2.6.65/+esm";import*as esptoolPackage from"https://cdn.jsdelivr.net/npm/esp-web-flasher@5.1.2/dist/web/index.js/+esm";import{REPL}from"https://cdn.jsdelivr.net/gh/adafruit/circuitpython-repl-js/repl.js";import{InstallButton,ESP_ROM_BAUD}from"./base_installer.min.js";const PREFERRED_BAUDRATE=921600,COPY_CHUNK_SIZE=65536,DEFAULT_RELEASE_LATEST=!1,BOARD_DEFS="https://adafruit-circuit-python.s3.amazonaws.com/esp32_boards.json",CSS_DIALOG_CLASS="cp-installer-dialog",FAMILY_TO_CHIP_MAP={esp32s2:esptoolPackage.CHIP_FAMILY_ESP32S2,esp32s3:esptoolPackage.CHIP_FAMILY_ESP32S3,esp32c3:esptoolPackage.CHIP_FAMILY_ESP32C3,esp32:esptoolPackage.CHIP_FAMILY_ESP32},attrMap={bootloader:"bootloaderUrl",uf2file:"uf2FileUrl",binfile:"binFileUrl"};class CPInstallButton extends InstallButton{constructor(){super(),this.releaseVersion="[version]",this.boardName="ESP32-based device",this.boardIds=null,this.selectedBoardId=null,this.bootloaderUrl=null,this.boardDefs=null,this.uf2FileUrl=null,this.binFileUrl=null,this.releaseVersion=0,this.chipFamily=null,this.dialogCssClass=CSS_DIALOG_CLASS,this.dialogs={...this.dialogs,...this.cpDialogs},this.bootDriveHandle=null,this.circuitpyDriveHandle=null,this._bootDriveName=null,this._serialPortName=null,this.replSerialDevice=null,this.repl=null,this.fileCache=[],this.reader=null,this.writer=null,this.tomlSettings=null,this.init()}static get observedAttributes(){return Object.keys(attrMap)}parseVersion(e){var t={},e=e.match(/(\d+)\.(\d+)\.(\d+)(?:-([a-z]+)\.(\d+))?/);return e&&4<=e.length&&(t.major=e[1],t.minor=e[2],t.patch=e[3],e[4]&&e[5]?(t.suffix=e[4],t.suffixVersion=e[5]):(t.suffix="stable",t.suffixVersion=0)),t}sortReleases(e){const r=["major","minor","patch","suffix","suffixVersion"];return e.sort((e,t)=>{var i,s=this.parseVersion(e.version),a=this.parseVersion(t.version);for(i of r){if(s[i]a[i])return 1}return 0}),e}async connectedCallback(){this.boardIds=this.getAttribute("boardid").split(","),1===this.boardIds.length&&(this.selectedBoardId=this.boardIds[0]),this.getAttribute("version")&&(this.releaseVersion=this.getAttribute("version"));var e=await fetch(BOARD_DEFS);this.boardDefs=await e.json(),super.connectedCallback()}async loadBoard(e){let t=null;if(Object.keys(this.boardDefs).includes(e)){e=this.boardDefs[e],e=(this.chipFamily=e.chipfamily,e.name&&(this.boardName=e.name),e.bootloader&&(this.bootloaderUrl=this.updateBinaryUrl(e.bootloader)),this.sortReleases(e.releases));if(this.releaseVersion)for(var i of e)if(i.version==this.releaseVersion){t=i;break}t||(t=DEFAULT_RELEASE_LATEST?e[e.length-1]:e[0],this.releaseVersion=t.version),t.uf2file&&(this.uf2FileUrl=this.updateBinaryUrl(t.uf2file)),t.binfile&&(this.binFileUrl=this.updateBinaryUrl(t.binfile))}this.getAttribute("chipfamily")&&(this.chipFamily=this.getAttribute("chipfamily")),this.getAttribute("boardname")&&(this.boardName=this.getAttribute("boardname")),this.menuTitle="CircuitPython Installer for "+this.boardName}attributeChangedCallback(e,t,i){this[attrMap[e]]=i?this.updateBinaryUrl(i):null}updateBinaryUrl(e){return e=e&&e.replace("https://downloads.circuitpython.org/","https://adafruit-circuit-python.s3.amazonaws.com/")}flows={uf2FullProgram:{label:"Full CircuitPython [version] Install",steps:[this.stepWelcome,this.stepSerialConnect,this.stepConfirm,this.stepEraseAll,this.stepBootloader,this.stepSelectBootDrive,this.stepCopyUf2,this.stepSelectCpyDrive,this.stepCredentials,this.stepSuccess],isEnabled:async()=>this.hasNativeUsb()&&!!this.bootloaderUrl&&!!this.uf2FileUrl},binFullProgram:{label:"Full CircuitPython [version] Install",steps:[this.stepWelcome,this.stepSerialConnect,this.stepConfirm,this.stepEraseAll,this.stepFlashBin,this.stepSetupRepl,this.stepCredentials,this.stepSuccess],isEnabled:async()=>!this.hasNativeUsb()&&!!this.binFileUrl},uf2Only:{label:"Upgrade/Install CircuitPython [version] UF2 Only",steps:[this.stepWelcome,this.stepSelectBootDrive,this.stepCopyUf2,this.stepSelectCpyDrive,this.stepCredentials,this.stepSuccess],isEnabled:async()=>this.hasNativeUsb()&&!!this.uf2FileUrl},binOnly:{label:"Upgrade CircuitPython [version] Bin Only",steps:[this.stepWelcome,this.stepSerialConnect,this.stepConfirm,this.stepEraseAll,this.stepFlashBin,this.stepSuccess],isEnabled:async()=>!!this.binFileUrl},bootloaderOnly:{label:"Install Bootloader Only",steps:[this.stepWelcome,this.stepSerialConnect,this.stepConfirm,this.stepEraseAll,this.stepBootloader,this.stepSuccess],isEnabled:async()=>this.hasNativeUsb()&&!!this.bootloaderUrl},credentialsOnlyRepl:{label:"Update WiFi credentials",steps:[this.stepWelcome,this.stepSetupRepl,this.stepCredentials,this.stepSuccess],isEnabled:async()=>!this.hasNativeUsb()},credentialsOnlyDrive:{label:"Update WiFi credentials",steps:[this.stepWelcome,this.stepSelectCpyDrive,this.stepCredentials,this.stepSuccess],isEnabled:async()=>this.hasNativeUsb()}};cpDialogs={boardSelect:{closeable:!0,template:i=>html`

    There are multiple boards are available. Select the board you have: