Skip to content

Commit 0a56b41

Browse files
committed
Merge branch 'main' into frontend-update-branding
2 parents 338682c + 692dece commit 0a56b41

File tree

9 files changed

+129
-46
lines changed

9 files changed

+129
-46
lines changed

build/icon.icns

-60.8 KB
Binary file not shown.

build/icon.ico

-41.8 KB
Binary file not shown.

build/icon.png

100755100644
-20.2 KB
Loading

package.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@webrecorder/archivewebpage",
33
"productName": "ArchiveWeb.page",
4-
"version": "0.12.3",
4+
"version": "0.12.8",
55
"main": "index.js",
66
"description": "Create Web Archives directly in your browser",
77
"repository": "https://github.com/webrecorder/archiveweb.page",
@@ -11,9 +11,9 @@
1111
"@fortawesome/fontawesome-free": "^5.13.0",
1212
"@ipld/car": "^5.3.1",
1313
"@webrecorder/awp-sw": "^0.4.4",
14-
"@webrecorder/wabac": "^2.19.2",
14+
"@webrecorder/wabac": "^2.19.9",
1515
"auto-js-ipfs": "^2.3.0",
16-
"browsertrix-behaviors": "^0.6.0",
16+
"browsertrix-behaviors": "^0.6.4",
1717
"btoa": "^1.2.1",
1818
"bulma": "^0.9.3",
1919
"client-zip": "^2.2.2",
@@ -26,7 +26,11 @@
2626
"stream-browserify": "^3.0.0",
2727
"unused-filename": "^4.0.1",
2828
"uuid": "^8.3.2",
29-
"warcio": "^2.2.1"
29+
"warcio": "^2.3.1"
30+
},
31+
"resolutions": {
32+
"@webrecorder/wabac": "^2.19.9",
33+
"replaywebpage": "1.8.17"
3034
},
3135
"devDependencies": {
3236
"copy-webpack-plugin": "^9.0.1",

src/electron/electron-recorder-app.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,25 @@ class ElectronRecorderApp extends ElectronReplayApp
3939
this.createRecordWindow(opts);
4040
});
4141

42+
sesh.webRequest.onHeadersReceived((details, callback) => {
43+
const { url, responseHeaders, method } = details;
44+
45+
// Allow access to Browsertrix APIs
46+
if (url.indexOf("/api") >= 0) {
47+
let { statusLine } = details;
48+
49+
if (method === "OPTIONS") {
50+
statusLine = "HTTP/1.1 200 OK";
51+
responseHeaders["Access-Control-Allow-Headers"] = "Authorization, Content-Type";
52+
responseHeaders["Access-Control-Allow-Methods"] = "GET, PUT, POST";
53+
}
54+
responseHeaders["Access-Control-Allow-Origin"] = "*";
55+
callback({responseHeaders, statusLine});
56+
} else {
57+
callback({responseHeaders});
58+
}
59+
});
60+
4261
sesh.on("will-download", (event, item, webContents) => {
4362
const origFilename = item.getFilename();
4463

src/recorder.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { RequestResponseInfo } from "./requestresponseinfo.js";
22

3-
import { baseRules as baseDSRules, htmlRules as htmlDSRules } from "@webrecorder/wabac/src/rewrite";
3+
import { getCustomRewriter } from "@webrecorder/wabac/src/rewrite";
44
import { rewriteDASH, rewriteHLS } from "@webrecorder/wabac/src/rewrite/rewriteVideo";
55
import { Buffer } from "buffer";
66

@@ -1009,10 +1009,9 @@ class Recorder {
10091009
case "text/javascript":
10101010
case "application/javascript":
10111011
case "application/x-javascript": {
1012-
const rules = ct === "text/html" ? htmlDSRules : baseDSRules;
1013-
const rw = rules.getRewriter(url);
1012+
const rw = getCustomRewriter(url, ct === "text/html");
10141013

1015-
if (rw !== rules.defaultRewriter) {
1014+
if (rw) {
10161015
string = payload.toString();
10171016
newString = rw.rewrite(string, {live: true, save: extraOpts});
10181017
}
@@ -1108,6 +1107,11 @@ class Recorder {
11081107
try {
11091108
const data = reqresp.toDBRecord(reqresp.payload, this.pageInfo);
11101109

1110+
// top-level URL is a non-GET request
1111+
if (data && data.requestUrl && data.requestUrl === this.pageInfo.url && !sessions.length) {
1112+
this.pageInfo.url = data.url;
1113+
}
1114+
11111115
// top-level page resource
11121116
if (data && !sessions.length && reqresp.url === this.pageInfo.url) {
11131117
this.pageInfo.ts = reqresp.ts;

src/requestresponseinfo.js

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"use strict";
22

3+
import { getCustomRewriter } from "@webrecorder/wabac/src/rewrite";
34
import { getStatusText } from "@webrecorder/wabac/src/utils";
45

56
import { postToGetUrl } from "warcio";
@@ -191,20 +192,23 @@ class RequestResponseInfo
191192
postData: this.postData || "",
192193
};
193194
if (postToGetUrl(convData)) {
194-
//this.requestBody = convData.requestBody;
195-
// truncate to avoid extra long URLs
196-
try {
197-
const url = new URL(convData.url);
198-
for (const [key, value] of url.searchParams.entries()) {
199-
if (value && value.length > MAX_ARG_LEN) {
200-
url.searchParams.set(key, value.slice(0, MAX_ARG_LEN));
195+
// if URL for custom rewriting, keep as is, otherwise truncate to avoid extra long URLs
196+
if (getCustomRewriter(this.url, mime === "text/html")) {
197+
this.url = convData.url;
198+
} else {
199+
try {
200+
const url = new URL(convData.url);
201+
for (const [key, value] of url.searchParams.entries()) {
202+
if (value && value.length > MAX_ARG_LEN) {
203+
url.searchParams.set(key, value.slice(0, MAX_ARG_LEN));
204+
}
201205
}
206+
convData.url = url.href;
207+
} catch (e) {
208+
//ignore
202209
}
203-
convData.url = url.href;
204-
} catch (e) {
205-
//ignore
210+
this.url = convData.url.slice(0, MAX_URL_LENGTH);
206211
}
207-
this.url = convData.url.slice(0, MAX_URL_LENGTH);
208212
}
209213
}
210214

src/ui/app.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { html, css, wrapCss, IS_APP, apiPrefix } from "replaywebpage/src/misc";
33
// replaywebpage imports
44
import { ReplayWebApp, Embed, Loader } from "replaywebpage";
55

6+
import { SWManager } from "replaywebpage/src/swmanager";
7+
68
import fasHelp from "@fortawesome/fontawesome-free/svgs/solid/question-circle.svg";
79
import fasPlus from "@fortawesome/fontawesome-free/svgs/solid/plus.svg";
810

@@ -142,15 +144,27 @@ class ArchiveWebApp extends ReplayWebApp
142144
}
143145
}
144146

145-
async checkDoubleSW() {
147+
async checkSW() {
146148
const regs = await navigator.serviceWorker.getRegistrations();
149+
// Remove double SW
147150
for (const reg of regs) {
148151
if (reg.active && reg.active.scriptURL.endsWith("/replay/sw.js")) {
149152
if (await reg.unregister()) {
150153
self.location.reload();
151154
}
152155
}
153156
}
157+
158+
// For App: If no SW, register here
159+
if (IS_APP && !regs.length) {
160+
this.swmanager = new SWManager({ name: this.swName, appName: this.appName });
161+
this.swmanager
162+
.register()
163+
.catch(
164+
() =>
165+
(this.swErrorMsg = this.swmanager.renderErrorReport(this.mainLogo)),
166+
);
167+
}
154168
}
155169

156170
firstUpdated() {
@@ -160,7 +174,7 @@ class ArchiveWebApp extends ReplayWebApp
160174
return super.firstUpdated();
161175
}
162176

163-
this.checkDoubleSW();
177+
this.checkSW();
164178

165179
this.initRoute();
166180

yarn.lock

Lines changed: 63 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -278,9 +278,9 @@
278278
integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==
279279

280280
"@lit-labs/ssr-dom-shim@^1.0.0", "@lit-labs/ssr-dom-shim@^1.1.0":
281-
version "1.2.0"
282-
resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz#353ce4a76c83fadec272ea5674ede767650762fd"
283-
integrity sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==
281+
version "1.2.1"
282+
resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.1.tgz#2f3a8f1d688935c704dbc89132394a41029acbb8"
283+
integrity sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==
284284

285285
"@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.6.0":
286286
version "1.6.3"
@@ -737,6 +737,11 @@
737737
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901"
738738
integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==
739739

740+
"@types/pako@^1.0.7":
741+
version "1.0.7"
742+
resolved "https://registry.yarnpkg.com/@types/pako/-/pako-1.0.7.tgz#aa0e4af9855d81153a29ff84cc44cce25298eda9"
743+
integrity sha512-YBtzT2ztNF6R/9+UXj2wTGFnC9NklAnASt3sC0h2m1bbH7G6FyBIkt4AN8ThZpNfxUo1b2iMVO0UawiJymEt8A==
744+
740745
"@types/plist@^3.0.1":
741746
version "3.0.5"
742747
resolved "https://registry.yarnpkg.com/@types/plist/-/plist-3.0.5.tgz#9a0c49c0f9886c8c8696a7904dd703f6284036e0"
@@ -803,6 +808,13 @@
803808
dependencies:
804809
"@types/node" "*"
805810

811+
"@types/stream-buffers@^3.0.7":
812+
version "3.0.7"
813+
resolved "https://registry.yarnpkg.com/@types/stream-buffers/-/stream-buffers-3.0.7.tgz#0b719fa1bd2ca2cc0908205a440e5e569e1aa21e"
814+
integrity sha512-azOCy05sXVXrO+qklf0c/B07H/oHaIuDDAiHPVwlk3A9Ek+ksHyTeMajLZl3r76FxpPpxem//4Te61G1iW3Giw==
815+
dependencies:
816+
"@types/node" "*"
817+
806818
"@types/trusted-types@^2.0.2":
807819
version "2.0.7"
808820
resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11"
@@ -984,21 +996,21 @@
984996
uuid "^9.0.0"
985997
warcio "^2.2.1"
986998

987-
"@webrecorder/wabac@^2.17.3", "@webrecorder/wabac@^2.18.1", "@webrecorder/wabac@^2.19.2":
988-
version "2.19.2"
989-
resolved "https://registry.yarnpkg.com/@webrecorder/wabac/-/wabac-2.19.2.tgz#2591980e7e14275d6b885f850ecff2b82e898669"
990-
integrity sha512-rj048+Ri0Q1Q7MSPu5w/y7utR5MgCxaJaUtfy257GSZbaHs0RBsKW8RJMunEZPUL5ANC/THBdUMEV7dvlJBC6A==
999+
"@webrecorder/wabac@^2.17.3", "@webrecorder/wabac@^2.18.1", "@webrecorder/wabac@^2.19.9":
1000+
version "2.19.9"
1001+
resolved "https://registry.yarnpkg.com/@webrecorder/wabac/-/wabac-2.19.9.tgz#21d357077bc2a85419e7a6002c81a4bc4fec2514"
1002+
integrity sha512-lyvbKVrdUZMUGxwKg5ZFQnyjGUSqZSGOF3NFG9rXLA+Ni0YcQjZCMexGSmqCwY+BksyrVJISCMs3xQ2WQAekgw==
9911003
dependencies:
9921004
"@peculiar/asn1-ecc" "^2.3.4"
9931005
"@peculiar/asn1-schema" "^2.3.3"
9941006
"@peculiar/x509" "^1.9.2"
995-
"@webrecorder/wombat" "^3.7.10"
1007+
"@webrecorder/wombat" "^3.8.2"
9961008
acorn "^8.10.0"
9971009
auto-js-ipfs "^2.1.1"
9981010
base64-js "^1.5.1"
9991011
brotli "^1.3.3"
10001012
buffer "^6.0.3"
1001-
fast-xml-parser "^4.2.5"
1013+
fast-xml-parser "^4.4.1"
10021014
hash-wasm "^4.9.0"
10031015
http-link-header "^1.1.3"
10041016
http-status-codes "^2.1.4"
@@ -1011,14 +1023,14 @@
10111023
path-parser "^6.1.0"
10121024
process "^0.11.10"
10131025
stream-browserify "^3.0.0"
1014-
warcio "^2.2.1"
1026+
warcio "^2.3.0"
10151027

1016-
"@webrecorder/wombat@^3.7.10":
1017-
version "3.7.10"
1018-
resolved "https://registry.yarnpkg.com/@webrecorder/wombat/-/wombat-3.7.10.tgz#c6d3f69b52f170a3166b4124b94b301d47064cde"
1019-
integrity sha512-UUXQAbDk0UfTGng7O2gbF3dzJDklMD1SqmLkGI4CxqqlUzvqvIxNrmkyI5cPPha9fOlDybtsUqQ5JFtXzhVE5w==
1028+
"@webrecorder/wombat@^3.8.2":
1029+
version "3.8.2"
1030+
resolved "https://registry.yarnpkg.com/@webrecorder/wombat/-/wombat-3.8.2.tgz#e46e18719834d633175eec52ce753a4dc4e48e27"
1031+
integrity sha512-uUZr9V4UYpVOpM64Tm27ND/hMjDbT37+/qyNaNV6loqDuVzBVQh5w7SfTEy0Bbjj1MYyNZP244mOtWtotTpUEA==
10201032
dependencies:
1021-
warcio "^2.2.0"
1033+
warcio "^2.3.1"
10221034

10231035
"@xmldom/xmldom@^0.8.8":
10241036
version "0.8.10"
@@ -1415,10 +1427,12 @@ browserslist@^4.21.10:
14151427
node-releases "^2.0.14"
14161428
update-browserslist-db "^1.0.13"
14171429

1418-
browsertrix-behaviors@^0.6.0:
1419-
version "0.6.0"
1420-
resolved "https://registry.yarnpkg.com/browsertrix-behaviors/-/browsertrix-behaviors-0.6.0.tgz#e16345e4b414b18e6441548d517d01b4316f744e"
1421-
integrity sha512-BdfEPHmDjhEIFrn80UKnwGT6HRgnmq2shNybu8BEfAHJQsqZdvP/VVKWvNGnWML1jjUKiwtvtkdFhtHedFQkzA==
1430+
browsertrix-behaviors@^0.6.4:
1431+
version "0.6.4"
1432+
resolved "https://registry.yarnpkg.com/browsertrix-behaviors/-/browsertrix-behaviors-0.6.4.tgz#33fe9a433108f2faac3a03af91aff940433e5b87"
1433+
integrity sha512-xaiO/VqqeSd5FnAkIKQINxC/q3Med33Lqw3LGxD4NBtkcMSh1Anz/+830QHVlQbp08nIPUXYV96hDrx1Uv0PmQ==
1434+
dependencies:
1435+
query-selector-shadow-dom "^1.0.1"
14221436

14231437
btoa@^1.2.1:
14241438
version "1.2.1"
@@ -2537,10 +2551,10 @@ fast-uri@^2.3.0:
25372551
resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-2.3.0.tgz#bdae493942483d299e7285dcb4627767d42e2793"
25382552
integrity sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw==
25392553

2540-
fast-xml-parser@^4.2.5:
2541-
version "4.4.0"
2542-
resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz#341cc98de71e9ba9e651a67f41f1752d1441a501"
2543-
integrity sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==
2554+
fast-xml-parser@^4.4.1:
2555+
version "4.4.1"
2556+
resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz#86dbf3f18edf8739326447bcaac31b4ae7f6514f"
2557+
integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==
25442558
dependencies:
25452559
strnum "^1.0.5"
25462560

@@ -4611,6 +4625,11 @@ qs@6.11.0:
46114625
dependencies:
46124626
side-channel "^1.0.4"
46134627

4628+
query-selector-shadow-dom@^1.0.1:
4629+
version "1.0.1"
4630+
resolved "https://registry.yarnpkg.com/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz#1c7b0058eff4881ac44f45d8f84ede32e9a2f349"
4631+
integrity sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==
4632+
46144633
queue-microtask@^1.2.2:
46154634
version "1.2.3"
46164635
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
@@ -5610,11 +5629,16 @@ tslib@^1.10.0, tslib@^1.9.3:
56105629
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
56115630
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
56125631

5613-
tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.6.1, tslib@^2.6.2:
5632+
tslib@^2.0.0, tslib@^2.4.0, tslib@^2.6.1, tslib@^2.6.2:
56145633
version "2.6.2"
56155634
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
56165635
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
56175636

5637+
tslib@^2.1.0:
5638+
version "2.7.0"
5639+
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
5640+
integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
5641+
56185642
tsyringe@^4.8.0:
56195643
version "4.8.0"
56205644
resolved "https://registry.yarnpkg.com/tsyringe/-/tsyringe-4.8.0.tgz#d599651b36793ba872870fee4f845bd484a5cac1"
@@ -5819,7 +5843,7 @@ verror@^1.10.0:
58195843
core-util-is "1.0.2"
58205844
extsprintf "^1.2.0"
58215845

5822-
warcio@^2.2.0, warcio@^2.2.1:
5846+
warcio@^2.2.1:
58235847
version "2.2.1"
58245848
resolved "https://registry.yarnpkg.com/warcio/-/warcio-2.2.1.tgz#3619728fde716291c9b364744c276362a94bacec"
58255849
integrity sha512-KPLoz3aFtdTjexG+QQaubMyuLiNANzvcadGMyNKdpcmhl0k6lBHQQVpxZw3Hx9+4pbyqDXyiF4cr/h2tS8kvcw==
@@ -5831,6 +5855,20 @@ warcio@^2.2.0, warcio@^2.2.1:
58315855
uuid-random "^1.3.2"
58325856
yargs "^17.6.2"
58335857

5858+
warcio@^2.3.0, warcio@^2.3.1:
5859+
version "2.3.1"
5860+
resolved "https://registry.yarnpkg.com/warcio/-/warcio-2.3.1.tgz#8ac9de897de1a556161168f2a3938b60929908ca"
5861+
integrity sha512-PjcWqzXfs6HdWfHi1V/i8MoMmV5M0Csg3rOa2mqCJ1dmCJXswVfQ0VXbEVumwavNIW2oFFj6LJoCHHeL4Ls/zw==
5862+
dependencies:
5863+
"@types/pako" "^1.0.7"
5864+
"@types/stream-buffers" "^3.0.7"
5865+
base32-encode "^2.0.0"
5866+
hash-wasm "^4.9.0"
5867+
pako "^1.0.11"
5868+
tempy "^3.1.0"
5869+
uuid-random "^1.3.2"
5870+
yargs "^17.6.2"
5871+
58345872
watchpack@^2.4.1:
58355873
version "2.4.1"
58365874
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff"

0 commit comments

Comments
 (0)