@serwist/next 9.5.7 → 9.5.8
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/chunks/schema-BhRhcBIb.js +22 -0
- package/dist/chunks/schema-BhRhcBIb.js.map +1 -0
- package/dist/index.config.d.mts +50 -0
- package/dist/index.config.d.mts.map +1 -0
- package/dist/index.config.mjs +89 -0
- package/dist/index.config.mjs.map +1 -0
- package/dist/index.d.mts +111 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +242 -0
- package/dist/index.mjs.map +1 -0
- package/dist/index.react.d.mts +41 -0
- package/dist/index.react.d.mts.map +1 -0
- package/dist/index.react.mjs +73 -0
- package/dist/index.react.mjs.map +1 -0
- package/dist/index.schema.d.mts +94 -0
- package/dist/index.schema.d.mts.map +1 -0
- package/dist/index.schema.mjs +2 -0
- package/dist/index.worker.d.mts +18 -0
- package/dist/index.worker.d.mts.map +1 -0
- package/dist/index.worker.mjs +227 -0
- package/dist/index.worker.mjs.map +1 -0
- package/dist/sw-entry-worker.d.mts +11 -0
- package/dist/sw-entry-worker.d.mts.map +1 -0
- package/dist/sw-entry-worker.mjs +25 -0
- package/dist/sw-entry-worker.mjs.map +1 -0
- package/dist/sw-entry.d.mts +9 -0
- package/dist/sw-entry.d.mts.map +1 -0
- package/dist/sw-entry.mjs +37 -0
- package/dist/sw-entry.mjs.map +1 -0
- package/package.json +37 -38
- package/src/index.react.tsx +2 -2
- package/src/index.ts +2 -2
- package/src/lib/config/utils.ts +3 -2
- package/dist/chunks/schema.js +0 -24
- package/dist/index.config.d.ts +0 -36
- package/dist/index.config.d.ts.map +0 -1
- package/dist/index.config.js +0 -118
- package/dist/index.d.ts +0 -13
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -285
- package/dist/index.react.d.ts +0 -25
- package/dist/index.react.d.ts.map +0 -1
- package/dist/index.react.js +0 -88
- package/dist/index.schema.d.ts +0 -3
- package/dist/index.schema.d.ts.map +0 -1
- package/dist/index.schema.js +0 -4
- package/dist/index.worker.d.ts +0 -14
- package/dist/index.worker.d.ts.map +0 -1
- package/dist/index.worker.js +0 -261
- package/dist/internal-types.d.ts +0 -15
- package/dist/internal-types.d.ts.map +0 -1
- package/dist/lib/config/constants.d.ts +0 -2
- package/dist/lib/config/constants.d.ts.map +0 -1
- package/dist/lib/config/types.d.ts +0 -11
- package/dist/lib/config/types.d.ts.map +0 -1
- package/dist/lib/config/utils.d.ts +0 -3
- package/dist/lib/config/utils.d.ts.map +0 -1
- package/dist/lib/context.d.ts +0 -7
- package/dist/lib/context.d.ts.map +0 -1
- package/dist/lib/find-first-truthy.d.ts +0 -8
- package/dist/lib/find-first-truthy.d.ts.map +0 -1
- package/dist/lib/get-content-hash.d.ts +0 -3
- package/dist/lib/get-content-hash.d.ts.map +0 -1
- package/dist/lib/get-file-hash.d.ts +0 -3
- package/dist/lib/get-file-hash.d.ts.map +0 -1
- package/dist/lib/get-package-version.d.ts +0 -7
- package/dist/lib/get-package-version.d.ts.map +0 -1
- package/dist/lib/index.d.ts +0 -7
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/load-tsconfig.d.ts +0 -3
- package/dist/lib/load-tsconfig.d.ts.map +0 -1
- package/dist/lib/logger.d.ts +0 -7
- package/dist/lib/logger.d.ts.map +0 -1
- package/dist/lib/schema.d.ts +0 -90
- package/dist/lib/schema.d.ts.map +0 -1
- package/dist/lib/types.d.ts +0 -95
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/validator.d.ts +0 -3
- package/dist/lib/validator.d.ts.map +0 -1
- package/dist/sw-entry-worker.d.ts +0 -8
- package/dist/sw-entry-worker.d.ts.map +0 -1
- package/dist/sw-entry-worker.js +0 -33
- package/dist/sw-entry.d.ts +0 -7
- package/dist/sw-entry.d.ts.map +0 -1
- package/dist/sw-entry.js +0 -43
- package/dist/utils.d.ts +0 -4
- package/dist/utils.d.ts.map +0 -1
package/dist/index.js
DELETED
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import { InjectManifest } from '@serwist/webpack-plugin';
|
|
5
|
-
import { ChildCompilationPlugin, relativeToOutputPath } from '@serwist/webpack-plugin/internal';
|
|
6
|
-
import { globSync } from 'glob';
|
|
7
|
-
import crypto from 'node:crypto';
|
|
8
|
-
import { createRequire } from 'node:module';
|
|
9
|
-
import { green, bold, white, yellow, red } from 'kolorist';
|
|
10
|
-
import semver from 'semver';
|
|
11
|
-
import { validationErrorMap, SerwistConfigError } from '@serwist/build/schema';
|
|
12
|
-
import { z } from 'zod';
|
|
13
|
-
import { i as injectManifestOptions } from './chunks/schema.js';
|
|
14
|
-
import '@serwist/webpack-plugin/schema';
|
|
15
|
-
|
|
16
|
-
const findFirstTruthy = (arr, fn)=>{
|
|
17
|
-
for (const i of arr){
|
|
18
|
-
const resolved = fn(i);
|
|
19
|
-
if (resolved) {
|
|
20
|
-
return resolved;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return undefined;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
const getFileHash = (file)=>crypto.createHash("md5").update(fs.readFileSync(file)).digest("hex");
|
|
27
|
-
|
|
28
|
-
const getContentHash = (file, isDev)=>{
|
|
29
|
-
if (isDev) {
|
|
30
|
-
return "development";
|
|
31
|
-
}
|
|
32
|
-
return getFileHash(file).slice(0, 16);
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
createRequire(import.meta.url);
|
|
36
|
-
|
|
37
|
-
const loadTSConfig = (baseDir, relativeTSConfigPath)=>{
|
|
38
|
-
try {
|
|
39
|
-
const tsConfigPath = findFirstTruthy([
|
|
40
|
-
relativeTSConfigPath ?? "tsconfig.json",
|
|
41
|
-
"jsconfig.json"
|
|
42
|
-
], (filePath)=>{
|
|
43
|
-
const resolvedPath = path.join(baseDir, filePath);
|
|
44
|
-
return fs.existsSync(resolvedPath) ? resolvedPath : undefined;
|
|
45
|
-
});
|
|
46
|
-
if (!tsConfigPath) {
|
|
47
|
-
return undefined;
|
|
48
|
-
}
|
|
49
|
-
return JSON.parse(fs.readFileSync(tsConfigPath, "utf-8"));
|
|
50
|
-
} catch {
|
|
51
|
-
return undefined;
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
const require$1 = createRequire(import.meta.url);
|
|
56
|
-
const LOGGING_SPACE_PREFIX = semver.gte(require$1("next/package.json").version, "16.0.0") ? "" : " ";
|
|
57
|
-
const prefixedLog = (prefixType, ...message)=>{
|
|
58
|
-
let prefix;
|
|
59
|
-
let consoleMethod;
|
|
60
|
-
switch(prefixType){
|
|
61
|
-
case "wait":
|
|
62
|
-
prefix = `${white(bold("○"))} (serwist)`;
|
|
63
|
-
consoleMethod = "log";
|
|
64
|
-
break;
|
|
65
|
-
case "error":
|
|
66
|
-
prefix = `${red(bold("X"))} (serwist)`;
|
|
67
|
-
consoleMethod = "error";
|
|
68
|
-
break;
|
|
69
|
-
case "warn":
|
|
70
|
-
prefix = `${yellow(bold("⚠"))} (serwist)`;
|
|
71
|
-
consoleMethod = "warn";
|
|
72
|
-
break;
|
|
73
|
-
case "info":
|
|
74
|
-
prefix = `${white(bold("○"))} (serwist)`;
|
|
75
|
-
consoleMethod = "log";
|
|
76
|
-
break;
|
|
77
|
-
case "event":
|
|
78
|
-
prefix = `${green(bold("✓"))} (serwist)`;
|
|
79
|
-
consoleMethod = "log";
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
if ((message[0] === "" || message[0] === undefined) && message.length === 1) {
|
|
83
|
-
message.shift();
|
|
84
|
-
}
|
|
85
|
-
if (message.length === 0) {
|
|
86
|
-
console[consoleMethod]("");
|
|
87
|
-
} else {
|
|
88
|
-
console[consoleMethod](`${LOGGING_SPACE_PREFIX}${prefix}`, ...message);
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
const info = (...message)=>prefixedLog("info", ...message);
|
|
92
|
-
const event = (...message)=>prefixedLog("event", ...message);
|
|
93
|
-
|
|
94
|
-
const validateInjectManifestOptions = (input)=>{
|
|
95
|
-
const result = injectManifestOptions.safeParse(input, {
|
|
96
|
-
error: validationErrorMap
|
|
97
|
-
});
|
|
98
|
-
if (!result.success) {
|
|
99
|
-
throw new SerwistConfigError({
|
|
100
|
-
moduleName: "@serwist/next",
|
|
101
|
-
message: z.prettifyError(result.error)
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
return result.data;
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
const dirname = "__dirname" in globalThis ? __dirname : fileURLToPath(new URL(".", import.meta.url));
|
|
108
|
-
const withSerwistInit = (userOptions)=>{
|
|
109
|
-
if (!process.env.SERWIST_SUPPRESS_TURBOPACK_WARNING && process.env.TURBOPACK && !userOptions.disable) {
|
|
110
|
-
process.env.SERWIST_SUPPRESS_TURBOPACK_WARNING = "1";
|
|
111
|
-
console.warn(`[@serwist/next] WARNING: You are using '@serwist/next' with \`next dev --turbopack\`, but it doesn't support Turbopack. Do one of the following:
|
|
112
|
-
|
|
113
|
-
- Set \`disable\` to \`process.env.NODE_ENV !== "production"\`.
|
|
114
|
-
|
|
115
|
-
- Use webpack by running \`next dev --webpack\` instead of \`next dev --turbopack\`.
|
|
116
|
-
|
|
117
|
-
- Migrate to '@serwist/turbopack' which has experimental support for Turbopack. See https://serwist.pages.dev/docs/next/turbo for more information.
|
|
118
|
-
|
|
119
|
-
- Migrate to configurator mode which has support for Turbopack. See https://serwist.pages.dev/docs/next/config for more information.
|
|
120
|
-
|
|
121
|
-
Follow https://github.com/serwist/serwist/issues/54 for progress on Serwist + Turbopack. You can also suppress this warning by setting SERWIST_SUPPRESS_TURBOPACK_WARNING=1.\n`);
|
|
122
|
-
}
|
|
123
|
-
return (nextConfig = {})=>({
|
|
124
|
-
...nextConfig,
|
|
125
|
-
webpack (config, options) {
|
|
126
|
-
const webpack = options.webpack;
|
|
127
|
-
const { dev } = options;
|
|
128
|
-
const basePath = options.config.basePath || "/";
|
|
129
|
-
const tsConfigJson = loadTSConfig(options.dir, nextConfig?.typescript?.tsconfigPath);
|
|
130
|
-
const { cacheOnNavigation, disable, scope = basePath, swUrl, register, reloadOnOnline, globPublicPatterns, ...buildOptions } = validateInjectManifestOptions(userOptions);
|
|
131
|
-
if (typeof nextConfig.webpack === "function") {
|
|
132
|
-
config = nextConfig.webpack(config, options);
|
|
133
|
-
}
|
|
134
|
-
if (disable) {
|
|
135
|
-
options.isServer && info("Serwist is disabled.");
|
|
136
|
-
return config;
|
|
137
|
-
}
|
|
138
|
-
if (!config.plugins) {
|
|
139
|
-
config.plugins = [];
|
|
140
|
-
}
|
|
141
|
-
const _sw = path.posix.join(basePath, swUrl);
|
|
142
|
-
const _scope = path.posix.join(scope, "/");
|
|
143
|
-
config.plugins.push(new webpack.DefinePlugin({
|
|
144
|
-
"self.__SERWIST_SW_ENTRY.sw": `'${_sw}'`,
|
|
145
|
-
"self.__SERWIST_SW_ENTRY.scope": `'${_scope}'`,
|
|
146
|
-
"self.__SERWIST_SW_ENTRY.cacheOnNavigation": `${cacheOnNavigation}`,
|
|
147
|
-
"self.__SERWIST_SW_ENTRY.register": `${register}`,
|
|
148
|
-
"self.__SERWIST_SW_ENTRY.reloadOnOnline": `${reloadOnOnline}`
|
|
149
|
-
}));
|
|
150
|
-
const swEntryJs = path.join(dirname, "sw-entry.js");
|
|
151
|
-
const entry = config.entry;
|
|
152
|
-
config.entry = async ()=>{
|
|
153
|
-
const entries = await entry();
|
|
154
|
-
if (entries["main.js"] && !entries["main.js"].includes(swEntryJs)) {
|
|
155
|
-
if (Array.isArray(entries["main.js"])) {
|
|
156
|
-
entries["main.js"].unshift(swEntryJs);
|
|
157
|
-
} else if (typeof entries["main.js"] === "string") {
|
|
158
|
-
entries["main.js"] = [
|
|
159
|
-
swEntryJs,
|
|
160
|
-
entries["main.js"]
|
|
161
|
-
];
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
if (entries["main-app"] && !entries["main-app"].includes(swEntryJs)) {
|
|
165
|
-
if (Array.isArray(entries["main-app"])) {
|
|
166
|
-
entries["main-app"].unshift(swEntryJs);
|
|
167
|
-
} else if (typeof entries["main-app"] === "string") {
|
|
168
|
-
entries["main-app"] = [
|
|
169
|
-
swEntryJs,
|
|
170
|
-
entries["main-app"]
|
|
171
|
-
];
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
return entries;
|
|
175
|
-
};
|
|
176
|
-
if (!options.isServer) {
|
|
177
|
-
if (!register) {
|
|
178
|
-
info("The service worker will not be automatically registered, please call 'window.serwist.register()' in 'componentDidMount' or 'useEffect'.");
|
|
179
|
-
if (!tsConfigJson?.compilerOptions?.types?.includes("@serwist/next/typings")) {
|
|
180
|
-
info("You may also want to add '@serwist/next/typings' to your TypeScript/JavaScript configuration file at 'compilerOptions.types'.");
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
const { swSrc: userSwSrc, swDest: userSwDest, additionalPrecacheEntries, exclude, manifestTransforms = [], ...otherBuildOptions } = buildOptions;
|
|
184
|
-
let swSrc = userSwSrc;
|
|
185
|
-
let swDest = userSwDest;
|
|
186
|
-
if (!path.isAbsolute(swSrc)) {
|
|
187
|
-
swSrc = path.join(options.dir, swSrc);
|
|
188
|
-
}
|
|
189
|
-
if (!path.isAbsolute(swDest)) {
|
|
190
|
-
swDest = path.join(options.dir, swDest);
|
|
191
|
-
}
|
|
192
|
-
const publicDir = path.resolve(options.dir, "public");
|
|
193
|
-
const { dir: destDir, base: destBase } = path.parse(swDest);
|
|
194
|
-
const cleanUpList = globSync([
|
|
195
|
-
"swe-worker-*.js",
|
|
196
|
-
"swe-worker-*.js.map",
|
|
197
|
-
destBase,
|
|
198
|
-
`${destBase}.map`
|
|
199
|
-
], {
|
|
200
|
-
absolute: true,
|
|
201
|
-
nodir: true,
|
|
202
|
-
follow: true,
|
|
203
|
-
cwd: destDir
|
|
204
|
-
});
|
|
205
|
-
for (const file of cleanUpList){
|
|
206
|
-
fs.rmSync(file, {
|
|
207
|
-
force: true
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
const shouldBuildSWEntryWorker = cacheOnNavigation;
|
|
211
|
-
let swEntryPublicPath;
|
|
212
|
-
let swEntryWorkerDest;
|
|
213
|
-
if (shouldBuildSWEntryWorker) {
|
|
214
|
-
const swEntryWorkerSrc = path.join(dirname, "sw-entry-worker.js");
|
|
215
|
-
const swEntryName = `swe-worker-${getContentHash(swEntryWorkerSrc, dev)}.js`;
|
|
216
|
-
swEntryPublicPath = path.posix.join(basePath, swEntryName);
|
|
217
|
-
swEntryWorkerDest = path.join(destDir, swEntryName);
|
|
218
|
-
config.plugins.push(new ChildCompilationPlugin({
|
|
219
|
-
src: swEntryWorkerSrc,
|
|
220
|
-
dest: swEntryWorkerDest
|
|
221
|
-
}));
|
|
222
|
-
}
|
|
223
|
-
config.plugins.push(new webpack.DefinePlugin({
|
|
224
|
-
"self.__SERWIST_SW_ENTRY.swEntryWorker": swEntryPublicPath && `'${swEntryPublicPath}'`
|
|
225
|
-
}));
|
|
226
|
-
event(`Bundling the service worker script with the URL '${_sw}' and the scope '${_scope}'...`);
|
|
227
|
-
let resolvedManifestEntries = additionalPrecacheEntries;
|
|
228
|
-
if (!resolvedManifestEntries) {
|
|
229
|
-
const publicScan = globSync(globPublicPatterns, {
|
|
230
|
-
nodir: true,
|
|
231
|
-
follow: true,
|
|
232
|
-
cwd: publicDir,
|
|
233
|
-
ignore: [
|
|
234
|
-
"swe-worker-*.js",
|
|
235
|
-
destBase,
|
|
236
|
-
`${destBase}.map`
|
|
237
|
-
]
|
|
238
|
-
});
|
|
239
|
-
resolvedManifestEntries = publicScan.map((f)=>({
|
|
240
|
-
url: path.posix.join(basePath, f),
|
|
241
|
-
revision: getFileHash(path.join(publicDir, f))
|
|
242
|
-
}));
|
|
243
|
-
}
|
|
244
|
-
const publicPath = config.output?.publicPath;
|
|
245
|
-
config.plugins.push(new InjectManifest({
|
|
246
|
-
swSrc,
|
|
247
|
-
swDest,
|
|
248
|
-
disablePrecacheManifest: dev,
|
|
249
|
-
additionalPrecacheEntries: dev ? [] : resolvedManifestEntries,
|
|
250
|
-
exclude: [
|
|
251
|
-
...exclude,
|
|
252
|
-
({ asset, compilation })=>{
|
|
253
|
-
const swDestRelativeOutput = relativeToOutputPath(compilation, swDest);
|
|
254
|
-
const swAsset = compilation.getAsset(swDestRelativeOutput);
|
|
255
|
-
return asset.name === swAsset?.name || asset.name.startsWith("server/") || /^[^/]*\.json$/.test(asset.name) || dev && !asset.name.startsWith("static/runtime/");
|
|
256
|
-
}
|
|
257
|
-
],
|
|
258
|
-
manifestTransforms: [
|
|
259
|
-
...manifestTransforms,
|
|
260
|
-
async (manifestEntries, compilation)=>{
|
|
261
|
-
const publicDirRelativeOutput = relativeToOutputPath(compilation, publicDir);
|
|
262
|
-
const publicFilesPrefix = `${publicPath}${publicDirRelativeOutput}`;
|
|
263
|
-
const manifest = manifestEntries.map((m)=>{
|
|
264
|
-
m.url = m.url.replace("/_next//static/image", "/_next/static/image").replace("/_next//static/media", "/_next/static/media");
|
|
265
|
-
if (m.url.startsWith(publicFilesPrefix)) {
|
|
266
|
-
m.url = path.posix.join(basePath, m.url.replace(publicFilesPrefix, ""));
|
|
267
|
-
}
|
|
268
|
-
m.url = m.url.replace(/\[/g, "%5B").replace(/\]/g, "%5D").replace(/@/g, "%40");
|
|
269
|
-
return m;
|
|
270
|
-
});
|
|
271
|
-
return {
|
|
272
|
-
manifest,
|
|
273
|
-
warnings: []
|
|
274
|
-
};
|
|
275
|
-
}
|
|
276
|
-
],
|
|
277
|
-
...otherBuildOptions
|
|
278
|
-
}));
|
|
279
|
-
}
|
|
280
|
-
return config;
|
|
281
|
-
}
|
|
282
|
-
});
|
|
283
|
-
};
|
|
284
|
-
|
|
285
|
-
export { withSerwistInit as default, validateInjectManifestOptions };
|
package/dist/index.react.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Serwist } from "@serwist/window";
|
|
2
|
-
import { type ReactNode } from "react";
|
|
3
|
-
import { useSerwist } from "./lib/context.js";
|
|
4
|
-
export interface SerwistProviderProps {
|
|
5
|
-
swUrl: string;
|
|
6
|
-
disable?: boolean;
|
|
7
|
-
register?: boolean;
|
|
8
|
-
cacheOnNavigation?: boolean;
|
|
9
|
-
reloadOnOnline?: boolean;
|
|
10
|
-
options?: RegistrationOptions;
|
|
11
|
-
children?: ReactNode;
|
|
12
|
-
}
|
|
13
|
-
declare global {
|
|
14
|
-
interface Window {
|
|
15
|
-
serwist: Serwist;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* `@serwist/window` provider for Next.js apps.
|
|
20
|
-
* @param options
|
|
21
|
-
* @returns
|
|
22
|
-
*/
|
|
23
|
-
export declare function SerwistProvider({ swUrl, disable, register, cacheOnNavigation, reloadOnOnline, options, children, }: SerwistProviderProps): import("react").JSX.Element;
|
|
24
|
-
export { useSerwist };
|
|
25
|
-
//# sourceMappingURL=index.react.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.react.d.ts","sourceRoot":"","sources":["../src/index.react.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAkB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,OAAO,EAAE,OAAO,CAAC;KAClB;CACF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,OAAe,EACf,QAAe,EACf,iBAAwB,EACxB,cAAqB,EACrB,OAAO,EACP,QAAQ,GACT,EAAE,oBAAoB,+BAuDtB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/index.react.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { Serwist } from '@serwist/window';
|
|
3
|
-
import { isCurrentPageOutOfScope } from '@serwist/window/internal';
|
|
4
|
-
import { createContext, useContext, useState, useEffect } from 'react';
|
|
5
|
-
|
|
6
|
-
const SerwistContext = createContext(null);
|
|
7
|
-
const useSerwist = ()=>{
|
|
8
|
-
const context = useContext(SerwistContext);
|
|
9
|
-
if (!context) {
|
|
10
|
-
throw new Error("[useSerwist]: 'SerwistContext' is not available.");
|
|
11
|
-
}
|
|
12
|
-
return context;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
function SerwistProvider({ swUrl, disable = false, register = true, cacheOnNavigation = true, reloadOnOnline = true, options, children }) {
|
|
16
|
-
const [serwist] = useState(()=>{
|
|
17
|
-
if (typeof window === "undefined") return null;
|
|
18
|
-
if (disable) return null;
|
|
19
|
-
const scope = options?.scope || "/";
|
|
20
|
-
if (!(window.serwist && window.serwist instanceof Serwist) && "serviceWorker" in navigator) {
|
|
21
|
-
window.serwist = new Serwist(swUrl, {
|
|
22
|
-
...options,
|
|
23
|
-
scope,
|
|
24
|
-
type: options?.type || "module"
|
|
25
|
-
});
|
|
26
|
-
if (register && !isCurrentPageOutOfScope(scope)) {
|
|
27
|
-
void window.serwist.register();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return window.serwist ?? null;
|
|
31
|
-
});
|
|
32
|
-
useEffect(()=>{
|
|
33
|
-
const cacheUrls = async (url)=>{
|
|
34
|
-
if (!window.navigator.onLine || !url) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
serwist?.messageSW({
|
|
38
|
-
type: "CACHE_URLS",
|
|
39
|
-
payload: {
|
|
40
|
-
urlsToCache: [
|
|
41
|
-
url
|
|
42
|
-
]
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
};
|
|
46
|
-
const cacheCurrentPathname = ()=>cacheUrls(window.location.pathname);
|
|
47
|
-
const pushState = history.pushState;
|
|
48
|
-
const replaceState = history.replaceState;
|
|
49
|
-
if (cacheOnNavigation) {
|
|
50
|
-
history.pushState = (...args)=>{
|
|
51
|
-
pushState.apply(history, args);
|
|
52
|
-
cacheUrls(args[2]);
|
|
53
|
-
};
|
|
54
|
-
history.replaceState = (...args)=>{
|
|
55
|
-
replaceState.apply(history, args);
|
|
56
|
-
cacheUrls(args[2]);
|
|
57
|
-
};
|
|
58
|
-
window.addEventListener("online", cacheCurrentPathname);
|
|
59
|
-
}
|
|
60
|
-
return ()=>{
|
|
61
|
-
history.pushState = pushState;
|
|
62
|
-
history.replaceState = replaceState;
|
|
63
|
-
window.removeEventListener("online", cacheCurrentPathname);
|
|
64
|
-
};
|
|
65
|
-
}, [
|
|
66
|
-
serwist?.messageSW,
|
|
67
|
-
cacheOnNavigation
|
|
68
|
-
]);
|
|
69
|
-
useEffect(()=>{
|
|
70
|
-
const reload = ()=>location.reload();
|
|
71
|
-
if (reloadOnOnline) {
|
|
72
|
-
window.addEventListener("online", reload);
|
|
73
|
-
}
|
|
74
|
-
return ()=>{
|
|
75
|
-
window.removeEventListener("online", reload);
|
|
76
|
-
};
|
|
77
|
-
}, [
|
|
78
|
-
reloadOnOnline
|
|
79
|
-
]);
|
|
80
|
-
return jsx(SerwistContext.Provider, {
|
|
81
|
-
value: {
|
|
82
|
-
serwist
|
|
83
|
-
},
|
|
84
|
-
children: children
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export { SerwistProvider, useSerwist };
|
package/dist/index.schema.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.schema.d.ts","sourceRoot":"","sources":["../src/index.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,CAAC"}
|
package/dist/index.schema.js
DELETED
package/dist/index.worker.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { RuntimeCaching } from "serwist";
|
|
2
|
-
export declare const PAGES_CACHE_NAME: {
|
|
3
|
-
readonly rscPrefetch: "pages-rsc-prefetch";
|
|
4
|
-
readonly rsc: "pages-rsc";
|
|
5
|
-
readonly html: "pages";
|
|
6
|
-
};
|
|
7
|
-
/**
|
|
8
|
-
* The default, recommended list of caching strategies for applications
|
|
9
|
-
* built with Next.js.
|
|
10
|
-
*
|
|
11
|
-
* @see https://serwist.pages.dev/docs/next/worker-exports#default-cache
|
|
12
|
-
*/
|
|
13
|
-
export declare const defaultCache: RuntimeCaching[];
|
|
14
|
-
//# sourceMappingURL=index.worker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.worker.d.ts","sourceRoot":"","sources":["../src/index.worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,eAAO,MAAM,gBAAgB;;;;CAInB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,cAAc,EAkQlC,CAAC"}
|