Skip to content

Commit

Permalink
v9.6.0 (#740)
Browse files Browse the repository at this point in the history
* Go 1.18 and custom elements (#739)

* rename html generated files

* bump required go version to 1.18

* update dependencies

* rename attributes() to getAttributes()

* rename Mounted() to IsMounted()

* bump go version in ci

* rename dispatcher() to getDispatcher()

* rename children() to getChildren

* rename context() to getContext

* rename parent() to getParent()

* Create html.go

* createElement now also takes namespace

* html element mount

* move html attribute logic

* change replace logi

* add js value delete and equal

* html element update

* attributes unit tests

* html element implementation complete

* event handler unit tests

* fix wasm test

* fix unit tests

* fix test 2

* Update state_test.go

* benchmark element

* generate html

* Revert "generate html"

This reverts commit bcb4414.

* rename element.selfClosing

* rename element.parentElem

* rename elem.disp

* rename elem.jsvalue

* use attributes in element

* elem uses eventHandlers

* change getAttributes and getEventHandlers return values

* refactor elem mount/dismount

* refactor element update

* refactor element remove child at

* cleanup element

* move element.go to html.go

* add on method to html elements

* fix gen typo

* replace interface{} by any

* update deps

* customizable element contructor and test

* bump go version doc to 1.18

* cleanup

* cleanup

* optimize html convert

* rename customizable by elem

* Revert "rename customizable by elem"

This reverts commit 613e0b8.

* Revert "Revert "rename customizable by elem""

This reverts commit da43f0d.

* Revert "optimize html convert"

This reverts commit 77cb2b3.

* Revert "Revert "optimize html convert""

This reverts commit ec0bfc4.

* better html write optimization

* rename SelfClosingElem to ElemSelfClosing

* generate docs

* Update attribute.go

* Update app.wasm

* revert Mounted name change

* generate doc

* fix format typo

* Update attribute.go

* optimize filter ui (#736)

* cleanup

* cleanup code

* Update html.go

* Update component.go

* Fix for attr names "accept-charset" and "http-equiv" (#748)

* Fixing invalid double set charset meta headers (#750)

* Refactor component events (#751)

* add onLifecyleEvent to UI interface

* refactor app update

* refactor app install change

* refactor resize

* refactor nav

* rename onLifecycleEvent to onComponentEvent

* Refactor engine (#752)

* enginex dispatcher implementation

* fix tests

* engineX client/server dispatcher

* enginex cleanup

* frame backoff

* init and start once

* use engine x

* rename enginex to engine + unit tests

* try preventComponentUpdate

* Update component.go

* add remove component update

* Revert "add remove component update"

This reverts commit 185f470.

* context prevent update

* allow prevent update override

* limit frame backoff

* Wasm download progress (#754)

* display download progress

* inititalize progress

* Update shell.go

* Revert "Update shell.go"

This reverts commit 99625f5.

* Update component.go

* fix unit test

* Update component.go

* V9.6 fixes (#755)

* call on component update after root update

* no emit when handling js event

* test ordering updates

* reverse update order

* avoid updating multiple time a component

* no panic when mounting mounted element

* remove ordering

* simplify

* restore mount guard

* Update component.go

* Update engine.go

* Update engine.go

* Update component.go

* Update component.go

* try fix

* Update engine.go

* try update optimization

* optimize update

* use emit back in js event

* cleanlup

* Improve loader (#756)

* Customize loading label

* Allow to custom http header to guess wasm size

* Update http.go

* fix loading header

* update loading

* Customizable service worker (#757)

* export appworkerjs template

* allow http handler to change app worker template

* fix wasm tests

* Update static-resources.md

Co-authored-by: Hans Raaf <hara@oderwat.de>
  • Loading branch information
maxence-charriere and oderwat committed Aug 22, 2022
1 parent 2c1f1d9 commit 11f7e24
Show file tree
Hide file tree
Showing 82 changed files with 70,325 additions and 66,568 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/build.yml
Expand Up @@ -10,7 +10,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v2
with:
go-version: "1.17"
go-version: "1.18"
- name: Checkout Code
uses: actions/checkout@v2
- name: Vet
Expand All @@ -23,7 +23,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v2
with:
go-version: "1.17"
go-version: "1.18"
- name: Checkout Code
uses: actions/checkout@v2
- name: Run Unit Tests
Expand All @@ -36,7 +36,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v2
with:
go-version: "1.17"
go-version: "1.18"
- name: Checkout Code
uses: actions/checkout@v2
- name: Install WASM Browser Test
Expand Down
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -29,7 +29,7 @@ An app created with go-app can out of the box **run in its own window**, **suppo

**go-app** requirements:

- [Go 1.17](https://golang.org/doc/go1.17) or newer
- [Go 1.18](https://golang.org/doc/go1.17) or newer
- [Go module](https://github.com/golang/go/wiki/Modules)

```sh
Expand Down
217 changes: 108 additions & 109 deletions docs/actions.html

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions docs/app-worker.js
@@ -1,8 +1,8 @@
const cacheName = "app-" + "5b5659f9412858d9a889d51820887845d1eff4de";
const resourcesToCache = ["/app.css","/app.js","/manifest.webmanifest","https://storage.googleapis.com/murlok-github/icon-192.png","/wasm_exec.js","/","/web/css/prism.css","/web/css/docs.css","https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500\u0026display=swap","/web/documents/updates.md","/web/app.wasm","https://storage.googleapis.com/murlok-github/icon-512.png","/web/js/prism.js","/web/documents/what-is-go-app.md","/web/documents/home.md","/web/documents/home-next.md"];
const cacheName = "app-" + "99744976a78f1c0e6202f9856d65e47589cb83ca";
const resourcesToCache = ["/","/app.css","/app.js","/manifest.webmanifest","/wasm_exec.js","/web/app.wasm","/web/css/docs.css","/web/css/prism.css","/web/documents/home-next.md","/web/documents/home.md","/web/documents/updates.md","/web/documents/what-is-go-app.md","/web/js/prism.js","https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500\u0026display=swap","https://storage.googleapis.com/murlok-github/icon-192.png","https://storage.googleapis.com/murlok-github/icon-512.png"];

self.addEventListener("install", (event) => {
console.log("installing app worker 5b5659f9412858d9a889d51820887845d1eff4de");
console.log("installing app worker 99744976a78f1c0e6202f9856d65e47589cb83ca");

event.waitUntil(
caches
Expand All @@ -28,7 +28,7 @@ self.addEventListener("activate", (event) => {
);
})
);
console.log("app worker 5b5659f9412858d9a889d51820887845d1eff4de is activated");
console.log("app worker 99744976a78f1c0e6202f9856d65e47589cb83ca is activated");
});

self.addEventListener("fetch", (event) => {
Expand Down
71 changes: 65 additions & 6 deletions docs/app.js
Expand Up @@ -5,7 +5,8 @@ var goappNav = function () {};
var goappOnUpdate = function () {};
var goappOnAppInstallChange = function () {};

const goappEnv = {"GOAPP_INTERNAL_URLS":"null","GOAPP_ROOT_PREFIX":"","GOAPP_STATIC_RESOURCES_URL":"","GOAPP_VERSION":"5b5659f9412858d9a889d51820887845d1eff4de"};
const goappEnv = {"GOAPP_INTERNAL_URLS":"null","GOAPP_ROOT_PREFIX":"","GOAPP_STATIC_RESOURCES_URL":"","GOAPP_VERSION":"99744976a78f1c0e6202f9856d65e47589cb83ca"};
const goappWasmContentLengthHeader = "";

let goappServiceWorkerRegistration;
let deferredPrompt = null;
Expand Down Expand Up @@ -202,16 +203,22 @@ async function goappInitWebAssembly() {
}

try {
const go = new Go();
const loaderIcon = document.getElementById("app-wasm-loader-icon");
loaderIcon.className = "goapp-logo";

const loaderLabel = document.getElementById("app-wasm-loader-label");
const loadingLabel = loaderLabel.innerText;
const showProgress = (progress) => {
loaderLabel.innerText = loadingLabel.replace("{progress}", progress);
};
showProgress(0);

const go = new Go();
const wasm = await instantiateStreaming(
fetch("/web/app.wasm"),
fetchWithProgress("/web/app.wasm", showProgress),
go.importObject
);

const loaderIcon = document.getElementById("app-wasm-loader-icon");
loaderIcon.className = "goapp-logo";

go.run(wasm.instance);
} catch (err) {
const loaderIcon = document.getElementById("app-wasm-loader-icon");
Expand All @@ -229,3 +236,55 @@ function goappCanLoadWebAssembly() {
navigator.userAgent
);
}

async function fetchWithProgress(url, progess) {
const response = await fetch(url);

let contentLength;
try {
contentLength = response.headers.get(goappWasmContentLengthHeader);
} catch {}
if (!goappWasmContentLengthHeader || !contentLength) {
contentLength = response.headers.get("Content-Length");
}

const total = parseInt(contentLength, 10);
let loaded = 0;

const progressHandler = function (loaded, total) {
progess(Math.round((loaded * 100) / total));
};

var res = new Response(
new ReadableStream(
{
async start(controller) {
var reader = response.body.getReader();
for (;;) {
var { done, value } = await reader.read();

if (done) {
progressHandler(total, total);
break;
}

loaded += value.byteLength;
progressHandler(loaded, total);
controller.enqueue(value);
}
controller.close();
},
},
{
status: response.status,
statusText: response.statusText,
}
)
);

for (var pair of response.headers.entries()) {
res.headers.set(pair[0], pair[1]);
}

return res;
}

0 comments on commit 11f7e24

Please sign in to comment.