loading: add 'noCache' option for <replay-web-page> embeds, ensure option is passed to wabac.js loader

dependencies: update to wabac.js 2.12.3 to fully support noCache for WARCs
bump to 1.6.4
This commit is contained in:
Ilya Kreymer
2022-08-06 17:56:16 -07:00
parent 2a0aba02bb
commit 6c6d66f03a
10 changed files with 56 additions and 31 deletions
+8
View File
@@ -386,6 +386,14 @@ class ReplayWebApp extends LitElement
this.loadInfo.noWebWorker = true;
}
if (this.pageParams.get("noCache") === "1") {
if (!this.loadInfo) {
this.loadInfo = {};
}
this.loadInfo.noCache = true;
}
if (IS_APP && this.sourceUrl.startsWith("file://")) {
// eslint-disable-next-line no-undef
const url = new URL(__APP_FILE_SERVE_PREFIX__);
+6
View File
@@ -35,6 +35,7 @@ class Embed extends LitElement
this.reloadCount = 0;
this.noSandbox = false;
this.noWebWorker = false;
this.noCache = false;
this.logo = rwpLogo;
}
@@ -70,6 +71,7 @@ class Embed extends LitElement
deepLink: { type: Boolean },
noSandbox: { type: Boolean },
noWebWorker: { type: Boolean },
noCache: { type: Boolean },
errorMessage: { type: String }
};
@@ -178,6 +180,10 @@ class Embed extends LitElement
params.noWebWorker = "1";
}
if (this.noCache) {
params.noCache = "1";
}
this.paramString = new URLSearchParams(params).toString();
this.hashString = new URLSearchParams({
+18 -12
View File
@@ -185,27 +185,33 @@ You can select a file to upload from the main page by clicking the 'Choose File.
source = {sourceUrl};
}
source.newFullImport = (this.loadInfo && this.loadInfo.newFullImport);
this.state = "started";
let type = undefined;
let extraConfig = undefined;
if (this.loadInfo) {
source.newFullImport = this.loadInfo.newFullImport;
source.noCache = this.loadInfo.noCache;
if (this.loadInfo.extraConfig) {
extraConfig = this.loadInfo.extraConfig;
}
// todo: too special case?
if (sourceUrl.startsWith("proxy:") && extraConfig && extraConfig.recording) {
type = "recordingproxy";
}
}
const msg = {
msg_type: "addColl",
name: this.coll,
extraConfig,
type,
skipExisting: true,
file: source
};
if (this.loadInfo) {
if (this.loadInfo.extraConfig) {
msg.extraConfig = this.loadInfo.extraConfig;
}
// todo: too special case?
if (sourceUrl.startsWith("proxy:") && msg.extraConfig && msg.extraConfig.recording) {
msg.type = "recordingproxy";
}
}
if (!navigator.serviceWorker.controller) {
await new Promise((resolve) => {
navigator.serviceWorker.addEventListener("controllerchange", () => resolve());