next 16.3.3 → 16.3.4

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.
Files changed (89) hide show
  1. package/dist/bin/next +2 -2
  2. package/dist/build/index.js +3 -3
  3. package/dist/build/swc/index.js +1 -1
  4. package/dist/build/turbopack-analyze/index.js +1 -1
  5. package/dist/build/turbopack-build/impl.js +1 -1
  6. package/dist/build/webpack/loaders/next-image-loader/blur.js +2 -1
  7. package/dist/build/webpack/loaders/next-image-loader/blur.js.map +1 -1
  8. package/dist/build/webpack-config.js +3 -3
  9. package/dist/bundle-analyzer/404.html +1 -1
  10. package/dist/bundle-analyzer/__next.__PAGE__.txt +1 -1
  11. package/dist/bundle-analyzer/__next._full.txt +1 -1
  12. package/dist/bundle-analyzer/__next._head.txt +1 -1
  13. package/dist/bundle-analyzer/__next._index.txt +1 -1
  14. package/dist/bundle-analyzer/__next._tree.txt +1 -1
  15. package/dist/bundle-analyzer/_not-found/__next._full.txt +1 -1
  16. package/dist/bundle-analyzer/_not-found/__next._head.txt +1 -1
  17. package/dist/bundle-analyzer/_not-found/__next._index.txt +1 -1
  18. package/dist/bundle-analyzer/_not-found/__next._not-found.__PAGE__.txt +1 -1
  19. package/dist/bundle-analyzer/_not-found/__next._not-found.txt +1 -1
  20. package/dist/bundle-analyzer/_not-found/__next._tree.txt +1 -1
  21. package/dist/bundle-analyzer/_not-found.html +1 -1
  22. package/dist/bundle-analyzer/_not-found.txt +1 -1
  23. package/dist/bundle-analyzer/index.html +1 -1
  24. package/dist/bundle-analyzer/index.txt +1 -1
  25. package/dist/cli/next-build.js +1 -1
  26. package/dist/cli/next-post-build.js +1 -1
  27. package/dist/client/app-bootstrap.js +1 -1
  28. package/dist/client/index.js +1 -1
  29. package/dist/client/legacy/image.js +2 -8
  30. package/dist/client/legacy/image.js.map +1 -1
  31. package/dist/compiled/next-server/pages-api-turbo.runtime.prod.js +1 -1
  32. package/dist/compiled/next-server/pages-api-turbo.runtime.prod.js.map +1 -1
  33. package/dist/compiled/next-server/pages-api.runtime.dev.js +1 -1
  34. package/dist/compiled/next-server/pages-api.runtime.dev.js.map +1 -1
  35. package/dist/compiled/next-server/pages-turbo.runtime.prod.js +1 -1
  36. package/dist/compiled/next-server/pages-turbo.runtime.prod.js.map +1 -1
  37. package/dist/compiled/next-server/pages.runtime.dev.js +1 -1
  38. package/dist/compiled/next-server/pages.runtime.dev.js.map +1 -1
  39. package/dist/esm/build/index.js +3 -3
  40. package/dist/esm/build/swc/index.js +1 -1
  41. package/dist/esm/build/turbopack-analyze/index.js +1 -1
  42. package/dist/esm/build/turbopack-build/impl.js +1 -1
  43. package/dist/esm/build/webpack/loaders/next-image-loader/blur.js +2 -1
  44. package/dist/esm/build/webpack/loaders/next-image-loader/blur.js.map +1 -1
  45. package/dist/esm/build/webpack-config.js +3 -3
  46. package/dist/esm/client/app-bootstrap.js +1 -1
  47. package/dist/esm/client/index.js +1 -1
  48. package/dist/esm/client/legacy/image.js +2 -8
  49. package/dist/esm/client/legacy/image.js.map +1 -1
  50. package/dist/esm/lib/patch-incorrect-lockfile.js +3 -3
  51. package/dist/esm/lib/typescript/runTypeScriptCli.js +2 -2
  52. package/dist/esm/lib/typescript/runTypeScriptCli.js.map +1 -1
  53. package/dist/esm/lib/verify-typescript-setup.js +3 -1
  54. package/dist/esm/lib/verify-typescript-setup.js.map +1 -1
  55. package/dist/esm/server/config.js +1 -1
  56. package/dist/esm/server/dev/hot-reloader-turbopack.js +2 -2
  57. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  58. package/dist/esm/server/image-optimizer.js +2 -2
  59. package/dist/esm/server/image-optimizer.js.map +1 -1
  60. package/dist/esm/server/lib/app-info-log.js +1 -1
  61. package/dist/esm/server/lib/start-server.js +1 -1
  62. package/dist/esm/shared/lib/errors/canary-only-config-error.js +1 -1
  63. package/dist/esm/shared/lib/get-img-props.js +2 -8
  64. package/dist/esm/shared/lib/get-img-props.js.map +1 -1
  65. package/dist/experimental/testmode/fetch.js +10 -2
  66. package/dist/experimental/testmode/fetch.js.map +1 -1
  67. package/dist/lib/patch-incorrect-lockfile.js +3 -3
  68. package/dist/lib/typescript/runTypeScriptCli.js +2 -2
  69. package/dist/lib/typescript/runTypeScriptCli.js.map +1 -1
  70. package/dist/lib/verify-typescript-setup.js +3 -1
  71. package/dist/lib/verify-typescript-setup.js.map +1 -1
  72. package/dist/server/config.js +1 -1
  73. package/dist/server/dev/hot-reloader-turbopack.js +2 -2
  74. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  75. package/dist/server/image-optimizer.js +2 -2
  76. package/dist/server/image-optimizer.js.map +1 -1
  77. package/dist/server/lib/app-info-log.js +1 -1
  78. package/dist/server/lib/start-server.js +1 -1
  79. package/dist/shared/lib/errors/canary-only-config-error.js +1 -1
  80. package/dist/shared/lib/get-img-props.js +2 -8
  81. package/dist/shared/lib/get-img-props.js.map +1 -1
  82. package/dist/telemetry/anonymous-meta.js +1 -1
  83. package/dist/telemetry/events/session-stopped.js +2 -2
  84. package/dist/telemetry/events/swc-load-failure.js +1 -1
  85. package/dist/telemetry/events/version.js +2 -2
  86. package/package.json +11 -11
  87. /package/dist/bundle-analyzer/_next/static/{3H_RXABXBUagMrHyvStjP → Dz6lURlWhsYfti5hT8XRr}/_buildManifest.js +0 -0
  88. /package/dist/bundle-analyzer/_next/static/{3H_RXABXBUagMrHyvStjP → Dz6lURlWhsYfti5hT8XRr}/_clientMiddlewareManifest.js +0 -0
  89. /package/dist/bundle-analyzer/_next/static/{3H_RXABXBUagMrHyvStjP → Dz6lURlWhsYfti5hT8XRr}/_ssgManifest.js +0 -0
@@ -404,7 +404,7 @@ export default async function build(dir, experimentalAnalyze = false, reactProdu
404
404
  try {
405
405
  const nextBuildSpan = trace('next-build', undefined, {
406
406
  buildMode: experimentalBuildMode,
407
- version: "16.3.3",
407
+ version: "16.3.4",
408
408
  ...enabledFeatures
409
409
  });
410
410
  NextBuildContext.nextBuildSpan = nextBuildSpan;
@@ -849,7 +849,7 @@ export default async function build(dir, experimentalAnalyze = false, reactProdu
849
849
  // Files outside of the distDir can be "type": "module"
850
850
  await writeFileUtf8(path.join(distDir, 'package.json'), '{"type": "commonjs"}');
851
851
  // These are written to distDir, so they need to come after creating and cleaning distDr.
852
- await recordFrameworkVersion("16.3.3");
852
+ await recordFrameworkVersion("16.3.4");
853
853
  await updateBuildDiagnostics({
854
854
  buildStage: 'start'
855
855
  });
@@ -2726,7 +2726,7 @@ export default async function build(dir, experimentalAnalyze = false, reactProdu
2726
2726
  configOutDir: path.join(dir, configOutDir),
2727
2727
  staticPages,
2728
2728
  serverPropsPages,
2729
- nextVersion: "16.3.3",
2729
+ nextVersion: "16.3.4",
2730
2730
  repoRoot: config.repoRoot,
2731
2731
  outputFileTracingRoot,
2732
2732
  hasNodeMiddleware,
@@ -11,7 +11,7 @@ export var HmrTarget = /*#__PURE__*/ function(HmrTarget) {
11
11
  HmrTarget["Server"] = "server";
12
12
  return HmrTarget;
13
13
  }({});
14
- const nextVersion = "16.3.3";
14
+ const nextVersion = "16.3.4";
15
15
  const ArchName = arch();
16
16
  const PlatformName = platform();
17
17
  function infoLog(...args) {
@@ -66,7 +66,7 @@ export async function turbopackAnalyze(analyzeContext) {
66
66
  writeRoutesHashesManifest: false,
67
67
  currentNodeJsVersion,
68
68
  isPersistentCachingEnabled: persistentCaching,
69
- nextVersion: "16.3.3"
69
+ nextVersion: "16.3.4"
70
70
  }, {
71
71
  turbopackMemoryEviction: config.experimental.turbopackMemoryEvictionMode,
72
72
  dependencyTracking: persistentCaching,
@@ -85,7 +85,7 @@ export async function turbopackBuild(telemetry) {
85
85
  currentNodeJsVersion,
86
86
  isPersistentCachingEnabled: persistentCaching,
87
87
  deferredEntries: config.experimental.deferredEntries,
88
- nextVersion: "16.3.3"
88
+ nextVersion: "16.3.4"
89
89
  };
90
90
  if (config.experimental.turbopackSeedCacheFromWorktree) {
91
91
  seedTurbopackCacheIfNeeded({
@@ -5,7 +5,8 @@ const BLUR_QUALITY = 70;
5
5
  const VALID_BLUR_EXT = [
6
6
  'jpeg',
7
7
  'png',
8
- 'webp'
8
+ 'webp',
9
+ 'avif'
9
10
  ] // should match other usages
10
11
  ;
11
12
  export async function getBlurImage(content, extension, imageSize, { basePath, outputPath, isDev, tracing = ()=>({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/build/webpack/loaders/next-image-loader/blur.ts"],"sourcesContent":["import isAnimated from 'next/dist/compiled/is-animated'\nimport { optimizeImage } from '../../../../server/image-optimizer'\n\nconst BLUR_IMG_SIZE = 8\nconst BLUR_QUALITY = 70\nconst VALID_BLUR_EXT = ['jpeg', 'png', 'webp'] // should match other usages\n\nexport async function getBlurImage(\n content: Buffer,\n extension: string,\n imageSize: { width: number; height: number },\n {\n basePath,\n outputPath,\n isDev,\n tracing = () => ({\n traceFn:\n (fn) =>\n (...args: any) =>\n fn(...args),\n traceAsyncFn:\n (fn) =>\n (...args: any) =>\n fn(...args),\n }),\n }: {\n basePath: string\n outputPath: string\n isDev: boolean\n tracing: (name?: string) => {\n traceFn(fn: Function): any\n traceAsyncFn(fn: Function): any\n }\n }\n) {\n let blurDataURL: string | undefined\n let blurWidth: number = 0\n let blurHeight: number = 0\n\n if (VALID_BLUR_EXT.includes(extension) && !isAnimated(content)) {\n // Shrink the image's largest dimension\n if (imageSize.width >= imageSize.height) {\n blurWidth = BLUR_IMG_SIZE\n blurHeight = Math.max(\n Math.round((imageSize.height / imageSize.width) * BLUR_IMG_SIZE),\n 1\n )\n } else {\n blurWidth = Math.max(\n Math.round((imageSize.width / imageSize.height) * BLUR_IMG_SIZE),\n 1\n )\n blurHeight = BLUR_IMG_SIZE\n }\n\n if (isDev) {\n // During `next dev`, we don't want to generate blur placeholders with webpack\n // because it can delay starting the dev server. Instead, we inline a\n // special url to lazily generate the blur placeholder at request time.\n const prefix = 'http://localhost'\n const url = new URL(`${basePath || ''}/_next/image`, prefix)\n url.searchParams.set('url', outputPath)\n url.searchParams.set('w', String(blurWidth))\n url.searchParams.set('q', String(BLUR_QUALITY))\n blurDataURL = url.href.slice(prefix.length)\n } else {\n const resizeImageSpan = tracing('image-resize')\n const resizedImage = await resizeImageSpan.traceAsyncFn(() =>\n optimizeImage({\n buffer: content,\n width: blurWidth,\n height: blurHeight,\n contentType: `image/${extension}`,\n quality: BLUR_QUALITY,\n })\n )\n const blurDataURLSpan = tracing('image-base64-tostring')\n blurDataURL = blurDataURLSpan.traceFn(\n () =>\n `data:image/${extension};base64,${resizedImage.toString('base64')}`\n )\n }\n }\n return {\n dataURL: blurDataURL,\n width: blurWidth,\n height: blurHeight,\n }\n}\n"],"names":["isAnimated","optimizeImage","BLUR_IMG_SIZE","BLUR_QUALITY","VALID_BLUR_EXT","getBlurImage","content","extension","imageSize","basePath","outputPath","isDev","tracing","traceFn","fn","args","traceAsyncFn","blurDataURL","blurWidth","blurHeight","includes","width","height","Math","max","round","prefix","url","URL","searchParams","set","String","href","slice","length","resizeImageSpan","resizedImage","buffer","contentType","quality","blurDataURLSpan","toString","dataURL"],"mappings":"AAAA,OAAOA,gBAAgB,iCAAgC;AACvD,SAASC,aAAa,QAAQ,qCAAoC;AAElE,MAAMC,gBAAgB;AACtB,MAAMC,eAAe;AACrB,MAAMC,iBAAiB;IAAC;IAAQ;IAAO;CAAO,CAAC,4BAA4B;;AAE3E,OAAO,eAAeC,aACpBC,OAAe,EACfC,SAAiB,EACjBC,SAA4C,EAC5C,EACEC,QAAQ,EACRC,UAAU,EACVC,KAAK,EACLC,UAAU,IAAO,CAAA;QACfC,SACE,CAACC,KACD,CAAC,GAAGC,OACFD,MAAMC;QACVC,cACE,CAACF,KACD,CAAC,GAAGC,OACFD,MAAMC;IACZ,CAAA,CAAE,EASH;IAED,IAAIE;IACJ,IAAIC,YAAoB;IACxB,IAAIC,aAAqB;IAEzB,IAAIf,eAAegB,QAAQ,CAACb,cAAc,CAACP,WAAWM,UAAU;QAC9D,uCAAuC;QACvC,IAAIE,UAAUa,KAAK,IAAIb,UAAUc,MAAM,EAAE;YACvCJ,YAAYhB;YACZiB,aAAaI,KAAKC,GAAG,CACnBD,KAAKE,KAAK,CAAC,AAACjB,UAAUc,MAAM,GAAGd,UAAUa,KAAK,GAAInB,gBAClD;QAEJ,OAAO;YACLgB,YAAYK,KAAKC,GAAG,CAClBD,KAAKE,KAAK,CAAC,AAACjB,UAAUa,KAAK,GAAGb,UAAUc,MAAM,GAAIpB,gBAClD;YAEFiB,aAAajB;QACf;QAEA,IAAIS,OAAO;YACT,8EAA8E;YAC9E,qEAAqE;YACrE,uEAAuE;YACvE,MAAMe,SAAS;YACf,MAAMC,MAAM,IAAIC,IAAI,GAAGnB,YAAY,GAAG,YAAY,CAAC,EAAEiB;YACrDC,IAAIE,YAAY,CAACC,GAAG,CAAC,OAAOpB;YAC5BiB,IAAIE,YAAY,CAACC,GAAG,CAAC,KAAKC,OAAOb;YACjCS,IAAIE,YAAY,CAACC,GAAG,CAAC,KAAKC,OAAO5B;YACjCc,cAAcU,IAAIK,IAAI,CAACC,KAAK,CAACP,OAAOQ,MAAM;QAC5C,OAAO;YACL,MAAMC,kBAAkBvB,QAAQ;YAChC,MAAMwB,eAAe,MAAMD,gBAAgBnB,YAAY,CAAC,IACtDf,cAAc;oBACZoC,QAAQ/B;oBACRe,OAAOH;oBACPI,QAAQH;oBACRmB,aAAa,CAAC,MAAM,EAAE/B,WAAW;oBACjCgC,SAASpC;gBACX;YAEF,MAAMqC,kBAAkB5B,QAAQ;YAChCK,cAAcuB,gBAAgB3B,OAAO,CACnC,IACE,CAAC,WAAW,EAAEN,UAAU,QAAQ,EAAE6B,aAAaK,QAAQ,CAAC,WAAW;QAEzE;IACF;IACA,OAAO;QACLC,SAASzB;QACTI,OAAOH;QACPI,QAAQH;IACV;AACF","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../../../src/build/webpack/loaders/next-image-loader/blur.ts"],"sourcesContent":["import isAnimated from 'next/dist/compiled/is-animated'\nimport { optimizeImage } from '../../../../server/image-optimizer'\n\nconst BLUR_IMG_SIZE = 8\nconst BLUR_QUALITY = 70\nconst VALID_BLUR_EXT = ['jpeg', 'png', 'webp', 'avif'] // should match other usages\n\nexport async function getBlurImage(\n content: Buffer,\n extension: string,\n imageSize: { width: number; height: number },\n {\n basePath,\n outputPath,\n isDev,\n tracing = () => ({\n traceFn:\n (fn) =>\n (...args: any) =>\n fn(...args),\n traceAsyncFn:\n (fn) =>\n (...args: any) =>\n fn(...args),\n }),\n }: {\n basePath: string\n outputPath: string\n isDev: boolean\n tracing: (name?: string) => {\n traceFn(fn: Function): any\n traceAsyncFn(fn: Function): any\n }\n }\n) {\n let blurDataURL: string | undefined\n let blurWidth: number = 0\n let blurHeight: number = 0\n\n if (VALID_BLUR_EXT.includes(extension) && !isAnimated(content)) {\n // Shrink the image's largest dimension\n if (imageSize.width >= imageSize.height) {\n blurWidth = BLUR_IMG_SIZE\n blurHeight = Math.max(\n Math.round((imageSize.height / imageSize.width) * BLUR_IMG_SIZE),\n 1\n )\n } else {\n blurWidth = Math.max(\n Math.round((imageSize.width / imageSize.height) * BLUR_IMG_SIZE),\n 1\n )\n blurHeight = BLUR_IMG_SIZE\n }\n\n if (isDev) {\n // During `next dev`, we don't want to generate blur placeholders with webpack\n // because it can delay starting the dev server. Instead, we inline a\n // special url to lazily generate the blur placeholder at request time.\n const prefix = 'http://localhost'\n const url = new URL(`${basePath || ''}/_next/image`, prefix)\n url.searchParams.set('url', outputPath)\n url.searchParams.set('w', String(blurWidth))\n url.searchParams.set('q', String(BLUR_QUALITY))\n blurDataURL = url.href.slice(prefix.length)\n } else {\n const resizeImageSpan = tracing('image-resize')\n const resizedImage = await resizeImageSpan.traceAsyncFn(() =>\n optimizeImage({\n buffer: content,\n width: blurWidth,\n height: blurHeight,\n contentType: `image/${extension}`,\n quality: BLUR_QUALITY,\n })\n )\n const blurDataURLSpan = tracing('image-base64-tostring')\n blurDataURL = blurDataURLSpan.traceFn(\n () =>\n `data:image/${extension};base64,${resizedImage.toString('base64')}`\n )\n }\n }\n return {\n dataURL: blurDataURL,\n width: blurWidth,\n height: blurHeight,\n }\n}\n"],"names":["isAnimated","optimizeImage","BLUR_IMG_SIZE","BLUR_QUALITY","VALID_BLUR_EXT","getBlurImage","content","extension","imageSize","basePath","outputPath","isDev","tracing","traceFn","fn","args","traceAsyncFn","blurDataURL","blurWidth","blurHeight","includes","width","height","Math","max","round","prefix","url","URL","searchParams","set","String","href","slice","length","resizeImageSpan","resizedImage","buffer","contentType","quality","blurDataURLSpan","toString","dataURL"],"mappings":"AAAA,OAAOA,gBAAgB,iCAAgC;AACvD,SAASC,aAAa,QAAQ,qCAAoC;AAElE,MAAMC,gBAAgB;AACtB,MAAMC,eAAe;AACrB,MAAMC,iBAAiB;IAAC;IAAQ;IAAO;IAAQ;CAAO,CAAC,4BAA4B;;AAEnF,OAAO,eAAeC,aACpBC,OAAe,EACfC,SAAiB,EACjBC,SAA4C,EAC5C,EACEC,QAAQ,EACRC,UAAU,EACVC,KAAK,EACLC,UAAU,IAAO,CAAA;QACfC,SACE,CAACC,KACD,CAAC,GAAGC,OACFD,MAAMC;QACVC,cACE,CAACF,KACD,CAAC,GAAGC,OACFD,MAAMC;IACZ,CAAA,CAAE,EASH;IAED,IAAIE;IACJ,IAAIC,YAAoB;IACxB,IAAIC,aAAqB;IAEzB,IAAIf,eAAegB,QAAQ,CAACb,cAAc,CAACP,WAAWM,UAAU;QAC9D,uCAAuC;QACvC,IAAIE,UAAUa,KAAK,IAAIb,UAAUc,MAAM,EAAE;YACvCJ,YAAYhB;YACZiB,aAAaI,KAAKC,GAAG,CACnBD,KAAKE,KAAK,CAAC,AAACjB,UAAUc,MAAM,GAAGd,UAAUa,KAAK,GAAInB,gBAClD;QAEJ,OAAO;YACLgB,YAAYK,KAAKC,GAAG,CAClBD,KAAKE,KAAK,CAAC,AAACjB,UAAUa,KAAK,GAAGb,UAAUc,MAAM,GAAIpB,gBAClD;YAEFiB,aAAajB;QACf;QAEA,IAAIS,OAAO;YACT,8EAA8E;YAC9E,qEAAqE;YACrE,uEAAuE;YACvE,MAAMe,SAAS;YACf,MAAMC,MAAM,IAAIC,IAAI,GAAGnB,YAAY,GAAG,YAAY,CAAC,EAAEiB;YACrDC,IAAIE,YAAY,CAACC,GAAG,CAAC,OAAOpB;YAC5BiB,IAAIE,YAAY,CAACC,GAAG,CAAC,KAAKC,OAAOb;YACjCS,IAAIE,YAAY,CAACC,GAAG,CAAC,KAAKC,OAAO5B;YACjCc,cAAcU,IAAIK,IAAI,CAACC,KAAK,CAACP,OAAOQ,MAAM;QAC5C,OAAO;YACL,MAAMC,kBAAkBvB,QAAQ;YAChC,MAAMwB,eAAe,MAAMD,gBAAgBnB,YAAY,CAAC,IACtDf,cAAc;oBACZoC,QAAQ/B;oBACRe,OAAOH;oBACPI,QAAQH;oBACRmB,aAAa,CAAC,MAAM,EAAE/B,WAAW;oBACjCgC,SAASpC;gBACX;YAEF,MAAMqC,kBAAkB5B,QAAQ;YAChCK,cAAcuB,gBAAgB3B,OAAO,CACnC,IACE,CAAC,WAAW,EAAEN,UAAU,QAAQ,EAAE6B,aAAaK,QAAQ,CAAC,WAAW;QAEzE;IACF;IACA,OAAO;QACLC,SAASzB;QACTI,OAAOH;QACPI,QAAQH;IACV;AACF","ignoreList":[0]}
@@ -1666,7 +1666,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1666
1666
  isClient && new CopyFilePlugin({
1667
1667
  // file path to build output of `@next/polyfill-nomodule`
1668
1668
  filePath: require.resolve('./polyfills/polyfill-nomodule'),
1669
- cacheKey: "16.3.3",
1669
+ cacheKey: "16.3.4",
1670
1670
  name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
1671
1671
  minimize: false,
1672
1672
  info: {
@@ -1867,7 +1867,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1867
1867
  // - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
1868
1868
  // - Next.js version
1869
1869
  // - next.config.js keys that affect compilation
1870
- version: `${__dirname}|${"16.3.3"}|${configVars}`,
1870
+ version: `${__dirname}|${"16.3.4"}|${configVars}`,
1871
1871
  cacheDirectory: path.join(distDir, 'cache', 'webpack'),
1872
1872
  // For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
1873
1873
  // So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
@@ -1923,7 +1923,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1923
1923
  type: 'filesystem',
1924
1924
  directory: path.join(distDir, 'cache', 'rspack', rspackCacheKey)
1925
1925
  },
1926
- version: `${__dirname}|${"16.3.3"}|${configVars}|${rspackCacheKey}`
1926
+ version: `${__dirname}|${"16.3.4"}|${configVars}|${rspackCacheKey}`
1927
1927
  };
1928
1928
  }
1929
1929
  if (process.env.NEXT_WEBPACK_LOGGING) {
@@ -5,7 +5,7 @@
5
5
  * - next/script with `beforeInteractive` strategy
6
6
  */ import { getAssetPrefix } from './asset-prefix';
7
7
  import { setAttributesFromProps } from './set-attributes-from-props';
8
- const version = "16.3.3";
8
+ const version = "16.3.4";
9
9
  window.next = {
10
10
  version,
11
11
  appDir: true
@@ -25,7 +25,7 @@ import { SearchParamsContext, PathParamsContext } from '../shared/lib/hooks-clie
25
25
  import { onRecoverableError } from './react-client-callbacks/on-recoverable-error';
26
26
  import tracer from './tracing/tracer';
27
27
  import { isNextRouterError } from './components/is-next-router-error';
28
- export const version = "16.3.3";
28
+ export const version = "16.3.4";
29
29
  export let router;
30
30
  export const emitter = mitt();
31
31
  const looseToArray = (input)=>[].slice.call(input);
@@ -487,7 +487,6 @@ const ImageElement = ({ imgAttributes, heightInt, widthInt, qualityInt, layout,
487
487
  delete rest.loader;
488
488
  }
489
489
  let staticSrc = '';
490
- let isStaticAvif = false;
491
490
  if (isStaticImport(src)) {
492
491
  const staticImageData = isStaticRequire(src) ? src.default : src;
493
492
  if (!staticImageData.src) {
@@ -499,7 +498,6 @@ const ImageElement = ({ imgAttributes, heightInt, widthInt, qualityInt, layout,
499
498
  }
500
499
  blurDataURL = blurDataURL || staticImageData.blurDataURL;
501
500
  staticSrc = staticImageData.src;
502
- isStaticAvif = /\.avif(?:\?|$)/i.test(staticSrc);
503
501
  if (!layout || layout !== 'fill') {
504
502
  height = height || staticImageData.height;
505
503
  width = width || staticImageData.width;
@@ -513,11 +511,6 @@ const ImageElement = ({ imgAttributes, heightInt, widthInt, qualityInt, layout,
513
511
  }
514
512
  }
515
513
  src = typeof src === 'string' ? src : staticSrc;
516
- // Generating a blurDataURL requires decoding the source image, so static AVIF
517
- // imports do not receive one while AVIF input optimization is disabled.
518
- if (isStaticAvif && placeholder === 'blur' && !blurDataURL) {
519
- placeholder = 'empty';
520
- }
521
514
  warnOnce(`Image with src "${src}" is using next/legacy/image which is deprecated and will be removed in a future version of Next.js.`);
522
515
  let isLazy = !priority && (loading === 'lazy' || typeof loading === 'undefined');
523
516
  if (src.startsWith('data:') || src.startsWith('blob:')) {
@@ -637,7 +630,8 @@ const ImageElement = ({ imgAttributes, heightInt, widthInt, qualityInt, layout,
637
630
  const VALID_BLUR_EXT = [
638
631
  'jpeg',
639
632
  'png',
640
- 'webp'
633
+ 'webp',
634
+ 'avif'
641
635
  ] // should match next-image-loader
642
636
  ;
643
637
  throw Object.defineProperty(new Error(`Image with src "${src}" has "placeholder='blur'" property but is missing the "blurDataURL" property.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/client/legacy/image.tsx"],"sourcesContent":["'use client'\n\nimport React, {\n useRef,\n useEffect,\n useCallback,\n useContext,\n useMemo,\n useState,\n type JSX,\n} from 'react'\nimport * as ReactDOM from 'react-dom'\nimport Head from '../../shared/lib/head'\nimport {\n imageConfigDefault,\n VALID_LOADERS,\n} from '../../shared/lib/image-config'\nimport type {\n ImageConfigComplete,\n LoaderValue,\n} from '../../shared/lib/image-config'\nimport { useIntersection } from '../use-intersection'\nimport { ImageConfigContext } from '../../shared/lib/image-config-context.shared-runtime'\nimport { warnOnce } from '../../shared/lib/utils/warn-once'\nimport { normalizePathTrailingSlash } from '../normalize-trailing-slash'\nimport { findClosestQuality } from '../../shared/lib/find-closest-quality'\nimport { getAssetToken, getDeploymentId } from '../../shared/lib/deployment-id'\n\nfunction normalizeSrc(src: string): string {\n return src[0] === '/' ? src.slice(1) : src\n}\n\nconst supportsFloat = typeof ReactDOM.preload === 'function'\nconst configEnv = process.env.__NEXT_IMAGE_OPTS as any as ImageConfigComplete\nconst loadedImageURLs = new Set<string>()\nconst allImgs = new Map<\n string,\n { src: string; priority: boolean; placeholder: string }\n>()\nlet perfObserver: PerformanceObserver | undefined\nconst emptyDataURL =\n 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n\nif (typeof window === 'undefined') {\n ;(globalThis as any).__NEXT_IMAGE_IMPORTED = true\n}\n\nconst VALID_LOADING_VALUES = ['lazy', 'eager', undefined] as const\ntype LoadingValue = (typeof VALID_LOADING_VALUES)[number]\ntype ImageConfig = ImageConfigComplete & { allSizes: number[] }\nexport type ImageLoader = (resolverProps: ImageLoaderProps) => string\n\nexport type ImageLoaderProps = {\n src: string\n width: number\n quality?: number\n}\n\n// Do not export - this is an internal type only\n// because `next.config.js` is only meant for the\n// built-in loaders, not for a custom loader() prop.\ntype ImageLoaderWithConfig = (\n resolverProps: ImageLoaderPropsWithConfig\n) => string\ntype ImageLoaderPropsWithConfig = ImageLoaderProps & {\n config: Readonly<ImageConfig>\n}\n\nfunction imgixLoader({\n config,\n src,\n width,\n quality,\n}: ImageLoaderPropsWithConfig): string {\n // Demo: https://static.imgix.net/daisy.png?auto=format&fit=max&w=300\n const url = new URL(`${config.path}${normalizeSrc(src)}`)\n const params = url.searchParams\n\n // auto params can be combined with comma separation, or reiteration\n params.set('auto', params.getAll('auto').join(',') || 'format')\n params.set('fit', params.get('fit') || 'max')\n params.set('w', params.get('w') || width.toString())\n\n if (quality) {\n params.set('q', quality.toString())\n }\n\n return url.href\n}\n\nfunction akamaiLoader({\n config,\n src,\n width,\n}: ImageLoaderPropsWithConfig): string {\n return `${config.path}${normalizeSrc(src)}?imwidth=${width}`\n}\n\nfunction cloudinaryLoader({\n config,\n src,\n width,\n quality,\n}: ImageLoaderPropsWithConfig): string {\n // Demo: https://res.cloudinary.com/demo/image/upload/w_300,c_limit,q_auto/turtles.jpg\n const params = ['f_auto', 'c_limit', 'w_' + width, 'q_' + (quality || 'auto')]\n const paramsString = params.join(',') + '/'\n return `${config.path}${paramsString}${normalizeSrc(src)}`\n}\n\nfunction customLoader({ src }: ImageLoaderProps): string {\n throw new Error(\n `Image with src \"${src}\" is missing \"loader\" prop.` +\n `\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader`\n )\n}\n\nfunction defaultLoader({\n config,\n src,\n width,\n quality,\n}: ImageLoaderPropsWithConfig): string {\n if (!config.dangerouslyAllowSVG && src.split('?', 1)[0].endsWith('.svg')) {\n // Special case to make svg serve as-is to avoid proxying\n // through the built-in Image Optimization API.\n return src\n }\n\n // Extract dpl parameter early so validation uses the clean URL\n let deploymentId = getDeploymentId()\n if (src.startsWith('/') && !src.startsWith('//')) {\n if (src.includes('/_next/static/immutable') && !getAssetToken()) {\n // immutable static asset and supported by platform, don't add `?dpl=`\n deploymentId = undefined\n } else {\n // We unfortunately can't easily use `new URL()` here, because it normalizes the URL which causes\n // double-encoding with the `encodeURIComponent(src)` below\n const qIndex = src.indexOf('?')\n if (qIndex !== -1) {\n const params = new URLSearchParams(src.slice(qIndex + 1))\n const srcDpl = params.get('dpl')\n if (srcDpl) {\n deploymentId = srcDpl\n params.delete('dpl')\n const remaining = params.toString()\n src = src.slice(0, qIndex) + (remaining ? '?' + remaining : '')\n }\n }\n }\n }\n\n if (\n src.startsWith('/') &&\n src.includes('?') &&\n config.localPatterns?.length === 1 &&\n config.localPatterns[0].pathname === '**' &&\n config.localPatterns[0].search === ''\n ) {\n throw new Error(\n `Image with src \"${src}\" is using a query string which is not configured in images.localPatterns.` +\n `\\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`\n )\n }\n\n if (process.env.NODE_ENV !== 'production') {\n const missingValues = []\n\n // these should always be provided but make sure they are\n if (!src) missingValues.push('src')\n if (!width) missingValues.push('width')\n\n if (missingValues.length > 0) {\n throw new Error(\n `Next Image Optimization requires ${missingValues.join(\n ', '\n )} to be provided. Make sure you pass them as props to the \\`next/image\\` component. Received: ${JSON.stringify(\n { src, width, quality }\n )}`\n )\n }\n\n if (src.startsWith('//')) {\n throw new Error(\n `Failed to parse src \"${src}\" on \\`next/image\\`, protocol-relative URL (//) must be changed to an absolute URL (http:// or https://)`\n )\n }\n\n if (src.startsWith('/') && config.localPatterns) {\n if (\n process.env.NODE_ENV !== 'test' &&\n // micromatch isn't compatible with edge runtime\n process.env.NEXT_RUNTIME !== 'edge'\n ) {\n // We use dynamic require because this should only error in development\n const { hasLocalMatch } =\n require('../../shared/lib/match-local-pattern') as typeof import('../../shared/lib/match-local-pattern')\n if (!hasLocalMatch(config.localPatterns, src)) {\n throw new Error(\n `Invalid src prop (${src}) on \\`next/image\\` does not match \\`images.localPatterns\\` configured in your \\`next.config.js\\`\\n` +\n `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`\n )\n }\n }\n }\n\n if (!src.startsWith('/') && (config.domains || config.remotePatterns)) {\n let parsedSrc: URL\n try {\n parsedSrc = new URL(src)\n } catch (err) {\n console.error(err)\n throw new Error(\n `Failed to parse src \"${src}\" on \\`next/image\\`, if using relative image it must start with a leading slash \"/\" or be an absolute URL (http:// or https://)`\n )\n }\n\n if (\n process.env.NODE_ENV !== 'test' &&\n // micromatch isn't compatible with edge runtime\n process.env.NEXT_RUNTIME !== 'edge'\n ) {\n // We use dynamic require because this should only error in development\n const { hasRemoteMatch } =\n require('../../shared/lib/match-remote-pattern') as typeof import('../../shared/lib/match-remote-pattern')\n if (!hasRemoteMatch(config.domains, config.remotePatterns, parsedSrc)) {\n throw new Error(\n `Invalid src prop (${src}) on \\`next/image\\`, hostname \"${parsedSrc.hostname}\" is not configured under images in your \\`next.config.js\\`\\n` +\n `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-host`\n )\n }\n }\n }\n }\n\n const q = findClosestQuality(quality, config)\n\n return `${normalizePathTrailingSlash(config.path)}?url=${encodeURIComponent(\n src\n )}&w=${width}&q=${q}${\n src.startsWith('/') && deploymentId ? `&dpl=${deploymentId}` : ''\n }`\n}\n\nconst loaders = new Map<\n LoaderValue,\n (props: ImageLoaderPropsWithConfig) => string\n>([\n ['default', defaultLoader],\n ['imgix', imgixLoader],\n ['cloudinary', cloudinaryLoader],\n ['akamai', akamaiLoader],\n ['custom', customLoader],\n])\n\nconst VALID_LAYOUT_VALUES = [\n 'fill',\n 'fixed',\n 'intrinsic',\n 'responsive',\n undefined,\n] as const\ntype LayoutValue = (typeof VALID_LAYOUT_VALUES)[number]\n\ntype PlaceholderValue = 'blur' | 'empty'\n\ntype OnLoadingComplete = (result: {\n naturalWidth: number\n naturalHeight: number\n}) => void\n\ntype ImgElementStyle = NonNullable<JSX.IntrinsicElements['img']['style']>\n\ntype ImgElementWithDataProp = HTMLImageElement & {\n 'data-loaded-src': string | undefined\n}\n\nexport interface StaticImageData {\n src: string\n height: number\n width: number\n blurDataURL?: string\n}\n\ninterface StaticRequire {\n default: StaticImageData\n}\n\ntype StaticImport = StaticRequire | StaticImageData\n\ntype SafeNumber = number | `${number}`\n\nfunction isStaticRequire(\n src: StaticRequire | StaticImageData\n): src is StaticRequire {\n return (src as StaticRequire).default !== undefined\n}\n\nfunction isStaticImageData(\n src: StaticRequire | StaticImageData\n): src is StaticImageData {\n return (src as StaticImageData).src !== undefined\n}\n\nfunction isStaticImport(src: string | StaticImport): src is StaticImport {\n return (\n typeof src === 'object' &&\n (isStaticRequire(src as StaticImport) ||\n isStaticImageData(src as StaticImport))\n )\n}\n\nexport type ImageProps = Omit<\n JSX.IntrinsicElements['img'],\n 'src' | 'srcSet' | 'ref' | 'width' | 'height' | 'loading'\n> & {\n src: string | StaticImport\n width?: SafeNumber\n height?: SafeNumber\n layout?: LayoutValue\n loader?: ImageLoader\n quality?: SafeNumber\n priority?: boolean\n loading?: LoadingValue\n lazyRoot?: React.RefObject<HTMLElement | null> | null\n lazyBoundary?: string\n placeholder?: PlaceholderValue\n blurDataURL?: string\n unoptimized?: boolean\n objectFit?: ImgElementStyle['objectFit']\n objectPosition?: ImgElementStyle['objectPosition']\n onLoadingComplete?: OnLoadingComplete\n}\n\ntype ImageElementProps = Omit<ImageProps, 'src' | 'loader'> & {\n srcString: string\n imgAttributes: GenImgAttrsResult\n heightInt: number | undefined\n widthInt: number | undefined\n qualityInt: number | undefined\n layout: LayoutValue\n imgStyle: ImgElementStyle\n blurStyle: ImgElementStyle\n isLazy: boolean\n loading: LoadingValue\n config: ImageConfig\n unoptimized: boolean\n loader: ImageLoaderWithConfig\n placeholder: PlaceholderValue\n onLoadingCompleteRef: React.MutableRefObject<OnLoadingComplete | undefined>\n setBlurComplete: (b: boolean) => void\n setIntersection: (img: HTMLImageElement | null) => void\n isVisible: boolean\n noscriptSizes: string | undefined\n}\n\nfunction getWidths(\n { deviceSizes, allSizes }: ImageConfig,\n width: number | undefined,\n layout: LayoutValue,\n sizes: string | undefined\n): { widths: number[]; kind: 'w' | 'x' } {\n if (sizes && (layout === 'fill' || layout === 'responsive')) {\n // Find all the \"vw\" percent sizes used in the sizes prop\n const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g\n const percentSizes = []\n for (let match; (match = viewportWidthRe.exec(sizes)); match) {\n percentSizes.push(parseInt(match[2]))\n }\n if (percentSizes.length) {\n const smallestRatio = Math.min(...percentSizes) * 0.01\n return {\n widths: allSizes.filter((s) => s >= deviceSizes[0] * smallestRatio),\n kind: 'w',\n }\n }\n return { widths: allSizes, kind: 'w' }\n }\n if (\n typeof width !== 'number' ||\n layout === 'fill' ||\n layout === 'responsive'\n ) {\n return { widths: deviceSizes, kind: 'w' }\n }\n\n const widths = [\n ...new Set(\n // > This means that most OLED screens that say they are 3x resolution,\n // > are actually 3x in the green color, but only 1.5x in the red and\n // > blue colors. Showing a 3x resolution image in the app vs a 2x\n // > resolution image will be visually the same, though the 3x image\n // > takes significantly more data. Even true 3x resolution screens are\n // > wasteful as the human eye cannot see that level of detail without\n // > something like a magnifying glass.\n // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n [width, width * 2 /*, width * 3*/].map(\n (w) => allSizes.find((p) => p >= w) || allSizes[allSizes.length - 1]\n )\n ),\n ]\n return { widths, kind: 'x' }\n}\n\ntype GenImgAttrsData = {\n config: ImageConfig\n src: string\n unoptimized: boolean\n layout: LayoutValue\n loader: ImageLoaderWithConfig\n width?: number\n quality?: number\n sizes?: string\n}\n\ntype GenImgAttrsResult = {\n src: string\n srcSet: string | undefined\n sizes: string | undefined\n}\n\nfunction generateImgAttrs({\n config,\n src,\n unoptimized,\n layout,\n width,\n quality,\n sizes,\n loader,\n}: GenImgAttrsData): GenImgAttrsResult {\n if (unoptimized) {\n if (src.startsWith('/') && !src.startsWith('//')) {\n let deploymentId = getDeploymentId()\n if (src.includes('/_next/static/immutable') && !getAssetToken()) {\n // immutable static asset and supported by platform, don't add `?dpl=`\n deploymentId = undefined\n } else if (deploymentId) {\n // We unfortunately can't easily use `new URL()` here, because it normalizes the URL which causes\n // double-encoding with the `encodeURIComponent(src)` below\n const qIndex = src.indexOf('?')\n if (qIndex !== -1) {\n const params = new URLSearchParams(src.slice(qIndex + 1))\n const srcDpl = params.get('dpl')\n if (!srcDpl) {\n // src is missing the dpl parameter, but we have a deploymentId, so add it to the src URL\n params.append('dpl', deploymentId)\n src = src.slice(0, qIndex) + '?' + params.toString()\n }\n } else {\n // src is missing the dpl parameter, but we have a deploymentId, so add it to the src URL\n src = src + `?dpl=${deploymentId}`\n }\n }\n }\n return { src, srcSet: undefined, sizes: undefined }\n }\n\n const { widths, kind } = getWidths(config, width, layout, sizes)\n const last = widths.length - 1\n\n return {\n sizes: !sizes && kind === 'w' ? '100vw' : sizes,\n srcSet: widths\n .map(\n (w, i) =>\n `${loader({ config, src, quality, width: w })} ${\n kind === 'w' ? w : i + 1\n }${kind}`\n )\n .join(', '),\n\n // It's intended to keep `src` the last attribute because React updates\n // attributes in order. If we keep `src` the first one, Safari will\n // immediately start to fetch `src`, before `sizes` and `srcSet` are even\n // updated by React. That causes multiple unnecessary requests if `srcSet`\n // and `sizes` are defined.\n // This bug cannot be reproduced in Chrome or Firefox.\n src: loader({ config, src, quality, width: widths[last] }),\n }\n}\n\nfunction getInt(x: unknown): number | undefined {\n if (typeof x === 'number') {\n return x\n }\n if (typeof x === 'string') {\n return parseInt(x, 10)\n }\n return undefined\n}\n\nfunction defaultImageLoader(loaderProps: ImageLoaderPropsWithConfig) {\n const loaderKey = loaderProps.config?.loader || 'default'\n const load = loaders.get(loaderKey)\n if (load) {\n return load(loaderProps)\n }\n throw new Error(\n `Unknown \"loader\" found in \"next.config.js\". Expected: ${VALID_LOADERS.join(\n ', '\n )}. Received: ${loaderKey}`\n )\n}\n\n// See https://stackoverflow.com/q/39777833/266535 for why we use this ref\n// handler instead of the img's onLoad attribute.\nfunction handleLoading(\n img: ImgElementWithDataProp,\n src: string,\n layout: LayoutValue,\n placeholder: PlaceholderValue,\n onLoadingCompleteRef: React.MutableRefObject<OnLoadingComplete | undefined>,\n setBlurComplete: (b: boolean) => void\n) {\n if (!img || img.src === emptyDataURL || img['data-loaded-src'] === src) {\n return\n }\n img['data-loaded-src'] = src\n const p = 'decode' in img ? img.decode() : Promise.resolve()\n p.catch(() => {}).then(() => {\n if (!img.parentNode) {\n // Exit early in case of race condition:\n // - onload() is called\n // - decode() is called but incomplete\n // - unmount is called\n // - decode() completes\n return\n }\n loadedImageURLs.add(src)\n if (placeholder === 'blur') {\n setBlurComplete(true)\n }\n if (onLoadingCompleteRef?.current) {\n const { naturalWidth, naturalHeight } = img\n // Pass back read-only primitive values but not the\n // underlying DOM element because it could be misused.\n onLoadingCompleteRef.current({ naturalWidth, naturalHeight })\n }\n if (process.env.NODE_ENV !== 'production') {\n if (img.parentElement?.parentElement) {\n const parent = getComputedStyle(img.parentElement.parentElement)\n if (!parent.position) {\n // The parent has not been rendered to the dom yet and therefore it has no position. Skip the warnings for such cases.\n } else if (layout === 'responsive' && parent.display === 'flex') {\n warnOnce(\n `Image with src \"${src}\" may not render properly as a child of a flex container. Consider wrapping the image with a div to configure the width.`\n )\n } else if (\n layout === 'fill' &&\n parent.position !== 'relative' &&\n parent.position !== 'fixed' &&\n parent.position !== 'absolute'\n ) {\n warnOnce(\n `Image with src \"${src}\" may not render properly with a parent using position:\"${parent.position}\". Consider changing the parent style to position:\"relative\" with a width and height.`\n )\n }\n }\n }\n })\n}\n\nconst ImageElement = ({\n imgAttributes,\n heightInt,\n widthInt,\n qualityInt,\n layout,\n className,\n imgStyle,\n blurStyle,\n isLazy,\n placeholder,\n loading,\n srcString,\n config,\n unoptimized,\n loader,\n onLoadingCompleteRef,\n setBlurComplete,\n setIntersection,\n onLoad,\n onError,\n isVisible,\n noscriptSizes,\n ...rest\n}: ImageElementProps) => {\n loading = isLazy ? 'lazy' : loading\n return (\n <>\n <img\n {...rest}\n {...imgAttributes}\n decoding=\"async\"\n data-nimg={layout}\n className={className}\n style={{ ...imgStyle, ...blurStyle }}\n ref={useCallback(\n (img: ImgElementWithDataProp) => {\n if (process.env.NODE_ENV !== 'production') {\n if (img && !srcString) {\n console.error(`Image is missing required \"src\" property:`, img)\n }\n }\n setIntersection(img)\n if (img?.complete) {\n handleLoading(\n img,\n srcString,\n layout,\n placeholder,\n onLoadingCompleteRef,\n setBlurComplete\n )\n }\n },\n [\n setIntersection,\n srcString,\n layout,\n placeholder,\n onLoadingCompleteRef,\n setBlurComplete,\n ]\n )}\n onLoad={(event) => {\n const img = event.currentTarget as ImgElementWithDataProp\n handleLoading(\n img,\n srcString,\n layout,\n placeholder,\n onLoadingCompleteRef,\n setBlurComplete\n )\n if (onLoad) {\n onLoad(event)\n }\n }}\n onError={(event) => {\n if (placeholder === 'blur') {\n // If the real image fails to load, this will still remove the placeholder.\n setBlurComplete(true)\n }\n if (onError) {\n onError(event)\n }\n }}\n />\n {(isLazy || placeholder === 'blur') && (\n <noscript>\n <img\n {...rest}\n // @ts-ignore - TODO: upgrade to `@types/react@17`\n loading={loading}\n decoding=\"async\"\n data-nimg={layout}\n style={imgStyle}\n className={className}\n // It's intended to keep `loading` before `src` because React updates\n // props in order which causes Safari/Firefox to not lazy load properly.\n // See https://github.com/facebook/react/issues/25883\n {...generateImgAttrs({\n config,\n src: srcString,\n unoptimized,\n layout,\n width: widthInt,\n quality: qualityInt,\n sizes: noscriptSizes,\n loader,\n })}\n />\n </noscript>\n )}\n </>\n )\n}\n\n/**\n * @deprecated The `next/legacy/image` component is deprecated and will be removed in a future version of Next.js. Please use `next/image` instead.\n */\nexport default function Image({\n src,\n sizes,\n unoptimized = false,\n priority = false,\n loading,\n lazyRoot = null,\n lazyBoundary,\n className,\n quality,\n width,\n height,\n style,\n objectFit,\n objectPosition,\n onLoadingComplete,\n placeholder = 'empty',\n blurDataURL,\n ...all\n}: ImageProps) {\n const configContext = useContext(ImageConfigContext)\n const config: ImageConfig = useMemo(() => {\n const c = configEnv || configContext || imageConfigDefault\n const allSizes = [...c.deviceSizes, ...c.imageSizes].sort((a, b) => a - b)\n const deviceSizes = c.deviceSizes.sort((a, b) => a - b)\n const qualities = c.qualities?.sort((a, b) => a - b)\n return {\n ...c,\n allSizes,\n deviceSizes,\n qualities, // During the SSR, configEnv (__NEXT_IMAGE_OPTS) does not include\n // security sensitive configs like `localPatterns`, which is needed\n // during the server render to ensure it's validated. Therefore use\n // configContext, which holds the config from the server for validation.\n localPatterns:\n typeof window === 'undefined'\n ? configContext?.localPatterns\n : c.localPatterns,\n }\n }, [configContext])\n\n let rest: Partial<ImageProps> = all\n let layout: NonNullable<LayoutValue> = sizes ? 'responsive' : 'intrinsic'\n if ('layout' in rest) {\n // Override default layout if the user specified one:\n if (rest.layout) layout = rest.layout\n\n // Remove property so it's not spread on <img>:\n delete rest.layout\n }\n\n let loader: ImageLoaderWithConfig = defaultImageLoader\n if ('loader' in rest) {\n if (rest.loader) {\n const customImageLoader = rest.loader\n loader = (obj) => {\n const { config: _, ...opts } = obj\n // The config object is internal only so we must\n // not pass it to the user-defined loader()\n return customImageLoader(opts)\n }\n }\n // Remove property so it's not spread on <img>\n delete rest.loader\n }\n\n let staticSrc = ''\n let isStaticAvif = false\n if (isStaticImport(src)) {\n const staticImageData = isStaticRequire(src) ? src.default : src\n\n if (!staticImageData.src) {\n throw new Error(\n `An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(\n staticImageData\n )}`\n )\n }\n blurDataURL = blurDataURL || staticImageData.blurDataURL\n staticSrc = staticImageData.src\n isStaticAvif = /\\.avif(?:\\?|$)/i.test(staticSrc)\n if (!layout || layout !== 'fill') {\n height = height || staticImageData.height\n width = width || staticImageData.width\n if (!staticImageData.height || !staticImageData.width) {\n throw new Error(\n `An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(\n staticImageData\n )}`\n )\n }\n }\n }\n src = typeof src === 'string' ? src : staticSrc\n\n // Generating a blurDataURL requires decoding the source image, so static AVIF\n // imports do not receive one while AVIF input optimization is disabled.\n if (isStaticAvif && placeholder === 'blur' && !blurDataURL) {\n placeholder = 'empty'\n }\n\n warnOnce(\n `Image with src \"${src}\" is using next/legacy/image which is deprecated and will be removed in a future version of Next.js.`\n )\n\n let isLazy =\n !priority && (loading === 'lazy' || typeof loading === 'undefined')\n if (src.startsWith('data:') || src.startsWith('blob:')) {\n // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n unoptimized = true\n isLazy = false\n }\n if (typeof window !== 'undefined' && loadedImageURLs.has(src)) {\n isLazy = false\n }\n if (config.unoptimized) {\n unoptimized = true\n }\n\n const [blurComplete, setBlurComplete] = useState(false)\n const [setIntersection, isIntersected, resetIntersected] =\n useIntersection<HTMLImageElement>({\n rootRef: lazyRoot,\n rootMargin: lazyBoundary || '200px',\n disabled: !isLazy,\n })\n const isVisible = !isLazy || isIntersected\n\n const wrapperStyle: JSX.IntrinsicElements['span']['style'] = {\n boxSizing: 'border-box',\n display: 'block',\n overflow: 'hidden',\n width: 'initial',\n height: 'initial',\n background: 'none',\n opacity: 1,\n border: 0,\n margin: 0,\n padding: 0,\n }\n const sizerStyle: JSX.IntrinsicElements['span']['style'] = {\n boxSizing: 'border-box',\n display: 'block',\n width: 'initial',\n height: 'initial',\n background: 'none',\n opacity: 1,\n border: 0,\n margin: 0,\n padding: 0,\n }\n let hasSizer = false\n let sizerSvgUrl: string | undefined\n const layoutStyle: ImgElementStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n\n boxSizing: 'border-box',\n padding: 0,\n border: 'none',\n margin: 'auto',\n\n display: 'block',\n width: 0,\n height: 0,\n minWidth: '100%',\n maxWidth: '100%',\n minHeight: '100%',\n maxHeight: '100%',\n\n objectFit,\n objectPosition,\n }\n\n let widthInt = getInt(width)\n let heightInt = getInt(height)\n const qualityInt = getInt(quality)\n\n if (process.env.NODE_ENV !== 'production') {\n if (!src) {\n // React doesn't show the stack trace and there's\n // no `src` to help identify which image, so we\n // instead console.error(ref) during mount.\n widthInt = widthInt || 1\n heightInt = heightInt || 1\n unoptimized = true\n } else {\n if (!VALID_LAYOUT_VALUES.includes(layout)) {\n throw new Error(\n `Image with src \"${src}\" has invalid \"layout\" property. Provided \"${layout}\" should be one of ${VALID_LAYOUT_VALUES.map(\n String\n ).join(',')}.`\n )\n }\n\n if (\n (typeof widthInt !== 'undefined' && isNaN(widthInt)) ||\n (typeof heightInt !== 'undefined' && isNaN(heightInt))\n ) {\n throw new Error(\n `Image with src \"${src}\" has invalid \"width\" or \"height\" property. These should be numeric values.`\n )\n }\n if (layout === 'fill' && (width || height)) {\n warnOnce(\n `Image with src \"${src}\" and \"layout='fill'\" has unused properties assigned. Please remove \"width\" and \"height\".`\n )\n }\n if (!VALID_LOADING_VALUES.includes(loading)) {\n throw new Error(\n `Image with src \"${src}\" has invalid \"loading\" property. Provided \"${loading}\" should be one of ${VALID_LOADING_VALUES.map(\n String\n ).join(',')}.`\n )\n }\n if (priority && loading === 'lazy') {\n throw new Error(\n `Image with src \"${src}\" has both \"priority\" and \"loading='lazy'\" properties. Only one should be used.`\n )\n }\n if (sizes && layout !== 'fill' && layout !== 'responsive') {\n warnOnce(\n `Image with src \"${src}\" has \"sizes\" property but it will be ignored. Only use \"sizes\" with \"layout='fill'\" or \"layout='responsive'\"`\n )\n }\n if (placeholder === 'blur') {\n if (layout !== 'fill' && (widthInt || 0) * (heightInt || 0) < 1600) {\n warnOnce(\n `Image with src \"${src}\" is smaller than 40x40. Consider removing the \"placeholder='blur'\" property to improve performance.`\n )\n }\n if (!blurDataURL) {\n const VALID_BLUR_EXT = ['jpeg', 'png', 'webp'] // should match next-image-loader\n\n throw new Error(\n `Image with src \"${src}\" has \"placeholder='blur'\" property but is missing the \"blurDataURL\" property.\n Possible solutions:\n - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\n - Change the \"src\" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(\n ','\n )} (animated images not supported)\n - Remove the \"placeholder\" property, effectively no blur effect\n Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`\n )\n }\n }\n if ('ref' in rest) {\n warnOnce(\n `Image with src \"${src}\" is using unsupported \"ref\" property. Consider using the \"onLoadingComplete\" property instead.`\n )\n }\n\n if (\n qualityInt &&\n config.qualities &&\n !config.qualities.includes(qualityInt)\n ) {\n warnOnce(\n `Image with src \"${src}\" is using quality \"${qualityInt}\" which is not configured in images.qualities [${config.qualities.join(', ')}]. Please update your config to [${[...config.qualities, qualityInt].sort().join(', ')}].` +\n `\\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-qualities`\n )\n }\n\n if (!unoptimized && loader !== defaultImageLoader) {\n const urlStr = loader({\n config,\n src,\n width: widthInt || 400,\n quality: qualityInt || 75,\n })\n let url: URL | undefined\n try {\n url = new URL(urlStr)\n } catch (err) {}\n if (urlStr === src || (url && url.pathname === src && !url.search)) {\n warnOnce(\n `Image with src \"${src}\" has a \"loader\" property that does not implement width. Please implement it or use the \"unoptimized\" property instead.` +\n `\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader-width`\n )\n }\n }\n\n if (style) {\n let overwrittenStyles = Object.keys(style).filter(\n (key) => key in layoutStyle\n )\n if (overwrittenStyles.length) {\n warnOnce(\n `Image with src ${src} is assigned the following styles, which are overwritten by automatically-generated styles: ${overwrittenStyles.join(\n ', '\n )}`\n )\n }\n }\n\n if (\n typeof window !== 'undefined' &&\n !perfObserver &&\n window.PerformanceObserver\n ) {\n perfObserver = new PerformanceObserver((entryList) => {\n for (const entry of entryList.getEntries()) {\n // @ts-ignore - missing \"LargestContentfulPaint\" class with \"element\" prop\n const imgSrc = entry?.element?.src || ''\n const lcpImage = allImgs.get(imgSrc)\n if (\n lcpImage &&\n !lcpImage.priority &&\n lcpImage.placeholder !== 'blur' &&\n !lcpImage.src.startsWith('data:') &&\n !lcpImage.src.startsWith('blob:')\n ) {\n // https://web.dev/lcp/#measure-lcp-in-javascript\n warnOnce(\n `Image with src \"${lcpImage.src}\" was detected as the Largest Contentful Paint (LCP). Please add the \"priority\" property if this image is above the fold.` +\n `\\nRead more: https://nextjs.org/docs/api-reference/next/legacy/image#priority`\n )\n }\n }\n })\n try {\n perfObserver.observe({\n type: 'largest-contentful-paint',\n buffered: true,\n })\n } catch (err) {\n // Log error but don't crash the app\n console.error(err)\n }\n }\n }\n }\n const imgStyle = Object.assign({}, style, layoutStyle)\n const blurStyle =\n placeholder === 'blur' && !blurComplete\n ? {\n backgroundSize: objectFit || 'cover',\n backgroundPosition: objectPosition || '0% 0%',\n filter: 'blur(20px)',\n backgroundImage: `url(\"${blurDataURL}\")`,\n }\n : {}\n if (layout === 'fill') {\n // <Image src=\"i.png\" layout=\"fill\" />\n wrapperStyle.display = 'block'\n wrapperStyle.position = 'absolute'\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (\n typeof widthInt !== 'undefined' &&\n typeof heightInt !== 'undefined'\n ) {\n // <Image src=\"i.png\" width=\"100\" height=\"100\" />\n const quotient = heightInt / widthInt\n const paddingTop = isNaN(quotient) ? '100%' : `${quotient * 100}%`\n if (layout === 'responsive') {\n // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"responsive\" />\n wrapperStyle.display = 'block'\n wrapperStyle.position = 'relative'\n hasSizer = true\n sizerStyle.paddingTop = paddingTop\n } else if (layout === 'intrinsic') {\n // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"intrinsic\" />\n wrapperStyle.display = 'inline-block'\n wrapperStyle.position = 'relative'\n wrapperStyle.maxWidth = '100%'\n hasSizer = true\n sizerStyle.maxWidth = '100%'\n sizerSvgUrl = `data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27${widthInt}%27%20height=%27${heightInt}%27/%3e`\n } else if (layout === 'fixed') {\n // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"fixed\" />\n wrapperStyle.display = 'inline-block'\n wrapperStyle.position = 'relative'\n wrapperStyle.width = widthInt\n wrapperStyle.height = heightInt\n }\n } else {\n // <Image src=\"i.png\" />\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n `Image with src \"${src}\" must use \"width\" and \"height\" properties or \"layout='fill'\" property.`\n )\n }\n }\n\n let imgAttributes: GenImgAttrsResult = {\n src: emptyDataURL,\n srcSet: undefined,\n sizes: undefined,\n }\n\n if (isVisible) {\n imgAttributes = generateImgAttrs({\n config,\n src,\n unoptimized,\n layout,\n width: widthInt,\n quality: qualityInt,\n sizes,\n loader,\n })\n }\n\n let srcString: string = src\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined') {\n let fullUrl: URL\n try {\n fullUrl = new URL(imgAttributes.src)\n } catch (e) {\n fullUrl = new URL(imgAttributes.src, window.location.href)\n }\n allImgs.set(fullUrl.href, { src, priority, placeholder })\n }\n }\n\n const linkProps:\n | React.DetailedHTMLProps<\n React.LinkHTMLAttributes<HTMLLinkElement>,\n HTMLLinkElement\n >\n | undefined = supportsFloat\n ? undefined\n : {\n imageSrcSet: imgAttributes.srcSet,\n imageSizes: imgAttributes.sizes,\n crossOrigin: rest.crossOrigin,\n referrerPolicy: rest.referrerPolicy,\n }\n\n const useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n const onLoadingCompleteRef = useRef(onLoadingComplete)\n\n const previousImageSrc = useRef<string | StaticImport>(src)\n useEffect(() => {\n onLoadingCompleteRef.current = onLoadingComplete\n }, [onLoadingComplete])\n\n useLayoutEffect(() => {\n if (previousImageSrc.current !== src) {\n resetIntersected()\n previousImageSrc.current = src\n }\n }, [resetIntersected, src])\n\n const imgElementArgs = {\n isLazy,\n imgAttributes,\n heightInt,\n widthInt,\n qualityInt,\n layout,\n className,\n imgStyle,\n blurStyle,\n loading,\n config,\n unoptimized,\n placeholder,\n loader,\n srcString,\n onLoadingCompleteRef,\n setBlurComplete,\n setIntersection,\n isVisible,\n noscriptSizes: sizes,\n ...rest,\n }\n return (\n <>\n <span style={wrapperStyle}>\n {hasSizer ? (\n <span style={sizerStyle}>\n {sizerSvgUrl ? (\n <img\n style={{\n display: 'block',\n maxWidth: '100%',\n width: 'initial',\n height: 'initial',\n background: 'none',\n opacity: 1,\n border: 0,\n margin: 0,\n padding: 0,\n }}\n alt=\"\"\n aria-hidden={true}\n src={sizerSvgUrl}\n />\n ) : null}\n </span>\n ) : null}\n <ImageElement {...imgElementArgs} />\n </span>\n {!supportsFloat && priority ? (\n // Note how we omit the `href` attribute, as it would only be relevant\n // for browsers that do not support `imagesrcset`, and in those cases\n // it would likely cause the incorrect image to be preloaded.\n //\n // https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset\n <Head>\n <link\n key={\n '__nimg-' +\n imgAttributes.src +\n imgAttributes.srcSet +\n imgAttributes.sizes\n }\n rel=\"preload\"\n as=\"image\"\n href={imgAttributes.srcSet ? undefined : imgAttributes.src}\n {...linkProps}\n />\n </Head>\n ) : null}\n </>\n )\n}\n"],"names":["React","useRef","useEffect","useCallback","useContext","useMemo","useState","ReactDOM","Head","imageConfigDefault","VALID_LOADERS","useIntersection","ImageConfigContext","warnOnce","normalizePathTrailingSlash","findClosestQuality","getAssetToken","getDeploymentId","normalizeSrc","src","slice","supportsFloat","preload","configEnv","process","env","__NEXT_IMAGE_OPTS","loadedImageURLs","Set","allImgs","Map","perfObserver","emptyDataURL","window","globalThis","__NEXT_IMAGE_IMPORTED","VALID_LOADING_VALUES","undefined","imgixLoader","config","width","quality","url","URL","path","params","searchParams","set","getAll","join","get","toString","href","akamaiLoader","cloudinaryLoader","paramsString","customLoader","Error","defaultLoader","dangerouslyAllowSVG","split","endsWith","deploymentId","startsWith","includes","qIndex","indexOf","URLSearchParams","srcDpl","delete","remaining","localPatterns","length","pathname","search","NODE_ENV","missingValues","push","JSON","stringify","NEXT_RUNTIME","hasLocalMatch","require","domains","remotePatterns","parsedSrc","err","console","error","hasRemoteMatch","hostname","q","encodeURIComponent","loaders","VALID_LAYOUT_VALUES","isStaticRequire","default","isStaticImageData","isStaticImport","getWidths","deviceSizes","allSizes","layout","sizes","viewportWidthRe","percentSizes","match","exec","parseInt","smallestRatio","Math","min","widths","filter","s","kind","map","w","find","p","generateImgAttrs","unoptimized","loader","append","srcSet","last","i","getInt","x","defaultImageLoader","loaderProps","loaderKey","load","handleLoading","img","placeholder","onLoadingCompleteRef","setBlurComplete","decode","Promise","resolve","catch","then","parentNode","add","current","naturalWidth","naturalHeight","parentElement","parent","getComputedStyle","position","display","ImageElement","imgAttributes","heightInt","widthInt","qualityInt","className","imgStyle","blurStyle","isLazy","loading","srcString","setIntersection","onLoad","onError","isVisible","noscriptSizes","rest","decoding","data-nimg","style","ref","complete","event","currentTarget","noscript","Image","priority","lazyRoot","lazyBoundary","height","objectFit","objectPosition","onLoadingComplete","blurDataURL","all","configContext","c","imageSizes","sort","a","b","qualities","customImageLoader","obj","_","opts","staticSrc","isStaticAvif","staticImageData","test","has","blurComplete","isIntersected","resetIntersected","rootRef","rootMargin","disabled","wrapperStyle","boxSizing","overflow","background","opacity","border","margin","padding","sizerStyle","hasSizer","sizerSvgUrl","layoutStyle","top","left","bottom","right","minWidth","maxWidth","minHeight","maxHeight","String","isNaN","VALID_BLUR_EXT","urlStr","overwrittenStyles","Object","keys","key","PerformanceObserver","entryList","entry","getEntries","imgSrc","element","lcpImage","observe","type","buffered","assign","backgroundSize","backgroundPosition","backgroundImage","quotient","paddingTop","fullUrl","e","location","linkProps","imageSrcSet","crossOrigin","referrerPolicy","useLayoutEffect","previousImageSrc","imgElementArgs","span","alt","aria-hidden","link","rel","as"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../../src/client/legacy/image.tsx"],"sourcesContent":["'use client'\n\nimport React, {\n useRef,\n useEffect,\n useCallback,\n useContext,\n useMemo,\n useState,\n type JSX,\n} from 'react'\nimport * as ReactDOM from 'react-dom'\nimport Head from '../../shared/lib/head'\nimport {\n imageConfigDefault,\n VALID_LOADERS,\n} from '../../shared/lib/image-config'\nimport type {\n ImageConfigComplete,\n LoaderValue,\n} from '../../shared/lib/image-config'\nimport { useIntersection } from '../use-intersection'\nimport { ImageConfigContext } from '../../shared/lib/image-config-context.shared-runtime'\nimport { warnOnce } from '../../shared/lib/utils/warn-once'\nimport { normalizePathTrailingSlash } from '../normalize-trailing-slash'\nimport { findClosestQuality } from '../../shared/lib/find-closest-quality'\nimport { getAssetToken, getDeploymentId } from '../../shared/lib/deployment-id'\n\nfunction normalizeSrc(src: string): string {\n return src[0] === '/' ? src.slice(1) : src\n}\n\nconst supportsFloat = typeof ReactDOM.preload === 'function'\nconst configEnv = process.env.__NEXT_IMAGE_OPTS as any as ImageConfigComplete\nconst loadedImageURLs = new Set<string>()\nconst allImgs = new Map<\n string,\n { src: string; priority: boolean; placeholder: string }\n>()\nlet perfObserver: PerformanceObserver | undefined\nconst emptyDataURL =\n 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n\nif (typeof window === 'undefined') {\n ;(globalThis as any).__NEXT_IMAGE_IMPORTED = true\n}\n\nconst VALID_LOADING_VALUES = ['lazy', 'eager', undefined] as const\ntype LoadingValue = (typeof VALID_LOADING_VALUES)[number]\ntype ImageConfig = ImageConfigComplete & { allSizes: number[] }\nexport type ImageLoader = (resolverProps: ImageLoaderProps) => string\n\nexport type ImageLoaderProps = {\n src: string\n width: number\n quality?: number\n}\n\n// Do not export - this is an internal type only\n// because `next.config.js` is only meant for the\n// built-in loaders, not for a custom loader() prop.\ntype ImageLoaderWithConfig = (\n resolverProps: ImageLoaderPropsWithConfig\n) => string\ntype ImageLoaderPropsWithConfig = ImageLoaderProps & {\n config: Readonly<ImageConfig>\n}\n\nfunction imgixLoader({\n config,\n src,\n width,\n quality,\n}: ImageLoaderPropsWithConfig): string {\n // Demo: https://static.imgix.net/daisy.png?auto=format&fit=max&w=300\n const url = new URL(`${config.path}${normalizeSrc(src)}`)\n const params = url.searchParams\n\n // auto params can be combined with comma separation, or reiteration\n params.set('auto', params.getAll('auto').join(',') || 'format')\n params.set('fit', params.get('fit') || 'max')\n params.set('w', params.get('w') || width.toString())\n\n if (quality) {\n params.set('q', quality.toString())\n }\n\n return url.href\n}\n\nfunction akamaiLoader({\n config,\n src,\n width,\n}: ImageLoaderPropsWithConfig): string {\n return `${config.path}${normalizeSrc(src)}?imwidth=${width}`\n}\n\nfunction cloudinaryLoader({\n config,\n src,\n width,\n quality,\n}: ImageLoaderPropsWithConfig): string {\n // Demo: https://res.cloudinary.com/demo/image/upload/w_300,c_limit,q_auto/turtles.jpg\n const params = ['f_auto', 'c_limit', 'w_' + width, 'q_' + (quality || 'auto')]\n const paramsString = params.join(',') + '/'\n return `${config.path}${paramsString}${normalizeSrc(src)}`\n}\n\nfunction customLoader({ src }: ImageLoaderProps): string {\n throw new Error(\n `Image with src \"${src}\" is missing \"loader\" prop.` +\n `\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader`\n )\n}\n\nfunction defaultLoader({\n config,\n src,\n width,\n quality,\n}: ImageLoaderPropsWithConfig): string {\n if (!config.dangerouslyAllowSVG && src.split('?', 1)[0].endsWith('.svg')) {\n // Special case to make svg serve as-is to avoid proxying\n // through the built-in Image Optimization API.\n return src\n }\n\n // Extract dpl parameter early so validation uses the clean URL\n let deploymentId = getDeploymentId()\n if (src.startsWith('/') && !src.startsWith('//')) {\n if (src.includes('/_next/static/immutable') && !getAssetToken()) {\n // immutable static asset and supported by platform, don't add `?dpl=`\n deploymentId = undefined\n } else {\n // We unfortunately can't easily use `new URL()` here, because it normalizes the URL which causes\n // double-encoding with the `encodeURIComponent(src)` below\n const qIndex = src.indexOf('?')\n if (qIndex !== -1) {\n const params = new URLSearchParams(src.slice(qIndex + 1))\n const srcDpl = params.get('dpl')\n if (srcDpl) {\n deploymentId = srcDpl\n params.delete('dpl')\n const remaining = params.toString()\n src = src.slice(0, qIndex) + (remaining ? '?' + remaining : '')\n }\n }\n }\n }\n\n if (\n src.startsWith('/') &&\n src.includes('?') &&\n config.localPatterns?.length === 1 &&\n config.localPatterns[0].pathname === '**' &&\n config.localPatterns[0].search === ''\n ) {\n throw new Error(\n `Image with src \"${src}\" is using a query string which is not configured in images.localPatterns.` +\n `\\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`\n )\n }\n\n if (process.env.NODE_ENV !== 'production') {\n const missingValues = []\n\n // these should always be provided but make sure they are\n if (!src) missingValues.push('src')\n if (!width) missingValues.push('width')\n\n if (missingValues.length > 0) {\n throw new Error(\n `Next Image Optimization requires ${missingValues.join(\n ', '\n )} to be provided. Make sure you pass them as props to the \\`next/image\\` component. Received: ${JSON.stringify(\n { src, width, quality }\n )}`\n )\n }\n\n if (src.startsWith('//')) {\n throw new Error(\n `Failed to parse src \"${src}\" on \\`next/image\\`, protocol-relative URL (//) must be changed to an absolute URL (http:// or https://)`\n )\n }\n\n if (src.startsWith('/') && config.localPatterns) {\n if (\n process.env.NODE_ENV !== 'test' &&\n // micromatch isn't compatible with edge runtime\n process.env.NEXT_RUNTIME !== 'edge'\n ) {\n // We use dynamic require because this should only error in development\n const { hasLocalMatch } =\n require('../../shared/lib/match-local-pattern') as typeof import('../../shared/lib/match-local-pattern')\n if (!hasLocalMatch(config.localPatterns, src)) {\n throw new Error(\n `Invalid src prop (${src}) on \\`next/image\\` does not match \\`images.localPatterns\\` configured in your \\`next.config.js\\`\\n` +\n `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`\n )\n }\n }\n }\n\n if (!src.startsWith('/') && (config.domains || config.remotePatterns)) {\n let parsedSrc: URL\n try {\n parsedSrc = new URL(src)\n } catch (err) {\n console.error(err)\n throw new Error(\n `Failed to parse src \"${src}\" on \\`next/image\\`, if using relative image it must start with a leading slash \"/\" or be an absolute URL (http:// or https://)`\n )\n }\n\n if (\n process.env.NODE_ENV !== 'test' &&\n // micromatch isn't compatible with edge runtime\n process.env.NEXT_RUNTIME !== 'edge'\n ) {\n // We use dynamic require because this should only error in development\n const { hasRemoteMatch } =\n require('../../shared/lib/match-remote-pattern') as typeof import('../../shared/lib/match-remote-pattern')\n if (!hasRemoteMatch(config.domains, config.remotePatterns, parsedSrc)) {\n throw new Error(\n `Invalid src prop (${src}) on \\`next/image\\`, hostname \"${parsedSrc.hostname}\" is not configured under images in your \\`next.config.js\\`\\n` +\n `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-host`\n )\n }\n }\n }\n }\n\n const q = findClosestQuality(quality, config)\n\n return `${normalizePathTrailingSlash(config.path)}?url=${encodeURIComponent(\n src\n )}&w=${width}&q=${q}${\n src.startsWith('/') && deploymentId ? `&dpl=${deploymentId}` : ''\n }`\n}\n\nconst loaders = new Map<\n LoaderValue,\n (props: ImageLoaderPropsWithConfig) => string\n>([\n ['default', defaultLoader],\n ['imgix', imgixLoader],\n ['cloudinary', cloudinaryLoader],\n ['akamai', akamaiLoader],\n ['custom', customLoader],\n])\n\nconst VALID_LAYOUT_VALUES = [\n 'fill',\n 'fixed',\n 'intrinsic',\n 'responsive',\n undefined,\n] as const\ntype LayoutValue = (typeof VALID_LAYOUT_VALUES)[number]\n\ntype PlaceholderValue = 'blur' | 'empty'\n\ntype OnLoadingComplete = (result: {\n naturalWidth: number\n naturalHeight: number\n}) => void\n\ntype ImgElementStyle = NonNullable<JSX.IntrinsicElements['img']['style']>\n\ntype ImgElementWithDataProp = HTMLImageElement & {\n 'data-loaded-src': string | undefined\n}\n\nexport interface StaticImageData {\n src: string\n height: number\n width: number\n blurDataURL?: string\n}\n\ninterface StaticRequire {\n default: StaticImageData\n}\n\ntype StaticImport = StaticRequire | StaticImageData\n\ntype SafeNumber = number | `${number}`\n\nfunction isStaticRequire(\n src: StaticRequire | StaticImageData\n): src is StaticRequire {\n return (src as StaticRequire).default !== undefined\n}\n\nfunction isStaticImageData(\n src: StaticRequire | StaticImageData\n): src is StaticImageData {\n return (src as StaticImageData).src !== undefined\n}\n\nfunction isStaticImport(src: string | StaticImport): src is StaticImport {\n return (\n typeof src === 'object' &&\n (isStaticRequire(src as StaticImport) ||\n isStaticImageData(src as StaticImport))\n )\n}\n\nexport type ImageProps = Omit<\n JSX.IntrinsicElements['img'],\n 'src' | 'srcSet' | 'ref' | 'width' | 'height' | 'loading'\n> & {\n src: string | StaticImport\n width?: SafeNumber\n height?: SafeNumber\n layout?: LayoutValue\n loader?: ImageLoader\n quality?: SafeNumber\n priority?: boolean\n loading?: LoadingValue\n lazyRoot?: React.RefObject<HTMLElement | null> | null\n lazyBoundary?: string\n placeholder?: PlaceholderValue\n blurDataURL?: string\n unoptimized?: boolean\n objectFit?: ImgElementStyle['objectFit']\n objectPosition?: ImgElementStyle['objectPosition']\n onLoadingComplete?: OnLoadingComplete\n}\n\ntype ImageElementProps = Omit<ImageProps, 'src' | 'loader'> & {\n srcString: string\n imgAttributes: GenImgAttrsResult\n heightInt: number | undefined\n widthInt: number | undefined\n qualityInt: number | undefined\n layout: LayoutValue\n imgStyle: ImgElementStyle\n blurStyle: ImgElementStyle\n isLazy: boolean\n loading: LoadingValue\n config: ImageConfig\n unoptimized: boolean\n loader: ImageLoaderWithConfig\n placeholder: PlaceholderValue\n onLoadingCompleteRef: React.MutableRefObject<OnLoadingComplete | undefined>\n setBlurComplete: (b: boolean) => void\n setIntersection: (img: HTMLImageElement | null) => void\n isVisible: boolean\n noscriptSizes: string | undefined\n}\n\nfunction getWidths(\n { deviceSizes, allSizes }: ImageConfig,\n width: number | undefined,\n layout: LayoutValue,\n sizes: string | undefined\n): { widths: number[]; kind: 'w' | 'x' } {\n if (sizes && (layout === 'fill' || layout === 'responsive')) {\n // Find all the \"vw\" percent sizes used in the sizes prop\n const viewportWidthRe = /(^|\\s)(1?\\d?\\d)vw/g\n const percentSizes = []\n for (let match; (match = viewportWidthRe.exec(sizes)); match) {\n percentSizes.push(parseInt(match[2]))\n }\n if (percentSizes.length) {\n const smallestRatio = Math.min(...percentSizes) * 0.01\n return {\n widths: allSizes.filter((s) => s >= deviceSizes[0] * smallestRatio),\n kind: 'w',\n }\n }\n return { widths: allSizes, kind: 'w' }\n }\n if (\n typeof width !== 'number' ||\n layout === 'fill' ||\n layout === 'responsive'\n ) {\n return { widths: deviceSizes, kind: 'w' }\n }\n\n const widths = [\n ...new Set(\n // > This means that most OLED screens that say they are 3x resolution,\n // > are actually 3x in the green color, but only 1.5x in the red and\n // > blue colors. Showing a 3x resolution image in the app vs a 2x\n // > resolution image will be visually the same, though the 3x image\n // > takes significantly more data. Even true 3x resolution screens are\n // > wasteful as the human eye cannot see that level of detail without\n // > something like a magnifying glass.\n // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html\n [width, width * 2 /*, width * 3*/].map(\n (w) => allSizes.find((p) => p >= w) || allSizes[allSizes.length - 1]\n )\n ),\n ]\n return { widths, kind: 'x' }\n}\n\ntype GenImgAttrsData = {\n config: ImageConfig\n src: string\n unoptimized: boolean\n layout: LayoutValue\n loader: ImageLoaderWithConfig\n width?: number\n quality?: number\n sizes?: string\n}\n\ntype GenImgAttrsResult = {\n src: string\n srcSet: string | undefined\n sizes: string | undefined\n}\n\nfunction generateImgAttrs({\n config,\n src,\n unoptimized,\n layout,\n width,\n quality,\n sizes,\n loader,\n}: GenImgAttrsData): GenImgAttrsResult {\n if (unoptimized) {\n if (src.startsWith('/') && !src.startsWith('//')) {\n let deploymentId = getDeploymentId()\n if (src.includes('/_next/static/immutable') && !getAssetToken()) {\n // immutable static asset and supported by platform, don't add `?dpl=`\n deploymentId = undefined\n } else if (deploymentId) {\n // We unfortunately can't easily use `new URL()` here, because it normalizes the URL which causes\n // double-encoding with the `encodeURIComponent(src)` below\n const qIndex = src.indexOf('?')\n if (qIndex !== -1) {\n const params = new URLSearchParams(src.slice(qIndex + 1))\n const srcDpl = params.get('dpl')\n if (!srcDpl) {\n // src is missing the dpl parameter, but we have a deploymentId, so add it to the src URL\n params.append('dpl', deploymentId)\n src = src.slice(0, qIndex) + '?' + params.toString()\n }\n } else {\n // src is missing the dpl parameter, but we have a deploymentId, so add it to the src URL\n src = src + `?dpl=${deploymentId}`\n }\n }\n }\n return { src, srcSet: undefined, sizes: undefined }\n }\n\n const { widths, kind } = getWidths(config, width, layout, sizes)\n const last = widths.length - 1\n\n return {\n sizes: !sizes && kind === 'w' ? '100vw' : sizes,\n srcSet: widths\n .map(\n (w, i) =>\n `${loader({ config, src, quality, width: w })} ${\n kind === 'w' ? w : i + 1\n }${kind}`\n )\n .join(', '),\n\n // It's intended to keep `src` the last attribute because React updates\n // attributes in order. If we keep `src` the first one, Safari will\n // immediately start to fetch `src`, before `sizes` and `srcSet` are even\n // updated by React. That causes multiple unnecessary requests if `srcSet`\n // and `sizes` are defined.\n // This bug cannot be reproduced in Chrome or Firefox.\n src: loader({ config, src, quality, width: widths[last] }),\n }\n}\n\nfunction getInt(x: unknown): number | undefined {\n if (typeof x === 'number') {\n return x\n }\n if (typeof x === 'string') {\n return parseInt(x, 10)\n }\n return undefined\n}\n\nfunction defaultImageLoader(loaderProps: ImageLoaderPropsWithConfig) {\n const loaderKey = loaderProps.config?.loader || 'default'\n const load = loaders.get(loaderKey)\n if (load) {\n return load(loaderProps)\n }\n throw new Error(\n `Unknown \"loader\" found in \"next.config.js\". Expected: ${VALID_LOADERS.join(\n ', '\n )}. Received: ${loaderKey}`\n )\n}\n\n// See https://stackoverflow.com/q/39777833/266535 for why we use this ref\n// handler instead of the img's onLoad attribute.\nfunction handleLoading(\n img: ImgElementWithDataProp,\n src: string,\n layout: LayoutValue,\n placeholder: PlaceholderValue,\n onLoadingCompleteRef: React.MutableRefObject<OnLoadingComplete | undefined>,\n setBlurComplete: (b: boolean) => void\n) {\n if (!img || img.src === emptyDataURL || img['data-loaded-src'] === src) {\n return\n }\n img['data-loaded-src'] = src\n const p = 'decode' in img ? img.decode() : Promise.resolve()\n p.catch(() => {}).then(() => {\n if (!img.parentNode) {\n // Exit early in case of race condition:\n // - onload() is called\n // - decode() is called but incomplete\n // - unmount is called\n // - decode() completes\n return\n }\n loadedImageURLs.add(src)\n if (placeholder === 'blur') {\n setBlurComplete(true)\n }\n if (onLoadingCompleteRef?.current) {\n const { naturalWidth, naturalHeight } = img\n // Pass back read-only primitive values but not the\n // underlying DOM element because it could be misused.\n onLoadingCompleteRef.current({ naturalWidth, naturalHeight })\n }\n if (process.env.NODE_ENV !== 'production') {\n if (img.parentElement?.parentElement) {\n const parent = getComputedStyle(img.parentElement.parentElement)\n if (!parent.position) {\n // The parent has not been rendered to the dom yet and therefore it has no position. Skip the warnings for such cases.\n } else if (layout === 'responsive' && parent.display === 'flex') {\n warnOnce(\n `Image with src \"${src}\" may not render properly as a child of a flex container. Consider wrapping the image with a div to configure the width.`\n )\n } else if (\n layout === 'fill' &&\n parent.position !== 'relative' &&\n parent.position !== 'fixed' &&\n parent.position !== 'absolute'\n ) {\n warnOnce(\n `Image with src \"${src}\" may not render properly with a parent using position:\"${parent.position}\". Consider changing the parent style to position:\"relative\" with a width and height.`\n )\n }\n }\n }\n })\n}\n\nconst ImageElement = ({\n imgAttributes,\n heightInt,\n widthInt,\n qualityInt,\n layout,\n className,\n imgStyle,\n blurStyle,\n isLazy,\n placeholder,\n loading,\n srcString,\n config,\n unoptimized,\n loader,\n onLoadingCompleteRef,\n setBlurComplete,\n setIntersection,\n onLoad,\n onError,\n isVisible,\n noscriptSizes,\n ...rest\n}: ImageElementProps) => {\n loading = isLazy ? 'lazy' : loading\n return (\n <>\n <img\n {...rest}\n {...imgAttributes}\n decoding=\"async\"\n data-nimg={layout}\n className={className}\n style={{ ...imgStyle, ...blurStyle }}\n ref={useCallback(\n (img: ImgElementWithDataProp) => {\n if (process.env.NODE_ENV !== 'production') {\n if (img && !srcString) {\n console.error(`Image is missing required \"src\" property:`, img)\n }\n }\n setIntersection(img)\n if (img?.complete) {\n handleLoading(\n img,\n srcString,\n layout,\n placeholder,\n onLoadingCompleteRef,\n setBlurComplete\n )\n }\n },\n [\n setIntersection,\n srcString,\n layout,\n placeholder,\n onLoadingCompleteRef,\n setBlurComplete,\n ]\n )}\n onLoad={(event) => {\n const img = event.currentTarget as ImgElementWithDataProp\n handleLoading(\n img,\n srcString,\n layout,\n placeholder,\n onLoadingCompleteRef,\n setBlurComplete\n )\n if (onLoad) {\n onLoad(event)\n }\n }}\n onError={(event) => {\n if (placeholder === 'blur') {\n // If the real image fails to load, this will still remove the placeholder.\n setBlurComplete(true)\n }\n if (onError) {\n onError(event)\n }\n }}\n />\n {(isLazy || placeholder === 'blur') && (\n <noscript>\n <img\n {...rest}\n // @ts-ignore - TODO: upgrade to `@types/react@17`\n loading={loading}\n decoding=\"async\"\n data-nimg={layout}\n style={imgStyle}\n className={className}\n // It's intended to keep `loading` before `src` because React updates\n // props in order which causes Safari/Firefox to not lazy load properly.\n // See https://github.com/facebook/react/issues/25883\n {...generateImgAttrs({\n config,\n src: srcString,\n unoptimized,\n layout,\n width: widthInt,\n quality: qualityInt,\n sizes: noscriptSizes,\n loader,\n })}\n />\n </noscript>\n )}\n </>\n )\n}\n\n/**\n * @deprecated The `next/legacy/image` component is deprecated and will be removed in a future version of Next.js. Please use `next/image` instead.\n */\nexport default function Image({\n src,\n sizes,\n unoptimized = false,\n priority = false,\n loading,\n lazyRoot = null,\n lazyBoundary,\n className,\n quality,\n width,\n height,\n style,\n objectFit,\n objectPosition,\n onLoadingComplete,\n placeholder = 'empty',\n blurDataURL,\n ...all\n}: ImageProps) {\n const configContext = useContext(ImageConfigContext)\n const config: ImageConfig = useMemo(() => {\n const c = configEnv || configContext || imageConfigDefault\n const allSizes = [...c.deviceSizes, ...c.imageSizes].sort((a, b) => a - b)\n const deviceSizes = c.deviceSizes.sort((a, b) => a - b)\n const qualities = c.qualities?.sort((a, b) => a - b)\n return {\n ...c,\n allSizes,\n deviceSizes,\n qualities, // During the SSR, configEnv (__NEXT_IMAGE_OPTS) does not include\n // security sensitive configs like `localPatterns`, which is needed\n // during the server render to ensure it's validated. Therefore use\n // configContext, which holds the config from the server for validation.\n localPatterns:\n typeof window === 'undefined'\n ? configContext?.localPatterns\n : c.localPatterns,\n }\n }, [configContext])\n\n let rest: Partial<ImageProps> = all\n let layout: NonNullable<LayoutValue> = sizes ? 'responsive' : 'intrinsic'\n if ('layout' in rest) {\n // Override default layout if the user specified one:\n if (rest.layout) layout = rest.layout\n\n // Remove property so it's not spread on <img>:\n delete rest.layout\n }\n\n let loader: ImageLoaderWithConfig = defaultImageLoader\n if ('loader' in rest) {\n if (rest.loader) {\n const customImageLoader = rest.loader\n loader = (obj) => {\n const { config: _, ...opts } = obj\n // The config object is internal only so we must\n // not pass it to the user-defined loader()\n return customImageLoader(opts)\n }\n }\n // Remove property so it's not spread on <img>\n delete rest.loader\n }\n\n let staticSrc = ''\n if (isStaticImport(src)) {\n const staticImageData = isStaticRequire(src) ? src.default : src\n\n if (!staticImageData.src) {\n throw new Error(\n `An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(\n staticImageData\n )}`\n )\n }\n blurDataURL = blurDataURL || staticImageData.blurDataURL\n staticSrc = staticImageData.src\n if (!layout || layout !== 'fill') {\n height = height || staticImageData.height\n width = width || staticImageData.width\n if (!staticImageData.height || !staticImageData.width) {\n throw new Error(\n `An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(\n staticImageData\n )}`\n )\n }\n }\n }\n src = typeof src === 'string' ? src : staticSrc\n\n warnOnce(\n `Image with src \"${src}\" is using next/legacy/image which is deprecated and will be removed in a future version of Next.js.`\n )\n\n let isLazy =\n !priority && (loading === 'lazy' || typeof loading === 'undefined')\n if (src.startsWith('data:') || src.startsWith('blob:')) {\n // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\n unoptimized = true\n isLazy = false\n }\n if (typeof window !== 'undefined' && loadedImageURLs.has(src)) {\n isLazy = false\n }\n if (config.unoptimized) {\n unoptimized = true\n }\n\n const [blurComplete, setBlurComplete] = useState(false)\n const [setIntersection, isIntersected, resetIntersected] =\n useIntersection<HTMLImageElement>({\n rootRef: lazyRoot,\n rootMargin: lazyBoundary || '200px',\n disabled: !isLazy,\n })\n const isVisible = !isLazy || isIntersected\n\n const wrapperStyle: JSX.IntrinsicElements['span']['style'] = {\n boxSizing: 'border-box',\n display: 'block',\n overflow: 'hidden',\n width: 'initial',\n height: 'initial',\n background: 'none',\n opacity: 1,\n border: 0,\n margin: 0,\n padding: 0,\n }\n const sizerStyle: JSX.IntrinsicElements['span']['style'] = {\n boxSizing: 'border-box',\n display: 'block',\n width: 'initial',\n height: 'initial',\n background: 'none',\n opacity: 1,\n border: 0,\n margin: 0,\n padding: 0,\n }\n let hasSizer = false\n let sizerSvgUrl: string | undefined\n const layoutStyle: ImgElementStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n\n boxSizing: 'border-box',\n padding: 0,\n border: 'none',\n margin: 'auto',\n\n display: 'block',\n width: 0,\n height: 0,\n minWidth: '100%',\n maxWidth: '100%',\n minHeight: '100%',\n maxHeight: '100%',\n\n objectFit,\n objectPosition,\n }\n\n let widthInt = getInt(width)\n let heightInt = getInt(height)\n const qualityInt = getInt(quality)\n\n if (process.env.NODE_ENV !== 'production') {\n if (!src) {\n // React doesn't show the stack trace and there's\n // no `src` to help identify which image, so we\n // instead console.error(ref) during mount.\n widthInt = widthInt || 1\n heightInt = heightInt || 1\n unoptimized = true\n } else {\n if (!VALID_LAYOUT_VALUES.includes(layout)) {\n throw new Error(\n `Image with src \"${src}\" has invalid \"layout\" property. Provided \"${layout}\" should be one of ${VALID_LAYOUT_VALUES.map(\n String\n ).join(',')}.`\n )\n }\n\n if (\n (typeof widthInt !== 'undefined' && isNaN(widthInt)) ||\n (typeof heightInt !== 'undefined' && isNaN(heightInt))\n ) {\n throw new Error(\n `Image with src \"${src}\" has invalid \"width\" or \"height\" property. These should be numeric values.`\n )\n }\n if (layout === 'fill' && (width || height)) {\n warnOnce(\n `Image with src \"${src}\" and \"layout='fill'\" has unused properties assigned. Please remove \"width\" and \"height\".`\n )\n }\n if (!VALID_LOADING_VALUES.includes(loading)) {\n throw new Error(\n `Image with src \"${src}\" has invalid \"loading\" property. Provided \"${loading}\" should be one of ${VALID_LOADING_VALUES.map(\n String\n ).join(',')}.`\n )\n }\n if (priority && loading === 'lazy') {\n throw new Error(\n `Image with src \"${src}\" has both \"priority\" and \"loading='lazy'\" properties. Only one should be used.`\n )\n }\n if (sizes && layout !== 'fill' && layout !== 'responsive') {\n warnOnce(\n `Image with src \"${src}\" has \"sizes\" property but it will be ignored. Only use \"sizes\" with \"layout='fill'\" or \"layout='responsive'\"`\n )\n }\n if (placeholder === 'blur') {\n if (layout !== 'fill' && (widthInt || 0) * (heightInt || 0) < 1600) {\n warnOnce(\n `Image with src \"${src}\" is smaller than 40x40. Consider removing the \"placeholder='blur'\" property to improve performance.`\n )\n }\n if (!blurDataURL) {\n const VALID_BLUR_EXT = ['jpeg', 'png', 'webp', 'avif'] // should match next-image-loader\n\n throw new Error(\n `Image with src \"${src}\" has \"placeholder='blur'\" property but is missing the \"blurDataURL\" property.\n Possible solutions:\n - Add a \"blurDataURL\" property, the contents should be a small Data URL to represent the image\n - Change the \"src\" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(\n ','\n )} (animated images not supported)\n - Remove the \"placeholder\" property, effectively no blur effect\n Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`\n )\n }\n }\n if ('ref' in rest) {\n warnOnce(\n `Image with src \"${src}\" is using unsupported \"ref\" property. Consider using the \"onLoadingComplete\" property instead.`\n )\n }\n\n if (\n qualityInt &&\n config.qualities &&\n !config.qualities.includes(qualityInt)\n ) {\n warnOnce(\n `Image with src \"${src}\" is using quality \"${qualityInt}\" which is not configured in images.qualities [${config.qualities.join(', ')}]. Please update your config to [${[...config.qualities, qualityInt].sort().join(', ')}].` +\n `\\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-qualities`\n )\n }\n\n if (!unoptimized && loader !== defaultImageLoader) {\n const urlStr = loader({\n config,\n src,\n width: widthInt || 400,\n quality: qualityInt || 75,\n })\n let url: URL | undefined\n try {\n url = new URL(urlStr)\n } catch (err) {}\n if (urlStr === src || (url && url.pathname === src && !url.search)) {\n warnOnce(\n `Image with src \"${src}\" has a \"loader\" property that does not implement width. Please implement it or use the \"unoptimized\" property instead.` +\n `\\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader-width`\n )\n }\n }\n\n if (style) {\n let overwrittenStyles = Object.keys(style).filter(\n (key) => key in layoutStyle\n )\n if (overwrittenStyles.length) {\n warnOnce(\n `Image with src ${src} is assigned the following styles, which are overwritten by automatically-generated styles: ${overwrittenStyles.join(\n ', '\n )}`\n )\n }\n }\n\n if (\n typeof window !== 'undefined' &&\n !perfObserver &&\n window.PerformanceObserver\n ) {\n perfObserver = new PerformanceObserver((entryList) => {\n for (const entry of entryList.getEntries()) {\n // @ts-ignore - missing \"LargestContentfulPaint\" class with \"element\" prop\n const imgSrc = entry?.element?.src || ''\n const lcpImage = allImgs.get(imgSrc)\n if (\n lcpImage &&\n !lcpImage.priority &&\n lcpImage.placeholder !== 'blur' &&\n !lcpImage.src.startsWith('data:') &&\n !lcpImage.src.startsWith('blob:')\n ) {\n // https://web.dev/lcp/#measure-lcp-in-javascript\n warnOnce(\n `Image with src \"${lcpImage.src}\" was detected as the Largest Contentful Paint (LCP). Please add the \"priority\" property if this image is above the fold.` +\n `\\nRead more: https://nextjs.org/docs/api-reference/next/legacy/image#priority`\n )\n }\n }\n })\n try {\n perfObserver.observe({\n type: 'largest-contentful-paint',\n buffered: true,\n })\n } catch (err) {\n // Log error but don't crash the app\n console.error(err)\n }\n }\n }\n }\n const imgStyle = Object.assign({}, style, layoutStyle)\n const blurStyle =\n placeholder === 'blur' && !blurComplete\n ? {\n backgroundSize: objectFit || 'cover',\n backgroundPosition: objectPosition || '0% 0%',\n filter: 'blur(20px)',\n backgroundImage: `url(\"${blurDataURL}\")`,\n }\n : {}\n if (layout === 'fill') {\n // <Image src=\"i.png\" layout=\"fill\" />\n wrapperStyle.display = 'block'\n wrapperStyle.position = 'absolute'\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (\n typeof widthInt !== 'undefined' &&\n typeof heightInt !== 'undefined'\n ) {\n // <Image src=\"i.png\" width=\"100\" height=\"100\" />\n const quotient = heightInt / widthInt\n const paddingTop = isNaN(quotient) ? '100%' : `${quotient * 100}%`\n if (layout === 'responsive') {\n // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"responsive\" />\n wrapperStyle.display = 'block'\n wrapperStyle.position = 'relative'\n hasSizer = true\n sizerStyle.paddingTop = paddingTop\n } else if (layout === 'intrinsic') {\n // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"intrinsic\" />\n wrapperStyle.display = 'inline-block'\n wrapperStyle.position = 'relative'\n wrapperStyle.maxWidth = '100%'\n hasSizer = true\n sizerStyle.maxWidth = '100%'\n sizerSvgUrl = `data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27${widthInt}%27%20height=%27${heightInt}%27/%3e`\n } else if (layout === 'fixed') {\n // <Image src=\"i.png\" width=\"100\" height=\"100\" layout=\"fixed\" />\n wrapperStyle.display = 'inline-block'\n wrapperStyle.position = 'relative'\n wrapperStyle.width = widthInt\n wrapperStyle.height = heightInt\n }\n } else {\n // <Image src=\"i.png\" />\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n `Image with src \"${src}\" must use \"width\" and \"height\" properties or \"layout='fill'\" property.`\n )\n }\n }\n\n let imgAttributes: GenImgAttrsResult = {\n src: emptyDataURL,\n srcSet: undefined,\n sizes: undefined,\n }\n\n if (isVisible) {\n imgAttributes = generateImgAttrs({\n config,\n src,\n unoptimized,\n layout,\n width: widthInt,\n quality: qualityInt,\n sizes,\n loader,\n })\n }\n\n let srcString: string = src\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof window !== 'undefined') {\n let fullUrl: URL\n try {\n fullUrl = new URL(imgAttributes.src)\n } catch (e) {\n fullUrl = new URL(imgAttributes.src, window.location.href)\n }\n allImgs.set(fullUrl.href, { src, priority, placeholder })\n }\n }\n\n const linkProps:\n | React.DetailedHTMLProps<\n React.LinkHTMLAttributes<HTMLLinkElement>,\n HTMLLinkElement\n >\n | undefined = supportsFloat\n ? undefined\n : {\n imageSrcSet: imgAttributes.srcSet,\n imageSizes: imgAttributes.sizes,\n crossOrigin: rest.crossOrigin,\n referrerPolicy: rest.referrerPolicy,\n }\n\n const useLayoutEffect =\n typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect\n const onLoadingCompleteRef = useRef(onLoadingComplete)\n\n const previousImageSrc = useRef<string | StaticImport>(src)\n useEffect(() => {\n onLoadingCompleteRef.current = onLoadingComplete\n }, [onLoadingComplete])\n\n useLayoutEffect(() => {\n if (previousImageSrc.current !== src) {\n resetIntersected()\n previousImageSrc.current = src\n }\n }, [resetIntersected, src])\n\n const imgElementArgs = {\n isLazy,\n imgAttributes,\n heightInt,\n widthInt,\n qualityInt,\n layout,\n className,\n imgStyle,\n blurStyle,\n loading,\n config,\n unoptimized,\n placeholder,\n loader,\n srcString,\n onLoadingCompleteRef,\n setBlurComplete,\n setIntersection,\n isVisible,\n noscriptSizes: sizes,\n ...rest,\n }\n return (\n <>\n <span style={wrapperStyle}>\n {hasSizer ? (\n <span style={sizerStyle}>\n {sizerSvgUrl ? (\n <img\n style={{\n display: 'block',\n maxWidth: '100%',\n width: 'initial',\n height: 'initial',\n background: 'none',\n opacity: 1,\n border: 0,\n margin: 0,\n padding: 0,\n }}\n alt=\"\"\n aria-hidden={true}\n src={sizerSvgUrl}\n />\n ) : null}\n </span>\n ) : null}\n <ImageElement {...imgElementArgs} />\n </span>\n {!supportsFloat && priority ? (\n // Note how we omit the `href` attribute, as it would only be relevant\n // for browsers that do not support `imagesrcset`, and in those cases\n // it would likely cause the incorrect image to be preloaded.\n //\n // https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset\n <Head>\n <link\n key={\n '__nimg-' +\n imgAttributes.src +\n imgAttributes.srcSet +\n imgAttributes.sizes\n }\n rel=\"preload\"\n as=\"image\"\n href={imgAttributes.srcSet ? undefined : imgAttributes.src}\n {...linkProps}\n />\n </Head>\n ) : null}\n </>\n )\n}\n"],"names":["React","useRef","useEffect","useCallback","useContext","useMemo","useState","ReactDOM","Head","imageConfigDefault","VALID_LOADERS","useIntersection","ImageConfigContext","warnOnce","normalizePathTrailingSlash","findClosestQuality","getAssetToken","getDeploymentId","normalizeSrc","src","slice","supportsFloat","preload","configEnv","process","env","__NEXT_IMAGE_OPTS","loadedImageURLs","Set","allImgs","Map","perfObserver","emptyDataURL","window","globalThis","__NEXT_IMAGE_IMPORTED","VALID_LOADING_VALUES","undefined","imgixLoader","config","width","quality","url","URL","path","params","searchParams","set","getAll","join","get","toString","href","akamaiLoader","cloudinaryLoader","paramsString","customLoader","Error","defaultLoader","dangerouslyAllowSVG","split","endsWith","deploymentId","startsWith","includes","qIndex","indexOf","URLSearchParams","srcDpl","delete","remaining","localPatterns","length","pathname","search","NODE_ENV","missingValues","push","JSON","stringify","NEXT_RUNTIME","hasLocalMatch","require","domains","remotePatterns","parsedSrc","err","console","error","hasRemoteMatch","hostname","q","encodeURIComponent","loaders","VALID_LAYOUT_VALUES","isStaticRequire","default","isStaticImageData","isStaticImport","getWidths","deviceSizes","allSizes","layout","sizes","viewportWidthRe","percentSizes","match","exec","parseInt","smallestRatio","Math","min","widths","filter","s","kind","map","w","find","p","generateImgAttrs","unoptimized","loader","append","srcSet","last","i","getInt","x","defaultImageLoader","loaderProps","loaderKey","load","handleLoading","img","placeholder","onLoadingCompleteRef","setBlurComplete","decode","Promise","resolve","catch","then","parentNode","add","current","naturalWidth","naturalHeight","parentElement","parent","getComputedStyle","position","display","ImageElement","imgAttributes","heightInt","widthInt","qualityInt","className","imgStyle","blurStyle","isLazy","loading","srcString","setIntersection","onLoad","onError","isVisible","noscriptSizes","rest","decoding","data-nimg","style","ref","complete","event","currentTarget","noscript","Image","priority","lazyRoot","lazyBoundary","height","objectFit","objectPosition","onLoadingComplete","blurDataURL","all","configContext","c","imageSizes","sort","a","b","qualities","customImageLoader","obj","_","opts","staticSrc","staticImageData","has","blurComplete","isIntersected","resetIntersected","rootRef","rootMargin","disabled","wrapperStyle","boxSizing","overflow","background","opacity","border","margin","padding","sizerStyle","hasSizer","sizerSvgUrl","layoutStyle","top","left","bottom","right","minWidth","maxWidth","minHeight","maxHeight","String","isNaN","VALID_BLUR_EXT","urlStr","overwrittenStyles","Object","keys","key","PerformanceObserver","entryList","entry","getEntries","imgSrc","element","lcpImage","observe","type","buffered","assign","backgroundSize","backgroundPosition","backgroundImage","quotient","paddingTop","fullUrl","e","location","linkProps","imageSrcSet","crossOrigin","referrerPolicy","useLayoutEffect","previousImageSrc","imgElementArgs","span","alt","aria-hidden","link","rel","as"],"mappings":"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","ignoreList":[0]}
@@ -17,7 +17,7 @@ async function fetchPkgInfo(pkg) {
17
17
  });
18
18
  }
19
19
  const data = await res.json();
20
- const versionData = data.versions["16.3.3"];
20
+ const versionData = data.versions["16.3.4"];
21
21
  return {
22
22
  os: versionData.os,
23
23
  cpu: versionData.cpu,
@@ -50,7 +50,7 @@ async function fetchPkgInfo(pkg) {
50
50
  const expectedSwcPkgs = Object.keys(nextOptionalDeps || {}).filter((pkg)=>pkg.startsWith('@next/swc-'));
51
51
  const patchDependency = (pkg, pkgData)=>{
52
52
  lockfileParsed.dependencies[pkg] = {
53
- version: "16.3.3",
53
+ version: "16.3.4",
54
54
  resolved: pkgData.tarball,
55
55
  integrity: pkgData.integrity,
56
56
  optional: true
@@ -58,7 +58,7 @@ async function fetchPkgInfo(pkg) {
58
58
  };
59
59
  const patchPackage = (pkg, pkgData)=>{
60
60
  lockfileParsed.packages[pkg] = {
61
- version: "16.3.3",
61
+ version: "16.3.4",
62
62
  resolved: pkgData.tarball,
63
63
  integrity: pkgData.integrity,
64
64
  cpu: pkgData.cpu,
@@ -5,7 +5,7 @@ import spawn from 'next/dist/compiled/cross-spawn';
5
5
  import { bold } from '../picocolors';
6
6
  import { resolveFrom } from '../resolve-from';
7
7
  export function getTypeScriptPackageInfo(baseDir) {
8
- var _packageJson_bin;
8
+ var _packageJson_bin, _Object_entries_find;
9
9
  let packageJsonPath;
10
10
  try {
11
11
  packageJsonPath = resolveFrom(baseDir, 'typescript/package.json');
@@ -15,7 +15,7 @@ export function getTypeScriptPackageInfo(baseDir) {
15
15
  const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
16
16
  const packageDir = path.dirname(packageJsonPath);
17
17
  const apiPath = path.join(packageDir, 'lib', 'typescript.js');
18
- const tscBin = typeof packageJson.bin === 'string' ? packageJson.bin : (_packageJson_bin = packageJson.bin) == null ? void 0 : _packageJson_bin.tsc;
18
+ const tscBin = typeof packageJson.bin === 'string' ? packageJson.bin : ((_packageJson_bin = packageJson.bin) == null ? void 0 : _packageJson_bin.tsc) ?? ((_Object_entries_find = Object.entries(packageJson.bin ?? {}).find(([name])=>/^tsc\d+$/.test(name))) == null ? void 0 : _Object_entries_find[1]);
19
19
  const tscBinPath = tscBin ? path.resolve(packageDir, tscBin) : undefined;
20
20
  let tscPath = tscBinPath;
21
21
  if (tscBinPath && existsSync(tscBinPath) && packageJson.type === 'module' && path.extname(tscBinPath) === '') {