UNPKG

@serwist/turbopack

Version:

A module that integrates Serwist into your Next.js / Turbopack application.

94 lines (90 loc) 2.15 kB
import path from 'node:path'; import { injectPartial, globPartial, basePartial, assertType } from '@serwist/build/schema'; import z from 'zod'; const DEFAULT_GLOB_PATTERNS = [ ".next/static/**/*.{js,css,html,ico,apng,png,avif,jpg,jpeg,jfif,pjpeg,pjp,gif,svg,webp,json,webmanifest}", "public/**/*" ]; const SUPPORTED_ESBUILD_OPTIONS = [ "sourcemap", "legalComments", "sourceRoot", "sourcesContent", "format", "globalName", "target", "supported", "define", "treeShaking", "minify", "mangleProps", "reserveProps", "mangleQuoted", "mangleCache", "drop", "dropLabels", "minifyWhitespace", "minifyIdentifiers", "minifySyntax", "lineLimit", "charset", "ignoreAnnotations", "jsx", "jsxFactory", "jsxFragment", "jsxImportSource", "jsxDev", "jsxSideEffects", "pure", "keepNames", "absPaths", "color", "logLevel", "logLimit", "logOverride", "tsconfigRaw", "bundle", "splitting", "preserveSymlinks", "external", "packages", "alias", "loader", "resolveExtensions", "mainFields", "conditions", "allowOverwrite", "tsconfig", "outExtension", "publicPath", "inject", "banner", "footer", "plugins" ]; const turboPartial = z.strictObject({ cwd: z.string().prefault(process.cwd()), basePath: z.string(), esbuildOptions: z.partialRecord(z.literal(SUPPORTED_ESBUILD_OPTIONS), z.any()).prefault({}) }); const injectManifestOptions = z.strictObject({ ...basePartial.shape, ...globPartial.shape, ...injectPartial.shape, ...turboPartial.shape, globPatterns: z.array(z.string()).prefault(DEFAULT_GLOB_PATTERNS), globDirectory: z.string().optional() }).omit({ disablePrecacheManifest: true }).transform((input)=>{ return { ...input, swSrc: path.isAbsolute(input.swSrc) ? input.swSrc : path.join(input.cwd, input.swSrc), globDirectory: input.globDirectory ?? input.cwd }; }); assertType(); assertType(); assertType(); assertType(); export { injectManifestOptions, turboPartial };