Next Server Flashcards

(69 cards)

1
Q

What does dynamicImportEsmDefault do?

A

Dynamically imports a module and returns mod.default || mod; uses webpackIgnore when NEXT_MINIMAL is set.

Calls: import(id) / import(/* webpackIgnore */ id). Returns: Promise<any>.</any>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is the purpose of getMiddlewareMatcher?

A

Builds and caches a MiddlewareRouteMatch from info.matchers in a WeakMap.

Calls: MiddlewareMatcherCache.get/set, getMiddlewareRouteMatcher(…). Throws if matchers invalid. Returns: matcher fn.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What does installProcessErrorHandlers do?

A

Replaces Node fatal unhandled-error behavior with log-only handlers; optionally removes existing listeners.

Calls: process.removeAllListeners, process.on(‘unhandledRejection’|’uncaughtException’), isPostpone, console.error. Returns: void.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What is initialized by the constructor(options)?

A

Server state, env flags, caches, route matchers, middleware manifest path, prepares the server, optional preloading, and installs process error handlers.

Calls: super, installGlobalBehaviors, ResponseCache, getRoutesManifest/getRouteRegex/getRouteMatcher, setHttpClientAndAgentOptions, populateStaticEnv, installProcessErrorHandlers. Returns: instance.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What does unstable_preloadEntries do?

A

Preloads all pages/app modules and patches fetch for app entries after prepare().

Calls: getPagesManifest/getAppPathsManifest, loadCustomCacheHandlers, loadComponents, ComponentMod.patchFetch(). Returns: Promise<void>.</void>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What is the function of handleUpgrade?

A

No-op upgrade handler (websockets not supported here; dev/HMR only).

Returns: Promise<void>.</void>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What does loadInstrumentationModule attempt to do?

A

Tries to load instrumentation hook; ignores MODULE_NOT_FOUND, throws on other errors.

Calls: getInstrumentationModule. Returns: this.instrumentation.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is the purpose of prepareImpl?

A

Extends base prepare to register instrumentation hook.

Calls: super.prepareImpl(), runInstrumentationHookIfAvailable(). Returns: Promise<void>.</void>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What does runInstrumentationHookIfAvailable ensure?

A

Ensures instrumentation is registered.

Calls: ensureInstrumentationRegistered(dir, distDir). Returns: Promise<void>.</void>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What does loadEnvConfig({dev, forceReload}) do?

A

Loads .env* via @next/env, optionally logs reload path.

Calls: loadEnvConfig(…), Log.info(…). Returns: void.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What is the function of loadCustomCacheHandlers?

A

Initializes cache handler interface once and registers each configured handler via dynamic import.

Calls: initializeCacheHandlers, dynamicImportEsmDefault, formatDynamicImportPath, interopDefault, setCacheHandler. Returns: Promise<void>.</void>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What does getIncrementalCache({requestHeaders}) create?

A

Creates per-request IncrementalCache with optional custom handler and cache settings.

Calls: loadCustomCacheHandlers, dynamic import of cacheHandler, new IncrementalCache({ … }). Returns: Promise<IncrementalCache>.</IncrementalCache>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What does getPublicDir resolve?

A

Resolves project public/ directory.

Calls: join(this.dir, CLIENT_PUBLIC_FILES_PATH). Returns: string.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What does getHasStaticDir check?

A

Checks whether legacy static/ directory exists.

Calls: fs.existsSync(join(this.dir,’static’)). Returns: boolean.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What does getPagesManifest load?

A

Loads server pages manifest.

Calls: loadManifest(join(serverDistDir, PAGES_MANIFEST)). Returns: PagesManifest | undefined.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What does getAppPathsManifest load?

A

Loads app-paths manifest if App Router enabled.

Calls: loadManifest(join(serverDistDir, APP_PATHS_MANIFEST)). Returns: PagesManifest | undefined.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

What does getinterceptionRoutePatterns compile?

A

Compiles interception rewrite regexes from routes manifest (App Router only).

Calls: getRoutesManifest, isInterceptionRouteRewrite, new RegExp(rewrite.regex). Returns: RegExp[].

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

What does hasPage(pathname) check?

A

Checks if a page exists in build output.

Calls: getMaybePagePath(…). Returns: Promise<boolean>.</boolean>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

What does getBuildId read?

A

Reads .next/BUILD_ID; throws helpful error if missing.

Calls: fs.readFileSync(…).trim(). Returns: string.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

What does getEnabledDirectories(dev) detect?

A

Detects presence of app/ and pages/ dirs (dev uses project dir, prod uses server dist dir).

Calls: findDir(dir,’app’|’pages’). Returns: { app:boolean, pages:boolean }.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

What does sendRenderResult(req,res,opts) do?

A

Sends a RenderResult using underlying Node req/res.

Calls: sendRenderResult({ req: originalRequest, res: originalResponse, … }). Returns: Promise<void>.</void>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

What does runApi(req,res,query,match) do?

A

Runs Pages API route as edge function if configured; otherwise loads Node handler module and invokes it.

Calls: getEdgeFunctionsPages, runEdgeFunction, parseUrl/getRequestMeta, NodeModuleLoader.load, module.handler(…), addRequestMeta. Returns: Promise<boolean>.</boolean>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

What does renderHTML(req,res,pathname,query,renderOpts) do?

A

Trace-wrapped HTML render entry.

Calls: getTracer().trace(…, renderHTMLImpl). Returns: Promise<RenderResult>.</RenderResult>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

What does renderHTMLImpl(req,res,pathname,query,renderOpts) choose?

A

Chooses App Router vs Pages Router rendering; sets nextFontManifest.

Calls: lazyRenderAppPage OR lazyRenderPagesPage. Throws if NEXT_MINIMAL. Returns: Promise<RenderResult>.</RenderResult>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
What does **imageOptimizer(req,res,paramsResult,previousCacheEntry?)** fetch?
Fetches upstream image (internal/external) then optimizes it. ## Footnote Calls: require('./image-optimizer'), fetchExternalImage/fetchInternalImage, routerServerHandler, imageOptimizer(...). Returns: { buffer, contentType, maxAge, upstreamEtag, etag }.
26
What does **getPagePath(pathname, locales?)** resolve?
Resolves built page file path. ## Footnote Calls: getPagePath(pathname, distDir, locales, enabledApp). Returns: string.
27
What does **renderPageComponent(ctx, bubbleNoFallback)** do?
Runs edge function for page if configured; otherwise defers to base renderPageComponent. ## Footnote Calls: getEdgeFunctionsPages, getOriginalAppPaths, runEdgeFunction, super.renderPageComponent. Returns: component result or null.
28
What does **findPageComponents(args)** do?
Trace-wrapped component resolution. ## Footnote Calls: getTracer().trace(..., findPageComponentsImpl), normalizeAppPath. Returns: Promise.
29
What does **findPageComponentsImpl(args)** try to do?
Tries locale-prefixed page paths, loads components, and shapes query/params. ## Footnote Calls: loadComponents(...). Catches: PageNotFoundError (continue). Returns: {components, query} or null.
30
What does **getNextFontManifest** load?
Loads server next-font-manifest.json. ## Footnote Calls: loadManifest(join(distDir,'server', NEXT_FONT_MANIFEST+'.json')). Returns: NextFontManifest | undefined.
31
What does **handleNextImageRequest(req,res,parsedUrl)** handle?
/_next/image via optimizer + ResponseCache; validates params and sends response. ## Footnote Calls: getRequestMeta, ImageOptimizerCache.validateParams/getCacheKey, imageResponseCache.get, imageOptimizer, sendResponse, render404. Returns: Promise.
32
What does **handleCatchallRenderRequest(req,res,parsedUrl)** do?
Main catch-all: match route, run edge/api if needed, then render; on error render 500. ## Footnote Calls: matchers.match, addRequestMeta, runEdgeFunction, handleApiRequest, render, renderError, instrumentationOnRequestError. Returns: Promise.
33
What does **logErrorWithOriginalStack(err?, type?)** do?
Prod server stub; throws (dev server overrides). ## Footnote Throws: invariant error. Returns: never.
34
What does **ensurePage(opts)** do?
Prod server stub; throws (dev server overrides). ## Footnote Throws: invariant error. Returns: never.
35
What does **handleApiRequest(req,res,query,match)** do?
API dispatcher wrapper. ## Footnote Calls/Returns: runApi(req,res,query,match).
36
What does **getCacheFilesystem** provide?
Provides cache filesystem adapter. ## Footnote Returns: nodeFs.
37
What does **normalizeReq(req)** do?
Wraps raw Node request into NodeNextRequest if needed. ## Footnote Calls: new NodeNextRequest(req). Returns: NodeNextRequest.
38
What does **normalizeRes(res)** do?
Wraps raw Node response into NodeNextResponse if needed. ## Footnote Calls: new NodeNextResponse(res). Returns: NodeNextResponse.
39
What does **getRequestHandler** return?
Returns request handler; optionally wraps for experimental test proxy. ## Footnote Calls: makeRequestHandler, optional wrapRequestHandlerNode. Returns: handler fn.
40
What does **getRequestHandlerWithMetadata(meta)** do?
Handler wrapper that injects request metadata before dispatch. ## Footnote Calls: setRequestMeta(req, meta) then underlying handler. Returns: handler fn.
41
What does **makeRequestHandler()** ensure?
Ensures prepare() starts, then returns base handler wrapped with req/res normalization. ## Footnote Calls: this.prepare().catch(...), super.getRequestHandler, normalizeReq/normalizeRes. Returns: handler fn.
42
What does **revalidate({urlPath, revalidateHeaders, opts})** do?
Programmatic ISR revalidate by mocking req/res and executing handler; validates x-nextjs-cache or status. ## Footnote Calls: createRequestResponseMocks, getRequestHandler, NodeNextRequest/Response, waits res.hasStreamed. Throws on invalid response. Returns: Promise.
43
What does **render(req,res,pathname,query?,parsedUrl?,internal?)** do?
Normalized wrapper around base render. ## Footnote Calls: super.render(normalizeReq, normalizeRes, ...). Returns: Promise.
44
What does **renderToHTML(req,res,pathname,query?)** do?
Normalized wrapper around base renderToHTML. ## Footnote Calls: super.renderToHTML(normalizeReq, normalizeRes, ...). Returns: Promise.
45
What does **renderErrorToResponseImpl(ctx, err)** special-case?
404 in App Router: ensure /_not-found in dev and run as edge function if configured; else defer. ## Footnote Calls: ensurePage, getEdgeFunctionsPages, runEdgeFunction, super.renderErrorToResponseImpl. Returns: response payload or null.
46
What does **renderError(err, req,res,pathname,query?,setHeaders?)** do?
Normalized wrapper around base renderError. ## Footnote Calls: super.renderError(normalizeReq, normalizeRes, ...). Returns: Promise.
47
What does **renderErrorToHTML(err, req,res,pathname,query?)** do?
Normalized wrapper around base renderErrorToHTML. ## Footnote Calls: super.renderErrorToHTML(normalizeReq, normalizeRes, ...). Returns: Promise.
48
What does **render404(req,res,parsedUrl?,setHeaders?)** do?
Normalized wrapper around base render404. ## Footnote Calls: super.render404(normalizeReq, normalizeRes, ...). Returns: Promise.
49
What does **getMiddlewareManifest** load?
Loads middleware manifest unless minimal mode. ## Footnote Calls: require(middlewareManifestPath). Returns: MiddlewareManifest | null.
50
What does **getMiddleware** resolve?
Root middleware matcher from manifest or Node middleware fallback. ## Footnote Calls: getMiddlewareManifest, loadNodeMiddleware, getMiddlewareRouteMatcher, getMiddlewareMatcher. Returns: {match,page:'/'} | undefined.
51
What does **getEdgeFunctionsPages** list?
Pages configured as edge functions. ## Footnote Calls: getMiddlewareManifest. Returns: string[].
52
What does **getEdgeFunctionInfo({page,middleware})** get?
Edge function artifact paths/wasm/assets/env from manifest for a page key. ## Footnote Calls: normalizePagePath/denormalizePagePath, join(distDir, file). Throws PageNotFoundError for missing non-middleware. Returns: info object or null.
53
What does **loadNodeMiddleware** do?
Loads Node middleware module (server/middleware.js) when enabled (dev or config). ## Footnote Calls: require(FUNCTIONS_CONFIG_MANIFEST), require('server/middleware.js'). Ignores ENOENT/MODULE_NOT_FOUND. Returns: module or undefined.
54
What does **hasMiddleware(pathname)** check?
Checks if middleware exists via edge manifest or Node middleware module. ## Footnote Calls: getEdgeFunctionInfo, loadNodeMiddleware. Returns: Promise.
55
What does **ensureMiddleware(url?)** do?
Dev hook placeholder to compile/ensure middleware; empty here. ## Footnote Returns: Promise.
56
What does **ensureEdgeFunction(params)** do?
Dev hook placeholder to compile/ensure edge fn; empty here. ## Footnote Returns: Promise.
57
What does **runMiddleware(params)** execute?
Executes middleware (skip on-demand revalidate), builds absolute URL, runs Node adapter or edge sandbox, normalizes set-cookie, returns result. ## Footnote Calls: checkIsOnDemandRevalidate, getMiddleware/hasMiddleware/ensureMiddleware, getEdgeFunctionInfo, Node adapter OR web/sandbox.run, splitCookiesString, addRequestMeta. Returns: middleware result object.
58
What does **handleCatchallMiddlewareRequest(req,res,parsed)** handle?
Handles internal middleware-invoke requests: match, run middleware, copy headers/status, pipe body; maps errors to 404/400/500. ## Footnote Calls: getRequestMeta/addRequestMeta, getMiddleware, parseUrl/getNextPathnameInfo/removeTrailingSlash, runMiddleware, toNodeOutgoingHttpHeaders, pipeToNodeResponse, render404/renderError. Returns: Promise.
59
What does **getPrerenderManifest** load?
Loads and memoizes prerender-manifest.json. ## Footnote Calls: loadManifest(join(distDir, PRERENDER_MANIFEST)). Returns: PrerenderManifest.
60
What does **getRoutesManifest** do?
Trace-wrapped load of routes-manifest.json. ## Footnote Calls: getTracer().trace, loadManifest(join(distDir, ROUTES_MANIFEST)). Returns: manifest.
61
What does **attachRequestMeta(req, parsedUrl, isUpgradeReq?)** set?
Sets initURL/initQuery/initProtocol and attaches cloneable body stream (non-upgrade). ## Footnote Calls: addRequestMeta, getCloneableBody. Returns: void.
62
What does **runEdgeFunction(params)** do?
Runs an edge function via sandbox, merges query/params into absolute URL, writes status/headers/body to Node response. ## Footnote Calls: ensureEdgeFunction, getEdgeFunctionInfo, urlQueryToSearchParams, web/sandbox.run, splitCookiesString, pipeToNodeResponse. Returns: FetchEventResult | null.
63
What does **serverDistDir (getter)** compute?
Lazily computes .next/server path and memoizes it. ## Footnote Calls: join(distDir, SERVER_DIRECTORY). Returns: string.
64
What does **getFallbackErrorComponents(url?)** return?
Production stub; not implemented here. ## Footnote Returns: Promise.
65
What does **instrumentationOnRequestError(...args)** do?
Calls base instrumentation hook; in prod logs error unless silenced. ## Footnote Calls: super.instrumentationOnRequestError, this.logError. Returns: Promise.
66
What does **onServerClose(listener)** do?
Registers async cleanup listener to run on close. ## Footnote Calls: cleanupListeners.add. Returns: void.
67
What does **close()** do?
Runs all registered cleanup listeners. ## Footnote Calls: cleanupListeners.runAll(). Returns: Promise.
68
What does **getInternalWaitUntil()** create?
Lazily creates and returns internal waitUntil. ## Footnote Calls: createInternalWaitUntil (once). Returns: WaitUntil.
69
What does **createInternalWaitUntil()** create?
Creates AwaiterOnce, ties awaiter.awaiting() to server close, returns awaiter.waitUntil; disallowed in minimal mode. ## Footnote Calls: new AwaiterOnce, onServerClose. Throws: InvariantError if minimal. Returns: WaitUntil.