@strapi/upgrade 5.48.1 → 5.50.0

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 (94) hide show
  1. package/dist/cli.js +6 -1
  2. package/dist/cli.js.map +1 -1
  3. package/dist/modules/codemod/codemod.d.ts.map +1 -1
  4. package/dist/modules/codemod-repository/repository.d.ts.map +1 -1
  5. package/dist/modules/codemod-runner/codemod-runner.d.ts.map +1 -1
  6. package/dist/modules/error/utils.d.ts.map +1 -1
  7. package/dist/modules/file-scanner/scanner.d.ts.map +1 -1
  8. package/dist/modules/format/formats.d.ts.map +1 -1
  9. package/dist/modules/json/file.d.ts.map +1 -1
  10. package/dist/modules/json/transform-api.d.ts.map +1 -1
  11. package/dist/modules/logger/logger.d.ts +0 -1
  12. package/dist/modules/logger/logger.d.ts.map +1 -1
  13. package/dist/modules/logger/types.d.ts +0 -1
  14. package/dist/modules/logger/types.d.ts.map +1 -1
  15. package/dist/modules/npm/package.d.ts.map +1 -1
  16. package/dist/modules/project/project.d.ts.map +1 -1
  17. package/dist/modules/project/utils.d.ts.map +1 -1
  18. package/dist/modules/report/report.d.ts.map +1 -1
  19. package/dist/modules/requirement/requirement.d.ts.map +1 -1
  20. package/dist/modules/runner/code/code.d.ts.map +1 -1
  21. package/dist/modules/runner/json/json.d.ts.map +1 -1
  22. package/dist/modules/runner/json/transform.d.ts.map +1 -1
  23. package/dist/modules/upgrader/upgrader.d.ts.map +1 -1
  24. package/dist/modules/version/range.d.ts.map +1 -1
  25. package/dist/modules/version/semver.d.ts +1 -1
  26. package/dist/modules/version/semver.d.ts.map +1 -1
  27. package/dist/modules/version/types.d.ts +7 -6
  28. package/dist/modules/version/types.d.ts.map +1 -1
  29. package/dist/package.json.js +1 -1
  30. package/dist/package.json.mjs +1 -1
  31. package/dist/src/cli/commands/codemods.js +6 -2
  32. package/dist/src/cli/commands/codemods.js.map +1 -1
  33. package/dist/src/cli/commands/codemods.mjs +2 -2
  34. package/dist/src/cli/commands/codemods.mjs.map +1 -1
  35. package/dist/src/cli/commands/upgrade.js +9 -5
  36. package/dist/src/cli/commands/upgrade.js.map +1 -1
  37. package/dist/src/cli/commands/upgrade.mjs +5 -5
  38. package/dist/src/cli/commands/upgrade.mjs.map +1 -1
  39. package/dist/src/cli/errors.js +5 -1
  40. package/dist/src/cli/errors.js.map +1 -1
  41. package/dist/src/modules/codemod/codemod.js +5 -1
  42. package/dist/src/modules/codemod/codemod.js.map +1 -1
  43. package/dist/src/modules/codemod-repository/constants.js +5 -1
  44. package/dist/src/modules/codemod-repository/constants.js.map +1 -1
  45. package/dist/src/modules/codemod-repository/repository.js +18 -11
  46. package/dist/src/modules/codemod-repository/repository.js.map +1 -1
  47. package/dist/src/modules/file-scanner/scanner.js +7 -2
  48. package/dist/src/modules/file-scanner/scanner.js.map +1 -1
  49. package/dist/src/modules/format/formats.js +38 -33
  50. package/dist/src/modules/format/formats.js.map +1 -1
  51. package/dist/src/modules/json/file.js +6 -2
  52. package/dist/src/modules/json/file.js.map +1 -1
  53. package/dist/src/modules/logger/logger.js +8 -4
  54. package/dist/src/modules/logger/logger.js.map +1 -1
  55. package/dist/src/modules/npm/package.js +12 -6
  56. package/dist/src/modules/npm/package.js.map +1 -1
  57. package/dist/src/modules/project/project.js +19 -12
  58. package/dist/src/modules/project/project.js.map +1 -1
  59. package/dist/src/modules/runner/json/transform.js +6 -2
  60. package/dist/src/modules/runner/json/transform.js.map +1 -1
  61. package/dist/src/modules/upgrader/upgrader.js +13 -7
  62. package/dist/src/modules/upgrader/upgrader.js.map +1 -1
  63. package/dist/src/modules/version/range.js +11 -7
  64. package/dist/src/modules/version/range.js.map +1 -1
  65. package/dist/src/modules/version/range.mjs +5 -5
  66. package/dist/src/modules/version/range.mjs.map +1 -1
  67. package/dist/src/modules/version/semver.js +8 -4
  68. package/dist/src/modules/version/semver.js.map +1 -1
  69. package/dist/src/modules/version/semver.mjs +2 -2
  70. package/dist/src/modules/version/semver.mjs.map +1 -1
  71. package/dist/src/modules/version/types.js +7 -8
  72. package/dist/src/modules/version/types.js.map +1 -1
  73. package/dist/src/modules/version/types.mjs +7 -8
  74. package/dist/src/modules/version/types.mjs.map +1 -1
  75. package/dist/src/tasks/codemods/utils.js +9 -5
  76. package/dist/src/tasks/codemods/utils.js.map +1 -1
  77. package/dist/src/tasks/codemods/utils.mjs +5 -5
  78. package/dist/src/tasks/codemods/utils.mjs.map +1 -1
  79. package/dist/src/tasks/upgrade/prompts/latest.js +2 -2
  80. package/dist/src/tasks/upgrade/prompts/latest.js.map +1 -1
  81. package/dist/src/tasks/upgrade/prompts/latest.mjs +3 -3
  82. package/dist/src/tasks/upgrade/prompts/latest.mjs.map +1 -1
  83. package/dist/src/tasks/upgrade/requirements/common.js +7 -3
  84. package/dist/src/tasks/upgrade/requirements/common.js.map +1 -1
  85. package/dist/src/tasks/upgrade/upgrade.js +7 -3
  86. package/dist/src/tasks/upgrade/upgrade.js.map +1 -1
  87. package/dist/src/tasks/upgrade/upgrade.mjs +3 -3
  88. package/dist/src/tasks/upgrade/upgrade.mjs.map +1 -1
  89. package/dist/tasks/codemods/list-codemods.d.ts.map +1 -1
  90. package/dist/tasks/codemods/run-codemods.d.ts.map +1 -1
  91. package/dist/tasks/codemods/utils.d.ts.map +1 -1
  92. package/dist/tasks/upgrade/prompts/latest.d.ts.map +1 -1
  93. package/dist/tasks/upgrade/upgrade.d.ts.map +1 -1
  94. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"codemod.js","sources":["../../../../src/modules/codemod/codemod.ts"],"sourcesContent":["import path from 'node:path';\n\nimport * as constants from './constants';\n\nimport type { Codemod as CodemodInterface, FormatOptions, Kind, UID } from './types';\nimport type { Version } from '../version';\n\ntype CreateCodemodPayload = Pick<\n CodemodInterface,\n 'kind' | 'version' | 'baseDirectory' | 'filename'\n>;\n\nexport class Codemod implements CodemodInterface {\n uid: UID;\n\n kind: Kind;\n\n version: Version.SemVer;\n\n baseDirectory: string;\n\n filename: string;\n\n path: string;\n\n constructor(options: CreateCodemodPayload) {\n this.kind = options.kind;\n this.version = options.version;\n this.baseDirectory = options.baseDirectory;\n this.filename = options.filename;\n\n this.path = path.join(this.baseDirectory, this.version.raw, this.filename);\n this.uid = this.createUID();\n }\n\n private createUID(): UID {\n const name = this.format({ stripExtension: true, stripKind: true, stripHyphens: false });\n const kind = this.kind;\n const version = this.version.raw as Version.LiteralSemVer;\n\n return `${version}-${name}-${kind}`;\n }\n\n format(options?: FormatOptions) {\n const { stripExtension = true, stripKind = true, stripHyphens = true } = options ?? {};\n\n let formatted = this.filename;\n\n if (stripExtension) {\n formatted = formatted.replace(new RegExp(`\\\\.${constants.CODEMOD_EXTENSION}$`, 'i'), '');\n }\n\n if (stripKind) {\n formatted = formatted\n .replace(`.${constants.CODEMOD_CODE_SUFFIX}`, '')\n .replace(`.${constants.CODEMOD_JSON_SUFFIX}`, '');\n }\n\n if (stripHyphens) {\n formatted = formatted.replaceAll('-', ' ');\n }\n\n return formatted;\n }\n}\n\nexport const codemodFactory = (options: CreateCodemodPayload) => new Codemod(options);\n"],"names":["Codemod","createUID","name","format","stripExtension","stripKind","stripHyphens","kind","version","raw","options","formatted","filename","replace","RegExp","constants","replaceAll","baseDirectory","path","join","uid","codemodFactory"],"mappings":";;;;;AAYO,MAAMA,OAAAA,CAAAA;IAuBHC,SAAAA,GAAiB;AACvB,QAAA,MAAMC,IAAAA,GAAO,IAAI,CAACC,MAAM,CAAC;YAAEC,cAAAA,EAAgB,IAAA;YAAMC,SAAAA,EAAW,IAAA;YAAMC,YAAAA,EAAc;AAAM,SAAA,CAAA;QACtF,MAAMC,IAAAA,GAAO,IAAI,CAACA,IAAI;AACtB,QAAA,MAAMC,OAAAA,GAAU,IAAI,CAACA,OAAO,CAACC,GAAG;AAEhC,QAAA,OAAO,GAAGD,OAAAA,CAAQ,CAAC,EAAEN,IAAAA,CAAK,CAAC,EAAEK,IAAAA,CAAAA,CAAM;AACrC,IAAA;AAEAJ,IAAAA,MAAAA,CAAOO,OAAuB,EAAE;AAC9B,QAAA,MAAM,EAAEN,cAAAA,GAAiB,IAAI,EAAEC,SAAAA,GAAY,IAAI,EAAEC,YAAAA,GAAe,IAAI,EAAE,GAAGI,OAAAA,IAAW,EAAC;QAErF,IAAIC,SAAAA,GAAY,IAAI,CAACC,QAAQ;AAE7B,QAAA,IAAIR,cAAAA,EAAgB;AAClBO,YAAAA,SAAAA,GAAYA,SAAAA,CAAUE,OAAO,CAAC,IAAIC,OAAO,CAAC,GAAG,EAAEC,2BAA2B,CAAC,CAAC,CAAC,EAAE,GAAA,CAAA,EAAM,EAAA,CAAA;AACvF,QAAA;AAEA,QAAA,IAAIV,SAAAA,EAAW;AACbM,YAAAA,SAAAA,GAAYA,UACTE,OAAO,CAAC,CAAC,CAAC,EAAEE,6BAA6B,CAAA,CAAE,EAAE,EAAA,CAAA,CAC7CF,OAAO,CAAC,CAAC,CAAC,EAAEE,6BAA6B,EAAE,EAAE,EAAA,CAAA;AAClD,QAAA;AAEA,QAAA,IAAIT,YAAAA,EAAc;YAChBK,SAAAA,GAAYA,SAAAA,CAAUK,UAAU,CAAC,GAAA,EAAK,GAAA,CAAA;AACxC,QAAA;QAEA,OAAOL,SAAAA;AACT,IAAA;AAtCA,IAAA,WAAA,CAAYD,OAA6B,CAAE;AACzC,QAAA,IAAI,CAACH,IAAI,GAAGG,OAAAA,CAAQH,IAAI;AACxB,QAAA,IAAI,CAACC,OAAO,GAAGE,OAAAA,CAAQF,OAAO;AAC9B,QAAA,IAAI,CAACS,aAAa,GAAGP,OAAAA,CAAQO,aAAa;AAC1C,QAAA,IAAI,CAACL,QAAQ,GAAGF,OAAAA,CAAQE,QAAQ;AAEhC,QAAA,IAAI,CAACM,IAAI,GAAGA,KAAKC,IAAI,CAAC,IAAI,CAACF,aAAa,EAAE,IAAI,CAACT,OAAO,CAACC,GAAG,EAAE,IAAI,CAACG,QAAQ,CAAA;AACzE,QAAA,IAAI,CAACQ,GAAG,GAAG,IAAI,CAACnB,SAAS,EAAA;AAC3B,IAAA;AA+BF;MAEaoB,cAAAA,GAAiB,CAACX,OAAAA,GAAkC,IAAIV,QAAQU,OAAAA;;;;;"}
1
+ {"version":3,"file":"codemod.js","sources":["../../../../src/modules/codemod/codemod.ts"],"sourcesContent":["import path from 'node:path';\n\nimport * as constants from './constants';\n\nimport type { Codemod as CodemodInterface, FormatOptions, Kind, UID } from './types';\nimport type { Version } from '../version';\n\ntype CreateCodemodPayload = Pick<\n CodemodInterface,\n 'kind' | 'version' | 'baseDirectory' | 'filename'\n>;\n\nexport class Codemod implements CodemodInterface {\n uid: UID;\n\n kind: Kind;\n\n version: Version.SemVer;\n\n baseDirectory: string;\n\n filename: string;\n\n path: string;\n\n constructor(options: CreateCodemodPayload) {\n this.kind = options.kind;\n this.version = options.version;\n this.baseDirectory = options.baseDirectory;\n this.filename = options.filename;\n\n this.path = path.join(this.baseDirectory, this.version.raw, this.filename);\n this.uid = this.createUID();\n }\n\n private createUID(): UID {\n const name = this.format({ stripExtension: true, stripKind: true, stripHyphens: false });\n const kind = this.kind;\n const version = this.version.raw as Version.LiteralSemVer;\n\n return `${version}-${name}-${kind}`;\n }\n\n format(options?: FormatOptions) {\n const { stripExtension = true, stripKind = true, stripHyphens = true } = options ?? {};\n\n let formatted = this.filename;\n\n if (stripExtension) {\n formatted = formatted.replace(new RegExp(`\\\\.${constants.CODEMOD_EXTENSION}$`, 'i'), '');\n }\n\n if (stripKind) {\n formatted = formatted\n .replace(`.${constants.CODEMOD_CODE_SUFFIX}`, '')\n .replace(`.${constants.CODEMOD_JSON_SUFFIX}`, '');\n }\n\n if (stripHyphens) {\n formatted = formatted.replaceAll('-', ' ');\n }\n\n return formatted;\n }\n}\n\nexport const codemodFactory = (options: CreateCodemodPayload) => new Codemod(options);\n"],"names":["Codemod","createUID","name","format","stripExtension","stripKind","stripHyphens","kind","version","raw","options","formatted","filename","replace","RegExp","constants","replaceAll","baseDirectory","path","join","uid","codemodFactory"],"mappings":";;;;;;;;;AAYO,MAAMA,OAAAA,CAAAA;IAuBHC,SAAAA,GAAiB;AACvB,QAAA,MAAMC,IAAAA,GAAO,IAAI,CAACC,MAAM,CAAC;YAAEC,cAAAA,EAAgB,IAAA;YAAMC,SAAAA,EAAW,IAAA;YAAMC,YAAAA,EAAc;AAAM,SAAA,CAAA;QACtF,MAAMC,IAAAA,GAAO,IAAI,CAACA,IAAI;AACtB,QAAA,MAAMC,OAAAA,GAAU,IAAI,CAACA,OAAO,CAACC,GAAG;AAEhC,QAAA,OAAO,GAAGD,OAAAA,CAAQ,CAAC,EAAEN,IAAAA,CAAK,CAAC,EAAEK,IAAAA,CAAAA,CAAM;AACrC,IAAA;AAEAJ,IAAAA,MAAAA,CAAOO,OAAuB,EAAE;AAC9B,QAAA,MAAM,EAAEN,cAAAA,GAAiB,IAAI,EAAEC,SAAAA,GAAY,IAAI,EAAEC,YAAAA,GAAe,IAAI,EAAE,GAAGI,OAAAA,IAAW,EAAC;QAErF,IAAIC,SAAAA,GAAY,IAAI,CAACC,QAAQ;AAE7B,QAAA,IAAIR,cAAAA,EAAgB;AAClBO,YAAAA,SAAAA,GAAYA,SAAAA,CAAUE,OAAO,CAAC,IAAIC,OAAO,CAAC,GAAG,EAAEC,2BAA2B,CAAC,CAAC,CAAC,EAAE,GAAA,CAAA,EAAM,EAAA,CAAA;AACvF,QAAA;AAEA,QAAA,IAAIV,SAAAA,EAAW;AACbM,YAAAA,SAAAA,GAAYA,UACTE,OAAO,CAAC,CAAC,CAAC,EAAEE,6BAA6B,CAAA,CAAE,EAAE,EAAA,CAAA,CAC7CF,OAAO,CAAC,CAAC,CAAC,EAAEE,6BAA6B,EAAE,EAAE,EAAA,CAAA;AAClD,QAAA;AAEA,QAAA,IAAIT,YAAAA,EAAc;YAChBK,SAAAA,GAAYA,SAAAA,CAAUK,UAAU,CAAC,GAAA,EAAK,GAAA,CAAA;AACxC,QAAA;QAEA,OAAOL,SAAAA;AACT,IAAA;AAtCA,IAAA,WAAA,CAAYD,OAA6B,CAAE;AACzC,QAAA,IAAI,CAACH,IAAI,GAAGG,OAAAA,CAAQH,IAAI;AACxB,QAAA,IAAI,CAACC,OAAO,GAAGE,OAAAA,CAAQF,OAAO;AAC9B,QAAA,IAAI,CAACS,aAAa,GAAGP,OAAAA,CAAQO,aAAa;AAC1C,QAAA,IAAI,CAACL,QAAQ,GAAGF,OAAAA,CAAQE,QAAQ;AAEhC,QAAA,IAAI,CAACM,IAAI,GAAGA,sBAAKC,IAAI,CAAC,IAAI,CAACF,aAAa,EAAE,IAAI,CAACT,OAAO,CAACC,GAAG,EAAE,IAAI,CAACG,QAAQ,CAAA;AACzE,QAAA,IAAI,CAACQ,GAAG,GAAG,IAAI,CAACnB,SAAS,EAAA;AAC3B,IAAA;AA+BF;MAEaoB,cAAAA,GAAiB,CAACX,OAAAA,GAAkC,IAAIV,QAAQU,OAAAA;;;;;"}
@@ -2,7 +2,11 @@
2
2
 
3
3
  var path = require('node:path');
4
4
 
5
- const INTERNAL_CODEMODS_DIRECTORY = path.join(__dirname, '..', '..', '..', '..', 'resources', 'codemods' // resources/codemods
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var path__default = /*#__PURE__*/_interopDefault(path);
8
+
9
+ const INTERNAL_CODEMODS_DIRECTORY = path__default.default.join(__dirname, '..', '..', '..', '..', 'resources', 'codemods' // resources/codemods
6
10
  );
7
11
 
8
12
  exports.INTERNAL_CODEMODS_DIRECTORY = INTERNAL_CODEMODS_DIRECTORY;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../src/modules/codemod-repository/constants.ts"],"sourcesContent":["import path from 'node:path';\n\nexport const INTERNAL_CODEMODS_DIRECTORY = path.join(\n __dirname, // upgrade/dist/src/modules/codemod-repository\n '..', // upgrade/dist/src/modules\n '..', // upgrade/dist/src\n '..', // upgrade/dist\n '..', // upgrade\n 'resources', // resources\n 'codemods' // resources/codemods\n);\n"],"names":["INTERNAL_CODEMODS_DIRECTORY","path","join","__dirname"],"mappings":";;;;AAEO,MAAMA,2BAAAA,GAA8BC,IAAAA,CAAKC,IAAI,CAClDC,SAAAA,EACA,IAAA,EACA,IAAA,EACA,IAAA,EACA,IAAA,EACA,WAAA,EACA,UAAA;AACA;;;;"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../src/modules/codemod-repository/constants.ts"],"sourcesContent":["import path from 'node:path';\n\nexport const INTERNAL_CODEMODS_DIRECTORY = path.join(\n __dirname, // upgrade/dist/src/modules/codemod-repository\n '..', // upgrade/dist/src/modules\n '..', // upgrade/dist/src\n '..', // upgrade/dist\n '..', // upgrade\n 'resources', // resources\n 'codemods' // resources/codemods\n);\n"],"names":["INTERNAL_CODEMODS_DIRECTORY","path","join","__dirname"],"mappings":";;;;;;;;AAEO,MAAMA,2BAAAA,GAA8BC,qBAAAA,CAAKC,IAAI,CAClDC,SAAAA,EACA,IAAA,EACA,IAAA,EACA,IAAA,EACA,IAAA,EACA,WAAA,EACA,UAAA;AACA;;;;"}
@@ -10,6 +10,13 @@ var semver = require('../version/semver.js');
10
10
  var range = require('../version/range.js');
11
11
  var constants = require('./constants.js');
12
12
 
13
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
+
15
+ var assert__default = /*#__PURE__*/_interopDefault(assert);
16
+ var fse__default = /*#__PURE__*/_interopDefault(fse);
17
+ var semver__default = /*#__PURE__*/_interopDefault(semver$1);
18
+ var path__default = /*#__PURE__*/_interopDefault(path);
19
+
13
20
  class CodemodRepository {
14
21
  refresh() {
15
22
  this.refreshAvailableVersions();
@@ -70,11 +77,11 @@ class CodemodRepository {
70
77
  }));
71
78
  }
72
79
  refreshAvailableVersions() {
73
- this.versions = fse.readdirSync(this.cwd) // Only keep root directories
74
- .filter((filename)=>fse.statSync(path.join(this.cwd, filename)).isDirectory())// Paths should be valid semver
75
- .filter((filename)=>semver$1.valid(filename) !== null)// Transform files names to SemVer instances
80
+ this.versions = fse__default.default.readdirSync(this.cwd) // Only keep root directories
81
+ .filter((filename)=>fse__default.default.statSync(path__default.default.join(this.cwd, filename)).isDirectory())// Paths should be valid semver
82
+ .filter((filename)=>semver__default.default.valid(filename) !== null)// Transform files names to SemVer instances
76
83
  .map((version)=>semver.semVerFactory(version))// Sort versions in ascending order
77
- .sort(semver$1.compare);
84
+ .sort(semver__default.default.compare);
78
85
  return this;
79
86
  }
80
87
  refreshAvailableFiles() {
@@ -85,13 +92,13 @@ class CodemodRepository {
85
92
  }
86
93
  refreshAvailableFilesForVersion(version) {
87
94
  const literalVersion = version.raw;
88
- const versionDirectory = path.join(this.cwd, literalVersion);
95
+ const versionDirectory = path__default.default.join(this.cwd, literalVersion);
89
96
  // Ignore obsolete versions
90
- if (!fse.existsSync(versionDirectory)) {
97
+ if (!fse__default.default.existsSync(versionDirectory)) {
91
98
  return;
92
99
  }
93
- this.groups[literalVersion] = fse.readdirSync(versionDirectory)// Make sure the filenames are valid codemod files
94
- .filter((filename)=>fse.statSync(path.join(versionDirectory, filename)).isFile()).filter((filename)=>constants$1.CODEMOD_FILE_REGEXP.test(filename))// Transform the filenames into Codemod instances
100
+ this.groups[literalVersion] = fse__default.default.readdirSync(versionDirectory)// Make sure the filenames are valid codemod files
101
+ .filter((filename)=>fse__default.default.statSync(path__default.default.join(versionDirectory, filename)).isFile()).filter((filename)=>constants$1.CODEMOD_FILE_REGEXP.test(filename))// Transform the filenames into Codemod instances
95
102
  .map((filename)=>{
96
103
  const kind = parseCodemodKindFromFilename(filename);
97
104
  const baseDirectory = this.cwd;
@@ -104,7 +111,7 @@ class CodemodRepository {
104
111
  });
105
112
  }
106
113
  constructor(cwd){
107
- assert(fse.existsSync(cwd), `Invalid codemods directory provided "${cwd}"`);
114
+ assert__default.default(fse__default.default.existsSync(cwd), `Invalid codemods directory provided "${cwd}"`);
108
115
  this.cwd = cwd;
109
116
  this.groups = {};
110
117
  this.versions = [];
@@ -112,8 +119,8 @@ class CodemodRepository {
112
119
  }
113
120
  const parseCodemodKindFromFilename = (filename)=>{
114
121
  const kind = filename.split('.').at(-2);
115
- assert(kind !== undefined);
116
- assert(constants$1.CODEMOD_ALLOWED_SUFFIXES.includes(kind));
122
+ assert__default.default(kind !== undefined);
123
+ assert__default.default(constants$1.CODEMOD_ALLOWED_SUFFIXES.includes(kind));
117
124
  return kind;
118
125
  };
119
126
  const codemodRepositoryFactory = (cwd = constants.INTERNAL_CODEMODS_DIRECTORY)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","sources":["../../../../src/modules/codemod-repository/repository.ts"],"sourcesContent":["import assert from 'node:assert';\nimport fse from 'fs-extra';\nimport semver from 'semver';\nimport path from 'node:path';\n\nimport { codemodFactory, constants } from '../codemod';\nimport { isRangeInstance, semVerFactory } from '../version';\n\nimport { INTERNAL_CODEMODS_DIRECTORY } from './constants';\n\nimport type { Codemod } from '../codemod';\nimport type { Version } from '../version';\n\nimport type { CodemodRepository as CodemodRepositoryInterface, FindQuery } from './types';\n\nexport class CodemodRepository implements CodemodRepositoryInterface {\n private groups: Record<Version.LiteralSemVer, Codemod.Codemod[]>;\n\n private versions: Version.SemVer[];\n\n public cwd: string;\n\n constructor(cwd: string) {\n assert(fse.existsSync(cwd), `Invalid codemods directory provided \"${cwd}\"`);\n\n this.cwd = cwd;\n\n this.groups = {};\n this.versions = [];\n }\n\n refresh() {\n this.refreshAvailableVersions();\n this.refreshAvailableFiles();\n\n return this;\n }\n\n count(version: Version.SemVer) {\n return this.findByVersion(version).length;\n }\n\n versionExists(version: Version.SemVer) {\n return version.raw in this.groups;\n }\n\n has(uid: string) {\n const result = this.find({ uids: [uid] });\n\n if (result.length !== 1) {\n return false;\n }\n\n const { codemods } = result[0];\n\n return codemods.length === 1 && codemods[0].uid === uid;\n }\n\n find(q: FindQuery) {\n const entries = Object.entries(this.groups) as Array<[Version.LiteralSemVer, Codemod.List]>;\n\n return (\n entries\n // Filter by range if provided in the query\n .filter(maybeFilterByRange)\n // Transform version/codemods tuples into regular objects\n .map<Codemod.VersionedCollection>(([version, codemods]) => ({\n version: semVerFactory(version),\n // Filter by UID if provided in the query\n codemods: codemods.filter(maybeFilterByUIDs),\n }))\n // Only return groups with at least 1 codemod\n .filter(({ codemods }) => codemods.length > 0)\n );\n\n function maybeFilterByRange([version]: [Version.LiteralSemVer, Codemod.List]) {\n if (!isRangeInstance(q.range)) {\n return true;\n }\n\n return q.range.test(version);\n }\n\n function maybeFilterByUIDs(codemod: Codemod.Codemod) {\n if (q.uids === undefined) {\n return true;\n }\n\n return q.uids.includes(codemod.uid);\n }\n }\n\n findByVersion(version: Version.SemVer) {\n const literalVersion = version.raw as Version.LiteralSemVer;\n const codemods = this.groups[literalVersion];\n\n return codemods ?? [];\n }\n\n findAll() {\n const entries = Object.entries(this.groups);\n\n return entries.map<Codemod.VersionedCollection>(([version, codemods]) => ({\n version: semVerFactory(version),\n codemods,\n }));\n }\n\n private refreshAvailableVersions() {\n this.versions = fse\n .readdirSync(this.cwd) // Only keep root directories\n .filter((filename) => fse.statSync(path.join(this.cwd, filename)).isDirectory())\n // Paths should be valid semver\n .filter((filename): filename is Version.LiteralSemVer => semver.valid(filename) !== null)\n // Transform files names to SemVer instances\n .map<Version.SemVer>((version) => semVerFactory(version))\n // Sort versions in ascending order\n .sort(semver.compare);\n\n return this;\n }\n\n private refreshAvailableFiles() {\n this.groups = {};\n\n for (const version of this.versions) {\n this.refreshAvailableFilesForVersion(version);\n }\n }\n\n private refreshAvailableFilesForVersion(version: Version.SemVer) {\n const literalVersion = version.raw as Version.LiteralSemVer;\n const versionDirectory = path.join(this.cwd, literalVersion);\n\n // Ignore obsolete versions\n if (!fse.existsSync(versionDirectory)) {\n return;\n }\n\n this.groups[literalVersion] = fse\n .readdirSync(versionDirectory)\n // Make sure the filenames are valid codemod files\n .filter((filename) => fse.statSync(path.join(versionDirectory, filename)).isFile())\n .filter((filename) => constants.CODEMOD_FILE_REGEXP.test(filename))\n // Transform the filenames into Codemod instances\n .map((filename) => {\n const kind = parseCodemodKindFromFilename(filename);\n const baseDirectory = this.cwd;\n\n return codemodFactory({ kind, baseDirectory, version, filename });\n });\n }\n}\n\nexport const parseCodemodKindFromFilename = (filename: string): Codemod.Kind => {\n const kind = filename.split('.').at(-2) as Codemod.Kind | undefined;\n\n assert(kind !== undefined);\n assert(constants.CODEMOD_ALLOWED_SUFFIXES.includes(kind));\n\n return kind;\n};\n\nexport const codemodRepositoryFactory = (cwd: string = INTERNAL_CODEMODS_DIRECTORY) => {\n return new CodemodRepository(cwd);\n};\n"],"names":["CodemodRepository","refresh","refreshAvailableVersions","refreshAvailableFiles","count","version","findByVersion","length","versionExists","raw","groups","has","uid","result","find","uids","codemods","q","entries","Object","filter","maybeFilterByRange","map","semVerFactory","maybeFilterByUIDs","isRangeInstance","range","test","codemod","undefined","includes","literalVersion","findAll","versions","fse","readdirSync","cwd","filename","statSync","path","join","isDirectory","semver","valid","sort","compare","refreshAvailableFilesForVersion","versionDirectory","existsSync","isFile","constants","kind","parseCodemodKindFromFilename","baseDirectory","codemodFactory","assert","split","at","codemodRepositoryFactory","INTERNAL_CODEMODS_DIRECTORY"],"mappings":"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"}
1
+ {"version":3,"file":"repository.js","sources":["../../../../src/modules/codemod-repository/repository.ts"],"sourcesContent":["import assert from 'node:assert';\nimport fse from 'fs-extra';\nimport semver from 'semver';\nimport path from 'node:path';\n\nimport { codemodFactory, constants } from '../codemod';\nimport { isRangeInstance, semVerFactory } from '../version';\n\nimport { INTERNAL_CODEMODS_DIRECTORY } from './constants';\n\nimport type { Codemod } from '../codemod';\nimport type { Version } from '../version';\n\nimport type { CodemodRepository as CodemodRepositoryInterface, FindQuery } from './types';\n\nexport class CodemodRepository implements CodemodRepositoryInterface {\n private groups: Record<Version.LiteralSemVer, Codemod.Codemod[]>;\n\n private versions: Version.SemVer[];\n\n public cwd: string;\n\n constructor(cwd: string) {\n assert(fse.existsSync(cwd), `Invalid codemods directory provided \"${cwd}\"`);\n\n this.cwd = cwd;\n\n this.groups = {};\n this.versions = [];\n }\n\n refresh() {\n this.refreshAvailableVersions();\n this.refreshAvailableFiles();\n\n return this;\n }\n\n count(version: Version.SemVer) {\n return this.findByVersion(version).length;\n }\n\n versionExists(version: Version.SemVer) {\n return version.raw in this.groups;\n }\n\n has(uid: string) {\n const result = this.find({ uids: [uid] });\n\n if (result.length !== 1) {\n return false;\n }\n\n const { codemods } = result[0];\n\n return codemods.length === 1 && codemods[0].uid === uid;\n }\n\n find(q: FindQuery) {\n const entries = Object.entries(this.groups) as Array<[Version.LiteralSemVer, Codemod.List]>;\n\n return (\n entries\n // Filter by range if provided in the query\n .filter(maybeFilterByRange)\n // Transform version/codemods tuples into regular objects\n .map<Codemod.VersionedCollection>(([version, codemods]) => ({\n version: semVerFactory(version),\n // Filter by UID if provided in the query\n codemods: codemods.filter(maybeFilterByUIDs),\n }))\n // Only return groups with at least 1 codemod\n .filter(({ codemods }) => codemods.length > 0)\n );\n\n function maybeFilterByRange([version]: [Version.LiteralSemVer, Codemod.List]) {\n if (!isRangeInstance(q.range)) {\n return true;\n }\n\n return q.range.test(version);\n }\n\n function maybeFilterByUIDs(codemod: Codemod.Codemod) {\n if (q.uids === undefined) {\n return true;\n }\n\n return q.uids.includes(codemod.uid);\n }\n }\n\n findByVersion(version: Version.SemVer) {\n const literalVersion = version.raw as Version.LiteralSemVer;\n const codemods = this.groups[literalVersion];\n\n return codemods ?? [];\n }\n\n findAll() {\n const entries = Object.entries(this.groups);\n\n return entries.map<Codemod.VersionedCollection>(([version, codemods]) => ({\n version: semVerFactory(version),\n codemods,\n }));\n }\n\n private refreshAvailableVersions() {\n this.versions = fse\n .readdirSync(this.cwd) // Only keep root directories\n .filter((filename) => fse.statSync(path.join(this.cwd, filename)).isDirectory())\n // Paths should be valid semver\n .filter((filename): filename is Version.LiteralSemVer => semver.valid(filename) !== null)\n // Transform files names to SemVer instances\n .map<Version.SemVer>((version) => semVerFactory(version))\n // Sort versions in ascending order\n .sort(semver.compare);\n\n return this;\n }\n\n private refreshAvailableFiles() {\n this.groups = {};\n\n for (const version of this.versions) {\n this.refreshAvailableFilesForVersion(version);\n }\n }\n\n private refreshAvailableFilesForVersion(version: Version.SemVer) {\n const literalVersion = version.raw as Version.LiteralSemVer;\n const versionDirectory = path.join(this.cwd, literalVersion);\n\n // Ignore obsolete versions\n if (!fse.existsSync(versionDirectory)) {\n return;\n }\n\n this.groups[literalVersion] = fse\n .readdirSync(versionDirectory)\n // Make sure the filenames are valid codemod files\n .filter((filename) => fse.statSync(path.join(versionDirectory, filename)).isFile())\n .filter((filename) => constants.CODEMOD_FILE_REGEXP.test(filename))\n // Transform the filenames into Codemod instances\n .map((filename) => {\n const kind = parseCodemodKindFromFilename(filename);\n const baseDirectory = this.cwd;\n\n return codemodFactory({ kind, baseDirectory, version, filename });\n });\n }\n}\n\nexport const parseCodemodKindFromFilename = (filename: string): Codemod.Kind => {\n const kind = filename.split('.').at(-2) as Codemod.Kind | undefined;\n\n assert(kind !== undefined);\n assert(constants.CODEMOD_ALLOWED_SUFFIXES.includes(kind));\n\n return kind;\n};\n\nexport const codemodRepositoryFactory = (cwd: string = INTERNAL_CODEMODS_DIRECTORY) => {\n return new CodemodRepository(cwd);\n};\n"],"names":["CodemodRepository","refresh","refreshAvailableVersions","refreshAvailableFiles","count","version","findByVersion","length","versionExists","raw","groups","has","uid","result","find","uids","codemods","q","entries","Object","filter","maybeFilterByRange","map","semVerFactory","maybeFilterByUIDs","isRangeInstance","range","test","codemod","undefined","includes","literalVersion","findAll","versions","fse","readdirSync","cwd","filename","statSync","path","join","isDirectory","semver","valid","sort","compare","refreshAvailableFilesForVersion","versionDirectory","existsSync","isFile","constants","kind","parseCodemodKindFromFilename","baseDirectory","codemodFactory","assert","split","at","codemodRepositoryFactory","INTERNAL_CODEMODS_DIRECTORY"],"mappings":"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"}
@@ -3,14 +3,19 @@
3
3
  var path = require('node:path');
4
4
  var fastglob = require('fast-glob');
5
5
 
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
+
8
+ var path__default = /*#__PURE__*/_interopDefault(path);
9
+ var fastglob__default = /*#__PURE__*/_interopDefault(fastglob);
10
+
6
11
  class FileScanner {
7
12
  scan(patterns) {
8
13
  // we use fastglob instead of glob because it supports negation patterns
9
- const filenames = fastglob.sync(patterns, {
14
+ const filenames = fastglob__default.default.sync(patterns, {
10
15
  cwd: this.cwd
11
16
  });
12
17
  // Resolve the full paths for every filename
13
- return filenames.map((filename)=>path.join(this.cwd, filename));
18
+ return filenames.map((filename)=>path__default.default.join(this.cwd, filename));
14
19
  }
15
20
  constructor(cwd){
16
21
  this.cwd = cwd;
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sources":["../../../../src/modules/file-scanner/scanner.ts"],"sourcesContent":["import path from 'node:path';\nimport fastglob from 'fast-glob';\n\nimport type { FileScanner as FileScannerInterface } from './types';\n\nexport class FileScanner implements FileScannerInterface {\n public cwd: string;\n\n constructor(cwd: string) {\n this.cwd = cwd;\n }\n\n scan(patterns: string[]) {\n // we use fastglob instead of glob because it supports negation patterns\n const filenames = fastglob.sync(patterns, {\n cwd: this.cwd,\n });\n\n // Resolve the full paths for every filename\n return filenames.map((filename) => path.join(this.cwd, filename));\n }\n}\n\nexport const fileScannerFactory = (cwd: string) => new FileScanner(cwd);\n"],"names":["FileScanner","scan","patterns","filenames","fastglob","sync","cwd","map","filename","path","join","fileScannerFactory"],"mappings":";;;;;AAKO,MAAMA,WAAAA,CAAAA;AAOXC,IAAAA,IAAAA,CAAKC,QAAkB,EAAE;;AAEvB,QAAA,MAAMC,SAAAA,GAAYC,QAAAA,CAASC,IAAI,CAACH,QAAAA,EAAU;YACxCI,GAAAA,EAAK,IAAI,CAACA;AACZ,SAAA,CAAA;;QAGA,OAAOH,SAAAA,CAAUI,GAAG,CAAC,CAACC,QAAAA,GAAaC,IAAAA,CAAKC,IAAI,CAAC,IAAI,CAACJ,GAAG,EAAEE,QAAAA,CAAAA,CAAAA;AACzD,IAAA;AAZA,IAAA,WAAA,CAAYF,GAAW,CAAE;QACvB,IAAI,CAACA,GAAG,GAAGA,GAAAA;AACb,IAAA;AAWF;MAEaK,kBAAAA,GAAqB,CAACL,GAAAA,GAAgB,IAAIN,YAAYM,GAAAA;;;;;"}
1
+ {"version":3,"file":"scanner.js","sources":["../../../../src/modules/file-scanner/scanner.ts"],"sourcesContent":["import path from 'node:path';\nimport fastglob from 'fast-glob';\n\nimport type { FileScanner as FileScannerInterface } from './types';\n\nexport class FileScanner implements FileScannerInterface {\n public cwd: string;\n\n constructor(cwd: string) {\n this.cwd = cwd;\n }\n\n scan(patterns: string[]) {\n // we use fastglob instead of glob because it supports negation patterns\n const filenames = fastglob.sync(patterns, {\n cwd: this.cwd,\n });\n\n // Resolve the full paths for every filename\n return filenames.map((filename) => path.join(this.cwd, filename));\n }\n}\n\nexport const fileScannerFactory = (cwd: string) => new FileScanner(cwd);\n"],"names":["FileScanner","scan","patterns","filenames","fastglob","sync","cwd","map","filename","path","join","fileScannerFactory"],"mappings":";;;;;;;;;;AAKO,MAAMA,WAAAA,CAAAA;AAOXC,IAAAA,IAAAA,CAAKC,QAAkB,EAAE;;AAEvB,QAAA,MAAMC,SAAAA,GAAYC,yBAAAA,CAASC,IAAI,CAACH,QAAAA,EAAU;YACxCI,GAAAA,EAAK,IAAI,CAACA;AACZ,SAAA,CAAA;;QAGA,OAAOH,SAAAA,CAAUI,GAAG,CAAC,CAACC,QAAAA,GAAaC,qBAAAA,CAAKC,IAAI,CAAC,IAAI,CAACJ,GAAG,EAAEE,QAAAA,CAAAA,CAAAA;AACzD,IAAA;AAZA,IAAA,WAAA,CAAYF,GAAW,CAAE;QACvB,IAAI,CAACA,GAAG,GAAGA,GAAAA;AACb,IAAA;AAWF;MAEaK,kBAAAA,GAAqB,CAACL,GAAAA,GAAgB,IAAIN,YAAYM,GAAAA;;;;;"}
@@ -4,32 +4,37 @@ var CliTable3 = require('cli-table3');
4
4
  var chalk = require('chalk');
5
5
  var constants = require('../timer/constants.js');
6
6
 
7
- const path = (path)=>chalk.blue(path);
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var CliTable3__default = /*#__PURE__*/_interopDefault(CliTable3);
10
+ var chalk__default = /*#__PURE__*/_interopDefault(chalk);
11
+
12
+ const path = (path)=>chalk__default.default.blue(path);
8
13
  const version = (version)=>{
9
- return chalk.italic.yellow(`v${version}`);
14
+ return chalk__default.default.italic.yellow(`v${version}`);
10
15
  };
11
16
  const codemodUID = (uid)=>{
12
- return chalk.bold.cyan(uid);
17
+ return chalk__default.default.bold.cyan(uid);
13
18
  };
14
19
  const projectDetails = (project)=>{
15
20
  return `Project: TYPE=${projectType(project.type)}; CWD=${path(project.cwd)}; PATHS=${project.paths.map(path)}`;
16
21
  };
17
- const projectType = (type)=>chalk.cyan(type);
18
- const versionRange = (range)=>chalk.italic.yellow(range.raw);
19
- const transform = (transformFilePath)=>chalk.cyan(transformFilePath);
20
- const highlight = (arg)=>chalk.bold.underline(arg);
22
+ const projectType = (type)=>chalk__default.default.cyan(type);
23
+ const versionRange = (range)=>chalk__default.default.italic.yellow(range.raw);
24
+ const transform = (transformFilePath)=>chalk__default.default.cyan(transformFilePath);
25
+ const highlight = (arg)=>chalk__default.default.bold.underline(arg);
21
26
  const upgradeStep = (text, step)=>{
22
- return chalk.bold(`(${step[0]}/${step[1]}) ${text}...`);
27
+ return chalk__default.default.bold(`(${step[0]}/${step[1]}) ${text}...`);
23
28
  };
24
29
  const reports = (reports)=>{
25
30
  const rows = reports.map(({ codemod, report }, i)=>{
26
- const fIndex = chalk.grey(i);
27
- const fVersion = chalk.magenta(codemod.version);
28
- const fKind = chalk.yellow(codemod.kind);
29
- const fFormattedTransformPath = chalk.cyan(codemod.format());
30
- const fTimeElapsed = i === 0 ? `${report.timeElapsed}s ${chalk.dim.italic('(cold start)')}` : `${report.timeElapsed}s`;
31
- const fAffected = report.ok > 0 ? chalk.green(report.ok) : chalk.grey(0);
32
- const fUnchanged = report.ok === 0 ? chalk.red(report.nochange) : chalk.grey(report.nochange);
31
+ const fIndex = chalk__default.default.grey(i);
32
+ const fVersion = chalk__default.default.magenta(codemod.version);
33
+ const fKind = chalk__default.default.yellow(codemod.kind);
34
+ const fFormattedTransformPath = chalk__default.default.cyan(codemod.format());
35
+ const fTimeElapsed = i === 0 ? `${report.timeElapsed}s ${chalk__default.default.dim.italic('(cold start)')}` : `${report.timeElapsed}s`;
36
+ const fAffected = report.ok > 0 ? chalk__default.default.green(report.ok) : chalk__default.default.grey(0);
37
+ const fUnchanged = report.ok === 0 ? chalk__default.default.red(report.nochange) : chalk__default.default.grey(report.nochange);
33
38
  return [
34
39
  fIndex,
35
40
  fVersion,
@@ -40,18 +45,18 @@ const reports = (reports)=>{
40
45
  fTimeElapsed
41
46
  ];
42
47
  });
43
- const table = new CliTable3({
48
+ const table = new CliTable3__default.default({
44
49
  style: {
45
50
  compact: true
46
51
  },
47
52
  head: [
48
- chalk.bold.grey('N°'),
49
- chalk.bold.magenta('Version'),
50
- chalk.bold.yellow('Kind'),
51
- chalk.bold.cyan('Name'),
52
- chalk.bold.green('Affected'),
53
- chalk.bold.red('Unchanged'),
54
- chalk.bold.blue('Duration')
53
+ chalk__default.default.bold.grey('N°'),
54
+ chalk__default.default.bold.magenta('Version'),
55
+ chalk__default.default.bold.yellow('Kind'),
56
+ chalk__default.default.bold.cyan('Name'),
57
+ chalk__default.default.bold.green('Affected'),
58
+ chalk__default.default.bold.red('Unchanged'),
59
+ chalk__default.default.bold.blue('Duration')
55
60
  ]
56
61
  });
57
62
  table.push(...rows);
@@ -59,10 +64,10 @@ const reports = (reports)=>{
59
64
  };
60
65
  const codemodList = (codemods)=>{
61
66
  const rows = codemods.map((codemod, index)=>{
62
- const fIndex = chalk.grey(index);
63
- const fVersion = chalk.magenta(codemod.version);
64
- const fKind = chalk.yellow(codemod.kind);
65
- const fName = chalk.blue(codemod.format());
67
+ const fIndex = chalk__default.default.grey(index);
68
+ const fVersion = chalk__default.default.magenta(codemod.version);
69
+ const fKind = chalk__default.default.yellow(codemod.kind);
70
+ const fName = chalk__default.default.blue(codemod.format());
66
71
  const fUID = codemodUID(codemod.uid);
67
72
  return [
68
73
  fIndex,
@@ -72,16 +77,16 @@ const codemodList = (codemods)=>{
72
77
  fUID
73
78
  ];
74
79
  });
75
- const table = new CliTable3({
80
+ const table = new CliTable3__default.default({
76
81
  style: {
77
82
  compact: true
78
83
  },
79
84
  head: [
80
- chalk.bold.grey('N°'),
81
- chalk.bold.magenta('Version'),
82
- chalk.bold.yellow('Kind'),
83
- chalk.bold.blue('Name'),
84
- chalk.bold.cyan('UID')
85
+ chalk__default.default.bold.grey('N°'),
86
+ chalk__default.default.bold.magenta('Version'),
87
+ chalk__default.default.bold.yellow('Kind'),
88
+ chalk__default.default.bold.blue('Name'),
89
+ chalk__default.default.bold.cyan('UID')
85
90
  ]
86
91
  });
87
92
  table.push(...rows);
@@ -1 +1 @@
1
- {"version":3,"file":"formats.js","sources":["../../../../src/modules/format/formats.ts"],"sourcesContent":["import CliTable3 from 'cli-table3';\nimport chalk from 'chalk';\n\nimport { constants as timerConstants } from '../timer';\n\nimport type { AppProject, PluginProject, ProjectType } from '../project';\nimport type { Codemod } from '../codemod';\nimport type { Version } from '../version';\nimport type { Report } from '../report';\n\nexport const path = (path: string) => chalk.blue(path);\n\nexport const version = (version: Version.LiteralVersion | Version.SemVer) => {\n return chalk.italic.yellow(`v${version}`);\n};\n\nexport const codemodUID = (uid: string) => {\n return chalk.bold.cyan(uid);\n};\n\nexport const projectDetails = (project: AppProject | PluginProject) => {\n return `Project: TYPE=${projectType(project.type)}; CWD=${path(project.cwd)}; PATHS=${project.paths.map(path)}`;\n};\n\nexport const projectType = (type: ProjectType) => chalk.cyan(type);\n\nexport const versionRange = (range: Version.Range) => chalk.italic.yellow(range.raw);\n\nexport const transform = (transformFilePath: string) => chalk.cyan(transformFilePath);\n\nexport const highlight = (arg: unknown) => chalk.bold.underline(arg);\n\nexport const upgradeStep = (text: string, step: [current: number, total: number]) => {\n return chalk.bold(`(${step[0]}/${step[1]}) ${text}...`);\n};\n\nexport const reports = (reports: Report.CodemodReport[]) => {\n const rows = reports.map(({ codemod, report }, i) => {\n const fIndex = chalk.grey(i);\n const fVersion = chalk.magenta(codemod.version);\n const fKind = chalk.yellow(codemod.kind);\n const fFormattedTransformPath = chalk.cyan(codemod.format());\n const fTimeElapsed =\n i === 0\n ? `${report.timeElapsed}s ${chalk.dim.italic('(cold start)')}`\n : `${report.timeElapsed}s`;\n const fAffected = report.ok > 0 ? chalk.green(report.ok) : chalk.grey(0);\n const fUnchanged = report.ok === 0 ? chalk.red(report.nochange) : chalk.grey(report.nochange);\n\n return [fIndex, fVersion, fKind, fFormattedTransformPath, fAffected, fUnchanged, fTimeElapsed];\n });\n\n const table = new CliTable3({\n style: { compact: true },\n head: [\n chalk.bold.grey('N°'),\n chalk.bold.magenta('Version'),\n chalk.bold.yellow('Kind'),\n chalk.bold.cyan('Name'),\n chalk.bold.green('Affected'),\n chalk.bold.red('Unchanged'),\n chalk.bold.blue('Duration'),\n ],\n });\n\n table.push(...rows);\n\n return table.toString();\n};\n\nexport const codemodList = (codemods: Codemod.List) => {\n type Row = [index: string, version: string, kind: string, name: string, uid: string];\n\n const rows = codemods.map<Row>((codemod, index) => {\n const fIndex = chalk.grey(index);\n const fVersion = chalk.magenta(codemod.version);\n const fKind = chalk.yellow(codemod.kind);\n const fName = chalk.blue(codemod.format());\n const fUID = codemodUID(codemod.uid);\n\n return [fIndex, fVersion, fKind, fName, fUID] satisfies Row;\n });\n\n const table = new CliTable3({\n style: { compact: true },\n head: [\n chalk.bold.grey('N°'),\n chalk.bold.magenta('Version'),\n chalk.bold.yellow('Kind'),\n chalk.bold.blue('Name'),\n chalk.bold.cyan('UID'),\n ],\n });\n\n table.push(...rows);\n\n return table.toString();\n};\n\nexport const durationMs = (elapsedMs: number) => {\n const elapsedSeconds = (elapsedMs / timerConstants.ONE_SECOND_MS).toFixed(3);\n\n return `${elapsedSeconds}s`;\n};\n"],"names":["path","chalk","blue","version","italic","yellow","codemodUID","uid","bold","cyan","projectDetails","project","projectType","type","cwd","paths","map","versionRange","range","raw","transform","transformFilePath","highlight","arg","underline","upgradeStep","text","step","reports","rows","codemod","report","i","fIndex","grey","fVersion","magenta","fKind","kind","fFormattedTransformPath","format","fTimeElapsed","timeElapsed","dim","fAffected","ok","green","fUnchanged","red","nochange","table","CliTable3","style","compact","head","push","toString","codemodList","codemods","index","fName","fUID","durationMs","elapsedMs","elapsedSeconds","timerConstants","toFixed"],"mappings":"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"}
1
+ {"version":3,"file":"formats.js","sources":["../../../../src/modules/format/formats.ts"],"sourcesContent":["import CliTable3 from 'cli-table3';\nimport chalk from 'chalk';\n\nimport { constants as timerConstants } from '../timer';\n\nimport type { AppProject, PluginProject, ProjectType } from '../project';\nimport type { Codemod } from '../codemod';\nimport type { Version } from '../version';\nimport type { Report } from '../report';\n\nexport const path = (path: string) => chalk.blue(path);\n\nexport const version = (version: Version.LiteralVersion | Version.SemVer) => {\n return chalk.italic.yellow(`v${version}`);\n};\n\nexport const codemodUID = (uid: string) => {\n return chalk.bold.cyan(uid);\n};\n\nexport const projectDetails = (project: AppProject | PluginProject) => {\n return `Project: TYPE=${projectType(project.type)}; CWD=${path(project.cwd)}; PATHS=${project.paths.map(path)}`;\n};\n\nexport const projectType = (type: ProjectType) => chalk.cyan(type);\n\nexport const versionRange = (range: Version.Range) => chalk.italic.yellow(range.raw);\n\nexport const transform = (transformFilePath: string) => chalk.cyan(transformFilePath);\n\nexport const highlight = (arg: unknown) => chalk.bold.underline(arg);\n\nexport const upgradeStep = (text: string, step: [current: number, total: number]) => {\n return chalk.bold(`(${step[0]}/${step[1]}) ${text}...`);\n};\n\nexport const reports = (reports: Report.CodemodReport[]) => {\n const rows = reports.map(({ codemod, report }, i) => {\n const fIndex = chalk.grey(i);\n const fVersion = chalk.magenta(codemod.version);\n const fKind = chalk.yellow(codemod.kind);\n const fFormattedTransformPath = chalk.cyan(codemod.format());\n const fTimeElapsed =\n i === 0\n ? `${report.timeElapsed}s ${chalk.dim.italic('(cold start)')}`\n : `${report.timeElapsed}s`;\n const fAffected = report.ok > 0 ? chalk.green(report.ok) : chalk.grey(0);\n const fUnchanged = report.ok === 0 ? chalk.red(report.nochange) : chalk.grey(report.nochange);\n\n return [fIndex, fVersion, fKind, fFormattedTransformPath, fAffected, fUnchanged, fTimeElapsed];\n });\n\n const table = new CliTable3({\n style: { compact: true },\n head: [\n chalk.bold.grey('N°'),\n chalk.bold.magenta('Version'),\n chalk.bold.yellow('Kind'),\n chalk.bold.cyan('Name'),\n chalk.bold.green('Affected'),\n chalk.bold.red('Unchanged'),\n chalk.bold.blue('Duration'),\n ],\n });\n\n table.push(...rows);\n\n return table.toString();\n};\n\nexport const codemodList = (codemods: Codemod.List) => {\n type Row = [index: string, version: string, kind: string, name: string, uid: string];\n\n const rows = codemods.map<Row>((codemod, index) => {\n const fIndex = chalk.grey(index);\n const fVersion = chalk.magenta(codemod.version);\n const fKind = chalk.yellow(codemod.kind);\n const fName = chalk.blue(codemod.format());\n const fUID = codemodUID(codemod.uid);\n\n return [fIndex, fVersion, fKind, fName, fUID] satisfies Row;\n });\n\n const table = new CliTable3({\n style: { compact: true },\n head: [\n chalk.bold.grey('N°'),\n chalk.bold.magenta('Version'),\n chalk.bold.yellow('Kind'),\n chalk.bold.blue('Name'),\n chalk.bold.cyan('UID'),\n ],\n });\n\n table.push(...rows);\n\n return table.toString();\n};\n\nexport const durationMs = (elapsedMs: number) => {\n const elapsedSeconds = (elapsedMs / timerConstants.ONE_SECOND_MS).toFixed(3);\n\n return `${elapsedSeconds}s`;\n};\n"],"names":["path","chalk","blue","version","italic","yellow","codemodUID","uid","bold","cyan","projectDetails","project","projectType","type","cwd","paths","map","versionRange","range","raw","transform","transformFilePath","highlight","arg","underline","upgradeStep","text","step","reports","rows","codemod","report","i","fIndex","grey","fVersion","magenta","fKind","kind","fFormattedTransformPath","format","fTimeElapsed","timeElapsed","dim","fAffected","ok","green","fUnchanged","red","nochange","table","CliTable3","style","compact","head","push","toString","codemodList","codemods","index","fName","fUID","durationMs","elapsedMs","elapsedSeconds","timerConstants","toFixed"],"mappings":"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"}
@@ -2,13 +2,17 @@
2
2
 
3
3
  var fse = require('fs-extra');
4
4
 
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var fse__default = /*#__PURE__*/_interopDefault(fse);
8
+
5
9
  const readJSON = async (path)=>{
6
- const buffer = await fse.readFile(path);
10
+ const buffer = await fse__default.default.readFile(path);
7
11
  return JSON.parse(buffer.toString());
8
12
  };
9
13
  const saveJSON = async (path, json)=>{
10
14
  const jsonAsString = `${JSON.stringify(json, null, 2)}\n`;
11
- await fse.writeFile(path, jsonAsString);
15
+ await fse__default.default.writeFile(path, jsonAsString);
12
16
  };
13
17
 
14
18
  exports.readJSON = readJSON;
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sources":["../../../../src/modules/json/file.ts"],"sourcesContent":["import fse from 'fs-extra';\n\nimport type { Utils } from '@strapi/types';\n\nexport const readJSON = async (path: string): Promise<Utils.JSONValue> => {\n const buffer = await fse.readFile(path);\n\n return JSON.parse(buffer.toString());\n};\n\nexport const saveJSON = async (path: string, json: Utils.JSONValue): Promise<void> => {\n const jsonAsString = `${JSON.stringify(json, null, 2)}\\n`;\n\n await fse.writeFile(path, jsonAsString);\n};\n"],"names":["readJSON","path","buffer","fse","readFile","JSON","parse","toString","saveJSON","json","jsonAsString","stringify","writeFile"],"mappings":";;;;AAIO,MAAMA,WAAW,OAAOC,IAAAA,GAAAA;AAC7B,IAAA,MAAMC,MAAAA,GAAS,MAAMC,GAAAA,CAAIC,QAAQ,CAACH,IAAAA,CAAAA;AAElC,IAAA,OAAOI,IAAAA,CAAKC,KAAK,CAACJ,MAAAA,CAAOK,QAAQ,EAAA,CAAA;AACnC;AAEO,MAAMC,QAAAA,GAAW,OAAOP,IAAAA,EAAcQ,IAAAA,GAAAA;IAC3C,MAAMC,YAAAA,GAAe,GAAGL,IAAAA,CAAKM,SAAS,CAACF,IAAAA,EAAM,IAAA,EAAM,CAAA,CAAA,CAAG,EAAE,CAAC;IAEzD,MAAMN,GAAAA,CAAIS,SAAS,CAACX,IAAAA,EAAMS,YAAAA,CAAAA;AAC5B;;;;;"}
1
+ {"version":3,"file":"file.js","sources":["../../../../src/modules/json/file.ts"],"sourcesContent":["import fse from 'fs-extra';\n\nimport type { Utils } from '@strapi/types';\n\nexport const readJSON = async (path: string): Promise<Utils.JSONValue> => {\n const buffer = await fse.readFile(path);\n\n return JSON.parse(buffer.toString());\n};\n\nexport const saveJSON = async (path: string, json: Utils.JSONValue): Promise<void> => {\n const jsonAsString = `${JSON.stringify(json, null, 2)}\\n`;\n\n await fse.writeFile(path, jsonAsString);\n};\n"],"names":["readJSON","path","buffer","fse","readFile","JSON","parse","toString","saveJSON","json","jsonAsString","stringify","writeFile"],"mappings":";;;;;;;;AAIO,MAAMA,WAAW,OAAOC,IAAAA,GAAAA;AAC7B,IAAA,MAAMC,MAAAA,GAAS,MAAMC,oBAAAA,CAAIC,QAAQ,CAACH,IAAAA,CAAAA;AAElC,IAAA,OAAOI,IAAAA,CAAKC,KAAK,CAACJ,MAAAA,CAAOK,QAAQ,EAAA,CAAA;AACnC;AAEO,MAAMC,QAAAA,GAAW,OAAOP,IAAAA,EAAcQ,IAAAA,GAAAA;IAC3C,MAAMC,YAAAA,GAAe,GAAGL,IAAAA,CAAKM,SAAS,CAACF,IAAAA,EAAM,IAAA,EAAM,CAAA,CAAA,CAAG,EAAE,CAAC;IAEzD,MAAMN,oBAAAA,CAAIS,SAAS,CAACX,IAAAA,EAAMS,YAAAA,CAAAA;AAC5B;;;;;"}
@@ -2,6 +2,10 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
 
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var chalk__default = /*#__PURE__*/_interopDefault(chalk);
8
+
5
9
  class Logger {
6
10
  get isNotSilent() {
7
11
  return !this.isSilent;
@@ -29,20 +33,20 @@ class Logger {
29
33
  debug(...args) {
30
34
  const isDebugEnabled = this.isNotSilent && this.isDebug;
31
35
  if (isDebugEnabled) {
32
- console.log(chalk.cyan(`[DEBUG]\t[${nowAsISO()}]`), ...args);
36
+ console.log(chalk__default.default.cyan(`[DEBUG]\t[${nowAsISO()}]`), ...args);
33
37
  }
34
38
  return this;
35
39
  }
36
40
  error(...args) {
37
41
  this.nbErrorsCalls += 1;
38
42
  if (this.isNotSilent) {
39
- console.error(chalk.red(`[ERROR]\t[${nowAsISO()}]`), ...args);
43
+ console.error(chalk__default.default.red(`[ERROR]\t[${nowAsISO()}]`), ...args);
40
44
  }
41
45
  return this;
42
46
  }
43
47
  info(...args) {
44
48
  if (this.isNotSilent) {
45
- console.info(chalk.blue(`[INFO]\t[${new Date().toISOString()}]`), ...args);
49
+ console.info(chalk__default.default.blue(`[INFO]\t[${new Date().toISOString()}]`), ...args);
46
50
  }
47
51
  return this;
48
52
  }
@@ -55,7 +59,7 @@ class Logger {
55
59
  warn(...args) {
56
60
  this.nbWarningsCalls += 1;
57
61
  if (this.isNotSilent) {
58
- console.warn(chalk.yellow(`[WARN]\t[${new Date().toISOString()}]`), ...args);
62
+ console.warn(chalk__default.default.yellow(`[WARN]\t[${new Date().toISOString()}]`), ...args);
59
63
  }
60
64
  return this;
61
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sources":["../../../../src/modules/logger/logger.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport type { Logger as LoggerInterface, LoggerOptions } from './types';\n\nexport class Logger implements LoggerInterface {\n isDebug: boolean;\n\n isSilent: boolean;\n\n private nbErrorsCalls: number;\n\n private nbWarningsCalls: number;\n\n constructor(options: LoggerOptions = {}) {\n // Set verbosity options\n this.isDebug = options.debug ?? false;\n this.isSilent = options.silent ?? false;\n\n // Initialize counters\n this.nbErrorsCalls = 0;\n this.nbWarningsCalls = 0;\n }\n\n private get isNotSilent(): boolean {\n return !this.isSilent;\n }\n\n get errors(): number {\n return this.nbErrorsCalls;\n }\n\n get warnings(): number {\n return this.nbWarningsCalls;\n }\n\n get stdout(): (NodeJS.WriteStream & { fd: 1 }) | undefined {\n return this.isSilent ? undefined : process.stdout;\n }\n\n get stderr(): (NodeJS.WriteStream & { fd: 2 }) | undefined {\n return this.isSilent ? undefined : process.stderr;\n }\n\n setDebug(debug: boolean): this {\n this.isDebug = debug;\n return this;\n }\n\n setSilent(silent: boolean): this {\n this.isSilent = silent;\n return this;\n }\n\n debug(...args: unknown[]): this {\n const isDebugEnabled = this.isNotSilent && this.isDebug;\n\n if (isDebugEnabled) {\n console.log(chalk.cyan(`[DEBUG]\\t[${nowAsISO()}]`), ...args);\n }\n\n return this;\n }\n\n error(...args: unknown[]): this {\n this.nbErrorsCalls += 1;\n\n if (this.isNotSilent) {\n console.error(chalk.red(`[ERROR]\\t[${nowAsISO()}]`), ...args);\n }\n\n return this;\n }\n\n info(...args: unknown[]): this {\n if (this.isNotSilent) {\n console.info(chalk.blue(`[INFO]\\t[${new Date().toISOString()}]`), ...args);\n }\n\n return this;\n }\n\n raw(...args: unknown[]): this {\n if (this.isNotSilent) {\n console.log(...args);\n }\n\n return this;\n }\n\n warn(...args: unknown[]): this {\n this.nbWarningsCalls += 1;\n\n if (this.isNotSilent) {\n console.warn(chalk.yellow(`[WARN]\\t[${new Date().toISOString()}]`), ...args);\n }\n\n return this;\n }\n}\n\nconst nowAsISO = () => new Date().toISOString();\n\nexport const loggerFactory = (options: LoggerOptions = {}) => new Logger(options);\n"],"names":["Logger","isNotSilent","isSilent","errors","nbErrorsCalls","warnings","nbWarningsCalls","stdout","undefined","process","stderr","setDebug","debug","isDebug","setSilent","silent","args","isDebugEnabled","console","log","chalk","cyan","nowAsISO","error","red","info","blue","Date","toISOString","raw","warn","yellow","options","loggerFactory"],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sources":["../../../../src/modules/logger/logger.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport type { Logger as LoggerInterface, LoggerOptions } from './types';\n\nexport class Logger implements LoggerInterface {\n isDebug: boolean;\n\n isSilent: boolean;\n\n private nbErrorsCalls: number;\n\n private nbWarningsCalls: number;\n\n constructor(options: LoggerOptions = {}) {\n // Set verbosity options\n this.isDebug = options.debug ?? false;\n this.isSilent = options.silent ?? false;\n\n // Initialize counters\n this.nbErrorsCalls = 0;\n this.nbWarningsCalls = 0;\n }\n\n private get isNotSilent(): boolean {\n return !this.isSilent;\n }\n\n get errors(): number {\n return this.nbErrorsCalls;\n }\n\n get warnings(): number {\n return this.nbWarningsCalls;\n }\n\n get stdout(): (NodeJS.WriteStream & { fd: 1 }) | undefined {\n return this.isSilent ? undefined : process.stdout;\n }\n\n get stderr(): (NodeJS.WriteStream & { fd: 2 }) | undefined {\n return this.isSilent ? undefined : process.stderr;\n }\n\n setDebug(debug: boolean): this {\n this.isDebug = debug;\n return this;\n }\n\n setSilent(silent: boolean): this {\n this.isSilent = silent;\n return this;\n }\n\n debug(...args: unknown[]): this {\n const isDebugEnabled = this.isNotSilent && this.isDebug;\n\n if (isDebugEnabled) {\n console.log(chalk.cyan(`[DEBUG]\\t[${nowAsISO()}]`), ...args);\n }\n\n return this;\n }\n\n error(...args: unknown[]): this {\n this.nbErrorsCalls += 1;\n\n if (this.isNotSilent) {\n console.error(chalk.red(`[ERROR]\\t[${nowAsISO()}]`), ...args);\n }\n\n return this;\n }\n\n info(...args: unknown[]): this {\n if (this.isNotSilent) {\n console.info(chalk.blue(`[INFO]\\t[${new Date().toISOString()}]`), ...args);\n }\n\n return this;\n }\n\n raw(...args: unknown[]): this {\n if (this.isNotSilent) {\n console.log(...args);\n }\n\n return this;\n }\n\n warn(...args: unknown[]): this {\n this.nbWarningsCalls += 1;\n\n if (this.isNotSilent) {\n console.warn(chalk.yellow(`[WARN]\\t[${new Date().toISOString()}]`), ...args);\n }\n\n return this;\n }\n}\n\nconst nowAsISO = () => new Date().toISOString();\n\nexport const loggerFactory = (options: LoggerOptions = {}) => new Logger(options);\n"],"names":["Logger","isNotSilent","isSilent","errors","nbErrorsCalls","warnings","nbWarningsCalls","stdout","undefined","process","stderr","setDebug","debug","isDebug","setSilent","silent","args","isDebugEnabled","console","log","chalk","cyan","nowAsISO","error","red","info","blue","Date","toISOString","raw","warn","yellow","options","loggerFactory"],"mappings":"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"}
@@ -8,6 +8,12 @@ var undici = require('undici');
8
8
  var constants = require('./constants.js');
9
9
  var semver = require('../version/semver.js');
10
10
 
11
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
+
13
+ var assert__default = /*#__PURE__*/_interopDefault(assert);
14
+ var semver__default = /*#__PURE__*/_interopDefault(semver$1);
15
+ var execa__default = /*#__PURE__*/_interopDefault(execa);
16
+
11
17
  const proxyUrl = process.env.HTTP_PROXY || process.env.HTTPS_PROXY;
12
18
  const agent = proxyUrl ? new undici.ProxyAgent(proxyUrl) : undefined;
13
19
  class Package {
@@ -15,7 +21,7 @@ class Package {
15
21
  return this.npmPackage !== null;
16
22
  }
17
23
  assertPackageIsLoaded(npmPackage) {
18
- assert(this.isLoaded, 'The package is not loaded yet');
24
+ assert__default.default(this.isLoaded, 'The package is not loaded yet');
19
25
  }
20
26
  getVersionsDict() {
21
27
  this.assertPackageIsLoaded(this.npmPackage);
@@ -30,11 +36,11 @@ class Package {
30
36
  return versions// Only select versions matching the upgrade range
31
37
  .filter((v)=>range.test(v.version))// Only select supported version format (x.x.x)
32
38
  .filter((v)=>semver.isLiteralSemVer(v.version))// Sort in ascending order
33
- .sort((v1, v2)=>semver$1.compare(v1.version, v2.version));
39
+ .sort((v1, v2)=>semver__default.default.compare(v1.version, v2.version));
34
40
  }
35
41
  async getYarnMajorVersion() {
36
42
  try {
37
- const { stdout } = await execa('yarn', [
43
+ const { stdout } = await execa__default.default('yarn', [
38
44
  '--version'
39
45
  ], {
40
46
  timeout: 5000
@@ -81,7 +87,7 @@ class Package {
81
87
  this.logger.warn(`Unsupported package manager: ${packageManagerName}`);
82
88
  return undefined;
83
89
  }
84
- const { stdout } = await execa(packageManagerName, [
90
+ const { stdout } = await execa__default.default(packageManagerName, [
85
91
  ...command
86
92
  ], {
87
93
  timeout: 10000
@@ -107,7 +113,7 @@ class Package {
107
113
  }
108
114
  findVersion(version) {
109
115
  const versions = this.getVersionsAsList();
110
- return versions.find((npmVersion)=>semver$1.eq(npmVersion.version, version));
116
+ return versions.find((npmVersion)=>semver__default.default.eq(npmVersion.version, version));
111
117
  }
112
118
  async refresh() {
113
119
  const packageURL = `${await this.determineRegistryUrl()}/${this.name}`;
@@ -116,7 +122,7 @@ class Package {
116
122
  dispatcher: agent
117
123
  });
118
124
  // TODO: Use a validation library to make sure the response structure is correct
119
- assert(response.ok, `Request failed for ${packageURL}`);
125
+ assert__default.default(response.ok, `Request failed for ${packageURL}`);
120
126
  this.npmPackage = await response.json();
121
127
  return this;
122
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"package.js","sources":["../../../../src/modules/npm/package.ts"],"sourcesContent":["import assert from 'node:assert';\nimport semver from 'semver';\nimport execa from 'execa';\nimport { packageManager } from '@strapi/utils';\n\nimport { ProxyAgent } from 'undici';\nimport * as constants from './constants';\nimport { isLiteralSemVer } from '../version';\n\nimport type { Package as PackageInterface, NPMPackage, NPMPackageVersion } from './types';\nimport type { Version } from '../version';\nimport { Logger } from '../logger';\n\nconst proxyUrl = process.env.HTTP_PROXY || process.env.HTTPS_PROXY;\nconst agent = proxyUrl ? new ProxyAgent(proxyUrl) : undefined;\n\nexport class Package implements PackageInterface {\n name: string;\n\n cwd: string;\n\n private logger: Logger;\n\n private npmPackage: NPMPackage | null;\n\n constructor(name: string, cwd: string, logger: Logger) {\n this.name = name;\n this.cwd = cwd;\n this.logger = logger;\n this.npmPackage = null;\n }\n\n get isLoaded() {\n return this.npmPackage !== null;\n }\n\n private assertPackageIsLoaded(npmPackage: NPMPackage | null): asserts npmPackage is NPMPackage {\n assert(this.isLoaded, 'The package is not loaded yet');\n }\n\n getVersionsDict() {\n this.assertPackageIsLoaded(this.npmPackage);\n\n return this.npmPackage.versions;\n }\n\n getVersionsAsList() {\n this.assertPackageIsLoaded(this.npmPackage);\n\n return Object.values(this.npmPackage.versions);\n }\n\n findVersionsInRange(range: Version.Range) {\n const versions = this.getVersionsAsList();\n\n return (\n versions\n // Only select versions matching the upgrade range\n .filter((v) => range.test(v.version))\n // Only select supported version format (x.x.x)\n .filter((v) => isLiteralSemVer(v.version))\n // Sort in ascending order\n .sort((v1, v2) => semver.compare(v1.version, v2.version))\n );\n }\n\n private async getYarnMajorVersion(): Promise<number> {\n try {\n const { stdout } = await execa('yarn', ['--version'], { timeout: 5_000 });\n const version = stdout.trim();\n return parseInt(version.split('.')[0], 10);\n } catch {\n // Default to Yarn Berry (v2+) if version check fails\n return 2;\n }\n }\n\n private normalizeRegistryOutput(stdout: string): string | undefined {\n const registry = stdout.trim();\n\n // Yarn Classic (v1) may return literal \"undefined\" for unset config values\n if (!registry || registry === 'undefined') {\n return undefined;\n }\n\n return registry;\n }\n\n private async getRegistryFromPackageManager(): Promise<string | undefined> {\n try {\n const packageManagerName = await packageManager.getPreferred(this.cwd);\n if (!packageManagerName) return undefined;\n\n let command: readonly string[];\n\n if (packageManagerName === 'yarn') {\n const yarnMajorVersion = await this.getYarnMajorVersion();\n // Yarn Classic (v1) uses 'registry', Yarn Berry (v2+) uses 'npmRegistryServer'\n command =\n yarnMajorVersion >= 2\n ? ['config', 'get', 'npmRegistryServer']\n : ['config', 'get', 'registry'];\n } else if (packageManagerName === 'npm' || packageManagerName === 'pnpm') {\n command = ['config', 'get', 'registry'];\n } else {\n this.logger.warn(`Unsupported package manager: ${packageManagerName}`);\n return undefined;\n }\n\n const { stdout } = await execa(packageManagerName, [...command], { timeout: 10_000 });\n return this.normalizeRegistryOutput(stdout);\n } catch (error) {\n this.logger.warn('Failed to determine registry URL from package manager');\n return undefined;\n }\n }\n\n private async determineRegistryUrl(): Promise<string> {\n if (process.env.NPM_REGISTRY_URL) {\n this.logger.debug(`Using NPM_REGISTRY_URL: ${process.env.NPM_REGISTRY_URL}`);\n return process.env.NPM_REGISTRY_URL.replace(/\\/$/, '');\n }\n\n const packageManagerRegistry = await this.getRegistryFromPackageManager();\n if (packageManagerRegistry) {\n this.logger.debug(`Using package manager registry: ${packageManagerRegistry}`);\n return packageManagerRegistry.replace(/\\/$/, '');\n }\n\n this.logger.debug(`Using default registry: ${constants.NPM_REGISTRY_URL}`);\n return constants.NPM_REGISTRY_URL.replace(/\\/$/, '');\n }\n\n findVersion(version: Version.SemVer): NPMPackageVersion | undefined {\n const versions = this.getVersionsAsList();\n\n return versions.find((npmVersion) => semver.eq(npmVersion.version, version));\n }\n\n async refresh() {\n const packageURL = `${await this.determineRegistryUrl()}/${this.name}`;\n\n const response = await fetch(packageURL, {\n // @ts-expect-error Node.js fetch supports dispatcher (undici extension)\n dispatcher: agent,\n });\n\n // TODO: Use a validation library to make sure the response structure is correct\n assert(response.ok, `Request failed for ${packageURL}`);\n\n this.npmPackage = (await response.json()) as NPMPackage;\n\n return this;\n }\n\n versionExists(version: Version.SemVer) {\n return this.findVersion(version) !== undefined;\n }\n}\n\nexport const npmPackageFactory = (name: string, cwd: string, logger: Logger) =>\n new Package(name, cwd, logger);\n"],"names":["proxyUrl","process","env","HTTP_PROXY","HTTPS_PROXY","agent","ProxyAgent","undefined","Package","isLoaded","npmPackage","assertPackageIsLoaded","assert","getVersionsDict","versions","getVersionsAsList","Object","values","findVersionsInRange","range","filter","v","test","version","isLiteralSemVer","sort","v1","v2","semver","compare","getYarnMajorVersion","stdout","execa","timeout","trim","parseInt","split","normalizeRegistryOutput","registry","getRegistryFromPackageManager","packageManagerName","packageManager","getPreferred","cwd","command","yarnMajorVersion","logger","warn","error","determineRegistryUrl","NPM_REGISTRY_URL","debug","replace","packageManagerRegistry","constants","findVersion","find","npmVersion","eq","refresh","packageURL","name","response","fetch","dispatcher","ok","json","versionExists","npmPackageFactory"],"mappings":"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"}
1
+ {"version":3,"file":"package.js","sources":["../../../../src/modules/npm/package.ts"],"sourcesContent":["import assert from 'node:assert';\nimport semver from 'semver';\nimport execa from 'execa';\nimport { packageManager } from '@strapi/utils';\n\nimport { ProxyAgent } from 'undici';\nimport * as constants from './constants';\nimport { isLiteralSemVer } from '../version';\n\nimport type { Package as PackageInterface, NPMPackage, NPMPackageVersion } from './types';\nimport type { Version } from '../version';\nimport { Logger } from '../logger';\n\nconst proxyUrl = process.env.HTTP_PROXY || process.env.HTTPS_PROXY;\nconst agent = proxyUrl ? new ProxyAgent(proxyUrl) : undefined;\n\nexport class Package implements PackageInterface {\n name: string;\n\n cwd: string;\n\n private logger: Logger;\n\n private npmPackage: NPMPackage | null;\n\n constructor(name: string, cwd: string, logger: Logger) {\n this.name = name;\n this.cwd = cwd;\n this.logger = logger;\n this.npmPackage = null;\n }\n\n get isLoaded() {\n return this.npmPackage !== null;\n }\n\n private assertPackageIsLoaded(npmPackage: NPMPackage | null): asserts npmPackage is NPMPackage {\n assert(this.isLoaded, 'The package is not loaded yet');\n }\n\n getVersionsDict() {\n this.assertPackageIsLoaded(this.npmPackage);\n\n return this.npmPackage.versions;\n }\n\n getVersionsAsList() {\n this.assertPackageIsLoaded(this.npmPackage);\n\n return Object.values(this.npmPackage.versions);\n }\n\n findVersionsInRange(range: Version.Range) {\n const versions = this.getVersionsAsList();\n\n return (\n versions\n // Only select versions matching the upgrade range\n .filter((v) => range.test(v.version))\n // Only select supported version format (x.x.x)\n .filter((v) => isLiteralSemVer(v.version))\n // Sort in ascending order\n .sort((v1, v2) => semver.compare(v1.version, v2.version))\n );\n }\n\n private async getYarnMajorVersion(): Promise<number> {\n try {\n const { stdout } = await execa('yarn', ['--version'], { timeout: 5_000 });\n const version = stdout.trim();\n return parseInt(version.split('.')[0], 10);\n } catch {\n // Default to Yarn Berry (v2+) if version check fails\n return 2;\n }\n }\n\n private normalizeRegistryOutput(stdout: string): string | undefined {\n const registry = stdout.trim();\n\n // Yarn Classic (v1) may return literal \"undefined\" for unset config values\n if (!registry || registry === 'undefined') {\n return undefined;\n }\n\n return registry;\n }\n\n private async getRegistryFromPackageManager(): Promise<string | undefined> {\n try {\n const packageManagerName = await packageManager.getPreferred(this.cwd);\n if (!packageManagerName) return undefined;\n\n let command: readonly string[];\n\n if (packageManagerName === 'yarn') {\n const yarnMajorVersion = await this.getYarnMajorVersion();\n // Yarn Classic (v1) uses 'registry', Yarn Berry (v2+) uses 'npmRegistryServer'\n command =\n yarnMajorVersion >= 2\n ? ['config', 'get', 'npmRegistryServer']\n : ['config', 'get', 'registry'];\n } else if (packageManagerName === 'npm' || packageManagerName === 'pnpm') {\n command = ['config', 'get', 'registry'];\n } else {\n this.logger.warn(`Unsupported package manager: ${packageManagerName}`);\n return undefined;\n }\n\n const { stdout } = await execa(packageManagerName, [...command], { timeout: 10_000 });\n return this.normalizeRegistryOutput(stdout);\n } catch (error) {\n this.logger.warn('Failed to determine registry URL from package manager');\n return undefined;\n }\n }\n\n private async determineRegistryUrl(): Promise<string> {\n if (process.env.NPM_REGISTRY_URL) {\n this.logger.debug(`Using NPM_REGISTRY_URL: ${process.env.NPM_REGISTRY_URL}`);\n return process.env.NPM_REGISTRY_URL.replace(/\\/$/, '');\n }\n\n const packageManagerRegistry = await this.getRegistryFromPackageManager();\n if (packageManagerRegistry) {\n this.logger.debug(`Using package manager registry: ${packageManagerRegistry}`);\n return packageManagerRegistry.replace(/\\/$/, '');\n }\n\n this.logger.debug(`Using default registry: ${constants.NPM_REGISTRY_URL}`);\n return constants.NPM_REGISTRY_URL.replace(/\\/$/, '');\n }\n\n findVersion(version: Version.SemVer): NPMPackageVersion | undefined {\n const versions = this.getVersionsAsList();\n\n return versions.find((npmVersion) => semver.eq(npmVersion.version, version));\n }\n\n async refresh() {\n const packageURL = `${await this.determineRegistryUrl()}/${this.name}`;\n\n const response = await fetch(packageURL, {\n // @ts-expect-error Node.js fetch supports dispatcher (undici extension)\n dispatcher: agent,\n });\n\n // TODO: Use a validation library to make sure the response structure is correct\n assert(response.ok, `Request failed for ${packageURL}`);\n\n this.npmPackage = (await response.json()) as NPMPackage;\n\n return this;\n }\n\n versionExists(version: Version.SemVer) {\n return this.findVersion(version) !== undefined;\n }\n}\n\nexport const npmPackageFactory = (name: string, cwd: string, logger: Logger) =>\n new Package(name, cwd, logger);\n"],"names":["proxyUrl","process","env","HTTP_PROXY","HTTPS_PROXY","agent","ProxyAgent","undefined","Package","isLoaded","npmPackage","assertPackageIsLoaded","assert","getVersionsDict","versions","getVersionsAsList","Object","values","findVersionsInRange","range","filter","v","test","version","isLiteralSemVer","sort","v1","v2","semver","compare","getYarnMajorVersion","stdout","execa","timeout","trim","parseInt","split","normalizeRegistryOutput","registry","getRegistryFromPackageManager","packageManagerName","packageManager","getPreferred","cwd","command","yarnMajorVersion","logger","warn","error","determineRegistryUrl","NPM_REGISTRY_URL","debug","replace","packageManagerRegistry","constants","findVersion","find","npmVersion","eq","refresh","packageURL","name","response","fetch","dispatcher","ok","json","versionExists","npmPackageFactory"],"mappings":"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"}