next 15.5.1-canary.38 → 15.5.1-canary.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/next +1 -1
- package/dist/build/index.js +3 -3
- package/dist/build/swc/index.js +1 -1
- package/dist/build/webpack/loaders/next-metadata-route-loader.js +20 -9
- package/dist/build/webpack/loaders/next-metadata-route-loader.js.map +1 -1
- package/dist/build/webpack-config.js +2 -2
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/index.js +1 -1
- package/dist/compiled/next-server/pages-api-turbo.runtime.prod.js +1 -1
- package/dist/compiled/next-server/pages-api-turbo.runtime.prod.js.map +1 -1
- package/dist/compiled/next-server/pages-turbo.runtime.prod.js +1 -1
- package/dist/compiled/next-server/pages-turbo.runtime.prod.js.map +1 -1
- package/dist/esm/build/index.js +3 -3
- package/dist/esm/build/swc/index.js +1 -1
- package/dist/esm/build/webpack/loaders/next-metadata-route-loader.js +20 -9
- package/dist/esm/build/webpack/loaders/next-metadata-route-loader.js.map +1 -1
- package/dist/esm/build/webpack-config.js +2 -2
- package/dist/esm/client/app-bootstrap.js +1 -1
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/esm/server/lib/app-info-log.js +1 -1
- package/dist/esm/server/lib/start-server.js +1 -1
- package/dist/esm/shared/lib/canary-only.js +1 -1
- package/dist/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/server/lib/app-info-log.js +1 -1
- package/dist/server/lib/start-server.js +1 -1
- package/dist/shared/lib/canary-only.js +1 -1
- package/dist/telemetry/anonymous-meta.js +1 -1
- package/dist/telemetry/events/session-stopped.js +2 -2
- package/dist/telemetry/events/version.js +2 -2
- package/package.json +15 -15
package/dist/bin/next
CHANGED
@@ -79,7 +79,7 @@ const program = new NextRootCommand();
|
|
79
79
|
program.name('next').description('The Next.js CLI allows you to develop, build, start your application, and more.').configureHelp({
|
80
80
|
formatHelp: (cmd, helper)=>(0, _formatclihelpoutput.formatCliHelpOutput)(cmd, helper),
|
81
81
|
subcommandTerm: (cmd)=>`${cmd.name()} ${cmd.usage()}`
|
82
|
-
}).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"15.5.1-canary.
|
82
|
+
}).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"15.5.1-canary.39"}`, '-v, --version', 'Outputs the Next.js version.');
|
83
83
|
program.command('build').description('Creates an optimized production build of your application. The output displays information about each route.').argument('[directory]', `A directory on which to build the application. ${(0, _picocolors.italic)('If no directory is provided, the current directory will be used.')}`).option('-d, --debug', 'Enables a more verbose build output.').option('--debug-prerender', 'Enables debug mode for prerendering. Not for production use!').option('--no-lint', 'Disables linting.').option('--no-mangling', 'Disables mangling.').option('--profile', 'Enables production profiling for React.').option('--experimental-app-only', 'Builds only App Router routes.').option('--turbo', 'Starts development mode using Turbopack.').option('--turbopack', 'Starts development mode using Turbopack.').addOption(new _commander.Option('--experimental-build-mode [mode]', 'Uses an experimental build mode.').choices([
|
84
84
|
'compile',
|
85
85
|
'generate',
|
package/dist/build/index.js
CHANGED
@@ -371,7 +371,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
|
|
371
371
|
const nextBuildSpan = (0, _trace.trace)('next-build', undefined, {
|
372
372
|
buildMode: experimentalBuildMode,
|
373
373
|
isTurboBuild: String(isTurbopack),
|
374
|
-
version: "15.5.1-canary.
|
374
|
+
version: "15.5.1-canary.39"
|
375
375
|
});
|
376
376
|
_buildcontext.NextBuildContext.nextBuildSpan = nextBuildSpan;
|
377
377
|
_buildcontext.NextBuildContext.dir = dir;
|
@@ -850,7 +850,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
|
|
850
850
|
// Files outside of the distDir can be "type": "module"
|
851
851
|
await writeFileUtf8(_path.default.join(distDir, 'package.json'), '{"type": "commonjs"}');
|
852
852
|
// These are written to distDir, so they need to come after creating and cleaning distDr.
|
853
|
-
await (0, _builddiagnostics.recordFrameworkVersion)("15.5.1-canary.
|
853
|
+
await (0, _builddiagnostics.recordFrameworkVersion)("15.5.1-canary.39");
|
854
854
|
await (0, _builddiagnostics.updateBuildDiagnostics)({
|
855
855
|
buildStage: 'start'
|
856
856
|
});
|
@@ -2509,7 +2509,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
|
|
2509
2509
|
distDir,
|
2510
2510
|
config,
|
2511
2511
|
staticPages,
|
2512
|
-
nextVersion: "15.5.1-canary.
|
2512
|
+
nextVersion: "15.5.1-canary.39",
|
2513
2513
|
tracingRoot: outputFileTracingRoot,
|
2514
2514
|
hasNodeMiddleware,
|
2515
2515
|
hasInstrumentationHook,
|
package/dist/build/swc/index.js
CHANGED
@@ -131,7 +131,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
131
131
|
}
|
132
132
|
return newObj;
|
133
133
|
}
|
134
|
-
const nextVersion = "15.5.1-canary.
|
134
|
+
const nextVersion = "15.5.1-canary.39";
|
135
135
|
const ArchName = (0, _os.arch)();
|
136
136
|
const PlatformName = (0, _os.platform)();
|
137
137
|
function infoLog(...args) {
|
@@ -143,12 +143,18 @@ ${errorOnBadHandler(resourcePath)}
|
|
143
143
|
${await createReExportsCode(resourcePath, loaderContext)}
|
144
144
|
|
145
145
|
export async function GET(_, ctx) {
|
146
|
-
const
|
147
|
-
const
|
148
|
-
const
|
146
|
+
const paramsPromise = ctx.params
|
147
|
+
const idPromise = paramsPromise.then(params => params?.__metadata_id__)
|
148
|
+
const restParamsPromise = paramsPromise.then(params => {
|
149
|
+
if (!params) return undefined
|
150
|
+
const { __metadata_id__, ...rest } = params
|
151
|
+
return rest
|
152
|
+
})
|
149
153
|
|
150
154
|
${''}
|
151
155
|
if (process.env.NODE_ENV !== 'production') {
|
156
|
+
const restParams = await restParamsPromise
|
157
|
+
const __metadata_id__ = await idPromise
|
152
158
|
const imageMetadata = await generateImageMetadata({ params: restParams })
|
153
159
|
const id = imageMetadata.find((item) => {
|
154
160
|
if (item?.id == null) {
|
@@ -165,7 +171,7 @@ export async function GET(_, ctx) {
|
|
165
171
|
}
|
166
172
|
}
|
167
173
|
|
168
|
-
return handler({ params:
|
174
|
+
return handler({ params: restParamsPromise, id: idPromise })
|
169
175
|
}
|
170
176
|
|
171
177
|
export const dynamicParams = false
|
@@ -193,7 +199,7 @@ ${errorOnBadHandler(resourcePath)}
|
|
193
199
|
${await createReExportsCode(resourcePath, loaderContext)}
|
194
200
|
|
195
201
|
export async function GET(_, ctx) {
|
196
|
-
return handler({ params:
|
202
|
+
return handler({ params: ctx.params })
|
197
203
|
}
|
198
204
|
`;
|
199
205
|
}
|
@@ -247,10 +253,12 @@ ${errorOnBadHandler(resourcePath)}
|
|
247
253
|
${await createReExportsCode(resourcePath, loaderContext)}
|
248
254
|
|
249
255
|
export async function GET(_, ctx) {
|
250
|
-
const
|
251
|
-
const
|
256
|
+
const paramsPromise = ctx.params
|
257
|
+
const idPromise = paramsPromise.then(params => params?.__metadata_id__)
|
252
258
|
|
253
259
|
if (process.env.NODE_ENV !== 'production') {
|
260
|
+
const id = await idPromise
|
261
|
+
const hasXmlExtension = id ? id.endsWith('.xml') : false
|
254
262
|
const sitemaps = await generateSitemaps()
|
255
263
|
let foundId
|
256
264
|
for (const item of sitemaps) {
|
@@ -270,8 +278,11 @@ export async function GET(_, ctx) {
|
|
270
278
|
}
|
271
279
|
}
|
272
280
|
|
273
|
-
const
|
274
|
-
|
281
|
+
const targetIdPromise = idPromise.then(id => {
|
282
|
+
const hasXmlExtension = id ? id.endsWith('.xml') : false
|
283
|
+
return id && hasXmlExtension ? id.slice(0, -4) : undefined
|
284
|
+
})
|
285
|
+
const data = await handler({ id: targetIdPromise })
|
275
286
|
const content = resolveRouteData(data, fileType)
|
276
287
|
|
277
288
|
return new NextResponse(content, {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/build/webpack/loaders/next-metadata-route-loader.ts"],"sourcesContent":["import type webpack from 'webpack'\nimport fs from 'fs'\nimport path from 'path'\nimport { imageExtMimeTypeMap } from '../../../lib/mime-type'\nimport { getLoaderModuleNamedExports } from './utils'\n\nfunction errorOnBadHandler(resourcePath: string) {\n return `\n if (typeof handler !== 'function') {\n throw new Error('Default export is missing in ${JSON.stringify(\n resourcePath\n )}')\n }\n `\n}\n\n/* re-export the userland route configs */\nasync function createReExportsCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n const exportNames = await getLoaderModuleNamedExports(\n resourcePath,\n loaderContext\n )\n // Re-export configs but avoid conflicted exports\n const reExportNames = exportNames.filter(\n (name) =>\n name !== 'default' &&\n name !== 'generateSitemaps' &&\n name !== 'dynamicParams'\n )\n\n return reExportNames.length > 0\n ? `export { ${reExportNames.join(', ')} } from ${JSON.stringify(\n resourcePath\n )}\\n`\n : ''\n}\n\nconst CACHE_HEADERS = {\n NO_CACHE: 'no-cache, no-store',\n REVALIDATE: 'public, max-age=0, must-revalidate',\n}\n\nexport type MetadataRouteLoaderOptions = {\n // Using separate argument to avoid json being parsed and hit error\n // x-ref: https://github.com/vercel/next.js/pull/62615\n filePath: string\n isDynamicRouteExtension: '1' | '0'\n}\n\nexport function getFilenameAndExtension(resourcePath: string) {\n const filename = path.basename(resourcePath)\n const [name, ext] = filename.split('.', 2)\n return {\n name,\n ext,\n }\n}\n\nfunction getContentType(resourcePath: string) {\n let { name, ext } = getFilenameAndExtension(resourcePath)\n if (ext === 'jpg') ext = 'jpeg'\n\n if (name === 'favicon' && ext === 'ico') return 'image/x-icon'\n if (name === 'sitemap') return 'application/xml'\n if (name === 'robots') return 'text/plain'\n if (name === 'manifest') return 'application/manifest+json'\n\n if (ext === 'png' || ext === 'jpeg' || ext === 'ico' || ext === 'svg') {\n return imageExtMimeTypeMap[ext]\n }\n return 'text/plain'\n}\n\nasync function getStaticAssetRouteCode(\n resourcePath: string,\n fileBaseName: string\n) {\n const cache =\n process.env.NODE_ENV !== 'production'\n ? CACHE_HEADERS.NO_CACHE\n : CACHE_HEADERS.REVALIDATE\n\n const isTwitter = fileBaseName === 'twitter-image'\n const isOpenGraph = fileBaseName === 'opengraph-image'\n // Twitter image file size limit is 5MB.\n // General Open Graph image file size limit is 8MB.\n // x-ref: https://developer.x.com/en/docs/x-for-websites/cards/overview/summary\n // x-ref(facebook): https://developers.facebook.com/docs/sharing/webmasters/images\n const fileSizeLimit = isTwitter ? 5 : 8\n const imgName = isTwitter ? 'Twitter' : 'Open Graph'\n\n const code = `\\\n/* static asset route */\nimport { NextResponse } from 'next/server'\n\nconst contentType = ${JSON.stringify(getContentType(resourcePath))}\nconst buffer = Buffer.from(${JSON.stringify(\n (await fs.promises.readFile(resourcePath)).toString('base64')\n )}, 'base64'\n )\n\nif (${isTwitter || isOpenGraph}) {\n const fileSizeInMB = buffer.byteLength / 1024 / 1024\n if (fileSizeInMB > ${fileSizeLimit}) {\n throw new Error('File size for ${imgName} image ${JSON.stringify(resourcePath)} exceeds ${fileSizeLimit}MB. ' +\n \\`(Current: \\${fileSizeInMB.toFixed(2)}MB)\\n\\` +\n 'Read more: https://nextjs.org/docs/app/api-reference/file-conventions/metadata/opengraph-image#image-files-jpg-png-gif'\n )\n }\n}\n\nexport function GET() {\n return new NextResponse(buffer, {\n headers: {\n 'Content-Type': contentType,\n 'Cache-Control': ${JSON.stringify(cache)},\n },\n })\n}\n\nexport const dynamic = 'force-static'\n`\n return code\n}\n\nasync function getDynamicTextRouteCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n return `\\\n/* dynamic asset route */\nimport { NextResponse } from 'next/server'\nimport handler from ${JSON.stringify(resourcePath)}\nimport { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data'\n\nconst contentType = ${JSON.stringify(getContentType(resourcePath))}\nconst fileType = ${JSON.stringify(getFilenameAndExtension(resourcePath).name)}\n\n${errorOnBadHandler(resourcePath)}\n${await createReExportsCode(resourcePath, loaderContext)}\n\nexport async function GET() {\n const data = await handler()\n const content = resolveRouteData(data, fileType)\n\n return new NextResponse(content, {\n headers: {\n 'Content-Type': contentType,\n 'Cache-Control': ${JSON.stringify(CACHE_HEADERS.REVALIDATE)},\n },\n })\n}\n`\n}\n\nasync function getDynamicImageRouteCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n return `\\\n/* dynamic image route with generateImageMetadata */\nimport { NextResponse } from 'next/server'\nimport { default as handler, generateImageMetadata } from ${JSON.stringify(resourcePath)}\n\n${errorOnBadHandler(resourcePath)}\n${await createReExportsCode(resourcePath, loaderContext)}\n\nexport async function GET(_, ctx) {\n const params = await ctx.params\n const { __metadata_id__, ...rest } = params || {}\n const restParams = params ? rest : undefined\n \n ${/* we need a dev assertion for id since dynamicParams=false won't work well in dev */ ''}\n if (process.env.NODE_ENV !== 'production') {\n const imageMetadata = await generateImageMetadata({ params: restParams })\n const id = imageMetadata.find((item) => {\n if (item?.id == null) {\n throw new Error('id property is required for every item returned from generateImageMetadata')\n }\n\n return item.id.toString() === __metadata_id__\n })?.id\n\n if (id == null) {\n return new NextResponse('Not Found', {\n status: 404,\n })\n }\n }\n\n return handler({ params: restParams, id: __metadata_id__ })\n}\n\nexport const dynamicParams = false\nexport async function generateStaticParams({ params }) {\n const imageMetadata = await generateImageMetadata({ params })\n const staticParams = []\n\n for (const item of imageMetadata) {\n if (item?.id == null) {\n throw new Error('id property is required for every item returned from generateImageMetadata')\n }\n staticParams.push({ __metadata_id__: item.id.toString() })\n }\n return staticParams\n}\n`\n}\n\nasync function getSingleImageRouteCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n return `\\\n/* dynamic image route without generateImageMetadata */\nimport { NextResponse } from 'next/server'\nimport { default as handler } from ${JSON.stringify(resourcePath)}\n\n${errorOnBadHandler(resourcePath)}\n${await createReExportsCode(resourcePath, loaderContext)}\n\nexport async function GET(_, ctx) {\n return handler({ params: await ctx.params })\n}\n`\n}\n\n// <metadata-image>/[id]/route.js\nasync function getImageRouteCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n const exportNames = await getLoaderModuleNamedExports(\n resourcePath,\n loaderContext\n )\n\n const hasGenerateParamsExport = exportNames.includes('generateImageMetadata')\n\n if (hasGenerateParamsExport) {\n return getDynamicImageRouteCode(resourcePath, loaderContext)\n } else {\n return getSingleImageRouteCode(resourcePath, loaderContext)\n }\n}\n\nasync function getSingleSitemapRouteCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n return `\\\n/* single sitemap route */\nimport { NextResponse } from 'next/server'\nimport { default as handler } from ${JSON.stringify(resourcePath)}\nimport { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data'\n\nconst contentType = ${JSON.stringify(getContentType(resourcePath))}\nconst fileType = ${JSON.stringify(getFilenameAndExtension(resourcePath).name)}\n\n${errorOnBadHandler(resourcePath)}\n${await createReExportsCode(resourcePath, loaderContext)}\n\nexport async function GET() {\n const data = await handler()\n const content = resolveRouteData(data, fileType)\n\n return new NextResponse(content, {\n headers: {\n 'Content-Type': contentType,\n 'Cache-Control': ${JSON.stringify(CACHE_HEADERS.REVALIDATE)},\n },\n })\n}\n`\n}\n\nasync function getDynamicSitemapRouteCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n const code = `\\\n/* dynamic sitemap route with generateSitemaps */\nimport { NextResponse } from 'next/server'\nimport { default as handler, generateSitemaps } from ${JSON.stringify(resourcePath)}\nimport { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data'\n\nconst contentType = ${JSON.stringify(getContentType(resourcePath))}\nconst fileType = ${JSON.stringify(getFilenameAndExtension(resourcePath).name)}\n\n${errorOnBadHandler(resourcePath)}\n${await createReExportsCode(resourcePath, loaderContext)}\n\nexport async function GET(_, ctx) {\n const { __metadata_id__: id, ...params } = await ctx.params || {}\n const hasXmlExtension = id ? id.endsWith('.xml') : false\n\n if (process.env.NODE_ENV !== 'production') {\n const sitemaps = await generateSitemaps()\n let foundId\n for (const item of sitemaps) {\n if (item?.id == null) {\n throw new Error('id property is required for every item returned from generateSitemaps')\n }\n \n const baseId = id && hasXmlExtension ? id.slice(0, -4) : undefined\n if (item.id.toString() === baseId) {\n foundId = item.id\n }\n }\n if (foundId == null) {\n return new NextResponse('Not Found', {\n status: 404,\n })\n }\n }\n\n const targetId = id && hasXmlExtension ? id.slice(0, -4) : undefined\n const data = await handler({ id: targetId })\n const content = resolveRouteData(data, fileType)\n\n return new NextResponse(content, {\n headers: {\n 'Content-Type': contentType,\n 'Cache-Control': ${JSON.stringify(CACHE_HEADERS.REVALIDATE)},\n },\n })\n}\n\nexport const dynamicParams = false\nexport async function generateStaticParams() {\n const sitemaps = await generateSitemaps()\n const params = []\n\n for (const item of sitemaps) {\n if (item?.id == null) {\n throw new Error('id property is required for every item returned from generateSitemaps')\n }\n params.push({ __metadata_id__: item.id.toString() + '.xml' })\n }\n return params\n}\n`\n return code\n}\n\n// <metadata-sitemap>/[id]/route.js\nasync function getSitemapRouteCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n const exportNames = await getLoaderModuleNamedExports(\n resourcePath,\n loaderContext\n )\n\n const hasGenerateSitemaps = exportNames.includes('generateSitemaps')\n\n if (hasGenerateSitemaps) {\n return getDynamicSitemapRouteCode(resourcePath, loaderContext)\n } else {\n return getSingleSitemapRouteCode(resourcePath, loaderContext)\n }\n}\n\n// When it's static route, it could be favicon.ico, sitemap.xml, robots.txt etc.\n// TODO-METADATA: improve the cache control strategy\nconst nextMetadataRouterLoader: webpack.LoaderDefinitionFunction<MetadataRouteLoaderOptions> =\n async function () {\n const { isDynamicRouteExtension, filePath } = this.getOptions()\n const { name: fileBaseName } = getFilenameAndExtension(filePath)\n this.addDependency(filePath)\n\n let code = ''\n if (isDynamicRouteExtension === '1') {\n if (fileBaseName === 'robots' || fileBaseName === 'manifest') {\n code = await getDynamicTextRouteCode(filePath, this)\n } else if (fileBaseName === 'sitemap') {\n code = await getSitemapRouteCode(filePath, this)\n } else {\n code = await getImageRouteCode(filePath, this)\n }\n } else {\n code = await getStaticAssetRouteCode(filePath, fileBaseName)\n }\n\n return code\n }\n\nexport default nextMetadataRouterLoader\n"],"names":["getFilenameAndExtension","errorOnBadHandler","resourcePath","JSON","stringify","createReExportsCode","loaderContext","exportNames","getLoaderModuleNamedExports","reExportNames","filter","name","length","join","CACHE_HEADERS","NO_CACHE","REVALIDATE","filename","path","basename","ext","split","getContentType","imageExtMimeTypeMap","getStaticAssetRouteCode","fileBaseName","cache","process","env","NODE_ENV","isTwitter","isOpenGraph","fileSizeLimit","imgName","code","fs","promises","readFile","toString","getDynamicTextRouteCode","getDynamicImageRouteCode","getSingleImageRouteCode","getImageRouteCode","hasGenerateParamsExport","includes","getSingleSitemapRouteCode","getDynamicSitemapRouteCode","getSitemapRouteCode","hasGenerateSitemaps","nextMetadataRouterLoader","isDynamicRouteExtension","filePath","getOptions","addDependency"],"mappings":";;;;;;;;;;;;;;;IAuYA,OAAuC;eAAvC;;IAnVgBA,uBAAuB;eAAvBA;;;2DAnDD;6DACE;0BACmB;uBACQ;;;;;;AAE5C,SAASC,kBAAkBC,YAAoB;IAC7C,OAAO,CAAC;;kDAEwC,EAAEC,KAAKC,SAAS,CAC5DF,cACA;;EAEJ,CAAC;AACH;AAEA,wCAAwC,GACxC,eAAeG,oBACbH,YAAoB,EACpBI,aAAyC;IAEzC,MAAMC,cAAc,MAAMC,IAAAA,kCAA2B,EACnDN,cACAI;IAEF,iDAAiD;IACjD,MAAMG,gBAAgBF,YAAYG,MAAM,CACtC,CAACC,OACCA,SAAS,aACTA,SAAS,sBACTA,SAAS;IAGb,OAAOF,cAAcG,MAAM,GAAG,IAC1B,CAAC,SAAS,EAAEH,cAAcI,IAAI,CAAC,MAAM,QAAQ,EAAEV,KAAKC,SAAS,CAC3DF,cACA,EAAE,CAAC,GACL;AACN;AAEA,MAAMY,gBAAgB;IACpBC,UAAU;IACVC,YAAY;AACd;AASO,SAAShB,wBAAwBE,YAAoB;IAC1D,MAAMe,WAAWC,aAAI,CAACC,QAAQ,CAACjB;IAC/B,MAAM,CAACS,MAAMS,IAAI,GAAGH,SAASI,KAAK,CAAC,KAAK;IACxC,OAAO;QACLV;QACAS;IACF;AACF;AAEA,SAASE,eAAepB,YAAoB;IAC1C,IAAI,EAAES,IAAI,EAAES,GAAG,EAAE,GAAGpB,wBAAwBE;IAC5C,IAAIkB,QAAQ,OAAOA,MAAM;IAEzB,IAAIT,SAAS,aAAaS,QAAQ,OAAO,OAAO;IAChD,IAAIT,SAAS,WAAW,OAAO;IAC/B,IAAIA,SAAS,UAAU,OAAO;IAC9B,IAAIA,SAAS,YAAY,OAAO;IAEhC,IAAIS,QAAQ,SAASA,QAAQ,UAAUA,QAAQ,SAASA,QAAQ,OAAO;QACrE,OAAOG,6BAAmB,CAACH,IAAI;IACjC;IACA,OAAO;AACT;AAEA,eAAeI,wBACbtB,YAAoB,EACpBuB,YAAoB;IAEpB,MAAMC,QACJC,QAAQC,GAAG,CAACC,QAAQ,KAAK,eACrBf,cAAcC,QAAQ,GACtBD,cAAcE,UAAU;IAE9B,MAAMc,YAAYL,iBAAiB;IACnC,MAAMM,cAAcN,iBAAiB;IACrC,wCAAwC;IACxC,mDAAmD;IACnD,+EAA+E;IAC/E,kFAAkF;IAClF,MAAMO,gBAAgBF,YAAY,IAAI;IACtC,MAAMG,UAAUH,YAAY,YAAY;IAExC,MAAMI,OAAO,CAAC;;;;oBAII,EAAE/B,KAAKC,SAAS,CAACkB,eAAepB,eAAe;2BACxC,EAAEC,KAAKC,SAAS,CACvC,AAAC,CAAA,MAAM+B,WAAE,CAACC,QAAQ,CAACC,QAAQ,CAACnC,aAAY,EAAGoC,QAAQ,CAAC,WACpD;;;IAGA,EAAER,aAAaC,YAAY;;qBAEV,EAAEC,cAAc;mCACF,EAAEC,QAAQ,OAAO,EAAE9B,KAAKC,SAAS,CAACF,cAAc,SAAS,EAAE8B,cAAc;;;;;;;;;;;uBAWrF,EAAE7B,KAAKC,SAAS,CAACsB,OAAO;;;;;;AAM/C,CAAC;IACC,OAAOQ;AACT;AAEA,eAAeK,wBACbrC,YAAoB,EACpBI,aAAyC;IAEzC,OAAO,CAAC;;;oBAGU,EAAEH,KAAKC,SAAS,CAACF,cAAc;;;oBAG/B,EAAEC,KAAKC,SAAS,CAACkB,eAAepB,eAAe;iBAClD,EAAEC,KAAKC,SAAS,CAACJ,wBAAwBE,cAAcS,IAAI,EAAE;;AAE9E,EAAEV,kBAAkBC,cAAc;AAClC,EAAE,MAAMG,oBAAoBH,cAAcI,eAAe;;;;;;;;;uBASlC,EAAEH,KAAKC,SAAS,CAACU,cAAcE,UAAU,EAAE;;;;AAIlE,CAAC;AACD;AAEA,eAAewB,yBACbtC,YAAoB,EACpBI,aAAyC;IAEzC,OAAO,CAAC;;;0DAGgD,EAAEH,KAAKC,SAAS,CAACF,cAAc;;AAEzF,EAAED,kBAAkBC,cAAc;AAClC,EAAE,MAAMG,oBAAoBH,cAAcI,eAAe;;;;;;;EAOvD,EAAwF,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkC7F,CAAC;AACD;AAEA,eAAemC,wBACbvC,YAAoB,EACpBI,aAAyC;IAEzC,OAAO,CAAC;;;mCAGyB,EAAEH,KAAKC,SAAS,CAACF,cAAc;;AAElE,EAAED,kBAAkBC,cAAc;AAClC,EAAE,MAAMG,oBAAoBH,cAAcI,eAAe;;;;;AAKzD,CAAC;AACD;AAEA,iCAAiC;AACjC,eAAeoC,kBACbxC,YAAoB,EACpBI,aAAyC;IAEzC,MAAMC,cAAc,MAAMC,IAAAA,kCAA2B,EACnDN,cACAI;IAGF,MAAMqC,0BAA0BpC,YAAYqC,QAAQ,CAAC;IAErD,IAAID,yBAAyB;QAC3B,OAAOH,yBAAyBtC,cAAcI;IAChD,OAAO;QACL,OAAOmC,wBAAwBvC,cAAcI;IAC/C;AACF;AAEA,eAAeuC,0BACb3C,YAAoB,EACpBI,aAAyC;IAEzC,OAAO,CAAC;;;mCAGyB,EAAEH,KAAKC,SAAS,CAACF,cAAc;;;oBAG9C,EAAEC,KAAKC,SAAS,CAACkB,eAAepB,eAAe;iBAClD,EAAEC,KAAKC,SAAS,CAACJ,wBAAwBE,cAAcS,IAAI,EAAE;;AAE9E,EAAEV,kBAAkBC,cAAc;AAClC,EAAE,MAAMG,oBAAoBH,cAAcI,eAAe;;;;;;;;;uBASlC,EAAEH,KAAKC,SAAS,CAACU,cAAcE,UAAU,EAAE;;;;AAIlE,CAAC;AACD;AAEA,eAAe8B,2BACb5C,YAAoB,EACpBI,aAAyC;IAEzC,MAAM4B,OAAO,CAAC;;;qDAGqC,EAAE/B,KAAKC,SAAS,CAACF,cAAc;;;oBAGhE,EAAEC,KAAKC,SAAS,CAACkB,eAAepB,eAAe;iBAClD,EAAEC,KAAKC,SAAS,CAACJ,wBAAwBE,cAAcS,IAAI,EAAE;;AAE9E,EAAEV,kBAAkBC,cAAc;AAClC,EAAE,MAAMG,oBAAoBH,cAAcI,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAiClC,EAAEH,KAAKC,SAAS,CAACU,cAAcE,UAAU,EAAE;;;;;;;;;;;;;;;;;;AAkBlE,CAAC;IACC,OAAOkB;AACT;AAEA,mCAAmC;AACnC,eAAea,oBACb7C,YAAoB,EACpBI,aAAyC;IAEzC,MAAMC,cAAc,MAAMC,IAAAA,kCAA2B,EACnDN,cACAI;IAGF,MAAM0C,sBAAsBzC,YAAYqC,QAAQ,CAAC;IAEjD,IAAII,qBAAqB;QACvB,OAAOF,2BAA2B5C,cAAcI;IAClD,OAAO;QACL,OAAOuC,0BAA0B3C,cAAcI;IACjD;AACF;AAEA,gFAAgF;AAChF,oDAAoD;AACpD,MAAM2C,2BACJ;IACE,MAAM,EAAEC,uBAAuB,EAAEC,QAAQ,EAAE,GAAG,IAAI,CAACC,UAAU;IAC7D,MAAM,EAAEzC,MAAMc,YAAY,EAAE,GAAGzB,wBAAwBmD;IACvD,IAAI,CAACE,aAAa,CAACF;IAEnB,IAAIjB,OAAO;IACX,IAAIgB,4BAA4B,KAAK;QACnC,IAAIzB,iBAAiB,YAAYA,iBAAiB,YAAY;YAC5DS,OAAO,MAAMK,wBAAwBY,UAAU,IAAI;QACrD,OAAO,IAAI1B,iBAAiB,WAAW;YACrCS,OAAO,MAAMa,oBAAoBI,UAAU,IAAI;QACjD,OAAO;YACLjB,OAAO,MAAMQ,kBAAkBS,UAAU,IAAI;QAC/C;IACF,OAAO;QACLjB,OAAO,MAAMV,wBAAwB2B,UAAU1B;IACjD;IAEA,OAAOS;AACT;MAEF,WAAee","ignoreList":[0]}
|
1
|
+
{"version":3,"sources":["../../../../src/build/webpack/loaders/next-metadata-route-loader.ts"],"sourcesContent":["import type webpack from 'webpack'\nimport fs from 'fs'\nimport path from 'path'\nimport { imageExtMimeTypeMap } from '../../../lib/mime-type'\nimport { getLoaderModuleNamedExports } from './utils'\n\nfunction errorOnBadHandler(resourcePath: string) {\n return `\n if (typeof handler !== 'function') {\n throw new Error('Default export is missing in ${JSON.stringify(\n resourcePath\n )}')\n }\n `\n}\n\n/* re-export the userland route configs */\nasync function createReExportsCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n const exportNames = await getLoaderModuleNamedExports(\n resourcePath,\n loaderContext\n )\n // Re-export configs but avoid conflicted exports\n const reExportNames = exportNames.filter(\n (name) =>\n name !== 'default' &&\n name !== 'generateSitemaps' &&\n name !== 'dynamicParams'\n )\n\n return reExportNames.length > 0\n ? `export { ${reExportNames.join(', ')} } from ${JSON.stringify(\n resourcePath\n )}\\n`\n : ''\n}\n\nconst CACHE_HEADERS = {\n NO_CACHE: 'no-cache, no-store',\n REVALIDATE: 'public, max-age=0, must-revalidate',\n}\n\nexport type MetadataRouteLoaderOptions = {\n // Using separate argument to avoid json being parsed and hit error\n // x-ref: https://github.com/vercel/next.js/pull/62615\n filePath: string\n isDynamicRouteExtension: '1' | '0'\n}\n\nexport function getFilenameAndExtension(resourcePath: string) {\n const filename = path.basename(resourcePath)\n const [name, ext] = filename.split('.', 2)\n return {\n name,\n ext,\n }\n}\n\nfunction getContentType(resourcePath: string) {\n let { name, ext } = getFilenameAndExtension(resourcePath)\n if (ext === 'jpg') ext = 'jpeg'\n\n if (name === 'favicon' && ext === 'ico') return 'image/x-icon'\n if (name === 'sitemap') return 'application/xml'\n if (name === 'robots') return 'text/plain'\n if (name === 'manifest') return 'application/manifest+json'\n\n if (ext === 'png' || ext === 'jpeg' || ext === 'ico' || ext === 'svg') {\n return imageExtMimeTypeMap[ext]\n }\n return 'text/plain'\n}\n\nasync function getStaticAssetRouteCode(\n resourcePath: string,\n fileBaseName: string\n) {\n const cache =\n process.env.NODE_ENV !== 'production'\n ? CACHE_HEADERS.NO_CACHE\n : CACHE_HEADERS.REVALIDATE\n\n const isTwitter = fileBaseName === 'twitter-image'\n const isOpenGraph = fileBaseName === 'opengraph-image'\n // Twitter image file size limit is 5MB.\n // General Open Graph image file size limit is 8MB.\n // x-ref: https://developer.x.com/en/docs/x-for-websites/cards/overview/summary\n // x-ref(facebook): https://developers.facebook.com/docs/sharing/webmasters/images\n const fileSizeLimit = isTwitter ? 5 : 8\n const imgName = isTwitter ? 'Twitter' : 'Open Graph'\n\n const code = `\\\n/* static asset route */\nimport { NextResponse } from 'next/server'\n\nconst contentType = ${JSON.stringify(getContentType(resourcePath))}\nconst buffer = Buffer.from(${JSON.stringify(\n (await fs.promises.readFile(resourcePath)).toString('base64')\n )}, 'base64'\n )\n\nif (${isTwitter || isOpenGraph}) {\n const fileSizeInMB = buffer.byteLength / 1024 / 1024\n if (fileSizeInMB > ${fileSizeLimit}) {\n throw new Error('File size for ${imgName} image ${JSON.stringify(resourcePath)} exceeds ${fileSizeLimit}MB. ' +\n \\`(Current: \\${fileSizeInMB.toFixed(2)}MB)\\n\\` +\n 'Read more: https://nextjs.org/docs/app/api-reference/file-conventions/metadata/opengraph-image#image-files-jpg-png-gif'\n )\n }\n}\n\nexport function GET() {\n return new NextResponse(buffer, {\n headers: {\n 'Content-Type': contentType,\n 'Cache-Control': ${JSON.stringify(cache)},\n },\n })\n}\n\nexport const dynamic = 'force-static'\n`\n return code\n}\n\nasync function getDynamicTextRouteCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n return `\\\n/* dynamic asset route */\nimport { NextResponse } from 'next/server'\nimport handler from ${JSON.stringify(resourcePath)}\nimport { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data'\n\nconst contentType = ${JSON.stringify(getContentType(resourcePath))}\nconst fileType = ${JSON.stringify(getFilenameAndExtension(resourcePath).name)}\n\n${errorOnBadHandler(resourcePath)}\n${await createReExportsCode(resourcePath, loaderContext)}\n\nexport async function GET() {\n const data = await handler()\n const content = resolveRouteData(data, fileType)\n\n return new NextResponse(content, {\n headers: {\n 'Content-Type': contentType,\n 'Cache-Control': ${JSON.stringify(CACHE_HEADERS.REVALIDATE)},\n },\n })\n}\n`\n}\n\nasync function getDynamicImageRouteCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n return `\\\n/* dynamic image route with generateImageMetadata */\nimport { NextResponse } from 'next/server'\nimport { default as handler, generateImageMetadata } from ${JSON.stringify(resourcePath)}\n\n${errorOnBadHandler(resourcePath)}\n${await createReExportsCode(resourcePath, loaderContext)}\n\nexport async function GET(_, ctx) {\n const paramsPromise = ctx.params\n const idPromise = paramsPromise.then(params => params?.__metadata_id__)\n const restParamsPromise = paramsPromise.then(params => {\n if (!params) return undefined\n const { __metadata_id__, ...rest } = params\n return rest\n })\n \n ${/* we need a dev assertion for id since dynamicParams=false won't work well in dev */ ''}\n if (process.env.NODE_ENV !== 'production') {\n const restParams = await restParamsPromise\n const __metadata_id__ = await idPromise\n const imageMetadata = await generateImageMetadata({ params: restParams })\n const id = imageMetadata.find((item) => {\n if (item?.id == null) {\n throw new Error('id property is required for every item returned from generateImageMetadata')\n }\n\n return item.id.toString() === __metadata_id__\n })?.id\n\n if (id == null) {\n return new NextResponse('Not Found', {\n status: 404,\n })\n }\n }\n\n return handler({ params: restParamsPromise, id: idPromise })\n}\n\nexport const dynamicParams = false\nexport async function generateStaticParams({ params }) {\n const imageMetadata = await generateImageMetadata({ params })\n const staticParams = []\n\n for (const item of imageMetadata) {\n if (item?.id == null) {\n throw new Error('id property is required for every item returned from generateImageMetadata')\n }\n staticParams.push({ __metadata_id__: item.id.toString() })\n }\n return staticParams\n}\n`\n}\n\nasync function getSingleImageRouteCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n return `\\\n/* dynamic image route without generateImageMetadata */\nimport { NextResponse } from 'next/server'\nimport { default as handler } from ${JSON.stringify(resourcePath)}\n\n${errorOnBadHandler(resourcePath)}\n${await createReExportsCode(resourcePath, loaderContext)}\n\nexport async function GET(_, ctx) {\n return handler({ params: ctx.params })\n}\n`\n}\n\n// <metadata-image>/[id]/route.js\nasync function getImageRouteCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n const exportNames = await getLoaderModuleNamedExports(\n resourcePath,\n loaderContext\n )\n\n const hasGenerateParamsExport = exportNames.includes('generateImageMetadata')\n\n if (hasGenerateParamsExport) {\n return getDynamicImageRouteCode(resourcePath, loaderContext)\n } else {\n return getSingleImageRouteCode(resourcePath, loaderContext)\n }\n}\n\nasync function getSingleSitemapRouteCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n return `\\\n/* single sitemap route */\nimport { NextResponse } from 'next/server'\nimport { default as handler } from ${JSON.stringify(resourcePath)}\nimport { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data'\n\nconst contentType = ${JSON.stringify(getContentType(resourcePath))}\nconst fileType = ${JSON.stringify(getFilenameAndExtension(resourcePath).name)}\n\n${errorOnBadHandler(resourcePath)}\n${await createReExportsCode(resourcePath, loaderContext)}\n\nexport async function GET() {\n const data = await handler()\n const content = resolveRouteData(data, fileType)\n\n return new NextResponse(content, {\n headers: {\n 'Content-Type': contentType,\n 'Cache-Control': ${JSON.stringify(CACHE_HEADERS.REVALIDATE)},\n },\n })\n}\n`\n}\n\nasync function getDynamicSitemapRouteCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n const code = `\\\n/* dynamic sitemap route with generateSitemaps */\nimport { NextResponse } from 'next/server'\nimport { default as handler, generateSitemaps } from ${JSON.stringify(resourcePath)}\nimport { resolveRouteData } from 'next/dist/build/webpack/loaders/metadata/resolve-route-data'\n\nconst contentType = ${JSON.stringify(getContentType(resourcePath))}\nconst fileType = ${JSON.stringify(getFilenameAndExtension(resourcePath).name)}\n\n${errorOnBadHandler(resourcePath)}\n${await createReExportsCode(resourcePath, loaderContext)}\n\nexport async function GET(_, ctx) {\n const paramsPromise = ctx.params\n const idPromise = paramsPromise.then(params => params?.__metadata_id__)\n\n if (process.env.NODE_ENV !== 'production') {\n const id = await idPromise\n const hasXmlExtension = id ? id.endsWith('.xml') : false\n const sitemaps = await generateSitemaps()\n let foundId\n for (const item of sitemaps) {\n if (item?.id == null) {\n throw new Error('id property is required for every item returned from generateSitemaps')\n }\n \n const baseId = id && hasXmlExtension ? id.slice(0, -4) : undefined\n if (item.id.toString() === baseId) {\n foundId = item.id\n }\n }\n if (foundId == null) {\n return new NextResponse('Not Found', {\n status: 404,\n })\n }\n }\n\n const targetIdPromise = idPromise.then(id => {\n const hasXmlExtension = id ? id.endsWith('.xml') : false\n return id && hasXmlExtension ? id.slice(0, -4) : undefined\n })\n const data = await handler({ id: targetIdPromise })\n const content = resolveRouteData(data, fileType)\n\n return new NextResponse(content, {\n headers: {\n 'Content-Type': contentType,\n 'Cache-Control': ${JSON.stringify(CACHE_HEADERS.REVALIDATE)},\n },\n })\n}\n\nexport const dynamicParams = false\nexport async function generateStaticParams() {\n const sitemaps = await generateSitemaps()\n const params = []\n\n for (const item of sitemaps) {\n if (item?.id == null) {\n throw new Error('id property is required for every item returned from generateSitemaps')\n }\n params.push({ __metadata_id__: item.id.toString() + '.xml' })\n }\n return params\n}\n`\n return code\n}\n\n// <metadata-sitemap>/[id]/route.js\nasync function getSitemapRouteCode(\n resourcePath: string,\n loaderContext: webpack.LoaderContext<any>\n) {\n const exportNames = await getLoaderModuleNamedExports(\n resourcePath,\n loaderContext\n )\n\n const hasGenerateSitemaps = exportNames.includes('generateSitemaps')\n\n if (hasGenerateSitemaps) {\n return getDynamicSitemapRouteCode(resourcePath, loaderContext)\n } else {\n return getSingleSitemapRouteCode(resourcePath, loaderContext)\n }\n}\n\n// When it's static route, it could be favicon.ico, sitemap.xml, robots.txt etc.\n// TODO-METADATA: improve the cache control strategy\nconst nextMetadataRouterLoader: webpack.LoaderDefinitionFunction<MetadataRouteLoaderOptions> =\n async function () {\n const { isDynamicRouteExtension, filePath } = this.getOptions()\n const { name: fileBaseName } = getFilenameAndExtension(filePath)\n this.addDependency(filePath)\n\n let code = ''\n if (isDynamicRouteExtension === '1') {\n if (fileBaseName === 'robots' || fileBaseName === 'manifest') {\n code = await getDynamicTextRouteCode(filePath, this)\n } else if (fileBaseName === 'sitemap') {\n code = await getSitemapRouteCode(filePath, this)\n } else {\n code = await getImageRouteCode(filePath, this)\n }\n } else {\n code = await getStaticAssetRouteCode(filePath, fileBaseName)\n }\n\n return code\n }\n\nexport default nextMetadataRouterLoader\n"],"names":["getFilenameAndExtension","errorOnBadHandler","resourcePath","JSON","stringify","createReExportsCode","loaderContext","exportNames","getLoaderModuleNamedExports","reExportNames","filter","name","length","join","CACHE_HEADERS","NO_CACHE","REVALIDATE","filename","path","basename","ext","split","getContentType","imageExtMimeTypeMap","getStaticAssetRouteCode","fileBaseName","cache","process","env","NODE_ENV","isTwitter","isOpenGraph","fileSizeLimit","imgName","code","fs","promises","readFile","toString","getDynamicTextRouteCode","getDynamicImageRouteCode","getSingleImageRouteCode","getImageRouteCode","hasGenerateParamsExport","includes","getSingleSitemapRouteCode","getDynamicSitemapRouteCode","getSitemapRouteCode","hasGenerateSitemaps","nextMetadataRouterLoader","isDynamicRouteExtension","filePath","getOptions","addDependency"],"mappings":"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","ignoreList":[0]}
|
@@ -1711,7 +1711,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
|
|
1711
1711
|
isClient && new _copyfileplugin.CopyFilePlugin({
|
1712
1712
|
// file path to build output of `@next/polyfill-nomodule`
|
1713
1713
|
filePath: require.resolve('./polyfills/polyfill-nomodule'),
|
1714
|
-
cacheKey: "15.5.1-canary.
|
1714
|
+
cacheKey: "15.5.1-canary.39",
|
1715
1715
|
name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
|
1716
1716
|
minimize: false,
|
1717
1717
|
info: {
|
@@ -1895,7 +1895,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
|
|
1895
1895
|
// - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
|
1896
1896
|
// - Next.js version
|
1897
1897
|
// - next.config.js keys that affect compilation
|
1898
|
-
version: `${__dirname}|${"15.5.1-canary.
|
1898
|
+
version: `${__dirname}|${"15.5.1-canary.39"}|${configVars}`,
|
1899
1899
|
cacheDirectory: _path.default.join(distDir, 'cache', 'webpack'),
|
1900
1900
|
// For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
|
1901
1901
|
// So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
|
@@ -15,7 +15,7 @@ Object.defineProperty(exports, "appBootstrap", {
|
|
15
15
|
});
|
16
16
|
const _assetprefix = require("./asset-prefix");
|
17
17
|
const _setattributesfromprops = require("./set-attributes-from-props");
|
18
|
-
const version = "15.5.1-canary.
|
18
|
+
const version = "15.5.1-canary.39";
|
19
19
|
window.next = {
|
20
20
|
version,
|
21
21
|
appDir: true
|
package/dist/client/index.js
CHANGED
@@ -61,7 +61,7 @@ const _hooksclientcontextsharedruntime = require("../shared/lib/hooks-client-con
|
|
61
61
|
const _onrecoverableerror = require("./react-client-callbacks/on-recoverable-error");
|
62
62
|
const _tracer = /*#__PURE__*/ _interop_require_default._(require("./tracing/tracer"));
|
63
63
|
const _isnextroutererror = require("./components/is-next-router-error");
|
64
|
-
const version = "15.5.1-canary.
|
64
|
+
const version = "15.5.1-canary.39";
|
65
65
|
let router;
|
66
66
|
const emitter = (0, _mitt.default)();
|
67
67
|
const looseToArray = (input)=>[].slice.call(input);
|