@serwist/turbopack 9.5.6 → 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/index.schema-RVDaKxz4.js +189 -0
- package/dist/chunks/index.schema-RVDaKxz4.js.map +1 -0
- package/dist/index.d.mts +96 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +166 -0
- package/dist/index.mjs.map +1 -0
- package/dist/index.react.d.mts +42 -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 +311 -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/package.json +33 -34
- package/src/index.schema.ts +1 -0
- package/src/index.ts +11 -2
- package/src/lib/utils.ts +3 -3
- package/src/types.ts +8 -1
- package/dist/chunks/index.schema.js +0 -183
- package/dist/index.d.ts +0 -22
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -180
- 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 -297
- package/dist/index.schema.d.ts.map +0 -1
- package/dist/index.schema.js +0 -8
- 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/lib/constants.d.ts +0 -2
- package/dist/lib/constants.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/index.d.ts +0 -3
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/logger.d.ts +0 -8
- package/dist/lib/logger.d.ts.map +0 -1
- package/dist/lib/utils.d.ts +0 -3
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/types.d.ts +0 -65
- package/dist/types.d.ts.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serwist/turbopack",
|
|
3
|
-
"version": "9.5.
|
|
3
|
+
"version": "9.5.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"description": "A module that integrates Serwist into your Next.js / Turbopack application.",
|
|
@@ -31,64 +31,63 @@
|
|
|
31
31
|
"repository": "https://github.com/serwist/serwist",
|
|
32
32
|
"bugs": "https://github.com/serwist/serwist/issues",
|
|
33
33
|
"homepage": "https://serwist.pages.dev",
|
|
34
|
-
"main": "./dist/index.
|
|
35
|
-
"types": "./dist/index.d.
|
|
34
|
+
"main": "./dist/index.mjs",
|
|
35
|
+
"types": "./dist/index.d.mts",
|
|
36
36
|
"typesVersions": {
|
|
37
37
|
"*": {
|
|
38
38
|
"react": [
|
|
39
|
-
"./dist/index.react.d.
|
|
39
|
+
"./dist/index.react.d.mts"
|
|
40
40
|
],
|
|
41
41
|
"worker": [
|
|
42
|
-
"./dist/index.worker.d.
|
|
42
|
+
"./dist/index.worker.d.mts"
|
|
43
43
|
],
|
|
44
44
|
"schema": [
|
|
45
|
-
"./dist/index.schema.d.
|
|
45
|
+
"./dist/index.schema.d.mts"
|
|
46
46
|
]
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
"exports": {
|
|
50
50
|
".": {
|
|
51
|
-
"types": "./dist/index.d.
|
|
52
|
-
"default": "./dist/index.
|
|
51
|
+
"types": "./dist/index.d.mts",
|
|
52
|
+
"default": "./dist/index.mjs"
|
|
53
53
|
},
|
|
54
54
|
"./react": {
|
|
55
|
-
"types": "./dist/index.react.d.
|
|
56
|
-
"default": "./dist/index.react.
|
|
55
|
+
"types": "./dist/index.react.d.mts",
|
|
56
|
+
"default": "./dist/index.react.mjs"
|
|
57
57
|
},
|
|
58
58
|
"./worker": {
|
|
59
|
-
"types": "./dist/index.worker.d.
|
|
60
|
-
"default": "./dist/index.worker.
|
|
59
|
+
"types": "./dist/index.worker.d.mts",
|
|
60
|
+
"default": "./dist/index.worker.mjs"
|
|
61
61
|
},
|
|
62
62
|
"./schema": {
|
|
63
|
-
"types": "./dist/index.schema.d.
|
|
64
|
-
"default": "./dist/index.schema.
|
|
63
|
+
"types": "./dist/index.schema.d.mts",
|
|
64
|
+
"default": "./dist/index.schema.mjs"
|
|
65
65
|
},
|
|
66
66
|
"./package.json": "./package.json"
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@swc/core": "1.15.
|
|
70
|
-
"browserslist": "4.28.
|
|
69
|
+
"@swc/core": "1.15.32",
|
|
70
|
+
"browserslist": "4.28.2",
|
|
71
71
|
"kolorist": "1.8.0",
|
|
72
|
-
"semver": "7.7.
|
|
72
|
+
"semver": "7.7.4",
|
|
73
73
|
"zod": "4.3.6",
|
|
74
|
-
"@serwist/build": "9.5.
|
|
75
|
-
"
|
|
76
|
-
"serwist": "9.5.
|
|
77
|
-
"@serwist/
|
|
74
|
+
"@serwist/build": "9.5.8",
|
|
75
|
+
"serwist": "9.5.8",
|
|
76
|
+
"@serwist/window": "9.5.8",
|
|
77
|
+
"@serwist/utils": "9.5.8"
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"@types/node": "25.
|
|
81
|
-
"@types/react": "19.2.
|
|
80
|
+
"@types/node": "25.6.0",
|
|
81
|
+
"@types/react": "19.2.14",
|
|
82
82
|
"@types/semver": "7.7.1",
|
|
83
|
-
"esbuild": "0.
|
|
84
|
-
"esbuild-wasm": "0.
|
|
85
|
-
"next": "16.
|
|
86
|
-
"react": "19.2.
|
|
87
|
-
"react-dom": "19.2.
|
|
88
|
-
"
|
|
89
|
-
"type-fest": "5.
|
|
90
|
-
"typescript": "
|
|
91
|
-
"@serwist/configs": "9.5.6"
|
|
83
|
+
"esbuild": "0.28.0",
|
|
84
|
+
"esbuild-wasm": "0.28.0",
|
|
85
|
+
"next": "16.2.4",
|
|
86
|
+
"react": "19.2.5",
|
|
87
|
+
"react-dom": "19.2.5",
|
|
88
|
+
"tsdown": "0.21.10",
|
|
89
|
+
"type-fest": "5.6.0",
|
|
90
|
+
"typescript": "6.0.3"
|
|
92
91
|
},
|
|
93
92
|
"peerDependencies": {
|
|
94
93
|
"esbuild": ">=0.25.0 <1.0.0",
|
|
@@ -109,8 +108,8 @@
|
|
|
109
108
|
}
|
|
110
109
|
},
|
|
111
110
|
"scripts": {
|
|
112
|
-
"build": "rimraf dist && NODE_ENV=production
|
|
113
|
-
"dev": "
|
|
111
|
+
"build": "rimraf dist && NODE_ENV=production tsdown",
|
|
112
|
+
"dev": "tsdown --watch",
|
|
114
113
|
"lint": "biome lint ./src",
|
|
115
114
|
"qcheck": "biome check ./src",
|
|
116
115
|
"typecheck": "tsc"
|
package/src/index.schema.ts
CHANGED
|
@@ -17,6 +17,7 @@ export const turboPartial = z.strictObject({
|
|
|
17
17
|
})
|
|
18
18
|
.optional(),
|
|
19
19
|
useNativeEsbuild: z.boolean().prefault(process.platform === "win32"),
|
|
20
|
+
rebuildOnChange: z.boolean().prefault(true),
|
|
20
21
|
esbuildOptions: z.partialRecord(z.literal(SUPPORTED_ESBUILD_OPTIONS), z.any()).prefault({}),
|
|
21
22
|
});
|
|
22
23
|
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// Workaround for Next.js + Turbopack, while plugins are still
|
|
2
2
|
// not supported. This relies on Next.js Route Handlers and file
|
|
3
3
|
// name determinism.
|
|
4
|
+
import crypto from "node:crypto";
|
|
5
|
+
import fs from "node:fs";
|
|
4
6
|
import path from "node:path";
|
|
5
7
|
import { type BuildResult, getFileManifestEntries, rebasePath } from "@serwist/build";
|
|
6
8
|
import { SerwistConfigError, validationErrorMap } from "@serwist/build/schema";
|
|
@@ -93,6 +95,7 @@ export const createSerwistRoute = (options: InjectManifestOptions) => {
|
|
|
93
95
|
],
|
|
94
96
|
};
|
|
95
97
|
});
|
|
98
|
+
let lastHash: string | null = null;
|
|
96
99
|
let map: Map<string, string> | null = null;
|
|
97
100
|
// NOTE: ALL FILES MUST HAVE DETERMINISTIC NAMES. THIS IS BECAUSE
|
|
98
101
|
// THE FOLLOWING MAP IS LOADED SEPARATELY FOR `generateStaticParams`
|
|
@@ -157,10 +160,16 @@ export const createSerwistRoute = (options: InjectManifestOptions) => {
|
|
|
157
160
|
return [...map.keys()].map((e) => ({ path: path.relative(config.cwd, e) }));
|
|
158
161
|
};
|
|
159
162
|
const GET = async (_: Request, { params }: { params: Promise<{ path: string }> }) => {
|
|
160
|
-
// TODO: obviously, files get stale in development when we pull this off.
|
|
161
163
|
const { path: filePath } = await params;
|
|
162
164
|
const config = await validation;
|
|
163
|
-
if (
|
|
165
|
+
if (isDev && config.rebuildOnChange) {
|
|
166
|
+
const swContent = fs.readFileSync(config.swSrc, "utf-8");
|
|
167
|
+
const currentHash = crypto.createHash("sha256").update(swContent).digest("hex");
|
|
168
|
+
if (!map || lastHash !== currentHash) {
|
|
169
|
+
map = await loadMap(filePath);
|
|
170
|
+
lastHash = currentHash;
|
|
171
|
+
}
|
|
172
|
+
} else if (!map) map = await loadMap(filePath);
|
|
164
173
|
return new NextResponse(map.get(path.join(config.cwd, filePath)), {
|
|
165
174
|
headers: {
|
|
166
175
|
"Content-Type": contentTypeMap[path.extname(filePath)] || "text/plain",
|
package/src/lib/utils.ts
CHANGED
|
@@ -6,9 +6,9 @@ export const loadNextConfig = async (cwd: string, isDev: boolean) => {
|
|
|
6
6
|
// for loading `next/dist/server/config.js`.
|
|
7
7
|
const nextConfig = await import(/* webpackIgnore: true */ "next/dist/server/config.js");
|
|
8
8
|
// 1) what does `default.default` even mean
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
});
|
|
9
|
+
const loadConfig =
|
|
10
|
+
typeof nextConfig.default === "function" ? (nextConfig.default as unknown as typeof nextConfig.default.default) : nextConfig.default.default;
|
|
11
|
+
return loadConfig(nextPhase, cwd, { silent: false });
|
|
12
12
|
};
|
|
13
13
|
|
|
14
14
|
export const generateGlobPatterns = (distDir: string) => [
|
package/src/types.ts
CHANGED
|
@@ -64,6 +64,13 @@ export interface TurboPartial {
|
|
|
64
64
|
* to `false` if not on Windows, `true` otherwise.
|
|
65
65
|
*/
|
|
66
66
|
useNativeEsbuild?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Whether to automatically rebuild when source file changes
|
|
69
|
+
* while in development mode.
|
|
70
|
+
*
|
|
71
|
+
* @default true
|
|
72
|
+
*/
|
|
73
|
+
rebuildOnChange?: boolean;
|
|
67
74
|
/**
|
|
68
75
|
* Options to configure the esbuild instance used to bundle
|
|
69
76
|
* the service worker.
|
|
@@ -71,7 +78,7 @@ export interface TurboPartial {
|
|
|
71
78
|
esbuildOptions?: EsbuildNativeOptions | EsbuildWasmOptions;
|
|
72
79
|
}
|
|
73
80
|
|
|
74
|
-
export interface TurboResolved extends Require<TurboPartial, "cwd" | "useNativeEsbuild" | "esbuildOptions"> {}
|
|
81
|
+
export interface TurboResolved extends Require<TurboPartial, "cwd" | "useNativeEsbuild" | "rebuildOnChange" | "esbuildOptions"> {}
|
|
75
82
|
|
|
76
83
|
export type InjectManifestOptions = Prettify<
|
|
77
84
|
Omit<BasePartial & GlobPartial & InjectPartial & OptionalGlobDirectoryPartial & TurboPartial, "disablePrecacheManifest">
|
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { injectPartial, globPartial, basePartial, assertType } from '@serwist/build/schema';
|
|
3
|
-
import semver from 'semver';
|
|
4
|
-
import z from 'zod';
|
|
5
|
-
import { createRequire } from 'node:module';
|
|
6
|
-
import { green, bold, white, yellow, red } from 'kolorist';
|
|
7
|
-
import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } from 'next/constants.js';
|
|
8
|
-
|
|
9
|
-
const SUPPORTED_ESBUILD_OPTIONS = [
|
|
10
|
-
"sourcemap",
|
|
11
|
-
"legalComments",
|
|
12
|
-
"sourceRoot",
|
|
13
|
-
"sourcesContent",
|
|
14
|
-
"format",
|
|
15
|
-
"globalName",
|
|
16
|
-
"target",
|
|
17
|
-
"supported",
|
|
18
|
-
"define",
|
|
19
|
-
"treeShaking",
|
|
20
|
-
"minify",
|
|
21
|
-
"mangleProps",
|
|
22
|
-
"reserveProps",
|
|
23
|
-
"mangleQuoted",
|
|
24
|
-
"mangleCache",
|
|
25
|
-
"drop",
|
|
26
|
-
"dropLabels",
|
|
27
|
-
"minifyWhitespace",
|
|
28
|
-
"minifyIdentifiers",
|
|
29
|
-
"minifySyntax",
|
|
30
|
-
"lineLimit",
|
|
31
|
-
"charset",
|
|
32
|
-
"ignoreAnnotations",
|
|
33
|
-
"jsx",
|
|
34
|
-
"jsxFactory",
|
|
35
|
-
"jsxFragment",
|
|
36
|
-
"jsxImportSource",
|
|
37
|
-
"jsxDev",
|
|
38
|
-
"jsxSideEffects",
|
|
39
|
-
"pure",
|
|
40
|
-
"keepNames",
|
|
41
|
-
"absPaths",
|
|
42
|
-
"color",
|
|
43
|
-
"logLevel",
|
|
44
|
-
"logLimit",
|
|
45
|
-
"logOverride",
|
|
46
|
-
"tsconfigRaw",
|
|
47
|
-
"bundle",
|
|
48
|
-
"splitting",
|
|
49
|
-
"preserveSymlinks",
|
|
50
|
-
"external",
|
|
51
|
-
"packages",
|
|
52
|
-
"alias",
|
|
53
|
-
"loader",
|
|
54
|
-
"resolveExtensions",
|
|
55
|
-
"mainFields",
|
|
56
|
-
"conditions",
|
|
57
|
-
"allowOverwrite",
|
|
58
|
-
"tsconfig",
|
|
59
|
-
"outExtension",
|
|
60
|
-
"publicPath",
|
|
61
|
-
"inject",
|
|
62
|
-
"banner",
|
|
63
|
-
"footer",
|
|
64
|
-
"plugins"
|
|
65
|
-
];
|
|
66
|
-
|
|
67
|
-
const require$1 = createRequire(import.meta.url);
|
|
68
|
-
const NEXT_VERSION = require$1("next/package.json").version;
|
|
69
|
-
const LOGGING_SPACE_PREFIX = semver.gte(NEXT_VERSION, "16.0.0") ? "" : " ";
|
|
70
|
-
const prefixedLog = (prefixType, ...message)=>{
|
|
71
|
-
let prefix;
|
|
72
|
-
let consoleMethod;
|
|
73
|
-
switch(prefixType){
|
|
74
|
-
case "wait":
|
|
75
|
-
prefix = `${white(bold("○"))} (serwist)`;
|
|
76
|
-
consoleMethod = "log";
|
|
77
|
-
break;
|
|
78
|
-
case "error":
|
|
79
|
-
prefix = `${red(bold("X"))} (serwist)`;
|
|
80
|
-
consoleMethod = "error";
|
|
81
|
-
break;
|
|
82
|
-
case "warn":
|
|
83
|
-
prefix = `${yellow(bold("⚠"))} (serwist)`;
|
|
84
|
-
consoleMethod = "warn";
|
|
85
|
-
break;
|
|
86
|
-
case "info":
|
|
87
|
-
prefix = `${white(bold("○"))} (serwist)`;
|
|
88
|
-
consoleMethod = "log";
|
|
89
|
-
break;
|
|
90
|
-
case "event":
|
|
91
|
-
prefix = `${green(bold("✓"))} (serwist)`;
|
|
92
|
-
consoleMethod = "log";
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
if ((message[0] === "" || message[0] === undefined) && message.length === 1) {
|
|
96
|
-
message.shift();
|
|
97
|
-
}
|
|
98
|
-
if (message.length === 0) {
|
|
99
|
-
console[consoleMethod]("");
|
|
100
|
-
} else {
|
|
101
|
-
console[consoleMethod](`${LOGGING_SPACE_PREFIX}${prefix}`, ...message);
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
const wait = (...message)=>prefixedLog("wait", ...message);
|
|
105
|
-
const error = (...message)=>prefixedLog("error", ...message);
|
|
106
|
-
const warn = (...message)=>prefixedLog("warn", ...message);
|
|
107
|
-
const info = (...message)=>prefixedLog("info", ...message);
|
|
108
|
-
const event = (...message)=>prefixedLog("event", ...message);
|
|
109
|
-
|
|
110
|
-
var logger = /*#__PURE__*/Object.freeze({
|
|
111
|
-
__proto__: null,
|
|
112
|
-
NEXT_VERSION: NEXT_VERSION,
|
|
113
|
-
error: error,
|
|
114
|
-
event: event,
|
|
115
|
-
info: info,
|
|
116
|
-
wait: wait,
|
|
117
|
-
warn: warn
|
|
118
|
-
});
|
|
119
|
-
|
|
120
|
-
const loadNextConfig = async (cwd, isDev)=>{
|
|
121
|
-
const nextPhase = isDev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_BUILD;
|
|
122
|
-
// webpackIgnore is only supported by Next.js 15 and above, but it is necessary
|
|
123
|
-
const nextConfig = await import(/* webpackIgnore: true */ 'next/dist/server/config.js');
|
|
124
|
-
return nextConfig.default.default(nextPhase, cwd, {
|
|
125
|
-
silent: false
|
|
126
|
-
});
|
|
127
|
-
};
|
|
128
|
-
const generateGlobPatterns = (distDir)=>[
|
|
129
|
-
`${distDir}static/**/*.{js,css,html,ico,apng,png,avif,jpg,jpeg,jfif,pjpeg,pjp,gif,svg,webp,json,webmanifest}`,
|
|
130
|
-
"public/**/*"
|
|
131
|
-
];
|
|
132
|
-
|
|
133
|
-
const turboPartial = z.strictObject({
|
|
134
|
-
cwd: z.string().prefault(process.cwd()),
|
|
135
|
-
nextConfig: z.object({
|
|
136
|
-
assetPrefix: z.string().optional(),
|
|
137
|
-
basePath: z.string().optional(),
|
|
138
|
-
distDir: z.string().optional()
|
|
139
|
-
}).optional(),
|
|
140
|
-
useNativeEsbuild: z.boolean().prefault(process.platform === "win32"),
|
|
141
|
-
esbuildOptions: z.partialRecord(z.literal(SUPPORTED_ESBUILD_OPTIONS), z.any()).prefault({})
|
|
142
|
-
});
|
|
143
|
-
const injectManifestOptions = z.strictObject({
|
|
144
|
-
...basePartial.shape,
|
|
145
|
-
...globPartial.shape,
|
|
146
|
-
...injectPartial.shape,
|
|
147
|
-
...turboPartial.shape,
|
|
148
|
-
globPatterns: z.array(z.string()).optional(),
|
|
149
|
-
globDirectory: z.string().optional()
|
|
150
|
-
}).omit({
|
|
151
|
-
disablePrecacheManifest: true
|
|
152
|
-
}).transform(async (input)=>{
|
|
153
|
-
// webpackIgnore is only supported by Next.js 15 and above, but it is necessary
|
|
154
|
-
const nextConfig = semver.gte(NEXT_VERSION, "15.0.0") ? {
|
|
155
|
-
...await loadNextConfig(input.cwd, process.env.NODE_ENV === "development"),
|
|
156
|
-
...input.nextConfig
|
|
157
|
-
} : {
|
|
158
|
-
distDir: input.nextConfig?.distDir ?? ".next",
|
|
159
|
-
basePath: input.nextConfig?.basePath ?? "/",
|
|
160
|
-
assetPrefix: input.nextConfig?.assetPrefix ?? input.nextConfig?.basePath ?? ""
|
|
161
|
-
};
|
|
162
|
-
let distDir = nextConfig.distDir;
|
|
163
|
-
if (distDir[0] === "/") distDir = distDir.slice(1);
|
|
164
|
-
if (distDir[distDir.length - 1] !== "/") distDir += "/";
|
|
165
|
-
return {
|
|
166
|
-
...input,
|
|
167
|
-
swSrc: path.isAbsolute(input.swSrc) ? input.swSrc : path.join(input.cwd, input.swSrc),
|
|
168
|
-
globPatterns: input.globPatterns ?? generateGlobPatterns(distDir),
|
|
169
|
-
globDirectory: input.globDirectory ?? input.cwd,
|
|
170
|
-
dontCacheBustURLsMatching: input.dontCacheBustURLsMatching ?? new RegExp(`^${distDir}static/`),
|
|
171
|
-
nextConfig: {
|
|
172
|
-
...nextConfig,
|
|
173
|
-
distDir,
|
|
174
|
-
basePath: nextConfig.basePath || "/"
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
});
|
|
178
|
-
assertType();
|
|
179
|
-
assertType();
|
|
180
|
-
assertType();
|
|
181
|
-
assertType();
|
|
182
|
-
|
|
183
|
-
export { injectManifestOptions as i, logger as l, turboPartial as t };
|
package/dist/index.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { NextConfig } from "next";
|
|
2
|
-
import { NextResponse } from "next/server.js";
|
|
3
|
-
import type { InjectManifestOptions } from "./types.js";
|
|
4
|
-
/**
|
|
5
|
-
* Creates a Route Handler for Serwist files.
|
|
6
|
-
* @param options Options for {@linkcode getFileManifestEntries}.
|
|
7
|
-
*/
|
|
8
|
-
export declare const createSerwistRoute: (options: InjectManifestOptions) => {
|
|
9
|
-
dynamic: "force-static";
|
|
10
|
-
dynamicParams: false;
|
|
11
|
-
revalidate: false;
|
|
12
|
-
generateStaticParams: () => Promise<{
|
|
13
|
-
path: string;
|
|
14
|
-
}[]>;
|
|
15
|
-
GET: (_: Request, { params }: {
|
|
16
|
-
params: Promise<{
|
|
17
|
-
path: string;
|
|
18
|
-
}>;
|
|
19
|
-
}) => Promise<NextResponse<unknown>>;
|
|
20
|
-
};
|
|
21
|
-
export declare const withSerwist: (nextConfig?: NextConfig) => NextConfig;
|
|
22
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK9C,OAAO,KAAK,EAAE,qBAAqB,EAAiC,MAAM,YAAY,CAAC;AAuCvF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,SAAS,qBAAqB;;;;;;;aAmGzC,OAAO,cAAc;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;CAajF,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,aAAY,UAAe,KAAG,UAGxD,CAAC"}
|
package/dist/index.js
DELETED
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import { rebasePath, getFileManifestEntries } from '@serwist/build';
|
|
3
|
-
import { validationErrorMap, SerwistConfigError } from '@serwist/build/schema';
|
|
4
|
-
import { browserslistToEsbuild } from '@serwist/utils';
|
|
5
|
-
import browserslist from 'browserslist';
|
|
6
|
-
import { cyan, dim, yellow } from 'kolorist';
|
|
7
|
-
import { MODERN_BROWSERSLIST_TARGET } from 'next/constants.js';
|
|
8
|
-
import { NextResponse } from 'next/server.js';
|
|
9
|
-
import { z } from 'zod';
|
|
10
|
-
import { i as injectManifestOptions, l as logger } from './chunks/index.schema.js';
|
|
11
|
-
import 'semver';
|
|
12
|
-
import 'node:module';
|
|
13
|
-
|
|
14
|
-
let esbuildWasm = null;
|
|
15
|
-
let esbuildNative = null;
|
|
16
|
-
const logSerwistResult = (filePath, buildResult)=>{
|
|
17
|
-
const { count, size, warnings } = buildResult;
|
|
18
|
-
const hasWarnings = warnings && warnings.length > 0;
|
|
19
|
-
if (filePath === "sw.js" && (hasWarnings || count > 0)) {
|
|
20
|
-
logger[hasWarnings ? "warn" : "event"](`${cyan(count)} precache entries ${dim(`(${(size / 1024).toFixed(2)} KiB)`)}${hasWarnings ? `\n${yellow([
|
|
21
|
-
"⚠ warnings",
|
|
22
|
-
...warnings.map((w)=>` ${w}`),
|
|
23
|
-
""
|
|
24
|
-
].join("\n"))}` : ""}`);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
const validateGetManifestOptions = async (input)=>{
|
|
28
|
-
const result = await injectManifestOptions.spa(input, {
|
|
29
|
-
error: validationErrorMap
|
|
30
|
-
});
|
|
31
|
-
if (!result.success) {
|
|
32
|
-
throw new SerwistConfigError({
|
|
33
|
-
moduleName: "@serwist/turbopack",
|
|
34
|
-
message: z.prettifyError(result.error)
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
return result.data;
|
|
38
|
-
};
|
|
39
|
-
const isDev = process.env.NODE_ENV === "development";
|
|
40
|
-
const contentTypeMap = {
|
|
41
|
-
".js": "application/javascript",
|
|
42
|
-
".map": "application/json; charset=UTF-8"
|
|
43
|
-
};
|
|
44
|
-
const createSerwistRoute = (options)=>{
|
|
45
|
-
const dynamic = "force-static", dynamicParams = false, revalidate = false;
|
|
46
|
-
const validation = validateGetManifestOptions(options).then((config)=>{
|
|
47
|
-
return {
|
|
48
|
-
...config,
|
|
49
|
-
disablePrecacheManifest: isDev,
|
|
50
|
-
additionalPrecacheEntries: isDev ? [] : config.additionalPrecacheEntries,
|
|
51
|
-
globIgnores: [
|
|
52
|
-
...config.globIgnores,
|
|
53
|
-
rebasePath({
|
|
54
|
-
file: config.swSrc,
|
|
55
|
-
baseDirectory: config.globDirectory
|
|
56
|
-
})
|
|
57
|
-
],
|
|
58
|
-
manifestTransforms: [
|
|
59
|
-
...config.manifestTransforms ?? [],
|
|
60
|
-
async (manifestEntries)=>{
|
|
61
|
-
const manifest = manifestEntries.map((m)=>{
|
|
62
|
-
if (m.url.startsWith(config.nextConfig.distDir)) {
|
|
63
|
-
m.url = `${config.nextConfig.assetPrefix}/_next/${m.url.slice(config.nextConfig.distDir.length)}`;
|
|
64
|
-
}
|
|
65
|
-
if (m.url.startsWith("public/")) {
|
|
66
|
-
m.url = path.posix.join(config.nextConfig.basePath, m.url.slice(7));
|
|
67
|
-
}
|
|
68
|
-
return m;
|
|
69
|
-
});
|
|
70
|
-
return {
|
|
71
|
-
manifest,
|
|
72
|
-
warnings: []
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
]
|
|
76
|
-
};
|
|
77
|
-
});
|
|
78
|
-
let map = null;
|
|
79
|
-
const loadMap = async (filePath)=>{
|
|
80
|
-
const config = await validation;
|
|
81
|
-
const { count, size, manifestEntries, warnings } = await getFileManifestEntries(config);
|
|
82
|
-
const injectionPoint = config.injectionPoint || "";
|
|
83
|
-
const manifestString = manifestEntries === undefined ? "undefined" : JSON.stringify(manifestEntries, null, 2);
|
|
84
|
-
const log = (type, ...message)=>{
|
|
85
|
-
if (filePath === "sw.js") {
|
|
86
|
-
logger[type](...message);
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
let esbuild;
|
|
90
|
-
if (config.useNativeEsbuild) {
|
|
91
|
-
log("info", "Using esbuild to bundle the service worker.");
|
|
92
|
-
if (!esbuildNative) esbuildNative = import(/* webpackIgnore: true */ 'esbuild');
|
|
93
|
-
esbuild = await esbuildNative;
|
|
94
|
-
} else {
|
|
95
|
-
log("info", "Using esbuild-wasm to bundle the service worker.");
|
|
96
|
-
if (!esbuildWasm) esbuildWasm = import(/* webpackIgnore: true */ 'esbuild-wasm');
|
|
97
|
-
esbuild = await esbuildWasm;
|
|
98
|
-
}
|
|
99
|
-
logSerwistResult(filePath, {
|
|
100
|
-
count,
|
|
101
|
-
size,
|
|
102
|
-
warnings
|
|
103
|
-
});
|
|
104
|
-
const result = await esbuild.build({
|
|
105
|
-
sourcemap: true,
|
|
106
|
-
format: "esm",
|
|
107
|
-
treeShaking: true,
|
|
108
|
-
minify: !isDev,
|
|
109
|
-
bundle: true,
|
|
110
|
-
...config.esbuildOptions,
|
|
111
|
-
target: config.esbuildOptions?.target ?? browserslistToEsbuild(browserslist, config.cwd, MODERN_BROWSERSLIST_TARGET),
|
|
112
|
-
platform: "browser",
|
|
113
|
-
define: {
|
|
114
|
-
...config.esbuildOptions.define,
|
|
115
|
-
...injectionPoint ? {
|
|
116
|
-
[injectionPoint]: manifestString
|
|
117
|
-
} : {}
|
|
118
|
-
},
|
|
119
|
-
outdir: config.cwd,
|
|
120
|
-
write: false,
|
|
121
|
-
entryNames: "[name]",
|
|
122
|
-
assetNames: "[name]-[hash]",
|
|
123
|
-
chunkNames: "[name]-[hash]",
|
|
124
|
-
entryPoints: [
|
|
125
|
-
{
|
|
126
|
-
in: config.swSrc,
|
|
127
|
-
out: "sw"
|
|
128
|
-
}
|
|
129
|
-
]
|
|
130
|
-
});
|
|
131
|
-
if (result.errors.length) {
|
|
132
|
-
console.error("Failed to build the service worker.", result.errors);
|
|
133
|
-
throw new Error();
|
|
134
|
-
}
|
|
135
|
-
if (result.warnings.length) {
|
|
136
|
-
console.warn(result.warnings);
|
|
137
|
-
}
|
|
138
|
-
return new Map(result.outputFiles.map((e)=>[
|
|
139
|
-
e.path,
|
|
140
|
-
e.text
|
|
141
|
-
]));
|
|
142
|
-
};
|
|
143
|
-
const generateStaticParams = async ()=>{
|
|
144
|
-
const config = await validation;
|
|
145
|
-
if (!map) map = await loadMap("root");
|
|
146
|
-
return [
|
|
147
|
-
...map.keys()
|
|
148
|
-
].map((e)=>({
|
|
149
|
-
path: path.relative(config.cwd, e)
|
|
150
|
-
}));
|
|
151
|
-
};
|
|
152
|
-
const GET = async (_, { params })=>{
|
|
153
|
-
const { path: filePath } = await params;
|
|
154
|
-
const config = await validation;
|
|
155
|
-
if (!map) map = await loadMap(filePath);
|
|
156
|
-
return new NextResponse(map.get(path.join(config.cwd, filePath)), {
|
|
157
|
-
headers: {
|
|
158
|
-
"Content-Type": contentTypeMap[path.extname(filePath)] || "text/plain",
|
|
159
|
-
"Service-Worker-Allowed": "/"
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
};
|
|
163
|
-
return {
|
|
164
|
-
dynamic,
|
|
165
|
-
dynamicParams,
|
|
166
|
-
revalidate,
|
|
167
|
-
generateStaticParams,
|
|
168
|
-
GET
|
|
169
|
-
};
|
|
170
|
-
};
|
|
171
|
-
const withSerwist = (nextConfig = {})=>({
|
|
172
|
-
...nextConfig,
|
|
173
|
-
serverExternalPackages: [
|
|
174
|
-
...nextConfig.serverExternalPackages ?? [],
|
|
175
|
-
"esbuild",
|
|
176
|
-
"esbuild-wasm"
|
|
177
|
-
]
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
export { createSerwistRoute, withSerwist };
|
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"}
|