@next/codemod 15.0.0-canary.195 → 15.0.0-canary.196

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 (2) hide show
  1. package/bin/upgrade.js +73 -6
  2. package/package.json +3 -2
package/bin/upgrade.js CHANGED
@@ -1,9 +1,33 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
29
  exports.runUpgrade = runUpgrade;
30
+ const os = __importStar(require("os"));
7
31
  const prompts_1 = __importDefault(require("prompts"));
8
32
  const fs_1 = __importDefault(require("fs"));
9
33
  const semver_1 = __importDefault(require("semver"));
@@ -15,6 +39,22 @@ const handle_package_1 = require("../lib/handle-package");
15
39
  const transform_1 = require("./transform");
16
40
  const utils_1 = require("../lib/utils");
17
41
  const shared_1 = require("./shared");
42
+ const optionalNextjsPackages = [
43
+ 'create-next-app',
44
+ 'eslint-config-next',
45
+ '@next/bundle-analyzer',
46
+ '@next/codemod',
47
+ '@next/env',
48
+ '@next/eslint-plugin-next',
49
+ '@next/font',
50
+ '@next/mdx',
51
+ '@next/plugin-storybook',
52
+ '@next/polyfill-module',
53
+ '@next/polyfill-nomodule',
54
+ '@next/swc',
55
+ '@next/react-refresh-utils',
56
+ '@next/third-parties',
57
+ ];
18
58
  /**
19
59
  * @param query
20
60
  * @example loadHighestNPMVersionMatching("react@^18.3.0 || ^19.0.0") === Promise<"19.0.0">
@@ -133,6 +173,12 @@ async function runUpgrade(revision, options) {
133
173
  'react-dom': { version: targetReactVersion, required: true },
134
174
  'react-is': { version: targetReactVersion, required: false },
135
175
  };
176
+ for (const optionalNextjsPackage of optionalNextjsPackages) {
177
+ versionMapping[optionalNextjsPackage] = {
178
+ version: targetNextVersion,
179
+ required: false,
180
+ };
181
+ }
136
182
  if (targetReactVersion.startsWith('19.0.0-canary') ||
137
183
  targetReactVersion.startsWith('19.0.0-beta') ||
138
184
  targetReactVersion.startsWith('19.0.0-rc')) {
@@ -196,7 +242,9 @@ async function runUpgrade(revision, options) {
196
242
  for (const [dep, version] of devDependenciesToInstall) {
197
243
  (0, handle_package_1.addPackageDependency)(appPackageJson, dep, version, true);
198
244
  }
199
- fs_1.default.writeFileSync(appPackageJsonPath, JSON.stringify(appPackageJson, null, 2));
245
+ fs_1.default.writeFileSync(appPackageJsonPath, JSON.stringify(appPackageJson, null, 2) +
246
+ // Common IDE formatters would add a newline as well.
247
+ os.EOL);
200
248
  (0, handle_package_1.runInstallation)(packageManager);
201
249
  for (const codemod of codemods) {
202
250
  await (0, transform_1.runTransform)(codemod, process.cwd(), { force: true, verbose });
@@ -351,18 +399,19 @@ async function suggestReactTypesCodemods() {
351
399
  return runReactTypesCodemod;
352
400
  }
353
401
  function writeOverridesField(packageJson, packageManager, overrides) {
354
- if (packageManager === 'bun' || packageManager === 'npm') {
402
+ const entries = Object.entries(overrides);
403
+ if (packageManager === 'npm') {
355
404
  if (!packageJson.overrides) {
356
405
  packageJson.overrides = {};
357
406
  }
358
- for (const [key, value] of Object.entries(overrides)) {
407
+ for (const [key, value] of entries) {
359
408
  packageJson.overrides[key] = value;
360
409
  }
361
410
  }
362
411
  else if (packageManager === 'pnpm') {
363
412
  // pnpm supports pnpm.overrides and pnpm.resolutions
364
413
  if (packageJson.resolutions) {
365
- for (const [key, value] of Object.entries(overrides)) {
414
+ for (const [key, value] of entries) {
366
415
  packageJson.resolutions[key] = value;
367
416
  }
368
417
  }
@@ -373,7 +422,7 @@ function writeOverridesField(packageJson, packageManager, overrides) {
373
422
  if (!packageJson.pnpm.overrides) {
374
423
  packageJson.pnpm.overrides = {};
375
424
  }
376
- for (const [key, value] of Object.entries(overrides)) {
425
+ for (const [key, value] of entries) {
377
426
  packageJson.pnpm.overrides[key] = value;
378
427
  }
379
428
  }
@@ -382,9 +431,27 @@ function writeOverridesField(packageJson, packageManager, overrides) {
382
431
  if (!packageJson.resolutions) {
383
432
  packageJson.resolutions = {};
384
433
  }
385
- for (const [key, value] of Object.entries(overrides)) {
434
+ for (const [key, value] of entries) {
386
435
  packageJson.resolutions[key] = value;
387
436
  }
388
437
  }
438
+ else if (packageManager === 'bun') {
439
+ // bun supports both overrides and resolutions
440
+ // x-ref: https://bun.sh/docs/install/overrides
441
+ if (packageJson.resolutions) {
442
+ for (const [key, value] of entries) {
443
+ packageJson.resolutions[key] = value;
444
+ }
445
+ }
446
+ else {
447
+ // add overrides field if it's missing and add overrides
448
+ if (!packageJson.overrides) {
449
+ packageJson.overrides = {};
450
+ }
451
+ for (const [key, value] of entries) {
452
+ packageJson.overrides[key] = value;
453
+ }
454
+ }
455
+ }
389
456
  }
390
457
  //# sourceMappingURL=upgrade.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next/codemod",
3
- "version": "15.0.0-canary.195",
3
+ "version": "15.0.0-canary.196",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,7 +30,8 @@
30
30
  "build": "pnpm tsc -d -p tsconfig.json",
31
31
  "prepublishOnly": "cd ../../ && turbo run build",
32
32
  "dev": "pnpm tsc -d -w -p tsconfig.json",
33
- "test": "jest"
33
+ "test": "jest",
34
+ "test:upgrade-fixture": "./scripts/test-upgrade-fixture.sh"
34
35
  },
35
36
  "bin": "./bin/next-codemod.js",
36
37
  "devDependencies": {