From eda03bd1b0aed8c967216a2a3ed71196945fc096 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Thu, 18 Aug 2022 17:04:49 +0100 Subject: [PATCH 01/16] feat: added sri support for app dir --- packages/next/build/webpack-config.ts | 5 ++ .../plugins/subresource-integrity-plugin.ts | 57 ++++++++++++++++++ packages/next/server/app-render.tsx | 59 ++++++++++++++++--- packages/next/server/base-server.ts | 3 +- packages/next/server/config-schema.ts | 9 +++ packages/next/server/config-shared.ts | 4 ++ packages/next/server/load-components.ts | 29 ++++++--- packages/next/server/next-server.ts | 3 +- packages/next/shared/lib/constants.ts | 2 + 9 files changed, 151 insertions(+), 20 deletions(-) create mode 100644 packages/next/build/webpack/plugins/subresource-integrity-plugin.ts diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts index 02f1012f7497358..295a0628e46235f 100644 --- a/packages/next/build/webpack-config.ts +++ b/packages/next/build/webpack-config.ts @@ -61,6 +61,7 @@ import loadJsConfig from './load-jsconfig' import { loadBindings } from './swc' import { clientComponentRegex } from './webpack/loaders/utils' import { AppBuildManifestPlugin } from './webpack/plugins/app-build-manifest-plugin' +import { SubresourceIntegrityPlugin } from './webpack/plugins/subresource-integrity-plugin' const NEXT_PROJECT_ROOT = pathJoin(__dirname, '..', '..') const NEXT_PROJECT_ROOT_DIST = pathJoin(NEXT_PROJECT_ROOT, 'dist') @@ -1800,6 +1801,10 @@ export default async function getBaseWebpackConfig( dev, isEdgeServer, })), + !dev && + isClient && + config.experimental.sri?.algorithm && + new SubresourceIntegrityPlugin(config.experimental.sri.algorithm), !dev && isClient && new (require('./webpack/plugins/telemetry-plugin').TelemetryPlugin)( diff --git a/packages/next/build/webpack/plugins/subresource-integrity-plugin.ts b/packages/next/build/webpack/plugins/subresource-integrity-plugin.ts new file mode 100644 index 000000000000000..5ff1e8e1f33add0 --- /dev/null +++ b/packages/next/build/webpack/plugins/subresource-integrity-plugin.ts @@ -0,0 +1,57 @@ +import { webpack, sources } from 'next/dist/compiled/webpack/webpack' +import crypto from 'crypto' +import { SUBRESOURCE_INTEGRITY_MANIFEST } from '../../../shared/lib/constants' + +const PLUGIN_NAME = 'SubresourceIntegrityPlugin' + +export type SubresourceIntegrityAlgorithm = 'sha256' | 'sha384' | 'sha512' + +export class SubresourceIntegrityPlugin { + constructor(private readonly algorithm: SubresourceIntegrityAlgorithm) {} + + public apply(compiler: any) { + compiler.hooks.make.tap(PLUGIN_NAME, (compilation: any) => { + compilation.hooks.afterOptimizeAssets.tap( + { + name: PLUGIN_NAME, + stage: webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS, + }, + (assets: any) => this.createAsset(assets, compilation) + ) + }) + } + + private createAsset(assets: any, compilation: webpack.Compilation) { + // Collect all the entrypoint files. + let files = new Set() + for (const entrypoint of compilation.entrypoints.values()) { + const iterator = entrypoint?.getFiles() + if (!iterator) { + continue + } + + for (const file of iterator) { + files.add(file) + } + } + + // For each file, deduped, calculate the file hash. + const hashes: Record = {} + for (const file of files.values()) { + // Get the buffer for the asset. + const content = assets[file].buffer() + + // Create the hash for the content. + const hash = crypto + .createHash(this.algorithm) + .update(content) + .digest() + .toString('base64') + + hashes[file] = `${this.algorithm}-${hash}` + } + + const json = JSON.stringify(hashes, null, 2) + assets[SUBRESOURCE_INTEGRITY_MANIFEST] = new sources.RawSource(json) + } +} diff --git a/packages/next/server/app-render.tsx b/packages/next/server/app-render.tsx index 24f651fcf73716c..5a905225e25b4d4 100644 --- a/packages/next/server/app-render.tsx +++ b/packages/next/server/app-render.tsx @@ -135,7 +135,8 @@ function useFlightResponse( writable: WritableStream, cachePrefix: string, req: ReadableStream, - serverComponentManifest: any + serverComponentManifest: any, + nonce?: string ) { const id = cachePrefix + ',' + (React as any).useId() let entry = rscCache.get(id) @@ -150,13 +151,17 @@ function useFlightResponse( // We only attach CSS chunks to the inlined data. const forwardReader = forwardStream.getReader() const writer = writable.getWriter() + const startScriptTag = nonce + ? `` ) @@ -167,7 +172,7 @@ function useFlightResponse( writer.close() } else { const responsePartial = decodeText(value) - const scripts = `` @@ -205,7 +210,8 @@ function createServerComponentRenderer( serverContexts: Array< [ServerContextName: string, JSONValue: Object | number | string] > - } + }, + nonce?: string ) { // We need to expose the `__webpack_require__` API globally for // react-server-dom-webpack. This is a hack until we find a better way. @@ -240,7 +246,8 @@ function createServerComponentRenderer( writable, cachePrefix, reqStream, - serverComponentManifest + serverComponentManifest, + nonce ) return response.readRoot() } @@ -426,6 +433,7 @@ export async function renderToHTMLOrFlight( const { buildManifest, + subresourceIntegrityManifest, serverComponentManifest, serverCSSManifest = {}, supportsDynamicHTML, @@ -999,6 +1007,32 @@ export async function renderToHTMLOrFlight( // TODO-APP: validate req.url as it gets passed to render. const initialCanonicalUrl = req.url! + // Get the nonce from the incomming request if it has one. + const csp = req.headers['content-security-policy'] + let nonce: string | undefined + if (csp && typeof csp === 'string') { + nonce = csp + // Directives are split by ';'. + .split(';') + .map((directive) => directive.trim()) + // The script directive is marked by the 'script-src' string. + .find((directive) => directive.startsWith('script-src')) + // Sources are split by ' '. + ?.split(' ') + // Remove the 'strict-src' string. + .slice(1) + .map((source) => source.trim()) + // Find the first source with the 'nonce-' prefix. + .find( + (source) => + source.startsWith("'nonce-") && + source.length > 8 && + source.endsWith("'") + ) + // Grab the nonce by trimming the 'nonce-' prefix. + ?.slice(7, -1) + } + /** * A new React Component that renders the provided React Component * using Flight which can then be rendered to HTML. @@ -1027,7 +1061,8 @@ export async function renderToHTMLOrFlight( transformStream: serverComponentsInlinedTransformStream, serverComponentManifest, serverContexts, - } + }, + nonce ) const flushEffectsCallbacks: Set<() => React.ReactNode> = new Set() @@ -1080,10 +1115,16 @@ export async function renderToHTMLOrFlight( ReactDOMServer, element: content, streamOptions: { + nonce, // Include hydration scripts in the HTML - bootstrapScripts: buildManifest.rootMainFiles.map( - (src) => `${renderOpts.assetPrefix || ''}/_next/` + src - ), + bootstrapScripts: subresourceIntegrityManifest + ? buildManifest.rootMainFiles.map((src) => ({ + src: `${renderOpts.assetPrefix || ''}/_next/` + src, + integrity: subresourceIntegrityManifest[src], + })) + : buildManifest.rootMainFiles.map( + (src) => `${renderOpts.assetPrefix || ''}/_next/` + src + ), }, }) diff --git a/packages/next/server/base-server.ts b/packages/next/server/base-server.ts index a518b36cfcfb789..411983b3ed9ff6c 100644 --- a/packages/next/server/base-server.ts +++ b/packages/next/server/base-server.ts @@ -245,6 +245,7 @@ export default abstract class Server { params: Params isAppPath: boolean appPaths?: string[] | null + sriEnabled?: boolean }): Promise protected abstract getFontManifest(): FontManifest | undefined protected abstract getPrerenderManifest(): PrerenderManifest @@ -1546,8 +1547,8 @@ export default abstract class Server { params: ctx.renderOpts.params || {}, isAppPath: Array.isArray(appPaths), appPaths, + sriEnabled: !!this.nextConfig.experimental.sri?.algorithm, }) - if (result) { try { return await this.renderToResponseWithComponents(ctx, result) diff --git a/packages/next/server/config-schema.ts b/packages/next/server/config-schema.ts index 1ed39ed3c9e69ab..984d0df6b77d75e 100644 --- a/packages/next/server/config-schema.ts +++ b/packages/next/server/config-schema.ts @@ -338,6 +338,15 @@ const configSchema = { sharedPool: { type: 'boolean', }, + sri: { + properties: { + algorithm: { + enum: ['sha256', 'sha384', 'sha512'] as any, + type: 'string', + }, + }, + type: 'object', + }, swcFileReading: { type: 'boolean', }, diff --git a/packages/next/server/config-shared.ts b/packages/next/server/config-shared.ts index b0bf627bfb9d1fb..e0e0ddcfe639300 100644 --- a/packages/next/server/config-shared.ts +++ b/packages/next/server/config-shared.ts @@ -7,6 +7,7 @@ import { imageConfigDefault, } from '../shared/lib/image-config' import { ServerRuntime } from 'next/types' +import { SubresourceIntegrityAlgorithm } from '../build/webpack/plugins/subresource-integrity-plugin' export type NextConfigComplete = Required & { images: Required @@ -146,6 +147,9 @@ export interface ExperimentalConfig { * [webpack/webpack#ModuleNotoundError.js#L13-L42](https://github.com/webpack/webpack/blob/2a0536cf510768111a3a6dceeb14cb79b9f59273/lib/ModuleNotFoundError.js#L13-L42) */ fallbackNodePolyfills?: false + sri?: { + algorithm?: SubresourceIntegrityAlgorithm + } } export type ExportPathMap = { diff --git a/packages/next/server/load-components.ts b/packages/next/server/load-components.ts index 5cbf543ccc40b78..068a85ed8405159 100644 --- a/packages/next/server/load-components.ts +++ b/packages/next/server/load-components.ts @@ -13,6 +13,7 @@ import { BUILD_MANIFEST, REACT_LOADABLE_MANIFEST, FLIGHT_MANIFEST, + SUBRESOURCE_INTEGRITY_MANIFEST, } from '../shared/lib/constants' import { join } from 'path' import { requirePage } from './require' @@ -30,6 +31,7 @@ export type LoadComponentsReturnType = { Component: NextComponentType pageConfig: PageConfig buildManifest: BuildManifest + subresourceIntegrityManifest?: Record reactLoadableManifest: ReactLoadableManifest serverComponentManifest?: any Document: DocumentType @@ -64,7 +66,8 @@ export async function loadComponents( pathname: string, serverless: boolean, hasServerComponents: boolean, - isAppPath: boolean + isAppPath: boolean, + sriEnabled?: boolean ): Promise { if (serverless) { const ComponentMod = await requirePage(pathname, distDir, serverless) @@ -115,14 +118,21 @@ export async function loadComponents( requirePage(pathname, distDir, serverless, isAppPath) ) - const [buildManifest, reactLoadableManifest, serverComponentManifest] = - await Promise.all([ - require(join(distDir, BUILD_MANIFEST)), - require(join(distDir, REACT_LOADABLE_MANIFEST)), - hasServerComponents - ? require(join(distDir, 'server', FLIGHT_MANIFEST + '.json')) - : null, - ]) + const [ + buildManifest, + reactLoadableManifest, + serverComponentManifest, + subresourceIntegrityManifest, + ] = await Promise.all([ + require(join(distDir, BUILD_MANIFEST)), + require(join(distDir, REACT_LOADABLE_MANIFEST)), + hasServerComponents + ? require(join(distDir, 'server', FLIGHT_MANIFEST + '.json')) + : null, + sriEnabled + ? require(join(distDir, SUBRESOURCE_INTEGRITY_MANIFEST)) + : undefined, + ]) const Component = interopDefault(ComponentMod) const Document = interopDefault(DocumentMod) @@ -135,6 +145,7 @@ export async function loadComponents( Document, Component, buildManifest, + subresourceIntegrityManifest, reactLoadableManifest, pageConfig: ComponentMod.config || {}, ComponentMod, diff --git a/packages/next/server/next-server.ts b/packages/next/server/next-server.ts index 27316dd1fd3e035..623de3c30bad964 100644 --- a/packages/next/server/next-server.ts +++ b/packages/next/server/next-server.ts @@ -960,7 +960,8 @@ export default class NextNodeServer extends BaseServer { pagePath!, !this.renderOpts.dev && this._isLikeServerless, !!this.renderOpts.serverComponents, - isAppPath + isAppPath, + !!this.nextConfig.experimental.sri?.algorithm ) if ( diff --git a/packages/next/shared/lib/constants.ts b/packages/next/shared/lib/constants.ts index c314f8517b5b653..b3c0312165113b7 100644 --- a/packages/next/shared/lib/constants.ts +++ b/packages/next/shared/lib/constants.ts @@ -26,6 +26,8 @@ export const APP_PATHS_MANIFEST = 'app-paths-manifest.json' export const APP_PATH_ROUTES_MANIFEST = 'app-path-routes-manifest.json' export const BUILD_MANIFEST = 'build-manifest.json' export const APP_BUILD_MANIFEST = 'app-build-manifest.json' +export const SUBRESOURCE_INTEGRITY_MANIFEST = + 'subresource-integrity-manifest.json' export const EXPORT_MARKER = 'export-marker.json' export const EXPORT_DETAIL = 'export-detail.json' export const PRERENDER_MANIFEST = 'prerender-manifest.json' From ae6365d2f24f3143258c2f0fa5a84686a1c1e0d9 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Fri, 19 Aug 2022 11:08:47 +0100 Subject: [PATCH 02/16] fix: improve typings --- .../plugins/subresource-integrity-plugin.ts | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/packages/next/build/webpack/plugins/subresource-integrity-plugin.ts b/packages/next/build/webpack/plugins/subresource-integrity-plugin.ts index 5ff1e8e1f33add0..30813bd93994992 100644 --- a/packages/next/build/webpack/plugins/subresource-integrity-plugin.ts +++ b/packages/next/build/webpack/plugins/subresource-integrity-plugin.ts @@ -6,22 +6,29 @@ const PLUGIN_NAME = 'SubresourceIntegrityPlugin' export type SubresourceIntegrityAlgorithm = 'sha256' | 'sha384' | 'sha512' +export type CompilationAssets = Parameters< + Parameters[1] +>[0] + export class SubresourceIntegrityPlugin { constructor(private readonly algorithm: SubresourceIntegrityAlgorithm) {} - public apply(compiler: any) { - compiler.hooks.make.tap(PLUGIN_NAME, (compilation: any) => { + public apply(compiler: webpack.Compiler) { + compiler.hooks.make.tap(PLUGIN_NAME, (compilation) => { compilation.hooks.afterOptimizeAssets.tap( { name: PLUGIN_NAME, stage: webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS, }, - (assets: any) => this.createAsset(assets, compilation) + (assets) => this.createAsset(assets, compilation) ) }) } - private createAsset(assets: any, compilation: webpack.Compilation) { + private createAsset( + assets: CompilationAssets, + compilation: webpack.Compilation + ) { // Collect all the entrypoint files. let files = new Set() for (const entrypoint of compilation.entrypoints.values()) { @@ -39,12 +46,18 @@ export class SubresourceIntegrityPlugin { const hashes: Record = {} for (const file of files.values()) { // Get the buffer for the asset. - const content = assets[file].buffer() + const asset = assets[file] + if (!asset) { + throw new Error(`could not get asset: ${file}`) + } + + // Get the buffer for the asset. + const buffer = asset.buffer() // Create the hash for the content. const hash = crypto .createHash(this.algorithm) - .update(content) + .update(buffer) .digest() .toString('base64') @@ -52,6 +65,6 @@ export class SubresourceIntegrityPlugin { } const json = JSON.stringify(hashes, null, 2) - assets[SUBRESOURCE_INTEGRITY_MANIFEST] = new sources.RawSource(json) + assets[SUBRESOURCE_INTEGRITY_MANIFEST] = new sources.RawSource(json) as any } } From 81f61e5cba230127084ffb078069e4b86bb7ce61 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Fri, 19 Aug 2022 11:26:39 +0100 Subject: [PATCH 03/16] fix: added check for escape characters --- packages/next/server/app-render.tsx | 9 ++++++++- packages/next/server/htmlescape.ts | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/next/server/app-render.tsx b/packages/next/server/app-render.tsx index 5a905225e25b4d4..6d5120b8ca2959b 100644 --- a/packages/next/server/app-render.tsx +++ b/packages/next/server/app-render.tsx @@ -17,7 +17,7 @@ import { continueFromInitialStream, } from './node-web-streams-helper' import { isDynamicRoute } from '../shared/lib/router/utils' -import { htmlEscapeJsonString } from './htmlescape' +import { ESCAPE_REGEX, htmlEscapeJsonString } from './htmlescape' import { shouldUseReactRoot, stripInternalQueries } from './utils' import { NextApiRequestCookies } from './api-utils' import { matchSegment } from '../client/components/match-segments' @@ -1031,6 +1031,13 @@ export async function renderToHTMLOrFlight( ) // Grab the nonce by trimming the 'nonce-' prefix. ?.slice(7, -1) + + // Don't accept the nonce value if it contains HTML escape characters. + // Technically, the spec requires a base64'd value, but this is just an + // extra layer. + if (nonce && ESCAPE_REGEX.test(nonce)) { + nonce = undefined + } } /** diff --git a/packages/next/server/htmlescape.ts b/packages/next/server/htmlescape.ts index 7bcda3c3570b775..fa06e75df98ac09 100644 --- a/packages/next/server/htmlescape.ts +++ b/packages/next/server/htmlescape.ts @@ -9,7 +9,7 @@ const ESCAPE_LOOKUP: { [match: string]: string } = { '\u2029': '\\u2029', } -const ESCAPE_REGEX = /[&><\u2028\u2029]/g +export const ESCAPE_REGEX = /[&><\u2028\u2029]/g export function htmlEscapeJsonString(str: string): string { return str.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]) From 6dd4ff719808f89894158f9eee0228fdb4d85c6a Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Fri, 19 Aug 2022 11:29:04 +0100 Subject: [PATCH 04/16] fix: throw instead of unset --- packages/next/server/app-render.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/next/server/app-render.tsx b/packages/next/server/app-render.tsx index 6d5120b8ca2959b..d575f3025fe292b 100644 --- a/packages/next/server/app-render.tsx +++ b/packages/next/server/app-render.tsx @@ -1036,7 +1036,9 @@ export async function renderToHTMLOrFlight( // Technically, the spec requires a base64'd value, but this is just an // extra layer. if (nonce && ESCAPE_REGEX.test(nonce)) { - nonce = undefined + throw new Error( + 'nonce value from Content-Security-Policy contained HTML escape characters' + ) } } From 4c4f9418e355386b7db9b042f206a2cfafad05b7 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Fri, 19 Aug 2022 11:49:01 +0100 Subject: [PATCH 05/16] fix: added error page --- errors/manifest.json | 4 ++++ errors/nonce-contained-illegal-characters.md | 20 ++++++++++++++++++++ packages/next/server/app-render.tsx | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 errors/nonce-contained-illegal-characters.md diff --git a/errors/manifest.json b/errors/manifest.json index 3f013867de559b8..a8e813758763093 100644 --- a/errors/manifest.json +++ b/errors/manifest.json @@ -729,6 +729,10 @@ { "title": "middleware-parse-user-agent", "path": "/errors/middleware-parse-user-agent.md" + }, + { + "title": "nonce-contained-illegal-characters", + "path": "/errors/nonce-contained-illegal-characters.md" } ] } diff --git a/errors/nonce-contained-illegal-characters.md b/errors/nonce-contained-illegal-characters.md new file mode 100644 index 000000000000000..5bb05f49f4edc10 --- /dev/null +++ b/errors/nonce-contained-illegal-characters.md @@ -0,0 +1,20 @@ +# nonce contained illegal characters + +#### Why This Error Occurred + +This happens when there is a request that contains a `Content-Security-Policy` +header that contains a `script-src` directive with a nonce value that contains +illegal characters (any one of `<>&` characters). For example: + +- `'nonce-"'` + ) + + expect(res.status).toBe(500) + }) + }) } describe('without assetPrefix', () => { diff --git a/test/lib/next-test-utils.js b/test/lib/next-test-utils.js index d46441e156f38b4..c13d00551ab7471 100644 --- a/test/lib/next-test-utils.js +++ b/test/lib/next-test-utils.js @@ -83,6 +83,12 @@ export function initNextServerScript( }) } +/** + * @param {string | number} appPortOrUrl + * @param {string} [url] + * @param {string} [hostname] + * @returns + */ export function getFullUrl(appPortOrUrl, url, hostname) { let fullUrl = typeof appPortOrUrl === 'string' && appPortOrUrl.startsWith('http') @@ -110,11 +116,24 @@ export function renderViaAPI(app, pathname, query) { return app.renderToHTML({ url }, {}, pathname, query) } +/** + * @param {string} appPort + * @param {string} pathname + * @param {Record | undefined} [query] + * @param {import('node-fetch').RequestInit} [opts] + * @returns {Promise} + */ export function renderViaHTTP(appPort, pathname, query, opts) { return fetchViaHTTP(appPort, pathname, query, opts).then((res) => res.text()) } -/** @return {Promise} */ +/** + * @param {string} appPort + * @param {string} pathname + * @param {Record | undefined} [query] + * @param {import('node-fetch').RequestInit} [opts] + * @returns {Promise} + */ export function fetchViaHTTP(appPort, pathname, query, opts) { const url = `${pathname}${ typeof query === 'string' ? query : query ? `?${qs.stringify(query)}` : '' From 6f89dad44dc726779e27597bbe57826f41f7eb02 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Tue, 23 Aug 2022 11:24:01 +0100 Subject: [PATCH 10/16] fix: fixed tests --- test/lib/next-test-utils.js | 6 +++--- test/production/required-server-files-i18n.test.ts | 8 ++++---- test/production/required-server-files.test.ts | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/test/lib/next-test-utils.js b/test/lib/next-test-utils.js index c13d00551ab7471..a837b45f8931a94 100644 --- a/test/lib/next-test-utils.js +++ b/test/lib/next-test-utils.js @@ -119,7 +119,7 @@ export function renderViaAPI(app, pathname, query) { /** * @param {string} appPort * @param {string} pathname - * @param {Record | undefined} [query] + * @param {Record | string | undefined} [query] * @param {import('node-fetch').RequestInit} [opts] * @returns {Promise} */ @@ -128,9 +128,9 @@ export function renderViaHTTP(appPort, pathname, query, opts) { } /** - * @param {string} appPort + * @param {string | number} appPort * @param {string} pathname - * @param {Record | undefined} [query] + * @param {Record | string | undefined} [query] * @param {import('node-fetch').RequestInit} [opts] * @returns {Promise} */ diff --git a/test/production/required-server-files-i18n.test.ts b/test/production/required-server-files-i18n.test.ts index 17c5df1c80dff2a..8d290d779df5390 100644 --- a/test/production/required-server-files-i18n.test.ts +++ b/test/production/required-server-files-i18n.test.ts @@ -171,7 +171,7 @@ describe('should set-up next', () => { await next.patchFile('standalone/data.txt', 'show') const res = await fetchViaHTTP(appPort, '/gsp', undefined, { - redirect: 'manual ', + redirect: 'manual', }) expect(res.status).toBe(200) expect(res.headers.get('cache-control')).toBe( @@ -182,7 +182,7 @@ describe('should set-up next', () => { await next.patchFile('standalone/data.txt', 'hide') const res2 = await fetchViaHTTP(appPort, '/gsp', undefined, { - redirect: 'manual ', + redirect: 'manual', }) expect(res2.status).toBe(404) expect(res2.headers.get('cache-control')).toBe( @@ -194,7 +194,7 @@ describe('should set-up next', () => { await next.patchFile('standalone/data.txt', 'show') const res = await fetchViaHTTP(appPort, '/gssp', undefined, { - redirect: 'manual ', + redirect: 'manual', }) expect(res.status).toBe(200) expect(res.headers.get('cache-control')).toBe( @@ -204,7 +204,7 @@ describe('should set-up next', () => { await next.patchFile('standalone/data.txt', 'hide') const res2 = await fetchViaHTTP(appPort, '/gssp', undefined, { - redirect: 'manual ', + redirect: 'manual', }) await next.patchFile('standalone/data.txt', 'show') diff --git a/test/production/required-server-files.test.ts b/test/production/required-server-files.test.ts index 1d97b5bc5be3c35..de7d1bcc26c32de 100644 --- a/test/production/required-server-files.test.ts +++ b/test/production/required-server-files.test.ts @@ -422,7 +422,7 @@ describe('should set-up next', () => { await next.patchFile('standalone/data.txt', 'show') const res = await fetchViaHTTP(appPort, '/gsp', undefined, { - redirect: 'manual ', + redirect: 'manual', }) expect(res.status).toBe(200) expect(res.headers.get('cache-control')).toBe( @@ -433,7 +433,7 @@ describe('should set-up next', () => { await next.patchFile('standalone/data.txt', 'hide') const res2 = await fetchViaHTTP(appPort, '/gsp', undefined, { - redirect: 'manual ', + redirect: 'manual', }) expect(res2.status).toBe(404) expect(res2.headers.get('cache-control')).toBe( @@ -445,7 +445,7 @@ describe('should set-up next', () => { await next.patchFile('standalone/data.txt', 'show') const res = await fetchViaHTTP(appPort, '/gssp', undefined, { - redirect: 'manual ', + redirect: 'manual', }) expect(res.status).toBe(200) expect(res.headers.get('cache-control')).toBe( @@ -455,7 +455,7 @@ describe('should set-up next', () => { await next.patchFile('standalone/data.txt', 'hide') const res2 = await fetchViaHTTP(appPort, '/gssp', undefined, { - redirect: 'manual ', + redirect: 'manual', }) await next.patchFile('standalone/data.txt', 'show') From 84f976ead294deadb744f38bbbd68a62b20ba55d Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Tue, 23 Aug 2022 11:40:20 +0100 Subject: [PATCH 11/16] fix: fixed tests --- test/integration/image-optimizer/test/util.ts | 17 +++++++++++++---- test/lib/next-test-utils.js | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/test/integration/image-optimizer/test/util.ts b/test/integration/image-optimizer/test/util.ts index aa37a5aef7c78d4..c8404bc44db5afe 100644 --- a/test/integration/image-optimizer/test/util.ts +++ b/test/integration/image-optimizer/test/util.ts @@ -15,6 +15,7 @@ import { waitFor, } from 'next-test-utils' import isAnimated from 'next/dist/compiled/is-animated' +import { RequestInit } from 'node-fetch' const largeSize = 1080 // defaults defined in server/config.ts const sharpMissingText = `For production Image Optimization with Next.js, the optional 'sharp' package is strongly recommended` @@ -115,10 +116,15 @@ async function expectAvifSmallerThanWebp(w, q, appPort) { expect(avif).toBeLessThanOrEqual(webp) } -async function fetchWithDuration(...args) { - console.warn('Fetching', args[1], args[2]) +async function fetchWithDuration( + appPort: string | number, + pathname: string, + query?: Record | string, + opts?: RequestInit +) { + console.warn('Fetching', pathname, query) const start = Date.now() - const res = await fetchViaHTTP(...args) + const res = await fetchViaHTTP(appPort, pathname, query, opts) const buffer = await res.buffer() const duration = Date.now() - start return { duration, buffer, res } @@ -140,7 +146,10 @@ export function runTests(ctx) { slowImageServer.port }/slow.png?delay=${1}&status=308` const query = { url, w: ctx.w, q: 39 } - const opts = { headers: { accept: 'image/webp' }, redirect: 'manual' } + const opts: RequestInit = { + headers: { accept: 'image/webp' }, + redirect: 'manual', + } const res = await fetchViaHTTP(ctx.appPort, '/_next/image', query, opts) expect(res.status).toBe(500) diff --git a/test/lib/next-test-utils.js b/test/lib/next-test-utils.js index a837b45f8931a94..6d07d22915e0827 100644 --- a/test/lib/next-test-utils.js +++ b/test/lib/next-test-utils.js @@ -117,7 +117,7 @@ export function renderViaAPI(app, pathname, query) { } /** - * @param {string} appPort + * @param {string | number} appPort * @param {string} pathname * @param {Record | string | undefined} [query] * @param {import('node-fetch').RequestInit} [opts] From 8596d15a6eaec581e8b6a43f1dbe002cd8f100db Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Wed, 24 Aug 2022 20:36:19 +0100 Subject: [PATCH 12/16] Update test/integration/image-optimizer/test/util.ts Co-authored-by: Steven --- test/integration/image-optimizer/test/util.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/image-optimizer/test/util.ts b/test/integration/image-optimizer/test/util.ts index c8404bc44db5afe..0937682c742c607 100644 --- a/test/integration/image-optimizer/test/util.ts +++ b/test/integration/image-optimizer/test/util.ts @@ -15,7 +15,7 @@ import { waitFor, } from 'next-test-utils' import isAnimated from 'next/dist/compiled/is-animated' -import { RequestInit } from 'node-fetch' +import type { RequestInit } from 'node-fetch' const largeSize = 1080 // defaults defined in server/config.ts const sharpMissingText = `For production Image Optimization with Next.js, the optional 'sharp' package is strongly recommended` From e7e0e37b8ab90a3f304b4f4626d81f202dc11053 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Wed, 7 Sep 2022 12:36:16 -0600 Subject: [PATCH 13/16] fix: added support for edge rendering --- packages/next/build/entries.ts | 1 + packages/next/build/utils.ts | 34 +++++----- packages/next/build/webpack-config.ts | 8 ++- .../loaders/next-edge-ssr-loader/index.ts | 6 ++ .../loaders/next-edge-ssr-loader/render.ts | 3 + .../webpack/plugins/middleware-plugin.ts | 29 ++++++-- .../plugins/subresource-integrity-plugin.ts | 12 +++- packages/next/export/worker.ts | 20 +++--- packages/next/server/app-render.tsx | 9 +-- .../next/server/dev/static-paths-worker.ts | 8 +-- packages/next/server/load-components.ts | 46 ++++++------- packages/next/server/next-server.ts | 67 +++++++++---------- packages/next/shared/lib/constants.ts | 3 +- 13 files changed, 136 insertions(+), 110 deletions(-) diff --git a/packages/next/build/entries.ts b/packages/next/build/entries.ts index acd695ece19157b..f58536b2eb7f4c6 100644 --- a/packages/next/build/entries.ts +++ b/packages/next/build/entries.ts @@ -212,6 +212,7 @@ export function getEdgeServerEntry(opts: { stringifiedConfig: JSON.stringify(opts.config), pagesType: opts.pagesType, appDirLoader: Buffer.from(opts.appDirLoader || '').toString('base64'), + sriEnabled: !opts.isDev && !!opts.config.experimental.sri?.algorithm, } return { diff --git a/packages/next/build/utils.ts b/packages/next/build/utils.ts index fa114b46ef03be8..5e04a963c108d3b 100644 --- a/packages/next/build/utils.ts +++ b/packages/next/build/utils.ts @@ -1082,13 +1082,13 @@ export async function isPageStatic({ getStaticProps: mod.getStaticProps, } } else { - componentsResult = await loadComponents( + componentsResult = await loadComponents({ distDir, - page, + pathname: page, serverless, - false, - false - ) + hasServerComponents: false, + isAppPath: false, + }) } const Comp = componentsResult.Component @@ -1214,13 +1214,13 @@ export async function hasCustomGetInitialProps( ): Promise { require('../shared/lib/runtime-config').setConfig(runtimeEnvConfig) - const components = await loadComponents( + const components = await loadComponents({ distDir, - page, - isLikeServerless, - false, - false - ) + pathname: page, + serverless: isLikeServerless, + hasServerComponents: false, + isAppPath: false, + }) let mod = components.ComponentMod if (checkingApp) { @@ -1239,13 +1239,13 @@ export async function getNamedExports( runtimeEnvConfig: any ): Promise> { require('../shared/lib/runtime-config').setConfig(runtimeEnvConfig) - const components = await loadComponents( + const components = await loadComponents({ distDir, - page, - isLikeServerless, - false, - false - ) + pathname: page, + serverless: isLikeServerless, + hasServerComponents: false, + isAppPath: false, + }) let mod = components.ComponentMod return Object.keys(mod) diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts index 295a0628e46235f..452a2afdc307b91 100644 --- a/packages/next/build/webpack-config.ts +++ b/packages/next/build/webpack-config.ts @@ -1751,7 +1751,11 @@ export default async function getBaseWebpackConfig( }), // MiddlewarePlugin should be after DefinePlugin so NEXT_PUBLIC_* // replacement is done before its process.env.* handling - isEdgeServer && new MiddlewarePlugin({ dev }), + isEdgeServer && + new MiddlewarePlugin({ + dev, + sriEnabled: !dev && !!config.experimental.sri?.algorithm, + }), isClient && new BuildManifestPlugin({ buildId, @@ -1803,7 +1807,7 @@ export default async function getBaseWebpackConfig( })), !dev && isClient && - config.experimental.sri?.algorithm && + !!config.experimental.sri?.algorithm && new SubresourceIntegrityPlugin(config.experimental.sri.algorithm), !dev && isClient && diff --git a/packages/next/build/webpack/loaders/next-edge-ssr-loader/index.ts b/packages/next/build/webpack/loaders/next-edge-ssr-loader/index.ts index 527aae70d77dc26..cd47aadac3117d6 100644 --- a/packages/next/build/webpack/loaders/next-edge-ssr-loader/index.ts +++ b/packages/next/build/webpack/loaders/next-edge-ssr-loader/index.ts @@ -14,6 +14,7 @@ export type EdgeSSRLoaderQuery = { stringifiedConfig: string appDirLoader?: string pagesType?: 'app' | 'pages' | 'root' + sriEnabled: boolean } export default async function edgeSSRLoader(this: any) { @@ -30,6 +31,7 @@ export default async function edgeSSRLoader(this: any) { stringifiedConfig, appDirLoader: appDirLoaderBase64, pagesType, + sriEnabled, } = this.getOptions() const appDirLoader = Buffer.from( @@ -94,6 +96,9 @@ export default async function edgeSSRLoader(this: any) { const reactLoadableManifest = self.__REACT_LOADABLE_MANIFEST const rscManifest = self.__RSC_MANIFEST const rscCssManifest = self.__RSC_CSS_MANIFEST + const subresourceIntegrityManifest = ${ + sriEnabled ? 'self.__SUBRESOURCE_INTEGRITY_MANIFEST' : 'undefined' + } const render = getRender({ dev: ${dev}, @@ -109,6 +114,7 @@ export default async function edgeSSRLoader(this: any) { reactLoadableManifest, serverComponentManifest: ${isServerComponent} ? rscManifest : null, serverCSSManifest: ${isServerComponent} ? rscCssManifest : null, + subresourceIntegrityManifest, config: ${stringifiedConfig}, buildId: ${JSON.stringify(buildId)}, }) diff --git a/packages/next/build/webpack/loaders/next-edge-ssr-loader/render.ts b/packages/next/build/webpack/loaders/next-edge-ssr-loader/render.ts index 2424b0cdffbe32a..49d335551858e78 100644 --- a/packages/next/build/webpack/loaders/next-edge-ssr-loader/render.ts +++ b/packages/next/build/webpack/loaders/next-edge-ssr-loader/render.ts @@ -23,6 +23,7 @@ export function getRender({ appRenderToHTML, pagesRenderToHTML, serverComponentManifest, + subresourceIntegrityManifest, serverCSSManifest, config, buildId, @@ -38,6 +39,7 @@ export function getRender({ Document: DocumentType buildManifest: BuildManifest reactLoadableManifest: ReactLoadableManifest + subresourceIntegrityManifest?: Record serverComponentManifest: any serverCSSManifest: any appServerMod: any @@ -48,6 +50,7 @@ export function getRender({ dev, buildManifest, reactLoadableManifest, + subresourceIntegrityManifest, Document, App: appMod.default as AppType, } diff --git a/packages/next/build/webpack/plugins/middleware-plugin.ts b/packages/next/build/webpack/plugins/middleware-plugin.ts index 6711ade2f9166fe..b2b8ca87af78cf5 100644 --- a/packages/next/build/webpack/plugins/middleware-plugin.ts +++ b/packages/next/build/webpack/plugins/middleware-plugin.ts @@ -17,6 +17,7 @@ import { MIDDLEWARE_REACT_LOADABLE_MANIFEST, NEXT_CLIENT_SSR_ENTRY_SUFFIX, FLIGHT_SERVER_CSS_MANIFEST, + SUBRESOURCE_INTEGRITY_MANIFEST, } from '../../../shared/lib/constants' export interface EdgeFunctionDefinition { @@ -74,12 +75,19 @@ function isUsingIndirectEvalAndUsedByExports(args: { return false } -function getEntryFiles(entryFiles: string[], meta: EntryMetadata) { +function getEntryFiles( + entryFiles: string[], + meta: EntryMetadata, + opts: { sriEnabled: boolean } +) { const files: string[] = [] if (meta.edgeSSR) { if (meta.edgeSSR.isServerComponent) { files.push(`server/${FLIGHT_MANIFEST}.js`) files.push(`server/${FLIGHT_SERVER_CSS_MANIFEST}.js`) + if (opts.sriEnabled) { + files.push(`server/${SUBRESOURCE_INTEGRITY_MANIFEST}.js`) + } files.push( ...entryFiles .filter( @@ -112,8 +120,9 @@ function getEntryFiles(entryFiles: string[], meta: EntryMetadata) { function getCreateAssets(params: { compilation: webpack.Compilation metadataByEntry: Map + opts: { sriEnabled: boolean } }) { - const { compilation, metadataByEntry } = params + const { compilation, metadataByEntry, opts } = params return (assets: any) => { const middlewareManifest: MiddlewareManifest = { sortedMiddleware: [], @@ -145,7 +154,7 @@ function getCreateAssets(params: { const edgeFunctionDefinition: EdgeFunctionDefinition = { env: Array.from(metadata.env), - files: getEntryFiles(entrypoint.getFiles(), metadata), + files: getEntryFiles(entrypoint.getFiles(), metadata, opts), name: entrypoint.name, page: page, matchers, @@ -708,13 +717,15 @@ function getExtractMetadata(params: { } export default class MiddlewarePlugin { - dev: boolean + private readonly dev: boolean + private readonly sriEnabled: boolean - constructor({ dev }: { dev: boolean }) { + constructor({ dev, sriEnabled }: { dev: boolean; sriEnabled: boolean }) { this.dev = dev + this.sriEnabled = sriEnabled } - apply(compiler: webpack.Compiler) { + public apply(compiler: webpack.Compiler) { compiler.hooks.compilation.tap(NAME, (compilation, params) => { const { hooks } = params.normalModuleFactory /** @@ -751,7 +762,11 @@ export default class MiddlewarePlugin { name: 'NextJsMiddlewareManifest', stage: (webpack as any).Compilation.PROCESS_ASSETS_STAGE_ADDITIONS, }, - getCreateAssets({ compilation, metadataByEntry }) + getCreateAssets({ + compilation, + metadataByEntry, + opts: { sriEnabled: this.sriEnabled }, + }) ) }) } diff --git a/packages/next/build/webpack/plugins/subresource-integrity-plugin.ts b/packages/next/build/webpack/plugins/subresource-integrity-plugin.ts index 63d6a260c650224..58f085f5ae21253 100644 --- a/packages/next/build/webpack/plugins/subresource-integrity-plugin.ts +++ b/packages/next/build/webpack/plugins/subresource-integrity-plugin.ts @@ -53,9 +53,17 @@ export class SubresourceIntegrityPlugin { } const json = JSON.stringify(hashes, null, 2) - assets[SUBRESOURCE_INTEGRITY_MANIFEST] = new sources.RawSource( + const file = 'server/' + SUBRESOURCE_INTEGRITY_MANIFEST + assets[file + '.js'] = new sources.RawSource( + 'self.__SUBRESOURCE_INTEGRITY_MANIFEST=' + json + // Work around webpack 4 type of RawSource being used + // TODO: use webpack 5 type by default + ) as unknown as webpack.sources.RawSource + assets[file + '.json'] = new sources.RawSource( json - ) as any + // Work around webpack 4 type of RawSource being used + // TODO: use webpack 5 type by default + ) as unknown as webpack.sources.RawSource } ) }) diff --git a/packages/next/export/worker.ts b/packages/next/export/worker.ts index 51655364d667927..66d43f35dc00272 100644 --- a/packages/next/export/worker.ts +++ b/packages/next/export/worker.ts @@ -290,13 +290,13 @@ export default async function exportPage({ getServerSideProps, getStaticProps, pageConfig, - } = await loadComponents( + } = await loadComponents({ distDir, - page, + pathname: page, serverless, - !!serverComponents, - isAppPath - ) + hasServerComponents: !!serverComponents, + isAppPath, + }) const ampState = { ampFirst: pageConfig?.amp === true, hasQuery: Boolean(query.amp), @@ -357,13 +357,13 @@ export default async function exportPage({ throw new Error(`Failed to render serverless page`) } } else { - const components = await loadComponents( + const components = await loadComponents({ distDir, - page, + pathname: page, serverless, - !!serverComponents, - isAppPath - ) + hasServerComponents: !!serverComponents, + isAppPath, + }) const ampState = { ampFirst: components.pageConfig?.amp === true, hasQuery: Boolean(query.amp), diff --git a/packages/next/server/app-render.tsx b/packages/next/server/app-render.tsx index 22ee91bedc9d9ea..b71191b4b720ac4 100644 --- a/packages/next/server/app-render.tsx +++ b/packages/next/server/app-render.tsx @@ -421,18 +421,15 @@ function getScriptNonceFromHeader(cspHeaderValue: string): string | undefined { // First try to find the directive for the 'script-src', otherwise try to // fallback to the 'default-src'. - let directive = directives.find((dir) => dir.startsWith('script-src')) - if (!directive) { - directive = directives.find((dir) => dir.startsWith('default-src')) - } + const directive = + directives.find((dir) => dir.startsWith('script-src')) || + directives.find((dir) => dir.startsWith('default-src')) // If no directive could be found, then we're done. if (!directive) { return } - debugger - // Extract the nonce from the directive const nonce = directive .split(' ') diff --git a/packages/next/server/dev/static-paths-worker.ts b/packages/next/server/dev/static-paths-worker.ts index 185948d7f2d146b..e56d018b1f26720 100644 --- a/packages/next/server/dev/static-paths-worker.ts +++ b/packages/next/server/dev/static-paths-worker.ts @@ -38,13 +38,13 @@ export async function loadStaticPaths( require('../../shared/lib/runtime-config').setConfig(config) setHttpAgentOptions(httpAgentOptions) - const components = await loadComponents( + const components = await loadComponents({ distDir, pathname, serverless, - false, - false - ) + hasServerComponents: false, + isAppPath: false, + }) if (!components.getStaticPaths) { // we shouldn't get to this point since the worker should diff --git a/packages/next/server/load-components.ts b/packages/next/server/load-components.ts index 068a85ed8405159..8f9f5431ff9e894 100644 --- a/packages/next/server/load-components.ts +++ b/packages/next/server/load-components.ts @@ -13,7 +13,6 @@ import { BUILD_MANIFEST, REACT_LOADABLE_MANIFEST, FLIGHT_MANIFEST, - SUBRESOURCE_INTEGRITY_MANIFEST, } from '../shared/lib/constants' import { join } from 'path' import { requirePage } from './require' @@ -61,14 +60,19 @@ export async function loadDefaultErrorComponents(distDir: string) { } } -export async function loadComponents( - distDir: string, - pathname: string, - serverless: boolean, - hasServerComponents: boolean, - isAppPath: boolean, - sriEnabled?: boolean -): Promise { +export async function loadComponents({ + distDir, + pathname, + serverless, + hasServerComponents, + isAppPath, +}: { + distDir: string + pathname: string + serverless: boolean + hasServerComponents: boolean + isAppPath: boolean +}): Promise { if (serverless) { const ComponentMod = await requirePage(pathname, distDir, serverless) if (typeof ComponentMod === 'string') { @@ -118,21 +122,14 @@ export async function loadComponents( requirePage(pathname, distDir, serverless, isAppPath) ) - const [ - buildManifest, - reactLoadableManifest, - serverComponentManifest, - subresourceIntegrityManifest, - ] = await Promise.all([ - require(join(distDir, BUILD_MANIFEST)), - require(join(distDir, REACT_LOADABLE_MANIFEST)), - hasServerComponents - ? require(join(distDir, 'server', FLIGHT_MANIFEST + '.json')) - : null, - sriEnabled - ? require(join(distDir, SUBRESOURCE_INTEGRITY_MANIFEST)) - : undefined, - ]) + const [buildManifest, reactLoadableManifest, serverComponentManifest] = + await Promise.all([ + require(join(distDir, BUILD_MANIFEST)), + require(join(distDir, REACT_LOADABLE_MANIFEST)), + hasServerComponents + ? require(join(distDir, 'server', FLIGHT_MANIFEST + '.json')) + : null, + ]) const Component = interopDefault(ComponentMod) const Document = interopDefault(DocumentMod) @@ -145,7 +142,6 @@ export async function loadComponents( Document, Component, buildManifest, - subresourceIntegrityManifest, reactLoadableManifest, pageConfig: ComponentMod.config || {}, ComponentMod, diff --git a/packages/next/server/next-server.ts b/packages/next/server/next-server.ts index 623de3c30bad964..c428f8753e29c07 100644 --- a/packages/next/server/next-server.ts +++ b/packages/next/server/next-server.ts @@ -248,20 +248,20 @@ export default class NextNodeServer extends BaseServer { if (!options.dev) { // pre-warm _document and _app as these will be // needed for most requests - loadComponents( - this.distDir, - '/_document', - this._isLikeServerless, - false, - false - ).catch(() => {}) - loadComponents( - this.distDir, - '/_app', - this._isLikeServerless, - false, - false - ).catch(() => {}) + loadComponents({ + distDir: this.distDir, + pathname: '/_document', + serverless: this._isLikeServerless, + hasServerComponents: false, + isAppPath: false, + }).catch(() => {}) + loadComponents({ + distDir: this.distDir, + pathname: '/_app', + serverless: this._isLikeServerless, + hasServerComponents: false, + isAppPath: false, + }).catch(() => {}) } } @@ -934,40 +934,37 @@ export default class NextNodeServer extends BaseServer { params: Params | null isAppPath: boolean }): Promise { - let paths = [ + const paths: string[] = [pathname] + if (query.amp) { // try serving a static AMP version first - query.amp - ? (isAppPath - ? normalizeAppPath(pathname) - : normalizePagePath(pathname)) + '.amp' - : null, - pathname, - ].filter(Boolean) + paths.unshift( + (isAppPath ? normalizeAppPath(pathname) : normalizePagePath(pathname)) + + '.amp' + ) + } if (query.__nextLocale) { - paths = [ + paths.unshift( ...paths.map( (path) => `/${query.__nextLocale}${path === '/' ? '' : path}` - ), - ...paths, - ] + ) + ) } for (const pagePath of paths) { try { - const components = await loadComponents( - this.distDir, - pagePath!, - !this.renderOpts.dev && this._isLikeServerless, - !!this.renderOpts.serverComponents, - isAppPath, - !!this.nextConfig.experimental.sri?.algorithm - ) + const components = await loadComponents({ + distDir: this.distDir, + pathname: pagePath, + serverless: !this.renderOpts.dev && this._isLikeServerless, + hasServerComponents: !!this.renderOpts.serverComponents, + isAppPath: !!this.nextConfig.experimental.appDir, + }) if ( query.__nextLocale && typeof components.Component === 'string' && - !pagePath?.startsWith(`/${query.__nextLocale}`) + !pagePath.startsWith(`/${query.__nextLocale}`) ) { // if loading an static HTML file the locale is required // to be present since all HTML files are output under their locale diff --git a/packages/next/shared/lib/constants.ts b/packages/next/shared/lib/constants.ts index b3c0312165113b7..f17d05ba0f83924 100644 --- a/packages/next/shared/lib/constants.ts +++ b/packages/next/shared/lib/constants.ts @@ -26,8 +26,7 @@ export const APP_PATHS_MANIFEST = 'app-paths-manifest.json' export const APP_PATH_ROUTES_MANIFEST = 'app-path-routes-manifest.json' export const BUILD_MANIFEST = 'build-manifest.json' export const APP_BUILD_MANIFEST = 'app-build-manifest.json' -export const SUBRESOURCE_INTEGRITY_MANIFEST = - 'subresource-integrity-manifest.json' +export const SUBRESOURCE_INTEGRITY_MANIFEST = 'subresource-integrity-manifest' export const EXPORT_MARKER = 'export-marker.json' export const EXPORT_DETAIL = 'export-detail.json' export const PRERENDER_MANIFEST = 'prerender-manifest.json' From 00ab8a409dea84630df05d6c526ccc193acf8e04 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Wed, 7 Sep 2022 13:52:23 -0600 Subject: [PATCH 14/16] fix: skip SRI tests on development --- test/e2e/app-dir/index.test.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/e2e/app-dir/index.test.ts b/test/e2e/app-dir/index.test.ts index 6de9438d2fa0e5e..e92332aa0c8ca25 100644 --- a/test/e2e/app-dir/index.test.ts +++ b/test/e2e/app-dir/index.test.ts @@ -1195,8 +1195,7 @@ describe('app dir', () => { }) }) }) - - describe('Subresource Integrity', () => { + ;(isDev ? describe.skip : describe)('Subresource Integrity', () => { function fetchWithPolicy(policy: string | null) { return fetchViaHTTP(next.url, '/dashboard', undefined, { headers: policy From 436c68a0dd81c171a1de625fc3e1cada61aa9a7c Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Wed, 7 Sep 2022 14:20:12 -0600 Subject: [PATCH 15/16] chore: removed trace file --- .../next-trace | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 test/traces/production-fallback-export-error-index.test.ts/next-trace diff --git a/test/traces/production-fallback-export-error-index.test.ts/next-trace b/test/traces/production-fallback-export-error-index.test.ts/next-trace deleted file mode 100644 index e03004431ec0919..000000000000000 --- a/test/traces/production-fallback-export-error-index.test.ts/next-trace +++ /dev/null @@ -1,5 +0,0 @@ -[{"traceId":"11edd18d86c7356d","parentId":1,"name":"generate-buildid","id":4,"timestamp":651385604553,"duration":266,"tags":{},"startTime":1661159352554},{"traceId":"11edd18d86c7356d","parentId":1,"name":"load-custom-routes","id":5,"timestamp":651385604993,"duration":216,"tags":{},"startTime":1661159352555},{"traceId":"11edd18d86c7356d","parentId":1,"name":"verify-typescript-setup","id":6,"timestamp":651385724175,"duration":162500,"tags":{},"startTime":1661159352674},{"traceId":"11edd18d86c7356d","parentId":1,"name":"verify-and-lint","id":7,"timestamp":651385794876,"duration":145969,"tags":{},"startTime":1661159352744},{"traceId":"11edd18d86c7356d","parentId":1,"name":"collect-pages","id":8,"timestamp":651385944475,"duration":1042,"tags":{},"startTime":1661159352894},{"traceId":"11edd18d86c7356d","parentId":1,"name":"create-pages-mapping","id":9,"timestamp":651385947182,"duration":1448,"tags":{},"startTime":1661159352897},{"traceId":"11edd18d86c7356d","parentId":1,"name":"create-entrypoints","id":10,"timestamp":651385948666,"duration":2900592,"tags":{},"startTime":1661159352898},{"traceId":"11edd18d86c7356d","parentId":1,"name":"public-dir-conflict-check","id":11,"timestamp":651388849305,"duration":643,"tags":{},"startTime":1661159355799},{"traceId":"11edd18d86c7356d","parentId":1,"name":"generate-routes-manifest","id":12,"timestamp":651388850958,"duration":2595,"tags":{},"startTime":1661159355801},{"traceId":"11edd18d86c7356d","parentId":1,"name":"create-dist-dir","id":13,"timestamp":651388853588,"duration":477,"tags":{},"startTime":1661159355803},{"traceId":"11edd18d86c7356d","parentId":1,"name":"write-routes-manifest","id":14,"timestamp":651388855823,"duration":490,"tags":{},"startTime":1661159355805},{"traceId":"11edd18d86c7356d","parentId":1,"name":"generate-required-server-files","id":15,"timestamp":651388856342,"duration":209,"tags":{},"startTime":1661159355806},{"traceId":"11edd18d86c7356d","parentId":16,"name":"generate-webpack-config","id":17,"timestamp":651388856589,"duration":333322,"tags":{},"startTime":1661159355806},{"traceId":"11edd18d86c7356d","parentId":18,"name":"next-trace-entrypoint-plugin","id":19,"timestamp":651389261817,"duration":2234,"tags":{},"startTime":1661159356211},{"traceId":"11edd18d86c7356d","parentId":31,"name":"next-swc-transform","id":32,"timestamp":651389310647,"duration":6703,"tags":{},"startTime":1661159356260},{"traceId":"11edd18d86c7356d","parentId":26,"name":"next-swc-loader","id":31,"timestamp":651389310139,"duration":7231,"tags":{},"startTime":1661159356260},{"traceId":"11edd18d86c7356d","parentId":18,"name":"build-module-js","id":26,"timestamp":651389304751,"duration":24585,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/pages/index.js"},"startTime":1661159356254},{"traceId":"11edd18d86c7356d","parentId":33,"name":"next-swc-transform","id":34,"timestamp":651389310907,"duration":18595,"tags":{},"startTime":1661159356261},{"traceId":"11edd18d86c7356d","parentId":27,"name":"next-swc-loader","id":33,"timestamp":651389310694,"duration":18814,"tags":{},"startTime":1661159356260},{"traceId":"11edd18d86c7356d","parentId":18,"name":"build-module-js","id":27,"timestamp":651389309421,"duration":25472,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/pages/[...slug].js"},"startTime":1661159356259},{"traceId":"11edd18d86c7356d","parentId":37,"name":"next-swc-transform","id":38,"timestamp":651389311008,"duration":25026,"tags":{},"startTime":1661159356261},{"traceId":"11edd18d86c7356d","parentId":29,"name":"next-swc-loader","id":37,"timestamp":651389310965,"duration":25077,"tags":{},"startTime":1661159356261},{"traceId":"11edd18d86c7356d","parentId":18,"name":"build-module-js","id":29,"timestamp":651389309983,"duration":38430,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/pages/_error.js"},"startTime":1661159356260},{"traceId":"11edd18d86c7356d","parentId":35,"name":"next-swc-transform","id":36,"timestamp":651389310959,"duration":37524,"tags":{},"startTime":1661159356261},{"traceId":"11edd18d86c7356d","parentId":28,"name":"next-swc-loader","id":35,"timestamp":651389310914,"duration":37573,"tags":{},"startTime":1661159356261},{"traceId":"11edd18d86c7356d","parentId":18,"name":"build-module-js","id":28,"timestamp":651389309722,"duration":42181,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/pages/_app.js"},"startTime":1661159356259},{"traceId":"11edd18d86c7356d","parentId":39,"name":"next-swc-transform","id":40,"timestamp":651389311045,"duration":40891,"tags":{},"startTime":1661159356261},{"traceId":"11edd18d86c7356d","parentId":30,"name":"next-swc-loader","id":39,"timestamp":651389311012,"duration":40927,"tags":{},"startTime":1661159356261},{"traceId":"11edd18d86c7356d","parentId":18,"name":"build-module-js","id":30,"timestamp":651389310065,"duration":100187,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/pages/_document.js"},"startTime":1661159356260},{"traceId":"11edd18d86c7356d","parentId":26,"name":"build-module-react/jsx-runtime","id":41,"timestamp":651389418269,"duration":248,"tags":{"name":"react/jsx-runtime"},"startTime":1661159356368},{"traceId":"11edd18d86c7356d","parentId":18,"name":"add-entry","id":23,"timestamp":651389269706,"duration":150171,"tags":{"request":"private-next-pages/index.js"},"startTime":1661159356219},{"traceId":"11edd18d86c7356d","parentId":18,"name":"add-entry","id":24,"timestamp":651389269720,"duration":150182,"tags":{"request":"private-next-pages/[...slug].js"},"startTime":1661159356219},{"traceId":"11edd18d86c7356d","parentId":29,"name":"build-module-react","id":42,"timestamp":651389419929,"duration":37,"tags":{"name":"react"},"startTime":1661159356370},{"traceId":"11edd18d86c7356d","parentId":30,"name":"build-module-/server/get-page-files","id":43,"timestamp":651389435247,"duration":42,"tags":{"name":"../server/get-page-files"},"startTime":1661159356385},{"traceId":"11edd18d86c7356d","parentId":30,"name":"build-module-/server/utils","id":44,"timestamp":651389435320,"duration":15,"tags":{"name":"../server/utils"},"startTime":1661159356385},{"traceId":"11edd18d86c7356d","parentId":30,"name":"build-module-/server/htmlescape","id":45,"timestamp":651389435349,"duration":10,"tags":{"name":"../server/htmlescape"},"startTime":1661159356385},{"traceId":"11edd18d86c7356d","parentId":49,"name":"read-resource","id":50,"timestamp":651389436899,"duration":124,"tags":{},"startTime":1661159356387},{"traceId":"11edd18d86c7356d","parentId":30,"name":"build-module-js","id":49,"timestamp":651389436470,"duration":3982,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/lib/is-error.js"},"startTime":1661159356386},{"traceId":"11edd18d86c7356d","parentId":51,"name":"read-resource","id":52,"timestamp":651389436993,"duration":3491,"tags":{},"startTime":1661159356387},{"traceId":"11edd18d86c7356d","parentId":30,"name":"build-module-js","id":51,"timestamp":651389436944,"duration":6747,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/lib/pretty-bytes.js"},"startTime":1661159356387},{"traceId":"11edd18d86c7356d","parentId":47,"name":"next-swc-transform","id":48,"timestamp":651389436028,"duration":7948,"tags":{},"startTime":1661159356386},{"traceId":"11edd18d86c7356d","parentId":46,"name":"next-swc-loader","id":47,"timestamp":651389435730,"duration":8258,"tags":{},"startTime":1661159356385},{"traceId":"11edd18d86c7356d","parentId":30,"name":"build-module-js","id":46,"timestamp":651389435373,"duration":19621,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/script.js"},"startTime":1661159356385},{"traceId":"11edd18d86c7356d","parentId":28,"name":"build-module-/shared/lib/utils","id":53,"timestamp":651389464224,"duration":42,"tags":{"name":"../shared/lib/utils"},"startTime":1661159356414},{"traceId":"11edd18d86c7356d","parentId":29,"name":"build-module-/shared/lib/head","id":54,"timestamp":651389464295,"duration":20,"tags":{"name":"../shared/lib/head"},"startTime":1661159356414},{"traceId":"11edd18d86c7356d","parentId":30,"name":"build-module-/shared/lib/constants","id":55,"timestamp":651389464327,"duration":13,"tags":{"name":"../shared/lib/constants"},"startTime":1661159356414},{"traceId":"11edd18d86c7356d","parentId":30,"name":"build-module-/shared/lib/html-context","id":56,"timestamp":651389464355,"duration":12,"tags":{"name":"../shared/lib/html-context"},"startTime":1661159356414},{"traceId":"11edd18d86c7356d","parentId":49,"name":"build-module-/shared/lib/is-plain-object","id":57,"timestamp":651389471191,"duration":27,"tags":{"name":"../shared/lib/is-plain-object"},"startTime":1661159356421},{"traceId":"11edd18d86c7356d","parentId":46,"name":"build-module-/shared/lib/head-manager-context","id":58,"timestamp":651389471242,"duration":12,"tags":{"name":"../shared/lib/head-manager-context"},"startTime":1661159356421},{"traceId":"11edd18d86c7356d","parentId":61,"name":"next-swc-transform","id":62,"timestamp":651389471797,"duration":1600,"tags":{},"startTime":1661159356421},{"traceId":"11edd18d86c7356d","parentId":59,"name":"next-swc-loader","id":61,"timestamp":651389471622,"duration":1786,"tags":{},"startTime":1661159356421},{"traceId":"11edd18d86c7356d","parentId":46,"name":"build-module-js","id":59,"timestamp":651389471268,"duration":8546,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/request-idle-callback.js"},"startTime":1661159356421},{"traceId":"11edd18d86c7356d","parentId":63,"name":"next-swc-transform","id":64,"timestamp":651389471852,"duration":8233,"tags":{},"startTime":1661159356421},{"traceId":"11edd18d86c7356d","parentId":60,"name":"next-swc-loader","id":63,"timestamp":651389471802,"duration":8288,"tags":{},"startTime":1661159356421},{"traceId":"11edd18d86c7356d","parentId":46,"name":"build-module-js","id":60,"timestamp":651389471538,"duration":17350,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/head-manager.js"},"startTime":1661159356421},{"traceId":"11edd18d86c7356d","parentId":65,"name":"read-resource","id":66,"timestamp":651389492791,"duration":173,"tags":{},"startTime":1661159356442},{"traceId":"11edd18d86c7356d","parentId":29,"name":"build-module-js","id":65,"timestamp":651389492722,"duration":2883,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_interop_require_default.js"},"startTime":1661159356442},{"traceId":"11edd18d86c7356d","parentId":67,"name":"read-resource","id":68,"timestamp":651389492843,"duration":2800,"tags":{},"startTime":1661159356442},{"traceId":"11edd18d86c7356d","parentId":28,"name":"build-module-js","id":67,"timestamp":651389492811,"duration":4098,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_async_to_generator.js"},"startTime":1661159356442},{"traceId":"11edd18d86c7356d","parentId":69,"name":"read-resource","id":70,"timestamp":651389492877,"duration":4050,"tags":{},"startTime":1661159356442},{"traceId":"11edd18d86c7356d","parentId":46,"name":"build-module-js","id":69,"timestamp":651389492853,"duration":4834,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_extends.js"},"startTime":1661159356442},{"traceId":"11edd18d86c7356d","parentId":71,"name":"read-resource","id":72,"timestamp":651389492915,"duration":4791,"tags":{},"startTime":1661159356443},{"traceId":"11edd18d86c7356d","parentId":46,"name":"build-module-js","id":71,"timestamp":651389492886,"duration":6082,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_interop_require_wildcard.js"},"startTime":1661159356443},{"traceId":"11edd18d86c7356d","parentId":73,"name":"read-resource","id":74,"timestamp":651389492951,"duration":6036,"tags":{},"startTime":1661159356443},{"traceId":"11edd18d86c7356d","parentId":46,"name":"build-module-js","id":73,"timestamp":651389492924,"duration":6704,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_object_without_properties_loose.js"},"startTime":1661159356443},{"traceId":"11edd18d86c7356d","parentId":18,"name":"add-entry","id":22,"timestamp":651389269684,"duration":230016,"tags":{"request":"next/dist/pages/_error"},"startTime":1661159356219},{"traceId":"11edd18d86c7356d","parentId":18,"name":"add-entry","id":21,"timestamp":651389269173,"duration":230538,"tags":{"request":"next/dist/pages/_app"},"startTime":1661159356219},{"traceId":"11edd18d86c7356d","parentId":18,"name":"add-entry","id":25,"timestamp":651389269732,"duration":229993,"tags":{"request":"next/dist/pages/_document"},"startTime":1661159356219},{"traceId":"11edd18d86c7356d","parentId":16,"name":"make","id":20,"timestamp":651389268842,"duration":231266,"tags":{},"startTime":1661159356218},{"traceId":"11edd18d86c7356d","parentId":75,"name":"get-entries","id":76,"timestamp":651389501117,"duration":284,"tags":{},"startTime":1661159356451},{"traceId":"11edd18d86c7356d","parentId":75,"name":"node-file-trace","id":77,"timestamp":651389501593,"duration":196591,"tags":{"traceEntryCount":"5"},"startTime":1661159356451},{"traceId":"11edd18d86c7356d","parentId":75,"name":"collect-traced-files","id":78,"timestamp":651389698198,"duration":1292,"tags":{},"startTime":1661159356648},{"traceId":"11edd18d86c7356d","parentId":19,"name":"finish-modules","id":75,"timestamp":651389500991,"duration":198504,"tags":{},"startTime":1661159356451},{"traceId":"11edd18d86c7356d","parentId":18,"name":"webpack-compilation-chunk-graph","id":80,"timestamp":651389705800,"duration":2367,"tags":{},"startTime":1661159356655},{"traceId":"11edd18d86c7356d","parentId":18,"name":"webpack-compilation-optimize-modules","id":82,"timestamp":651389708285,"duration":28,"tags":{},"startTime":1661159356658},{"traceId":"11edd18d86c7356d","parentId":18,"name":"webpack-compilation-optimize-chunks","id":83,"timestamp":651389708395,"duration":3219,"tags":{},"startTime":1661159356658},{"traceId":"11edd18d86c7356d","parentId":18,"name":"webpack-compilation-optimize-tree","id":84,"timestamp":651389711687,"duration":118,"tags":{},"startTime":1661159356661},{"traceId":"11edd18d86c7356d","parentId":18,"name":"webpack-compilation-optimize","id":81,"timestamp":651389708231,"duration":5762,"tags":{},"startTime":1661159356658},{"traceId":"11edd18d86c7356d","parentId":18,"name":"webpack-compilation-hash","id":85,"timestamp":651389733127,"duration":6092,"tags":{},"startTime":1661159356683},{"traceId":"11edd18d86c7356d","parentId":19,"name":"create-trace-assets","id":86,"timestamp":651389744932,"duration":333128,"tags":{},"startTime":1661159356695},{"traceId":"11edd18d86c7356d","parentId":18,"name":"webpack-compilation-seal","id":79,"timestamp":651389703683,"duration":375605,"tags":{},"startTime":1661159356653},{"traceId":"11edd18d86c7356d","parentId":16,"name":"webpack-compilation","id":18,"timestamp":651389257078,"duration":822562,"tags":{"name":"server"},"startTime":1661159356207},{"traceId":"11edd18d86c7356d","parentId":16,"name":"emit","id":87,"timestamp":651390080002,"duration":3639,"tags":{},"startTime":1661159357030},{"traceId":"11edd18d86c7356d","parentId":16,"name":"webpack-close","id":88,"timestamp":651390084282,"duration":271515,"tags":{"name":"server"},"startTime":1661159357034},{"traceId":"11edd18d86c7356d","parentId":88,"name":"webpack-generate-error-stats","id":89,"timestamp":651390355855,"duration":2437,"tags":{},"startTime":1661159357305},{"traceId":"11edd18d86c7356d","parentId":90,"name":"next-trace-entrypoint-plugin","id":91,"timestamp":651390369310,"duration":658,"tags":{},"startTime":1661159357319},{"traceId":"11edd18d86c7356d","parentId":16,"name":"make","id":92,"timestamp":651390371460,"duration":71,"tags":{},"startTime":1661159357321},{"traceId":"11edd18d86c7356d","parentId":93,"name":"get-entries","id":94,"timestamp":651390371655,"duration":1,"tags":{},"startTime":1661159357321},{"traceId":"11edd18d86c7356d","parentId":93,"name":"node-file-trace","id":95,"timestamp":651390371665,"duration":660,"tags":{"traceEntryCount":"0"},"startTime":1661159357321},{"traceId":"11edd18d86c7356d","parentId":93,"name":"collect-traced-files","id":96,"timestamp":651390372331,"duration":3,"tags":{},"startTime":1661159357322},{"traceId":"11edd18d86c7356d","parentId":91,"name":"finish-modules","id":93,"timestamp":651390371653,"duration":683,"tags":{},"startTime":1661159357321},{"traceId":"11edd18d86c7356d","parentId":90,"name":"webpack-compilation-chunk-graph","id":98,"timestamp":651390372639,"duration":39,"tags":{},"startTime":1661159357322},{"traceId":"11edd18d86c7356d","parentId":90,"name":"webpack-compilation-optimize-modules","id":100,"timestamp":651390372724,"duration":165,"tags":{},"startTime":1661159357322},{"traceId":"11edd18d86c7356d","parentId":90,"name":"webpack-compilation-optimize-chunks","id":101,"timestamp":651390372957,"duration":79,"tags":{},"startTime":1661159357323},{"traceId":"11edd18d86c7356d","parentId":90,"name":"webpack-compilation-optimize-tree","id":102,"timestamp":651390373082,"duration":26,"tags":{},"startTime":1661159357323},{"traceId":"11edd18d86c7356d","parentId":90,"name":"webpack-compilation-optimize","id":99,"timestamp":651390372692,"duration":575,"tags":{},"startTime":1661159357322},{"traceId":"11edd18d86c7356d","parentId":90,"name":"webpack-compilation-hash","id":103,"timestamp":651390373508,"duration":71,"tags":{},"startTime":1661159357323},{"traceId":"11edd18d86c7356d","parentId":91,"name":"create-trace-assets","id":104,"timestamp":651390374619,"duration":506,"tags":{},"startTime":1661159357324},{"traceId":"11edd18d86c7356d","parentId":90,"name":"webpack-compilation-seal","id":97,"timestamp":651390372496,"duration":2874,"tags":{},"startTime":1661159357322},{"traceId":"11edd18d86c7356d","parentId":16,"name":"webpack-compilation","id":90,"timestamp":651390368744,"duration":6675,"tags":{"name":"edge-server"},"startTime":1661159357318},{"traceId":"11edd18d86c7356d","parentId":16,"name":"emit","id":105,"timestamp":651390375498,"duration":3321,"tags":{},"startTime":1661159357325}] -[{"traceId":"11edd18d86c7356d","parentId":16,"name":"webpack-close","id":106,"timestamp":651390379099,"duration":190,"tags":{"name":"edge-server"},"startTime":1661159357329},{"traceId":"11edd18d86c7356d","parentId":106,"name":"webpack-generate-error-stats","id":107,"timestamp":651390379297,"duration":556,"tags":{},"startTime":1661159357329},{"traceId":"11edd18d86c7356d","parentId":116,"name":"next-client-pages-loader","id":117,"timestamp":651390409239,"duration":424,"tags":{"absolutePagePath":"next/dist/pages/_app"},"startTime":1661159357359},{"traceId":"11edd18d86c7356d","parentId":108,"name":"build-module-js?absolutePagePath=next%2Fdist%2Fpages%2F_app&page=%2F_app!","id":116,"timestamp":651390407793,"duration":6242,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=next%2Fdist%2Fpages%2F_app&page=%2F_app!"},"startTime":1661159357357},{"traceId":"11edd18d86c7356d","parentId":118,"name":"next-client-pages-loader","id":119,"timestamp":651390414146,"duration":35,"tags":{"absolutePagePath":"next/dist/pages/_error"},"startTime":1661159357364},{"traceId":"11edd18d86c7356d","parentId":108,"name":"build-module-js?absolutePagePath=next%2Fdist%2Fpages%2F_error&page=%2F_error!","id":118,"timestamp":651390414088,"duration":389,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=next%2Fdist%2Fpages%2F_error&page=%2F_error!"},"startTime":1661159357364},{"traceId":"11edd18d86c7356d","parentId":120,"name":"next-client-pages-loader","id":121,"timestamp":651390414546,"duration":30,"tags":{"absolutePagePath":"private-next-pages/index.js"},"startTime":1661159357364},{"traceId":"11edd18d86c7356d","parentId":108,"name":"build-module-js&page=%2F!","id":120,"timestamp":651390414496,"duration":354,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=private-next-pages%2Findex.js&page=%2F!"},"startTime":1661159357364},{"traceId":"11edd18d86c7356d","parentId":122,"name":"next-client-pages-loader","id":123,"timestamp":651390414928,"duration":31,"tags":{"absolutePagePath":"private-next-pages/[...slug].js"},"startTime":1661159357365},{"traceId":"11edd18d86c7356d","parentId":108,"name":"build-module-slug%5D!","id":122,"timestamp":651390414869,"duration":374,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js?absolutePagePath=private-next-pages%2F%5B...slug%5D.js&page=%2F%5B...slug%5D!"},"startTime":1661159357364},{"traceId":"11edd18d86c7356d","parentId":126,"name":"next-swc-transform","id":127,"timestamp":651390419275,"duration":2336,"tags":{},"startTime":1661159357369},{"traceId":"11edd18d86c7356d","parentId":124,"name":"next-swc-loader","id":126,"timestamp":651390419135,"duration":2490,"tags":{},"startTime":1661159357369},{"traceId":"11edd18d86c7356d","parentId":108,"name":"build-module-js","id":124,"timestamp":651390418356,"duration":5027,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/next.js"},"startTime":1661159357368},{"traceId":"11edd18d86c7356d","parentId":128,"name":"next-swc-transform","id":129,"timestamp":651390419313,"duration":5563,"tags":{},"startTime":1661159357369},{"traceId":"11edd18d86c7356d","parentId":125,"name":"next-swc-loader","id":128,"timestamp":651390419280,"duration":5602,"tags":{},"startTime":1661159357369},{"traceId":"11edd18d86c7356d","parentId":108,"name":"build-module-js","id":125,"timestamp":651390419058,"duration":16543,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/router.js"},"startTime":1661159357369},{"traceId":"11edd18d86c7356d","parentId":133,"name":"next-swc-transform","id":134,"timestamp":651390444504,"duration":1101,"tags":{},"startTime":1661159357394},{"traceId":"11edd18d86c7356d","parentId":130,"name":"next-swc-loader","id":133,"timestamp":651390444448,"duration":1165,"tags":{},"startTime":1661159357394},{"traceId":"11edd18d86c7356d","parentId":120,"name":"build-module-js","id":130,"timestamp":651390443975,"duration":2697,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/pages/index.js"},"startTime":1661159357394},{"traceId":"11edd18d86c7356d","parentId":135,"name":"next-swc-transform","id":136,"timestamp":651390444524,"duration":2168,"tags":{},"startTime":1661159357394},{"traceId":"11edd18d86c7356d","parentId":131,"name":"next-swc-loader","id":135,"timestamp":651390444508,"duration":2188,"tags":{},"startTime":1661159357394},{"traceId":"11edd18d86c7356d","parentId":122,"name":"build-module-js","id":131,"timestamp":651390444307,"duration":2874,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/pages/[...slug].js"},"startTime":1661159357394},{"traceId":"11edd18d86c7356d","parentId":148,"name":"read-resource","id":149,"timestamp":651390450107,"duration":9,"tags":{},"startTime":1661159357400},{"traceId":"11edd18d86c7356d","parentId":125,"name":"build-module-js","id":148,"timestamp":651390449977,"duration":1159,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/lib/is-error.js"},"startTime":1661159357400},{"traceId":"11edd18d86c7356d","parentId":142,"name":"next-swc-transform","id":143,"timestamp":651390449714,"duration":1456,"tags":{},"startTime":1661159357399},{"traceId":"11edd18d86c7356d","parentId":139,"name":"next-swc-loader","id":142,"timestamp":651390449682,"duration":1491,"tags":{},"startTime":1661159357399},{"traceId":"11edd18d86c7356d","parentId":125,"name":"build-module-js","id":139,"timestamp":651390449458,"duration":2673,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/with-router.js"},"startTime":1661159357399},{"traceId":"11edd18d86c7356d","parentId":144,"name":"next-swc-transform","id":145,"timestamp":651390449733,"duration":3309,"tags":{},"startTime":1661159357399},{"traceId":"11edd18d86c7356d","parentId":140,"name":"next-swc-loader","id":144,"timestamp":651390449717,"duration":3332,"tags":{},"startTime":1661159357399},{"traceId":"11edd18d86c7356d","parentId":116,"name":"build-module-js","id":140,"timestamp":651390449540,"duration":6907,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/pages/_app.js"},"startTime":1661159357399},{"traceId":"11edd18d86c7356d","parentId":146,"name":"next-swc-transform","id":147,"timestamp":651390449749,"duration":9311,"tags":{},"startTime":1661159357399},{"traceId":"11edd18d86c7356d","parentId":141,"name":"next-swc-loader","id":146,"timestamp":651390449735,"duration":9331,"tags":{},"startTime":1661159357399},{"traceId":"11edd18d86c7356d","parentId":118,"name":"build-module-js","id":141,"timestamp":651390449598,"duration":12144,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/pages/_error.js"},"startTime":1661159357399},{"traceId":"11edd18d86c7356d","parentId":137,"name":"next-swc-transform","id":138,"timestamp":651390444542,"duration":17747,"tags":{},"startTime":1661159357394},{"traceId":"11edd18d86c7356d","parentId":132,"name":"next-swc-loader","id":137,"timestamp":651390444526,"duration":17769,"tags":{},"startTime":1661159357394},{"traceId":"11edd18d86c7356d","parentId":124,"name":"build-module-js","id":132,"timestamp":651390444384,"duration":43425,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/index.js"},"startTime":1661159357394},{"traceId":"11edd18d86c7356d","parentId":151,"name":"next-swc-transform","id":152,"timestamp":651390498851,"duration":2130,"tags":{},"startTime":1661159357448},{"traceId":"11edd18d86c7356d","parentId":150,"name":"next-swc-loader","id":151,"timestamp":651390498813,"duration":2177,"tags":{},"startTime":1661159357448},{"traceId":"11edd18d86c7356d","parentId":125,"name":"build-module-js","id":150,"timestamp":651390498629,"duration":6606,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router-context.js"},"startTime":1661159357448},{"traceId":"11edd18d86c7356d","parentId":158,"name":"next-swc-transform","id":159,"timestamp":651390522082,"duration":1195,"tags":{},"startTime":1661159357472},{"traceId":"11edd18d86c7356d","parentId":156,"name":"next-swc-loader","id":158,"timestamp":651390522042,"duration":1247,"tags":{},"startTime":1661159357472},{"traceId":"11edd18d86c7356d","parentId":148,"name":"build-module-js","id":156,"timestamp":651390521752,"duration":4084,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/is-plain-object.js"},"startTime":1661159357471},{"traceId":"11edd18d86c7356d","parentId":160,"name":"next-swc-transform","id":161,"timestamp":651390522102,"duration":3832,"tags":{},"startTime":1661159357472},{"traceId":"11edd18d86c7356d","parentId":157,"name":"next-swc-loader","id":160,"timestamp":651390522086,"duration":3853,"tags":{},"startTime":1661159357472},{"traceId":"11edd18d86c7356d","parentId":140,"name":"build-module-js","id":157,"timestamp":651390521887,"duration":15244,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/utils.js"},"startTime":1661159357472},{"traceId":"11edd18d86c7356d","parentId":170,"name":"next-swc-transform","id":171,"timestamp":651390522936,"duration":23749,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":162,"name":"next-swc-loader","id":170,"timestamp":651390522910,"duration":23790,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":162,"timestamp":651390522525,"duration":29993,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/head-manager.js"},"startTime":1661159357472},{"traceId":"11edd18d86c7356d","parentId":172,"name":"next-swc-transform","id":173,"timestamp":651390522953,"duration":29632,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":163,"name":"next-swc-loader","id":172,"timestamp":651390522939,"duration":29651,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":163,"timestamp":651390522595,"duration":32796,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/page-loader.js"},"startTime":1661159357472},{"traceId":"11edd18d86c7356d","parentId":174,"name":"next-swc-transform","id":175,"timestamp":651390522968,"duration":32468,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":164,"name":"next-swc-loader","id":174,"timestamp":651390522956,"duration":32483,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":164,"timestamp":651390522656,"duration":34024,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/performance-relayer.js"},"startTime":1661159357472},{"traceId":"11edd18d86c7356d","parentId":154,"name":"next-swc-transform","id":155,"timestamp":651390507923,"duration":49140,"tags":{},"startTime":1661159357458},{"traceId":"11edd18d86c7356d","parentId":153,"name":"next-swc-loader","id":154,"timestamp":651390507884,"duration":49183,"tags":{},"startTime":1661159357458},{"traceId":"11edd18d86c7356d","parentId":125,"name":"build-module-js","id":153,"timestamp":651390507696,"duration":124175,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/router.js"},"startTime":1661159357457},{"traceId":"11edd18d86c7356d","parentId":176,"name":"next-swc-transform","id":177,"timestamp":651390522983,"duration":108950,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":165,"name":"next-swc-loader","id":176,"timestamp":651390522972,"duration":108967,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":165,"timestamp":651390522705,"duration":115061,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/route-announcer.js"},"startTime":1661159357472},{"traceId":"11edd18d86c7356d","parentId":178,"name":"next-swc-transform","id":179,"timestamp":651390522996,"duration":114841,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":166,"name":"next-swc-loader","id":178,"timestamp":651390522985,"duration":114856,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":166,"timestamp":651390522746,"duration":116132,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/remove-base-path.js"},"startTime":1661159357472},{"traceId":"11edd18d86c7356d","parentId":180,"name":"next-swc-transform","id":181,"timestamp":651390523010,"duration":115907,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":167,"name":"next-swc-loader","id":180,"timestamp":651390522998,"duration":115923,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":167,"timestamp":651390522789,"duration":116916,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/has-base-path.js"},"startTime":1661159357472},{"traceId":"11edd18d86c7356d","parentId":182,"name":"next-swc-transform","id":183,"timestamp":651390523023,"duration":116703,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":168,"name":"next-swc-loader","id":182,"timestamp":651390523012,"duration":116717,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":168,"timestamp":651390522831,"duration":121239,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/script.js"},"startTime":1661159357472},{"traceId":"11edd18d86c7356d","parentId":184,"name":"next-swc-transform","id":185,"timestamp":651390523036,"duration":121133,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":169,"name":"next-swc-loader","id":184,"timestamp":651390523025,"duration":121149,"tags":{},"startTime":1661159357473},{"traceId":"11edd18d86c7356d","parentId":141,"name":"build-module-js","id":169,"timestamp":651390522869,"duration":124532,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/head.js"},"startTime":1661159357472},{"traceId":"11edd18d86c7356d","parentId":153,"name":"build-module","id":192,"timestamp":651390695011,"duration":599,"tags":{"name":"undefined"},"startTime":1661159357645},{"traceId":"11edd18d86c7356d","parentId":193,"name":"read-resource","id":194,"timestamp":651390695669,"duration":8,"tags":{},"startTime":1661159357645},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":193,"timestamp":651390695634,"duration":5424,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/build/polyfills/polyfill-module.js"},"startTime":1661159357645},{"traceId":"11edd18d86c7356d","parentId":207,"name":"read-resource","id":208,"timestamp":651390702458,"duration":152,"tags":{},"startTime":1661159357652},{"traceId":"11edd18d86c7356d","parentId":125,"name":"build-module-js","id":207,"timestamp":651390702391,"duration":1336,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_construct.js"},"startTime":1661159357652},{"traceId":"11edd18d86c7356d","parentId":209,"name":"read-resource","id":210,"timestamp":651390702495,"duration":1252,"tags":{},"startTime":1661159357652},{"traceId":"11edd18d86c7356d","parentId":125,"name":"build-module-js","id":209,"timestamp":651390702465,"duration":1984,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_to_consumable_array.js"},"startTime":1661159357652},{"traceId":"11edd18d86c7356d","parentId":211,"name":"read-resource","id":212,"timestamp":651390702539,"duration":1931,"tags":{},"startTime":1661159357652},{"traceId":"11edd18d86c7356d","parentId":125,"name":"build-module-js","id":211,"timestamp":651390702501,"duration":2337,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_interop_require_default.js"},"startTime":1661159357652},{"traceId":"11edd18d86c7356d","parentId":213,"name":"read-resource","id":214,"timestamp":651390702580,"duration":2277,"tags":{},"startTime":1661159357652},{"traceId":"11edd18d86c7356d","parentId":140,"name":"build-module-js","id":213,"timestamp":651390702545,"duration":2604,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_class_call_check.js"},"startTime":1661159357652},{"traceId":"11edd18d86c7356d","parentId":215,"name":"read-resource","id":216,"timestamp":651390702607,"duration":2558,"tags":{},"startTime":1661159357652},{"traceId":"11edd18d86c7356d","parentId":140,"name":"build-module-js","id":215,"timestamp":651390702585,"duration":3248,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_create_class.js"},"startTime":1661159357652},{"traceId":"11edd18d86c7356d","parentId":195,"name":"next-swc-transform","id":196,"timestamp":651390701305,"duration":4618,"tags":{},"startTime":1661159357651},{"traceId":"11edd18d86c7356d","parentId":186,"name":"next-swc-loader","id":195,"timestamp":651390701256,"duration":4673,"tags":{},"startTime":1661159357651},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":186,"timestamp":651390694585,"duration":11973,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/head-manager-context.js"},"startTime":1661159357644},{"traceId":"11edd18d86c7356d","parentId":197,"name":"next-swc-transform","id":198,"timestamp":651390701336,"duration":5252,"tags":{},"startTime":1661159357651},{"traceId":"11edd18d86c7356d","parentId":187,"name":"next-swc-loader","id":197,"timestamp":651390701310,"duration":5281,"tags":{},"startTime":1661159357651},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":187,"timestamp":651390694704,"duration":12514,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/mitt.js"},"startTime":1661159357644},{"traceId":"11edd18d86c7356d","parentId":201,"name":"next-swc-transform","id":202,"timestamp":651390701368,"duration":5868,"tags":{},"startTime":1661159357651},{"traceId":"11edd18d86c7356d","parentId":189,"name":"next-swc-loader","id":201,"timestamp":651390701355,"duration":5885,"tags":{},"startTime":1661159357651},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":189,"timestamp":651390694810,"duration":12725,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/runtime-config.js"},"startTime":1661159357644},{"traceId":"11edd18d86c7356d","parentId":199,"name":"next-swc-transform","id":200,"timestamp":651390701353,"duration":6197,"tags":{},"startTime":1661159357651},{"traceId":"11edd18d86c7356d","parentId":188,"name":"next-swc-loader","id":199,"timestamp":651390701338,"duration":6214,"tags":{},"startTime":1661159357651},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":188,"timestamp":651390694763,"duration":13136,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/image-config-context.js"},"startTime":1661159357644},{"traceId":"11edd18d86c7356d","parentId":203,"name":"next-swc-transform","id":204,"timestamp":651390701384,"duration":6529,"tags":{},"startTime":1661159357651},{"traceId":"11edd18d86c7356d","parentId":190,"name":"next-swc-loader","id":203,"timestamp":651390701371,"duration":6545,"tags":{},"startTime":1661159357651},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":190,"timestamp":651390694850,"duration":13356,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/is-dynamic.js"},"startTime":1661159357644},{"traceId":"11edd18d86c7356d","parentId":205,"name":"next-swc-transform","id":206,"timestamp":651390701400,"duration":7510,"tags":{},"startTime":1661159357651}] -[{"traceId":"11edd18d86c7356d","parentId":191,"name":"next-swc-loader","id":205,"timestamp":651390701386,"duration":7704,"tags":{},"startTime":1661159357651},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":191,"timestamp":651390694888,"duration":15132,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/querystring.js"},"startTime":1661159357645},{"traceId":"11edd18d86c7356d","parentId":217,"name":"read-resource","id":218,"timestamp":651390715786,"duration":6,"tags":{},"startTime":1661159357665},{"traceId":"11edd18d86c7356d","parentId":140,"name":"build-module-js","id":217,"timestamp":651390715710,"duration":2704,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_inherits.js"},"startTime":1661159357665},{"traceId":"11edd18d86c7356d","parentId":219,"name":"read-resource","id":220,"timestamp":651390719531,"duration":38,"tags":{},"startTime":1661159357669},{"traceId":"11edd18d86c7356d","parentId":140,"name":"build-module-js","id":219,"timestamp":651390719483,"duration":718,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_async_to_generator.js"},"startTime":1661159357669},{"traceId":"11edd18d86c7356d","parentId":221,"name":"read-resource","id":222,"timestamp":651390719566,"duration":650,"tags":{},"startTime":1661159357669},{"traceId":"11edd18d86c7356d","parentId":140,"name":"build-module-js","id":221,"timestamp":651390719538,"duration":1224,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_create_super.js"},"startTime":1661159357669},{"traceId":"11edd18d86c7356d","parentId":223,"name":"read-resource","id":224,"timestamp":651390721370,"duration":163,"tags":{},"startTime":1661159357671},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":223,"timestamp":651390721329,"duration":1363,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_interop_require_wildcard.js"},"startTime":1661159357671},{"traceId":"11edd18d86c7356d","parentId":225,"name":"read-resource","id":226,"timestamp":651390721416,"duration":1292,"tags":{},"startTime":1661159357671},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":225,"timestamp":651390721376,"duration":1802,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_sliced_to_array.js"},"startTime":1661159357671},{"traceId":"11edd18d86c7356d","parentId":227,"name":"read-resource","id":228,"timestamp":651390721458,"duration":1731,"tags":{},"startTime":1661159357671},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":227,"timestamp":651390721424,"duration":2344,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_extends.js"},"startTime":1661159357671},{"traceId":"11edd18d86c7356d","parentId":230,"name":"next-swc-transform","id":231,"timestamp":651390724182,"duration":2506,"tags":{},"startTime":1661159357674},{"traceId":"11edd18d86c7356d","parentId":229,"name":"next-swc-loader","id":230,"timestamp":651390724135,"duration":2559,"tags":{},"startTime":1661159357674},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":229,"timestamp":651390721463,"duration":7229,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/portal/index.js"},"startTime":1661159357671},{"traceId":"11edd18d86c7356d","parentId":234,"name":"read-resource","id":235,"timestamp":651390736895,"duration":60,"tags":{},"startTime":1661159357687},{"traceId":"11edd18d86c7356d","parentId":125,"name":"build-module-js","id":234,"timestamp":651390736864,"duration":2348,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/react@18.2.0/node_modules/react/index.js"},"startTime":1661159357686},{"traceId":"11edd18d86c7356d","parentId":236,"name":"read-resource","id":237,"timestamp":651390736925,"duration":2308,"tags":{},"startTime":1661159357687},{"traceId":"11edd18d86c7356d","parentId":130,"name":"build-module-js","id":236,"timestamp":651390736901,"duration":2613,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/react@18.2.0/node_modules/react/jsx-runtime.js"},"startTime":1661159357687},{"traceId":"11edd18d86c7356d","parentId":238,"name":"read-resource","id":239,"timestamp":651390736951,"duration":2573,"tags":{},"startTime":1661159357687},{"traceId":"11edd18d86c7356d","parentId":140,"name":"build-module-js","id":238,"timestamp":651390736930,"duration":8575,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/compiled/regenerator-runtime/runtime.js"},"startTime":1661159357687},{"traceId":"11edd18d86c7356d","parentId":240,"name":"next-swc-transform","id":241,"timestamp":651390745876,"duration":9719,"tags":{},"startTime":1661159357695},{"traceId":"11edd18d86c7356d","parentId":232,"name":"next-swc-loader","id":240,"timestamp":651390745533,"duration":10076,"tags":{},"startTime":1661159357695},{"traceId":"11edd18d86c7356d","parentId":163,"name":"build-module-js","id":232,"timestamp":651390736707,"duration":21526,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/add-base-path.js"},"startTime":1661159357686},{"traceId":"11edd18d86c7356d","parentId":242,"name":"next-swc-transform","id":243,"timestamp":651390745903,"duration":12380,"tags":{},"startTime":1661159357696},{"traceId":"11edd18d86c7356d","parentId":233,"name":"next-swc-loader","id":242,"timestamp":651390745882,"duration":12405,"tags":{},"startTime":1661159357695},{"traceId":"11edd18d86c7356d","parentId":163,"name":"build-module-js","id":233,"timestamp":651390736808,"duration":22386,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/add-locale.js"},"startTime":1661159357686},{"traceId":"11edd18d86c7356d","parentId":249,"name":"next-swc-transform","id":250,"timestamp":651390770488,"duration":3913,"tags":{},"startTime":1661159357720},{"traceId":"11edd18d86c7356d","parentId":245,"name":"next-swc-loader","id":249,"timestamp":651390770263,"duration":4152,"tags":{},"startTime":1661159357720},{"traceId":"11edd18d86c7356d","parentId":153,"name":"build-module-js","id":245,"timestamp":651390769360,"duration":10126,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/detect-domain-locale.js"},"startTime":1661159357719},{"traceId":"11edd18d86c7356d","parentId":251,"name":"next-swc-transform","id":252,"timestamp":651390770509,"duration":9250,"tags":{},"startTime":1661159357720},{"traceId":"11edd18d86c7356d","parentId":246,"name":"next-swc-loader","id":251,"timestamp":651390770491,"duration":9274,"tags":{},"startTime":1661159357720},{"traceId":"11edd18d86c7356d","parentId":153,"name":"build-module-js","id":246,"timestamp":651390769749,"duration":12615,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/normalize-trailing-slash.js"},"startTime":1661159357719},{"traceId":"11edd18d86c7356d","parentId":247,"name":"next-swc-transform","id":248,"timestamp":651390770258,"duration":14748,"tags":{},"startTime":1661159357720},{"traceId":"11edd18d86c7356d","parentId":244,"name":"next-swc-loader","id":247,"timestamp":651390770190,"duration":14825,"tags":{},"startTime":1661159357720},{"traceId":"11edd18d86c7356d","parentId":163,"name":"build-module-js","id":244,"timestamp":651390769204,"duration":21058,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/route-loader.js"},"startTime":1661159357719},{"traceId":"11edd18d86c7356d","parentId":262,"name":"next-swc-transform","id":263,"timestamp":651390792617,"duration":2797,"tags":{},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":254,"name":"next-swc-loader","id":262,"timestamp":651390792597,"duration":2831,"tags":{},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":163,"name":"build-module-js","id":254,"timestamp":651390791986,"duration":5626,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/get-asset-path-from-route.js"},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":260,"name":"next-swc-transform","id":261,"timestamp":651390792593,"duration":5061,"tags":{},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":253,"name":"next-swc-loader","id":260,"timestamp":651390792406,"duration":5252,"tags":{},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":153,"name":"build-module-js","id":253,"timestamp":651390791633,"duration":6927,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/remove-locale.js"},"startTime":1661159357741},{"traceId":"11edd18d86c7356d","parentId":264,"name":"next-swc-transform","id":265,"timestamp":651390792633,"duration":6470,"tags":{},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":255,"name":"next-swc-loader","id":264,"timestamp":651390792619,"duration":6490,"tags":{},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":163,"name":"build-module-js","id":255,"timestamp":651390792048,"duration":7406,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js"},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":266,"name":"next-swc-transform","id":267,"timestamp":651390792648,"duration":6826,"tags":{},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":256,"name":"next-swc-loader","id":266,"timestamp":651390792635,"duration":6841,"tags":{},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":163,"name":"build-module-js","id":256,"timestamp":651390792092,"duration":7997,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js"},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":268,"name":"next-swc-transform","id":269,"timestamp":651390792665,"duration":7441,"tags":{},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":257,"name":"next-swc-loader","id":268,"timestamp":651390792650,"duration":7459,"tags":{},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":153,"name":"build-module-js","id":257,"timestamp":651390792137,"duration":16029,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/format-url.js"},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":270,"name":"next-swc-transform","id":271,"timestamp":651390792682,"duration":15762,"tags":{},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":258,"name":"next-swc-loader","id":270,"timestamp":651390792668,"duration":15781,"tags":{},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":153,"name":"build-module-js","id":258,"timestamp":651390792181,"duration":20205,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/route-regex.js"},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":272,"name":"next-swc-transform","id":273,"timestamp":651390792696,"duration":21010,"tags":{},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":259,"name":"next-swc-loader","id":272,"timestamp":651390792684,"duration":21029,"tags":{},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":153,"name":"build-module-js","id":259,"timestamp":651390792219,"duration":25330,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/route-matcher.js"},"startTime":1661159357742},{"traceId":"11edd18d86c7356d","parentId":279,"name":"next-swc-transform","id":280,"timestamp":651390819849,"duration":4919,"tags":{},"startTime":1661159357769},{"traceId":"11edd18d86c7356d","parentId":275,"name":"next-swc-loader","id":279,"timestamp":651390819827,"duration":4954,"tags":{},"startTime":1661159357769},{"traceId":"11edd18d86c7356d","parentId":153,"name":"build-module-js","id":275,"timestamp":651390819269,"duration":6708,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js"},"startTime":1661159357769},{"traceId":"11edd18d86c7356d","parentId":277,"name":"next-swc-transform","id":278,"timestamp":651390819822,"duration":6178,"tags":{},"startTime":1661159357769},{"traceId":"11edd18d86c7356d","parentId":274,"name":"next-swc-loader","id":277,"timestamp":651390819677,"duration":6326,"tags":{},"startTime":1661159357769},{"traceId":"11edd18d86c7356d","parentId":153,"name":"build-module-js","id":274,"timestamp":651390818834,"duration":7568,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/parse-path.js"},"startTime":1661159357768},{"traceId":"11edd18d86c7356d","parentId":281,"name":"next-swc-transform","id":282,"timestamp":651390819868,"duration":6597,"tags":{},"startTime":1661159357769},{"traceId":"11edd18d86c7356d","parentId":276,"name":"next-swc-loader","id":281,"timestamp":651390819852,"duration":6617,"tags":{},"startTime":1661159357769},{"traceId":"11edd18d86c7356d","parentId":153,"name":"build-module-js","id":276,"timestamp":651390819341,"duration":7618,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js"},"startTime":1661159357769},{"traceId":"11edd18d86c7356d","parentId":299,"name":"read-resource","id":300,"timestamp":651390830855,"duration":11,"tags":{},"startTime":1661159357780},{"traceId":"11edd18d86c7356d","parentId":157,"name":"build-module-js","id":299,"timestamp":651390830813,"duration":1676,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_wrap_native_super.js"},"startTime":1661159357780},{"traceId":"11edd18d86c7356d","parentId":290,"name":"next-swc-transform","id":291,"timestamp":651390829805,"duration":2844,"tags":{},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":284,"name":"next-swc-loader","id":290,"timestamp":651390829787,"duration":2867,"tags":{},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":167,"name":"build-module-js","id":284,"timestamp":651390829566,"duration":8502,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js"},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":288,"name":"next-swc-transform","id":289,"timestamp":651390829784,"duration":8605,"tags":{},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":283,"name":"next-swc-loader","id":288,"timestamp":651390829751,"duration":8643,"tags":{},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":153,"name":"build-module-js","id":283,"timestamp":651390829463,"duration":11092,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/compare-states.js"},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":294,"name":"next-swc-transform","id":295,"timestamp":651390829837,"duration":10744,"tags":{},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":286,"name":"next-swc-loader","id":294,"timestamp":651390829823,"duration":10761,"tags":{},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":153,"name":"build-module-js","id":286,"timestamp":651390829667,"duration":11331,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js"},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":292,"name":"next-swc-transform","id":293,"timestamp":651390829821,"duration":11194,"tags":{},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":285,"name":"next-swc-loader","id":292,"timestamp":651390829807,"duration":11211,"tags":{},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":168,"name":"build-module-js","id":285,"timestamp":651390829623,"duration":12191,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/request-idle-callback.js"},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":296,"name":"next-swc-transform","id":297,"timestamp":651390829852,"duration":16255,"tags":{},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":287,"name":"next-swc-loader","id":296,"timestamp":651390829839,"duration":16278,"tags":{},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":153,"name":"build-module-js","id":287,"timestamp":651390829708,"duration":20002,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/page-path/denormalize-page-path.js"},"startTime":1661159357779},{"traceId":"11edd18d86c7356d","parentId":301,"name":"next-swc-transform","id":302,"timestamp":651390832578,"duration":17184,"tags":{},"startTime":1661159357782},{"traceId":"11edd18d86c7356d","parentId":298,"name":"next-swc-loader","id":301,"timestamp":651390832529,"duration":17237,"tags":{},"startTime":1661159357782},{"traceId":"11edd18d86c7356d","parentId":169,"name":"build-module-js","id":298,"timestamp":651390830657,"duration":20196,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/side-effect.js"},"startTime":1661159357780},{"traceId":"11edd18d86c7356d","parentId":303,"name":"read-resource","id":304,"timestamp":651390856794,"duration":197,"tags":{},"startTime":1661159357806},{"traceId":"11edd18d86c7356d","parentId":162,"name":"build-module-js","id":303,"timestamp":651390856718,"duration":3209,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_instanceof.js"},"startTime":1661159357806},{"traceId":"11edd18d86c7356d","parentId":307,"name":"read-resource","id":308,"timestamp":651390856960,"duration":2991,"tags":{},"startTime":1661159357807},{"traceId":"11edd18d86c7356d","parentId":168,"name":"build-module-js","id":307,"timestamp":651390856936,"duration":3613,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_object_without_properties_loose.js"},"startTime":1661159357807},{"traceId":"11edd18d86c7356d","parentId":309,"name":"read-resource","id":310,"timestamp":651390856988,"duration":3571,"tags":{},"startTime":1661159357807},{"traceId":"11edd18d86c7356d","parentId":132,"name":"build-module-js","id":309,"timestamp":651390856966,"duration":4013,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/client.js"},"startTime":1661159357807},{"traceId":"11edd18d86c7356d","parentId":311,"name":"next-swc-transform","id":312,"timestamp":651390861052,"duration":1122,"tags":{},"startTime":1661159357811},{"traceId":"11edd18d86c7356d","parentId":305,"name":"next-swc-loader","id":311,"timestamp":651390861000,"duration":1180,"tags":{},"startTime":1661159357811},{"traceId":"11edd18d86c7356d","parentId":169,"name":"build-module-js","id":305,"timestamp":651390856803,"duration":5855,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/amp-context.js"},"startTime":1661159357806},{"traceId":"11edd18d86c7356d","parentId":313,"name":"next-swc-transform","id":314,"timestamp":651390861079,"duration":1599,"tags":{},"startTime":1661159357811},{"traceId":"11edd18d86c7356d","parentId":306,"name":"next-swc-loader","id":313,"timestamp":651390861060,"duration":1622,"tags":{},"startTime":1661159357811},{"traceId":"11edd18d86c7356d","parentId":169,"name":"build-module-js","id":306,"timestamp":651390856881,"duration":6226,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/amp-mode.js"},"startTime":1661159357806},{"traceId":"11edd18d86c7356d","parentId":315,"name":"read-resource","id":316,"timestamp":651390864795,"duration":43,"tags":{},"startTime":1661159357814}] -[{"traceId":"11edd18d86c7356d","parentId":207,"name":"build-module-js","id":315,"timestamp":651390864738,"duration":670,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_set_prototype_of.js"},"startTime":1661159357814},{"traceId":"11edd18d86c7356d","parentId":317,"name":"read-resource","id":318,"timestamp":651390864834,"duration":588,"tags":{},"startTime":1661159357814},{"traceId":"11edd18d86c7356d","parentId":209,"name":"build-module-js","id":317,"timestamp":651390864803,"duration":932,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_array_without_holes.js"},"startTime":1661159357814},{"traceId":"11edd18d86c7356d","parentId":319,"name":"read-resource","id":320,"timestamp":651390866279,"duration":266,"tags":{},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":209,"name":"build-module-js","id":319,"timestamp":651390866241,"duration":597,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_non_iterable_spread.js"},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":321,"name":"read-resource","id":322,"timestamp":651390866317,"duration":533,"tags":{},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":209,"name":"build-module-js","id":321,"timestamp":651390866290,"duration":823,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_iterable_to_array.js"},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":324,"name":"read-resource","id":325,"timestamp":651390866427,"duration":694,"tags":{},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":209,"name":"build-module-js","id":324,"timestamp":651390866397,"duration":1729,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_unsupported_iterable_to_array.js"},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":326,"name":"read-resource","id":327,"timestamp":651390866462,"duration":1673,"tags":{},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":221,"name":"build-module-js","id":326,"timestamp":651390866437,"duration":2012,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_is_native_reflect_construct.js"},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":328,"name":"read-resource","id":329,"timestamp":651390866489,"duration":1966,"tags":{},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":221,"name":"build-module-js","id":328,"timestamp":651390866470,"duration":2248,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_get_prototype_of.js"},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":330,"name":"read-resource","id":331,"timestamp":651390866515,"duration":2211,"tags":{},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":221,"name":"build-module-js","id":330,"timestamp":651390866494,"duration":2605,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_possible_constructor_return.js"},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":332,"name":"read-resource","id":333,"timestamp":651390866541,"duration":2566,"tags":{},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":225,"name":"build-module-js","id":332,"timestamp":651390866520,"duration":2777,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_array_with_holes.js"},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":334,"name":"next-swc-transform","id":335,"timestamp":651390869365,"duration":3703,"tags":{},"startTime":1661159357819},{"traceId":"11edd18d86c7356d","parentId":323,"name":"next-swc-loader","id":334,"timestamp":651390869336,"duration":3743,"tags":{},"startTime":1661159357819},{"traceId":"11edd18d86c7356d","parentId":188,"name":"build-module-js","id":323,"timestamp":651390866326,"duration":10005,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/image-config.js"},"startTime":1661159357816},{"traceId":"11edd18d86c7356d","parentId":336,"name":"read-resource","id":337,"timestamp":651390880205,"duration":336,"tags":{},"startTime":1661159357830},{"traceId":"11edd18d86c7356d","parentId":225,"name":"build-module-js","id":336,"timestamp":651390880136,"duration":1323,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_non_iterable_rest.js"},"startTime":1661159357830},{"traceId":"11edd18d86c7356d","parentId":338,"name":"read-resource","id":339,"timestamp":651390880252,"duration":1225,"tags":{},"startTime":1661159357830},{"traceId":"11edd18d86c7356d","parentId":164,"name":"build-module-js","id":338,"timestamp":651390880213,"duration":10217,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/compiled/web-vitals/web-vitals.umd.js"},"startTime":1661159357830},{"traceId":"11edd18d86c7356d","parentId":343,"name":"next-swc-transform","id":344,"timestamp":651390890805,"duration":2740,"tags":{},"startTime":1661159357840},{"traceId":"11edd18d86c7356d","parentId":340,"name":"next-swc-loader","id":343,"timestamp":651390890751,"duration":2806,"tags":{},"startTime":1661159357840},{"traceId":"11edd18d86c7356d","parentId":232,"name":"build-module-js","id":340,"timestamp":651390880258,"duration":15267,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js"},"startTime":1661159357830},{"traceId":"11edd18d86c7356d","parentId":345,"name":"next-swc-transform","id":346,"timestamp":651390890835,"duration":4736,"tags":{},"startTime":1661159357840},{"traceId":"11edd18d86c7356d","parentId":341,"name":"next-swc-loader","id":345,"timestamp":651390890816,"duration":4759,"tags":{},"startTime":1661159357840},{"traceId":"11edd18d86c7356d","parentId":244,"name":"build-module-js","id":341,"timestamp":651390880336,"duration":16006,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/trusted-types.js"},"startTime":1661159357830},{"traceId":"11edd18d86c7356d","parentId":349,"name":"read-resource","id":350,"timestamp":651390898117,"duration":57,"tags":{},"startTime":1661159357848},{"traceId":"11edd18d86c7356d","parentId":234,"name":"build-module-js","id":349,"timestamp":651390898046,"duration":5055,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/react@18.2.0/node_modules/react/cjs/react.production.min.js"},"startTime":1661159357848},{"traceId":"11edd18d86c7356d","parentId":351,"name":"read-resource","id":352,"timestamp":651390898155,"duration":4963,"tags":{},"startTime":1661159357848},{"traceId":"11edd18d86c7356d","parentId":236,"name":"build-module-js","id":351,"timestamp":651390898127,"duration":5672,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/react@18.2.0/node_modules/react/cjs/react-jsx-runtime.production.min.js"},"startTime":1661159357848},{"traceId":"11edd18d86c7356d","parentId":347,"name":"next-swc-transform","id":348,"timestamp":651390890968,"duration":16174,"tags":{},"startTime":1661159357841},{"traceId":"11edd18d86c7356d","parentId":342,"name":"next-swc-loader","id":347,"timestamp":651390890838,"duration":16314,"tags":{},"startTime":1661159357840},{"traceId":"11edd18d86c7356d","parentId":258,"name":"build-module-js","id":342,"timestamp":651390880382,"duration":30338,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/escape-regexp.js"},"startTime":1661159357830},{"traceId":"11edd18d86c7356d","parentId":108,"name":"add-entry","id":114,"timestamp":651390395723,"duration":517373,"tags":{"request":"next-client-pages-loader?absolutePagePath=private-next-pages%2Findex.js&page=%2F!"},"startTime":1661159357345},{"traceId":"11edd18d86c7356d","parentId":108,"name":"add-entry","id":115,"timestamp":651390395728,"duration":517386,"tags":{"request":"next-client-pages-loader?absolutePagePath=private-next-pages%2F%5B...slug%5D.js&page=%2F%5B...slug%5D!"},"startTime":1661159357345},{"traceId":"11edd18d86c7356d","parentId":358,"name":"read-resource","id":359,"timestamp":651390914897,"duration":81,"tags":{},"startTime":1661159357865},{"traceId":"11edd18d86c7356d","parentId":299,"name":"build-module-js","id":358,"timestamp":651390914867,"duration":843,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_is_native_function.js"},"startTime":1661159357864},{"traceId":"11edd18d86c7356d","parentId":360,"name":"read-resource","id":361,"timestamp":651390914931,"duration":794,"tags":{},"startTime":1661159357865},{"traceId":"11edd18d86c7356d","parentId":229,"name":"build-module-js","id":360,"timestamp":651390914904,"duration":1665,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/index.js"},"startTime":1661159357865},{"traceId":"11edd18d86c7356d","parentId":354,"name":"next-swc-transform","id":355,"timestamp":651390913745,"duration":3422,"tags":{},"startTime":1661159357863},{"traceId":"11edd18d86c7356d","parentId":353,"name":"next-swc-loader","id":354,"timestamp":651390913593,"duration":3578,"tags":{},"startTime":1661159357863},{"traceId":"11edd18d86c7356d","parentId":275,"name":"build-module-js","id":353,"timestamp":651390913327,"duration":4351,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js"},"startTime":1661159357863},{"traceId":"11edd18d86c7356d","parentId":369,"name":"read-resource","id":370,"timestamp":651390918064,"duration":55,"tags":{},"startTime":1661159357868},{"traceId":"11edd18d86c7356d","parentId":317,"name":"build-module-js","id":369,"timestamp":651390918015,"duration":583,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_array_like_to_array.js"},"startTime":1661159357868},{"traceId":"11edd18d86c7356d","parentId":371,"name":"read-resource","id":372,"timestamp":651390918106,"duration":501,"tags":{},"startTime":1661159357868},{"traceId":"11edd18d86c7356d","parentId":330,"name":"build-module-js","id":371,"timestamp":651390918076,"duration":769,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_assert_this_initialized.js"},"startTime":1661159357868},{"traceId":"11edd18d86c7356d","parentId":365,"name":"next-swc-transform","id":366,"timestamp":651390916703,"duration":2390,"tags":{},"startTime":1661159357866},{"traceId":"11edd18d86c7356d","parentId":357,"name":"next-swc-loader","id":365,"timestamp":651390916682,"duration":2416,"tags":{},"startTime":1661159357866},{"traceId":"11edd18d86c7356d","parentId":276,"name":"build-module-js","id":357,"timestamp":651390914812,"duration":4642,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js"},"startTime":1661159357864},{"traceId":"11edd18d86c7356d","parentId":363,"name":"next-swc-transform","id":364,"timestamp":651390916678,"duration":2795,"tags":{},"startTime":1661159357866},{"traceId":"11edd18d86c7356d","parentId":356,"name":"next-swc-loader","id":363,"timestamp":651390916629,"duration":2847,"tags":{},"startTime":1661159357866},{"traceId":"11edd18d86c7356d","parentId":276,"name":"build-module-js","id":356,"timestamp":651390914726,"duration":5173,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/add-locale.js"},"startTime":1661159357864},{"traceId":"11edd18d86c7356d","parentId":367,"name":"next-swc-transform","id":368,"timestamp":651390916726,"duration":3188,"tags":{},"startTime":1661159357866},{"traceId":"11edd18d86c7356d","parentId":362,"name":"next-swc-loader","id":367,"timestamp":651390916706,"duration":3212,"tags":{},"startTime":1661159357866},{"traceId":"11edd18d86c7356d","parentId":287,"name":"build-module-js","id":362,"timestamp":651390914937,"duration":5214,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/page-path/normalize-path-sep.js"},"startTime":1661159357865},{"traceId":"11edd18d86c7356d","parentId":373,"name":"read-resource","id":374,"timestamp":651390920744,"duration":92,"tags":{},"startTime":1661159357870},{"traceId":"11edd18d86c7356d","parentId":330,"name":"build-module-js","id":373,"timestamp":651390920694,"duration":452,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/@swc+helpers@0.4.3/node_modules/@swc/helpers/lib/_type_of.js"},"startTime":1661159357870},{"traceId":"11edd18d86c7356d","parentId":108,"name":"add-entry","id":113,"timestamp":651390395718,"duration":525662,"tags":{"request":"next-client-pages-loader?absolutePagePath=next%2Fdist%2Fpages%2F_error&page=%2F_error!"},"startTime":1661159357345},{"traceId":"11edd18d86c7356d","parentId":108,"name":"add-entry","id":111,"timestamp":651390395679,"duration":525712,"tags":{"request":"next-client-pages-loader?absolutePagePath=next%2Fdist%2Fpages%2F_app&page=%2F_app!"},"startTime":1661159357345},{"traceId":"11edd18d86c7356d","parentId":378,"name":"read-resource","id":379,"timestamp":651390922451,"duration":8,"tags":{},"startTime":1661159357872},{"traceId":"11edd18d86c7356d","parentId":360,"name":"build-module-js","id":378,"timestamp":651390922390,"duration":211846,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/react-dom@18.2.0_react@18.2.0/node_modules/react-dom/cjs/react-dom.production.min.js"},"startTime":1661159357872},{"traceId":"11edd18d86c7356d","parentId":376,"name":"next-swc-transform","id":377,"timestamp":651390921195,"duration":213626,"tags":{},"startTime":1661159357871},{"traceId":"11edd18d86c7356d","parentId":375,"name":"next-swc-loader","id":376,"timestamp":651390921160,"duration":213669,"tags":{},"startTime":1661159357871},{"traceId":"11edd18d86c7356d","parentId":287,"name":"build-module-js","id":375,"timestamp":651390920754,"duration":220584,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/index.js"},"startTime":1661159357870},{"traceId":"11edd18d86c7356d","parentId":381,"name":"next-swc-transform","id":382,"timestamp":651391152492,"duration":3105,"tags":{},"startTime":1661159358102},{"traceId":"11edd18d86c7356d","parentId":380,"name":"next-swc-loader","id":381,"timestamp":651391152361,"duration":3247,"tags":{},"startTime":1661159358102},{"traceId":"11edd18d86c7356d","parentId":375,"name":"build-module-js","id":380,"timestamp":651391152098,"duration":12809,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/shared/lib/router/utils/sorted-routes.js"},"startTime":1661159358102},{"traceId":"11edd18d86c7356d","parentId":108,"name":"add-entry","id":112,"timestamp":651390395704,"duration":771877,"tags":{"request":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/router.js"},"startTime":1661159357345},{"traceId":"11edd18d86c7356d","parentId":383,"name":"read-resource","id":384,"timestamp":651391179461,"duration":329,"tags":{},"startTime":1661159358129},{"traceId":"11edd18d86c7356d","parentId":378,"name":"build-module-js","id":383,"timestamp":651391179356,"duration":11998,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/scheduler@0.23.0/node_modules/scheduler/index.js"},"startTime":1661159358129},{"traceId":"11edd18d86c7356d","parentId":385,"name":"read-resource","id":386,"timestamp":651391200683,"duration":8,"tags":{},"startTime":1661159358150},{"traceId":"11edd18d86c7356d","parentId":383,"name":"build-module-js","id":385,"timestamp":651391200599,"duration":19912,"tags":{"name":"/private/var/folders/jm/n3311p411n5341x4p1wfj7z80000gn/T/next-install-94dad81083562aa594311b1018cff4cbf9b588b8efb7adee7100ba2467ddc828/node_modules/.pnpm/scheduler@0.23.0/node_modules/scheduler/cjs/scheduler.production.min.js"},"startTime":1661159358150},{"traceId":"11edd18d86c7356d","parentId":108,"name":"add-entry","id":110,"timestamp":651390395333,"duration":825486,"tags":{"request":"./node_modules/.pnpm/file+..+next-repo-2e26f9f5203307987fc0c14bd56abd3b_ewy24ce3ifgu5ecyx3nj6t4enm/node_modules/next/dist/client/next.js"},"startTime":1661159357345},{"traceId":"11edd18d86c7356d","parentId":16,"name":"make","id":109,"timestamp":651390395142,"duration":825742,"tags":{},"startTime":1661159357345},{"traceId":"11edd18d86c7356d","parentId":108,"name":"webpack-compilation-chunk-graph","id":388,"timestamp":651391227547,"duration":1851,"tags":{},"startTime":1661159358177},{"traceId":"11edd18d86c7356d","parentId":108,"name":"webpack-compilation-optimize-modules","id":390,"timestamp":651391229434,"duration":9,"tags":{},"startTime":1661159358179},{"traceId":"11edd18d86c7356d","parentId":108,"name":"webpack-compilation-optimize-chunks","id":391,"timestamp":651391229471,"duration":2073,"tags":{},"startTime":1661159358179},{"traceId":"11edd18d86c7356d","parentId":108,"name":"webpack-compilation-optimize-tree","id":392,"timestamp":651391231571,"duration":8,"tags":{},"startTime":1661159358181},{"traceId":"11edd18d86c7356d","parentId":108,"name":"webpack-compilation-optimize","id":389,"timestamp":651391229419,"duration":2431,"tags":{},"startTime":1661159358179},{"traceId":"11edd18d86c7356d","parentId":108,"name":"webpack-compilation-hash","id":393,"timestamp":651391245813,"duration":4368,"tags":{},"startTime":1661159358195},{"traceId":"11edd18d86c7356d","parentId":108,"name":"NextJsBuildManifest-generateClientManifest","id":395,"timestamp":651391259425,"duration":874,"tags":{},"startTime":1661159358209},{"traceId":"11edd18d86c7356d","parentId":108,"name":"NextJsBuildManifest-createassets","id":394,"timestamp":651391258786,"duration":1531,"tags":{},"startTime":1661159358208},{"traceId":"11edd18d86c7356d","parentId":396,"name":"minify-js","id":405,"timestamp":651391337684,"duration":61570,"tags":{"name":"static/HI5A5T4pDZ4S2R-1PhLix/_ssgManifest.js","cache":"MISS"},"startTime":1661159358287},{"traceId":"11edd18d86c7356d","parentId":396,"name":"minify-js","id":404,"timestamp":651391337525,"duration":66453,"tags":{"name":"server/middleware-react-loadable-manifest.js","cache":"MISS"},"startTime":1661159358287},{"traceId":"11edd18d86c7356d","parentId":396,"name":"minify-js","id":406,"timestamp":651391399272,"duration":14601,"tags":{"name":"server/middleware-build-manifest.js","cache":"MISS"},"startTime":1661159358349},{"traceId":"11edd18d86c7356d","parentId":396,"name":"minify-js","id":407,"timestamp":651391403991,"duration":14034,"tags":{"name":"static/HI5A5T4pDZ4S2R-1PhLix/_buildManifest.js","cache":"MISS"},"startTime":1661159358354},{"traceId":"11edd18d86c7356d","parentId":396,"name":"minify-js","id":398,"timestamp":651391334155,"duration":86794,"tags":{"name":"static/chunks/pages/_app-dd302804fdb23413.js","cache":"MISS"},"startTime":1661159358284},{"traceId":"11edd18d86c7356d","parentId":396,"name":"minify-js","id":399,"timestamp":651391335356,"duration":87091,"tags":{"name":"static/chunks/pages/_error-6e3041c8fbe42652.js","cache":"MISS"},"startTime":1661159358285},{"traceId":"11edd18d86c7356d","parentId":396,"name":"minify-js","id":400,"timestamp":651391335450,"duration":95714,"tags":{"name":"static/chunks/pages/index-fd9d68c5150dc0c1.js","cache":"MISS"},"startTime":1661159358285},{"traceId":"11edd18d86c7356d","parentId":396,"name":"minify-js","id":401,"timestamp":651391336029,"duration":98971,"tags":{"name":"static/chunks/pages/[...slug]-26f7f8bec4b4e563.js","cache":"MISS"},"startTime":1661159358286},{"traceId":"11edd18d86c7356d","parentId":396,"name":"minify-js","id":402,"timestamp":651391336188,"duration":137894,"tags":{"name":"static/chunks/webpack-39737c6ff83bb98b.js","cache":"MISS"},"startTime":1661159358286},{"traceId":"11edd18d86c7356d","parentId":396,"name":"minify-js","id":397,"timestamp":651391265620,"duration":1783873,"tags":{"name":"static/chunks/main-3bb7c29487275092.js","cache":"MISS"},"startTime":1661159358215},{"traceId":"11edd18d86c7356d","parentId":396,"name":"minify-js","id":403,"timestamp":651391336773,"duration":2034624,"tags":{"name":"static/chunks/framework-30d8edb05e8f385d.js","cache":"MISS"},"startTime":1661159358286},{"traceId":"11edd18d86c7356d","parentId":108,"name":"terser-webpack-plugin-optimize","id":396,"timestamp":651391260544,"duration":2129777,"tags":{"compilationName":"client","swcMinify":"false"},"startTime":1661159358210},{"traceId":"11edd18d86c7356d","parentId":108,"name":"css-minimizer-plugin","id":408,"timestamp":651393390502,"duration":360,"tags":{"webpackVersion":"5"},"startTime":1661159360340},{"traceId":"11edd18d86c7356d","parentId":108,"name":"webpack-compilation-seal","id":387,"timestamp":651391224689,"duration":2170326,"tags":{},"startTime":1661159358174},{"traceId":"11edd18d86c7356d","parentId":16,"name":"webpack-compilation","id":108,"timestamp":651390393870,"duration":3001231,"tags":{"name":"client"},"startTime":1661159357343}] -[{"traceId":"11edd18d86c7356d","parentId":16,"name":"emit","id":409,"timestamp":651393395715,"duration":4042,"tags":{},"startTime":1661159360345},{"traceId":"11edd18d86c7356d","parentId":16,"name":"webpack-close","id":410,"timestamp":651393399939,"duration":367300,"tags":{"name":"client"},"startTime":1661159360350},{"traceId":"11edd18d86c7356d","parentId":410,"name":"webpack-generate-error-stats","id":411,"timestamp":651393767259,"duration":792,"tags":{},"startTime":1661159360717},{"traceId":"11edd18d86c7356d","parentId":1,"name":"run-webpack-compiler","id":16,"timestamp":651388856571,"duration":4911503,"tags":{},"startTime":1661159355806},{"traceId":"11edd18d86c7356d","parentId":1,"name":"format-webpack-messages","id":412,"timestamp":651393768079,"duration":166,"tags":{},"startTime":1661159360718},{"traceId":"11edd18d86c7356d","parentId":413,"name":"check-static-error-page","id":414,"timestamp":651393944335,"duration":2523,"tags":{},"startTime":1661159360894},{"traceId":"11edd18d86c7356d","parentId":413,"name":"check-static-error-page","id":414,"timestamp":651393944335,"duration":2563,"tags":{},"startTime":1661159360894},{"traceId":"11edd18d86c7356d","parentId":413,"name":"check-page","id":415,"timestamp":651393959405,"duration":1727,"tags":{"page":"/_app"},"startTime":1661159360909},{"traceId":"11edd18d86c7356d","parentId":413,"name":"check-page","id":417,"timestamp":651393960527,"duration":625,"tags":{"page":"/_document"},"startTime":1661159360910},{"traceId":"11edd18d86c7356d","parentId":413,"name":"check-page","id":416,"timestamp":651393960075,"duration":1305,"tags":{"page":"/_error"},"startTime":1661159360910},{"traceId":"11edd18d86c7356d","parentId":419,"name":"is-page-static","id":420,"timestamp":651393961804,"duration":161213,"tags":{},"startTime":1661159360911},{"traceId":"11edd18d86c7356d","parentId":413,"name":"check-page","id":419,"timestamp":651393960612,"duration":162432,"tags":{"page":"/"},"startTime":1661159360910},{"traceId":"11edd18d86c7356d","parentId":418,"name":"is-page-static","id":421,"timestamp":651393962306,"duration":161236,"tags":{},"startTime":1661159360912},{"traceId":"11edd18d86c7356d","parentId":413,"name":"check-page","id":418,"timestamp":651393960567,"duration":162996,"tags":{"page":"/[...slug]"},"startTime":1661159360910},{"traceId":"11edd18d86c7356d","parentId":1,"name":"static-check","id":413,"timestamp":651393943938,"duration":179672,"tags":{},"startTime":1661159360894},{"traceId":"11edd18d86c7356d","parentId":422,"name":"include-exclude","id":423,"timestamp":651394125243,"duration":196,"tags":{"page":"/_app"},"startTime":1661159361075},{"traceId":"11edd18d86c7356d","parentId":422,"name":"include-exclude","id":424,"timestamp":651394125454,"duration":13,"tags":{"page":"/_error"},"startTime":1661159361075},{"traceId":"11edd18d86c7356d","parentId":422,"name":"include-exclude","id":425,"timestamp":651394125472,"duration":10,"tags":{"page":"/_document"},"startTime":1661159361075},{"traceId":"11edd18d86c7356d","parentId":422,"name":"include-exclude","id":426,"timestamp":651394125491,"duration":10,"tags":{"page":"/[...slug]"},"startTime":1661159361075},{"traceId":"11edd18d86c7356d","parentId":422,"name":"include-exclude","id":427,"timestamp":651394125505,"duration":11,"tags":{"page":"/"},"startTime":1661159361075},{"traceId":"11edd18d86c7356d","parentId":1,"name":"apply-include-excludes","id":422,"timestamp":651394124900,"duration":619,"tags":{},"startTime":1661159361075},{"traceId":"11edd18d86c7356d","parentId":1,"name":"trace-next-server","id":428,"timestamp":651394125522,"duration":3920925,"tags":{},"startTime":1661159361075},{"traceId":"11edd18d86c7356d","parentId":430,"name":"load-dotenv","id":431,"timestamp":651398056508,"duration":103,"tags":{},"startTime":1661159365006},{"traceId":"11edd18d86c7356d","parentId":430,"name":"run-export-path-map","id":432,"timestamp":651398057871,"duration":227,"tags":{},"startTime":1661159365007},{"traceId":"11edd18d86c7356d","parentId":430,"name":"export-page","id":433,"timestamp":651398058412,"duration":181854,"tags":{"path":"/"},"startTime":1661159365008},{"traceId":"11edd18d86c7356d","parentId":430,"name":"export-page","id":434,"timestamp":651398058606,"duration":182718,"tags":{"path":"/first"},"startTime":1661159365008},{"traceId":"11edd18d86c7356d","parentId":430,"name":"export-page","id":435,"timestamp":651398058723,"duration":182682,"tags":{"path":"/404"},"startTime":1661159365008},{"traceId":"11edd18d86c7356d","parentId":430,"name":"export-page","id":436,"timestamp":651398058764,"duration":182692,"tags":{"path":"/500"},"startTime":1661159365008},{"traceId":"11edd18d86c7356d","parentId":1,"name":"next-export","id":430,"timestamp":651398056012,"duration":334596,"tags":{},"startTime":1661159365006},{"traceId":"11edd18d86c7356d","parentId":429,"name":"move-exported-page","id":437,"timestamp":651398391506,"duration":539,"tags":{},"startTime":1661159365341},{"traceId":"11edd18d86c7356d","parentId":429,"name":"move-exported-page","id":438,"timestamp":651398392063,"duration":270,"tags":{},"startTime":1661159365342},{"traceId":"11edd18d86c7356d","parentId":429,"name":"move-exported-page","id":439,"timestamp":651398392403,"duration":235,"tags":{},"startTime":1661159365342},{"traceId":"11edd18d86c7356d","parentId":429,"name":"move-exported-page","id":440,"timestamp":651398392729,"duration":230,"tags":{},"startTime":1661159365342},{"traceId":"11edd18d86c7356d","parentId":429,"name":"move-exported-page","id":441,"timestamp":651398392970,"duration":243,"tags":{},"startTime":1661159365343},{"traceId":"11edd18d86c7356d","parentId":1,"name":"static-generation","id":429,"timestamp":651398051417,"duration":343188,"tags":{},"startTime":1661159365001},{"traceId":"11edd18d86c7356d","parentId":1,"name":"print-tree-view","id":442,"timestamp":651398400061,"duration":19738,"tags":{},"startTime":1661159365350},{"traceId":"11edd18d86c7356d","parentId":1,"name":"telemetry-flush","id":443,"timestamp":651398419817,"duration":274571,"tags":{},"startTime":1661159365369},{"traceId":"11edd18d86c7356d","name":"next-build","id":1,"timestamp":651385512057,"duration":13182380,"tags":{"version":"12.2.6-canary.0"},"startTime":1661159352462}] From 4fa75c2a28cd5691e1b41f1d6458dd5894539460 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Wed, 7 Sep 2022 17:51:36 -0600 Subject: [PATCH 16/16] fix: corrected incorrect parameter --- packages/next/server/next-server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/next/server/next-server.ts b/packages/next/server/next-server.ts index c428f8753e29c07..723d9fb32a4958d 100644 --- a/packages/next/server/next-server.ts +++ b/packages/next/server/next-server.ts @@ -958,7 +958,7 @@ export default class NextNodeServer extends BaseServer { pathname: pagePath, serverless: !this.renderOpts.dev && this._isLikeServerless, hasServerComponents: !!this.renderOpts.serverComponents, - isAppPath: !!this.nextConfig.experimental.appDir, + isAppPath, }) if (