Skip to content

Commit 592ccc5

Browse files
ikreymeremma-sg
andauthored
Add 'utils' module export (#410)
Export core utils and assets used by RWP in /utils. Add serviceWorkerActivated() utility promise. --------- Co-authored-by: emma <[email protected]>
1 parent 2ef9598 commit 592ccc5

File tree

9 files changed

+54
-16
lines changed

9 files changed

+54
-16
lines changed

Diff for: CHANGES.md

+8
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,24 @@
22

33
## CHANGES
44

5+
v2.3.4
6+
7+
- API: Add utils module for basic utility function exports
8+
- Loading: Update to wabac.js (2.22.2), includes fixes to MultiWACZ loading
9+
510
v2.3.3
11+
612
- UI: Support custom 'downloadUrl' when loading from Multi-WACZ JSON source - don't show download if unset
713
- UI: Don't show 'Archive Info' menu option for Multi-WACZ JSON source in embed mode
814
- UI: Use localized data format for current language settings
915
- Loading: Use negative offset range requests (via wabac.js 2.21.3)
1016

1117
v2.3.2
18+
1219
- Loading: fix dynamic page lookup for URLs with query strings (via wabac.js 2.21.2)
1320

1421
v2.3.1
22+
1523
- Loading: additional loading optimizations, bump wabac.js to 2.21.1
1624

1725
v2.3.0

Diff for: package.json

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "replaywebpage",
33
"productName": "ReplayWeb.page",
4-
"version": "2.3.3",
4+
"version": "2.3.4",
55
"description": "Serverless Web Archive Replay",
66
"repository": "https://github.com/webrecorder/replayweb.page",
77
"homepage": "https://replayweb.page/",
@@ -13,12 +13,16 @@
1313
"default": "./dist/index.js"
1414
},
1515
"./src/electron-*": "./src/electron-*.ts",
16-
"./index.html": "./index.html"
16+
"./index.html": "./index.html",
17+
"./utils": {
18+
"types": "./dist/types/utils/index.d.ts",
19+
"default": "./dist/utils.js"
20+
}
1721
},
1822
"dependencies": {
1923
"@fortawesome/fontawesome-free": "^5.15.4",
2024
"@shoelace-style/shoelace": "~2.15.1",
21-
"@webrecorder/wabac": "^2.21.3",
25+
"@webrecorder/wabac": "^2.22.2",
2226
"bulma": "^0.9.3",
2327
"electron-log": "^4.4.1",
2428
"electron-updater": "^6.3.9",

Diff for: src/index.ts

+11-1
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,15 @@ import { Pages } from "./pages";
1010
import { PageEntry } from "./pageentry";
1111
import { Replay } from "./replay";
1212
import { Sorter } from "./sorter";
13-
import { SWManager } from "./swmanager";
13+
import { SWManager, serviceWorkerActivated } from "./swmanager";
1414
import { URLResources } from "./url-resources";
1515
import { Embed } from "./embed";
1616
import "./coll-description";
1717
import "./shoelace";
1818

19+
import rwpIcon from "~assets/icons/replaywebpage.svg";
20+
import rwpLogoAnimated from "~assets/brand/replaywebpage-icon-color-animated.svg";
21+
1922
export {
2023
ReplayWebApp,
2124
Chooser,
@@ -48,10 +51,17 @@ export {
4851
Embed,
4952
Embed as ReplayWebPage,
5053
SWManager,
54+
serviceWorkerActivated,
55+
rwpIcon,
56+
rwpLogoAnimated,
5157
};
5258

5359
export type { ItemType, URLResource } from "./types";
5460

5561
export type { EmbedReplayEvent } from "./item";
5662

5763
export * from "./misc";
64+
65+
export * from "./pageutils";
66+
67+
export * from "./utils/dateTimeFormatter";

Diff for: src/loader.ts

+2-8
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { parseURLSchemeHostPath } from "./pageutils";
99
import { property } from "lit/decorators.js";
1010
import type { LoadInfo } from "./item";
1111
import { ifDefined } from "lit/directives/if-defined.js";
12+
import { serviceWorkerActivated } from "./swmanager";
1213

1314
// ===========================================================================
1415
/**
@@ -231,14 +232,7 @@ You can select a file to upload from the main page by clicking the 'Choose File.
231232
file: source,
232233
};
233234

234-
if (!navigator.serviceWorker.controller) {
235-
await new Promise((resolve) => {
236-
navigator.serviceWorker.addEventListener("controllerchange", () =>
237-
// @ts-expect-error - TS2794 - Expected 1 arguments, but got 0. Did you forget to include 'void' in your type argument to 'Promise'?
238-
resolve(),
239-
);
240-
});
241-
}
235+
await serviceWorkerActivated();
242236

243237
if (this.worker) {
244238
if (!this.noWebWorker) {

Diff for: src/misc.ts

+5
Original file line numberDiff line numberDiff line change
@@ -216,10 +216,15 @@ export {
216216
clickOnSpacebarPress,
217217
FaIcon,
218218
WrModal,
219+
/** @deprecated Import this directly from `lit` instead */
219220
LitElement,
221+
/** @deprecated Import this directly from `lit` instead */
220222
html,
223+
/** @deprecated Import this directly from `lit` instead */
221224
css,
225+
/** @deprecated Import this directly from `lit/directives/unsafe-css.js` instead */
222226
unsafeCSS,
227+
/** @deprecated Import this directly from `lit/directives/unsafe-svg.js` instead */
223228
unsafeSVG,
224229
apiPrefix,
225230
replayPrefix,

Diff for: src/swmanager.ts

+12
Original file line numberDiff line numberDiff line change
@@ -153,3 +153,15 @@ export class SWManager {
153153
`;
154154
}
155155
}
156+
157+
export async function serviceWorkerActivated() {
158+
if (navigator.serviceWorker.controller) {
159+
return;
160+
}
161+
162+
await new Promise<void>((resolve) => {
163+
navigator.serviceWorker.addEventListener("controllerchange", () => {
164+
resolve();
165+
});
166+
});
167+
}

Diff for: src/utils/index.ts

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export * from "./dateTimeFormatter";
2+
export * from "./assertNonNullish";
3+
export * from "../pageutils";
4+
export { SWManager, serviceWorkerActivated } from "../swmanager";

Diff for: webpack.config.js

+1
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ const libConfig = (env, argv) => {
9898
/** @type {import('webpack').Configuration['entry']} */
9999
const entry = {
100100
index: "./src/index.ts",
101+
utils: "./src/utils/index.ts",
101102
};
102103

103104
const extraPlugins = [];

Diff for: yarn.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -1028,10 +1028,10 @@
10281028
resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e"
10291029
integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==
10301030

1031-
"@webrecorder/wabac@^2.21.3":
1032-
version "2.21.3"
1033-
resolved "https://registry.yarnpkg.com/@webrecorder/wabac/-/wabac-2.21.3.tgz#2a376e848e1bf09dbe98e78a6c41034f8cef80d9"
1034-
integrity sha512-RgWFCRj1VEa0o2i8HTIlr5ol3W1C0ySI3cdBb8Q1okSYKzG3Xaqlnui2iTpWiJNgvayKzZs1fTxcQuKz/vMYgQ==
1031+
"@webrecorder/wabac@^2.22.2":
1032+
version "2.22.2"
1033+
resolved "https://registry.yarnpkg.com/@webrecorder/wabac/-/wabac-2.22.2.tgz#9b905bac70f8d8961e804576cdadc9d2bba1e576"
1034+
integrity sha512-bLuiKPJpVm5jsYXv6/h6A9OK02Jg4WCPzzN72vM0ktHHyY1GUniw0iM4IcZRP3cMx67Ot3ELPe2VULvlEc47oA==
10351035
dependencies:
10361036
"@peculiar/asn1-ecc" "^2.3.4"
10371037
"@peculiar/asn1-schema" "^2.3.3"

0 commit comments

Comments
 (0)