next 15.5.1-canary.32 → 15.5.1-canary.34

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 (68) hide show
  1. package/dist/bin/next +1 -1
  2. package/dist/build/index.js +2 -2
  3. package/dist/build/load-jsconfig.js +1 -1
  4. package/dist/build/load-jsconfig.js.map +1 -1
  5. package/dist/build/next-config-ts/transpile-config.js +26 -0
  6. package/dist/build/next-config-ts/transpile-config.js.map +1 -1
  7. package/dist/build/swc/index.js +1 -1
  8. package/dist/build/webpack-config.js +2 -2
  9. package/dist/cli/next-test.js +1 -1
  10. package/dist/cli/next-test.js.map +1 -1
  11. package/dist/client/app-bootstrap.js +1 -1
  12. package/dist/client/index.js +1 -1
  13. package/dist/compiled/next-server/pages-api-turbo.runtime.dev.js +1 -1
  14. package/dist/compiled/next-server/pages-api-turbo.runtime.dev.js.map +1 -1
  15. package/dist/compiled/next-server/pages-turbo.runtime.dev.js +1 -1
  16. package/dist/compiled/next-server/pages-turbo.runtime.dev.js.map +1 -1
  17. package/dist/esm/build/index.js +2 -2
  18. package/dist/esm/build/load-jsconfig.js +1 -1
  19. package/dist/esm/build/load-jsconfig.js.map +1 -1
  20. package/dist/esm/build/next-config-ts/transpile-config.js +27 -1
  21. package/dist/esm/build/next-config-ts/transpile-config.js.map +1 -1
  22. package/dist/esm/build/swc/index.js +1 -1
  23. package/dist/esm/build/webpack-config.js +2 -2
  24. package/dist/esm/client/app-bootstrap.js +1 -1
  25. package/dist/esm/client/index.js +1 -1
  26. package/dist/esm/lib/eslint/runLintCheck.js +1 -1
  27. package/dist/esm/lib/eslint/runLintCheck.js.map +1 -1
  28. package/dist/esm/lib/has-necessary-dependencies.js +9 -7
  29. package/dist/esm/lib/has-necessary-dependencies.js.map +1 -1
  30. package/dist/esm/lib/verify-partytown-setup.js +1 -1
  31. package/dist/esm/lib/verify-partytown-setup.js.map +1 -1
  32. package/dist/esm/lib/verify-typescript-setup.js +2 -2
  33. package/dist/esm/lib/verify-typescript-setup.js.map +1 -1
  34. package/dist/esm/server/config-shared.js +1 -1
  35. package/dist/esm/server/config-shared.js.map +1 -1
  36. package/dist/esm/server/dev/hot-reloader-turbopack.js +13 -3
  37. package/dist/esm/server/dev/hot-reloader-turbopack.js.map +1 -1
  38. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  39. package/dist/esm/server/lib/app-info-log.js +1 -1
  40. package/dist/esm/server/lib/start-server.js +1 -1
  41. package/dist/esm/server/lib/utils.js +1 -1
  42. package/dist/esm/server/lib/utils.js.map +1 -1
  43. package/dist/esm/shared/lib/canary-only.js +1 -1
  44. package/dist/lib/eslint/runLintCheck.js +1 -1
  45. package/dist/lib/eslint/runLintCheck.js.map +1 -1
  46. package/dist/lib/has-necessary-dependencies.d.ts +1 -1
  47. package/dist/lib/has-necessary-dependencies.js +8 -6
  48. package/dist/lib/has-necessary-dependencies.js.map +1 -1
  49. package/dist/lib/verify-partytown-setup.js +1 -1
  50. package/dist/lib/verify-partytown-setup.js.map +1 -1
  51. package/dist/lib/verify-typescript-setup.js +2 -2
  52. package/dist/lib/verify-typescript-setup.js.map +1 -1
  53. package/dist/server/config-shared.d.ts +1 -3
  54. package/dist/server/config-shared.js +1 -1
  55. package/dist/server/config-shared.js.map +1 -1
  56. package/dist/server/dev/hot-reloader-turbopack.js +13 -3
  57. package/dist/server/dev/hot-reloader-turbopack.js.map +1 -1
  58. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  59. package/dist/server/lib/app-info-log.js +1 -1
  60. package/dist/server/lib/start-server.js +1 -1
  61. package/dist/server/lib/utils.d.ts +7 -0
  62. package/dist/server/lib/utils.js +5 -6
  63. package/dist/server/lib/utils.js.map +1 -1
  64. package/dist/shared/lib/canary-only.js +1 -1
  65. package/dist/telemetry/anonymous-meta.js +1 -1
  66. package/dist/telemetry/events/session-stopped.js +2 -2
  67. package/dist/telemetry/events/version.js +2 -2
  68. package/package.json +15 -15
@@ -301,7 +301,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
301
301
  const nextBuildSpan = trace('next-build', undefined, {
302
302
  buildMode: experimentalBuildMode,
303
303
  isTurboBuild: String(isTurbopack),
304
- version: "15.5.1-canary.32"
304
+ version: "15.5.1-canary.34"
305
305
  });
306
306
  NextBuildContext.nextBuildSpan = nextBuildSpan;
307
307
  NextBuildContext.dir = dir;
@@ -780,7 +780,7 @@ export default async function build(dir, reactProductionProfiling = false, debug
780
780
  // Files outside of the distDir can be "type": "module"
781
781
  await writeFileUtf8(path.join(distDir, 'package.json'), '{"type": "commonjs"}');
782
782
  // These are written to distDir, so they need to come after creating and cleaning distDr.
783
- await recordFrameworkVersion("15.5.1-canary.32");
783
+ await recordFrameworkVersion("15.5.1-canary.34");
784
784
  await updateBuildDiagnostics({
785
785
  buildStage: 'start'
786
786
  });
@@ -38,7 +38,7 @@ export default async function loadJsConfig(dir, config) {
38
38
  var _jsConfig_compilerOptions;
39
39
  let typeScriptPath;
40
40
  try {
41
- const deps = await hasNecessaryDependencies(dir, [
41
+ const deps = hasNecessaryDependencies(dir, [
42
42
  {
43
43
  pkg: 'typescript',
44
44
  file: 'typescript/lib/typescript.js',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/build/load-jsconfig.ts"],"sourcesContent":["import path from 'path'\nimport fs from 'fs'\nimport type { NextConfigComplete } from '../server/config-shared'\nimport * as Log from './output/log'\nimport { getTypeScriptConfiguration } from '../lib/typescript/getTypeScriptConfiguration'\nimport { readFileSync } from 'fs'\nimport isError from '../lib/is-error'\nimport { hasNecessaryDependencies } from '../lib/has-necessary-dependencies'\n\nlet TSCONFIG_WARNED = false\n\nexport function parseJsonFile(filePath: string) {\n const JSON5 =\n require('next/dist/compiled/json5') as typeof import('next/dist/compiled/json5')\n const contents = readFileSync(filePath, 'utf8')\n\n // Special case an empty file\n if (contents.trim() === '') {\n return {}\n }\n\n try {\n return JSON5.parse(contents)\n } catch (err) {\n if (!isError(err)) throw err\n const { codeFrameColumns } =\n require('next/dist/compiled/babel/code-frame') as typeof import('next/dist/compiled/babel/code-frame')\n const codeFrame = codeFrameColumns(\n String(contents),\n {\n start: {\n line: (err as Error & { lineNumber?: number }).lineNumber || 0,\n column: (err as Error & { columnNumber?: number }).columnNumber || 0,\n },\n },\n { message: err.message, highlightCode: true }\n )\n throw new Error(`Failed to parse \"${filePath}\":\\n${codeFrame}`)\n }\n}\n\nexport type ResolvedBaseUrl =\n | { baseUrl: string; isImplicit: boolean }\n | undefined\n\nexport type JsConfig = { compilerOptions: Record<string, any> } | undefined\n\nexport default async function loadJsConfig(\n dir: string,\n config: NextConfigComplete\n): Promise<{\n useTypeScript: boolean\n jsConfig: JsConfig\n jsConfigPath?: string\n resolvedBaseUrl: ResolvedBaseUrl\n}> {\n let typeScriptPath: string | undefined\n try {\n const deps = await hasNecessaryDependencies(dir, [\n {\n pkg: 'typescript',\n file: 'typescript/lib/typescript.js',\n exportsRestrict: true,\n },\n ])\n typeScriptPath = deps.resolved.get('typescript')\n } catch {}\n const tsConfigFileName = config.typescript.tsconfigPath || 'tsconfig.json'\n const tsConfigPath = path.join(dir, tsConfigFileName)\n const useTypeScript = Boolean(typeScriptPath && fs.existsSync(tsConfigPath))\n\n let implicitBaseurl\n let jsConfig: { compilerOptions: Record<string, any> } | undefined\n // jsconfig is a subset of tsconfig\n if (useTypeScript) {\n if (tsConfigFileName !== 'tsconfig.json' && TSCONFIG_WARNED === false) {\n TSCONFIG_WARNED = true\n Log.info(`Using tsconfig file: ${tsConfigFileName}`)\n }\n\n const ts = (await Promise.resolve(\n require(typeScriptPath!)\n )) as typeof import('typescript')\n const tsConfig = await getTypeScriptConfiguration(ts, tsConfigPath, true)\n jsConfig = { compilerOptions: tsConfig.options }\n implicitBaseurl = path.dirname(tsConfigPath)\n }\n\n const jsConfigPath = path.join(dir, 'jsconfig.json')\n if (!useTypeScript && fs.existsSync(jsConfigPath)) {\n jsConfig = parseJsonFile(jsConfigPath)\n implicitBaseurl = path.dirname(jsConfigPath)\n }\n\n let resolvedBaseUrl: ResolvedBaseUrl\n if (jsConfig?.compilerOptions?.baseUrl) {\n resolvedBaseUrl = {\n baseUrl: path.resolve(dir, jsConfig.compilerOptions.baseUrl),\n isImplicit: false,\n }\n } else {\n if (implicitBaseurl) {\n resolvedBaseUrl = {\n baseUrl: implicitBaseurl,\n isImplicit: true,\n }\n }\n }\n\n return {\n useTypeScript,\n jsConfig,\n resolvedBaseUrl,\n jsConfigPath: useTypeScript\n ? tsConfigPath\n : fs.existsSync(jsConfigPath)\n ? jsConfigPath\n : undefined,\n }\n}\n"],"names":["path","fs","Log","getTypeScriptConfiguration","readFileSync","isError","hasNecessaryDependencies","TSCONFIG_WARNED","parseJsonFile","filePath","JSON5","require","contents","trim","parse","err","codeFrameColumns","codeFrame","String","start","line","lineNumber","column","columnNumber","message","highlightCode","Error","loadJsConfig","dir","config","jsConfig","typeScriptPath","deps","pkg","file","exportsRestrict","resolved","get","tsConfigFileName","typescript","tsconfigPath","tsConfigPath","join","useTypeScript","Boolean","existsSync","implicitBaseurl","info","ts","Promise","resolve","tsConfig","compilerOptions","options","dirname","jsConfigPath","resolvedBaseUrl","baseUrl","isImplicit","undefined"],"mappings":"AAAA,OAAOA,UAAU,OAAM;AACvB,OAAOC,QAAQ,KAAI;AAEnB,YAAYC,SAAS,eAAc;AACnC,SAASC,0BAA0B,QAAQ,+CAA8C;AACzF,SAASC,YAAY,QAAQ,KAAI;AACjC,OAAOC,aAAa,kBAAiB;AACrC,SAASC,wBAAwB,QAAQ,oCAAmC;AAE5E,IAAIC,kBAAkB;AAEtB,OAAO,SAASC,cAAcC,QAAgB;IAC5C,MAAMC,QACJC,QAAQ;IACV,MAAMC,WAAWR,aAAaK,UAAU;IAExC,6BAA6B;IAC7B,IAAIG,SAASC,IAAI,OAAO,IAAI;QAC1B,OAAO,CAAC;IACV;IAEA,IAAI;QACF,OAAOH,MAAMI,KAAK,CAACF;IACrB,EAAE,OAAOG,KAAK;QACZ,IAAI,CAACV,QAAQU,MAAM,MAAMA;QACzB,MAAM,EAAEC,gBAAgB,EAAE,GACxBL,QAAQ;QACV,MAAMM,YAAYD,iBAChBE,OAAON,WACP;YACEO,OAAO;gBACLC,MAAM,AAACL,IAAwCM,UAAU,IAAI;gBAC7DC,QAAQ,AAACP,IAA0CQ,YAAY,IAAI;YACrE;QACF,GACA;YAAEC,SAAST,IAAIS,OAAO;YAAEC,eAAe;QAAK;QAE9C,MAAM,qBAAyD,CAAzD,IAAIC,MAAM,CAAC,iBAAiB,EAAEjB,SAAS,IAAI,EAAEQ,WAAW,GAAxD,qBAAA;mBAAA;wBAAA;0BAAA;QAAwD;IAChE;AACF;AAQA,eAAe,eAAeU,aAC5BC,GAAW,EACXC,MAA0B;QA8CtBC;IAvCJ,IAAIC;IACJ,IAAI;QACF,MAAMC,OAAO,MAAM1B,yBAAyBsB,KAAK;YAC/C;gBACEK,KAAK;gBACLC,MAAM;gBACNC,iBAAiB;YACnB;SACD;QACDJ,iBAAiBC,KAAKI,QAAQ,CAACC,GAAG,CAAC;IACrC,EAAE,OAAM,CAAC;IACT,MAAMC,mBAAmBT,OAAOU,UAAU,CAACC,YAAY,IAAI;IAC3D,MAAMC,eAAezC,KAAK0C,IAAI,CAACd,KAAKU;IACpC,MAAMK,gBAAgBC,QAAQb,kBAAkB9B,GAAG4C,UAAU,CAACJ;IAE9D,IAAIK;IACJ,IAAIhB;IACJ,mCAAmC;IACnC,IAAIa,eAAe;QACjB,IAAIL,qBAAqB,mBAAmB/B,oBAAoB,OAAO;YACrEA,kBAAkB;YAClBL,IAAI6C,IAAI,CAAC,CAAC,qBAAqB,EAAET,kBAAkB;QACrD;QAEA,MAAMU,KAAM,MAAMC,QAAQC,OAAO,CAC/BvC,QAAQoB;QAEV,MAAMoB,WAAW,MAAMhD,2BAA2B6C,IAAIP,cAAc;QACpEX,WAAW;YAAEsB,iBAAiBD,SAASE,OAAO;QAAC;QAC/CP,kBAAkB9C,KAAKsD,OAAO,CAACb;IACjC;IAEA,MAAMc,eAAevD,KAAK0C,IAAI,CAACd,KAAK;IACpC,IAAI,CAACe,iBAAiB1C,GAAG4C,UAAU,CAACU,eAAe;QACjDzB,WAAWtB,cAAc+C;QACzBT,kBAAkB9C,KAAKsD,OAAO,CAACC;IACjC;IAEA,IAAIC;IACJ,IAAI1B,6BAAAA,4BAAAA,SAAUsB,eAAe,qBAAzBtB,0BAA2B2B,OAAO,EAAE;QACtCD,kBAAkB;YAChBC,SAASzD,KAAKkD,OAAO,CAACtB,KAAKE,SAASsB,eAAe,CAACK,OAAO;YAC3DC,YAAY;QACd;IACF,OAAO;QACL,IAAIZ,iBAAiB;YACnBU,kBAAkB;gBAChBC,SAASX;gBACTY,YAAY;YACd;QACF;IACF;IAEA,OAAO;QACLf;QACAb;QACA0B;QACAD,cAAcZ,gBACVF,eACAxC,GAAG4C,UAAU,CAACU,gBACZA,eACAI;IACR;AACF","ignoreList":[0]}
1
+ {"version":3,"sources":["../../src/build/load-jsconfig.ts"],"sourcesContent":["import path from 'path'\nimport fs from 'fs'\nimport type { NextConfigComplete } from '../server/config-shared'\nimport * as Log from './output/log'\nimport { getTypeScriptConfiguration } from '../lib/typescript/getTypeScriptConfiguration'\nimport { readFileSync } from 'fs'\nimport isError from '../lib/is-error'\nimport { hasNecessaryDependencies } from '../lib/has-necessary-dependencies'\n\nlet TSCONFIG_WARNED = false\n\nexport function parseJsonFile(filePath: string) {\n const JSON5 =\n require('next/dist/compiled/json5') as typeof import('next/dist/compiled/json5')\n const contents = readFileSync(filePath, 'utf8')\n\n // Special case an empty file\n if (contents.trim() === '') {\n return {}\n }\n\n try {\n return JSON5.parse(contents)\n } catch (err) {\n if (!isError(err)) throw err\n const { codeFrameColumns } =\n require('next/dist/compiled/babel/code-frame') as typeof import('next/dist/compiled/babel/code-frame')\n const codeFrame = codeFrameColumns(\n String(contents),\n {\n start: {\n line: (err as Error & { lineNumber?: number }).lineNumber || 0,\n column: (err as Error & { columnNumber?: number }).columnNumber || 0,\n },\n },\n { message: err.message, highlightCode: true }\n )\n throw new Error(`Failed to parse \"${filePath}\":\\n${codeFrame}`)\n }\n}\n\nexport type ResolvedBaseUrl =\n | { baseUrl: string; isImplicit: boolean }\n | undefined\n\nexport type JsConfig = { compilerOptions: Record<string, any> } | undefined\n\nexport default async function loadJsConfig(\n dir: string,\n config: NextConfigComplete\n): Promise<{\n useTypeScript: boolean\n jsConfig: JsConfig\n jsConfigPath?: string\n resolvedBaseUrl: ResolvedBaseUrl\n}> {\n let typeScriptPath: string | undefined\n try {\n const deps = hasNecessaryDependencies(dir, [\n {\n pkg: 'typescript',\n file: 'typescript/lib/typescript.js',\n exportsRestrict: true,\n },\n ])\n typeScriptPath = deps.resolved.get('typescript')\n } catch {}\n const tsConfigFileName = config.typescript.tsconfigPath || 'tsconfig.json'\n const tsConfigPath = path.join(dir, tsConfigFileName)\n const useTypeScript = Boolean(typeScriptPath && fs.existsSync(tsConfigPath))\n\n let implicitBaseurl\n let jsConfig: { compilerOptions: Record<string, any> } | undefined\n // jsconfig is a subset of tsconfig\n if (useTypeScript) {\n if (tsConfigFileName !== 'tsconfig.json' && TSCONFIG_WARNED === false) {\n TSCONFIG_WARNED = true\n Log.info(`Using tsconfig file: ${tsConfigFileName}`)\n }\n\n const ts = (await Promise.resolve(\n require(typeScriptPath!)\n )) as typeof import('typescript')\n const tsConfig = await getTypeScriptConfiguration(ts, tsConfigPath, true)\n jsConfig = { compilerOptions: tsConfig.options }\n implicitBaseurl = path.dirname(tsConfigPath)\n }\n\n const jsConfigPath = path.join(dir, 'jsconfig.json')\n if (!useTypeScript && fs.existsSync(jsConfigPath)) {\n jsConfig = parseJsonFile(jsConfigPath)\n implicitBaseurl = path.dirname(jsConfigPath)\n }\n\n let resolvedBaseUrl: ResolvedBaseUrl\n if (jsConfig?.compilerOptions?.baseUrl) {\n resolvedBaseUrl = {\n baseUrl: path.resolve(dir, jsConfig.compilerOptions.baseUrl),\n isImplicit: false,\n }\n } else {\n if (implicitBaseurl) {\n resolvedBaseUrl = {\n baseUrl: implicitBaseurl,\n isImplicit: true,\n }\n }\n }\n\n return {\n useTypeScript,\n jsConfig,\n resolvedBaseUrl,\n jsConfigPath: useTypeScript\n ? tsConfigPath\n : fs.existsSync(jsConfigPath)\n ? jsConfigPath\n : undefined,\n }\n}\n"],"names":["path","fs","Log","getTypeScriptConfiguration","readFileSync","isError","hasNecessaryDependencies","TSCONFIG_WARNED","parseJsonFile","filePath","JSON5","require","contents","trim","parse","err","codeFrameColumns","codeFrame","String","start","line","lineNumber","column","columnNumber","message","highlightCode","Error","loadJsConfig","dir","config","jsConfig","typeScriptPath","deps","pkg","file","exportsRestrict","resolved","get","tsConfigFileName","typescript","tsconfigPath","tsConfigPath","join","useTypeScript","Boolean","existsSync","implicitBaseurl","info","ts","Promise","resolve","tsConfig","compilerOptions","options","dirname","jsConfigPath","resolvedBaseUrl","baseUrl","isImplicit","undefined"],"mappings":"AAAA,OAAOA,UAAU,OAAM;AACvB,OAAOC,QAAQ,KAAI;AAEnB,YAAYC,SAAS,eAAc;AACnC,SAASC,0BAA0B,QAAQ,+CAA8C;AACzF,SAASC,YAAY,QAAQ,KAAI;AACjC,OAAOC,aAAa,kBAAiB;AACrC,SAASC,wBAAwB,QAAQ,oCAAmC;AAE5E,IAAIC,kBAAkB;AAEtB,OAAO,SAASC,cAAcC,QAAgB;IAC5C,MAAMC,QACJC,QAAQ;IACV,MAAMC,WAAWR,aAAaK,UAAU;IAExC,6BAA6B;IAC7B,IAAIG,SAASC,IAAI,OAAO,IAAI;QAC1B,OAAO,CAAC;IACV;IAEA,IAAI;QACF,OAAOH,MAAMI,KAAK,CAACF;IACrB,EAAE,OAAOG,KAAK;QACZ,IAAI,CAACV,QAAQU,MAAM,MAAMA;QACzB,MAAM,EAAEC,gBAAgB,EAAE,GACxBL,QAAQ;QACV,MAAMM,YAAYD,iBAChBE,OAAON,WACP;YACEO,OAAO;gBACLC,MAAM,AAACL,IAAwCM,UAAU,IAAI;gBAC7DC,QAAQ,AAACP,IAA0CQ,YAAY,IAAI;YACrE;QACF,GACA;YAAEC,SAAST,IAAIS,OAAO;YAAEC,eAAe;QAAK;QAE9C,MAAM,qBAAyD,CAAzD,IAAIC,MAAM,CAAC,iBAAiB,EAAEjB,SAAS,IAAI,EAAEQ,WAAW,GAAxD,qBAAA;mBAAA;wBAAA;0BAAA;QAAwD;IAChE;AACF;AAQA,eAAe,eAAeU,aAC5BC,GAAW,EACXC,MAA0B;QA8CtBC;IAvCJ,IAAIC;IACJ,IAAI;QACF,MAAMC,OAAO1B,yBAAyBsB,KAAK;YACzC;gBACEK,KAAK;gBACLC,MAAM;gBACNC,iBAAiB;YACnB;SACD;QACDJ,iBAAiBC,KAAKI,QAAQ,CAACC,GAAG,CAAC;IACrC,EAAE,OAAM,CAAC;IACT,MAAMC,mBAAmBT,OAAOU,UAAU,CAACC,YAAY,IAAI;IAC3D,MAAMC,eAAezC,KAAK0C,IAAI,CAACd,KAAKU;IACpC,MAAMK,gBAAgBC,QAAQb,kBAAkB9B,GAAG4C,UAAU,CAACJ;IAE9D,IAAIK;IACJ,IAAIhB;IACJ,mCAAmC;IACnC,IAAIa,eAAe;QACjB,IAAIL,qBAAqB,mBAAmB/B,oBAAoB,OAAO;YACrEA,kBAAkB;YAClBL,IAAI6C,IAAI,CAAC,CAAC,qBAAqB,EAAET,kBAAkB;QACrD;QAEA,MAAMU,KAAM,MAAMC,QAAQC,OAAO,CAC/BvC,QAAQoB;QAEV,MAAMoB,WAAW,MAAMhD,2BAA2B6C,IAAIP,cAAc;QACpEX,WAAW;YAAEsB,iBAAiBD,SAASE,OAAO;QAAC;QAC/CP,kBAAkB9C,KAAKsD,OAAO,CAACb;IACjC;IAEA,MAAMc,eAAevD,KAAK0C,IAAI,CAACd,KAAK;IACpC,IAAI,CAACe,iBAAiB1C,GAAG4C,UAAU,CAACU,eAAe;QACjDzB,WAAWtB,cAAc+C;QACzBT,kBAAkB9C,KAAKsD,OAAO,CAACC;IACjC;IAEA,IAAIC;IACJ,IAAI1B,6BAAAA,4BAAAA,SAAUsB,eAAe,qBAAzBtB,0BAA2B2B,OAAO,EAAE;QACtCD,kBAAkB;YAChBC,SAASzD,KAAKkD,OAAO,CAACtB,KAAKE,SAASsB,eAAe,CAACK,OAAO;YAC3DC,YAAY;QACd;IACF,OAAO;QACL,IAAIZ,iBAAiB;YACnBU,kBAAkB;gBAChBC,SAASX;gBACTY,YAAY;YACd;QACF;IACF;IAEA,OAAO;QACLf;QACAb;QACA0B;QACAD,cAAcZ,gBACVF,eACAxC,GAAG4C,UAAU,CAACU,gBACZA,eACAI;IACR;AACF","ignoreList":[0]}
@@ -1,8 +1,10 @@
1
1
  import { resolve } from 'node:path';
2
2
  import { readFile } from 'node:fs/promises';
3
+ import { pathToFileURL } from 'node:url';
3
4
  import { deregisterHook, registerHook, requireFromString } from './require-hook';
4
- import { warn } from '../output/log';
5
+ import { warn, warnOnce } from '../output/log';
5
6
  import { installDependencies } from '../../lib/install-dependencies';
7
+ import { getNodeOptionsArgs } from '../../server/lib/utils';
6
8
  function resolveSWCOptions(cwd, compilerOptions) {
7
9
  var _process_versions, _process;
8
10
  return {
@@ -78,8 +80,32 @@ async function getTsConfig(cwd) {
78
80
  const parsedCommandLine = ts.parseJsonConfigFileContent(configFile.config, ts.sys, cwd);
79
81
  return parsedCommandLine.options;
80
82
  }
83
+ let useNodeNativeTSLoader = true;
81
84
  export async function transpileConfig({ nextConfigPath, configFileName, cwd }) {
82
85
  try {
86
+ if (useNodeNativeTSLoader) {
87
+ try {
88
+ // Node.js v22.10.0+
89
+ // Value is 'strip' or 'transform' based on how the feature is enabled.
90
+ // https://nodejs.org/api/process.html#processfeaturestypescript
91
+ if (process.features.typescript) {
92
+ // Run import() here to catch errors and fallback to legacy resolution.
93
+ return (await import(pathToFileURL(nextConfigPath).href)).default;
94
+ }
95
+ if (getNodeOptionsArgs().includes('--no-experimental-strip-types') || process.execArgv.includes('--no-experimental-strip-types')) {
96
+ // TODO: Add Next.js docs link.
97
+ warnOnce(`Skipped resolving "${configFileName}" using Node.js native TypeScript resolution because it was disabled by the "--no-experimental-strip-types" flag.` + ' Falling back to legacy resolution.');
98
+ }
99
+ // Feature is not enabled, fallback to legacy resolution for current session.
100
+ useNodeNativeTSLoader = false;
101
+ } catch (cause) {
102
+ warnOnce(`Failed to import "${configFileName}" using Node.js native TypeScript resolution.` + ' Falling back to legacy resolution.', {
103
+ cause
104
+ });
105
+ // Once failed, fallback to legacy resolution for current session.
106
+ useNodeNativeTSLoader = false;
107
+ }
108
+ }
83
109
  // Ensure TypeScript is installed to use the API.
84
110
  await verifyTypeScriptSetup(cwd, configFileName);
85
111
  const compilerOptions = await getTsConfig(cwd);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/build/next-config-ts/transpile-config.ts"],"sourcesContent":["import type { Options as SWCOptions } from '@swc/core'\nimport type { CompilerOptions } from 'typescript'\n\nimport { resolve } from 'node:path'\nimport { readFile } from 'node:fs/promises'\nimport { deregisterHook, registerHook, requireFromString } from './require-hook'\nimport { warn } from '../output/log'\nimport { installDependencies } from '../../lib/install-dependencies'\n\nfunction resolveSWCOptions(\n cwd: string,\n compilerOptions: CompilerOptions\n): SWCOptions {\n return {\n jsc: {\n parser: {\n syntax: 'typescript',\n },\n ...(compilerOptions.paths ? { paths: compilerOptions.paths } : {}),\n ...(compilerOptions.baseUrl\n ? // Needs to be an absolute path.\n { baseUrl: resolve(cwd, compilerOptions.baseUrl) }\n : compilerOptions.paths\n ? // If paths is given, baseUrl is required.\n { baseUrl: cwd }\n : {}),\n },\n module: {\n type: 'commonjs',\n },\n isModule: 'unknown',\n env: {\n targets: {\n // Setting the Node.js version can reduce unnecessary code generation.\n node: process?.versions?.node ?? '20.19.0',\n },\n },\n } satisfies SWCOptions\n}\n\n// Ported from next/src/lib/verify-typescript-setup.ts\n// Although this overlaps with the later `verifyTypeScriptSetup`,\n// it is acceptable since the time difference in the worst case is trivial,\n// as we are only preparing to install the dependencies once more.\nasync function verifyTypeScriptSetup(cwd: string, configFileName: string) {\n try {\n // Quick module check.\n require.resolve('typescript', { paths: [cwd] })\n } catch (error) {\n if (\n error &&\n typeof error === 'object' &&\n 'code' in error &&\n error.code === 'MODULE_NOT_FOUND'\n ) {\n warn(\n `Installing TypeScript as it was not found while loading \"${configFileName}\".`\n )\n\n await installDependencies(cwd, [{ pkg: 'typescript' }], true).catch(\n (err) => {\n if (err && typeof err === 'object' && 'command' in err) {\n console.error(\n `Failed to install TypeScript, please install it manually to continue:\\n` +\n (err as any).command +\n '\\n'\n )\n }\n throw err\n }\n )\n }\n }\n}\n\nasync function getTsConfig(cwd: string): Promise<CompilerOptions> {\n const ts: typeof import('typescript') = require(\n require.resolve('typescript', { paths: [cwd] })\n )\n\n // NOTE: This doesn't fully cover the edge case for setting\n // \"typescript.tsconfigPath\" in next config which is currently\n // a restriction.\n const tsConfigPath = ts.findConfigFile(\n cwd,\n ts.sys.fileExists,\n 'tsconfig.json'\n )\n\n if (!tsConfigPath) {\n // It is ok to not return ts.getDefaultCompilerOptions() because\n // we are only looking for paths and baseUrl from tsConfig.\n return {}\n }\n\n const configFile = ts.readConfigFile(tsConfigPath, ts.sys.readFile)\n const parsedCommandLine = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n cwd\n )\n\n return parsedCommandLine.options\n}\n\nexport async function transpileConfig({\n nextConfigPath,\n configFileName,\n cwd,\n}: {\n nextConfigPath: string\n configFileName: string\n cwd: string\n}) {\n try {\n // Ensure TypeScript is installed to use the API.\n await verifyTypeScriptSetup(cwd, configFileName)\n const compilerOptions = await getTsConfig(cwd)\n\n return handleCJS({ cwd, nextConfigPath, compilerOptions })\n } catch (cause) {\n throw new Error(`Failed to transpile \"${configFileName}\".`, {\n cause,\n })\n }\n}\n\nasync function handleCJS({\n cwd,\n nextConfigPath,\n compilerOptions,\n}: {\n cwd: string\n nextConfigPath: string\n compilerOptions: CompilerOptions\n}) {\n const swcOptions = resolveSWCOptions(cwd, compilerOptions)\n let hasRequire = false\n try {\n const nextConfigString = await readFile(nextConfigPath, 'utf8')\n // lazy require swc since it loads React before even setting NODE_ENV\n // resulting loading Development React on Production\n const { transform } = require('../swc') as typeof import('../swc')\n const { code } = await transform(nextConfigString, swcOptions)\n\n // register require hook only if require exists\n if (code.includes('require(')) {\n registerHook(swcOptions)\n hasRequire = true\n }\n\n // filename & extension don't matter here\n return requireFromString(code, resolve(cwd, 'next.config.compiled.js'))\n } catch (error) {\n throw error\n } finally {\n if (hasRequire) {\n deregisterHook()\n }\n }\n}\n"],"names":["resolve","readFile","deregisterHook","registerHook","requireFromString","warn","installDependencies","resolveSWCOptions","cwd","compilerOptions","process","jsc","parser","syntax","paths","baseUrl","module","type","isModule","env","targets","node","versions","verifyTypeScriptSetup","configFileName","require","error","code","pkg","catch","err","console","command","getTsConfig","ts","tsConfigPath","findConfigFile","sys","fileExists","configFile","readConfigFile","parsedCommandLine","parseJsonConfigFileContent","config","options","transpileConfig","nextConfigPath","handleCJS","cause","Error","swcOptions","hasRequire","nextConfigString","transform","includes"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../src/build/next-config-ts/transpile-config.ts"],"sourcesContent":["import type { Options as SWCOptions } from '@swc/core'\nimport type { CompilerOptions } from 'typescript'\n\nimport { resolve } from 'node:path'\nimport { readFile } from 'node:fs/promises'\nimport { pathToFileURL } from 'node:url'\nimport { deregisterHook, registerHook, requireFromString } from './require-hook'\nimport { warn, warnOnce } from '../output/log'\nimport { installDependencies } from '../../lib/install-dependencies'\nimport { getNodeOptionsArgs } from '../../server/lib/utils'\n\nfunction resolveSWCOptions(\n cwd: string,\n compilerOptions: CompilerOptions\n): SWCOptions {\n return {\n jsc: {\n parser: {\n syntax: 'typescript',\n },\n ...(compilerOptions.paths ? { paths: compilerOptions.paths } : {}),\n ...(compilerOptions.baseUrl\n ? // Needs to be an absolute path.\n { baseUrl: resolve(cwd, compilerOptions.baseUrl) }\n : compilerOptions.paths\n ? // If paths is given, baseUrl is required.\n { baseUrl: cwd }\n : {}),\n },\n module: {\n type: 'commonjs',\n },\n isModule: 'unknown',\n env: {\n targets: {\n // Setting the Node.js version can reduce unnecessary code generation.\n node: process?.versions?.node ?? '20.19.0',\n },\n },\n } satisfies SWCOptions\n}\n\n// Ported from next/src/lib/verify-typescript-setup.ts\n// Although this overlaps with the later `verifyTypeScriptSetup`,\n// it is acceptable since the time difference in the worst case is trivial,\n// as we are only preparing to install the dependencies once more.\nasync function verifyTypeScriptSetup(cwd: string, configFileName: string) {\n try {\n // Quick module check.\n require.resolve('typescript', { paths: [cwd] })\n } catch (error) {\n if (\n error &&\n typeof error === 'object' &&\n 'code' in error &&\n error.code === 'MODULE_NOT_FOUND'\n ) {\n warn(\n `Installing TypeScript as it was not found while loading \"${configFileName}\".`\n )\n\n await installDependencies(cwd, [{ pkg: 'typescript' }], true).catch(\n (err) => {\n if (err && typeof err === 'object' && 'command' in err) {\n console.error(\n `Failed to install TypeScript, please install it manually to continue:\\n` +\n (err as any).command +\n '\\n'\n )\n }\n throw err\n }\n )\n }\n }\n}\n\nasync function getTsConfig(cwd: string): Promise<CompilerOptions> {\n const ts: typeof import('typescript') = require(\n require.resolve('typescript', { paths: [cwd] })\n )\n\n // NOTE: This doesn't fully cover the edge case for setting\n // \"typescript.tsconfigPath\" in next config which is currently\n // a restriction.\n const tsConfigPath = ts.findConfigFile(\n cwd,\n ts.sys.fileExists,\n 'tsconfig.json'\n )\n\n if (!tsConfigPath) {\n // It is ok to not return ts.getDefaultCompilerOptions() because\n // we are only looking for paths and baseUrl from tsConfig.\n return {}\n }\n\n const configFile = ts.readConfigFile(tsConfigPath, ts.sys.readFile)\n const parsedCommandLine = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n cwd\n )\n\n return parsedCommandLine.options\n}\n\nlet useNodeNativeTSLoader = true\n\nexport async function transpileConfig({\n nextConfigPath,\n configFileName,\n cwd,\n}: {\n nextConfigPath: string\n configFileName: string\n cwd: string\n}) {\n try {\n if (useNodeNativeTSLoader) {\n try {\n // Node.js v22.10.0+\n // Value is 'strip' or 'transform' based on how the feature is enabled.\n // https://nodejs.org/api/process.html#processfeaturestypescript\n if ((process.features as any).typescript) {\n // Run import() here to catch errors and fallback to legacy resolution.\n return (await import(pathToFileURL(nextConfigPath).href)).default\n }\n\n if (\n getNodeOptionsArgs().includes('--no-experimental-strip-types') ||\n process.execArgv.includes('--no-experimental-strip-types')\n ) {\n // TODO: Add Next.js docs link.\n warnOnce(\n `Skipped resolving \"${configFileName}\" using Node.js native TypeScript resolution because it was disabled by the \"--no-experimental-strip-types\" flag.` +\n ' Falling back to legacy resolution.'\n )\n }\n\n // Feature is not enabled, fallback to legacy resolution for current session.\n useNodeNativeTSLoader = false\n } catch (cause) {\n warnOnce(\n `Failed to import \"${configFileName}\" using Node.js native TypeScript resolution.` +\n ' Falling back to legacy resolution.',\n { cause }\n )\n // Once failed, fallback to legacy resolution for current session.\n useNodeNativeTSLoader = false\n }\n }\n\n // Ensure TypeScript is installed to use the API.\n await verifyTypeScriptSetup(cwd, configFileName)\n const compilerOptions = await getTsConfig(cwd)\n\n return handleCJS({ cwd, nextConfigPath, compilerOptions })\n } catch (cause) {\n throw new Error(`Failed to transpile \"${configFileName}\".`, {\n cause,\n })\n }\n}\n\nasync function handleCJS({\n cwd,\n nextConfigPath,\n compilerOptions,\n}: {\n cwd: string\n nextConfigPath: string\n compilerOptions: CompilerOptions\n}) {\n const swcOptions = resolveSWCOptions(cwd, compilerOptions)\n let hasRequire = false\n try {\n const nextConfigString = await readFile(nextConfigPath, 'utf8')\n // lazy require swc since it loads React before even setting NODE_ENV\n // resulting loading Development React on Production\n const { transform } = require('../swc') as typeof import('../swc')\n const { code } = await transform(nextConfigString, swcOptions)\n\n // register require hook only if require exists\n if (code.includes('require(')) {\n registerHook(swcOptions)\n hasRequire = true\n }\n\n // filename & extension don't matter here\n return requireFromString(code, resolve(cwd, 'next.config.compiled.js'))\n } catch (error) {\n throw error\n } finally {\n if (hasRequire) {\n deregisterHook()\n }\n }\n}\n"],"names":["resolve","readFile","pathToFileURL","deregisterHook","registerHook","requireFromString","warn","warnOnce","installDependencies","getNodeOptionsArgs","resolveSWCOptions","cwd","compilerOptions","process","jsc","parser","syntax","paths","baseUrl","module","type","isModule","env","targets","node","versions","verifyTypeScriptSetup","configFileName","require","error","code","pkg","catch","err","console","command","getTsConfig","ts","tsConfigPath","findConfigFile","sys","fileExists","configFile","readConfigFile","parsedCommandLine","parseJsonConfigFileContent","config","options","useNodeNativeTSLoader","transpileConfig","nextConfigPath","features","typescript","href","default","includes","execArgv","cause","handleCJS","Error","swcOptions","hasRequire","nextConfigString","transform"],"mappings":"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","ignoreList":[0]}
@@ -11,7 +11,7 @@ import { isDeepStrictEqual } from 'util';
11
11
  import { getDefineEnv } from '../define-env';
12
12
  import { getReactCompilerLoader } from '../get-babel-loader-config';
13
13
  import { throwTurbopackInternalError } from '../../shared/lib/turbopack/internal-error';
14
- const nextVersion = "15.5.1-canary.32";
14
+ const nextVersion = "15.5.1-canary.34";
15
15
  const ArchName = arch();
16
16
  const PlatformName = platform();
17
17
  function infoLog(...args) {
@@ -1608,7 +1608,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1608
1608
  isClient && new CopyFilePlugin({
1609
1609
  // file path to build output of `@next/polyfill-nomodule`
1610
1610
  filePath: require.resolve('./polyfills/polyfill-nomodule'),
1611
- cacheKey: "15.5.1-canary.32",
1611
+ cacheKey: "15.5.1-canary.34",
1612
1612
  name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
1613
1613
  minimize: false,
1614
1614
  info: {
@@ -1792,7 +1792,7 @@ export default async function getBaseWebpackConfig(dir, { buildId, encryptionKey
1792
1792
  // - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
1793
1793
  // - Next.js version
1794
1794
  // - next.config.js keys that affect compilation
1795
- version: `${__dirname}|${"15.5.1-canary.32"}|${configVars}`,
1795
+ version: `${__dirname}|${"15.5.1-canary.34"}|${configVars}`,
1796
1796
  cacheDirectory: path.join(distDir, 'cache', 'webpack'),
1797
1797
  // For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
1798
1798
  // So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
@@ -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 = "15.5.1-canary.32";
8
+ const version = "15.5.1-canary.34";
9
9
  window.next = {
10
10
  version,
11
11
  appDir: true
@@ -26,7 +26,7 @@ import { SearchParamsContext, PathParamsContext } from '../shared/lib/hooks-clie
26
26
  import { onRecoverableError } from './react-client-callbacks/on-recoverable-error';
27
27
  import tracer from './tracing/tracer';
28
28
  import { isNextRouterError } from './components/is-next-router-error';
29
- export const version = "15.5.1-canary.32";
29
+ export const version = "15.5.1-canary.34";
30
30
  export let router;
31
31
  export const emitter = mitt();
32
32
  const looseToArray = (input)=>[].slice.call(input);
@@ -62,7 +62,7 @@ async function lint(baseDir, lintDirs, eslintrcFile, pkgJsonPath, { lintDuringBu
62
62
  try {
63
63
  var _mod_CLIEngine, _ESLint_getErrorResults;
64
64
  // Load ESLint after we're sure it exists:
65
- const deps = await hasNecessaryDependencies(baseDir, requiredPackages);
65
+ const deps = hasNecessaryDependencies(baseDir, requiredPackages);
66
66
  const packageManager = getPkgManager(baseDir);
67
67
  if (deps.missing.some((dep)=>dep.pkg === 'eslint')) {
68
68
  Log.error(`ESLint must be installed${lintDuringBuild ? ' in order to run during builds:' : ':'} ${bold(cyan((packageManager === 'yarn' ? 'yarn add --dev' : packageManager === 'pnpm' ? 'pnpm install --save-dev' : 'npm install --save-dev') + ' eslint'))}`);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/eslint/runLintCheck.ts"],"sourcesContent":["import { promises as fs, existsSync } from 'fs'\nimport { bold, cyan, red, underline, yellow } from '../picocolors'\nimport path from 'path'\n\nimport findUp from 'next/dist/compiled/find-up'\nimport semver from 'next/dist/compiled/semver'\nimport * as CommentJson from 'next/dist/compiled/comment-json'\n\nimport { formatResults } from './customFormatter'\nimport type { LintResult } from './customFormatter'\nimport { writeDefaultConfig } from './writeDefaultConfig'\nimport { hasEslintConfiguration } from './hasEslintConfiguration'\nimport { writeOutputFile } from './writeOutputFile'\n\nimport { findPagesDir } from '../find-pages-dir'\nimport { installDependencies } from '../install-dependencies'\nimport { hasNecessaryDependencies } from '../has-necessary-dependencies'\n\nimport * as Log from '../../build/output/log'\nimport type { EventLintCheckCompleted } from '../../telemetry/events/build'\nimport isError, { getProperError } from '../is-error'\nimport { getPkgManager } from '../helpers/get-pkg-manager'\nimport {\n getESLintStrictValue,\n getESLintPromptValues,\n} from './getESLintPromptValues'\n\ntype Config = {\n plugins: string[]\n rules: { [key: string]: Array<number | string> }\n}\n\n// 0 is off, 1 is warn, 2 is error. See https://eslint.org/docs/user-guide/configuring/rules#configuring-rules\nconst VALID_SEVERITY = ['off', 'warn', 'error'] as const\ntype Severity = (typeof VALID_SEVERITY)[number]\n\nfunction isValidSeverity(severity: string): severity is Severity {\n return VALID_SEVERITY.includes(severity as Severity)\n}\n\nconst requiredPackages = [\n { file: 'eslint', pkg: 'eslint', exportsRestrict: false },\n {\n file: 'eslint-config-next',\n pkg: 'eslint-config-next',\n exportsRestrict: false,\n },\n]\n\nasync function cliPrompt(cwd: string): Promise<{ config?: any }> {\n console.log(\n bold(\n `${cyan(\n '?'\n )} How would you like to configure ESLint? https://nextjs.org/docs/app/api-reference/config/eslint`\n )\n )\n\n try {\n const cliSelect = (\n await Promise.resolve(\n require('next/dist/compiled/cli-select') as typeof import('next/dist/compiled/cli-select')\n )\n ).default\n const { value } = await cliSelect({\n values: await getESLintPromptValues(cwd),\n valueRenderer: (\n {\n title,\n recommended,\n }: { title: string; recommended?: boolean; config: any },\n selected: boolean\n ) => {\n const name = selected ? bold(underline(cyan(title))) : title\n return name + (recommended ? bold(yellow(' (recommended)')) : '')\n },\n selected: cyan('❯ '),\n unselected: ' ',\n })\n\n return { config: value?.config ?? null }\n } catch {\n return { config: null }\n }\n}\n\nasync function lint(\n baseDir: string,\n lintDirs: string[],\n eslintrcFile: string | null,\n pkgJsonPath: string | null,\n {\n lintDuringBuild = false,\n eslintOptions = null,\n reportErrorsOnly = false,\n maxWarnings = -1,\n formatter = null,\n outputFile = null,\n }: {\n lintDuringBuild: boolean\n eslintOptions: any\n reportErrorsOnly: boolean\n maxWarnings: number\n formatter: string | null\n outputFile: string | null\n }\n): Promise<\n | string\n | null\n | {\n output: string | null\n isError: boolean\n eventInfo: EventLintCheckCompleted\n }\n> {\n try {\n // Load ESLint after we're sure it exists:\n const deps = await hasNecessaryDependencies(baseDir, requiredPackages)\n const packageManager = getPkgManager(baseDir)\n\n if (deps.missing.some((dep) => dep.pkg === 'eslint')) {\n Log.error(\n `ESLint must be installed${\n lintDuringBuild ? ' in order to run during builds:' : ':'\n } ${bold(\n cyan(\n (packageManager === 'yarn'\n ? 'yarn add --dev'\n : packageManager === 'pnpm'\n ? 'pnpm install --save-dev'\n : 'npm install --save-dev') + ' eslint'\n )\n )}`\n )\n return null\n }\n\n const mod = await Promise.resolve(require(deps.resolved.get('eslint')!))\n\n // If V9 config was found, use flat config, or else use legacy.\n const useFlatConfig = eslintrcFile\n ? // eslintrcFile is absolute path\n path.basename(eslintrcFile).startsWith('eslint.config.')\n : false\n\n let ESLint\n // loadESLint is >= 8.57.0\n // PR https://github.com/eslint/eslint/pull/18098\n // Release https://github.com/eslint/eslint/releases/tag/v8.57.0\n if ('loadESLint' in mod) {\n // By default, configType is `flat`. If `useFlatConfig` is false, the return value is `LegacyESLint`.\n // https://github.com/eslint/eslint/blob/1def4cdfab1f067c5089df8b36242cdf912b0eb6/lib/types/index.d.ts#L1609-L1613\n ESLint = await mod.loadESLint({\n useFlatConfig,\n })\n } else {\n // eslint < 8.57.0, use legacy ESLint\n ESLint = mod.ESLint\n }\n\n let eslintVersion = ESLint?.version ?? mod.CLIEngine?.version\n\n if (!eslintVersion || semver.lt(eslintVersion, '7.0.0')) {\n return `${red(\n 'error'\n )} - Your project has an older version of ESLint installed${\n eslintVersion ? ' (' + eslintVersion + ')' : ''\n }. Please upgrade to ESLint version 7 or above`\n }\n\n let options: any = {\n useEslintrc: true,\n baseConfig: {},\n errorOnUnmatchedPattern: false,\n extensions: ['.js', '.jsx', '.ts', '.tsx'],\n cache: true,\n ...eslintOptions,\n }\n\n if (semver.gte(eslintVersion, '9.0.0') && useFlatConfig) {\n for (const option of [\n 'useEslintrc',\n 'extensions',\n 'ignorePath',\n 'reportUnusedDisableDirectives',\n 'resolvePluginsRelativeTo',\n 'rulePaths',\n 'inlineConfig',\n 'maxWarnings',\n ]) {\n if (option in options) {\n delete options[option]\n }\n }\n }\n\n let eslint = new ESLint(options)\n\n let nextEslintPluginIsEnabled = false\n const nextRulesEnabled = new Map<string, Severity>()\n\n for (const configFile of [eslintrcFile, pkgJsonPath]) {\n if (!configFile) continue\n\n const completeConfig: Config | undefined =\n await eslint.calculateConfigForFile(configFile)\n if (!completeConfig) continue\n\n const plugins = completeConfig.plugins\n\n const hasNextPlugin =\n // in ESLint < 9, `plugins` value is string[]\n Array.isArray(plugins)\n ? plugins.includes('@next/next')\n : // in ESLint >= 9, `plugins` value is Record<string, unknown>\n '@next/next' in plugins\n\n if (hasNextPlugin) {\n nextEslintPluginIsEnabled = true\n for (const [name, [severity]] of Object.entries(completeConfig.rules)) {\n if (!name.startsWith('@next/next/')) {\n continue\n }\n if (\n typeof severity === 'number' &&\n severity >= 0 &&\n severity < VALID_SEVERITY.length\n ) {\n nextRulesEnabled.set(name, VALID_SEVERITY[severity])\n } else if (\n typeof severity === 'string' &&\n isValidSeverity(severity)\n ) {\n nextRulesEnabled.set(name, severity)\n }\n }\n break\n }\n }\n\n const pagesDir = findPagesDir(baseDir).pagesDir\n const pagesDirRules = pagesDir ? ['@next/next/no-html-link-for-pages'] : []\n\n if (nextEslintPluginIsEnabled) {\n let updatedPagesDir = false\n\n for (const rule of pagesDirRules) {\n if (\n !options.baseConfig!.rules?.[rule] &&\n !options.baseConfig!.rules?.[\n rule.replace('@next/next', '@next/babel-plugin-next')\n ]\n ) {\n if (!options.baseConfig!.rules) {\n options.baseConfig!.rules = {}\n }\n options.baseConfig!.rules[rule] = [1, pagesDir]\n updatedPagesDir = true\n }\n }\n\n if (updatedPagesDir) {\n eslint = new ESLint(options)\n }\n } else {\n Log.warn('')\n Log.warn(\n 'The Next.js plugin was not detected in your ESLint configuration. See https://nextjs.org/docs/app/api-reference/config/eslint#migrating-existing-config'\n )\n }\n\n const lintStart = process.hrtime()\n\n let results = await eslint.lintFiles(lintDirs)\n let selectedFormatter = null\n\n if (options.fix) await ESLint.outputFixes(results)\n if (reportErrorsOnly) results = await ESLint.getErrorResults(results) // Only return errors if --quiet flag is used\n\n if (formatter) selectedFormatter = await eslint.loadFormatter(formatter)\n const formattedResult = await formatResults(\n baseDir,\n results,\n selectedFormatter?.format\n )\n const lintEnd = process.hrtime(lintStart)\n const totalWarnings = results.reduce(\n (sum: number, file: LintResult) => sum + file.warningCount,\n 0\n )\n\n if (outputFile) await writeOutputFile(outputFile, formattedResult.output)\n\n return {\n output: formattedResult.outputWithMessages,\n isError:\n ESLint.getErrorResults(results)?.length > 0 ||\n (maxWarnings >= 0 && totalWarnings > maxWarnings),\n eventInfo: {\n durationInSeconds: lintEnd[0],\n eslintVersion: eslintVersion,\n lintedFilesCount: results.length,\n lintFix: !!options.fix,\n nextEslintPluginVersion:\n nextEslintPluginIsEnabled && deps.resolved.has('eslint-config-next')\n ? require(\n path.join(\n path.dirname(deps.resolved.get('eslint-config-next')!),\n 'package.json'\n )\n ).version\n : null,\n nextEslintPluginErrorsCount: formattedResult.totalNextPluginErrorCount,\n nextEslintPluginWarningsCount:\n formattedResult.totalNextPluginWarningCount,\n nextRulesEnabled: Object.fromEntries(nextRulesEnabled),\n },\n }\n } catch (err) {\n if (lintDuringBuild) {\n Log.error(\n `ESLint: ${\n isError(err) && err.message ? err.message.replace(/\\n/g, ' ') : err\n }`\n )\n return null\n } else {\n throw getProperError(err)\n }\n }\n}\n\nexport async function runLintCheck(\n baseDir: string,\n lintDirs: string[],\n opts: {\n lintDuringBuild?: boolean\n eslintOptions?: any\n reportErrorsOnly?: boolean\n maxWarnings?: number\n formatter?: string | null\n outputFile?: string | null\n strict?: boolean\n }\n): ReturnType<typeof lint> {\n const {\n lintDuringBuild = false,\n eslintOptions = null,\n reportErrorsOnly = false,\n maxWarnings = -1,\n formatter = null,\n outputFile = null,\n strict = false,\n } = opts\n try {\n // Find user's .eslintrc file\n // See: https://eslint.org/docs/user-guide/configuring/configuration-files#configuration-file-formats\n const eslintrcFile =\n (await findUp(\n [\n // eslint v9\n 'eslint.config.js',\n 'eslint.config.mjs',\n 'eslint.config.cjs',\n // TS extensions require to install a separate package `jiti`.\n // https://eslint.org/docs/latest/use/configure/configuration-files#typescript-configuration-files\n 'eslint.config.ts',\n 'eslint.config.mts',\n 'eslint.config.cts',\n // eslint <= v8\n '.eslintrc.js',\n '.eslintrc.cjs',\n '.eslintrc.yaml',\n '.eslintrc.yml',\n '.eslintrc.json',\n '.eslintrc',\n ],\n {\n cwd: baseDir,\n }\n )) ?? null\n\n const pkgJsonPath = (await findUp('package.json', { cwd: baseDir })) ?? null\n let packageJsonConfig = null\n if (pkgJsonPath) {\n const pkgJsonContent = await fs.readFile(pkgJsonPath, {\n encoding: 'utf8',\n })\n packageJsonConfig = CommentJson.parse(pkgJsonContent)\n }\n\n const config = await hasEslintConfiguration(eslintrcFile, packageJsonConfig)\n let deps\n\n if (config.exists) {\n // Run if ESLint config exists\n return await lint(baseDir, lintDirs, eslintrcFile, pkgJsonPath, {\n lintDuringBuild,\n eslintOptions,\n reportErrorsOnly,\n maxWarnings,\n formatter,\n outputFile,\n })\n } else {\n // Display warning if no ESLint configuration is present inside\n // config file during \"next build\", no warning is shown when\n // no eslintrc file is present\n if (lintDuringBuild) {\n if (config.emptyPkgJsonConfig || config.emptyEslintrc) {\n Log.warn(\n `No ESLint configuration detected. Run ${bold(\n cyan('next lint')\n )} to begin setup`\n )\n }\n return null\n } else {\n // Ask user what config they would like to start with for first time \"next lint\" setup\n const { config: selectedConfig } = strict\n ? await getESLintStrictValue(baseDir)\n : await cliPrompt(baseDir)\n\n if (selectedConfig == null) {\n // Show a warning if no option is selected in prompt\n Log.warn(\n 'If you set up ESLint yourself, we recommend adding the Next.js ESLint plugin. See https://nextjs.org/docs/app/api-reference/config/eslint#migrating-existing-config'\n )\n return null\n } else {\n // Check if necessary deps installed, and install any that are missing\n deps = await hasNecessaryDependencies(baseDir, requiredPackages)\n if (deps.missing.length > 0) {\n deps.missing.forEach((dep) => {\n if (dep.pkg === 'eslint') {\n // pin to v9 to avoid breaking changes\n dep.pkg = 'eslint@^9'\n }\n })\n\n await installDependencies(baseDir, deps.missing, true)\n }\n\n // Write default ESLint config.\n // Check for /pages and src/pages is to make sure this happens in Next.js folder\n if (\n ['app', 'src/app', 'pages', 'src/pages'].some((dir) =>\n existsSync(path.join(baseDir, dir))\n )\n ) {\n await writeDefaultConfig(\n baseDir,\n config,\n selectedConfig,\n eslintrcFile,\n pkgJsonPath,\n packageJsonConfig\n )\n }\n }\n\n Log.ready(\n `ESLint has successfully been configured. Run ${bold(\n cyan('next lint')\n )} again to view warnings and errors.`\n )\n\n return null\n }\n }\n } catch (err) {\n throw err\n }\n}\n"],"names":["promises","fs","existsSync","bold","cyan","red","underline","yellow","path","findUp","semver","CommentJson","formatResults","writeDefaultConfig","hasEslintConfiguration","writeOutputFile","findPagesDir","installDependencies","hasNecessaryDependencies","Log","isError","getProperError","getPkgManager","getESLintStrictValue","getESLintPromptValues","VALID_SEVERITY","isValidSeverity","severity","includes","requiredPackages","file","pkg","exportsRestrict","cliPrompt","cwd","console","log","cliSelect","Promise","resolve","require","default","value","values","valueRenderer","title","recommended","selected","name","unselected","config","lint","baseDir","lintDirs","eslintrcFile","pkgJsonPath","lintDuringBuild","eslintOptions","reportErrorsOnly","maxWarnings","formatter","outputFile","mod","ESLint","deps","packageManager","missing","some","dep","error","resolved","get","useFlatConfig","basename","startsWith","loadESLint","eslintVersion","version","CLIEngine","lt","options","useEslintrc","baseConfig","errorOnUnmatchedPattern","extensions","cache","gte","option","eslint","nextEslintPluginIsEnabled","nextRulesEnabled","Map","configFile","completeConfig","calculateConfigForFile","plugins","hasNextPlugin","Array","isArray","Object","entries","rules","length","set","pagesDir","pagesDirRules","updatedPagesDir","rule","replace","warn","lintStart","process","hrtime","results","lintFiles","selectedFormatter","fix","outputFixes","getErrorResults","loadFormatter","formattedResult","format","lintEnd","totalWarnings","reduce","sum","warningCount","output","outputWithMessages","eventInfo","durationInSeconds","lintedFilesCount","lintFix","nextEslintPluginVersion","has","join","dirname","nextEslintPluginErrorsCount","totalNextPluginErrorCount","nextEslintPluginWarningsCount","totalNextPluginWarningCount","fromEntries","err","message","runLintCheck","opts","strict","packageJsonConfig","pkgJsonContent","readFile","encoding","parse","exists","emptyPkgJsonConfig","emptyEslintrc","selectedConfig","forEach","dir","ready"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../../src/lib/eslint/runLintCheck.ts"],"sourcesContent":["import { promises as fs, existsSync } from 'fs'\nimport { bold, cyan, red, underline, yellow } from '../picocolors'\nimport path from 'path'\n\nimport findUp from 'next/dist/compiled/find-up'\nimport semver from 'next/dist/compiled/semver'\nimport * as CommentJson from 'next/dist/compiled/comment-json'\n\nimport { formatResults } from './customFormatter'\nimport type { LintResult } from './customFormatter'\nimport { writeDefaultConfig } from './writeDefaultConfig'\nimport { hasEslintConfiguration } from './hasEslintConfiguration'\nimport { writeOutputFile } from './writeOutputFile'\n\nimport { findPagesDir } from '../find-pages-dir'\nimport { installDependencies } from '../install-dependencies'\nimport { hasNecessaryDependencies } from '../has-necessary-dependencies'\n\nimport * as Log from '../../build/output/log'\nimport type { EventLintCheckCompleted } from '../../telemetry/events/build'\nimport isError, { getProperError } from '../is-error'\nimport { getPkgManager } from '../helpers/get-pkg-manager'\nimport {\n getESLintStrictValue,\n getESLintPromptValues,\n} from './getESLintPromptValues'\n\ntype Config = {\n plugins: string[]\n rules: { [key: string]: Array<number | string> }\n}\n\n// 0 is off, 1 is warn, 2 is error. See https://eslint.org/docs/user-guide/configuring/rules#configuring-rules\nconst VALID_SEVERITY = ['off', 'warn', 'error'] as const\ntype Severity = (typeof VALID_SEVERITY)[number]\n\nfunction isValidSeverity(severity: string): severity is Severity {\n return VALID_SEVERITY.includes(severity as Severity)\n}\n\nconst requiredPackages = [\n { file: 'eslint', pkg: 'eslint', exportsRestrict: false },\n {\n file: 'eslint-config-next',\n pkg: 'eslint-config-next',\n exportsRestrict: false,\n },\n]\n\nasync function cliPrompt(cwd: string): Promise<{ config?: any }> {\n console.log(\n bold(\n `${cyan(\n '?'\n )} How would you like to configure ESLint? https://nextjs.org/docs/app/api-reference/config/eslint`\n )\n )\n\n try {\n const cliSelect = (\n await Promise.resolve(\n require('next/dist/compiled/cli-select') as typeof import('next/dist/compiled/cli-select')\n )\n ).default\n const { value } = await cliSelect({\n values: await getESLintPromptValues(cwd),\n valueRenderer: (\n {\n title,\n recommended,\n }: { title: string; recommended?: boolean; config: any },\n selected: boolean\n ) => {\n const name = selected ? bold(underline(cyan(title))) : title\n return name + (recommended ? bold(yellow(' (recommended)')) : '')\n },\n selected: cyan('❯ '),\n unselected: ' ',\n })\n\n return { config: value?.config ?? null }\n } catch {\n return { config: null }\n }\n}\n\nasync function lint(\n baseDir: string,\n lintDirs: string[],\n eslintrcFile: string | null,\n pkgJsonPath: string | null,\n {\n lintDuringBuild = false,\n eslintOptions = null,\n reportErrorsOnly = false,\n maxWarnings = -1,\n formatter = null,\n outputFile = null,\n }: {\n lintDuringBuild: boolean\n eslintOptions: any\n reportErrorsOnly: boolean\n maxWarnings: number\n formatter: string | null\n outputFile: string | null\n }\n): Promise<\n | string\n | null\n | {\n output: string | null\n isError: boolean\n eventInfo: EventLintCheckCompleted\n }\n> {\n try {\n // Load ESLint after we're sure it exists:\n const deps = hasNecessaryDependencies(baseDir, requiredPackages)\n const packageManager = getPkgManager(baseDir)\n\n if (deps.missing.some((dep) => dep.pkg === 'eslint')) {\n Log.error(\n `ESLint must be installed${\n lintDuringBuild ? ' in order to run during builds:' : ':'\n } ${bold(\n cyan(\n (packageManager === 'yarn'\n ? 'yarn add --dev'\n : packageManager === 'pnpm'\n ? 'pnpm install --save-dev'\n : 'npm install --save-dev') + ' eslint'\n )\n )}`\n )\n return null\n }\n\n const mod = await Promise.resolve(require(deps.resolved.get('eslint')!))\n\n // If V9 config was found, use flat config, or else use legacy.\n const useFlatConfig = eslintrcFile\n ? // eslintrcFile is absolute path\n path.basename(eslintrcFile).startsWith('eslint.config.')\n : false\n\n let ESLint\n // loadESLint is >= 8.57.0\n // PR https://github.com/eslint/eslint/pull/18098\n // Release https://github.com/eslint/eslint/releases/tag/v8.57.0\n if ('loadESLint' in mod) {\n // By default, configType is `flat`. If `useFlatConfig` is false, the return value is `LegacyESLint`.\n // https://github.com/eslint/eslint/blob/1def4cdfab1f067c5089df8b36242cdf912b0eb6/lib/types/index.d.ts#L1609-L1613\n ESLint = await mod.loadESLint({\n useFlatConfig,\n })\n } else {\n // eslint < 8.57.0, use legacy ESLint\n ESLint = mod.ESLint\n }\n\n let eslintVersion = ESLint?.version ?? mod.CLIEngine?.version\n\n if (!eslintVersion || semver.lt(eslintVersion, '7.0.0')) {\n return `${red(\n 'error'\n )} - Your project has an older version of ESLint installed${\n eslintVersion ? ' (' + eslintVersion + ')' : ''\n }. Please upgrade to ESLint version 7 or above`\n }\n\n let options: any = {\n useEslintrc: true,\n baseConfig: {},\n errorOnUnmatchedPattern: false,\n extensions: ['.js', '.jsx', '.ts', '.tsx'],\n cache: true,\n ...eslintOptions,\n }\n\n if (semver.gte(eslintVersion, '9.0.0') && useFlatConfig) {\n for (const option of [\n 'useEslintrc',\n 'extensions',\n 'ignorePath',\n 'reportUnusedDisableDirectives',\n 'resolvePluginsRelativeTo',\n 'rulePaths',\n 'inlineConfig',\n 'maxWarnings',\n ]) {\n if (option in options) {\n delete options[option]\n }\n }\n }\n\n let eslint = new ESLint(options)\n\n let nextEslintPluginIsEnabled = false\n const nextRulesEnabled = new Map<string, Severity>()\n\n for (const configFile of [eslintrcFile, pkgJsonPath]) {\n if (!configFile) continue\n\n const completeConfig: Config | undefined =\n await eslint.calculateConfigForFile(configFile)\n if (!completeConfig) continue\n\n const plugins = completeConfig.plugins\n\n const hasNextPlugin =\n // in ESLint < 9, `plugins` value is string[]\n Array.isArray(plugins)\n ? plugins.includes('@next/next')\n : // in ESLint >= 9, `plugins` value is Record<string, unknown>\n '@next/next' in plugins\n\n if (hasNextPlugin) {\n nextEslintPluginIsEnabled = true\n for (const [name, [severity]] of Object.entries(completeConfig.rules)) {\n if (!name.startsWith('@next/next/')) {\n continue\n }\n if (\n typeof severity === 'number' &&\n severity >= 0 &&\n severity < VALID_SEVERITY.length\n ) {\n nextRulesEnabled.set(name, VALID_SEVERITY[severity])\n } else if (\n typeof severity === 'string' &&\n isValidSeverity(severity)\n ) {\n nextRulesEnabled.set(name, severity)\n }\n }\n break\n }\n }\n\n const pagesDir = findPagesDir(baseDir).pagesDir\n const pagesDirRules = pagesDir ? ['@next/next/no-html-link-for-pages'] : []\n\n if (nextEslintPluginIsEnabled) {\n let updatedPagesDir = false\n\n for (const rule of pagesDirRules) {\n if (\n !options.baseConfig!.rules?.[rule] &&\n !options.baseConfig!.rules?.[\n rule.replace('@next/next', '@next/babel-plugin-next')\n ]\n ) {\n if (!options.baseConfig!.rules) {\n options.baseConfig!.rules = {}\n }\n options.baseConfig!.rules[rule] = [1, pagesDir]\n updatedPagesDir = true\n }\n }\n\n if (updatedPagesDir) {\n eslint = new ESLint(options)\n }\n } else {\n Log.warn('')\n Log.warn(\n 'The Next.js plugin was not detected in your ESLint configuration. See https://nextjs.org/docs/app/api-reference/config/eslint#migrating-existing-config'\n )\n }\n\n const lintStart = process.hrtime()\n\n let results = await eslint.lintFiles(lintDirs)\n let selectedFormatter = null\n\n if (options.fix) await ESLint.outputFixes(results)\n if (reportErrorsOnly) results = await ESLint.getErrorResults(results) // Only return errors if --quiet flag is used\n\n if (formatter) selectedFormatter = await eslint.loadFormatter(formatter)\n const formattedResult = await formatResults(\n baseDir,\n results,\n selectedFormatter?.format\n )\n const lintEnd = process.hrtime(lintStart)\n const totalWarnings = results.reduce(\n (sum: number, file: LintResult) => sum + file.warningCount,\n 0\n )\n\n if (outputFile) await writeOutputFile(outputFile, formattedResult.output)\n\n return {\n output: formattedResult.outputWithMessages,\n isError:\n ESLint.getErrorResults(results)?.length > 0 ||\n (maxWarnings >= 0 && totalWarnings > maxWarnings),\n eventInfo: {\n durationInSeconds: lintEnd[0],\n eslintVersion: eslintVersion,\n lintedFilesCount: results.length,\n lintFix: !!options.fix,\n nextEslintPluginVersion:\n nextEslintPluginIsEnabled && deps.resolved.has('eslint-config-next')\n ? require(\n path.join(\n path.dirname(deps.resolved.get('eslint-config-next')!),\n 'package.json'\n )\n ).version\n : null,\n nextEslintPluginErrorsCount: formattedResult.totalNextPluginErrorCount,\n nextEslintPluginWarningsCount:\n formattedResult.totalNextPluginWarningCount,\n nextRulesEnabled: Object.fromEntries(nextRulesEnabled),\n },\n }\n } catch (err) {\n if (lintDuringBuild) {\n Log.error(\n `ESLint: ${\n isError(err) && err.message ? err.message.replace(/\\n/g, ' ') : err\n }`\n )\n return null\n } else {\n throw getProperError(err)\n }\n }\n}\n\nexport async function runLintCheck(\n baseDir: string,\n lintDirs: string[],\n opts: {\n lintDuringBuild?: boolean\n eslintOptions?: any\n reportErrorsOnly?: boolean\n maxWarnings?: number\n formatter?: string | null\n outputFile?: string | null\n strict?: boolean\n }\n): ReturnType<typeof lint> {\n const {\n lintDuringBuild = false,\n eslintOptions = null,\n reportErrorsOnly = false,\n maxWarnings = -1,\n formatter = null,\n outputFile = null,\n strict = false,\n } = opts\n try {\n // Find user's .eslintrc file\n // See: https://eslint.org/docs/user-guide/configuring/configuration-files#configuration-file-formats\n const eslintrcFile =\n (await findUp(\n [\n // eslint v9\n 'eslint.config.js',\n 'eslint.config.mjs',\n 'eslint.config.cjs',\n // TS extensions require to install a separate package `jiti`.\n // https://eslint.org/docs/latest/use/configure/configuration-files#typescript-configuration-files\n 'eslint.config.ts',\n 'eslint.config.mts',\n 'eslint.config.cts',\n // eslint <= v8\n '.eslintrc.js',\n '.eslintrc.cjs',\n '.eslintrc.yaml',\n '.eslintrc.yml',\n '.eslintrc.json',\n '.eslintrc',\n ],\n {\n cwd: baseDir,\n }\n )) ?? null\n\n const pkgJsonPath = (await findUp('package.json', { cwd: baseDir })) ?? null\n let packageJsonConfig = null\n if (pkgJsonPath) {\n const pkgJsonContent = await fs.readFile(pkgJsonPath, {\n encoding: 'utf8',\n })\n packageJsonConfig = CommentJson.parse(pkgJsonContent)\n }\n\n const config = await hasEslintConfiguration(eslintrcFile, packageJsonConfig)\n let deps\n\n if (config.exists) {\n // Run if ESLint config exists\n return await lint(baseDir, lintDirs, eslintrcFile, pkgJsonPath, {\n lintDuringBuild,\n eslintOptions,\n reportErrorsOnly,\n maxWarnings,\n formatter,\n outputFile,\n })\n } else {\n // Display warning if no ESLint configuration is present inside\n // config file during \"next build\", no warning is shown when\n // no eslintrc file is present\n if (lintDuringBuild) {\n if (config.emptyPkgJsonConfig || config.emptyEslintrc) {\n Log.warn(\n `No ESLint configuration detected. Run ${bold(\n cyan('next lint')\n )} to begin setup`\n )\n }\n return null\n } else {\n // Ask user what config they would like to start with for first time \"next lint\" setup\n const { config: selectedConfig } = strict\n ? await getESLintStrictValue(baseDir)\n : await cliPrompt(baseDir)\n\n if (selectedConfig == null) {\n // Show a warning if no option is selected in prompt\n Log.warn(\n 'If you set up ESLint yourself, we recommend adding the Next.js ESLint plugin. See https://nextjs.org/docs/app/api-reference/config/eslint#migrating-existing-config'\n )\n return null\n } else {\n // Check if necessary deps installed, and install any that are missing\n deps = await hasNecessaryDependencies(baseDir, requiredPackages)\n if (deps.missing.length > 0) {\n deps.missing.forEach((dep) => {\n if (dep.pkg === 'eslint') {\n // pin to v9 to avoid breaking changes\n dep.pkg = 'eslint@^9'\n }\n })\n\n await installDependencies(baseDir, deps.missing, true)\n }\n\n // Write default ESLint config.\n // Check for /pages and src/pages is to make sure this happens in Next.js folder\n if (\n ['app', 'src/app', 'pages', 'src/pages'].some((dir) =>\n existsSync(path.join(baseDir, dir))\n )\n ) {\n await writeDefaultConfig(\n baseDir,\n config,\n selectedConfig,\n eslintrcFile,\n pkgJsonPath,\n packageJsonConfig\n )\n }\n }\n\n Log.ready(\n `ESLint has successfully been configured. Run ${bold(\n cyan('next lint')\n )} again to view warnings and errors.`\n )\n\n return null\n }\n }\n } catch (err) {\n throw err\n }\n}\n"],"names":["promises","fs","existsSync","bold","cyan","red","underline","yellow","path","findUp","semver","CommentJson","formatResults","writeDefaultConfig","hasEslintConfiguration","writeOutputFile","findPagesDir","installDependencies","hasNecessaryDependencies","Log","isError","getProperError","getPkgManager","getESLintStrictValue","getESLintPromptValues","VALID_SEVERITY","isValidSeverity","severity","includes","requiredPackages","file","pkg","exportsRestrict","cliPrompt","cwd","console","log","cliSelect","Promise","resolve","require","default","value","values","valueRenderer","title","recommended","selected","name","unselected","config","lint","baseDir","lintDirs","eslintrcFile","pkgJsonPath","lintDuringBuild","eslintOptions","reportErrorsOnly","maxWarnings","formatter","outputFile","mod","ESLint","deps","packageManager","missing","some","dep","error","resolved","get","useFlatConfig","basename","startsWith","loadESLint","eslintVersion","version","CLIEngine","lt","options","useEslintrc","baseConfig","errorOnUnmatchedPattern","extensions","cache","gte","option","eslint","nextEslintPluginIsEnabled","nextRulesEnabled","Map","configFile","completeConfig","calculateConfigForFile","plugins","hasNextPlugin","Array","isArray","Object","entries","rules","length","set","pagesDir","pagesDirRules","updatedPagesDir","rule","replace","warn","lintStart","process","hrtime","results","lintFiles","selectedFormatter","fix","outputFixes","getErrorResults","loadFormatter","formattedResult","format","lintEnd","totalWarnings","reduce","sum","warningCount","output","outputWithMessages","eventInfo","durationInSeconds","lintedFilesCount","lintFix","nextEslintPluginVersion","has","join","dirname","nextEslintPluginErrorsCount","totalNextPluginErrorCount","nextEslintPluginWarningsCount","totalNextPluginWarningCount","fromEntries","err","message","runLintCheck","opts","strict","packageJsonConfig","pkgJsonContent","readFile","encoding","parse","exists","emptyPkgJsonConfig","emptyEslintrc","selectedConfig","forEach","dir","ready"],"mappings":"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","ignoreList":[0]}
@@ -1,12 +1,12 @@
1
- import { existsSync, promises as fs } from 'fs';
1
+ import { existsSync, realpathSync } from 'fs';
2
2
  import { resolveFrom } from './resolve-from';
3
3
  import { dirname, join, relative } from 'path';
4
- export async function hasNecessaryDependencies(baseDir, requiredPackages) {
4
+ export function hasNecessaryDependencies(baseDir, requiredPackages) {
5
5
  let resolutions = new Map();
6
6
  const missingPackages = [];
7
- await Promise.all(requiredPackages.map(async (p)=>{
7
+ for (const p of requiredPackages){
8
8
  try {
9
- const pkgPath = await fs.realpath(resolveFrom(baseDir, `${p.pkg}/package.json`));
9
+ const pkgPath = realpathSync(resolveFrom(baseDir, `${p.pkg}/package.json`));
10
10
  const pkgDir = dirname(pkgPath);
11
11
  if (p.exportsRestrict) {
12
12
  const fileNameToVerify = relative(p.pkg, p.file);
@@ -15,7 +15,8 @@ export async function hasNecessaryDependencies(baseDir, requiredPackages) {
15
15
  if (existsSync(fileToVerify)) {
16
16
  resolutions.set(p.pkg, fileToVerify);
17
17
  } else {
18
- return missingPackages.push(p);
18
+ missingPackages.push(p);
19
+ continue;
19
20
  }
20
21
  } else {
21
22
  resolutions.set(p.pkg, pkgPath);
@@ -24,9 +25,10 @@ export async function hasNecessaryDependencies(baseDir, requiredPackages) {
24
25
  resolutions.set(p.pkg, resolveFrom(baseDir, p.file));
25
26
  }
26
27
  } catch (_) {
27
- return missingPackages.push(p);
28
+ missingPackages.push(p);
29
+ continue;
28
30
  }
29
- }));
31
+ }
30
32
  return {
31
33
  resolved: resolutions,
32
34
  missing: missingPackages
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/has-necessary-dependencies.ts"],"sourcesContent":["import { existsSync, promises as fs } from 'fs'\nimport { resolveFrom } from './resolve-from'\nimport { dirname, join, relative } from 'path'\n\nexport interface MissingDependency {\n file: string\n /**\n * The package's package.json (e.g. require(`${pkg}/package.json`)) MUST resolve.\n * If `exportsRestrict` is false, `${file}` MUST also resolve.\n */\n pkg: string\n /**\n * If true, the pkg's package.json needs to be resolvable.\n * If true, will resolve `file` relative to the real path of the package.json.\n *\n * For example, `{ file: '@types/react/index.d.ts', pkg: '@types/react', exportsRestrict: true }`\n * will try to resolve '@types/react/package.json' first and then assume `@types/react/index.d.ts`\n * resolves to `path.join(dirname(resolvedPackageJsonPath), 'index.d.ts')`.\n *\n * If false, will resolve `file` relative to the baseDir.\n * ForFor example, `{ file: '@types/react/index.d.ts', pkg: '@types/react', exportsRestrict: true }`\n * will try to resolve `@types/react/index.d.ts` directly.\n */\n exportsRestrict: boolean\n}\n\nexport type NecessaryDependencies = {\n resolved: Map<string, string>\n missing: MissingDependency[]\n}\n\nexport async function hasNecessaryDependencies(\n baseDir: string,\n requiredPackages: MissingDependency[]\n): Promise<NecessaryDependencies> {\n let resolutions = new Map<string, string>()\n const missingPackages: MissingDependency[] = []\n\n await Promise.all(\n requiredPackages.map(async (p) => {\n try {\n const pkgPath = await fs.realpath(\n resolveFrom(baseDir, `${p.pkg}/package.json`)\n )\n const pkgDir = dirname(pkgPath)\n\n if (p.exportsRestrict) {\n const fileNameToVerify = relative(p.pkg, p.file)\n if (fileNameToVerify) {\n const fileToVerify = join(pkgDir, fileNameToVerify)\n if (existsSync(fileToVerify)) {\n resolutions.set(p.pkg, fileToVerify)\n } else {\n return missingPackages.push(p)\n }\n } else {\n resolutions.set(p.pkg, pkgPath)\n }\n } else {\n resolutions.set(p.pkg, resolveFrom(baseDir, p.file))\n }\n } catch (_) {\n return missingPackages.push(p)\n }\n })\n )\n\n return {\n resolved: resolutions,\n missing: missingPackages,\n }\n}\n"],"names":["existsSync","promises","fs","resolveFrom","dirname","join","relative","hasNecessaryDependencies","baseDir","requiredPackages","resolutions","Map","missingPackages","Promise","all","map","p","pkgPath","realpath","pkg","pkgDir","exportsRestrict","fileNameToVerify","file","fileToVerify","set","push","_","resolved","missing"],"mappings":"AAAA,SAASA,UAAU,EAAEC,YAAYC,EAAE,QAAQ,KAAI;AAC/C,SAASC,WAAW,QAAQ,iBAAgB;AAC5C,SAASC,OAAO,EAAEC,IAAI,EAAEC,QAAQ,QAAQ,OAAM;AA6B9C,OAAO,eAAeC,yBACpBC,OAAe,EACfC,gBAAqC;IAErC,IAAIC,cAAc,IAAIC;IACtB,MAAMC,kBAAuC,EAAE;IAE/C,MAAMC,QAAQC,GAAG,CACfL,iBAAiBM,GAAG,CAAC,OAAOC;QAC1B,IAAI;YACF,MAAMC,UAAU,MAAMf,GAAGgB,QAAQ,CAC/Bf,YAAYK,SAAS,GAAGQ,EAAEG,GAAG,CAAC,aAAa,CAAC;YAE9C,MAAMC,SAAShB,QAAQa;YAEvB,IAAID,EAAEK,eAAe,EAAE;gBACrB,MAAMC,mBAAmBhB,SAASU,EAAEG,GAAG,EAAEH,EAAEO,IAAI;gBAC/C,IAAID,kBAAkB;oBACpB,MAAME,eAAenB,KAAKe,QAAQE;oBAClC,IAAItB,WAAWwB,eAAe;wBAC5Bd,YAAYe,GAAG,CAACT,EAAEG,GAAG,EAAEK;oBACzB,OAAO;wBACL,OAAOZ,gBAAgBc,IAAI,CAACV;oBAC9B;gBACF,OAAO;oBACLN,YAAYe,GAAG,CAACT,EAAEG,GAAG,EAAEF;gBACzB;YACF,OAAO;gBACLP,YAAYe,GAAG,CAACT,EAAEG,GAAG,EAAEhB,YAAYK,SAASQ,EAAEO,IAAI;YACpD;QACF,EAAE,OAAOI,GAAG;YACV,OAAOf,gBAAgBc,IAAI,CAACV;QAC9B;IACF;IAGF,OAAO;QACLY,UAAUlB;QACVmB,SAASjB;IACX;AACF","ignoreList":[0]}
1
+ {"version":3,"sources":["../../src/lib/has-necessary-dependencies.ts"],"sourcesContent":["import { existsSync, realpathSync } from 'fs'\nimport { resolveFrom } from './resolve-from'\nimport { dirname, join, relative } from 'path'\n\nexport interface MissingDependency {\n file: string\n /**\n * The package's package.json (e.g. require(`${pkg}/package.json`)) MUST resolve.\n * If `exportsRestrict` is false, `${file}` MUST also resolve.\n */\n pkg: string\n /**\n * If true, the pkg's package.json needs to be resolvable.\n * If true, will resolve `file` relative to the real path of the package.json.\n *\n * For example, `{ file: '@types/react/index.d.ts', pkg: '@types/react', exportsRestrict: true }`\n * will try to resolve '@types/react/package.json' first and then assume `@types/react/index.d.ts`\n * resolves to `path.join(dirname(resolvedPackageJsonPath), 'index.d.ts')`.\n *\n * If false, will resolve `file` relative to the baseDir.\n * ForFor example, `{ file: '@types/react/index.d.ts', pkg: '@types/react', exportsRestrict: true }`\n * will try to resolve `@types/react/index.d.ts` directly.\n */\n exportsRestrict: boolean\n}\n\nexport type NecessaryDependencies = {\n resolved: Map<string, string>\n missing: MissingDependency[]\n}\n\nexport function hasNecessaryDependencies(\n baseDir: string,\n requiredPackages: MissingDependency[]\n): NecessaryDependencies {\n let resolutions = new Map<string, string>()\n const missingPackages: MissingDependency[] = []\n\n for (const p of requiredPackages) {\n try {\n const pkgPath = realpathSync(\n resolveFrom(baseDir, `${p.pkg}/package.json`)\n )\n const pkgDir = dirname(pkgPath)\n\n if (p.exportsRestrict) {\n const fileNameToVerify = relative(p.pkg, p.file)\n if (fileNameToVerify) {\n const fileToVerify = join(pkgDir, fileNameToVerify)\n if (existsSync(fileToVerify)) {\n resolutions.set(p.pkg, fileToVerify)\n } else {\n missingPackages.push(p)\n continue\n }\n } else {\n resolutions.set(p.pkg, pkgPath)\n }\n } else {\n resolutions.set(p.pkg, resolveFrom(baseDir, p.file))\n }\n } catch (_) {\n missingPackages.push(p)\n continue\n }\n }\n\n return {\n resolved: resolutions,\n missing: missingPackages,\n }\n}\n"],"names":["existsSync","realpathSync","resolveFrom","dirname","join","relative","hasNecessaryDependencies","baseDir","requiredPackages","resolutions","Map","missingPackages","p","pkgPath","pkg","pkgDir","exportsRestrict","fileNameToVerify","file","fileToVerify","set","push","_","resolved","missing"],"mappings":"AAAA,SAASA,UAAU,EAAEC,YAAY,QAAQ,KAAI;AAC7C,SAASC,WAAW,QAAQ,iBAAgB;AAC5C,SAASC,OAAO,EAAEC,IAAI,EAAEC,QAAQ,QAAQ,OAAM;AA6B9C,OAAO,SAASC,yBACdC,OAAe,EACfC,gBAAqC;IAErC,IAAIC,cAAc,IAAIC;IACtB,MAAMC,kBAAuC,EAAE;IAE/C,KAAK,MAAMC,KAAKJ,iBAAkB;QAChC,IAAI;YACF,MAAMK,UAAUZ,aACdC,YAAYK,SAAS,GAAGK,EAAEE,GAAG,CAAC,aAAa,CAAC;YAE9C,MAAMC,SAASZ,QAAQU;YAEvB,IAAID,EAAEI,eAAe,EAAE;gBACrB,MAAMC,mBAAmBZ,SAASO,EAAEE,GAAG,EAAEF,EAAEM,IAAI;gBAC/C,IAAID,kBAAkB;oBACpB,MAAME,eAAef,KAAKW,QAAQE;oBAClC,IAAIjB,WAAWmB,eAAe;wBAC5BV,YAAYW,GAAG,CAACR,EAAEE,GAAG,EAAEK;oBACzB,OAAO;wBACLR,gBAAgBU,IAAI,CAACT;wBACrB;oBACF;gBACF,OAAO;oBACLH,YAAYW,GAAG,CAACR,EAAEE,GAAG,EAAED;gBACzB;YACF,OAAO;gBACLJ,YAAYW,GAAG,CAACR,EAAEE,GAAG,EAAEZ,YAAYK,SAASK,EAAEM,IAAI;YACpD;QACF,EAAE,OAAOI,GAAG;YACVX,gBAAgBU,IAAI,CAACT;YACrB;QACF;IACF;IAEA,OAAO;QACLW,UAAUd;QACVe,SAASb;IACX;AACF","ignoreList":[0]}
@@ -29,7 +29,7 @@ async function copyPartytownStaticFiles(deps, staticDir) {
29
29
  export async function verifyPartytownSetup(dir, targetDir) {
30
30
  try {
31
31
  var _partytownDeps_missing;
32
- const partytownDeps = await hasNecessaryDependencies(dir, [
32
+ const partytownDeps = hasNecessaryDependencies(dir, [
33
33
  {
34
34
  file: '@builder.io/partytown',
35
35
  pkg: '@builder.io/partytown',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/verify-partytown-setup.ts"],"sourcesContent":["import { promises } from 'fs'\nimport { bold, cyan, red } from './picocolors'\n\nimport path from 'path'\nimport { hasNecessaryDependencies } from './has-necessary-dependencies'\nimport type { NecessaryDependencies } from './has-necessary-dependencies'\nimport { fileExists, FileType } from './file-exists'\nimport { FatalError } from './fatal-error'\nimport * as Log from '../build/output/log'\nimport { getPkgManager } from './helpers/get-pkg-manager'\n\nasync function missingDependencyError(dir: string) {\n const packageManager = getPkgManager(dir)\n\n throw new FatalError(\n bold(\n red(\n \"It looks like you're trying to use Partytown with next/script but do not have the required package(s) installed.\"\n )\n ) +\n '\\n\\n' +\n bold(`Please install Partytown by running:`) +\n '\\n\\n' +\n `\\t${bold(\n cyan(\n (packageManager === 'yarn'\n ? 'yarn add --dev'\n : packageManager === 'pnpm'\n ? 'pnpm install --save-dev'\n : 'npm install --save-dev') + ' @builder.io/partytown'\n )\n )}` +\n '\\n\\n' +\n bold(\n `If you are not trying to use Partytown, please disable the experimental ${cyan(\n '\"nextScriptWorkers\"'\n )} flag in next.config.js.`\n ) +\n '\\n'\n )\n}\n\nasync function copyPartytownStaticFiles(\n deps: NecessaryDependencies,\n staticDir: string\n) {\n const partytownLibDir = path.join(staticDir, '~partytown')\n const hasPartytownLibDir = await fileExists(\n partytownLibDir,\n FileType.Directory\n )\n\n if (hasPartytownLibDir) {\n await promises.rm(partytownLibDir, { recursive: true, force: true })\n }\n\n const { copyLibFiles } = await Promise.resolve(\n require(path.join(deps.resolved.get('@builder.io/partytown')!, '../utils'))\n )\n\n await copyLibFiles(partytownLibDir)\n}\n\nexport async function verifyPartytownSetup(\n dir: string,\n targetDir: string\n): Promise<void> {\n try {\n const partytownDeps: NecessaryDependencies = await hasNecessaryDependencies(\n dir,\n [\n {\n file: '@builder.io/partytown',\n pkg: '@builder.io/partytown',\n exportsRestrict: false,\n },\n ]\n )\n\n if (partytownDeps.missing?.length > 0) {\n await missingDependencyError(dir)\n } else {\n try {\n await copyPartytownStaticFiles(partytownDeps, targetDir)\n } catch (err) {\n Log.warn(\n `Partytown library files could not be copied to the static directory. Please ensure that ${bold(\n cyan('@builder.io/partytown')\n )} is installed as a dependency.`\n )\n }\n }\n } catch (err) {\n // Don't show a stack trace when there is an error due to missing dependencies\n if (err instanceof FatalError) {\n console.error(err.message)\n process.exit(1)\n }\n throw err\n }\n}\n"],"names":["promises","bold","cyan","red","path","hasNecessaryDependencies","fileExists","FileType","FatalError","Log","getPkgManager","missingDependencyError","dir","packageManager","copyPartytownStaticFiles","deps","staticDir","partytownLibDir","join","hasPartytownLibDir","Directory","rm","recursive","force","copyLibFiles","Promise","resolve","require","resolved","get","verifyPartytownSetup","targetDir","partytownDeps","file","pkg","exportsRestrict","missing","length","err","warn","console","error","message","process","exit"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,KAAI;AAC7B,SAASC,IAAI,EAAEC,IAAI,EAAEC,GAAG,QAAQ,eAAc;AAE9C,OAAOC,UAAU,OAAM;AACvB,SAASC,wBAAwB,QAAQ,+BAA8B;AAEvE,SAASC,UAAU,EAAEC,QAAQ,QAAQ,gBAAe;AACpD,SAASC,UAAU,QAAQ,gBAAe;AAC1C,YAAYC,SAAS,sBAAqB;AAC1C,SAASC,aAAa,QAAQ,4BAA2B;AAEzD,eAAeC,uBAAuBC,GAAW;IAC/C,MAAMC,iBAAiBH,cAAcE;IAErC,MAAM,qBAyBL,CAzBK,IAAIJ,WACRP,KACEE,IACE,uHAGF,SACAF,KAAK,CAAC,oCAAoC,CAAC,IAC3C,SACA,CAAC,EAAE,EAAEA,KACHC,KACE,AAACW,CAAAA,mBAAmB,SAChB,mBACAA,mBAAmB,SACjB,4BACA,wBAAuB,IAAK,4BAEnC,GACH,SACAZ,KACE,CAAC,wEAAwE,EAAEC,KACzE,uBACA,wBAAwB,CAAC,IAE7B,OAxBE,qBAAA;eAAA;oBAAA;sBAAA;IAyBN;AACF;AAEA,eAAeY,yBACbC,IAA2B,EAC3BC,SAAiB;IAEjB,MAAMC,kBAAkBb,KAAKc,IAAI,CAACF,WAAW;IAC7C,MAAMG,qBAAqB,MAAMb,WAC/BW,iBACAV,SAASa,SAAS;IAGpB,IAAID,oBAAoB;QACtB,MAAMnB,SAASqB,EAAE,CAACJ,iBAAiB;YAAEK,WAAW;YAAMC,OAAO;QAAK;IACpE;IAEA,MAAM,EAAEC,YAAY,EAAE,GAAG,MAAMC,QAAQC,OAAO,CAC5CC,QAAQvB,KAAKc,IAAI,CAACH,KAAKa,QAAQ,CAACC,GAAG,CAAC,0BAA2B;IAGjE,MAAML,aAAaP;AACrB;AAEA,OAAO,eAAea,qBACpBlB,GAAW,EACXmB,SAAiB;IAEjB,IAAI;YAYEC;QAXJ,MAAMA,gBAAuC,MAAM3B,yBACjDO,KACA;YACE;gBACEqB,MAAM;gBACNC,KAAK;gBACLC,iBAAiB;YACnB;SACD;QAGH,IAAIH,EAAAA,yBAAAA,cAAcI,OAAO,qBAArBJ,uBAAuBK,MAAM,IAAG,GAAG;YACrC,MAAM1B,uBAAuBC;QAC/B,OAAO;YACL,IAAI;gBACF,MAAME,yBAAyBkB,eAAeD;YAChD,EAAE,OAAOO,KAAK;gBACZ7B,IAAI8B,IAAI,CACN,CAAC,wFAAwF,EAAEtC,KACzFC,KAAK,0BACL,8BAA8B,CAAC;YAErC;QACF;IACF,EAAE,OAAOoC,KAAK;QACZ,8EAA8E;QAC9E,IAAIA,eAAe9B,YAAY;YAC7BgC,QAAQC,KAAK,CAACH,IAAII,OAAO;YACzBC,QAAQC,IAAI,CAAC;QACf;QACA,MAAMN;IACR;AACF","ignoreList":[0]}
1
+ {"version":3,"sources":["../../src/lib/verify-partytown-setup.ts"],"sourcesContent":["import { promises } from 'fs'\nimport { bold, cyan, red } from './picocolors'\n\nimport path from 'path'\nimport { hasNecessaryDependencies } from './has-necessary-dependencies'\nimport type { NecessaryDependencies } from './has-necessary-dependencies'\nimport { fileExists, FileType } from './file-exists'\nimport { FatalError } from './fatal-error'\nimport * as Log from '../build/output/log'\nimport { getPkgManager } from './helpers/get-pkg-manager'\n\nasync function missingDependencyError(dir: string) {\n const packageManager = getPkgManager(dir)\n\n throw new FatalError(\n bold(\n red(\n \"It looks like you're trying to use Partytown with next/script but do not have the required package(s) installed.\"\n )\n ) +\n '\\n\\n' +\n bold(`Please install Partytown by running:`) +\n '\\n\\n' +\n `\\t${bold(\n cyan(\n (packageManager === 'yarn'\n ? 'yarn add --dev'\n : packageManager === 'pnpm'\n ? 'pnpm install --save-dev'\n : 'npm install --save-dev') + ' @builder.io/partytown'\n )\n )}` +\n '\\n\\n' +\n bold(\n `If you are not trying to use Partytown, please disable the experimental ${cyan(\n '\"nextScriptWorkers\"'\n )} flag in next.config.js.`\n ) +\n '\\n'\n )\n}\n\nasync function copyPartytownStaticFiles(\n deps: NecessaryDependencies,\n staticDir: string\n) {\n const partytownLibDir = path.join(staticDir, '~partytown')\n const hasPartytownLibDir = await fileExists(\n partytownLibDir,\n FileType.Directory\n )\n\n if (hasPartytownLibDir) {\n await promises.rm(partytownLibDir, { recursive: true, force: true })\n }\n\n const { copyLibFiles } = await Promise.resolve(\n require(path.join(deps.resolved.get('@builder.io/partytown')!, '../utils'))\n )\n\n await copyLibFiles(partytownLibDir)\n}\n\nexport async function verifyPartytownSetup(\n dir: string,\n targetDir: string\n): Promise<void> {\n try {\n const partytownDeps: NecessaryDependencies = hasNecessaryDependencies(dir, [\n {\n file: '@builder.io/partytown',\n pkg: '@builder.io/partytown',\n exportsRestrict: false,\n },\n ])\n\n if (partytownDeps.missing?.length > 0) {\n await missingDependencyError(dir)\n } else {\n try {\n await copyPartytownStaticFiles(partytownDeps, targetDir)\n } catch (err) {\n Log.warn(\n `Partytown library files could not be copied to the static directory. Please ensure that ${bold(\n cyan('@builder.io/partytown')\n )} is installed as a dependency.`\n )\n }\n }\n } catch (err) {\n // Don't show a stack trace when there is an error due to missing dependencies\n if (err instanceof FatalError) {\n console.error(err.message)\n process.exit(1)\n }\n throw err\n }\n}\n"],"names":["promises","bold","cyan","red","path","hasNecessaryDependencies","fileExists","FileType","FatalError","Log","getPkgManager","missingDependencyError","dir","packageManager","copyPartytownStaticFiles","deps","staticDir","partytownLibDir","join","hasPartytownLibDir","Directory","rm","recursive","force","copyLibFiles","Promise","resolve","require","resolved","get","verifyPartytownSetup","targetDir","partytownDeps","file","pkg","exportsRestrict","missing","length","err","warn","console","error","message","process","exit"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,KAAI;AAC7B,SAASC,IAAI,EAAEC,IAAI,EAAEC,GAAG,QAAQ,eAAc;AAE9C,OAAOC,UAAU,OAAM;AACvB,SAASC,wBAAwB,QAAQ,+BAA8B;AAEvE,SAASC,UAAU,EAAEC,QAAQ,QAAQ,gBAAe;AACpD,SAASC,UAAU,QAAQ,gBAAe;AAC1C,YAAYC,SAAS,sBAAqB;AAC1C,SAASC,aAAa,QAAQ,4BAA2B;AAEzD,eAAeC,uBAAuBC,GAAW;IAC/C,MAAMC,iBAAiBH,cAAcE;IAErC,MAAM,qBAyBL,CAzBK,IAAIJ,WACRP,KACEE,IACE,uHAGF,SACAF,KAAK,CAAC,oCAAoC,CAAC,IAC3C,SACA,CAAC,EAAE,EAAEA,KACHC,KACE,AAACW,CAAAA,mBAAmB,SAChB,mBACAA,mBAAmB,SACjB,4BACA,wBAAuB,IAAK,4BAEnC,GACH,SACAZ,KACE,CAAC,wEAAwE,EAAEC,KACzE,uBACA,wBAAwB,CAAC,IAE7B,OAxBE,qBAAA;eAAA;oBAAA;sBAAA;IAyBN;AACF;AAEA,eAAeY,yBACbC,IAA2B,EAC3BC,SAAiB;IAEjB,MAAMC,kBAAkBb,KAAKc,IAAI,CAACF,WAAW;IAC7C,MAAMG,qBAAqB,MAAMb,WAC/BW,iBACAV,SAASa,SAAS;IAGpB,IAAID,oBAAoB;QACtB,MAAMnB,SAASqB,EAAE,CAACJ,iBAAiB;YAAEK,WAAW;YAAMC,OAAO;QAAK;IACpE;IAEA,MAAM,EAAEC,YAAY,EAAE,GAAG,MAAMC,QAAQC,OAAO,CAC5CC,QAAQvB,KAAKc,IAAI,CAACH,KAAKa,QAAQ,CAACC,GAAG,CAAC,0BAA2B;IAGjE,MAAML,aAAaP;AACrB;AAEA,OAAO,eAAea,qBACpBlB,GAAW,EACXmB,SAAiB;IAEjB,IAAI;YASEC;QARJ,MAAMA,gBAAuC3B,yBAAyBO,KAAK;YACzE;gBACEqB,MAAM;gBACNC,KAAK;gBACLC,iBAAiB;YACnB;SACD;QAED,IAAIH,EAAAA,yBAAAA,cAAcI,OAAO,qBAArBJ,uBAAuBK,MAAM,IAAG,GAAG;YACrC,MAAM1B,uBAAuBC;QAC/B,OAAO;YACL,IAAI;gBACF,MAAME,yBAAyBkB,eAAeD;YAChD,EAAE,OAAOO,KAAK;gBACZ7B,IAAI8B,IAAI,CACN,CAAC,wFAAwF,EAAEtC,KACzFC,KAAK,0BACL,8BAA8B,CAAC;YAErC;QACF;IACF,EAAE,OAAOoC,KAAK;QACZ,8EAA8E;QAC9E,IAAIA,eAAe9B,YAAY;YAC7BgC,QAAQC,KAAK,CAACH,IAAII,OAAO;YACzBC,QAAQC,IAAI,CAAC;QACf;QACA,MAAMN;IACR;AACF","ignoreList":[0]}
@@ -40,7 +40,7 @@ export async function verifyTypeScriptSetup({ dir, distDir, cacheDir, intentDirs
40
40
  };
41
41
  }
42
42
  // Ensure TypeScript and necessary `@types/*` are installed:
43
- let deps = await hasNecessaryDependencies(dir, requiredPackages);
43
+ let deps = hasNecessaryDependencies(dir, requiredPackages);
44
44
  if (((_deps_missing = deps.missing) == null ? void 0 : _deps_missing.length) > 0) {
45
45
  if (isCI) {
46
46
  // we don't attempt auto install in CI to avoid side-effects
@@ -54,7 +54,7 @@ export async function verifyTypeScriptSetup({ dir, distDir, cacheDir, intentDirs
54
54
  }
55
55
  throw err;
56
56
  });
57
- deps = await hasNecessaryDependencies(dir, requiredPackages);
57
+ deps = hasNecessaryDependencies(dir, requiredPackages);
58
58
  }
59
59
  // Load TypeScript after we're sure it exists:
60
60
  const tsPath = deps.resolved.get('typescript');
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/verify-typescript-setup.ts"],"sourcesContent":["import { bold, cyan, red, yellow } from './picocolors'\nimport path from 'path'\n\nimport { hasNecessaryDependencies } from './has-necessary-dependencies'\nimport type { NecessaryDependencies } from './has-necessary-dependencies'\nimport semver from 'next/dist/compiled/semver'\nimport { CompileError } from './compile-error'\nimport * as log from '../build/output/log'\n\nimport { getTypeScriptIntent } from './typescript/getTypeScriptIntent'\nimport type { TypeCheckResult } from './typescript/runTypeCheck'\nimport { writeAppTypeDeclarations } from './typescript/writeAppTypeDeclarations'\nimport { writeConfigurationDefaults } from './typescript/writeConfigurationDefaults'\nimport { installDependencies } from './install-dependencies'\nimport { isCI } from '../server/ci-info'\nimport { missingDepsError } from './typescript/missingDependencyError'\n\nconst requiredPackages = [\n {\n file: 'typescript/lib/typescript.js',\n pkg: 'typescript',\n exportsRestrict: true,\n },\n {\n file: '@types/react/index.d.ts',\n pkg: '@types/react',\n exportsRestrict: true,\n },\n {\n file: '@types/node/index.d.ts',\n pkg: '@types/node',\n exportsRestrict: true,\n },\n]\n\nexport async function verifyTypeScriptSetup({\n dir,\n distDir,\n cacheDir,\n intentDirs,\n tsconfigPath,\n typeCheckPreflight,\n disableStaticImages,\n hasAppDir,\n hasPagesDir,\n}: {\n dir: string\n distDir: string\n cacheDir?: string\n tsconfigPath: string | undefined\n intentDirs: string[]\n typeCheckPreflight: boolean\n disableStaticImages: boolean\n hasAppDir: boolean\n hasPagesDir: boolean\n}): Promise<{ result?: TypeCheckResult; version: string | null }> {\n const tsConfigFileName = tsconfigPath || 'tsconfig.json'\n const resolvedTsConfigPath = path.join(dir, tsConfigFileName)\n\n try {\n // Check if the project uses TypeScript:\n const intent = await getTypeScriptIntent(dir, intentDirs, tsConfigFileName)\n if (!intent) {\n return { version: null }\n }\n\n // Ensure TypeScript and necessary `@types/*` are installed:\n let deps: NecessaryDependencies = await hasNecessaryDependencies(\n dir,\n requiredPackages\n )\n\n if (deps.missing?.length > 0) {\n if (isCI) {\n // we don't attempt auto install in CI to avoid side-effects\n // and instead log the error for installing needed packages\n missingDepsError(dir, deps.missing)\n }\n console.log(\n bold(\n yellow(\n `It looks like you're trying to use TypeScript but do not have the required package(s) installed.`\n )\n ) +\n '\\n' +\n 'Installing dependencies' +\n '\\n\\n' +\n bold(\n 'If you are not trying to use TypeScript, please remove the ' +\n cyan('tsconfig.json') +\n ' file from your package root (and any TypeScript files in your app and pages directories).'\n ) +\n '\\n'\n )\n await installDependencies(dir, deps.missing, true).catch((err) => {\n if (err && typeof err === 'object' && 'command' in err) {\n console.error(\n `Failed to install required TypeScript dependencies, please install them manually to continue:\\n` +\n (err as any).command +\n '\\n'\n )\n }\n throw err\n })\n deps = await hasNecessaryDependencies(dir, requiredPackages)\n }\n\n // Load TypeScript after we're sure it exists:\n const tsPath = deps.resolved.get('typescript')!\n const ts = (await Promise.resolve(\n require(tsPath)\n )) as typeof import('typescript')\n\n if (semver.lt(ts.version, '4.5.2')) {\n log.warn(\n `Minimum recommended TypeScript version is v4.5.2, older versions can potentially be incompatible with Next.js. Detected: ${ts.version}`\n )\n }\n\n // Reconfigure (or create) the user's `tsconfig.json` for them:\n await writeConfigurationDefaults(\n ts,\n resolvedTsConfigPath,\n intent.firstTimeSetup,\n hasAppDir,\n distDir,\n hasPagesDir\n )\n // Write out the necessary `next-env.d.ts` file to correctly register\n // Next.js' types:\n await writeAppTypeDeclarations({\n baseDir: dir,\n distDir,\n imageImportsEnabled: !disableStaticImages,\n hasPagesDir,\n hasAppDir,\n })\n\n let result\n if (typeCheckPreflight) {\n const { runTypeCheck } =\n require('./typescript/runTypeCheck') as typeof import('./typescript/runTypeCheck')\n\n // Verify the project passes type-checking before we go to webpack phase:\n result = await runTypeCheck(\n ts,\n dir,\n distDir,\n resolvedTsConfigPath,\n cacheDir,\n hasAppDir\n )\n }\n return { result, version: ts.version }\n } catch (err) {\n // These are special errors that should not show a stack trace:\n if (err instanceof CompileError) {\n console.error(red('Failed to compile.\\n'))\n console.error(err.message)\n process.exit(1)\n }\n\n /**\n * verifyTypeScriptSetup can be either invoked directly in the main thread (during next dev / next lint)\n * or run in a worker (during next build). In the latter case, we need to print the error message, as the\n * parent process will only receive an `Jest worker encountered 1 child process exceptions, exceeding retry limit`.\n */\n\n // we are in a worker, print the error message and exit the process\n if (process.env.IS_NEXT_WORKER) {\n if (err instanceof Error) {\n console.error(err.message)\n } else {\n console.error(err)\n }\n process.exit(1)\n }\n // we are in the main thread, throw the error and it will be handled by the caller\n throw err\n }\n}\n"],"names":["bold","cyan","red","yellow","path","hasNecessaryDependencies","semver","CompileError","log","getTypeScriptIntent","writeAppTypeDeclarations","writeConfigurationDefaults","installDependencies","isCI","missingDepsError","requiredPackages","file","pkg","exportsRestrict","verifyTypeScriptSetup","dir","distDir","cacheDir","intentDirs","tsconfigPath","typeCheckPreflight","disableStaticImages","hasAppDir","hasPagesDir","tsConfigFileName","resolvedTsConfigPath","join","deps","intent","version","missing","length","console","catch","err","error","command","tsPath","resolved","get","ts","Promise","resolve","require","lt","warn","firstTimeSetup","baseDir","imageImportsEnabled","result","runTypeCheck","message","process","exit","env","IS_NEXT_WORKER","Error"],"mappings":"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","ignoreList":[0]}
1
+ {"version":3,"sources":["../../src/lib/verify-typescript-setup.ts"],"sourcesContent":["import { bold, cyan, red, yellow } from './picocolors'\nimport path from 'path'\n\nimport { hasNecessaryDependencies } from './has-necessary-dependencies'\nimport type { NecessaryDependencies } from './has-necessary-dependencies'\nimport semver from 'next/dist/compiled/semver'\nimport { CompileError } from './compile-error'\nimport * as log from '../build/output/log'\n\nimport { getTypeScriptIntent } from './typescript/getTypeScriptIntent'\nimport type { TypeCheckResult } from './typescript/runTypeCheck'\nimport { writeAppTypeDeclarations } from './typescript/writeAppTypeDeclarations'\nimport { writeConfigurationDefaults } from './typescript/writeConfigurationDefaults'\nimport { installDependencies } from './install-dependencies'\nimport { isCI } from '../server/ci-info'\nimport { missingDepsError } from './typescript/missingDependencyError'\n\nconst requiredPackages = [\n {\n file: 'typescript/lib/typescript.js',\n pkg: 'typescript',\n exportsRestrict: true,\n },\n {\n file: '@types/react/index.d.ts',\n pkg: '@types/react',\n exportsRestrict: true,\n },\n {\n file: '@types/node/index.d.ts',\n pkg: '@types/node',\n exportsRestrict: true,\n },\n]\n\nexport async function verifyTypeScriptSetup({\n dir,\n distDir,\n cacheDir,\n intentDirs,\n tsconfigPath,\n typeCheckPreflight,\n disableStaticImages,\n hasAppDir,\n hasPagesDir,\n}: {\n dir: string\n distDir: string\n cacheDir?: string\n tsconfigPath: string | undefined\n intentDirs: string[]\n typeCheckPreflight: boolean\n disableStaticImages: boolean\n hasAppDir: boolean\n hasPagesDir: boolean\n}): Promise<{ result?: TypeCheckResult; version: string | null }> {\n const tsConfigFileName = tsconfigPath || 'tsconfig.json'\n const resolvedTsConfigPath = path.join(dir, tsConfigFileName)\n\n try {\n // Check if the project uses TypeScript:\n const intent = await getTypeScriptIntent(dir, intentDirs, tsConfigFileName)\n if (!intent) {\n return { version: null }\n }\n\n // Ensure TypeScript and necessary `@types/*` are installed:\n let deps: NecessaryDependencies = hasNecessaryDependencies(\n dir,\n requiredPackages\n )\n\n if (deps.missing?.length > 0) {\n if (isCI) {\n // we don't attempt auto install in CI to avoid side-effects\n // and instead log the error for installing needed packages\n missingDepsError(dir, deps.missing)\n }\n console.log(\n bold(\n yellow(\n `It looks like you're trying to use TypeScript but do not have the required package(s) installed.`\n )\n ) +\n '\\n' +\n 'Installing dependencies' +\n '\\n\\n' +\n bold(\n 'If you are not trying to use TypeScript, please remove the ' +\n cyan('tsconfig.json') +\n ' file from your package root (and any TypeScript files in your app and pages directories).'\n ) +\n '\\n'\n )\n await installDependencies(dir, deps.missing, true).catch((err) => {\n if (err && typeof err === 'object' && 'command' in err) {\n console.error(\n `Failed to install required TypeScript dependencies, please install them manually to continue:\\n` +\n (err as any).command +\n '\\n'\n )\n }\n throw err\n })\n deps = hasNecessaryDependencies(dir, requiredPackages)\n }\n\n // Load TypeScript after we're sure it exists:\n const tsPath = deps.resolved.get('typescript')!\n const ts = (await Promise.resolve(\n require(tsPath)\n )) as typeof import('typescript')\n\n if (semver.lt(ts.version, '4.5.2')) {\n log.warn(\n `Minimum recommended TypeScript version is v4.5.2, older versions can potentially be incompatible with Next.js. Detected: ${ts.version}`\n )\n }\n\n // Reconfigure (or create) the user's `tsconfig.json` for them:\n await writeConfigurationDefaults(\n ts,\n resolvedTsConfigPath,\n intent.firstTimeSetup,\n hasAppDir,\n distDir,\n hasPagesDir\n )\n // Write out the necessary `next-env.d.ts` file to correctly register\n // Next.js' types:\n await writeAppTypeDeclarations({\n baseDir: dir,\n distDir,\n imageImportsEnabled: !disableStaticImages,\n hasPagesDir,\n hasAppDir,\n })\n\n let result\n if (typeCheckPreflight) {\n const { runTypeCheck } =\n require('./typescript/runTypeCheck') as typeof import('./typescript/runTypeCheck')\n\n // Verify the project passes type-checking before we go to webpack phase:\n result = await runTypeCheck(\n ts,\n dir,\n distDir,\n resolvedTsConfigPath,\n cacheDir,\n hasAppDir\n )\n }\n return { result, version: ts.version }\n } catch (err) {\n // These are special errors that should not show a stack trace:\n if (err instanceof CompileError) {\n console.error(red('Failed to compile.\\n'))\n console.error(err.message)\n process.exit(1)\n }\n\n /**\n * verifyTypeScriptSetup can be either invoked directly in the main thread (during next dev / next lint)\n * or run in a worker (during next build). In the latter case, we need to print the error message, as the\n * parent process will only receive an `Jest worker encountered 1 child process exceptions, exceeding retry limit`.\n */\n\n // we are in a worker, print the error message and exit the process\n if (process.env.IS_NEXT_WORKER) {\n if (err instanceof Error) {\n console.error(err.message)\n } else {\n console.error(err)\n }\n process.exit(1)\n }\n // we are in the main thread, throw the error and it will be handled by the caller\n throw err\n }\n}\n"],"names":["bold","cyan","red","yellow","path","hasNecessaryDependencies","semver","CompileError","log","getTypeScriptIntent","writeAppTypeDeclarations","writeConfigurationDefaults","installDependencies","isCI","missingDepsError","requiredPackages","file","pkg","exportsRestrict","verifyTypeScriptSetup","dir","distDir","cacheDir","intentDirs","tsconfigPath","typeCheckPreflight","disableStaticImages","hasAppDir","hasPagesDir","tsConfigFileName","resolvedTsConfigPath","join","deps","intent","version","missing","length","console","catch","err","error","command","tsPath","resolved","get","ts","Promise","resolve","require","lt","warn","firstTimeSetup","baseDir","imageImportsEnabled","result","runTypeCheck","message","process","exit","env","IS_NEXT_WORKER","Error"],"mappings":"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","ignoreList":[0]}
@@ -179,7 +179,7 @@ export const defaultConfig = Object.freeze({
179
179
  },
180
180
  allowDevelopmentBuild: undefined,
181
181
  reactCompiler: undefined,
182
- reactDebugChannel: true,
182
+ reactDebugChannel: false,
183
183
  staticGenerationRetryCount: undefined,
184
184
  serverComponentsHmrCache: true,
185
185
  staticGenerationMaxConcurrency: 8,