@nrwl/workspace 13.10.0-beta.1 → 13.10.0-beta.4
Sign up to get free protection for your applications and to get access to all the features.
- package/index.d.ts +3 -5
- package/index.js +4 -8
- package/index.js.map +1 -1
- package/migrations.json +12 -6
- package/package.json +5 -8
- package/src/generators/move/lib/update-cypress-json.d.ts +1 -2
- package/src/generators/move/lib/update-cypress-json.js.map +1 -1
- package/src/generators/move/lib/update-project-root-files.js +3 -3
- package/src/generators/move/lib/update-project-root-files.js.map +1 -1
- package/src/generators/move/lib/update-storybook-config.js +3 -3
- package/src/generators/move/lib/update-storybook-config.js.map +1 -1
- package/src/generators/remove/lib/check-dependencies.js +3 -3
- package/src/generators/remove/lib/check-dependencies.js.map +1 -1
- package/src/generators/utils/decorate-angular-cli.js__tmpl__ +1 -1
- package/src/generators/workspace/files/nx.json__tmpl__ +1 -1
- package/src/migrations/update-13-10-0/update-decorate-cli.d.ts +3 -0
- package/src/migrations/update-13-10-0/update-decorate-cli.js +14 -0
- package/src/migrations/update-13-10-0/update-decorate-cli.js.map +1 -0
- package/src/migrations/update-13-10-0/update-tasks-runner.d.ts +3 -0
- package/src/migrations/update-13-10-0/update-tasks-runner.js +16 -0
- package/src/migrations/update-13-10-0/update-tasks-runner.js.map +1 -0
- package/src/tasks-runner/cache.d.ts +1 -40
- package/src/tasks-runner/cache.js +2 -280
- package/src/tasks-runner/cache.js.map +1 -1
- package/src/tasks-runner/life-cycle.d.ts +1 -43
- package/src/tasks-runner/life-cycle.js +2 -68
- package/src/tasks-runner/life-cycle.js.map +1 -1
- package/src/tasks-runner/tasks-runner-v2.d.ts +1 -18
- package/src/tasks-runner/tasks-runner-v2.js +4 -39
- package/src/tasks-runner/tasks-runner-v2.js.map +1 -1
- package/src/tasks-runner/utils.d.ts +1 -25
- package/src/tasks-runner/utils.js +2 -214
- package/src/tasks-runner/utils.js.map +1 -1
- package/src/tslint/nxEnforceModuleBoundariesRule.d.ts +1 -1
- package/src/tslint/nxEnforceModuleBoundariesRule.js +10 -11
- package/src/tslint/nxEnforceModuleBoundariesRule.js.map +1 -1
- package/src/utilities/assets.d.ts +0 -8
- package/src/utilities/assets.js +1 -23
- package/src/utilities/assets.js.map +1 -1
- package/src/utilities/buildable-libs-utils.d.ts +1 -0
- package/src/utilities/buildable-libs-utils.js +27 -20
- package/src/utilities/buildable-libs-utils.js.map +1 -1
- package/src/utilities/fileutils.d.ts +0 -3
- package/src/utilities/fileutils.js +1 -8
- package/src/utilities/fileutils.js.map +1 -1
- package/src/utilities/generate-globs.js +2 -2
- package/src/utilities/generate-globs.js.map +1 -1
- package/src/utilities/output.d.ts +1 -61
- package/src/utilities/output.js +2 -167
- package/src/utilities/output.js.map +1 -1
- package/src/utilities/plugins/plugin-capabilities.js +2 -2
- package/src/utilities/plugins/plugin-capabilities.js.map +1 -1
- package/src/utilities/typescript/compilation.js +1 -1
- package/src/utilities/typescript/compilation.js.map +1 -1
- package/src/utilities/typescript.js +5 -5
- package/src/utilities/typescript.js.map +1 -1
- package/src/utils/ast-utils.d.ts +1 -2
- package/src/utils/ast-utils.js.map +1 -1
- package/src/utils/project-type.d.ts +1 -1
- package/src/utils/rules/format-files.js +6 -6
- package/src/utils/rules/format-files.js.map +1 -1
- package/src/utils/runtime-lint-utils.d.ts +2 -3
- package/src/utils/runtime-lint-utils.js +2 -2
- package/src/utils/runtime-lint-utils.js.map +1 -1
- package/src/utils/testing-utils.js +1 -1
- package/src/utils/testing-utils.js.map +1 -1
- package/src/utils/versions.js +1 -1
- package/tasks-runners/default.d.ts +1 -1
- package/tasks-runners/default.js +1 -1
- package/src/command-line/affected.d.ts +0 -3
- package/src/command-line/affected.js +0 -117
- package/src/command-line/affected.js.map +0 -1
- package/src/command-line/connect-to-nx-cloud.d.ts +0 -2
- package/src/command-line/connect-to-nx-cloud.js +0 -78
- package/src/command-line/connect-to-nx-cloud.js.map +0 -1
- package/src/command-line/daemon.d.ts +0 -2
- package/src/command-line/daemon.js +0 -23
- package/src/command-line/daemon.js.map +0 -1
- package/src/command-line/dep-graph.d.ts +0 -24
- package/src/command-line/dep-graph.js +0 -370
- package/src/command-line/dep-graph.js.map +0 -1
- package/src/command-line/examples.d.ts +0 -5
- package/src/command-line/examples.js +0 -283
- package/src/command-line/examples.js.map +0 -1
- package/src/command-line/format.d.ts +0 -7
- package/src/command-line/format.js +0 -206
- package/src/command-line/format.js.map +0 -1
- package/src/command-line/lint.d.ts +0 -1
- package/src/command-line/lint.js +0 -32
- package/src/command-line/lint.js.map +0 -1
- package/src/command-line/list.d.ts +0 -13
- package/src/command-line/list.js +0 -41
- package/src/command-line/list.js.map +0 -1
- package/src/command-line/nx-commands.d.ts +0 -9
- package/src/command-line/nx-commands.js +0 -426
- package/src/command-line/nx-commands.js.map +0 -1
- package/src/command-line/print-affected.d.ts +0 -6
- package/src/command-line/print-affected.js +0 -82
- package/src/command-line/print-affected.js.map +0 -1
- package/src/command-line/report.d.ts +0 -24
- package/src/command-line/report.js +0 -135
- package/src/command-line/report.js.map +0 -1
- package/src/command-line/reset.d.ts +0 -1
- package/src/command-line/reset.js +0 -20
- package/src/command-line/reset.js.map +0 -1
- package/src/command-line/run-many.d.ts +0 -3
- package/src/command-line/run-many.js +0 -61
- package/src/command-line/run-many.js.map +0 -1
- package/src/command-line/run-one.d.ts +0 -6
- package/src/command-line/run-one.js +0 -31
- package/src/command-line/run-one.js.map +0 -1
- package/src/command-line/shared.d.ts +0 -5
- package/src/command-line/shared.js +0 -75
- package/src/command-line/shared.js.map +0 -1
- package/src/command-line/supported-nx-commands.d.ts +0 -1
- package/src/command-line/supported-nx-commands.js +0 -35
- package/src/command-line/supported-nx-commands.js.map +0 -1
- package/src/command-line/utils.d.ts +0 -40
- package/src/command-line/utils.js +0 -157
- package/src/command-line/utils.js.map +0 -1
- package/src/command-line/workspace-generators.d.ts +0 -1
- package/src/command-line/workspace-generators.js +0 -145
- package/src/command-line/workspace-generators.js.map +0 -1
- package/src/command-line/workspace-integrity-checks.d.ts +0 -11
- package/src/command-line/workspace-integrity-checks.js +0 -60
- package/src/command-line/workspace-integrity-checks.js.map +0 -1
- package/src/core/affected-project-graph/affected-project-graph-models.d.ts +0 -10
- package/src/core/affected-project-graph/affected-project-graph-models.js +0 -3
- package/src/core/affected-project-graph/affected-project-graph-models.js.map +0 -1
- package/src/core/affected-project-graph/affected-project-graph.d.ts +0 -3
- package/src/core/affected-project-graph/affected-project-graph.js +0 -88
- package/src/core/affected-project-graph/affected-project-graph.js.map +0 -1
- package/src/core/affected-project-graph/index.d.ts +0 -2
- package/src/core/affected-project-graph/index.js +0 -6
- package/src/core/affected-project-graph/index.js.map +0 -1
- package/src/core/affected-project-graph/locators/implicit-json-changes.d.ts +0 -4
- package/src/core/affected-project-graph/locators/implicit-json-changes.js +0 -54
- package/src/core/affected-project-graph/locators/implicit-json-changes.js.map +0 -1
- package/src/core/affected-project-graph/locators/npm-packages.d.ts +0 -4
- package/src/core/affected-project-graph/locators/npm-packages.js +0 -35
- package/src/core/affected-project-graph/locators/npm-packages.js.map +0 -1
- package/src/core/affected-project-graph/locators/tsconfig-json-changes.d.ts +0 -4
- package/src/core/affected-project-graph/locators/tsconfig-json-changes.js +0 -64
- package/src/core/affected-project-graph/locators/tsconfig-json-changes.js.map +0 -1
- package/src/core/affected-project-graph/locators/workspace-json-changes.d.ts +0 -4
- package/src/core/affected-project-graph/locators/workspace-json-changes.js +0 -48
- package/src/core/affected-project-graph/locators/workspace-json-changes.js.map +0 -1
- package/src/core/affected-project-graph/locators/workspace-projects.d.ts +0 -3
- package/src/core/affected-project-graph/locators/workspace-projects.js +0 -40
- package/src/core/affected-project-graph/locators/workspace-projects.js.map +0 -1
- package/src/core/assert-workspace-validity.d.ts +0 -2
- package/src/core/assert-workspace-validity.js +0 -67
- package/src/core/assert-workspace-validity.js.map +0 -1
- package/src/core/dep-graph/3rdpartylicenses.txt +0 -732
- package/src/core/dep-graph/index.html +0 -16
- package/src/core/dep-graph/main.esm.js +0 -2
- package/src/core/dep-graph/main.esm.js.LICENSE.txt +0 -39
- package/src/core/dep-graph/polyfills.esm.js +0 -1
- package/src/core/dep-graph/runtime.esm.js +0 -1
- package/src/core/dep-graph/styles.css +0 -3
- package/src/core/file-map-utils.d.ts +0 -10
- package/src/core/file-map-utils.js +0 -80
- package/src/core/file-map-utils.js.map +0 -1
- package/src/core/file-utils.d.ts +0 -32
- package/src/core/file-utils.js +0 -160
- package/src/core/file-utils.js.map +0 -1
- package/src/core/hasher/file-hasher-base.d.ts +0 -12
- package/src/core/hasher/file-hasher-base.js +0 -68
- package/src/core/hasher/file-hasher-base.js.map +0 -1
- package/src/core/hasher/file-hasher.d.ts +0 -2
- package/src/core/hasher/file-hasher.js +0 -22
- package/src/core/hasher/file-hasher.js.map +0 -1
- package/src/core/hasher/git-based-file-hasher.d.ts +0 -10
- package/src/core/hasher/git-based-file-hasher.js +0 -50
- package/src/core/hasher/git-based-file-hasher.js.map +0 -1
- package/src/core/hasher/git-hasher.d.ts +0 -7
- package/src/core/hasher/git-hasher.js +0 -134
- package/src/core/hasher/git-hasher.js.map +0 -1
- package/src/core/hasher/hasher.d.ts +0 -63
- package/src/core/hasher/hasher.js +0 -367
- package/src/core/hasher/hasher.js.map +0 -1
- package/src/core/hasher/hashing-impl.d.ts +0 -5
- package/src/core/hasher/hashing-impl.js +0 -23
- package/src/core/hasher/hashing-impl.js.map +0 -1
- package/src/core/hasher/node-based-file-hasher.d.ts +0 -7
- package/src/core/hasher/node-based-file-hasher.js +0 -78
- package/src/core/hasher/node-based-file-hasher.js.map +0 -1
- package/src/core/normalize-nx-json.d.ts +0 -8
- package/src/core/normalize-nx-json.js +0 -38
- package/src/core/normalize-nx-json.js.map +0 -1
- package/src/core/nx-deps/nx-deps-cache.d.ts +0 -39
- package/src/core/nx-deps/nx-deps-cache.js +0 -164
- package/src/core/nx-deps/nx-deps-cache.js.map +0 -1
- package/src/core/project-graph/build-dependencies/build-explicit-typescript-and-package-json-dependencies.d.ts +0 -5
- package/src/core/project-graph/build-dependencies/build-explicit-typescript-and-package-json-dependencies.js +0 -19
- package/src/core/project-graph/build-dependencies/build-explicit-typescript-and-package-json-dependencies.js.map +0 -1
- package/src/core/project-graph/build-dependencies/explicit-package-json-dependencies.d.ts +0 -3
- package/src/core/project-graph/build-dependencies/explicit-package-json-dependencies.js +0 -73
- package/src/core/project-graph/build-dependencies/explicit-package-json-dependencies.js.map +0 -1
- package/src/core/project-graph/build-dependencies/explicit-project-dependencies.d.ts +0 -3
- package/src/core/project-graph/build-dependencies/explicit-project-dependencies.js +0 -27
- package/src/core/project-graph/build-dependencies/explicit-project-dependencies.js.map +0 -1
- package/src/core/project-graph/build-dependencies/implicit-project-dependencies.d.ts +0 -2
- package/src/core/project-graph/build-dependencies/implicit-project-dependencies.js +0 -20
- package/src/core/project-graph/build-dependencies/implicit-project-dependencies.js.map +0 -1
- package/src/core/project-graph/build-dependencies/index.d.ts +0 -3
- package/src/core/project-graph/build-dependencies/index.js +0 -7
- package/src/core/project-graph/build-dependencies/index.js.map +0 -1
- package/src/core/project-graph/build-dependencies/typescript-import-locator.d.ts +0 -11
- package/src/core/project-graph/build-dependencies/typescript-import-locator.js +0 -114
- package/src/core/project-graph/build-dependencies/typescript-import-locator.js.map +0 -1
- package/src/core/project-graph/build-nodes/index.d.ts +0 -2
- package/src/core/project-graph/build-nodes/index.js +0 -6
- package/src/core/project-graph/build-nodes/index.js.map +0 -1
- package/src/core/project-graph/build-nodes/npm-packages.d.ts +0 -2
- package/src/core/project-graph/build-nodes/npm-packages.js +0 -22
- package/src/core/project-graph/build-nodes/npm-packages.js.map +0 -1
- package/src/core/project-graph/build-nodes/workspace-projects.d.ts +0 -2
- package/src/core/project-graph/build-nodes/workspace-projects.js +0 -49
- package/src/core/project-graph/build-nodes/workspace-projects.js.map +0 -1
- package/src/core/project-graph/build-project-graph.d.ts +0 -7
- package/src/core/project-graph/build-project-graph.js +0 -231
- package/src/core/project-graph/build-project-graph.js.map +0 -1
- package/src/core/project-graph/daemon/cache.d.ts +0 -6
- package/src/core/project-graph/daemon/cache.js +0 -56
- package/src/core/project-graph/daemon/cache.js.map +0 -1
- package/src/core/project-graph/daemon/client/client.d.ts +0 -26
- package/src/core/project-graph/daemon/client/client.js +0 -200
- package/src/core/project-graph/daemon/client/client.js.map +0 -1
- package/src/core/project-graph/daemon/client/exec-is-server-available.d.ts +0 -1
- package/src/core/project-graph/daemon/client/exec-is-server-available.js +0 -13
- package/src/core/project-graph/daemon/client/exec-is-server-available.js.map +0 -1
- package/src/core/project-graph/daemon/client/generate-help-output.d.ts +0 -1
- package/src/core/project-graph/daemon/client/generate-help-output.js +0 -31
- package/src/core/project-graph/daemon/client/generate-help-output.js.map +0 -1
- package/src/core/project-graph/daemon/server/logger.d.ts +0 -18
- package/src/core/project-graph/daemon/server/logger.js +0 -38
- package/src/core/project-graph/daemon/server/logger.js.map +0 -1
- package/src/core/project-graph/daemon/server/project-graph-incremental-recomputation.d.ts +0 -8
- package/src/core/project-graph/daemon/server/project-graph-incremental-recomputation.js +0 -191
- package/src/core/project-graph/daemon/server/project-graph-incremental-recomputation.js.map +0 -1
- package/src/core/project-graph/daemon/server/server.d.ts +0 -4
- package/src/core/project-graph/daemon/server/server.js +0 -236
- package/src/core/project-graph/daemon/server/server.js.map +0 -1
- package/src/core/project-graph/daemon/server/shutdown-utils.d.ts +0 -12
- package/src/core/project-graph/daemon/server/shutdown-utils.js +0 -32
- package/src/core/project-graph/daemon/server/shutdown-utils.js.map +0 -1
- package/src/core/project-graph/daemon/server/start.d.ts +0 -1
- package/src/core/project-graph/daemon/server/start.js +0 -19
- package/src/core/project-graph/daemon/server/start.js.map +0 -1
- package/src/core/project-graph/daemon/server/stop.d.ts +0 -1
- package/src/core/project-graph/daemon/server/stop.js +0 -19
- package/src/core/project-graph/daemon/server/stop.js.map +0 -1
- package/src/core/project-graph/daemon/server/watcher.d.ts +0 -12
- package/src/core/project-graph/daemon/server/watcher.js +0 -158
- package/src/core/project-graph/daemon/server/watcher.js.map +0 -1
- package/src/core/project-graph/daemon/socket-utils.d.ts +0 -15
- package/src/core/project-graph/daemon/socket-utils.js +0 -38
- package/src/core/project-graph/daemon/socket-utils.js.map +0 -1
- package/src/core/project-graph/daemon/tmp-dir.d.ts +0 -6
- package/src/core/project-graph/daemon/tmp-dir.js +0 -37
- package/src/core/project-graph/daemon/tmp-dir.js.map +0 -1
- package/src/core/project-graph/index.d.ts +0 -3
- package/src/core/project-graph/index.js +0 -10
- package/src/core/project-graph/index.js.map +0 -1
- package/src/core/project-graph/operators.d.ts +0 -14
- package/src/core/project-graph/operators.js +0 -119
- package/src/core/project-graph/operators.js.map +0 -1
- package/src/core/project-graph/project-graph-models.d.ts +0 -8
- package/src/core/project-graph/project-graph-models.js +0 -12
- package/src/core/project-graph/project-graph-models.js.map +0 -1
- package/src/core/project-graph/project-graph-worker.d.ts +0 -1
- package/src/core/project-graph/project-graph-worker.js +0 -19
- package/src/core/project-graph/project-graph-worker.js.map +0 -1
- package/src/core/project-graph/project-graph.d.ts +0 -16
- package/src/core/project-graph/project-graph.js +0 -167
- package/src/core/project-graph/project-graph.js.map +0 -1
- package/src/core/shared-interfaces.d.ts +0 -11
- package/src/core/shared-interfaces.js +0 -3
- package/src/core/shared-interfaces.js.map +0 -1
- package/src/core/target-project-locator.d.ts +0 -36
- package/src/core/target-project-locator.js +0 -164
- package/src/core/target-project-locator.js.map +0 -1
- package/src/init/init.d.ts +0 -1
- package/src/init/init.js +0 -13
- package/src/init/init.js.map +0 -1
- package/src/tasks-runner/batch/batch-messages.d.ts +0 -24
- package/src/tasks-runner/batch/batch-messages.js +0 -9
- package/src/tasks-runner/batch/batch-messages.js.map +0 -1
- package/src/tasks-runner/batch/run-batch.d.ts +0 -1
- package/src/tasks-runner/batch/run-batch.js +0 -57
- package/src/tasks-runner/batch/run-batch.js.map +0 -1
- package/src/tasks-runner/default-reporter.d.ts +0 -11
- package/src/tasks-runner/default-reporter.js +0 -79
- package/src/tasks-runner/default-reporter.js.map +0 -1
- package/src/tasks-runner/default-tasks-runner.d.ts +0 -19
- package/src/tasks-runner/default-tasks-runner.js +0 -48
- package/src/tasks-runner/default-tasks-runner.js.map +0 -1
- package/src/tasks-runner/empty-reporter.d.ts +0 -10
- package/src/tasks-runner/empty-reporter.js +0 -13
- package/src/tasks-runner/empty-reporter.js.map +0 -1
- package/src/tasks-runner/forked-process-task-runner.d.ts +0 -36
- package/src/tasks-runner/forked-process-task-runner.js +0 -257
- package/src/tasks-runner/forked-process-task-runner.js.map +0 -1
- package/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.d.ts +0 -25
- package/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.js +0 -349
- package/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.js.map +0 -1
- package/src/tasks-runner/life-cycles/dynamic-run-one-terminal-output-life-cycle.d.ts +0 -25
- package/src/tasks-runner/life-cycles/dynamic-run-one-terminal-output-life-cycle.js +0 -231
- package/src/tasks-runner/life-cycles/dynamic-run-one-terminal-output-life-cycle.js.map +0 -1
- package/src/tasks-runner/life-cycles/empty-terminal-output-life-cycle.d.ts +0 -6
- package/src/tasks-runner/life-cycles/empty-terminal-output-life-cycle.js +0 -19
- package/src/tasks-runner/life-cycles/empty-terminal-output-life-cycle.js.map +0 -1
- package/src/tasks-runner/life-cycles/pretty-time.d.ts +0 -4
- package/src/tasks-runner/life-cycles/pretty-time.js +0 -75
- package/src/tasks-runner/life-cycles/pretty-time.js.map +0 -1
- package/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.d.ts +0 -33
- package/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.js +0 -110
- package/src/tasks-runner/life-cycles/static-run-many-terminal-output-life-cycle.js.map +0 -1
- package/src/tasks-runner/life-cycles/static-run-one-terminal-output-life-cycle.d.ts +0 -31
- package/src/tasks-runner/life-cycles/static-run-one-terminal-output-life-cycle.js +0 -97
- package/src/tasks-runner/life-cycles/static-run-one-terminal-output-life-cycle.js.map +0 -1
- package/src/tasks-runner/life-cycles/task-profiling-life-cycle.d.ts +0 -19
- package/src/tasks-runner/life-cycles/task-profiling-life-cycle.js +0 -67
- package/src/tasks-runner/life-cycles/task-profiling-life-cycle.js.map +0 -1
- package/src/tasks-runner/life-cycles/task-timings-life-cycle.d.ts +0 -13
- package/src/tasks-runner/life-cycles/task-timings-life-cycle.js +0 -33
- package/src/tasks-runner/life-cycles/task-timings-life-cycle.js.map +0 -1
- package/src/tasks-runner/remove-old-cache-records.d.ts +0 -1
- package/src/tasks-runner/remove-old-cache-records.js +0 -62
- package/src/tasks-runner/remove-old-cache-records.js.map +0 -1
- package/src/tasks-runner/reporter.d.ts +0 -14
- package/src/tasks-runner/reporter.js +0 -11
- package/src/tasks-runner/reporter.js.map +0 -1
- package/src/tasks-runner/run-command.d.ts +0 -19
- package/src/tasks-runner/run-command.js +0 -353
- package/src/tasks-runner/run-command.js.map +0 -1
- package/src/tasks-runner/run-one-reporter.d.ts +0 -12
- package/src/tasks-runner/run-one-reporter.js +0 -68
- package/src/tasks-runner/run-one-reporter.js.map +0 -1
- package/src/tasks-runner/task-graph-creator.d.ts +0 -11
- package/src/tasks-runner/task-graph-creator.js +0 -71
- package/src/tasks-runner/task-graph-creator.js.map +0 -1
- package/src/tasks-runner/task-orchestrator.d.ts +0 -37
- package/src/tasks-runner/task-orchestrator.js +0 -299
- package/src/tasks-runner/task-orchestrator.js.map +0 -1
- package/src/tasks-runner/tasks-runner.d.ts +0 -44
- package/src/tasks-runner/tasks-runner.js +0 -15
- package/src/tasks-runner/tasks-runner.js.map +0 -1
- package/src/tasks-runner/tasks-schedule.d.ts +0 -32
- package/src/tasks-runner/tasks-schedule.js +0 -130
- package/src/tasks-runner/tasks-schedule.js.map +0 -1
- package/src/utilities/array.d.ts +0 -17
- package/src/utilities/array.js +0 -26
- package/src/utilities/array.js.map +0 -1
- package/src/utilities/cache-directory.d.ts +0 -1
- package/src/utilities/cache-directory.js +0 -34
- package/src/utilities/cache-directory.js.map +0 -1
- package/src/utilities/is_ci.d.ts +0 -1
- package/src/utilities/is_ci.js +0 -21
- package/src/utilities/is_ci.js.map +0 -1
- package/src/utilities/json-diff.d.ts +0 -17
- package/src/utilities/json-diff.js +0 -112
- package/src/utilities/json-diff.js.map +0 -1
- package/src/utilities/perf-logging.d.ts +0 -1
- package/src/utilities/perf-logging.js +0 -12
- package/src/utilities/perf-logging.js.map +0 -1
- package/src/utilities/project-graph-utils.d.ts +0 -11
- package/src/utilities/project-graph-utils.js +0 -95
- package/src/utilities/project-graph-utils.js.map +0 -1
- package/src/utilities/strip-source-code.d.ts +0 -2
- package/src/utilities/strip-source-code.js +0 -85
- package/src/utilities/strip-source-code.js.map +0 -1
@@ -1,349 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.createRunManyDynamicOutputRenderer = void 0;
|
4
|
-
const tslib_1 = require("tslib");
|
5
|
-
const cliCursor = require("cli-cursor");
|
6
|
-
const cli_spinners_1 = require("cli-spinners");
|
7
|
-
const os_1 = require("os");
|
8
|
-
const readline = require("readline");
|
9
|
-
const output_1 = require("../../utilities/output");
|
10
|
-
const pretty_time_1 = require("./pretty-time");
|
11
|
-
/**
|
12
|
-
* The following function is responsible for creating a life cycle with dynamic
|
13
|
-
* outputs, meaning previous outputs can be rewritten or modified as new outputs
|
14
|
-
* are added. It is therefore intended for use on a user's local machines.
|
15
|
-
*
|
16
|
-
* In CI environments the static equivalent of this life cycle should be used.
|
17
|
-
*
|
18
|
-
* NOTE: output.dim() should be preferred over output.colors.gray() because it
|
19
|
-
* is much more consistently readable across different terminal color themes.
|
20
|
-
*/
|
21
|
-
function createRunManyDynamicOutputRenderer({ projectNames, tasks, args, overrides, }) {
|
22
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
23
|
-
cliCursor.hide();
|
24
|
-
let resolveRenderIsDonePromise;
|
25
|
-
const renderIsDone = new Promise((resolve) => (resolveRenderIsDonePromise = resolve)).then(() => {
|
26
|
-
clearRenderInterval();
|
27
|
-
cliCursor.show();
|
28
|
-
});
|
29
|
-
function clearRenderInterval() {
|
30
|
-
if (renderProjectRowsIntervalId) {
|
31
|
-
clearInterval(renderProjectRowsIntervalId);
|
32
|
-
}
|
33
|
-
}
|
34
|
-
process.on('exit', () => clearRenderInterval());
|
35
|
-
process.on('SIGINT', () => clearRenderInterval());
|
36
|
-
process.on('SIGTERM', () => clearRenderInterval());
|
37
|
-
process.on('SIGHUP', () => clearRenderInterval());
|
38
|
-
const lifeCycle = {};
|
39
|
-
const isVerbose = overrides.verbose === true;
|
40
|
-
const start = process.hrtime();
|
41
|
-
const figures = yield Promise.resolve().then(() => require('figures'));
|
42
|
-
const totalTasks = tasks.length;
|
43
|
-
const totalProjects = projectNames.length;
|
44
|
-
const totalDependentTasks = totalTasks - totalProjects;
|
45
|
-
const targetName = args.target;
|
46
|
-
const projectRows = projectNames.map((projectName) => {
|
47
|
-
return {
|
48
|
-
projectName,
|
49
|
-
status: 'pending',
|
50
|
-
};
|
51
|
-
});
|
52
|
-
const tasksToTerminalOutputs = {};
|
53
|
-
const tasksToProcessStartTimes = {};
|
54
|
-
let hasTaskOutput = false;
|
55
|
-
let pinnedFooterNumLines = 0;
|
56
|
-
let totalCompletedTasks = 0;
|
57
|
-
let totalSuccessfulTasks = 0;
|
58
|
-
let totalFailedTasks = 0;
|
59
|
-
let totalCachedTasks = 0;
|
60
|
-
// Used to control the rendering of the spinner on each project row
|
61
|
-
let projectRowsCurrentFrame = 0;
|
62
|
-
let renderProjectRowsIntervalId;
|
63
|
-
const clearPinnedFooter = () => {
|
64
|
-
for (let i = 0; i < pinnedFooterNumLines; i++) {
|
65
|
-
readline.moveCursor(process.stdout, 0, -1);
|
66
|
-
readline.clearLine(process.stdout, 0);
|
67
|
-
}
|
68
|
-
};
|
69
|
-
const renderPinnedFooter = (lines, dividerColor = 'cyan') => {
|
70
|
-
let additionalLines = 0;
|
71
|
-
if (hasTaskOutput) {
|
72
|
-
output_1.output.addVerticalSeparator(dividerColor);
|
73
|
-
additionalLines += 3;
|
74
|
-
}
|
75
|
-
// Create vertical breathing room for cursor position under the pinned footer
|
76
|
-
lines.push('');
|
77
|
-
for (const line of lines) {
|
78
|
-
process.stdout.write(output_1.output.X_PADDING + line + os_1.EOL);
|
79
|
-
}
|
80
|
-
pinnedFooterNumLines = lines.length + additionalLines;
|
81
|
-
};
|
82
|
-
const printTaskResult = (task, status) => {
|
83
|
-
clearPinnedFooter();
|
84
|
-
// If this is the very first output, add some vertical breathing room
|
85
|
-
if (!hasTaskOutput) {
|
86
|
-
output_1.output.addNewline();
|
87
|
-
}
|
88
|
-
hasTaskOutput = true;
|
89
|
-
switch (status) {
|
90
|
-
case 'local-cache':
|
91
|
-
writeLine(`${output_1.output.colors.green(figures.tick) +
|
92
|
-
output_1.output.dim(' nx run ') +
|
93
|
-
task.id} ${output_1.output.dim('[local cache]')}`);
|
94
|
-
if (isVerbose) {
|
95
|
-
writeCommandOutputBlock(tasksToTerminalOutputs[task.id]);
|
96
|
-
}
|
97
|
-
break;
|
98
|
-
case 'local-cache-kept-existing':
|
99
|
-
writeLine(`${output_1.output.colors.green(figures.tick) +
|
100
|
-
output_1.output.dim(' nx run ') +
|
101
|
-
task.id} ${output_1.output.dim('[existing outputs match the cache, left as is]')}`);
|
102
|
-
if (isVerbose) {
|
103
|
-
writeCommandOutputBlock(tasksToTerminalOutputs[task.id]);
|
104
|
-
}
|
105
|
-
break;
|
106
|
-
case 'remote-cache':
|
107
|
-
writeLine(`${output_1.output.colors.green(figures.tick) +
|
108
|
-
output_1.output.dim(' nx run ') +
|
109
|
-
task.id} ${output_1.output.dim('[remote cache]')}`);
|
110
|
-
if (isVerbose) {
|
111
|
-
writeCommandOutputBlock(tasksToTerminalOutputs[task.id]);
|
112
|
-
}
|
113
|
-
break;
|
114
|
-
case 'success': {
|
115
|
-
const timeTakenText = (0, pretty_time_1.prettyTime)(process.hrtime(tasksToProcessStartTimes[task.id]));
|
116
|
-
writeLine(output_1.output.colors.green(figures.tick) +
|
117
|
-
output_1.output.dim(' nx run ') +
|
118
|
-
task.id +
|
119
|
-
output_1.output.dim(` (${timeTakenText})`));
|
120
|
-
if (isVerbose) {
|
121
|
-
writeCommandOutputBlock(tasksToTerminalOutputs[task.id]);
|
122
|
-
}
|
123
|
-
break;
|
124
|
-
}
|
125
|
-
case 'failure':
|
126
|
-
output_1.output.addNewline();
|
127
|
-
writeLine(output_1.output.colors.red(figures.cross) +
|
128
|
-
output_1.output.dim(' nx run ') +
|
129
|
-
output_1.output.colors.red(task.id));
|
130
|
-
writeCommandOutputBlock(tasksToTerminalOutputs[task.id]);
|
131
|
-
break;
|
132
|
-
}
|
133
|
-
delete tasksToTerminalOutputs[task.id];
|
134
|
-
renderPinnedFooter([]);
|
135
|
-
renderProjectRows();
|
136
|
-
};
|
137
|
-
const renderProjectRows = () => {
|
138
|
-
const max = cli_spinners_1.dots.frames.length - 1;
|
139
|
-
const curr = projectRowsCurrentFrame;
|
140
|
-
projectRowsCurrentFrame = curr >= max ? 0 : curr + 1;
|
141
|
-
const additionalFooterRows = [''];
|
142
|
-
const runningTasks = projectRows.filter((row) => row.status === 'running');
|
143
|
-
const remainingTasks = totalTasks - totalCompletedTasks;
|
144
|
-
if (runningTasks.length > 0) {
|
145
|
-
additionalFooterRows.push(output_1.output.dim(` ${output_1.output.colors.cyan(figures.arrowRight)} Executing ${runningTasks.length}/${remainingTasks} remaining tasks${runningTasks.length > 1 ? ' in parallel' : ''}...`));
|
146
|
-
additionalFooterRows.push('');
|
147
|
-
for (const projectRow of runningTasks) {
|
148
|
-
additionalFooterRows.push(` ${output_1.output.dim.cyan(cli_spinners_1.dots.frames[projectRowsCurrentFrame])} ${output_1.output.dim('nx run ') + projectRow.projectName + ':' + targetName}`);
|
149
|
-
}
|
150
|
-
/**
|
151
|
-
* Reduce layout thrashing by ensuring that there is a relatively consistent
|
152
|
-
* height for the area in which the task rows are rendered.
|
153
|
-
*
|
154
|
-
* We can look at the parallel flag to know how many rows are likely to be
|
155
|
-
* needed in the common case and always render that at least that many.
|
156
|
-
*/
|
157
|
-
if (totalCompletedTasks !== totalTasks &&
|
158
|
-
Number.isInteger(args.parallel) &&
|
159
|
-
runningTasks.length < args.parallel) {
|
160
|
-
// Don't bother with this optimization if there are fewer tasks remaining than rows required
|
161
|
-
if (remainingTasks >= args.parallel) {
|
162
|
-
for (let i = runningTasks.length; i < args.parallel; i++) {
|
163
|
-
additionalFooterRows.push('');
|
164
|
-
}
|
165
|
-
}
|
166
|
-
}
|
167
|
-
}
|
168
|
-
if (totalSuccessfulTasks > 0 || totalFailedTasks > 0) {
|
169
|
-
additionalFooterRows.push('');
|
170
|
-
}
|
171
|
-
if (totalFailedTasks > 0) {
|
172
|
-
additionalFooterRows.push(` ${output_1.output.colors.red(figures.cross)} ${totalFailedTasks}${`/${totalCompletedTasks}`} failed`);
|
173
|
-
}
|
174
|
-
if (totalSuccessfulTasks > 0) {
|
175
|
-
additionalFooterRows.push(` ${output_1.output.colors.green(figures.tick)} ${totalSuccessfulTasks}${`/${totalCompletedTasks}`} succeeded ${output_1.output.dim(`[${totalCachedTasks} read from cache]`)}`);
|
176
|
-
}
|
177
|
-
clearPinnedFooter();
|
178
|
-
if (additionalFooterRows.length > 1) {
|
179
|
-
let text = `Running target ${output_1.output.bold.cyan(targetName)} for ${output_1.output.bold.cyan(totalProjects)} projects`;
|
180
|
-
if (totalDependentTasks > 0) {
|
181
|
-
text += ` and ${output_1.output.bold(totalDependentTasks)} task(s) they depend on`;
|
182
|
-
}
|
183
|
-
const taskOverridesRows = [];
|
184
|
-
if (Object.keys(overrides).length > 0) {
|
185
|
-
const leftPadding = `${output_1.output.X_PADDING} `;
|
186
|
-
taskOverridesRows.push('');
|
187
|
-
taskOverridesRows.push(`${leftPadding}${output_1.output.dim.cyan('With additional flags:')}`);
|
188
|
-
Object.entries(overrides)
|
189
|
-
.map(([flag, value]) => output_1.output.dim.cyan(`${leftPadding} --${flag}=${value}`))
|
190
|
-
.forEach((arg) => taskOverridesRows.push(arg));
|
191
|
-
}
|
192
|
-
const pinnedFooterLines = [
|
193
|
-
output_1.output.applyNxPrefix('cyan', output_1.output.colors.cyan(text)),
|
194
|
-
...taskOverridesRows,
|
195
|
-
...additionalFooterRows,
|
196
|
-
];
|
197
|
-
// Vertical breathing room when there isn't yet any output or divider
|
198
|
-
if (!hasTaskOutput) {
|
199
|
-
pinnedFooterLines.unshift('');
|
200
|
-
}
|
201
|
-
renderPinnedFooter(pinnedFooterLines);
|
202
|
-
}
|
203
|
-
else {
|
204
|
-
renderPinnedFooter([]);
|
205
|
-
}
|
206
|
-
};
|
207
|
-
lifeCycle.startCommand = () => {
|
208
|
-
if (totalProjects <= 0) {
|
209
|
-
let description = `with target ${output_1.output.colors.white.bold(targetName)}`;
|
210
|
-
if (args.configuration) {
|
211
|
-
description += ` that are configured for "${args.configuration}"`;
|
212
|
-
}
|
213
|
-
renderPinnedFooter([
|
214
|
-
'',
|
215
|
-
output_1.output.applyNxPrefix('gray', `No projects ${description} were run`),
|
216
|
-
]);
|
217
|
-
resolveRenderIsDonePromise();
|
218
|
-
return;
|
219
|
-
}
|
220
|
-
renderPinnedFooter([]);
|
221
|
-
};
|
222
|
-
lifeCycle.endCommand = () => {
|
223
|
-
clearRenderInterval();
|
224
|
-
const timeTakenText = (0, pretty_time_1.prettyTime)(process.hrtime(start));
|
225
|
-
clearPinnedFooter();
|
226
|
-
if (totalSuccessfulTasks === totalTasks) {
|
227
|
-
let text = `Successfully ran target ${output_1.output.bold(targetName)} for ${output_1.output.bold(totalProjects)} projects`;
|
228
|
-
if (totalDependentTasks > 0) {
|
229
|
-
text += ` and ${output_1.output.bold(totalDependentTasks)} task(s) they depend on`;
|
230
|
-
}
|
231
|
-
const taskOverridesRows = [];
|
232
|
-
if (Object.keys(overrides).length > 0) {
|
233
|
-
const leftPadding = `${output_1.output.X_PADDING} `;
|
234
|
-
taskOverridesRows.push('');
|
235
|
-
taskOverridesRows.push(`${leftPadding}${output_1.output.dim.green('With additional flags:')}`);
|
236
|
-
Object.entries(overrides)
|
237
|
-
.map(([flag, value]) => output_1.output.dim.green(`${leftPadding} --${flag}=${value}`))
|
238
|
-
.forEach((arg) => taskOverridesRows.push(arg));
|
239
|
-
}
|
240
|
-
const pinnedFooterLines = [
|
241
|
-
output_1.output.applyNxPrefix('green', output_1.output.colors.green(text) + output_1.output.dim.white(` (${timeTakenText})`)),
|
242
|
-
...taskOverridesRows,
|
243
|
-
];
|
244
|
-
if (totalCachedTasks > 0) {
|
245
|
-
pinnedFooterLines.push(output_1.output.dim(`${os_1.EOL} Nx read the output from the cache instead of running the command for ${totalCachedTasks} out of ${totalTasks} tasks.`));
|
246
|
-
}
|
247
|
-
renderPinnedFooter(pinnedFooterLines, 'green');
|
248
|
-
}
|
249
|
-
else {
|
250
|
-
let text = `Ran target ${output_1.output.bold(targetName)} for ${output_1.output.bold(totalProjects)} projects`;
|
251
|
-
if (totalDependentTasks > 0) {
|
252
|
-
text += ` and ${output_1.output.bold(totalDependentTasks)} task(s) they depend on`;
|
253
|
-
}
|
254
|
-
const taskOverridesRows = [];
|
255
|
-
if (Object.keys(overrides).length > 0) {
|
256
|
-
const leftPadding = `${output_1.output.X_PADDING} `;
|
257
|
-
taskOverridesRows.push('');
|
258
|
-
taskOverridesRows.push(`${leftPadding}${output_1.output.dim.red('With additional flags:')}`);
|
259
|
-
Object.entries(overrides)
|
260
|
-
.map(([flag, value]) => output_1.output.dim.red(`${leftPadding} --${flag}=${value}`))
|
261
|
-
.forEach((arg) => taskOverridesRows.push(arg));
|
262
|
-
}
|
263
|
-
renderPinnedFooter([
|
264
|
-
output_1.output.applyNxPrefix('red', output_1.output.colors.red(text) + output_1.output.dim.white(` (${timeTakenText})`)),
|
265
|
-
...taskOverridesRows,
|
266
|
-
'',
|
267
|
-
` ${output_1.output.colors.red(figures.cross)} ${totalFailedTasks}${`/${totalCompletedTasks}`} failed`,
|
268
|
-
` ${output_1.output.dim(figures.tick)} ${totalSuccessfulTasks}${`/${totalCompletedTasks}`} succeeded ${output_1.output.dim(`[${totalCachedTasks} read from cache]`)}`,
|
269
|
-
], 'red');
|
270
|
-
}
|
271
|
-
resolveRenderIsDonePromise();
|
272
|
-
};
|
273
|
-
lifeCycle.startTasks = (tasks) => {
|
274
|
-
for (const task of tasks) {
|
275
|
-
tasksToProcessStartTimes[task.id] = process.hrtime();
|
276
|
-
}
|
277
|
-
for (const projectRow of projectRows) {
|
278
|
-
const matchedTask = tasks.find((t) => t.target.project === projectRow.projectName);
|
279
|
-
if (!matchedTask) {
|
280
|
-
continue;
|
281
|
-
}
|
282
|
-
projectRow.status = 'running';
|
283
|
-
}
|
284
|
-
if (!renderProjectRowsIntervalId) {
|
285
|
-
renderProjectRowsIntervalId = setInterval(renderProjectRows, 100);
|
286
|
-
}
|
287
|
-
};
|
288
|
-
lifeCycle.printTaskTerminalOutput = (task, _cacheStatus, output) => {
|
289
|
-
tasksToTerminalOutputs[task.id] = output;
|
290
|
-
};
|
291
|
-
lifeCycle.endTasks = (taskResults) => {
|
292
|
-
for (let t of taskResults) {
|
293
|
-
totalCompletedTasks++;
|
294
|
-
const matchingProjectRow = projectRows.find((pr) => pr.projectName === t.task.target.project);
|
295
|
-
if (matchingProjectRow) {
|
296
|
-
matchingProjectRow.status = t.status;
|
297
|
-
}
|
298
|
-
switch (t.status) {
|
299
|
-
case 'remote-cache':
|
300
|
-
case 'local-cache':
|
301
|
-
case 'local-cache-kept-existing':
|
302
|
-
totalCachedTasks++;
|
303
|
-
totalSuccessfulTasks++;
|
304
|
-
break;
|
305
|
-
case 'success':
|
306
|
-
totalSuccessfulTasks++;
|
307
|
-
break;
|
308
|
-
case 'failure':
|
309
|
-
totalFailedTasks++;
|
310
|
-
break;
|
311
|
-
}
|
312
|
-
printTaskResult(t.task, t.status);
|
313
|
-
}
|
314
|
-
};
|
315
|
-
return { lifeCycle, renderIsDone };
|
316
|
-
});
|
317
|
-
}
|
318
|
-
exports.createRunManyDynamicOutputRenderer = createRunManyDynamicOutputRenderer;
|
319
|
-
function writeLine(line) {
|
320
|
-
const additionalXPadding = ' ';
|
321
|
-
process.stdout.write(output_1.output.X_PADDING + additionalXPadding + line + os_1.EOL);
|
322
|
-
}
|
323
|
-
/**
|
324
|
-
* There's not much we can do in order to "neaten up" the outputs of
|
325
|
-
* commands we do not control, but at the very least we can trim any
|
326
|
-
* leading whitespace and any _excess_ trailing newlines so that there
|
327
|
-
* isn't unncecessary vertical whitespace.
|
328
|
-
*/
|
329
|
-
function writeCommandOutputBlock(commandOutput) {
|
330
|
-
commandOutput = commandOutput || '';
|
331
|
-
commandOutput = commandOutput.trimStart();
|
332
|
-
const additionalXPadding = ' ';
|
333
|
-
const lines = commandOutput.split(os_1.EOL);
|
334
|
-
let totalTrailingEmptyLines = 0;
|
335
|
-
for (let i = lines.length - 1; i >= 0; i--) {
|
336
|
-
if (lines[i] !== '') {
|
337
|
-
break;
|
338
|
-
}
|
339
|
-
totalTrailingEmptyLines++;
|
340
|
-
}
|
341
|
-
if (totalTrailingEmptyLines > 1) {
|
342
|
-
const linesToRemove = totalTrailingEmptyLines - 1;
|
343
|
-
lines.splice(lines.length - linesToRemove, linesToRemove);
|
344
|
-
}
|
345
|
-
// Indent the command output to make it look more "designed" in the context of the dynamic output
|
346
|
-
process.stdout.write(lines.map((l) => `${output_1.output.X_PADDING}${additionalXPadding}${l}`).join(os_1.EOL) +
|
347
|
-
os_1.EOL);
|
348
|
-
}
|
349
|
-
//# sourceMappingURL=dynamic-run-many-terminal-output-life-cycle.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"dynamic-run-many-terminal-output-life-cycle.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/tasks-runner/life-cycles/dynamic-run-many-terminal-output-life-cycle.ts"],"names":[],"mappings":"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"}
|
@@ -1,25 +0,0 @@
|
|
1
|
-
import type { LifeCycle } from '../life-cycle';
|
2
|
-
import type { Task } from '../tasks-runner';
|
3
|
-
/**
|
4
|
-
* The following function is responsible for creating a life cycle with dynamic
|
5
|
-
* outputs, meaning previous outputs can be rewritten or modified as new outputs
|
6
|
-
* are added. It is therefore intended for use on a user's local machines.
|
7
|
-
*
|
8
|
-
* In CI environments the static equivalent of this life cycle should be used.
|
9
|
-
*
|
10
|
-
* NOTE: output.dim() should be preferred over output.colors.gray() because it
|
11
|
-
* is much more consistently readable across different terminal color themes.
|
12
|
-
*/
|
13
|
-
export declare function createRunOneDynamicOutputRenderer({ initiatingProject, tasks, args, overrides, }: {
|
14
|
-
initiatingProject: string;
|
15
|
-
tasks: Task[];
|
16
|
-
args: {
|
17
|
-
target?: string;
|
18
|
-
configuration?: string;
|
19
|
-
parallel?: number;
|
20
|
-
};
|
21
|
-
overrides: Record<string, unknown>;
|
22
|
-
}): Promise<{
|
23
|
-
lifeCycle: LifeCycle;
|
24
|
-
renderIsDone: Promise<void>;
|
25
|
-
}>;
|
@@ -1,231 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.createRunOneDynamicOutputRenderer = void 0;
|
4
|
-
const tslib_1 = require("tslib");
|
5
|
-
const cliCursor = require("cli-cursor");
|
6
|
-
const cli_spinners_1 = require("cli-spinners");
|
7
|
-
const os_1 = require("os");
|
8
|
-
const readline = require("readline");
|
9
|
-
const output_1 = require("../../utilities/output");
|
10
|
-
const pretty_time_1 = require("./pretty-time");
|
11
|
-
/**
|
12
|
-
* The following function is responsible for creating a life cycle with dynamic
|
13
|
-
* outputs, meaning previous outputs can be rewritten or modified as new outputs
|
14
|
-
* are added. It is therefore intended for use on a user's local machines.
|
15
|
-
*
|
16
|
-
* In CI environments the static equivalent of this life cycle should be used.
|
17
|
-
*
|
18
|
-
* NOTE: output.dim() should be preferred over output.colors.gray() because it
|
19
|
-
* is much more consistently readable across different terminal color themes.
|
20
|
-
*/
|
21
|
-
function createRunOneDynamicOutputRenderer({ initiatingProject, tasks, args, overrides, }) {
|
22
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
23
|
-
cliCursor.hide();
|
24
|
-
let resolveRenderIsDonePromise;
|
25
|
-
const renderIsDone = new Promise((resolve) => (resolveRenderIsDonePromise = resolve)).then(() => {
|
26
|
-
clearRenderInterval();
|
27
|
-
cliCursor.show();
|
28
|
-
});
|
29
|
-
function clearRenderInterval() {
|
30
|
-
if (renderDependentTargetsIntervalId) {
|
31
|
-
clearInterval(renderDependentTargetsIntervalId);
|
32
|
-
}
|
33
|
-
}
|
34
|
-
process.on('exit', () => clearRenderInterval());
|
35
|
-
process.on('SIGINT', () => clearRenderInterval());
|
36
|
-
process.on('SIGTERM', () => clearRenderInterval());
|
37
|
-
process.on('SIGHUP', () => clearRenderInterval());
|
38
|
-
const lifeCycle = {};
|
39
|
-
const start = process.hrtime();
|
40
|
-
const figures = yield Promise.resolve().then(() => require('figures'));
|
41
|
-
let state = 'EXECUTING_DEPENDENT_TARGETS';
|
42
|
-
const tasksToTerminalOutputs = {};
|
43
|
-
const totalTasks = tasks.length;
|
44
|
-
const totalDependentTasks = totalTasks - 1;
|
45
|
-
const totalTasksFromInitiatingProject = tasks.filter((t) => t.target.project === initiatingProject).length;
|
46
|
-
// Tasks from the initiating project are treated differently, they forward their output
|
47
|
-
const totalDependentTasksNotFromInitiatingProject = totalTasks - totalTasksFromInitiatingProject;
|
48
|
-
const targetName = args.target;
|
49
|
-
let dependentTargetsNumLines = 0;
|
50
|
-
let totalCompletedTasks = 0;
|
51
|
-
let totalSuccessfulTasks = 0;
|
52
|
-
let totalFailedTasks = 0;
|
53
|
-
let totalCachedTasks = 0;
|
54
|
-
// Used to control the rendering of the spinner
|
55
|
-
let dependentTargetsCurrentFrame = 0;
|
56
|
-
let renderDependentTargetsIntervalId;
|
57
|
-
const clearDependentTargets = () => {
|
58
|
-
for (let i = 0; i < dependentTargetsNumLines; i++) {
|
59
|
-
readline.moveCursor(process.stdout, 0, -1);
|
60
|
-
readline.clearLine(process.stdout, 0);
|
61
|
-
}
|
62
|
-
};
|
63
|
-
const renderLines = (lines, dividerColor = 'cyan', renderDivider = true, skipPadding = false) => {
|
64
|
-
let additionalLines = 0;
|
65
|
-
if (renderDivider) {
|
66
|
-
output_1.output.addVerticalSeparator(dividerColor);
|
67
|
-
additionalLines += 3;
|
68
|
-
}
|
69
|
-
if (renderDivider) {
|
70
|
-
lines.push('');
|
71
|
-
}
|
72
|
-
for (const line of lines) {
|
73
|
-
process.stdout.write((skipPadding ? '' : output_1.output.X_PADDING) + line + os_1.EOL);
|
74
|
-
}
|
75
|
-
dependentTargetsNumLines = lines.length + additionalLines;
|
76
|
-
};
|
77
|
-
const renderDependentTargets = (renderDivider = true) => {
|
78
|
-
if (totalDependentTasksNotFromInitiatingProject <= 0) {
|
79
|
-
return;
|
80
|
-
}
|
81
|
-
const max = cli_spinners_1.dots.frames.length - 1;
|
82
|
-
const curr = dependentTargetsCurrentFrame;
|
83
|
-
dependentTargetsCurrentFrame = curr >= max ? 0 : curr + 1;
|
84
|
-
const linesToRender = [''];
|
85
|
-
const remainingDependentTasksNotFromInitiatingProject = totalDependentTasksNotFromInitiatingProject - totalCompletedTasks;
|
86
|
-
switch (state) {
|
87
|
-
case 'EXECUTING_DEPENDENT_TARGETS':
|
88
|
-
if (totalFailedTasks === 0) {
|
89
|
-
linesToRender.push(` ${output_1.output.colors.cyan(cli_spinners_1.dots.frames[dependentTargetsCurrentFrame])} ${output_1.output.dim(`Nx is waiting on ${remainingDependentTasksNotFromInitiatingProject} dependent project tasks before running tasks from`)} ${initiatingProject}${output_1.output.dim('...')}`);
|
90
|
-
if (totalSuccessfulTasks > 0) {
|
91
|
-
linesToRender.push('');
|
92
|
-
}
|
93
|
-
}
|
94
|
-
break;
|
95
|
-
}
|
96
|
-
if (totalFailedTasks > 0) {
|
97
|
-
linesToRender.push(output_1.output.colors.red.dim(` ${output_1.output.colors.red(figures.cross)} ${totalFailedTasks}${`/${totalCompletedTasks}`} dependent project tasks failed (see below)`));
|
98
|
-
}
|
99
|
-
if (totalSuccessfulTasks > 0) {
|
100
|
-
linesToRender.push(output_1.output.dim(` ${output_1.output.dim(figures.tick)} ${totalSuccessfulTasks}${`/${totalCompletedTasks}`} dependent project tasks succeeded ${output_1.output.dim(`[${totalCachedTasks} read from cache]`)}`));
|
101
|
-
}
|
102
|
-
clearDependentTargets();
|
103
|
-
if (linesToRender.length > 1) {
|
104
|
-
renderLines(linesToRender, 'gray', renderDivider && state !== 'EXECUTING_DEPENDENT_TARGETS', true);
|
105
|
-
}
|
106
|
-
else {
|
107
|
-
renderLines([]);
|
108
|
-
}
|
109
|
-
};
|
110
|
-
lifeCycle.startCommand = () => {
|
111
|
-
renderDependentTargets();
|
112
|
-
};
|
113
|
-
lifeCycle.startTasks = (tasks) => {
|
114
|
-
for (const task of tasks) {
|
115
|
-
// Move from the dependent project tasks phase to the initiating project's targets
|
116
|
-
if (task.target.project === initiatingProject &&
|
117
|
-
state !== 'EXECUTING_INITIATING_PROJECT_TARGET') {
|
118
|
-
state = 'EXECUTING_INITIATING_PROJECT_TARGET';
|
119
|
-
clearRenderInterval();
|
120
|
-
renderDependentTargets(false);
|
121
|
-
if (totalDependentTasksNotFromInitiatingProject > 0) {
|
122
|
-
output_1.output.addNewline();
|
123
|
-
process.stdout.write(` ${output_1.output.dim('Hint: you can run the command with')} --verbose ${output_1.output.dim('to see the full dependent project outputs')}` + os_1.EOL);
|
124
|
-
output_1.output.addVerticalSeparator('gray');
|
125
|
-
}
|
126
|
-
}
|
127
|
-
}
|
128
|
-
if (!renderDependentTargetsIntervalId &&
|
129
|
-
state === 'EXECUTING_DEPENDENT_TARGETS') {
|
130
|
-
renderDependentTargetsIntervalId = setInterval(renderDependentTargets, 100);
|
131
|
-
}
|
132
|
-
};
|
133
|
-
lifeCycle.printTaskTerminalOutput = (task, cacheStatus, terminalOutput) => {
|
134
|
-
if (task.target.project === initiatingProject) {
|
135
|
-
output_1.output.logCommand(task.id, cacheStatus);
|
136
|
-
output_1.output.addNewline();
|
137
|
-
process.stdout.write(terminalOutput);
|
138
|
-
}
|
139
|
-
else {
|
140
|
-
tasksToTerminalOutputs[task.id] = terminalOutput;
|
141
|
-
}
|
142
|
-
};
|
143
|
-
lifeCycle.endTasks = (taskResults) => {
|
144
|
-
for (let t of taskResults) {
|
145
|
-
totalCompletedTasks++;
|
146
|
-
switch (t.status) {
|
147
|
-
case 'remote-cache':
|
148
|
-
case 'local-cache':
|
149
|
-
case 'local-cache-kept-existing':
|
150
|
-
totalCachedTasks++;
|
151
|
-
totalSuccessfulTasks++;
|
152
|
-
break;
|
153
|
-
case 'success':
|
154
|
-
totalSuccessfulTasks++;
|
155
|
-
break;
|
156
|
-
case 'failure':
|
157
|
-
totalFailedTasks++;
|
158
|
-
/**
|
159
|
-
* A dependent project has failed so we stop executing and update the relevant
|
160
|
-
* dependent project task messaging
|
161
|
-
*/
|
162
|
-
if (t.task.target.project !== initiatingProject) {
|
163
|
-
clearRenderInterval();
|
164
|
-
renderDependentTargets(false);
|
165
|
-
output_1.output.addVerticalSeparator('red');
|
166
|
-
output_1.output.logCommand(t.task.id, t.status);
|
167
|
-
output_1.output.addNewline();
|
168
|
-
process.stdout.write(tasksToTerminalOutputs[t.task.id]);
|
169
|
-
}
|
170
|
-
break;
|
171
|
-
}
|
172
|
-
delete tasksToTerminalOutputs[t.task.id];
|
173
|
-
}
|
174
|
-
};
|
175
|
-
lifeCycle.endCommand = () => {
|
176
|
-
clearRenderInterval();
|
177
|
-
const timeTakenText = (0, pretty_time_1.prettyTime)(process.hrtime(start));
|
178
|
-
if (totalSuccessfulTasks === totalTasks) {
|
179
|
-
state = 'COMPLETED_SUCCESSFULLY';
|
180
|
-
let text = `Successfully ran target ${output_1.output.bold(targetName)} for project ${output_1.output.bold(initiatingProject)}`;
|
181
|
-
if (totalDependentTasks > 0) {
|
182
|
-
text += ` and ${output_1.output.bold(totalDependentTasks)} task(s) it depends on`;
|
183
|
-
}
|
184
|
-
const taskOverridesLines = [];
|
185
|
-
if (Object.keys(overrides).length > 0) {
|
186
|
-
const leftPadding = `${output_1.output.X_PADDING} `;
|
187
|
-
taskOverridesLines.push('');
|
188
|
-
taskOverridesLines.push(`${leftPadding}${output_1.output.dim.green('With additional flags:')}`);
|
189
|
-
Object.entries(overrides)
|
190
|
-
.map(([flag, value]) => output_1.output.dim.green(`${leftPadding} --${flag}=${value}`))
|
191
|
-
.forEach((arg) => taskOverridesLines.push(arg));
|
192
|
-
}
|
193
|
-
const pinnedFooterLines = [
|
194
|
-
output_1.output.applyNxPrefix('green', output_1.output.colors.green(text) + output_1.output.dim(` (${timeTakenText})`)),
|
195
|
-
...taskOverridesLines,
|
196
|
-
];
|
197
|
-
if (totalCachedTasks > 0) {
|
198
|
-
pinnedFooterLines.push(output_1.output.dim(`${os_1.EOL} Nx read the output from the cache instead of running the command for ${totalCachedTasks} out of ${totalTasks} tasks.`));
|
199
|
-
}
|
200
|
-
renderLines(pinnedFooterLines, 'green');
|
201
|
-
}
|
202
|
-
else {
|
203
|
-
state = 'COMPLETED_WITH_ERRORS';
|
204
|
-
let text = `Ran target ${output_1.output.bold(targetName)} for project ${output_1.output.bold(initiatingProject)}`;
|
205
|
-
if (totalDependentTasks > 0) {
|
206
|
-
text += ` and ${output_1.output.bold(totalDependentTasks)} task(s) it depends on`;
|
207
|
-
}
|
208
|
-
const taskOverridesLines = [];
|
209
|
-
if (Object.keys(overrides).length > 0) {
|
210
|
-
const leftPadding = `${output_1.output.X_PADDING} `;
|
211
|
-
taskOverridesLines.push('');
|
212
|
-
taskOverridesLines.push(`${leftPadding}${output_1.output.dim.red('With additional flags:')}`);
|
213
|
-
Object.entries(overrides)
|
214
|
-
.map(([flag, value]) => output_1.output.dim.red(`${leftPadding} --${flag}=${value}`))
|
215
|
-
.forEach((arg) => taskOverridesLines.push(arg));
|
216
|
-
}
|
217
|
-
renderLines([
|
218
|
-
output_1.output.applyNxPrefix('red', output_1.output.colors.red(text) + output_1.output.dim(` (${timeTakenText})`)),
|
219
|
-
...taskOverridesLines,
|
220
|
-
'',
|
221
|
-
` ${output_1.output.colors.red(figures.cross)} ${totalFailedTasks}${`/${totalCompletedTasks}`} failed`,
|
222
|
-
` ${output_1.output.dim(figures.tick)} ${totalSuccessfulTasks}${`/${totalCompletedTasks}`} succeeded ${output_1.output.dim(`[${totalCachedTasks} read from cache]`)}`,
|
223
|
-
], 'red');
|
224
|
-
}
|
225
|
-
resolveRenderIsDonePromise();
|
226
|
-
};
|
227
|
-
return { lifeCycle, renderIsDone };
|
228
|
-
});
|
229
|
-
}
|
230
|
-
exports.createRunOneDynamicOutputRenderer = createRunOneDynamicOutputRenderer;
|
231
|
-
//# sourceMappingURL=dynamic-run-one-terminal-output-life-cycle.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"dynamic-run-one-terminal-output-life-cycle.js","sourceRoot":"","sources":["../../../../../../packages/workspace/src/tasks-runner/life-cycles/dynamic-run-one-terminal-output-life-cycle.ts"],"names":[],"mappings":"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"}
|