@serwist/next 8.4.4 → 9.0.0-preview.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +50 -37
- package/dist/index.worker.d.ts +5 -0
- package/dist/index.worker.d.ts.map +1 -0
- package/dist/{index.browser.cjs → index.worker.js} +57 -22
- package/dist/internal-types.d.ts +6 -0
- package/dist/internal-types.d.ts.map +1 -0
- package/dist/sw-entry-worker.d.ts +1 -0
- package/dist/sw-entry-worker.d.ts.map +1 -0
- package/dist/sw-entry.d.ts +1 -0
- package/dist/sw-entry.d.ts.map +1 -0
- package/dist/utils/find-first-truthy.d.ts +1 -0
- package/dist/utils/find-first-truthy.d.ts.map +1 -0
- package/dist/utils/get-content-hash.d.ts +1 -0
- package/dist/utils/get-content-hash.d.ts.map +1 -0
- package/dist/utils/get-file-hash.d.ts +1 -0
- package/dist/utils/get-file-hash.d.ts.map +1 -0
- package/dist/utils/get-package-version.d.ts +1 -0
- package/dist/utils/get-package-version.d.ts.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/load-tsconfig.d.ts +1 -0
- package/dist/utils/load-tsconfig.d.ts.map +1 -0
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils.d.ts +1 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/worker/defaultCache.d.ts +3 -0
- package/dist/worker/defaultCache.d.ts.map +1 -0
- package/dist/worker/definePageRuntimeCaching.d.ts +16 -0
- package/dist/worker/definePageRuntimeCaching.d.ts.map +1 -0
- package/package.json +47 -49
- package/src/index.ts +241 -0
- package/src/index.worker.ts +5 -0
- package/src/internal-types.ts +17 -0
- package/src/sw-entry-worker.ts +46 -0
- package/src/sw-entry.ts +64 -0
- package/src/utils/find-first-truthy.ts +15 -0
- package/src/utils/get-content-hash.ts +10 -0
- package/src/utils/get-file-hash.ts +4 -0
- package/src/utils/get-package-version.ts +16 -0
- package/src/utils/load-tsconfig.ts +27 -0
- package/src/utils/logger.ts +57 -0
- package/src/utils.ts +11 -0
- package/src/worker/defaultCache.ts +223 -0
- package/src/worker/definePageRuntimeCaching.ts +36 -0
- package/dist/index.browser.d.cts +0 -2
- package/dist/index.browser.d.ts +0 -2
- package/dist/index.browser.js +0 -208
- package/dist/index.cjs +0 -928
- package/dist/index.d.cts +0 -5
- package/dist/internal-types.d.cts +0 -9
- package/dist/sw-entry-worker.cjs +0 -35
- package/dist/sw-entry-worker.d.cts +0 -7
- package/dist/sw-entry.cjs +0 -43
- package/dist/sw-entry.d.cts +0 -6
- package/dist/types.d.cts +0 -81
- package/dist/types.d.ts +0 -81
- package/dist/utils/find-first-truthy.d.cts +0 -7
- package/dist/utils/get-content-hash.d.cts +0 -3
- package/dist/utils/get-file-hash.d.cts +0 -3
- package/dist/utils/get-package-version.d.cts +0 -6
- package/dist/utils/load-tsconfig.d.cts +0 -2
- package/dist/utils/logger.d.cts +0 -5
- package/dist/utils.d.cts +0 -4
- /package/{dist/utils/index.d.cts → src/utils/index.ts} +0 -0
package/dist/index.d.cts
DELETED
package/dist/sw-entry-worker.cjs
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
self.onmessage = async (ev)=>{
|
|
4
|
-
switch(ev.data.type){
|
|
5
|
-
case "__START_URL_CACHE__":
|
|
6
|
-
{
|
|
7
|
-
const url = ev.data.url;
|
|
8
|
-
const response = await fetch(url);
|
|
9
|
-
if (!response.redirected) {
|
|
10
|
-
const startUrlCache = await caches.open("start-url");
|
|
11
|
-
return startUrlCache.put(url, response);
|
|
12
|
-
}
|
|
13
|
-
return Promise.resolve();
|
|
14
|
-
}
|
|
15
|
-
case "__FRONTEND_NAV_CACHE__":
|
|
16
|
-
{
|
|
17
|
-
const url = ev.data.url;
|
|
18
|
-
const pagesCache = await caches.open("pages");
|
|
19
|
-
const isPageCached = !!await pagesCache.match(url, {
|
|
20
|
-
ignoreSearch: true
|
|
21
|
-
});
|
|
22
|
-
if (isPageCached) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const page = await fetch(url);
|
|
26
|
-
if (!page.ok) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
pagesCache.put(url, page.clone());
|
|
30
|
-
return Promise.resolve();
|
|
31
|
-
}
|
|
32
|
-
default:
|
|
33
|
-
return Promise.resolve();
|
|
34
|
-
}
|
|
35
|
-
};
|
package/dist/sw-entry.cjs
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var window$1 = require('@serwist/window');
|
|
4
|
-
|
|
5
|
-
if (typeof window !== "undefined" && "serviceWorker" in navigator && typeof caches !== "undefined") {
|
|
6
|
-
let swEntryWorker;
|
|
7
|
-
if (self.__SERWIST_SW_ENTRY.swEntryWorker) {
|
|
8
|
-
swEntryWorker = new Worker(self.__SERWIST_SW_ENTRY.swEntryWorker);
|
|
9
|
-
}
|
|
10
|
-
window.serwist = new window$1.Serwist(window.location.origin + self.__SERWIST_SW_ENTRY.sw, {
|
|
11
|
-
scope: self.__SERWIST_SW_ENTRY.scope
|
|
12
|
-
});
|
|
13
|
-
if (self.__SERWIST_SW_ENTRY.register) {
|
|
14
|
-
window.serwist.register();
|
|
15
|
-
}
|
|
16
|
-
if (self.__SERWIST_SW_ENTRY.cacheOnFrontEndNav) {
|
|
17
|
-
const cacheOnFrontEndNav = async (url)=>{
|
|
18
|
-
if (!window.navigator.onLine || !url) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
swEntryWorker?.postMessage({
|
|
22
|
-
type: "__FRONTEND_NAV_CACHE__",
|
|
23
|
-
url
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
const pushState = history.pushState;
|
|
27
|
-
history.pushState = (...args)=>{
|
|
28
|
-
pushState.apply(history, args);
|
|
29
|
-
cacheOnFrontEndNav(args[2]);
|
|
30
|
-
};
|
|
31
|
-
const replaceState = history.replaceState;
|
|
32
|
-
history.replaceState = (...args)=>{
|
|
33
|
-
replaceState.apply(history, args);
|
|
34
|
-
cacheOnFrontEndNav(args[2]);
|
|
35
|
-
};
|
|
36
|
-
window.addEventListener("online", ()=>{
|
|
37
|
-
cacheOnFrontEndNav(window.location.pathname);
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
if (self.__SERWIST_SW_ENTRY.reloadOnOnline) {
|
|
41
|
-
window.addEventListener("online", ()=>location.reload());
|
|
42
|
-
}
|
|
43
|
-
}
|
package/dist/sw-entry.d.cts
DELETED
package/dist/types.d.cts
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import type { WebpackInjectManifestOptions } from "@serwist/build";
|
|
2
|
-
type Require<T, U extends keyof T> = T & Required<Pick<T, U>>;
|
|
3
|
-
export interface PluginOptions extends Require<WebpackInjectManifestOptions, "swDest"> {
|
|
4
|
-
/**
|
|
5
|
-
* Enable additional route caching when users navigate through pages with
|
|
6
|
-
* `next/link`. This improves the user experience in some cases but it
|
|
7
|
-
* also adds a bit of overhead due to additional network calls.
|
|
8
|
-
* @default false
|
|
9
|
-
*/
|
|
10
|
-
cacheOnFrontEndNav?: boolean;
|
|
11
|
-
/**
|
|
12
|
-
* Whether Serwist should be disabled.
|
|
13
|
-
* @default false
|
|
14
|
-
*/
|
|
15
|
-
disable?: boolean;
|
|
16
|
-
/**
|
|
17
|
-
* Whether `@serwist/next` should automatically register the service worker for you. If
|
|
18
|
-
* you want to register the service worker yourself, set this to `false` and run
|
|
19
|
-
* `window.serwist.register()` in `componentDidMount` or `useEffect`.
|
|
20
|
-
* @example
|
|
21
|
-
* ```tsx
|
|
22
|
-
* // app/register-pwa.tsx
|
|
23
|
-
* "use client";
|
|
24
|
-
* import { useEffect } from "react";
|
|
25
|
-
* import type { Serwist } from "@serwist/window";
|
|
26
|
-
*
|
|
27
|
-
* declare global {
|
|
28
|
-
* interface Window {
|
|
29
|
-
* serwist: Serwist;
|
|
30
|
-
* }
|
|
31
|
-
* }
|
|
32
|
-
*
|
|
33
|
-
* export default function RegisterPWA() {
|
|
34
|
-
* useEffect(() => {
|
|
35
|
-
* if ("serviceWorker" in navigator && window.serwist !== undefined) {
|
|
36
|
-
* window.serwist.register();
|
|
37
|
-
* }
|
|
38
|
-
* }, []);
|
|
39
|
-
* return <></>;
|
|
40
|
-
* }
|
|
41
|
-
*
|
|
42
|
-
* // app/layout.tsx
|
|
43
|
-
* import RegisterPWA from "./register-pwa";
|
|
44
|
-
*
|
|
45
|
-
* export default function RootLayout({
|
|
46
|
-
* children,
|
|
47
|
-
* }: {
|
|
48
|
-
* children: React.ReactNode;
|
|
49
|
-
* }) {
|
|
50
|
-
* return (
|
|
51
|
-
* <html lang="en">
|
|
52
|
-
* <head />
|
|
53
|
-
* <body>
|
|
54
|
-
* <RegisterPWA />
|
|
55
|
-
* {children}
|
|
56
|
-
* </body>
|
|
57
|
-
* </html>
|
|
58
|
-
* );
|
|
59
|
-
* }
|
|
60
|
-
* ```
|
|
61
|
-
* @default true
|
|
62
|
-
*/
|
|
63
|
-
register?: boolean;
|
|
64
|
-
/**
|
|
65
|
-
* Whether Serwist should reload the app when it goes online.
|
|
66
|
-
* @default true
|
|
67
|
-
*/
|
|
68
|
-
reloadOnOnline?: boolean;
|
|
69
|
-
/**
|
|
70
|
-
* The service worker's URL scope. Set to `/foo/` so that paths under `/foo/` are under the service
|
|
71
|
-
* worker's control while others are not.
|
|
72
|
-
* @default nextConfig.basePath
|
|
73
|
-
*/
|
|
74
|
-
scope?: string;
|
|
75
|
-
/**
|
|
76
|
-
* The URL to the service worker.
|
|
77
|
-
* @default "/sw.js"
|
|
78
|
-
*/
|
|
79
|
-
swUrl?: string;
|
|
80
|
-
}
|
|
81
|
-
export {};
|
package/dist/types.d.ts
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import type { WebpackInjectManifestOptions } from "@serwist/build";
|
|
2
|
-
type Require<T, U extends keyof T> = T & Required<Pick<T, U>>;
|
|
3
|
-
export interface PluginOptions extends Require<WebpackInjectManifestOptions, "swDest"> {
|
|
4
|
-
/**
|
|
5
|
-
* Enable additional route caching when users navigate through pages with
|
|
6
|
-
* `next/link`. This improves the user experience in some cases but it
|
|
7
|
-
* also adds a bit of overhead due to additional network calls.
|
|
8
|
-
* @default false
|
|
9
|
-
*/
|
|
10
|
-
cacheOnFrontEndNav?: boolean;
|
|
11
|
-
/**
|
|
12
|
-
* Whether Serwist should be disabled.
|
|
13
|
-
* @default false
|
|
14
|
-
*/
|
|
15
|
-
disable?: boolean;
|
|
16
|
-
/**
|
|
17
|
-
* Whether `@serwist/next` should automatically register the service worker for you. If
|
|
18
|
-
* you want to register the service worker yourself, set this to `false` and run
|
|
19
|
-
* `window.serwist.register()` in `componentDidMount` or `useEffect`.
|
|
20
|
-
* @example
|
|
21
|
-
* ```tsx
|
|
22
|
-
* // app/register-pwa.tsx
|
|
23
|
-
* "use client";
|
|
24
|
-
* import { useEffect } from "react";
|
|
25
|
-
* import type { Serwist } from "@serwist/window";
|
|
26
|
-
*
|
|
27
|
-
* declare global {
|
|
28
|
-
* interface Window {
|
|
29
|
-
* serwist: Serwist;
|
|
30
|
-
* }
|
|
31
|
-
* }
|
|
32
|
-
*
|
|
33
|
-
* export default function RegisterPWA() {
|
|
34
|
-
* useEffect(() => {
|
|
35
|
-
* if ("serviceWorker" in navigator && window.serwist !== undefined) {
|
|
36
|
-
* window.serwist.register();
|
|
37
|
-
* }
|
|
38
|
-
* }, []);
|
|
39
|
-
* return <></>;
|
|
40
|
-
* }
|
|
41
|
-
*
|
|
42
|
-
* // app/layout.tsx
|
|
43
|
-
* import RegisterPWA from "./register-pwa";
|
|
44
|
-
*
|
|
45
|
-
* export default function RootLayout({
|
|
46
|
-
* children,
|
|
47
|
-
* }: {
|
|
48
|
-
* children: React.ReactNode;
|
|
49
|
-
* }) {
|
|
50
|
-
* return (
|
|
51
|
-
* <html lang="en">
|
|
52
|
-
* <head />
|
|
53
|
-
* <body>
|
|
54
|
-
* <RegisterPWA />
|
|
55
|
-
* {children}
|
|
56
|
-
* </body>
|
|
57
|
-
* </html>
|
|
58
|
-
* );
|
|
59
|
-
* }
|
|
60
|
-
* ```
|
|
61
|
-
* @default true
|
|
62
|
-
*/
|
|
63
|
-
register?: boolean;
|
|
64
|
-
/**
|
|
65
|
-
* Whether Serwist should reload the app when it goes online.
|
|
66
|
-
* @default true
|
|
67
|
-
*/
|
|
68
|
-
reloadOnOnline?: boolean;
|
|
69
|
-
/**
|
|
70
|
-
* The service worker's URL scope. Set to `/foo/` so that paths under `/foo/` are under the service
|
|
71
|
-
* worker's control while others are not.
|
|
72
|
-
* @default nextConfig.basePath
|
|
73
|
-
*/
|
|
74
|
-
scope?: string;
|
|
75
|
-
/**
|
|
76
|
-
* The URL to the service worker.
|
|
77
|
-
* @default "/sw.js"
|
|
78
|
-
*/
|
|
79
|
-
swUrl?: string;
|
|
80
|
-
}
|
|
81
|
-
export {};
|
package/dist/utils/logger.d.cts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export declare const wait: (...message: any[]) => void;
|
|
2
|
-
export declare const error: (...message: any[]) => void;
|
|
3
|
-
export declare const warn: (...message: any[]) => void;
|
|
4
|
-
export declare const info: (...message: any[]) => void;
|
|
5
|
-
export declare const event: (...message: any[]) => void;
|
package/dist/utils.d.cts
DELETED
|
File without changes
|