@strapi/upgrade 0.0.0-experimental.fc1ac2acd58c8a5a858679956b6d102ac5ee4011 → 0.0.0-experimental.fca58d9b01ba89012d84a58a20556a6fd716cb92
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.
- package/LICENSE +19 -4
- package/README.md +1 -1
- package/dist/cli.js +15 -6
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +14 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/index.js +9 -1199
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -1191
- package/dist/index.mjs.map +1 -1
- package/dist/modules/codemod/codemod.d.ts +4 -2
- package/dist/modules/codemod/codemod.d.ts.map +1 -1
- package/dist/modules/codemod/types.d.ts +8 -1
- package/dist/modules/codemod/types.d.ts.map +1 -1
- package/dist/modules/codemod-repository/constants.d.ts.map +1 -1
- package/dist/modules/codemod-repository/repository.d.ts +6 -5
- package/dist/modules/codemod-repository/repository.d.ts.map +1 -1
- package/dist/modules/codemod-repository/types.d.ts +7 -3
- package/dist/modules/codemod-repository/types.d.ts.map +1 -1
- package/dist/modules/codemod-runner/codemod-runner.d.ts +3 -0
- package/dist/modules/codemod-runner/codemod-runner.d.ts.map +1 -1
- package/dist/modules/codemod-runner/index.d.ts +1 -0
- package/dist/modules/codemod-runner/index.d.ts.map +1 -1
- package/dist/modules/codemod-runner/types.d.ts +1 -0
- package/dist/modules/codemod-runner/types.d.ts.map +1 -1
- package/dist/modules/error/utils.d.ts +8 -0
- package/dist/modules/error/utils.d.ts.map +1 -1
- package/dist/modules/file-scanner/scanner.d.ts.map +1 -1
- package/dist/modules/format/formats.d.ts +6 -0
- package/dist/modules/format/formats.d.ts.map +1 -1
- package/dist/modules/project/constants.d.ts +6 -3
- package/dist/modules/project/constants.d.ts.map +1 -1
- package/dist/modules/project/index.d.ts +2 -0
- package/dist/modules/project/index.d.ts.map +1 -1
- package/dist/modules/project/project.d.ts +27 -5
- package/dist/modules/project/project.d.ts.map +1 -1
- package/dist/modules/project/types.d.ts +3 -10
- package/dist/modules/project/types.d.ts.map +1 -1
- package/dist/modules/project/utils.d.ts +6 -0
- package/dist/modules/project/utils.d.ts.map +1 -0
- package/dist/modules/report/report.d.ts.map +1 -1
- package/dist/modules/requirement/types.d.ts +2 -2
- package/dist/modules/requirement/types.d.ts.map +1 -1
- package/dist/modules/runner/json/transform.d.ts.map +1 -1
- package/dist/modules/upgrader/types.d.ts +6 -0
- package/dist/modules/upgrader/types.d.ts.map +1 -1
- package/dist/modules/upgrader/upgrader.d.ts +7 -3
- package/dist/modules/upgrader/upgrader.d.ts.map +1 -1
- package/dist/modules/version/range.d.ts +2 -0
- package/dist/modules/version/range.d.ts.map +1 -1
- package/dist/modules/version/types.d.ts +2 -1
- package/dist/modules/version/types.d.ts.map +1 -1
- package/dist/package.json.js +6 -0
- package/dist/package.json.js.map +1 -0
- package/dist/package.json.mjs +4 -0
- package/dist/package.json.mjs.map +1 -0
- package/dist/src/cli/commands/codemods.js +120 -0
- package/dist/src/cli/commands/codemods.js.map +1 -0
- package/dist/src/cli/commands/codemods.mjs +116 -0
- package/dist/src/cli/commands/codemods.mjs.map +1 -0
- package/dist/src/cli/commands/upgrade.js +99 -0
- package/dist/src/cli/commands/upgrade.js.map +1 -0
- package/dist/src/cli/commands/upgrade.mjs +96 -0
- package/dist/src/cli/commands/upgrade.mjs.map +1 -0
- package/dist/src/cli/errors.js +18 -0
- package/dist/src/cli/errors.js.map +1 -0
- package/dist/src/cli/errors.mjs +16 -0
- package/dist/src/cli/errors.mjs.map +1 -0
- package/dist/src/cli/options.js +26 -0
- package/dist/src/cli/options.js.map +1 -0
- package/dist/src/cli/options.mjs +19 -0
- package/dist/src/cli/options.mjs.map +1 -0
- package/dist/src/modules/codemod/codemod.js +44 -0
- package/dist/src/modules/codemod/codemod.js.map +1 -0
- package/dist/src/modules/codemod/codemod.mjs +41 -0
- package/dist/src/modules/codemod/codemod.mjs.map +1 -0
- package/dist/src/modules/codemod/constants.js +17 -0
- package/dist/src/modules/codemod/constants.js.map +1 -0
- package/dist/src/modules/codemod/constants.mjs +11 -0
- package/dist/src/modules/codemod/constants.mjs.map +1 -0
- package/dist/src/modules/codemod/index.js +10 -0
- package/dist/src/modules/codemod/index.js.map +1 -0
- package/dist/src/modules/codemod/index.mjs +4 -0
- package/dist/src/modules/codemod/index.mjs.map +1 -0
- package/dist/src/modules/codemod-repository/constants.js +9 -0
- package/dist/src/modules/codemod-repository/constants.js.map +1 -0
- package/dist/src/modules/codemod-repository/constants.mjs +7 -0
- package/dist/src/modules/codemod-repository/constants.mjs.map +1 -0
- package/dist/src/modules/codemod-repository/index.js +10 -0
- package/dist/src/modules/codemod-repository/index.js.map +1 -0
- package/dist/src/modules/codemod-repository/index.mjs +4 -0
- package/dist/src/modules/codemod-repository/index.mjs.map +1 -0
- package/dist/src/modules/codemod-repository/repository.js +127 -0
- package/dist/src/modules/codemod-repository/repository.js.map +1 -0
- package/dist/src/modules/codemod-repository/repository.mjs +123 -0
- package/dist/src/modules/codemod-repository/repository.mjs.map +1 -0
- package/dist/src/modules/codemod-runner/codemod-runner.js +113 -0
- package/dist/src/modules/codemod-runner/codemod-runner.js.map +1 -0
- package/dist/src/modules/codemod-runner/codemod-runner.mjs +110 -0
- package/dist/src/modules/codemod-runner/codemod-runner.mjs.map +1 -0
- package/dist/src/modules/error/index.js +11 -0
- package/dist/src/modules/error/index.js.map +1 -0
- package/dist/src/modules/error/index.mjs +2 -0
- package/dist/src/modules/error/index.mjs.map +1 -0
- package/dist/src/modules/error/utils.js +33 -0
- package/dist/src/modules/error/utils.js.map +1 -0
- package/dist/src/modules/error/utils.mjs +28 -0
- package/dist/src/modules/error/utils.mjs.map +1 -0
- package/dist/src/modules/file-scanner/index.js +8 -0
- package/dist/src/modules/file-scanner/index.js.map +1 -0
- package/dist/src/modules/file-scanner/index.mjs +2 -0
- package/dist/src/modules/file-scanner/index.mjs.map +1 -0
- package/dist/src/modules/file-scanner/scanner.js +23 -0
- package/dist/src/modules/file-scanner/scanner.js.map +1 -0
- package/dist/src/modules/file-scanner/scanner.mjs +20 -0
- package/dist/src/modules/file-scanner/scanner.mjs.map +1 -0
- package/dist/src/modules/format/formats.js +107 -0
- package/dist/src/modules/format/formats.js.map +1 -0
- package/dist/src/modules/format/formats.mjs +94 -0
- package/dist/src/modules/format/formats.mjs.map +1 -0
- package/dist/src/modules/format/index.js +19 -0
- package/dist/src/modules/format/index.js.map +1 -0
- package/dist/src/modules/format/index.mjs +2 -0
- package/dist/src/modules/format/index.mjs.map +1 -0
- package/dist/src/modules/index.js +32 -0
- package/dist/src/modules/index.js.map +1 -0
- package/dist/src/modules/index.mjs +27 -0
- package/dist/src/modules/index.mjs.map +1 -0
- package/dist/src/modules/json/file.js +16 -0
- package/dist/src/modules/json/file.js.map +1 -0
- package/dist/src/modules/json/file.mjs +13 -0
- package/dist/src/modules/json/file.mjs.map +1 -0
- package/dist/src/modules/json/transform-api.js +38 -0
- package/dist/src/modules/json/transform-api.js.map +1 -0
- package/dist/src/modules/json/transform-api.mjs +35 -0
- package/dist/src/modules/json/transform-api.mjs.map +1 -0
- package/dist/src/modules/logger/index.js +8 -0
- package/dist/src/modules/logger/index.js.map +1 -0
- package/dist/src/modules/logger/index.mjs +2 -0
- package/dist/src/modules/logger/index.mjs.map +1 -0
- package/dist/src/modules/logger/logger.js +76 -0
- package/dist/src/modules/logger/logger.js.map +1 -0
- package/dist/src/modules/logger/logger.mjs +73 -0
- package/dist/src/modules/logger/logger.mjs.map +1 -0
- package/dist/src/modules/npm/constants.js +6 -0
- package/dist/src/modules/npm/constants.js.map +1 -0
- package/dist/src/modules/npm/constants.mjs +4 -0
- package/dist/src/modules/npm/constants.mjs.map +1 -0
- package/dist/src/modules/npm/package.js +55 -0
- package/dist/src/modules/npm/package.js.map +1 -0
- package/dist/src/modules/npm/package.mjs +52 -0
- package/dist/src/modules/npm/package.mjs.map +1 -0
- package/dist/src/modules/project/constants.js +45 -0
- package/dist/src/modules/project/constants.js.map +1 -0
- package/dist/src/modules/project/constants.mjs +35 -0
- package/dist/src/modules/project/constants.mjs.map +1 -0
- package/dist/src/modules/project/index.js +15 -0
- package/dist/src/modules/project/index.js.map +1 -0
- package/dist/src/modules/project/index.mjs +5 -0
- package/dist/src/modules/project/index.mjs.map +1 -0
- package/dist/src/modules/project/project.js +208 -0
- package/dist/src/modules/project/project.js.map +1 -0
- package/dist/src/modules/project/project.mjs +203 -0
- package/dist/src/modules/project/project.mjs.map +1 -0
- package/dist/src/modules/project/utils.js +26 -0
- package/dist/src/modules/project/utils.js.map +1 -0
- package/dist/src/modules/project/utils.mjs +21 -0
- package/dist/src/modules/project/utils.mjs.map +1 -0
- package/dist/src/modules/report/index.js +9 -0
- package/dist/src/modules/report/index.js.map +1 -0
- package/dist/src/modules/report/index.mjs +2 -0
- package/dist/src/modules/report/index.mjs.map +1 -0
- package/dist/src/modules/report/report.js +13 -0
- package/dist/src/modules/report/report.js.map +1 -0
- package/dist/src/modules/report/report.mjs +10 -0
- package/dist/src/modules/report/report.mjs.map +1 -0
- package/dist/src/modules/requirement/index.js +8 -0
- package/dist/src/modules/requirement/index.js.map +1 -0
- package/dist/src/modules/requirement/index.mjs +2 -0
- package/dist/src/modules/requirement/index.mjs.map +1 -0
- package/dist/src/modules/requirement/requirement.js +55 -0
- package/dist/src/modules/requirement/requirement.js.map +1 -0
- package/dist/src/modules/requirement/requirement.mjs +52 -0
- package/dist/src/modules/requirement/requirement.mjs.map +1 -0
- package/dist/src/modules/runner/code/code.js +21 -0
- package/dist/src/modules/runner/code/code.js.map +1 -0
- package/dist/src/modules/runner/code/code.mjs +18 -0
- package/dist/src/modules/runner/code/code.mjs.map +1 -0
- package/dist/src/modules/runner/code/index.js +8 -0
- package/dist/src/modules/runner/code/index.js.map +1 -0
- package/dist/src/modules/runner/code/index.mjs +2 -0
- package/dist/src/modules/runner/code/index.mjs.map +1 -0
- package/dist/src/modules/runner/index.js +10 -0
- package/dist/src/modules/runner/index.js.map +1 -0
- package/dist/src/modules/runner/index.mjs +5 -0
- package/dist/src/modules/runner/index.mjs.map +1 -0
- package/dist/src/modules/runner/json/index.js +8 -0
- package/dist/src/modules/runner/json/index.js.map +1 -0
- package/dist/src/modules/runner/json/index.mjs +2 -0
- package/dist/src/modules/runner/json/index.mjs.map +1 -0
- package/dist/src/modules/runner/json/json.js +21 -0
- package/dist/src/modules/runner/json/json.js.map +1 -0
- package/dist/src/modules/runner/json/json.mjs +18 -0
- package/dist/src/modules/runner/json/json.mjs.map +1 -0
- package/dist/src/modules/runner/json/transform.js +85 -0
- package/dist/src/modules/runner/json/transform.js.map +1 -0
- package/dist/src/modules/runner/json/transform.mjs +83 -0
- package/dist/src/modules/runner/json/transform.mjs.map +1 -0
- package/dist/src/modules/runner/runner.js +22 -0
- package/dist/src/modules/runner/runner.js.map +1 -0
- package/dist/src/modules/runner/runner.mjs +20 -0
- package/dist/src/modules/runner/runner.mjs.map +1 -0
- package/dist/src/modules/timer/constants.js +6 -0
- package/dist/src/modules/timer/constants.js.map +1 -0
- package/dist/src/modules/timer/constants.mjs +4 -0
- package/dist/src/modules/timer/constants.mjs.map +1 -0
- package/dist/src/modules/timer/index.js +10 -0
- package/dist/src/modules/timer/index.js.map +1 -0
- package/dist/src/modules/timer/index.mjs +4 -0
- package/dist/src/modules/timer/index.mjs.map +1 -0
- package/dist/src/modules/timer/timer.js +33 -0
- package/dist/src/modules/timer/timer.js.map +1 -0
- package/dist/src/modules/timer/timer.mjs +30 -0
- package/dist/src/modules/timer/timer.mjs.map +1 -0
- package/dist/src/modules/upgrader/constants.js +6 -0
- package/dist/src/modules/upgrader/constants.js.map +1 -0
- package/dist/src/modules/upgrader/constants.mjs +4 -0
- package/dist/src/modules/upgrader/constants.mjs.map +1 -0
- package/dist/src/modules/upgrader/index.js +10 -0
- package/dist/src/modules/upgrader/index.js.map +1 -0
- package/dist/src/modules/upgrader/index.mjs +4 -0
- package/dist/src/modules/upgrader/index.mjs.map +1 -0
- package/dist/src/modules/upgrader/upgrader.js +266 -0
- package/dist/src/modules/upgrader/upgrader.js.map +1 -0
- package/dist/src/modules/upgrader/upgrader.mjs +263 -0
- package/dist/src/modules/upgrader/upgrader.mjs.map +1 -0
- package/dist/src/modules/version/index.js +20 -0
- package/dist/src/modules/version/index.js.map +1 -0
- package/dist/src/modules/version/index.mjs +5 -0
- package/dist/src/modules/version/index.mjs.map +1 -0
- package/dist/src/modules/version/range.js +81 -0
- package/dist/src/modules/version/range.js.map +1 -0
- package/dist/src/modules/version/range.mjs +75 -0
- package/dist/src/modules/version/range.mjs.map +1 -0
- package/dist/src/modules/version/semver.js +26 -0
- package/dist/src/modules/version/semver.js.map +1 -0
- package/dist/src/modules/version/semver.mjs +20 -0
- package/dist/src/modules/version/semver.mjs.map +1 -0
- package/dist/src/modules/version/types.js +12 -0
- package/dist/src/modules/version/types.js.map +1 -0
- package/dist/src/modules/version/types.mjs +12 -0
- package/dist/src/modules/version/types.mjs.map +1 -0
- package/dist/src/tasks/codemods/list-codemods.js +40 -0
- package/dist/src/tasks/codemods/list-codemods.js.map +1 -0
- package/dist/src/tasks/codemods/list-codemods.mjs +38 -0
- package/dist/src/tasks/codemods/list-codemods.mjs.map +1 -0
- package/dist/src/tasks/codemods/run-codemods.js +36 -0
- package/dist/src/tasks/codemods/run-codemods.js.map +1 -0
- package/dist/src/tasks/codemods/run-codemods.mjs +34 -0
- package/dist/src/tasks/codemods/run-codemods.mjs.map +1 -0
- package/dist/src/tasks/codemods/utils.js +54 -0
- package/dist/src/tasks/codemods/utils.js.map +1 -0
- package/dist/src/tasks/codemods/utils.mjs +50 -0
- package/dist/src/tasks/codemods/utils.mjs.map +1 -0
- package/dist/src/tasks/index.js +15 -0
- package/dist/src/tasks/index.js.map +1 -0
- package/dist/src/tasks/index.mjs +7 -0
- package/dist/src/tasks/index.mjs.map +1 -0
- package/dist/src/tasks/upgrade/prompts/latest.js +48 -0
- package/dist/src/tasks/upgrade/prompts/latest.js.map +1 -0
- package/dist/src/tasks/upgrade/prompts/latest.mjs +46 -0
- package/dist/src/tasks/upgrade/prompts/latest.mjs.map +1 -0
- package/dist/src/tasks/upgrade/requirements/common.js +40 -0
- package/dist/src/tasks/upgrade/requirements/common.js.map +1 -0
- package/dist/src/tasks/upgrade/requirements/common.mjs +35 -0
- package/dist/src/tasks/upgrade/requirements/common.mjs.map +1 -0
- package/dist/src/tasks/upgrade/requirements/major.js +29 -0
- package/dist/src/tasks/upgrade/requirements/major.js.map +1 -0
- package/dist/src/tasks/upgrade/requirements/major.mjs +26 -0
- package/dist/src/tasks/upgrade/requirements/major.mjs.map +1 -0
- package/dist/src/tasks/upgrade/upgrade.js +69 -0
- package/dist/src/tasks/upgrade/upgrade.js.map +1 -0
- package/dist/src/tasks/upgrade/upgrade.mjs +67 -0
- package/dist/src/tasks/upgrade/upgrade.mjs.map +1 -0
- package/dist/tasks/codemods/index.d.ts +2 -1
- package/dist/tasks/codemods/index.d.ts.map +1 -1
- package/dist/tasks/codemods/list-codemods.d.ts +3 -0
- package/dist/tasks/codemods/list-codemods.d.ts.map +1 -0
- package/dist/tasks/codemods/run-codemods.d.ts +3 -0
- package/dist/tasks/codemods/run-codemods.d.ts.map +1 -0
- package/dist/tasks/codemods/types.d.ts +9 -3
- package/dist/tasks/codemods/types.d.ts.map +1 -1
- package/dist/tasks/codemods/utils.d.ts +6 -0
- package/dist/tasks/codemods/utils.d.ts.map +1 -0
- package/dist/tasks/index.d.ts +1 -1
- package/dist/tasks/index.d.ts.map +1 -1
- package/dist/tasks/upgrade/prompts/index.d.ts +2 -0
- package/dist/tasks/upgrade/prompts/index.d.ts.map +1 -0
- package/dist/tasks/upgrade/prompts/latest.d.ts +9 -0
- package/dist/tasks/upgrade/prompts/latest.d.ts.map +1 -0
- package/dist/tasks/upgrade/requirements/major.d.ts.map +1 -1
- package/dist/tasks/upgrade/upgrade.d.ts.map +1 -1
- package/package.json +16 -15
- package/resources/codemods/5.0.0/comment-out-lifecycle-files.code.ts +63 -0
- package/resources/codemods/5.0.0/dependency-remove-strapi-plugin-i18n.json.ts +31 -0
- package/resources/codemods/5.0.0/dependency-upgrade-react-and-react-dom.json.ts +67 -0
- package/resources/codemods/5.0.0/dependency-upgrade-react-router-dom.json.ts +59 -0
- package/resources/codemods/5.0.0/dependency-upgrade-styled-components.json.ts +49 -0
- package/resources/codemods/5.0.0/deprecate-helper-plugin.code.ts +192 -0
- package/resources/codemods/5.0.0/entity-service-document-service.code.ts +437 -0
- package/resources/codemods/5.0.0/s3-keys-wrapped-in-credentials.code.ts +1 -1
- package/resources/codemods/5.0.0/sqlite3-to-better-sqlite3.json.ts +5 -3
- package/resources/codemods/5.0.0/strapi-public-interface.code.ts +126 -0
- package/resources/codemods/5.0.0/use-uid-for-config-namespace.code.ts +1 -1
- package/resources/codemods/5.0.0/utils-public-interface.code.ts +320 -0
- package/resources/codemods/5.1.0/dependency-better-sqlite3.json.ts +48 -0
- package/resources/examples/console.log-to-console.info.code.ts +1 -1
- package/resources/examples/disable-jsx-buttons.code.ts +42 -0
- package/resources/utils/change-import.ts +118 -0
- package/resources/utils/replace-jsx.ts +49 -0
- package/dist/_chunks/codemod-runner-oPpELfwO.js +0 -730
- package/dist/_chunks/codemod-runner-oPpELfwO.js.map +0 -1
- package/dist/_chunks/codemods-qc8_QMWD.js +0 -108
- package/dist/_chunks/codemods-qc8_QMWD.js.map +0 -1
- package/dist/_chunks/index-GHKaxdhJ.js +0 -103
- package/dist/_chunks/index-GHKaxdhJ.js.map +0 -1
- package/dist/_chunks/upgrade-4SxXG3Oe.js +0 -357
- package/dist/_chunks/upgrade-4SxXG3Oe.js.map +0 -1
- package/dist/tasks/codemods/codemods.d.ts +0 -3
- package/dist/tasks/codemods/codemods.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.mjs","sources":["../../../../src/modules/project/project.ts"],"sourcesContent":["import path from 'node:path';\nimport assert from 'node:assert';\nimport fse from 'fs-extra';\nimport semver from 'semver';\n\nimport { semVerFactory, isLiteralSemVer, isValidSemVer } from '../version';\nimport { fileScannerFactory } from '../file-scanner';\nimport { codeRunnerFactory } from '../runner/code';\nimport { jsonRunnerFactory } from '../runner/json';\nimport * as constants from './constants';\n\nimport type { Version } from '../version';\nimport type { Codemod } from '../codemod';\nimport type { Report } from '../report';\nimport type {\n FileExtension,\n MinimalPackageJSON,\n ProjectConfig,\n ProjectType,\n RunCodemodsOptions,\n} from './types';\n\nexport class Project {\n public cwd: string;\n\n // The following properties are assigned during the .refresh() call in the constructor.\n\n public files!: string[];\n\n public packageJSONPath!: string;\n\n public packageJSON!: MinimalPackageJSON;\n\n public readonly paths: string[];\n\n constructor(cwd: string, config: ProjectConfig) {\n if (!fse.pathExistsSync(cwd)) {\n throw new Error(`ENOENT: no such file or directory, access '${cwd}'`);\n }\n\n this.cwd = cwd;\n this.paths = config.paths;\n\n this.refresh();\n }\n\n getFilesByExtensions(extensions: FileExtension[]) {\n return this.files.filter((filePath) => {\n const fileExtension = path.extname(filePath) as FileExtension;\n\n return extensions.includes(fileExtension);\n });\n }\n\n refresh() {\n this.refreshPackageJSON();\n this.refreshProjectFiles();\n\n return this;\n }\n\n async runCodemods(codemods: Codemod.List, options: RunCodemodsOptions) {\n const runners = this.createProjectCodemodsRunners(options.dry);\n const reports: Report.CodemodReport[] = [];\n\n for (const codemod of codemods) {\n for (const runner of runners) {\n if (runner.valid(codemod)) {\n const report = await runner.run(codemod);\n reports.push({ codemod, report });\n }\n }\n }\n\n return reports;\n }\n\n private createProjectCodemodsRunners(dry: boolean = false) {\n const jsonExtensions = constants.PROJECT_JSON_EXTENSIONS.map<FileExtension>((ext) => `.${ext}`);\n const codeExtensions = constants.PROJECT_CODE_EXTENSIONS.map<FileExtension>((ext) => `.${ext}`);\n\n const jsonFiles = this.getFilesByExtensions(jsonExtensions);\n const codeFiles = this.getFilesByExtensions(codeExtensions);\n\n const codeRunner = codeRunnerFactory(codeFiles, {\n dry,\n parser: 'ts',\n runInBand: true,\n babel: true,\n extensions: constants.PROJECT_CODE_EXTENSIONS.join(','),\n // Don't output any log coming from the runner\n print: false,\n silent: true,\n verbose: 0,\n });\n\n const jsonRunner = jsonRunnerFactory(jsonFiles, { dry, cwd: this.cwd });\n\n return [codeRunner, jsonRunner] as const;\n }\n\n private refreshPackageJSON(): void {\n const packageJSONPath = path.join(this.cwd, constants.PROJECT_PACKAGE_JSON);\n\n try {\n fse.accessSync(packageJSONPath);\n } catch {\n throw new Error(`Could not find a ${constants.PROJECT_PACKAGE_JSON} file in ${this.cwd}`);\n }\n\n const packageJSONBuffer = fse.readFileSync(packageJSONPath);\n\n this.packageJSONPath = packageJSONPath;\n this.packageJSON = JSON.parse(packageJSONBuffer.toString());\n }\n\n private refreshProjectFiles(): void {\n const scanner = fileScannerFactory(this.cwd);\n\n this.files = scanner.scan(this.paths);\n }\n}\n\nexport class AppProject extends Project {\n public strapiVersion!: Version.SemVer;\n\n readonly type = 'application' as const satisfies ProjectType;\n\n /**\n * Returns an array of allowed file paths for a Strapi application\n *\n * The resulting paths include app default files and the root package.json file.\n */\n private static get paths() {\n const allowedRootPaths = formatGlobCollectionPattern(constants.PROJECT_APP_ALLOWED_ROOT_PATHS);\n const allowedExtensions = formatGlobCollectionPattern(constants.PROJECT_ALLOWED_EXTENSIONS);\n\n return [\n // App default files\n `./${allowedRootPaths}/**/*.${allowedExtensions}`,\n `!./**/node_modules/**/*`,\n `!./**/dist/**/*`,\n // Root package.json file\n constants.PROJECT_PACKAGE_JSON,\n ];\n }\n\n constructor(cwd: string) {\n super(cwd, { paths: AppProject.paths });\n this.refreshStrapiVersion();\n }\n\n refresh() {\n super.refresh();\n this.refreshStrapiVersion();\n return this;\n }\n\n private refreshStrapiVersion(): void {\n this.strapiVersion =\n // First try to get the strapi version from the package.json dependencies\n this.findStrapiVersionFromProjectPackageJSON() ??\n // If the version found is not a valid SemVer, get the Strapi version from the installed package\n this.findLocallyInstalledStrapiVersion();\n }\n\n private findStrapiVersionFromProjectPackageJSON(): Version.SemVer | undefined {\n const projectName = this.packageJSON.name;\n const version = this.packageJSON.dependencies?.[constants.STRAPI_DEPENDENCY_NAME];\n\n if (version === undefined) {\n throw new Error(\n `No version of ${constants.STRAPI_DEPENDENCY_NAME} was found in ${projectName}. Are you in a valid Strapi project?`\n );\n }\n\n const isValidSemVer = isLiteralSemVer(version) && semver.valid(version) === version;\n\n // We return undefined only if a strapi/strapi version is found, but it's not semver compliant\n return isValidSemVer ? semVerFactory(version) : undefined;\n }\n\n private findLocallyInstalledStrapiVersion(): Version.SemVer {\n const packageSearchText = `${constants.STRAPI_DEPENDENCY_NAME}/package.json`;\n\n let strapiPackageJSONPath: string;\n let strapiPackageJSON: MinimalPackageJSON;\n\n try {\n strapiPackageJSONPath = require.resolve(packageSearchText, { paths: [this.cwd] });\n strapiPackageJSON = require(strapiPackageJSONPath);\n\n assert(typeof strapiPackageJSON === 'object');\n } catch {\n throw new Error(\n `Cannot resolve module \"${constants.STRAPI_DEPENDENCY_NAME}\" from paths [${this.cwd}]`\n );\n }\n\n const strapiVersion = strapiPackageJSON.version;\n\n if (!isValidSemVer(strapiVersion)) {\n throw new Error(\n `Invalid ${constants.STRAPI_DEPENDENCY_NAME} version found in ${strapiPackageJSONPath} (${strapiVersion})`\n );\n }\n\n return semVerFactory(strapiVersion);\n }\n}\n\nconst formatGlobCollectionPattern = (collection: string[]): string => {\n assert(\n collection.length > 0,\n 'Invalid pattern provided, the given collection needs at least 1 element'\n );\n\n return collection.length === 1 ? collection[0] : `{${collection}}`;\n};\n\nexport class PluginProject extends Project {\n readonly type = 'plugin' as const satisfies ProjectType;\n\n /**\n * Returns an array of allowed file paths for a Strapi plugin\n *\n * The resulting paths include plugin default files, the root package.json file, and plugin-specific files.\n */\n private static get paths() {\n const allowedRootPaths = formatGlobCollectionPattern(\n constants.PROJECT_PLUGIN_ALLOWED_ROOT_PATHS\n );\n const allowedExtensions = formatGlobCollectionPattern(constants.PROJECT_ALLOWED_EXTENSIONS);\n\n return [\n // Plugin default files\n `./${allowedRootPaths}/**/*.${allowedExtensions}`,\n `!./**/node_modules/**/*`,\n `!./**/dist/**/*`,\n // Root package.json file\n constants.PROJECT_PACKAGE_JSON,\n // Plugin root files\n ...constants.PROJECT_PLUGIN_ROOT_FILES,\n ];\n }\n\n constructor(cwd: string) {\n super(cwd, { paths: PluginProject.paths });\n }\n}\n\nconst isPlugin = (cwd: string) => {\n const packageJSONPath = path.join(cwd, constants.PROJECT_PACKAGE_JSON);\n\n try {\n fse.accessSync(packageJSONPath);\n } catch {\n throw new Error(`Could not find a ${constants.PROJECT_PACKAGE_JSON} file in ${cwd}`);\n }\n\n const packageJSONBuffer = fse.readFileSync(packageJSONPath);\n\n const packageJSON = JSON.parse(packageJSONBuffer.toString());\n\n return packageJSON?.strapi?.kind === 'plugin';\n};\n\n// TODO: make this async so we can use async file methods\nexport const projectFactory = (cwd: string) => {\n fse.accessSync(cwd);\n\n return isPlugin(cwd) ? new PluginProject(cwd) : new AppProject(cwd);\n};\n"],"names":["Project","getFilesByExtensions","extensions","files","filter","filePath","fileExtension","path","extname","includes","refresh","refreshPackageJSON","refreshProjectFiles","runCodemods","codemods","options","runners","createProjectCodemodsRunners","dry","reports","codemod","runner","valid","report","run","push","jsonExtensions","constants","map","ext","codeExtensions","jsonFiles","codeFiles","codeRunner","codeRunnerFactory","parser","runInBand","babel","join","print","silent","verbose","jsonRunner","jsonRunnerFactory","cwd","packageJSONPath","fse","accessSync","Error","packageJSONBuffer","readFileSync","packageJSON","JSON","parse","toString","scanner","fileScannerFactory","scan","paths","constructor","config","pathExistsSync","AppProject","allowedRootPaths","formatGlobCollectionPattern","allowedExtensions","refreshStrapiVersion","strapiVersion","findStrapiVersionFromProjectPackageJSON","findLocallyInstalledStrapiVersion","projectName","name","version","dependencies","undefined","isValidSemVer","isLiteralSemVer","semver","semVerFactory","packageSearchText","strapiPackageJSONPath","strapiPackageJSON","require","resolve","assert","type","collection","length","PluginProject","isPlugin","strapi","kind","projectFactory"],"mappings":";;;;;;;;;;;AAsBO,MAAMA,OAAAA,CAAAA;AAwBXC,IAAAA,oBAAAA,CAAqBC,UAA2B,EAAE;AAChD,QAAA,OAAO,IAAI,CAACC,KAAK,CAACC,MAAM,CAAC,CAACC,QAAAA,GAAAA;YACxB,MAAMC,aAAAA,GAAgBC,IAAKC,CAAAA,OAAO,CAACH,QAAAA,CAAAA;YAEnC,OAAOH,UAAAA,CAAWO,QAAQ,CAACH,aAAAA,CAAAA;AAC7B,SAAA,CAAA;AACF;IAEAI,OAAU,GAAA;AACR,QAAA,IAAI,CAACC,kBAAkB,EAAA;AACvB,QAAA,IAAI,CAACC,mBAAmB,EAAA;AAExB,QAAA,OAAO,IAAI;AACb;AAEA,IAAA,MAAMC,WAAYC,CAAAA,QAAsB,EAAEC,OAA2B,EAAE;AACrE,QAAA,MAAMC,UAAU,IAAI,CAACC,4BAA4B,CAACF,QAAQG,GAAG,CAAA;AAC7D,QAAA,MAAMC,UAAkC,EAAE;QAE1C,KAAK,MAAMC,WAAWN,QAAU,CAAA;YAC9B,KAAK,MAAMO,UAAUL,OAAS,CAAA;gBAC5B,IAAIK,MAAAA,CAAOC,KAAK,CAACF,OAAU,CAAA,EAAA;AACzB,oBAAA,MAAMG,MAAS,GAAA,MAAMF,MAAOG,CAAAA,GAAG,CAACJ,OAAAA,CAAAA;AAChCD,oBAAAA,OAAAA,CAAQM,IAAI,CAAC;AAAEL,wBAAAA,OAAAA;AAASG,wBAAAA;AAAO,qBAAA,CAAA;AACjC;AACF;AACF;QAEA,OAAOJ,OAAAA;AACT;IAEQF,4BAA6BC,CAAAA,GAAAA,GAAe,KAAK,EAAE;AACzD,QAAA,MAAMQ,cAAiBC,GAAAA,uBAAiC,CAACC,GAAG,CAAgB,CAACC,GAAAA,GAAQ,CAAC,CAAC,EAAEA,GAAAA,CAAI,CAAC,CAAA;AAC9F,QAAA,MAAMC,cAAiBH,GAAAA,uBAAiC,CAACC,GAAG,CAAgB,CAACC,GAAAA,GAAQ,CAAC,CAAC,EAAEA,GAAAA,CAAI,CAAC,CAAA;AAE9F,QAAA,MAAME,SAAY,GAAA,IAAI,CAAC9B,oBAAoB,CAACyB,cAAAA,CAAAA;AAC5C,QAAA,MAAMM,SAAY,GAAA,IAAI,CAAC/B,oBAAoB,CAAC6B,cAAAA,CAAAA;QAE5C,MAAMG,UAAAA,GAAaC,kBAAkBF,SAAW,EAAA;AAC9Cd,YAAAA,GAAAA;YACAiB,MAAQ,EAAA,IAAA;YACRC,SAAW,EAAA,IAAA;YACXC,KAAO,EAAA,IAAA;AACPnC,YAAAA,UAAAA,EAAYyB,uBAAiC,CAACW,IAAI,CAAC,GAAA,CAAA;;YAEnDC,KAAO,EAAA,KAAA;YACPC,MAAQ,EAAA,IAAA;YACRC,OAAS,EAAA;AACX,SAAA,CAAA;QAEA,MAAMC,UAAAA,GAAaC,kBAAkBZ,SAAW,EAAA;AAAEb,YAAAA,GAAAA;YAAK0B,GAAK,EAAA,IAAI,CAACA;AAAI,SAAA,CAAA;QAErE,OAAO;AAACX,YAAAA,UAAAA;AAAYS,YAAAA;AAAW,SAAA;AACjC;IAEQ/B,kBAA2B,GAAA;QACjC,MAAMkC,eAAAA,GAAkBtC,KAAK+B,IAAI,CAAC,IAAI,CAACM,GAAG,EAAEjB,oBAA8B,CAAA;QAE1E,IAAI;AACFmB,YAAAA,GAAAA,CAAIC,UAAU,CAACF,eAAAA,CAAAA;AACjB,SAAA,CAAE,OAAM;AACN,YAAA,MAAM,IAAIG,KAAAA,CAAM,CAAC,iBAAiB,EAAErB,oBAA8B,CAAC,SAAS,EAAE,IAAI,CAACiB,GAAG,CAAC,CAAC,CAAA;AAC1F;QAEA,MAAMK,iBAAAA,GAAoBH,GAAII,CAAAA,YAAY,CAACL,eAAAA,CAAAA;QAE3C,IAAI,CAACA,eAAe,GAAGA,eAAAA;AACvB,QAAA,IAAI,CAACM,WAAW,GAAGC,KAAKC,KAAK,CAACJ,kBAAkBK,QAAQ,EAAA,CAAA;AAC1D;IAEQ1C,mBAA4B,GAAA;AAClC,QAAA,MAAM2C,OAAUC,GAAAA,kBAAAA,CAAmB,IAAI,CAACZ,GAAG,CAAA;QAE3C,IAAI,CAACzC,KAAK,GAAGoD,OAAAA,CAAQE,IAAI,CAAC,IAAI,CAACC,KAAK,CAAA;AACtC;IArFAC,WAAYf,CAAAA,GAAW,EAAEgB,MAAqB,CAAE;AAC9C,QAAA,IAAI,CAACd,GAAAA,CAAIe,cAAc,CAACjB,GAAM,CAAA,EAAA;AAC5B,YAAA,MAAM,IAAII,KAAM,CAAA,CAAC,2CAA2C,EAAEJ,GAAAA,CAAI,CAAC,CAAC,CAAA;AACtE;QAEA,IAAI,CAACA,GAAG,GAAGA,GAAAA;AACX,QAAA,IAAI,CAACc,KAAK,GAAGE,MAAAA,CAAOF,KAAK;AAEzB,QAAA,IAAI,CAAChD,OAAO,EAAA;AACd;AA6EF;AAEO,MAAMoD,UAAmB9D,SAAAA,OAAAA,CAAAA;AAK9B;;;;AAIC,MACD,WAAmB0D,KAAQ,GAAA;QACzB,MAAMK,gBAAAA,GAAmBC,2BAA4BrC,CAAAA,8BAAwC,CAAA;QAC7F,MAAMsC,iBAAAA,GAAoBD,2BAA4BrC,CAAAA,0BAAoC,CAAA;QAE1F,OAAO;;AAEL,YAAA,CAAC,EAAE,EAAEoC,gBAAAA,CAAiB,MAAM,EAAEE,kBAAkB,CAAC;AACjD,YAAA,CAAC,uBAAuB,CAAC;AACzB,YAAA,CAAC,eAAe,CAAC;;AAEjBtC,YAAAA;AACD,SAAA;AACH;IAOAjB,OAAU,GAAA;AACR,QAAA,KAAK,CAACA,OAAAA,EAAAA;AACN,QAAA,IAAI,CAACwD,oBAAoB,EAAA;AACzB,QAAA,OAAO,IAAI;AACb;IAEQA,oBAA6B,GAAA;QACnC,IAAI,CAACC,aAAa;QAEhB,IAAI,CAACC,uCAAuC,EAAA;AAE5C,QAAA,IAAI,CAACC,iCAAiC,EAAA;AAC1C;IAEQD,uCAAsE,GAAA;AAC5E,QAAA,MAAME,WAAc,GAAA,IAAI,CAACnB,WAAW,CAACoB,IAAI;QACzC,MAAMC,OAAAA,GAAU,IAAI,CAACrB,WAAW,CAACsB,YAAY,GAAG9C,sBAAgC,CAAC;AAEjF,QAAA,IAAI6C,YAAYE,SAAW,EAAA;AACzB,YAAA,MAAM,IAAI1B,KAAAA,CACR,CAAC,cAAc,EAAErB,sBAAgC,CAAC,cAAc,EAAE2C,WAAY,CAAA,oCAAoC,CAAC,CAAA;AAEvH;AAEA,QAAA,MAAMK,gBAAgBC,eAAgBJ,CAAAA,OAAAA,CAAAA,IAAYK,MAAOvD,CAAAA,KAAK,CAACkD,OAAaA,CAAAA,KAAAA,OAAAA;;QAG5E,OAAOG,aAAAA,GAAgBG,cAAcN,OAAWE,CAAAA,GAAAA,SAAAA;AAClD;IAEQL,iCAAoD,GAAA;AAC1D,QAAA,MAAMU,oBAAoB,CAAC,EAAEpD,sBAAgC,CAAC,aAAa,CAAC;QAE5E,IAAIqD,qBAAAA;QACJ,IAAIC,iBAAAA;QAEJ,IAAI;YACFD,qBAAwBE,GAAAA,OAAAA,CAAQC,OAAO,CAACJ,iBAAmB,EAAA;gBAAErB,KAAO,EAAA;AAAC,oBAAA,IAAI,CAACd;AAAI;AAAC,aAAA,CAAA;AAC/EqC,YAAAA,iBAAAA,GAAoBC,OAAQF,CAAAA,qBAAAA,CAAAA;AAE5BI,YAAAA,MAAAA,CAAO,OAAOH,iBAAsB,KAAA,QAAA,CAAA;AACtC,SAAA,CAAE,OAAM;AACN,YAAA,MAAM,IAAIjC,KAAAA,CACR,CAAC,uBAAuB,EAAErB,sBAAgC,CAAC,cAAc,EAAE,IAAI,CAACiB,GAAG,CAAC,CAAC,CAAC,CAAA;AAE1F;QAEA,MAAMuB,aAAAA,GAAgBc,kBAAkBT,OAAO;QAE/C,IAAI,CAACG,cAAcR,aAAgB,CAAA,EAAA;AACjC,YAAA,MAAM,IAAInB,KAAAA,CACR,CAAC,QAAQ,EAAErB,sBAAgC,CAAC,kBAAkB,EAAEqD,qBAAsB,CAAA,EAAE,EAAEb,aAAAA,CAAc,CAAC,CAAC,CAAA;AAE9G;AAEA,QAAA,OAAOW,aAAcX,CAAAA,aAAAA,CAAAA;AACvB;AA7DAR,IAAAA,WAAAA,CAAYf,GAAW,CAAE;AACvB,QAAA,KAAK,CAACA,GAAK,EAAA;AAAEc,YAAAA,KAAAA,EAAOI,WAAWJ;AAAM,SAAA,CAAA;aAtB9B2B,IAAO,GAAA,aAAA;AAuBd,QAAA,IAAI,CAACnB,oBAAoB,EAAA;AAC3B;AA2DF;AAEA,MAAMF,8BAA8B,CAACsB,UAAAA,GAAAA;IACnCF,MACEE,CAAAA,UAAAA,CAAWC,MAAM,GAAG,CACpB,EAAA,yEAAA,CAAA;AAGF,IAAA,OAAOD,UAAWC,CAAAA,MAAM,KAAK,CAAA,GAAID,UAAU,CAAC,CAAE,CAAA,GAAG,CAAC,CAAC,EAAEA,UAAAA,CAAW,CAAC,CAAC;AACpE,CAAA;AAEO,MAAME,aAAsBxF,SAAAA,OAAAA,CAAAA;AAGjC;;;;AAIC,MACD,WAAmB0D,KAAQ,GAAA;QACzB,MAAMK,gBAAAA,GAAmBC,2BACvBrC,CAAAA,iCAA2C,CAAA;QAE7C,MAAMsC,iBAAAA,GAAoBD,2BAA4BrC,CAAAA,0BAAoC,CAAA;QAE1F,OAAO;;AAEL,YAAA,CAAC,EAAE,EAAEoC,gBAAAA,CAAiB,MAAM,EAAEE,kBAAkB,CAAC;AACjD,YAAA,CAAC,uBAAuB,CAAC;AACzB,YAAA,CAAC,eAAe,CAAC;;AAEjBtC,YAAAA,oBAA8B;;AAE3BA,YAAAA,GAAAA;AACJ,SAAA;AACH;AAEAgC,IAAAA,WAAAA,CAAYf,GAAW,CAAE;AACvB,QAAA,KAAK,CAACA,GAAK,EAAA;AAAEc,YAAAA,KAAAA,EAAO8B,cAAc9B;AAAM,SAAA,CAAA;aA1BjC2B,IAAO,GAAA,QAAA;AA2BhB;AACF;AAEA,MAAMI,WAAW,CAAC7C,GAAAA,GAAAA;AAChB,IAAA,MAAMC,kBAAkBtC,IAAK+B,CAAAA,IAAI,CAACM,GAAAA,EAAKjB,oBAA8B,CAAA;IAErE,IAAI;AACFmB,QAAAA,GAAAA,CAAIC,UAAU,CAACF,eAAAA,CAAAA;AACjB,KAAA,CAAE,OAAM;QACN,MAAM,IAAIG,KAAM,CAAA,CAAC,iBAAiB,EAAErB,oBAA8B,CAAC,SAAS,EAAEiB,GAAAA,CAAI,CAAC,CAAA;AACrF;IAEA,MAAMK,iBAAAA,GAAoBH,GAAII,CAAAA,YAAY,CAACL,eAAAA,CAAAA;AAE3C,IAAA,MAAMM,WAAcC,GAAAA,IAAAA,CAAKC,KAAK,CAACJ,kBAAkBK,QAAQ,EAAA,CAAA;IAEzD,OAAOH,WAAAA,EAAauC,QAAQC,IAAS,KAAA,QAAA;AACvC,CAAA;AAEA;AACO,MAAMC,iBAAiB,CAAChD,GAAAA,GAAAA;AAC7BE,IAAAA,GAAAA,CAAIC,UAAU,CAACH,GAAAA,CAAAA;AAEf,IAAA,OAAO6C,SAAS7C,GAAO,CAAA,GAAA,IAAI4C,aAAc5C,CAAAA,GAAAA,CAAAA,GAAO,IAAIkB,UAAWlB,CAAAA,GAAAA,CAAAA;AACjE;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var project = require('./project.js');
|
|
4
|
+
|
|
5
|
+
const isPluginProject = (project$1)=>{
|
|
6
|
+
return project$1 instanceof project.PluginProject;
|
|
7
|
+
};
|
|
8
|
+
function assertPluginProject(project) {
|
|
9
|
+
if (!isPluginProject(project)) {
|
|
10
|
+
throw new Error('Project is not a plugin');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const isApplicationProject = (project$1)=>{
|
|
14
|
+
return project$1 instanceof project.AppProject;
|
|
15
|
+
};
|
|
16
|
+
function assertAppProject(project) {
|
|
17
|
+
if (!isApplicationProject(project)) {
|
|
18
|
+
throw new Error('Project is not an application');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
exports.assertAppProject = assertAppProject;
|
|
23
|
+
exports.assertPluginProject = assertPluginProject;
|
|
24
|
+
exports.isApplicationProject = isApplicationProject;
|
|
25
|
+
exports.isPluginProject = isPluginProject;
|
|
26
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/modules/project/utils.ts"],"sourcesContent":["import { AppProject, PluginProject } from './project';\n\nexport const isPluginProject = (project: unknown): project is PluginProject => {\n return project instanceof PluginProject;\n};\n\nexport function assertPluginProject(project: unknown): asserts project is PluginProject {\n if (!isPluginProject(project)) {\n throw new Error('Project is not a plugin');\n }\n}\n\nexport const isApplicationProject = (project: unknown): project is AppProject => {\n return project instanceof AppProject;\n};\n\nexport function assertAppProject(project: unknown): asserts project is AppProject {\n if (!isApplicationProject(project)) {\n throw new Error('Project is not an application');\n }\n}\n"],"names":["isPluginProject","project","PluginProject","assertPluginProject","Error","isApplicationProject","AppProject","assertAppProject"],"mappings":";;;;AAEO,MAAMA,kBAAkB,CAACC,SAAAA,GAAAA;AAC9B,IAAA,OAAOA,SAAmBC,YAAAA,qBAAAA;AAC5B;AAEO,SAASC,oBAAoBF,OAAgB,EAAA;IAClD,IAAI,CAACD,gBAAgBC,OAAU,CAAA,EAAA;AAC7B,QAAA,MAAM,IAAIG,KAAM,CAAA,yBAAA,CAAA;AAClB;AACF;AAEO,MAAMC,uBAAuB,CAACJ,SAAAA,GAAAA;AACnC,IAAA,OAAOA,SAAmBK,YAAAA,kBAAAA;AAC5B;AAEO,SAASC,iBAAiBN,OAAgB,EAAA;IAC/C,IAAI,CAACI,qBAAqBJ,OAAU,CAAA,EAAA;AAClC,QAAA,MAAM,IAAIG,KAAM,CAAA,+BAAA,CAAA;AAClB;AACF;;;;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { PluginProject, AppProject } from './project.mjs';
|
|
2
|
+
|
|
3
|
+
const isPluginProject = (project)=>{
|
|
4
|
+
return project instanceof PluginProject;
|
|
5
|
+
};
|
|
6
|
+
function assertPluginProject(project) {
|
|
7
|
+
if (!isPluginProject(project)) {
|
|
8
|
+
throw new Error('Project is not a plugin');
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
const isApplicationProject = (project)=>{
|
|
12
|
+
return project instanceof AppProject;
|
|
13
|
+
};
|
|
14
|
+
function assertAppProject(project) {
|
|
15
|
+
if (!isApplicationProject(project)) {
|
|
16
|
+
throw new Error('Project is not an application');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { assertAppProject, assertPluginProject, isApplicationProject, isPluginProject };
|
|
21
|
+
//# sourceMappingURL=utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.mjs","sources":["../../../../src/modules/project/utils.ts"],"sourcesContent":["import { AppProject, PluginProject } from './project';\n\nexport const isPluginProject = (project: unknown): project is PluginProject => {\n return project instanceof PluginProject;\n};\n\nexport function assertPluginProject(project: unknown): asserts project is PluginProject {\n if (!isPluginProject(project)) {\n throw new Error('Project is not a plugin');\n }\n}\n\nexport const isApplicationProject = (project: unknown): project is AppProject => {\n return project instanceof AppProject;\n};\n\nexport function assertAppProject(project: unknown): asserts project is AppProject {\n if (!isApplicationProject(project)) {\n throw new Error('Project is not an application');\n }\n}\n"],"names":["isPluginProject","project","PluginProject","assertPluginProject","Error","isApplicationProject","AppProject","assertAppProject"],"mappings":";;AAEO,MAAMA,kBAAkB,CAACC,OAAAA,GAAAA;AAC9B,IAAA,OAAOA,OAAmBC,YAAAA,aAAAA;AAC5B;AAEO,SAASC,oBAAoBF,OAAgB,EAAA;IAClD,IAAI,CAACD,gBAAgBC,OAAU,CAAA,EAAA;AAC7B,QAAA,MAAM,IAAIG,KAAM,CAAA,yBAAA,CAAA;AAClB;AACF;AAEO,MAAMC,uBAAuB,CAACJ,OAAAA,GAAAA;AACnC,IAAA,OAAOA,OAAmBK,YAAAA,UAAAA;AAC5B;AAEO,SAASC,iBAAiBN,OAAgB,EAAA;IAC/C,IAAI,CAACI,qBAAqBJ,OAAU,CAAA,EAAA;AAClC,QAAA,MAAM,IAAIG,KAAM,CAAA,+BAAA,CAAA;AAClB;AACF;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const codemodReportFactory = (codemod, report)=>({
|
|
4
|
+
codemod,
|
|
5
|
+
report
|
|
6
|
+
});
|
|
7
|
+
const reportFactory = (report)=>({
|
|
8
|
+
...report
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
exports.codemodReportFactory = codemodReportFactory;
|
|
12
|
+
exports.reportFactory = reportFactory;
|
|
13
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sources":["../../../../src/modules/report/report.ts"],"sourcesContent":["import type { Codemod } from '../codemod';\n\nimport type { CodemodReport, Report } from './types';\n\nexport const codemodReportFactory = (codemod: Codemod.Codemod, report: Report): CodemodReport => ({\n codemod,\n report,\n});\n\nexport const reportFactory = (report: Report): Report => ({ ...report });\n"],"names":["codemodReportFactory","codemod","report","reportFactory"],"mappings":";;AAIaA,MAAAA,oBAAAA,GAAuB,CAACC,OAAAA,EAA0BC,UAAmC;AAChGD,QAAAA,OAAAA;AACAC,QAAAA;AACF,KAAA;AAEaC,MAAAA,aAAAA,GAAgB,CAACD,MAAAA,IAA4B;AAAE,QAAA,GAAGA;AAAO,KAAA;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.mjs","sources":["../../../../src/modules/report/report.ts"],"sourcesContent":["import type { Codemod } from '../codemod';\n\nimport type { CodemodReport, Report } from './types';\n\nexport const codemodReportFactory = (codemod: Codemod.Codemod, report: Report): CodemodReport => ({\n codemod,\n report,\n});\n\nexport const reportFactory = (report: Report): Report => ({ ...report });\n"],"names":["codemodReportFactory","codemod","report","reportFactory"],"mappings":"AAIaA,MAAAA,oBAAAA,GAAuB,CAACC,OAAAA,EAA0BC,UAAmC;AAChGD,QAAAA,OAAAA;AACAC,QAAAA;AACF,KAAA;AAEaC,MAAAA,aAAAA,GAAgB,CAACD,MAAAA,IAA4B;AAAE,QAAA,GAAGA;AAAO,KAAA;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
class Requirement {
|
|
4
|
+
setChildren(children) {
|
|
5
|
+
this.children = children;
|
|
6
|
+
return this;
|
|
7
|
+
}
|
|
8
|
+
addChild(child) {
|
|
9
|
+
this.children.push(child);
|
|
10
|
+
return this;
|
|
11
|
+
}
|
|
12
|
+
asOptional() {
|
|
13
|
+
const newInstance = requirementFactory(this.name, this.testCallback, false);
|
|
14
|
+
newInstance.setChildren(this.children);
|
|
15
|
+
return newInstance;
|
|
16
|
+
}
|
|
17
|
+
asRequired() {
|
|
18
|
+
const newInstance = requirementFactory(this.name, this.testCallback, true);
|
|
19
|
+
newInstance.setChildren(this.children);
|
|
20
|
+
return newInstance;
|
|
21
|
+
}
|
|
22
|
+
async test(context) {
|
|
23
|
+
try {
|
|
24
|
+
await this.testCallback?.(context);
|
|
25
|
+
return ok();
|
|
26
|
+
} catch (e) {
|
|
27
|
+
if (e instanceof Error) {
|
|
28
|
+
return errored(e);
|
|
29
|
+
}
|
|
30
|
+
if (typeof e === 'string') {
|
|
31
|
+
return errored(new Error(e));
|
|
32
|
+
}
|
|
33
|
+
return errored(new Error('Unknown error'));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
constructor(name, testCallback, isRequired){
|
|
37
|
+
this.name = name;
|
|
38
|
+
this.testCallback = testCallback;
|
|
39
|
+
this.isRequired = isRequired ?? true;
|
|
40
|
+
this.children = [];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const ok = ()=>({
|
|
44
|
+
pass: true,
|
|
45
|
+
error: null
|
|
46
|
+
});
|
|
47
|
+
const errored = (error)=>({
|
|
48
|
+
pass: false,
|
|
49
|
+
error
|
|
50
|
+
});
|
|
51
|
+
const requirementFactory = (name, testCallback, isRequired)=>new Requirement(name, testCallback, isRequired);
|
|
52
|
+
|
|
53
|
+
exports.Requirement = Requirement;
|
|
54
|
+
exports.requirementFactory = requirementFactory;
|
|
55
|
+
//# sourceMappingURL=requirement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirement.js","sources":["../../../../src/modules/requirement/requirement.ts"],"sourcesContent":["import type {\n Requirement as RequirementInterface,\n RequirementTestCallback,\n TestContext,\n TestResult,\n} from './types';\n\nexport class Requirement implements RequirementInterface {\n readonly isRequired: boolean;\n\n readonly name: string;\n\n readonly testCallback: RequirementTestCallback | null;\n\n children: RequirementInterface[];\n\n constructor(name: string, testCallback: RequirementTestCallback | null, isRequired?: boolean) {\n this.name = name;\n this.testCallback = testCallback;\n this.isRequired = isRequired ?? true;\n this.children = [];\n }\n\n setChildren(children: RequirementInterface[]) {\n this.children = children;\n return this;\n }\n\n addChild(child: RequirementInterface) {\n this.children.push(child);\n return this;\n }\n\n asOptional() {\n const newInstance = requirementFactory(this.name, this.testCallback, false);\n\n newInstance.setChildren(this.children);\n\n return newInstance;\n }\n\n asRequired() {\n const newInstance = requirementFactory(this.name, this.testCallback, true);\n\n newInstance.setChildren(this.children);\n\n return newInstance;\n }\n\n async test(context: TestContext) {\n try {\n await this.testCallback?.(context);\n return ok();\n } catch (e) {\n if (e instanceof Error) {\n return errored(e);\n }\n\n if (typeof e === 'string') {\n return errored(new Error(e));\n }\n\n return errored(new Error('Unknown error'));\n }\n }\n}\n\nconst ok = (): TestResult => ({ pass: true, error: null });\n\nconst errored = (error: Error): TestResult => ({ pass: false, error });\n\nexport const requirementFactory = (\n name: string,\n testCallback: RequirementTestCallback | null,\n isRequired?: boolean\n) => new Requirement(name, testCallback, isRequired);\n"],"names":["Requirement","setChildren","children","addChild","child","push","asOptional","newInstance","requirementFactory","name","testCallback","asRequired","test","context","ok","e","Error","errored","constructor","isRequired","pass","error"],"mappings":";;AAOO,MAAMA,WAAAA,CAAAA;AAgBXC,IAAAA,WAAAA,CAAYC,QAAgC,EAAE;QAC5C,IAAI,CAACA,QAAQ,GAAGA,QAAAA;AAChB,QAAA,OAAO,IAAI;AACb;AAEAC,IAAAA,QAAAA,CAASC,KAA2B,EAAE;AACpC,QAAA,IAAI,CAACF,QAAQ,CAACG,IAAI,CAACD,KAAAA,CAAAA;AACnB,QAAA,OAAO,IAAI;AACb;IAEAE,UAAa,GAAA;QACX,MAAMC,WAAAA,GAAcC,mBAAmB,IAAI,CAACC,IAAI,EAAE,IAAI,CAACC,YAAY,EAAE,KAAA,CAAA;AAErEH,QAAAA,WAAAA,CAAYN,WAAW,CAAC,IAAI,CAACC,QAAQ,CAAA;QAErC,OAAOK,WAAAA;AACT;IAEAI,UAAa,GAAA;QACX,MAAMJ,WAAAA,GAAcC,mBAAmB,IAAI,CAACC,IAAI,EAAE,IAAI,CAACC,YAAY,EAAE,IAAA,CAAA;AAErEH,QAAAA,WAAAA,CAAYN,WAAW,CAAC,IAAI,CAACC,QAAQ,CAAA;QAErC,OAAOK,WAAAA;AACT;IAEA,MAAMK,IAAAA,CAAKC,OAAoB,EAAE;QAC/B,IAAI;YACF,MAAM,IAAI,CAACH,YAAY,GAAGG,OAAAA,CAAAA;YAC1B,OAAOC,EAAAA,EAAAA;AACT,SAAA,CAAE,OAAOC,CAAG,EAAA;AACV,YAAA,IAAIA,aAAaC,KAAO,EAAA;AACtB,gBAAA,OAAOC,OAAQF,CAAAA,CAAAA,CAAAA;AACjB;YAEA,IAAI,OAAOA,MAAM,QAAU,EAAA;gBACzB,OAAOE,OAAAA,CAAQ,IAAID,KAAMD,CAAAA,CAAAA,CAAAA,CAAAA;AAC3B;YAEA,OAAOE,OAAAA,CAAQ,IAAID,KAAM,CAAA,eAAA,CAAA,CAAA;AAC3B;AACF;AAhDAE,IAAAA,WAAAA,CAAYT,IAAY,EAAEC,YAA4C,EAAES,UAAoB,CAAE;QAC5F,IAAI,CAACV,IAAI,GAAGA,IAAAA;QACZ,IAAI,CAACC,YAAY,GAAGA,YAAAA;QACpB,IAAI,CAACS,UAAU,GAAGA,UAAc,IAAA,IAAA;QAChC,IAAI,CAACjB,QAAQ,GAAG,EAAE;AACpB;AA4CF;AAEA,MAAMY,EAAAA,GAAK,KAAmB;QAAEM,IAAM,EAAA,IAAA;QAAMC,KAAO,EAAA;KAAK,CAAA;AAExD,MAAMJ,OAAAA,GAAU,CAACI,KAAAA,IAA8B;QAAED,IAAM,EAAA,KAAA;AAAOC,QAAAA;KAAM,CAAA;AAE7D,MAAMb,kBAAqB,GAAA,CAChCC,IACAC,EAAAA,YAAAA,EACAS,aACG,IAAInB,WAAAA,CAAYS,IAAMC,EAAAA,YAAAA,EAAcS,UAAY;;;;;"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
class Requirement {
|
|
2
|
+
setChildren(children) {
|
|
3
|
+
this.children = children;
|
|
4
|
+
return this;
|
|
5
|
+
}
|
|
6
|
+
addChild(child) {
|
|
7
|
+
this.children.push(child);
|
|
8
|
+
return this;
|
|
9
|
+
}
|
|
10
|
+
asOptional() {
|
|
11
|
+
const newInstance = requirementFactory(this.name, this.testCallback, false);
|
|
12
|
+
newInstance.setChildren(this.children);
|
|
13
|
+
return newInstance;
|
|
14
|
+
}
|
|
15
|
+
asRequired() {
|
|
16
|
+
const newInstance = requirementFactory(this.name, this.testCallback, true);
|
|
17
|
+
newInstance.setChildren(this.children);
|
|
18
|
+
return newInstance;
|
|
19
|
+
}
|
|
20
|
+
async test(context) {
|
|
21
|
+
try {
|
|
22
|
+
await this.testCallback?.(context);
|
|
23
|
+
return ok();
|
|
24
|
+
} catch (e) {
|
|
25
|
+
if (e instanceof Error) {
|
|
26
|
+
return errored(e);
|
|
27
|
+
}
|
|
28
|
+
if (typeof e === 'string') {
|
|
29
|
+
return errored(new Error(e));
|
|
30
|
+
}
|
|
31
|
+
return errored(new Error('Unknown error'));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
constructor(name, testCallback, isRequired){
|
|
35
|
+
this.name = name;
|
|
36
|
+
this.testCallback = testCallback;
|
|
37
|
+
this.isRequired = isRequired ?? true;
|
|
38
|
+
this.children = [];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const ok = ()=>({
|
|
42
|
+
pass: true,
|
|
43
|
+
error: null
|
|
44
|
+
});
|
|
45
|
+
const errored = (error)=>({
|
|
46
|
+
pass: false,
|
|
47
|
+
error
|
|
48
|
+
});
|
|
49
|
+
const requirementFactory = (name, testCallback, isRequired)=>new Requirement(name, testCallback, isRequired);
|
|
50
|
+
|
|
51
|
+
export { Requirement, requirementFactory };
|
|
52
|
+
//# sourceMappingURL=requirement.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirement.mjs","sources":["../../../../src/modules/requirement/requirement.ts"],"sourcesContent":["import type {\n Requirement as RequirementInterface,\n RequirementTestCallback,\n TestContext,\n TestResult,\n} from './types';\n\nexport class Requirement implements RequirementInterface {\n readonly isRequired: boolean;\n\n readonly name: string;\n\n readonly testCallback: RequirementTestCallback | null;\n\n children: RequirementInterface[];\n\n constructor(name: string, testCallback: RequirementTestCallback | null, isRequired?: boolean) {\n this.name = name;\n this.testCallback = testCallback;\n this.isRequired = isRequired ?? true;\n this.children = [];\n }\n\n setChildren(children: RequirementInterface[]) {\n this.children = children;\n return this;\n }\n\n addChild(child: RequirementInterface) {\n this.children.push(child);\n return this;\n }\n\n asOptional() {\n const newInstance = requirementFactory(this.name, this.testCallback, false);\n\n newInstance.setChildren(this.children);\n\n return newInstance;\n }\n\n asRequired() {\n const newInstance = requirementFactory(this.name, this.testCallback, true);\n\n newInstance.setChildren(this.children);\n\n return newInstance;\n }\n\n async test(context: TestContext) {\n try {\n await this.testCallback?.(context);\n return ok();\n } catch (e) {\n if (e instanceof Error) {\n return errored(e);\n }\n\n if (typeof e === 'string') {\n return errored(new Error(e));\n }\n\n return errored(new Error('Unknown error'));\n }\n }\n}\n\nconst ok = (): TestResult => ({ pass: true, error: null });\n\nconst errored = (error: Error): TestResult => ({ pass: false, error });\n\nexport const requirementFactory = (\n name: string,\n testCallback: RequirementTestCallback | null,\n isRequired?: boolean\n) => new Requirement(name, testCallback, isRequired);\n"],"names":["Requirement","setChildren","children","addChild","child","push","asOptional","newInstance","requirementFactory","name","testCallback","asRequired","test","context","ok","e","Error","errored","constructor","isRequired","pass","error"],"mappings":"AAOO,MAAMA,WAAAA,CAAAA;AAgBXC,IAAAA,WAAAA,CAAYC,QAAgC,EAAE;QAC5C,IAAI,CAACA,QAAQ,GAAGA,QAAAA;AAChB,QAAA,OAAO,IAAI;AACb;AAEAC,IAAAA,QAAAA,CAASC,KAA2B,EAAE;AACpC,QAAA,IAAI,CAACF,QAAQ,CAACG,IAAI,CAACD,KAAAA,CAAAA;AACnB,QAAA,OAAO,IAAI;AACb;IAEAE,UAAa,GAAA;QACX,MAAMC,WAAAA,GAAcC,mBAAmB,IAAI,CAACC,IAAI,EAAE,IAAI,CAACC,YAAY,EAAE,KAAA,CAAA;AAErEH,QAAAA,WAAAA,CAAYN,WAAW,CAAC,IAAI,CAACC,QAAQ,CAAA;QAErC,OAAOK,WAAAA;AACT;IAEAI,UAAa,GAAA;QACX,MAAMJ,WAAAA,GAAcC,mBAAmB,IAAI,CAACC,IAAI,EAAE,IAAI,CAACC,YAAY,EAAE,IAAA,CAAA;AAErEH,QAAAA,WAAAA,CAAYN,WAAW,CAAC,IAAI,CAACC,QAAQ,CAAA;QAErC,OAAOK,WAAAA;AACT;IAEA,MAAMK,IAAAA,CAAKC,OAAoB,EAAE;QAC/B,IAAI;YACF,MAAM,IAAI,CAACH,YAAY,GAAGG,OAAAA,CAAAA;YAC1B,OAAOC,EAAAA,EAAAA;AACT,SAAA,CAAE,OAAOC,CAAG,EAAA;AACV,YAAA,IAAIA,aAAaC,KAAO,EAAA;AACtB,gBAAA,OAAOC,OAAQF,CAAAA,CAAAA,CAAAA;AACjB;YAEA,IAAI,OAAOA,MAAM,QAAU,EAAA;gBACzB,OAAOE,OAAAA,CAAQ,IAAID,KAAMD,CAAAA,CAAAA,CAAAA,CAAAA;AAC3B;YAEA,OAAOE,OAAAA,CAAQ,IAAID,KAAM,CAAA,eAAA,CAAA,CAAA;AAC3B;AACF;AAhDAE,IAAAA,WAAAA,CAAYT,IAAY,EAAEC,YAA4C,EAAES,UAAoB,CAAE;QAC5F,IAAI,CAACV,IAAI,GAAGA,IAAAA;QACZ,IAAI,CAACC,YAAY,GAAGA,YAAAA;QACpB,IAAI,CAACS,UAAU,GAAGA,UAAc,IAAA,IAAA;QAChC,IAAI,CAACjB,QAAQ,GAAG,EAAE;AACpB;AA4CF;AAEA,MAAMY,EAAAA,GAAK,KAAmB;QAAEM,IAAM,EAAA,IAAA;QAAMC,KAAO,EAAA;KAAK,CAAA;AAExD,MAAMJ,OAAAA,GAAU,CAACI,KAAAA,IAA8B;QAAED,IAAM,EAAA,KAAA;AAAOC,QAAAA;KAAM,CAAA;AAE7D,MAAMb,kBAAqB,GAAA,CAChCC,IACAC,EAAAA,YAAAA,EACAS,aACG,IAAInB,WAAAA,CAAYS,IAAMC,EAAAA,YAAAA,EAAcS,UAAY;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var Runner = require('jscodeshift/src/Runner');
|
|
4
|
+
var runner = require('../runner.js');
|
|
5
|
+
|
|
6
|
+
class CodeRunner extends runner.AbstractRunner {
|
|
7
|
+
valid(codemod) {
|
|
8
|
+
return codemod.kind === 'code';
|
|
9
|
+
}
|
|
10
|
+
constructor(...args){
|
|
11
|
+
super(...args);
|
|
12
|
+
this.runner = Runner.run;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const codeRunnerFactory = (paths, configuration)=>{
|
|
16
|
+
return new CodeRunner(paths, configuration);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
exports.CodeRunner = CodeRunner;
|
|
20
|
+
exports.codeRunnerFactory = codeRunnerFactory;
|
|
21
|
+
//# sourceMappingURL=code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code.js","sources":["../../../../../src/modules/runner/code/code.ts"],"sourcesContent":["import { run as jscodeshift } from 'jscodeshift/src/Runner';\n\nimport { AbstractRunner } from '../runner';\n\nimport type { Codemod } from '../../codemod';\nimport type { CodeRunnerConfiguration } from './types';\n\nexport class CodeRunner extends AbstractRunner<CodeRunnerConfiguration> {\n runner = jscodeshift;\n\n valid(codemod: Codemod.Codemod): boolean {\n return codemod.kind === 'code';\n }\n}\n\nexport const codeRunnerFactory = (paths: string[], configuration: CodeRunnerConfiguration) => {\n return new CodeRunner(paths, configuration);\n};\n"],"names":["CodeRunner","AbstractRunner","valid","codemod","kind","runner","jscodeshift","codeRunnerFactory","paths","configuration"],"mappings":";;;;;AAOO,MAAMA,UAAmBC,SAAAA,qBAAAA,CAAAA;AAG9BC,IAAAA,KAAAA,CAAMC,OAAwB,EAAW;QACvC,OAAOA,OAAAA,CAAQC,IAAI,KAAK,MAAA;AAC1B;;;aAJAC,MAASC,GAAAA,UAAAA;;AAKX;AAEO,MAAMC,iBAAoB,GAAA,CAACC,KAAiBC,EAAAA,aAAAA,GAAAA;IACjD,OAAO,IAAIT,WAAWQ,KAAOC,EAAAA,aAAAA,CAAAA;AAC/B;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { run } from 'jscodeshift/src/Runner';
|
|
2
|
+
import { AbstractRunner } from '../runner.mjs';
|
|
3
|
+
|
|
4
|
+
class CodeRunner extends AbstractRunner {
|
|
5
|
+
valid(codemod) {
|
|
6
|
+
return codemod.kind === 'code';
|
|
7
|
+
}
|
|
8
|
+
constructor(...args){
|
|
9
|
+
super(...args);
|
|
10
|
+
this.runner = run;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const codeRunnerFactory = (paths, configuration)=>{
|
|
14
|
+
return new CodeRunner(paths, configuration);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { CodeRunner, codeRunnerFactory };
|
|
18
|
+
//# sourceMappingURL=code.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code.mjs","sources":["../../../../../src/modules/runner/code/code.ts"],"sourcesContent":["import { run as jscodeshift } from 'jscodeshift/src/Runner';\n\nimport { AbstractRunner } from '../runner';\n\nimport type { Codemod } from '../../codemod';\nimport type { CodeRunnerConfiguration } from './types';\n\nexport class CodeRunner extends AbstractRunner<CodeRunnerConfiguration> {\n runner = jscodeshift;\n\n valid(codemod: Codemod.Codemod): boolean {\n return codemod.kind === 'code';\n }\n}\n\nexport const codeRunnerFactory = (paths: string[], configuration: CodeRunnerConfiguration) => {\n return new CodeRunner(paths, configuration);\n};\n"],"names":["CodeRunner","AbstractRunner","valid","codemod","kind","runner","jscodeshift","codeRunnerFactory","paths","configuration"],"mappings":";;;AAOO,MAAMA,UAAmBC,SAAAA,cAAAA,CAAAA;AAG9BC,IAAAA,KAAAA,CAAMC,OAAwB,EAAW;QACvC,OAAOA,OAAAA,CAAQC,IAAI,KAAK,MAAA;AAC1B;;;aAJAC,MAASC,GAAAA,GAAAA;;AAKX;AAEO,MAAMC,iBAAoB,GAAA,CAACC,KAAiBC,EAAAA,aAAAA,GAAAA;IACjD,OAAO,IAAIT,WAAWQ,KAAOC,EAAAA,aAAAA,CAAAA;AAC/B;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var runner = require('../runner.js');
|
|
4
|
+
var transform = require('./transform.js');
|
|
5
|
+
|
|
6
|
+
class JSONRunner extends runner.AbstractRunner {
|
|
7
|
+
valid(codemod) {
|
|
8
|
+
return codemod.kind === 'json';
|
|
9
|
+
}
|
|
10
|
+
constructor(...args){
|
|
11
|
+
super(...args);
|
|
12
|
+
this.runner = transform.transformJSON;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const jsonRunnerFactory = (paths, configuration)=>{
|
|
16
|
+
return new JSONRunner(paths, configuration);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
exports.JSONRunner = JSONRunner;
|
|
20
|
+
exports.jsonRunnerFactory = jsonRunnerFactory;
|
|
21
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sources":["../../../../../src/modules/runner/json/json.ts"],"sourcesContent":["import { AbstractRunner } from '../runner';\n\nimport { transformJSON } from './transform';\n\nimport type { Codemod } from '../../codemod';\nimport type { JSONRunnerConfiguration } from './types';\n\nexport class JSONRunner extends AbstractRunner<JSONRunnerConfiguration> {\n runner = transformJSON;\n\n valid(codemod: Codemod.Codemod): boolean {\n return codemod.kind === 'json';\n }\n}\n\nexport const jsonRunnerFactory = (paths: string[], configuration: JSONRunnerConfiguration) => {\n return new JSONRunner(paths, configuration);\n};\n"],"names":["JSONRunner","AbstractRunner","valid","codemod","kind","runner","transformJSON","jsonRunnerFactory","paths","configuration"],"mappings":";;;;;AAOO,MAAMA,UAAmBC,SAAAA,qBAAAA,CAAAA;AAG9BC,IAAAA,KAAAA,CAAMC,OAAwB,EAAW;QACvC,OAAOA,OAAAA,CAAQC,IAAI,KAAK,MAAA;AAC1B;;;aAJAC,MAASC,GAAAA,uBAAAA;;AAKX;AAEO,MAAMC,iBAAoB,GAAA,CAACC,KAAiBC,EAAAA,aAAAA,GAAAA;IACjD,OAAO,IAAIT,WAAWQ,KAAOC,EAAAA,aAAAA,CAAAA;AAC/B;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AbstractRunner } from '../runner.mjs';
|
|
2
|
+
import { transformJSON } from './transform.mjs';
|
|
3
|
+
|
|
4
|
+
class JSONRunner extends AbstractRunner {
|
|
5
|
+
valid(codemod) {
|
|
6
|
+
return codemod.kind === 'json';
|
|
7
|
+
}
|
|
8
|
+
constructor(...args){
|
|
9
|
+
super(...args);
|
|
10
|
+
this.runner = transformJSON;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const jsonRunnerFactory = (paths, configuration)=>{
|
|
14
|
+
return new JSONRunner(paths, configuration);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { JSONRunner, jsonRunnerFactory };
|
|
18
|
+
//# sourceMappingURL=json.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.mjs","sources":["../../../../../src/modules/runner/json/json.ts"],"sourcesContent":["import { AbstractRunner } from '../runner';\n\nimport { transformJSON } from './transform';\n\nimport type { Codemod } from '../../codemod';\nimport type { JSONRunnerConfiguration } from './types';\n\nexport class JSONRunner extends AbstractRunner<JSONRunnerConfiguration> {\n runner = transformJSON;\n\n valid(codemod: Codemod.Codemod): boolean {\n return codemod.kind === 'json';\n }\n}\n\nexport const jsonRunnerFactory = (paths: string[], configuration: JSONRunnerConfiguration) => {\n return new JSONRunner(paths, configuration);\n};\n"],"names":["JSONRunner","AbstractRunner","valid","codemod","kind","runner","transformJSON","jsonRunnerFactory","paths","configuration"],"mappings":";;;AAOO,MAAMA,UAAmBC,SAAAA,cAAAA,CAAAA;AAG9BC,IAAAA,KAAAA,CAAMC,OAAwB,EAAW;QACvC,OAAOA,OAAAA,CAAQC,IAAI,KAAK,MAAA;AAC1B;;;aAJAC,MAASC,GAAAA,aAAAA;;AAKX;AAEO,MAAMC,iBAAoB,GAAA,CAACC,KAAiBC,EAAAA,aAAAA,GAAAA;IACjD,OAAO,IAAIT,WAAWQ,KAAOC,EAAAA,aAAAA,CAAAA;AAC/B;;;;"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var assert = require('node:assert');
|
|
4
|
+
var fp = require('lodash/fp');
|
|
5
|
+
var node = require('esbuild-register/dist/node');
|
|
6
|
+
var transformApi = require('../../json/transform-api.js');
|
|
7
|
+
var file = require('../../json/file.js');
|
|
8
|
+
|
|
9
|
+
const transformJSON = async (codemodPath, paths, config)=>{
|
|
10
|
+
const { dry } = config;
|
|
11
|
+
const startTime = process.hrtime();
|
|
12
|
+
const report = {
|
|
13
|
+
ok: 0,
|
|
14
|
+
nochange: 0,
|
|
15
|
+
skip: 0,
|
|
16
|
+
error: 0,
|
|
17
|
+
timeElapsed: '',
|
|
18
|
+
stats: {}
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Why do we need to include node_modules (hookIgnoreNodeModules) and specify a matcher (hookMatcher) to esbuild?
|
|
22
|
+
*
|
|
23
|
+
* When using tools like npx or dlx, the execution context is different from when running the program in a local
|
|
24
|
+
* project. npx and dlx run the commands in a temporary installation, which is isolated from local project files.
|
|
25
|
+
*
|
|
26
|
+
* When hookIgnoreNodeModules is not specified (or set to true), esbuild-register instructs
|
|
27
|
+
* Pirates (https://github.com/danez/pirates) to not transpile any files that come from node_modules.
|
|
28
|
+
*
|
|
29
|
+
* Now, when using npx or dlx to run a script, its location can be seen as "external" because it's not part of
|
|
30
|
+
* the temporary environment where npx or dlx execute. Therefore, it's considered to be part of node_modules.
|
|
31
|
+
*
|
|
32
|
+
* Due to this, if hookIgnoreNodeModules is set to true or left unspecified,
|
|
33
|
+
* esbuild-register won't try to compile them upon require.
|
|
34
|
+
*
|
|
35
|
+
* hookMatcher is added to make sure we're not matching anything else than our codemod in external directories.
|
|
36
|
+
*/ const esbuildOptions = {
|
|
37
|
+
extensions: [
|
|
38
|
+
'.js',
|
|
39
|
+
'.mjs',
|
|
40
|
+
'.ts'
|
|
41
|
+
],
|
|
42
|
+
hookIgnoreNodeModules: false,
|
|
43
|
+
hookMatcher: fp.isEqual(codemodPath)
|
|
44
|
+
};
|
|
45
|
+
const { unregister } = node.register(esbuildOptions);
|
|
46
|
+
const module = require(codemodPath);
|
|
47
|
+
unregister();
|
|
48
|
+
const codemod = typeof module.default === 'function' ? module.default : module;
|
|
49
|
+
assert(typeof codemod === 'function', `Codemod must be a function. Found ${typeof codemod}`);
|
|
50
|
+
for (const path of paths){
|
|
51
|
+
try {
|
|
52
|
+
const json = await file.readJSON(path);
|
|
53
|
+
// Make sure the JSON value is a JSON object
|
|
54
|
+
assert(typeof json === 'object' && !Array.isArray(json) && json !== null);
|
|
55
|
+
// TODO: Optimize the API to limit parse/stringify operations
|
|
56
|
+
const file$1 = {
|
|
57
|
+
path,
|
|
58
|
+
json
|
|
59
|
+
};
|
|
60
|
+
const params = {
|
|
61
|
+
cwd: config.cwd,
|
|
62
|
+
json: transformApi.createJSONTransformAPI
|
|
63
|
+
};
|
|
64
|
+
const out = await codemod(file$1, params);
|
|
65
|
+
if (out === undefined) {
|
|
66
|
+
report.error += 1;
|
|
67
|
+
} else if (!fp.isEqual(json, out)) {
|
|
68
|
+
if (!dry) {
|
|
69
|
+
await file.saveJSON(path, out);
|
|
70
|
+
}
|
|
71
|
+
report.ok += 1;
|
|
72
|
+
} else {
|
|
73
|
+
report.nochange += 1;
|
|
74
|
+
}
|
|
75
|
+
} catch {
|
|
76
|
+
report.error += 1;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const endTime = process.hrtime(startTime);
|
|
80
|
+
report.timeElapsed = (endTime[0] + endTime[1] / 1e9).toFixed(3);
|
|
81
|
+
return report;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
exports.transformJSON = transformJSON;
|
|
85
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sources":["../../../../../src/modules/runner/json/transform.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\n\nimport assert from 'node:assert';\nimport { isEqual } from 'lodash/fp';\nimport { register } from 'esbuild-register/dist/node';\n\nimport { createJSONTransformAPI, readJSON, saveJSON } from '../../json';\n\nimport type { Report } from '../../report';\n\nimport type { JSONRunnerConfiguration, JSONSourceFile, JSONTransformParams } from './types';\n\nexport const transformJSON = async (\n codemodPath: string,\n paths: string[],\n config: JSONRunnerConfiguration\n): Promise<Report.Report> => {\n const { dry } = config;\n const startTime = process.hrtime();\n\n const report: Report.Report = {\n ok: 0,\n nochange: 0,\n skip: 0,\n error: 0,\n timeElapsed: '',\n stats: {},\n };\n\n /**\n * Why do we need to include node_modules (hookIgnoreNodeModules) and specify a matcher (hookMatcher) to esbuild?\n *\n * When using tools like npx or dlx, the execution context is different from when running the program in a local\n * project. npx and dlx run the commands in a temporary installation, which is isolated from local project files.\n *\n * When hookIgnoreNodeModules is not specified (or set to true), esbuild-register instructs\n * Pirates (https://github.com/danez/pirates) to not transpile any files that come from node_modules.\n *\n * Now, when using npx or dlx to run a script, its location can be seen as \"external\" because it's not part of\n * the temporary environment where npx or dlx execute. Therefore, it's considered to be part of node_modules.\n *\n * Due to this, if hookIgnoreNodeModules is set to true or left unspecified,\n * esbuild-register won't try to compile them upon require.\n *\n * hookMatcher is added to make sure we're not matching anything else than our codemod in external directories.\n */\n const esbuildOptions = {\n extensions: ['.js', '.mjs', '.ts'],\n hookIgnoreNodeModules: false,\n hookMatcher: isEqual(codemodPath),\n };\n const { unregister } = register(esbuildOptions);\n\n const module = require(codemodPath);\n\n unregister();\n\n const codemod = typeof module.default === 'function' ? module.default : module;\n\n assert(typeof codemod === 'function', `Codemod must be a function. Found ${typeof codemod}`);\n\n for (const path of paths) {\n try {\n const json = await readJSON(path);\n\n // Make sure the JSON value is a JSON object\n assert(typeof json === 'object' && !Array.isArray(json) && json !== null);\n\n // TODO: Optimize the API to limit parse/stringify operations\n const file: JSONSourceFile = { path, json };\n const params: JSONTransformParams = { cwd: config.cwd, json: createJSONTransformAPI };\n\n const out = await codemod(file, params);\n\n if (out === undefined) {\n report.error += 1;\n }\n // If the json object has modifications\n else if (!isEqual(json, out)) {\n if (!dry) {\n await saveJSON(path, out);\n }\n report.ok += 1;\n }\n // No changes\n else {\n report.nochange += 1;\n }\n } catch {\n report.error += 1;\n }\n }\n\n const endTime = process.hrtime(startTime);\n report.timeElapsed = (endTime[0] + endTime[1] / 1e9).toFixed(3);\n\n return report;\n};\n"],"names":["transformJSON","codemodPath","paths","config","dry","startTime","process","hrtime","report","ok","nochange","skip","error","timeElapsed","stats","esbuildOptions","extensions","hookIgnoreNodeModules","hookMatcher","isEqual","unregister","register","module","require","codemod","default","assert","path","json","readJSON","Array","isArray","file","params","cwd","createJSONTransformAPI","out","undefined","saveJSON","endTime","toFixed"],"mappings":";;;;;;;;AAYaA,MAAAA,aAAAA,GAAgB,OAC3BC,WAAAA,EACAC,KACAC,EAAAA,MAAAA,GAAAA;IAEA,MAAM,EAAEC,GAAG,EAAE,GAAGD,MAAAA;IAChB,MAAME,SAAAA,GAAYC,QAAQC,MAAM,EAAA;AAEhC,IAAA,MAAMC,MAAwB,GAAA;QAC5BC,EAAI,EAAA,CAAA;QACJC,QAAU,EAAA,CAAA;QACVC,IAAM,EAAA,CAAA;QACNC,KAAO,EAAA,CAAA;QACPC,WAAa,EAAA,EAAA;AACbC,QAAAA,KAAAA,EAAO;AACT,KAAA;AAEA;;;;;;;;;;;;;;;;AAgBC,MACD,MAAMC,cAAiB,GAAA;QACrBC,UAAY,EAAA;AAAC,YAAA,KAAA;AAAO,YAAA,MAAA;AAAQ,YAAA;AAAM,SAAA;QAClCC,qBAAuB,EAAA,KAAA;AACvBC,QAAAA,WAAAA,EAAaC,UAAQlB,CAAAA,WAAAA;AACvB,KAAA;AACA,IAAA,MAAM,EAAEmB,UAAU,EAAE,GAAGC,aAASN,CAAAA,cAAAA,CAAAA;AAEhC,IAAA,MAAMO,SAASC,OAAQtB,CAAAA,WAAAA,CAAAA;AAEvBmB,IAAAA,UAAAA,EAAAA;IAEA,MAAMI,OAAAA,GAAU,OAAOF,MAAOG,CAAAA,OAAO,KAAK,UAAaH,GAAAA,MAAAA,CAAOG,OAAO,GAAGH,MAAAA;IAExEI,MAAO,CAAA,OAAOF,YAAY,UAAY,EAAA,CAAC,kCAAkC,EAAE,OAAOA,QAAQ,CAAC,CAAA;IAE3F,KAAK,MAAMG,QAAQzB,KAAO,CAAA;QACxB,IAAI;YACF,MAAM0B,IAAAA,GAAO,MAAMC,aAASF,CAAAA,IAAAA,CAAAA;;YAG5BD,MAAO,CAAA,OAAOE,SAAS,QAAY,IAAA,CAACE,MAAMC,OAAO,CAACH,SAASA,IAAS,KAAA,IAAA,CAAA;;AAGpE,YAAA,MAAMI,MAAuB,GAAA;AAAEL,gBAAAA,IAAAA;AAAMC,gBAAAA;AAAK,aAAA;AAC1C,YAAA,MAAMK,MAA8B,GAAA;AAAEC,gBAAAA,GAAAA,EAAK/B,OAAO+B,GAAG;gBAAEN,IAAMO,EAAAA;AAAuB,aAAA;YAEpF,MAAMC,GAAAA,GAAM,MAAMZ,OAAAA,CAAQQ,MAAMC,EAAAA,MAAAA,CAAAA;AAEhC,YAAA,IAAIG,QAAQC,SAAW,EAAA;AACrB7B,gBAAAA,MAAAA,CAAOI,KAAK,IAAI,CAAA;AAClB,aAAA,MAEK,IAAI,CAACO,UAAQS,CAAAA,IAAAA,EAAMQ,GAAM,CAAA,EAAA;AAC5B,gBAAA,IAAI,CAAChC,GAAK,EAAA;AACR,oBAAA,MAAMkC,cAASX,IAAMS,EAAAA,GAAAA,CAAAA;AACvB;AACA5B,gBAAAA,MAAAA,CAAOC,EAAE,IAAI,CAAA;aAGV,MAAA;AACHD,gBAAAA,MAAAA,CAAOE,QAAQ,IAAI,CAAA;AACrB;AACF,SAAA,CAAE,OAAM;AACNF,YAAAA,MAAAA,CAAOI,KAAK,IAAI,CAAA;AAClB;AACF;IAEA,MAAM2B,OAAAA,GAAUjC,OAAQC,CAAAA,MAAM,CAACF,SAAAA,CAAAA;AAC/BG,IAAAA,MAAAA,CAAOK,WAAW,GAAG,CAAC0B,OAAO,CAAC,CAAA,CAAE,GAAGA,OAAO,CAAC,CAAE,CAAA,GAAG,GAAE,EAAGC,OAAO,CAAC,CAAA,CAAA;IAE7D,OAAOhC,MAAAA;AACT;;;;"}
|