@gigadrive/network-config 3.4.7 → 3.4.9

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.
@@ -43,6 +43,7 @@ var runtimeModulePath = (environmentName, fileName) => process.env[environmentNa
43
43
  var CACHE_HANDLER_PATH = () => runtimeModulePath("GIGADRIVE_NEXT_CACHE_HANDLER_PATH", "nextjs-cache-handler.js");
44
44
  var CACHE_COMPONENTS_HANDLER_PATH = () => runtimeModulePath("GIGADRIVE_NEXT_CACHE_COMPONENTS_HANDLER_PATH", "nextjs-cache-components-handler.js");
45
45
  var IMAGE_LOADER_PATH = () => runtimeModulePath("GIGADRIVE_NEXT_IMAGE_LOADER_PATH", "nextjs-image-loader.js");
46
+ var PPR_RUNTIME_PATH = () => runtimeModulePath("GIGADRIVE_NEXT_PPR_RUNTIME_PATH", "nextjs-ppr-runtime.js");
46
47
  var toJsonValue = (value) => {
47
48
  const serialized = JSON.stringify(value);
48
49
  return serialized === void 0 ? null : JSON.parse(serialized);
@@ -95,7 +96,8 @@ var serializeRuntimeConfigAssets = async (projectDir, repoRoot, config) => {
95
96
  const configuredPaths = /* @__PURE__ */ new Set([
96
97
  config.cacheHandler,
97
98
  ...Object.values(config.cacheHandlers ?? {}),
98
- config.images.loaderFile
99
+ config.images.loaderFile,
100
+ PPR_RUNTIME_PATH()
99
101
  ]);
100
102
  const assets = {};
101
103
  for (const configuredPath of configuredPaths) {
@@ -189,9 +191,12 @@ var buildEntrypointPlan = (outputs) => {
189
191
  }
190
192
  return { entrypoints: [...byIdentity.values()], outputEntrypoints };
191
193
  };
192
- var writeEntrypointWrappers = async (projectDir, repoRoot, entrypoints, middlewareOutputId) => {
194
+ var writeEntrypointWrappers = async (projectDir, repoRoot, entrypoints, pprRuntimePath, middlewareOutputId) => {
193
195
  const wrapperDirectory = import_node_path.default.join(projectDir, ".gigadrive", "nextjs", "entrypoints");
194
196
  await (0, import_promises.mkdir)(wrapperDirectory, { recursive: true });
197
+ const portableWrapperDirectory = toPortableRelativePath(repoRoot, wrapperDirectory);
198
+ const relativePprRuntimePath = import_node_path.default.posix.relative(portableWrapperDirectory, pprRuntimePath);
199
+ const pprRuntimeSpecifier = relativePprRuntimePath.startsWith(".") ? relativePprRuntimePath : `./${relativePprRuntimePath}`;
195
200
  await Promise.all(
196
201
  entrypoints.map(async (entrypoint) => {
197
202
  const wrapperPath = import_node_path.default.join(wrapperDirectory, `${entrypoint.id}.mjs`);
@@ -208,7 +213,6 @@ var writeEntrypointWrappers = async (projectDir, repoRoot, entrypoints, middlewa
208
213
  if (rightSource === entrypoint.edgeRuntime?.modulePath) return -1;
209
214
  return leftSource.localeCompare(rightSource);
210
215
  });
211
- const portableWrapperDirectory = toPortableRelativePath(repoRoot, wrapperDirectory);
212
216
  const imports = edgeRuntimeAssets.map(([targetPath, sourcePath]) => {
213
217
  const runtimeTargetPath = sourcePath === entrypoint.edgeRuntime?.modulePath ? entrypoint.edgeRuntime.modulePath : targetPath;
214
218
  const relativeAssetPath = import_node_path.default.posix.relative(portableWrapperDirectory, runtimeTargetPath);
@@ -235,7 +239,8 @@ const resolveHandler = async () => {
235
239
  if (typeof handler !== 'function') throw new Error('Next.js middleware handler is unavailable');
236
240
  return handler;
237
241
  };`;
238
- const source = entrypoint.runtime === "edge" && entrypoint.edgeRuntime || isMiddleware ? `${webHandlerPrelude}
242
+ const source = entrypoint.runtime === "edge" && entrypoint.edgeRuntime || isMiddleware ? `import { persistPprCacheEntry } from ${JSON.stringify(pprRuntimeSpecifier)};
243
+ ${webHandlerPrelude}
239
244
 
240
245
  export async function fetch(request) {
241
246
  const pending = [];
@@ -246,7 +251,7 @@ export async function fetch(request) {
246
251
  waitUntil(promise) { pending.push(Promise.resolve(promise)); },
247
252
  requestMeta: { hostname: url.hostname, invocationTarget: request.headers.get('x-gigadrive-next-invocation-target') ?? url.pathname, routeMatches: Object.fromEntries(new URLSearchParams(request.headers.get('x-now-route-matches') ?? '')), relativeProjectDir: ${JSON.stringify(
248
253
  toPortableRelativePath(repoRoot, projectDir, true)
249
- )} },
254
+ )}, onCacheEntryV2(cacheEntry, meta) { pending.push(persistPprCacheEntry(request.headers.get('x-gigadrive-next-cache-key') ?? meta.url ?? request.headers.get('x-matched-path') ?? url.pathname, cacheEntry)); return false; } },
250
255
  });
251
256
  if (!response.body) { await Promise.allSettled(pending); return response; }
252
257
  const reader = response.body.getReader();
@@ -256,12 +261,13 @@ export async function fetch(request) {
256
261
  if (result.done) { await Promise.allSettled(pending); controller.close(); return; }
257
262
  controller.enqueue(result.value);
258
263
  },
259
- cancel(reason) { return reader.cancel(reason); },
264
+ async cancel(reason) { try { await reader.cancel(reason); } finally { await Promise.allSettled(pending); } },
260
265
  });
261
266
  return new Response(body, response);
262
267
  }
263
268
  ` : `import "next/dist/build/adapter/setup-node-env.external.js";
264
269
  import * as nextEntrypoint from ${JSON.stringify(importSpecifier)};
270
+ import { persistPprCacheEntry } from ${JSON.stringify(pprRuntimeSpecifier)};
265
271
 
266
272
  export default async function handler(req, res) {
267
273
  const pending = [];
@@ -271,7 +277,7 @@ export default async function handler(req, res) {
271
277
  waitUntil(promise) { pending.push(Promise.resolve(promise)); },
272
278
  requestMeta: { hostname: req.headers.host, invocationTarget: req.headers['x-gigadrive-next-invocation-target'] ?? req.url, routeMatches: Object.fromEntries(new URLSearchParams(req.headers['x-now-route-matches'] ?? '')), relativeProjectDir: ${JSON.stringify(
273
279
  toPortableRelativePath(repoRoot, projectDir, true)
274
- )} },
280
+ )}, onCacheEntryV2(cacheEntry, meta) { const cacheKey = req.headers['x-gigadrive-next-cache-key']; const matchedPath = req.headers['x-matched-path']; pending.push(persistPprCacheEntry((Array.isArray(cacheKey) ? cacheKey[0] : cacheKey) ?? meta.url ?? (Array.isArray(matchedPath) ? matchedPath[0] : matchedPath) ?? req.url ?? '/', cacheEntry)); return false; } },
275
281
  });
276
282
  await Promise.allSettled(pending);
277
283
  }
@@ -399,7 +405,14 @@ var gigadriveNextAdapter = {
399
405
  const entrypointPlan = buildEntrypointPlan(executableOutputs);
400
406
  const runtimeConfigAssets = await serializeRuntimeConfigAssets(projectDir, repoRoot, config);
401
407
  for (const entrypoint of entrypointPlan.entrypoints) Object.assign(entrypoint.assets, runtimeConfigAssets);
402
- await writeEntrypointWrappers(projectDir, repoRoot, entrypointPlan.entrypoints, portableOutputs.middleware?.id);
408
+ const pprRuntimePath = await requireReadableFile(repoRoot, PPR_RUNTIME_PATH());
409
+ await writeEntrypointWrappers(
410
+ projectDir,
411
+ repoRoot,
412
+ entrypointPlan.entrypoints,
413
+ pprRuntimePath,
414
+ portableOutputs.middleware?.id
415
+ );
403
416
  const images = normalizeImages(config);
404
417
  const manifest = {
405
418
  version: 2,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/nextjs-adapter.ts"],"sourcesContent":["import type { NextAdapter } from 'next';\nimport { access, mkdir, realpath, stat, writeFile } from 'node:fs/promises';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport type { NormalizedImagePolicy } from './image-policy';\nimport type {\n GigadriveNextBuildManifestV2,\n GigadriveNextEntrypoint,\n GigadriveNextRouteOutput,\n GigadriveNextStaticOutput,\n JsonValue,\n} from './nextjs-manifest';\n\ntype BuildCompleteContext = Parameters<NonNullable<NextAdapter['onBuildComplete']>>[0];\ntype NextRouteOutput =\n | BuildCompleteContext['outputs']['pages'][number]\n | BuildCompleteContext['outputs']['pagesApi'][number]\n | BuildCompleteContext['outputs']['appPages'][number]\n | BuildCompleteContext['outputs']['appRoutes'][number]\n | NonNullable<BuildCompleteContext['outputs']['middleware']>;\ntype NextStaticOutput = BuildCompleteContext['outputs']['staticFiles'][number];\n\nconst PRODUCTION_BUILD_PHASE = 'phase-production-build';\nconst runtimeDirectory = typeof __dirname === 'string' ? __dirname : path.dirname(fileURLToPath(import.meta.url));\n\nconst runtimeModulePath = (environmentName: string, fileName: string): string =>\n process.env[environmentName] ?? path.join(runtimeDirectory, fileName);\n\nconst CACHE_HANDLER_PATH = () => runtimeModulePath('GIGADRIVE_NEXT_CACHE_HANDLER_PATH', 'nextjs-cache-handler.js');\nconst CACHE_COMPONENTS_HANDLER_PATH = () =>\n runtimeModulePath('GIGADRIVE_NEXT_CACHE_COMPONENTS_HANDLER_PATH', 'nextjs-cache-components-handler.js');\nconst IMAGE_LOADER_PATH = () => runtimeModulePath('GIGADRIVE_NEXT_IMAGE_LOADER_PATH', 'nextjs-image-loader.js');\n\nconst toJsonValue = (value: unknown): JsonValue => {\n const serialized = JSON.stringify(value);\n return serialized === undefined ? null : (JSON.parse(serialized) as JsonValue);\n};\n\nconst isNext16OrNewer = (nextVersion: string): boolean => {\n const major = Number.parseInt(nextVersion.split('.')[0] ?? '', 10);\n return Number.isFinite(major) && major >= 16;\n};\n\nconst toPortableRelativePath = (from: string, to: string, allowCurrentDirectory = false): string => {\n const resolvedFrom = path.resolve(from);\n const resolvedTo = path.resolve(path.isAbsolute(to) ? to : path.join(from, to));\n const relativePath = path.relative(resolvedFrom, resolvedTo).replaceAll(path.sep, '/');\n const normalized = relativePath === '' ? '.' : relativePath;\n if (\n (!allowCurrentDirectory && normalized === '.') ||\n normalized.startsWith('/') ||\n /^[A-Za-z]:/.test(normalized) ||\n normalized.split('/').some((segment) => segment === '..')\n ) {\n throw new Error(`Next.js adapter output is outside the repository root: ${to}`);\n }\n return normalized;\n};\n\nasync function resolveReadablePath(repoRoot: string, filePath: string) {\n const absolutePath = path.resolve(path.isAbsolute(filePath) ? filePath : path.join(repoRoot, filePath));\n const portablePath = toPortableRelativePath(repoRoot, absolutePath);\n await access(absolutePath);\n const resolvedPath = await realpath(absolutePath);\n toPortableRelativePath(repoRoot, resolvedPath);\n const fileStat = await stat(absolutePath);\n return { portablePath, fileStat };\n}\n\nasync function requireReadableFile(repoRoot: string, filePath: string): Promise<string> {\n const { portablePath, fileStat } = await resolveReadablePath(repoRoot, filePath);\n if (!fileStat.isFile()) throw new Error(`Next.js adapter output is not a readable file: ${filePath}`);\n return portablePath;\n}\n\nasync function requireReadableAsset(repoRoot: string, filePath: string): Promise<string> {\n const { portablePath, fileStat } = await resolveReadablePath(repoRoot, filePath);\n if (!fileStat.isFile() && !fileStat.isDirectory()) {\n throw new Error(`Next.js adapter asset is not a readable file or directory: ${filePath}`);\n }\n return portablePath;\n}\n\nasync function serializeFileMap(repoRoot: string, files: Record<string, string>): Promise<Record<string, string>> {\n const entries = await Promise.all(\n Object.entries(files).map(async ([targetPath, sourcePath]) => [\n toPortableRelativePath(repoRoot, targetPath),\n await requireReadableAsset(repoRoot, sourcePath),\n ])\n );\n return Object.fromEntries(entries);\n}\n\nconst serializeRuntimeConfigAssets = async (\n projectDir: string,\n repoRoot: string,\n config: BuildCompleteContext['config']\n): Promise<Record<string, string>> => {\n const configuredPaths = new Set([\n config.cacheHandler,\n ...Object.values(config.cacheHandlers ?? {}),\n config.images.loaderFile,\n ]);\n const assets: Record<string, string> = {};\n for (const configuredPath of configuredPaths) {\n if (!configuredPath) continue;\n const absolutePath = path.resolve(\n path.isAbsolute(configuredPath) ? configuredPath : path.join(projectDir, configuredPath)\n );\n const portablePath = await requireReadableFile(repoRoot, absolutePath);\n assets[portablePath] = portablePath;\n }\n return assets;\n};\n\nconst serializeRouteOutput = async (repoRoot: string, output: NextRouteOutput): Promise<GigadriveNextRouteOutput> => {\n const matchers = (\n output.config as typeof output.config & {\n matchers?: Array<{\n source: string;\n sourceRegex: string;\n has?: unknown[];\n missing?: unknown[];\n }>;\n }\n ).matchers;\n return {\n id: output.id,\n type: String(output.type) as GigadriveNextRouteOutput['type'],\n filePath: await requireReadableFile(repoRoot, output.filePath),\n pathname: output.pathname,\n sourcePage: output.sourcePage,\n runtime: output.runtime,\n assets: await serializeFileMap(repoRoot, output.assets),\n ...(output.wasmAssets ? { wasmAssets: await serializeFileMap(repoRoot, output.wasmAssets) } : {}),\n ...(output.edgeRuntime\n ? {\n edgeRuntime: {\n modulePath: await requireReadableFile(repoRoot, output.edgeRuntime.modulePath),\n entryKey: output.edgeRuntime.entryKey,\n handlerExport: output.edgeRuntime.handlerExport,\n },\n }\n : {}),\n config: {\n maxDuration: output.config.maxDuration,\n preferredRegion: output.config.preferredRegion,\n env: output.config.env,\n ...(matchers\n ? {\n matchers: matchers.map((matcher) => ({\n source: matcher.source,\n sourceRegex: matcher.sourceRegex,\n ...(matcher.has ? { has: toJsonValue(matcher.has) as JsonValue[] } : {}),\n ...(matcher.missing ? { missing: toJsonValue(matcher.missing) as JsonValue[] } : {}),\n })),\n }\n : {}),\n },\n };\n};\n\nconst serializeStaticOutput = async (\n repoRoot: string,\n output: NextStaticOutput\n): Promise<GigadriveNextStaticOutput> => ({\n id: output.id,\n type: 'STATIC_FILE',\n filePath: await requireReadableFile(repoRoot, output.filePath),\n pathname: output.pathname,\n ...(output.immutableHash ? { immutableHash: output.immutableHash } : {}),\n});\n\nconst buildEntrypointPlan = (\n outputs: GigadriveNextRouteOutput[]\n): Pick<GigadriveNextBuildManifestV2, 'entrypoints' | 'outputEntrypoints'> => {\n const byIdentity = new Map<string, GigadriveNextEntrypoint>();\n const outputEntrypoints: Record<string, string> = {};\n\n for (const output of outputs) {\n const identity = JSON.stringify([\n output.type === 'MIDDLEWARE' ? 'middleware-web' : 'route',\n output.runtime,\n output.filePath,\n output.edgeRuntime?.modulePath,\n output.edgeRuntime?.entryKey,\n output.edgeRuntime?.handlerExport,\n ]);\n const existingEntrypoint = byIdentity.get(identity);\n const entrypoint: GigadriveNextEntrypoint = existingEntrypoint ?? {\n id: `next-${byIdentity.size}`,\n runtime: output.runtime,\n filePath: output.filePath,\n outputIds: [],\n assets: { ...output.assets },\n ...(output.wasmAssets ? { wasmAssets: { ...output.wasmAssets } } : {}),\n ...(output.edgeRuntime ? { edgeRuntime: { ...output.edgeRuntime } } : {}),\n config: {\n maxDuration: output.config.maxDuration,\n preferredRegion: output.config.preferredRegion,\n env: output.config.env,\n },\n };\n if (!existingEntrypoint) {\n byIdentity.set(identity, entrypoint);\n } else {\n Object.assign(entrypoint.assets, output.assets);\n if (output.wasmAssets) entrypoint.wasmAssets = { ...entrypoint.wasmAssets, ...output.wasmAssets };\n if (output.config.maxDuration !== undefined) {\n entrypoint.config.maxDuration = Math.max(entrypoint.config.maxDuration ?? 0, output.config.maxDuration);\n }\n }\n entrypoint.outputIds.push(output.id);\n outputEntrypoints[output.id] = entrypoint.id;\n }\n\n return { entrypoints: [...byIdentity.values()], outputEntrypoints };\n};\n\nconst writeEntrypointWrappers = async (\n projectDir: string,\n repoRoot: string,\n entrypoints: GigadriveNextEntrypoint[],\n middlewareOutputId?: string\n): Promise<void> => {\n const wrapperDirectory = path.join(projectDir, '.gigadrive', 'nextjs', 'entrypoints');\n await mkdir(wrapperDirectory, { recursive: true });\n\n await Promise.all(\n entrypoints.map(async (entrypoint) => {\n const wrapperPath = path.join(wrapperDirectory, `${entrypoint.id}.mjs`);\n const executablePath = path.join(repoRoot, entrypoint.edgeRuntime?.modulePath ?? entrypoint.filePath);\n const relativeImport = path.relative(wrapperDirectory, executablePath).replaceAll(path.sep, '/');\n const importSpecifier = relativeImport.startsWith('.') ? relativeImport : `./${relativeImport}`;\n const isMiddleware = middlewareOutputId !== undefined && entrypoint.outputIds.includes(middlewareOutputId);\n const webHandlerPrelude =\n entrypoint.runtime === 'edge' && entrypoint.edgeRuntime\n ? (() => {\n const edgeMarker = '/server/edge/';\n const markerIndex = entrypoint.edgeRuntime.modulePath.indexOf(edgeMarker);\n const distDirectory =\n markerIndex >= 0\n ? entrypoint.edgeRuntime.modulePath.slice(0, markerIndex)\n : path.dirname(entrypoint.edgeRuntime.modulePath);\n const edgeRuntimeAssets = Object.entries(entrypoint.assets)\n .filter(([, sourcePath]) => sourcePath.startsWith(`${distDirectory}/`) && sourcePath.endsWith('.js'))\n .sort(([, leftSource], [, rightSource]) => {\n if (leftSource === entrypoint.edgeRuntime?.modulePath) return 1;\n if (rightSource === entrypoint.edgeRuntime?.modulePath) return -1;\n return leftSource.localeCompare(rightSource);\n });\n const portableWrapperDirectory = toPortableRelativePath(repoRoot, wrapperDirectory);\n const imports = edgeRuntimeAssets\n .map(([targetPath, sourcePath]) => {\n // Next includes the executable Edge module in `assets` under a\n // deployment-relative target such as `server/edge/chunks/*`,\n // while `modulePath` retains its canonical `.next/server/*`\n // location. Function packaging installs the executable at the\n // canonical path, so the wrapper must import it there as well.\n const runtimeTargetPath =\n sourcePath === entrypoint.edgeRuntime?.modulePath ? entrypoint.edgeRuntime.modulePath : targetPath;\n const relativeAssetPath = path.posix.relative(portableWrapperDirectory, runtimeTargetPath);\n const assetSpecifier = relativeAssetPath.startsWith('.')\n ? relativeAssetPath\n : `./${relativeAssetPath}`;\n return ` await import(${JSON.stringify(assetSpecifier)});`;\n })\n .join('\\n');\n return `import { AsyncLocalStorage } from \"node:async_hooks\";\\n\\nconst resolveHandler = async () => {\\n globalThis.self ??= globalThis;\\n globalThis.AsyncLocalStorage ??= AsyncLocalStorage;\\n${imports}\\n const registry = globalThis._ENTRIES;\\n if (!registry) throw new Error('Next.js edge entry registry is unavailable');\\n const entry = await registry[${JSON.stringify(entrypoint.edgeRuntime.entryKey)}];\\n const handler = entry?.[${JSON.stringify(entrypoint.edgeRuntime.handlerExport)}];\\n if (typeof handler !== 'function') throw new Error('Next.js edge handler is unavailable');\\n return handler;\\n};`;\n })()\n : `import * as nextEntrypoint from ${JSON.stringify(importSpecifier)};\\n\\nconst resolveHandler = async () => {\\n const handler = nextEntrypoint.handler ?? nextEntrypoint.default?.handler ?? nextEntrypoint.default;\\n if (typeof handler !== 'function') throw new Error('Next.js middleware handler is unavailable');\\n return handler;\\n};`;\n const source =\n (entrypoint.runtime === 'edge' && entrypoint.edgeRuntime) || isMiddleware\n ? `${webHandlerPrelude}\\n\\nexport async function fetch(request) {\\n const pending = [];\\n const handler = await resolveHandler();\\n const url = new URL(request.url);\\n const response = await handler(request, {\\n signal: request.signal,\\n waitUntil(promise) { pending.push(Promise.resolve(promise)); },\\n requestMeta: { hostname: url.hostname, invocationTarget: request.headers.get('x-gigadrive-next-invocation-target') ?? url.pathname, routeMatches: Object.fromEntries(new URLSearchParams(request.headers.get('x-now-route-matches') ?? '')), relativeProjectDir: ${JSON.stringify(\n toPortableRelativePath(repoRoot, projectDir, true)\n )} },\\n });\\n if (!response.body) { await Promise.allSettled(pending); return response; }\\n const reader = response.body.getReader();\\n const body = new ReadableStream({\\n async pull(controller) {\\n const result = await reader.read();\\n if (result.done) { await Promise.allSettled(pending); controller.close(); return; }\\n controller.enqueue(result.value);\\n },\\n cancel(reason) { return reader.cancel(reason); },\\n });\\n return new Response(body, response);\\n}\\n`\n : `import \"next/dist/build/adapter/setup-node-env.external.js\";\\nimport * as nextEntrypoint from ${JSON.stringify(importSpecifier)};\\n\\nexport default async function handler(req, res) {\\n const pending = [];\\n const nextHandler = nextEntrypoint.handler ?? nextEntrypoint.default?.handler ?? nextEntrypoint.default;\\n if (typeof nextHandler !== 'function') throw new Error('Next.js Node handler is unavailable');\\n await nextHandler(req, res, {\\n waitUntil(promise) { pending.push(Promise.resolve(promise)); },\\n requestMeta: { hostname: req.headers.host, invocationTarget: req.headers['x-gigadrive-next-invocation-target'] ?? req.url, routeMatches: Object.fromEntries(new URLSearchParams(req.headers['x-now-route-matches'] ?? '')), relativeProjectDir: ${JSON.stringify(\n toPortableRelativePath(repoRoot, projectDir, true)\n )} },\\n });\\n await Promise.allSettled(pending);\\n}\\n`;\n await writeFile(wrapperPath, source, 'utf8');\n const portableWrapperPath = toPortableRelativePath(repoRoot, wrapperPath);\n entrypoint.assets[portableWrapperPath] = portableWrapperPath;\n entrypoint.filePath = portableWrapperPath;\n })\n );\n};\n\nconst normalizeImages = (config: BuildCompleteContext['config']): NormalizedImagePolicy | undefined => {\n if (config.images.unoptimized) return undefined;\n return {\n localPatterns: config.images.localPatterns ?? [{ pathname: '/**' }],\n remotePatterns: config.images.remotePatterns.map((pattern) => {\n if (pattern instanceof URL) {\n return {\n protocol: pattern.protocol === 'http:' ? ('http' as const) : ('https' as const),\n hostname: pattern.hostname,\n port: pattern.port,\n pathname: pattern.pathname,\n search: pattern.search,\n };\n }\n return { ...pattern };\n }),\n widths: [...new Set([...config.images.deviceSizes, ...config.images.imageSizes])].sort((a, b) => a - b),\n heights: [],\n qualities: config.images.qualities ?? [75],\n formats: config.images.formats,\n minimumCacheTTL: config.images.minimumCacheTTL,\n dangerouslyAllowSVG: config.images.dangerouslyAllowSVG,\n contentSecurityPolicy: config.images.contentSecurityPolicy,\n contentDispositionType: config.images.contentDispositionType,\n maximumRedirects: config.images.maximumRedirects,\n maximumResponseBody: config.images.maximumResponseBody,\n variants: {},\n };\n};\n\n/**\n * Next.js deployment adapter used automatically by Gigadrive Network build workers.\n *\n * Next 16 emits a portable, versioned runtime plan. Older Next versions retain the\n * standalone-server behavior so existing deployments remain compatible.\n */\nconst gigadriveNextAdapter: NextAdapter = {\n name: 'Gigadrive Network',\n\n modifyConfig(config, { phase, nextVersion }) {\n if (phase !== PRODUCTION_BUILD_PHASE) return config;\n\n const deploymentId = config.deploymentId ?? process.env.GIGADRIVE_DEPLOYMENT_ID;\n if (!isNext16OrNewer(nextVersion)) {\n return {\n ...config,\n ...(deploymentId ? { deploymentId } : {}),\n output: config.output === 'export' ? 'export' : 'standalone',\n };\n }\n if (config.output === 'export') {\n return { ...config, ...(deploymentId ? { deploymentId } : {}) };\n }\n\n const injectCacheHandler = config.cacheHandler === undefined;\n const injectCacheComponentHandlers = config.cacheHandlers === undefined;\n const images = config.images;\n const injectImageLoader =\n images !== undefined && images.unoptimized !== true && images.loader === 'default' && !images.loaderFile;\n\n return {\n ...config,\n ...(deploymentId ? { deploymentId } : {}),\n ...(injectCacheHandler ? { cacheHandler: CACHE_HANDLER_PATH() } : {}),\n ...(injectCacheComponentHandlers\n ? {\n cacheHandlers: {\n default: CACHE_COMPONENTS_HANDLER_PATH(),\n remote: CACHE_COMPONENTS_HANDLER_PATH(),\n },\n }\n : {}),\n ...(injectCacheHandler || injectCacheComponentHandlers ? { cacheMaxMemorySize: 0 } : {}),\n ...(injectImageLoader\n ? {\n images: {\n ...images,\n loader: 'custom',\n loaderFile: IMAGE_LOADER_PATH(),\n },\n }\n : {}),\n };\n },\n\n async onBuildComplete({ projectDir, repoRoot, distDir, config, nextVersion, buildId, routing, outputs }) {\n const metadataDirectory = path.join(projectDir, '.gigadrive');\n const portableOutputs = {\n pages: await Promise.all(outputs.pages.map((output) => serializeRouteOutput(repoRoot, output))),\n ...(outputs.middleware ? { middleware: await serializeRouteOutput(repoRoot, outputs.middleware) } : {}),\n appPages: await Promise.all(outputs.appPages.map((output) => serializeRouteOutput(repoRoot, output))),\n pagesApi: await Promise.all(outputs.pagesApi.map((output) => serializeRouteOutput(repoRoot, output))),\n appRoutes: await Promise.all(outputs.appRoutes.map((output) => serializeRouteOutput(repoRoot, output))),\n prerenders: await Promise.all(\n outputs.prerenders.map(async (output) => {\n const { bypassFor, ...prerenderConfig } = output.config;\n return {\n id: output.id,\n type: 'PRERENDER' as const,\n pathname: output.pathname,\n parentOutputId: output.parentOutputId,\n groupId: output.groupId,\n ...(output.pprChain ? { pprChain: output.pprChain } : {}),\n ...(output.parentFallbackMode !== undefined\n ? { parentFallbackMode: toJsonValue(output.parentFallbackMode) }\n : {}),\n ...(output.fallback\n ? {\n fallback: {\n ...(output.fallback.filePath\n ? { filePath: await requireReadableFile(repoRoot, output.fallback.filePath) }\n : {}),\n ...(output.fallback.initialStatus !== undefined\n ? { initialStatus: output.fallback.initialStatus }\n : {}),\n ...(output.fallback.initialHeaders ? { initialHeaders: output.fallback.initialHeaders } : {}),\n ...(output.fallback.initialExpiration !== undefined\n ? { initialExpiration: output.fallback.initialExpiration }\n : {}),\n ...(output.fallback.initialRevalidate !== undefined\n ? { initialRevalidate: output.fallback.initialRevalidate }\n : {}),\n ...(output.fallback.postponedState !== undefined\n ? { postponedState: output.fallback.postponedState }\n : {}),\n },\n }\n : {}),\n config: {\n ...prerenderConfig,\n ...(bypassFor ? { bypassFor: toJsonValue(bypassFor) as JsonValue[] } : {}),\n },\n };\n })\n ),\n staticFiles: await Promise.all(outputs.staticFiles.map((output) => serializeStaticOutput(repoRoot, output))),\n };\n const executableOutputs = [\n ...portableOutputs.pages,\n ...portableOutputs.pagesApi,\n ...portableOutputs.appPages,\n ...portableOutputs.appRoutes,\n ...(portableOutputs.middleware ? [portableOutputs.middleware] : []),\n ];\n const entrypointPlan = buildEntrypointPlan(executableOutputs);\n const runtimeConfigAssets = await serializeRuntimeConfigAssets(projectDir, repoRoot, config);\n for (const entrypoint of entrypointPlan.entrypoints) Object.assign(entrypoint.assets, runtimeConfigAssets);\n await writeEntrypointWrappers(projectDir, repoRoot, entrypointPlan.entrypoints, portableOutputs.middleware?.id);\n const images = normalizeImages(config);\n const manifest: GigadriveNextBuildManifestV2 = {\n version: 2,\n mode: config.output === 'export' ? 'export' : 'adapter-v2',\n distDir: toPortableRelativePath(projectDir, distDir),\n repoRootToProject: toPortableRelativePath(repoRoot, projectDir, true),\n nextVersion,\n buildId,\n config: {\n basePath: config.basePath,\n trailingSlash: config.trailingSlash,\n cacheComponents: config.cacheComponents,\n ...(config.i18n ? { i18n: toJsonValue(config.i18n) } : {}),\n ...(images ? { images } : {}),\n },\n routing: {\n beforeMiddleware: toJsonValue(routing.beforeMiddleware) as JsonValue[],\n beforeFiles: toJsonValue(routing.beforeFiles) as JsonValue[],\n afterFiles: toJsonValue(routing.afterFiles) as JsonValue[],\n dynamicRoutes: toJsonValue(routing.dynamicRoutes) as JsonValue[],\n onMatch: toJsonValue(routing.onMatch) as JsonValue[],\n fallback: toJsonValue(routing.fallback) as JsonValue[],\n shouldNormalizeNextData: routing.shouldNormalizeNextData,\n rsc: toJsonValue(routing.rsc),\n },\n outputs: portableOutputs,\n ...entrypointPlan,\n };\n\n await mkdir(metadataDirectory, { recursive: true });\n await writeFile(path.join(metadataDirectory, 'nextjs.json'), `${JSON.stringify(manifest, null, 2)}\\n`, 'utf8');\n },\n};\n\nexport default gigadriveNextAdapter;\n"],"mappings":"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","names":["path"]}
1
+ {"version":3,"sources":["../src/nextjs-adapter.ts"],"sourcesContent":["import type { NextAdapter } from 'next';\nimport { access, mkdir, realpath, stat, writeFile } from 'node:fs/promises';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport type { NormalizedImagePolicy } from './image-policy';\nimport type {\n GigadriveNextBuildManifestV2,\n GigadriveNextEntrypoint,\n GigadriveNextRouteOutput,\n GigadriveNextStaticOutput,\n JsonValue,\n} from './nextjs-manifest';\n\ntype BuildCompleteContext = Parameters<NonNullable<NextAdapter['onBuildComplete']>>[0];\ntype NextRouteOutput =\n | BuildCompleteContext['outputs']['pages'][number]\n | BuildCompleteContext['outputs']['pagesApi'][number]\n | BuildCompleteContext['outputs']['appPages'][number]\n | BuildCompleteContext['outputs']['appRoutes'][number]\n | NonNullable<BuildCompleteContext['outputs']['middleware']>;\ntype NextStaticOutput = BuildCompleteContext['outputs']['staticFiles'][number];\n\nconst PRODUCTION_BUILD_PHASE = 'phase-production-build';\nconst runtimeDirectory = typeof __dirname === 'string' ? __dirname : path.dirname(fileURLToPath(import.meta.url));\n\nconst runtimeModulePath = (environmentName: string, fileName: string): string =>\n process.env[environmentName] ?? path.join(runtimeDirectory, fileName);\n\nconst CACHE_HANDLER_PATH = () => runtimeModulePath('GIGADRIVE_NEXT_CACHE_HANDLER_PATH', 'nextjs-cache-handler.js');\nconst CACHE_COMPONENTS_HANDLER_PATH = () =>\n runtimeModulePath('GIGADRIVE_NEXT_CACHE_COMPONENTS_HANDLER_PATH', 'nextjs-cache-components-handler.js');\nconst IMAGE_LOADER_PATH = () => runtimeModulePath('GIGADRIVE_NEXT_IMAGE_LOADER_PATH', 'nextjs-image-loader.js');\nconst PPR_RUNTIME_PATH = () => runtimeModulePath('GIGADRIVE_NEXT_PPR_RUNTIME_PATH', 'nextjs-ppr-runtime.js');\n\nconst toJsonValue = (value: unknown): JsonValue => {\n const serialized = JSON.stringify(value);\n return serialized === undefined ? null : (JSON.parse(serialized) as JsonValue);\n};\n\nconst isNext16OrNewer = (nextVersion: string): boolean => {\n const major = Number.parseInt(nextVersion.split('.')[0] ?? '', 10);\n return Number.isFinite(major) && major >= 16;\n};\n\nconst toPortableRelativePath = (from: string, to: string, allowCurrentDirectory = false): string => {\n const resolvedFrom = path.resolve(from);\n const resolvedTo = path.resolve(path.isAbsolute(to) ? to : path.join(from, to));\n const relativePath = path.relative(resolvedFrom, resolvedTo).replaceAll(path.sep, '/');\n const normalized = relativePath === '' ? '.' : relativePath;\n if (\n (!allowCurrentDirectory && normalized === '.') ||\n normalized.startsWith('/') ||\n /^[A-Za-z]:/.test(normalized) ||\n normalized.split('/').some((segment) => segment === '..')\n ) {\n throw new Error(`Next.js adapter output is outside the repository root: ${to}`);\n }\n return normalized;\n};\n\nasync function resolveReadablePath(repoRoot: string, filePath: string) {\n const absolutePath = path.resolve(path.isAbsolute(filePath) ? filePath : path.join(repoRoot, filePath));\n const portablePath = toPortableRelativePath(repoRoot, absolutePath);\n await access(absolutePath);\n const resolvedPath = await realpath(absolutePath);\n toPortableRelativePath(repoRoot, resolvedPath);\n const fileStat = await stat(absolutePath);\n return { portablePath, fileStat };\n}\n\nasync function requireReadableFile(repoRoot: string, filePath: string): Promise<string> {\n const { portablePath, fileStat } = await resolveReadablePath(repoRoot, filePath);\n if (!fileStat.isFile()) throw new Error(`Next.js adapter output is not a readable file: ${filePath}`);\n return portablePath;\n}\n\nasync function requireReadableAsset(repoRoot: string, filePath: string): Promise<string> {\n const { portablePath, fileStat } = await resolveReadablePath(repoRoot, filePath);\n if (!fileStat.isFile() && !fileStat.isDirectory()) {\n throw new Error(`Next.js adapter asset is not a readable file or directory: ${filePath}`);\n }\n return portablePath;\n}\n\nasync function serializeFileMap(repoRoot: string, files: Record<string, string>): Promise<Record<string, string>> {\n const entries = await Promise.all(\n Object.entries(files).map(async ([targetPath, sourcePath]) => [\n toPortableRelativePath(repoRoot, targetPath),\n await requireReadableAsset(repoRoot, sourcePath),\n ])\n );\n return Object.fromEntries(entries);\n}\n\nconst serializeRuntimeConfigAssets = async (\n projectDir: string,\n repoRoot: string,\n config: BuildCompleteContext['config']\n): Promise<Record<string, string>> => {\n const configuredPaths = new Set([\n config.cacheHandler,\n ...Object.values(config.cacheHandlers ?? {}),\n config.images.loaderFile,\n PPR_RUNTIME_PATH(),\n ]);\n const assets: Record<string, string> = {};\n for (const configuredPath of configuredPaths) {\n if (!configuredPath) continue;\n const absolutePath = path.resolve(\n path.isAbsolute(configuredPath) ? configuredPath : path.join(projectDir, configuredPath)\n );\n const portablePath = await requireReadableFile(repoRoot, absolutePath);\n assets[portablePath] = portablePath;\n }\n return assets;\n};\n\nconst serializeRouteOutput = async (repoRoot: string, output: NextRouteOutput): Promise<GigadriveNextRouteOutput> => {\n const matchers = (\n output.config as typeof output.config & {\n matchers?: Array<{\n source: string;\n sourceRegex: string;\n has?: unknown[];\n missing?: unknown[];\n }>;\n }\n ).matchers;\n return {\n id: output.id,\n type: String(output.type) as GigadriveNextRouteOutput['type'],\n filePath: await requireReadableFile(repoRoot, output.filePath),\n pathname: output.pathname,\n sourcePage: output.sourcePage,\n runtime: output.runtime,\n assets: await serializeFileMap(repoRoot, output.assets),\n ...(output.wasmAssets ? { wasmAssets: await serializeFileMap(repoRoot, output.wasmAssets) } : {}),\n ...(output.edgeRuntime\n ? {\n edgeRuntime: {\n modulePath: await requireReadableFile(repoRoot, output.edgeRuntime.modulePath),\n entryKey: output.edgeRuntime.entryKey,\n handlerExport: output.edgeRuntime.handlerExport,\n },\n }\n : {}),\n config: {\n maxDuration: output.config.maxDuration,\n preferredRegion: output.config.preferredRegion,\n env: output.config.env,\n ...(matchers\n ? {\n matchers: matchers.map((matcher) => ({\n source: matcher.source,\n sourceRegex: matcher.sourceRegex,\n ...(matcher.has ? { has: toJsonValue(matcher.has) as JsonValue[] } : {}),\n ...(matcher.missing ? { missing: toJsonValue(matcher.missing) as JsonValue[] } : {}),\n })),\n }\n : {}),\n },\n };\n};\n\nconst serializeStaticOutput = async (\n repoRoot: string,\n output: NextStaticOutput\n): Promise<GigadriveNextStaticOutput> => ({\n id: output.id,\n type: 'STATIC_FILE',\n filePath: await requireReadableFile(repoRoot, output.filePath),\n pathname: output.pathname,\n ...(output.immutableHash ? { immutableHash: output.immutableHash } : {}),\n});\n\nconst buildEntrypointPlan = (\n outputs: GigadriveNextRouteOutput[]\n): Pick<GigadriveNextBuildManifestV2, 'entrypoints' | 'outputEntrypoints'> => {\n const byIdentity = new Map<string, GigadriveNextEntrypoint>();\n const outputEntrypoints: Record<string, string> = {};\n\n for (const output of outputs) {\n const identity = JSON.stringify([\n output.type === 'MIDDLEWARE' ? 'middleware-web' : 'route',\n output.runtime,\n output.filePath,\n output.edgeRuntime?.modulePath,\n output.edgeRuntime?.entryKey,\n output.edgeRuntime?.handlerExport,\n ]);\n const existingEntrypoint = byIdentity.get(identity);\n const entrypoint: GigadriveNextEntrypoint = existingEntrypoint ?? {\n id: `next-${byIdentity.size}`,\n runtime: output.runtime,\n filePath: output.filePath,\n outputIds: [],\n assets: { ...output.assets },\n ...(output.wasmAssets ? { wasmAssets: { ...output.wasmAssets } } : {}),\n ...(output.edgeRuntime ? { edgeRuntime: { ...output.edgeRuntime } } : {}),\n config: {\n maxDuration: output.config.maxDuration,\n preferredRegion: output.config.preferredRegion,\n env: output.config.env,\n },\n };\n if (!existingEntrypoint) {\n byIdentity.set(identity, entrypoint);\n } else {\n Object.assign(entrypoint.assets, output.assets);\n if (output.wasmAssets) entrypoint.wasmAssets = { ...entrypoint.wasmAssets, ...output.wasmAssets };\n if (output.config.maxDuration !== undefined) {\n entrypoint.config.maxDuration = Math.max(entrypoint.config.maxDuration ?? 0, output.config.maxDuration);\n }\n }\n entrypoint.outputIds.push(output.id);\n outputEntrypoints[output.id] = entrypoint.id;\n }\n\n return { entrypoints: [...byIdentity.values()], outputEntrypoints };\n};\n\nconst writeEntrypointWrappers = async (\n projectDir: string,\n repoRoot: string,\n entrypoints: GigadriveNextEntrypoint[],\n pprRuntimePath: string,\n middlewareOutputId?: string\n): Promise<void> => {\n const wrapperDirectory = path.join(projectDir, '.gigadrive', 'nextjs', 'entrypoints');\n await mkdir(wrapperDirectory, { recursive: true });\n const portableWrapperDirectory = toPortableRelativePath(repoRoot, wrapperDirectory);\n const relativePprRuntimePath = path.posix.relative(portableWrapperDirectory, pprRuntimePath);\n const pprRuntimeSpecifier = relativePprRuntimePath.startsWith('.')\n ? relativePprRuntimePath\n : `./${relativePprRuntimePath}`;\n\n await Promise.all(\n entrypoints.map(async (entrypoint) => {\n const wrapperPath = path.join(wrapperDirectory, `${entrypoint.id}.mjs`);\n const executablePath = path.join(repoRoot, entrypoint.edgeRuntime?.modulePath ?? entrypoint.filePath);\n const relativeImport = path.relative(wrapperDirectory, executablePath).replaceAll(path.sep, '/');\n const importSpecifier = relativeImport.startsWith('.') ? relativeImport : `./${relativeImport}`;\n const isMiddleware = middlewareOutputId !== undefined && entrypoint.outputIds.includes(middlewareOutputId);\n const webHandlerPrelude =\n entrypoint.runtime === 'edge' && entrypoint.edgeRuntime\n ? (() => {\n const edgeMarker = '/server/edge/';\n const markerIndex = entrypoint.edgeRuntime.modulePath.indexOf(edgeMarker);\n const distDirectory =\n markerIndex >= 0\n ? entrypoint.edgeRuntime.modulePath.slice(0, markerIndex)\n : path.dirname(entrypoint.edgeRuntime.modulePath);\n const edgeRuntimeAssets = Object.entries(entrypoint.assets)\n .filter(([, sourcePath]) => sourcePath.startsWith(`${distDirectory}/`) && sourcePath.endsWith('.js'))\n .sort(([, leftSource], [, rightSource]) => {\n if (leftSource === entrypoint.edgeRuntime?.modulePath) return 1;\n if (rightSource === entrypoint.edgeRuntime?.modulePath) return -1;\n return leftSource.localeCompare(rightSource);\n });\n const imports = edgeRuntimeAssets\n .map(([targetPath, sourcePath]) => {\n // Next includes the executable Edge module in `assets` under a\n // deployment-relative target such as `server/edge/chunks/*`,\n // while `modulePath` retains its canonical `.next/server/*`\n // location. Function packaging installs the executable at the\n // canonical path, so the wrapper must import it there as well.\n const runtimeTargetPath =\n sourcePath === entrypoint.edgeRuntime?.modulePath ? entrypoint.edgeRuntime.modulePath : targetPath;\n const relativeAssetPath = path.posix.relative(portableWrapperDirectory, runtimeTargetPath);\n const assetSpecifier = relativeAssetPath.startsWith('.')\n ? relativeAssetPath\n : `./${relativeAssetPath}`;\n return ` await import(${JSON.stringify(assetSpecifier)});`;\n })\n .join('\\n');\n return `import { AsyncLocalStorage } from \"node:async_hooks\";\\n\\nconst resolveHandler = async () => {\\n globalThis.self ??= globalThis;\\n globalThis.AsyncLocalStorage ??= AsyncLocalStorage;\\n${imports}\\n const registry = globalThis._ENTRIES;\\n if (!registry) throw new Error('Next.js edge entry registry is unavailable');\\n const entry = await registry[${JSON.stringify(entrypoint.edgeRuntime.entryKey)}];\\n const handler = entry?.[${JSON.stringify(entrypoint.edgeRuntime.handlerExport)}];\\n if (typeof handler !== 'function') throw new Error('Next.js edge handler is unavailable');\\n return handler;\\n};`;\n })()\n : `import * as nextEntrypoint from ${JSON.stringify(importSpecifier)};\\n\\nconst resolveHandler = async () => {\\n const handler = nextEntrypoint.handler ?? nextEntrypoint.default?.handler ?? nextEntrypoint.default;\\n if (typeof handler !== 'function') throw new Error('Next.js middleware handler is unavailable');\\n return handler;\\n};`;\n const source =\n (entrypoint.runtime === 'edge' && entrypoint.edgeRuntime) || isMiddleware\n ? `import { persistPprCacheEntry } from ${JSON.stringify(pprRuntimeSpecifier)};\\n${webHandlerPrelude}\\n\\nexport async function fetch(request) {\\n const pending = [];\\n const handler = await resolveHandler();\\n const url = new URL(request.url);\\n const response = await handler(request, {\\n signal: request.signal,\\n waitUntil(promise) { pending.push(Promise.resolve(promise)); },\\n requestMeta: { hostname: url.hostname, invocationTarget: request.headers.get('x-gigadrive-next-invocation-target') ?? url.pathname, routeMatches: Object.fromEntries(new URLSearchParams(request.headers.get('x-now-route-matches') ?? '')), relativeProjectDir: ${JSON.stringify(\n toPortableRelativePath(repoRoot, projectDir, true)\n )}, onCacheEntryV2(cacheEntry, meta) { pending.push(persistPprCacheEntry(request.headers.get('x-gigadrive-next-cache-key') ?? meta.url ?? request.headers.get('x-matched-path') ?? url.pathname, cacheEntry)); return false; } },\\n });\\n if (!response.body) { await Promise.allSettled(pending); return response; }\\n const reader = response.body.getReader();\\n const body = new ReadableStream({\\n async pull(controller) {\\n const result = await reader.read();\\n if (result.done) { await Promise.allSettled(pending); controller.close(); return; }\\n controller.enqueue(result.value);\\n },\\n async cancel(reason) { try { await reader.cancel(reason); } finally { await Promise.allSettled(pending); } },\\n });\\n return new Response(body, response);\\n}\\n`\n : `import \"next/dist/build/adapter/setup-node-env.external.js\";\\nimport * as nextEntrypoint from ${JSON.stringify(importSpecifier)};\\nimport { persistPprCacheEntry } from ${JSON.stringify(pprRuntimeSpecifier)};\\n\\nexport default async function handler(req, res) {\\n const pending = [];\\n const nextHandler = nextEntrypoint.handler ?? nextEntrypoint.default?.handler ?? nextEntrypoint.default;\\n if (typeof nextHandler !== 'function') throw new Error('Next.js Node handler is unavailable');\\n await nextHandler(req, res, {\\n waitUntil(promise) { pending.push(Promise.resolve(promise)); },\\n requestMeta: { hostname: req.headers.host, invocationTarget: req.headers['x-gigadrive-next-invocation-target'] ?? req.url, routeMatches: Object.fromEntries(new URLSearchParams(req.headers['x-now-route-matches'] ?? '')), relativeProjectDir: ${JSON.stringify(\n toPortableRelativePath(repoRoot, projectDir, true)\n )}, onCacheEntryV2(cacheEntry, meta) { const cacheKey = req.headers['x-gigadrive-next-cache-key']; const matchedPath = req.headers['x-matched-path']; pending.push(persistPprCacheEntry((Array.isArray(cacheKey) ? cacheKey[0] : cacheKey) ?? meta.url ?? (Array.isArray(matchedPath) ? matchedPath[0] : matchedPath) ?? req.url ?? '/', cacheEntry)); return false; } },\\n });\\n await Promise.allSettled(pending);\\n}\\n`;\n await writeFile(wrapperPath, source, 'utf8');\n const portableWrapperPath = toPortableRelativePath(repoRoot, wrapperPath);\n entrypoint.assets[portableWrapperPath] = portableWrapperPath;\n entrypoint.filePath = portableWrapperPath;\n })\n );\n};\n\nconst normalizeImages = (config: BuildCompleteContext['config']): NormalizedImagePolicy | undefined => {\n if (config.images.unoptimized) return undefined;\n return {\n localPatterns: config.images.localPatterns ?? [{ pathname: '/**' }],\n remotePatterns: config.images.remotePatterns.map((pattern) => {\n if (pattern instanceof URL) {\n return {\n protocol: pattern.protocol === 'http:' ? ('http' as const) : ('https' as const),\n hostname: pattern.hostname,\n port: pattern.port,\n pathname: pattern.pathname,\n search: pattern.search,\n };\n }\n return { ...pattern };\n }),\n widths: [...new Set([...config.images.deviceSizes, ...config.images.imageSizes])].sort((a, b) => a - b),\n heights: [],\n qualities: config.images.qualities ?? [75],\n formats: config.images.formats,\n minimumCacheTTL: config.images.minimumCacheTTL,\n dangerouslyAllowSVG: config.images.dangerouslyAllowSVG,\n contentSecurityPolicy: config.images.contentSecurityPolicy,\n contentDispositionType: config.images.contentDispositionType,\n maximumRedirects: config.images.maximumRedirects,\n maximumResponseBody: config.images.maximumResponseBody,\n variants: {},\n };\n};\n\n/**\n * Next.js deployment adapter used automatically by Gigadrive Network build workers.\n *\n * Next 16 emits a portable, versioned runtime plan. Older Next versions retain the\n * standalone-server behavior so existing deployments remain compatible.\n */\nconst gigadriveNextAdapter: NextAdapter = {\n name: 'Gigadrive Network',\n\n modifyConfig(config, { phase, nextVersion }) {\n if (phase !== PRODUCTION_BUILD_PHASE) return config;\n\n const deploymentId = config.deploymentId ?? process.env.GIGADRIVE_DEPLOYMENT_ID;\n if (!isNext16OrNewer(nextVersion)) {\n return {\n ...config,\n ...(deploymentId ? { deploymentId } : {}),\n output: config.output === 'export' ? 'export' : 'standalone',\n };\n }\n if (config.output === 'export') {\n return { ...config, ...(deploymentId ? { deploymentId } : {}) };\n }\n\n const injectCacheHandler = config.cacheHandler === undefined;\n const injectCacheComponentHandlers = config.cacheHandlers === undefined;\n const images = config.images;\n const injectImageLoader =\n images !== undefined && images.unoptimized !== true && images.loader === 'default' && !images.loaderFile;\n\n return {\n ...config,\n ...(deploymentId ? { deploymentId } : {}),\n ...(injectCacheHandler ? { cacheHandler: CACHE_HANDLER_PATH() } : {}),\n ...(injectCacheComponentHandlers\n ? {\n cacheHandlers: {\n default: CACHE_COMPONENTS_HANDLER_PATH(),\n remote: CACHE_COMPONENTS_HANDLER_PATH(),\n },\n }\n : {}),\n ...(injectCacheHandler || injectCacheComponentHandlers ? { cacheMaxMemorySize: 0 } : {}),\n ...(injectImageLoader\n ? {\n images: {\n ...images,\n loader: 'custom',\n loaderFile: IMAGE_LOADER_PATH(),\n },\n }\n : {}),\n };\n },\n\n async onBuildComplete({ projectDir, repoRoot, distDir, config, nextVersion, buildId, routing, outputs }) {\n const metadataDirectory = path.join(projectDir, '.gigadrive');\n const portableOutputs = {\n pages: await Promise.all(outputs.pages.map((output) => serializeRouteOutput(repoRoot, output))),\n ...(outputs.middleware ? { middleware: await serializeRouteOutput(repoRoot, outputs.middleware) } : {}),\n appPages: await Promise.all(outputs.appPages.map((output) => serializeRouteOutput(repoRoot, output))),\n pagesApi: await Promise.all(outputs.pagesApi.map((output) => serializeRouteOutput(repoRoot, output))),\n appRoutes: await Promise.all(outputs.appRoutes.map((output) => serializeRouteOutput(repoRoot, output))),\n prerenders: await Promise.all(\n outputs.prerenders.map(async (output) => {\n const { bypassFor, ...prerenderConfig } = output.config;\n return {\n id: output.id,\n type: 'PRERENDER' as const,\n pathname: output.pathname,\n parentOutputId: output.parentOutputId,\n groupId: output.groupId,\n ...(output.pprChain ? { pprChain: output.pprChain } : {}),\n ...(output.parentFallbackMode !== undefined\n ? { parentFallbackMode: toJsonValue(output.parentFallbackMode) }\n : {}),\n ...(output.fallback\n ? {\n fallback: {\n ...(output.fallback.filePath\n ? { filePath: await requireReadableFile(repoRoot, output.fallback.filePath) }\n : {}),\n ...(output.fallback.initialStatus !== undefined\n ? { initialStatus: output.fallback.initialStatus }\n : {}),\n ...(output.fallback.initialHeaders ? { initialHeaders: output.fallback.initialHeaders } : {}),\n ...(output.fallback.initialExpiration !== undefined\n ? { initialExpiration: output.fallback.initialExpiration }\n : {}),\n ...(output.fallback.initialRevalidate !== undefined\n ? { initialRevalidate: output.fallback.initialRevalidate }\n : {}),\n ...(output.fallback.postponedState !== undefined\n ? { postponedState: output.fallback.postponedState }\n : {}),\n },\n }\n : {}),\n config: {\n ...prerenderConfig,\n ...(bypassFor ? { bypassFor: toJsonValue(bypassFor) as JsonValue[] } : {}),\n },\n };\n })\n ),\n staticFiles: await Promise.all(outputs.staticFiles.map((output) => serializeStaticOutput(repoRoot, output))),\n };\n const executableOutputs = [\n ...portableOutputs.pages,\n ...portableOutputs.pagesApi,\n ...portableOutputs.appPages,\n ...portableOutputs.appRoutes,\n ...(portableOutputs.middleware ? [portableOutputs.middleware] : []),\n ];\n const entrypointPlan = buildEntrypointPlan(executableOutputs);\n const runtimeConfigAssets = await serializeRuntimeConfigAssets(projectDir, repoRoot, config);\n for (const entrypoint of entrypointPlan.entrypoints) Object.assign(entrypoint.assets, runtimeConfigAssets);\n const pprRuntimePath = await requireReadableFile(repoRoot, PPR_RUNTIME_PATH());\n await writeEntrypointWrappers(\n projectDir,\n repoRoot,\n entrypointPlan.entrypoints,\n pprRuntimePath,\n portableOutputs.middleware?.id\n );\n const images = normalizeImages(config);\n const manifest: GigadriveNextBuildManifestV2 = {\n version: 2,\n mode: config.output === 'export' ? 'export' : 'adapter-v2',\n distDir: toPortableRelativePath(projectDir, distDir),\n repoRootToProject: toPortableRelativePath(repoRoot, projectDir, true),\n nextVersion,\n buildId,\n config: {\n basePath: config.basePath,\n trailingSlash: config.trailingSlash,\n cacheComponents: config.cacheComponents,\n ...(config.i18n ? { i18n: toJsonValue(config.i18n) } : {}),\n ...(images ? { images } : {}),\n },\n routing: {\n beforeMiddleware: toJsonValue(routing.beforeMiddleware) as JsonValue[],\n beforeFiles: toJsonValue(routing.beforeFiles) as JsonValue[],\n afterFiles: toJsonValue(routing.afterFiles) as JsonValue[],\n dynamicRoutes: toJsonValue(routing.dynamicRoutes) as JsonValue[],\n onMatch: toJsonValue(routing.onMatch) as JsonValue[],\n fallback: toJsonValue(routing.fallback) as JsonValue[],\n shouldNormalizeNextData: routing.shouldNormalizeNextData,\n rsc: toJsonValue(routing.rsc),\n },\n outputs: portableOutputs,\n ...entrypointPlan,\n };\n\n await mkdir(metadataDirectory, { recursive: true });\n await writeFile(path.join(metadataDirectory, 'nextjs.json'), `${JSON.stringify(manifest, null, 2)}\\n`, 'utf8');\n },\n};\n\nexport default gigadriveNextAdapter;\n"],"mappings":"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","names":["path"]}
@@ -8,6 +8,7 @@ var runtimeModulePath = (environmentName, fileName) => process.env[environmentNa
8
8
  var CACHE_HANDLER_PATH = () => runtimeModulePath("GIGADRIVE_NEXT_CACHE_HANDLER_PATH", "nextjs-cache-handler.js");
9
9
  var CACHE_COMPONENTS_HANDLER_PATH = () => runtimeModulePath("GIGADRIVE_NEXT_CACHE_COMPONENTS_HANDLER_PATH", "nextjs-cache-components-handler.js");
10
10
  var IMAGE_LOADER_PATH = () => runtimeModulePath("GIGADRIVE_NEXT_IMAGE_LOADER_PATH", "nextjs-image-loader.js");
11
+ var PPR_RUNTIME_PATH = () => runtimeModulePath("GIGADRIVE_NEXT_PPR_RUNTIME_PATH", "nextjs-ppr-runtime.js");
11
12
  var toJsonValue = (value) => {
12
13
  const serialized = JSON.stringify(value);
13
14
  return serialized === void 0 ? null : JSON.parse(serialized);
@@ -60,7 +61,8 @@ var serializeRuntimeConfigAssets = async (projectDir, repoRoot, config) => {
60
61
  const configuredPaths = /* @__PURE__ */ new Set([
61
62
  config.cacheHandler,
62
63
  ...Object.values(config.cacheHandlers ?? {}),
63
- config.images.loaderFile
64
+ config.images.loaderFile,
65
+ PPR_RUNTIME_PATH()
64
66
  ]);
65
67
  const assets = {};
66
68
  for (const configuredPath of configuredPaths) {
@@ -154,9 +156,12 @@ var buildEntrypointPlan = (outputs) => {
154
156
  }
155
157
  return { entrypoints: [...byIdentity.values()], outputEntrypoints };
156
158
  };
157
- var writeEntrypointWrappers = async (projectDir, repoRoot, entrypoints, middlewareOutputId) => {
159
+ var writeEntrypointWrappers = async (projectDir, repoRoot, entrypoints, pprRuntimePath, middlewareOutputId) => {
158
160
  const wrapperDirectory = path.join(projectDir, ".gigadrive", "nextjs", "entrypoints");
159
161
  await mkdir(wrapperDirectory, { recursive: true });
162
+ const portableWrapperDirectory = toPortableRelativePath(repoRoot, wrapperDirectory);
163
+ const relativePprRuntimePath = path.posix.relative(portableWrapperDirectory, pprRuntimePath);
164
+ const pprRuntimeSpecifier = relativePprRuntimePath.startsWith(".") ? relativePprRuntimePath : `./${relativePprRuntimePath}`;
160
165
  await Promise.all(
161
166
  entrypoints.map(async (entrypoint) => {
162
167
  const wrapperPath = path.join(wrapperDirectory, `${entrypoint.id}.mjs`);
@@ -173,7 +178,6 @@ var writeEntrypointWrappers = async (projectDir, repoRoot, entrypoints, middlewa
173
178
  if (rightSource === entrypoint.edgeRuntime?.modulePath) return -1;
174
179
  return leftSource.localeCompare(rightSource);
175
180
  });
176
- const portableWrapperDirectory = toPortableRelativePath(repoRoot, wrapperDirectory);
177
181
  const imports = edgeRuntimeAssets.map(([targetPath, sourcePath]) => {
178
182
  const runtimeTargetPath = sourcePath === entrypoint.edgeRuntime?.modulePath ? entrypoint.edgeRuntime.modulePath : targetPath;
179
183
  const relativeAssetPath = path.posix.relative(portableWrapperDirectory, runtimeTargetPath);
@@ -200,7 +204,8 @@ const resolveHandler = async () => {
200
204
  if (typeof handler !== 'function') throw new Error('Next.js middleware handler is unavailable');
201
205
  return handler;
202
206
  };`;
203
- const source = entrypoint.runtime === "edge" && entrypoint.edgeRuntime || isMiddleware ? `${webHandlerPrelude}
207
+ const source = entrypoint.runtime === "edge" && entrypoint.edgeRuntime || isMiddleware ? `import { persistPprCacheEntry } from ${JSON.stringify(pprRuntimeSpecifier)};
208
+ ${webHandlerPrelude}
204
209
 
205
210
  export async function fetch(request) {
206
211
  const pending = [];
@@ -211,7 +216,7 @@ export async function fetch(request) {
211
216
  waitUntil(promise) { pending.push(Promise.resolve(promise)); },
212
217
  requestMeta: { hostname: url.hostname, invocationTarget: request.headers.get('x-gigadrive-next-invocation-target') ?? url.pathname, routeMatches: Object.fromEntries(new URLSearchParams(request.headers.get('x-now-route-matches') ?? '')), relativeProjectDir: ${JSON.stringify(
213
218
  toPortableRelativePath(repoRoot, projectDir, true)
214
- )} },
219
+ )}, onCacheEntryV2(cacheEntry, meta) { pending.push(persistPprCacheEntry(request.headers.get('x-gigadrive-next-cache-key') ?? meta.url ?? request.headers.get('x-matched-path') ?? url.pathname, cacheEntry)); return false; } },
215
220
  });
216
221
  if (!response.body) { await Promise.allSettled(pending); return response; }
217
222
  const reader = response.body.getReader();
@@ -221,12 +226,13 @@ export async function fetch(request) {
221
226
  if (result.done) { await Promise.allSettled(pending); controller.close(); return; }
222
227
  controller.enqueue(result.value);
223
228
  },
224
- cancel(reason) { return reader.cancel(reason); },
229
+ async cancel(reason) { try { await reader.cancel(reason); } finally { await Promise.allSettled(pending); } },
225
230
  });
226
231
  return new Response(body, response);
227
232
  }
228
233
  ` : `import "next/dist/build/adapter/setup-node-env.external.js";
229
234
  import * as nextEntrypoint from ${JSON.stringify(importSpecifier)};
235
+ import { persistPprCacheEntry } from ${JSON.stringify(pprRuntimeSpecifier)};
230
236
 
231
237
  export default async function handler(req, res) {
232
238
  const pending = [];
@@ -236,7 +242,7 @@ export default async function handler(req, res) {
236
242
  waitUntil(promise) { pending.push(Promise.resolve(promise)); },
237
243
  requestMeta: { hostname: req.headers.host, invocationTarget: req.headers['x-gigadrive-next-invocation-target'] ?? req.url, routeMatches: Object.fromEntries(new URLSearchParams(req.headers['x-now-route-matches'] ?? '')), relativeProjectDir: ${JSON.stringify(
238
244
  toPortableRelativePath(repoRoot, projectDir, true)
239
- )} },
245
+ )}, onCacheEntryV2(cacheEntry, meta) { const cacheKey = req.headers['x-gigadrive-next-cache-key']; const matchedPath = req.headers['x-matched-path']; pending.push(persistPprCacheEntry((Array.isArray(cacheKey) ? cacheKey[0] : cacheKey) ?? meta.url ?? (Array.isArray(matchedPath) ? matchedPath[0] : matchedPath) ?? req.url ?? '/', cacheEntry)); return false; } },
240
246
  });
241
247
  await Promise.allSettled(pending);
242
248
  }
@@ -364,7 +370,14 @@ var gigadriveNextAdapter = {
364
370
  const entrypointPlan = buildEntrypointPlan(executableOutputs);
365
371
  const runtimeConfigAssets = await serializeRuntimeConfigAssets(projectDir, repoRoot, config);
366
372
  for (const entrypoint of entrypointPlan.entrypoints) Object.assign(entrypoint.assets, runtimeConfigAssets);
367
- await writeEntrypointWrappers(projectDir, repoRoot, entrypointPlan.entrypoints, portableOutputs.middleware?.id);
373
+ const pprRuntimePath = await requireReadableFile(repoRoot, PPR_RUNTIME_PATH());
374
+ await writeEntrypointWrappers(
375
+ projectDir,
376
+ repoRoot,
377
+ entrypointPlan.entrypoints,
378
+ pprRuntimePath,
379
+ portableOutputs.middleware?.id
380
+ );
368
381
  const images = normalizeImages(config);
369
382
  const manifest = {
370
383
  version: 2,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/nextjs-adapter.ts"],"sourcesContent":["import type { NextAdapter } from 'next';\nimport { access, mkdir, realpath, stat, writeFile } from 'node:fs/promises';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport type { NormalizedImagePolicy } from './image-policy';\nimport type {\n GigadriveNextBuildManifestV2,\n GigadriveNextEntrypoint,\n GigadriveNextRouteOutput,\n GigadriveNextStaticOutput,\n JsonValue,\n} from './nextjs-manifest';\n\ntype BuildCompleteContext = Parameters<NonNullable<NextAdapter['onBuildComplete']>>[0];\ntype NextRouteOutput =\n | BuildCompleteContext['outputs']['pages'][number]\n | BuildCompleteContext['outputs']['pagesApi'][number]\n | BuildCompleteContext['outputs']['appPages'][number]\n | BuildCompleteContext['outputs']['appRoutes'][number]\n | NonNullable<BuildCompleteContext['outputs']['middleware']>;\ntype NextStaticOutput = BuildCompleteContext['outputs']['staticFiles'][number];\n\nconst PRODUCTION_BUILD_PHASE = 'phase-production-build';\nconst runtimeDirectory = typeof __dirname === 'string' ? __dirname : path.dirname(fileURLToPath(import.meta.url));\n\nconst runtimeModulePath = (environmentName: string, fileName: string): string =>\n process.env[environmentName] ?? path.join(runtimeDirectory, fileName);\n\nconst CACHE_HANDLER_PATH = () => runtimeModulePath('GIGADRIVE_NEXT_CACHE_HANDLER_PATH', 'nextjs-cache-handler.js');\nconst CACHE_COMPONENTS_HANDLER_PATH = () =>\n runtimeModulePath('GIGADRIVE_NEXT_CACHE_COMPONENTS_HANDLER_PATH', 'nextjs-cache-components-handler.js');\nconst IMAGE_LOADER_PATH = () => runtimeModulePath('GIGADRIVE_NEXT_IMAGE_LOADER_PATH', 'nextjs-image-loader.js');\n\nconst toJsonValue = (value: unknown): JsonValue => {\n const serialized = JSON.stringify(value);\n return serialized === undefined ? null : (JSON.parse(serialized) as JsonValue);\n};\n\nconst isNext16OrNewer = (nextVersion: string): boolean => {\n const major = Number.parseInt(nextVersion.split('.')[0] ?? '', 10);\n return Number.isFinite(major) && major >= 16;\n};\n\nconst toPortableRelativePath = (from: string, to: string, allowCurrentDirectory = false): string => {\n const resolvedFrom = path.resolve(from);\n const resolvedTo = path.resolve(path.isAbsolute(to) ? to : path.join(from, to));\n const relativePath = path.relative(resolvedFrom, resolvedTo).replaceAll(path.sep, '/');\n const normalized = relativePath === '' ? '.' : relativePath;\n if (\n (!allowCurrentDirectory && normalized === '.') ||\n normalized.startsWith('/') ||\n /^[A-Za-z]:/.test(normalized) ||\n normalized.split('/').some((segment) => segment === '..')\n ) {\n throw new Error(`Next.js adapter output is outside the repository root: ${to}`);\n }\n return normalized;\n};\n\nasync function resolveReadablePath(repoRoot: string, filePath: string) {\n const absolutePath = path.resolve(path.isAbsolute(filePath) ? filePath : path.join(repoRoot, filePath));\n const portablePath = toPortableRelativePath(repoRoot, absolutePath);\n await access(absolutePath);\n const resolvedPath = await realpath(absolutePath);\n toPortableRelativePath(repoRoot, resolvedPath);\n const fileStat = await stat(absolutePath);\n return { portablePath, fileStat };\n}\n\nasync function requireReadableFile(repoRoot: string, filePath: string): Promise<string> {\n const { portablePath, fileStat } = await resolveReadablePath(repoRoot, filePath);\n if (!fileStat.isFile()) throw new Error(`Next.js adapter output is not a readable file: ${filePath}`);\n return portablePath;\n}\n\nasync function requireReadableAsset(repoRoot: string, filePath: string): Promise<string> {\n const { portablePath, fileStat } = await resolveReadablePath(repoRoot, filePath);\n if (!fileStat.isFile() && !fileStat.isDirectory()) {\n throw new Error(`Next.js adapter asset is not a readable file or directory: ${filePath}`);\n }\n return portablePath;\n}\n\nasync function serializeFileMap(repoRoot: string, files: Record<string, string>): Promise<Record<string, string>> {\n const entries = await Promise.all(\n Object.entries(files).map(async ([targetPath, sourcePath]) => [\n toPortableRelativePath(repoRoot, targetPath),\n await requireReadableAsset(repoRoot, sourcePath),\n ])\n );\n return Object.fromEntries(entries);\n}\n\nconst serializeRuntimeConfigAssets = async (\n projectDir: string,\n repoRoot: string,\n config: BuildCompleteContext['config']\n): Promise<Record<string, string>> => {\n const configuredPaths = new Set([\n config.cacheHandler,\n ...Object.values(config.cacheHandlers ?? {}),\n config.images.loaderFile,\n ]);\n const assets: Record<string, string> = {};\n for (const configuredPath of configuredPaths) {\n if (!configuredPath) continue;\n const absolutePath = path.resolve(\n path.isAbsolute(configuredPath) ? configuredPath : path.join(projectDir, configuredPath)\n );\n const portablePath = await requireReadableFile(repoRoot, absolutePath);\n assets[portablePath] = portablePath;\n }\n return assets;\n};\n\nconst serializeRouteOutput = async (repoRoot: string, output: NextRouteOutput): Promise<GigadriveNextRouteOutput> => {\n const matchers = (\n output.config as typeof output.config & {\n matchers?: Array<{\n source: string;\n sourceRegex: string;\n has?: unknown[];\n missing?: unknown[];\n }>;\n }\n ).matchers;\n return {\n id: output.id,\n type: String(output.type) as GigadriveNextRouteOutput['type'],\n filePath: await requireReadableFile(repoRoot, output.filePath),\n pathname: output.pathname,\n sourcePage: output.sourcePage,\n runtime: output.runtime,\n assets: await serializeFileMap(repoRoot, output.assets),\n ...(output.wasmAssets ? { wasmAssets: await serializeFileMap(repoRoot, output.wasmAssets) } : {}),\n ...(output.edgeRuntime\n ? {\n edgeRuntime: {\n modulePath: await requireReadableFile(repoRoot, output.edgeRuntime.modulePath),\n entryKey: output.edgeRuntime.entryKey,\n handlerExport: output.edgeRuntime.handlerExport,\n },\n }\n : {}),\n config: {\n maxDuration: output.config.maxDuration,\n preferredRegion: output.config.preferredRegion,\n env: output.config.env,\n ...(matchers\n ? {\n matchers: matchers.map((matcher) => ({\n source: matcher.source,\n sourceRegex: matcher.sourceRegex,\n ...(matcher.has ? { has: toJsonValue(matcher.has) as JsonValue[] } : {}),\n ...(matcher.missing ? { missing: toJsonValue(matcher.missing) as JsonValue[] } : {}),\n })),\n }\n : {}),\n },\n };\n};\n\nconst serializeStaticOutput = async (\n repoRoot: string,\n output: NextStaticOutput\n): Promise<GigadriveNextStaticOutput> => ({\n id: output.id,\n type: 'STATIC_FILE',\n filePath: await requireReadableFile(repoRoot, output.filePath),\n pathname: output.pathname,\n ...(output.immutableHash ? { immutableHash: output.immutableHash } : {}),\n});\n\nconst buildEntrypointPlan = (\n outputs: GigadriveNextRouteOutput[]\n): Pick<GigadriveNextBuildManifestV2, 'entrypoints' | 'outputEntrypoints'> => {\n const byIdentity = new Map<string, GigadriveNextEntrypoint>();\n const outputEntrypoints: Record<string, string> = {};\n\n for (const output of outputs) {\n const identity = JSON.stringify([\n output.type === 'MIDDLEWARE' ? 'middleware-web' : 'route',\n output.runtime,\n output.filePath,\n output.edgeRuntime?.modulePath,\n output.edgeRuntime?.entryKey,\n output.edgeRuntime?.handlerExport,\n ]);\n const existingEntrypoint = byIdentity.get(identity);\n const entrypoint: GigadriveNextEntrypoint = existingEntrypoint ?? {\n id: `next-${byIdentity.size}`,\n runtime: output.runtime,\n filePath: output.filePath,\n outputIds: [],\n assets: { ...output.assets },\n ...(output.wasmAssets ? { wasmAssets: { ...output.wasmAssets } } : {}),\n ...(output.edgeRuntime ? { edgeRuntime: { ...output.edgeRuntime } } : {}),\n config: {\n maxDuration: output.config.maxDuration,\n preferredRegion: output.config.preferredRegion,\n env: output.config.env,\n },\n };\n if (!existingEntrypoint) {\n byIdentity.set(identity, entrypoint);\n } else {\n Object.assign(entrypoint.assets, output.assets);\n if (output.wasmAssets) entrypoint.wasmAssets = { ...entrypoint.wasmAssets, ...output.wasmAssets };\n if (output.config.maxDuration !== undefined) {\n entrypoint.config.maxDuration = Math.max(entrypoint.config.maxDuration ?? 0, output.config.maxDuration);\n }\n }\n entrypoint.outputIds.push(output.id);\n outputEntrypoints[output.id] = entrypoint.id;\n }\n\n return { entrypoints: [...byIdentity.values()], outputEntrypoints };\n};\n\nconst writeEntrypointWrappers = async (\n projectDir: string,\n repoRoot: string,\n entrypoints: GigadriveNextEntrypoint[],\n middlewareOutputId?: string\n): Promise<void> => {\n const wrapperDirectory = path.join(projectDir, '.gigadrive', 'nextjs', 'entrypoints');\n await mkdir(wrapperDirectory, { recursive: true });\n\n await Promise.all(\n entrypoints.map(async (entrypoint) => {\n const wrapperPath = path.join(wrapperDirectory, `${entrypoint.id}.mjs`);\n const executablePath = path.join(repoRoot, entrypoint.edgeRuntime?.modulePath ?? entrypoint.filePath);\n const relativeImport = path.relative(wrapperDirectory, executablePath).replaceAll(path.sep, '/');\n const importSpecifier = relativeImport.startsWith('.') ? relativeImport : `./${relativeImport}`;\n const isMiddleware = middlewareOutputId !== undefined && entrypoint.outputIds.includes(middlewareOutputId);\n const webHandlerPrelude =\n entrypoint.runtime === 'edge' && entrypoint.edgeRuntime\n ? (() => {\n const edgeMarker = '/server/edge/';\n const markerIndex = entrypoint.edgeRuntime.modulePath.indexOf(edgeMarker);\n const distDirectory =\n markerIndex >= 0\n ? entrypoint.edgeRuntime.modulePath.slice(0, markerIndex)\n : path.dirname(entrypoint.edgeRuntime.modulePath);\n const edgeRuntimeAssets = Object.entries(entrypoint.assets)\n .filter(([, sourcePath]) => sourcePath.startsWith(`${distDirectory}/`) && sourcePath.endsWith('.js'))\n .sort(([, leftSource], [, rightSource]) => {\n if (leftSource === entrypoint.edgeRuntime?.modulePath) return 1;\n if (rightSource === entrypoint.edgeRuntime?.modulePath) return -1;\n return leftSource.localeCompare(rightSource);\n });\n const portableWrapperDirectory = toPortableRelativePath(repoRoot, wrapperDirectory);\n const imports = edgeRuntimeAssets\n .map(([targetPath, sourcePath]) => {\n // Next includes the executable Edge module in `assets` under a\n // deployment-relative target such as `server/edge/chunks/*`,\n // while `modulePath` retains its canonical `.next/server/*`\n // location. Function packaging installs the executable at the\n // canonical path, so the wrapper must import it there as well.\n const runtimeTargetPath =\n sourcePath === entrypoint.edgeRuntime?.modulePath ? entrypoint.edgeRuntime.modulePath : targetPath;\n const relativeAssetPath = path.posix.relative(portableWrapperDirectory, runtimeTargetPath);\n const assetSpecifier = relativeAssetPath.startsWith('.')\n ? relativeAssetPath\n : `./${relativeAssetPath}`;\n return ` await import(${JSON.stringify(assetSpecifier)});`;\n })\n .join('\\n');\n return `import { AsyncLocalStorage } from \"node:async_hooks\";\\n\\nconst resolveHandler = async () => {\\n globalThis.self ??= globalThis;\\n globalThis.AsyncLocalStorage ??= AsyncLocalStorage;\\n${imports}\\n const registry = globalThis._ENTRIES;\\n if (!registry) throw new Error('Next.js edge entry registry is unavailable');\\n const entry = await registry[${JSON.stringify(entrypoint.edgeRuntime.entryKey)}];\\n const handler = entry?.[${JSON.stringify(entrypoint.edgeRuntime.handlerExport)}];\\n if (typeof handler !== 'function') throw new Error('Next.js edge handler is unavailable');\\n return handler;\\n};`;\n })()\n : `import * as nextEntrypoint from ${JSON.stringify(importSpecifier)};\\n\\nconst resolveHandler = async () => {\\n const handler = nextEntrypoint.handler ?? nextEntrypoint.default?.handler ?? nextEntrypoint.default;\\n if (typeof handler !== 'function') throw new Error('Next.js middleware handler is unavailable');\\n return handler;\\n};`;\n const source =\n (entrypoint.runtime === 'edge' && entrypoint.edgeRuntime) || isMiddleware\n ? `${webHandlerPrelude}\\n\\nexport async function fetch(request) {\\n const pending = [];\\n const handler = await resolveHandler();\\n const url = new URL(request.url);\\n const response = await handler(request, {\\n signal: request.signal,\\n waitUntil(promise) { pending.push(Promise.resolve(promise)); },\\n requestMeta: { hostname: url.hostname, invocationTarget: request.headers.get('x-gigadrive-next-invocation-target') ?? url.pathname, routeMatches: Object.fromEntries(new URLSearchParams(request.headers.get('x-now-route-matches') ?? '')), relativeProjectDir: ${JSON.stringify(\n toPortableRelativePath(repoRoot, projectDir, true)\n )} },\\n });\\n if (!response.body) { await Promise.allSettled(pending); return response; }\\n const reader = response.body.getReader();\\n const body = new ReadableStream({\\n async pull(controller) {\\n const result = await reader.read();\\n if (result.done) { await Promise.allSettled(pending); controller.close(); return; }\\n controller.enqueue(result.value);\\n },\\n cancel(reason) { return reader.cancel(reason); },\\n });\\n return new Response(body, response);\\n}\\n`\n : `import \"next/dist/build/adapter/setup-node-env.external.js\";\\nimport * as nextEntrypoint from ${JSON.stringify(importSpecifier)};\\n\\nexport default async function handler(req, res) {\\n const pending = [];\\n const nextHandler = nextEntrypoint.handler ?? nextEntrypoint.default?.handler ?? nextEntrypoint.default;\\n if (typeof nextHandler !== 'function') throw new Error('Next.js Node handler is unavailable');\\n await nextHandler(req, res, {\\n waitUntil(promise) { pending.push(Promise.resolve(promise)); },\\n requestMeta: { hostname: req.headers.host, invocationTarget: req.headers['x-gigadrive-next-invocation-target'] ?? req.url, routeMatches: Object.fromEntries(new URLSearchParams(req.headers['x-now-route-matches'] ?? '')), relativeProjectDir: ${JSON.stringify(\n toPortableRelativePath(repoRoot, projectDir, true)\n )} },\\n });\\n await Promise.allSettled(pending);\\n}\\n`;\n await writeFile(wrapperPath, source, 'utf8');\n const portableWrapperPath = toPortableRelativePath(repoRoot, wrapperPath);\n entrypoint.assets[portableWrapperPath] = portableWrapperPath;\n entrypoint.filePath = portableWrapperPath;\n })\n );\n};\n\nconst normalizeImages = (config: BuildCompleteContext['config']): NormalizedImagePolicy | undefined => {\n if (config.images.unoptimized) return undefined;\n return {\n localPatterns: config.images.localPatterns ?? [{ pathname: '/**' }],\n remotePatterns: config.images.remotePatterns.map((pattern) => {\n if (pattern instanceof URL) {\n return {\n protocol: pattern.protocol === 'http:' ? ('http' as const) : ('https' as const),\n hostname: pattern.hostname,\n port: pattern.port,\n pathname: pattern.pathname,\n search: pattern.search,\n };\n }\n return { ...pattern };\n }),\n widths: [...new Set([...config.images.deviceSizes, ...config.images.imageSizes])].sort((a, b) => a - b),\n heights: [],\n qualities: config.images.qualities ?? [75],\n formats: config.images.formats,\n minimumCacheTTL: config.images.minimumCacheTTL,\n dangerouslyAllowSVG: config.images.dangerouslyAllowSVG,\n contentSecurityPolicy: config.images.contentSecurityPolicy,\n contentDispositionType: config.images.contentDispositionType,\n maximumRedirects: config.images.maximumRedirects,\n maximumResponseBody: config.images.maximumResponseBody,\n variants: {},\n };\n};\n\n/**\n * Next.js deployment adapter used automatically by Gigadrive Network build workers.\n *\n * Next 16 emits a portable, versioned runtime plan. Older Next versions retain the\n * standalone-server behavior so existing deployments remain compatible.\n */\nconst gigadriveNextAdapter: NextAdapter = {\n name: 'Gigadrive Network',\n\n modifyConfig(config, { phase, nextVersion }) {\n if (phase !== PRODUCTION_BUILD_PHASE) return config;\n\n const deploymentId = config.deploymentId ?? process.env.GIGADRIVE_DEPLOYMENT_ID;\n if (!isNext16OrNewer(nextVersion)) {\n return {\n ...config,\n ...(deploymentId ? { deploymentId } : {}),\n output: config.output === 'export' ? 'export' : 'standalone',\n };\n }\n if (config.output === 'export') {\n return { ...config, ...(deploymentId ? { deploymentId } : {}) };\n }\n\n const injectCacheHandler = config.cacheHandler === undefined;\n const injectCacheComponentHandlers = config.cacheHandlers === undefined;\n const images = config.images;\n const injectImageLoader =\n images !== undefined && images.unoptimized !== true && images.loader === 'default' && !images.loaderFile;\n\n return {\n ...config,\n ...(deploymentId ? { deploymentId } : {}),\n ...(injectCacheHandler ? { cacheHandler: CACHE_HANDLER_PATH() } : {}),\n ...(injectCacheComponentHandlers\n ? {\n cacheHandlers: {\n default: CACHE_COMPONENTS_HANDLER_PATH(),\n remote: CACHE_COMPONENTS_HANDLER_PATH(),\n },\n }\n : {}),\n ...(injectCacheHandler || injectCacheComponentHandlers ? { cacheMaxMemorySize: 0 } : {}),\n ...(injectImageLoader\n ? {\n images: {\n ...images,\n loader: 'custom',\n loaderFile: IMAGE_LOADER_PATH(),\n },\n }\n : {}),\n };\n },\n\n async onBuildComplete({ projectDir, repoRoot, distDir, config, nextVersion, buildId, routing, outputs }) {\n const metadataDirectory = path.join(projectDir, '.gigadrive');\n const portableOutputs = {\n pages: await Promise.all(outputs.pages.map((output) => serializeRouteOutput(repoRoot, output))),\n ...(outputs.middleware ? { middleware: await serializeRouteOutput(repoRoot, outputs.middleware) } : {}),\n appPages: await Promise.all(outputs.appPages.map((output) => serializeRouteOutput(repoRoot, output))),\n pagesApi: await Promise.all(outputs.pagesApi.map((output) => serializeRouteOutput(repoRoot, output))),\n appRoutes: await Promise.all(outputs.appRoutes.map((output) => serializeRouteOutput(repoRoot, output))),\n prerenders: await Promise.all(\n outputs.prerenders.map(async (output) => {\n const { bypassFor, ...prerenderConfig } = output.config;\n return {\n id: output.id,\n type: 'PRERENDER' as const,\n pathname: output.pathname,\n parentOutputId: output.parentOutputId,\n groupId: output.groupId,\n ...(output.pprChain ? { pprChain: output.pprChain } : {}),\n ...(output.parentFallbackMode !== undefined\n ? { parentFallbackMode: toJsonValue(output.parentFallbackMode) }\n : {}),\n ...(output.fallback\n ? {\n fallback: {\n ...(output.fallback.filePath\n ? { filePath: await requireReadableFile(repoRoot, output.fallback.filePath) }\n : {}),\n ...(output.fallback.initialStatus !== undefined\n ? { initialStatus: output.fallback.initialStatus }\n : {}),\n ...(output.fallback.initialHeaders ? { initialHeaders: output.fallback.initialHeaders } : {}),\n ...(output.fallback.initialExpiration !== undefined\n ? { initialExpiration: output.fallback.initialExpiration }\n : {}),\n ...(output.fallback.initialRevalidate !== undefined\n ? { initialRevalidate: output.fallback.initialRevalidate }\n : {}),\n ...(output.fallback.postponedState !== undefined\n ? { postponedState: output.fallback.postponedState }\n : {}),\n },\n }\n : {}),\n config: {\n ...prerenderConfig,\n ...(bypassFor ? { bypassFor: toJsonValue(bypassFor) as JsonValue[] } : {}),\n },\n };\n })\n ),\n staticFiles: await Promise.all(outputs.staticFiles.map((output) => serializeStaticOutput(repoRoot, output))),\n };\n const executableOutputs = [\n ...portableOutputs.pages,\n ...portableOutputs.pagesApi,\n ...portableOutputs.appPages,\n ...portableOutputs.appRoutes,\n ...(portableOutputs.middleware ? [portableOutputs.middleware] : []),\n ];\n const entrypointPlan = buildEntrypointPlan(executableOutputs);\n const runtimeConfigAssets = await serializeRuntimeConfigAssets(projectDir, repoRoot, config);\n for (const entrypoint of entrypointPlan.entrypoints) Object.assign(entrypoint.assets, runtimeConfigAssets);\n await writeEntrypointWrappers(projectDir, repoRoot, entrypointPlan.entrypoints, portableOutputs.middleware?.id);\n const images = normalizeImages(config);\n const manifest: GigadriveNextBuildManifestV2 = {\n version: 2,\n mode: config.output === 'export' ? 'export' : 'adapter-v2',\n distDir: toPortableRelativePath(projectDir, distDir),\n repoRootToProject: toPortableRelativePath(repoRoot, projectDir, true),\n nextVersion,\n buildId,\n config: {\n basePath: config.basePath,\n trailingSlash: config.trailingSlash,\n cacheComponents: config.cacheComponents,\n ...(config.i18n ? { i18n: toJsonValue(config.i18n) } : {}),\n ...(images ? { images } : {}),\n },\n routing: {\n beforeMiddleware: toJsonValue(routing.beforeMiddleware) as JsonValue[],\n beforeFiles: toJsonValue(routing.beforeFiles) as JsonValue[],\n afterFiles: toJsonValue(routing.afterFiles) as JsonValue[],\n dynamicRoutes: toJsonValue(routing.dynamicRoutes) as JsonValue[],\n onMatch: toJsonValue(routing.onMatch) as JsonValue[],\n fallback: toJsonValue(routing.fallback) as JsonValue[],\n shouldNormalizeNextData: routing.shouldNormalizeNextData,\n rsc: toJsonValue(routing.rsc),\n },\n outputs: portableOutputs,\n ...entrypointPlan,\n };\n\n await mkdir(metadataDirectory, { recursive: true });\n await writeFile(path.join(metadataDirectory, 'nextjs.json'), `${JSON.stringify(manifest, null, 2)}\\n`, 'utf8');\n },\n};\n\nexport default gigadriveNextAdapter;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/nextjs-adapter.ts"],"sourcesContent":["import type { NextAdapter } from 'next';\nimport { access, mkdir, realpath, stat, writeFile } from 'node:fs/promises';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport type { NormalizedImagePolicy } from './image-policy';\nimport type {\n GigadriveNextBuildManifestV2,\n GigadriveNextEntrypoint,\n GigadriveNextRouteOutput,\n GigadriveNextStaticOutput,\n JsonValue,\n} from './nextjs-manifest';\n\ntype BuildCompleteContext = Parameters<NonNullable<NextAdapter['onBuildComplete']>>[0];\ntype NextRouteOutput =\n | BuildCompleteContext['outputs']['pages'][number]\n | BuildCompleteContext['outputs']['pagesApi'][number]\n | BuildCompleteContext['outputs']['appPages'][number]\n | BuildCompleteContext['outputs']['appRoutes'][number]\n | NonNullable<BuildCompleteContext['outputs']['middleware']>;\ntype NextStaticOutput = BuildCompleteContext['outputs']['staticFiles'][number];\n\nconst PRODUCTION_BUILD_PHASE = 'phase-production-build';\nconst runtimeDirectory = typeof __dirname === 'string' ? __dirname : path.dirname(fileURLToPath(import.meta.url));\n\nconst runtimeModulePath = (environmentName: string, fileName: string): string =>\n process.env[environmentName] ?? path.join(runtimeDirectory, fileName);\n\nconst CACHE_HANDLER_PATH = () => runtimeModulePath('GIGADRIVE_NEXT_CACHE_HANDLER_PATH', 'nextjs-cache-handler.js');\nconst CACHE_COMPONENTS_HANDLER_PATH = () =>\n runtimeModulePath('GIGADRIVE_NEXT_CACHE_COMPONENTS_HANDLER_PATH', 'nextjs-cache-components-handler.js');\nconst IMAGE_LOADER_PATH = () => runtimeModulePath('GIGADRIVE_NEXT_IMAGE_LOADER_PATH', 'nextjs-image-loader.js');\nconst PPR_RUNTIME_PATH = () => runtimeModulePath('GIGADRIVE_NEXT_PPR_RUNTIME_PATH', 'nextjs-ppr-runtime.js');\n\nconst toJsonValue = (value: unknown): JsonValue => {\n const serialized = JSON.stringify(value);\n return serialized === undefined ? null : (JSON.parse(serialized) as JsonValue);\n};\n\nconst isNext16OrNewer = (nextVersion: string): boolean => {\n const major = Number.parseInt(nextVersion.split('.')[0] ?? '', 10);\n return Number.isFinite(major) && major >= 16;\n};\n\nconst toPortableRelativePath = (from: string, to: string, allowCurrentDirectory = false): string => {\n const resolvedFrom = path.resolve(from);\n const resolvedTo = path.resolve(path.isAbsolute(to) ? to : path.join(from, to));\n const relativePath = path.relative(resolvedFrom, resolvedTo).replaceAll(path.sep, '/');\n const normalized = relativePath === '' ? '.' : relativePath;\n if (\n (!allowCurrentDirectory && normalized === '.') ||\n normalized.startsWith('/') ||\n /^[A-Za-z]:/.test(normalized) ||\n normalized.split('/').some((segment) => segment === '..')\n ) {\n throw new Error(`Next.js adapter output is outside the repository root: ${to}`);\n }\n return normalized;\n};\n\nasync function resolveReadablePath(repoRoot: string, filePath: string) {\n const absolutePath = path.resolve(path.isAbsolute(filePath) ? filePath : path.join(repoRoot, filePath));\n const portablePath = toPortableRelativePath(repoRoot, absolutePath);\n await access(absolutePath);\n const resolvedPath = await realpath(absolutePath);\n toPortableRelativePath(repoRoot, resolvedPath);\n const fileStat = await stat(absolutePath);\n return { portablePath, fileStat };\n}\n\nasync function requireReadableFile(repoRoot: string, filePath: string): Promise<string> {\n const { portablePath, fileStat } = await resolveReadablePath(repoRoot, filePath);\n if (!fileStat.isFile()) throw new Error(`Next.js adapter output is not a readable file: ${filePath}`);\n return portablePath;\n}\n\nasync function requireReadableAsset(repoRoot: string, filePath: string): Promise<string> {\n const { portablePath, fileStat } = await resolveReadablePath(repoRoot, filePath);\n if (!fileStat.isFile() && !fileStat.isDirectory()) {\n throw new Error(`Next.js adapter asset is not a readable file or directory: ${filePath}`);\n }\n return portablePath;\n}\n\nasync function serializeFileMap(repoRoot: string, files: Record<string, string>): Promise<Record<string, string>> {\n const entries = await Promise.all(\n Object.entries(files).map(async ([targetPath, sourcePath]) => [\n toPortableRelativePath(repoRoot, targetPath),\n await requireReadableAsset(repoRoot, sourcePath),\n ])\n );\n return Object.fromEntries(entries);\n}\n\nconst serializeRuntimeConfigAssets = async (\n projectDir: string,\n repoRoot: string,\n config: BuildCompleteContext['config']\n): Promise<Record<string, string>> => {\n const configuredPaths = new Set([\n config.cacheHandler,\n ...Object.values(config.cacheHandlers ?? {}),\n config.images.loaderFile,\n PPR_RUNTIME_PATH(),\n ]);\n const assets: Record<string, string> = {};\n for (const configuredPath of configuredPaths) {\n if (!configuredPath) continue;\n const absolutePath = path.resolve(\n path.isAbsolute(configuredPath) ? configuredPath : path.join(projectDir, configuredPath)\n );\n const portablePath = await requireReadableFile(repoRoot, absolutePath);\n assets[portablePath] = portablePath;\n }\n return assets;\n};\n\nconst serializeRouteOutput = async (repoRoot: string, output: NextRouteOutput): Promise<GigadriveNextRouteOutput> => {\n const matchers = (\n output.config as typeof output.config & {\n matchers?: Array<{\n source: string;\n sourceRegex: string;\n has?: unknown[];\n missing?: unknown[];\n }>;\n }\n ).matchers;\n return {\n id: output.id,\n type: String(output.type) as GigadriveNextRouteOutput['type'],\n filePath: await requireReadableFile(repoRoot, output.filePath),\n pathname: output.pathname,\n sourcePage: output.sourcePage,\n runtime: output.runtime,\n assets: await serializeFileMap(repoRoot, output.assets),\n ...(output.wasmAssets ? { wasmAssets: await serializeFileMap(repoRoot, output.wasmAssets) } : {}),\n ...(output.edgeRuntime\n ? {\n edgeRuntime: {\n modulePath: await requireReadableFile(repoRoot, output.edgeRuntime.modulePath),\n entryKey: output.edgeRuntime.entryKey,\n handlerExport: output.edgeRuntime.handlerExport,\n },\n }\n : {}),\n config: {\n maxDuration: output.config.maxDuration,\n preferredRegion: output.config.preferredRegion,\n env: output.config.env,\n ...(matchers\n ? {\n matchers: matchers.map((matcher) => ({\n source: matcher.source,\n sourceRegex: matcher.sourceRegex,\n ...(matcher.has ? { has: toJsonValue(matcher.has) as JsonValue[] } : {}),\n ...(matcher.missing ? { missing: toJsonValue(matcher.missing) as JsonValue[] } : {}),\n })),\n }\n : {}),\n },\n };\n};\n\nconst serializeStaticOutput = async (\n repoRoot: string,\n output: NextStaticOutput\n): Promise<GigadriveNextStaticOutput> => ({\n id: output.id,\n type: 'STATIC_FILE',\n filePath: await requireReadableFile(repoRoot, output.filePath),\n pathname: output.pathname,\n ...(output.immutableHash ? { immutableHash: output.immutableHash } : {}),\n});\n\nconst buildEntrypointPlan = (\n outputs: GigadriveNextRouteOutput[]\n): Pick<GigadriveNextBuildManifestV2, 'entrypoints' | 'outputEntrypoints'> => {\n const byIdentity = new Map<string, GigadriveNextEntrypoint>();\n const outputEntrypoints: Record<string, string> = {};\n\n for (const output of outputs) {\n const identity = JSON.stringify([\n output.type === 'MIDDLEWARE' ? 'middleware-web' : 'route',\n output.runtime,\n output.filePath,\n output.edgeRuntime?.modulePath,\n output.edgeRuntime?.entryKey,\n output.edgeRuntime?.handlerExport,\n ]);\n const existingEntrypoint = byIdentity.get(identity);\n const entrypoint: GigadriveNextEntrypoint = existingEntrypoint ?? {\n id: `next-${byIdentity.size}`,\n runtime: output.runtime,\n filePath: output.filePath,\n outputIds: [],\n assets: { ...output.assets },\n ...(output.wasmAssets ? { wasmAssets: { ...output.wasmAssets } } : {}),\n ...(output.edgeRuntime ? { edgeRuntime: { ...output.edgeRuntime } } : {}),\n config: {\n maxDuration: output.config.maxDuration,\n preferredRegion: output.config.preferredRegion,\n env: output.config.env,\n },\n };\n if (!existingEntrypoint) {\n byIdentity.set(identity, entrypoint);\n } else {\n Object.assign(entrypoint.assets, output.assets);\n if (output.wasmAssets) entrypoint.wasmAssets = { ...entrypoint.wasmAssets, ...output.wasmAssets };\n if (output.config.maxDuration !== undefined) {\n entrypoint.config.maxDuration = Math.max(entrypoint.config.maxDuration ?? 0, output.config.maxDuration);\n }\n }\n entrypoint.outputIds.push(output.id);\n outputEntrypoints[output.id] = entrypoint.id;\n }\n\n return { entrypoints: [...byIdentity.values()], outputEntrypoints };\n};\n\nconst writeEntrypointWrappers = async (\n projectDir: string,\n repoRoot: string,\n entrypoints: GigadriveNextEntrypoint[],\n pprRuntimePath: string,\n middlewareOutputId?: string\n): Promise<void> => {\n const wrapperDirectory = path.join(projectDir, '.gigadrive', 'nextjs', 'entrypoints');\n await mkdir(wrapperDirectory, { recursive: true });\n const portableWrapperDirectory = toPortableRelativePath(repoRoot, wrapperDirectory);\n const relativePprRuntimePath = path.posix.relative(portableWrapperDirectory, pprRuntimePath);\n const pprRuntimeSpecifier = relativePprRuntimePath.startsWith('.')\n ? relativePprRuntimePath\n : `./${relativePprRuntimePath}`;\n\n await Promise.all(\n entrypoints.map(async (entrypoint) => {\n const wrapperPath = path.join(wrapperDirectory, `${entrypoint.id}.mjs`);\n const executablePath = path.join(repoRoot, entrypoint.edgeRuntime?.modulePath ?? entrypoint.filePath);\n const relativeImport = path.relative(wrapperDirectory, executablePath).replaceAll(path.sep, '/');\n const importSpecifier = relativeImport.startsWith('.') ? relativeImport : `./${relativeImport}`;\n const isMiddleware = middlewareOutputId !== undefined && entrypoint.outputIds.includes(middlewareOutputId);\n const webHandlerPrelude =\n entrypoint.runtime === 'edge' && entrypoint.edgeRuntime\n ? (() => {\n const edgeMarker = '/server/edge/';\n const markerIndex = entrypoint.edgeRuntime.modulePath.indexOf(edgeMarker);\n const distDirectory =\n markerIndex >= 0\n ? entrypoint.edgeRuntime.modulePath.slice(0, markerIndex)\n : path.dirname(entrypoint.edgeRuntime.modulePath);\n const edgeRuntimeAssets = Object.entries(entrypoint.assets)\n .filter(([, sourcePath]) => sourcePath.startsWith(`${distDirectory}/`) && sourcePath.endsWith('.js'))\n .sort(([, leftSource], [, rightSource]) => {\n if (leftSource === entrypoint.edgeRuntime?.modulePath) return 1;\n if (rightSource === entrypoint.edgeRuntime?.modulePath) return -1;\n return leftSource.localeCompare(rightSource);\n });\n const imports = edgeRuntimeAssets\n .map(([targetPath, sourcePath]) => {\n // Next includes the executable Edge module in `assets` under a\n // deployment-relative target such as `server/edge/chunks/*`,\n // while `modulePath` retains its canonical `.next/server/*`\n // location. Function packaging installs the executable at the\n // canonical path, so the wrapper must import it there as well.\n const runtimeTargetPath =\n sourcePath === entrypoint.edgeRuntime?.modulePath ? entrypoint.edgeRuntime.modulePath : targetPath;\n const relativeAssetPath = path.posix.relative(portableWrapperDirectory, runtimeTargetPath);\n const assetSpecifier = relativeAssetPath.startsWith('.')\n ? relativeAssetPath\n : `./${relativeAssetPath}`;\n return ` await import(${JSON.stringify(assetSpecifier)});`;\n })\n .join('\\n');\n return `import { AsyncLocalStorage } from \"node:async_hooks\";\\n\\nconst resolveHandler = async () => {\\n globalThis.self ??= globalThis;\\n globalThis.AsyncLocalStorage ??= AsyncLocalStorage;\\n${imports}\\n const registry = globalThis._ENTRIES;\\n if (!registry) throw new Error('Next.js edge entry registry is unavailable');\\n const entry = await registry[${JSON.stringify(entrypoint.edgeRuntime.entryKey)}];\\n const handler = entry?.[${JSON.stringify(entrypoint.edgeRuntime.handlerExport)}];\\n if (typeof handler !== 'function') throw new Error('Next.js edge handler is unavailable');\\n return handler;\\n};`;\n })()\n : `import * as nextEntrypoint from ${JSON.stringify(importSpecifier)};\\n\\nconst resolveHandler = async () => {\\n const handler = nextEntrypoint.handler ?? nextEntrypoint.default?.handler ?? nextEntrypoint.default;\\n if (typeof handler !== 'function') throw new Error('Next.js middleware handler is unavailable');\\n return handler;\\n};`;\n const source =\n (entrypoint.runtime === 'edge' && entrypoint.edgeRuntime) || isMiddleware\n ? `import { persistPprCacheEntry } from ${JSON.stringify(pprRuntimeSpecifier)};\\n${webHandlerPrelude}\\n\\nexport async function fetch(request) {\\n const pending = [];\\n const handler = await resolveHandler();\\n const url = new URL(request.url);\\n const response = await handler(request, {\\n signal: request.signal,\\n waitUntil(promise) { pending.push(Promise.resolve(promise)); },\\n requestMeta: { hostname: url.hostname, invocationTarget: request.headers.get('x-gigadrive-next-invocation-target') ?? url.pathname, routeMatches: Object.fromEntries(new URLSearchParams(request.headers.get('x-now-route-matches') ?? '')), relativeProjectDir: ${JSON.stringify(\n toPortableRelativePath(repoRoot, projectDir, true)\n )}, onCacheEntryV2(cacheEntry, meta) { pending.push(persistPprCacheEntry(request.headers.get('x-gigadrive-next-cache-key') ?? meta.url ?? request.headers.get('x-matched-path') ?? url.pathname, cacheEntry)); return false; } },\\n });\\n if (!response.body) { await Promise.allSettled(pending); return response; }\\n const reader = response.body.getReader();\\n const body = new ReadableStream({\\n async pull(controller) {\\n const result = await reader.read();\\n if (result.done) { await Promise.allSettled(pending); controller.close(); return; }\\n controller.enqueue(result.value);\\n },\\n async cancel(reason) { try { await reader.cancel(reason); } finally { await Promise.allSettled(pending); } },\\n });\\n return new Response(body, response);\\n}\\n`\n : `import \"next/dist/build/adapter/setup-node-env.external.js\";\\nimport * as nextEntrypoint from ${JSON.stringify(importSpecifier)};\\nimport { persistPprCacheEntry } from ${JSON.stringify(pprRuntimeSpecifier)};\\n\\nexport default async function handler(req, res) {\\n const pending = [];\\n const nextHandler = nextEntrypoint.handler ?? nextEntrypoint.default?.handler ?? nextEntrypoint.default;\\n if (typeof nextHandler !== 'function') throw new Error('Next.js Node handler is unavailable');\\n await nextHandler(req, res, {\\n waitUntil(promise) { pending.push(Promise.resolve(promise)); },\\n requestMeta: { hostname: req.headers.host, invocationTarget: req.headers['x-gigadrive-next-invocation-target'] ?? req.url, routeMatches: Object.fromEntries(new URLSearchParams(req.headers['x-now-route-matches'] ?? '')), relativeProjectDir: ${JSON.stringify(\n toPortableRelativePath(repoRoot, projectDir, true)\n )}, onCacheEntryV2(cacheEntry, meta) { const cacheKey = req.headers['x-gigadrive-next-cache-key']; const matchedPath = req.headers['x-matched-path']; pending.push(persistPprCacheEntry((Array.isArray(cacheKey) ? cacheKey[0] : cacheKey) ?? meta.url ?? (Array.isArray(matchedPath) ? matchedPath[0] : matchedPath) ?? req.url ?? '/', cacheEntry)); return false; } },\\n });\\n await Promise.allSettled(pending);\\n}\\n`;\n await writeFile(wrapperPath, source, 'utf8');\n const portableWrapperPath = toPortableRelativePath(repoRoot, wrapperPath);\n entrypoint.assets[portableWrapperPath] = portableWrapperPath;\n entrypoint.filePath = portableWrapperPath;\n })\n );\n};\n\nconst normalizeImages = (config: BuildCompleteContext['config']): NormalizedImagePolicy | undefined => {\n if (config.images.unoptimized) return undefined;\n return {\n localPatterns: config.images.localPatterns ?? [{ pathname: '/**' }],\n remotePatterns: config.images.remotePatterns.map((pattern) => {\n if (pattern instanceof URL) {\n return {\n protocol: pattern.protocol === 'http:' ? ('http' as const) : ('https' as const),\n hostname: pattern.hostname,\n port: pattern.port,\n pathname: pattern.pathname,\n search: pattern.search,\n };\n }\n return { ...pattern };\n }),\n widths: [...new Set([...config.images.deviceSizes, ...config.images.imageSizes])].sort((a, b) => a - b),\n heights: [],\n qualities: config.images.qualities ?? [75],\n formats: config.images.formats,\n minimumCacheTTL: config.images.minimumCacheTTL,\n dangerouslyAllowSVG: config.images.dangerouslyAllowSVG,\n contentSecurityPolicy: config.images.contentSecurityPolicy,\n contentDispositionType: config.images.contentDispositionType,\n maximumRedirects: config.images.maximumRedirects,\n maximumResponseBody: config.images.maximumResponseBody,\n variants: {},\n };\n};\n\n/**\n * Next.js deployment adapter used automatically by Gigadrive Network build workers.\n *\n * Next 16 emits a portable, versioned runtime plan. Older Next versions retain the\n * standalone-server behavior so existing deployments remain compatible.\n */\nconst gigadriveNextAdapter: NextAdapter = {\n name: 'Gigadrive Network',\n\n modifyConfig(config, { phase, nextVersion }) {\n if (phase !== PRODUCTION_BUILD_PHASE) return config;\n\n const deploymentId = config.deploymentId ?? process.env.GIGADRIVE_DEPLOYMENT_ID;\n if (!isNext16OrNewer(nextVersion)) {\n return {\n ...config,\n ...(deploymentId ? { deploymentId } : {}),\n output: config.output === 'export' ? 'export' : 'standalone',\n };\n }\n if (config.output === 'export') {\n return { ...config, ...(deploymentId ? { deploymentId } : {}) };\n }\n\n const injectCacheHandler = config.cacheHandler === undefined;\n const injectCacheComponentHandlers = config.cacheHandlers === undefined;\n const images = config.images;\n const injectImageLoader =\n images !== undefined && images.unoptimized !== true && images.loader === 'default' && !images.loaderFile;\n\n return {\n ...config,\n ...(deploymentId ? { deploymentId } : {}),\n ...(injectCacheHandler ? { cacheHandler: CACHE_HANDLER_PATH() } : {}),\n ...(injectCacheComponentHandlers\n ? {\n cacheHandlers: {\n default: CACHE_COMPONENTS_HANDLER_PATH(),\n remote: CACHE_COMPONENTS_HANDLER_PATH(),\n },\n }\n : {}),\n ...(injectCacheHandler || injectCacheComponentHandlers ? { cacheMaxMemorySize: 0 } : {}),\n ...(injectImageLoader\n ? {\n images: {\n ...images,\n loader: 'custom',\n loaderFile: IMAGE_LOADER_PATH(),\n },\n }\n : {}),\n };\n },\n\n async onBuildComplete({ projectDir, repoRoot, distDir, config, nextVersion, buildId, routing, outputs }) {\n const metadataDirectory = path.join(projectDir, '.gigadrive');\n const portableOutputs = {\n pages: await Promise.all(outputs.pages.map((output) => serializeRouteOutput(repoRoot, output))),\n ...(outputs.middleware ? { middleware: await serializeRouteOutput(repoRoot, outputs.middleware) } : {}),\n appPages: await Promise.all(outputs.appPages.map((output) => serializeRouteOutput(repoRoot, output))),\n pagesApi: await Promise.all(outputs.pagesApi.map((output) => serializeRouteOutput(repoRoot, output))),\n appRoutes: await Promise.all(outputs.appRoutes.map((output) => serializeRouteOutput(repoRoot, output))),\n prerenders: await Promise.all(\n outputs.prerenders.map(async (output) => {\n const { bypassFor, ...prerenderConfig } = output.config;\n return {\n id: output.id,\n type: 'PRERENDER' as const,\n pathname: output.pathname,\n parentOutputId: output.parentOutputId,\n groupId: output.groupId,\n ...(output.pprChain ? { pprChain: output.pprChain } : {}),\n ...(output.parentFallbackMode !== undefined\n ? { parentFallbackMode: toJsonValue(output.parentFallbackMode) }\n : {}),\n ...(output.fallback\n ? {\n fallback: {\n ...(output.fallback.filePath\n ? { filePath: await requireReadableFile(repoRoot, output.fallback.filePath) }\n : {}),\n ...(output.fallback.initialStatus !== undefined\n ? { initialStatus: output.fallback.initialStatus }\n : {}),\n ...(output.fallback.initialHeaders ? { initialHeaders: output.fallback.initialHeaders } : {}),\n ...(output.fallback.initialExpiration !== undefined\n ? { initialExpiration: output.fallback.initialExpiration }\n : {}),\n ...(output.fallback.initialRevalidate !== undefined\n ? { initialRevalidate: output.fallback.initialRevalidate }\n : {}),\n ...(output.fallback.postponedState !== undefined\n ? { postponedState: output.fallback.postponedState }\n : {}),\n },\n }\n : {}),\n config: {\n ...prerenderConfig,\n ...(bypassFor ? { bypassFor: toJsonValue(bypassFor) as JsonValue[] } : {}),\n },\n };\n })\n ),\n staticFiles: await Promise.all(outputs.staticFiles.map((output) => serializeStaticOutput(repoRoot, output))),\n };\n const executableOutputs = [\n ...portableOutputs.pages,\n ...portableOutputs.pagesApi,\n ...portableOutputs.appPages,\n ...portableOutputs.appRoutes,\n ...(portableOutputs.middleware ? [portableOutputs.middleware] : []),\n ];\n const entrypointPlan = buildEntrypointPlan(executableOutputs);\n const runtimeConfigAssets = await serializeRuntimeConfigAssets(projectDir, repoRoot, config);\n for (const entrypoint of entrypointPlan.entrypoints) Object.assign(entrypoint.assets, runtimeConfigAssets);\n const pprRuntimePath = await requireReadableFile(repoRoot, PPR_RUNTIME_PATH());\n await writeEntrypointWrappers(\n projectDir,\n repoRoot,\n entrypointPlan.entrypoints,\n pprRuntimePath,\n portableOutputs.middleware?.id\n );\n const images = normalizeImages(config);\n const manifest: GigadriveNextBuildManifestV2 = {\n version: 2,\n mode: config.output === 'export' ? 'export' : 'adapter-v2',\n distDir: toPortableRelativePath(projectDir, distDir),\n repoRootToProject: toPortableRelativePath(repoRoot, projectDir, true),\n nextVersion,\n buildId,\n config: {\n basePath: config.basePath,\n trailingSlash: config.trailingSlash,\n cacheComponents: config.cacheComponents,\n ...(config.i18n ? { i18n: toJsonValue(config.i18n) } : {}),\n ...(images ? { images } : {}),\n },\n routing: {\n beforeMiddleware: toJsonValue(routing.beforeMiddleware) as JsonValue[],\n beforeFiles: toJsonValue(routing.beforeFiles) as JsonValue[],\n afterFiles: toJsonValue(routing.afterFiles) as JsonValue[],\n dynamicRoutes: toJsonValue(routing.dynamicRoutes) as JsonValue[],\n onMatch: toJsonValue(routing.onMatch) as JsonValue[],\n fallback: toJsonValue(routing.fallback) as JsonValue[],\n shouldNormalizeNextData: routing.shouldNormalizeNextData,\n rsc: toJsonValue(routing.rsc),\n },\n outputs: portableOutputs,\n ...entrypointPlan,\n };\n\n await mkdir(metadataDirectory, { recursive: true });\n await writeFile(path.join(metadataDirectory, 'nextjs.json'), `${JSON.stringify(manifest, null, 2)}\\n`, 'utf8');\n },\n};\n\nexport default gigadriveNextAdapter;\n"],"mappings":"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","names":[]}
@@ -11,7 +11,7 @@ declare const cacheHandler: {
11
11
  get(cacheKey: string, softTags: string[]): Promise<CacheComponentEntry | undefined>;
12
12
  set(cacheKey: string, pendingEntry: Promise<CacheComponentEntry>): Promise<void>;
13
13
  refreshTags(): Promise<void>;
14
- getExpiration(tags: string[]): Promise<number>;
14
+ getExpiration(): Promise<number>;
15
15
  updateTags(tags: string[], durations?: {
16
16
  expire?: number;
17
17
  }): Promise<void>;
@@ -11,7 +11,7 @@ declare const cacheHandler: {
11
11
  get(cacheKey: string, softTags: string[]): Promise<CacheComponentEntry | undefined>;
12
12
  set(cacheKey: string, pendingEntry: Promise<CacheComponentEntry>): Promise<void>;
13
13
  refreshTags(): Promise<void>;
14
- getExpiration(tags: string[]): Promise<number>;
14
+ getExpiration(): Promise<number>;
15
15
  updateTags(tags: string[], durations?: {
16
16
  expire?: number;
17
17
  }): Promise<void>;