@ohos-ports/nx 17.3.2-beta.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.
- package/.eslintrc.json +106 -0
- package/LICENSE +22 -0
- package/README.md +66 -0
- package/bin/init-local.d.ts +8 -0
- package/bin/init-local.js +175 -0
- package/bin/nx-cloud.d.ts +2 -0
- package/bin/nx-cloud.js +55 -0
- package/bin/nx.d.ts +2 -0
- package/bin/nx.js +230 -0
- package/bin/post-install.d.ts +1 -0
- package/bin/post-install.js +55 -0
- package/bin/run-executor.d.ts +1 -0
- package/bin/run-executor.js +66 -0
- package/executors.json +19 -0
- package/generators.json +10 -0
- package/migrations.json +87 -0
- package/package.json +186 -0
- package/plugins/package-json.d.ts +1 -0
- package/plugins/package-json.js +12 -0
- package/presets/core.json +1 -0
- package/presets/npm.json +7 -0
- package/release/changelog-renderer/index.d.ts +56 -0
- package/release/changelog-renderer/index.js +238 -0
- package/release/index.d.ts +4 -0
- package/release/index.js +11 -0
- package/schemas/nx-schema.json +623 -0
- package/schemas/project-schema.json +244 -0
- package/schemas/workspace-schema.json +185 -0
- package/src/adapter/angular-json.d.ts +9 -0
- package/src/adapter/angular-json.js +127 -0
- package/src/adapter/compat.d.ts +2 -0
- package/src/adapter/compat.js +136 -0
- package/src/adapter/decorate-cli.d.ts +1 -0
- package/src/adapter/decorate-cli.js +25 -0
- package/src/adapter/ngcli-adapter.d.ts +90 -0
- package/src/adapter/ngcli-adapter.js +848 -0
- package/src/adapter/rxjs-for-await.d.ts +109 -0
- package/src/adapter/rxjs-for-await.js +362 -0
- package/src/command-line/add/add.d.ts +2 -0
- package/src/command-line/add/add.js +165 -0
- package/src/command-line/add/command-object.d.ts +7 -0
- package/src/command-line/add/command-object.js +24 -0
- package/src/command-line/affected/affected.d.ts +7 -0
- package/src/command-line/affected/affected.js +105 -0
- package/src/command-line/affected/command-object.d.ts +16 -0
- package/src/command-line/affected/command-object.js +93 -0
- package/src/command-line/affected/print-affected.d.ts +11 -0
- package/src/command-line/affected/print-affected.js +108 -0
- package/src/command-line/connect/command-object.d.ts +3 -0
- package/src/command-line/connect/command-object.js +19 -0
- package/src/command-line/connect/connect-to-nx-cloud.d.ts +8 -0
- package/src/command-line/connect/connect-to-nx-cloud.js +96 -0
- package/src/command-line/connect/view-logs.d.ts +1 -0
- package/src/command-line/connect/view-logs.js +53 -0
- package/src/command-line/daemon/command-object.d.ts +2 -0
- package/src/command-line/daemon/command-object.js +21 -0
- package/src/command-line/daemon/daemon.d.ts +2 -0
- package/src/command-line/daemon/daemon.js +27 -0
- package/src/command-line/examples.d.ts +5 -0
- package/src/command-line/examples.js +347 -0
- package/src/command-line/exec/command-object.d.ts +2 -0
- package/src/command-line/exec/command-object.js +19 -0
- package/src/command-line/exec/exec.d.ts +1 -0
- package/src/command-line/exec/exec.js +141 -0
- package/src/command-line/format/command-object.d.ts +3 -0
- package/src/command-line/format/command-object.js +46 -0
- package/src/command-line/format/format.d.ts +2 -0
- package/src/command-line/format/format.js +155 -0
- package/src/command-line/generate/command-object.d.ts +2 -0
- package/src/command-line/generate/command-object.js +70 -0
- package/src/command-line/generate/generate.d.ts +21 -0
- package/src/command-line/generate/generate.js +266 -0
- package/src/command-line/generate/generator-utils.d.ts +17 -0
- package/src/command-line/generate/generator-utils.js +87 -0
- package/src/command-line/graph/command-object.d.ts +2 -0
- package/src/command-line/graph/command-object.js +21 -0
- package/src/command-line/graph/graph.d.ts +39 -0
- package/src/command-line/graph/graph.js +661 -0
- package/src/command-line/init/command-object.d.ts +2 -0
- package/src/command-line/init/command-object.js +81 -0
- package/src/command-line/init/implementation/add-nx-to-monorepo.d.ts +4 -0
- package/src/command-line/init/implementation/add-nx-to-monorepo.js +133 -0
- package/src/command-line/init/implementation/add-nx-to-nest.d.ts +5 -0
- package/src/command-line/init/implementation/add-nx-to-nest.js +346 -0
- package/src/command-line/init/implementation/add-nx-to-npm-repo.d.ts +4 -0
- package/src/command-line/init/implementation/add-nx-to-npm-repo.js +66 -0
- package/src/command-line/init/implementation/angular/index.d.ts +2 -0
- package/src/command-line/init/implementation/angular/index.js +128 -0
- package/src/command-line/init/implementation/angular/integrated-workspace.d.ts +1 -0
- package/src/command-line/init/implementation/angular/integrated-workspace.js +10 -0
- package/src/command-line/init/implementation/angular/legacy-angular-versions.d.ts +2 -0
- package/src/command-line/init/implementation/angular/legacy-angular-versions.js +125 -0
- package/src/command-line/init/implementation/angular/standalone-workspace.d.ts +1 -0
- package/src/command-line/init/implementation/angular/standalone-workspace.js +178 -0
- package/src/command-line/init/implementation/angular/types.d.ts +20 -0
- package/src/command-line/init/implementation/angular/types.js +2 -0
- package/src/command-line/init/implementation/dot-nx/add-nx-scripts.d.ts +7 -0
- package/src/command-line/init/implementation/dot-nx/add-nx-scripts.js +91 -0
- package/src/command-line/init/implementation/dot-nx/nxw.d.ts +1 -0
- package/src/command-line/init/implementation/dot-nx/nxw.js +116 -0
- package/src/command-line/init/implementation/react/add-craco-commands-to-package-scripts.d.ts +1 -0
- package/src/command-line/init/implementation/react/add-craco-commands-to-package-scripts.js +22 -0
- package/src/command-line/init/implementation/react/add-vite-commands-to-package-scripts.d.ts +1 -0
- package/src/command-line/init/implementation/react/add-vite-commands-to-package-scripts.js +19 -0
- package/src/command-line/init/implementation/react/check-for-custom-webpack-setup.d.ts +1 -0
- package/src/command-line/init/implementation/react/check-for-custom-webpack-setup.js +18 -0
- package/src/command-line/init/implementation/react/check-for-uncommitted-changes.d.ts +1 -0
- package/src/command-line/init/implementation/react/check-for-uncommitted-changes.js +16 -0
- package/src/command-line/init/implementation/react/clean-up-files.d.ts +1 -0
- package/src/command-line/init/implementation/react/clean-up-files.js +31 -0
- package/src/command-line/init/implementation/react/index.d.ts +4 -0
- package/src/command-line/init/implementation/react/index.js +230 -0
- package/src/command-line/init/implementation/react/read-name-from-package-json.d.ts +1 -0
- package/src/command-line/init/implementation/react/read-name-from-package-json.js +17 -0
- package/src/command-line/init/implementation/react/rename-js-to-jsx.d.ts +1 -0
- package/src/command-line/init/implementation/react/rename-js-to-jsx.js +23 -0
- package/src/command-line/init/implementation/react/tsconfig-setup.d.ts +1 -0
- package/src/command-line/init/implementation/react/tsconfig-setup.js +109 -0
- package/src/command-line/init/implementation/react/write-craco-config.d.ts +1 -0
- package/src/command-line/init/implementation/react/write-craco-config.js +62 -0
- package/src/command-line/init/implementation/react/write-vite-config.d.ts +1 -0
- package/src/command-line/init/implementation/react/write-vite-config.js +38 -0
- package/src/command-line/init/implementation/react/write-vite-index-html.d.ts +1 -0
- package/src/command-line/init/implementation/react/write-vite-index-html.js +25 -0
- package/src/command-line/init/implementation/utils.d.ts +16 -0
- package/src/command-line/init/implementation/utils.js +176 -0
- package/src/command-line/init/init-v1.d.ts +11 -0
- package/src/command-line/init/init-v1.js +118 -0
- package/src/command-line/init/init-v2.d.ts +7 -0
- package/src/command-line/init/init-v2.js +165 -0
- package/src/command-line/list/command-object.d.ts +2 -0
- package/src/command-line/list/command-object.js +15 -0
- package/src/command-line/list/list.d.ts +13 -0
- package/src/command-line/list/list.js +47 -0
- package/src/command-line/migrate/command-object.d.ts +3 -0
- package/src/command-line/migrate/command-object.js +150 -0
- package/src/command-line/migrate/migrate.d.ts +114 -0
- package/src/command-line/migrate/migrate.js +1115 -0
- package/src/command-line/new/command-object.d.ts +2 -0
- package/src/command-line/new/command-object.js +25 -0
- package/src/command-line/new/new.d.ts +3 -0
- package/src/command-line/new/new.js +30 -0
- package/src/command-line/nx-commands.d.ts +10 -0
- package/src/command-line/nx-commands.js +77 -0
- package/src/command-line/release/changelog.d.ts +8 -0
- package/src/command-line/release/changelog.js +696 -0
- package/src/command-line/release/command-object.d.ts +45 -0
- package/src/command-line/release/command-object.js +237 -0
- package/src/command-line/release/config/config.d.ts +56 -0
- package/src/command-line/release/config/config.js +501 -0
- package/src/command-line/release/config/filter-release-groups.d.ts +13 -0
- package/src/command-line/release/config/filter-release-groups.js +150 -0
- package/src/command-line/release/index.d.ts +16 -0
- package/src/command-line/release/index.js +23 -0
- package/src/command-line/release/publish.d.ts +8 -0
- package/src/command-line/release/publish.js +149 -0
- package/src/command-line/release/release.d.ts +4 -0
- package/src/command-line/release/release.js +124 -0
- package/src/command-line/release/utils/batch-projects-by-generator-config.d.ts +7 -0
- package/src/command-line/release/utils/batch-projects-by-generator-config.js +37 -0
- package/src/command-line/release/utils/exec-command.d.ts +1 -0
- package/src/command-line/release/utils/exec-command.js +34 -0
- package/src/command-line/release/utils/git.d.ts +55 -0
- package/src/command-line/release/utils/git.js +261 -0
- package/src/command-line/release/utils/github.d.ts +27 -0
- package/src/command-line/release/utils/github.js +229 -0
- package/src/command-line/release/utils/launch-editor.d.ts +1 -0
- package/src/command-line/release/utils/launch-editor.js +42 -0
- package/src/command-line/release/utils/markdown.d.ts +6 -0
- package/src/command-line/release/utils/markdown.js +29 -0
- package/src/command-line/release/utils/print-changes.d.ts +7 -0
- package/src/command-line/release/utils/print-changes.js +60 -0
- package/src/command-line/release/utils/resolve-nx-json-error-message.d.ts +1 -0
- package/src/command-line/release/utils/resolve-nx-json-error-message.js +52 -0
- package/src/command-line/release/utils/resolve-semver-specifier.d.ts +3 -0
- package/src/command-line/release/utils/resolve-semver-specifier.js +69 -0
- package/src/command-line/release/utils/semver.d.ts +17 -0
- package/src/command-line/release/utils/semver.js +56 -0
- package/src/command-line/release/utils/shared.d.ts +34 -0
- package/src/command-line/release/utils/shared.js +211 -0
- package/src/command-line/release/version.d.ts +42 -0
- package/src/command-line/release/version.js +347 -0
- package/src/command-line/repair/command-object.d.ts +2 -0
- package/src/command-line/repair/command-object.js +22 -0
- package/src/command-line/repair/repair.d.ts +3 -0
- package/src/command-line/repair/repair.js +37 -0
- package/src/command-line/repair.d.ts +4 -0
- package/src/command-line/repair.js +7 -0
- package/src/command-line/report/command-object.d.ts +2 -0
- package/src/command-line/report/command-object.js +11 -0
- package/src/command-line/report/report.d.ts +48 -0
- package/src/command-line/report/report.js +232 -0
- package/src/command-line/reset/command-object.d.ts +2 -0
- package/src/command-line/reset/command-object.js +9 -0
- package/src/command-line/reset/reset.d.ts +1 -0
- package/src/command-line/reset/reset.js +23 -0
- package/src/command-line/run/command-object.d.ts +6 -0
- package/src/command-line/run/command-object.js +25 -0
- package/src/command-line/run/executor-utils.d.ts +7 -0
- package/src/command-line/run/executor-utils.js +73 -0
- package/src/command-line/run/run-one.d.ts +7 -0
- package/src/command-line/run/run-one.js +117 -0
- package/src/command-line/run/run.d.ts +51 -0
- package/src/command-line/run/run.js +172 -0
- package/src/command-line/run-many/command-object.d.ts +2 -0
- package/src/command-line/run-many/command-object.js +11 -0
- package/src/command-line/run-many/run-many.d.ts +10 -0
- package/src/command-line/run-many/run-many.js +90 -0
- package/src/command-line/run-many.d.ts +4 -0
- package/src/command-line/run-many.js +7 -0
- package/src/command-line/run-one.d.ts +4 -0
- package/src/command-line/run-one.js +7 -0
- package/src/command-line/run.d.ts +4 -0
- package/src/command-line/run.js +7 -0
- package/src/command-line/show/command-object.d.ts +22 -0
- package/src/command-line/show/command-object.js +84 -0
- package/src/command-line/show/show.d.ts +3 -0
- package/src/command-line/show/show.js +126 -0
- package/src/command-line/watch/command-object.d.ts +2 -0
- package/src/command-line/watch/command-object.js +64 -0
- package/src/command-line/watch/watch.d.ts +23 -0
- package/src/command-line/watch/watch.js +169 -0
- package/src/command-line/watch.d.ts +4 -0
- package/src/command-line/watch.js +7 -0
- package/src/command-line/yargs-utils/documentation.d.ts +2 -0
- package/src/command-line/yargs-utils/documentation.js +12 -0
- package/src/command-line/yargs-utils/shared-options.d.ts +89 -0
- package/src/command-line/yargs-utils/shared-options.js +284 -0
- package/src/commands-runner/command-graph.d.ts +13 -0
- package/src/commands-runner/command-graph.js +2 -0
- package/src/commands-runner/create-command-graph.d.ts +4 -0
- package/src/commands-runner/create-command-graph.js +44 -0
- package/src/commands-runner/get-command-projects.d.ts +3 -0
- package/src/commands-runner/get-command-projects.js +19 -0
- package/src/config/calculate-default-project-name.d.ts +4 -0
- package/src/config/calculate-default-project-name.js +42 -0
- package/src/config/configuration.d.ts +8 -0
- package/src/config/configuration.js +17 -0
- package/src/config/misc-interfaces.d.ts +199 -0
- package/src/config/misc-interfaces.js +2 -0
- package/src/config/nx-json.d.ts +372 -0
- package/src/config/nx-json.js +40 -0
- package/src/config/project-graph.d.ts +137 -0
- package/src/config/project-graph.js +37 -0
- package/src/config/schema-utils.d.ts +15 -0
- package/src/config/schema-utils.js +59 -0
- package/src/config/task-graph.d.ts +100 -0
- package/src/config/task-graph.js +2 -0
- package/src/config/workspace-json-project-json.d.ts +189 -0
- package/src/config/workspace-json-project-json.js +2 -0
- package/src/config/workspaces.d.ts +18 -0
- package/src/config/workspaces.js +35 -0
- package/src/core/graph/3rdpartylicenses.txt +833 -0
- package/src/core/graph/environment.js +1 -0
- package/src/core/graph/favicon.ico +0 -0
- package/src/core/graph/index.html +31 -0
- package/src/core/graph/main.js +1 -0
- package/src/core/graph/polyfills.js +1 -0
- package/src/core/graph/runtime.js +1 -0
- package/src/core/graph/styles.css +3 -0
- package/src/core/graph/styles.js +1 -0
- package/src/daemon/cache.d.ts +9 -0
- package/src/daemon/cache.js +52 -0
- package/src/daemon/client/client.d.ts +56 -0
- package/src/daemon/client/client.js +359 -0
- package/src/daemon/client/daemon-socket-messenger.d.ts +13 -0
- package/src/daemon/client/daemon-socket-messenger.js +26 -0
- package/src/daemon/client/exec-is-server-available.d.ts +1 -0
- package/src/daemon/client/exec-is-server-available.js +11 -0
- package/src/daemon/client/generate-help-output.d.ts +1 -0
- package/src/daemon/client/generate-help-output.js +26 -0
- package/src/daemon/server/file-watching/changed-projects.d.ts +10 -0
- package/src/daemon/server/file-watching/changed-projects.js +45 -0
- package/src/daemon/server/file-watching/file-watcher-sockets.d.ts +13 -0
- package/src/daemon/server/file-watching/file-watcher-sockets.js +66 -0
- package/src/daemon/server/handle-hash-tasks.d.ts +10 -0
- package/src/daemon/server/handle-hash-tasks.js +26 -0
- package/src/daemon/server/handle-outputs-tracking.d.ts +15 -0
- package/src/daemon/server/handle-outputs-tracking.js +36 -0
- package/src/daemon/server/handle-process-in-background.d.ts +6 -0
- package/src/daemon/server/handle-process-in-background.js +33 -0
- package/src/daemon/server/handle-request-file-data.d.ts +4 -0
- package/src/daemon/server/handle-request-file-data.js +13 -0
- package/src/daemon/server/handle-request-project-graph.d.ts +2 -0
- package/src/daemon/server/handle-request-project-graph.js +37 -0
- package/src/daemon/server/handle-request-shutdown.d.ts +6 -0
- package/src/daemon/server/handle-request-shutdown.js +26 -0
- package/src/daemon/server/logger.d.ts +18 -0
- package/src/daemon/server/logger.js +37 -0
- package/src/daemon/server/outputs-tracking.d.ts +8 -0
- package/src/daemon/server/outputs-tracking.js +94 -0
- package/src/daemon/server/project-graph-incremental-recomputation.d.ts +22 -0
- package/src/daemon/server/project-graph-incremental-recomputation.js +227 -0
- package/src/daemon/server/server.d.ts +9 -0
- package/src/daemon/server/server.js +303 -0
- package/src/daemon/server/shutdown-utils.d.ts +17 -0
- package/src/daemon/server/shutdown-utils.js +77 -0
- package/src/daemon/server/start.d.ts +1 -0
- package/src/daemon/server/start.js +17 -0
- package/src/daemon/server/watcher.d.ts +12 -0
- package/src/daemon/server/watcher.js +96 -0
- package/src/daemon/socket-utils.d.ts +11 -0
- package/src/daemon/socket-utils.js +42 -0
- package/src/daemon/tmp-dir.d.ts +8 -0
- package/src/daemon/tmp-dir.js +68 -0
- package/src/devkit-exports.d.ts +135 -0
- package/src/devkit-exports.js +140 -0
- package/src/devkit-internals.d.ts +19 -0
- package/src/devkit-internals.js +37 -0
- package/src/devkit-testing-exports.d.ts +2 -0
- package/src/devkit-testing-exports.js +8 -0
- package/src/executors/noop/noop.impl.d.ts +3 -0
- package/src/executors/noop/noop.impl.js +6 -0
- package/src/executors/noop/schema.json +10 -0
- package/src/executors/run-commands/run-commands.impl.d.ts +42 -0
- package/src/executors/run-commands/run-commands.impl.js +247 -0
- package/src/executors/run-commands/schema.json +150 -0
- package/src/executors/run-script/run-script.impl.d.ts +8 -0
- package/src/executors/run-script/run-script.impl.js +56 -0
- package/src/executors/run-script/schema.json +28 -0
- package/src/executors/utils/convert-nx-executor.d.ts +10 -0
- package/src/executors/utils/convert-nx-executor.js +82 -0
- package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.d.ts +8 -0
- package/src/generators/internal-utils/format-changed-files-with-prettier-if-available.js +49 -0
- package/src/generators/testing-utils/create-tree-with-empty-workspace.d.ts +11 -0
- package/src/generators/testing-utils/create-tree-with-empty-workspace.js +46 -0
- package/src/generators/testing-utils/create-tree.d.ts +5 -0
- package/src/generators/testing-utils/create-tree.js +11 -0
- package/src/generators/tree.d.ts +128 -0
- package/src/generators/tree.js +309 -0
- package/src/generators/utils/glob.d.ts +11 -0
- package/src/generators/utils/glob.js +35 -0
- package/src/generators/utils/json.d.ts +28 -0
- package/src/generators/utils/json.js +48 -0
- package/src/generators/utils/nx-json.d.ts +11 -0
- package/src/generators/utils/nx-json.js +59 -0
- package/src/generators/utils/project-configuration.d.ts +42 -0
- package/src/generators/utils/project-configuration.js +239 -0
- package/src/hasher/create-task-hasher.d.ts +4 -0
- package/src/hasher/create-task-hasher.js +16 -0
- package/src/hasher/file-hasher.d.ts +2 -0
- package/src/hasher/file-hasher.js +19 -0
- package/src/hasher/hash-task.d.ts +7 -0
- package/src/hasher/hash-task.js +54 -0
- package/src/hasher/native-task-hasher-impl.d.ts +19 -0
- package/src/hasher/native-task-hasher-impl.js +37 -0
- package/src/hasher/node-task-hasher-impl.d.ts +49 -0
- package/src/hasher/node-task-hasher-impl.js +431 -0
- package/src/hasher/task-hasher.d.ts +129 -0
- package/src/hasher/task-hasher.js +266 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +5 -0
- package/src/migrations/update-15-0-0/migrate-to-inputs.d.ts +2 -0
- package/src/migrations/update-15-0-0/migrate-to-inputs.js +102 -0
- package/src/migrations/update-15-0-0/prefix-outputs.d.ts +2 -0
- package/src/migrations/update-15-0-0/prefix-outputs.js +64 -0
- package/src/migrations/update-15-1-0/set-project-names.d.ts +2 -0
- package/src/migrations/update-15-1-0/set-project-names.js +32 -0
- package/src/migrations/update-15-8-2/update-nxw.d.ts +2 -0
- package/src/migrations/update-15-8-2/update-nxw.js +7 -0
- package/src/migrations/update-16-0-0/remove-nrwl-cli.d.ts +2 -0
- package/src/migrations/update-16-0-0/remove-nrwl-cli.js +16 -0
- package/src/migrations/update-16-0-0/update-depends-on-to-tokens.d.ts +2 -0
- package/src/migrations/update-16-0-0/update-depends-on-to-tokens.js +97 -0
- package/src/migrations/update-16-0-0/update-nx-cloud-runner.d.ts +2 -0
- package/src/migrations/update-16-0-0/update-nx-cloud-runner.js +27 -0
- package/src/migrations/update-16-2-0/remove-run-commands-output-path.d.ts +2 -0
- package/src/migrations/update-16-2-0/remove-run-commands-output-path.js +45 -0
- package/src/migrations/update-16-8-0/escape-dollar-sign-env-variables.d.ts +12 -0
- package/src/migrations/update-16-8-0/escape-dollar-sign-env-variables.js +60 -0
- package/src/migrations/update-16-9-0/remove-project-name-and-root-format.d.ts +2 -0
- package/src/migrations/update-16-9-0/remove-project-name-and-root-format.js +21 -0
- package/src/migrations/update-17-0-0/move-cache-directory.d.ts +2 -0
- package/src/migrations/update-17-0-0/move-cache-directory.js +35 -0
- package/src/migrations/update-17-0-0/rm-default-collection-npm-scope.d.ts +2 -0
- package/src/migrations/update-17-0-0/rm-default-collection-npm-scope.js +72 -0
- package/src/migrations/update-17-0-0/use-minimal-config-for-tasks-runner-options.d.ts +2 -0
- package/src/migrations/update-17-0-0/use-minimal-config-for-tasks-runner-options.js +122 -0
- package/src/migrations/update-17-3-0/nx-release-path.d.ts +3 -0
- package/src/migrations/update-17-3-0/nx-release-path.js +49 -0
- package/src/migrations/update-17-3-0/update-nxw.d.ts +2 -0
- package/src/migrations/update-17-3-0/update-nxw.js +7 -0
- package/src/native/assert-supported-platform.d.ts +1 -0
- package/src/native/assert-supported-platform.js +39 -0
- package/src/native/index.d.ts +192 -0
- package/src/native/index.js +289 -0
- package/src/native/transform-objects.d.ts +3 -0
- package/src/native/transform-objects.js +50 -0
- package/src/nx-cloud/debug-logger.d.ts +1 -0
- package/src/nx-cloud/debug-logger.js +9 -0
- package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.d.ts +8 -0
- package/src/nx-cloud/generators/connect-to-nx-cloud/connect-to-nx-cloud.js +107 -0
- package/src/nx-cloud/generators/connect-to-nx-cloud/schema.json +27 -0
- package/src/nx-cloud/nx-cloud-tasks-runner-shell.d.ts +15 -0
- package/src/nx-cloud/nx-cloud-tasks-runner-shell.js +41 -0
- package/src/nx-cloud/resolution-helpers.d.ts +1 -0
- package/src/nx-cloud/resolution-helpers.js +20 -0
- package/src/nx-cloud/update-manager.d.ts +17 -0
- package/src/nx-cloud/update-manager.js +240 -0
- package/src/nx-cloud/utilities/axios.d.ts +2 -0
- package/src/nx-cloud/utilities/axios.js +24 -0
- package/src/nx-cloud/utilities/environment.d.ts +3 -0
- package/src/nx-cloud/utilities/environment.js +47 -0
- package/src/nx-cloud/utilities/get-cloud-options.d.ts +2 -0
- package/src/nx-cloud/utilities/get-cloud-options.js +11 -0
- package/src/plugins/js/hasher/hasher.d.ts +5 -0
- package/src/plugins/js/hasher/hasher.js +52 -0
- package/src/plugins/js/index.d.ts +4 -0
- package/src/plugins/js/index.js +96 -0
- package/src/plugins/js/lock-file/lock-file.d.ts +34 -0
- package/src/plugins/js/lock-file/lock-file.js +169 -0
- package/src/plugins/js/lock-file/npm-parser.d.ts +7 -0
- package/src/plugins/js/lock-file/npm-parser.js +463 -0
- package/src/plugins/js/lock-file/pnpm-parser.d.ts +7 -0
- package/src/plugins/js/lock-file/pnpm-parser.js +294 -0
- package/src/plugins/js/lock-file/project-graph-pruning.d.ts +7 -0
- package/src/plugins/js/lock-file/project-graph-pruning.js +155 -0
- package/src/plugins/js/lock-file/utils/package-json.d.ts +10 -0
- package/src/plugins/js/lock-file/utils/package-json.js +34 -0
- package/src/plugins/js/lock-file/utils/pnpm-normalizer.d.ts +38 -0
- package/src/plugins/js/lock-file/utils/pnpm-normalizer.js +575 -0
- package/src/plugins/js/lock-file/yarn-parser.d.ts +7 -0
- package/src/plugins/js/lock-file/yarn-parser.js +437 -0
- package/src/plugins/js/package-json/create-package-json.d.ts +27 -0
- package/src/plugins/js/package-json/create-package-json.js +207 -0
- package/src/plugins/js/project-graph/affected/lock-file-changes.d.ts +4 -0
- package/src/plugins/js/project-graph/affected/lock-file-changes.js +16 -0
- package/src/plugins/js/project-graph/affected/npm-packages.d.ts +4 -0
- package/src/plugins/js/project-graph/affected/npm-packages.js +56 -0
- package/src/plugins/js/project-graph/affected/touched-projects.d.ts +2 -0
- package/src/plugins/js/project-graph/affected/touched-projects.js +18 -0
- package/src/plugins/js/project-graph/affected/tsconfig-json-changes.d.ts +4 -0
- package/src/plugins/js/project-graph/affected/tsconfig-json-changes.js +63 -0
- package/src/plugins/js/project-graph/build-dependencies/build-dependencies.d.ts +6 -0
- package/src/plugins/js/project-graph/build-dependencies/build-dependencies.js +33 -0
- package/src/plugins/js/project-graph/build-dependencies/explicit-package-json-dependencies.d.ts +3 -0
- package/src/plugins/js/project-graph/build-dependencies/explicit-package-json-dependencies.js +82 -0
- package/src/plugins/js/project-graph/build-dependencies/explicit-project-dependencies.d.ts +3 -0
- package/src/plugins/js/project-graph/build-dependencies/explicit-project-dependencies.js +94 -0
- package/src/plugins/js/project-graph/build-dependencies/strip-source-code.d.ts +7 -0
- package/src/plugins/js/project-graph/build-dependencies/strip-source-code.js +156 -0
- package/src/plugins/js/project-graph/build-dependencies/target-project-locator.d.ts +32 -0
- package/src/plugins/js/project-graph/build-dependencies/target-project-locator.js +183 -0
- package/src/plugins/js/project-graph/build-dependencies/typescript-import-locator.d.ts +16 -0
- package/src/plugins/js/project-graph/build-dependencies/typescript-import-locator.js +120 -0
- package/src/plugins/js/project-graph/build-nodes/build-npm-package-nodes.d.ts +2 -0
- package/src/plugins/js/project-graph/build-nodes/build-npm-package-nodes.js +32 -0
- package/src/plugins/js/utils/config.d.ts +2 -0
- package/src/plugins/js/utils/config.js +65 -0
- package/src/plugins/js/utils/register.d.ts +151 -0
- package/src/plugins/js/utils/register.js +215 -0
- package/src/plugins/js/utils/typescript.d.ts +14 -0
- package/src/plugins/js/utils/typescript.js +98 -0
- package/src/plugins/js/versions.d.ts +1 -0
- package/src/plugins/js/versions.js +4 -0
- package/src/plugins/package-json-workspaces/create-nodes.d.ts +19 -0
- package/src/plugins/package-json-workspaces/create-nodes.js +130 -0
- package/src/plugins/package-json-workspaces/index.d.ts +1 -0
- package/src/plugins/package-json-workspaces/index.js +4 -0
- package/src/plugins/project-json/build-nodes/package-json-next-to-project-json.d.ts +2 -0
- package/src/plugins/project-json/build-nodes/package-json-next-to-project-json.js +47 -0
- package/src/plugins/project-json/build-nodes/project-json.d.ts +4 -0
- package/src/plugins/project-json/build-nodes/project-json.js +29 -0
- package/src/plugins/target-defaults/target-defaults-plugin.d.ts +8 -0
- package/src/plugins/target-defaults/target-defaults-plugin.js +103 -0
- package/src/project-graph/affected/affected-project-graph-models.d.ts +11 -0
- package/src/project-graph/affected/affected-project-graph-models.js +2 -0
- package/src/project-graph/affected/affected-project-graph.d.ts +4 -0
- package/src/project-graph/affected/affected-project-graph.js +83 -0
- package/src/project-graph/affected/locators/project-glob-changes.d.ts +2 -0
- package/src/project-graph/affected/locators/project-glob-changes.js +31 -0
- package/src/project-graph/affected/locators/workspace-json-changes.d.ts +4 -0
- package/src/project-graph/affected/locators/workspace-json-changes.js +47 -0
- package/src/project-graph/affected/locators/workspace-projects.d.ts +5 -0
- package/src/project-graph/affected/locators/workspace-projects.js +85 -0
- package/src/project-graph/build-project-graph.d.ts +14 -0
- package/src/project-graph/build-project-graph.js +219 -0
- package/src/project-graph/file-map-utils.d.ts +15 -0
- package/src/project-graph/file-map-utils.js +63 -0
- package/src/project-graph/file-utils.d.ts +31 -0
- package/src/project-graph/file-utils.js +181 -0
- package/src/project-graph/nx-deps-cache.d.ts +48 -0
- package/src/project-graph/nx-deps-cache.js +228 -0
- package/src/project-graph/operators.d.ts +12 -0
- package/src/project-graph/operators.js +114 -0
- package/src/project-graph/project-graph-builder.d.ts +133 -0
- package/src/project-graph/project-graph-builder.js +379 -0
- package/src/project-graph/project-graph.d.ts +48 -0
- package/src/project-graph/project-graph.js +188 -0
- package/src/project-graph/utils/build-all-workspace-files.d.ts +2 -0
- package/src/project-graph/utils/build-all-workspace-files.js +15 -0
- package/src/project-graph/utils/find-project-for-path.d.ts +20 -0
- package/src/project-graph/utils/find-project-for-path.js +57 -0
- package/src/project-graph/utils/implicit-project-dependencies.d.ts +3 -0
- package/src/project-graph/utils/implicit-project-dependencies.js +19 -0
- package/src/project-graph/utils/normalize-project-nodes.d.ts +10 -0
- package/src/project-graph/utils/normalize-project-nodes.js +92 -0
- package/src/project-graph/utils/project-configuration-utils.d.ts +53 -0
- package/src/project-graph/utils/project-configuration-utils.js +456 -0
- package/src/project-graph/utils/retrieve-workspace-files.d.ts +37 -0
- package/src/project-graph/utils/retrieve-workspace-files.js +109 -0
- package/src/tasks-runner/batch/batch-messages.d.ts +33 -0
- package/src/tasks-runner/batch/batch-messages.js +9 -0
- package/src/tasks-runner/batch/run-batch.d.ts +1 -0
- package/src/tasks-runner/batch/run-batch.js +77 -0
- package/src/tasks-runner/cache.d.ts +36 -0
- package/src/tasks-runner/cache.js +236 -0
- package/src/tasks-runner/create-task-graph.d.ts +25 -0
- package/src/tasks-runner/create-task-graph.js +225 -0
- package/src/tasks-runner/default-tasks-runner.d.ts +20 -0
- package/src/tasks-runner/default-tasks-runner.js +29 -0
- package/src/tasks-runner/fork.d.ts +1 -0
- package/src/tasks-runner/fork.js +23 -0
- package/src/tasks-runner/forked-process-task-runner.d.ts +44 -0
- package/src/tasks-runner/forked-process-task-runner.js +396 -0
- package/src/tasks-runner/init-tasks-runner.d.ts +11 -0
- package/src/tasks-runner/init-tasks-runner.js +57 -0
- package/src/tasks-runner/life-cycle.d.ts +43 -0
- package/src/tasks-runner/life-cycle.js +71 -0
- package/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.d.ts +25 -0
- package/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.js +345 -0
- package/src/tasks-runner/life-cycles/dynamic-run-one-terminal-output-life-cycle.d.ts +24 -0
- package/src/tasks-runner/life-cycles/dynamic-run-one-terminal-output-life-cycle.js +224 -0
- package/src/tasks-runner/life-cycles/empty-terminal-output-life-cycle.d.ts +5 -0
- package/src/tasks-runner/life-cycles/empty-terminal-output-life-cycle.js +16 -0
- package/src/tasks-runner/life-cycles/formatting-utils.d.ts +3 -0
- package/src/tasks-runner/life-cycles/formatting-utils.js +44 -0
- package/src/tasks-runner/life-cycles/invoke-runner-terminal-output-life-cycle.d.ts +17 -0
- package/src/tasks-runner/life-cycles/invoke-runner-terminal-output-life-cycle.js +67 -0
- package/src/tasks-runner/life-cycles/pretty-time.d.ts +4 -0
- package/src/tasks-runner/life-cycles/pretty-time.js +74 -0
- package/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.d.ts +33 -0
- package/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.js +99 -0
- package/src/tasks-runner/life-cycles/static-run-one-terminal-output-life-cycle.d.ts +31 -0
- package/src/tasks-runner/life-cycles/static-run-one-terminal-output-life-cycle.js +89 -0
- package/src/tasks-runner/life-cycles/store-run-information-life-cycle.d.ts +22 -0
- package/src/tasks-runner/life-cycles/store-run-information-life-cycle.js +87 -0
- package/src/tasks-runner/life-cycles/task-profiling-life-cycle.d.ts +19 -0
- package/src/tasks-runner/life-cycles/task-profiling-life-cycle.js +73 -0
- package/src/tasks-runner/life-cycles/task-timings-life-cycle.d.ts +13 -0
- package/src/tasks-runner/life-cycles/task-timings-life-cycle.js +39 -0
- package/src/tasks-runner/life-cycles/view-logs-utils.d.ts +1 -0
- package/src/tasks-runner/life-cycles/view-logs-utils.js +16 -0
- package/src/tasks-runner/psuedo-ipc.d.ts +49 -0
- package/src/tasks-runner/psuedo-ipc.js +140 -0
- package/src/tasks-runner/remove-old-cache-records.d.ts +1 -0
- package/src/tasks-runner/remove-old-cache-records.js +61 -0
- package/src/tasks-runner/run-command.d.ts +28 -0
- package/src/tasks-runner/run-command.js +353 -0
- package/src/tasks-runner/task-env.d.ts +8 -0
- package/src/tasks-runner/task-env.js +144 -0
- package/src/tasks-runner/task-graph-utils.d.ts +7 -0
- package/src/tasks-runner/task-graph-utils.js +55 -0
- package/src/tasks-runner/task-orchestrator.d.ts +50 -0
- package/src/tasks-runner/task-orchestrator.js +375 -0
- package/src/tasks-runner/tasks-runner.d.ts +23 -0
- package/src/tasks-runner/tasks-runner.js +2 -0
- package/src/tasks-runner/tasks-schedule.d.ts +36 -0
- package/src/tasks-runner/tasks-schedule.js +142 -0
- package/src/tasks-runner/utils.d.ts +51 -0
- package/src/tasks-runner/utils.js +293 -0
- package/src/utils/ab-testing.d.ts +51 -0
- package/src/utils/ab-testing.js +91 -0
- package/src/utils/all-file-data.d.ts +2 -0
- package/src/utils/all-file-data.js +15 -0
- package/src/utils/app-root.d.ts +8 -0
- package/src/utils/app-root.js +12 -0
- package/src/utils/assert-workspace-validity.d.ts +3 -0
- package/src/utils/assert-workspace-validity.js +84 -0
- package/src/utils/async-iterator.d.ts +2 -0
- package/src/utils/async-iterator.js +17 -0
- package/src/utils/cache-directory.d.ts +6 -0
- package/src/utils/cache-directory.js +60 -0
- package/src/utils/child-process.d.ts +19 -0
- package/src/utils/child-process.js +117 -0
- package/src/utils/chunkify.d.ts +1 -0
- package/src/utils/chunkify.js +38 -0
- package/src/utils/code-frames.d.ts +14 -0
- package/src/utils/code-frames.js +119 -0
- package/src/utils/collapse-expanded-outputs.d.ts +1 -0
- package/src/utils/collapse-expanded-outputs.js +41 -0
- package/src/utils/command-line-utils.d.ts +48 -0
- package/src/utils/command-line-utils.js +254 -0
- package/src/utils/consume-messages-from-socket.d.ts +1 -0
- package/src/utils/consume-messages-from-socket.js +22 -0
- package/src/utils/default-base.d.ts +1 -0
- package/src/utils/default-base.js +15 -0
- package/src/utils/exit-codes.d.ts +6 -0
- package/src/utils/exit-codes.js +20 -0
- package/src/utils/fileutils.d.ts +69 -0
- package/src/utils/fileutils.js +135 -0
- package/src/utils/find-matching-projects.d.ts +10 -0
- package/src/utils/find-matching-projects.js +198 -0
- package/src/utils/find-workspace-root.d.ts +11 -0
- package/src/utils/find-workspace-root.js +34 -0
- package/src/utils/globs.d.ts +1 -0
- package/src/utils/globs.js +8 -0
- package/src/utils/ignore.d.ts +8 -0
- package/src/utils/ignore.js +68 -0
- package/src/utils/installation-directory.d.ts +2 -0
- package/src/utils/installation-directory.js +13 -0
- package/src/utils/is-ci.d.ts +1 -0
- package/src/utils/is-ci.js +20 -0
- package/src/utils/json-diff.d.ts +18 -0
- package/src/utils/json-diff.js +112 -0
- package/src/utils/json.d.ts +44 -0
- package/src/utils/json.js +60 -0
- package/src/utils/logger.d.ts +11 -0
- package/src/utils/logger.js +47 -0
- package/src/utils/nx-cloud-utils.d.ts +4 -0
- package/src/utils/nx-cloud-utils.js +27 -0
- package/src/utils/nx-plugin.d.ts +119 -0
- package/src/utils/nx-plugin.deprecated.d.ts +31 -0
- package/src/utils/nx-plugin.deprecated.js +25 -0
- package/src/utils/nx-plugin.js +293 -0
- package/src/utils/object-sort.d.ts +1 -0
- package/src/utils/object-sort.js +10 -0
- package/src/utils/output.d.ts +72 -0
- package/src/utils/output.js +239 -0
- package/src/utils/package-json.d.ts +98 -0
- package/src/utils/package-json.js +134 -0
- package/src/utils/package-manager.d.ts +93 -0
- package/src/utils/package-manager.js +300 -0
- package/src/utils/params.d.ts +138 -0
- package/src/utils/params.js +684 -0
- package/src/utils/path.d.ts +19 -0
- package/src/utils/path.js +38 -0
- package/src/utils/perf-logging.d.ts +1 -0
- package/src/utils/perf-logging.js +11 -0
- package/src/utils/plugins/community-plugins.d.ts +2 -0
- package/src/utils/plugins/community-plugins.js +29 -0
- package/src/utils/plugins/core-plugins.d.ts +3 -0
- package/src/utils/plugins/core-plugins.js +114 -0
- package/src/utils/plugins/index.d.ts +4 -0
- package/src/utils/plugins/index.js +14 -0
- package/src/utils/plugins/installed-plugins.d.ts +6 -0
- package/src/utils/plugins/installed-plugins.js +104 -0
- package/src/utils/plugins/local-plugins.d.ts +5 -0
- package/src/utils/plugins/local-plugins.js +58 -0
- package/src/utils/plugins/models.d.ts +22 -0
- package/src/utils/plugins/models.js +2 -0
- package/src/utils/plugins/plugin-capabilities.d.ts +4 -0
- package/src/utils/plugins/plugin-capabilities.js +124 -0
- package/src/utils/plugins/shared.d.ts +1 -0
- package/src/utils/plugins/shared.js +8 -0
- package/src/utils/print-help.d.ts +11 -0
- package/src/utils/print-help.js +265 -0
- package/src/utils/project-graph-utils.d.ts +13 -0
- package/src/utils/project-graph-utils.js +74 -0
- package/src/utils/promised-based-queue.d.ts +6 -0
- package/src/utils/promised-based-queue.js +43 -0
- package/src/utils/serialize-overrides-into-command-line.d.ts +3 -0
- package/src/utils/serialize-overrides-into-command-line.js +43 -0
- package/src/utils/split-target.d.ts +3 -0
- package/src/utils/split-target.js +49 -0
- package/src/utils/strip-indents.d.ts +14 -0
- package/src/utils/strip-indents.js +24 -0
- package/src/utils/typescript.d.ts +1 -0
- package/src/utils/typescript.js +5 -0
- package/src/utils/update-nxw.d.ts +2 -0
- package/src/utils/update-nxw.js +12 -0
- package/src/utils/versions.d.ts +1 -0
- package/src/utils/versions.js +4 -0
- package/src/utils/workspace-configuration-check.d.ts +1 -0
- package/src/utils/workspace-configuration-check.js +37 -0
- package/src/utils/workspace-context.d.ts +10 -0
- package/src/utils/workspace-context.js +56 -0
- package/src/utils/workspace-root.d.ts +6 -0
- package/src/utils/workspace-root.js +39 -0
- package/tasks-runners/default.d.ts +1 -0
- package/tasks-runners/default.js +5 -0
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleNxReleaseConfigError = exports.createNxReleaseConfig = exports.IMPLICIT_DEFAULT_RELEASE_GROUP = void 0;
|
|
4
|
+
const devkit_exports_1 = require("../../../devkit-exports");
|
|
5
|
+
const find_matching_projects_1 = require("../../../utils/find-matching-projects");
|
|
6
|
+
const resolve_nx_json_error_message_1 = require("../utils/resolve-nx-json-error-message");
|
|
7
|
+
exports.IMPLICIT_DEFAULT_RELEASE_GROUP = '__default__';
|
|
8
|
+
// Apply default configuration to any optional user configuration and handle known errors
|
|
9
|
+
async function createNxReleaseConfig(projectGraph, userConfig = {}) {
|
|
10
|
+
if (userConfig.projects && userConfig.groups) {
|
|
11
|
+
return {
|
|
12
|
+
error: {
|
|
13
|
+
code: 'PROJECTS_AND_GROUPS_DEFINED',
|
|
14
|
+
data: {},
|
|
15
|
+
},
|
|
16
|
+
nxReleaseConfig: null,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
if (hasInvalidGitConfig(userConfig)) {
|
|
20
|
+
return {
|
|
21
|
+
error: {
|
|
22
|
+
code: 'GLOBAL_GIT_CONFIG_MIXED_WITH_GRANULAR_GIT_CONFIG',
|
|
23
|
+
data: {},
|
|
24
|
+
},
|
|
25
|
+
nxReleaseConfig: null,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
if (hasInvalidConventionalCommitsConfig(userConfig)) {
|
|
29
|
+
return {
|
|
30
|
+
error: {
|
|
31
|
+
code: 'CONVENTIONAL_COMMITS_SHORTHAND_MIXED_WITH_OVERLAPPING_GENERATOR_OPTIONS',
|
|
32
|
+
data: {},
|
|
33
|
+
},
|
|
34
|
+
nxReleaseConfig: null,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const gitDefaults = {
|
|
38
|
+
commit: false,
|
|
39
|
+
commitMessage: 'chore(release): publish {version}',
|
|
40
|
+
commitArgs: '',
|
|
41
|
+
tag: false,
|
|
42
|
+
tagMessage: '',
|
|
43
|
+
tagArgs: '',
|
|
44
|
+
stageChanges: false,
|
|
45
|
+
};
|
|
46
|
+
const versionGitDefaults = {
|
|
47
|
+
...gitDefaults,
|
|
48
|
+
stageChanges: true,
|
|
49
|
+
};
|
|
50
|
+
const changelogGitDefaults = {
|
|
51
|
+
...gitDefaults,
|
|
52
|
+
commit: true,
|
|
53
|
+
tag: true,
|
|
54
|
+
};
|
|
55
|
+
const defaultFixedReleaseTagPattern = 'v{version}';
|
|
56
|
+
const defaultIndependentReleaseTagPattern = '{projectName}@{version}';
|
|
57
|
+
const workspaceProjectsRelationship = userConfig.projectsRelationship || 'fixed';
|
|
58
|
+
const defaultGeneratorOptions = userConfig.version?.conventionalCommits
|
|
59
|
+
? {
|
|
60
|
+
currentVersionResolver: 'git-tag',
|
|
61
|
+
specifierSource: 'conventional-commits',
|
|
62
|
+
}
|
|
63
|
+
: {};
|
|
64
|
+
const userGroups = Object.values(userConfig.groups ?? {});
|
|
65
|
+
const disableWorkspaceChangelog = userGroups.length > 1 ||
|
|
66
|
+
(userGroups.length === 1 &&
|
|
67
|
+
userGroups[0].projectsRelationship === 'independent') ||
|
|
68
|
+
(userConfig.projectsRelationship === 'independent' &&
|
|
69
|
+
!userGroups.some((g) => g.projectsRelationship === 'fixed'));
|
|
70
|
+
const WORKSPACE_DEFAULTS = {
|
|
71
|
+
// By default all projects in all groups are released together
|
|
72
|
+
projectsRelationship: workspaceProjectsRelationship,
|
|
73
|
+
git: gitDefaults,
|
|
74
|
+
version: {
|
|
75
|
+
git: versionGitDefaults,
|
|
76
|
+
conventionalCommits: userConfig.version?.conventionalCommits || false,
|
|
77
|
+
generator: '@nx/js:release-version',
|
|
78
|
+
generatorOptions: defaultGeneratorOptions,
|
|
79
|
+
},
|
|
80
|
+
changelog: {
|
|
81
|
+
git: changelogGitDefaults,
|
|
82
|
+
workspaceChangelog: disableWorkspaceChangelog
|
|
83
|
+
? false
|
|
84
|
+
: {
|
|
85
|
+
createRelease: false,
|
|
86
|
+
entryWhenNoChanges: 'This was a version bump only, there were no code changes.',
|
|
87
|
+
file: '{workspaceRoot}/CHANGELOG.md',
|
|
88
|
+
renderer: 'nx/release/changelog-renderer',
|
|
89
|
+
renderOptions: {
|
|
90
|
+
authors: true,
|
|
91
|
+
commitReferences: true,
|
|
92
|
+
versionTitleDate: true,
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
// For projectChangelogs if the user has set any changelog config at all, then use one set of defaults, otherwise default to false for the whole feature
|
|
96
|
+
projectChangelogs: userConfig.changelog?.projectChangelogs
|
|
97
|
+
? {
|
|
98
|
+
createRelease: false,
|
|
99
|
+
file: '{projectRoot}/CHANGELOG.md',
|
|
100
|
+
entryWhenNoChanges: 'This was a version bump only for {projectName} to align it with other projects, there were no code changes.',
|
|
101
|
+
renderer: 'nx/release/changelog-renderer',
|
|
102
|
+
renderOptions: {
|
|
103
|
+
authors: true,
|
|
104
|
+
commitReferences: true,
|
|
105
|
+
versionTitleDate: true,
|
|
106
|
+
},
|
|
107
|
+
}
|
|
108
|
+
: false,
|
|
109
|
+
automaticFromRef: false,
|
|
110
|
+
},
|
|
111
|
+
releaseTagPattern: userConfig.releaseTagPattern ||
|
|
112
|
+
// The appropriate default releaseTagPattern is dependent upon the projectRelationships
|
|
113
|
+
(workspaceProjectsRelationship === 'independent'
|
|
114
|
+
? defaultIndependentReleaseTagPattern
|
|
115
|
+
: defaultFixedReleaseTagPattern),
|
|
116
|
+
};
|
|
117
|
+
const groupProjectsRelationship = userConfig.projectsRelationship || WORKSPACE_DEFAULTS.projectsRelationship;
|
|
118
|
+
const GROUP_DEFAULTS = {
|
|
119
|
+
projectsRelationship: groupProjectsRelationship,
|
|
120
|
+
version: {
|
|
121
|
+
conventionalCommits: false,
|
|
122
|
+
generator: '@nx/js:release-version',
|
|
123
|
+
generatorOptions: {},
|
|
124
|
+
},
|
|
125
|
+
changelog: {
|
|
126
|
+
createRelease: false,
|
|
127
|
+
entryWhenNoChanges: 'This was a version bump only for {projectName} to align it with other projects, there were no code changes.',
|
|
128
|
+
file: '{projectRoot}/CHANGELOG.md',
|
|
129
|
+
renderer: 'nx/release/changelog-renderer',
|
|
130
|
+
renderOptions: {
|
|
131
|
+
authors: true,
|
|
132
|
+
commitReferences: true,
|
|
133
|
+
versionTitleDate: true,
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
releaseTagPattern:
|
|
137
|
+
// The appropriate group default releaseTagPattern is dependent upon the projectRelationships
|
|
138
|
+
groupProjectsRelationship === 'independent'
|
|
139
|
+
? defaultIndependentReleaseTagPattern
|
|
140
|
+
: WORKSPACE_DEFAULTS.releaseTagPattern,
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* We first process root level config and apply defaults, so that we know how to handle the group level
|
|
144
|
+
* overrides, if applicable.
|
|
145
|
+
*/
|
|
146
|
+
const rootGitConfig = deepMergeDefaults([WORKSPACE_DEFAULTS.git], userConfig.git);
|
|
147
|
+
const rootVersionConfig = deepMergeDefaults([
|
|
148
|
+
WORKSPACE_DEFAULTS.version,
|
|
149
|
+
// Merge in the git defaults from the top level
|
|
150
|
+
{ git: versionGitDefaults },
|
|
151
|
+
{
|
|
152
|
+
git: userConfig.git,
|
|
153
|
+
},
|
|
154
|
+
], userConfig.version);
|
|
155
|
+
if (userConfig.changelog?.workspaceChangelog) {
|
|
156
|
+
userConfig.changelog.workspaceChangelog = normalizeTrueToEmptyObject(userConfig.changelog.workspaceChangelog);
|
|
157
|
+
}
|
|
158
|
+
if (userConfig.changelog?.projectChangelogs) {
|
|
159
|
+
userConfig.changelog.projectChangelogs = normalizeTrueToEmptyObject(userConfig.changelog.projectChangelogs);
|
|
160
|
+
}
|
|
161
|
+
const rootChangelogConfig = deepMergeDefaults([
|
|
162
|
+
WORKSPACE_DEFAULTS.changelog,
|
|
163
|
+
// Merge in the git defaults from the top level
|
|
164
|
+
{ git: changelogGitDefaults },
|
|
165
|
+
{
|
|
166
|
+
git: userConfig.git,
|
|
167
|
+
},
|
|
168
|
+
], normalizeTrueToEmptyObject(userConfig.changelog));
|
|
169
|
+
// git configuration is not supported at the group level, only the root/command level
|
|
170
|
+
const rootVersionWithoutGit = { ...rootVersionConfig };
|
|
171
|
+
delete rootVersionWithoutGit.git;
|
|
172
|
+
// Apply conventionalCommits shorthand to the final group defaults if explicitly configured in the original user config
|
|
173
|
+
if (userConfig.version?.conventionalCommits === true) {
|
|
174
|
+
rootVersionWithoutGit.generatorOptions = {
|
|
175
|
+
...rootVersionWithoutGit.generatorOptions,
|
|
176
|
+
currentVersionResolver: 'git-tag',
|
|
177
|
+
specifierSource: 'conventional-commits',
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
if (userConfig.version?.conventionalCommits === false) {
|
|
181
|
+
delete rootVersionWithoutGit.generatorOptions.currentVersionResolver;
|
|
182
|
+
delete rootVersionWithoutGit.generatorOptions.specifierSource;
|
|
183
|
+
}
|
|
184
|
+
const groups = userConfig.groups && Object.keys(userConfig.groups).length
|
|
185
|
+
? ensureProjectsConfigIsArray(userConfig.groups)
|
|
186
|
+
: /**
|
|
187
|
+
* No user specified release groups, so we treat all projects (or any any user-defined subset via the top level "projects" property)
|
|
188
|
+
* as being in one release group together in which the projects are released in lock step.
|
|
189
|
+
*/
|
|
190
|
+
{
|
|
191
|
+
[exports.IMPLICIT_DEFAULT_RELEASE_GROUP]: {
|
|
192
|
+
projectsRelationship: GROUP_DEFAULTS.projectsRelationship,
|
|
193
|
+
projects: userConfig.projects
|
|
194
|
+
? // user-defined top level "projects" config takes priority if set
|
|
195
|
+
(0, find_matching_projects_1.findMatchingProjects)(ensureArray(userConfig.projects), projectGraph.nodes)
|
|
196
|
+
: // default to all library projects in the workspace
|
|
197
|
+
(0, find_matching_projects_1.findMatchingProjects)(['*'], projectGraph.nodes).filter((project) => projectGraph.nodes[project].type === 'lib'),
|
|
198
|
+
/**
|
|
199
|
+
* For properties which are overriding config at the root, we use the root level config as the
|
|
200
|
+
* default values to merge with so that the group that matches a specific project will always
|
|
201
|
+
* be the valid source of truth for that type of config.
|
|
202
|
+
*/
|
|
203
|
+
version: deepMergeDefaults([GROUP_DEFAULTS.version], rootVersionWithoutGit),
|
|
204
|
+
// If the user has set something custom for releaseTagPattern at the top level, respect it for the implicit default group
|
|
205
|
+
releaseTagPattern: userConfig.releaseTagPattern || GROUP_DEFAULTS.releaseTagPattern,
|
|
206
|
+
// Directly inherit the root level config for projectChangelogs, if set
|
|
207
|
+
changelog: rootChangelogConfig.projectChangelogs || false,
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
/**
|
|
211
|
+
* Resolve all the project names into their release groups, and check
|
|
212
|
+
* that individual projects are not found in multiple groups.
|
|
213
|
+
*/
|
|
214
|
+
const releaseGroups = {};
|
|
215
|
+
const alreadyMatchedProjects = new Set();
|
|
216
|
+
for (const [releaseGroupName, releaseGroup] of Object.entries(groups)) {
|
|
217
|
+
// Ensure that the config for the release group can resolve at least one project
|
|
218
|
+
const matchingProjects = (0, find_matching_projects_1.findMatchingProjects)(releaseGroup.projects, projectGraph.nodes);
|
|
219
|
+
if (!matchingProjects.length) {
|
|
220
|
+
return {
|
|
221
|
+
error: {
|
|
222
|
+
code: 'RELEASE_GROUP_MATCHES_NO_PROJECTS',
|
|
223
|
+
data: {
|
|
224
|
+
releaseGroupName: releaseGroupName,
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
nxReleaseConfig: null,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
// If provided, ensure release tag pattern is valid
|
|
231
|
+
if (releaseGroup.releaseTagPattern) {
|
|
232
|
+
const error = ensureReleaseGroupReleaseTagPatternIsValid(releaseGroup.releaseTagPattern, releaseGroupName);
|
|
233
|
+
if (error) {
|
|
234
|
+
return {
|
|
235
|
+
error,
|
|
236
|
+
nxReleaseConfig: null,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
for (const project of matchingProjects) {
|
|
241
|
+
if (alreadyMatchedProjects.has(project)) {
|
|
242
|
+
return {
|
|
243
|
+
error: {
|
|
244
|
+
code: 'PROJECT_MATCHES_MULTIPLE_GROUPS',
|
|
245
|
+
data: {
|
|
246
|
+
project,
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
nxReleaseConfig: null,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
alreadyMatchedProjects.add(project);
|
|
253
|
+
}
|
|
254
|
+
// First apply any group level defaults, then apply actual root level config (if applicable), then group level config
|
|
255
|
+
const groupChangelogDefaults = [GROUP_DEFAULTS.changelog];
|
|
256
|
+
if (rootChangelogConfig.projectChangelogs) {
|
|
257
|
+
groupChangelogDefaults.push(rootChangelogConfig.projectChangelogs);
|
|
258
|
+
}
|
|
259
|
+
const projectsRelationship = releaseGroup.projectsRelationship || GROUP_DEFAULTS.projectsRelationship;
|
|
260
|
+
if (releaseGroup.changelog) {
|
|
261
|
+
releaseGroup.changelog = normalizeTrueToEmptyObject(releaseGroup.changelog);
|
|
262
|
+
}
|
|
263
|
+
const groupDefaults = {
|
|
264
|
+
projectsRelationship,
|
|
265
|
+
projects: matchingProjects,
|
|
266
|
+
version: deepMergeDefaults(
|
|
267
|
+
// First apply any group level defaults, then apply actual root level config, then group level config
|
|
268
|
+
[GROUP_DEFAULTS.version, rootVersionWithoutGit], releaseGroup.version),
|
|
269
|
+
// If the user has set any changelog config at all, including at the root level, then use one set of defaults, otherwise default to false for the whole feature
|
|
270
|
+
changelog: releaseGroup.changelog || rootChangelogConfig.projectChangelogs
|
|
271
|
+
? deepMergeDefaults(groupChangelogDefaults, releaseGroup.changelog || {})
|
|
272
|
+
: false,
|
|
273
|
+
releaseTagPattern: releaseGroup.releaseTagPattern ||
|
|
274
|
+
// The appropriate group default releaseTagPattern is dependent upon the projectRelationships
|
|
275
|
+
(projectsRelationship === 'independent'
|
|
276
|
+
? defaultIndependentReleaseTagPattern
|
|
277
|
+
: userConfig.releaseTagPattern || defaultFixedReleaseTagPattern),
|
|
278
|
+
};
|
|
279
|
+
const finalReleaseGroup = deepMergeDefaults([groupDefaults], {
|
|
280
|
+
...releaseGroup,
|
|
281
|
+
// Ensure that the resolved project names take priority over the original user config (which could have contained unresolved globs etc)
|
|
282
|
+
projects: matchingProjects,
|
|
283
|
+
});
|
|
284
|
+
// Apply conventionalCommits shorthand to the final group if explicitly configured in the original group
|
|
285
|
+
if (releaseGroup.version?.conventionalCommits === true) {
|
|
286
|
+
finalReleaseGroup.version.generatorOptions = {
|
|
287
|
+
...finalReleaseGroup.version.generatorOptions,
|
|
288
|
+
currentVersionResolver: 'git-tag',
|
|
289
|
+
specifierSource: 'conventional-commits',
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
if (releaseGroup.version?.conventionalCommits === false &&
|
|
293
|
+
releaseGroupName !== exports.IMPLICIT_DEFAULT_RELEASE_GROUP) {
|
|
294
|
+
delete finalReleaseGroup.version.generatorOptions.currentVersionResolver;
|
|
295
|
+
delete finalReleaseGroup.version.generatorOptions.specifierSource;
|
|
296
|
+
}
|
|
297
|
+
releaseGroups[releaseGroupName] = finalReleaseGroup;
|
|
298
|
+
}
|
|
299
|
+
return {
|
|
300
|
+
error: null,
|
|
301
|
+
nxReleaseConfig: {
|
|
302
|
+
projectsRelationship: WORKSPACE_DEFAULTS.projectsRelationship,
|
|
303
|
+
releaseTagPattern: WORKSPACE_DEFAULTS.releaseTagPattern,
|
|
304
|
+
git: rootGitConfig,
|
|
305
|
+
version: rootVersionConfig,
|
|
306
|
+
changelog: rootChangelogConfig,
|
|
307
|
+
groups: releaseGroups,
|
|
308
|
+
},
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
exports.createNxReleaseConfig = createNxReleaseConfig;
|
|
312
|
+
/**
|
|
313
|
+
* In some cases it is much cleaner and more intuitive for the user to be able to
|
|
314
|
+
* specify `true` in their config when they want to use the default config for a
|
|
315
|
+
* particular property, rather than having to specify an empty object.
|
|
316
|
+
*/
|
|
317
|
+
function normalizeTrueToEmptyObject(value) {
|
|
318
|
+
return value === true ? {} : value;
|
|
319
|
+
}
|
|
320
|
+
async function handleNxReleaseConfigError(error) {
|
|
321
|
+
switch (error.code) {
|
|
322
|
+
case 'PROJECTS_AND_GROUPS_DEFINED':
|
|
323
|
+
{
|
|
324
|
+
const nxJsonMessage = await (0, resolve_nx_json_error_message_1.resolveNxJsonConfigErrorMessage)([
|
|
325
|
+
'release',
|
|
326
|
+
'projects',
|
|
327
|
+
]);
|
|
328
|
+
devkit_exports_1.output.error({
|
|
329
|
+
title: `"projects" is not valid when explicitly defining release groups, and everything should be expressed within "groups" in that case. If you are using "groups" then you should remove the "projects" property`,
|
|
330
|
+
bodyLines: [nxJsonMessage],
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
break;
|
|
334
|
+
case 'RELEASE_GROUP_MATCHES_NO_PROJECTS':
|
|
335
|
+
{
|
|
336
|
+
const nxJsonMessage = await (0, resolve_nx_json_error_message_1.resolveNxJsonConfigErrorMessage)([
|
|
337
|
+
'release',
|
|
338
|
+
'groups',
|
|
339
|
+
]);
|
|
340
|
+
devkit_exports_1.output.error({
|
|
341
|
+
title: `Release group "${error.data.releaseGroupName}" matches no projects. Please ensure all release groups match at least one project:`,
|
|
342
|
+
bodyLines: [nxJsonMessage],
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
break;
|
|
346
|
+
case 'PROJECT_MATCHES_MULTIPLE_GROUPS':
|
|
347
|
+
{
|
|
348
|
+
const nxJsonMessage = await (0, resolve_nx_json_error_message_1.resolveNxJsonConfigErrorMessage)([
|
|
349
|
+
'release',
|
|
350
|
+
'groups',
|
|
351
|
+
]);
|
|
352
|
+
devkit_exports_1.output.error({
|
|
353
|
+
title: `Project "${error.data.project}" matches multiple release groups. Please ensure all projects are part of only one release group:`,
|
|
354
|
+
bodyLines: [nxJsonMessage],
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
break;
|
|
358
|
+
case 'RELEASE_GROUP_RELEASE_TAG_PATTERN_VERSION_PLACEHOLDER_MISSING_OR_EXCESSIVE':
|
|
359
|
+
{
|
|
360
|
+
const nxJsonMessage = await (0, resolve_nx_json_error_message_1.resolveNxJsonConfigErrorMessage)([
|
|
361
|
+
'release',
|
|
362
|
+
'groups',
|
|
363
|
+
error.data.releaseGroupName,
|
|
364
|
+
'releaseTagPattern',
|
|
365
|
+
]);
|
|
366
|
+
devkit_exports_1.output.error({
|
|
367
|
+
title: `Release group "${error.data.releaseGroupName}" has an invalid releaseTagPattern. Please ensure the pattern contains exactly one instance of the "{version}" placeholder`,
|
|
368
|
+
bodyLines: [nxJsonMessage],
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
break;
|
|
372
|
+
case 'CONVENTIONAL_COMMITS_SHORTHAND_MIXED_WITH_OVERLAPPING_GENERATOR_OPTIONS':
|
|
373
|
+
{
|
|
374
|
+
const nxJsonMessage = await (0, resolve_nx_json_error_message_1.resolveNxJsonConfigErrorMessage)([
|
|
375
|
+
'release',
|
|
376
|
+
]);
|
|
377
|
+
devkit_exports_1.output.error({
|
|
378
|
+
title: `You have configured both the shorthand "version.conventionalCommits" and one or more of the related "version.generatorOptions" that it sets for you. Please use one or the other:`,
|
|
379
|
+
bodyLines: [nxJsonMessage],
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
break;
|
|
383
|
+
case 'GLOBAL_GIT_CONFIG_MIXED_WITH_GRANULAR_GIT_CONFIG':
|
|
384
|
+
{
|
|
385
|
+
const nxJsonMessage = await (0, resolve_nx_json_error_message_1.resolveNxJsonConfigErrorMessage)([
|
|
386
|
+
'release',
|
|
387
|
+
'git',
|
|
388
|
+
]);
|
|
389
|
+
devkit_exports_1.output.error({
|
|
390
|
+
title: `You have duplicate conflicting git configurations. If you are using the top level 'nx release' command, then remove the 'release.version.git' and 'release.changelog.git' properties in favor of 'release.git'. If you are using the subcommands or the programmatic API, then remove the 'release.git' property in favor of 'release.version.git' and 'release.changelog.git':`,
|
|
391
|
+
bodyLines: [nxJsonMessage],
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
break;
|
|
395
|
+
default:
|
|
396
|
+
throw new Error(`Unhandled error code: ${error.code}`);
|
|
397
|
+
}
|
|
398
|
+
process.exit(1);
|
|
399
|
+
}
|
|
400
|
+
exports.handleNxReleaseConfigError = handleNxReleaseConfigError;
|
|
401
|
+
function ensureReleaseGroupReleaseTagPatternIsValid(releaseTagPattern, releaseGroupName) {
|
|
402
|
+
// ensure that any provided releaseTagPattern contains exactly one instance of {version}
|
|
403
|
+
return releaseTagPattern.split('{version}').length === 2
|
|
404
|
+
? null
|
|
405
|
+
: {
|
|
406
|
+
code: 'RELEASE_GROUP_RELEASE_TAG_PATTERN_VERSION_PLACEHOLDER_MISSING_OR_EXCESSIVE',
|
|
407
|
+
data: {
|
|
408
|
+
releaseGroupName,
|
|
409
|
+
},
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
function ensureProjectsConfigIsArray(groups) {
|
|
413
|
+
const result = {};
|
|
414
|
+
for (const [groupName, groupConfig] of Object.entries(groups)) {
|
|
415
|
+
result[groupName] = {
|
|
416
|
+
...groupConfig,
|
|
417
|
+
projects: ensureArray(groupConfig.projects),
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
return result;
|
|
421
|
+
}
|
|
422
|
+
function ensureArray(value) {
|
|
423
|
+
return Array.isArray(value) ? value : [value];
|
|
424
|
+
}
|
|
425
|
+
function isObject(value) {
|
|
426
|
+
return value && typeof value === 'object' && !Array.isArray(value);
|
|
427
|
+
}
|
|
428
|
+
// Helper function to merge two config objects
|
|
429
|
+
function mergeConfig(objA, objB) {
|
|
430
|
+
const merged = { ...objA };
|
|
431
|
+
for (const key in objB) {
|
|
432
|
+
if (objB.hasOwnProperty(key)) {
|
|
433
|
+
// If objB[key] is explicitly set to false, null or 0, respect that value
|
|
434
|
+
if (objB[key] === false || objB[key] === null || objB[key] === 0) {
|
|
435
|
+
merged[key] = objB[key];
|
|
436
|
+
}
|
|
437
|
+
// If both objA[key] and objB[key] are objects, recursively merge them
|
|
438
|
+
else if (isObject(merged[key]) && isObject(objB[key])) {
|
|
439
|
+
merged[key] = mergeConfig(merged[key], objB[key]);
|
|
440
|
+
}
|
|
441
|
+
// If objB[key] is defined, use it (this will overwrite any existing value in merged[key])
|
|
442
|
+
else if (objB[key] !== undefined) {
|
|
443
|
+
merged[key] = objB[key];
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
return merged;
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* This function takes in a strictly typed collection of all possible default values in a particular section of config,
|
|
451
|
+
* and an optional set of partial user config, and returns a single, deeply merged config object, where the user
|
|
452
|
+
* config takes priority over the defaults in all cases (only an `undefined` value in the user config will be
|
|
453
|
+
* overwritten by the defaults, all other falsey values from the user will be respected).
|
|
454
|
+
*/
|
|
455
|
+
function deepMergeDefaults(defaultConfigs, userConfig) {
|
|
456
|
+
let result;
|
|
457
|
+
// First merge defaultConfigs sequentially (meaning later defaults will override earlier ones)
|
|
458
|
+
for (const defaultConfig of defaultConfigs) {
|
|
459
|
+
if (!result) {
|
|
460
|
+
result = defaultConfig;
|
|
461
|
+
continue;
|
|
462
|
+
}
|
|
463
|
+
result = mergeConfig(result, defaultConfig);
|
|
464
|
+
}
|
|
465
|
+
// Finally, merge the userConfig
|
|
466
|
+
if (userConfig) {
|
|
467
|
+
result = mergeConfig(result, userConfig);
|
|
468
|
+
}
|
|
469
|
+
return result;
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* We want to prevent users from setting both the conventionalCommits shorthand and any of the related
|
|
473
|
+
* generatorOptions at the same time, since it is at best redundant, and at worst invalid.
|
|
474
|
+
*/
|
|
475
|
+
function hasInvalidConventionalCommitsConfig(userConfig) {
|
|
476
|
+
// at the root
|
|
477
|
+
if (userConfig.version?.conventionalCommits === true &&
|
|
478
|
+
(userConfig.version?.generatorOptions?.currentVersionResolver ||
|
|
479
|
+
userConfig.version?.generatorOptions?.specifierSource)) {
|
|
480
|
+
return true;
|
|
481
|
+
}
|
|
482
|
+
// within any groups
|
|
483
|
+
if (userConfig.groups) {
|
|
484
|
+
for (const group of Object.values(userConfig.groups)) {
|
|
485
|
+
if (group.version?.conventionalCommits === true &&
|
|
486
|
+
(group.version?.generatorOptions?.currentVersionResolver ||
|
|
487
|
+
group.version?.generatorOptions?.specifierSource)) {
|
|
488
|
+
return true;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
return false;
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* We want to prevent users from setting both the global and granular git configurations. Users should prefer the
|
|
496
|
+
* global configuration if using the top level nx release command and the granular configuration if using
|
|
497
|
+
* the subcommands or the programmatic API.
|
|
498
|
+
*/
|
|
499
|
+
function hasInvalidGitConfig(userConfig) {
|
|
500
|
+
return (!!userConfig.git && !!(userConfig.version?.git || userConfig.changelog?.git));
|
|
501
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ProjectGraph } from '../../../config/project-graph';
|
|
2
|
+
import { NxReleaseConfig } from './config';
|
|
3
|
+
export type ReleaseGroupWithName = NxReleaseConfig['groups'][string] & {
|
|
4
|
+
name: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function filterReleaseGroups(projectGraph: ProjectGraph, nxReleaseConfig: NxReleaseConfig, projectsFilter?: string[], groupsFilter?: string[]): {
|
|
7
|
+
error: null | {
|
|
8
|
+
title: string;
|
|
9
|
+
bodyLines?: string[];
|
|
10
|
+
};
|
|
11
|
+
releaseGroups: ReleaseGroupWithName[];
|
|
12
|
+
releaseGroupToFilteredProjects: Map<ReleaseGroupWithName, Set<string>>;
|
|
13
|
+
};
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.filterReleaseGroups = void 0;
|
|
4
|
+
const find_matching_projects_1 = require("../../../utils/find-matching-projects");
|
|
5
|
+
const output_1 = require("../../../utils/output");
|
|
6
|
+
const config_1 = require("./config");
|
|
7
|
+
function filterReleaseGroups(projectGraph, nxReleaseConfig, projectsFilter, groupsFilter) {
|
|
8
|
+
let releaseGroups = Object.entries(nxReleaseConfig.groups).map(([name, group]) => {
|
|
9
|
+
return {
|
|
10
|
+
...group,
|
|
11
|
+
name,
|
|
12
|
+
};
|
|
13
|
+
});
|
|
14
|
+
const filteredProjectToReleaseGroup = new Map();
|
|
15
|
+
const releaseGroupToFilteredProjects = new Map();
|
|
16
|
+
for (const releaseGroup of releaseGroups) {
|
|
17
|
+
for (const project of releaseGroup.projects) {
|
|
18
|
+
filteredProjectToReleaseGroup.set(project, releaseGroup);
|
|
19
|
+
if (!releaseGroupToFilteredProjects.has(releaseGroup)) {
|
|
20
|
+
releaseGroupToFilteredProjects.set(releaseGroup, new Set());
|
|
21
|
+
}
|
|
22
|
+
releaseGroupToFilteredProjects.get(releaseGroup).add(project);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* User is filtering to a subset of projects. We need to make sure that what they have provided can be reconciled
|
|
27
|
+
* against their configuration in terms of release groups.
|
|
28
|
+
*/
|
|
29
|
+
if (projectsFilter?.length) {
|
|
30
|
+
const matchingProjectsForFilter = (0, find_matching_projects_1.findMatchingProjects)(projectsFilter, projectGraph.nodes);
|
|
31
|
+
if (!matchingProjectsForFilter.length) {
|
|
32
|
+
return {
|
|
33
|
+
error: {
|
|
34
|
+
title: `Your --projects filter "${projectsFilter}" did not match any projects in the workspace`,
|
|
35
|
+
},
|
|
36
|
+
releaseGroups: [],
|
|
37
|
+
releaseGroupToFilteredProjects,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// Remove any non-matching projects from filteredProjectToReleaseGroup
|
|
41
|
+
for (const project of filteredProjectToReleaseGroup.keys()) {
|
|
42
|
+
if (!matchingProjectsForFilter.includes(project)) {
|
|
43
|
+
filteredProjectToReleaseGroup.delete(project);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Filter out any non-matching projects from the release group to filtered projects map
|
|
47
|
+
for (const releaseGroup of releaseGroups) {
|
|
48
|
+
releaseGroup.projects
|
|
49
|
+
.filter((p) => !matchingProjectsForFilter.includes(p))
|
|
50
|
+
.forEach((p) => releaseGroupToFilteredProjects.get(releaseGroup).delete(p));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* If there are release groups specified, each filtered project must match at least one release
|
|
54
|
+
* group, otherwise the command + config combination is invalid.
|
|
55
|
+
*/
|
|
56
|
+
if (releaseGroups.length) {
|
|
57
|
+
const unmatchedProjects = matchingProjectsForFilter.filter((p) => !filteredProjectToReleaseGroup.has(p));
|
|
58
|
+
if (unmatchedProjects.length) {
|
|
59
|
+
return {
|
|
60
|
+
error: {
|
|
61
|
+
title: `The following projects which match your projects filter "${projectsFilter}" did not match any configured release groups:`,
|
|
62
|
+
bodyLines: unmatchedProjects.map((p) => `- ${p}`),
|
|
63
|
+
},
|
|
64
|
+
releaseGroups: [],
|
|
65
|
+
releaseGroupToFilteredProjects,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* If the user is filtering to a subset of projects, we need to make sure that they are all within release groups
|
|
71
|
+
* with "independent" configured for their projectsRelationship. If not, the filtering is invalid, and they should instead
|
|
72
|
+
* be targeting the release groups directly using the --group flag, or they should update their configuration to
|
|
73
|
+
* make the projects they were trying to filter be independently releasable.
|
|
74
|
+
*/
|
|
75
|
+
const releaseGroupsForFilteredProjects = Array.from(new Set(Array.from(filteredProjectToReleaseGroup.values())));
|
|
76
|
+
const releaseGroupsThatAreNotIndependent = releaseGroupsForFilteredProjects.filter((rg) => rg.projectsRelationship !== 'independent');
|
|
77
|
+
if (releaseGroupsThatAreNotIndependent.length) {
|
|
78
|
+
// Special handling for IMPLICIT_DEFAULT_RELEASE_GROUP
|
|
79
|
+
if (releaseGroupsThatAreNotIndependent.length === 1 &&
|
|
80
|
+
releaseGroupsThatAreNotIndependent[0].name ===
|
|
81
|
+
config_1.IMPLICIT_DEFAULT_RELEASE_GROUP) {
|
|
82
|
+
return {
|
|
83
|
+
error: {
|
|
84
|
+
title: `In order to release specific projects independently with --projects those projects must be configured appropriately. For example, by setting \`"projectsRelationship": "independent"\` in your nx.json config.`,
|
|
85
|
+
bodyLines: [],
|
|
86
|
+
},
|
|
87
|
+
releaseGroups: [],
|
|
88
|
+
releaseGroupToFilteredProjects,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
error: {
|
|
93
|
+
title: `Your --projects filter "${projectsFilter}" matched projects in the following release groups which do not have "independent" configured for their "projectsRelationship":`,
|
|
94
|
+
bodyLines: releaseGroupsThatAreNotIndependent.map((rg) => `- ${rg.name}`),
|
|
95
|
+
},
|
|
96
|
+
releaseGroups: [],
|
|
97
|
+
releaseGroupToFilteredProjects,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
output_1.output.note({
|
|
101
|
+
title: `Your filter "${projectsFilter}" matched the following projects:`,
|
|
102
|
+
bodyLines: matchingProjectsForFilter.map((p) => {
|
|
103
|
+
const releaseGroupForProject = filteredProjectToReleaseGroup.get(p);
|
|
104
|
+
if (releaseGroupForProject.name === config_1.IMPLICIT_DEFAULT_RELEASE_GROUP) {
|
|
105
|
+
return `- ${p}`;
|
|
106
|
+
}
|
|
107
|
+
return `- ${p} (release group "${releaseGroupForProject.name}")`;
|
|
108
|
+
}),
|
|
109
|
+
});
|
|
110
|
+
// Filter the releaseGroups collection appropriately
|
|
111
|
+
for (const [releaseGroupWithName, matchingProjects,] of releaseGroupToFilteredProjects.entries()) {
|
|
112
|
+
if (matchingProjects.size === 0) {
|
|
113
|
+
releaseGroupToFilteredProjects.delete(releaseGroupWithName);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
releaseGroups = releaseGroups.filter((rg) => releaseGroupToFilteredProjects.get(rg)?.size > 0);
|
|
117
|
+
return {
|
|
118
|
+
error: null,
|
|
119
|
+
releaseGroups,
|
|
120
|
+
releaseGroupToFilteredProjects,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* The user is filtering by release group
|
|
125
|
+
*/
|
|
126
|
+
if (groupsFilter?.length) {
|
|
127
|
+
releaseGroups
|
|
128
|
+
.filter((g) => !groupsFilter.includes(g.name))
|
|
129
|
+
.forEach((g) => releaseGroupToFilteredProjects.delete(g));
|
|
130
|
+
releaseGroups = releaseGroups.filter((g) => groupsFilter.includes(g.name));
|
|
131
|
+
}
|
|
132
|
+
if (!releaseGroups.length) {
|
|
133
|
+
return {
|
|
134
|
+
error: {
|
|
135
|
+
title: groupsFilter
|
|
136
|
+
? `Your --groups filter "${groupsFilter}" did not match any release groups in the workspace`
|
|
137
|
+
: // Getting to this point should be impossible, as we should have explicitly handled any errors/invalid config by now
|
|
138
|
+
`No projects could be matched for versioning, please report this case and include your nx.json config and command line arguments`,
|
|
139
|
+
},
|
|
140
|
+
releaseGroups: [],
|
|
141
|
+
releaseGroupToFilteredProjects,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
error: null,
|
|
146
|
+
releaseGroups,
|
|
147
|
+
releaseGroupToFilteredProjects,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
exports.filterReleaseGroups = filterReleaseGroups;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @public
|
|
3
|
+
*/
|
|
4
|
+
export { releaseChangelog } from './changelog';
|
|
5
|
+
/**
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
export { releasePublish } from './publish';
|
|
9
|
+
/**
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export { releaseVersion } from './version';
|
|
13
|
+
/**
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
export { release } from './release';
|