@serwist/turbopack 9.5.8 → 9.5.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.schema-RVDaKxz4.js","names":["z"],"sources":["../../src/lib/constants.ts","../../src/lib/logger.ts","../../src/lib/utils.ts","../../src/index.schema.ts"],"sourcesContent":["import type { BuildOptions } from \"esbuild-wasm\";\n\nexport const SUPPORTED_ESBUILD_OPTIONS = [\n // CommonOptions\n \"sourcemap\",\n \"legalComments\",\n \"sourceRoot\",\n \"sourcesContent\",\n \"format\",\n \"globalName\",\n \"target\",\n \"supported\",\n \"define\",\n \"treeShaking\",\n \"minify\",\n \"mangleProps\",\n \"reserveProps\",\n \"mangleQuoted\",\n \"mangleCache\",\n \"drop\",\n \"dropLabels\",\n \"minifyWhitespace\",\n \"minifyIdentifiers\",\n \"minifySyntax\",\n \"lineLimit\",\n \"charset\",\n \"ignoreAnnotations\",\n \"jsx\",\n \"jsxFactory\",\n \"jsxFragment\",\n \"jsxImportSource\",\n \"jsxDev\",\n \"jsxSideEffects\",\n \"pure\",\n \"keepNames\",\n \"absPaths\",\n \"color\",\n \"logLevel\",\n \"logLimit\",\n \"logOverride\",\n \"tsconfigRaw\",\n // BuildOptions\n \"bundle\",\n \"splitting\",\n \"preserveSymlinks\",\n \"external\",\n \"packages\",\n \"alias\",\n \"loader\",\n \"resolveExtensions\",\n \"mainFields\",\n \"conditions\",\n \"allowOverwrite\",\n \"tsconfig\",\n \"outExtension\",\n \"publicPath\",\n \"inject\",\n \"banner\",\n \"footer\",\n \"plugins\",\n] as const satisfies readonly (keyof BuildOptions)[];\n","import { createRequire } from \"node:module\";\nimport { bold, green, red, white, yellow } from \"kolorist\";\nimport semver from \"semver\";\n\nconst require = createRequire(import.meta.url);\n\nexport const NEXT_VERSION = require(\"next/package.json\").version as string;\n\nconst LOGGING_SPACE_PREFIX = semver.gte(NEXT_VERSION, \"16.0.0\") ? \"\" : \" \";\n\nexport type LoggingMethods = \"wait\" | \"error\" | \"warn\" | \"info\" | \"event\";\n\nconst prefixedLog = (prefixType: LoggingMethods, ...message: any[]) => {\n let prefix: string;\n let consoleMethod: keyof Console;\n\n switch (prefixType) {\n case \"wait\":\n prefix = `${white(bold(\"○\"))} (serwist)`;\n consoleMethod = \"log\";\n break;\n case \"error\":\n prefix = `${red(bold(\"X\"))} (serwist)`;\n consoleMethod = \"error\";\n break;\n case \"warn\":\n prefix = `${yellow(bold(\"⚠\"))} (serwist)`;\n consoleMethod = \"warn\";\n break;\n case \"info\":\n prefix = `${white(bold(\"○\"))} (serwist)`;\n consoleMethod = \"log\";\n break;\n case \"event\":\n prefix = `${green(bold(\"✓\"))} (serwist)`;\n consoleMethod = \"log\";\n break;\n }\n\n if ((message[0] === \"\" || message[0] === undefined) && message.length === 1) {\n message.shift();\n }\n\n // If there's no message, don't print the prefix but a new line\n if (message.length === 0) {\n console[consoleMethod](\"\");\n } else {\n console[consoleMethod](`${LOGGING_SPACE_PREFIX}${prefix}`, ...message);\n }\n};\n\nexport const wait = (...message: any[]) => prefixedLog(\"wait\", ...message);\n\nexport const error = (...message: any[]) => prefixedLog(\"error\", ...message);\n\nexport const warn = (...message: any[]) => prefixedLog(\"warn\", ...message);\n\nexport const info = (...message: any[]) => prefixedLog(\"info\", ...message);\n\nexport const event = (...message: any[]) => prefixedLog(\"event\", ...message);\n","import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } from \"next/constants.js\";\n\nexport const loadNextConfig = async (cwd: string, isDev: boolean) => {\n const nextPhase = isDev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_BUILD;\n // webpackIgnore is only supported by Next.js 15 and above, but it is necessary\n // for loading `next/dist/server/config.js`.\n const nextConfig = await import(/* webpackIgnore: true */ \"next/dist/server/config.js\");\n // 1) what does `default.default` even mean\n const loadConfig =\n typeof nextConfig.default === \"function\" ? (nextConfig.default as unknown as typeof nextConfig.default.default) : nextConfig.default.default;\n return loadConfig(nextPhase, cwd, { silent: false });\n};\n\nexport const generateGlobPatterns = (distDir: string) => [\n `${distDir}static/**/*.{js,css,html,ico,apng,png,avif,jpg,jpeg,jfif,pjpeg,pjp,gif,svg,webp,json,webmanifest}`,\n \"public/**/*\",\n];\n","import path from \"node:path\";\nimport { assertType, basePartial, type Equals, globPartial, injectPartial } from \"@serwist/build/schema\";\nimport semver from \"semver\";\nimport z from \"zod\";\nimport { SUPPORTED_ESBUILD_OPTIONS } from \"./lib/constants.js\";\nimport { NEXT_VERSION } from \"./lib/logger.js\";\nimport { generateGlobPatterns, loadNextConfig } from \"./lib/utils.js\";\nimport type { InjectManifestOptions, InjectManifestOptionsComplete, TurboPartial, TurboResolved } from \"./types.js\";\n\nexport const turboPartial = z.strictObject({\n cwd: z.string().prefault(process.cwd()),\n nextConfig: z\n .object({\n assetPrefix: z.string().optional(),\n basePath: z.string().optional(),\n distDir: z.string().optional(),\n })\n .optional(),\n useNativeEsbuild: z.boolean().prefault(process.platform === \"win32\"),\n rebuildOnChange: z.boolean().prefault(true),\n esbuildOptions: z.partialRecord(z.literal(SUPPORTED_ESBUILD_OPTIONS), z.any()).prefault({}),\n});\n\nexport const injectManifestOptions = z\n .strictObject({\n ...basePartial.shape,\n ...globPartial.shape,\n ...injectPartial.shape,\n ...turboPartial.shape,\n globPatterns: z.array(z.string()).optional(),\n globDirectory: z.string().optional(),\n })\n .omit({ disablePrecacheManifest: true })\n .transform(async (input) => {\n // TODO: remove in semver check in Serwist 10\n // webpackIgnore is only supported by Next.js 15 and above, but it is necessary\n // for loading `next/dist/server/config.js`.\n const nextConfig = semver.gte(NEXT_VERSION, \"15.0.0\")\n ? {\n ...(await loadNextConfig(input.cwd, process.env.NODE_ENV === \"development\")),\n ...input.nextConfig,\n }\n : {\n distDir: input.nextConfig?.distDir ?? \".next\",\n basePath: input.nextConfig?.basePath ?? \"/\",\n assetPrefix: input.nextConfig?.assetPrefix ?? input.nextConfig?.basePath ?? \"\",\n };\n let distDir = nextConfig.distDir;\n if (distDir[0] === \"/\") distDir = distDir.slice(1);\n if (distDir[distDir.length - 1] !== \"/\") distDir += \"/\";\n return {\n ...input,\n swSrc: path.isAbsolute(input.swSrc) ? input.swSrc : path.join(input.cwd, input.swSrc),\n globPatterns: input.globPatterns ?? generateGlobPatterns(distDir),\n globDirectory: input.globDirectory ?? input.cwd,\n dontCacheBustURLsMatching: input.dontCacheBustURLsMatching ?? new RegExp(`^${distDir}static/`),\n nextConfig: {\n ...nextConfig,\n distDir,\n // Next.js, by default, set `basePath` to an empty string.\n basePath: nextConfig.basePath || \"/\",\n },\n };\n });\n\nassertType<Equals<TurboPartial, z.input<typeof turboPartial>>>();\nassertType<Equals<TurboResolved, z.output<typeof turboPartial>>>();\nassertType<Equals<InjectManifestOptions, z.input<typeof injectManifestOptions>>>();\nassertType<Equals<InjectManifestOptionsComplete, z.output<typeof injectManifestOptions>>>();\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.schema-RVDaKxz4.js","names":["BuildOptions","SUPPORTED_ESBUILD_OPTIONS","const","createRequire","bold","green","red","white","yellow","semver","require","import","meta","url","NEXT_VERSION","version","LOGGING_SPACE_PREFIX","gte","LoggingMethods","prefixedLog","prefixType","message","prefix","consoleMethod","Console","undefined","length","shift","console","wait","error","warn","info","event","PHASE_DEVELOPMENT_SERVER","PHASE_PRODUCTION_BUILD","loadNextConfig","cwd","isDev","nextPhase","nextConfig","loadConfig","default","silent","generateGlobPatterns","distDir","path","assertType","basePartial","Equals","globPartial","injectPartial","semver","z","SUPPORTED_ESBUILD_OPTIONS","NEXT_VERSION","generateGlobPatterns","loadNextConfig","InjectManifestOptions","InjectManifestOptionsComplete","TurboPartial","TurboResolved","turboPartial","strictObject","cwd","string","prefault","process","nextConfig","object","assetPrefix","optional","basePath","distDir","useNativeEsbuild","boolean","platform","rebuildOnChange","esbuildOptions","partialRecord","literal","any","injectManifestOptions","shape","globPatterns","array","globDirectory","omit","disablePrecacheManifest","transform","input","gte","env","NODE_ENV","slice","length","swSrc","isAbsolute","join","dontCacheBustURLsMatching","RegExp","output"],"sources":["../../src/lib/constants.ts","../../src/lib/logger.ts","../../src/lib/utils.ts","../../src/index.schema.ts"],"sourcesContent":["import type { BuildOptions } from \"esbuild-wasm\";\n\nexport const SUPPORTED_ESBUILD_OPTIONS = [\n // CommonOptions\n \"sourcemap\",\n \"legalComments\",\n \"sourceRoot\",\n \"sourcesContent\",\n \"format\",\n \"globalName\",\n \"target\",\n \"supported\",\n \"define\",\n \"treeShaking\",\n \"minify\",\n \"mangleProps\",\n \"reserveProps\",\n \"mangleQuoted\",\n \"mangleCache\",\n \"drop\",\n \"dropLabels\",\n \"minifyWhitespace\",\n \"minifyIdentifiers\",\n \"minifySyntax\",\n \"lineLimit\",\n \"charset\",\n \"ignoreAnnotations\",\n \"jsx\",\n \"jsxFactory\",\n \"jsxFragment\",\n \"jsxImportSource\",\n \"jsxDev\",\n \"jsxSideEffects\",\n \"pure\",\n \"keepNames\",\n \"absPaths\",\n \"color\",\n \"logLevel\",\n \"logLimit\",\n \"logOverride\",\n \"tsconfigRaw\",\n // BuildOptions\n \"bundle\",\n \"splitting\",\n \"preserveSymlinks\",\n \"external\",\n \"packages\",\n \"alias\",\n \"loader\",\n \"resolveExtensions\",\n \"mainFields\",\n \"conditions\",\n \"allowOverwrite\",\n \"tsconfig\",\n \"outExtension\",\n \"publicPath\",\n \"inject\",\n \"banner\",\n \"footer\",\n \"plugins\",\n] as const satisfies readonly (keyof BuildOptions)[];\n","import { createRequire } from \"node:module\";\nimport { bold, green, red, white, yellow } from \"kolorist\";\nimport semver from \"semver\";\n\nconst require = createRequire(import.meta.url);\n\nexport const NEXT_VERSION = require(\"next/package.json\").version as string;\n\nconst LOGGING_SPACE_PREFIX = semver.gte(NEXT_VERSION, \"16.0.0\") ? \"\" : \" \";\n\nexport type LoggingMethods = \"wait\" | \"error\" | \"warn\" | \"info\" | \"event\";\n\nconst prefixedLog = (prefixType: LoggingMethods, ...message: any[]) => {\n let prefix: string;\n let consoleMethod: keyof Console;\n\n switch (prefixType) {\n case \"wait\":\n prefix = `${white(bold(\"○\"))} (serwist)`;\n consoleMethod = \"log\";\n break;\n case \"error\":\n prefix = `${red(bold(\"X\"))} (serwist)`;\n consoleMethod = \"error\";\n break;\n case \"warn\":\n prefix = `${yellow(bold(\"⚠\"))} (serwist)`;\n consoleMethod = \"warn\";\n break;\n case \"info\":\n prefix = `${white(bold(\"○\"))} (serwist)`;\n consoleMethod = \"log\";\n break;\n case \"event\":\n prefix = `${green(bold(\"✓\"))} (serwist)`;\n consoleMethod = \"log\";\n break;\n }\n\n if ((message[0] === \"\" || message[0] === undefined) && message.length === 1) {\n message.shift();\n }\n\n // If there's no message, don't print the prefix but a new line\n if (message.length === 0) {\n console[consoleMethod](\"\");\n } else {\n console[consoleMethod](`${LOGGING_SPACE_PREFIX}${prefix}`, ...message);\n }\n};\n\nexport const wait = (...message: any[]) => prefixedLog(\"wait\", ...message);\n\nexport const error = (...message: any[]) => prefixedLog(\"error\", ...message);\n\nexport const warn = (...message: any[]) => prefixedLog(\"warn\", ...message);\n\nexport const info = (...message: any[]) => prefixedLog(\"info\", ...message);\n\nexport const event = (...message: any[]) => prefixedLog(\"event\", ...message);\n","import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } from \"next/constants.js\";\n\nexport const loadNextConfig = async (cwd: string, isDev: boolean) => {\n const nextPhase = isDev ? PHASE_DEVELOPMENT_SERVER : PHASE_PRODUCTION_BUILD;\n // webpackIgnore is only supported by Next.js 15 and above, but it is necessary\n // for loading `next/dist/server/config.js`.\n const nextConfig = await import(/* webpackIgnore: true */ \"next/dist/server/config.js\");\n // 1) what does `default.default` even mean\n const loadConfig =\n typeof nextConfig.default === \"function\" ? (nextConfig.default as unknown as typeof nextConfig.default.default) : nextConfig.default.default;\n return loadConfig(nextPhase, cwd, { silent: false });\n};\n\nexport const generateGlobPatterns = (distDir: string) => [\n `${distDir}static/**/*.{js,css,html,ico,apng,png,avif,jpg,jpeg,jfif,pjpeg,pjp,gif,svg,webp,json,webmanifest}`,\n \"public/**/*\",\n];\n","import path from \"node:path\";\nimport { assertType, basePartial, type Equals, globPartial, injectPartial } from \"@serwist/build/schema\";\nimport semver from \"semver\";\nimport z from \"zod\";\nimport { SUPPORTED_ESBUILD_OPTIONS } from \"./lib/constants.js\";\nimport { NEXT_VERSION } from \"./lib/logger.js\";\nimport { generateGlobPatterns, loadNextConfig } from \"./lib/utils.js\";\nimport type { InjectManifestOptions, InjectManifestOptionsComplete, TurboPartial, TurboResolved } from \"./types.js\";\n\nexport const turboPartial = z.strictObject({\n cwd: z.string().prefault(process.cwd()),\n nextConfig: z\n .object({\n assetPrefix: z.string().optional(),\n basePath: z.string().optional(),\n distDir: z.string().optional(),\n })\n .optional(),\n useNativeEsbuild: z.boolean().prefault(process.platform === \"win32\"),\n rebuildOnChange: z.boolean().prefault(true),\n esbuildOptions: z.partialRecord(z.literal(SUPPORTED_ESBUILD_OPTIONS), z.any()).prefault({}),\n});\n\nexport const injectManifestOptions = z\n .strictObject({\n ...basePartial.shape,\n ...globPartial.shape,\n ...injectPartial.shape,\n ...turboPartial.shape,\n globPatterns: z.array(z.string()).optional(),\n globDirectory: z.string().optional(),\n })\n .omit({ disablePrecacheManifest: true })\n .transform(async (input) => {\n // TODO: remove in semver check in Serwist 10\n // webpackIgnore is only supported by Next.js 15 and above, but it is necessary\n // for loading `next/dist/server/config.js`.\n const nextConfig = semver.gte(NEXT_VERSION, \"15.0.0\")\n ? {\n ...(await loadNextConfig(input.cwd, process.env.NODE_ENV === \"development\")),\n ...input.nextConfig,\n }\n : {\n distDir: input.nextConfig?.distDir ?? \".next\",\n basePath: input.nextConfig?.basePath ?? \"/\",\n assetPrefix: input.nextConfig?.assetPrefix ?? input.nextConfig?.basePath ?? \"\",\n };\n let distDir = nextConfig.distDir;\n if (distDir[0] === \"/\") distDir = distDir.slice(1);\n if (distDir[distDir.length - 1] !== \"/\") distDir += \"/\";\n return {\n ...input,\n swSrc: path.isAbsolute(input.swSrc) ? input.swSrc : path.join(input.cwd, input.swSrc),\n globPatterns: input.globPatterns ?? generateGlobPatterns(distDir),\n globDirectory: input.globDirectory ?? input.cwd,\n dontCacheBustURLsMatching: input.dontCacheBustURLsMatching ?? new RegExp(`^${distDir}static/`),\n nextConfig: {\n ...nextConfig,\n distDir,\n // Next.js, by default, set `basePath` to an empty string.\n basePath: nextConfig.basePath || \"/\",\n },\n };\n });\n\nassertType<Equals<TurboPartial, z.input<typeof turboPartial>>>();\nassertType<Equals<TurboResolved, z.output<typeof turboPartial>>>();\nassertType<Equals<InjectManifestOptions, z.input<typeof injectManifestOptions>>>();\nassertType<Equals<InjectManifestOptionsComplete, z.output<typeof injectManifestOptions>>>();\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["// Workaround for Next.js + Turbopack, while plugins are still\n// not supported. This relies on Next.js Route Handlers and file\n// name determinism.\nimport crypto from \"node:crypto\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { type BuildResult, getFileManifestEntries, rebasePath } from \"@serwist/build\";\nimport { SerwistConfigError, validationErrorMap } from \"@serwist/build/schema\";\nimport { browserslistToEsbuild } from \"@serwist/utils\";\nimport browserslist from \"browserslist\";\nimport { cyan, dim, yellow } from \"kolorist\";\nimport type { NextConfig } from \"next\";\nimport { MODERN_BROWSERSLIST_TARGET } from \"next/constants.js\";\nimport { NextResponse } from \"next/server.js\";\nimport { z } from \"zod\";\nimport { injectManifestOptions } from \"./index.schema.js\";\nimport { logger } from \"./lib/index.js\";\nimport type { LoggingMethods } from \"./lib/logger.js\";\nimport type { InjectManifestOptions, InjectManifestOptionsComplete } from \"./types.js\";\n\nlet esbuildWasm: Promise<typeof import(\"esbuild-wasm\")> | null = null;\nlet esbuildNative: Promise<typeof import(\"esbuild\")> | null = null;\n\nconst logSerwistResult = (filePath: string, buildResult: Pick<BuildResult, \"count\" | \"size\" | \"warnings\">) => {\n const { count, size, warnings } = buildResult;\n const hasWarnings = warnings && warnings.length > 0;\n // The route is reinitiated for each `path` param, so we only log results\n // if we're prerendering for sw.js.\n if (filePath === \"sw.js\" && (hasWarnings || count > 0)) {\n logger[hasWarnings ? \"warn\" : \"event\"](\n `${cyan(count)} precache entries ${dim(`(${(size / 1024).toFixed(2)} KiB)`)}${\n hasWarnings ? `\\n${yellow([\"⚠ warnings\", ...warnings.map((w) => ` ${w}`), \"\"].join(\"\\n\"))}` : \"\"\n }`,\n );\n }\n};\n\nconst validateGetManifestOptions = async (input: unknown): Promise<InjectManifestOptionsComplete> => {\n const result = await injectManifestOptions.spa(input, {\n error: validationErrorMap,\n });\n if (!result.success) {\n throw new SerwistConfigError({\n moduleName: \"@serwist/turbopack\",\n message: z.prettifyError(result.error),\n });\n }\n return result.data;\n};\n\nconst isDev = process.env.NODE_ENV === \"development\";\n\nconst contentTypeMap: Record<string, string> = {\n \".js\": \"application/javascript\",\n \".map\": \"application/json; charset=UTF-8\",\n};\n\n/**\n * Creates a Route Handler for Serwist files.\n * @param options Options for {@linkcode getFileManifestEntries}.\n */\nexport const createSerwistRoute = (options: InjectManifestOptions) => {\n const dynamic = \"force-static\" as const,\n dynamicParams = false as const,\n revalidate = false as const;\n const validation = validateGetManifestOptions(options).then((config) => {\n return {\n ...config,\n disablePrecacheManifest: isDev,\n additionalPrecacheEntries: isDev ? [] : config.additionalPrecacheEntries,\n globIgnores: [\n ...config.globIgnores,\n // Make sure we leave swSrc out of the precache manifest.\n rebasePath({\n file: config.swSrc,\n baseDirectory: config.globDirectory,\n }),\n ],\n manifestTransforms: [\n ...(config.manifestTransforms ?? []),\n async (manifestEntries) => {\n const manifest = manifestEntries.map((m) => {\n // Replace all references to \"$(distDir)\" with \"$(assetPrefix)/_next/\".\n if (m.url.startsWith(config.nextConfig.distDir)) {\n m.url = `${config.nextConfig.assetPrefix}/_next/${m.url.slice(config.nextConfig.distDir.length)}`;\n }\n // Replace all references to public/ with \"$(basePath)/\".\n if (m.url.startsWith(\"public/\")) {\n m.url = path.posix.join(config.nextConfig.basePath, m.url.slice(7));\n }\n return m;\n });\n return { manifest, warnings: [] };\n },\n ],\n };\n });\n let lastHash: string | null = null;\n let map: Map<string, string> | null = null;\n // NOTE: ALL FILES MUST HAVE DETERMINISTIC NAMES. THIS IS BECAUSE\n // THE FOLLOWING MAP IS LOADED SEPARATELY FOR `generateStaticParams`\n // AND EVERY `GET` REQUEST TO EACH OF THE FILES.\n const loadMap = async (filePath: string) => {\n const config = await validation;\n const { count, size, manifestEntries, warnings } = await getFileManifestEntries(config);\n // See https://github.com/GoogleChrome/workbox/issues/2230\n const injectionPoint = config.injectionPoint || \"\";\n const manifestString = manifestEntries === undefined ? \"undefined\" : JSON.stringify(manifestEntries, null, 2);\n const log = (type: LoggingMethods, ...message: any[]) => {\n if (filePath === \"sw.js\") {\n logger[type](...message);\n }\n };\n let esbuild: typeof import(\"esbuild\");\n if (config.useNativeEsbuild) {\n log(\"info\", \"Using esbuild to bundle the service worker.\");\n if (!esbuildNative) esbuildNative = import(/* webpackIgnore: true */ \"esbuild\");\n esbuild = await esbuildNative;\n } else {\n log(\"info\", \"Using esbuild-wasm to bundle the service worker.\");\n if (!esbuildWasm) esbuildWasm = import(/* webpackIgnore: true */ \"esbuild-wasm\");\n esbuild = await esbuildWasm;\n }\n logSerwistResult(filePath, { count, size, warnings });\n const result = await esbuild.build({\n sourcemap: true,\n format: \"esm\",\n treeShaking: true,\n minify: !isDev,\n bundle: true,\n ...config.esbuildOptions,\n target: config.esbuildOptions?.target ?? browserslistToEsbuild(browserslist, config.cwd, MODERN_BROWSERSLIST_TARGET),\n platform: \"browser\",\n define: {\n ...config.esbuildOptions.define,\n ...(injectionPoint ? { [injectionPoint]: manifestString } : {}),\n },\n outdir: config.cwd,\n write: false,\n entryNames: \"[name]\",\n // Asset and chunk names must be at the top, as our path is `/serwist/[path]`,\n // not `/serwist/[...path]`, meaning that we can't resolve paths deeper\n // than one level.\n assetNames: \"[name]-[hash]\",\n chunkNames: \"[name]-[hash]\",\n entryPoints: [{ in: config.swSrc, out: \"sw\" }],\n });\n if (result.errors.length) {\n console.error(\"Failed to build the service worker.\", result.errors);\n throw new Error();\n }\n if (result.warnings.length) {\n console.warn(result.warnings);\n }\n return new Map(result.outputFiles.map((e) => [e.path, e.text]));\n };\n const generateStaticParams = async () => {\n const config = await validation;\n if (!map) map = await loadMap(\"root\");\n return [...map.keys()].map((e) => ({ path: path.relative(config.cwd, e) }));\n };\n const GET = async (_: Request, { params }: { params: Promise<{ path: string }> }) => {\n const { path: filePath } = await params;\n const config = await validation;\n if (isDev && config.rebuildOnChange) {\n const swContent = fs.readFileSync(config.swSrc, \"utf-8\");\n const currentHash = crypto.createHash(\"sha256\").update(swContent).digest(\"hex\");\n if (!map || lastHash !== currentHash) {\n map = await loadMap(filePath);\n lastHash = currentHash;\n }\n } else if (!map) map = await loadMap(filePath);\n return new NextResponse(map.get(path.join(config.cwd, filePath)), {\n headers: {\n \"Content-Type\": contentTypeMap[path.extname(filePath)] || \"text/plain\",\n \"Service-Worker-Allowed\": \"/\",\n },\n });\n };\n return { dynamic, dynamicParams, revalidate, generateStaticParams, GET };\n};\n\nexport const withSerwist = (nextConfig: NextConfig = {}): NextConfig => ({\n ...nextConfig,\n serverExternalPackages: [...(nextConfig.serverExternalPackages ?? []), \"esbuild\", \"esbuild-wasm\"],\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["crypto","fs","path","BuildResult","getFileManifestEntries","rebasePath","SerwistConfigError","validationErrorMap","browserslistToEsbuild","browserslist","cyan","dim","yellow","NextConfig","MODERN_BROWSERSLIST_TARGET","NextResponse","z","injectManifestOptions","logger","LoggingMethods","InjectManifestOptions","InjectManifestOptionsComplete","esbuildWasm","Promise","esbuildNative","logSerwistResult","filePath","buildResult","Pick","count","size","warnings","hasWarnings","length","toFixed","map","w","join","validateGetManifestOptions","input","result","spa","error","success","moduleName","message","prettifyError","data","isDev","process","env","NODE_ENV","contentTypeMap","Record","createSerwistRoute","options","dynamic","const","dynamicParams","revalidate","validation","then","config","disablePrecacheManifest","additionalPrecacheEntries","globIgnores","file","swSrc","baseDirectory","globDirectory","manifestTransforms","manifestEntries","manifest","m","url","startsWith","nextConfig","distDir","assetPrefix","slice","posix","basePath","lastHash","Map","loadMap","injectionPoint","manifestString","undefined","JSON","stringify","log","type","esbuild","useNativeEsbuild","build","sourcemap","format","treeShaking","minify","bundle","esbuildOptions","target","cwd","platform","define","outdir","write","entryNames","assetNames","chunkNames","entryPoints","in","out","errors","console","Error","warn","outputFiles","e","text","generateStaticParams","keys","relative","GET","_","Request","params","rebuildOnChange","swContent","readFileSync","currentHash","createHash","update","digest","get","headers","extname","withSerwist","serverExternalPackages"],"sources":["../src/index.ts"],"sourcesContent":["// Workaround for Next.js + Turbopack, while plugins are still\n// not supported. This relies on Next.js Route Handlers and file\n// name determinism.\nimport crypto from \"node:crypto\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { type BuildResult, getFileManifestEntries, rebasePath } from \"@serwist/build\";\nimport { SerwistConfigError, validationErrorMap } from \"@serwist/build/schema\";\nimport { browserslistToEsbuild } from \"@serwist/utils\";\nimport browserslist from \"browserslist\";\nimport { cyan, dim, yellow } from \"kolorist\";\nimport type { NextConfig } from \"next\";\nimport { MODERN_BROWSERSLIST_TARGET } from \"next/constants.js\";\nimport { NextResponse } from \"next/server.js\";\nimport { z } from \"zod\";\nimport { injectManifestOptions } from \"./index.schema.js\";\nimport { logger } from \"./lib/index.js\";\nimport type { LoggingMethods } from \"./lib/logger.js\";\nimport type { InjectManifestOptions, InjectManifestOptionsComplete } from \"./types.js\";\n\nlet esbuildWasm: Promise<typeof import(\"esbuild-wasm\")> | null = null;\nlet esbuildNative: Promise<typeof import(\"esbuild\")> | null = null;\n\nconst logSerwistResult = (filePath: string, buildResult: Pick<BuildResult, \"count\" | \"size\" | \"warnings\">) => {\n const { count, size, warnings } = buildResult;\n const hasWarnings = warnings && warnings.length > 0;\n // The route is reinitiated for each `path` param, so we only log results\n // if we're prerendering for sw.js.\n if (filePath === \"sw.js\" && (hasWarnings || count > 0)) {\n logger[hasWarnings ? \"warn\" : \"event\"](\n `${cyan(count)} precache entries ${dim(`(${(size / 1024).toFixed(2)} KiB)`)}${\n hasWarnings ? `\\n${yellow([\"⚠ warnings\", ...warnings.map((w) => ` ${w}`), \"\"].join(\"\\n\"))}` : \"\"\n }`,\n );\n }\n};\n\nconst validateGetManifestOptions = async (input: unknown): Promise<InjectManifestOptionsComplete> => {\n const result = await injectManifestOptions.spa(input, {\n error: validationErrorMap,\n });\n if (!result.success) {\n throw new SerwistConfigError({\n moduleName: \"@serwist/turbopack\",\n message: z.prettifyError(result.error),\n });\n }\n return result.data;\n};\n\nconst isDev = process.env.NODE_ENV === \"development\";\n\nconst contentTypeMap: Record<string, string> = {\n \".js\": \"application/javascript\",\n \".map\": \"application/json; charset=UTF-8\",\n};\n\n/**\n * Creates a Route Handler for Serwist files.\n * @param options Options for {@linkcode getFileManifestEntries}.\n */\nexport const createSerwistRoute = (options: InjectManifestOptions) => {\n const dynamic = \"force-static\" as const,\n dynamicParams = false as const,\n revalidate = false as const;\n const validation = validateGetManifestOptions(options).then((config) => {\n return {\n ...config,\n disablePrecacheManifest: isDev,\n additionalPrecacheEntries: isDev ? [] : config.additionalPrecacheEntries,\n globIgnores: [\n ...config.globIgnores,\n // Make sure we leave swSrc out of the precache manifest.\n rebasePath({\n file: config.swSrc,\n baseDirectory: config.globDirectory,\n }),\n ],\n manifestTransforms: [\n ...(config.manifestTransforms ?? []),\n async (manifestEntries) => {\n const manifest = manifestEntries.map((m) => {\n // Replace all references to \"$(distDir)\" with \"$(assetPrefix)/_next/\".\n if (m.url.startsWith(config.nextConfig.distDir)) {\n m.url = `${config.nextConfig.assetPrefix}/_next/${m.url.slice(config.nextConfig.distDir.length)}`;\n }\n // Replace all references to public/ with \"$(basePath)/\".\n if (m.url.startsWith(\"public/\")) {\n m.url = path.posix.join(config.nextConfig.basePath, m.url.slice(7));\n }\n return m;\n });\n return { manifest, warnings: [] };\n },\n ],\n };\n });\n let lastHash: string | null = null;\n let map: Map<string, string> | null = null;\n // NOTE: ALL FILES MUST HAVE DETERMINISTIC NAMES. THIS IS BECAUSE\n // THE FOLLOWING MAP IS LOADED SEPARATELY FOR `generateStaticParams`\n // AND EVERY `GET` REQUEST TO EACH OF THE FILES.\n const loadMap = async (filePath: string) => {\n const config = await validation;\n const { count, size, manifestEntries, warnings } = await getFileManifestEntries(config);\n // See https://github.com/GoogleChrome/workbox/issues/2230\n const injectionPoint = config.injectionPoint || \"\";\n const manifestString = manifestEntries === undefined ? \"undefined\" : JSON.stringify(manifestEntries, null, 2);\n const log = (type: LoggingMethods, ...message: any[]) => {\n if (filePath === \"sw.js\") {\n logger[type](...message);\n }\n };\n let esbuild: typeof import(\"esbuild\");\n if (config.useNativeEsbuild) {\n log(\"info\", \"Using esbuild to bundle the service worker.\");\n if (!esbuildNative) esbuildNative = import(/* webpackIgnore: true */ \"esbuild\");\n esbuild = await esbuildNative;\n } else {\n log(\"info\", \"Using esbuild-wasm to bundle the service worker.\");\n if (!esbuildWasm) esbuildWasm = import(/* webpackIgnore: true */ \"esbuild-wasm\");\n esbuild = await esbuildWasm;\n }\n logSerwistResult(filePath, { count, size, warnings });\n const result = await esbuild.build({\n sourcemap: true,\n format: \"esm\",\n treeShaking: true,\n minify: !isDev,\n bundle: true,\n ...config.esbuildOptions,\n target: config.esbuildOptions?.target ?? browserslistToEsbuild(browserslist, config.cwd, MODERN_BROWSERSLIST_TARGET),\n platform: \"browser\",\n define: {\n ...config.esbuildOptions.define,\n ...(injectionPoint ? { [injectionPoint]: manifestString } : {}),\n },\n outdir: config.cwd,\n write: false,\n entryNames: \"[name]\",\n // Asset and chunk names must be at the top, as our path is `/serwist/[path]`,\n // not `/serwist/[...path]`, meaning that we can't resolve paths deeper\n // than one level.\n assetNames: \"[name]-[hash]\",\n chunkNames: \"[name]-[hash]\",\n entryPoints: [{ in: config.swSrc, out: \"sw\" }],\n });\n if (result.errors.length) {\n console.error(\"Failed to build the service worker.\", result.errors);\n throw new Error();\n }\n if (result.warnings.length) {\n console.warn(result.warnings);\n }\n return new Map(result.outputFiles.map((e) => [e.path, e.text]));\n };\n const generateStaticParams = async () => {\n const config = await validation;\n if (!map) map = await loadMap(\"root\");\n return [...map.keys()].map((e) => ({ path: path.relative(config.cwd, e) }));\n };\n const GET = async (_: Request, { params }: { params: Promise<{ path: string }> }) => {\n const { path: filePath } = await params;\n const config = await validation;\n if (isDev && config.rebuildOnChange) {\n const swContent = fs.readFileSync(config.swSrc, \"utf-8\");\n const currentHash = crypto.createHash(\"sha256\").update(swContent).digest(\"hex\");\n if (!map || lastHash !== currentHash) {\n map = await loadMap(filePath);\n lastHash = currentHash;\n }\n } else if (!map) map = await loadMap(filePath);\n return new NextResponse(map.get(path.join(config.cwd, filePath)), {\n headers: {\n \"Content-Type\": contentTypeMap[path.extname(filePath)] || \"text/plain\",\n \"Service-Worker-Allowed\": \"/\",\n },\n });\n };\n return { dynamic, dynamicParams, revalidate, generateStaticParams, GET };\n};\n\nexport const withSerwist = (nextConfig: NextConfig = {}): NextConfig => ({\n ...nextConfig,\n serverExternalPackages: [...(nextConfig.serverExternalPackages ?? []), \"esbuild\", \"esbuild-wasm\"],\n});\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Serwist } from "@serwist/window";
2
- import * as _$react from "react";
3
2
  import { ReactNode } from "react";
3
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
4
 
5
5
  //#region src/lib/context.d.ts
6
6
  interface SerwistContextValues {
@@ -36,7 +36,7 @@ declare function SerwistProvider({
36
36
  reloadOnOnline,
37
37
  options,
38
38
  children
39
- }: SerwistProviderProps): _$react.JSX.Element;
39
+ }: SerwistProviderProps): _$react_jsx_runtime0.JSX.Element;
40
40
  //#endregion
41
41
  export { SerwistProvider, SerwistProviderProps, useSerwist };
42
42
  //# sourceMappingURL=index.react.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.react.d.mts","names":[],"sources":["../src/lib/context.ts","../src/index.react.tsx"],"mappings":";;;;;UAGiB,oBAAA;EACf,OAAA,EAAS,OAAA;AAAA;AAAA,cAKE,UAAA,QAAU,oBAAA;;;UCJN,oBAAA;EACf,KAAA;EACA,OAAA;EACA,QAAA;EACA,iBAAA;EACA,cAAA;EACA,OAAA,GAAU,mBAAA;EACV,QAAA,GAAW,SAAA;AAAA;AAAA,QAGL,MAAA;EAAA,UACI,MAAA;IACR,OAAA,EAAS,OAAA;EAAA;AAAA;;AAZb;;;;iBAqBgB,eAAA,CAAA;EACd,KAAA;EACA,OAAA;EACA,QAAA;EACA,iBAAA;EACA,cAAA;EACA,OAAA;EACA;AAAA,GACC,oBAAA,GAAoB,OAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"index.react.d.mts","names":[],"sources":["../src/lib/context.ts","../src/index.react.tsx"],"mappings":";;;;;UAGiB,oBAAA;EACf,OAAA,EAAS,OAAA;AAAA;AAAA,cAKE,UAAA,QAAU,oBAAA;;;UCJN,oBAAA;EACf,KAAA;EACA,OAAA;EACA,QAAA;EACA,iBAAA;EACA,cAAA;EACA,OAAA,GAAU,mBAAA;EACV,QAAA,GAAW,SAAA;AAAA;AAAA,QAGL,MAAA;EAAA,UACI,MAAA;IACR,OAAA,EAAS,OAAA;EAAA;AAAA;;AAZb;;;;iBAqBgB,eAAA,CAAA;EACd,KAAA;EACA,OAAA;EACA,QAAA;EACA,iBAAA;EACA,cAAA;EACA,OAAA;EACA;AAAA,GACC,oBAAA,GAAoB,oBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,6 +1,8 @@
1
+ import { c } from "react/compiler-runtime";
1
2
  import { Serwist } from "@serwist/window";
2
3
  import { isCurrentPageOutOfScope } from "@serwist/window/internal";
3
4
  import { createContext, useContext, useEffect, useState } from "react";
5
+ import { jsx } from "react/jsx-runtime";
4
6
  //#region src/lib/context.ts
5
7
  const SerwistContext = createContext(null);
6
8
  const useSerwist = () => {
@@ -15,57 +17,118 @@ const useSerwist = () => {
15
17
  * @param options
16
18
  * @returns
17
19
  */
18
- function SerwistProvider({ swUrl, disable = false, register = true, cacheOnNavigation = true, reloadOnOnline = true, options, children }) {
19
- const [serwist] = useState(() => {
20
- if (typeof window === "undefined") return null;
21
- if (disable) return null;
22
- const scope = options?.scope || "/";
23
- if (!(window.serwist && window.serwist instanceof Serwist) && "serviceWorker" in navigator) {
24
- window.serwist = new Serwist(swUrl, {
25
- ...options,
26
- scope,
27
- type: options?.type || "module"
28
- });
29
- if (register && !isCurrentPageOutOfScope(scope)) window.serwist.register();
30
- }
31
- return window.serwist ?? null;
32
- });
33
- useEffect(() => {
34
- const cacheUrls = async (url) => {
35
- if (!window.navigator.onLine || !url) return;
36
- serwist?.messageSW({
37
- type: "CACHE_URLS",
38
- payload: { urlsToCache: [url] }
39
- });
20
+ function SerwistProvider(t0) {
21
+ const $ = c(17);
22
+ const { swUrl, disable: t1, register: t2, cacheOnNavigation: t3, reloadOnOnline: t4, options, children } = t0;
23
+ const disable = t1 === void 0 ? false : t1;
24
+ const register = t2 === void 0 ? true : t2;
25
+ const cacheOnNavigation = t3 === void 0 ? true : t3;
26
+ const reloadOnOnline = t4 === void 0 ? true : t4;
27
+ let t5;
28
+ if ($[0] !== disable || $[1] !== options || $[2] !== register || $[3] !== swUrl) {
29
+ t5 = () => {
30
+ if (typeof window === "undefined") return null;
31
+ if (disable) return null;
32
+ const scope = options?.scope || "/";
33
+ if (!(window.serwist && window.serwist instanceof Serwist) && "serviceWorker" in navigator) {
34
+ window.serwist = new Serwist(swUrl, {
35
+ ...options,
36
+ scope,
37
+ type: options?.type || "module"
38
+ });
39
+ if (register && !isCurrentPageOutOfScope(scope)) window.serwist.register();
40
+ }
41
+ return window.serwist ?? null;
40
42
  };
41
- const cacheCurrentPathname = () => cacheUrls(window.location.pathname);
42
- const pushState = history.pushState;
43
- const replaceState = history.replaceState;
44
- if (cacheOnNavigation) {
45
- history.pushState = (...args) => {
46
- pushState.apply(history, args);
47
- cacheUrls(args[2]);
43
+ $[0] = disable;
44
+ $[1] = options;
45
+ $[2] = register;
46
+ $[3] = swUrl;
47
+ $[4] = t5;
48
+ } else t5 = $[4];
49
+ const [serwist] = useState(t5);
50
+ let t6;
51
+ let t7;
52
+ if ($[5] !== cacheOnNavigation || $[6] !== serwist) {
53
+ t6 = () => {
54
+ const cacheUrls = async (url) => {
55
+ if (!window.navigator.onLine || !url) return;
56
+ serwist?.messageSW({
57
+ type: "CACHE_URLS",
58
+ payload: { urlsToCache: [url] }
59
+ });
48
60
  };
49
- history.replaceState = (...args) => {
50
- replaceState.apply(history, args);
51
- cacheUrls(args[2]);
61
+ const cacheCurrentPathname = () => cacheUrls(window.location.pathname);
62
+ const pushState = history.pushState;
63
+ const replaceState = history.replaceState;
64
+ if (cacheOnNavigation) {
65
+ history.pushState = (...t8) => {
66
+ const args = t8;
67
+ pushState.apply(history, args);
68
+ cacheUrls(args[2]);
69
+ };
70
+ history.replaceState = (...t9) => {
71
+ const args_0 = t9;
72
+ replaceState.apply(history, args_0);
73
+ cacheUrls(args_0[2]);
74
+ };
75
+ window.addEventListener("online", cacheCurrentPathname);
76
+ }
77
+ return () => {
78
+ history.pushState = pushState;
79
+ history.replaceState = replaceState;
80
+ window.removeEventListener("online", cacheCurrentPathname);
52
81
  };
53
- window.addEventListener("online", cacheCurrentPathname);
54
- }
55
- return () => {
56
- history.pushState = pushState;
57
- history.replaceState = replaceState;
58
- window.removeEventListener("online", cacheCurrentPathname);
59
82
  };
60
- }, [serwist, cacheOnNavigation]);
61
- useEffect(() => {
62
- const reload = () => location.reload();
63
- if (reloadOnOnline) window.addEventListener("online", reload);
64
- return () => {
65
- window.removeEventListener("online", reload);
83
+ t7 = [serwist, cacheOnNavigation];
84
+ $[5] = cacheOnNavigation;
85
+ $[6] = serwist;
86
+ $[7] = t6;
87
+ $[8] = t7;
88
+ } else {
89
+ t6 = $[7];
90
+ t7 = $[8];
91
+ }
92
+ useEffect(t6, t7);
93
+ let t8;
94
+ let t9;
95
+ if ($[9] !== reloadOnOnline) {
96
+ t8 = () => {
97
+ const reload = _temp;
98
+ if (reloadOnOnline) window.addEventListener("online", reload);
99
+ return () => {
100
+ window.removeEventListener("online", reload);
101
+ };
66
102
  };
67
- }, [reloadOnOnline]);
68
- return <SerwistContext.Provider value={{ serwist }}>{children}</SerwistContext.Provider>;
103
+ t9 = [reloadOnOnline];
104
+ $[9] = reloadOnOnline;
105
+ $[10] = t8;
106
+ $[11] = t9;
107
+ } else {
108
+ t8 = $[10];
109
+ t9 = $[11];
110
+ }
111
+ useEffect(t8, t9);
112
+ let t10;
113
+ if ($[12] !== serwist) {
114
+ t10 = { serwist };
115
+ $[12] = serwist;
116
+ $[13] = t10;
117
+ } else t10 = $[13];
118
+ let t11;
119
+ if ($[14] !== children || $[15] !== t10) {
120
+ t11 = /* @__PURE__ */ jsx(SerwistContext.Provider, {
121
+ value: t10,
122
+ children
123
+ });
124
+ $[14] = children;
125
+ $[15] = t10;
126
+ $[16] = t11;
127
+ } else t11 = $[16];
128
+ return t11;
129
+ }
130
+ function _temp() {
131
+ return location.reload();
69
132
  }
70
133
  //#endregion
71
134
  export { SerwistProvider, useSerwist };
@@ -1 +1 @@
1
- {"version":3,"file":"index.react.mjs","names":[],"sources":["../src/lib/context.ts","../src/index.react.tsx"],"sourcesContent":["import type { Serwist } from \"@serwist/window\";\nimport { createContext, useContext } from \"react\";\n\nexport interface SerwistContextValues {\n serwist: Serwist | null;\n}\n\nexport const SerwistContext = createContext<SerwistContextValues>(null!);\n\nexport const useSerwist = () => {\n const context = useContext(SerwistContext);\n if (!context) {\n throw new Error(\"[useSerwist]: 'SerwistContext' is not available.\");\n }\n return context;\n};\n","import { Serwist } from \"@serwist/window\";\nimport { isCurrentPageOutOfScope } from \"@serwist/window/internal\";\nimport { type ReactNode, useEffect, useState } from \"react\";\nimport { SerwistContext, useSerwist } from \"./lib/context.js\";\n\nexport interface SerwistProviderProps {\n swUrl: string;\n disable?: boolean;\n register?: boolean;\n cacheOnNavigation?: boolean;\n reloadOnOnline?: boolean;\n options?: RegistrationOptions;\n children?: ReactNode;\n}\n\ndeclare global {\n interface Window {\n serwist: Serwist;\n }\n}\n\n/**\n * `@serwist/window` provider for Next.js apps.\n * @param options\n * @returns\n */\nexport function SerwistProvider({\n swUrl,\n disable = false,\n register = true,\n cacheOnNavigation = true,\n reloadOnOnline = true,\n options,\n children,\n}: SerwistProviderProps) {\n const [serwist] = useState(() => {\n if (typeof window === \"undefined\") return null;\n if (disable) return null;\n const scope = options?.scope || \"/\";\n if (!(window.serwist && window.serwist instanceof Serwist) && \"serviceWorker\" in navigator) {\n window.serwist = new Serwist(swUrl, { ...options, scope, type: options?.type || \"module\" });\n if (register && !isCurrentPageOutOfScope(scope)) {\n void window.serwist.register();\n }\n }\n return window.serwist ?? null;\n });\n useEffect(() => {\n const cacheUrls = async (url?: string | URL | null | undefined) => {\n if (!window.navigator.onLine || !url) {\n return;\n }\n serwist?.messageSW({\n type: \"CACHE_URLS\",\n payload: { urlsToCache: [url] },\n });\n };\n const cacheCurrentPathname = () => cacheUrls(window.location.pathname);\n const pushState = history.pushState;\n const replaceState = history.replaceState;\n\n if (cacheOnNavigation) {\n history.pushState = (...args) => {\n pushState.apply(history, args);\n cacheUrls(args[2]);\n };\n history.replaceState = (...args) => {\n replaceState.apply(history, args);\n cacheUrls(args[2]);\n };\n window.addEventListener(\"online\", cacheCurrentPathname);\n }\n\n return () => {\n history.pushState = pushState;\n history.replaceState = replaceState;\n window.removeEventListener(\"online\", cacheCurrentPathname);\n };\n }, [serwist, cacheOnNavigation]);\n useEffect(() => {\n const reload = () => location.reload();\n if (reloadOnOnline) {\n window.addEventListener(\"online\", reload);\n }\n return () => {\n window.removeEventListener(\"online\", reload);\n };\n }, [reloadOnOnline]);\n return <SerwistContext.Provider value={{ serwist }}>{children}</SerwistContext.Provider>;\n}\n\nexport { useSerwist };\n"],"mappings":";;;;AAOA,MAAa,iBAAiB,cAAoC,KAAM;AAExE,MAAa,mBAAmB;CAC9B,MAAM,UAAU,WAAW,eAAe;AAC1C,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,mDAAmD;AAErE,QAAO;;;;;;;;;ACYT,SAAgB,gBAAgB,EAC9B,OACA,UAAU,OACV,WAAW,MACX,oBAAoB,MACpB,iBAAiB,MACjB,SACA,YACuB;CACvB,MAAM,CAAC,WAAW,eAAe;AAC/B,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,MAAI,QAAS,QAAO;EACpB,MAAM,QAAQ,SAAS,SAAS;AAChC,MAAI,EAAE,OAAO,WAAW,OAAO,mBAAmB,YAAY,mBAAmB,WAAW;AAC1F,UAAO,UAAU,IAAI,QAAQ,OAAO;IAAE,GAAG;IAAS;IAAO,MAAM,SAAS,QAAQ;IAAU,CAAC;AAC3F,OAAI,YAAY,CAAC,wBAAwB,MAAM,CACxC,QAAO,QAAQ,UAAU;;AAGlC,SAAO,OAAO,WAAW;GACzB;AACF,iBAAgB;EACd,MAAM,YAAY,OAAO,QAA0C;AACjE,OAAI,CAAC,OAAO,UAAU,UAAU,CAAC,IAC/B;AAEF,YAAS,UAAU;IACjB,MAAM;IACN,SAAS,EAAE,aAAa,CAAC,IAAI,EAAE;IAChC,CAAC;;EAEJ,MAAM,6BAA6B,UAAU,OAAO,SAAS,SAAS;EACtE,MAAM,YAAY,QAAQ;EAC1B,MAAM,eAAe,QAAQ;AAE7B,MAAI,mBAAmB;AACrB,WAAQ,aAAa,GAAG,SAAS;AAC/B,cAAU,MAAM,SAAS,KAAK;AAC9B,cAAU,KAAK,GAAG;;AAEpB,WAAQ,gBAAgB,GAAG,SAAS;AAClC,iBAAa,MAAM,SAAS,KAAK;AACjC,cAAU,KAAK,GAAG;;AAEpB,UAAO,iBAAiB,UAAU,qBAAqB;;AAGzD,eAAa;AACX,WAAQ,YAAY;AACpB,WAAQ,eAAe;AACvB,UAAO,oBAAoB,UAAU,qBAAqB;;IAE3D,CAAC,SAAS,kBAAkB,CAAC;AAChC,iBAAgB;EACd,MAAM,eAAe,SAAS,QAAQ;AACtC,MAAI,eACF,QAAO,iBAAiB,UAAU,OAAO;AAE3C,eAAa;AACX,UAAO,oBAAoB,UAAU,OAAO;;IAE7C,CAAC,eAAe,CAAC;AACpB,QAAO,CAAC,eAAe,SAAS,OAAO,EAAE,SAAS,GAAG,SAAS,EAAE,eAAe"}
1
+ {"version":3,"file":"index.react.mjs","names":["Serwist","createContext","useContext","SerwistContextValues","serwist","SerwistContext","useSerwist","context","Error","Serwist","isCurrentPageOutOfScope","ReactNode","useEffect","useState","SerwistContext","useSerwist","SerwistProviderProps","swUrl","disable","register","cacheOnNavigation","reloadOnOnline","options","RegistrationOptions","children","global","Window","serwist","SerwistProvider","t0","$","_c","t1","t2","t3","t4","undefined","t5","window","scope","navigator","type","t6","t7","cacheUrls","url","onLine","messageSW","payload","urlsToCache","cacheCurrentPathname","location","pathname","pushState","history","replaceState","t8","args","apply","t9","args_0","addEventListener","removeEventListener","reload","_temp","t10","t11"],"sources":["../src/lib/context.ts","../src/index.react.tsx"],"sourcesContent":["import type { Serwist } from \"@serwist/window\";\nimport { createContext, useContext } from \"react\";\n\nexport interface SerwistContextValues {\n serwist: Serwist | null;\n}\n\nexport const SerwistContext = createContext<SerwistContextValues>(null!);\n\nexport const useSerwist = () => {\n const context = useContext(SerwistContext);\n if (!context) {\n throw new Error(\"[useSerwist]: 'SerwistContext' is not available.\");\n }\n return context;\n};\n","import { Serwist } from \"@serwist/window\";\nimport { isCurrentPageOutOfScope } from \"@serwist/window/internal\";\nimport { type ReactNode, useEffect, useState } from \"react\";\nimport { SerwistContext, useSerwist } from \"./lib/context.js\";\n\nexport interface SerwistProviderProps {\n swUrl: string;\n disable?: boolean;\n register?: boolean;\n cacheOnNavigation?: boolean;\n reloadOnOnline?: boolean;\n options?: RegistrationOptions;\n children?: ReactNode;\n}\n\ndeclare global {\n interface Window {\n serwist: Serwist;\n }\n}\n\n/**\n * `@serwist/window` provider for Next.js apps.\n * @param options\n * @returns\n */\nexport function SerwistProvider({\n swUrl,\n disable = false,\n register = true,\n cacheOnNavigation = true,\n reloadOnOnline = true,\n options,\n children,\n}: SerwistProviderProps) {\n const [serwist] = useState(() => {\n if (typeof window === \"undefined\") return null;\n if (disable) return null;\n const scope = options?.scope || \"/\";\n if (!(window.serwist && window.serwist instanceof Serwist) && \"serviceWorker\" in navigator) {\n window.serwist = new Serwist(swUrl, { ...options, scope, type: options?.type || \"module\" });\n if (register && !isCurrentPageOutOfScope(scope)) {\n void window.serwist.register();\n }\n }\n return window.serwist ?? null;\n });\n useEffect(() => {\n const cacheUrls = async (url?: string | URL | null | undefined) => {\n if (!window.navigator.onLine || !url) {\n return;\n }\n serwist?.messageSW({\n type: \"CACHE_URLS\",\n payload: { urlsToCache: [url] },\n });\n };\n const cacheCurrentPathname = () => cacheUrls(window.location.pathname);\n const pushState = history.pushState;\n const replaceState = history.replaceState;\n\n if (cacheOnNavigation) {\n history.pushState = (...args) => {\n pushState.apply(history, args);\n cacheUrls(args[2]);\n };\n history.replaceState = (...args) => {\n replaceState.apply(history, args);\n cacheUrls(args[2]);\n };\n window.addEventListener(\"online\", cacheCurrentPathname);\n }\n\n return () => {\n history.pushState = pushState;\n history.replaceState = replaceState;\n window.removeEventListener(\"online\", cacheCurrentPathname);\n };\n }, [serwist, cacheOnNavigation]);\n useEffect(() => {\n const reload = () => location.reload();\n if (reloadOnOnline) {\n window.addEventListener(\"online\", reload);\n }\n return () => {\n window.removeEventListener(\"online\", reload);\n };\n }, [reloadOnOnline]);\n return <SerwistContext.Provider value={{ serwist }}>{children}</SerwistContext.Provider>;\n}\n\nexport { useSerwist };\n"],"mappings":"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"}
@@ -16,6 +16,23 @@ declare const turboPartial: z$1.ZodObject<{
16
16
  esbuildOptions: z$1.ZodPrefault<z$1.ZodRecord<z$1.ZodLiteral<"bundle" | "splitting" | "preserveSymlinks" | "external" | "packages" | "alias" | "loader" | "resolveExtensions" | "mainFields" | "conditions" | "allowOverwrite" | "tsconfig" | "outExtension" | "publicPath" | "inject" | "banner" | "footer" | "plugins" | "sourcemap" | "legalComments" | "sourceRoot" | "sourcesContent" | "format" | "globalName" | "target" | "supported" | "mangleProps" | "reserveProps" | "mangleQuoted" | "mangleCache" | "drop" | "dropLabels" | "minify" | "minifyWhitespace" | "minifyIdentifiers" | "minifySyntax" | "lineLimit" | "charset" | "treeShaking" | "ignoreAnnotations" | "jsx" | "jsxFactory" | "jsxFragment" | "jsxImportSource" | "jsxDev" | "jsxSideEffects" | "define" | "pure" | "keepNames" | "absPaths" | "color" | "logLevel" | "logLimit" | "logOverride" | "tsconfigRaw"> & z$1.z.core.$partial, z$1.ZodAny>>;
17
17
  }, z$1.z.core.$strict>;
18
18
  declare const injectManifestOptions: z$1.ZodPipe<z$1.ZodObject<{
19
+ cwd: z$1.ZodPrefault<z$1.ZodString>;
20
+ nextConfig: z$1.ZodOptional<z$1.ZodObject<{
21
+ assetPrefix: z$1.ZodOptional<z$1.ZodString>;
22
+ basePath: z$1.ZodOptional<z$1.ZodString>;
23
+ distDir: z$1.ZodOptional<z$1.ZodString>;
24
+ }, z$1.z.core.$strip>>;
25
+ useNativeEsbuild: z$1.ZodPrefault<z$1.ZodBoolean>;
26
+ rebuildOnChange: z$1.ZodPrefault<z$1.ZodBoolean>;
27
+ esbuildOptions: z$1.ZodPrefault<z$1.ZodRecord<z$1.ZodLiteral<"bundle" | "splitting" | "preserveSymlinks" | "external" | "packages" | "alias" | "loader" | "resolveExtensions" | "mainFields" | "conditions" | "allowOverwrite" | "tsconfig" | "outExtension" | "publicPath" | "inject" | "banner" | "footer" | "plugins" | "sourcemap" | "legalComments" | "sourceRoot" | "sourcesContent" | "format" | "globalName" | "target" | "supported" | "mangleProps" | "reserveProps" | "mangleQuoted" | "mangleCache" | "drop" | "dropLabels" | "minify" | "minifyWhitespace" | "minifyIdentifiers" | "minifySyntax" | "lineLimit" | "charset" | "treeShaking" | "ignoreAnnotations" | "jsx" | "jsxFactory" | "jsxFragment" | "jsxImportSource" | "jsxDev" | "jsxSideEffects" | "define" | "pure" | "keepNames" | "absPaths" | "color" | "logLevel" | "logLimit" | "logOverride" | "tsconfigRaw"> & z$1.z.core.$partial, z$1.ZodAny>>;
28
+ globPatterns: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
29
+ globDirectory: z$1.ZodOptional<z$1.ZodString>;
30
+ injectionPoint: z$1.ZodDefault<z$1.ZodString>;
31
+ swSrc: z$1.ZodString;
32
+ globFollow: z$1.ZodDefault<z$1.ZodBoolean>;
33
+ globIgnores: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;
34
+ globStrict: z$1.ZodDefault<z$1.ZodBoolean>;
35
+ templatedURLs: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodUnion<readonly [z$1.ZodString, z$1.ZodArray<z$1.ZodString>]>>>;
19
36
  additionalPrecacheEntries: z$1.ZodOptional<z$1.ZodArray<z$1.ZodUnion<readonly [z$1.ZodString, z$1.ZodObject<{
20
37
  integrity: z$1.ZodOptional<z$1.ZodString>;
21
38
  revision: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;
@@ -77,23 +94,6 @@ declare const injectManifestOptions: z$1.ZodPipe<z$1.ZodObject<{
77
94
  }, z$1.z.core.$strict>>>>>>;
78
95
  maximumFileSizeToCacheInBytes: z$1.ZodDefault<z$1.ZodNumber>;
79
96
  modifyURLPrefix: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodString>>;
80
- globFollow: z$1.ZodDefault<z$1.ZodBoolean>;
81
- globIgnores: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;
82
- globPatterns: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
83
- globStrict: z$1.ZodDefault<z$1.ZodBoolean>;
84
- templatedURLs: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodUnion<readonly [z$1.ZodString, z$1.ZodArray<z$1.ZodString>]>>>;
85
- injectionPoint: z$1.ZodDefault<z$1.ZodString>;
86
- swSrc: z$1.ZodString;
87
- globDirectory: z$1.ZodOptional<z$1.ZodString>;
88
- cwd: z$1.ZodPrefault<z$1.ZodString>;
89
- nextConfig: z$1.ZodOptional<z$1.ZodObject<{
90
- assetPrefix: z$1.ZodOptional<z$1.ZodString>;
91
- basePath: z$1.ZodOptional<z$1.ZodString>;
92
- distDir: z$1.ZodOptional<z$1.ZodString>;
93
- }, z$1.z.core.$strip>>;
94
- useNativeEsbuild: z$1.ZodPrefault<z$1.ZodBoolean>;
95
- rebuildOnChange: z$1.ZodPrefault<z$1.ZodBoolean>;
96
- esbuildOptions: z$1.ZodPrefault<z$1.ZodRecord<z$1.ZodLiteral<"bundle" | "splitting" | "preserveSymlinks" | "external" | "packages" | "alias" | "loader" | "resolveExtensions" | "mainFields" | "conditions" | "allowOverwrite" | "tsconfig" | "outExtension" | "publicPath" | "inject" | "banner" | "footer" | "plugins" | "sourcemap" | "legalComments" | "sourceRoot" | "sourcesContent" | "format" | "globalName" | "target" | "supported" | "mangleProps" | "reserveProps" | "mangleQuoted" | "mangleCache" | "drop" | "dropLabels" | "minify" | "minifyWhitespace" | "minifyIdentifiers" | "minifySyntax" | "lineLimit" | "charset" | "treeShaking" | "ignoreAnnotations" | "jsx" | "jsxFactory" | "jsxFragment" | "jsxImportSource" | "jsxDev" | "jsxSideEffects" | "define" | "pure" | "keepNames" | "absPaths" | "color" | "logLevel" | "logLimit" | "logOverride" | "tsconfigRaw"> & z$1.z.core.$partial, z$1.ZodAny>>;
97
97
  }, z$1.z.core.$strict>, z$1.ZodTransform<{
98
98
  swSrc: string;
99
99
  globPatterns: string[];
@@ -235,15 +235,16 @@ declare const injectManifestOptions: z$1.ZodPipe<z$1.ZodObject<{
235
235
  basePath: string;
236
236
  assetPrefix: string;
237
237
  };
238
- maximumFileSizeToCacheInBytes: number;
239
- globFollow: boolean;
240
- globIgnores: string[];
241
- globStrict: boolean;
242
- injectionPoint: string;
243
238
  cwd: string;
244
239
  useNativeEsbuild: boolean;
245
240
  rebuildOnChange: boolean;
246
241
  esbuildOptions: Partial<Record<"bundle" | "splitting" | "preserveSymlinks" | "external" | "packages" | "alias" | "loader" | "resolveExtensions" | "mainFields" | "conditions" | "allowOverwrite" | "tsconfig" | "outExtension" | "publicPath" | "inject" | "banner" | "footer" | "plugins" | "sourcemap" | "legalComments" | "sourceRoot" | "sourcesContent" | "format" | "globalName" | "target" | "supported" | "mangleProps" | "reserveProps" | "mangleQuoted" | "mangleCache" | "drop" | "dropLabels" | "minify" | "minifyWhitespace" | "minifyIdentifiers" | "minifySyntax" | "lineLimit" | "charset" | "treeShaking" | "ignoreAnnotations" | "jsx" | "jsxFactory" | "jsxFragment" | "jsxImportSource" | "jsxDev" | "jsxSideEffects" | "define" | "pure" | "keepNames" | "absPaths" | "color" | "logLevel" | "logLimit" | "logOverride" | "tsconfigRaw", any>>;
242
+ injectionPoint: string;
243
+ globFollow: boolean;
244
+ globIgnores: string[];
245
+ globStrict: boolean;
246
+ maximumFileSizeToCacheInBytes: number;
247
+ templatedURLs?: Record<string, string | string[]> | undefined;
247
248
  additionalPrecacheEntries?: (string | {
248
249
  url: string;
249
250
  integrity?: string | undefined;
@@ -264,18 +265,25 @@ declare const injectManifestOptions: z$1.ZodPipe<z$1.ZodObject<{
264
265
  warnings: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
265
266
  }, z$1.z.core.$strict>>[] | undefined;
266
267
  modifyURLPrefix?: Record<string, string> | undefined;
267
- templatedURLs?: Record<string, string | string[]> | undefined;
268
268
  }, {
269
- maximumFileSizeToCacheInBytes: number;
270
- globFollow: boolean;
271
- globIgnores: string[];
272
- globStrict: boolean;
273
- injectionPoint: string;
274
- swSrc: string;
275
269
  cwd: string;
276
270
  useNativeEsbuild: boolean;
277
271
  rebuildOnChange: boolean;
278
272
  esbuildOptions: Partial<Record<"bundle" | "splitting" | "preserveSymlinks" | "external" | "packages" | "alias" | "loader" | "resolveExtensions" | "mainFields" | "conditions" | "allowOverwrite" | "tsconfig" | "outExtension" | "publicPath" | "inject" | "banner" | "footer" | "plugins" | "sourcemap" | "legalComments" | "sourceRoot" | "sourcesContent" | "format" | "globalName" | "target" | "supported" | "mangleProps" | "reserveProps" | "mangleQuoted" | "mangleCache" | "drop" | "dropLabels" | "minify" | "minifyWhitespace" | "minifyIdentifiers" | "minifySyntax" | "lineLimit" | "charset" | "treeShaking" | "ignoreAnnotations" | "jsx" | "jsxFactory" | "jsxFragment" | "jsxImportSource" | "jsxDev" | "jsxSideEffects" | "define" | "pure" | "keepNames" | "absPaths" | "color" | "logLevel" | "logLimit" | "logOverride" | "tsconfigRaw", any>>;
273
+ injectionPoint: string;
274
+ swSrc: string;
275
+ globFollow: boolean;
276
+ globIgnores: string[];
277
+ globStrict: boolean;
278
+ maximumFileSizeToCacheInBytes: number;
279
+ nextConfig?: {
280
+ assetPrefix?: string | undefined;
281
+ basePath?: string | undefined;
282
+ distDir?: string | undefined;
283
+ } | undefined;
284
+ globPatterns?: string[] | undefined;
285
+ globDirectory?: string | undefined;
286
+ templatedURLs?: Record<string, string | string[]> | undefined;
279
287
  additionalPrecacheEntries?: (string | {
280
288
  url: string;
281
289
  integrity?: string | undefined;
@@ -297,14 +305,6 @@ declare const injectManifestOptions: z$1.ZodPipe<z$1.ZodObject<{
297
305
  warnings: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;
298
306
  }, z$1.z.core.$strict>>[] | undefined;
299
307
  modifyURLPrefix?: Record<string, string> | undefined;
300
- globPatterns?: string[] | undefined;
301
- templatedURLs?: Record<string, string | string[]> | undefined;
302
- globDirectory?: string | undefined;
303
- nextConfig?: {
304
- assetPrefix?: string | undefined;
305
- basePath?: string | undefined;
306
- distDir?: string | undefined;
307
- } | undefined;
308
308
  }>>;
309
309
  //#endregion
310
310
  export { injectManifestOptions, turboPartial };
@@ -1 +1 @@
1
- {"version":3,"file":"index.worker.mjs","names":[],"sources":["../src/index.worker.ts"],"sourcesContent":["import type { RuntimeCaching } from \"serwist\";\nimport { CacheFirst, ExpirationPlugin, NetworkFirst, NetworkOnly, RangeRequestsPlugin, StaleWhileRevalidate } from \"serwist\";\n\nexport const PAGES_CACHE_NAME = {\n rscPrefetch: \"pages-rsc-prefetch\",\n rsc: \"pages-rsc\",\n html: \"pages\",\n} as const;\n\n/**\n * The default, recommended list of caching strategies for applications\n * built with Next.js.\n *\n * @see https://serwist.pages.dev/docs/next/worker-exports#default-cache\n */\nexport const defaultCache: RuntimeCaching[] =\n process.env.NODE_ENV !== \"production\"\n ? [\n {\n matcher: /.*/i,\n handler: new NetworkOnly(),\n },\n ]\n : [\n {\n matcher: /^https:\\/\\/fonts\\.(?:gstatic)\\.com\\/.*/i,\n handler: new CacheFirst({\n cacheName: \"google-fonts-webfonts\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 4,\n maxAgeSeconds: 365 * 24 * 60 * 60, // 365 days\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /^https:\\/\\/fonts\\.(?:googleapis)\\.com\\/.*/i,\n handler: new StaleWhileRevalidate({\n cacheName: \"google-fonts-stylesheets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 4,\n maxAgeSeconds: 7 * 24 * 60 * 60, // 7 days\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i,\n handler: new StaleWhileRevalidate({\n cacheName: \"static-font-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 4,\n maxAgeSeconds: 7 * 24 * 60 * 60, // 7 days\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i,\n handler: new StaleWhileRevalidate({\n cacheName: \"static-image-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 64,\n maxAgeSeconds: 30 * 24 * 60 * 60, // 30 days\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\/_next\\/static.+\\.js$/i,\n handler: new CacheFirst({\n cacheName: \"next-static-js-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 64,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\/_next\\/image\\?url=.+$/i,\n handler: new StaleWhileRevalidate({\n cacheName: \"next-image\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 64,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\.(?:mp3|wav|ogg)$/i,\n handler: new CacheFirst({\n cacheName: \"static-audio-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n new RangeRequestsPlugin(),\n ],\n }),\n },\n {\n matcher: /\\.(?:mp4|webm)$/i,\n handler: new CacheFirst({\n cacheName: \"static-video-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n new RangeRequestsPlugin(),\n ],\n }),\n },\n {\n matcher: /\\.(?:js)$/i,\n handler: new StaleWhileRevalidate({\n cacheName: \"static-js-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 48,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\.(?:css|less)$/i,\n handler: new StaleWhileRevalidate({\n cacheName: \"static-style-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\/_next\\/data\\/.+\\/.+\\.json$/i,\n handler: new NetworkFirst({\n cacheName: \"next-data\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\.(?:json|xml|csv)$/i,\n handler: new NetworkFirst({\n cacheName: \"static-data-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n // Exclude /api/auth/* to fix auth callback\n // https://github.com/serwist/serwist/discussions/28\n matcher: /\\/api\\/auth\\/.*/,\n handler: new NetworkOnly({\n networkTimeoutSeconds: 10, // fallback to cache if API does not response within 10 seconds\n }),\n },\n {\n matcher: ({ sameOrigin, url: { pathname } }) => sameOrigin && pathname.startsWith(\"/api/\"),\n method: \"GET\",\n handler: new NetworkFirst({\n cacheName: \"apis\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 16,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n ],\n networkTimeoutSeconds: 10, // fallback to cache if API does not response within 10 seconds\n }),\n },\n {\n matcher: ({ request, url: { pathname }, sameOrigin }) =>\n request.headers.get(\"RSC\") === \"1\" && request.headers.get(\"Next-Router-Prefetch\") === \"1\" && sameOrigin && !pathname.startsWith(\"/api/\"),\n handler: new NetworkFirst({\n cacheName: PAGES_CACHE_NAME.rscPrefetch,\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n }),\n ],\n }),\n },\n {\n matcher: ({ request, url: { pathname }, sameOrigin }) => request.headers.get(\"RSC\") === \"1\" && sameOrigin && !pathname.startsWith(\"/api/\"),\n handler: new NetworkFirst({\n cacheName: PAGES_CACHE_NAME.rsc,\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n }),\n ],\n }),\n },\n {\n matcher: ({ request, url: { pathname }, sameOrigin }) =>\n request.headers.get(\"Content-Type\")?.includes(\"text/html\") && sameOrigin && !pathname.startsWith(\"/api/\"),\n handler: new NetworkFirst({\n cacheName: PAGES_CACHE_NAME.html,\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n }),\n ],\n }),\n },\n {\n matcher: ({ url: { pathname }, sameOrigin }) => sameOrigin && !pathname.startsWith(\"/api/\"),\n handler: new NetworkFirst({\n cacheName: \"others\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n }),\n ],\n }),\n },\n {\n matcher: ({ sameOrigin }) => !sameOrigin,\n handler: new NetworkFirst({\n cacheName: \"cross-origin\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 60 * 60, // 1 hour\n }),\n ],\n networkTimeoutSeconds: 10,\n }),\n },\n {\n matcher: /.*/i,\n method: \"GET\",\n handler: new NetworkOnly(),\n },\n ];\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.worker.mjs","names":["RuntimeCaching","CacheFirst","ExpirationPlugin","NetworkFirst","NetworkOnly","RangeRequestsPlugin","StaleWhileRevalidate","PAGES_CACHE_NAME","rscPrefetch","rsc","html","const","defaultCache","process","env","NODE_ENV","matcher","handler","cacheName","plugins","maxEntries","maxAgeSeconds","maxAgeFrom","networkTimeoutSeconds","sameOrigin","url","pathname","startsWith","method","request","headers","get","includes"],"sources":["../src/index.worker.ts"],"sourcesContent":["import type { RuntimeCaching } from \"serwist\";\nimport { CacheFirst, ExpirationPlugin, NetworkFirst, NetworkOnly, RangeRequestsPlugin, StaleWhileRevalidate } from \"serwist\";\n\nexport const PAGES_CACHE_NAME = {\n rscPrefetch: \"pages-rsc-prefetch\",\n rsc: \"pages-rsc\",\n html: \"pages\",\n} as const;\n\n/**\n * The default, recommended list of caching strategies for applications\n * built with Next.js.\n *\n * @see https://serwist.pages.dev/docs/next/worker-exports#default-cache\n */\nexport const defaultCache: RuntimeCaching[] =\n process.env.NODE_ENV !== \"production\"\n ? [\n {\n matcher: /.*/i,\n handler: new NetworkOnly(),\n },\n ]\n : [\n {\n matcher: /^https:\\/\\/fonts\\.(?:gstatic)\\.com\\/.*/i,\n handler: new CacheFirst({\n cacheName: \"google-fonts-webfonts\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 4,\n maxAgeSeconds: 365 * 24 * 60 * 60, // 365 days\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /^https:\\/\\/fonts\\.(?:googleapis)\\.com\\/.*/i,\n handler: new StaleWhileRevalidate({\n cacheName: \"google-fonts-stylesheets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 4,\n maxAgeSeconds: 7 * 24 * 60 * 60, // 7 days\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i,\n handler: new StaleWhileRevalidate({\n cacheName: \"static-font-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 4,\n maxAgeSeconds: 7 * 24 * 60 * 60, // 7 days\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i,\n handler: new StaleWhileRevalidate({\n cacheName: \"static-image-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 64,\n maxAgeSeconds: 30 * 24 * 60 * 60, // 30 days\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\/_next\\/static.+\\.js$/i,\n handler: new CacheFirst({\n cacheName: \"next-static-js-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 64,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\/_next\\/image\\?url=.+$/i,\n handler: new StaleWhileRevalidate({\n cacheName: \"next-image\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 64,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\.(?:mp3|wav|ogg)$/i,\n handler: new CacheFirst({\n cacheName: \"static-audio-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n new RangeRequestsPlugin(),\n ],\n }),\n },\n {\n matcher: /\\.(?:mp4|webm)$/i,\n handler: new CacheFirst({\n cacheName: \"static-video-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n new RangeRequestsPlugin(),\n ],\n }),\n },\n {\n matcher: /\\.(?:js)$/i,\n handler: new StaleWhileRevalidate({\n cacheName: \"static-js-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 48,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\.(?:css|less)$/i,\n handler: new StaleWhileRevalidate({\n cacheName: \"static-style-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\/_next\\/data\\/.+\\/.+\\.json$/i,\n handler: new NetworkFirst({\n cacheName: \"next-data\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n matcher: /\\.(?:json|xml|csv)$/i,\n handler: new NetworkFirst({\n cacheName: \"static-data-assets\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n ],\n }),\n },\n {\n // Exclude /api/auth/* to fix auth callback\n // https://github.com/serwist/serwist/discussions/28\n matcher: /\\/api\\/auth\\/.*/,\n handler: new NetworkOnly({\n networkTimeoutSeconds: 10, // fallback to cache if API does not response within 10 seconds\n }),\n },\n {\n matcher: ({ sameOrigin, url: { pathname } }) => sameOrigin && pathname.startsWith(\"/api/\"),\n method: \"GET\",\n handler: new NetworkFirst({\n cacheName: \"apis\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 16,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n maxAgeFrom: \"last-used\",\n }),\n ],\n networkTimeoutSeconds: 10, // fallback to cache if API does not response within 10 seconds\n }),\n },\n {\n matcher: ({ request, url: { pathname }, sameOrigin }) =>\n request.headers.get(\"RSC\") === \"1\" && request.headers.get(\"Next-Router-Prefetch\") === \"1\" && sameOrigin && !pathname.startsWith(\"/api/\"),\n handler: new NetworkFirst({\n cacheName: PAGES_CACHE_NAME.rscPrefetch,\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n }),\n ],\n }),\n },\n {\n matcher: ({ request, url: { pathname }, sameOrigin }) => request.headers.get(\"RSC\") === \"1\" && sameOrigin && !pathname.startsWith(\"/api/\"),\n handler: new NetworkFirst({\n cacheName: PAGES_CACHE_NAME.rsc,\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n }),\n ],\n }),\n },\n {\n matcher: ({ request, url: { pathname }, sameOrigin }) =>\n request.headers.get(\"Content-Type\")?.includes(\"text/html\") && sameOrigin && !pathname.startsWith(\"/api/\"),\n handler: new NetworkFirst({\n cacheName: PAGES_CACHE_NAME.html,\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n }),\n ],\n }),\n },\n {\n matcher: ({ url: { pathname }, sameOrigin }) => sameOrigin && !pathname.startsWith(\"/api/\"),\n handler: new NetworkFirst({\n cacheName: \"others\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 24 * 60 * 60, // 24 hours\n }),\n ],\n }),\n },\n {\n matcher: ({ sameOrigin }) => !sameOrigin,\n handler: new NetworkFirst({\n cacheName: \"cross-origin\",\n plugins: [\n new ExpirationPlugin({\n maxEntries: 32,\n maxAgeSeconds: 60 * 60, // 1 hour\n }),\n ],\n networkTimeoutSeconds: 10,\n }),\n },\n {\n matcher: /.*/i,\n method: \"GET\",\n handler: new NetworkOnly(),\n },\n ];\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serwist/turbopack",
3
- "version": "9.5.8",
3
+ "version": "9.5.10",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "description": "A module that integrates Serwist into your Next.js / Turbopack application.",
@@ -70,16 +70,19 @@
70
70
  "browserslist": "4.28.2",
71
71
  "kolorist": "1.8.0",
72
72
  "semver": "7.7.4",
73
- "zod": "4.3.6",
74
- "@serwist/build": "9.5.8",
75
- "serwist": "9.5.8",
76
- "@serwist/window": "9.5.8",
77
- "@serwist/utils": "9.5.8"
73
+ "zod": "4.4.1",
74
+ "@serwist/build": "9.5.10",
75
+ "@serwist/utils": "9.5.10",
76
+ "@serwist/window": "9.5.10",
77
+ "serwist": "9.5.10"
78
78
  },
79
79
  "devDependencies": {
80
+ "@rolldown/plugin-babel": "0.2.3",
80
81
  "@types/node": "25.6.0",
81
82
  "@types/react": "19.2.14",
82
83
  "@types/semver": "7.7.1",
84
+ "@vitejs/plugin-react": "6.0.1",
85
+ "babel-plugin-react-compiler": "1.0.0",
83
86
  "esbuild": "0.28.0",
84
87
  "esbuild-wasm": "0.28.0",
85
88
  "next": "16.2.4",