From aae1a2bed1cd2d61ed7b86013d7e6108415cfbcd Mon Sep 17 00:00:00 2001 From: James Henry Date: Tue, 23 Aug 2022 14:34:21 +0400 Subject: [PATCH] feat(repair): add lerna repair command (#3302) --- commands/info/README.md | 2 +- core/lerna/__tests__/repair-command.test.js | 18 ++ core/lerna/commands/repair/command.js | 15 ++ core/lerna/commands/repair/index.js | 51 +++++ core/lerna/index.js | 6 + core/lerna/migrations.json | 10 + core/lerna/migrations/noop/noop.js | 6 + core/lerna/migrations/noop/noop.test.js | 16 ++ core/lerna/package.json | 12 +- e2e/tests/lerna-repair/lerna-repair.spec.ts | 36 ++++ package-lock.json | 197 ++++++++++++-------- package.json | 6 +- 12 files changed, 296 insertions(+), 79 deletions(-) create mode 100644 core/lerna/__tests__/repair-command.test.js create mode 100644 core/lerna/commands/repair/command.js create mode 100644 core/lerna/commands/repair/index.js create mode 100644 core/lerna/migrations.json create mode 100644 core/lerna/migrations/noop/noop.js create mode 100644 core/lerna/migrations/noop/noop.test.js create mode 100644 e2e/tests/lerna-repair/lerna-repair.spec.ts diff --git a/commands/info/README.md b/commands/info/README.md index 9b343e179e..d75ad8d325 100644 --- a/commands/info/README.md +++ b/commands/info/README.md @@ -6,7 +6,7 @@ Install [lerna](https://www.npmjs.com/package/lerna) for access to the `lerna` C ## Usage -The `info` prints local environment information that proves to be useful especially while submitting bug reports. +The `info` command prints local environment information that proves to be useful especially while submitting bug reports. `lerna info` diff --git a/core/lerna/__tests__/repair-command.test.js b/core/lerna/__tests__/repair-command.test.js new file mode 100644 index 0000000000..897c652a08 --- /dev/null +++ b/core/lerna/__tests__/repair-command.test.js @@ -0,0 +1,18 @@ +// @ts-check + +"use strict"; + +const path = require("path"); +const { loggingOutput } = require("@lerna-test/helpers/logging-output"); + +// file under test +const lernaRepair = require("@lerna-test/helpers").commandRunner(require("../commands/repair/command")); + +describe("repair", () => { + it("should output the result of running migrations", async () => { + // project fixture is irrelevant, no actual changes are made + await lernaRepair(path.resolve(__dirname, "../../.."))(); + + expect(loggingOutput("info")).toContain("No changes were necessary. This workspace is up to date!"); + }); +}); diff --git a/core/lerna/commands/repair/command.js b/core/lerna/commands/repair/command.js new file mode 100644 index 0000000000..e9bba568ec --- /dev/null +++ b/core/lerna/commands/repair/command.js @@ -0,0 +1,15 @@ +// @ts-check + +"use strict"; + +/** + * @see https://github.com/yargs/yargs/blob/master/docs/advanced.md#providing-a-command-module + */ +exports.command = "repair"; + +exports.describe = "Runs automated migrations to repair the state of a lerna repo"; + +exports.handler = function handler(argv) { + // eslint-disable-next-line global-require + return require(".")(argv); +}; diff --git a/core/lerna/commands/repair/index.js b/core/lerna/commands/repair/index.js new file mode 100644 index 0000000000..36cbbefae8 --- /dev/null +++ b/core/lerna/commands/repair/index.js @@ -0,0 +1,51 @@ +// @ts-check + +"use strict"; + +const { Command } = require("@lerna/command"); +const log = require("npmlog"); +const { executeMigrations } = require("nx/src/command-line/migrate"); +const migrationsJson = require("../../migrations.json"); + +module.exports = factory; + +function factory(argv) { + return new RepairCommand(argv); +} + +class RepairCommand extends Command { + // eslint-disable-next-line class-methods-use-this + initialize() {} + + async execute() { + const verbose = log.level === "verbose"; + + const lernaMigrations = Object.entries(migrationsJson.generators).map(([name, migration]) => { + return /** @type {const} */ ({ + package: "lerna", + cli: "nx", + name, + description: migration.description, + version: migration.version, + }); + }); + + const migrationsThatMadeNoChanges = await executeMigrations( + process.cwd(), + lernaMigrations, + verbose, + false, + "" + ); + + if (migrationsThatMadeNoChanges.length < lernaMigrations.length) { + // @ts-ignore + this.logger.info("repair", `Successfully repaired your configuration. This workspace is up to date!`); + } else { + // @ts-ignore + this.logger.info("repair", `No changes were necessary. This workspace is up to date!`); + } + } +} + +module.exports.RepairCommand = RepairCommand; diff --git a/core/lerna/index.js b/core/lerna/index.js index dadfe8a407..a1bdc95de1 100644 --- a/core/lerna/index.js +++ b/core/lerna/index.js @@ -1,3 +1,5 @@ +// @ts-check + "use strict"; const cli = require("@lerna/cli"); @@ -18,6 +20,8 @@ const publishCmd = require("@lerna/publish/command"); const runCmd = require("@lerna/run/command"); const versionCmd = require("@lerna/version/command"); +const repairCmd = require("./commands/repair/command"); + const pkg = require("./package.json"); module.exports = main; @@ -27,6 +31,7 @@ function main(argv) { lernaVersion: pkg.version, }; + // @ts-ignore return cli() .command(addCmd) .command(bootstrapCmd) @@ -41,6 +46,7 @@ function main(argv) { .command(linkCmd) .command(listCmd) .command(publishCmd) + .command(repairCmd) .command(runCmd) .command(versionCmd) .parse(argv, context); diff --git a/core/lerna/migrations.json b/core/lerna/migrations.json new file mode 100644 index 0000000000..c58cd30fd0 --- /dev/null +++ b/core/lerna/migrations.json @@ -0,0 +1,10 @@ +{ + "generators": { + "noop": { + "cli": "nx", + "version": "5.3.0", + "description": "Noop example migration, can be removed once a real migration is created", + "implementation": "./migrations/noop/noop" + } + } +} diff --git a/core/lerna/migrations/noop/noop.js b/core/lerna/migrations/noop/noop.js new file mode 100644 index 0000000000..c0f703b8ea --- /dev/null +++ b/core/lerna/migrations/noop/noop.js @@ -0,0 +1,6 @@ +// @ts-check + +// eslint-disable-next-line no-unused-vars +exports.default = async function generator(tree) { + // This is a noop migration just to show how one would be written until the first real implementation is in place. +}; diff --git a/core/lerna/migrations/noop/noop.test.js b/core/lerna/migrations/noop/noop.test.js new file mode 100644 index 0000000000..6f58b557c1 --- /dev/null +++ b/core/lerna/migrations/noop/noop.test.js @@ -0,0 +1,16 @@ +// @ts-check + +const { createTreeWithEmptyWorkspace } = require("@nrwl/devkit/testing"); +const { default: noopMigration } = require("./noop"); + +describe("noop migration", () => { + let tree; + + beforeEach(() => { + tree = createTreeWithEmptyWorkspace(); + }); + + it("should be runnable and not throw", async () => { + await expect(noopMigration(tree)).resolves.toBeUndefined(); + }); +}); diff --git a/core/lerna/package.json b/core/lerna/package.json index a0b258b7b0..2b8fac5e20 100644 --- a/core/lerna/package.json +++ b/core/lerna/package.json @@ -19,7 +19,10 @@ "files": [ "index.js", "cli.js", - "schemas/lerna-schema.json" + "schemas/lerna-schema.json", + "migrations", + "commands", + "migrations.json" ], "engines": { "node": "^14.15.0 || >=16.0.0" @@ -32,12 +35,16 @@ "url": "git+https://github.com/lerna/lerna.git", "directory": "core/lerna" }, + "nx-migrations": { + "migrations": "./migrations.json" + }, "scripts": { "test": "echo \"Run tests from root\" && exit 1" }, "dependencies": { "@lerna/add": "file:../../commands/add", "@lerna/bootstrap": "file:../../commands/bootstrap", + "@lerna/command": "file:../command", "@lerna/changed": "file:../../commands/changed", "@lerna/clean": "file:../../commands/clean", "@lerna/cli": "file:../cli", @@ -52,8 +59,9 @@ "@lerna/publish": "file:../../commands/publish", "@lerna/run": "file:../../commands/run", "@lerna/version": "file:../../commands/version", + "@nrwl/devkit": ">=14.5.8 < 16", "import-local": "^3.0.2", "npmlog": "^6.0.2", - "nx": ">=14.5.4 < 16" + "nx": ">=14.5.8 < 16" } } diff --git a/e2e/tests/lerna-repair/lerna-repair.spec.ts b/e2e/tests/lerna-repair/lerna-repair.spec.ts new file mode 100644 index 0000000000..8ea0b13486 --- /dev/null +++ b/e2e/tests/lerna-repair/lerna-repair.spec.ts @@ -0,0 +1,36 @@ +import { Fixture } from "../../utils/fixture"; +import { normalizeEnvironment } from "../../utils/snapshot-serializer-utils"; + +expect.addSnapshotSerializer({ + serialize(str) { + return normalizeEnvironment(str); + }, + test(val) { + return val != null && typeof val === "string"; + }, +}); + +describe("lerna-repair", () => { + let fixture: Fixture; + + beforeAll(async () => { + fixture = await Fixture.create({ + name: "lerna-repair", + packageManager: "npm", + initializeGit: true, + runLernaInit: true, + installDependencies: true, + }); + }); + afterAll(() => fixture.destroy()); + + it("should run any existing migrations", async () => { + const output = await fixture.lerna("repair"); + + expect(output.combinedOutput).toMatchInlineSnapshot(` + lerna notice cli v999.9.9-e2e.0 + lerna info repair No changes were necessary. This workspace is up to date! + + `); + }); +}); diff --git a/package-lock.json b/package-lock.json index d092ac19e6..362dbf85c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -84,8 +84,8 @@ "@actions/core": "^1.8.2", "@actions/github": "^5.0.3", "@lerna-test/helpers": "file:helpers", - "@nrwl/devkit": "14.5.4", - "@nrwl/nx-cloud": "14.3.0", + "@nrwl/devkit": "14.5.8", + "@nrwl/nx-cloud": "14.4.1", "@types/fs-extra": "^9.0.13", "@types/is-ci": "^2.0.0", "@types/jest": "^28.1.4", @@ -109,7 +109,7 @@ "node-jq": "^2.3.3", "normalize-newline": "^3.0.0", "normalize-path": "^3.0.0", - "nx": "14.5.4", + "nx": "14.5.8", "path-key": "^3.1.1", "prettier": "^2.2.1", "tacks": "1.2.6", @@ -381,6 +381,20 @@ "node": "^14.15.0 || >=16.0.0" } }, + "commands/repair": { + "name": "@lerna/repair", + "version": "5.4.3", + "license": "MIT", + "dependencies": { + "@lerna/command": "file:../../core/command", + "lerna": "file:../../core/lerna", + "npmlog": "^6.0.2", + "nx": ">=14.5.8 < 16" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, "commands/run": { "name": "@lerna/run", "version": "5.4.3", @@ -543,11 +557,13 @@ "@lerna/link": "file:../../commands/link", "@lerna/list": "file:../../commands/list", "@lerna/publish": "file:../../commands/publish", + "@lerna/repair": "file:../../commands/repair", "@lerna/run": "file:../../commands/run", "@lerna/version": "file:../../commands/version", + "@nrwl/devkit": ">=14.5.8 < 16", "import-local": "^3.0.2", "npmlog": "^6.0.2", - "nx": ">=14.5.4 < 16" + "nx": ">=14.5.8 < 16" }, "bin": { "lerna": "cli.js" @@ -2562,6 +2578,10 @@ "resolved": "utils/query-graph", "link": true }, + "node_modules/@lerna/repair": { + "resolved": "commands/repair", + "link": true + }, "node_modules/@lerna/resolve-symlink": { "resolved": "utils/resolve-symlink", "link": true @@ -2971,19 +2991,19 @@ } }, "node_modules/@nrwl/cli": { - "version": "14.5.4", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.5.4.tgz", - "integrity": "sha512-UYr14hxeYV8p/zt6D6z33hljZJQROJAVxSC+mm72fyVvy88Gt0sQNLfMmOARXur0p/73PSLM0jJ2Sr7Ftsuu+A==", + "version": "14.5.8", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.5.8.tgz", + "integrity": "sha512-XX2TguehE1dFlwd8xRBzJ6wq5+2KigTeUNXLHMFdz/48veKlrmGB7qv7uXIgpquyfJhcvOcN4r4Qncj6Nbrlow==", "dependencies": { - "nx": "14.5.4" + "nx": "14.5.8" } }, "node_modules/@nrwl/devkit": { - "version": "14.5.4", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.5.4.tgz", - "integrity": "sha512-9UFoQb6HdEkvZlOZIZgTAPR5oagc1V72OdBgtiM0ZK5cHm9sSSTv7FrVlyxy+WWYZhy/orUm5eSChO/yNM/pZg==", - "dev": true, + "version": "14.5.8", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.5.8.tgz", + "integrity": "sha512-e0gSQqDXYb5vj0uc2Xnkd6LvShgZRH8TTUBr1hERgmLR2dUUG1X/8p9hTOB0hxF0RnhDndqquI+vADnfYWBRlg==", "dependencies": { + "@phenomnomnominal/tsquery": "4.1.1", "ejs": "^3.1.7", "ignore": "^5.0.4", "semver": "7.3.4", @@ -2996,31 +3016,41 @@ "node_modules/@nrwl/devkit/node_modules/tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/@nrwl/nx-cloud": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@nrwl/nx-cloud/-/nx-cloud-14.3.0.tgz", - "integrity": "sha512-aByHe8Gp1/IT9CtQYlGLIYBgU+ZtrgEwblBX8kcoBNRPf1OOdouahjyasAjQ9zi1cznve8AzTTcLt2eSCHWfrw==", + "version": "14.4.1", + "resolved": "https://registry.npmjs.org/@nrwl/nx-cloud/-/nx-cloud-14.4.1.tgz", + "integrity": "sha512-vlWpBmIGfYvB9XMAdDZWOihOTFPE2VV9CDeZzBbSMF32KxDqUkhfaLf3dg6puIeUPkPbj5k+V57xjAl7g9k+Xw==", "dev": true, "dependencies": { "axios": "^0.21.1", "chalk": "4.1.0", + "dotenv": "~10.0.0", "node-machine-id": "^1.1.12", "strip-json-comments": "^3.1.1", - "tar": "6.1.11" + "tar": "6.1.11", + "yargs-parser": ">=21.0.1" }, "bin": { "nx-cloud": "bin/nx-cloud.js" } }, + "node_modules/@nrwl/nx-cloud/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/@nrwl/tao": { - "version": "14.5.4", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.5.4.tgz", - "integrity": "sha512-a2GCuSE8WghjehuU3GVO63KZEnZXXQiqEg137yN/Na+PxwSu68XeaX53SLyzRskTV120YwBBy1YCTNzAZxxsjg==", + "version": "14.5.8", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.5.8.tgz", + "integrity": "sha512-tN8qX8wtLP1cuGPKxdaArjtJaHJIpfZ3J2OqkotdocxcvwbDdTvTQzhcLknNNUk/jqHer3YsBmcgyJW3VGbf4w==", "dependencies": { - "nx": "14.5.4" + "nx": "14.5.8" }, "bin": { "tao": "index.js" @@ -3272,6 +3302,17 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/@phenomnomnominal/tsquery": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", + "integrity": "sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==", + "dependencies": { + "esquery": "^1.0.1" + }, + "peerDependencies": { + "typescript": "^3 || ^4" + } + }, "node_modules/@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -4394,8 +4435,7 @@ "node_modules/async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "node_modules/asynckit": { "version": "0.4.0", @@ -6771,7 +6811,6 @@ "version": "3.1.8", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", - "dev": true, "dependencies": { "jake": "^10.8.5" }, @@ -7628,7 +7667,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -7640,7 +7678,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, "engines": { "node": ">=4.0" } @@ -8103,7 +8140,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, "dependencies": { "minimatch": "^5.0.1" } @@ -8112,7 +8148,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -8121,7 +8156,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -10057,7 +10091,6 @@ "version": "10.8.5", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "dev": true, "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -13413,13 +13446,13 @@ "dev": true }, "node_modules/nx": { - "version": "14.5.4", - "resolved": "https://registry.npmjs.org/nx/-/nx-14.5.4.tgz", - "integrity": "sha512-xv1nTaQP6kqVDE4PXcB1tLlgzNAPUHE/2vlqSLgxjNb6colKf0vrEZhVTjhnbqBeJiTb33gUx50bBXkurCkN5w==", + "version": "14.5.8", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.5.8.tgz", + "integrity": "sha512-yTWL4pyzevWORx0GzXElTeoH19pvvOt0v98kXWjNU4TTB1vWlMiHEFAkfqScFrUX0L/efulYoEVjTgPdNtmInA==", "hasInstallScript": true, "dependencies": { - "@nrwl/cli": "14.5.4", - "@nrwl/tao": "14.5.4", + "@nrwl/cli": "14.5.8", + "@nrwl/tao": "14.5.8", "@parcel/watcher": "2.0.4", "chalk": "4.1.0", "chokidar": "^3.5.1", @@ -16553,7 +16586,6 @@ "version": "4.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", - "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -19875,6 +19907,15 @@ "@lerna/package-graph": "file:../../core/package-graph" } }, + "@lerna/repair": { + "version": "file:commands/repair", + "requires": { + "@lerna/command": "file:../../core/command", + "lerna": "file:../../core/lerna", + "npmlog": "^6.0.2", + "nx": ">=14.5.8 < 16" + } + }, "@lerna/resolve-symlink": { "version": "file:utils/resolve-symlink", "requires": { @@ -20278,19 +20319,19 @@ } }, "@nrwl/cli": { - "version": "14.5.4", - "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.5.4.tgz", - "integrity": "sha512-UYr14hxeYV8p/zt6D6z33hljZJQROJAVxSC+mm72fyVvy88Gt0sQNLfMmOARXur0p/73PSLM0jJ2Sr7Ftsuu+A==", + "version": "14.5.8", + "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-14.5.8.tgz", + "integrity": "sha512-XX2TguehE1dFlwd8xRBzJ6wq5+2KigTeUNXLHMFdz/48veKlrmGB7qv7uXIgpquyfJhcvOcN4r4Qncj6Nbrlow==", "requires": { - "nx": "14.5.4" + "nx": "14.5.8" } }, "@nrwl/devkit": { - "version": "14.5.4", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.5.4.tgz", - "integrity": "sha512-9UFoQb6HdEkvZlOZIZgTAPR5oagc1V72OdBgtiM0ZK5cHm9sSSTv7FrVlyxy+WWYZhy/orUm5eSChO/yNM/pZg==", - "dev": true, + "version": "14.5.8", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-14.5.8.tgz", + "integrity": "sha512-e0gSQqDXYb5vj0uc2Xnkd6LvShgZRH8TTUBr1hERgmLR2dUUG1X/8p9hTOB0hxF0RnhDndqquI+vADnfYWBRlg==", "requires": { + "@phenomnomnominal/tsquery": "4.1.1", "ejs": "^3.1.7", "ignore": "^5.0.4", "semver": "7.3.4", @@ -20300,30 +20341,39 @@ "tslib": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" } } }, "@nrwl/nx-cloud": { - "version": "14.3.0", - "resolved": "https://registry.npmjs.org/@nrwl/nx-cloud/-/nx-cloud-14.3.0.tgz", - "integrity": "sha512-aByHe8Gp1/IT9CtQYlGLIYBgU+ZtrgEwblBX8kcoBNRPf1OOdouahjyasAjQ9zi1cznve8AzTTcLt2eSCHWfrw==", + "version": "14.4.1", + "resolved": "https://registry.npmjs.org/@nrwl/nx-cloud/-/nx-cloud-14.4.1.tgz", + "integrity": "sha512-vlWpBmIGfYvB9XMAdDZWOihOTFPE2VV9CDeZzBbSMF32KxDqUkhfaLf3dg6puIeUPkPbj5k+V57xjAl7g9k+Xw==", "dev": true, "requires": { "axios": "^0.21.1", "chalk": "4.1.0", + "dotenv": "~10.0.0", "node-machine-id": "^1.1.12", "strip-json-comments": "^3.1.1", - "tar": "6.1.11" + "tar": "6.1.11", + "yargs-parser": ">=21.0.1" + }, + "dependencies": { + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } } }, "@nrwl/tao": { - "version": "14.5.4", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.5.4.tgz", - "integrity": "sha512-a2GCuSE8WghjehuU3GVO63KZEnZXXQiqEg137yN/Na+PxwSu68XeaX53SLyzRskTV120YwBBy1YCTNzAZxxsjg==", + "version": "14.5.8", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-14.5.8.tgz", + "integrity": "sha512-tN8qX8wtLP1cuGPKxdaArjtJaHJIpfZ3J2OqkotdocxcvwbDdTvTQzhcLknNNUk/jqHer3YsBmcgyJW3VGbf4w==", "requires": { - "nx": "14.5.4" + "nx": "14.5.8" } }, "@octokit/auth-token": { @@ -20528,6 +20578,14 @@ "node-gyp-build": "^4.3.0" } }, + "@phenomnomnominal/tsquery": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.1.1.tgz", + "integrity": "sha512-jjMmK1tnZbm1Jq5a7fBliM4gQwjxMU7TFoRNwIyzwlO+eHPRCFv/Nv+H/Gi1jc3WR7QURG8D5d0Tn12YGrUqBQ==", + "requires": { + "esquery": "^1.0.1" + } + }, "@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -21400,8 +21458,7 @@ "async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, "asynckit": { "version": "0.4.0", @@ -23270,7 +23327,6 @@ "version": "3.1.8", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", - "dev": true, "requires": { "jake": "^10.8.5" } @@ -23919,7 +23975,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, "requires": { "estraverse": "^5.1.0" }, @@ -23927,8 +23982,7 @@ "estraverse": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" } } }, @@ -24302,7 +24356,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, "requires": { "minimatch": "^5.0.1" }, @@ -24311,7 +24364,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "requires": { "balanced-match": "^1.0.0" } @@ -24320,7 +24372,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, "requires": { "brace-expansion": "^2.0.1" } @@ -25768,7 +25819,6 @@ "version": "10.8.5", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "dev": true, "requires": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -27271,11 +27321,13 @@ "@lerna/link": "file:../../commands/link", "@lerna/list": "file:../../commands/list", "@lerna/publish": "file:../../commands/publish", + "@lerna/repair": "file:../../commands/repair", "@lerna/run": "file:../../commands/run", "@lerna/version": "file:../../commands/version", + "@nrwl/devkit": ">=14.5.8 < 16", "import-local": "^3.0.2", "npmlog": "^6.0.2", - "nx": ">=14.5.4 < 16" + "nx": ">=14.5.8 < 16" } }, "leven": { @@ -28449,12 +28501,12 @@ "dev": true }, "nx": { - "version": "14.5.4", - "resolved": "https://registry.npmjs.org/nx/-/nx-14.5.4.tgz", - "integrity": "sha512-xv1nTaQP6kqVDE4PXcB1tLlgzNAPUHE/2vlqSLgxjNb6colKf0vrEZhVTjhnbqBeJiTb33gUx50bBXkurCkN5w==", + "version": "14.5.8", + "resolved": "https://registry.npmjs.org/nx/-/nx-14.5.8.tgz", + "integrity": "sha512-yTWL4pyzevWORx0GzXElTeoH19pvvOt0v98kXWjNU4TTB1vWlMiHEFAkfqScFrUX0L/efulYoEVjTgPdNtmInA==", "requires": { - "@nrwl/cli": "14.5.4", - "@nrwl/tao": "14.5.4", + "@nrwl/cli": "14.5.8", + "@nrwl/tao": "14.5.8", "@parcel/watcher": "2.0.4", "chalk": "4.1.0", "chokidar": "^3.5.1", @@ -30800,8 +30852,7 @@ "typescript": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", - "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", - "dev": true + "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==" }, "uglify-js": { "version": "3.12.7", diff --git a/package.json b/package.json index 2d248d9147..839a714761 100644 --- a/package.json +++ b/package.json @@ -112,8 +112,8 @@ "@actions/core": "^1.8.2", "@actions/github": "^5.0.3", "@lerna-test/helpers": "file:helpers", - "@nrwl/devkit": "14.5.4", - "@nrwl/nx-cloud": "14.3.0", + "@nrwl/devkit": "14.5.8", + "@nrwl/nx-cloud": "14.4.1", "@types/fs-extra": "^9.0.13", "@types/is-ci": "^2.0.0", "@types/jest": "^28.1.4", @@ -137,7 +137,7 @@ "node-jq": "^2.3.3", "normalize-newline": "^3.0.0", "normalize-path": "^3.0.0", - "nx": "14.5.4", + "nx": "14.5.8", "path-key": "^3.1.1", "prettier": "^2.2.1", "tacks": "1.2.6",