@strapi/upgrade 5.37.0 → 5.38.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 (89) hide show
  1. package/dist/cli.js.map +1 -1
  2. package/dist/cli.mjs.map +1 -1
  3. package/dist/index.js +4 -4
  4. package/dist/index.mjs +4 -4
  5. package/dist/package.json.js +1 -1
  6. package/dist/package.json.mjs +1 -1
  7. package/dist/src/cli/commands/codemods.js +0 -10
  8. package/dist/src/cli/commands/codemods.js.map +1 -1
  9. package/dist/src/cli/commands/codemods.mjs +0 -10
  10. package/dist/src/cli/commands/codemods.mjs.map +1 -1
  11. package/dist/src/cli/commands/upgrade.js.map +1 -1
  12. package/dist/src/cli/commands/upgrade.mjs.map +1 -1
  13. package/dist/src/cli/errors.js.map +1 -1
  14. package/dist/src/cli/errors.mjs.map +1 -1
  15. package/dist/src/cli/options.js.map +1 -1
  16. package/dist/src/cli/options.mjs.map +1 -1
  17. package/dist/src/modules/codemod/codemod.js.map +1 -1
  18. package/dist/src/modules/codemod/codemod.mjs.map +1 -1
  19. package/dist/src/modules/codemod/constants.js.map +1 -1
  20. package/dist/src/modules/codemod/constants.mjs.map +1 -1
  21. package/dist/src/modules/codemod-repository/constants.js.map +1 -1
  22. package/dist/src/modules/codemod-repository/constants.mjs.map +1 -1
  23. package/dist/src/modules/codemod-repository/repository.js.map +1 -1
  24. package/dist/src/modules/codemod-repository/repository.mjs.map +1 -1
  25. package/dist/src/modules/codemod-runner/codemod-runner.js.map +1 -1
  26. package/dist/src/modules/codemod-runner/codemod-runner.mjs.map +1 -1
  27. package/dist/src/modules/error/utils.js.map +1 -1
  28. package/dist/src/modules/error/utils.mjs.map +1 -1
  29. package/dist/src/modules/file-scanner/scanner.js.map +1 -1
  30. package/dist/src/modules/file-scanner/scanner.mjs.map +1 -1
  31. package/dist/src/modules/format/formats.js.map +1 -1
  32. package/dist/src/modules/format/formats.mjs.map +1 -1
  33. package/dist/src/modules/index.js +4 -4
  34. package/dist/src/modules/index.mjs +4 -4
  35. package/dist/src/modules/json/file.js.map +1 -1
  36. package/dist/src/modules/json/file.mjs.map +1 -1
  37. package/dist/src/modules/json/transform-api.js.map +1 -1
  38. package/dist/src/modules/json/transform-api.mjs.map +1 -1
  39. package/dist/src/modules/logger/logger.js.map +1 -1
  40. package/dist/src/modules/logger/logger.mjs.map +1 -1
  41. package/dist/src/modules/npm/package.js.map +1 -1
  42. package/dist/src/modules/npm/package.mjs.map +1 -1
  43. package/dist/src/modules/project/constants.js.map +1 -1
  44. package/dist/src/modules/project/constants.mjs.map +1 -1
  45. package/dist/src/modules/project/project.js.map +1 -1
  46. package/dist/src/modules/project/project.mjs +1 -1
  47. package/dist/src/modules/project/project.mjs.map +1 -1
  48. package/dist/src/modules/project/utils.js.map +1 -1
  49. package/dist/src/modules/project/utils.mjs +1 -1
  50. package/dist/src/modules/project/utils.mjs.map +1 -1
  51. package/dist/src/modules/report/report.js.map +1 -1
  52. package/dist/src/modules/report/report.mjs.map +1 -1
  53. package/dist/src/modules/requirement/requirement.js.map +1 -1
  54. package/dist/src/modules/requirement/requirement.mjs.map +1 -1
  55. package/dist/src/modules/runner/code/code.js.map +1 -1
  56. package/dist/src/modules/runner/code/code.mjs.map +1 -1
  57. package/dist/src/modules/runner/index.js +4 -4
  58. package/dist/src/modules/runner/index.mjs +4 -4
  59. package/dist/src/modules/runner/json/json.js.map +1 -1
  60. package/dist/src/modules/runner/json/json.mjs.map +1 -1
  61. package/dist/src/modules/runner/json/transform.js.map +1 -1
  62. package/dist/src/modules/runner/json/transform.mjs.map +1 -1
  63. package/dist/src/modules/runner/runner.js.map +1 -1
  64. package/dist/src/modules/runner/runner.mjs.map +1 -1
  65. package/dist/src/modules/timer/timer.js.map +1 -1
  66. package/dist/src/modules/timer/timer.mjs.map +1 -1
  67. package/dist/src/modules/upgrader/upgrader.js.map +1 -1
  68. package/dist/src/modules/upgrader/upgrader.mjs +2 -2
  69. package/dist/src/modules/upgrader/upgrader.mjs.map +1 -1
  70. package/dist/src/modules/version/range.js.map +1 -1
  71. package/dist/src/modules/version/range.mjs +1 -1
  72. package/dist/src/modules/version/range.mjs.map +1 -1
  73. package/dist/src/modules/version/semver.js.map +1 -1
  74. package/dist/src/modules/version/semver.mjs.map +1 -1
  75. package/dist/src/tasks/codemods/list-codemods.js.map +1 -1
  76. package/dist/src/tasks/codemods/list-codemods.mjs.map +1 -1
  77. package/dist/src/tasks/codemods/run-codemods.js.map +1 -1
  78. package/dist/src/tasks/codemods/run-codemods.mjs.map +1 -1
  79. package/dist/src/tasks/codemods/utils.js.map +1 -1
  80. package/dist/src/tasks/codemods/utils.mjs.map +1 -1
  81. package/dist/src/tasks/upgrade/prompts/latest.js.map +1 -1
  82. package/dist/src/tasks/upgrade/prompts/latest.mjs.map +1 -1
  83. package/dist/src/tasks/upgrade/requirements/common.js.map +1 -1
  84. package/dist/src/tasks/upgrade/requirements/common.mjs.map +1 -1
  85. package/dist/src/tasks/upgrade/requirements/major.js.map +1 -1
  86. package/dist/src/tasks/upgrade/requirements/major.mjs.map +1 -1
  87. package/dist/src/tasks/upgrade/upgrade.js.map +1 -1
  88. package/dist/src/tasks/upgrade/upgrade.mjs.map +1 -1
  89. package/package.json +4 -4
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sources":["../src/cli/index.ts"],"sourcesContent":["import os from 'os';\nimport chalk from 'chalk';\nimport { program } from 'commander';\n\nimport { register as registerUpgradeCommands } from './commands/upgrade';\nimport { register as registerCodemodsCommands } from './commands/codemods';\n\nimport { version as packageJSONVersion } from '../../package.json';\n\nregisterUpgradeCommands(program);\nregisterCodemodsCommands(program);\n\nprogram\n .usage('<command> [options]')\n .on('command:*', ([invalidCmd]) => {\n console.error(\n chalk.red(\n `[ERROR] Invalid command: ${invalidCmd}.${os.EOL} See --help for a list of available commands.`\n )\n );\n\n process.exit(1);\n })\n .helpOption('-h, --help', 'Print command line options')\n .addHelpCommand('help [command]', 'Print options for a specific command')\n .version(packageJSONVersion)\n .parse(process.argv);\n"],"names":["registerUpgradeCommands","program","registerCodemodsCommands","usage","on","invalidCmd","console","error","chalk","red","os","EOL","process","exit","helpOption","addHelpCommand","version","packageJSONVersion","parse","argv"],"mappings":";;;;;;;;;AASAA,gBAAwBC,CAAAA,iBAAAA,CAAAA;AACxBC,iBAAyBD,CAAAA,iBAAAA,CAAAA;AAEzBA,iBACGE,CAAAA,KAAK,CAAC,qBACNC,CAAAA,CAAAA,EAAE,CAAC,WAAa,EAAA,CAAC,CAACC,UAAW,CAAA,GAAA;AAC5BC,IAAAA,OAAAA,CAAQC,KAAK,CACXC,KAAMC,CAAAA,GAAG,CACP,CAAC,yBAAyB,EAAEJ,UAAAA,CAAW,CAAC,EAAEK,EAAAA,CAAGC,GAAG,CAAC,6CAA6C,CAAC,CAAA,CAAA;AAInGC,IAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,CAAA,CAAA,CACCC,UAAU,CAAC,YAAc,EAAA,4BAAA,CAAA,CACzBC,cAAc,CAAC,gBAAA,EAAkB,sCACjCC,CAAAA,CAAAA,OAAO,CAACC,gBAAAA,CAAAA,CACRC,KAAK,CAACN,QAAQO,IAAI,CAAA;;"}
1
+ {"version":3,"file":"cli.js","sources":["../src/cli/index.ts"],"sourcesContent":["import os from 'os';\nimport chalk from 'chalk';\nimport { program } from 'commander';\n\nimport { register as registerUpgradeCommands } from './commands/upgrade';\nimport { register as registerCodemodsCommands } from './commands/codemods';\n\nimport { version as packageJSONVersion } from '../../package.json';\n\nregisterUpgradeCommands(program);\nregisterCodemodsCommands(program);\n\nprogram\n .usage('<command> [options]')\n .on('command:*', ([invalidCmd]) => {\n console.error(\n chalk.red(\n `[ERROR] Invalid command: ${invalidCmd}.${os.EOL} See --help for a list of available commands.`\n )\n );\n\n process.exit(1);\n })\n .helpOption('-h, --help', 'Print command line options')\n .addHelpCommand('help [command]', 'Print options for a specific command')\n .version(packageJSONVersion)\n .parse(process.argv);\n"],"names":["registerUpgradeCommands","program","registerCodemodsCommands","usage","on","invalidCmd","console","error","chalk","red","os","EOL","process","exit","helpOption","addHelpCommand","version","packageJSONVersion","parse","argv"],"mappings":";;;;;;;;;AASAA,gBAAAA,CAAwBC,iBAAAA,CAAAA;AACxBC,iBAAAA,CAAyBD,iBAAAA,CAAAA;AAEzBA,iBAAAA,CACGE,KAAK,CAAC,qBAAA,CAAA,CACNC,EAAE,CAAC,WAAA,EAAa,CAAC,CAACC,UAAAA,CAAW,GAAA;AAC5BC,IAAAA,OAAAA,CAAQC,KAAK,CACXC,KAAAA,CAAMC,GAAG,CACP,CAAC,yBAAyB,EAAEJ,UAAAA,CAAW,CAAC,EAAEK,EAAAA,CAAGC,GAAG,CAAC,6CAA6C,CAAC,CAAA,CAAA;AAInGC,IAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,CAAA,CAAA,CACCC,UAAU,CAAC,YAAA,EAAc,4BAAA,CAAA,CACzBC,cAAc,CAAC,gBAAA,EAAkB,sCAAA,CAAA,CACjCC,OAAO,CAACC,gBAAAA,CAAAA,CACRC,KAAK,CAACN,QAAQO,IAAI,CAAA;;"}
package/dist/cli.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.mjs","sources":["../src/cli/index.ts"],"sourcesContent":["import os from 'os';\nimport chalk from 'chalk';\nimport { program } from 'commander';\n\nimport { register as registerUpgradeCommands } from './commands/upgrade';\nimport { register as registerCodemodsCommands } from './commands/codemods';\n\nimport { version as packageJSONVersion } from '../../package.json';\n\nregisterUpgradeCommands(program);\nregisterCodemodsCommands(program);\n\nprogram\n .usage('<command> [options]')\n .on('command:*', ([invalidCmd]) => {\n console.error(\n chalk.red(\n `[ERROR] Invalid command: ${invalidCmd}.${os.EOL} See --help for a list of available commands.`\n )\n );\n\n process.exit(1);\n })\n .helpOption('-h, --help', 'Print command line options')\n .addHelpCommand('help [command]', 'Print options for a specific command')\n .version(packageJSONVersion)\n .parse(process.argv);\n"],"names":["registerUpgradeCommands","program","registerCodemodsCommands","usage","on","invalidCmd","console","error","chalk","red","os","EOL","process","exit","helpOption","addHelpCommand","version","packageJSONVersion","parse","argv"],"mappings":";;;;;;;AASAA,QAAwBC,CAAAA,OAAAA,CAAAA;AACxBC,UAAyBD,CAAAA,OAAAA,CAAAA;AAEzBA,OACGE,CAAAA,KAAK,CAAC,qBACNC,CAAAA,CAAAA,EAAE,CAAC,WAAa,EAAA,CAAC,CAACC,UAAW,CAAA,GAAA;AAC5BC,IAAAA,OAAAA,CAAQC,KAAK,CACXC,KAAMC,CAAAA,GAAG,CACP,CAAC,yBAAyB,EAAEJ,UAAAA,CAAW,CAAC,EAAEK,EAAAA,CAAGC,GAAG,CAAC,6CAA6C,CAAC,CAAA,CAAA;AAInGC,IAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,CAAA,CAAA,CACCC,UAAU,CAAC,YAAc,EAAA,4BAAA,CAAA,CACzBC,cAAc,CAAC,gBAAA,EAAkB,sCACjCC,CAAAA,CAAAA,OAAO,CAACC,OAAAA,CAAAA,CACRC,KAAK,CAACN,QAAQO,IAAI,CAAA"}
1
+ {"version":3,"file":"cli.mjs","sources":["../src/cli/index.ts"],"sourcesContent":["import os from 'os';\nimport chalk from 'chalk';\nimport { program } from 'commander';\n\nimport { register as registerUpgradeCommands } from './commands/upgrade';\nimport { register as registerCodemodsCommands } from './commands/codemods';\n\nimport { version as packageJSONVersion } from '../../package.json';\n\nregisterUpgradeCommands(program);\nregisterCodemodsCommands(program);\n\nprogram\n .usage('<command> [options]')\n .on('command:*', ([invalidCmd]) => {\n console.error(\n chalk.red(\n `[ERROR] Invalid command: ${invalidCmd}.${os.EOL} See --help for a list of available commands.`\n )\n );\n\n process.exit(1);\n })\n .helpOption('-h, --help', 'Print command line options')\n .addHelpCommand('help [command]', 'Print options for a specific command')\n .version(packageJSONVersion)\n .parse(process.argv);\n"],"names":["registerUpgradeCommands","program","registerCodemodsCommands","usage","on","invalidCmd","console","error","chalk","red","os","EOL","process","exit","helpOption","addHelpCommand","version","packageJSONVersion","parse","argv"],"mappings":";;;;;;;AASAA,QAAAA,CAAwBC,OAAAA,CAAAA;AACxBC,UAAAA,CAAyBD,OAAAA,CAAAA;AAEzBA,OAAAA,CACGE,KAAK,CAAC,qBAAA,CAAA,CACNC,EAAE,CAAC,WAAA,EAAa,CAAC,CAACC,UAAAA,CAAW,GAAA;AAC5BC,IAAAA,OAAAA,CAAQC,KAAK,CACXC,KAAAA,CAAMC,GAAG,CACP,CAAC,yBAAyB,EAAEJ,UAAAA,CAAW,CAAC,EAAEK,EAAAA,CAAGC,GAAG,CAAC,6CAA6C,CAAC,CAAA,CAAA;AAInGC,IAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,CAAA,CAAA,CACCC,UAAU,CAAC,YAAA,EAAc,4BAAA,CAAA,CACzBC,cAAc,CAAC,gBAAA,EAAkB,sCAAA,CAAA,CACjCC,OAAO,CAACC,OAAAA,CAAAA,CACRC,KAAK,CAACN,QAAQO,IAAI,CAAA"}
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./src/tasks/index.js');
4
- var index$1 = require('./src/modules/index.js');
3
+ var index$1 = require('./src/tasks/index.js');
4
+ var index = require('./src/modules/index.js');
5
5
 
6
6
 
7
7
 
8
- exports.tasks = index;
9
- exports.modules = index$1;
8
+ exports.tasks = index$1;
9
+ exports.modules = index;
10
10
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import * as index from './src/tasks/index.mjs';
2
- export { index as tasks };
3
- import * as index$1 from './src/modules/index.mjs';
4
- export { index$1 as modules };
1
+ import * as index$1 from './src/tasks/index.mjs';
2
+ export { index$1 as tasks };
3
+ import * as index from './src/modules/index.mjs';
4
+ export { index as modules };
5
5
  //# sourceMappingURL=index.mjs.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "5.37.0";
3
+ var version = "5.38.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.js.map
@@ -1,4 +1,4 @@
1
- var version = "5.37.0";
1
+ var version = "5.38.0";
2
2
 
3
3
  export { version };
4
4
  //# sourceMappingURL=package.json.mjs.map
@@ -32,15 +32,6 @@ const runCodemods = async (options)=>{
32
32
  debug
33
33
  });
34
34
  logger$1.warn("Please make sure you've created a backup of your codebase and files before running the codemods");
35
- const confirm = async (message)=>{
36
- const { confirm } = await prompts({
37
- name: 'confirm',
38
- type: 'confirm',
39
- message
40
- });
41
- // If confirm is undefined (Ctrl + C), default to false
42
- return confirm ?? false;
43
- };
44
35
  const selectCodemods = async (codemods)=>{
45
36
  const selectableCodemods = codemods.map(({ version, codemods })=>codemods.map((codemod)=>({
46
37
  title: `(${version}) ${codemod.format()}`,
@@ -70,7 +61,6 @@ const runCodemods = async (options)=>{
70
61
  };
71
62
  return runCodemods$1.runCodemods({
72
63
  logger: logger$1,
73
- confirm,
74
64
  selectCodemods,
75
65
  dry: options.dry,
76
66
  cwd: options.projectPath,
@@ -1 +1 @@
1
- {"version":3,"file":"codemods.js","sources":["../../../../src/cli/commands/codemods.ts"],"sourcesContent":["import prompts from 'prompts';\n\nimport type { Command } from 'commander';\nimport { loggerFactory } from '../../modules/logger';\nimport { Version } from '../../modules/version';\nimport { handleError } from '../errors';\nimport * as tasks from '../../tasks';\nimport { debugOption, dryOption, projectPathOption, rangeOption, silentOption } from '../options';\n\nimport type {\n CLIListCodemodsOptions,\n CLIRunCodemodsOptions,\n ListCodemodsCommand,\n RunCodemodsCommand,\n} from '../types';\nimport type { Codemod } from '../../modules/codemod';\n\nconst DEFAULT_TARGET = Version.ReleaseType.Major;\n\nexport const runCodemods: RunCodemodsCommand = async (options) => {\n const { silent, debug } = options;\n const logger = loggerFactory({ silent, debug });\n\n logger.warn(\n \"Please make sure you've created a backup of your codebase and files before running the codemods\"\n );\n\n const confirm = async (message: string) => {\n const { confirm } = await prompts({\n name: 'confirm',\n type: 'confirm',\n message,\n });\n\n // If confirm is undefined (Ctrl + C), default to false\n return confirm ?? false;\n };\n\n const selectCodemods = async (codemods: Codemod.VersionedCollection[]) => {\n const selectableCodemods = codemods\n .map(({ version, codemods }) =>\n codemods.map((codemod) => ({\n title: `(${version}) ${codemod.format()}`,\n value: codemod,\n selected: true,\n }))\n )\n .flat();\n\n if (selectableCodemods.length === 0) {\n logger.info('No codemods to run');\n return [];\n }\n\n const { selectedCodemods }: { selectedCodemods: Codemod.Codemod[] } = await prompts({\n type: 'autocompleteMultiselect',\n name: 'selectedCodemods',\n message: 'Choose the codemods you would like to run:',\n choices: selectableCodemods,\n });\n\n if (!selectedCodemods || selectedCodemods.length === 0) {\n logger.info('No codemods selected');\n return [];\n }\n\n return selectedCodemods.map<Codemod.VersionedCollection>((codemod) => ({\n version: codemod.version,\n codemods: [codemod],\n }));\n };\n\n return tasks\n .runCodemods({\n logger,\n confirm,\n selectCodemods,\n dry: options.dry,\n cwd: options.projectPath,\n target: options.range ?? DEFAULT_TARGET,\n uid: options.uid,\n })\n .catch((err) => handleError(err, options.silent));\n};\n\nexport const listCodemods: ListCodemodsCommand = async (options) => {\n const { silent, debug } = options;\n const logger = loggerFactory({ silent, debug });\n\n return tasks\n .listCodemods({\n cwd: options.projectPath,\n target: options.range ?? DEFAULT_TARGET,\n logger,\n })\n .catch((err) => handleError(err, options.silent));\n};\n\n/**\n * Registers codemods related commands.\n */\nexport const register = (program: Command) => {\n const codemodsCommand = program.command('codemods');\n\n // upgrade codemods run [options] [uid]\n codemodsCommand\n .command('run [uid]')\n .description(\n `\nExecutes a set of codemods on the current project.\n\nIf the optional UID argument is provided, the command specifically runs the codemod associated with that UID.\nWithout the UID, the command produces a list of all available codemods for your project.\n\nBy default, when executed on a Strapi application project, it offers codemods matching the current major version of the app.\nWhen executed on a Strapi plugin project, it shows every codemods.\n`\n )\n .addOption(projectPathOption)\n .addOption(dryOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(rangeOption)\n .action(async (uid: string | undefined, options: CLIRunCodemodsOptions) => {\n return runCodemods({ ...options, uid });\n });\n\n // upgrade codemods ls [options]\n codemodsCommand\n .command('ls')\n .description(`List available codemods`)\n .addOption(projectPathOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(rangeOption)\n .action(async (options: CLIListCodemodsOptions) => {\n return listCodemods(options);\n });\n};\n"],"names":["DEFAULT_TARGET","Version","Major","runCodemods","options","silent","debug","logger","loggerFactory","warn","confirm","message","prompts","name","type","selectCodemods","codemods","selectableCodemods","map","version","codemod","title","format","value","selected","flat","length","info","selectedCodemods","choices","tasks","dry","cwd","projectPath","target","range","uid","catch","err","handleError","listCodemods","register","program","codemodsCommand","command","description","addOption","projectPathOption","dryOption","debugOption","silentOption","rangeOption","action"],"mappings":"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"}
1
+ {"version":3,"file":"codemods.js","sources":["../../../../src/cli/commands/codemods.ts"],"sourcesContent":["import prompts from 'prompts';\n\nimport type { Command } from 'commander';\nimport { loggerFactory } from '../../modules/logger';\nimport { Version } from '../../modules/version';\nimport { handleError } from '../errors';\nimport * as tasks from '../../tasks';\nimport { debugOption, dryOption, projectPathOption, rangeOption, silentOption } from '../options';\n\nimport type {\n CLIListCodemodsOptions,\n CLIRunCodemodsOptions,\n ListCodemodsCommand,\n RunCodemodsCommand,\n} from '../types';\nimport type { Codemod } from '../../modules/codemod';\n\nconst DEFAULT_TARGET = Version.ReleaseType.Major;\n\nexport const runCodemods: RunCodemodsCommand = async (options) => {\n const { silent, debug } = options;\n const logger = loggerFactory({ silent, debug });\n\n logger.warn(\n \"Please make sure you've created a backup of your codebase and files before running the codemods\"\n );\n\n const confirm = async (message: string) => {\n const { confirm } = await prompts({\n name: 'confirm',\n type: 'confirm',\n message,\n });\n\n // If confirm is undefined (Ctrl + C), default to false\n return confirm ?? false;\n };\n\n const selectCodemods = async (codemods: Codemod.VersionedCollection[]) => {\n const selectableCodemods = codemods\n .map(({ version, codemods }) =>\n codemods.map((codemod) => ({\n title: `(${version}) ${codemod.format()}`,\n value: codemod,\n selected: true,\n }))\n )\n .flat();\n\n if (selectableCodemods.length === 0) {\n logger.info('No codemods to run');\n return [];\n }\n\n const { selectedCodemods }: { selectedCodemods: Codemod.Codemod[] } = await prompts({\n type: 'autocompleteMultiselect',\n name: 'selectedCodemods',\n message: 'Choose the codemods you would like to run:',\n choices: selectableCodemods,\n });\n\n if (!selectedCodemods || selectedCodemods.length === 0) {\n logger.info('No codemods selected');\n return [];\n }\n\n return selectedCodemods.map<Codemod.VersionedCollection>((codemod) => ({\n version: codemod.version,\n codemods: [codemod],\n }));\n };\n\n return tasks\n .runCodemods({\n logger,\n confirm,\n selectCodemods,\n dry: options.dry,\n cwd: options.projectPath,\n target: options.range ?? DEFAULT_TARGET,\n uid: options.uid,\n })\n .catch((err) => handleError(err, options.silent));\n};\n\nexport const listCodemods: ListCodemodsCommand = async (options) => {\n const { silent, debug } = options;\n const logger = loggerFactory({ silent, debug });\n\n return tasks\n .listCodemods({\n cwd: options.projectPath,\n target: options.range ?? DEFAULT_TARGET,\n logger,\n })\n .catch((err) => handleError(err, options.silent));\n};\n\n/**\n * Registers codemods related commands.\n */\nexport const register = (program: Command) => {\n const codemodsCommand = program.command('codemods');\n\n // upgrade codemods run [options] [uid]\n codemodsCommand\n .command('run [uid]')\n .description(\n `\nExecutes a set of codemods on the current project.\n\nIf the optional UID argument is provided, the command specifically runs the codemod associated with that UID.\nWithout the UID, the command produces a list of all available codemods for your project.\n\nBy default, when executed on a Strapi application project, it offers codemods matching the current major version of the app.\nWhen executed on a Strapi plugin project, it shows every codemods.\n`\n )\n .addOption(projectPathOption)\n .addOption(dryOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(rangeOption)\n .action(async (uid: string | undefined, options: CLIRunCodemodsOptions) => {\n return runCodemods({ ...options, uid });\n });\n\n // upgrade codemods ls [options]\n codemodsCommand\n .command('ls')\n .description(`List available codemods`)\n .addOption(projectPathOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(rangeOption)\n .action(async (options: CLIListCodemodsOptions) => {\n return listCodemods(options);\n });\n};\n"],"names":["DEFAULT_TARGET","Version","Major","runCodemods","options","silent","debug","logger","loggerFactory","warn","selectCodemods","codemods","selectableCodemods","map","version","codemod","title","format","value","selected","flat","length","info","selectedCodemods","prompts","type","name","message","choices","tasks","confirm","dry","cwd","projectPath","target","range","uid","catch","err","handleError","listCodemods","register","program","codemodsCommand","command","description","addOption","projectPathOption","dryOption","debugOption","silentOption","rangeOption","action"],"mappings":"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"}
@@ -30,15 +30,6 @@ const runCodemods = async (options)=>{
30
30
  debug
31
31
  });
32
32
  logger.warn("Please make sure you've created a backup of your codebase and files before running the codemods");
33
- const confirm = async (message)=>{
34
- const { confirm } = await prompts({
35
- name: 'confirm',
36
- type: 'confirm',
37
- message
38
- });
39
- // If confirm is undefined (Ctrl + C), default to false
40
- return confirm ?? false;
41
- };
42
33
  const selectCodemods = async (codemods)=>{
43
34
  const selectableCodemods = codemods.map(({ version, codemods })=>codemods.map((codemod)=>({
44
35
  title: `(${version}) ${codemod.format()}`,
@@ -68,7 +59,6 @@ const runCodemods = async (options)=>{
68
59
  };
69
60
  return runCodemods$1({
70
61
  logger,
71
- confirm,
72
62
  selectCodemods,
73
63
  dry: options.dry,
74
64
  cwd: options.projectPath,
@@ -1 +1 @@
1
- {"version":3,"file":"codemods.mjs","sources":["../../../../src/cli/commands/codemods.ts"],"sourcesContent":["import prompts from 'prompts';\n\nimport type { Command } from 'commander';\nimport { loggerFactory } from '../../modules/logger';\nimport { Version } from '../../modules/version';\nimport { handleError } from '../errors';\nimport * as tasks from '../../tasks';\nimport { debugOption, dryOption, projectPathOption, rangeOption, silentOption } from '../options';\n\nimport type {\n CLIListCodemodsOptions,\n CLIRunCodemodsOptions,\n ListCodemodsCommand,\n RunCodemodsCommand,\n} from '../types';\nimport type { Codemod } from '../../modules/codemod';\n\nconst DEFAULT_TARGET = Version.ReleaseType.Major;\n\nexport const runCodemods: RunCodemodsCommand = async (options) => {\n const { silent, debug } = options;\n const logger = loggerFactory({ silent, debug });\n\n logger.warn(\n \"Please make sure you've created a backup of your codebase and files before running the codemods\"\n );\n\n const confirm = async (message: string) => {\n const { confirm } = await prompts({\n name: 'confirm',\n type: 'confirm',\n message,\n });\n\n // If confirm is undefined (Ctrl + C), default to false\n return confirm ?? false;\n };\n\n const selectCodemods = async (codemods: Codemod.VersionedCollection[]) => {\n const selectableCodemods = codemods\n .map(({ version, codemods }) =>\n codemods.map((codemod) => ({\n title: `(${version}) ${codemod.format()}`,\n value: codemod,\n selected: true,\n }))\n )\n .flat();\n\n if (selectableCodemods.length === 0) {\n logger.info('No codemods to run');\n return [];\n }\n\n const { selectedCodemods }: { selectedCodemods: Codemod.Codemod[] } = await prompts({\n type: 'autocompleteMultiselect',\n name: 'selectedCodemods',\n message: 'Choose the codemods you would like to run:',\n choices: selectableCodemods,\n });\n\n if (!selectedCodemods || selectedCodemods.length === 0) {\n logger.info('No codemods selected');\n return [];\n }\n\n return selectedCodemods.map<Codemod.VersionedCollection>((codemod) => ({\n version: codemod.version,\n codemods: [codemod],\n }));\n };\n\n return tasks\n .runCodemods({\n logger,\n confirm,\n selectCodemods,\n dry: options.dry,\n cwd: options.projectPath,\n target: options.range ?? DEFAULT_TARGET,\n uid: options.uid,\n })\n .catch((err) => handleError(err, options.silent));\n};\n\nexport const listCodemods: ListCodemodsCommand = async (options) => {\n const { silent, debug } = options;\n const logger = loggerFactory({ silent, debug });\n\n return tasks\n .listCodemods({\n cwd: options.projectPath,\n target: options.range ?? DEFAULT_TARGET,\n logger,\n })\n .catch((err) => handleError(err, options.silent));\n};\n\n/**\n * Registers codemods related commands.\n */\nexport const register = (program: Command) => {\n const codemodsCommand = program.command('codemods');\n\n // upgrade codemods run [options] [uid]\n codemodsCommand\n .command('run [uid]')\n .description(\n `\nExecutes a set of codemods on the current project.\n\nIf the optional UID argument is provided, the command specifically runs the codemod associated with that UID.\nWithout the UID, the command produces a list of all available codemods for your project.\n\nBy default, when executed on a Strapi application project, it offers codemods matching the current major version of the app.\nWhen executed on a Strapi plugin project, it shows every codemods.\n`\n )\n .addOption(projectPathOption)\n .addOption(dryOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(rangeOption)\n .action(async (uid: string | undefined, options: CLIRunCodemodsOptions) => {\n return runCodemods({ ...options, uid });\n });\n\n // upgrade codemods ls [options]\n codemodsCommand\n .command('ls')\n .description(`List available codemods`)\n .addOption(projectPathOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(rangeOption)\n .action(async (options: CLIListCodemodsOptions) => {\n return listCodemods(options);\n });\n};\n"],"names":["DEFAULT_TARGET","Version","Major","runCodemods","options","silent","debug","logger","loggerFactory","warn","confirm","message","prompts","name","type","selectCodemods","codemods","selectableCodemods","map","version","codemod","title","format","value","selected","flat","length","info","selectedCodemods","choices","tasks","dry","cwd","projectPath","target","range","uid","catch","err","handleError","listCodemods","register","program","codemodsCommand","command","description","addOption","projectPathOption","dryOption","debugOption","silentOption","rangeOption","action"],"mappings":"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"}
1
+ {"version":3,"file":"codemods.mjs","sources":["../../../../src/cli/commands/codemods.ts"],"sourcesContent":["import prompts from 'prompts';\n\nimport type { Command } from 'commander';\nimport { loggerFactory } from '../../modules/logger';\nimport { Version } from '../../modules/version';\nimport { handleError } from '../errors';\nimport * as tasks from '../../tasks';\nimport { debugOption, dryOption, projectPathOption, rangeOption, silentOption } from '../options';\n\nimport type {\n CLIListCodemodsOptions,\n CLIRunCodemodsOptions,\n ListCodemodsCommand,\n RunCodemodsCommand,\n} from '../types';\nimport type { Codemod } from '../../modules/codemod';\n\nconst DEFAULT_TARGET = Version.ReleaseType.Major;\n\nexport const runCodemods: RunCodemodsCommand = async (options) => {\n const { silent, debug } = options;\n const logger = loggerFactory({ silent, debug });\n\n logger.warn(\n \"Please make sure you've created a backup of your codebase and files before running the codemods\"\n );\n\n const confirm = async (message: string) => {\n const { confirm } = await prompts({\n name: 'confirm',\n type: 'confirm',\n message,\n });\n\n // If confirm is undefined (Ctrl + C), default to false\n return confirm ?? false;\n };\n\n const selectCodemods = async (codemods: Codemod.VersionedCollection[]) => {\n const selectableCodemods = codemods\n .map(({ version, codemods }) =>\n codemods.map((codemod) => ({\n title: `(${version}) ${codemod.format()}`,\n value: codemod,\n selected: true,\n }))\n )\n .flat();\n\n if (selectableCodemods.length === 0) {\n logger.info('No codemods to run');\n return [];\n }\n\n const { selectedCodemods }: { selectedCodemods: Codemod.Codemod[] } = await prompts({\n type: 'autocompleteMultiselect',\n name: 'selectedCodemods',\n message: 'Choose the codemods you would like to run:',\n choices: selectableCodemods,\n });\n\n if (!selectedCodemods || selectedCodemods.length === 0) {\n logger.info('No codemods selected');\n return [];\n }\n\n return selectedCodemods.map<Codemod.VersionedCollection>((codemod) => ({\n version: codemod.version,\n codemods: [codemod],\n }));\n };\n\n return tasks\n .runCodemods({\n logger,\n confirm,\n selectCodemods,\n dry: options.dry,\n cwd: options.projectPath,\n target: options.range ?? DEFAULT_TARGET,\n uid: options.uid,\n })\n .catch((err) => handleError(err, options.silent));\n};\n\nexport const listCodemods: ListCodemodsCommand = async (options) => {\n const { silent, debug } = options;\n const logger = loggerFactory({ silent, debug });\n\n return tasks\n .listCodemods({\n cwd: options.projectPath,\n target: options.range ?? DEFAULT_TARGET,\n logger,\n })\n .catch((err) => handleError(err, options.silent));\n};\n\n/**\n * Registers codemods related commands.\n */\nexport const register = (program: Command) => {\n const codemodsCommand = program.command('codemods');\n\n // upgrade codemods run [options] [uid]\n codemodsCommand\n .command('run [uid]')\n .description(\n `\nExecutes a set of codemods on the current project.\n\nIf the optional UID argument is provided, the command specifically runs the codemod associated with that UID.\nWithout the UID, the command produces a list of all available codemods for your project.\n\nBy default, when executed on a Strapi application project, it offers codemods matching the current major version of the app.\nWhen executed on a Strapi plugin project, it shows every codemods.\n`\n )\n .addOption(projectPathOption)\n .addOption(dryOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(rangeOption)\n .action(async (uid: string | undefined, options: CLIRunCodemodsOptions) => {\n return runCodemods({ ...options, uid });\n });\n\n // upgrade codemods ls [options]\n codemodsCommand\n .command('ls')\n .description(`List available codemods`)\n .addOption(projectPathOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(rangeOption)\n .action(async (options: CLIListCodemodsOptions) => {\n return listCodemods(options);\n });\n};\n"],"names":["DEFAULT_TARGET","Version","Major","runCodemods","options","silent","debug","logger","loggerFactory","warn","selectCodemods","codemods","selectableCodemods","map","version","codemod","title","format","value","selected","flat","length","info","selectedCodemods","prompts","type","name","message","choices","tasks","confirm","dry","cwd","projectPath","target","range","uid","catch","err","handleError","listCodemods","register","program","codemodsCommand","command","description","addOption","projectPathOption","dryOption","debugOption","silentOption","rangeOption","action"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.js","sources":["../../../../src/cli/commands/upgrade.ts"],"sourcesContent":["import prompts from 'prompts';\nimport { InvalidArgumentError, Option } from 'commander';\n\nimport type { Command } from 'commander';\n\nimport { loggerFactory } from '../../modules/logger';\nimport { Version, isLiteralSemVer, isValidSemVer, semVerFactory } from '../../modules/version';\nimport { handleError } from '../errors';\nimport * as tasks from '../../tasks';\nimport {\n autoConfirmOption,\n debugOption,\n dryOption,\n projectPathOption,\n silentOption,\n} from '../options';\n\nimport type { CLIUpgradeOptions, CLIUpgradeToOptions, UpgradeCommand } from '../types';\n\nexport const upgrade: UpgradeCommand = async (options) => {\n try {\n const { silent, debug, yes } = options;\n const logger = loggerFactory({ silent, debug });\n\n logger.warn(\n \"Please make sure you've created a backup of your codebase and files before upgrading\"\n );\n\n const confirm = async (message: string) => {\n if (yes) {\n return true;\n }\n\n const { confirm } = await prompts({\n name: 'confirm',\n type: 'confirm',\n message,\n });\n\n // If confirm is undefined (Ctrl + C), default to false\n return confirm ?? false;\n };\n\n await tasks.upgrade({\n logger,\n confirm,\n dry: options.dry,\n cwd: options.projectPath,\n target: options.target,\n codemodsTarget: options.codemodsTarget,\n });\n } catch (err) {\n handleError(err, options.silent);\n }\n};\n\n/**\n * Registers upgrade related codemods.\n */\nexport const register = (program: Command) => {\n const addReleaseUpgradeCommand = (releaseType: Version.ReleaseType, description: string) => {\n program\n .command(releaseType)\n .description(description)\n .addOption(projectPathOption)\n .addOption(dryOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(autoConfirmOption)\n .action(async (options: CLIUpgradeOptions) => {\n return upgrade({ ...options, target: releaseType });\n });\n };\n\n // upgrade latest\n addReleaseUpgradeCommand(\n Version.ReleaseType.Latest,\n 'Upgrade to the latest available version of Strapi'\n );\n\n // upgrade major\n addReleaseUpgradeCommand(\n Version.ReleaseType.Major,\n 'Upgrade to the next available major version of Strapi'\n );\n\n // upgrade minor\n addReleaseUpgradeCommand(\n Version.ReleaseType.Minor,\n 'Upgrade to the latest minor and patch version of Strapi for the current major'\n );\n\n // upgrade patch\n addReleaseUpgradeCommand(\n Version.ReleaseType.Patch,\n 'Upgrade to latest patch version of Strapi for the current major and minor'\n );\n\n // upgrade to <target>\n program\n .command('to <target>', { hidden: true })\n .description('Upgrade to the specified version of Strapi')\n .addOption(projectPathOption)\n .addOption(dryOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(autoConfirmOption)\n .addOption(\n new Option(\n '-c, --codemods-target <codemodsTarget>',\n 'Use a custom target for the codemods execution. Useful when targeting pre-releases'\n ).argParser((codemodsTarget) => {\n if (!isLiteralSemVer(codemodsTarget)) {\n throw new InvalidArgumentError(\n `Expected a version with the following format: \"<number>.<number>.<number>\"`\n );\n }\n\n return semVerFactory(codemodsTarget);\n })\n )\n .action(async (target: string, options: CLIUpgradeToOptions) => {\n if (!isValidSemVer(target)) {\n console.error(`Invalid target supplied, expected a valid semver but got \"${target}\"`);\n process.exit(1);\n }\n\n return upgrade({ ...options, target: semVerFactory(target) });\n });\n};\n"],"names":["upgrade","options","silent","debug","yes","logger","loggerFactory","warn","confirm","message","prompts","name","type","tasks","dry","cwd","projectPath","target","codemodsTarget","err","handleError","register","program","addReleaseUpgradeCommand","releaseType","description","command","addOption","projectPathOption","dryOption","debugOption","silentOption","autoConfirmOption","action","Version","Latest","Major","Minor","Patch","hidden","Option","argParser","isLiteralSemVer","InvalidArgumentError","semVerFactory","isValidSemVer","console","error","process","exit"],"mappings":"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"}
1
+ {"version":3,"file":"upgrade.js","sources":["../../../../src/cli/commands/upgrade.ts"],"sourcesContent":["import prompts from 'prompts';\nimport { InvalidArgumentError, Option } from 'commander';\n\nimport type { Command } from 'commander';\n\nimport { loggerFactory } from '../../modules/logger';\nimport { Version, isLiteralSemVer, isValidSemVer, semVerFactory } from '../../modules/version';\nimport { handleError } from '../errors';\nimport * as tasks from '../../tasks';\nimport {\n autoConfirmOption,\n debugOption,\n dryOption,\n projectPathOption,\n silentOption,\n} from '../options';\n\nimport type { CLIUpgradeOptions, CLIUpgradeToOptions, UpgradeCommand } from '../types';\n\nexport const upgrade: UpgradeCommand = async (options) => {\n try {\n const { silent, debug, yes } = options;\n const logger = loggerFactory({ silent, debug });\n\n logger.warn(\n \"Please make sure you've created a backup of your codebase and files before upgrading\"\n );\n\n const confirm = async (message: string) => {\n if (yes) {\n return true;\n }\n\n const { confirm } = await prompts({\n name: 'confirm',\n type: 'confirm',\n message,\n });\n\n // If confirm is undefined (Ctrl + C), default to false\n return confirm ?? false;\n };\n\n await tasks.upgrade({\n logger,\n confirm,\n dry: options.dry,\n cwd: options.projectPath,\n target: options.target,\n codemodsTarget: options.codemodsTarget,\n });\n } catch (err) {\n handleError(err, options.silent);\n }\n};\n\n/**\n * Registers upgrade related codemods.\n */\nexport const register = (program: Command) => {\n const addReleaseUpgradeCommand = (releaseType: Version.ReleaseType, description: string) => {\n program\n .command(releaseType)\n .description(description)\n .addOption(projectPathOption)\n .addOption(dryOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(autoConfirmOption)\n .action(async (options: CLIUpgradeOptions) => {\n return upgrade({ ...options, target: releaseType });\n });\n };\n\n // upgrade latest\n addReleaseUpgradeCommand(\n Version.ReleaseType.Latest,\n 'Upgrade to the latest available version of Strapi'\n );\n\n // upgrade major\n addReleaseUpgradeCommand(\n Version.ReleaseType.Major,\n 'Upgrade to the next available major version of Strapi'\n );\n\n // upgrade minor\n addReleaseUpgradeCommand(\n Version.ReleaseType.Minor,\n 'Upgrade to the latest minor and patch version of Strapi for the current major'\n );\n\n // upgrade patch\n addReleaseUpgradeCommand(\n Version.ReleaseType.Patch,\n 'Upgrade to latest patch version of Strapi for the current major and minor'\n );\n\n // upgrade to <target>\n program\n .command('to <target>', { hidden: true })\n .description('Upgrade to the specified version of Strapi')\n .addOption(projectPathOption)\n .addOption(dryOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(autoConfirmOption)\n .addOption(\n new Option(\n '-c, --codemods-target <codemodsTarget>',\n 'Use a custom target for the codemods execution. Useful when targeting pre-releases'\n ).argParser((codemodsTarget) => {\n if (!isLiteralSemVer(codemodsTarget)) {\n throw new InvalidArgumentError(\n `Expected a version with the following format: \"<number>.<number>.<number>\"`\n );\n }\n\n return semVerFactory(codemodsTarget);\n })\n )\n .action(async (target: string, options: CLIUpgradeToOptions) => {\n if (!isValidSemVer(target)) {\n console.error(`Invalid target supplied, expected a valid semver but got \"${target}\"`);\n process.exit(1);\n }\n\n return upgrade({ ...options, target: semVerFactory(target) });\n });\n};\n"],"names":["upgrade","options","silent","debug","yes","logger","loggerFactory","warn","confirm","message","prompts","name","type","tasks","dry","cwd","projectPath","target","codemodsTarget","err","handleError","register","program","addReleaseUpgradeCommand","releaseType","description","command","addOption","projectPathOption","dryOption","debugOption","silentOption","autoConfirmOption","action","Version","Latest","Major","Minor","Patch","hidden","Option","argParser","isLiteralSemVer","InvalidArgumentError","semVerFactory","isValidSemVer","console","error","process","exit"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.mjs","sources":["../../../../src/cli/commands/upgrade.ts"],"sourcesContent":["import prompts from 'prompts';\nimport { InvalidArgumentError, Option } from 'commander';\n\nimport type { Command } from 'commander';\n\nimport { loggerFactory } from '../../modules/logger';\nimport { Version, isLiteralSemVer, isValidSemVer, semVerFactory } from '../../modules/version';\nimport { handleError } from '../errors';\nimport * as tasks from '../../tasks';\nimport {\n autoConfirmOption,\n debugOption,\n dryOption,\n projectPathOption,\n silentOption,\n} from '../options';\n\nimport type { CLIUpgradeOptions, CLIUpgradeToOptions, UpgradeCommand } from '../types';\n\nexport const upgrade: UpgradeCommand = async (options) => {\n try {\n const { silent, debug, yes } = options;\n const logger = loggerFactory({ silent, debug });\n\n logger.warn(\n \"Please make sure you've created a backup of your codebase and files before upgrading\"\n );\n\n const confirm = async (message: string) => {\n if (yes) {\n return true;\n }\n\n const { confirm } = await prompts({\n name: 'confirm',\n type: 'confirm',\n message,\n });\n\n // If confirm is undefined (Ctrl + C), default to false\n return confirm ?? false;\n };\n\n await tasks.upgrade({\n logger,\n confirm,\n dry: options.dry,\n cwd: options.projectPath,\n target: options.target,\n codemodsTarget: options.codemodsTarget,\n });\n } catch (err) {\n handleError(err, options.silent);\n }\n};\n\n/**\n * Registers upgrade related codemods.\n */\nexport const register = (program: Command) => {\n const addReleaseUpgradeCommand = (releaseType: Version.ReleaseType, description: string) => {\n program\n .command(releaseType)\n .description(description)\n .addOption(projectPathOption)\n .addOption(dryOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(autoConfirmOption)\n .action(async (options: CLIUpgradeOptions) => {\n return upgrade({ ...options, target: releaseType });\n });\n };\n\n // upgrade latest\n addReleaseUpgradeCommand(\n Version.ReleaseType.Latest,\n 'Upgrade to the latest available version of Strapi'\n );\n\n // upgrade major\n addReleaseUpgradeCommand(\n Version.ReleaseType.Major,\n 'Upgrade to the next available major version of Strapi'\n );\n\n // upgrade minor\n addReleaseUpgradeCommand(\n Version.ReleaseType.Minor,\n 'Upgrade to the latest minor and patch version of Strapi for the current major'\n );\n\n // upgrade patch\n addReleaseUpgradeCommand(\n Version.ReleaseType.Patch,\n 'Upgrade to latest patch version of Strapi for the current major and minor'\n );\n\n // upgrade to <target>\n program\n .command('to <target>', { hidden: true })\n .description('Upgrade to the specified version of Strapi')\n .addOption(projectPathOption)\n .addOption(dryOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(autoConfirmOption)\n .addOption(\n new Option(\n '-c, --codemods-target <codemodsTarget>',\n 'Use a custom target for the codemods execution. Useful when targeting pre-releases'\n ).argParser((codemodsTarget) => {\n if (!isLiteralSemVer(codemodsTarget)) {\n throw new InvalidArgumentError(\n `Expected a version with the following format: \"<number>.<number>.<number>\"`\n );\n }\n\n return semVerFactory(codemodsTarget);\n })\n )\n .action(async (target: string, options: CLIUpgradeToOptions) => {\n if (!isValidSemVer(target)) {\n console.error(`Invalid target supplied, expected a valid semver but got \"${target}\"`);\n process.exit(1);\n }\n\n return upgrade({ ...options, target: semVerFactory(target) });\n });\n};\n"],"names":["upgrade","options","silent","debug","yes","logger","loggerFactory","warn","confirm","message","prompts","name","type","tasks","dry","cwd","projectPath","target","codemodsTarget","err","handleError","register","program","addReleaseUpgradeCommand","releaseType","description","command","addOption","projectPathOption","dryOption","debugOption","silentOption","autoConfirmOption","action","Version","Latest","Major","Minor","Patch","hidden","Option","argParser","isLiteralSemVer","InvalidArgumentError","semVerFactory","isValidSemVer","console","error","process","exit"],"mappings":"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"}
1
+ {"version":3,"file":"upgrade.mjs","sources":["../../../../src/cli/commands/upgrade.ts"],"sourcesContent":["import prompts from 'prompts';\nimport { InvalidArgumentError, Option } from 'commander';\n\nimport type { Command } from 'commander';\n\nimport { loggerFactory } from '../../modules/logger';\nimport { Version, isLiteralSemVer, isValidSemVer, semVerFactory } from '../../modules/version';\nimport { handleError } from '../errors';\nimport * as tasks from '../../tasks';\nimport {\n autoConfirmOption,\n debugOption,\n dryOption,\n projectPathOption,\n silentOption,\n} from '../options';\n\nimport type { CLIUpgradeOptions, CLIUpgradeToOptions, UpgradeCommand } from '../types';\n\nexport const upgrade: UpgradeCommand = async (options) => {\n try {\n const { silent, debug, yes } = options;\n const logger = loggerFactory({ silent, debug });\n\n logger.warn(\n \"Please make sure you've created a backup of your codebase and files before upgrading\"\n );\n\n const confirm = async (message: string) => {\n if (yes) {\n return true;\n }\n\n const { confirm } = await prompts({\n name: 'confirm',\n type: 'confirm',\n message,\n });\n\n // If confirm is undefined (Ctrl + C), default to false\n return confirm ?? false;\n };\n\n await tasks.upgrade({\n logger,\n confirm,\n dry: options.dry,\n cwd: options.projectPath,\n target: options.target,\n codemodsTarget: options.codemodsTarget,\n });\n } catch (err) {\n handleError(err, options.silent);\n }\n};\n\n/**\n * Registers upgrade related codemods.\n */\nexport const register = (program: Command) => {\n const addReleaseUpgradeCommand = (releaseType: Version.ReleaseType, description: string) => {\n program\n .command(releaseType)\n .description(description)\n .addOption(projectPathOption)\n .addOption(dryOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(autoConfirmOption)\n .action(async (options: CLIUpgradeOptions) => {\n return upgrade({ ...options, target: releaseType });\n });\n };\n\n // upgrade latest\n addReleaseUpgradeCommand(\n Version.ReleaseType.Latest,\n 'Upgrade to the latest available version of Strapi'\n );\n\n // upgrade major\n addReleaseUpgradeCommand(\n Version.ReleaseType.Major,\n 'Upgrade to the next available major version of Strapi'\n );\n\n // upgrade minor\n addReleaseUpgradeCommand(\n Version.ReleaseType.Minor,\n 'Upgrade to the latest minor and patch version of Strapi for the current major'\n );\n\n // upgrade patch\n addReleaseUpgradeCommand(\n Version.ReleaseType.Patch,\n 'Upgrade to latest patch version of Strapi for the current major and minor'\n );\n\n // upgrade to <target>\n program\n .command('to <target>', { hidden: true })\n .description('Upgrade to the specified version of Strapi')\n .addOption(projectPathOption)\n .addOption(dryOption)\n .addOption(debugOption)\n .addOption(silentOption)\n .addOption(autoConfirmOption)\n .addOption(\n new Option(\n '-c, --codemods-target <codemodsTarget>',\n 'Use a custom target for the codemods execution. Useful when targeting pre-releases'\n ).argParser((codemodsTarget) => {\n if (!isLiteralSemVer(codemodsTarget)) {\n throw new InvalidArgumentError(\n `Expected a version with the following format: \"<number>.<number>.<number>\"`\n );\n }\n\n return semVerFactory(codemodsTarget);\n })\n )\n .action(async (target: string, options: CLIUpgradeToOptions) => {\n if (!isValidSemVer(target)) {\n console.error(`Invalid target supplied, expected a valid semver but got \"${target}\"`);\n process.exit(1);\n }\n\n return upgrade({ ...options, target: semVerFactory(target) });\n });\n};\n"],"names":["upgrade","options","silent","debug","yes","logger","loggerFactory","warn","confirm","message","prompts","name","type","tasks","dry","cwd","projectPath","target","codemodsTarget","err","handleError","register","program","addReleaseUpgradeCommand","releaseType","description","command","addOption","projectPathOption","dryOption","debugOption","silentOption","autoConfirmOption","action","Version","Latest","Major","Minor","Patch","hidden","Option","argParser","isLiteralSemVer","InvalidArgumentError","semVerFactory","isValidSemVer","console","error","process","exit"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sources":["../../../src/cli/errors.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { AbortedError } from '../modules/error';\n\nexport const handleError = (err: unknown, isSilent: boolean) => {\n // If the upgrade process has been aborted, exit silently\n if (err instanceof AbortedError) {\n process.exit(0);\n }\n\n if (!isSilent) {\n console.error(\n chalk.red(`[ERROR]\\t[${new Date().toISOString()}]`),\n err instanceof Error ? err.message : err\n );\n }\n\n process.exit(1);\n};\n"],"names":["handleError","err","isSilent","AbortedError","process","exit","console","error","chalk","red","Date","toISOString","Error","message"],"mappings":";;;;;AAIO,MAAMA,WAAc,GAAA,CAACC,GAAcC,EAAAA,QAAAA,GAAAA;;AAExC,IAAA,IAAID,eAAeE,kBAAc,EAAA;AAC/BC,QAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf;AAEA,IAAA,IAAI,CAACH,QAAU,EAAA;AACbI,QAAAA,OAAAA,CAAQC,KAAK,CACXC,KAAAA,CAAMC,GAAG,CAAC,CAAC,UAAU,EAAE,IAAIC,OAAOC,WAAW,EAAA,CAAG,CAAC,CAAC,CAAA,EAClDV,eAAeW,KAAQX,GAAAA,GAAAA,CAAIY,OAAO,GAAGZ,GAAAA,CAAAA;AAEzC;AAEAG,IAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf;;;;"}
1
+ {"version":3,"file":"errors.js","sources":["../../../src/cli/errors.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { AbortedError } from '../modules/error';\n\nexport const handleError = (err: unknown, isSilent: boolean) => {\n // If the upgrade process has been aborted, exit silently\n if (err instanceof AbortedError) {\n process.exit(0);\n }\n\n if (!isSilent) {\n console.error(\n chalk.red(`[ERROR]\\t[${new Date().toISOString()}]`),\n err instanceof Error ? err.message : err\n );\n }\n\n process.exit(1);\n};\n"],"names":["handleError","err","isSilent","AbortedError","process","exit","console","error","chalk","red","Date","toISOString","Error","message"],"mappings":";;;;;AAIO,MAAMA,WAAAA,GAAc,CAACC,GAAAA,EAAcC,QAAAA,GAAAA;;AAExC,IAAA,IAAID,eAAeE,kBAAAA,EAAc;AAC/BC,QAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,IAAA;AAEA,IAAA,IAAI,CAACH,QAAAA,EAAU;AACbI,QAAAA,OAAAA,CAAQC,KAAK,CACXC,KAAAA,CAAMC,GAAG,CAAC,CAAC,UAAU,EAAE,IAAIC,OAAOC,WAAW,EAAA,CAAG,CAAC,CAAC,CAAA,EAClDV,eAAeW,KAAAA,GAAQX,GAAAA,CAAIY,OAAO,GAAGZ,GAAAA,CAAAA;AAEzC,IAAA;AAEAG,IAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.mjs","sources":["../../../src/cli/errors.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { AbortedError } from '../modules/error';\n\nexport const handleError = (err: unknown, isSilent: boolean) => {\n // If the upgrade process has been aborted, exit silently\n if (err instanceof AbortedError) {\n process.exit(0);\n }\n\n if (!isSilent) {\n console.error(\n chalk.red(`[ERROR]\\t[${new Date().toISOString()}]`),\n err instanceof Error ? err.message : err\n );\n }\n\n process.exit(1);\n};\n"],"names":["handleError","err","isSilent","AbortedError","process","exit","console","error","chalk","red","Date","toISOString","Error","message"],"mappings":";;;AAIO,MAAMA,WAAc,GAAA,CAACC,GAAcC,EAAAA,QAAAA,GAAAA;;AAExC,IAAA,IAAID,eAAeE,YAAc,EAAA;AAC/BC,QAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf;AAEA,IAAA,IAAI,CAACH,QAAU,EAAA;AACbI,QAAAA,OAAAA,CAAQC,KAAK,CACXC,KAAAA,CAAMC,GAAG,CAAC,CAAC,UAAU,EAAE,IAAIC,OAAOC,WAAW,EAAA,CAAG,CAAC,CAAC,CAAA,EAClDV,eAAeW,KAAQX,GAAAA,GAAAA,CAAIY,OAAO,GAAGZ,GAAAA,CAAAA;AAEzC;AAEAG,IAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf;;;;"}
1
+ {"version":3,"file":"errors.mjs","sources":["../../../src/cli/errors.ts"],"sourcesContent":["import chalk from 'chalk';\n\nimport { AbortedError } from '../modules/error';\n\nexport const handleError = (err: unknown, isSilent: boolean) => {\n // If the upgrade process has been aborted, exit silently\n if (err instanceof AbortedError) {\n process.exit(0);\n }\n\n if (!isSilent) {\n console.error(\n chalk.red(`[ERROR]\\t[${new Date().toISOString()}]`),\n err instanceof Error ? err.message : err\n );\n }\n\n process.exit(1);\n};\n"],"names":["handleError","err","isSilent","AbortedError","process","exit","console","error","chalk","red","Date","toISOString","Error","message"],"mappings":";;;AAIO,MAAMA,WAAAA,GAAc,CAACC,GAAAA,EAAcC,QAAAA,GAAAA;;AAExC,IAAA,IAAID,eAAeE,YAAAA,EAAc;AAC/BC,QAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf,IAAA;AAEA,IAAA,IAAI,CAACH,QAAAA,EAAU;AACbI,QAAAA,OAAAA,CAAQC,KAAK,CACXC,KAAAA,CAAMC,GAAG,CAAC,CAAC,UAAU,EAAE,IAAIC,OAAOC,WAAW,EAAA,CAAG,CAAC,CAAC,CAAA,EAClDV,eAAeW,KAAAA,GAAQX,GAAAA,CAAIY,OAAO,GAAGZ,GAAAA,CAAAA;AAEzC,IAAA;AAEAG,IAAAA,OAAAA,CAAQC,IAAI,CAAC,CAAA,CAAA;AACf;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sources":["../../../src/cli/options.ts"],"sourcesContent":["import { InvalidArgumentError, Option } from 'commander';\nimport { isValidStringifiedRange, rangeFactory } from '../modules/version';\n\nexport const projectPathOption = new Option(\n '-p, --project-path <project-path>',\n 'Root path to the Strapi application or plugin'\n);\n\nexport const dryOption = new Option(\n '-n, --dry',\n 'Simulate the upgrade without updating any files'\n).default(false);\n\nexport const debugOption = new Option('-d, --debug', 'Get more logs in debug mode').default(false);\n\nexport const silentOption = new Option('-s, --silent', \"Don't log anything\").default(false);\n\nexport const autoConfirmOption = new Option(\n '-y, --yes',\n 'Automatically answer \"yes\" to any prompts that the CLI might print on the command line.'\n).default(false);\n\nexport const rangeOption = new Option(\n '-r, --range <range>',\n 'Use a custom semver range for the codemods execution.'\n).argParser((range) => {\n if (!isValidStringifiedRange(range)) {\n throw new InvalidArgumentError('Expected a valid semver range');\n }\n\n return rangeFactory(range);\n});\n"],"names":["projectPathOption","Option","dryOption","default","debugOption","silentOption","autoConfirmOption","rangeOption","argParser","range","isValidStringifiedRange","InvalidArgumentError","rangeFactory"],"mappings":";;;;;;AAGaA,MAAAA,iBAAAA,GAAoB,IAAIC,gBAAAA,CACnC,qCACA,+CACA;AAEK,MAAMC,YAAY,IAAID,gBAAAA,CAC3B,aACA,iDACAE,CAAAA,CAAAA,OAAO,CAAC,KAAO;AAEV,MAAMC,cAAc,IAAIH,gBAAAA,CAAO,eAAe,6BAA+BE,CAAAA,CAAAA,OAAO,CAAC,KAAO;AAE5F,MAAME,eAAe,IAAIJ,gBAAAA,CAAO,gBAAgB,oBAAsBE,CAAAA,CAAAA,OAAO,CAAC,KAAO;AAErF,MAAMG,oBAAoB,IAAIL,gBAAAA,CACnC,aACA,yFACAE,CAAAA,CAAAA,OAAO,CAAC,KAAO;AAEV,MAAMI,cAAc,IAAIN,gBAAAA,CAC7B,uBACA,uDACAO,CAAAA,CAAAA,SAAS,CAAC,CAACC,OAAAA,GAAAA;IACX,IAAI,CAACC,8BAAwBD,OAAQ,CAAA,EAAA;AACnC,QAAA,MAAM,IAAIE,8BAAqB,CAAA,+BAAA,CAAA;AACjC;AAEA,IAAA,OAAOC,kBAAaH,CAAAA,OAAAA,CAAAA;AACtB,CAAG;;;;;;;;;"}
1
+ {"version":3,"file":"options.js","sources":["../../../src/cli/options.ts"],"sourcesContent":["import { InvalidArgumentError, Option } from 'commander';\nimport { isValidStringifiedRange, rangeFactory } from '../modules/version';\n\nexport const projectPathOption = new Option(\n '-p, --project-path <project-path>',\n 'Root path to the Strapi application or plugin'\n);\n\nexport const dryOption = new Option(\n '-n, --dry',\n 'Simulate the upgrade without updating any files'\n).default(false);\n\nexport const debugOption = new Option('-d, --debug', 'Get more logs in debug mode').default(false);\n\nexport const silentOption = new Option('-s, --silent', \"Don't log anything\").default(false);\n\nexport const autoConfirmOption = new Option(\n '-y, --yes',\n 'Automatically answer \"yes\" to any prompts that the CLI might print on the command line.'\n).default(false);\n\nexport const rangeOption = new Option(\n '-r, --range <range>',\n 'Use a custom semver range for the codemods execution.'\n).argParser((range) => {\n if (!isValidStringifiedRange(range)) {\n throw new InvalidArgumentError('Expected a valid semver range');\n }\n\n return rangeFactory(range);\n});\n"],"names":["projectPathOption","Option","dryOption","default","debugOption","silentOption","autoConfirmOption","rangeOption","argParser","range","isValidStringifiedRange","InvalidArgumentError","rangeFactory"],"mappings":";;;;;;AAGO,MAAMA,iBAAAA,GAAoB,IAAIC,gBAAAA,CACnC,qCACA,+CAAA;AAGK,MAAMC,YAAY,IAAID,gBAAAA,CAC3B,aACA,iDAAA,CAAA,CACAE,OAAO,CAAC,KAAA;AAEH,MAAMC,cAAc,IAAIH,gBAAAA,CAAO,eAAe,6BAAA,CAAA,CAA+BE,OAAO,CAAC,KAAA;AAErF,MAAME,eAAe,IAAIJ,gBAAAA,CAAO,gBAAgB,oBAAA,CAAA,CAAsBE,OAAO,CAAC,KAAA;AAE9E,MAAMG,oBAAoB,IAAIL,gBAAAA,CACnC,aACA,yFAAA,CAAA,CACAE,OAAO,CAAC,KAAA;AAEH,MAAMI,cAAc,IAAIN,gBAAAA,CAC7B,uBACA,uDAAA,CAAA,CACAO,SAAS,CAAC,CAACC,OAAAA,GAAAA;IACX,IAAI,CAACC,8BAAwBD,OAAAA,CAAAA,EAAQ;AACnC,QAAA,MAAM,IAAIE,8BAAAA,CAAqB,+BAAA,CAAA;AACjC,IAAA;AAEA,IAAA,OAAOC,kBAAAA,CAAaH,OAAAA,CAAAA;AACtB,CAAA;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"options.mjs","sources":["../../../src/cli/options.ts"],"sourcesContent":["import { InvalidArgumentError, Option } from 'commander';\nimport { isValidStringifiedRange, rangeFactory } from '../modules/version';\n\nexport const projectPathOption = new Option(\n '-p, --project-path <project-path>',\n 'Root path to the Strapi application or plugin'\n);\n\nexport const dryOption = new Option(\n '-n, --dry',\n 'Simulate the upgrade without updating any files'\n).default(false);\n\nexport const debugOption = new Option('-d, --debug', 'Get more logs in debug mode').default(false);\n\nexport const silentOption = new Option('-s, --silent', \"Don't log anything\").default(false);\n\nexport const autoConfirmOption = new Option(\n '-y, --yes',\n 'Automatically answer \"yes\" to any prompts that the CLI might print on the command line.'\n).default(false);\n\nexport const rangeOption = new Option(\n '-r, --range <range>',\n 'Use a custom semver range for the codemods execution.'\n).argParser((range) => {\n if (!isValidStringifiedRange(range)) {\n throw new InvalidArgumentError('Expected a valid semver range');\n }\n\n return rangeFactory(range);\n});\n"],"names":["projectPathOption","Option","dryOption","default","debugOption","silentOption","autoConfirmOption","rangeOption","argParser","range","isValidStringifiedRange","InvalidArgumentError","rangeFactory"],"mappings":";;;;AAGaA,MAAAA,iBAAAA,GAAoB,IAAIC,MAAAA,CACnC,qCACA,+CACA;AAEK,MAAMC,YAAY,IAAID,MAAAA,CAC3B,aACA,iDACAE,CAAAA,CAAAA,OAAO,CAAC,KAAO;AAEV,MAAMC,cAAc,IAAIH,MAAAA,CAAO,eAAe,6BAA+BE,CAAAA,CAAAA,OAAO,CAAC,KAAO;AAE5F,MAAME,eAAe,IAAIJ,MAAAA,CAAO,gBAAgB,oBAAsBE,CAAAA,CAAAA,OAAO,CAAC,KAAO;AAErF,MAAMG,oBAAoB,IAAIL,MAAAA,CACnC,aACA,yFACAE,CAAAA,CAAAA,OAAO,CAAC,KAAO;AAEV,MAAMI,cAAc,IAAIN,MAAAA,CAC7B,uBACA,uDACAO,CAAAA,CAAAA,SAAS,CAAC,CAACC,KAAAA,GAAAA;IACX,IAAI,CAACC,wBAAwBD,KAAQ,CAAA,EAAA;AACnC,QAAA,MAAM,IAAIE,oBAAqB,CAAA,+BAAA,CAAA;AACjC;AAEA,IAAA,OAAOC,YAAaH,CAAAA,KAAAA,CAAAA;AACtB,CAAG;;;;"}
1
+ {"version":3,"file":"options.mjs","sources":["../../../src/cli/options.ts"],"sourcesContent":["import { InvalidArgumentError, Option } from 'commander';\nimport { isValidStringifiedRange, rangeFactory } from '../modules/version';\n\nexport const projectPathOption = new Option(\n '-p, --project-path <project-path>',\n 'Root path to the Strapi application or plugin'\n);\n\nexport const dryOption = new Option(\n '-n, --dry',\n 'Simulate the upgrade without updating any files'\n).default(false);\n\nexport const debugOption = new Option('-d, --debug', 'Get more logs in debug mode').default(false);\n\nexport const silentOption = new Option('-s, --silent', \"Don't log anything\").default(false);\n\nexport const autoConfirmOption = new Option(\n '-y, --yes',\n 'Automatically answer \"yes\" to any prompts that the CLI might print on the command line.'\n).default(false);\n\nexport const rangeOption = new Option(\n '-r, --range <range>',\n 'Use a custom semver range for the codemods execution.'\n).argParser((range) => {\n if (!isValidStringifiedRange(range)) {\n throw new InvalidArgumentError('Expected a valid semver range');\n }\n\n return rangeFactory(range);\n});\n"],"names":["projectPathOption","Option","dryOption","default","debugOption","silentOption","autoConfirmOption","rangeOption","argParser","range","isValidStringifiedRange","InvalidArgumentError","rangeFactory"],"mappings":";;;;AAGO,MAAMA,iBAAAA,GAAoB,IAAIC,MAAAA,CACnC,qCACA,+CAAA;AAGK,MAAMC,YAAY,IAAID,MAAAA,CAC3B,aACA,iDAAA,CAAA,CACAE,OAAO,CAAC,KAAA;AAEH,MAAMC,cAAc,IAAIH,MAAAA,CAAO,eAAe,6BAAA,CAAA,CAA+BE,OAAO,CAAC,KAAA;AAErF,MAAME,eAAe,IAAIJ,MAAAA,CAAO,gBAAgB,oBAAA,CAAA,CAAsBE,OAAO,CAAC,KAAA;AAE9E,MAAMG,oBAAoB,IAAIL,MAAAA,CACnC,aACA,yFAAA,CAAA,CACAE,OAAO,CAAC,KAAA;AAEH,MAAMI,cAAc,IAAIN,MAAAA,CAC7B,uBACA,uDAAA,CAAA,CACAO,SAAS,CAAC,CAACC,KAAAA,GAAAA;IACX,IAAI,CAACC,wBAAwBD,KAAAA,CAAAA,EAAQ;AACnC,QAAA,MAAM,IAAIE,oBAAAA,CAAqB,+BAAA,CAAA;AACjC,IAAA;AAEA,IAAA,OAAOC,YAAAA,CAAaH,KAAAA,CAAAA;AACtB,CAAA;;;;"}
@@ -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,SAAiB,GAAA;AACvB,QAAA,MAAMC,IAAO,GAAA,IAAI,CAACC,MAAM,CAAC;YAAEC,cAAgB,EAAA,IAAA;YAAMC,SAAW,EAAA,IAAA;YAAMC,YAAc,EAAA;AAAM,SAAA,CAAA;QACtF,MAAMC,IAAAA,GAAO,IAAI,CAACA,IAAI;AACtB,QAAA,MAAMC,OAAU,GAAA,IAAI,CAACA,OAAO,CAACC,GAAG;AAEhC,QAAA,OAAO,GAAGD,OAAQ,CAAA,CAAC,EAAEN,IAAK,CAAA,CAAC,EAAEK,IAAM,CAAA,CAAA;AACrC;AAEAJ,IAAAA,MAAAA,CAAOO,OAAuB,EAAE;AAC9B,QAAA,MAAM,EAAEN,cAAAA,GAAiB,IAAI,EAAEC,SAAY,GAAA,IAAI,EAAEC,YAAAA,GAAe,IAAI,EAAE,GAAGI,OAAAA,IAAW,EAAC;QAErF,IAAIC,SAAAA,GAAY,IAAI,CAACC,QAAQ;AAE7B,QAAA,IAAIR,cAAgB,EAAA;AAClBO,YAAAA,SAAAA,GAAYA,SAAUE,CAAAA,OAAO,CAAC,IAAIC,OAAO,CAAC,GAAG,EAAEC,2BAA2B,CAAC,CAAC,CAAC,EAAE,GAAM,CAAA,EAAA,EAAA,CAAA;AACvF;AAEA,QAAA,IAAIV,SAAW,EAAA;AACbM,YAAAA,SAAAA,GAAYA,UACTE,OAAO,CAAC,CAAC,CAAC,EAAEE,6BAA6B,CAAA,CAAE,EAAE,EAC7CF,CAAAA,CAAAA,OAAO,CAAC,CAAC,CAAC,EAAEE,6BAA6B,EAAE,EAAE,EAAA,CAAA;AAClD;AAEA,QAAA,IAAIT,YAAc,EAAA;YAChBK,SAAYA,GAAAA,SAAAA,CAAUK,UAAU,CAAC,GAAK,EAAA,GAAA,CAAA;AACxC;QAEA,OAAOL,SAAAA;AACT;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;AA+BF;MAEaoB,cAAiB,GAAA,CAACX,OAAkC,GAAA,IAAIV,QAAQU,OAAS;;;;;"}
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 +1 @@
1
- {"version":3,"file":"codemod.mjs","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,SAAiB,GAAA;AACvB,QAAA,MAAMC,IAAO,GAAA,IAAI,CAACC,MAAM,CAAC;YAAEC,cAAgB,EAAA,IAAA;YAAMC,SAAW,EAAA,IAAA;YAAMC,YAAc,EAAA;AAAM,SAAA,CAAA;QACtF,MAAMC,IAAAA,GAAO,IAAI,CAACA,IAAI;AACtB,QAAA,MAAMC,OAAU,GAAA,IAAI,CAACA,OAAO,CAACC,GAAG;AAEhC,QAAA,OAAO,GAAGD,OAAQ,CAAA,CAAC,EAAEN,IAAK,CAAA,CAAC,EAAEK,IAAM,CAAA,CAAA;AACrC;AAEAJ,IAAAA,MAAAA,CAAOO,OAAuB,EAAE;AAC9B,QAAA,MAAM,EAAEN,cAAAA,GAAiB,IAAI,EAAEC,SAAY,GAAA,IAAI,EAAEC,YAAAA,GAAe,IAAI,EAAE,GAAGI,OAAAA,IAAW,EAAC;QAErF,IAAIC,SAAAA,GAAY,IAAI,CAACC,QAAQ;AAE7B,QAAA,IAAIR,cAAgB,EAAA;AAClBO,YAAAA,SAAAA,GAAYA,SAAUE,CAAAA,OAAO,CAAC,IAAIC,OAAO,CAAC,GAAG,EAAEC,iBAA2B,CAAC,CAAC,CAAC,EAAE,GAAM,CAAA,EAAA,EAAA,CAAA;AACvF;AAEA,QAAA,IAAIV,SAAW,EAAA;AACbM,YAAAA,SAAAA,GAAYA,UACTE,OAAO,CAAC,CAAC,CAAC,EAAEE,mBAA6B,CAAA,CAAE,EAAE,EAC7CF,CAAAA,CAAAA,OAAO,CAAC,CAAC,CAAC,EAAEE,mBAA6B,EAAE,EAAE,EAAA,CAAA;AAClD;AAEA,QAAA,IAAIT,YAAc,EAAA;YAChBK,SAAYA,GAAAA,SAAAA,CAAUK,UAAU,CAAC,GAAK,EAAA,GAAA,CAAA;AACxC;QAEA,OAAOL,SAAAA;AACT;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;AA+BF;MAEaoB,cAAiB,GAAA,CAACX,OAAkC,GAAA,IAAIV,QAAQU,OAAS;;;;"}
1
+ {"version":3,"file":"codemod.mjs","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,iBAA2B,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,mBAA6B,CAAA,CAAE,EAAE,EAAA,CAAA,CAC7CF,OAAO,CAAC,CAAC,CAAC,EAAEE,mBAA6B,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 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../src/modules/codemod/constants.ts"],"sourcesContent":["export const CODEMOD_CODE_SUFFIX = 'code';\n\nexport const CODEMOD_JSON_SUFFIX = 'json';\n\nexport const CODEMOD_ALLOWED_SUFFIXES = [CODEMOD_CODE_SUFFIX, CODEMOD_JSON_SUFFIX];\n\nexport const CODEMOD_EXTENSION = 'ts';\n\nexport const CODEMOD_FILE_REGEXP = new RegExp(\n `^.+[.](${CODEMOD_ALLOWED_SUFFIXES.join('|')})[.]${CODEMOD_EXTENSION}$`\n);\n"],"names":["CODEMOD_CODE_SUFFIX","CODEMOD_JSON_SUFFIX","CODEMOD_ALLOWED_SUFFIXES","CODEMOD_EXTENSION","CODEMOD_FILE_REGEXP","RegExp","join"],"mappings":";;AAAO,MAAMA,sBAAsB;AAE5B,MAAMC,sBAAsB;MAEtBC,wBAA2B,GAAA;AAACF,IAAAA,mBAAAA;AAAqBC,IAAAA;;AAEvD,MAAME,oBAAoB;MAEpBC,mBAAsB,GAAA,IAAIC,MACrC,CAAA,CAAC,OAAO,EAAEH,wBAAAA,CAAyBI,IAAI,CAAC,KAAK,IAAI,EAAEH,iBAAkB,CAAA,CAAC,CAAC;;;;;;;;"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../src/modules/codemod/constants.ts"],"sourcesContent":["export const CODEMOD_CODE_SUFFIX = 'code';\n\nexport const CODEMOD_JSON_SUFFIX = 'json';\n\nexport const CODEMOD_ALLOWED_SUFFIXES = [CODEMOD_CODE_SUFFIX, CODEMOD_JSON_SUFFIX];\n\nexport const CODEMOD_EXTENSION = 'ts';\n\nexport const CODEMOD_FILE_REGEXP = new RegExp(\n `^.+[.](${CODEMOD_ALLOWED_SUFFIXES.join('|')})[.]${CODEMOD_EXTENSION}$`\n);\n"],"names":["CODEMOD_CODE_SUFFIX","CODEMOD_JSON_SUFFIX","CODEMOD_ALLOWED_SUFFIXES","CODEMOD_EXTENSION","CODEMOD_FILE_REGEXP","RegExp","join"],"mappings":";;AAAO,MAAMA,sBAAsB;AAE5B,MAAMC,sBAAsB;MAEtBC,wBAAAA,GAA2B;AAACF,IAAAA,mBAAAA;AAAqBC,IAAAA;;AAEvD,MAAME,oBAAoB;MAEpBC,mBAAAA,GAAsB,IAAIC,MAAAA,CACrC,CAAC,OAAO,EAAEH,wBAAAA,CAAyBI,IAAI,CAAC,KAAK,IAAI,EAAEH,iBAAAA,CAAkB,CAAC,CAAC;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","sources":["../../../../src/modules/codemod/constants.ts"],"sourcesContent":["export const CODEMOD_CODE_SUFFIX = 'code';\n\nexport const CODEMOD_JSON_SUFFIX = 'json';\n\nexport const CODEMOD_ALLOWED_SUFFIXES = [CODEMOD_CODE_SUFFIX, CODEMOD_JSON_SUFFIX];\n\nexport const CODEMOD_EXTENSION = 'ts';\n\nexport const CODEMOD_FILE_REGEXP = new RegExp(\n `^.+[.](${CODEMOD_ALLOWED_SUFFIXES.join('|')})[.]${CODEMOD_EXTENSION}$`\n);\n"],"names":["CODEMOD_CODE_SUFFIX","CODEMOD_JSON_SUFFIX","CODEMOD_ALLOWED_SUFFIXES","CODEMOD_EXTENSION","CODEMOD_FILE_REGEXP","RegExp","join"],"mappings":"AAAO,MAAMA,sBAAsB;AAE5B,MAAMC,sBAAsB;MAEtBC,wBAA2B,GAAA;AAACF,IAAAA,mBAAAA;AAAqBC,IAAAA;;AAEvD,MAAME,oBAAoB;MAEpBC,mBAAsB,GAAA,IAAIC,MACrC,CAAA,CAAC,OAAO,EAAEH,wBAAAA,CAAyBI,IAAI,CAAC,KAAK,IAAI,EAAEH,iBAAkB,CAAA,CAAC,CAAC;;;;"}
1
+ {"version":3,"file":"constants.mjs","sources":["../../../../src/modules/codemod/constants.ts"],"sourcesContent":["export const CODEMOD_CODE_SUFFIX = 'code';\n\nexport const CODEMOD_JSON_SUFFIX = 'json';\n\nexport const CODEMOD_ALLOWED_SUFFIXES = [CODEMOD_CODE_SUFFIX, CODEMOD_JSON_SUFFIX];\n\nexport const CODEMOD_EXTENSION = 'ts';\n\nexport const CODEMOD_FILE_REGEXP = new RegExp(\n `^.+[.](${CODEMOD_ALLOWED_SUFFIXES.join('|')})[.]${CODEMOD_EXTENSION}$`\n);\n"],"names":["CODEMOD_CODE_SUFFIX","CODEMOD_JSON_SUFFIX","CODEMOD_ALLOWED_SUFFIXES","CODEMOD_EXTENSION","CODEMOD_FILE_REGEXP","RegExp","join"],"mappings":"AAAO,MAAMA,sBAAsB;AAE5B,MAAMC,sBAAsB;MAEtBC,wBAAAA,GAA2B;AAACF,IAAAA,mBAAAA;AAAqBC,IAAAA;;AAEvD,MAAME,oBAAoB;MAEpBC,mBAAAA,GAAsB,IAAIC,MAAAA,CACrC,CAAC,OAAO,EAAEH,wBAAAA,CAAyBI,IAAI,CAAC,KAAK,IAAI,EAAEH,iBAAAA,CAAkB,CAAC,CAAC;;;;"}
@@ -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":";;;;AAEaA,MAAAA,2BAAAA,GAA8BC,IAAKC,CAAAA,IAAI,CAClDC,SAAAA,EACA,IACA,EAAA,IAAA,EACA,IACA,EAAA,IAAA,EACA,WACA,EAAA,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,IAAAA,CAAKC,IAAI,CAClDC,SAAAA,EACA,IAAA,EACA,IAAA,EACA,IAAA,EACA,IAAA,EACA,WAAA,EACA,UAAA;AACA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","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":";;AAEaA,MAAAA,2BAAAA,GAA8BC,IAAKC,CAAAA,IAAI,CAClDC,SAAAA,EACA,IACA,EAAA,IAAA,EACA,IACA,EAAA,IAAA,EACA,WACA,EAAA,UAAA;AACA;;;;"}
1
+ {"version":3,"file":"constants.mjs","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 +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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"repository.mjs","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":";;;;;;;;;;AAeO,MAAMA,iBAAAA,CAAAA;IAgBXC,OAAU,GAAA;AACR,QAAA,IAAI,CAACC,wBAAwB,EAAA;AAC7B,QAAA,IAAI,CAACC,qBAAqB,EAAA;AAE1B,QAAA,OAAO,IAAI;AACb;AAEAC,IAAAA,KAAAA,CAAMC,OAAuB,EAAE;AAC7B,QAAA,OAAO,IAAI,CAACC,aAAa,CAACD,SAASE,MAAM;AAC3C;AAEAC,IAAAA,aAAAA,CAAcH,OAAuB,EAAE;AACrC,QAAA,OAAOA,OAAQI,CAAAA,GAAG,IAAI,IAAI,CAACC,MAAM;AACnC;AAEAC,IAAAA,GAAAA,CAAIC,GAAW,EAAE;AACf,QAAA,MAAMC,MAAS,GAAA,IAAI,CAACC,IAAI,CAAC;YAAEC,IAAM,EAAA;AAACH,gBAAAA;AAAI;AAAC,SAAA,CAAA;QAEvC,IAAIC,MAAAA,CAAON,MAAM,KAAK,CAAG,EAAA;YACvB,OAAO,KAAA;AACT;AAEA,QAAA,MAAM,EAAES,QAAQ,EAAE,GAAGH,MAAM,CAAC,CAAE,CAAA;QAE9B,OAAOG,QAAAA,CAAST,MAAM,KAAK,CAAA,IAAKS,QAAQ,CAAC,CAAA,CAAE,CAACJ,GAAG,KAAKA,GAAAA;AACtD;AAEAE,IAAAA,IAAAA,CAAKG,CAAY,EAAE;AACjB,QAAA,MAAMC,UAAUC,MAAOD,CAAAA,OAAO,CAAC,IAAI,CAACR,MAAM,CAAA;AAE1C,QAAA,OACEQ,OACE;SACCE,MAAM,CAACC,mBACR;AACCC,SAAAA,GAAG,CAA8B,CAAC,CAACjB,OAASW,EAAAA,QAAAA,CAAS,IAAM;AAC1DX,gBAAAA,OAAAA,EAASkB,aAAclB,CAAAA,OAAAA,CAAAA;;gBAEvBW,QAAUA,EAAAA,QAAAA,CAASI,MAAM,CAACI,iBAAAA;AAC5B,aAAA,EACA;SACCJ,MAAM,CAAC,CAAC,EAAEJ,QAAQ,EAAE,GAAKA,QAAAA,CAAST,MAAM,GAAG,CAAA,CAAA;QAGhD,SAASc,kBAAAA,CAAmB,CAAChB,OAA+C,CAAA,EAAA;AAC1E,YAAA,IAAI,CAACoB,eAAAA,CAAgBR,CAAES,CAAAA,KAAK,CAAG,EAAA;gBAC7B,OAAO,IAAA;AACT;AAEA,YAAA,OAAOT,CAAES,CAAAA,KAAK,CAACC,IAAI,CAACtB,OAAAA,CAAAA;AACtB;AAEA,QAAA,SAASmB,kBAAkBI,OAAwB,EAAA;YACjD,IAAIX,CAAAA,CAAEF,IAAI,KAAKc,SAAW,EAAA;gBACxB,OAAO,IAAA;AACT;AAEA,YAAA,OAAOZ,EAAEF,IAAI,CAACe,QAAQ,CAACF,QAAQhB,GAAG,CAAA;AACpC;AACF;AAEAN,IAAAA,aAAAA,CAAcD,OAAuB,EAAE;QACrC,MAAM0B,cAAAA,GAAiB1B,QAAQI,GAAG;AAClC,QAAA,MAAMO,QAAW,GAAA,IAAI,CAACN,MAAM,CAACqB,cAAe,CAAA;AAE5C,QAAA,OAAOf,YAAY,EAAE;AACvB;IAEAgB,OAAU,GAAA;AACR,QAAA,MAAMd,UAAUC,MAAOD,CAAAA,OAAO,CAAC,IAAI,CAACR,MAAM,CAAA;QAE1C,OAAOQ,OAAAA,CAAQI,GAAG,CAA8B,CAAC,CAACjB,OAASW,EAAAA,QAAAA,CAAS,IAAM;AACxEX,gBAAAA,OAAAA,EAASkB,aAAclB,CAAAA,OAAAA,CAAAA;AACvBW,gBAAAA;aACF,CAAA,CAAA;AACF;IAEQd,wBAA2B,GAAA;QACjC,IAAI,CAAC+B,QAAQ,GAAGC,GACbC,CAAAA,WAAW,CAAC,IAAI,CAACC,GAAG,CAAA;AACpBhB,SAAAA,MAAM,CAAC,CAACiB,QAAAA,GAAaH,GAAII,CAAAA,QAAQ,CAACC,IAAKC,CAAAA,IAAI,CAAC,IAAI,CAACJ,GAAG,EAAEC,QAAWI,CAAAA,CAAAA,CAAAA,WAAW,GAC7E;SACCrB,MAAM,CAAC,CAACiB,QAAgDK,GAAAA,MAAAA,CAAOC,KAAK,CAACN,QAAAA,CAAAA,KAAc,KACpF;AACCf,SAAAA,GAAG,CAAiB,CAACjB,OAAYkB,GAAAA,aAAAA,CAAclB,SAChD;SACCuC,IAAI,CAACF,OAAOG,OAAO,CAAA;AAEtB,QAAA,OAAO,IAAI;AACb;IAEQ1C,qBAAwB,GAAA;QAC9B,IAAI,CAACO,MAAM,GAAG,EAAC;AAEf,QAAA,KAAK,MAAML,OAAAA,IAAW,IAAI,CAAC4B,QAAQ,CAAE;YACnC,IAAI,CAACa,+BAA+B,CAACzC,OAAAA,CAAAA;AACvC;AACF;AAEQyC,IAAAA,+BAAAA,CAAgCzC,OAAuB,EAAE;QAC/D,MAAM0B,cAAAA,GAAiB1B,QAAQI,GAAG;AAClC,QAAA,MAAMsC,mBAAmBR,IAAKC,CAAAA,IAAI,CAAC,IAAI,CAACJ,GAAG,EAAEL,cAAAA,CAAAA;;AAG7C,QAAA,IAAI,CAACG,GAAAA,CAAIc,UAAU,CAACD,gBAAmB,CAAA,EAAA;AACrC,YAAA;AACF;QAEA,IAAI,CAACrC,MAAM,CAACqB,cAAAA,CAAe,GAAGG,GAC3BC,CAAAA,WAAW,CAACY,gBAAAA,CACb;SACC3B,MAAM,CAAC,CAACiB,QAAaH,GAAAA,GAAAA,CAAII,QAAQ,CAACC,IAAAA,CAAKC,IAAI,CAACO,gBAAkBV,EAAAA,QAAAA,CAAAA,CAAAA,CAAWY,MAAM,EAC/E7B,CAAAA,CAAAA,MAAM,CAAC,CAACiB,QAAaa,GAAAA,mBAA6B,CAACvB,IAAI,CAACU,QAAAA,CAAAA,CACzD;AACCf,SAAAA,GAAG,CAAC,CAACe,QAAAA,GAAAA;AACJ,YAAA,MAAMc,OAAOC,4BAA6Bf,CAAAA,QAAAA,CAAAA;YAC1C,MAAMgB,aAAAA,GAAgB,IAAI,CAACjB,GAAG;AAE9B,YAAA,OAAOkB,cAAe,CAAA;AAAEH,gBAAAA,IAAAA;AAAME,gBAAAA,aAAAA;AAAehD,gBAAAA,OAAAA;AAASgC,gBAAAA;AAAS,aAAA,CAAA;AACjE,SAAA,CAAA;AACJ;AAjIA,IAAA,WAAA,CAAYD,GAAW,CAAE;QACvBmB,MAAOrB,CAAAA,GAAAA,CAAIc,UAAU,CAACZ,GAAAA,CAAAA,EAAM,CAAC,qCAAqC,EAAEA,GAAI,CAAA,CAAC,CAAC,CAAA;QAE1E,IAAI,CAACA,GAAG,GAAGA,GAAAA;QAEX,IAAI,CAAC1B,MAAM,GAAG,EAAC;QACf,IAAI,CAACuB,QAAQ,GAAG,EAAE;AACpB;AA2HF;AAEO,MAAMmB,+BAA+B,CAACf,QAAAA,GAAAA;AAC3C,IAAA,MAAMc,OAAOd,QAASmB,CAAAA,KAAK,CAAC,GAAKC,CAAAA,CAAAA,EAAE,CAAC,CAAC,CAAA,CAAA;AAErCF,IAAAA,MAAAA,CAAOJ,IAAStB,KAAAA,SAAAA,CAAAA;AAChB0B,IAAAA,MAAAA,CAAOL,wBAAkC,CAACpB,QAAQ,CAACqB,IAAAA,CAAAA,CAAAA;IAEnD,OAAOA,IAAAA;AACT;AAEaO,MAAAA,wBAAAA,GAA2B,CAACtB,GAAAA,GAAcuB,2BAA2B,GAAA;AAChF,IAAA,OAAO,IAAI3D,iBAAkBoC,CAAAA,GAAAA,CAAAA;AAC/B;;;;"}
1
+ {"version":3,"file":"repository.mjs","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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"}