From 65657cd234e31c671de90b12aa58d630cff28280 Mon Sep 17 00:00:00 2001 From: James Henry Date: Thu, 6 Jun 2024 16:17:03 +0400 Subject: [PATCH 01/11] chore: set corepack env vars in workflow (#4015) --- .eslintrc.json | 8 +- .github/workflows/other-node-versions.yml | 4 +- .gitignore | 3 +- .prettierignore | 3 +- .../legacy-task-runner/src/env-files.spec.ts | 3 +- .../src/env-files/assertions.spec.ts | 3 +- libs/e2e-utils/src/lib/fixture.ts | 4 +- package-lock.json | 472 ++++++++++-------- package.json | 20 +- packages/lerna/project.json | 2 +- 10 files changed, 289 insertions(+), 233 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index af47920c54..29c3202e0d 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -34,7 +34,9 @@ "extends": ["plugin:@nx/typescript"], "rules": { "@typescript-eslint/no-empty-function": "off", - "@typescript-eslint/no-explicit-any": "off" + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-extra-semi": "error", + "no-extra-semi": "off" } }, { @@ -77,7 +79,9 @@ "strict": "off", "default-param-last": "warn", "max-len": "off", - "arrow-body-style": "off" + "arrow-body-style": "off", + "@typescript-eslint/no-extra-semi": "error", + "no-extra-semi": "off" } }, { diff --git a/.github/workflows/other-node-versions.yml b/.github/workflows/other-node-versions.yml index 6ae4e36f73..895879305d 100644 --- a/.github/workflows/other-node-versions.yml +++ b/.github/workflows/other-node-versions.yml @@ -14,6 +14,8 @@ env: NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} NX_CLOUD_DISTRIBUTED_EXECUTION: true NX_VERBOSE_LOGGING: false + COREPACK_ENABLE_AUTO_PIN: "0" + COREPACK_ENABLE_STRICT: "0" jobs: set-node-versions: @@ -65,8 +67,6 @@ jobs: - name: Install pnpm v8 run: corepack install -g pnpm@8 shell: bash - env: - COREPACK_ENABLE_AUTO_PIN: "0" - name: Print installed pnpm version run: pnpm --version diff --git a/.gitignore b/.gitignore index bbea81cd7b..23568cd37d 100644 --- a/.gitignore +++ b/.gitignore @@ -39,4 +39,5 @@ website/build website/.docusaurus website/.cache-loader -.nx/cache \ No newline at end of file +.nx/cache +.nx/workspace-data \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 8ba4ad7cb6..278fd1bf17 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,4 +4,5 @@ dist tmp -/.nx/cache \ No newline at end of file +/.nx/cache +/.nx/workspace-data \ No newline at end of file diff --git a/e2e/run/legacy-task-runner/src/env-files.spec.ts b/e2e/run/legacy-task-runner/src/env-files.spec.ts index cd7fc9083a..93c777cb08 100644 --- a/e2e/run/legacy-task-runner/src/env-files.spec.ts +++ b/e2e/run/legacy-task-runner/src/env-files.spec.ts @@ -47,7 +47,8 @@ describe("lerna-run-legacy-task-runner-env-files", () => { }); afterEach(() => fixture.destroy()); - it("should log an empty value", async () => { + // TODO: re-enable this test once resolution lands + it.skip("should log an empty value", async () => { // Enable legacy task runner await fixture.overrideLernaConfig({ useNx: false, diff --git a/e2e/run/task-runner/src/env-files/assertions.spec.ts b/e2e/run/task-runner/src/env-files/assertions.spec.ts index efcd99c191..cb79964545 100644 --- a/e2e/run/task-runner/src/env-files/assertions.spec.ts +++ b/e2e/run/task-runner/src/env-files/assertions.spec.ts @@ -43,7 +43,8 @@ describe("lerna-run-nx-env-files", () => { `); }); - it("should log an empty value when --load-env-files=false", async () => { + // TODO: re-enable this test once resolution lands + it.skip("should log an empty value when --load-env-files=false", async () => { const output = await fixture.readOutput("log-env-var-load-env-files-false"); expect(output).toMatchInlineSnapshot(` diff --git a/libs/e2e-utils/src/lib/fixture.ts b/libs/e2e-utils/src/lib/fixture.ts index ce4a1bc159..bfecfe735f 100644 --- a/libs/e2e-utils/src/lib/fixture.ts +++ b/libs/e2e-utils/src/lib/fixture.ts @@ -425,7 +425,9 @@ export class Fixture { const jsonPath = this.getWorkspacePath(path); const json = readJsonFile(jsonPath) as Record; - writeJsonFile(jsonPath, updateFn(json)); + writeJsonFile(jsonPath, updateFn(json), { + appendNewLine: true, + }); } /** diff --git a/package-lock.json b/package-lock.json index 68052bb0b4..194941b06d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,16 +11,16 @@ "packages/legacy-structure/commands/create" ], "devDependencies": { - "@nx/esbuild": "19.0.2", - "@nx/eslint": "19.0.2", - "@nx/eslint-plugin": "19.0.2", - "@nx/jest": "19.0.2", - "@nx/js": "19.0.2", - "@nx/plugin": "19.0.2", - "@nx/web": "19.0.2", - "@swc-node/register": "1.8.0", + "@nx/esbuild": "19.2.0", + "@nx/eslint": "19.2.0", + "@nx/eslint-plugin": "19.2.0", + "@nx/jest": "19.2.0", + "@nx/js": "19.2.0", + "@nx/plugin": "19.2.0", + "@nx/web": "19.2.0", + "@swc-node/register": "1.9.1", "@swc/cli": "0.3.12", - "@swc/core": "1.3.96", + "@swc/core": "1.5.7", "@types/byte-size": "^8.1.0", "@types/clone-deep": "^4.0.1", "@types/cmd-shim": "^5.0.0", @@ -74,7 +74,7 @@ "lodash": "^4.17.21", "normalize-newline": "^3.0.0", "normalize-path": "^3.0.0", - "nx": "19.0.2", + "nx": "19.2.0", "prettier": "^2.2.1", "resolve.exports": "2.0.0", "tacks": "1.2.6", @@ -4039,64 +4039,64 @@ } }, "node_modules/@nrwl/devkit": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-19.0.2.tgz", - "integrity": "sha512-h/hBltFnJLrDVxVJYcU/qAba9NGfrSp1q4t9U9tl8B8InMtRRgjFKX/whRZd6PE7ZTN7kqr0+XRTETFKv5heDA==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-19.2.0.tgz", + "integrity": "sha512-Ew5AJZkLXJwt15HjaIbHve8FOXmZ3HK8KPqTXqwKHX8jQW+fDUCaSXKe/lCZMNg0RvY+jMNecuC86uGdiIbLMg==", "dependencies": { - "@nx/devkit": "19.0.2" + "@nx/devkit": "19.2.0" } }, "node_modules/@nrwl/esbuild": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nrwl/esbuild/-/esbuild-19.0.2.tgz", - "integrity": "sha512-c4MCQEkF1MKJMY30V6Nqedxy7Mb7L2ULLNZ8l53kZdcdNgvs+GjwoPOmneuyFGnXQpSBpduMrWizBZhNhPrQhg==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/esbuild/-/esbuild-19.2.0.tgz", + "integrity": "sha512-zVtjvJTtxHzmVAy+N/qBD9+LBi2O31ga8zGCRZlyTFr67/HdG0TwVXlhebgJ2kveR8BSdsH6EO4FdnzsikbQdA==", "dev": true, "dependencies": { - "@nx/esbuild": "19.0.2" + "@nx/esbuild": "19.2.0" } }, "node_modules/@nrwl/eslint-plugin-nx": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-19.0.2.tgz", - "integrity": "sha512-T/01uFi6xAjbpU04kqiD+H4NNlZpuPiQbY8T3k/hn3/+2ePK1je09Z2ilsfWUcsH23p95yM4LMmFDTPlrRjwAw==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-19.2.0.tgz", + "integrity": "sha512-W4VhRuxCqgPufHlKdSz/FpHsdZNP/GBN+hwWyDqocbMrwCwj5HqgrcTdHFGHfSq1Q35XsDnCW9AOo1ZHmXA5mA==", "dev": true, "dependencies": { - "@nx/eslint-plugin": "19.0.2" + "@nx/eslint-plugin": "19.2.0" } }, "node_modules/@nrwl/jest": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nrwl/jest/-/jest-19.0.2.tgz", - "integrity": "sha512-z+TQMN57wOK0rocSrhUpYFntYV5rIlSWBcYL/TRjHZAC/2zFR3kmQbgc3bRqEtmmm2pGkpZBLg+abJD/ge+Nxw==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/jest/-/jest-19.2.0.tgz", + "integrity": "sha512-s3qb0AblY+wqPUJFraWP9MYVyv3EA8bbEsMRCuvDDbhoe2nnyd/7PmluyPsWgJVdgbY9Ajgs3ZjuBEfFQ3VV9A==", "dev": true, "dependencies": { - "@nx/jest": "19.0.2" + "@nx/jest": "19.2.0" } }, "node_modules/@nrwl/js": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-19.0.2.tgz", - "integrity": "sha512-6bWHnC3rhRFmuUGt7G/0NGTAxm2ig9MpXzCzERYEACcS3fEN4QDMLbUlyojjiRWbQWeCPz9adxWTgkckM4Ispg==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-19.2.0.tgz", + "integrity": "sha512-i6CyQvTP1etmTxjFhUIw/HAtoZCENbhkc7UmAsyCgTX5IJeo0U3YoHsmDI0TE45yu+4x4gcKLqOHs2zqWj7WCw==", "dev": true, "dependencies": { - "@nx/js": "19.0.2" + "@nx/js": "19.2.0" } }, "node_modules/@nrwl/nx-plugin": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nrwl/nx-plugin/-/nx-plugin-19.0.2.tgz", - "integrity": "sha512-XNYatnqh8/NOubKQeFNWY7/nSFHqSJeW0fkG5gbBNzEI1NF8sQvj+fwjfv6Jz8UkTiChX+oa+5uPOOdpuEA+nA==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/nx-plugin/-/nx-plugin-19.2.0.tgz", + "integrity": "sha512-F1aPbJEPiP7JdDdoZq1UaU9E7NCdmitDdtMPDYqFXbxHbtRCHLyHUQaMyaeGhBCKi+UUzNEgoulHhvdwBou27A==", "dev": true, "dependencies": { - "@nx/plugin": "19.0.2" + "@nx/plugin": "19.2.0" } }, "node_modules/@nrwl/tao": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-19.0.2.tgz", - "integrity": "sha512-VLU0Ptqq9+R5Ugb4d7ANb/pzZ8Rh+ExNcyg5MVNNrrgrM8ghLOu2/qPoatWyXLZg+cfKr6bH7/c0rWBtPcc69Q==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-19.2.0.tgz", + "integrity": "sha512-9AOwbY/E7OlLCFu+6jhJGUIs+qurE2/3Pldooe7cJPqQmSQeJuVZuL6A2xHtbSG7VsXTq5Yj8dVvK1KmT45SIA==", "dependencies": { - "nx": "19.0.2", + "nx": "19.2.0", "tslib": "^2.3.0" }, "bin": { @@ -4104,29 +4104,29 @@ } }, "node_modules/@nrwl/web": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nrwl/web/-/web-19.0.2.tgz", - "integrity": "sha512-/w0ZhhFZvCJv0CgySaIGDhglLiDvvwbF7gM1k4qPPPYZFPPSShmb5BANlDyaBnX6wYRFY42kaXfGE51Dc6qZ5A==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/web/-/web-19.2.0.tgz", + "integrity": "sha512-s6fEyic1cCwZAoKxZ64RMdCfG2jQGZC/FTyO4J7a8iB8oRD8mRLw0lWamXIcW10O0KPrE0zO63+kpjfKJ/ZK+w==", "dev": true, "dependencies": { - "@nx/web": "19.0.2" + "@nx/web": "19.2.0" } }, "node_modules/@nrwl/workspace": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-19.0.2.tgz", - "integrity": "sha512-DtMbNhTpkcsDRn+pBiqFGUpZkBTzhbwQKRacwD2n+NqBFhCSCMoKYxsRnd5A874hiF3fyGB8AYEmuuTOxhATgg==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-19.2.0.tgz", + "integrity": "sha512-/3p9KNpGHgEVjM5aMFhzdp0Vh+Bt16OnlSA+eSKPd5r0eQyLY+T4zTQ1kjyHGYa/xcN8vsWKEnbZW2fD/HWSng==", "dev": true, "dependencies": { - "@nx/workspace": "19.0.2" + "@nx/workspace": "19.2.0" } }, "node_modules/@nx/devkit": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-19.0.2.tgz", - "integrity": "sha512-qHBWQ3ZJ4vO8AVdSlz/u/GXDrDxVsBjC1/pY1ImycnUP4NfOtmBlYdhd5aB9XvWcujSmOap0ZJGr1iapYKoWxQ==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-19.2.0.tgz", + "integrity": "sha512-fK3zRUE2SLp9BUomFiyCuAX2E1yfWYE/hKimniscsvM34/u/xLZYVmmZ0/jfpGPbyaonXKZr2KTb7RimX/hyqg==", "dependencies": { - "@nrwl/devkit": "19.0.2", + "@nrwl/devkit": "19.2.0", "ejs": "^3.1.7", "enquirer": "~2.3.6", "ignore": "^5.0.4", @@ -4174,14 +4174,14 @@ } }, "node_modules/@nx/esbuild": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/esbuild/-/esbuild-19.0.2.tgz", - "integrity": "sha512-JTLORvNIsjdsoGfFdDf3yCUlr8Xu5Z1xs2Hrzktj3pSgvWUAV1/aP83j0Rm8htAZNzODxd40tVonbR9RDNpM9g==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/esbuild/-/esbuild-19.2.0.tgz", + "integrity": "sha512-KOKMf6XhrJQN6juOlsGOksLdUXGrT6qDpaxzGYWXje08cIDvkLLCdnXfmG+UZ+CP/r51/+6CeousBIHWPZUu7A==", "dev": true, "dependencies": { - "@nrwl/esbuild": "19.0.2", - "@nx/devkit": "19.0.2", - "@nx/js": "19.0.2", + "@nrwl/esbuild": "19.2.0", + "@nx/devkit": "19.2.0", + "@nx/js": "19.2.0", "chalk": "^4.1.0", "fast-glob": "3.2.7", "fs-extra": "^11.1.0", @@ -4198,36 +4198,37 @@ } }, "node_modules/@nx/eslint": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-19.0.2.tgz", - "integrity": "sha512-3kOB6Zna0qp8R2sl7Fy6KxPXlKatbkCEN0aPm4hke5euM6JcsRCz1w9dUFDoQ6e29S43htrv4bMc3A+i89ym7Q==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-19.2.0.tgz", + "integrity": "sha512-9OIMntrLDPrQNZjYxOncIX+65r4RhV2dJ3PrjJ9lwCVqJKZGxfCn6f8JK8ubeLoWFPVjKEtfLTHK529vvfXifQ==", "dev": true, "dependencies": { - "@nx/devkit": "19.0.2", - "@nx/js": "19.0.2", - "@nx/linter": "19.0.2", - "eslint": "^8.0.0", + "@nx/devkit": "19.2.0", + "@nx/js": "19.2.0", + "@nx/linter": "19.2.0", + "semver": "^7.5.3", "tslib": "^2.3.0", "typescript": "~5.4.2" }, "peerDependencies": { - "js-yaml": "4.1.0" + "@zkochan/js-yaml": "0.0.7", + "eslint": "^8.0.0 || ^9.0.0" }, "peerDependenciesMeta": { - "js-yaml": { + "@zkochan/js-yaml": { "optional": true } } }, "node_modules/@nx/eslint-plugin": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-19.0.2.tgz", - "integrity": "sha512-MVriamwIXTdBgcP66IawjMa+A4hr4DKBRtvLtpv8MWYMXafBvqRXryAOAw490Q31YB1B9xs3n19OCDaTIbSHvQ==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-19.2.0.tgz", + "integrity": "sha512-vFrquQjgWJDFE6ntqUDrduv0msBGkQCR0s7Qx0WHqL77wGgdKOO3bmCYYIfPXcS8KqAU/KqGLIj/5+obtEKOWA==", "dev": true, "dependencies": { - "@nrwl/eslint-plugin-nx": "19.0.2", - "@nx/devkit": "19.0.2", - "@nx/js": "19.0.2", + "@nrwl/eslint-plugin-nx": "19.2.0", + "@nx/devkit": "19.2.0", + "@nx/js": "19.2.0", "@typescript-eslint/type-utils": "^7.3.0", "@typescript-eslint/utils": "^7.3.0", "chalk": "^4.1.0", @@ -4258,6 +4259,18 @@ "node": ">=10" } }, + "node_modules/@nx/eslint/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@nx/eslint/node_modules/typescript": { "version": "5.4.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", @@ -4272,16 +4285,16 @@ } }, "node_modules/@nx/jest": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-19.0.2.tgz", - "integrity": "sha512-oV3QBdm/chaAcj+lzrwL937QIGZNXO18puFvol0hJrmVWMNRQr8LADfVHr8+qBrThxfj+w5UhXoDcqPS38zXXg==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-19.2.0.tgz", + "integrity": "sha512-iJMqfwkIB4T7NRYAQe3nZWFEAQGGblMGcxWczMKEixCIZWcAz4up74eb0H6Yv+tUVOQHrFTm6J1OnrW3BqvOZA==", "dev": true, "dependencies": { "@jest/reporters": "^29.4.1", "@jest/test-result": "^29.4.1", - "@nrwl/jest": "19.0.2", - "@nx/devkit": "19.0.2", - "@nx/js": "19.0.2", + "@nrwl/jest": "19.2.0", + "@nx/devkit": "19.2.0", + "@nx/js": "19.2.0", "@phenomnomnominal/tsquery": "~5.0.1", "chalk": "^4.1.0", "identity-obj-proxy": "3.0.0", @@ -4328,9 +4341,9 @@ } }, "node_modules/@nx/js": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-19.0.2.tgz", - "integrity": "sha512-pAA9/mFGnBwpF/x+80dSWHZIxY0M1YtgcabQYdQmZ8zwdYOtSkJwuibFvPRkUxqVg0F4E0nTuJ4R1uruSe9P8Q==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-19.2.0.tgz", + "integrity": "sha512-cLz1OSfWpm/y0bZtdv5INlCo9/ED9tC45e6OKBc2ClW5Gz2+IoZz/dK/bCXg7dpEBtF1Y9mHihKisPOmUhaLwQ==", "dev": true, "dependencies": { "@babel/core": "^7.23.2", @@ -4340,9 +4353,9 @@ "@babel/preset-env": "^7.23.2", "@babel/preset-typescript": "^7.22.5", "@babel/runtime": "^7.22.6", - "@nrwl/js": "19.0.2", - "@nx/devkit": "19.0.2", - "@nx/workspace": "19.0.2", + "@nrwl/js": "19.2.0", + "@nx/devkit": "19.2.0", + "@nx/workspace": "19.2.0", "babel-plugin-const-enum": "^1.0.1", "babel-plugin-macros": "^2.8.0", "babel-plugin-transform-typescript-metadata": "^0.3.1", @@ -4424,18 +4437,18 @@ } }, "node_modules/@nx/linter": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-19.0.2.tgz", - "integrity": "sha512-t9ccK+IVV/pNBbST2cOstuiMaBeC4o31U4yYPYMqrSx6uEkNoIe+YTJoaxLENaxqpvb+oek65Rg6/FlIbkrYVA==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-19.2.0.tgz", + "integrity": "sha512-Rahjy3+OLc4aXT8VNXpwyMozeU4RB6HIQOh5NAdcA6PoOH8cG1VtbyjryIZE8l5HT1hrpI5EkONZt1UXiIGw3w==", "dev": true, "dependencies": { - "@nx/eslint": "19.0.2" + "@nx/eslint": "19.2.0" } }, "node_modules/@nx/nx-darwin-arm64": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.0.2.tgz", - "integrity": "sha512-JVOz6kNaypyK7Bi/l//BZ6F8i70UXlnQBdnacBM8nZH2oAQ7OIj1foZEw7ANnDvKpUJB2staJ9ZwPc/KzXwr5A==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.2.0.tgz", + "integrity": "sha512-W+OpGyzr10oaycf4atPc5uH2wN1G6LJGHkWDN3LGSQhoDWuj13idFpjSy6rJ8WxtL8kIvPXq78GEi1yAADsakA==", "cpu": [ "arm64" ], @@ -4448,9 +4461,9 @@ } }, "node_modules/@nx/nx-darwin-x64": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.0.2.tgz", - "integrity": "sha512-qfj3AJ/RCbEps+Evbycrf1qUQk/zkwX5NT80dgK/r9eGBbo3qOA3VLa1z0PtaaJaYhZxZkjhwXOqhqAjDNN8bw==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.2.0.tgz", + "integrity": "sha512-4l1BDn29R0ugf7ATcGcZGEwK0frZSCtiyXnX3JFq55dNS4Bv3FiZLew7JULjdumXEXr773bH326FQlocLVlcXg==", "cpu": [ "x64" ], @@ -4463,9 +4476,9 @@ } }, "node_modules/@nx/nx-freebsd-x64": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.0.2.tgz", - "integrity": "sha512-Fe+SQ4ug2RbKQ6saLhntsaOhf0aeoLQ/nJCc6h0TYPIs43go5gFSLFa2xnCOIo90dSL6/0z1r8VsZGSQQHiXMg==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.2.0.tgz", + "integrity": "sha512-9zdwLRSkEg/H7bbIVWATn0H8QNgnHaTe23tciZPaBr95J6CXVJWWpC4wn9duURhvbscnqUSSSfKK1f+MSEDTbw==", "cpu": [ "x64" ], @@ -4478,9 +4491,9 @@ } }, "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.0.2.tgz", - "integrity": "sha512-0IW/gYZo5toGjjrqKL4SqV2twfkVDfMpx6M4BxwJlYEzzl+gtF0VrWfhVU3r4p2YZV8yW3cmH9SNChB6YZgQmA==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.2.0.tgz", + "integrity": "sha512-KNVnqRPegJza3kU4q3pY8m0pT8OSQZnLGsDZti6morhXh2sE79f/zeevOrbhf8JnaJfQtyrXfGvjYAiL3+I8bw==", "cpu": [ "arm" ], @@ -4493,9 +4506,9 @@ } }, "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.0.2.tgz", - "integrity": "sha512-+u5Y7XYf0M/KOnDz+iS6DnaGfwvEFsMJipzv337Mbc2qP2sxBR4pM8hEKcQeqII71as0Xo0sZzmyxXjJvG7bzw==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.2.0.tgz", + "integrity": "sha512-UXIl90l+cDecU17OOLlI+uzbjzQucnNu4Mee67EqE3TyfpSvuU1l3FWZ9sbE0effp8IwKpbL7Gt5KirJKtWzIA==", "cpu": [ "arm64" ], @@ -4508,9 +4521,9 @@ } }, "node_modules/@nx/nx-linux-arm64-musl": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.0.2.tgz", - "integrity": "sha512-hmQ6evq9S5a/svQOwpRF5Zcu114A9jpeDKEBysFmbdV1eTFkrxlnvSCs/xXOeYOe/QS8Ijl50d7+1zkOE2HVMA==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.2.0.tgz", + "integrity": "sha512-4Z8XO3WljS2GWOL2SQ1p8SRNn2Kn6FU1FWClh7KBzMtpzjsHdmOXenMP9UOGZ6gBnfBIknCEDjE3uJUHmuShGg==", "cpu": [ "arm64" ], @@ -4523,9 +4536,9 @@ } }, "node_modules/@nx/nx-linux-x64-gnu": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.0.2.tgz", - "integrity": "sha512-zVcAotU7qlunsvg7I3oGp50f6ha44FeU6ITA+CHD0A/wqD11ZpVP0qsqMLawCGiKhNafQmUvkXMEFJ1dUX5aWw==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.2.0.tgz", + "integrity": "sha512-EwAkZEp0KB99VEPTskW2feCpSKqWScKdRd6UaIM9Vmqqtb5hSk6yR6p0mprjytbDtFVoKQJMOFa35qe+2R8mKQ==", "cpu": [ "x64" ], @@ -4538,9 +4551,9 @@ } }, "node_modules/@nx/nx-linux-x64-musl": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.0.2.tgz", - "integrity": "sha512-72hT2V9IQNMIrC7sBzllrHEnoJOhuPxKXJTUYzz4v/Y11t1ziTHflGXO9nJOpydh8vA+91dPVrDM5mWr6IEPzg==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.2.0.tgz", + "integrity": "sha512-LbFcHe83YZUS/my/8nBxQ2i3JWakcXd7zbzZ0cSAQk6DuJVCUk8PLdgZzhrVcmT82Pv7H0fM/4jgEl+oHGoc/g==", "cpu": [ "x64" ], @@ -4553,9 +4566,9 @@ } }, "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.0.2.tgz", - "integrity": "sha512-aTxQBtUrusAm535DRnHxgM9AXnPYkhzr+eUSjrPUPTu2N3cuckq6JWfpxtjVCMcPfOR+pOC9luG3+bWmO32TQQ==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.2.0.tgz", + "integrity": "sha512-BxOveRfRCdhuCs2GWbsdzGsjtLC3N+MuUlVaXSWADksF6/QKuCHM/2Kq3RYkLVVtlls6NCBp410RSx/XsbSEug==", "cpu": [ "arm64" ], @@ -4568,9 +4581,9 @@ } }, "node_modules/@nx/nx-win32-x64-msvc": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.0.2.tgz", - "integrity": "sha512-lgxgj+ilhL9StCLzRxU+EB1n944bMjwbU3CxvYW2TYa+380UXVMUACjbLyzONQPeJPIm9azaVQNKnf5+c+nnBQ==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.2.0.tgz", + "integrity": "sha512-QiDxtOHIiRka9Bz7tSpBvQgQPrX5grLhoz6miD6LX1WjO56bZIkEAVefGnMc3WZ1PacS1ZECtymHwUy+WpEqAQ==", "cpu": [ "x64" ], @@ -4583,29 +4596,29 @@ } }, "node_modules/@nx/plugin": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/plugin/-/plugin-19.0.2.tgz", - "integrity": "sha512-drwF3BJo6hgJ8Drg3WsLScRmyoTYBV9VwXauAXJM7RXVc4bAUbvoaMF2BWHIwW1ON6JHEX862ca2+nE/7nwgYg==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/plugin/-/plugin-19.2.0.tgz", + "integrity": "sha512-Y9q7hMpAdZJrzdL+Owi4nSSUpqeohvd4smqALPcvxtbAp2zVLaAi9iic3jbUVf3ilZFyTmZ1HxgYGP6/Xxq3Vg==", "dev": true, "dependencies": { - "@nrwl/nx-plugin": "19.0.2", - "@nx/devkit": "19.0.2", - "@nx/eslint": "19.0.2", - "@nx/jest": "19.0.2", - "@nx/js": "19.0.2", + "@nrwl/nx-plugin": "19.2.0", + "@nx/devkit": "19.2.0", + "@nx/eslint": "19.2.0", + "@nx/jest": "19.2.0", + "@nx/js": "19.2.0", "fs-extra": "^11.1.0", "tslib": "^2.3.0" } }, "node_modules/@nx/web": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/web/-/web-19.0.2.tgz", - "integrity": "sha512-sK1avzp/FXtFO/viEtBj/UQTA0ScVfOGlwe92bAAFiX8YnxoazrPQnWiogXbF2AkQwFGyxR0Kp3iiu4Ezrp9Vg==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-19.2.0.tgz", + "integrity": "sha512-iMRwDjkU7GfJql4wT6pGCimFoHYV/2bQuI/N9b9T3NEL9sk5tlMqlik6bbSGtje8XoUAbxaQrTpr9pJeaUPYwg==", "dev": true, "dependencies": { - "@nrwl/web": "19.0.2", - "@nx/devkit": "19.0.2", - "@nx/js": "19.0.2", + "@nrwl/web": "19.2.0", + "@nx/devkit": "19.2.0", + "@nx/js": "19.2.0", "chalk": "^4.1.0", "detect-port": "^1.5.1", "http-server": "^14.1.0", @@ -4613,16 +4626,16 @@ } }, "node_modules/@nx/workspace": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-19.0.2.tgz", - "integrity": "sha512-4azpf0tDM7mN7kciMHH4e0bw2yEhVu4M6siYDLfq6ELY+rrP7eveh/drKiWaKrV9WVwwWzYdfpk98+1EtrBLAA==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-19.2.0.tgz", + "integrity": "sha512-0wdv8jrGIGcf/ZF4r2/xWz/jrQjwftgLPmh7BawYPFbDZlRXkzb7a4MTJOxXH8QcR3ZJNhRjkFfHRPbB0luf1A==", "dev": true, "dependencies": { - "@nrwl/workspace": "19.0.2", - "@nx/devkit": "19.0.2", + "@nrwl/workspace": "19.2.0", + "@nx/devkit": "19.2.0", "chalk": "^4.1.0", "enquirer": "~2.3.6", - "nx": "19.0.2", + "nx": "19.2.0", "tslib": "^2.3.0", "yargs-parser": "21.1.1" } @@ -5072,13 +5085,13 @@ } }, "node_modules/@swc-node/register": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc-node/register/-/register-1.8.0.tgz", - "integrity": "sha512-8K3589HoBSmVmrEVrtr4K5sWEithpGDzcFGic81OW0A9sZY38IV5EGRODQWCk0SBDyLhaF+pid120vJAtsHo1A==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc-node/register/-/register-1.9.1.tgz", + "integrity": "sha512-z//TBXJdRWXoISCXlQmVz+NMm8Qm/UvcfKiGC0tSJdfeVYf5EZkGqvk2OiRH4SIJ6OGFfS9T0YrvA2pDKzWtPA==", "dev": true, "dependencies": { - "@swc-node/core": "^1.12.0", - "@swc-node/sourcemap-support": "^0.4.0", + "@swc-node/core": "^1.13.1", + "@swc-node/sourcemap-support": "^0.5.0", "colorette": "^2.0.20", "debug": "^4.3.4", "pirates": "^4.0.6", @@ -5089,14 +5102,14 @@ "url": "https://github.com/sponsors/Brooooooklyn" }, "peerDependencies": { - "@swc/core": ">= 1.3", + "@swc/core": ">= 1.4.13", "typescript": ">= 4.3" } }, "node_modules/@swc-node/sourcemap-support": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@swc-node/sourcemap-support/-/sourcemap-support-0.4.0.tgz", - "integrity": "sha512-weuRmYTO+4yOtHtPZHXlPdA1dJJJp3QOoZAFZ6uZidu992F2X5v1fQdnb26xs1o3Ex/e2sYhRyY5R6NGNuoATQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@swc-node/sourcemap-support/-/sourcemap-support-0.5.0.tgz", + "integrity": "sha512-fbhjL5G0YvFoWwNhWleuBUfotiX+USiA9oJqu9STFw+Hb0Cgnddn+HVS/K5fI45mn92e8V+cHD2jgFjk4w2T9Q==", "dev": true, "dependencies": { "source-map-support": "^0.5.21", @@ -5181,14 +5194,14 @@ } }, "node_modules/@swc/core": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.96.tgz", - "integrity": "sha512-zwE3TLgoZwJfQygdv2SdCK9mRLYluwDOM53I+dT6Z5ZvrgVENmY3txvWDvduzkV+/8IuvrRbVezMpxcojadRdQ==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.5.7.tgz", + "integrity": "sha512-U4qJRBefIJNJDRCCiVtkfa/hpiZ7w0R6kASea+/KLp+vkus3zcLSB8Ub8SvKgTIxjWpwsKcZlPf5nrv4ls46SQ==", "dev": true, "hasInstallScript": true, "dependencies": { - "@swc/counter": "^0.1.1", - "@swc/types": "^0.1.5" + "@swc/counter": "^0.1.2", + "@swc/types": "0.1.7" }, "engines": { "node": ">=10" @@ -5198,16 +5211,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.96", - "@swc/core-darwin-x64": "1.3.96", - "@swc/core-linux-arm-gnueabihf": "1.3.96", - "@swc/core-linux-arm64-gnu": "1.3.96", - "@swc/core-linux-arm64-musl": "1.3.96", - "@swc/core-linux-x64-gnu": "1.3.96", - "@swc/core-linux-x64-musl": "1.3.96", - "@swc/core-win32-arm64-msvc": "1.3.96", - "@swc/core-win32-ia32-msvc": "1.3.96", - "@swc/core-win32-x64-msvc": "1.3.96" + "@swc/core-darwin-arm64": "1.5.7", + "@swc/core-darwin-x64": "1.5.7", + "@swc/core-linux-arm-gnueabihf": "1.5.7", + "@swc/core-linux-arm64-gnu": "1.5.7", + "@swc/core-linux-arm64-musl": "1.5.7", + "@swc/core-linux-x64-gnu": "1.5.7", + "@swc/core-linux-x64-musl": "1.5.7", + "@swc/core-win32-arm64-msvc": "1.5.7", + "@swc/core-win32-ia32-msvc": "1.5.7", + "@swc/core-win32-x64-msvc": "1.5.7" }, "peerDependencies": { "@swc/helpers": "^0.5.0" @@ -5219,9 +5232,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.96.tgz", - "integrity": "sha512-8hzgXYVd85hfPh6mJ9yrG26rhgzCmcLO0h1TIl8U31hwmTbfZLzRitFQ/kqMJNbIBCwmNH1RU2QcJnL3d7f69A==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.5.7.tgz", + "integrity": "sha512-bZLVHPTpH3h6yhwVl395k0Mtx8v6CGhq5r4KQdAoPbADU974Mauz1b6ViHAJ74O0IVE5vyy7tD3OpkQxL/vMDQ==", "cpu": [ "arm64" ], @@ -5235,9 +5248,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.96.tgz", - "integrity": "sha512-mFp9GFfuPg+43vlAdQZl0WZpZSE8sEzqL7sr/7Reul5McUHP0BaLsEzwjvD035ESfkY8GBZdLpMinblIbFNljQ==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.5.7.tgz", + "integrity": "sha512-RpUyu2GsviwTc2qVajPL0l8nf2vKj5wzO3WkLSHAHEJbiUZk83NJrZd1RVbEknIMO7+Uyjh54hEh8R26jSByaw==", "cpu": [ "x64" ], @@ -5251,9 +5264,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.96.tgz", - "integrity": "sha512-8UEKkYJP4c8YzYIY/LlbSo8z5Obj4hqcv/fUTHiEePiGsOddgGf7AWjh56u7IoN/0uEmEro59nc1ChFXqXSGyg==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.5.7.tgz", + "integrity": "sha512-cTZWTnCXLABOuvWiv6nQQM0hP6ZWEkzdgDvztgHI/+u/MvtzJBN5lBQ2lue/9sSFYLMqzqff5EHKlFtrJCA9dQ==", "cpu": [ "arm" ], @@ -5267,9 +5280,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.96.tgz", - "integrity": "sha512-c/IiJ0s1y3Ymm2BTpyC/xr6gOvoqAVETrivVXHq68xgNms95luSpbYQ28rqaZC8bQC8M5zdXpSc0T8DJu8RJGw==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.5.7.tgz", + "integrity": "sha512-hoeTJFBiE/IJP30Be7djWF8Q5KVgkbDtjySmvYLg9P94bHg9TJPSQoC72tXx/oXOgXvElDe/GMybru0UxhKx4g==", "cpu": [ "arm64" ], @@ -5283,9 +5296,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.96.tgz", - "integrity": "sha512-i5/UTUwmJLri7zhtF6SAo/4QDQJDH2fhYJaBIUhrICmIkRO/ltURmpejqxsM/ye9Jqv5zG7VszMC0v/GYn/7BQ==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.5.7.tgz", + "integrity": "sha512-+NDhK+IFTiVK1/o7EXdCeF2hEzCiaRSrb9zD7X2Z7inwWlxAntcSuzZW7Y6BRqGQH89KA91qYgwbnjgTQ22PiQ==", "cpu": [ "arm64" ], @@ -5299,9 +5312,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.96.tgz", - "integrity": "sha512-USdaZu8lTIkm4Yf9cogct/j5eqtdZqTgcTib4I+NloUW0E/hySou3eSyp3V2UAA1qyuC72ld1otXuyKBna0YKQ==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.5.7.tgz", + "integrity": "sha512-25GXpJmeFxKB+7pbY7YQLhWWjkYlR+kHz5I3j9WRl3Lp4v4UD67OGXwPe+DIcHqcouA1fhLhsgHJWtsaNOMBNg==", "cpu": [ "x64" ], @@ -5315,9 +5328,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.96.tgz", - "integrity": "sha512-QYErutd+G2SNaCinUVobfL7jWWjGTI0QEoQ6hqTp7PxCJS/dmKmj3C5ZkvxRYcq7XcZt7ovrYCTwPTHzt6lZBg==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.5.7.tgz", + "integrity": "sha512-0VN9Y5EAPBESmSPPsCJzplZHV26akC0sIgd3Hc/7S/1GkSMoeuVL+V9vt+F/cCuzr4VidzSkqftdP3qEIsXSpg==", "cpu": [ "x64" ], @@ -5331,9 +5344,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.96.tgz", - "integrity": "sha512-hjGvvAduA3Un2cZ9iNP4xvTXOO4jL3G9iakhFsgVhpkU73SGmK7+LN8ZVBEu4oq2SUcHO6caWvnZ881cxGuSpg==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.5.7.tgz", + "integrity": "sha512-RtoNnstBwy5VloNCvmvYNApkTmuCe4sNcoYWpmY7C1+bPR+6SOo8im1G6/FpNem8AR5fcZCmXHWQ+EUmRWJyuA==", "cpu": [ "arm64" ], @@ -5347,9 +5360,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.96.tgz", - "integrity": "sha512-Far2hVFiwr+7VPCM2GxSmbh3ikTpM3pDombE+d69hkedvYHYZxtTF+2LTKl/sXtpbUnsoq7yV/32c9R/xaaWfw==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.5.7.tgz", + "integrity": "sha512-Xm0TfvcmmspvQg1s4+USL3x8D+YPAfX2JHygvxAnCJ0EHun8cm2zvfNBcsTlnwYb0ybFWXXY129aq1wgFC9TpQ==", "cpu": [ "ia32" ], @@ -5363,9 +5376,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.96", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.96.tgz", - "integrity": "sha512-4VbSAniIu0ikLf5mBX81FsljnfqjoVGleEkCQv4+zRlyZtO3FHoDPkeLVoy6WRlj7tyrRcfUJ4mDdPkbfTO14g==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.5.7.tgz", + "integrity": "sha512-tp43WfJLCsKLQKBmjmY/0vv1slVywR5Q4qKjF5OIY8QijaEW7/8VwPyUyVoJZEnDgv9jKtUTG5PzqtIYPZGnyg==", "cpu": [ "x64" ], @@ -5385,9 +5398,9 @@ "dev": true }, "node_modules/@swc/types": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.6.tgz", - "integrity": "sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.7.tgz", + "integrity": "sha512-scHWahbHF0eyj3JsxG9CFJgFdFNaVQCNAimBlT6PzS3n/HptxqREjsm4OH6AN3lYcffZYSPxXW8ua2BEHp0lJQ==", "dev": true, "dependencies": { "@swc/counter": "^0.1.3" @@ -7007,9 +7020,9 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/@zkochan/js-yaml": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", - "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", + "integrity": "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==", "dependencies": { "argparse": "^2.0.1" }, @@ -11265,6 +11278,39 @@ "node": ">= 0.6" } }, + "node_modules/front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "dependencies": { + "js-yaml": "^3.13.1" + } + }, + "node_modules/front-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/front-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/front-matter/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -15836,15 +15882,15 @@ "dev": true }, "node_modules/nx": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/nx/-/nx-19.0.2.tgz", - "integrity": "sha512-59BSYa/Qp8nA764T7Cg7tSisFYBws9zSAMPm0YspCSPndoUy86Mjtg62bEqkHN0MWo6W4MxwOHuB0XSBvQ5DdA==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/nx/-/nx-19.2.0.tgz", + "integrity": "sha512-IewqV0eGOpp569TSjfQVIQODxkRYKSDTP0e0j20GKkMTvCAmdbJRYZxyTr6Aw6gSM7lEVgK/4yESRO5YidfV2Q==", "hasInstallScript": true, "dependencies": { - "@nrwl/tao": "19.0.2", + "@nrwl/tao": "19.2.0", "@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/parsers": "3.0.0-rc.46", - "@zkochan/js-yaml": "0.0.6", + "@zkochan/js-yaml": "0.0.7", "axios": "^1.6.0", "chalk": "^4.1.0", "cli-cursor": "3.1.0", @@ -15855,10 +15901,10 @@ "enquirer": "~2.3.6", "figures": "3.2.0", "flat": "^5.0.2", + "front-matter": "^4.0.2", "fs-extra": "^11.1.0", "ignore": "^5.0.4", "jest-diff": "^29.4.1", - "js-yaml": "4.1.0", "jsonc-parser": "3.2.0", "lines-and-columns": "~2.0.3", "minimatch": "9.0.3", @@ -15881,16 +15927,16 @@ "nx-cloud": "bin/nx-cloud.js" }, "optionalDependencies": { - "@nx/nx-darwin-arm64": "19.0.2", - "@nx/nx-darwin-x64": "19.0.2", - "@nx/nx-freebsd-x64": "19.0.2", - "@nx/nx-linux-arm-gnueabihf": "19.0.2", - "@nx/nx-linux-arm64-gnu": "19.0.2", - "@nx/nx-linux-arm64-musl": "19.0.2", - "@nx/nx-linux-x64-gnu": "19.0.2", - "@nx/nx-linux-x64-musl": "19.0.2", - "@nx/nx-win32-arm64-msvc": "19.0.2", - "@nx/nx-win32-x64-msvc": "19.0.2" + "@nx/nx-darwin-arm64": "19.2.0", + "@nx/nx-darwin-x64": "19.2.0", + "@nx/nx-freebsd-x64": "19.2.0", + "@nx/nx-linux-arm-gnueabihf": "19.2.0", + "@nx/nx-linux-arm64-gnu": "19.2.0", + "@nx/nx-linux-arm64-musl": "19.2.0", + "@nx/nx-linux-x64-gnu": "19.2.0", + "@nx/nx-linux-x64-musl": "19.2.0", + "@nx/nx-win32-arm64-msvc": "19.2.0", + "@nx/nx-win32-x64-msvc": "19.2.0" }, "peerDependencies": { "@swc-node/register": "^1.8.0", diff --git a/package.json b/package.json index f47a080d90..412a20b435 100644 --- a/package.json +++ b/package.json @@ -32,16 +32,16 @@ "license": "MIT", "homepage": "https://lerna.js.org", "devDependencies": { - "@nx/esbuild": "19.0.2", - "@nx/eslint": "19.0.2", - "@nx/eslint-plugin": "19.0.2", - "@nx/jest": "19.0.2", - "@nx/js": "19.0.2", - "@nx/plugin": "19.0.2", - "@nx/web": "19.0.2", - "@swc-node/register": "1.8.0", + "@nx/esbuild": "19.2.0", + "@nx/eslint": "19.2.0", + "@nx/eslint-plugin": "19.2.0", + "@nx/jest": "19.2.0", + "@nx/js": "19.2.0", + "@nx/plugin": "19.2.0", + "@nx/web": "19.2.0", + "@swc-node/register": "1.9.1", "@swc/cli": "0.3.12", - "@swc/core": "1.3.96", + "@swc/core": "1.5.7", "@types/byte-size": "^8.1.0", "@types/clone-deep": "^4.0.1", "@types/cmd-shim": "^5.0.0", @@ -95,7 +95,7 @@ "lodash": "^4.17.21", "normalize-newline": "^3.0.0", "normalize-path": "^3.0.0", - "nx": "19.0.2", + "nx": "19.2.0", "prettier": "^2.2.1", "resolve.exports": "2.0.0", "tacks": "1.2.6", diff --git a/packages/lerna/project.json b/packages/lerna/project.json index 6ad9585489..37ee317482 100644 --- a/packages/lerna/project.json +++ b/packages/lerna/project.json @@ -88,7 +88,7 @@ "packages/lerna/src/utils/index.ts" ], "esbuildOptions": { - "external": ["*package.json", "@lerna/create", "@lerna/legacy-package-management"], + "external": ["*package.json", "@lerna/create", "@lerna/legacy-package-management", "nx/*"], "outExtension": { ".js": ".js" }, From 244462d59008f627ca7836c490a97951a9e5dd26 Mon Sep 17 00:00:00 2001 From: Craigory Coppola Date: Thu, 6 Jun 2024 09:05:22 -0400 Subject: [PATCH 02/11] fix: specify 'dependencies: true' when prepping task runner options (#4017) --- libs/commands/run/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/commands/run/src/index.ts b/libs/commands/run/src/index.ts index 6d53d868dc..84d78f1031 100644 --- a/libs/commands/run/src/index.ts +++ b/libs/commands/run/src/index.ts @@ -325,7 +325,7 @@ export class RunCommand extends Command { ? { [this.script]: [ { - projects: "dependencies", + dependencies: true, target: this.script, }, ], From 0b271fbca14bf9a3e3baf67c3efa29200cc71748 Mon Sep 17 00:00:00 2001 From: James Henry Date: Fri, 7 Jun 2024 13:21:38 +0400 Subject: [PATCH 03/11] chore: re-enable tests (#4019) --- .../legacy-task-runner/src/env-files.spec.ts | 3 +- .../src/env-files/assertions.spec.ts | 3 +- package-lock.json | 292 +++++++++--------- package.json | 16 +- 4 files changed, 156 insertions(+), 158 deletions(-) diff --git a/e2e/run/legacy-task-runner/src/env-files.spec.ts b/e2e/run/legacy-task-runner/src/env-files.spec.ts index 93c777cb08..cd7fc9083a 100644 --- a/e2e/run/legacy-task-runner/src/env-files.spec.ts +++ b/e2e/run/legacy-task-runner/src/env-files.spec.ts @@ -47,8 +47,7 @@ describe("lerna-run-legacy-task-runner-env-files", () => { }); afterEach(() => fixture.destroy()); - // TODO: re-enable this test once resolution lands - it.skip("should log an empty value", async () => { + it("should log an empty value", async () => { // Enable legacy task runner await fixture.overrideLernaConfig({ useNx: false, diff --git a/e2e/run/task-runner/src/env-files/assertions.spec.ts b/e2e/run/task-runner/src/env-files/assertions.spec.ts index cb79964545..efcd99c191 100644 --- a/e2e/run/task-runner/src/env-files/assertions.spec.ts +++ b/e2e/run/task-runner/src/env-files/assertions.spec.ts @@ -43,8 +43,7 @@ describe("lerna-run-nx-env-files", () => { `); }); - // TODO: re-enable this test once resolution lands - it.skip("should log an empty value when --load-env-files=false", async () => { + it("should log an empty value when --load-env-files=false", async () => { const output = await fixture.readOutput("log-env-var-load-env-files-false"); expect(output).toMatchInlineSnapshot(` diff --git a/package-lock.json b/package-lock.json index 194941b06d..581afc6fdc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,13 +11,13 @@ "packages/legacy-structure/commands/create" ], "devDependencies": { - "@nx/esbuild": "19.2.0", - "@nx/eslint": "19.2.0", - "@nx/eslint-plugin": "19.2.0", - "@nx/jest": "19.2.0", - "@nx/js": "19.2.0", - "@nx/plugin": "19.2.0", - "@nx/web": "19.2.0", + "@nx/esbuild": "19.2.1", + "@nx/eslint": "19.2.1", + "@nx/eslint-plugin": "19.2.1", + "@nx/jest": "19.2.1", + "@nx/js": "19.2.1", + "@nx/plugin": "19.2.1", + "@nx/web": "19.2.1", "@swc-node/register": "1.9.1", "@swc/cli": "0.3.12", "@swc/core": "1.5.7", @@ -74,7 +74,7 @@ "lodash": "^4.17.21", "normalize-newline": "^3.0.0", "normalize-path": "^3.0.0", - "nx": "19.2.0", + "nx": "19.2.1", "prettier": "^2.2.1", "resolve.exports": "2.0.0", "tacks": "1.2.6", @@ -4039,64 +4039,64 @@ } }, "node_modules/@nrwl/devkit": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-19.2.0.tgz", - "integrity": "sha512-Ew5AJZkLXJwt15HjaIbHve8FOXmZ3HK8KPqTXqwKHX8jQW+fDUCaSXKe/lCZMNg0RvY+jMNecuC86uGdiIbLMg==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-19.2.1.tgz", + "integrity": "sha512-Le/1tNEWqZKWVENz4YJk/31rU+fOHhFAerWwoZkLwyFwXRWyPmnGuJnUUu3igKKrcj98Vh9+jOpfZl3blooDUA==", "dependencies": { - "@nx/devkit": "19.2.0" + "@nx/devkit": "19.2.1" } }, "node_modules/@nrwl/esbuild": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nrwl/esbuild/-/esbuild-19.2.0.tgz", - "integrity": "sha512-zVtjvJTtxHzmVAy+N/qBD9+LBi2O31ga8zGCRZlyTFr67/HdG0TwVXlhebgJ2kveR8BSdsH6EO4FdnzsikbQdA==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nrwl/esbuild/-/esbuild-19.2.1.tgz", + "integrity": "sha512-OFUU5AJ6lU82rnsq6ONNp6ecHt1fktJNFFonSLk/TLTObnaS6GOAvkoCzbhLWDRUWUsCOh1Q7AE3DEqcary04w==", "dev": true, "dependencies": { - "@nx/esbuild": "19.2.0" + "@nx/esbuild": "19.2.1" } }, "node_modules/@nrwl/eslint-plugin-nx": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-19.2.0.tgz", - "integrity": "sha512-W4VhRuxCqgPufHlKdSz/FpHsdZNP/GBN+hwWyDqocbMrwCwj5HqgrcTdHFGHfSq1Q35XsDnCW9AOo1ZHmXA5mA==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-19.2.1.tgz", + "integrity": "sha512-+cXH0vJHz+G8sDomQL3r7kC4CmR7DqNRaJIw1+IBuy5f8h9tDGrKHYh3wVL6bigQOYkxSCOMyyeDXP5kFjTqkg==", "dev": true, "dependencies": { - "@nx/eslint-plugin": "19.2.0" + "@nx/eslint-plugin": "19.2.1" } }, "node_modules/@nrwl/jest": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nrwl/jest/-/jest-19.2.0.tgz", - "integrity": "sha512-s3qb0AblY+wqPUJFraWP9MYVyv3EA8bbEsMRCuvDDbhoe2nnyd/7PmluyPsWgJVdgbY9Ajgs3ZjuBEfFQ3VV9A==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nrwl/jest/-/jest-19.2.1.tgz", + "integrity": "sha512-90jXFvV0jlIoWqdphCvpLW3SR9vhXrlm4vhF2ge/+PDrdKsyZwpoHc2Xm1bl5r9S1Qoqr0E4SzrxkT76pKwfqw==", "dev": true, "dependencies": { - "@nx/jest": "19.2.0" + "@nx/jest": "19.2.1" } }, "node_modules/@nrwl/js": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-19.2.0.tgz", - "integrity": "sha512-i6CyQvTP1etmTxjFhUIw/HAtoZCENbhkc7UmAsyCgTX5IJeo0U3YoHsmDI0TE45yu+4x4gcKLqOHs2zqWj7WCw==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-19.2.1.tgz", + "integrity": "sha512-121mwOdhDLUtItYlGpUTFqs/S3SP+ljKoj+AI2tGlLnT4LjDeqDiXo6uGa9FhmyErH9Q122ZsTIfklIQFhnV5g==", "dev": true, "dependencies": { - "@nx/js": "19.2.0" + "@nx/js": "19.2.1" } }, "node_modules/@nrwl/nx-plugin": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nrwl/nx-plugin/-/nx-plugin-19.2.0.tgz", - "integrity": "sha512-F1aPbJEPiP7JdDdoZq1UaU9E7NCdmitDdtMPDYqFXbxHbtRCHLyHUQaMyaeGhBCKi+UUzNEgoulHhvdwBou27A==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nrwl/nx-plugin/-/nx-plugin-19.2.1.tgz", + "integrity": "sha512-wz/iGF19SjeKf5ixaTsz1EpRhp8ANqoh9JzteeOKLBIrzrhm6kFiz6fBKFpFMSkkvDQvsH5p8M5tdwaAOq1Edg==", "dev": true, "dependencies": { - "@nx/plugin": "19.2.0" + "@nx/plugin": "19.2.1" } }, "node_modules/@nrwl/tao": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-19.2.0.tgz", - "integrity": "sha512-9AOwbY/E7OlLCFu+6jhJGUIs+qurE2/3Pldooe7cJPqQmSQeJuVZuL6A2xHtbSG7VsXTq5Yj8dVvK1KmT45SIA==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-19.2.1.tgz", + "integrity": "sha512-F89EoEsLLOSFa9pvItui0G728hlxptkp+UvNvg0NwyYkt0RTeiZ5XBrIs8oow+x5I7TyTnuUMoNdUMqk7349iA==", "dependencies": { - "nx": "19.2.0", + "nx": "19.2.1", "tslib": "^2.3.0" }, "bin": { @@ -4104,29 +4104,29 @@ } }, "node_modules/@nrwl/web": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nrwl/web/-/web-19.2.0.tgz", - "integrity": "sha512-s6fEyic1cCwZAoKxZ64RMdCfG2jQGZC/FTyO4J7a8iB8oRD8mRLw0lWamXIcW10O0KPrE0zO63+kpjfKJ/ZK+w==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nrwl/web/-/web-19.2.1.tgz", + "integrity": "sha512-8YSrxog4RgEVKbU7c2syxBe6auPjLLYjaWQHjW6xq+cgUjCjc/EeCX0AwC6ldbYKUQ1oTfI82ycMy8jVYoUzaw==", "dev": true, "dependencies": { - "@nx/web": "19.2.0" + "@nx/web": "19.2.1" } }, "node_modules/@nrwl/workspace": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-19.2.0.tgz", - "integrity": "sha512-/3p9KNpGHgEVjM5aMFhzdp0Vh+Bt16OnlSA+eSKPd5r0eQyLY+T4zTQ1kjyHGYa/xcN8vsWKEnbZW2fD/HWSng==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-19.2.1.tgz", + "integrity": "sha512-8Z6gaMtD8KqfDv942+6h/CgMvOq+gmFuUUhoQCinUf4TySCR/eY6NC2f4uS2+gmfz0Bsx15YTlRmnatzIZWDWQ==", "dev": true, "dependencies": { - "@nx/workspace": "19.2.0" + "@nx/workspace": "19.2.1" } }, "node_modules/@nx/devkit": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-19.2.0.tgz", - "integrity": "sha512-fK3zRUE2SLp9BUomFiyCuAX2E1yfWYE/hKimniscsvM34/u/xLZYVmmZ0/jfpGPbyaonXKZr2KTb7RimX/hyqg==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-19.2.1.tgz", + "integrity": "sha512-dutfbNBWbMKoN6Lt2L0WL3MuetWCcnU4zfMLCl+XBtUR8nm+O5hcNVd1bFC+DQO1M0NYAqPKKzrAqvsBINAp1w==", "dependencies": { - "@nrwl/devkit": "19.2.0", + "@nrwl/devkit": "19.2.1", "ejs": "^3.1.7", "enquirer": "~2.3.6", "ignore": "^5.0.4", @@ -4174,14 +4174,14 @@ } }, "node_modules/@nx/esbuild": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/esbuild/-/esbuild-19.2.0.tgz", - "integrity": "sha512-KOKMf6XhrJQN6juOlsGOksLdUXGrT6qDpaxzGYWXje08cIDvkLLCdnXfmG+UZ+CP/r51/+6CeousBIHWPZUu7A==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/esbuild/-/esbuild-19.2.1.tgz", + "integrity": "sha512-TwzwgsfTVcZbnP6UMNw7P0u2BMoDXr4j29usggUFEUXVpzoZQ3sA4ffGbO5PVQ0xnsXjod/MPU/YHjZoi1ZwMQ==", "dev": true, "dependencies": { - "@nrwl/esbuild": "19.2.0", - "@nx/devkit": "19.2.0", - "@nx/js": "19.2.0", + "@nrwl/esbuild": "19.2.1", + "@nx/devkit": "19.2.1", + "@nx/js": "19.2.1", "chalk": "^4.1.0", "fast-glob": "3.2.7", "fs-extra": "^11.1.0", @@ -4198,14 +4198,14 @@ } }, "node_modules/@nx/eslint": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-19.2.0.tgz", - "integrity": "sha512-9OIMntrLDPrQNZjYxOncIX+65r4RhV2dJ3PrjJ9lwCVqJKZGxfCn6f8JK8ubeLoWFPVjKEtfLTHK529vvfXifQ==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-19.2.1.tgz", + "integrity": "sha512-lQJG8aXvuNGL6fUV/kphXqlmRzhXDfpiFiW1RGyiJ3FuqrBlVTXfDYoU5rkyFTgwFDfgN3oO69j4CW6aDB/iZQ==", "dev": true, "dependencies": { - "@nx/devkit": "19.2.0", - "@nx/js": "19.2.0", - "@nx/linter": "19.2.0", + "@nx/devkit": "19.2.1", + "@nx/js": "19.2.1", + "@nx/linter": "19.2.1", "semver": "^7.5.3", "tslib": "^2.3.0", "typescript": "~5.4.2" @@ -4221,14 +4221,14 @@ } }, "node_modules/@nx/eslint-plugin": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-19.2.0.tgz", - "integrity": "sha512-vFrquQjgWJDFE6ntqUDrduv0msBGkQCR0s7Qx0WHqL77wGgdKOO3bmCYYIfPXcS8KqAU/KqGLIj/5+obtEKOWA==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-19.2.1.tgz", + "integrity": "sha512-i0k7yjnthxmtwQR1aKL1BBVCl2aiKuNONXrRXa/8IZxigzoWr5znnoKtIs7bg0Pk1pCfSzzPU8bjgSpkGSi4pQ==", "dev": true, "dependencies": { - "@nrwl/eslint-plugin-nx": "19.2.0", - "@nx/devkit": "19.2.0", - "@nx/js": "19.2.0", + "@nrwl/eslint-plugin-nx": "19.2.1", + "@nx/devkit": "19.2.1", + "@nx/js": "19.2.1", "@typescript-eslint/type-utils": "^7.3.0", "@typescript-eslint/utils": "^7.3.0", "chalk": "^4.1.0", @@ -4285,16 +4285,16 @@ } }, "node_modules/@nx/jest": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-19.2.0.tgz", - "integrity": "sha512-iJMqfwkIB4T7NRYAQe3nZWFEAQGGblMGcxWczMKEixCIZWcAz4up74eb0H6Yv+tUVOQHrFTm6J1OnrW3BqvOZA==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-19.2.1.tgz", + "integrity": "sha512-mTp3jnbfCyfXrLKPU2BuansVHlfBUjj6kNXhqkoSbl4eY1NOqIh9Gb4vPfEh1NatZZOWLVfCyKG1jW3WzTWDyw==", "dev": true, "dependencies": { "@jest/reporters": "^29.4.1", "@jest/test-result": "^29.4.1", - "@nrwl/jest": "19.2.0", - "@nx/devkit": "19.2.0", - "@nx/js": "19.2.0", + "@nrwl/jest": "19.2.1", + "@nx/devkit": "19.2.1", + "@nx/js": "19.2.1", "@phenomnomnominal/tsquery": "~5.0.1", "chalk": "^4.1.0", "identity-obj-proxy": "3.0.0", @@ -4341,9 +4341,9 @@ } }, "node_modules/@nx/js": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-19.2.0.tgz", - "integrity": "sha512-cLz1OSfWpm/y0bZtdv5INlCo9/ED9tC45e6OKBc2ClW5Gz2+IoZz/dK/bCXg7dpEBtF1Y9mHihKisPOmUhaLwQ==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-19.2.1.tgz", + "integrity": "sha512-juqEjTeA5awuKywSAxO+l0FH+UgLy3w64bdtf7PD3ZXNHgWlObjq+hB5wPVjsrMJQ6vqAvQALa1i9w2Qf7B4Eg==", "dev": true, "dependencies": { "@babel/core": "^7.23.2", @@ -4353,9 +4353,9 @@ "@babel/preset-env": "^7.23.2", "@babel/preset-typescript": "^7.22.5", "@babel/runtime": "^7.22.6", - "@nrwl/js": "19.2.0", - "@nx/devkit": "19.2.0", - "@nx/workspace": "19.2.0", + "@nrwl/js": "19.2.1", + "@nx/devkit": "19.2.1", + "@nx/workspace": "19.2.1", "babel-plugin-const-enum": "^1.0.1", "babel-plugin-macros": "^2.8.0", "babel-plugin-transform-typescript-metadata": "^0.3.1", @@ -4437,18 +4437,18 @@ } }, "node_modules/@nx/linter": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-19.2.0.tgz", - "integrity": "sha512-Rahjy3+OLc4aXT8VNXpwyMozeU4RB6HIQOh5NAdcA6PoOH8cG1VtbyjryIZE8l5HT1hrpI5EkONZt1UXiIGw3w==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-19.2.1.tgz", + "integrity": "sha512-qun42/C7JQLEXDJ4WylydMlvB5cCyF3QDa2SAEoanUaMCOrL7ri/RIjenCfb8wIcpRBYs7U7CJAQJC3Nqmnz9A==", "dev": true, "dependencies": { - "@nx/eslint": "19.2.0" + "@nx/eslint": "19.2.1" } }, "node_modules/@nx/nx-darwin-arm64": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.2.0.tgz", - "integrity": "sha512-W+OpGyzr10oaycf4atPc5uH2wN1G6LJGHkWDN3LGSQhoDWuj13idFpjSy6rJ8WxtL8kIvPXq78GEi1yAADsakA==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.2.1.tgz", + "integrity": "sha512-9VsVmb3ayzSYYIQniL+y8EbCgDgJvMxKU/wOau9vPYo+L/Alu3QF22yJ1XiI1RwnEzZpvE2dceGb48tZU1jD3A==", "cpu": [ "arm64" ], @@ -4461,9 +4461,9 @@ } }, "node_modules/@nx/nx-darwin-x64": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.2.0.tgz", - "integrity": "sha512-4l1BDn29R0ugf7ATcGcZGEwK0frZSCtiyXnX3JFq55dNS4Bv3FiZLew7JULjdumXEXr773bH326FQlocLVlcXg==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.2.1.tgz", + "integrity": "sha512-p0ulI83LQBDuRpO6td+qbUh70oPFuiIo2MylBIOE5EcVO5z8qOh7JPvk8fkoEmMXEZe7hgG3Cq5+dN7LxHx9kw==", "cpu": [ "x64" ], @@ -4476,9 +4476,9 @@ } }, "node_modules/@nx/nx-freebsd-x64": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.2.0.tgz", - "integrity": "sha512-9zdwLRSkEg/H7bbIVWATn0H8QNgnHaTe23tciZPaBr95J6CXVJWWpC4wn9duURhvbscnqUSSSfKK1f+MSEDTbw==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.2.1.tgz", + "integrity": "sha512-NFF7h5rH3D0hT34CVG5ms95CZp+/m2KP4ZEczRn+wRzWeqouRAJBGXOCiMZrmzd7orjuHVVXrghfvBzpte1stw==", "cpu": [ "x64" ], @@ -4491,9 +4491,9 @@ } }, "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.2.0.tgz", - "integrity": "sha512-KNVnqRPegJza3kU4q3pY8m0pT8OSQZnLGsDZti6morhXh2sE79f/zeevOrbhf8JnaJfQtyrXfGvjYAiL3+I8bw==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.2.1.tgz", + "integrity": "sha512-ebvNguGQUIRJzFHi8im5lsbNbIFRnPaz6sbb0zFhu/W9/J+k3EWDjtOwtXoV6dnFmlRj7UbTyhMcu5SiWitdVQ==", "cpu": [ "arm" ], @@ -4506,9 +4506,9 @@ } }, "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.2.0.tgz", - "integrity": "sha512-UXIl90l+cDecU17OOLlI+uzbjzQucnNu4Mee67EqE3TyfpSvuU1l3FWZ9sbE0effp8IwKpbL7Gt5KirJKtWzIA==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.2.1.tgz", + "integrity": "sha512-aVqEZrDnZlqcJCKnrEON2JltdM4VxgHJSkJKLKuUeg3SUTskur7LH9M5KFhRgTo/tW+t2y9EuHDO6O3fAdcsYw==", "cpu": [ "arm64" ], @@ -4521,9 +4521,9 @@ } }, "node_modules/@nx/nx-linux-arm64-musl": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.2.0.tgz", - "integrity": "sha512-4Z8XO3WljS2GWOL2SQ1p8SRNn2Kn6FU1FWClh7KBzMtpzjsHdmOXenMP9UOGZ6gBnfBIknCEDjE3uJUHmuShGg==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.2.1.tgz", + "integrity": "sha512-W1g0IZ+4eNizXkUcsucSmXCaYmNj7ODX9L5wtZ8xMlLhdoq+EML8X/IpEPE8qIcYDEDUFgTPXb2zQsHwhgVXPw==", "cpu": [ "arm64" ], @@ -4536,9 +4536,9 @@ } }, "node_modules/@nx/nx-linux-x64-gnu": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.2.0.tgz", - "integrity": "sha512-EwAkZEp0KB99VEPTskW2feCpSKqWScKdRd6UaIM9Vmqqtb5hSk6yR6p0mprjytbDtFVoKQJMOFa35qe+2R8mKQ==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.2.1.tgz", + "integrity": "sha512-QKuFatKyDftz16JhmTvsjfjORpA1IqgOPiwnEPyBJ0nq5AqJTqoeXX834PMxCAaEu2y+K866l9OL97+vuYDLyA==", "cpu": [ "x64" ], @@ -4551,9 +4551,9 @@ } }, "node_modules/@nx/nx-linux-x64-musl": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.2.0.tgz", - "integrity": "sha512-LbFcHe83YZUS/my/8nBxQ2i3JWakcXd7zbzZ0cSAQk6DuJVCUk8PLdgZzhrVcmT82Pv7H0fM/4jgEl+oHGoc/g==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.2.1.tgz", + "integrity": "sha512-J8IwFAfhZ16n1lKb1B7MSDQ7IScF+Y0IFKl48ze3ixD3sMr48KTDKetqqxjel1pNeUchtV5xFsAlWuHpp5s58Q==", "cpu": [ "x64" ], @@ -4566,9 +4566,9 @@ } }, "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.2.0.tgz", - "integrity": "sha512-BxOveRfRCdhuCs2GWbsdzGsjtLC3N+MuUlVaXSWADksF6/QKuCHM/2Kq3RYkLVVtlls6NCBp410RSx/XsbSEug==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.2.1.tgz", + "integrity": "sha512-6vmImBTJUr73gPlb70AGKlEoE8ogZCzXaX7me2wE2n6H6ks7FZqHl3X0RxQDPG6rf6TAJB4YLpWLZDNZLWXSYA==", "cpu": [ "arm64" ], @@ -4581,9 +4581,9 @@ } }, "node_modules/@nx/nx-win32-x64-msvc": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.2.0.tgz", - "integrity": "sha512-QiDxtOHIiRka9Bz7tSpBvQgQPrX5grLhoz6miD6LX1WjO56bZIkEAVefGnMc3WZ1PacS1ZECtymHwUy+WpEqAQ==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.2.1.tgz", + "integrity": "sha512-5whqdjGI8iDGJ7Ojh9y/KRuNX3ltdHRgn+WgQRTr2y3kkNInZ8KrYIYH77uIE0rgxsw/dxwfYWCXWqJFJtx3vA==", "cpu": [ "x64" ], @@ -4596,29 +4596,29 @@ } }, "node_modules/@nx/plugin": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/plugin/-/plugin-19.2.0.tgz", - "integrity": "sha512-Y9q7hMpAdZJrzdL+Owi4nSSUpqeohvd4smqALPcvxtbAp2zVLaAi9iic3jbUVf3ilZFyTmZ1HxgYGP6/Xxq3Vg==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/plugin/-/plugin-19.2.1.tgz", + "integrity": "sha512-VXnCI4hTZovhJKerxyF7E42AaZiUkY9+am8XGCTbK54n29ZDaUISsSgk5TpI8bMkPfHqZ12Ajtz4eSniJfUx0g==", "dev": true, "dependencies": { - "@nrwl/nx-plugin": "19.2.0", - "@nx/devkit": "19.2.0", - "@nx/eslint": "19.2.0", - "@nx/jest": "19.2.0", - "@nx/js": "19.2.0", + "@nrwl/nx-plugin": "19.2.1", + "@nx/devkit": "19.2.1", + "@nx/eslint": "19.2.1", + "@nx/jest": "19.2.1", + "@nx/js": "19.2.1", "fs-extra": "^11.1.0", "tslib": "^2.3.0" } }, "node_modules/@nx/web": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/web/-/web-19.2.0.tgz", - "integrity": "sha512-iMRwDjkU7GfJql4wT6pGCimFoHYV/2bQuI/N9b9T3NEL9sk5tlMqlik6bbSGtje8XoUAbxaQrTpr9pJeaUPYwg==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-19.2.1.tgz", + "integrity": "sha512-GXvy36W07R9GKALB6r2nsmBSEk3T0SrBnTi3beZMmSj8L/58Be+e4/I9GG8+gY1HclDN6s815jI7SGIBoSa94Q==", "dev": true, "dependencies": { - "@nrwl/web": "19.2.0", - "@nx/devkit": "19.2.0", - "@nx/js": "19.2.0", + "@nrwl/web": "19.2.1", + "@nx/devkit": "19.2.1", + "@nx/js": "19.2.1", "chalk": "^4.1.0", "detect-port": "^1.5.1", "http-server": "^14.1.0", @@ -4626,16 +4626,16 @@ } }, "node_modules/@nx/workspace": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-19.2.0.tgz", - "integrity": "sha512-0wdv8jrGIGcf/ZF4r2/xWz/jrQjwftgLPmh7BawYPFbDZlRXkzb7a4MTJOxXH8QcR3ZJNhRjkFfHRPbB0luf1A==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-19.2.1.tgz", + "integrity": "sha512-+V0joRxPTI8/ghoCTFMhRG6bNJ0PwiaBYArA6YeSaWUJGtaWBN2WoMjs/zuEM43W3lWmvEpqjSTyUHoRH5HUiQ==", "dev": true, "dependencies": { - "@nrwl/workspace": "19.2.0", - "@nx/devkit": "19.2.0", + "@nrwl/workspace": "19.2.1", + "@nx/devkit": "19.2.1", "chalk": "^4.1.0", "enquirer": "~2.3.6", - "nx": "19.2.0", + "nx": "19.2.1", "tslib": "^2.3.0", "yargs-parser": "21.1.1" } @@ -15882,12 +15882,12 @@ "dev": true }, "node_modules/nx": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/nx/-/nx-19.2.0.tgz", - "integrity": "sha512-IewqV0eGOpp569TSjfQVIQODxkRYKSDTP0e0j20GKkMTvCAmdbJRYZxyTr6Aw6gSM7lEVgK/4yESRO5YidfV2Q==", + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/nx/-/nx-19.2.1.tgz", + "integrity": "sha512-AtfcCiCFCoCzpEjNItZfseCxiSNOlyxDb1nLVN5jSoy+uTcPCtjetf3Ac0+WFEaMDBL7AjyZVwJNvWrlKK2LZQ==", "hasInstallScript": true, "dependencies": { - "@nrwl/tao": "19.2.0", + "@nrwl/tao": "19.2.1", "@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/parsers": "3.0.0-rc.46", "@zkochan/js-yaml": "0.0.7", @@ -15927,16 +15927,16 @@ "nx-cloud": "bin/nx-cloud.js" }, "optionalDependencies": { - "@nx/nx-darwin-arm64": "19.2.0", - "@nx/nx-darwin-x64": "19.2.0", - "@nx/nx-freebsd-x64": "19.2.0", - "@nx/nx-linux-arm-gnueabihf": "19.2.0", - "@nx/nx-linux-arm64-gnu": "19.2.0", - "@nx/nx-linux-arm64-musl": "19.2.0", - "@nx/nx-linux-x64-gnu": "19.2.0", - "@nx/nx-linux-x64-musl": "19.2.0", - "@nx/nx-win32-arm64-msvc": "19.2.0", - "@nx/nx-win32-x64-msvc": "19.2.0" + "@nx/nx-darwin-arm64": "19.2.1", + "@nx/nx-darwin-x64": "19.2.1", + "@nx/nx-freebsd-x64": "19.2.1", + "@nx/nx-linux-arm-gnueabihf": "19.2.1", + "@nx/nx-linux-arm64-gnu": "19.2.1", + "@nx/nx-linux-arm64-musl": "19.2.1", + "@nx/nx-linux-x64-gnu": "19.2.1", + "@nx/nx-linux-x64-musl": "19.2.1", + "@nx/nx-win32-arm64-msvc": "19.2.1", + "@nx/nx-win32-x64-msvc": "19.2.1" }, "peerDependencies": { "@swc-node/register": "^1.8.0", diff --git a/package.json b/package.json index 412a20b435..79f0a02a7c 100644 --- a/package.json +++ b/package.json @@ -32,13 +32,13 @@ "license": "MIT", "homepage": "https://lerna.js.org", "devDependencies": { - "@nx/esbuild": "19.2.0", - "@nx/eslint": "19.2.0", - "@nx/eslint-plugin": "19.2.0", - "@nx/jest": "19.2.0", - "@nx/js": "19.2.0", - "@nx/plugin": "19.2.0", - "@nx/web": "19.2.0", + "@nx/esbuild": "19.2.1", + "@nx/eslint": "19.2.1", + "@nx/eslint-plugin": "19.2.1", + "@nx/jest": "19.2.1", + "@nx/js": "19.2.1", + "@nx/plugin": "19.2.1", + "@nx/web": "19.2.1", "@swc-node/register": "1.9.1", "@swc/cli": "0.3.12", "@swc/core": "1.5.7", @@ -95,7 +95,7 @@ "lodash": "^4.17.21", "normalize-newline": "^3.0.0", "normalize-path": "^3.0.0", - "nx": "19.2.0", + "nx": "19.2.1", "prettier": "^2.2.1", "resolve.exports": "2.0.0", "tacks": "1.2.6", From d9b15c8e0faf5090638434a289dff78f04ea6a37 Mon Sep 17 00:00:00 2001 From: James Henry Date: Sat, 8 Jun 2024 01:07:30 +0400 Subject: [PATCH 04/11] chore: update other-node-versions workflow (#4020) --- .../install-node-and-dependencies/action.yml | 27 +- .github/workflows/ci.yml | 1 - .github/workflows/other-node-versions.yml | 31 +- .../src/custom-publish-directories.spec.ts | 186 +++++------ .../src/from-git-recover-from-error.spec.ts | 44 +-- .../src/publish-npm-workspace-prefix.spec.ts | 206 ++++++------ e2e/publish/src/publish-npm.spec.ts | 70 ++-- .../src/publish-pnpm-workspace-prefix.spec.ts | 206 ++++++------ e2e/publish/src/publish-pnpm.spec.ts | 42 +-- .../src/publish-private-packages.spec.ts | 312 +++++++++--------- e2e/publish/src/publish-yarn.spec.ts | 70 ++-- .../src/lib/snapshot-serializer-utils.ts | 7 + package.json | 6 +- 13 files changed, 625 insertions(+), 583 deletions(-) diff --git a/.github/actions/install-node-and-dependencies/action.yml b/.github/actions/install-node-and-dependencies/action.yml index 25554cc4d6..85d2e2864e 100644 --- a/.github/actions/install-node-and-dependencies/action.yml +++ b/.github/actions/install-node-and-dependencies/action.yml @@ -13,7 +13,7 @@ runs: using: "composite" steps: - name: Install node and npm based on the given values (or the volta config in package.json) - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version-file: ${{ inputs.node-version == '' && 'package.json' || '' }} node-version: ${{ inputs.node-version }} @@ -28,21 +28,38 @@ runs: - name: Enable corepack run: corepack enable shell: bash + env: + COREPACK_ENABLE_AUTO_PIN: "0" + COREPACK_ENABLE_STRICT: "0" - name: Install pnpm v8 run: corepack install -g pnpm@8 shell: bash env: COREPACK_ENABLE_AUTO_PIN: "0" - - - name: Print installed pnpm version - run: pnpm --version - shell: bash + COREPACK_ENABLE_STRICT: "0" - name: Use Yarn classic run: yarn set version classic shell: bash + env: + COREPACK_ENABLE_AUTO_PIN: "0" + COREPACK_ENABLE_STRICT: "0" + + - name: Print installed node, npm, yarn and pnpm versions + run: | + node --version + npm --version + yarn --version + pnpm --version + shell: bash + env: + COREPACK_ENABLE_AUTO_PIN: "0" + COREPACK_ENABLE_STRICT: "0" - name: Install dependencies run: ${{ inputs.install-command }} shell: bash + env: + COREPACK_ENABLE_AUTO_PIN: "0" + COREPACK_ENABLE_STRICT: "0" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c5aabf8a0c..08f8dd15b0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,6 @@ concurrency: env: NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} - NX_CLOUD_DISTRIBUTED_EXECUTION: true NX_VERBOSE_LOGGING: false jobs: diff --git a/.github/workflows/other-node-versions.yml b/.github/workflows/other-node-versions.yml index 895879305d..b6762b74d4 100644 --- a/.github/workflows/other-node-versions.yml +++ b/.github/workflows/other-node-versions.yml @@ -12,7 +12,6 @@ concurrency: env: NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }} - NX_CLOUD_DISTRIBUTED_EXECUTION: true NX_VERBOSE_LOGGING: false COREPACK_ENABLE_AUTO_PIN: "0" COREPACK_ENABLE_STRICT: "0" @@ -48,8 +47,6 @@ jobs: with: fetch-depth: 0 - - uses: nrwl/nx-set-shas@v4 - - name: Install node v${{ matrix.node }} and dependencies uses: ./.github/actions/install-node-and-dependencies with: @@ -68,20 +65,14 @@ jobs: run: corepack install -g pnpm@8 shell: bash - - name: Print installed pnpm version - run: pnpm --version + - name: Print installed node, npm, yarn and pnpm versions + run: | + node --version + npm --version + yarn --version + pnpm --version shell: bash - - name: Run parallel distributed builds and tests on each node version - uses: jameshenry/parallel-bash-commands@v1 - with: - cmd1: npx nx run-many -t build --parallel=3 - cmd2: npx nx run-many -t test --parallel=3 --ci --maxWorkers=2 - cmd3: npx nx run integration:integration --ci --maxWorkers=2 - - # e2e tests for everything except the primary task runner - - run: PUBLISHED_VERSION=999.9.9-e2e.0 npx nx run-many --t e2e --parallel=1 - - name: Configure git metadata run: | git config --global user.email test@example.com @@ -116,6 +107,16 @@ jobs: git config tag.gpgsign true git config --global user.signingkey $GPG_KEY_ID + - name: Run parallel distributed builds and tests on each node version + uses: jameshenry/parallel-bash-commands@v1 + with: + cmd1: npx nx run-many -t build --parallel=3 + cmd2: npx nx run-many -t test --parallel=3 --ci --maxWorkers=2 + cmd3: npx nx run integration:integration --ci --maxWorkers=2 + + # e2e tests for everything except the primary task runner + - run: PUBLISHED_VERSION=999.9.9-e2e.0 npx nx run-many --t e2e --parallel=1 + - name: Run e2e tests for task-runner run: | # We do not want the automatic Github Actions grouping to be applied to the e2e tests, or the snapshots won't match local diff --git a/e2e/publish/src/custom-publish-directories.spec.ts b/e2e/publish/src/custom-publish-directories.spec.ts index 55889e3879..0094c8187c 100644 --- a/e2e/publish/src/custom-publish-directories.spec.ts +++ b/e2e/publish/src/custom-publish-directories.spec.ts @@ -1,4 +1,4 @@ -import { Fixture, normalizeCommitSHAs, normalizeEnvironment } from "@lerna/e2e-utils"; +import { Fixture, normalizeCommitSHAs, normalizeEnvironment, trimEnds } from "@lerna/e2e-utils"; import { ensureDir, writeFile } from "fs-extra"; import globby from "globby"; @@ -7,15 +7,17 @@ const randomVersion = () => `${randomInt(10, 89)}.${randomInt(10, 89)}.${randomI expect.addSnapshotSerializer({ serialize(str: string) { - return normalizeCommitSHAs(normalizeEnvironment(str)) - .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") - .replaceAll(/\d*\.\d*\s?kB package\.json/g, "XXXkb package.json") - .replaceAll(/\d*B package\.json/g, "XXXB package.json") - .replaceAll(/\d*\.\d*\s?kB/g, "XXX.XXX kb") - .replaceAll(/size:\s*\d*\s?B/g, "size: XXXB") - .replaceAll(/session\s\w{16}/g, "session XXXXXXXX") - .replaceAll(/"vXX\.XX\.XX-0-g[a-f0-9]{7}"/g, '"vXX.XX.XX-0-gXXXXXXXX"') - .replaceAll(/node@v\d+\.\d+\.\d+\+\w+ \(\w+\)/g, ""); + return trimEnds( + normalizeCommitSHAs(normalizeEnvironment(str)) + .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") + .replaceAll(/\d*\.\d*\s?kB package\.json/g, "XXXkb package.json") + .replaceAll(/\d*B package\.json/g, "XXXB package.json") + .replaceAll(/\d*\.\d*\s?kB/g, "XXX.XXX kb") + .replaceAll(/size:\s*\d*\s?B/g, "size: XXXB") + .replaceAll(/session\s\w{16}/g, "session XXXXXXXX") + .replaceAll(/"vXX\.XX\.XX-0-g[a-f0-9]{7}"/g, '"vXX.XX.XX-0-gXXXXXXXX"') + .replaceAll(/node@v\d+\.\d+\.\d+\+\w+ \(\w+\)/g, "") + ); }, test(val: string) { return val != null && typeof val === "string"; @@ -136,7 +138,7 @@ describe("lerna-publish-custom-publish-directories", () => { - package-2 => XX.XX.XX - package-3 => XX.XX.XX - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -162,56 +164,56 @@ describe("lerna-publish-custom-publish-directories", () => { lerna verb packed packages/package-3 lerna verb publish package-1 lerna success published package-1 XX.XX.XX - lerna notice + lerna notice lerna notice 📦 package-1@XX.XX.XX - lerna notice === Tarball Contents === - lerna notice 99B lib/main.js + lerna notice === Tarball Contents === + lerna notice 99B lib/main.js lerna notice XXXkb package.json - lerna notice === Tarball Details === - lerna notice name: package-1 - lerna notice version: XX.XX.XX - lerna notice filename: package-1-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice === Tarball Details === + lerna notice name: package-1 + lerna notice version: XX.XX.XX + lerna notice filename: package-1-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 2 - lerna notice + lerna notice total files: 2 + lerna notice lerna verb publish package-2 lerna success published package-2 XX.XX.XX - lerna notice + lerna notice lerna notice 📦 package-2@XX.XX.XX - lerna notice === Tarball Contents === - lerna notice 99B lib/main.js + lerna notice === Tarball Contents === + lerna notice 99B lib/main.js lerna notice XXXkb package.json - lerna notice === Tarball Details === - lerna notice name: package-2 - lerna notice version: XX.XX.XX - lerna notice filename: package-2-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice === Tarball Details === + lerna notice name: package-2 + lerna notice version: XX.XX.XX + lerna notice filename: package-2-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 2 - lerna notice + lerna notice total files: 2 + lerna notice lerna verb publish package-3 lerna success published package-3 XX.XX.XX - lerna notice + lerna notice lerna notice 📦 package-3@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 99B lib/package-3.js - lerna notice XXXB package.json - lerna notice 119B README.md - lerna notice === Tarball Details === - lerna notice name: package-3 - lerna notice version: XX.XX.XX - lerna notice filename: package-3-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 119B README.md + lerna notice === Tarball Details === + lerna notice name: package-3 + lerna notice version: XX.XX.XX + lerna notice filename: package-3-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice Successfully published: - package-1@XX.XX.XX - package-2@XX.XX.XX @@ -323,7 +325,7 @@ describe("lerna-publish-custom-publish-directories", () => { - package-1 => XX.XX.XX - package-2 => XX.XX.XX - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -344,38 +346,38 @@ describe("lerna-publish-custom-publish-directories", () => { lerna verb packed dist/packages/package-2 lerna verb publish package-1 lerna success published package-1 XX.XX.XX - lerna notice + lerna notice lerna notice 📦 package-1@XX.XX.XX - lerna notice === Tarball Contents === - lerna notice 99B lib/main.js + lerna notice === Tarball Contents === + lerna notice 99B lib/main.js lerna notice XXXkb package.json - lerna notice === Tarball Details === - lerna notice name: package-1 - lerna notice version: XX.XX.XX - lerna notice filename: package-1-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice === Tarball Details === + lerna notice name: package-1 + lerna notice version: XX.XX.XX + lerna notice filename: package-1-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 2 - lerna notice + lerna notice total files: 2 + lerna notice lerna verb publish package-2 lerna success published package-2 XX.XX.XX - lerna notice + lerna notice lerna notice 📦 package-2@XX.XX.XX - lerna notice === Tarball Contents === - lerna notice 99B lib/main.js + lerna notice === Tarball Contents === + lerna notice 99B lib/main.js lerna notice XXXkb package.json - lerna notice === Tarball Details === - lerna notice name: package-2 - lerna notice version: XX.XX.XX - lerna notice filename: package-2-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice === Tarball Details === + lerna notice name: package-2 + lerna notice version: XX.XX.XX + lerna notice filename: package-2-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 2 - lerna notice + lerna notice total files: 2 + lerna notice Successfully published: - package-1@XX.XX.XX - package-2@XX.XX.XX @@ -482,7 +484,7 @@ describe("lerna-publish-custom-publish-directories", () => { - package-1 => XX.XX.XX - package-2 => XX.XX.XX - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -500,39 +502,39 @@ describe("lerna-publish-custom-publish-directories", () => { lerna verb packed packages/package-2 lerna verb publish package-1 lerna success published package-1 XX.XX.XX - lerna notice + lerna notice lerna notice 📦 package-1@XX.XX.XX - lerna notice === Tarball Contents === - lerna notice 99B lib/main.js + lerna notice === Tarball Contents === + lerna notice 99B lib/main.js lerna notice XXXkb package.json - lerna notice === Tarball Details === - lerna notice name: package-1 - lerna notice version: XX.XX.XX - lerna notice filename: package-1-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice === Tarball Details === + lerna notice name: package-1 + lerna notice version: XX.XX.XX + lerna notice filename: package-1-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 2 - lerna notice + lerna notice total files: 2 + lerna notice lerna verb publish package-2 lerna success published package-2 XX.XX.XX - lerna notice + lerna notice lerna notice 📦 package-2@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 99B lib/package-2.js - lerna notice XXXB package.json - lerna notice 119B README.md - lerna notice === Tarball Details === - lerna notice name: package-2 - lerna notice version: XX.XX.XX - lerna notice filename: package-2-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 119B README.md + lerna notice === Tarball Details === + lerna notice name: package-2 + lerna notice version: XX.XX.XX + lerna notice filename: package-2-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice Successfully published: - package-1@XX.XX.XX - package-2@XX.XX.XX diff --git a/e2e/publish/src/from-git-recover-from-error.spec.ts b/e2e/publish/src/from-git-recover-from-error.spec.ts index 5dd82ca71c..68609d0463 100644 --- a/e2e/publish/src/from-git-recover-from-error.spec.ts +++ b/e2e/publish/src/from-git-recover-from-error.spec.ts @@ -1,15 +1,17 @@ -import { Fixture, normalizeCommitSHAs, normalizeEnvironment } from "@lerna/e2e-utils"; +import { Fixture, normalizeCommitSHAs, normalizeEnvironment, trimEnds } from "@lerna/e2e-utils"; const randomInt = (min: number, max: number) => Math.floor(Math.random() * (max - min + 1)) + min; const randomVersion = () => `${randomInt(10, 89)}.${randomInt(10, 89)}.${randomInt(10, 89)}`; expect.addSnapshotSerializer({ serialize(str: string) { - return normalizeCommitSHAs(normalizeEnvironment(str)) - .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") - .replaceAll(/\d*B package\.json/g, "XXXB package.json") - .replaceAll(/size:\s*\d*\s?B/g, "size: XXXB") - .replaceAll(/\d*\.\d*\s?kB/g, "XXX.XXX kb"); + return trimEnds( + normalizeCommitSHAs(normalizeEnvironment(str)) + .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") + .replaceAll(/\d*B package\.json/g, "XXXB package.json") + .replaceAll(/size:\s*\d*\s?B/g, "size: XXXB") + .replaceAll(/\d*\.\d*\s?kB/g, "XXX.XXX kb") + ); }, test(val: string) { return val != null && typeof val === "string"; @@ -70,7 +72,7 @@ describe("lerna-publish-from-git-recover-from-error", () => { - test-1 => XX.XX.XX - test-2 => XX.XX.XX - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -78,22 +80,22 @@ describe("lerna-publish-from-git-recover-from-error", () => { lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository. lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance. lerna success published test-2 XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-2@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-2.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-2 - lerna notice version: XX.XX.XX - lerna notice filename: test-2-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-2 + lerna notice version: XX.XX.XX + lerna notice filename: test-2-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna WARN publish Package is already published: test-1@XX.XX.XX Successfully published: - test-2@XX.XX.XX @@ -102,13 +104,13 @@ describe("lerna-publish-from-git-recover-from-error", () => { `); expect(replaceVersion(unpublishOutput1.combinedOutput)).toMatchInlineSnapshot(` - npm WARN using --force Recommended protections disabled. + npm warn using --force Recommended protections disabled. - test-1@XX.XX.XX `); expect(replaceVersion(unpublishOutput2.combinedOutput)).toMatchInlineSnapshot(` - npm WARN using --force Recommended protections disabled. + npm warn using --force Recommended protections disabled. - test-2@XX.XX.XX `); diff --git a/e2e/publish/src/publish-npm-workspace-prefix.spec.ts b/e2e/publish/src/publish-npm-workspace-prefix.spec.ts index 84c98a4436..292b97722f 100644 --- a/e2e/publish/src/publish-npm-workspace-prefix.spec.ts +++ b/e2e/publish/src/publish-npm-workspace-prefix.spec.ts @@ -1,4 +1,4 @@ -import { Fixture, normalizeCommitSHAs, normalizeEnvironment } from "@lerna/e2e-utils"; +import { Fixture, normalizeCommitSHAs, normalizeEnvironment, trimEnds } from "@lerna/e2e-utils"; import { writeJsonFile } from "@nx/devkit"; const randomInt = (min: number, max: number) => Math.floor(Math.random() * (max - min + 1)) + min; @@ -6,9 +6,11 @@ const randomVersion = () => `${randomInt(10, 89)}.${randomInt(10, 89)}.${randomI expect.addSnapshotSerializer({ serialize(str: string) { - return normalizeCommitSHAs(normalizeEnvironment(str)) - .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") - .replaceAll(/\d*\.?\d+\s?[KMGTkmgt]?B/g, "XXXB"); + return trimEnds( + normalizeCommitSHAs(normalizeEnvironment(str)) + .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") + .replaceAll(/\d*\.?\d+\s?[KMGTkmgt]?B/g, "XXXB") + ); }, test(val: string) { return val != null && typeof val === "string"; @@ -78,7 +80,7 @@ describe("lerna-publish-workspace-prefix", () => { const unpublishOutput = await fixture.exec( `npm unpublish ${packageName}@${version} --force --registry=http://localhost:4872` ); - expect(replaceVersion(unpublishOutput.combinedOutput)).toContain(`${packageName}@XX.XX.XX`); + expect(replaceVersion(unpublishOutput.combinedOutput)).toContain(packageName); }; expect(replaceVersion(output.combinedOutput)).toMatchInlineSnapshot(` @@ -94,7 +96,7 @@ describe("lerna-publish-workspace-prefix", () => { - test-workspace-compat => XX.XX.XX - test-workspace-exact => XX.XX.XX - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -102,141 +104,141 @@ describe("lerna-publish-workspace-prefix", () => { lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository. lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance. lerna success published test-no-workspace-prefix XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-no-workspace-prefix@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-no-workspace-prefix.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-no-workspace-prefix - lerna notice version: XX.XX.XX - lerna notice filename: test-no-workspace-prefix-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-no-workspace-prefix + lerna notice version: XX.XX.XX + lerna notice filename: test-no-workspace-prefix-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-workspace-alias-caret XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-workspace-alias-caret@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-workspace-alias-caret.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-workspace-alias-caret - lerna notice version: XX.XX.XX - lerna notice filename: test-workspace-alias-caret-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-workspace-alias-caret + lerna notice version: XX.XX.XX + lerna notice filename: test-workspace-alias-caret-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-workspace-alias-star XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-workspace-alias-star@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-workspace-alias-star.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-workspace-alias-star - lerna notice version: XX.XX.XX - lerna notice filename: test-workspace-alias-star-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-workspace-alias-star + lerna notice version: XX.XX.XX + lerna notice filename: test-workspace-alias-star-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-workspace-alias-tilde XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-workspace-alias-tilde@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-workspace-alias-tilde.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-workspace-alias-tilde - lerna notice version: XX.XX.XX - lerna notice filename: test-workspace-alias-tilde-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-workspace-alias-tilde + lerna notice version: XX.XX.XX + lerna notice filename: test-workspace-alias-tilde-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-workspace-approx XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-workspace-approx@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-workspace-approx.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-workspace-approx - lerna notice version: XX.XX.XX - lerna notice filename: test-workspace-approx-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-workspace-approx + lerna notice version: XX.XX.XX + lerna notice filename: test-workspace-approx-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-workspace-compat XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-workspace-compat@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-workspace-compat.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-workspace-compat - lerna notice version: XX.XX.XX - lerna notice filename: test-workspace-compat-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-workspace-compat + lerna notice version: XX.XX.XX + lerna notice filename: test-workspace-compat-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-workspace-exact XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-workspace-exact@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-workspace-exact.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-workspace-exact - lerna notice version: XX.XX.XX - lerna notice filename: test-workspace-exact-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-workspace-exact + lerna notice version: XX.XX.XX + lerna notice filename: test-workspace-exact-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-main XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-main@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-main.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-main - lerna notice version: XX.XX.XX - lerna notice filename: test-main-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-main + lerna notice version: XX.XX.XX + lerna notice filename: test-main-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice Successfully published: - test-main@XX.XX.XX - test-no-workspace-prefix@XX.XX.XX diff --git a/e2e/publish/src/publish-npm.spec.ts b/e2e/publish/src/publish-npm.spec.ts index 4868e5d76d..7ec17bc9d4 100644 --- a/e2e/publish/src/publish-npm.spec.ts +++ b/e2e/publish/src/publish-npm.spec.ts @@ -1,15 +1,17 @@ -import { Fixture, normalizeCommitSHAs, normalizeEnvironment } from "@lerna/e2e-utils"; +import { Fixture, normalizeCommitSHAs, normalizeEnvironment, trimEnds } from "@lerna/e2e-utils"; const randomInt = (min: number, max: number) => Math.floor(Math.random() * (max - min + 1)) + min; const randomVersion = () => `${randomInt(10, 89)}.${randomInt(10, 89)}.${randomInt(10, 89)}`; expect.addSnapshotSerializer({ serialize(str: string) { - return normalizeCommitSHAs(normalizeEnvironment(str)) - .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") - .replaceAll(/\d*B package\.json/g, "XXXB package.json") - .replaceAll(/size:\s*\d*\s?B/g, "size: XXXB") - .replaceAll(/\d*\.\d*\s?kB/g, "XXX.XXX kb"); + return trimEnds( + normalizeCommitSHAs(normalizeEnvironment(str)) + .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") + .replaceAll(/\d*B package\.json/g, "XXXB package.json") + .replaceAll(/size:\s*\d*\s?B/g, "size: XXXB") + .replaceAll(/\d*\.\d*\s?kB/g, "XXX.XXX kb") + ); }, test(val: string) { return val != null && typeof val === "string"; @@ -53,7 +55,7 @@ describe("lerna-publish-npm", () => { Found 1 package to publish: - test-1 => XX.XX.XX - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -61,22 +63,22 @@ describe("lerna-publish-npm", () => { lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository. lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance. lerna success published test-1 XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-1@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-1.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-1 - lerna notice version: XX.XX.XX - lerna notice filename: test-1-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-1 + lerna notice version: XX.XX.XX + lerna notice filename: test-1-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice Successfully published: - test-1@XX.XX.XX lerna success published 1 package @@ -84,7 +86,7 @@ describe("lerna-publish-npm", () => { `); expect(replaceVersion(unpublishOutput.combinedOutput)).toMatchInlineSnapshot(` - npm WARN using --force Recommended protections disabled. + npm warn using --force Recommended protections disabled. - test-1@XX.XX.XX `); @@ -116,7 +118,7 @@ describe("lerna-publish-npm", () => { Found 1 package to publish: - test-1 => XX.XX.XX - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -124,22 +126,22 @@ describe("lerna-publish-npm", () => { lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository. lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance. lerna success published test-1 XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-1@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-1.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-1 - lerna notice version: XX.XX.XX - lerna notice filename: test-1-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-1 + lerna notice version: XX.XX.XX + lerna notice filename: test-1-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice Successfully published: - test-1@XX.XX.XX lerna success published 1 package @@ -147,7 +149,7 @@ describe("lerna-publish-npm", () => { `); expect(replaceVersion(unpublishOutput.combinedOutput)).toMatchInlineSnapshot(` - npm WARN using --force Recommended protections disabled. + npm warn using --force Recommended protections disabled. - test-1@XX.XX.XX `); diff --git a/e2e/publish/src/publish-pnpm-workspace-prefix.spec.ts b/e2e/publish/src/publish-pnpm-workspace-prefix.spec.ts index d780ae1399..30daaf4d40 100644 --- a/e2e/publish/src/publish-pnpm-workspace-prefix.spec.ts +++ b/e2e/publish/src/publish-pnpm-workspace-prefix.spec.ts @@ -1,4 +1,4 @@ -import { Fixture, normalizeCommitSHAs, normalizeEnvironment } from "@lerna/e2e-utils"; +import { Fixture, normalizeCommitSHAs, normalizeEnvironment, trimEnds } from "@lerna/e2e-utils"; import { writeJsonFile } from "@nx/devkit"; const randomInt = (min: number, max: number) => Math.floor(Math.random() * (max - min + 1)) + min; @@ -6,9 +6,11 @@ const randomVersion = () => `${randomInt(10, 89)}.${randomInt(10, 89)}.${randomI expect.addSnapshotSerializer({ serialize(str: string) { - return normalizeCommitSHAs(normalizeEnvironment(str)) - .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") - .replaceAll(/\d*\.?\d+\s?[KMGTkmgt]?B/g, "XXXB"); + return trimEnds( + normalizeCommitSHAs(normalizeEnvironment(str)) + .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") + .replaceAll(/\d*\.?\d+\s?[KMGTkmgt]?B/g, "XXXB") + ); }, test(val: string) { return val != null && typeof val === "string"; @@ -71,7 +73,7 @@ describe("lerna-publish-workspace-prefix-pnpm", () => { const unpublishOutput = await fixture.exec( `npm unpublish ${packageName}@${version} --force --registry=http://localhost:4872` ); - expect(replaceVersion(unpublishOutput.combinedOutput)).toContain(`${packageName}@XX.XX.XX`); + expect(replaceVersion(unpublishOutput.combinedOutput)).toContain(packageName); }; expect(replaceVersion(output.combinedOutput)).toMatchInlineSnapshot(` @@ -87,7 +89,7 @@ describe("lerna-publish-workspace-prefix-pnpm", () => { - test-workspace-compat => XX.XX.XX - test-workspace-exact => XX.XX.XX - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -95,141 +97,141 @@ describe("lerna-publish-workspace-prefix-pnpm", () => { lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository. lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance. lerna success published test-no-workspace-prefix XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-no-workspace-prefix@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-no-workspace-prefix.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-no-workspace-prefix - lerna notice version: XX.XX.XX - lerna notice filename: test-no-workspace-prefix-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-no-workspace-prefix + lerna notice version: XX.XX.XX + lerna notice filename: test-no-workspace-prefix-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-workspace-alias-caret XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-workspace-alias-caret@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-workspace-alias-caret.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-workspace-alias-caret - lerna notice version: XX.XX.XX - lerna notice filename: test-workspace-alias-caret-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-workspace-alias-caret + lerna notice version: XX.XX.XX + lerna notice filename: test-workspace-alias-caret-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-workspace-alias-star XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-workspace-alias-star@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-workspace-alias-star.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-workspace-alias-star - lerna notice version: XX.XX.XX - lerna notice filename: test-workspace-alias-star-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-workspace-alias-star + lerna notice version: XX.XX.XX + lerna notice filename: test-workspace-alias-star-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-workspace-alias-tilde XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-workspace-alias-tilde@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-workspace-alias-tilde.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-workspace-alias-tilde - lerna notice version: XX.XX.XX - lerna notice filename: test-workspace-alias-tilde-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-workspace-alias-tilde + lerna notice version: XX.XX.XX + lerna notice filename: test-workspace-alias-tilde-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-workspace-approx XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-workspace-approx@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-workspace-approx.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-workspace-approx - lerna notice version: XX.XX.XX - lerna notice filename: test-workspace-approx-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-workspace-approx + lerna notice version: XX.XX.XX + lerna notice filename: test-workspace-approx-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-workspace-compat XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-workspace-compat@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-workspace-compat.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-workspace-compat - lerna notice version: XX.XX.XX - lerna notice filename: test-workspace-compat-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-workspace-compat + lerna notice version: XX.XX.XX + lerna notice filename: test-workspace-compat-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-workspace-exact XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-workspace-exact@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-workspace-exact.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-workspace-exact - lerna notice version: XX.XX.XX - lerna notice filename: test-workspace-exact-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-workspace-exact + lerna notice version: XX.XX.XX + lerna notice filename: test-workspace-exact-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-main XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-main@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice XXXB lib/test-main.js - lerna notice XXXB package.json - lerna notice XXXB README.md - lerna notice === Tarball Details === - lerna notice name: test-main - lerna notice version: XX.XX.XX - lerna notice filename: test-main-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXXB + lerna notice XXXB package.json + lerna notice XXXB README.md + lerna notice === Tarball Details === + lerna notice name: test-main + lerna notice version: XX.XX.XX + lerna notice filename: test-main-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXXB lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice Successfully published: - test-main@XX.XX.XX - test-no-workspace-prefix@XX.XX.XX diff --git a/e2e/publish/src/publish-pnpm.spec.ts b/e2e/publish/src/publish-pnpm.spec.ts index db4f58110d..029d8d1b92 100644 --- a/e2e/publish/src/publish-pnpm.spec.ts +++ b/e2e/publish/src/publish-pnpm.spec.ts @@ -1,15 +1,17 @@ -import { Fixture, normalizeCommitSHAs, normalizeEnvironment } from "@lerna/e2e-utils"; +import { Fixture, normalizeCommitSHAs, normalizeEnvironment, trimEnds } from "@lerna/e2e-utils"; const randomInt = (min: number, max: number) => Math.floor(Math.random() * (max - min + 1)) + min; const randomVersion = () => `${randomInt(10, 89)}.${randomInt(10, 89)}.${randomInt(10, 89)}`; expect.addSnapshotSerializer({ serialize(str: string) { - return normalizeCommitSHAs(normalizeEnvironment(str)) - .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") - .replaceAll(/\d*B package\.json/g, "XXXB package.json") - .replaceAll(/size:\s*\d*\s?B/g, "size: XXXB") - .replaceAll(/\d*\.\d*\s?kB/g, "XXX.XXX kb"); + return trimEnds( + normalizeCommitSHAs(normalizeEnvironment(str)) + .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") + .replaceAll(/\d*B package\.json/g, "XXXB package.json") + .replaceAll(/size:\s*\d*\s?B/g, "size: XXXB") + .replaceAll(/\d*\.\d*\s?kB/g, "XXX.XXX kb") + ); }, test(val: string) { return val != null && typeof val === "string"; @@ -53,7 +55,7 @@ describe("lerna-publish-pnpm", () => { Found 1 package to publish: - test-1 => XX.XX.XX - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -61,22 +63,22 @@ describe("lerna-publish-pnpm", () => { lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository. lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance. lerna success published test-1 XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-1@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-1.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-1 - lerna notice version: XX.XX.XX - lerna notice filename: test-1-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-1 + lerna notice version: XX.XX.XX + lerna notice filename: test-1-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice Successfully published: - test-1@XX.XX.XX lerna success published 1 package @@ -84,7 +86,7 @@ describe("lerna-publish-pnpm", () => { `); expect(replaceVersion(unpublishOutput.combinedOutput)).toMatchInlineSnapshot(` - npm WARN using --force Recommended protections disabled. + npm warn using --force Recommended protections disabled. - test-1@XX.XX.XX `); diff --git a/e2e/publish/src/publish-private-packages.spec.ts b/e2e/publish/src/publish-private-packages.spec.ts index c03e4cba9f..65f74a84b7 100644 --- a/e2e/publish/src/publish-private-packages.spec.ts +++ b/e2e/publish/src/publish-private-packages.spec.ts @@ -1,16 +1,18 @@ -import { Fixture, normalizeCommitSHAs, normalizeEnvironment } from "@lerna/e2e-utils"; +import { Fixture, normalizeCommitSHAs, normalizeEnvironment, trimEnds } from "@lerna/e2e-utils"; const randomInt = (min: number, max: number) => Math.floor(Math.random() * (max - min + 1)) + min; const randomVersion = () => `${randomInt(10, 89)}.${randomInt(10, 89)}.${randomInt(10, 89)}`; expect.addSnapshotSerializer({ serialize(str: string) { - return normalizeCommitSHAs(normalizeEnvironment(str)) - .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") - .replaceAll(/\d*B package\.json/g, "XXXB package.json") - .replaceAll(/size:\s*\d*\s?B/g, "size: XXXB") - .replaceAll(/\d*\.\d*\s?kB/g, "XXX.XXX kb") - .replaceAll(/test-\d/g, "test-X"); + return trimEnds( + normalizeCommitSHAs(normalizeEnvironment(str)) + .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") + .replaceAll(/\d*B package\.json/g, "XXXB package.json") + .replaceAll(/size:\s*\d*\s?B/g, "size: XXXB") + .replaceAll(/\d*\.\d*\s?kB/g, "XXX.XXX kb") + .replaceAll(/test-\d/g, "test-X") + ); }, test(val: string) { return val != null && typeof val === "string"; @@ -108,7 +110,7 @@ describe("lerna-publish-private", () => { - test-X => XX.XX.XX (private!) - test-X => XX.XX.XX - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -116,56 +118,56 @@ describe("lerna-publish-private", () => { lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository. lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance. lerna success published test-X XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-X@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-X.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-X - lerna notice version: XX.XX.XX - lerna notice filename: test-X-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-X + lerna notice version: XX.XX.XX + lerna notice filename: test-X-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-X XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-X@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-X.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-X - lerna notice version: XX.XX.XX - lerna notice filename: test-X-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-X + lerna notice version: XX.XX.XX + lerna notice filename: test-X-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-X XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-X@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-X.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-X - lerna notice version: XX.XX.XX - lerna notice filename: test-X-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-X + lerna notice version: XX.XX.XX + lerna notice filename: test-X-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice Successfully published: - test-X@XX.XX.XX - test-X@XX.XX.XX @@ -211,7 +213,7 @@ describe("lerna-publish-private", () => { - test-X => XX.XX.XX (private!) - test-X => XX.XX.XX - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -219,56 +221,56 @@ describe("lerna-publish-private", () => { lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository. lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance. lerna success published test-X XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-X@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-X.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-X - lerna notice version: XX.XX.XX - lerna notice filename: test-X-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-X + lerna notice version: XX.XX.XX + lerna notice filename: test-X-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-X XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-X@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-X.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-X - lerna notice version: XX.XX.XX - lerna notice filename: test-X-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-X + lerna notice version: XX.XX.XX + lerna notice filename: test-X-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-X XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-X@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-X.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-X - lerna notice version: XX.XX.XX - lerna notice filename: test-X-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-X + lerna notice version: XX.XX.XX + lerna notice filename: test-X-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice Successfully published: - test-X@XX.XX.XX - test-X@XX.XX.XX @@ -345,7 +347,7 @@ describe("lerna-publish-private", () => { - test-X => XX.XX.XX (private!) - test-X => XX.XX.XX - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -353,56 +355,56 @@ describe("lerna-publish-private", () => { lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository. lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance. lerna success published test-X XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-X@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-X.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-X - lerna notice version: XX.XX.XX - lerna notice filename: test-X-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-X + lerna notice version: XX.XX.XX + lerna notice filename: test-X-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-X XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-X@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-X.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-X - lerna notice version: XX.XX.XX - lerna notice filename: test-X-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-X + lerna notice version: XX.XX.XX + lerna notice filename: test-X-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-X XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-X@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-X.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-X - lerna notice version: XX.XX.XX - lerna notice filename: test-X-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-X + lerna notice version: XX.XX.XX + lerna notice filename: test-X-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice Successfully published: - test-X@XX.XX.XX - test-X@XX.XX.XX @@ -469,7 +471,7 @@ describe("lerna-publish-private", () => { - test-X => XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} (private!) - test-X => XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -477,56 +479,56 @@ describe("lerna-publish-private", () => { lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository. lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance. lerna success published test-X XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} - lerna notice + lerna notice lerna notice 📦 test-X@XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-X.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-X - lerna notice version: XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} - lerna notice filename: test-X-XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA}.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-X + lerna notice version: XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} + lerna notice filename: test-X-XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA}.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-X XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} - lerna notice + lerna notice lerna notice 📦 test-X@XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-X.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-X - lerna notice version: XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} - lerna notice filename: test-X-XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA}.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-X + lerna notice version: XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} + lerna notice filename: test-X-XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA}.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice lerna success published test-X XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} - lerna notice + lerna notice lerna notice 📦 test-X@XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-X.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-X - lerna notice version: XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} - lerna notice filename: test-X-XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA}.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-X + lerna notice version: XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} + lerna notice filename: test-X-XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA}.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice Successfully published: - test-X@XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} - test-X@XX.XX.XX-alpha.0+{SHORT_COMMIT_SHA} diff --git a/e2e/publish/src/publish-yarn.spec.ts b/e2e/publish/src/publish-yarn.spec.ts index 299d229fac..51bb0ca624 100644 --- a/e2e/publish/src/publish-yarn.spec.ts +++ b/e2e/publish/src/publish-yarn.spec.ts @@ -1,15 +1,17 @@ -import { Fixture, normalizeCommitSHAs, normalizeEnvironment } from "@lerna/e2e-utils"; +import { Fixture, normalizeCommitSHAs, normalizeEnvironment, trimEnds } from "@lerna/e2e-utils"; const randomInt = (min: number, max: number) => Math.floor(Math.random() * (max - min + 1)) + min; const randomVersion = () => `${randomInt(10, 89)}.${randomInt(10, 89)}.${randomInt(10, 89)}`; expect.addSnapshotSerializer({ serialize(str: string) { - return normalizeCommitSHAs(normalizeEnvironment(str)) - .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") - .replaceAll(/\d*B package\.json/g, "XXXB package.json") - .replaceAll(/size:\s*\d*\s?B/g, "size: XXXB") - .replaceAll(/\d*\.\d*\s?kB/g, "XXX.XXX kb"); + return trimEnds( + normalizeCommitSHAs(normalizeEnvironment(str)) + .replaceAll(/integrity:\s*.*/g, "integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") + .replaceAll(/\d*B package\.json/g, "XXXB package.json") + .replaceAll(/size:\s*\d*\s?B/g, "size: XXXB") + .replaceAll(/\d*\.\d*\s?kB/g, "XXX.XXX kb") + ); }, test(val: string) { return val != null && typeof val === "string"; @@ -53,7 +55,7 @@ describe("lerna-publish-yarn", () => { Found 1 package to publish: - test-1 => XX.XX.XX - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -61,22 +63,22 @@ describe("lerna-publish-yarn", () => { lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository. lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance. lerna success published test-1 XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-1@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-1.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-1 - lerna notice version: XX.XX.XX - lerna notice filename: test-1-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-1 + lerna notice version: XX.XX.XX + lerna notice filename: test-1-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice Successfully published: - test-1@XX.XX.XX lerna success published 1 package @@ -84,7 +86,7 @@ describe("lerna-publish-yarn", () => { `); expect(replaceVersion(unpublishOutput.combinedOutput)).toMatchInlineSnapshot(` - npm WARN using --force Recommended protections disabled. + npm warn using --force Recommended protections disabled. - test-1@XX.XX.XX `); @@ -116,7 +118,7 @@ describe("lerna-publish-yarn", () => { Found 1 package to publish: - test-1 => XX.XX.XX - lerna info auto-confirmed + lerna info auto-confirmed lerna info publish Publishing packages to npm... lerna notice Skipping all user and access validation due to third-party registry lerna notice Make sure you're authenticated properly ¯\\_(ツ)_/¯ @@ -124,22 +126,22 @@ describe("lerna-publish-yarn", () => { lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository. lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance. lerna success published test-1 XX.XX.XX - lerna notice + lerna notice lerna notice 📦 test-1@XX.XX.XX - lerna notice === Tarball Contents === + lerna notice === Tarball Contents === lerna notice 90B lib/test-1.js - lerna notice XXXB package.json - lerna notice 110B README.md - lerna notice === Tarball Details === - lerna notice name: test-1 - lerna notice version: XX.XX.XX - lerna notice filename: test-1-XX.XX.XX.tgz - lerna notice package size: XXXB - lerna notice unpacked size: XXX.XXX kb + lerna notice XXXB package.json + lerna notice 110B README.md + lerna notice === Tarball Details === + lerna notice name: test-1 + lerna notice version: XX.XX.XX + lerna notice filename: test-1-XX.XX.XX.tgz + lerna notice package size: XXXB + lerna notice unpacked size: XXX.XXX kb lerna notice shasum: {FULL_COMMIT_SHA} lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - lerna notice total files: 3 - lerna notice + lerna notice total files: 3 + lerna notice Successfully published: - test-1@XX.XX.XX lerna success published 1 package @@ -147,7 +149,7 @@ describe("lerna-publish-yarn", () => { `); expect(replaceVersion(unpublishOutput.combinedOutput)).toMatchInlineSnapshot(` - npm WARN using --force Recommended protections disabled. + npm warn using --force Recommended protections disabled. - test-1@XX.XX.XX `); diff --git a/libs/e2e-utils/src/lib/snapshot-serializer-utils.ts b/libs/e2e-utils/src/lib/snapshot-serializer-utils.ts index 3b43316687..d04ecbdbfe 100644 --- a/libs/e2e-utils/src/lib/snapshot-serializer-utils.ts +++ b/libs/e2e-utils/src/lib/snapshot-serializer-utils.ts @@ -56,3 +56,10 @@ export function normalizeCommandOutput(str: string): string { .map((r) => r.trim()) .join("\n"); } + +export function trimEnds(lines: string): string { + return lines + .split("\n") + .map((r) => r.trimEnd()) + .join("\n"); +} diff --git a/package.json b/package.json index 79f0a02a7c..baebe22e73 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,11 @@ "packages/legacy-structure/commands/create" ], "volta": { - "node": "20.9.0", - "yarn": "1.22.19" + "node": "20.14.0", + "yarn": "1.22.19", + "npm": "10.7.0" }, + "packageManager": "npm@10.7.0", "engines": { "node": ">=18.0.0" }, From 7bd983510110d00d9c3db94fb99f74773ab75d40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CJamesHenry=E2=80=9D?= Date: Sun, 9 Jun 2024 14:18:50 +0400 Subject: [PATCH 05/11] chore(misc): publish 8.1.4 --- CHANGELOG.md | 6 ++++++ lerna.json | 2 +- package-lock.json | 8 ++++---- packages/legacy-package-management/CHANGELOG.md | 4 ++++ packages/legacy-package-management/package.json | 2 +- packages/legacy-structure/commands/create/CHANGELOG.md | 4 ++++ packages/legacy-structure/commands/create/package.json | 2 +- packages/lerna/CHANGELOG.md | 4 ++++ packages/lerna/package.json | 4 ++-- 9 files changed, 27 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a378f7a5c2..6e186a256c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.1.4](https://github.com/lerna/lerna/compare/v8.1.3...v8.1.4) (2024-06-09) + +### Bug Fixes + +- specify 'dependencies: true' when prepping task runner options ([#4017](https://github.com/lerna/lerna/issues/4017)) ([244462d](https://github.com/lerna/lerna/commit/244462d59008f627ca7836c490a97951a9e5dd26)) + ## [8.1.3](https://github.com/lerna/lerna/compare/v8.1.2...v8.1.3) (2024-05-13) ### Bug Fixes diff --git a/lerna.json b/lerna.json index 2485f6c5b7..5e181b5441 100644 --- a/lerna.json +++ b/lerna.json @@ -16,5 +16,5 @@ } }, "ignoreChanges": ["**/__fixtures__/**", "**/__tests__/**", "**/*.md"], - "version": "8.1.3" + "version": "8.1.4" } diff --git a/package-lock.json b/package-lock.json index 581afc6fdc..898e4a8bbc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20970,7 +20970,7 @@ }, "packages/legacy-package-management": { "name": "@lerna/legacy-package-management", - "version": "8.1.3", + "version": "8.1.4", "license": "MIT", "dependencies": { "@npmcli/arborist": "7.2.2", @@ -21057,7 +21057,7 @@ }, "packages/legacy-structure/commands/create": { "name": "@lerna/create", - "version": "8.1.3", + "version": "8.1.4", "license": "MIT", "dependencies": { "@npmcli/run-script": "7.0.2", @@ -21145,10 +21145,10 @@ } }, "packages/lerna": { - "version": "8.1.3", + "version": "8.1.4", "license": "MIT", "dependencies": { - "@lerna/create": "8.1.3", + "@lerna/create": "8.1.4", "@npmcli/run-script": "7.0.2", "@nx/devkit": ">=17.1.2 < 20", "@octokit/plugin-enterprise-rest": "6.0.1", diff --git a/packages/legacy-package-management/CHANGELOG.md b/packages/legacy-package-management/CHANGELOG.md index a5d108c271..d117e9e393 100644 --- a/packages/legacy-package-management/CHANGELOG.md +++ b/packages/legacy-package-management/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.1.4](https://github.com/lerna/lerna/compare/v8.1.3...v8.1.4) (2024-06-09) + +**Note:** Version bump only for package @lerna/legacy-package-management + ## [8.1.3](https://github.com/lerna/lerna/compare/v8.1.2...v8.1.3) (2024-05-13) ### Bug Fixes diff --git a/packages/legacy-package-management/package.json b/packages/legacy-package-management/package.json index 9e6489ac49..43189b931a 100644 --- a/packages/legacy-package-management/package.json +++ b/packages/legacy-package-management/package.json @@ -1,6 +1,6 @@ { "name": "@lerna/legacy-package-management", - "version": "8.1.3", + "version": "8.1.4", "description": "Legacy package management concerns provided by lerna. Please migrate to use npm/yarn/pnpm workspaces instead.", "keywords": [ "lerna", diff --git a/packages/legacy-structure/commands/create/CHANGELOG.md b/packages/legacy-structure/commands/create/CHANGELOG.md index 4f0206936c..73f65293e0 100644 --- a/packages/legacy-structure/commands/create/CHANGELOG.md +++ b/packages/legacy-structure/commands/create/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.1.4](https://github.com/lerna/lerna/compare/v8.1.3...v8.1.4) (2024-06-09) + +**Note:** Version bump only for package @lerna/create + ## [8.1.3](https://github.com/lerna/lerna/compare/v8.1.2...v8.1.3) (2024-05-13) ### Bug Fixes diff --git a/packages/legacy-structure/commands/create/package.json b/packages/legacy-structure/commands/create/package.json index fdd87eee9a..184a84401f 100644 --- a/packages/legacy-structure/commands/create/package.json +++ b/packages/legacy-structure/commands/create/package.json @@ -1,6 +1,6 @@ { "name": "@lerna/create", - "version": "8.1.3", + "version": "8.1.4", "description": "Create a new lerna-managed package", "keywords": [ "lerna", diff --git a/packages/lerna/CHANGELOG.md b/packages/lerna/CHANGELOG.md index 16d573f242..4bacee0513 100644 --- a/packages/lerna/CHANGELOG.md +++ b/packages/lerna/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.1.4](https://github.com/lerna/lerna/compare/v8.1.3...v8.1.4) (2024-06-09) + +**Note:** Version bump only for package lerna + ## [8.1.3](https://github.com/lerna/lerna/compare/v8.1.2...v8.1.3) (2024-05-13) ### Bug Fixes diff --git a/packages/lerna/package.json b/packages/lerna/package.json index feb4a61adc..998ec605e6 100644 --- a/packages/lerna/package.json +++ b/packages/lerna/package.json @@ -1,6 +1,6 @@ { "name": "lerna", - "version": "8.1.3", + "version": "8.1.4", "description": "Lerna is a fast, modern build system for managing and publishing multiple JavaScript/TypeScript packages from the same repository", "keywords": [ "lerna", @@ -37,7 +37,7 @@ "migrations": "./migrations.json" }, "dependencies": { - "@lerna/create": "8.1.3", + "@lerna/create": "8.1.4", "@npmcli/run-script": "7.0.2", "@nx/devkit": ">=17.1.2 < 20", "@octokit/plugin-enterprise-rest": "6.0.1", From 81370f1131607b8793c7b958891924c427e7072f Mon Sep 17 00:00:00 2001 From: James Henry Date: Wed, 19 Jun 2024 17:24:28 +0400 Subject: [PATCH 06/11] chore: update repo dev dependencies (#4032) --- libs/commands/add/src/command.ts | 6 +- .../commands/version/src/lib/git-push.spec.ts | 2 +- .../lib/project-graph-with-packages.spec.ts | 2 +- package-lock.json | 2024 +++++++---------- package.json | 99 +- 5 files changed, 819 insertions(+), 1314 deletions(-) diff --git a/libs/commands/add/src/command.ts b/libs/commands/add/src/command.ts index 3256190654..ce35566bdf 100644 --- a/libs/commands/add/src/command.ts +++ b/libs/commands/add/src/command.ts @@ -8,14 +8,14 @@ const command: CommandModule = { command: "add [globs..]", describe: "Add a single dependency to matched packages", builder(yargs) { - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore yargs .positional("pkg", { describe: "Package name to add as a dependency", type: "string", }) + // TODO: refactor based on TS feedback + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore .positional("globs", { describe: "Optional package directory globs to match", type: "array", diff --git a/libs/commands/version/src/lib/git-push.spec.ts b/libs/commands/version/src/lib/git-push.spec.ts index 090d2fa072..edb2415b8f 100644 --- a/libs/commands/version/src/lib/git-push.spec.ts +++ b/libs/commands/version/src/lib/git-push.spec.ts @@ -145,5 +145,5 @@ test("unexpected git error", async () => { throw error; }); - await expect(gitPush("origin", "main", { cwd })).rejects.toThrowError(/some unexpected error/); + await expect(gitPush("origin", "main", { cwd })).rejects.toThrow(/some unexpected error/); }); diff --git a/libs/core/src/lib/project-graph-with-packages.spec.ts b/libs/core/src/lib/project-graph-with-packages.spec.ts index 0236801a33..42f84b0965 100644 --- a/libs/core/src/lib/project-graph-with-packages.spec.ts +++ b/libs/core/src/lib/project-graph-with-packages.spec.ts @@ -36,6 +36,6 @@ describe("getPackage", () => { name: "foo", }) as ProjectGraphProjectNodeWithPackage; - expect(() => getPackage(node)).toThrowError("Failed attempting to find package for project foo"); + expect(() => getPackage(node)).toThrow("Failed attempting to find package for project foo"); }); }); diff --git a/package-lock.json b/package-lock.json index 898e4a8bbc..694f3335ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,79 +11,76 @@ "packages/legacy-structure/commands/create" ], "devDependencies": { - "@nx/esbuild": "19.2.1", - "@nx/eslint": "19.2.1", - "@nx/eslint-plugin": "19.2.1", - "@nx/jest": "19.2.1", - "@nx/js": "19.2.1", - "@nx/plugin": "19.2.1", - "@nx/web": "19.2.1", + "@nx/esbuild": "19.3.0", + "@nx/eslint": "19.3.0", + "@nx/eslint-plugin": "19.3.0", + "@nx/jest": "19.3.0", + "@nx/js": "19.3.0", + "@nx/plugin": "19.3.0", + "@nx/web": "19.3.0", "@swc-node/register": "1.9.1", "@swc/cli": "0.3.12", "@swc/core": "1.5.7", - "@types/byte-size": "^8.1.0", - "@types/clone-deep": "^4.0.1", - "@types/cmd-shim": "^5.0.0", - "@types/columnify": "^1.5.1", + "@types/byte-size": "^8.1.2", + "@types/clone-deep": "^4.0.4", + "@types/cmd-shim": "^5.0.2", + "@types/columnify": "^1.5.4", "@types/conventional-recommended-bump": "^6.1.0", - "@types/dedent": "^0.7.0", - "@types/envinfo": "^7.8.1", + "@types/dedent": "^0.7.2", + "@types/envinfo": "^7.8.4", "@types/fs-extra": "^9.0.13", - "@types/git-url-parse": "^9.0.1", - "@types/glob-parent": "^5.1.1", + "@types/git-url-parse": "^9.0.3", + "@types/glob-parent": "^5.1.3", "@types/inquirer": "^8.2.5", - "@types/is-ci": "3.0.0", - "@types/jest": "29.4.0", - "@types/js-yaml": "^4.0.5", + "@types/is-ci": "^3.0.4", + "@types/jest": "29.5.12", + "@types/js-yaml": "^4.0.9", "@types/libnpmpublish": "^4.0.3", - "@types/lodash": "^4.14.191", + "@types/lodash": "^4.17.5", "@types/node": "18.19.10", - "@types/node-fetch": "^2.6.2", - "@types/normalize-path": "^3.0.0", - "@types/npm-package-arg": "^6.1.1", - "@types/npm-packlist": "^7.0.0", - "@types/npm-registry-fetch": "^8.0.4", + "@types/node-fetch": "^2.6.11", + "@types/normalize-path": "^3.0.2", + "@types/npm-package-arg": "^6.1.4", + "@types/npm-packlist": "^7.0.3", + "@types/npm-registry-fetch": "^8.0.7", "@types/npmlog": "^7.0.0", - "@types/pify": "^5.0.1", - "@types/signal-exit": "^3.0.1", - "@types/ssri": "^7.1.1", - "@types/strong-log-transformer": "^1.0.0", - "@types/tar": "^6.1.3", + "@types/pify": "^5.0.4", + "@types/semver": "^7.5.8", + "@types/signal-exit": "^3.0.4", + "@types/ssri": "^7.1.5", + "@types/strong-log-transformer": "^1.0.2", + "@types/tar": "^6.1.13", "@types/temp-dir": "^1.0.0", - "@types/tmp": "^0.2.3", + "@types/tmp": "^0.2.6", "@types/uuid": "^8.3.4", - "@types/write-file-atomic": "^4.0.0", - "@typescript-eslint/eslint-plugin": "7.8.0", - "@typescript-eslint/parser": "7.8.0", + "@types/write-file-atomic": "^4.0.3", + "@typescript-eslint/eslint-plugin": "7.13.1", + "@typescript-eslint/parser": "7.13.1", "env-cmd": "^10.1.0", - "esbuild": "0.19.5", + "esbuild": "0.21.5", "eslint": "8.57.0", "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-prettier": "9.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^26.5.3", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jest": "^28.6.0", "eslint-plugin-node": "^11.1.0", - "expect": "29.4.3", - "jest": "29.4.3", - "jest-diff": "29.4.3", - "jest-environment-jsdom": "29.4.3", - "jest-matcher-utils": "29.4.3", + "jest": "29.7.0", + "jest-diff": "29.7.0", "js-yaml": "^4.1.0", - "jsonc-eslint-parser": "^2.1.0", + "jsonc-eslint-parser": "^2.4.0", "lerna": "file:packages/lerna", "lodash": "^4.17.21", "normalize-newline": "^3.0.0", "normalize-path": "^3.0.0", - "nx": "19.2.1", + "nx": "19.3.0", "prettier": "^2.2.1", - "resolve.exports": "2.0.0", "tacks": "1.2.6", - "tmp": "^0.2.1", - "touch": "^3.1.0", - "ts-jest": "29.1.0", - "ts-node": "10.9.1", - "typescript": "5.0.4", - "verdaccio": "^5.29.0" + "tmp": "^0.2.3", + "touch": "^3.1.1", + "ts-jest": "29.1.5", + "ts-node": "10.9.2", + "typescript": "5.4.5", + "verdaccio": "^5.31.1" }, "engines": { "node": ">=18.0.0" @@ -2129,10 +2126,26 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/android-arm": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.5.tgz", - "integrity": "sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], @@ -2146,9 +2159,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.5.tgz", - "integrity": "sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], @@ -2162,9 +2175,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.5.tgz", - "integrity": "sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], @@ -2178,9 +2191,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.5.tgz", - "integrity": "sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -2194,9 +2207,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.5.tgz", - "integrity": "sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], @@ -2210,9 +2223,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.5.tgz", - "integrity": "sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], @@ -2226,9 +2239,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.5.tgz", - "integrity": "sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], @@ -2242,9 +2255,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.5.tgz", - "integrity": "sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], @@ -2258,9 +2271,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.5.tgz", - "integrity": "sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], @@ -2274,9 +2287,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.5.tgz", - "integrity": "sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], @@ -2290,9 +2303,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.5.tgz", - "integrity": "sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], @@ -2306,9 +2319,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.5.tgz", - "integrity": "sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], @@ -2322,9 +2335,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.5.tgz", - "integrity": "sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], @@ -2338,9 +2351,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.5.tgz", - "integrity": "sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], @@ -2354,9 +2367,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.5.tgz", - "integrity": "sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], @@ -2370,9 +2383,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.5.tgz", - "integrity": "sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], @@ -2386,9 +2399,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.5.tgz", - "integrity": "sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], @@ -2402,9 +2415,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.5.tgz", - "integrity": "sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], @@ -2418,9 +2431,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.5.tgz", - "integrity": "sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], @@ -2434,9 +2447,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.5.tgz", - "integrity": "sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], @@ -2450,9 +2463,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.5.tgz", - "integrity": "sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], @@ -2466,9 +2479,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.5.tgz", - "integrity": "sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], @@ -2974,21 +2987,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/expect/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jest/expect/node_modules/jest-matcher-utils": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", @@ -4039,64 +4037,64 @@ } }, "node_modules/@nrwl/devkit": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-19.2.1.tgz", - "integrity": "sha512-Le/1tNEWqZKWVENz4YJk/31rU+fOHhFAerWwoZkLwyFwXRWyPmnGuJnUUu3igKKrcj98Vh9+jOpfZl3blooDUA==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-19.3.0.tgz", + "integrity": "sha512-WRcph/7U37HkTLIRzQ2oburZVfEFkPHJUn7vmo46gCq+N2cAKy3qwONO0RbthhjFIsG94YPXqFWFlV6k4nXpxA==", "dependencies": { - "@nx/devkit": "19.2.1" + "@nx/devkit": "19.3.0" } }, "node_modules/@nrwl/esbuild": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nrwl/esbuild/-/esbuild-19.2.1.tgz", - "integrity": "sha512-OFUU5AJ6lU82rnsq6ONNp6ecHt1fktJNFFonSLk/TLTObnaS6GOAvkoCzbhLWDRUWUsCOh1Q7AE3DEqcary04w==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nrwl/esbuild/-/esbuild-19.3.0.tgz", + "integrity": "sha512-dpk9am+oLAbvcwBTb1l+jT+/xffSRhly5aQk0Sb2zwJ5Dn1rJVf3cYI08l+XxZu2GO5/vrisxvkAUrscVss36Q==", "dev": true, "dependencies": { - "@nx/esbuild": "19.2.1" + "@nx/esbuild": "19.3.0" } }, "node_modules/@nrwl/eslint-plugin-nx": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-19.2.1.tgz", - "integrity": "sha512-+cXH0vJHz+G8sDomQL3r7kC4CmR7DqNRaJIw1+IBuy5f8h9tDGrKHYh3wVL6bigQOYkxSCOMyyeDXP5kFjTqkg==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-19.3.0.tgz", + "integrity": "sha512-urquS7aYwCnXeTqCVb7bpjfBkcvrm84igOP+S59rDhmw4sNxSbI0iFJrLwdVnO8oPFFP1BR4DMUYSWRvdP8NZQ==", "dev": true, "dependencies": { - "@nx/eslint-plugin": "19.2.1" + "@nx/eslint-plugin": "19.3.0" } }, "node_modules/@nrwl/jest": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nrwl/jest/-/jest-19.2.1.tgz", - "integrity": "sha512-90jXFvV0jlIoWqdphCvpLW3SR9vhXrlm4vhF2ge/+PDrdKsyZwpoHc2Xm1bl5r9S1Qoqr0E4SzrxkT76pKwfqw==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nrwl/jest/-/jest-19.3.0.tgz", + "integrity": "sha512-21J8Rj7tEQFlMxQTYmt5VEyeWIuEN3VNAkTtTuFLM95KKYONhuFC0ppiYiy+RTA1R3RyTJZLyln/hqH74BPx/g==", "dev": true, "dependencies": { - "@nx/jest": "19.2.1" + "@nx/jest": "19.3.0" } }, "node_modules/@nrwl/js": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-19.2.1.tgz", - "integrity": "sha512-121mwOdhDLUtItYlGpUTFqs/S3SP+ljKoj+AI2tGlLnT4LjDeqDiXo6uGa9FhmyErH9Q122ZsTIfklIQFhnV5g==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nrwl/js/-/js-19.3.0.tgz", + "integrity": "sha512-G+7nvAlfwnnlcPnoAhpcCrsOZTwa7hRd6WoqSrYuG/9Ge1NZ3H+rwvS5wX+bTKn8/hKHQdDuJUTomyOTpt1I1g==", "dev": true, "dependencies": { - "@nx/js": "19.2.1" + "@nx/js": "19.3.0" } }, "node_modules/@nrwl/nx-plugin": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nrwl/nx-plugin/-/nx-plugin-19.2.1.tgz", - "integrity": "sha512-wz/iGF19SjeKf5ixaTsz1EpRhp8ANqoh9JzteeOKLBIrzrhm6kFiz6fBKFpFMSkkvDQvsH5p8M5tdwaAOq1Edg==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nrwl/nx-plugin/-/nx-plugin-19.3.0.tgz", + "integrity": "sha512-GMkLft8BBZHtteXJPhjAGdAg/uWJb+ZYV1I3gQDzT7UjhhQsGQh5EWUmdwy7H+woPpbt9zVucQN07tFcViSGmA==", "dev": true, "dependencies": { - "@nx/plugin": "19.2.1" + "@nx/plugin": "19.3.0" } }, "node_modules/@nrwl/tao": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-19.2.1.tgz", - "integrity": "sha512-F89EoEsLLOSFa9pvItui0G728hlxptkp+UvNvg0NwyYkt0RTeiZ5XBrIs8oow+x5I7TyTnuUMoNdUMqk7349iA==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-19.3.0.tgz", + "integrity": "sha512-MyGYeHbh9O4Tv9xmz3Du+/leY5sKUHaPy4ancfNyShHgYi21hemX0/YYjzzoYHi44D8GzSc1XG2rAuwba7Kilw==", "dependencies": { - "nx": "19.2.1", + "nx": "19.3.0", "tslib": "^2.3.0" }, "bin": { @@ -4104,29 +4102,29 @@ } }, "node_modules/@nrwl/web": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nrwl/web/-/web-19.2.1.tgz", - "integrity": "sha512-8YSrxog4RgEVKbU7c2syxBe6auPjLLYjaWQHjW6xq+cgUjCjc/EeCX0AwC6ldbYKUQ1oTfI82ycMy8jVYoUzaw==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nrwl/web/-/web-19.3.0.tgz", + "integrity": "sha512-LDHqYVqdLSRvNrUCKDOIenaO//UjLElX3LL+Fr14dqzCKR26T8R+ZiwLcCPlre2cfskoDOvYdIHY/4pmebGW/w==", "dev": true, "dependencies": { - "@nx/web": "19.2.1" + "@nx/web": "19.3.0" } }, "node_modules/@nrwl/workspace": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-19.2.1.tgz", - "integrity": "sha512-8Z6gaMtD8KqfDv942+6h/CgMvOq+gmFuUUhoQCinUf4TySCR/eY6NC2f4uS2+gmfz0Bsx15YTlRmnatzIZWDWQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nrwl/workspace/-/workspace-19.3.0.tgz", + "integrity": "sha512-h/kMImLdX5NMg0lXB6PmYIxBYI6WU7ATcOI3tGl8z48HHfyfwu87vTQlxFi3jaZv2qj/mE5VFpd+tGADEPNvCw==", "dev": true, "dependencies": { - "@nx/workspace": "19.2.1" + "@nx/workspace": "19.3.0" } }, "node_modules/@nx/devkit": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-19.2.1.tgz", - "integrity": "sha512-dutfbNBWbMKoN6Lt2L0WL3MuetWCcnU4zfMLCl+XBtUR8nm+O5hcNVd1bFC+DQO1M0NYAqPKKzrAqvsBINAp1w==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-19.3.0.tgz", + "integrity": "sha512-Natya5nzvHH0qTOIL1w/EZtwMgDx87Dgz0LgeY7te2fULaNFcj5fVrP+mUKEJZR+NccO7GPumT2RPhuEl9rPnQ==", "dependencies": { - "@nrwl/devkit": "19.2.1", + "@nrwl/devkit": "19.3.0", "ejs": "^3.1.7", "enquirer": "~2.3.6", "ignore": "^5.0.4", @@ -4174,14 +4172,14 @@ } }, "node_modules/@nx/esbuild": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/esbuild/-/esbuild-19.2.1.tgz", - "integrity": "sha512-TwzwgsfTVcZbnP6UMNw7P0u2BMoDXr4j29usggUFEUXVpzoZQ3sA4ffGbO5PVQ0xnsXjod/MPU/YHjZoi1ZwMQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/esbuild/-/esbuild-19.3.0.tgz", + "integrity": "sha512-9KVMFXOxFcsEUGocIlVv4+mXKAX3QwbyMbyBx2JjR+wCSlvcBOHpb9DibAJhOLTXgidBHRaRcIC7+RWmGEbKrA==", "dev": true, "dependencies": { - "@nrwl/esbuild": "19.2.1", - "@nx/devkit": "19.2.1", - "@nx/js": "19.2.1", + "@nrwl/esbuild": "19.3.0", + "@nx/devkit": "19.3.0", + "@nx/js": "19.3.0", "chalk": "^4.1.0", "fast-glob": "3.2.7", "fs-extra": "^11.1.0", @@ -4198,14 +4196,14 @@ } }, "node_modules/@nx/eslint": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-19.2.1.tgz", - "integrity": "sha512-lQJG8aXvuNGL6fUV/kphXqlmRzhXDfpiFiW1RGyiJ3FuqrBlVTXfDYoU5rkyFTgwFDfgN3oO69j4CW6aDB/iZQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-19.3.0.tgz", + "integrity": "sha512-x4SrQMnLnX+jM7KGsj+ReOvEHo5S0chLPfJhf0KFnXnzWoWcrq18z0lZ33JaAWWBsjexozDTld2wHj7nkvcjCg==", "dev": true, "dependencies": { - "@nx/devkit": "19.2.1", - "@nx/js": "19.2.1", - "@nx/linter": "19.2.1", + "@nx/devkit": "19.3.0", + "@nx/js": "19.3.0", + "@nx/linter": "19.3.0", "semver": "^7.5.3", "tslib": "^2.3.0", "typescript": "~5.4.2" @@ -4221,14 +4219,14 @@ } }, "node_modules/@nx/eslint-plugin": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-19.2.1.tgz", - "integrity": "sha512-i0k7yjnthxmtwQR1aKL1BBVCl2aiKuNONXrRXa/8IZxigzoWr5znnoKtIs7bg0Pk1pCfSzzPU8bjgSpkGSi4pQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-19.3.0.tgz", + "integrity": "sha512-NZ966Wy4mF34lLi+QOgY9mpOiiAL5UiJ+QqOZcg22QIVz0zPY5HbtbYDZTu8OmR4O/S+3ylguaP1O1P2xiYMBQ==", "dev": true, "dependencies": { - "@nrwl/eslint-plugin-nx": "19.2.1", - "@nx/devkit": "19.2.1", - "@nx/js": "19.2.1", + "@nrwl/eslint-plugin-nx": "19.3.0", + "@nx/devkit": "19.3.0", + "@nx/js": "19.3.0", "@typescript-eslint/type-utils": "^7.3.0", "@typescript-eslint/utils": "^7.3.0", "chalk": "^4.1.0", @@ -4271,30 +4269,17 @@ "node": ">=10" } }, - "node_modules/@nx/eslint/node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/@nx/jest": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-19.2.1.tgz", - "integrity": "sha512-mTp3jnbfCyfXrLKPU2BuansVHlfBUjj6kNXhqkoSbl4eY1NOqIh9Gb4vPfEh1NatZZOWLVfCyKG1jW3WzTWDyw==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-19.3.0.tgz", + "integrity": "sha512-XgtMw7QHD1wni3EZd3YS4UgoskRZh264tJf/8QRQ8XxWJCFjNM3IEQHDUycIt09Vzz5rql5NwuZ9ct9CNZveNw==", "dev": true, "dependencies": { "@jest/reporters": "^29.4.1", "@jest/test-result": "^29.4.1", - "@nrwl/jest": "19.2.1", - "@nx/devkit": "19.2.1", - "@nx/js": "19.2.1", + "@nrwl/jest": "19.3.0", + "@nx/devkit": "19.3.0", + "@nx/js": "19.3.0", "@phenomnomnominal/tsquery": "~5.0.1", "chalk": "^4.1.0", "identity-obj-proxy": "3.0.0", @@ -4341,9 +4326,9 @@ } }, "node_modules/@nx/js": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/js/-/js-19.2.1.tgz", - "integrity": "sha512-juqEjTeA5awuKywSAxO+l0FH+UgLy3w64bdtf7PD3ZXNHgWlObjq+hB5wPVjsrMJQ6vqAvQALa1i9w2Qf7B4Eg==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-19.3.0.tgz", + "integrity": "sha512-bZuV8sXR5kZ2FJzqnjSZqWs21W7AlZKgjzYB7Rt1u1ap4KcVR32NNAUVFjnTuI1A/6rhO39IShTyMhswnBV9qA==", "dev": true, "dependencies": { "@babel/core": "^7.23.2", @@ -4353,9 +4338,9 @@ "@babel/preset-env": "^7.23.2", "@babel/preset-typescript": "^7.22.5", "@babel/runtime": "^7.22.6", - "@nrwl/js": "19.2.1", - "@nx/devkit": "19.2.1", - "@nx/workspace": "19.2.1", + "@nrwl/js": "19.3.0", + "@nx/devkit": "19.3.0", + "@nx/workspace": "19.3.0", "babel-plugin-const-enum": "^1.0.1", "babel-plugin-macros": "^2.8.0", "babel-plugin-transform-typescript-metadata": "^0.3.1", @@ -4436,19 +4421,62 @@ "node": ">=10" } }, + "node_modules/@nx/js/node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, "node_modules/@nx/linter": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-19.2.1.tgz", - "integrity": "sha512-qun42/C7JQLEXDJ4WylydMlvB5cCyF3QDa2SAEoanUaMCOrL7ri/RIjenCfb8wIcpRBYs7U7CJAQJC3Nqmnz9A==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-19.3.0.tgz", + "integrity": "sha512-+bpDyXjHBTuVHvbQ7m2hG86m1jJNAPOmnoad/2ZPoQM4LjBTOW8M7s2upZPewjnAJs8Fv02281mO+ORbhW7L9A==", "dev": true, "dependencies": { - "@nx/eslint": "19.2.1" + "@nx/eslint": "19.3.0" } }, "node_modules/@nx/nx-darwin-arm64": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.2.1.tgz", - "integrity": "sha512-9VsVmb3ayzSYYIQniL+y8EbCgDgJvMxKU/wOau9vPYo+L/Alu3QF22yJ1XiI1RwnEzZpvE2dceGb48tZU1jD3A==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.3.0.tgz", + "integrity": "sha512-TMTxjrN7Y/UsKFjmz0YfhVItLTGWqvud8cmQchw5NEjdNakfjXk0mREufO5/5PwoiRIsen6MbThoTprLpjOUiQ==", "cpu": [ "arm64" ], @@ -4461,9 +4489,9 @@ } }, "node_modules/@nx/nx-darwin-x64": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.2.1.tgz", - "integrity": "sha512-p0ulI83LQBDuRpO6td+qbUh70oPFuiIo2MylBIOE5EcVO5z8qOh7JPvk8fkoEmMXEZe7hgG3Cq5+dN7LxHx9kw==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.3.0.tgz", + "integrity": "sha512-GH2L6ftnzdIs7JEdv7ZPCdbpAdB5sW6NijK07riYZSONzq5fEruD1yDWDkyZbYBb8RTxsparUWJnq8q1qxEPHQ==", "cpu": [ "x64" ], @@ -4476,9 +4504,9 @@ } }, "node_modules/@nx/nx-freebsd-x64": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.2.1.tgz", - "integrity": "sha512-NFF7h5rH3D0hT34CVG5ms95CZp+/m2KP4ZEczRn+wRzWeqouRAJBGXOCiMZrmzd7orjuHVVXrghfvBzpte1stw==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.3.0.tgz", + "integrity": "sha512-1ow7Xku1yyjHviCKsWiuHCAnTd3fD+5O5c+e4DXHVthT8wnadKSotvBIWf38DMbMthl7na82e72OzxcdSbrVqQ==", "cpu": [ "x64" ], @@ -4491,9 +4519,9 @@ } }, "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.2.1.tgz", - "integrity": "sha512-ebvNguGQUIRJzFHi8im5lsbNbIFRnPaz6sbb0zFhu/W9/J+k3EWDjtOwtXoV6dnFmlRj7UbTyhMcu5SiWitdVQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.3.0.tgz", + "integrity": "sha512-mYQMIUvNr2gww8vbg766uk/C1RxoC1fwioeP87bmV5NRUKSzJ8WEJVxAsqc9RGhAOUaNXOgEuKYrMcVhKyIKJQ==", "cpu": [ "arm" ], @@ -4506,9 +4534,9 @@ } }, "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.2.1.tgz", - "integrity": "sha512-aVqEZrDnZlqcJCKnrEON2JltdM4VxgHJSkJKLKuUeg3SUTskur7LH9M5KFhRgTo/tW+t2y9EuHDO6O3fAdcsYw==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.3.0.tgz", + "integrity": "sha512-rHL3eQ0RHkeAXnhHHu/NIyouN/ykiXvgyNU3TuCd50+2MZcAbjB+Xq3mwL0MwiP+BQuptiE+snTuxFUJp4ZH6A==", "cpu": [ "arm64" ], @@ -4521,9 +4549,9 @@ } }, "node_modules/@nx/nx-linux-arm64-musl": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.2.1.tgz", - "integrity": "sha512-W1g0IZ+4eNizXkUcsucSmXCaYmNj7ODX9L5wtZ8xMlLhdoq+EML8X/IpEPE8qIcYDEDUFgTPXb2zQsHwhgVXPw==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.3.0.tgz", + "integrity": "sha512-im0+OgOD6ShpTkI9ZRz7BjzxhQ/Lk3xjYmmCu+PFGmaybEnkNNDFwsgS0iEVKMdWZ/EQoQvJrqOYsX125iIBuQ==", "cpu": [ "arm64" ], @@ -4536,9 +4564,9 @@ } }, "node_modules/@nx/nx-linux-x64-gnu": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.2.1.tgz", - "integrity": "sha512-QKuFatKyDftz16JhmTvsjfjORpA1IqgOPiwnEPyBJ0nq5AqJTqoeXX834PMxCAaEu2y+K866l9OL97+vuYDLyA==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.3.0.tgz", + "integrity": "sha512-k8q/d6WBSXOeUpBq6Mw69yMKL4n9LaX3o4LBNwBkVCEZ8p6s0njwKefLtjwnKlai0g/k5f0NcilU2zTwP/Ex8g==", "cpu": [ "x64" ], @@ -4551,9 +4579,9 @@ } }, "node_modules/@nx/nx-linux-x64-musl": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.2.1.tgz", - "integrity": "sha512-J8IwFAfhZ16n1lKb1B7MSDQ7IScF+Y0IFKl48ze3ixD3sMr48KTDKetqqxjel1pNeUchtV5xFsAlWuHpp5s58Q==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.3.0.tgz", + "integrity": "sha512-sahEV99glBlpGKG1TIQ5PkJ0QvpHp69wWsBFK2DKtCETxOtsWqwvIjemxTCXRirTqeHiP7BiR6VWsf2YqqqBdw==", "cpu": [ "x64" ], @@ -4566,9 +4594,9 @@ } }, "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.2.1.tgz", - "integrity": "sha512-6vmImBTJUr73gPlb70AGKlEoE8ogZCzXaX7me2wE2n6H6ks7FZqHl3X0RxQDPG6rf6TAJB4YLpWLZDNZLWXSYA==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.3.0.tgz", + "integrity": "sha512-w03gFwLijStmhUji70QJHYo/U16ovybNczxGO7+5TT330X8/y+ihw9FCGHiIcujAjTAE88h0DKGn05WlNqRmfg==", "cpu": [ "arm64" ], @@ -4581,9 +4609,9 @@ } }, "node_modules/@nx/nx-win32-x64-msvc": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.2.1.tgz", - "integrity": "sha512-5whqdjGI8iDGJ7Ojh9y/KRuNX3ltdHRgn+WgQRTr2y3kkNInZ8KrYIYH77uIE0rgxsw/dxwfYWCXWqJFJtx3vA==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.3.0.tgz", + "integrity": "sha512-M7e2zXGfTjH8NLiwqKLdWC9VlfMSQDYlI4/SM4OSpPqhUTfPlRPa+wNKNTG7perKfDXxE9ei8yjocujknXJk/A==", "cpu": [ "x64" ], @@ -4596,29 +4624,29 @@ } }, "node_modules/@nx/plugin": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/plugin/-/plugin-19.2.1.tgz", - "integrity": "sha512-VXnCI4hTZovhJKerxyF7E42AaZiUkY9+am8XGCTbK54n29ZDaUISsSgk5TpI8bMkPfHqZ12Ajtz4eSniJfUx0g==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/plugin/-/plugin-19.3.0.tgz", + "integrity": "sha512-wAb/0qdpd0bYEPMaHfRShBK5sBeMt3dBRu74I9ETrUF0lQ6u2sUaF03JZ+Wg+/D+gV+ulgWuB1cZGlT+8X5hEQ==", "dev": true, "dependencies": { - "@nrwl/nx-plugin": "19.2.1", - "@nx/devkit": "19.2.1", - "@nx/eslint": "19.2.1", - "@nx/jest": "19.2.1", - "@nx/js": "19.2.1", + "@nrwl/nx-plugin": "19.3.0", + "@nx/devkit": "19.3.0", + "@nx/eslint": "19.3.0", + "@nx/jest": "19.3.0", + "@nx/js": "19.3.0", "fs-extra": "^11.1.0", "tslib": "^2.3.0" } }, "node_modules/@nx/web": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/web/-/web-19.2.1.tgz", - "integrity": "sha512-GXvy36W07R9GKALB6r2nsmBSEk3T0SrBnTi3beZMmSj8L/58Be+e4/I9GG8+gY1HclDN6s815jI7SGIBoSa94Q==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-19.3.0.tgz", + "integrity": "sha512-kK+jpUKhWflpKHegkNPBDkH3XYjpdEwCKr6izqJU7nvV0P9EHT/jVWRxfic/imTAoC9IZpHwAW9bYSd0LKpe1A==", "dev": true, "dependencies": { - "@nrwl/web": "19.2.1", - "@nx/devkit": "19.2.1", - "@nx/js": "19.2.1", + "@nrwl/web": "19.3.0", + "@nx/devkit": "19.3.0", + "@nx/js": "19.3.0", "chalk": "^4.1.0", "detect-port": "^1.5.1", "http-server": "^14.1.0", @@ -4626,16 +4654,16 @@ } }, "node_modules/@nx/workspace": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-19.2.1.tgz", - "integrity": "sha512-+V0joRxPTI8/ghoCTFMhRG6bNJ0PwiaBYArA6YeSaWUJGtaWBN2WoMjs/zuEM43W3lWmvEpqjSTyUHoRH5HUiQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-19.3.0.tgz", + "integrity": "sha512-mhhQIXPGOysg/1vqGnXzwB3ODckpwi2OxQm4x4R1rX8tnS7I4+K2MZFyQzpa13vPf4h4Y4yxdDUl+TfZa7lVhQ==", "dev": true, "dependencies": { - "@nrwl/workspace": "19.2.1", - "@nx/devkit": "19.2.1", + "@nrwl/workspace": "19.3.0", + "@nx/devkit": "19.3.0", "chalk": "^4.1.0", "enquirer": "~2.3.6", - "nx": "19.2.1", + "nx": "19.3.0", "tslib": "^2.3.0", "yargs-parser": "21.1.1" } @@ -5635,9 +5663,9 @@ "dev": true }, "node_modules/@types/envinfo": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@types/envinfo/-/envinfo-7.8.3.tgz", - "integrity": "sha512-qzV1XMjmzgmndci6L5HlzExf4w9A5jQPNpW/t4sSljErKbS8y6231ToHO9ir2Xjf+2zG1C540+Wmh0zpUsGu0A==", + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@types/envinfo/-/envinfo-7.8.4.tgz", + "integrity": "sha512-K5WaRgSlqjc408IyPbxOFnz7rVG9E8ELhj7XR3Ncui15EgeyIXTcCfmwrRnU4uEOCJQhzZRAQurYznEEc1dD2g==", "dev": true }, "node_modules/@types/fs-extra": { @@ -5705,9 +5733,9 @@ } }, "node_modules/@types/is-ci": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/is-ci/-/is-ci-3.0.0.tgz", - "integrity": "sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/is-ci/-/is-ci-3.0.4.tgz", + "integrity": "sha512-AkCYCmwlXeuH89DagDCzvCAyltI2v9lh3U3DqSg/GrBYoReAaWwxfXCqMx9UV5MajLZ4ZFwZzV4cABGIxk2XRw==", "dev": true, "dependencies": { "ci-info": "^3.1.0" @@ -5738,9 +5766,9 @@ } }, "node_modules/@types/jest": { - "version": "29.4.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.4.0.tgz", - "integrity": "sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -5753,23 +5781,6 @@ "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", "dev": true }, - "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -5797,9 +5808,9 @@ } }, "node_modules/@types/lodash": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.1.tgz", - "integrity": "sha512-X+2qazGS3jxLAIz5JDXDzglAF3KpijdhFxlf/V1+hEsOUc+HnWi81L/uv/EvGuV90WY+7mPGFCUDGfQC3Gj95Q==", + "version": "4.17.5", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.5.tgz", + "integrity": "sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==", "dev": true }, "node_modules/@types/minimatch": { @@ -5999,12 +6010,6 @@ "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", "dev": true }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true - }, "node_modules/@types/uuid": { "version": "8.3.4", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", @@ -6036,21 +6041,19 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz", - "integrity": "sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.13.1.tgz", + "integrity": "sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/type-utils": "7.8.0", - "@typescript-eslint/utils": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", - "debug": "^4.3.4", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/type-utils": "7.13.1", + "@typescript-eslint/utils": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.6.0", "ts-api-utils": "^1.3.0" }, "engines": { @@ -6070,28 +6073,16 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/parser": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.8.0.tgz", - "integrity": "sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.13.1.tgz", + "integrity": "sha512-1ELDPlnLvDQ5ybTSrMhRTFDfOQEOXNM+eP+3HT/Yq7ruWpciQw+Avi73pdEbA4SooCawEWo3dtYbF68gN7Ed1A==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/typescript-estree": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", "debug": "^4.3.4" }, "engines": { @@ -6111,13 +6102,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", - "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.13.1.tgz", + "integrity": "sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0" + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -6128,13 +6119,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz", - "integrity": "sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.13.1.tgz", + "integrity": "sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.8.0", - "@typescript-eslint/utils": "7.8.0", + "@typescript-eslint/typescript-estree": "7.13.1", + "@typescript-eslint/utils": "7.13.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -6155,9 +6146,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", - "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.13.1.tgz", + "integrity": "sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -6168,13 +6159,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", - "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.13.1.tgz", + "integrity": "sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/visitor-keys": "7.8.0", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/visitor-keys": "7.13.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -6232,18 +6223,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz", - "integrity": "sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.13.1.tgz", + "integrity": "sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.15", - "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.8.0", - "@typescript-eslint/types": "7.8.0", - "@typescript-eslint/typescript-estree": "7.8.0", - "semver": "^7.6.0" + "@typescript-eslint/scope-manager": "7.13.1", + "@typescript-eslint/types": "7.13.1", + "@typescript-eslint/typescript-estree": "7.13.1" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -6256,25 +6244,13 @@ "eslint": "^8.56.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", - "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", + "version": "7.13.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.13.1.tgz", + "integrity": "sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/types": "7.13.1", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -6292,20 +6268,20 @@ "dev": true }, "node_modules/@verdaccio/auth": { - "version": "7.0.0-next-7.15", - "resolved": "https://registry.npmjs.org/@verdaccio/auth/-/auth-7.0.0-next-7.15.tgz", - "integrity": "sha512-BWexr0derpjjJh3fNh59aVen5pssvMTLRMTnBi9vmmn1Ndn6cOjeO6a16EhGixFdeef9YFrDMFRY7t96l4QrPQ==", + "version": "7.0.0-next-7.16", + "resolved": "https://registry.npmjs.org/@verdaccio/auth/-/auth-7.0.0-next-7.16.tgz", + "integrity": "sha512-jOfyBjBwCN+XqVKrjZSVQLGm1EOPKsKtaLzG9g9DyBUa89eMbjsRfA9g/ipf7jTuG1NZrZRQ68nzpGVbpEbC9Q==", "dev": true, "dependencies": { - "@verdaccio/config": "7.0.0-next-7.15", - "@verdaccio/core": "7.0.0-next-7.15", - "@verdaccio/loaders": "7.0.0-next-7.15", - "@verdaccio/logger": "7.0.0-next-7.15", + "@verdaccio/config": "7.0.0-next-7.16", + "@verdaccio/core": "7.0.0-next-7.16", + "@verdaccio/loaders": "7.0.0-next-7.16", + "@verdaccio/logger": "7.0.0-next-7.16", "@verdaccio/signature": "7.0.0-next-7.5", - "@verdaccio/utils": "7.0.0-next-7.15", + "@verdaccio/utils": "7.0.0-next-7.16", "debug": "4.3.4", "lodash": "4.17.21", - "verdaccio-htpasswd": "12.0.0-next-7.15" + "verdaccio-htpasswd": "12.0.0-next-7.16" }, "engines": { "node": ">=18" @@ -6339,13 +6315,13 @@ "dev": true }, "node_modules/@verdaccio/config": { - "version": "7.0.0-next-7.15", - "resolved": "https://registry.npmjs.org/@verdaccio/config/-/config-7.0.0-next-7.15.tgz", - "integrity": "sha512-hXPfDakeyPz2YUo7ORGukKBqOPrNuOpohzWB1GSx6pNDYEepZiRbtpkOTNINiFbFbaXRU42co55PGEsMC3jyPg==", + "version": "7.0.0-next-7.16", + "resolved": "https://registry.npmjs.org/@verdaccio/config/-/config-7.0.0-next-7.16.tgz", + "integrity": "sha512-y7a0cb6LdoJxFM2astIQjn7kfOwTQqSfpgzf/B67HIr9k45Q0E6HDrDQ0d+FcCGU0iI+ftAAM7+sv+nOYEEvNw==", "dev": true, "dependencies": { - "@verdaccio/core": "7.0.0-next-7.15", - "@verdaccio/utils": "7.0.0-next-7.15", + "@verdaccio/core": "7.0.0-next-7.16", + "@verdaccio/utils": "7.0.0-next-7.16", "debug": "4.3.4", "js-yaml": "4.1.0", "lodash": "4.17.21", @@ -6385,9 +6361,9 @@ } }, "node_modules/@verdaccio/core": { - "version": "7.0.0-next-7.15", - "resolved": "https://registry.npmjs.org/@verdaccio/core/-/core-7.0.0-next-7.15.tgz", - "integrity": "sha512-BsClg5xGXZi755BvzYBrdOQOUNtyXyyslsnehGesy9ryKSRVSpGDi63/bZNHm10hMOkayPH5JE/tjtARX1AfRA==", + "version": "7.0.0-next-7.16", + "resolved": "https://registry.npmjs.org/@verdaccio/core/-/core-7.0.0-next-7.16.tgz", + "integrity": "sha512-mDKZ///tK0BeghoAfuOoN9x7RTNSd16ChG8D9OrSBtE/fGQxoVu9+hjcDuYmPPpZuwrt/6B5ooFutg36xWaopg==", "dev": true, "dependencies": { "ajv": "8.12.0", @@ -6471,12 +6447,12 @@ } }, "node_modules/@verdaccio/loaders": { - "version": "7.0.0-next-7.15", - "resolved": "https://registry.npmjs.org/@verdaccio/loaders/-/loaders-7.0.0-next-7.15.tgz", - "integrity": "sha512-X1lgV1DaXkPkEUJzqSZ6ojK4x2TJ+qUkzsyA9s6sBg6MxAe3bCxs9gOytEBA9fPy5f5nTXR63n9+EKaCgOLf2Q==", + "version": "7.0.0-next-7.16", + "resolved": "https://registry.npmjs.org/@verdaccio/loaders/-/loaders-7.0.0-next-7.16.tgz", + "integrity": "sha512-C671ipk7grPmcsN3NG/XLUi60U3WjIgxKb5puowAPuvwXYN1LZWI71CXroDzA5D71hxirN8CZ4+QQytE15NBXg==", "dev": true, "dependencies": { - "@verdaccio/logger": "7.0.0-next-7.15", + "@verdaccio/logger": "7.0.0-next-7.16", "debug": "4.3.4", "lodash": "4.17.21" }, @@ -6530,12 +6506,12 @@ } }, "node_modules/@verdaccio/logger": { - "version": "7.0.0-next-7.15", - "resolved": "https://registry.npmjs.org/@verdaccio/logger/-/logger-7.0.0-next-7.15.tgz", - "integrity": "sha512-Ch/dMJ5MV/gw18PFhFMZ0GyvRDzRctlL6XhQpP3p2ZFPiXVAqy/lgRZVQCk8UrKxZYgG6UVXGJMKJT827+esdw==", + "version": "7.0.0-next-7.16", + "resolved": "https://registry.npmjs.org/@verdaccio/logger/-/logger-7.0.0-next-7.16.tgz", + "integrity": "sha512-BdcpSKCiiqKSgtsObXDDqoZupJBkMZUz1iMtptA29eBbtytyHbIx44MZDyUgqfAaqD9/q4NufFjSNTwYKF3Z8w==", "dev": true, "dependencies": { - "@verdaccio/logger-commons": "7.0.0-next-7.15", + "@verdaccio/logger-commons": "7.0.0-next-7.16", "pino": "8.17.2" }, "engines": { @@ -6547,12 +6523,12 @@ } }, "node_modules/@verdaccio/logger-7": { - "version": "7.0.0-next-7.15", - "resolved": "https://registry.npmjs.org/@verdaccio/logger-7/-/logger-7-7.0.0-next-7.15.tgz", - "integrity": "sha512-yC9WNI9TG5L/Q7J5zoVqRSZoZpbSiib5TL6jztufJ7UFsGz/2TU6f2Vny/w/Mmg6fVl4ddUQeaBnTRV0HDyriQ==", + "version": "7.0.0-next-7.16", + "resolved": "https://registry.npmjs.org/@verdaccio/logger-7/-/logger-7-7.0.0-next-7.16.tgz", + "integrity": "sha512-91R7zR+NjkT8mP0VXuQTjjPKnaRPLHqQEksXGhn5waAqYnsE9dqKcXXIAy9t3heP0ZbOQiIoBMEBmMxU8VmaiA==", "dev": true, "dependencies": { - "@verdaccio/logger-commons": "7.0.0-next-7.15", + "@verdaccio/logger-commons": "7.0.0-next-7.16", "pino": "7.11.0" }, "engines": { @@ -6563,6 +6539,18 @@ "url": "https://opencollective.com/verdaccio" } }, + "node_modules/@verdaccio/logger-7/node_modules/duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, "node_modules/@verdaccio/logger-7/node_modules/on-exit-leak-free": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", @@ -6644,13 +6632,13 @@ } }, "node_modules/@verdaccio/logger-commons": { - "version": "7.0.0-next-7.15", - "resolved": "https://registry.npmjs.org/@verdaccio/logger-commons/-/logger-commons-7.0.0-next-7.15.tgz", - "integrity": "sha512-MeAaU2IMdZSwdO/hrh7aTg1ax3iKlPf6eLVf0JpNYKDxN8OCsi2o5+Q014rGyEG8++Pri3D4DIxMJA7TA+t15g==", + "version": "7.0.0-next-7.16", + "resolved": "https://registry.npmjs.org/@verdaccio/logger-commons/-/logger-commons-7.0.0-next-7.16.tgz", + "integrity": "sha512-uGchjJUFEtksGLQ57EIjbMU5yq/6yf9Dfuz9ZTNE99meyDJndUAcCrvGvL3DoItDqFYt36HHqe/nzhC9XFwDfQ==", "dev": true, "dependencies": { - "@verdaccio/core": "7.0.0-next-7.15", - "@verdaccio/logger-prettify": "7.0.0-next-7.2", + "@verdaccio/core": "7.0.0-next-7.16", + "@verdaccio/logger-prettify": "7.0.0-next-7.3", "colorette": "2.0.20", "debug": "4.3.4" }, @@ -6663,9 +6651,9 @@ } }, "node_modules/@verdaccio/logger-prettify": { - "version": "7.0.0-next-7.2", - "resolved": "https://registry.npmjs.org/@verdaccio/logger-prettify/-/logger-prettify-7.0.0-next-7.2.tgz", - "integrity": "sha512-vGIcXW8DkVBsk0g/iufMZWKBMgC774Vz0zT0g+3NErBUmAhvCby+rrrNDy64jJ8XfJEn+eMiXq7wM/tRWbwYKQ==", + "version": "7.0.0-next-7.3", + "resolved": "https://registry.npmjs.org/@verdaccio/logger-prettify/-/logger-prettify-7.0.0-next-7.3.tgz", + "integrity": "sha512-xPes4BuxEl1MUvDlYWO8oM3jcO3718p+ub7kx4kEGB48nTjF4wICkf/XdERj+cusE1dCodRWByNt9Hu32ER/JA==", "dev": true, "dependencies": { "colorette": "2.0.20", @@ -6683,17 +6671,17 @@ } }, "node_modules/@verdaccio/middleware": { - "version": "7.0.0-next-7.15", - "resolved": "https://registry.npmjs.org/@verdaccio/middleware/-/middleware-7.0.0-next-7.15.tgz", - "integrity": "sha512-54VA3/TbHpb7gIaq3RV9nqR6s4FtuKa5gnpwJEwU/SCdZrZiS2r6+doeQQz96xthrFzpBS1rp0IrRCcRcDs/Uw==", + "version": "7.0.0-next-7.16", + "resolved": "https://registry.npmjs.org/@verdaccio/middleware/-/middleware-7.0.0-next-7.16.tgz", + "integrity": "sha512-4UPRd+B80LBUd7DYS9e8XAOsY8b5edVv2Kd/RiGRq34IEJ1rGDy2Nz67GTYnDxwxMwLb54PkDp0qMrs+lmn46g==", "dev": true, "dependencies": { - "@verdaccio/config": "7.0.0-next-7.15", - "@verdaccio/core": "7.0.0-next-7.15", - "@verdaccio/url": "12.0.0-next-7.15", - "@verdaccio/utils": "7.0.0-next-7.15", + "@verdaccio/config": "7.0.0-next-7.16", + "@verdaccio/core": "7.0.0-next-7.16", + "@verdaccio/url": "12.0.0-next-7.16", + "@verdaccio/utils": "7.0.0-next-7.16", "debug": "4.3.4", - "express": "4.18.3", + "express": "4.19.2", "express-rate-limit": "5.5.1", "lodash": "4.17.21", "lru-cache": "7.18.3", @@ -6707,66 +6695,6 @@ "url": "https://opencollective.com/verdaccio" } }, - "node_modules/@verdaccio/middleware/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@verdaccio/middleware/node_modules/express": { - "version": "4.18.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.3.tgz", - "integrity": "sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/@verdaccio/middleware/node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, "node_modules/@verdaccio/middleware/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -6788,27 +6716,6 @@ "node": ">=4.0.0" } }, - "node_modules/@verdaccio/middleware/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/@verdaccio/middleware/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/@verdaccio/search-indexer": { "version": "7.0.0-next-7.2", "resolved": "https://registry.npmjs.org/@verdaccio/search-indexer/-/search-indexer-7.0.0-next-7.2.tgz", @@ -6854,16 +6761,18 @@ } }, "node_modules/@verdaccio/tarball": { - "version": "12.0.0-next-7.15", - "resolved": "https://registry.npmjs.org/@verdaccio/tarball/-/tarball-12.0.0-next-7.15.tgz", - "integrity": "sha512-wjAbLHUxg9FxVmGoW+qvLbv2eWy61MrRkJQWm2+1Zq4JBC6BdKsGZ3AXrpEc+MYi3U1b7Nmi28zXJ9gJ0/HaLQ==", + "version": "12.0.0-next-7.16", + "resolved": "https://registry.npmjs.org/@verdaccio/tarball/-/tarball-12.0.0-next-7.16.tgz", + "integrity": "sha512-yZPks89XTa+tyXjeJ/OhASVzuQXigcw5OYPbHevhlO2lKoCFaiiqSSmxAOIeJ80hbTjwvdLVDDpiHe8BJ9Uhxw==", "dev": true, "dependencies": { - "@verdaccio/core": "7.0.0-next-7.15", - "@verdaccio/url": "12.0.0-next-7.15", - "@verdaccio/utils": "7.0.0-next-7.15", + "@verdaccio/core": "7.0.0-next-7.16", + "@verdaccio/url": "12.0.0-next-7.16", + "@verdaccio/utils": "7.0.0-next-7.16", "debug": "4.3.4", - "lodash": "4.17.21" + "gunzip-maybe": "^1.4.2", + "lodash": "4.17.21", + "tar-stream": "^3.1.7" }, "engines": { "node": ">=12" @@ -6873,19 +6782,30 @@ "url": "https://opencollective.com/verdaccio" } }, + "node_modules/@verdaccio/tarball/node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "node_modules/@verdaccio/ui-theme": { - "version": "7.0.0-next-7.15", - "resolved": "https://registry.npmjs.org/@verdaccio/ui-theme/-/ui-theme-7.0.0-next-7.15.tgz", - "integrity": "sha512-4kQr+OKTe+j1ZNBukBsQ4x1GwkM+3qfVuLk0fdGCjPRL+hf6o6piTgIrXsujcJDzSx+lQL6KEqkrmAUsHhjKag==", + "version": "7.0.0-next-7.16", + "resolved": "https://registry.npmjs.org/@verdaccio/ui-theme/-/ui-theme-7.0.0-next-7.16.tgz", + "integrity": "sha512-pub3CMaGkUlQmuA5wLxS6n5NwMXsZRy3Gz8hACnidsZ8VET5AwXMNoWtL1/hVbBryclCQ4f3CFNlexcihy1KgA==", "dev": true }, "node_modules/@verdaccio/url": { - "version": "12.0.0-next-7.15", - "resolved": "https://registry.npmjs.org/@verdaccio/url/-/url-12.0.0-next-7.15.tgz", - "integrity": "sha512-VyfRKdQv3Urbj8sgUp3xfnm85EHtiTrco1Ve9UbXB0u0SfSpOihUw3TfFzUjLfkyeZE8oBJ8JLZIKmkOm9ZF+w==", + "version": "12.0.0-next-7.16", + "resolved": "https://registry.npmjs.org/@verdaccio/url/-/url-12.0.0-next-7.16.tgz", + "integrity": "sha512-qHHnaTXkroP5l2FIpVZYE8lIE3UvmjJ2jSqm92mm/9wKlj4R0DiBgELj/ZRFgrPnZYw1MFDCodahfDx2gIozpw==", "dev": true, "dependencies": { - "@verdaccio/core": "7.0.0-next-7.15", + "@verdaccio/core": "7.0.0-next-7.16", "debug": "4.3.4", "lodash": "4.17.21", "validator": "13.11.0" @@ -6908,12 +6828,12 @@ } }, "node_modules/@verdaccio/utils": { - "version": "7.0.0-next-7.15", - "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-7.0.0-next-7.15.tgz", - "integrity": "sha512-J0X/SFiCgty5hSI9ghjj4ZG5nf6+txfVWGzuFjlR3UPP1VvpqTu+oya/45sBwZcC/uvfm1LwKCT6tVbcQYlScg==", + "version": "7.0.0-next-7.16", + "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-7.0.0-next-7.16.tgz", + "integrity": "sha512-OQFLRUwT3ovnPEREGoIXdhKAnr+/0LbxnhcstandRmmFtuAG1BGWMO8vSoXw2YT0PL9zTMsDTrS5hMOALW/GXQ==", "dev": true, "dependencies": { - "@verdaccio/core": "7.0.0-next-7.15", + "@verdaccio/core": "7.0.0-next-7.16", "lodash": "4.17.21", "minimatch": "7.4.6", "semver": "7.6.0" @@ -7030,13 +6950,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true - }, "node_modules/abbrev": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", @@ -7082,16 +6995,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -7514,6 +7417,12 @@ "proxy-from-env": "^1.1.0" } }, + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", + "dev": true + }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -7733,6 +7642,13 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/bare-events": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", + "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", + "dev": true, + "optional": true + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -8068,16 +7984,25 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, + "node_modules/browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==", + "dev": true, + "dependencies": { + "pako": "~0.2.0" + } + }, "node_modules/browserslist": { "version": "4.23.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", @@ -9053,30 +8978,6 @@ "node": ">=4" } }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, "node_modules/dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -9097,20 +8998,6 @@ "node": ">=0.10" } }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/data-view-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", @@ -9223,12 +9110,6 @@ "node": ">=0.10.0" } }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, "node_modules/decompress-response": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", @@ -9514,19 +9395,6 @@ "node": ">=6.0.0" } }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", @@ -9563,15 +9431,51 @@ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, "node_modules/duplexify": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", - "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dev": true, "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/duplexify/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexify/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/duplexify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" } }, "node_modules/eastasianwidth": { @@ -9696,18 +9600,6 @@ "node": ">=8.6" } }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/env-cmd": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/env-cmd/-/env-cmd-10.1.0.tgz", @@ -9899,9 +9791,9 @@ } }, "node_modules/esbuild": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.5.tgz", - "integrity": "sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, "bin": { @@ -9911,28 +9803,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.19.5", - "@esbuild/android-arm64": "0.19.5", - "@esbuild/android-x64": "0.19.5", - "@esbuild/darwin-arm64": "0.19.5", - "@esbuild/darwin-x64": "0.19.5", - "@esbuild/freebsd-arm64": "0.19.5", - "@esbuild/freebsd-x64": "0.19.5", - "@esbuild/linux-arm": "0.19.5", - "@esbuild/linux-arm64": "0.19.5", - "@esbuild/linux-ia32": "0.19.5", - "@esbuild/linux-loong64": "0.19.5", - "@esbuild/linux-mips64el": "0.19.5", - "@esbuild/linux-ppc64": "0.19.5", - "@esbuild/linux-riscv64": "0.19.5", - "@esbuild/linux-s390x": "0.19.5", - "@esbuild/linux-x64": "0.19.5", - "@esbuild/netbsd-x64": "0.19.5", - "@esbuild/openbsd-x64": "0.19.5", - "@esbuild/sunos-x64": "0.19.5", - "@esbuild/win32-arm64": "0.19.5", - "@esbuild/win32-ia32": "0.19.5", - "@esbuild/win32-x64": "0.19.5" + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, "node_modules/escalade": { @@ -9961,37 +9854,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint": { "version": "8.57.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", @@ -10076,9 +9938,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -10259,19 +10121,20 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "26.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.9.0.tgz", - "integrity": "sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng==", + "version": "28.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.6.0.tgz", + "integrity": "sha512-YG28E1/MIKwnz+e2H7VwYPzHUYU4aMa19w0yGcwXnnmJH6EfgHahTJ2un3IyraUxNfnz/KUhJAFXNNwWPo12tg==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "^5.10.0" + "@typescript-eslint/utils": "^6.0.0 || ^7.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^16.10.0 || ^18.12.0 || >=20.0.0" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0", + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", + "jest": "*" }, "peerDependenciesMeta": { "@typescript-eslint/eslint-plugin": { @@ -10282,128 +10145,6 @@ } } }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-jest/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-jest/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-plugin-jest/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/eslint-plugin-node": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", @@ -10860,6 +10601,12 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, "node_modules/fast-glob": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", @@ -11036,9 +10783,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -11832,6 +11579,23 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "node_modules/gunzip-maybe": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz", + "integrity": "sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==", + "dev": true, + "dependencies": { + "browserify-zlib": "^0.1.4", + "is-deflate": "^1.0.0", + "is-gzip": "^1.0.0", + "peek-stream": "^1.1.0", + "pumpify": "^1.3.3", + "through2": "^2.0.3" + }, + "bin": { + "gunzip-maybe": "bin.js" + } + }, "node_modules/handlebars": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", @@ -12542,6 +12306,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-deflate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz", + "integrity": "sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==", + "dev": true + }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -12592,6 +12362,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-gzip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", + "integrity": "sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -12680,12 +12459,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, "node_modules/is-promise": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", @@ -12996,15 +12769,15 @@ } }, "node_modules/jest": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.4.3.tgz", - "integrity": "sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "dependencies": { - "@jest/core": "^29.4.3", - "@jest/types": "^29.4.3", + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", "import-local": "^3.0.2", - "jest-cli": "^29.4.3" + "jest-cli": "^29.7.0" }, "bin": { "jest": "bin/jest.js" @@ -13092,21 +12865,6 @@ } } }, - "node_modules/jest-circus/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-circus/node_modules/jest-matcher-utils": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", @@ -13273,14 +13031,38 @@ } }, "node_modules/jest-diff": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.4.3.tgz", - "integrity": "sha512-YB+ocenx7FZ3T5O9lMVMeLYV4265socJKtkwgk/6YUz/VsEzYDkiMuMhWzZmxm3wDRQvayJu/PjkjjSkjoHsCA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.4.3" + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -13340,33 +13122,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-jsdom": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.4.3.tgz", - "integrity": "sha512-rFjf8JXrw3OjUzzmSE5l0XjMj0/MSVEUMCSXBGPDkfwb1T03HZI7iJSL0cGctZApPSyJxbjyKDVxkZuyhHkuTw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.4.3", - "@jest/fake-timers": "^29.4.3", - "@jest/types": "^29.4.3", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.4.3", - "jest-util": "^29.4.3", - "jsdom": "^20.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, "node_modules/jest-environment-node": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", @@ -13765,21 +13520,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", @@ -13963,51 +13703,6 @@ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" }, - "node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -15873,21 +15568,15 @@ "dev": true, "engines": { "node": ">=0.10.0" - } - }, - "node_modules/nwsapi": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz", - "integrity": "sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==", - "dev": true + } }, "node_modules/nx": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/nx/-/nx-19.2.1.tgz", - "integrity": "sha512-AtfcCiCFCoCzpEjNItZfseCxiSNOlyxDb1nLVN5jSoy+uTcPCtjetf3Ac0+WFEaMDBL7AjyZVwJNvWrlKK2LZQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/nx/-/nx-19.3.0.tgz", + "integrity": "sha512-WILWiROUkZWwuPJ12tP24Z0NULPEhxFN9i55/fECuVXYaFtkg6FvEne9C4d4bRqhZPcbrz6WhHnzE3NhdjH7XQ==", "hasInstallScript": true, "dependencies": { - "@nrwl/tao": "19.2.1", + "@nrwl/tao": "19.3.0", "@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/parsers": "3.0.0-rc.46", "@zkochan/js-yaml": "0.0.7", @@ -15927,16 +15616,16 @@ "nx-cloud": "bin/nx-cloud.js" }, "optionalDependencies": { - "@nx/nx-darwin-arm64": "19.2.1", - "@nx/nx-darwin-x64": "19.2.1", - "@nx/nx-freebsd-x64": "19.2.1", - "@nx/nx-linux-arm-gnueabihf": "19.2.1", - "@nx/nx-linux-arm64-gnu": "19.2.1", - "@nx/nx-linux-arm64-musl": "19.2.1", - "@nx/nx-linux-x64-gnu": "19.2.1", - "@nx/nx-linux-x64-musl": "19.2.1", - "@nx/nx-win32-arm64-msvc": "19.2.1", - "@nx/nx-win32-x64-msvc": "19.2.1" + "@nx/nx-darwin-arm64": "19.3.0", + "@nx/nx-darwin-x64": "19.3.0", + "@nx/nx-freebsd-x64": "19.3.0", + "@nx/nx-linux-arm-gnueabihf": "19.3.0", + "@nx/nx-linux-arm64-gnu": "19.3.0", + "@nx/nx-linux-arm64-musl": "19.3.0", + "@nx/nx-linux-x64-gnu": "19.3.0", + "@nx/nx-linux-x64-musl": "19.3.0", + "@nx/nx-win32-arm64-msvc": "19.3.0", + "@nx/nx-win32-x64-msvc": "19.3.0" }, "peerDependencies": { "@swc-node/register": "^1.8.0", @@ -16617,6 +16306,12 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "dev": true + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -16684,18 +16379,6 @@ "parse-path": "^7.0.0" } }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -16784,6 +16467,17 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/peek-stream": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", + "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "duplexify": "^3.5.0", + "through2": "^2.0.3" + } + }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -17252,6 +16946,27 @@ "once": "^1.3.1" } }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -17317,6 +17032,12 @@ } ] }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, "node_modules/quick-format-unescaped": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", @@ -18049,18 +17770,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, "node_modules/secure-compare": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", @@ -18689,6 +18398,20 @@ "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", "dev": true }, + "node_modules/streamx": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz", + "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==", + "dev": true, + "dependencies": { + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -18924,12 +18647,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, "node_modules/tacks": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/tacks/-/tacks-1.2.6.tgz", @@ -18975,23 +18692,19 @@ } }, "node_modules/tacks/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "7.1.1", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", + "minimatch": "^3.0.2", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, "node_modules/tacks/node_modules/is-fullwidth-code-point": { @@ -19006,25 +18719,12 @@ "node": ">=0.10.0" } }, - "node_modules/tacks/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/tacks/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "2.6.2", "dev": true, + "license": "ISC", "dependencies": { - "glob": "^7.1.3" + "glob": "^7.0.5" }, "bin": { "rimraf": "bin.js" @@ -19253,6 +18953,15 @@ "node": "*" } }, + "node_modules/text-decoder": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.0.tgz", + "integrity": "sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4" + } + }, "node_modules/text-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", @@ -19389,38 +19098,14 @@ "dev": true }, "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", "dev": true, - "dependencies": { - "nopt": "~1.0.10" - }, "bin": { "nodetouch": "bin/nodetouch.js" } }, - "node_modules/touch/node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/touch/node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, "node_modules/tough-cookie": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", @@ -19445,18 +19130,6 @@ "node": ">= 4.0.0" } }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/treeverse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-3.0.0.tgz", @@ -19510,9 +19183,9 @@ } }, "node_modules/ts-jest": { - "version": "29.1.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", - "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", + "version": "29.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.5.tgz", + "integrity": "sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -19521,17 +19194,18 @@ "json5": "^2.2.3", "lodash.memoize": "4.x", "make-error": "1.x", - "semver": "7.x", + "semver": "^7.5.3", "yargs-parser": "^21.0.1" }, "bin": { "ts-jest": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", "@jest/types": "^29.0.0", "babel-jest": "^29.0.0", "jest": "^29.0.0", @@ -19541,6 +19215,9 @@ "@babel/core": { "optional": true }, + "@jest/transform": { + "optional": true + }, "@jest/types": { "optional": true }, @@ -19552,10 +19229,22 @@ } } }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -19621,27 +19310,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/tuf-js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", @@ -19928,15 +19596,15 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=12.20" + "node": ">=14.17" } }, "node_modules/uglify-js": { @@ -20234,25 +19902,25 @@ } }, "node_modules/verdaccio": { - "version": "5.31.0", - "resolved": "https://registry.npmjs.org/verdaccio/-/verdaccio-5.31.0.tgz", - "integrity": "sha512-jqBUlvFVArgv5AwtrwUQHDEI9rJHbr8YhA+Wzl56hBZ3Egso9dG9XUiDV+Pbl0yjf7CFghKKuWtQ2Bo6neZXqw==", + "version": "5.31.1", + "resolved": "https://registry.npmjs.org/verdaccio/-/verdaccio-5.31.1.tgz", + "integrity": "sha512-EbHcCjkadt+qnbchx+06FcgKkpU2wonqkymB1BEt+0p4fNOxeXR8IDCQbwlLpzurc4n9yt9197JCVTJFWa1ESw==", "dev": true, "dependencies": { "@cypress/request": "3.0.1", - "@verdaccio/auth": "7.0.0-next-7.15", - "@verdaccio/config": "7.0.0-next-7.15", - "@verdaccio/core": "7.0.0-next-7.15", + "@verdaccio/auth": "7.0.0-next-7.16", + "@verdaccio/config": "7.0.0-next-7.16", + "@verdaccio/core": "7.0.0-next-7.16", "@verdaccio/local-storage-legacy": "11.0.2", - "@verdaccio/logger-7": "7.0.0-next-7.15", - "@verdaccio/middleware": "7.0.0-next-7.15", + "@verdaccio/logger-7": "7.0.0-next-7.16", + "@verdaccio/middleware": "7.0.0-next-7.16", "@verdaccio/search-indexer": "7.0.0-next-7.2", "@verdaccio/signature": "7.0.0-next-7.5", "@verdaccio/streams": "10.2.1", - "@verdaccio/tarball": "12.0.0-next-7.15", - "@verdaccio/ui-theme": "7.0.0-next-7.15", - "@verdaccio/url": "12.0.0-next-7.15", - "@verdaccio/utils": "7.0.0-next-7.15", + "@verdaccio/tarball": "12.0.0-next-7.16", + "@verdaccio/ui-theme": "7.0.0-next-7.16", + "@verdaccio/url": "12.0.0-next-7.16", + "@verdaccio/utils": "7.0.0-next-7.16", "async": "3.2.5", "clipanion": "3.2.1", "compression": "1.7.4", @@ -20275,14 +19943,14 @@ "pkginfo": "0.4.1", "semver": "7.6.2", "validator": "13.12.0", - "verdaccio-audit": "12.0.0-next-7.15", - "verdaccio-htpasswd": "12.0.0-next-7.15" + "verdaccio-audit": "12.0.0-next-7.16", + "verdaccio-htpasswd": "12.0.0-next-7.16" }, "bin": { "verdaccio": "bin/verdaccio" }, "engines": { - "node": ">=12.18" + "node": ">=14" }, "funding": { "type": "opencollective", @@ -20290,14 +19958,14 @@ } }, "node_modules/verdaccio-audit": { - "version": "12.0.0-next-7.15", - "resolved": "https://registry.npmjs.org/verdaccio-audit/-/verdaccio-audit-12.0.0-next-7.15.tgz", - "integrity": "sha512-ylUxj3VZljYyCpAUFa3THFb29UyHCVv8qgte0LI/20+5EptcZuayHtVP5sd5mnMiMqCO4TUylm30EdXSIvqk4A==", + "version": "12.0.0-next-7.16", + "resolved": "https://registry.npmjs.org/verdaccio-audit/-/verdaccio-audit-12.0.0-next-7.16.tgz", + "integrity": "sha512-iljdkRF7OWchLYXEunvKV54YrcyOvzoIHCSoPXtUlK5pd/tVE3PU9v+lXxyrd3dmnUkPl2EkddK04Zb/I0XvxQ==", "dev": true, "dependencies": { - "@verdaccio/config": "7.0.0-next-7.15", - "@verdaccio/core": "7.0.0-next-7.15", - "express": "4.18.3", + "@verdaccio/config": "7.0.0-next-7.16", + "@verdaccio/core": "7.0.0-next-7.16", + "express": "4.19.2", "https-proxy-agent": "5.0.1", "node-fetch": "cjs" }, @@ -20309,94 +19977,13 @@ "url": "https://opencollective.com/verdaccio" } }, - "node_modules/verdaccio-audit/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/verdaccio-audit/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/verdaccio-audit/node_modules/express": { - "version": "4.18.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.3.tgz", - "integrity": "sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/verdaccio-audit/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/verdaccio-audit/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/verdaccio-htpasswd": { - "version": "12.0.0-next-7.15", - "resolved": "https://registry.npmjs.org/verdaccio-htpasswd/-/verdaccio-htpasswd-12.0.0-next-7.15.tgz", - "integrity": "sha512-m8yXFdYi8FQfP9VeZA3Rdecgkn3QWeeMVEV7bA49w0rpC2DBgOfUcKGNMfZZL4C4gv8M3spCZgJH2adKEFbfbw==", + "version": "12.0.0-next-7.16", + "resolved": "https://registry.npmjs.org/verdaccio-htpasswd/-/verdaccio-htpasswd-12.0.0-next-7.16.tgz", + "integrity": "sha512-Pad9fRLG5IYvhfrynS2eDTHuFLpRUobo610TM/osw5vKhTzgUTHlau2u7xsDG6vTZtyHv5TzBzQUhTg+CUKO4g==", "dev": true, "dependencies": { - "@verdaccio/core": "7.0.0-next-7.15", + "@verdaccio/core": "7.0.0-next-7.16", "@verdaccio/file-locking": "12.0.0-next.1", "apache-md5": "1.1.8", "bcryptjs": "2.4.3", @@ -20509,18 +20096,6 @@ "extsprintf": "^1.2.0" } }, - "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, "node_modules/walk-up-path": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz", @@ -20543,15 +20118,6 @@ "defaults": "^1.0.3" } }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/whatwg-encoding": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", @@ -20576,28 +20142,6 @@ "node": ">=0.10.0" } }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/which": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", @@ -20839,42 +20383,6 @@ "node": ">=6" } }, - "node_modules/ws": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", - "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index baebe22e73..4eda182d47 100644 --- a/package.json +++ b/package.json @@ -34,78 +34,75 @@ "license": "MIT", "homepage": "https://lerna.js.org", "devDependencies": { - "@nx/esbuild": "19.2.1", - "@nx/eslint": "19.2.1", - "@nx/eslint-plugin": "19.2.1", - "@nx/jest": "19.2.1", - "@nx/js": "19.2.1", - "@nx/plugin": "19.2.1", - "@nx/web": "19.2.1", + "@nx/esbuild": "19.3.0", + "@nx/eslint": "19.3.0", + "@nx/eslint-plugin": "19.3.0", + "@nx/jest": "19.3.0", + "@nx/js": "19.3.0", + "@nx/plugin": "19.3.0", + "@nx/web": "19.3.0", "@swc-node/register": "1.9.1", "@swc/cli": "0.3.12", "@swc/core": "1.5.7", - "@types/byte-size": "^8.1.0", - "@types/clone-deep": "^4.0.1", - "@types/cmd-shim": "^5.0.0", - "@types/columnify": "^1.5.1", + "@types/byte-size": "^8.1.2", + "@types/clone-deep": "^4.0.4", + "@types/cmd-shim": "^5.0.2", + "@types/columnify": "^1.5.4", "@types/conventional-recommended-bump": "^6.1.0", - "@types/dedent": "^0.7.0", - "@types/envinfo": "^7.8.1", + "@types/dedent": "^0.7.2", + "@types/envinfo": "^7.8.4", "@types/fs-extra": "^9.0.13", - "@types/git-url-parse": "^9.0.1", - "@types/glob-parent": "^5.1.1", + "@types/git-url-parse": "^9.0.3", + "@types/glob-parent": "^5.1.3", "@types/inquirer": "^8.2.5", - "@types/is-ci": "3.0.0", - "@types/jest": "29.4.0", - "@types/js-yaml": "^4.0.5", + "@types/is-ci": "^3.0.4", + "@types/jest": "29.5.12", + "@types/js-yaml": "^4.0.9", "@types/libnpmpublish": "^4.0.3", - "@types/lodash": "^4.14.191", + "@types/lodash": "^4.17.5", "@types/node": "18.19.10", - "@types/node-fetch": "^2.6.2", - "@types/normalize-path": "^3.0.0", - "@types/npm-package-arg": "^6.1.1", - "@types/npm-packlist": "^7.0.0", - "@types/npm-registry-fetch": "^8.0.4", + "@types/node-fetch": "^2.6.11", + "@types/normalize-path": "^3.0.2", + "@types/npm-package-arg": "^6.1.4", + "@types/npm-packlist": "^7.0.3", + "@types/npm-registry-fetch": "^8.0.7", "@types/npmlog": "^7.0.0", - "@types/pify": "^5.0.1", - "@types/signal-exit": "^3.0.1", - "@types/ssri": "^7.1.1", - "@types/strong-log-transformer": "^1.0.0", - "@types/tar": "^6.1.3", + "@types/pify": "^5.0.4", + "@types/semver": "^7.5.8", + "@types/signal-exit": "^3.0.4", + "@types/ssri": "^7.1.5", + "@types/strong-log-transformer": "^1.0.2", + "@types/tar": "^6.1.13", "@types/temp-dir": "^1.0.0", - "@types/tmp": "^0.2.3", + "@types/tmp": "^0.2.6", "@types/uuid": "^8.3.4", - "@types/write-file-atomic": "^4.0.0", - "@typescript-eslint/eslint-plugin": "7.8.0", - "@typescript-eslint/parser": "7.8.0", + "@types/write-file-atomic": "^4.0.3", + "@typescript-eslint/eslint-plugin": "7.13.1", + "@typescript-eslint/parser": "7.13.1", "env-cmd": "^10.1.0", - "esbuild": "0.19.5", + "esbuild": "0.21.5", "eslint": "8.57.0", "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-prettier": "9.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^26.5.3", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jest": "^28.6.0", "eslint-plugin-node": "^11.1.0", - "expect": "29.4.3", - "jest": "29.4.3", - "jest-diff": "29.4.3", - "jest-environment-jsdom": "29.4.3", - "jest-matcher-utils": "29.4.3", + "jest": "29.7.0", + "jest-diff": "29.7.0", "js-yaml": "^4.1.0", - "jsonc-eslint-parser": "^2.1.0", + "jsonc-eslint-parser": "^2.4.0", "lerna": "file:packages/lerna", "lodash": "^4.17.21", "normalize-newline": "^3.0.0", "normalize-path": "^3.0.0", - "nx": "19.2.1", + "nx": "19.3.0", "prettier": "^2.2.1", - "resolve.exports": "2.0.0", "tacks": "1.2.6", - "tmp": "^0.2.1", - "touch": "^3.1.0", - "ts-jest": "29.1.0", - "ts-node": "10.9.1", - "typescript": "5.0.4", - "verdaccio": "^5.29.0" + "tmp": "^0.2.3", + "touch": "^3.1.1", + "ts-jest": "29.1.5", + "ts-node": "10.9.2", + "typescript": "5.4.5", + "verdaccio": "^5.31.1" } } From bd1c2d8a267af47b409e2933fde2186dd73f4772 Mon Sep 17 00:00:00 2001 From: James Henry Date: Mon, 24 Jun 2024 18:39:24 +0400 Subject: [PATCH 07/11] fix: update npm utility dependencies and related packages (#4033) --- .eslintrc.json | 7 + .../src/from-git-recover-from-error.spec.ts | 2 +- jest.preset.js | 2 +- libs/commands/add/src/index.ts | 2 +- libs/commands/add/src/lib/add-command.spec.ts | 4 +- .../add/src/lib/get-range-to-reference.ts | 5 +- .../src/lib/has-dependency-installed.ts | 2 +- libs/commands/create/src/index.ts | 9 +- libs/commands/create/src/lib/cat-file.ts | 2 +- libs/commands/diff/src/lib/get-last-commit.ts | 3 +- libs/commands/diff/src/lib/has-commit.ts | 3 +- libs/commands/init/src/index.ts | 2 +- libs/commands/publish/src/command.ts | 2 +- libs/commands/publish/src/index.ts | 1 + libs/commands/publish/src/lib/fetch-config.ts | 2 +- .../publish/src/lib/get-current-sha.ts | 2 +- .../publish/src/lib/get-current-tags.ts | 2 +- .../publish/src/lib/get-profile-data.ts | 2 +- .../lib/get-projects-with-tagged-packages.ts | 3 +- .../get-projects-with-unpublished-packages.ts | 4 +- libs/commands/publish/src/lib/get-whoami.ts | 2 +- libs/commands/version/src/command.ts | 2 +- .../version/src/lib/get-current-branch.ts | 2 +- libs/commands/version/src/lib/git-add.ts | 2 +- .../version/src/lib/git-commit.spec.ts | 1 + libs/commands/version/src/lib/git-commit.ts | 3 +- libs/commands/version/src/lib/git-push.ts | 2 +- libs/commands/version/src/lib/git-tag.ts | 2 +- .../version/src/lib/is-anything-committed.ts | 2 +- .../version/src/lib/is-behind-upstream.ts | 2 +- .../version/src/lib/remote-branch-exists.ts | 2 +- .../src/lib/update-lockfile-version.ts | 3 +- libs/core/src/index.ts | 1 + libs/core/src/lib/cli.ts | 4 +- libs/core/src/lib/collect-uncommitted.ts | 3 +- .../collect-project-updates.ts | 2 +- libs/core/src/lib/collect-updates/has-tags.ts | 2 +- .../collect-updates/make-diff-predicate.ts | 2 +- libs/core/src/lib/command/index.spec.ts | 2 +- libs/core/src/lib/command/index.ts | 8 +- .../core/src/lib/command/log-package-error.ts | 2 +- libs/core/src/lib/command/warn-if-hanging.ts | 2 +- .../get-changelog-config.ts | 2 +- .../conventional-commits/recommend-version.ts | 2 +- .../conventional-commits/update-changelog.ts | 4 +- libs/core/src/lib/cycles/report-cycles.ts | 2 +- libs/core/src/lib/describe-ref.ts | 2 +- libs/core/src/lib/filter-options.ts | 2 +- libs/core/src/lib/filter-projects.ts | 2 +- libs/core/src/lib/get-npm-exec-opts.ts | 2 +- libs/core/src/lib/git-checkout.ts | 2 +- libs/core/src/lib/log-packed.ts | 2 +- libs/core/src/lib/map-to-registry.ts | 2 +- libs/core/src/lib/npm-dist-tag.ts | 6 +- libs/core/src/lib/npm-install.spec.ts | 3 + libs/core/src/lib/npm-install.ts | 2 +- libs/core/src/lib/npm-publish.spec.ts | 47 +- libs/core/src/lib/npm-publish.ts | 88 +- libs/core/src/lib/npm-run-script.ts | 2 +- libs/core/src/lib/npmlog/README.md | 3 + .../are-we-there-yet/tests/test-event.ts | 34 + .../tests/tracker-group.spec.ts | 168 ++ .../tests/tracker-stream.spec.ts | 54 + .../are-we-there-yet/tests/tracker.spec.ts | 62 + .../npmlog/are-we-there-yet/tracker-base.ts | 14 + .../npmlog/are-we-there-yet/tracker-group.ts | 113 + .../npmlog/are-we-there-yet/tracker-stream.ts | 43 + .../lib/npmlog/are-we-there-yet/tracker.ts | 34 + libs/core/src/lib/npmlog/gauge/base-theme.ts | 25 + libs/core/src/lib/npmlog/gauge/error.ts | 31 + libs/core/src/lib/npmlog/gauge/has-color.ts | 11 + libs/core/src/lib/npmlog/gauge/index.ts | 337 +++ libs/core/src/lib/npmlog/gauge/plumbing.ts | 60 + libs/core/src/lib/npmlog/gauge/process.ts | 10 + .../core/src/lib/npmlog/gauge/progress-bar.ts | 48 + .../src/lib/npmlog/gauge/render-template.ts | 229 ++ .../src/lib/npmlog/gauge/set-immediate.ts | 14 + .../core/src/lib/npmlog/gauge/set-interval.ts | 10 + libs/core/src/lib/npmlog/gauge/spin.ts | 12 + .../src/lib/npmlog/gauge/template-item.ts | 89 + .../lib/npmlog/gauge/tests/base-theme.spec.ts | 28 + .../src/lib/npmlog/gauge/tests/error.spec.ts | 39 + .../src/lib/npmlog/gauge/tests/index.spec.ts | 234 ++ .../lib/npmlog/gauge/tests/plumbing.spec.ts | 72 + .../npmlog/gauge/tests/progress-bar.spec.ts | 57 + .../gauge/tests/render-template.spec.ts | 87 + .../src/lib/npmlog/gauge/tests/spin.spec.ts | 19 + .../npmlog/gauge/tests/template-item.spec.ts | 96 + .../lib/npmlog/gauge/tests/theme-set.spec.ts | 92 + .../src/lib/npmlog/gauge/tests/themes.spec.ts | 24 + .../npmlog/gauge/tests/wide-truncate.spec.ts | 66 + libs/core/src/lib/npmlog/gauge/theme-set.ts | 138 + libs/core/src/lib/npmlog/gauge/themes.ts | 63 + .../src/lib/npmlog/gauge/wide-truncate.ts | 38 + libs/core/src/lib/npmlog/index.ts | 402 +++ libs/core/src/lib/npmlog/tests/basic.spec.ts | 554 ++++ .../core/src/lib/npmlog/tests/display.spec.ts | 36 + .../src/lib/npmlog/tests/progress.spec.ts | 298 ++ libs/core/src/lib/output.ts | 2 +- libs/core/src/lib/pack-directory.spec.ts | 33 +- libs/core/src/lib/pack-directory.ts | 108 +- libs/core/src/lib/profiler.ts | 4 +- libs/core/src/lib/project/index.ts | 2 +- libs/core/src/lib/prompt.ts | 2 +- libs/core/src/lib/pulse-till-done.ts | 4 +- libs/core/src/lib/rimraf-dir.ts | 2 +- libs/core/src/lib/run-lifecycle.ts | 2 +- .../github/create-github-client.ts | 2 +- .../gitlab/create-gitlab-client.ts | 2 +- .../lib/scm-clients/gitlab/gitlab-client.ts | 2 +- libs/core/src/lib/validation-error.ts | 2 +- libs/core/src/lib/write-log-file.ts | 6 +- .../src/lib/collect-updates/has-tags.ts | 2 +- .../src/lib/collect-updates/index.ts | 3 +- .../collect-updates/make-diff-predicate.ts | 2 +- .../legacy-core/src/lib/command/index.spec.ts | 2 +- libs/legacy-core/src/lib/command/index.ts | 5 +- .../src/lib/command/log-package-error.ts | 2 +- .../src/lib/command/warn-if-hanging.ts | 2 +- .../src/lib/create-symlink.spec.ts | 6 + libs/legacy-core/src/lib/create-symlink.ts | 2 +- libs/legacy-core/src/lib/filter-packages.ts | 3 +- .../src/lib/get-filtered-packages.ts | 3 +- .../src/lib/package-graph/report-cycles.ts | 3 +- libs/legacy-core/src/lib/resolve-symlink.ts | 2 +- libs/legacy-core/src/lib/write-log-file.ts | 6 +- libs/test-helpers/src/lib/logging-output.ts | 2 +- libs/test-helpers/src/lib/silence-logging.js | 4 +- package-lock.json | 2527 ++++------------- package.json | 8 +- .../legacy-package-management/package.json | 36 +- .../create/__tests__/create-command.spec.ts | 2 - .../commands/create/package.json | 39 +- packages/lerna/package.json | 43 +- packages/lerna/src/cli.js | 39 +- .../lerna/src/commands/add-caching/index.ts | 2 +- packages/lerna/src/commands/repair/index.ts | 3 +- packages/lerna/src/index.ts | 3 +- 138 files changed, 4640 insertions(+), 2314 deletions(-) create mode 100644 libs/core/src/lib/npmlog/README.md create mode 100644 libs/core/src/lib/npmlog/are-we-there-yet/tests/test-event.ts create mode 100644 libs/core/src/lib/npmlog/are-we-there-yet/tests/tracker-group.spec.ts create mode 100644 libs/core/src/lib/npmlog/are-we-there-yet/tests/tracker-stream.spec.ts create mode 100644 libs/core/src/lib/npmlog/are-we-there-yet/tests/tracker.spec.ts create mode 100644 libs/core/src/lib/npmlog/are-we-there-yet/tracker-base.ts create mode 100644 libs/core/src/lib/npmlog/are-we-there-yet/tracker-group.ts create mode 100644 libs/core/src/lib/npmlog/are-we-there-yet/tracker-stream.ts create mode 100644 libs/core/src/lib/npmlog/are-we-there-yet/tracker.ts create mode 100644 libs/core/src/lib/npmlog/gauge/base-theme.ts create mode 100644 libs/core/src/lib/npmlog/gauge/error.ts create mode 100644 libs/core/src/lib/npmlog/gauge/has-color.ts create mode 100644 libs/core/src/lib/npmlog/gauge/index.ts create mode 100644 libs/core/src/lib/npmlog/gauge/plumbing.ts create mode 100644 libs/core/src/lib/npmlog/gauge/process.ts create mode 100644 libs/core/src/lib/npmlog/gauge/progress-bar.ts create mode 100644 libs/core/src/lib/npmlog/gauge/render-template.ts create mode 100644 libs/core/src/lib/npmlog/gauge/set-immediate.ts create mode 100644 libs/core/src/lib/npmlog/gauge/set-interval.ts create mode 100644 libs/core/src/lib/npmlog/gauge/spin.ts create mode 100644 libs/core/src/lib/npmlog/gauge/template-item.ts create mode 100644 libs/core/src/lib/npmlog/gauge/tests/base-theme.spec.ts create mode 100644 libs/core/src/lib/npmlog/gauge/tests/error.spec.ts create mode 100644 libs/core/src/lib/npmlog/gauge/tests/index.spec.ts create mode 100644 libs/core/src/lib/npmlog/gauge/tests/plumbing.spec.ts create mode 100644 libs/core/src/lib/npmlog/gauge/tests/progress-bar.spec.ts create mode 100644 libs/core/src/lib/npmlog/gauge/tests/render-template.spec.ts create mode 100644 libs/core/src/lib/npmlog/gauge/tests/spin.spec.ts create mode 100644 libs/core/src/lib/npmlog/gauge/tests/template-item.spec.ts create mode 100644 libs/core/src/lib/npmlog/gauge/tests/theme-set.spec.ts create mode 100644 libs/core/src/lib/npmlog/gauge/tests/themes.spec.ts create mode 100644 libs/core/src/lib/npmlog/gauge/tests/wide-truncate.spec.ts create mode 100644 libs/core/src/lib/npmlog/gauge/theme-set.ts create mode 100644 libs/core/src/lib/npmlog/gauge/themes.ts create mode 100644 libs/core/src/lib/npmlog/gauge/wide-truncate.ts create mode 100644 libs/core/src/lib/npmlog/index.ts create mode 100644 libs/core/src/lib/npmlog/tests/basic.spec.ts create mode 100644 libs/core/src/lib/npmlog/tests/display.spec.ts create mode 100644 libs/core/src/lib/npmlog/tests/progress.spec.ts diff --git a/.eslintrc.json b/.eslintrc.json index 29c3202e0d..61e6fda42d 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -26,6 +26,13 @@ ], "checkDynamicDependenciesExceptions": [".*"] } + ], + "no-restricted-imports": [ + "error", + { + "name": "npmlog", + "message": "Please use the inlined core utility instead." + } ] } }, diff --git a/e2e/publish/src/from-git-recover-from-error.spec.ts b/e2e/publish/src/from-git-recover-from-error.spec.ts index 68609d0463..34371f0700 100644 --- a/e2e/publish/src/from-git-recover-from-error.spec.ts +++ b/e2e/publish/src/from-git-recover-from-error.spec.ts @@ -79,6 +79,7 @@ describe("lerna-publish-from-git-recover-from-error", () => { lerna WARN ENOLICENSE Packages test-1 and test-2 are missing a license. lerna WARN ENOLICENSE One way to fix this is to add a LICENSE.md file to the root of this repository. lerna WARN ENOLICENSE See https://choosealicense.com for additional guidance. + lerna WARN publish Package is already published: test-1@XX.XX.XX lerna success published test-2 XX.XX.XX lerna notice lerna notice 📦 test-2@XX.XX.XX @@ -96,7 +97,6 @@ describe("lerna-publish-from-git-recover-from-error", () => { lerna notice integrity: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX lerna notice total files: 3 lerna notice - lerna WARN publish Package is already published: test-1@XX.XX.XX Successfully published: - test-2@XX.XX.XX lerna success published 1 package diff --git a/jest.preset.js b/jest.preset.js index 5bff3dca04..9dc3deb3e2 100644 --- a/jest.preset.js +++ b/jest.preset.js @@ -4,7 +4,7 @@ const nxPreset = require("@nx/jest/preset").default; module.exports = { ...nxPreset, clearMocks: true, - modulePathIgnorePatterns: ["/__fixtures__/"], + modulePathIgnorePatterns: ["/__fixtures__/", "/dist/"], testEnvironment: "node", /* TODO: Update to latest Jest snapshotFormat * By default Nx has kept the older style of Jest Snapshot formats diff --git a/libs/commands/add/src/index.ts b/libs/commands/add/src/index.ts index 11f487b833..51490ecef3 100644 --- a/libs/commands/add/src/index.ts +++ b/libs/commands/add/src/index.ts @@ -226,7 +226,7 @@ class AddCommand extends Command { Array.from(node.localDependencies.values()).some((resolved) => resolved.type === "directory") ); - if (fetchSpec === "latest") { + if (fetchSpec === "latest" || fetchSpec === "*") { return true; } diff --git a/libs/commands/add/src/lib/add-command.spec.ts b/libs/commands/add/src/lib/add-command.spec.ts index d7739fc9c3..d951483d84 100644 --- a/libs/commands/add/src/lib/add-command.spec.ts +++ b/libs/commands/add/src/lib/add-command.spec.ts @@ -84,9 +84,9 @@ describe("AddCommand", () => { expect.objectContaining({ // an npm-package-arg Result name: "tiny-tarball", - fetchSpec: "latest", + fetchSpec: "*", registry: true, - type: "tag", + type: "range", }), expect.objectContaining({ // an npm-conf snapshot diff --git a/libs/commands/add/src/lib/get-range-to-reference.ts b/libs/commands/add/src/lib/get-range-to-reference.ts index c74807998f..9f68f27229 100644 --- a/libs/commands/add/src/lib/get-range-to-reference.ts +++ b/libs/commands/add/src/lib/get-range-to-reference.ts @@ -15,7 +15,10 @@ module.exports.getRangeToReference = getRangeToReference; */ function getRangeToReference(spec, deps, loc, prefix) { const current = deps[spec.name]; - const resolved = spec.type === "tag" ? `${prefix}${spec.version}` : spec.fetchSpec; + const resolved = + spec.type === "tag" || (spec.type === "range" && spec.fetchSpec === "*") + ? `${prefix}${spec.version}` + : spec.fetchSpec; if (spec.saveRelativeFileSpec) { // "version" has been resolved to pkg.location in getPackageVersion() diff --git a/libs/commands/bootstrap/src/lib/has-dependency-installed.ts b/libs/commands/bootstrap/src/lib/has-dependency-installed.ts index 82375ef97e..6489fd0127 100644 --- a/libs/commands/bootstrap/src/lib/has-dependency-installed.ts +++ b/libs/commands/bootstrap/src/lib/has-dependency-installed.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import { log } from "@lerna/core"; import Arborist from "@npmcli/arborist"; import semver from "semver"; diff --git a/libs/commands/create/src/index.ts b/libs/commands/create/src/index.ts index 6594d5723b..cefec90946 100644 --- a/libs/commands/create/src/index.ts +++ b/libs/commands/create/src/index.ts @@ -132,7 +132,6 @@ class CreateCommand extends Command { this.conf.set("silent", true); } - // save read-package-json the trouble if (this.binFileName) { this.conf.set("bin", { [this.binFileName]: `bin/${this.binFileName}`, @@ -274,10 +273,12 @@ class CreateCommand extends Command { return `${savePrefix}${depNode.version}`; } - if (spec.type === "tag" && spec.fetchSpec === "latest") { - // resolve the latest version + if ( + (spec.type === "tag" && spec.fetchSpec === "latest") || + (spec.type === "range" && spec.fetchSpec === "*") + ) { + // resolve the latest version from local external dependency if (exts.has(spec.name)) { - // from local external dependency return exts.get(spec.name); } diff --git a/libs/commands/create/src/lib/cat-file.ts b/libs/commands/create/src/lib/cat-file.ts index 9bfc81357c..f9f2c88aa9 100644 --- a/libs/commands/create/src/lib/cat-file.ts +++ b/libs/commands/create/src/lib/cat-file.ts @@ -9,6 +9,6 @@ module.exports.catFile = catFile; * @param {string} content * @param {string | import('fs-extra').WriteFileOptions} [opts] */ -function catFile(baseDir, fileName, content, opts = "utf8") { +function catFile(baseDir, fileName, content, opts = "utf8" as const) { return fs.writeFile(path.join(baseDir, fileName), `${content}\n`, opts); } diff --git a/libs/commands/diff/src/lib/get-last-commit.ts b/libs/commands/diff/src/lib/get-last-commit.ts index c9c8047175..012662351a 100644 --- a/libs/commands/diff/src/lib/get-last-commit.ts +++ b/libs/commands/diff/src/lib/get-last-commit.ts @@ -1,6 +1,5 @@ -import { ExecOptions } from "@lerna/core"; -import log from "npmlog"; import * as childProcess from "@lerna/child-process"; +import { ExecOptions, log } from "@lerna/core"; /** * diff --git a/libs/commands/diff/src/lib/has-commit.ts b/libs/commands/diff/src/lib/has-commit.ts index 99d6a1d97a..0c1748748b 100644 --- a/libs/commands/diff/src/lib/has-commit.ts +++ b/libs/commands/diff/src/lib/has-commit.ts @@ -1,6 +1,5 @@ -import log from "npmlog"; -import { ExecOptions } from "@lerna/core"; import * as childProcess from "@lerna/child-process"; +import { ExecOptions, log } from "@lerna/core"; /** * * @param opts diff --git a/libs/commands/init/src/index.ts b/libs/commands/init/src/index.ts index 190d6206aa..e18ec8ff51 100644 --- a/libs/commands/init/src/index.ts +++ b/libs/commands/init/src/index.ts @@ -5,6 +5,7 @@ import { LernaConfig, LernaLogger, isGitInitialized, + log, } from "@lerna/core"; import { PackageManager, @@ -16,7 +17,6 @@ import { } from "@nx/devkit"; import { existsSync } from "fs"; import { readFileSync } from "fs-extra"; -import log from "npmlog"; import { FsTree, Tree, flushChanges } from "nx/src/generators/tree"; const LARGE_BUFFER = 1024 * 1000000; diff --git a/libs/commands/publish/src/command.ts b/libs/commands/publish/src/command.ts index 930a76c76b..ad1dca12b6 100644 --- a/libs/commands/publish/src/command.ts +++ b/libs/commands/publish/src/command.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import { log } from "@lerna/core"; import type { CommandModule } from "yargs"; // eslint-disable-next-line @typescript-eslint/no-var-requires diff --git a/libs/commands/publish/src/index.ts b/libs/commands/publish/src/index.ts index 1d26212da4..f6060db307 100644 --- a/libs/commands/publish/src/index.ts +++ b/libs/commands/publish/src/index.ts @@ -993,6 +993,7 @@ class PublishCommand extends Command { }) .catch((err) => { if ( + err.code === "E409" || err.code === "EPUBLISHCONFLICT" || (err.code === "E403" && err.body?.error?.includes("You cannot publish over the previously published versions")) diff --git a/libs/commands/publish/src/lib/fetch-config.ts b/libs/commands/publish/src/lib/fetch-config.ts index 23cac1ce40..d28bc5457e 100644 --- a/libs/commands/publish/src/lib/fetch-config.ts +++ b/libs/commands/publish/src/lib/fetch-config.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import { log } from "@lerna/core"; export interface FetchConfig { [key: string]: unknown; diff --git a/libs/commands/publish/src/lib/get-current-sha.ts b/libs/commands/publish/src/lib/get-current-sha.ts index c83456a0b7..5895b7a35d 100644 --- a/libs/commands/publish/src/lib/get-current-sha.ts +++ b/libs/commands/publish/src/lib/get-current-sha.ts @@ -1,5 +1,5 @@ +import { log } from "@lerna/core"; import { ExecOptions } from "child_process"; -import log from "npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/commands/publish/src/lib/get-current-tags.ts b/libs/commands/publish/src/lib/get-current-tags.ts index ea21c869be..d05dcd9fbb 100644 --- a/libs/commands/publish/src/lib/get-current-tags.ts +++ b/libs/commands/publish/src/lib/get-current-tags.ts @@ -1,6 +1,6 @@ +import { log } from "@lerna/core"; import { ExecOptions } from "child_process"; import npa from "npm-package-arg"; -import log from "npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/commands/publish/src/lib/get-profile-data.ts b/libs/commands/publish/src/lib/get-profile-data.ts index c1f3c37312..07afd39381 100644 --- a/libs/commands/publish/src/lib/get-profile-data.ts +++ b/libs/commands/publish/src/lib/get-profile-data.ts @@ -24,7 +24,7 @@ export interface ProfileData { export function getProfileData(opts: FetchConfig): Promise { opts.log.verbose("", "Retrieving npm user profile"); - return pulseTillDone(fetch.json("/-/npm/v1/user", opts)).then((data) => { + return pulseTillDone(fetch.json("/-/npm/v1/user", opts as any)).then((data) => { opts.log.silly("npm profile get", "received %j", data); return Object.assign( diff --git a/libs/commands/publish/src/lib/get-projects-with-tagged-packages.ts b/libs/commands/publish/src/lib/get-projects-with-tagged-packages.ts index fa0a68e06a..35550f3c48 100644 --- a/libs/commands/publish/src/lib/get-projects-with-tagged-packages.ts +++ b/libs/commands/publish/src/lib/get-projects-with-tagged-packages.ts @@ -1,7 +1,6 @@ -import { ProjectGraphProjectNodeWithPackage } from "@lerna/core"; +import { ProjectGraphProjectNodeWithPackage, log } from "@lerna/core"; import { ProjectFileMap } from "@nx/devkit"; import { ExecOptions } from "child_process"; -import log from "npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/commands/publish/src/lib/get-projects-with-unpublished-packages.ts b/libs/commands/publish/src/lib/get-projects-with-unpublished-packages.ts index b84e6af23b..c8574c4065 100644 --- a/libs/commands/publish/src/lib/get-projects-with-unpublished-packages.ts +++ b/libs/commands/publish/src/lib/get-projects-with-unpublished-packages.ts @@ -1,5 +1,5 @@ import { getPackage, ProjectGraphProjectNodeWithPackage } from "@lerna/core"; -import log from "npmlog"; +import { log } from "@lerna/core"; import pMap from "p-map"; import pacote from "pacote"; import { FetchConfig } from "./fetch-config"; @@ -17,7 +17,7 @@ export async function getProjectsWithUnpublishedPackages( const pkg = getPackage(node); // libnpmpublish / npm-registry-fetch check strictSSL rather than strict-ssl opts["strictSSL"] = opts["strict-ssl"]; - return pacote.packument(pkg.name, opts).then( + return pacote.packument(pkg.name, opts as any).then( (packument) => { if (packument.versions === undefined || packument.versions[pkg.version] === undefined) { return node; diff --git a/libs/commands/publish/src/lib/get-whoami.ts b/libs/commands/publish/src/lib/get-whoami.ts index 991a2fdc89..f851a2c12c 100644 --- a/libs/commands/publish/src/lib/get-whoami.ts +++ b/libs/commands/publish/src/lib/get-whoami.ts @@ -12,7 +12,7 @@ export interface WhoIAm { export function getWhoAmI(opts: FetchConfig): WhoIAm { opts.log.verbose("", "Retrieving npm username"); - return pulseTillDone(fetch.json("/-/whoami", opts)).then((data: WhoIAm) => { + return pulseTillDone(fetch.json("/-/whoami", opts as any)).then((data: WhoIAm) => { opts.log.silly("npm whoami", "received %j", data); return data; diff --git a/libs/commands/version/src/command.ts b/libs/commands/version/src/command.ts index 6b6a55241c..847f425ea8 100644 --- a/libs/commands/version/src/command.ts +++ b/libs/commands/version/src/command.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import { log } from "@lerna/core"; import semver from "semver"; import type { CommandModule } from "yargs"; diff --git a/libs/commands/version/src/lib/get-current-branch.ts b/libs/commands/version/src/lib/get-current-branch.ts index 2544076348..75e626d0df 100644 --- a/libs/commands/version/src/lib/get-current-branch.ts +++ b/libs/commands/version/src/lib/get-current-branch.ts @@ -1,5 +1,5 @@ +import { log } from "@lerna/core"; import { ExecOptions } from "child_process"; -import log from "npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/commands/version/src/lib/git-add.ts b/libs/commands/version/src/lib/git-add.ts index 494931ace8..5cd2ba6455 100644 --- a/libs/commands/version/src/lib/git-add.ts +++ b/libs/commands/version/src/lib/git-add.ts @@ -1,7 +1,7 @@ +import { log } from "@lerna/core"; import { readJsonFile, workspaceRoot } from "@nx/devkit"; import { ExecOptions } from "child_process"; import fs from "fs"; -import log from "npmlog"; import path from "path"; import slash from "slash"; diff --git a/libs/commands/version/src/lib/git-commit.spec.ts b/libs/commands/version/src/lib/git-commit.spec.ts index ac5d3ace08..5d3cfefb5d 100644 --- a/libs/commands/version/src/lib/git-commit.spec.ts +++ b/libs/commands/version/src/lib/git-commit.spec.ts @@ -8,6 +8,7 @@ jest.mock("@lerna/core", () => ({ tempWrite: { sync: jest.fn(), }, + log: jest.requireActual("@lerna/core").log, })); const tempWrite = jest.mocked(_tempWrite); diff --git a/libs/commands/version/src/lib/git-commit.ts b/libs/commands/version/src/lib/git-commit.ts index dddf8d60df..b45d11cdf2 100644 --- a/libs/commands/version/src/lib/git-commit.ts +++ b/libs/commands/version/src/lib/git-commit.ts @@ -1,6 +1,5 @@ -import { tempWrite } from "@lerna/core"; +import { log, tempWrite } from "@lerna/core"; import { ExecOptions } from "child_process"; -import log from "npmlog"; import { EOL } from "os"; // eslint-disable-next-line @typescript-eslint/no-var-requires diff --git a/libs/commands/version/src/lib/git-push.ts b/libs/commands/version/src/lib/git-push.ts index 4702c8fb93..45bdeece67 100644 --- a/libs/commands/version/src/lib/git-push.ts +++ b/libs/commands/version/src/lib/git-push.ts @@ -1,5 +1,5 @@ +import { log } from "@lerna/core"; import { ExecOptions } from "child_process"; -import log from "npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/commands/version/src/lib/git-tag.ts b/libs/commands/version/src/lib/git-tag.ts index 1bee774b59..a709b10287 100644 --- a/libs/commands/version/src/lib/git-tag.ts +++ b/libs/commands/version/src/lib/git-tag.ts @@ -1,5 +1,5 @@ +import { log } from "@lerna/core"; import { ExecOptions } from "child_process"; -import log from "npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/commands/version/src/lib/is-anything-committed.ts b/libs/commands/version/src/lib/is-anything-committed.ts index 864f31a3d3..07cdcd98c5 100644 --- a/libs/commands/version/src/lib/is-anything-committed.ts +++ b/libs/commands/version/src/lib/is-anything-committed.ts @@ -1,5 +1,5 @@ +import { log } from "@lerna/core"; import { ExecOptions } from "child_process"; -import log from "npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/commands/version/src/lib/is-behind-upstream.ts b/libs/commands/version/src/lib/is-behind-upstream.ts index dbb49839ed..b50b2f09e8 100644 --- a/libs/commands/version/src/lib/is-behind-upstream.ts +++ b/libs/commands/version/src/lib/is-behind-upstream.ts @@ -1,5 +1,5 @@ +import { log } from "@lerna/core"; import { ExecOptions } from "child_process"; -import log from "npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/commands/version/src/lib/remote-branch-exists.ts b/libs/commands/version/src/lib/remote-branch-exists.ts index d9bc474c0f..8f2cb948d3 100644 --- a/libs/commands/version/src/lib/remote-branch-exists.ts +++ b/libs/commands/version/src/lib/remote-branch-exists.ts @@ -1,5 +1,5 @@ +import { log } from "@lerna/core"; import { ExecOptions } from "child_process"; -import log from "npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/commands/version/src/lib/update-lockfile-version.ts b/libs/commands/version/src/lib/update-lockfile-version.ts index d09fbb67cc..5507c866d2 100644 --- a/libs/commands/version/src/lib/update-lockfile-version.ts +++ b/libs/commands/version/src/lib/update-lockfile-version.ts @@ -1,7 +1,6 @@ -import { Package } from "@lerna/core"; +import { Package, log } from "@lerna/core"; import { writeJsonFile } from "@nx/devkit"; import loadJsonFile from "load-json-file"; -import log from "npmlog"; import path from "path"; interface Lockfile { diff --git a/libs/core/src/index.ts b/libs/core/src/index.ts index b10fce6fba..0532ef735e 100644 --- a/libs/core/src/index.ts +++ b/libs/core/src/index.ts @@ -51,6 +51,7 @@ export { default as tempWrite } from "./lib/temp-write"; export { timer } from "./lib/timer"; export { toposortProjects } from "./lib/toposort-projects"; export { ValidationError } from "./lib/validation-error"; +export { default as log, Logger } from "./lib/npmlog"; export { npmConf, npmDistTag }; // eslint-disable-next-line @typescript-eslint/no-var-requires diff --git a/libs/core/src/lib/cli.ts b/libs/core/src/lib/cli.ts index ea3cd12fc1..349df09a0a 100644 --- a/libs/core/src/lib/cli.ts +++ b/libs/core/src/lib/cli.ts @@ -1,7 +1,7 @@ import dedent from "dedent"; -import log from "npmlog"; -import os from "os"; +import os from "node:os"; import yargs from "yargs"; +import log from "./npmlog"; /** * A factory that returns a yargs() instance configured with everything except commands. diff --git a/libs/core/src/lib/collect-uncommitted.ts b/libs/core/src/lib/collect-uncommitted.ts index f85fd3e58b..13f4b7675a 100644 --- a/libs/core/src/lib/collect-uncommitted.ts +++ b/libs/core/src/lib/collect-uncommitted.ts @@ -1,5 +1,6 @@ import chalk from "chalk"; -import npmlog from "npmlog"; + +import npmlog from "./npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/core/src/lib/collect-updates/collect-project-updates.ts b/libs/core/src/lib/collect-updates/collect-project-updates.ts index 771b11bf55..10386bb068 100644 --- a/libs/core/src/lib/collect-updates/collect-project-updates.ts +++ b/libs/core/src/lib/collect-updates/collect-project-updates.ts @@ -1,8 +1,8 @@ import { ExecOptions } from "child_process"; import { flatten } from "lodash"; -import log from "npmlog"; import { describeRefSync } from "../describe-ref"; import { getPackagesForOption } from "../get-packages-for-option"; +import log from "../npmlog"; import { prereleaseIdFromVersion } from "../prerelease-id-from-version"; import { getPackage, diff --git a/libs/core/src/lib/collect-updates/has-tags.ts b/libs/core/src/lib/collect-updates/has-tags.ts index 0af308c87f..ac4c965d49 100644 --- a/libs/core/src/lib/collect-updates/has-tags.ts +++ b/libs/core/src/lib/collect-updates/has-tags.ts @@ -1,7 +1,7 @@ // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); import { ExecOptions } from "child_process"; -import log from "npmlog"; +import log from "../npmlog"; /** * Determine if any git tags are reachable. diff --git a/libs/core/src/lib/collect-updates/make-diff-predicate.ts b/libs/core/src/lib/collect-updates/make-diff-predicate.ts index 15df60909f..4a7d7dda6a 100644 --- a/libs/core/src/lib/collect-updates/make-diff-predicate.ts +++ b/libs/core/src/lib/collect-updates/make-diff-predicate.ts @@ -2,9 +2,9 @@ const { execSync } = require("@lerna/child-process"); import { ExecOptions } from "child_process"; import minimatch from "minimatch"; -import log from "npmlog"; import { relative } from "path"; import slash from "slash"; +import log from "../npmlog"; import { getPackage, ProjectGraphProjectNodeWithPackage } from "../project-graph-with-packages"; export function makeDiffPredicate( diff --git a/libs/core/src/lib/command/index.spec.ts b/libs/core/src/lib/command/index.spec.ts index 6e52c42e11..3e921e7f63 100644 --- a/libs/core/src/lib/command/index.spec.ts +++ b/libs/core/src/lib/command/index.spec.ts @@ -1,11 +1,11 @@ // NOTE: This file can't use ESM without breaking the spyOn() os.cpus() call right now. // TODO: refactor the command index.ts to resolve this +import log from "../npmlog"; import { createProjectGraph } from "../test-helpers/create-project-graph"; /* eslint-disable @typescript-eslint/no-var-requires */ const fs = require("fs-extra"); -const log = require("npmlog"); const path = require("path"); const tempy = require("tempy"); diff --git a/libs/core/src/lib/command/index.ts b/libs/core/src/lib/command/index.ts index e60678a2cd..dda851f5d6 100644 --- a/libs/core/src/lib/command/index.ts +++ b/libs/core/src/lib/command/index.ts @@ -1,9 +1,11 @@ import { ProjectFileMap } from "@nx/devkit"; +import { ExecOptions as NodeExecOptions } from "child_process"; import cloneDeep from "clone-deep"; import dedent from "dedent"; -import log from "npmlog"; import { daemonClient } from "nx/src/daemon/client/client"; import os from "os"; +import yargs from "yargs"; +import log, { Logger } from "../npmlog"; import { CommandConfigOptions, Project } from "../project"; import { ProjectGraphWithPackages } from "../project-graph-with-packages"; import { ValidationError } from "../validation-error"; @@ -14,8 +16,6 @@ import { detectProjects } from "./detect-projects"; import { isGitInitialized } from "./is-git-initialized"; import { logPackageError } from "./log-package-error"; import { warnIfHanging } from "./warn-if-hanging"; -import yargs from "yargs"; -import { ExecOptions as NodeExecOptions } from "child_process"; /** * Execa compatible options type @@ -32,7 +32,7 @@ const DEFAULT_CONCURRENCY = os.cpus().length; /** * Specific logger with log-level success enabled in order to use function without index signature */ -export interface LernaLogger extends log.Logger { +export interface LernaLogger extends Logger { /** * Log with level success * @param prefix diff --git a/libs/core/src/lib/command/log-package-error.ts b/libs/core/src/lib/command/log-package-error.ts index cd84d54052..fc9bfcb279 100644 --- a/libs/core/src/lib/command/log-package-error.ts +++ b/libs/core/src/lib/command/log-package-error.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import log from "../npmlog"; // import { ExecaErrorWithLernaPackage } from "../child-process"; export function logPackageError(err: any, stream = false) { diff --git a/libs/core/src/lib/command/warn-if-hanging.ts b/libs/core/src/lib/command/warn-if-hanging.ts index a2e38df40d..bd71e5bcab 100644 --- a/libs/core/src/lib/command/warn-if-hanging.ts +++ b/libs/core/src/lib/command/warn-if-hanging.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import log from "../npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/core/src/lib/conventional-commits/get-changelog-config.ts b/libs/core/src/lib/conventional-commits/get-changelog-config.ts index 6b52c690c4..837d52455c 100644 --- a/libs/core/src/lib/conventional-commits/get-changelog-config.ts +++ b/libs/core/src/lib/conventional-commits/get-changelog-config.ts @@ -1,6 +1,6 @@ import npa from "npm-package-arg"; -import log from "npmlog"; import pify from "pify"; +import log from "../npmlog"; import { ValidationError } from "../validation-error"; import { ChangelogPresetConfig } from "./constants"; diff --git a/libs/core/src/lib/conventional-commits/recommend-version.ts b/libs/core/src/lib/conventional-commits/recommend-version.ts index 75f7c03e62..f69603ff6a 100644 --- a/libs/core/src/lib/conventional-commits/recommend-version.ts +++ b/libs/core/src/lib/conventional-commits/recommend-version.ts @@ -1,6 +1,6 @@ import conventionalRecommendedBump from "conventional-recommended-bump"; -import log from "npmlog"; import semver from "semver"; +import log from "../npmlog"; import { Package } from "../package"; import { applyBuildMetadata } from "./apply-build-metadata"; import { BaseChangelogOptions, VersioningStrategy } from "./constants"; diff --git a/libs/core/src/lib/conventional-commits/update-changelog.ts b/libs/core/src/lib/conventional-commits/update-changelog.ts index c2a27c5d2c..fb1964a20b 100644 --- a/libs/core/src/lib/conventional-commits/update-changelog.ts +++ b/libs/core/src/lib/conventional-commits/update-changelog.ts @@ -1,9 +1,9 @@ import conventionalChangelogCore from "conventional-changelog-core"; import fs from "fs-extra"; import getStream from "get-stream"; -import log from "npmlog"; +import log from "../npmlog"; import { Package } from "../package"; -import { BaseChangelogOptions, BLANK_LINE, ChangelogType, CHANGELOG_HEADER, EOL } from "./constants"; +import { BLANK_LINE, BaseChangelogOptions, CHANGELOG_HEADER, ChangelogType, EOL } from "./constants"; import { getChangelogConfig } from "./get-changelog-config"; import { makeBumpOnlyFilter } from "./make-bump-only-filter"; import { readExistingChangelog } from "./read-existing-changelog"; diff --git a/libs/core/src/lib/cycles/report-cycles.ts b/libs/core/src/lib/cycles/report-cycles.ts index 36ee21dcac..df83f410d7 100644 --- a/libs/core/src/lib/cycles/report-cycles.ts +++ b/libs/core/src/lib/cycles/report-cycles.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import log from "../npmlog"; import { ValidationError } from "../validation-error"; export function reportCycles(cycles: string[][], rejectCycles?: boolean) { diff --git a/libs/core/src/lib/describe-ref.ts b/libs/core/src/lib/describe-ref.ts index 667f2a9521..9ca25d1f7f 100644 --- a/libs/core/src/lib/describe-ref.ts +++ b/libs/core/src/lib/describe-ref.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import log from "./npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/core/src/lib/filter-options.ts b/libs/core/src/lib/filter-options.ts index 37ea980156..f1875a418e 100644 --- a/libs/core/src/lib/filter-options.ts +++ b/libs/core/src/lib/filter-options.ts @@ -1,6 +1,6 @@ import dedent from "dedent"; -import log from "npmlog"; import { Argv, Options } from "yargs"; +import log from "./npmlog"; export function filterOptions(yargs: Argv): Argv { // Only for 'run', 'exec', 'clean', 'ls', and 'bootstrap' commands diff --git a/libs/core/src/lib/filter-projects.ts b/libs/core/src/lib/filter-projects.ts index f473e12455..352c179a4c 100644 --- a/libs/core/src/lib/filter-projects.ts +++ b/libs/core/src/lib/filter-projects.ts @@ -1,11 +1,11 @@ import { ExecOptions } from "child_process"; import multimatch from "multimatch"; -import log from "npmlog"; import util from "util"; import { addDependencies } from "./add-dependencies"; import { addDependents } from "./add-dependents"; import { collectProjectUpdates } from "./collect-updates/collect-project-updates"; import { FilterOptions } from "./filter-options"; +import log from "./npmlog"; import { ProjectGraphProjectNodeWithPackage, ProjectGraphWithPackages } from "./project-graph-with-packages"; import { ValidationError } from "./validation-error"; diff --git a/libs/core/src/lib/get-npm-exec-opts.ts b/libs/core/src/lib/get-npm-exec-opts.ts index c2cd63baf6..9a89780faf 100644 --- a/libs/core/src/lib/get-npm-exec-opts.ts +++ b/libs/core/src/lib/get-npm-exec-opts.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import log from "./npmlog"; export function getNpmExecOpts(pkg: { name: any; location: string }, registry?: any) { // execa automatically extends process.env diff --git a/libs/core/src/lib/git-checkout.ts b/libs/core/src/lib/git-checkout.ts index c7379de52a..d5783c3ff1 100644 --- a/libs/core/src/lib/git-checkout.ts +++ b/libs/core/src/lib/git-checkout.ts @@ -1,5 +1,5 @@ import { ExecOptions } from "child_process"; -import log from "npmlog"; +import log from "./npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/core/src/lib/log-packed.ts b/libs/core/src/lib/log-packed.ts index 479c9f1b0d..fe20470ae6 100644 --- a/libs/core/src/lib/log-packed.ts +++ b/libs/core/src/lib/log-packed.ts @@ -1,6 +1,6 @@ import byteSize from "byte-size"; import columnify from "columnify"; -import log from "npmlog"; +import log from "./npmlog"; // has-unicode does not have types. // TODO: it is a tiny module, inline it? diff --git a/libs/core/src/lib/map-to-registry.ts b/libs/core/src/lib/map-to-registry.ts index 360f234ab2..a6172b2976 100644 --- a/libs/core/src/lib/map-to-registry.ts +++ b/libs/core/src/lib/map-to-registry.ts @@ -1,6 +1,6 @@ import npa from "npm-package-arg"; -import log from "npmlog"; import url from "url"; +import log from "./npmlog"; // https://github.com/npm/npm/blob/f644018/lib/utils/map-to-registry.js export function mapToRegistry( diff --git a/libs/core/src/lib/npm-dist-tag.ts b/libs/core/src/lib/npm-dist-tag.ts index ccf9e5d2cf..8c0b127e81 100644 --- a/libs/core/src/lib/npm-dist-tag.ts +++ b/libs/core/src/lib/npm-dist-tag.ts @@ -1,6 +1,6 @@ import npa from "npm-package-arg"; import fetch from "npm-registry-fetch"; -import log from "npmlog"; +import log from "./npmlog"; import { OneTimePasswordCache, otplease } from "./otplease"; interface DistTagOptions extends fetch.FetchOptions { @@ -58,7 +58,7 @@ export function add( }; // success returns HTTP 204, thus no JSON to parse - return otplease((wrappedPayload) => fetch(uri, wrappedPayload), payload, otpCache).then(() => { + return otplease((wrappedPayload) => fetch(uri, wrappedPayload as any), payload, otpCache).then(() => { opts.log.verbose("dist-tag", `added "${cleanTag}" to ${name}@${version}`); // eslint-disable-next-line no-param-reassign @@ -103,7 +103,7 @@ export function remove(spec: string, tag: string, options: DistTagOptions, otpCa }; // the delete properly returns a 204, so no json to parse - return otplease((wrappedPayload) => fetch(uri, wrappedPayload), payload, otpCache).then(() => { + return otplease((wrappedPayload) => fetch(uri, wrappedPayload as any), payload, otpCache).then(() => { opts.log.verbose("dist-tag", `removed "${tag}" from ${opts.spec.name}@${version}`); // eslint-disable-next-line no-param-reassign diff --git a/libs/core/src/lib/npm-install.spec.ts b/libs/core/src/lib/npm-install.spec.ts index 43dbf045f5..cd81324925 100644 --- a/libs/core/src/lib/npm-install.spec.ts +++ b/libs/core/src/lib/npm-install.spec.ts @@ -16,6 +16,9 @@ const writePkg = jest.mocked(_writePkg); describe("npm-install", () => { childProcess.exec.mockResolvedValue(); + // TODO: refactor based on TS feedback + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore fs.rename.mockResolvedValue(); // TODO: refactor based on TS feedback // eslint-disable-next-line @typescript-eslint/ban-ts-comment diff --git a/libs/core/src/lib/npm-install.ts b/libs/core/src/lib/npm-install.ts index c82d93cb3d..8535bb58bb 100644 --- a/libs/core/src/lib/npm-install.ts +++ b/libs/core/src/lib/npm-install.ts @@ -1,9 +1,9 @@ import fs from "fs-extra"; import npa from "npm-package-arg"; -import log from "npmlog"; import onExit from "signal-exit"; import writePkg from "write-pkg"; import { getNpmExecOpts } from "./get-npm-exec-opts"; +import log from "./npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/core/src/lib/npm-publish.spec.ts b/libs/core/src/lib/npm-publish.spec.ts index 935ea139a6..2cdcf701e6 100644 --- a/libs/core/src/lib/npm-publish.spec.ts +++ b/libs/core/src/lib/npm-publish.spec.ts @@ -6,12 +6,12 @@ import { runLifecycle as _runLifecycle } from "./run-lifecycle"; jest.mock("./run-lifecycle"); jest.mock("./otplease"); -jest.mock("read-package-json"); +jest.mock("@npmcli/package-json"); jest.mock("libnpmpublish"); jest.mock("fs-extra"); // eslint-disable-next-line @typescript-eslint/no-var-requires -const readJSON = require("read-package-json"); +const { load: readJSON } = require("@npmcli/package-json"); // helpers import path from "path"; @@ -26,7 +26,7 @@ const runLifecycle = jest.mocked(_runLifecycle); const otplease = jest.mocked(_otplease); describe("npm-publish", () => { - const mockTarData = Buffer.from("MOCK"); + const mockTarData = Buffer.from("MOCK") as never; const mockManifest = { _normalized: true }; fs.readFile.mockName("fs.readFile").mockResolvedValue(mockTarData); @@ -34,7 +34,7 @@ describe("npm-publish", () => { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore publish.mockName("libnpmpublish").mockResolvedValue(); - readJSON.mockName("read-package-json").mockImplementation((file: any, cb: any) => cb(null, mockManifest)); + readJSON.mockName("@npmcli/package-json").mockImplementation(() => ({ content: mockManifest })); // TODO: refactor based on TS feedback // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore @@ -55,7 +55,7 @@ describe("npm-publish", () => { await npmPublish(pkg, tarFilePath, opts); expect(fs.readFile).toHaveBeenCalledWith(tarFilePath); - expect(readJSON).toHaveBeenCalledWith(pkg.manifestLocation, expect.any(Function)); + expect(readJSON).toHaveBeenCalledWith(path.dirname(pkg.manifestLocation)); expect(publish).toHaveBeenCalledWith( mockManifest, mockTarData, @@ -79,13 +79,13 @@ describe("npm-publish", () => { }); it("overrides pkg.publishConfig.tag when opts.tag is explicitly configured", async () => { - readJSON.mockImplementationOnce((file: any, cb: any) => - cb(null, { + readJSON.mockImplementationOnce(() => ({ + content: { publishConfig: { tag: "beta", }, - }) - ); + }, + })); const opts = { tag: "temp-tag" }; await npmPublish(pkg, tarFilePath, opts); @@ -104,13 +104,13 @@ describe("npm-publish", () => { }); it("respects pkg.publishConfig.tag when opts.defaultTag matches default", async () => { - readJSON.mockImplementationOnce((file: any, cb: any) => - cb(null, { + readJSON.mockImplementationOnce(() => ({ + content: { publishConfig: { tag: "beta", }, - }) - ); + }, + })); await npmPublish(pkg, tarFilePath); @@ -140,19 +140,16 @@ describe("npm-publish", () => { rootPath ); - readJSON.mockImplementationOnce((file: any, cb: any) => - cb(null, { + readJSON.mockImplementationOnce(() => ({ + content: { name: "fancy-fancy", version: "1.10.100", - }) - ); + }, + })); await npmPublish(fancyPkg, tarFilePath); - expect(readJSON).toHaveBeenCalledWith( - path.join(fancyPkg.location, "dist/package.json"), - expect.any(Function) - ); + expect(readJSON).toHaveBeenCalledWith(path.join(fancyPkg.location, "dist")); expect(publish).toHaveBeenCalledWith( expect.objectContaining({ name: "fancy-fancy", @@ -165,13 +162,13 @@ describe("npm-publish", () => { }); it("merges pkg.publishConfig.registry into options", async () => { - readJSON.mockImplementationOnce((file: any, cb: any) => - cb(null, { + readJSON.mockImplementationOnce(() => ({ + content: { publishConfig: { registry: "http://pkg-registry.com", }, - }) - ); + }, + })); const opts = { registry: "https://global-registry.com" }; await npmPublish(pkg, tarFilePath, opts); diff --git a/libs/core/src/lib/npm-publish.ts b/libs/core/src/lib/npm-publish.ts index e72318f9da..6a96b10b56 100644 --- a/libs/core/src/lib/npm-publish.ts +++ b/libs/core/src/lib/npm-publish.ts @@ -1,20 +1,14 @@ +import { load } from "@npmcli/package-json"; import fs from "fs-extra"; import { publish } from "libnpmpublish"; import npa from "npm-package-arg"; import { FetchOptions } from "npm-registry-fetch"; -import log from "npmlog"; import path from "path"; -import pify from "pify"; +import log from "./npmlog"; import { OneTimePasswordCache, otplease } from "./otplease"; import { Package } from "./package"; import { runLifecycle } from "./run-lifecycle"; -// read-package-json does not have any types -// eslint-disable-next-line @typescript-eslint/no-var-requires -const readJSON = require("read-package-json"); - -const readJSONAsync = pify(readJSON); - interface NpmPublishOptions { dryRun?: boolean; ["dry-run"]?: boolean; @@ -44,12 +38,12 @@ interface LibNpmPublishOptions extends FetchOptions { /** * Publish a package to the configured registry. */ -export function npmPublish( +export async function npmPublish( pkg: Package, tarFilePath: string, options: LibNpmPublishOptions & NpmPublishOptions = {}, otpCache?: OneTimePasswordCache -) { +): Promise { const { dryRun, ...remainingOptions } = flattenOptions(options); const { scope } = npa(pkg.name); // pass only the package scope to libnpmpublish @@ -61,55 +55,49 @@ export function npmPublish( opts.log.verbose("publish", pkg.name); - let chain = Promise.resolve(); + let result: undefined | Response; if (!dryRun) { - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - chain = chain.then(() => { - let { manifestLocation } = pkg; - - if (pkg.contents !== pkg.location) { - // "rebase" manifest used to generated directory - manifestLocation = path.join(pkg.contents, "package.json"); - } - - return Promise.all([fs.readFile(tarFilePath), readJSONAsync(manifestLocation)]); - }); + let { manifestLocation } = pkg; + + if (pkg.contents !== pkg.location) { + // "rebase" manifest used to generated directory + manifestLocation = path.join(pkg.contents, "package.json"); + } + + const [tarData, npmCliPackageJson] = await Promise.all([ + fs.readFile(tarFilePath), + await load(path.dirname(manifestLocation)), + ]); + + const manifestContent = npmCliPackageJson.content; + + // non-default tag needs to override publishConfig.tag, + // which is merged into opts below if necessary + if ( + opts.defaultTag !== "latest" && + manifestContent.publishConfig && + manifestContent.publishConfig.tag && + manifestContent.publishConfig.tag !== opts.defaultTag + ) { + manifestContent.publishConfig.tag = opts.defaultTag; + } + + // publishConfig is no longer consumed in n-r-f, so merge here + if (manifestContent.publishConfig) { + Object.assign(opts, publishConfigToOpts(manifestContent.publishConfig)); + } // TODO: refactor based on TS feedback // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore - chain = chain.then(([tarData, manifest]) => { - // non-default tag needs to override publishConfig.tag, - // which is merged into opts below if necessary - if ( - opts.defaultTag !== "latest" && - manifest.publishConfig && - manifest.publishConfig.tag && - manifest.publishConfig.tag !== opts.defaultTag - ) { - // eslint-disable-next-line no-param-reassign - manifest.publishConfig.tag = opts.defaultTag; - } - - // publishConfig is no longer consumed in n-r-f, so merge here - if (manifest.publishConfig) { - Object.assign(opts, publishConfigToOpts(manifest.publishConfig)); - } - - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - return otplease((innerOpts) => publish(manifest, tarData, innerOpts), opts, otpCache); - }); + result = await otplease((innerOpts) => publish(manifestContent, tarData, innerOpts), opts, otpCache); } - chain = chain.then(() => runLifecycle(pkg, "publish", opts)); - chain = chain.then(() => runLifecycle(pkg, "postpublish", opts)); + await runLifecycle(pkg, "publish", opts); + await runLifecycle(pkg, "postpublish", opts); - return chain; + return result; } /** diff --git a/libs/core/src/lib/npm-run-script.ts b/libs/core/src/lib/npm-run-script.ts index e17831d8db..78e1da708a 100644 --- a/libs/core/src/lib/npm-run-script.ts +++ b/libs/core/src/lib/npm-run-script.ts @@ -1,5 +1,5 @@ -import log from "npmlog"; import { getNpmExecOpts } from "./get-npm-exec-opts"; +import log from "./npmlog"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/core/src/lib/npmlog/README.md b/libs/core/src/lib/npmlog/README.md new file mode 100644 index 0000000000..aeba7ad285 --- /dev/null +++ b/libs/core/src/lib/npmlog/README.md @@ -0,0 +1,3 @@ +# Private internal fork of [npmlog](https://github.com/npm/npmlog) + +On May 4th, 2024, without notice or warning, npm archived a few packages that lerna depended on. diff --git a/libs/core/src/lib/npmlog/are-we-there-yet/tests/test-event.ts b/libs/core/src/lib/npmlog/are-we-there-yet/tests/test-event.ts new file mode 100644 index 0000000000..2dae262419 --- /dev/null +++ b/libs/core/src/lib/npmlog/are-we-there-yet/tests/test-event.ts @@ -0,0 +1,34 @@ +/* eslint-disable prefer-rest-params */ +/* eslint-disable prefer-spread */ +import util from "node:util"; + +export default function testEvent(obj: any, event: any, next: any) { + let timeout = setTimeout(gotTimeout, 10); + obj.once(event, gotResult); + + function gotTimeout() { + obj.removeListener(event, gotResult); + next(new Error("Timeout listening for " + event)); + } + let result: any[] = []; + function gotResult() { + result = Array.prototype.slice.call(arguments); + clearTimeout(timeout); + timeout = setTimeout(gotNoMoreResults, 10); + obj.once(event, gotTooManyResults); + } + function gotNoMoreResults() { + obj.removeListener(event, gotTooManyResults); + const args = [null].concat(result); + next.apply(null, args); + } + function gotTooManyResults() { + const secondResult = Array.prototype.slice.call(arguments); + clearTimeout(timeout); + next( + new Error( + "Got too many results, first " + util.inspect(result) + " and then " + util.inspect(secondResult) + ) + ); + } +} diff --git a/libs/core/src/lib/npmlog/are-we-there-yet/tests/tracker-group.spec.ts b/libs/core/src/lib/npmlog/are-we-there-yet/tests/tracker-group.spec.ts new file mode 100644 index 0000000000..f339c0dc1f --- /dev/null +++ b/libs/core/src/lib/npmlog/are-we-there-yet/tests/tracker-group.spec.ts @@ -0,0 +1,168 @@ +import { TrackerGroup } from "../tracker-group"; +import testEvent from "./test-event"; + +describe("TrackerGroup", () => { + const name = "test"; + + it("initialization", () => { + const track = new TrackerGroup(name); + expect(track.completed()).toBe(0); + }); + + it("completion", () => { + const track = new TrackerGroup(name); + const todo = 100; + const a = track.newItem("a", 10, 1); + const b = track.newItem("b", 10, 1); + + const promise = new Promise((resolve) => { + testEvent(track, "change", afterFinishEmpty); + track.finish(); + + function afterFinishEmpty(err: any, onChangeName: string, completion: number) { + expect(err).toBeNull(); + expect(onChangeName).toBe(name); + expect(completion).toBe(1); + expect(track.completed()).toBe(1); + + resolve(); + } + }); + + return promise.then(() => { + const track = new TrackerGroup(name); + const a = track.newItem("a", 10, 1); + const b = track.newItem("b", 10, 1); + + const promise = new Promise((resolve) => { + testEvent(track, "change", afterCompleteWork); + a.completeWork(5); + + function afterCompleteWork(err: any, onChangeName: string, completion: number) { + expect(err).toBeNull(); + expect(onChangeName).toBe("a"); + expect(completion).toBe(0.25); + expect(track.completed()).toBe(0.25); + + resolve(); + } + }); + + return promise.then(() => { + const promise = new Promise((resolve) => { + testEvent(track, "change", afterFinishAll); + track.finish(); + + function afterFinishAll(err: any, onChangeName: string, completion: number) { + expect(err).toBeNull(); + expect(onChangeName).toBe(name); + expect(completion).toBe(1); + expect(track.completed()).toBe(1); + + resolve(); + } + }); + + return promise; + }); + }); + }); + + it("add more work", () => { + const track = new TrackerGroup(name); + const todo = 100; + const a = track.newItem("a", 10, 2); + const b = track.newItem("b", 10, 1); + + const promise = new Promise((resolve) => { + testEvent(track, "change", afterAddWork); + a.completeWork(5); + + function afterAddWork(err: any, onChangeName: string, completion: number) { + expect(err).toBeNull(); + expect(onChangeName).toBe("a"); + expect(Math.floor(completion * 100)).toBe(33); + expect(Math.floor(track.completed() * 100)).toBe(33); + + resolve(); + } + }); + + return promise.then(() => { + const promise = new Promise((resolve) => { + testEvent(track, "change", afterWeightedFinishAll); + track.finish(); + + function afterWeightedFinishAll(err: any, onChangeName: string, completion: number) { + expect(err).toBeNull(); + expect(onChangeName).toBe(name); + expect(completion).toBe(1); + expect(track.completed()).toBe(1); + + resolve(); + } + }); + + return promise; + }); + }); + + it("finish is always 100%", () => { + const track = new TrackerGroup(name); + const a = track.newGroup("a", 10); + const b = track.newGroup("b", 10); + const a1 = a.newItem("a.1", 10); + + a1.completeWork(5); + expect(track.completed()).toBe(0.25); + + const promise = new Promise((resolve) => { + testEvent(track, "change", afterNestedComplete); + b.finish(); + + function afterNestedComplete(err: any, onChangeName: string, completion: number) { + expect(err).toBeNull(); + expect(onChangeName).toBe("b"); + expect(completion).toBe(0.75); + expect(track.completed()).toBe(0.75); + + resolve(); + } + }); + + return promise; + }); + + it("cycles", () => { + const track = new TrackerGroup("top"); + + function testCycle(addTo: any, toAdd: any) { + try { + addTo.addUnit(toAdd); + throw new Error("Expected cycle error"); + } catch (ex) { + console.log(ex); + // eslint-disable-next-line jest/no-conditional-expect + expect(ex).toBeInstanceOf(Error); + } + } + + testCycle(track, track); + const layer1 = track.newGroup("layer1"); + testCycle(layer1, track); + expect(track.debug()).toBe("top: 0\n layer1: 0\n"); + }); + + it("should properly handle finish calls when the group contains a stream", () => { + const track = new TrackerGroup("test"); + track.newStream("test-stream", 100); + + try { + track.finish(); + expect(true).toBe(true); + } catch (e) { + // eslint-disable-next-line jest/no-conditional-expect + expect(false).toBe(true); + } + }); +}); diff --git a/libs/core/src/lib/npmlog/are-we-there-yet/tests/tracker-stream.spec.ts b/libs/core/src/lib/npmlog/are-we-there-yet/tests/tracker-stream.spec.ts new file mode 100644 index 0000000000..4d0771c870 --- /dev/null +++ b/libs/core/src/lib/npmlog/are-we-there-yet/tests/tracker-stream.spec.ts @@ -0,0 +1,54 @@ +import { Writable } from "stream"; +import { TrackerStream } from "../tracker-stream"; +import testEvent from "./test-event"; + +class Sink extends Writable { + _write(data: any, encoding: string, cb: () => void) { + cb(); + } +} + +describe("TrackerStream", () => { + it("should track stream completion correctly", async () => { + expect.assertions(9); + + const name = "test"; + let track = new TrackerStream(name); + + expect(track.completed()).toBe(0); + + const todo = 10; + track = new TrackerStream(name, todo); + expect(track.completed()).toBe(0); + + track.pipe(new Sink()); + + await new Promise((resolve) => { + testEvent(track, "change", afterCompleteWork); + track.write("0123456789"); + + function afterCompleteWork(err: any, onChangeName: string) { + expect(err).toBeNull(); + expect(onChangeName).toBe(name); + expect(track.completed()).toBe(1); + + testEvent(track, "change", afterAddWork); + track.addWork(10); + } + + function afterAddWork(err: any) { + expect(err).toBeNull(); + expect(track.completed()).toBe(0.5); + + testEvent(track, "change", afterAllWork); + track.write("ABCDEFGHIJKLMNOPQRST"); + } + + function afterAllWork(err: any) { + expect(err).toBeNull(); + expect(track.completed()).toBe(1); + resolve(); + } + }); + }); +}); diff --git a/libs/core/src/lib/npmlog/are-we-there-yet/tests/tracker.spec.ts b/libs/core/src/lib/npmlog/are-we-there-yet/tests/tracker.spec.ts new file mode 100644 index 0000000000..d09501920e --- /dev/null +++ b/libs/core/src/lib/npmlog/are-we-there-yet/tests/tracker.spec.ts @@ -0,0 +1,62 @@ +import { Tracker } from "../tracker"; +import testEvent from "./test-event"; + +const name = "test"; + +describe("Tracker", () => { + it("initialization", () => { + const simple = new Tracker(name); + expect(simple.completed()).toBe(0); + }); + + let track: Tracker; + const todo = 100; + + it("completion", () => { + track = new Tracker(name, todo); + expect(track.completed()).toBe(0); + + const promise = new Promise((resolve) => { + testEvent(track, "change", afterCompleteWork); + + track.completeWork(todo); + expect(track.completed()).toBe(1); + + function afterCompleteWork(err: any, onChangeName: string) { + expect(err).toBe(null); + expect(onChangeName).toBe(name); + resolve(); + } + }); + + return promise; + }); + + it("add more work", () => { + const promise = new Promise((resolve) => { + testEvent(track, "change", afterAddWork); + track.addWork(todo); + expect(track.completed()).toBe(0.5); + + function afterAddWork(err: any, onChangeName: string) { + expect(err).toBe(null); + expect(onChangeName).toBe(name); + resolve(); + } + }); + + return promise; + }); + + it("complete more work", () => { + track.completeWork(200); + expect(track.completed()).toBe(1); + }); + + it("finish is always 100%", () => { + const finishtest = new Tracker(name, todo); + finishtest.completeWork(50); + finishtest.finish(); + expect(finishtest.completed()).toBe(1); + }); +}); diff --git a/libs/core/src/lib/npmlog/are-we-there-yet/tracker-base.ts b/libs/core/src/lib/npmlog/are-we-there-yet/tracker-base.ts new file mode 100644 index 0000000000..62ecb878e2 --- /dev/null +++ b/libs/core/src/lib/npmlog/are-we-there-yet/tracker-base.ts @@ -0,0 +1,14 @@ +import EventEmitter from "node:events"; + +let trackerId = 0; + +export class TrackerBase extends EventEmitter { + id: number; + name: string; + + constructor(name = "") { + super(); + this.id = ++trackerId; + this.name = name; + } +} diff --git a/libs/core/src/lib/npmlog/are-we-there-yet/tracker-group.ts b/libs/core/src/lib/npmlog/are-we-there-yet/tracker-group.ts new file mode 100644 index 0000000000..e80fdfc43b --- /dev/null +++ b/libs/core/src/lib/npmlog/are-we-there-yet/tracker-group.ts @@ -0,0 +1,113 @@ +import { Tracker } from "./tracker"; +import { TrackerBase } from "./tracker-base"; +import { TrackerStream } from "./tracker-stream"; + +export class TrackerGroup extends TrackerBase { + parentGroup = null; + trackers: Array = []; + completion: any = {}; + weight: any = {}; + totalWeight = 0; + finished = false; + bubbleChange = bubbleChange(this); + + nameInTree() { + const names = []; + // eslint-disable-next-line @typescript-eslint/no-this-alias + let from: this | null = this; + while (from) { + names.unshift(from.name); + from = from.parentGroup; + } + return names.join("/"); + } + + addUnit(unit: any, weight = 0) { + if (unit.addUnit) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + let toTest: this | null = this; + while (toTest) { + if (unit === toTest) { + throw new Error( + "Attempted to add tracker group " + + unit.name + + " to tree that already includes it " + + this.nameInTree() + ); + } + toTest = toTest.parentGroup; + } + unit.parentGroup = this; + } + this.weight[unit.id] = weight || 1; + this.totalWeight += this.weight[unit.id]; + this.trackers.push(unit); + this.completion[unit.id] = unit.completed(); + unit.on("change", this.bubbleChange); + if (!this.finished) { + this.emit("change", unit.name, this.completion[unit.id], unit); + } + return unit; + } + + completed() { + if (this.trackers.length === 0) { + return 0; + } + const valPerWeight = 1 / this.totalWeight; + let completed = 0; + for (let ii = 0; ii < this.trackers.length; ii++) { + const trackerId = this.trackers[ii].id; + completed += valPerWeight * this.weight[trackerId] * this.completion[trackerId]; + } + return completed; + } + + newGroup(name: string, weight = 0) { + return this.addUnit(new TrackerGroup(name), weight); + } + + newItem(name: string, todo: number, weight = 0) { + return this.addUnit(new Tracker(name, todo), weight); + } + + newStream(name: string, todo: number, weight = 0) { + return this.addUnit(new TrackerStream(name, todo), weight); + } + + finish() { + this.finished = true; + if (!this.trackers.length) { + this.addUnit(new Tracker(), 1); + } + for (let ii = 0; ii < this.trackers.length; ii++) { + const tracker = this.trackers[ii]; + tracker.finish(); + tracker.removeListener("change", this.bubbleChange); + } + this.emit("change", this.name, 1, this); + } + + debug(depth = 0) { + const indent = " ".repeat(depth); + let output = `${indent}${this.name || "top"}: ${this.completed()}\n`; + + this.trackers.forEach(function (tracker) { + output += + tracker instanceof TrackerGroup + ? tracker.debug(depth + 1) + : `${indent} ${tracker.name}: ${tracker.completed()}\n`; + }); + return output; + } +} + +function bubbleChange(trackerGroup: any) { + return function (name: any, completed: any, tracker: { id: string | number }) { + trackerGroup.completion[tracker.id] = completed; + if (trackerGroup.finished) { + return; + } + trackerGroup.emit("change", name || trackerGroup.name, trackerGroup.completed(), trackerGroup); + }; +} diff --git a/libs/core/src/lib/npmlog/are-we-there-yet/tracker-stream.ts b/libs/core/src/lib/npmlog/are-we-there-yet/tracker-stream.ts new file mode 100644 index 0000000000..402f4680da --- /dev/null +++ b/libs/core/src/lib/npmlog/are-we-there-yet/tracker-stream.ts @@ -0,0 +1,43 @@ +import stream from "node:stream"; +import { Tracker } from "./tracker"; + +export class TrackerStream extends stream.Transform { + tracker: Tracker; + name: string; + id: number; + + constructor(name: string, size = 0, options?: stream.TransformOptions) { + super(options); + this.tracker = new Tracker(name, size); + this.name = name; + this.id = this.tracker.id; + this.tracker.on("change", this.trackerChange.bind(this)); + } + + trackerChange(name: string, completion: any) { + this.emit("change", name, completion, this); + } + + override _transform(data: string | any[], encoding: any, cb: () => void) { + this.tracker.completeWork(data.length ? data.length : 1); + this.push(data); + cb(); + } + + override _flush(cb: () => void) { + this.tracker.finish(); + cb(); + } + + completed() { + return this.tracker.completed(); + } + + addWork(work: number) { + return this.tracker.addWork(work); + } + + finish() { + return this.tracker.finish(); + } +} diff --git a/libs/core/src/lib/npmlog/are-we-there-yet/tracker.ts b/libs/core/src/lib/npmlog/are-we-there-yet/tracker.ts new file mode 100644 index 0000000000..16f8d35299 --- /dev/null +++ b/libs/core/src/lib/npmlog/are-we-there-yet/tracker.ts @@ -0,0 +1,34 @@ +import { TrackerBase } from "./tracker-base"; + +export class Tracker extends TrackerBase { + workDone: number; + workTodo: number; + + constructor(name?: string, todo?: number) { + super(name); + this.workDone = 0; + this.workTodo = todo || 0; + } + + completed() { + return this.workTodo === 0 ? 0 : this.workDone / this.workTodo; + } + + addWork(work: number) { + this.workTodo += work; + this.emit("change", this.name, this.completed(), this); + } + + completeWork(work: number) { + this.workDone += work; + if (this.workDone > this.workTodo) { + this.workDone = this.workTodo; + } + this.emit("change", this.name, this.completed(), this); + } + + finish() { + this.workTodo = this.workDone = 1; + this.emit("change", this.name, 1, this); + } +} diff --git a/libs/core/src/lib/npmlog/gauge/base-theme.ts b/libs/core/src/lib/npmlog/gauge/base-theme.ts new file mode 100644 index 0000000000..3173d6d1a6 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/base-theme.ts @@ -0,0 +1,25 @@ +/* eslint-disable */ +// @ts-nocheck + +/** + * Inlined from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b + */ + +"use strict"; +var spin = require("./spin.js"); +var progressBar = require("./progress-bar.js"); + +module.exports = { + activityIndicator: function (values, theme) { + if (values.spun == null) { + return; + } + return spin(theme, values.spun); + }, + progressbar: function (values, theme, width) { + if (values.completed == null) { + return; + } + return progressBar(theme, width, values.completed); + }, +}; diff --git a/libs/core/src/lib/npmlog/gauge/error.ts b/libs/core/src/lib/npmlog/gauge/error.ts new file mode 100644 index 0000000000..4070b6ec71 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/error.ts @@ -0,0 +1,31 @@ +/* eslint-disable */ +// @ts-nocheck + +/** + * Inlined from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b + */ + +"use strict"; +var util = require("util"); + +var User = (exports.User = function User(msg) { + var err = new Error(msg); + Error.captureStackTrace(err, User); + err.code = "EGAUGE"; + return err; +}); + +exports.MissingTemplateValue = function MissingTemplateValue(item, values) { + var err = new User(util.format('Missing template value "%s"', item.type)); + Error.captureStackTrace(err, MissingTemplateValue); + err.template = item; + err.values = values; + return err; +}; + +exports.Internal = function Internal(msg) { + var err = new Error(msg); + Error.captureStackTrace(err, Internal); + err.code = "EGAUGEINTERNAL"; + return err; +}; diff --git a/libs/core/src/lib/npmlog/gauge/has-color.ts b/libs/core/src/lib/npmlog/gauge/has-color.ts new file mode 100644 index 0000000000..b793648064 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/has-color.ts @@ -0,0 +1,11 @@ +/* eslint-disable */ +// @ts-nocheck + +/** + * Inlined from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b + */ + +"use strict"; +var colorSupport = require("color-support"); + +module.exports = colorSupport().hasBasic; diff --git a/libs/core/src/lib/npmlog/gauge/index.ts b/libs/core/src/lib/npmlog/gauge/index.ts new file mode 100644 index 0000000000..8c9138cfb5 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/index.ts @@ -0,0 +1,337 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ + +/** + * Adapted from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b/lib/index.js + */ + +import onExit from "signal-exit"; + +const hasUnicode = require("has-unicode"); + +const Plumbing = require("./plumbing"); +const hasColor = require("./has-color"); +const defaultThemes = require("./themes"); +const setInterval = require("./set-interval"); +const process = require("./process"); +const setImmediate = require("./set-immediate"); + +function callWith(obj: any, method: () => any) { + return function () { + return method.call(obj); + }; +} + +interface GaugeOptions { + hideCursor?: boolean; + fixedFramerate?: boolean; + updateInterval?: number; + themes?: any; + theme?: any; + template?: any; + tty?: any; + Plumbing?: any; + cleanupOnExit?: boolean; + enabled?: boolean; +} + +interface Status { + spun: number; + section: string; + subsection: string; + completed?: number; +} + +export class Gauge { + private _status: Status; + private _paused: boolean; + private _disabled: boolean; + private _showing: boolean; + private _onScreen: boolean; + private _needsRedraw: boolean; + private _hideCursor: boolean; + private _fixedFramerate: boolean; + private _lastUpdateAt: number | null; + private _updateInterval: number; + private _themes: any; + private _theme: any; + private _gauge: any; + private _tty: any; + private _writeTo: any; + private _$$doRedraw: () => void; + private _$$handleSizeChange: () => void; + private _cleanupOnExit: boolean; + private _removeOnExit: (() => void) | null; + private redrawTracker: any; + + constructor(arg1?: any, arg2?: any) { + let options: GaugeOptions, writeTo: any; + if (arg1 && arg1.write) { + writeTo = arg1; + options = arg2 || {}; + } else if (arg2 && arg2.write) { + writeTo = arg2; + options = arg1 || {}; + } else { + writeTo = process.stderr; + options = arg1 || arg2 || {}; + } + + this._status = { + spun: 0, + section: "", + subsection: "", + }; + this._paused = false; + this._disabled = true; + this._showing = false; + this._onScreen = false; + this._needsRedraw = false; + this._hideCursor = options.hideCursor == null ? true : options.hideCursor; + this._fixedFramerate = + options.fixedFramerate == null ? !/^v0\.8\./.test(process.version) : options.fixedFramerate; + this._lastUpdateAt = null; + this._updateInterval = options.updateInterval == null ? 50 : options.updateInterval; + + this._themes = options.themes || defaultThemes; + this._theme = options.theme; + const theme = this._computeTheme(options.theme); + const template = options.template || [ + { type: "progressbar", length: 20 }, + { type: "activityIndicator", kerning: 1, length: 1 }, + { type: "section", kerning: 1, default: "" }, + { type: "subsection", kerning: 1, default: "" }, + ]; + this.setWriteTo(writeTo, options.tty); + const PlumbingClass = options.Plumbing || Plumbing; + this._gauge = new PlumbingClass(theme, template, this.getWidth()); + + this._$$doRedraw = callWith(this, this._doRedraw); + this._$$handleSizeChange = callWith(this, this._handleSizeChange); + + this._cleanupOnExit = options.cleanupOnExit == null || options.cleanupOnExit; + this._removeOnExit = null; + + if (options.enabled || (options.enabled == null && this._tty && this._tty.isTTY)) { + this.enable(); + } else { + this.disable(); + } + } + + isEnabled(): boolean { + return !this._disabled; + } + + setTemplate(template: any) { + this._gauge.setTemplate(template); + if (this._showing) { + this._requestRedraw(); + } + } + + private _computeTheme(theme: any) { + if (!theme) { + theme = {}; + } + if (typeof theme === "string") { + theme = this._themes.getTheme(theme); + } else if (Object.keys(theme).length === 0 || theme.hasUnicode != null || theme.hasColor != null) { + const useUnicode = theme.hasUnicode == null ? hasUnicode() : theme.hasUnicode; + const useColor = theme.hasColor == null ? hasColor : theme.hasColor; + theme = this._themes.getDefault({ + hasUnicode: useUnicode, + hasColor: useColor, + platform: theme.platform, + }); + } + return theme; + } + + setThemeset(themes: any) { + this._themes = themes; + this.setTheme(this._theme); + } + + setTheme(theme: any) { + this._gauge.setTheme(this._computeTheme(theme)); + if (this._showing) { + this._requestRedraw(); + } + this._theme = theme; + } + + private _requestRedraw() { + this._needsRedraw = true; + if (!this._fixedFramerate) { + this._doRedraw(); + } + } + + getWidth(): number { + return ((this._tty && this._tty.columns) || 80) - 1; + } + + setWriteTo(writeTo: any, tty: any) { + const enabled = !this._disabled; + if (enabled) { + this.disable(); + } + this._writeTo = writeTo; + this._tty = + tty || + (writeTo === process.stderr && process.stdout.isTTY && process.stdout) || + (writeTo.isTTY && writeTo) || + this._tty; + if (this._gauge) { + this._gauge.setWidth(this.getWidth()); + } + if (enabled) { + this.enable(); + } + } + + enable() { + if (!this._disabled) { + return; + } + this._disabled = false; + if (this._tty) { + this._enableEvents(); + } + if (this._showing) { + this.show(); + } + } + + disable() { + if (this._disabled) { + return; + } + if (this._showing) { + this._lastUpdateAt = null; + this._showing = false; + this._doRedraw(); + this._showing = true; + } + this._disabled = true; + if (this._tty) { + this._disableEvents(); + } + } + + private _enableEvents() { + if (this._cleanupOnExit) { + this._removeOnExit = onExit(callWith(this, this.disable)); + } + this._tty.on("resize", this._$$handleSizeChange); + if (this._fixedFramerate) { + this.redrawTracker = setInterval(this._$$doRedraw, this._updateInterval); + if (this.redrawTracker.unref) { + this.redrawTracker.unref(); + } + } + } + + private _disableEvents() { + this._tty.removeListener("resize", this._$$handleSizeChange); + if (this._fixedFramerate) { + clearInterval(this.redrawTracker); + } + if (this._removeOnExit) { + this._removeOnExit(); + } + } + + hide(cb?: () => void) { + if (this._disabled) { + return cb && process.nextTick(cb); + } + if (!this._showing) { + return cb && process.nextTick(cb); + } + this._showing = false; + this._doRedraw(); + cb && setImmediate(cb); + } + + show(section?: string | object, completed?: number) { + this._showing = true; + if (typeof section === "string") { + this._status.section = section; + } else if (typeof section === "object") { + const sectionKeys = Object.keys(section); + for (let ii = 0; ii < sectionKeys.length; ++ii) { + const key = sectionKeys[ii]; + (this._status as any)[key] = (section as any)[key]; + } + } + if (completed != null) { + this._status.completed = completed; + } + if (this._disabled) { + return; + } + this._requestRedraw(); + } + + pulse(subsection?: string) { + this._status.subsection = subsection || ""; + this._status.spun++; + if (this._disabled) { + return; + } + if (!this._showing) { + return; + } + this._requestRedraw(); + } + + private _handleSizeChange() { + this._gauge.setWidth(this._tty.columns - 1); + this._requestRedraw(); + } + + private _doRedraw() { + if (this._disabled || this._paused) { + return; + } + if (!this._fixedFramerate) { + const now = Date.now(); + if (this._lastUpdateAt && now - this._lastUpdateAt < this._updateInterval) { + return; + } + this._lastUpdateAt = now; + } + if (!this._showing && this._onScreen) { + this._onScreen = false; + let result = this._gauge.hide(); + if (this._hideCursor) { + result += this._gauge.showCursor(); + } + return this._writeTo.write(result); + } + if (!this._showing && !this._onScreen) { + return; + } + if (this._showing && !this._onScreen) { + this._onScreen = true; + this._needsRedraw = true; + if (this._hideCursor) { + this._writeTo.write(this._gauge.hideCursor()); + } + } + if (!this._needsRedraw) { + return; + } + if (!this._writeTo.write(this._gauge.show(this._status))) { + this._paused = true; + this._writeTo.on( + "drain", + callWith(this, function (this: any) { + this._paused = false; + this._doRedraw(); + }) + ); + } + } +} diff --git a/libs/core/src/lib/npmlog/gauge/plumbing.ts b/libs/core/src/lib/npmlog/gauge/plumbing.ts new file mode 100644 index 0000000000..37dee5d11a --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/plumbing.ts @@ -0,0 +1,60 @@ +/* eslint-disable */ +// @ts-nocheck + +/** + * Inlined from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b + */ + +"use strict"; +var consoleControl = require("console-control-strings"); +var renderTemplate = require("./render-template"); +var validate = require("aproba"); + +var Plumbing = (module.exports = function (theme, template, width) { + if (!width) { + width = 80; + } + validate("OAN", [theme, template, width]); + this.showing = false; + this.theme = theme; + this.width = width; + this.template = template; +}); +Plumbing.prototype = {}; + +Plumbing.prototype.setTheme = function (theme) { + validate("O", [theme]); + this.theme = theme; +}; + +Plumbing.prototype.setTemplate = function (template) { + validate("A", [template]); + this.template = template; +}; + +Plumbing.prototype.setWidth = function (width) { + validate("N", [width]); + this.width = width; +}; + +Plumbing.prototype.hide = function () { + return consoleControl.gotoSOL() + consoleControl.eraseLine(); +}; + +Plumbing.prototype.hideCursor = consoleControl.hideCursor; + +Plumbing.prototype.showCursor = consoleControl.showCursor; + +Plumbing.prototype.show = function (status) { + var values = Object.create(this.theme); + for (var key in status) { + values[key] = status[key]; + } + + return ( + renderTemplate(this.width, this.template, values).trim() + + consoleControl.color("reset") + + consoleControl.eraseLine() + + consoleControl.gotoSOL() + ); +}; diff --git a/libs/core/src/lib/npmlog/gauge/process.ts b/libs/core/src/lib/npmlog/gauge/process.ts new file mode 100644 index 0000000000..02c615af08 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/process.ts @@ -0,0 +1,10 @@ +/* eslint-disable */ +// @ts-nocheck + +/** + * Inlined from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b + */ + +"use strict"; +// this exists so we can replace it during testing +module.exports = process; diff --git a/libs/core/src/lib/npmlog/gauge/progress-bar.ts b/libs/core/src/lib/npmlog/gauge/progress-bar.ts new file mode 100644 index 0000000000..8383173006 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/progress-bar.ts @@ -0,0 +1,48 @@ +/* eslint-disable */ +// @ts-nocheck + +/** + * Inlined from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b + */ + +"use strict"; +var validate = require("aproba"); +var renderTemplate = require("./render-template.js"); +var wideTruncate = require("./wide-truncate"); +var stringWidth = require("string-width"); + +module.exports = function (theme, width, completed) { + validate("ONN", [theme, width, completed]); + if (completed < 0) { + completed = 0; + } + if (completed > 1) { + completed = 1; + } + if (width <= 0) { + return ""; + } + var sofar = Math.round(width * completed); + var rest = width - sofar; + var template = [ + { type: "complete", value: repeat(theme.complete, sofar), length: sofar }, + { type: "remaining", value: repeat(theme.remaining, rest), length: rest }, + ]; + return renderTemplate(width, template, theme); +}; + +// lodash's way of repeating +function repeat(string, width) { + var result = ""; + var n = width; + do { + if (n % 2) { + result += string; + } + n = Math.floor(n / 2); + /* eslint no-self-assign: 0 */ + string += string; + } while (n && stringWidth(result) < width); + + return wideTruncate(result, width); +} diff --git a/libs/core/src/lib/npmlog/gauge/render-template.ts b/libs/core/src/lib/npmlog/gauge/render-template.ts new file mode 100644 index 0000000000..660f4ecc8c --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/render-template.ts @@ -0,0 +1,229 @@ +/* eslint-disable */ +// @ts-nocheck + +/** + * Inlined from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b + */ + +"use strict"; +var align = require("wide-align"); +var validate = require("aproba"); +var wideTruncate = require("./wide-truncate"); +var error = require("./error"); +var TemplateItem = require("./template-item"); + +function renderValueWithValues(values) { + return function (item) { + return renderValue(item, values); + }; +} + +var renderTemplate = (module.exports = function (width, template, values) { + var items = prepareItems(width, template, values); + var rendered = items.map(renderValueWithValues(values)).join(""); + return align.left(wideTruncate(rendered, width), width); +}); + +function preType(item) { + var cappedTypeName = item.type[0].toUpperCase() + item.type.slice(1); + return "pre" + cappedTypeName; +} + +function postType(item) { + var cappedTypeName = item.type[0].toUpperCase() + item.type.slice(1); + return "post" + cappedTypeName; +} + +function hasPreOrPost(item, values) { + if (!item.type) { + return; + } + return values[preType(item)] || values[postType(item)]; +} + +function generatePreAndPost(baseItem, parentValues) { + var item = Object.assign({}, baseItem); + var values = Object.create(parentValues); + var template = []; + var pre = preType(item); + var post = postType(item); + if (values[pre]) { + template.push({ value: values[pre] }); + values[pre] = null; + } + item.minLength = null; + item.length = null; + item.maxLength = null; + template.push(item); + values[item.type] = values[item.type]; + if (values[post]) { + template.push({ value: values[post] }); + values[post] = null; + } + return function ($1, $2, length) { + return renderTemplate(length, template, values); + }; +} + +function prepareItems(width, template, values) { + function cloneAndObjectify(item, index, arr) { + var cloned = new TemplateItem(item, width); + var type = cloned.type; + if (cloned.value == null) { + if (!(type in values)) { + if (cloned.default == null) { + throw new error.MissingTemplateValue(cloned, values); + } else { + cloned.value = cloned.default; + } + } else { + cloned.value = values[type]; + } + } + if (cloned.value == null || cloned.value === "") { + return null; + } + cloned.index = index; + cloned.first = index === 0; + cloned.last = index === arr.length - 1; + if (hasPreOrPost(cloned, values)) { + cloned.value = generatePreAndPost(cloned, values); + } + return cloned; + } + + var output = template.map(cloneAndObjectify).filter(function (item) { + return item != null; + }); + + var remainingSpace = width; + var variableCount = output.length; + + function consumeSpace(length) { + if (length > remainingSpace) { + length = remainingSpace; + } + remainingSpace -= length; + } + + function finishSizing(item, length) { + if (item.finished) { + throw new error.Internal("Tried to finish template item that was already finished"); + } + if (length === Infinity) { + throw new error.Internal("Length of template item cannot be infinity"); + } + if (length != null) { + item.length = length; + } + item.minLength = null; + item.maxLength = null; + --variableCount; + item.finished = true; + if (item.length == null) { + item.length = item.getBaseLength(); + } + if (item.length == null) { + throw new error.Internal("Finished template items must have a length"); + } + consumeSpace(item.getLength()); + } + + output.forEach(function (item) { + if (!item.kerning) { + return; + } + var prevPadRight = item.first ? 0 : output[item.index - 1].padRight; + if (!item.first && prevPadRight < item.kerning) { + item.padLeft = item.kerning - prevPadRight; + } + if (!item.last) { + item.padRight = item.kerning; + } + }); + + // Finish any that have a fixed (literal or intuited) length + output.forEach(function (item) { + if (item.getBaseLength() == null) { + return; + } + finishSizing(item); + }); + + var resized = 0; + var resizing; + var hunkSize; + do { + resizing = false; + hunkSize = Math.round(remainingSpace / variableCount); + output.forEach(function (item) { + if (item.finished) { + return; + } + if (!item.maxLength) { + return; + } + if (item.getMaxLength() < hunkSize) { + finishSizing(item, item.maxLength); + resizing = true; + } + }); + } while (resizing && resized++ < output.length); + if (resizing) { + throw new error.Internal("Resize loop iterated too many times while determining maxLength"); + } + + resized = 0; + do { + resizing = false; + hunkSize = Math.round(remainingSpace / variableCount); + output.forEach(function (item) { + if (item.finished) { + return; + } + if (!item.minLength) { + return; + } + if (item.getMinLength() >= hunkSize) { + finishSizing(item, item.minLength); + resizing = true; + } + }); + } while (resizing && resized++ < output.length); + if (resizing) { + throw new error.Internal("Resize loop iterated too many times while determining minLength"); + } + + hunkSize = Math.round(remainingSpace / variableCount); + output.forEach(function (item) { + if (item.finished) { + return; + } + finishSizing(item, hunkSize); + }); + + return output; +} + +function renderFunction(item, values, length) { + validate("OON", arguments); + if (item.type) { + return item.value(values, values[item.type + "Theme"] || {}, length); + } else { + return item.value(values, {}, length); + } +} + +function renderValue(item, values) { + var length = item.getBaseLength(); + var value = typeof item.value === "function" ? renderFunction(item, values, length) : item.value; + if (value == null || value === "") { + return ""; + } + var alignWith = align[item.align] || align.left; + var leftPadding = item.padLeft ? align.left("", item.padLeft) : ""; + var rightPadding = item.padRight ? align.right("", item.padRight) : ""; + var truncated = wideTruncate(String(value), length); + var aligned = alignWith(truncated, length); + return leftPadding + aligned + rightPadding; +} diff --git a/libs/core/src/lib/npmlog/gauge/set-immediate.ts b/libs/core/src/lib/npmlog/gauge/set-immediate.ts new file mode 100644 index 0000000000..bbc6619253 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/set-immediate.ts @@ -0,0 +1,14 @@ +/* eslint-disable */ +// @ts-nocheck + +/** + * Inlined from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b + */ + +"use strict"; +var process = require("./process"); +try { + module.exports = setImmediate; +} catch (ex) { + module.exports = process.nextTick; +} diff --git a/libs/core/src/lib/npmlog/gauge/set-interval.ts b/libs/core/src/lib/npmlog/gauge/set-interval.ts new file mode 100644 index 0000000000..271c876d40 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/set-interval.ts @@ -0,0 +1,10 @@ +/* eslint-disable */ +// @ts-nocheck + +/** + * Inlined from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b + */ + +"use strict"; +// this exists so we can replace it during testing +module.exports = setInterval; diff --git a/libs/core/src/lib/npmlog/gauge/spin.ts b/libs/core/src/lib/npmlog/gauge/spin.ts new file mode 100644 index 0000000000..700fa07bb2 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/spin.ts @@ -0,0 +1,12 @@ +/* eslint-disable */ +// @ts-nocheck + +/** + * Inlined from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b + */ + +"use strict"; + +module.exports = function spin(spinstr, spun) { + return spinstr[spun % spinstr.length]; +}; diff --git a/libs/core/src/lib/npmlog/gauge/template-item.ts b/libs/core/src/lib/npmlog/gauge/template-item.ts new file mode 100644 index 0000000000..0e77c1e3bb --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/template-item.ts @@ -0,0 +1,89 @@ +/* eslint-disable */ +// @ts-nocheck + +/** + * Inlined from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b + */ + +"use strict"; +var stringWidth = require("string-width"); + +module.exports = TemplateItem; + +function isPercent(num) { + if (typeof num !== "string") { + return false; + } + return num.slice(-1) === "%"; +} + +function percent(num) { + return Number(num.slice(0, -1)) / 100; +} + +function TemplateItem(values, outputLength) { + this.overallOutputLength = outputLength; + this.finished = false; + this.type = null; + this.value = null; + this.length = null; + this.maxLength = null; + this.minLength = null; + this.kerning = null; + this.align = "left"; + this.padLeft = 0; + this.padRight = 0; + this.index = null; + this.first = null; + this.last = null; + if (typeof values === "string") { + this.value = values; + } else { + for (var prop in values) { + this[prop] = values[prop]; + } + } + // Realize percents + if (isPercent(this.length)) { + this.length = Math.round(this.overallOutputLength * percent(this.length)); + } + if (isPercent(this.minLength)) { + this.minLength = Math.round(this.overallOutputLength * percent(this.minLength)); + } + if (isPercent(this.maxLength)) { + this.maxLength = Math.round(this.overallOutputLength * percent(this.maxLength)); + } + return this; +} + +TemplateItem.prototype = {}; + +TemplateItem.prototype.getBaseLength = function () { + var length = this.length; + if (length == null && typeof this.value === "string" && this.maxLength == null && this.minLength == null) { + length = stringWidth(this.value); + } + return length; +}; + +TemplateItem.prototype.getLength = function () { + var length = this.getBaseLength(); + if (length == null) { + return null; + } + return length + this.padLeft + this.padRight; +}; + +TemplateItem.prototype.getMaxLength = function () { + if (this.maxLength == null) { + return null; + } + return this.maxLength + this.padLeft + this.padRight; +}; + +TemplateItem.prototype.getMinLength = function () { + if (this.minLength == null) { + return null; + } + return this.minLength + this.padLeft + this.padRight; +}; diff --git a/libs/core/src/lib/npmlog/gauge/tests/base-theme.spec.ts b/libs/core/src/lib/npmlog/gauge/tests/base-theme.spec.ts new file mode 100644 index 0000000000..b837f66741 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/tests/base-theme.spec.ts @@ -0,0 +1,28 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ + +// eslint-disable-next-line jest/no-export +export {}; + +const baseTheme = require("../base-theme"); +jest.mock("../spin", () => (theme: any, spun: any) => [theme, spun]); +jest.mock("../progress-bar", () => (theme: any, width: any, completed: any) => [theme, width, completed]); + +describe("activityIndicator", () => { + it("no spun", () => { + expect(baseTheme.activityIndicator({}, {}, 80)).toBeUndefined(); + }); + + it("spun", () => { + expect(baseTheme.activityIndicator({ spun: 3 }, { me: true }, 9999)).toEqual([{ me: true }, 3]); + }); +}); + +describe("progressBar", () => { + it("no completion", () => { + expect(baseTheme.progressbar({}, {}, 80)).toBeUndefined(); + }); + + it("completion!", () => { + expect(baseTheme.progressbar({ completed: 33 }, { me: true }, 100)).toEqual([{ me: true }, 100, 33]); + }); +}); diff --git a/libs/core/src/lib/npmlog/gauge/tests/error.spec.ts b/libs/core/src/lib/npmlog/gauge/tests/error.spec.ts new file mode 100644 index 0000000000..cdfb045ff0 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/tests/error.spec.ts @@ -0,0 +1,39 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ + +// eslint-disable-next-line jest/no-export +export {}; + +const error = require("../error"); + +describe("User", () => { + it("isa Error", () => { + const msg = "example"; + const user = new error.User(msg); + expect(user instanceof Error).toBeTruthy(); + expect(user.code).toBe("EGAUGE"); + expect(user.message).toBe(msg); + }); +}); + +describe("MissingTemplateValue", () => { + it("isa Error", () => { + const item = { type: "abc" }; + const values = { abc: "def", ghi: "jkl" }; + const user = new error.MissingTemplateValue(item, values); + expect(user instanceof Error).toBeTruthy(); + expect(user.code).toBe("EGAUGE"); + expect(user.message).toMatch(new RegExp(item.type)); + expect(user.template).toEqual(item); + expect(user.values).toEqual(values); + }); +}); + +describe("Internal", () => { + it("isa Error", () => { + const msg = "example"; + const user = new error.Internal(msg); + expect(user instanceof Error).toBeTruthy(); + expect(user.code).toBe("EGAUGEINTERNAL"); + expect(user.message).toBe(msg); + }); +}); diff --git a/libs/core/src/lib/npmlog/gauge/tests/index.spec.ts b/libs/core/src/lib/npmlog/gauge/tests/index.spec.ts new file mode 100644 index 0000000000..8bfb509950 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/tests/index.spec.ts @@ -0,0 +1,234 @@ +/* eslint-disable jest/no-conditional-expect */ +/* eslint-disable @typescript-eslint/no-var-requires, prefer-rest-params */ + +// eslint-disable-next-line jest/no-export +import { Gauge } from "../index"; + +const stream = require("readable-stream"); +const util = require("util"); +const EventEmitter = require("events").EventEmitter; + +function Sink(this: any) { + stream.Writable.call(this, arguments); +} +util.inherits(Sink, stream.Writable); +Sink.prototype._write = function (data: any, enc: any, cb: () => void) { + cb(); +}; + +const results = new EventEmitter(); +function MockPlumbing(theme: any, template: any, columns: any) { + results.theme = theme; + results.template = template; + results.columns = columns; + results.emit("new", theme, template, columns); +} +MockPlumbing.prototype = {}; + +function RecordCall(name: string) { + return function () { + const args = Array.prototype.slice.call(arguments); + results.emit("called", [name, args]); + results.emit("called:" + name, args); + return ""; + }; +} + +["setTheme", "setTemplate", "setWidth", "hide", "show", "hideCursor", "showCursor"].forEach(function (fn) { + MockPlumbing.prototype[fn] = RecordCall(fn); +}); + +describe("defaults", () => { + it("default properties", () => { + let gauge = new Gauge(process.stdout) as any; + expect(gauge._disabled).toBe(!process.stdout.isTTY); + expect(gauge._updateInterval).toBe(50); + if (process.stdout.isTTY) { + expect(gauge._tty).toBe(process.stdout); + gauge.disable(); + gauge = new Gauge(process.stderr); + expect(gauge._tty).toBe(process.stdout); + } + gauge.disable(); + // @ts-expect-error ... + gauge = new Gauge(new Sink()); + expect(gauge._tty).toBeUndefined(); + gauge.disable(); + }); +}); + +describe("construct", () => { + it("constructs with provided options", () => { + // @ts-expect-error ... + const output = new Sink(); + output.isTTY = true; + output.columns = 16; + const gauge = new Gauge(output, { + Plumbing: MockPlumbing, + theme: ["THEME"], + template: ["TEMPLATE"], + enabled: false, + updateInterval: 0, + fixedFramerate: false, + }); + expect(gauge).toBeTruthy(); + expect(results.columns).toBe(15); + expect(results.theme).toEqual(["THEME"]); + expect(results.template).toEqual(["TEMPLATE"]); + expect(gauge.isEnabled()).toBe(false); + }); +}); + +describe("show & pulse: fixedframerate", () => { + // eslint-disable-next-line jest/no-done-callback + it("should show and pulse with fixed framerate", (done) => { + const testtimeout = setTimeout(() => { + done(); + }, 1000); + // @ts-expect-error ... + const output = new Sink(); + output.isTTY = true; + output.columns = 16; + const gauge = new Gauge(output, { + Plumbing: MockPlumbing, + updateInterval: 10, + fixedFramerate: true, + }); + gauge.show("NAME", 0.1); + results.once("called:show", checkBasicShow); + function checkBasicShow(args: any) { + expect(args).toEqual([{ spun: 0, section: "NAME", subsection: "", completed: 0.1 }]); + + gauge.show("S"); + gauge.pulse(); + results.once("called:show", checkPulse); + } + function checkPulse(args: any) { + expect(args).toEqual([{ spun: 1, section: "S", subsection: "", completed: 0.1 }]); + + gauge.pulse("P"); + results.once("called:show", checkPulseWithArg); + } + function checkPulseWithArg(args: any) { + expect(args).toEqual([{ spun: 2, section: "S", subsection: "P", completed: 0.1 }]); + + gauge.disable(); + clearTimeout(testtimeout); + done(); + } + }); +}); + +describe("window resizing", () => { + // eslint-disable-next-line jest/no-done-callback + it("should handle window resizing", (done) => { + const testtimeout = setTimeout(() => { + done(); + }, 1000); + // @ts-expect-error ... + const output = new Sink(); + output.isTTY = true; + output.columns = 32; + + const gauge = new Gauge(output, { + Plumbing: MockPlumbing, + updateInterval: 0, + fixedFramerate: true, + }); + gauge.show("NAME", 0.1); + + results.once("called:show", function (args: any) { + expect(args).toEqual([{ section: "NAME", subsection: "", completed: 0.1, spun: 0 }]); + + results.once("called:setWidth", lookForResize); + + output.columns = 16; + output.emit("resize"); + gauge.show("NAME", 0.5); + }); + + function lookForResize(args: any) { + expect(args).toEqual([15]); + results.once("called:show", lookForShow); + } + function lookForShow(args: any) { + expect(args).toEqual([{ section: "NAME", subsection: "", completed: 0.5, spun: 0 }]); + gauge.disable(); + clearTimeout(testtimeout); + done(); + } + }); +}); + +function collectResults( + time: number | undefined, + cb: { (got: any): void; (got: any): void; (arg0: any[]): void } +) { + const collected: any[] = []; + function collect(called: any) { + collected.push(called); + } + results.on("called", collect); + setTimeout(() => { + results.removeListener("called", collect); + cb(collected); + }, time); +} + +describe("hideCursor:true", () => { + // eslint-disable-next-line jest/no-done-callback + it("should hide cursor when enabled", (done) => { + // @ts-expect-error ... + const output = new Sink(); + output.isTTY = true; + output.columns = 16; + const gauge = new Gauge(output, { + Plumbing: MockPlumbing, + theme: ["THEME"], + template: ["TEMPLATE"], + enabled: true, + updateInterval: 90, + fixedFramerate: true, + hideCursor: true, + }); + collectResults(100, andCursorHidden); + gauge.show("NAME", 0.5); + expect(gauge.isEnabled()).toBe(true); + function andCursorHidden(got: any) { + const expected = [ + ["hideCursor", []], + ["show", [{ spun: 0, section: "NAME", subsection: "", completed: 0.5 }]], + ]; + expect(got).toEqual(expected); + gauge.disable(); + done(); + } + }); +}); + +describe("hideCursor:false", () => { + // eslint-disable-next-line jest/no-done-callback + it("should not hide cursor when disabled", (done) => { + // @ts-expect-error ... + const output = new Sink(); + output.isTTY = true; + output.columns = 16; + const gauge = new Gauge(output, { + Plumbing: MockPlumbing, + theme: ["THEME"], + template: ["TEMPLATE"], + enabled: true, + updateInterval: 90, + fixedFramerate: true, + hideCursor: false, + }); + collectResults(100, andCursorHidden); + gauge.show("NAME", 0.5); + function andCursorHidden(got: any) { + const expected = [["show", [{ spun: 0, section: "NAME", subsection: "", completed: 0.5 }]]]; + expect(got).toEqual(expected); + gauge.disable(); + done(); + } + }); +}); diff --git a/libs/core/src/lib/npmlog/gauge/tests/plumbing.spec.ts b/libs/core/src/lib/npmlog/gauge/tests/plumbing.spec.ts new file mode 100644 index 0000000000..930b97873a --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/tests/plumbing.spec.ts @@ -0,0 +1,72 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ + +// eslint-disable-next-line jest/no-export +export {}; + +const Plumbing = require("../plumbing"); +jest.mock("../render-template", () => (width: string, template: any, values: { x: any }) => { + if (values.x) { + // eslint-disable-next-line no-self-assign + values.x = values.x; + } // pull in from parent object for stringify + return "w:" + width + ", t:" + JSON.stringify(template) + ", v:" + JSON.stringify(values); +}); +jest.mock("console-control-strings", () => ({ + eraseLine: () => "ERASE", + gotoSOL: () => "CR", + color: (to: string) => "COLOR:" + to, + hideCursor: () => "HIDE", + showCursor: () => "SHOW", +})); + +const template = [{ type: "name" }]; +const theme = {}; +const plumbing = new Plumbing(theme, template, 10); + +describe("Plumbing static methods", () => { + it("showCursor", () => { + expect(plumbing.showCursor()).toBe("SHOW"); + }); + + it("hideCursor", () => { + expect(plumbing.hideCursor()).toBe("HIDE"); + }); + + it("hide", () => { + expect(plumbing.hide()).toBe("CRERASE"); + }); + + it("show", () => { + expect(plumbing.show({ name: "test" })).toBe( + 'w:10, t:[{"type":"name"}], v:{"name":"test"}COLOR:resetERASECR' + ); + }); + + it("width", () => { + const defaultWidth = new Plumbing(theme, template); + expect(defaultWidth.show({ name: "test" })).toBe( + 'w:80, t:[{"type":"name"}], v:{"name":"test"}COLOR:resetERASECR' + ); + }); + + it("setTheme", () => { + plumbing.setTheme({ x: "abc" }); + expect(plumbing.show({ name: "test" })).toBe( + 'w:10, t:[{"type":"name"}], v:{"name":"test","x":"abc"}COLOR:resetERASECR' + ); + }); + + it("setTemplate", () => { + plumbing.setTemplate([{ type: "name" }, { type: "x" }]); + expect(plumbing.show({ name: "test" })).toBe( + 'w:10, t:[{"type":"name"},{"type":"x"}], v:{"name":"test","x":"abc"}COLOR:resetERASECR' + ); + }); + + it("setWidth", () => { + plumbing.setWidth(20); + expect(plumbing.show({ name: "test" })).toBe( + 'w:20, t:[{"type":"name"},{"type":"x"}], v:{"name":"test","x":"abc"}COLOR:resetERASECR' + ); + }); +}); diff --git a/libs/core/src/lib/npmlog/gauge/tests/progress-bar.spec.ts b/libs/core/src/lib/npmlog/gauge/tests/progress-bar.spec.ts new file mode 100644 index 0000000000..8e73bb8c7e --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/tests/progress-bar.spec.ts @@ -0,0 +1,57 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ + +// eslint-disable-next-line jest/no-export +export {}; + +const progressBar = require("../progress-bar"); + +describe("progressBar", () => { + it("should handle different progress values correctly", () => { + const theme: any = { + complete: "#", + remaining: "-", + }; + + let result: any; + result = progressBar(theme, 10, 0); + expect(result).toBe("----------"); // 0% bar + + result = progressBar(theme, 10, 0.5); + expect(result).toBe("#####-----"); // 50% bar + + result = progressBar(theme, 10, 1); + expect(result).toBe("##########"); // 100% bar + + result = progressBar(theme, 10, -100); + expect(result).toBe("----------"); // 0% underflow bar + + result = progressBar(theme, 10, 100); + expect(result).toBe("##########"); // 100% overflow bar + + result = progressBar(theme, 0, 0.5); + expect(result).toBe(""); // 0 width bar + + const multicharTheme: any = { + complete: "123", + remaining: "abc", + }; + + result = progressBar(multicharTheme, 10, 0); + expect(result).toBe("abcabcabca"); // 0% bar + + result = progressBar(multicharTheme, 10, 0.5); + expect(result).toBe("12312abcab"); // 50% bar + + result = progressBar(multicharTheme, 10, 1); + expect(result).toBe("1231231231"); // 100% bar + + result = progressBar(multicharTheme, 10, -100); + expect(result).toBe("abcabcabca"); // 0% underflow bar + + result = progressBar(multicharTheme, 10, 100); + expect(result).toBe("1231231231"); // 100% overflow bar + + result = progressBar(multicharTheme, 0, 0.5); + expect(result).toBe(""); // 0 width bar + }); +}); diff --git a/libs/core/src/lib/npmlog/gauge/tests/render-template.spec.ts b/libs/core/src/lib/npmlog/gauge/tests/render-template.spec.ts new file mode 100644 index 0000000000..9f13325fff --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/tests/render-template.spec.ts @@ -0,0 +1,87 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ + +// eslint-disable-next-line jest/no-export +export {}; + +const renderTemplate = require("../render-template"); + +describe("renderTemplate", () => { + it("should handle various template and value combinations correctly", () => { + let result: any; + result = renderTemplate(10, [{ type: "name" }], { name: "NAME" }); + expect(result).toBe("NAME "); // name substitution + + result = renderTemplate(10, [{ type: "name" }, { type: "completionbar" }], { + name: "NAME", + completionbar: (values: any, theme: any, width: any) => "xx" + String(width) + "xx", + }); + expect(result).toBe("NAMExx6xx "); // name + 50% + + result = renderTemplate(10, ["static"], {}); + expect(result).toBe("static "); // static text + + result = renderTemplate(10, ["static", { type: "name" }], { name: "NAME" }); + expect(result).toBe("staticNAME"); // static text + var + + result = renderTemplate(10, ["static", { type: "name", kerning: 1 }], { name: "NAME" }); + expect(result).toBe("static NAM"); // pre-separated + + result = renderTemplate(10, [{ type: "name", kerning: 1 }, "static"], { name: "NAME" }); + expect(result).toBe("NAME stati"); // post-separated + + result = renderTemplate(10, ["1", { type: "name", kerning: 1 }, "2"], { name: "" }); + expect(result).toBe("12 "); // separated no value + + result = renderTemplate(10, ["1", { type: "name", kerning: 1 }, "2"], { name: "NAME" }); + expect(result).toBe("1 NAME 2 "); // separated value + + result = renderTemplate(10, ["AB", { type: "name", kerning: 1 }, { value: "CD", kerning: 1 }], { + name: "NAME", + }); + expect(result).toBe("AB NAME CD"); // multi kerning + + result = renderTemplate(10, [{ type: "name", length: "50%" }, "static"], { name: "N" }); + expect(result).toBe("N stati"); // percent length + + try { + result = renderTemplate(10, [{ type: "xyzzy" }, "static"], {}); + throw new Error("Test failed"); // intentionally throw error if no error is caught + } catch (e) { + // eslint-disable-next-line jest/no-conditional-expect + expect(e).toBeDefined(); // missing type + } + + result = renderTemplate(10, [{ type: "name", minLength: "20%" }, "this long thing"], { name: "N" }); + expect(result).toBe("N this lon"); // percent minlength + + result = renderTemplate(10, [{ type: "name", maxLength: "20%" }, "nope"], { name: "NAME" }); + expect(result).toBe("NAnope "); // percent maxlength + + result = renderTemplate(10, [{ type: "name", padLeft: 2, padRight: 2 }, "||"], { name: "NAME" }); + expect(result).toBe(" NAME ||"); // manual padding + + result = renderTemplate(10, [{ value: "ABC", minLength: 2, maxLength: 6 }, "static"], {}); + expect(result).toBe("ABC static"); // max hunk size < maxLength + + result = renderTemplate(10, [{ value: () => "" }], {}); + expect(result).toBe(" "); // empty value + + result = renderTemplate(10, [{ value: "12古34", align: "center", length: "100%" }], {}); + expect(result).toBe(" 12古34 "); // wide chars + + result = renderTemplate(10, [{ type: "test", value: "abc" }], { preTest: "¡", postTest: "!" }); + expect(result).toBe("¡abc! "); // pre/post values + + result = renderTemplate(10, [{ type: "test", value: "abc" }], { preTest: "¡" }); + expect(result).toBe("¡abc "); // pre values + + result = renderTemplate(10, [{ type: "test", value: "abc" }], { postTest: "!" }); + expect(result).toBe("abc! "); // post values + + result = renderTemplate(10, [{ value: "abc" }, { value: "‼‼", length: 0 }, { value: "def" }]); + expect(result).toBe("abcdef "); // post values + + result = renderTemplate(10, [{ value: "abc", align: "xyzzy" }]); + expect(result).toBe("abc "); // unknown aligns are align left + }); +}); diff --git a/libs/core/src/lib/npmlog/gauge/tests/spin.spec.ts b/libs/core/src/lib/npmlog/gauge/tests/spin.spec.ts new file mode 100644 index 0000000000..78078334d0 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/tests/spin.spec.ts @@ -0,0 +1,19 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ + +// eslint-disable-next-line jest/no-export +export {}; + +const spin = require("../spin"); + +describe("spin", () => { + it("should return the correct spinner character", () => { + const spinner: any = "123456"; + let result: any; + + result = spin(spinner, 1); + expect(result).toBe("2"); // Spinner 1 + + result = spin(spinner, 10); + expect(result).toBe("5"); // Spinner 10 + }); +}); diff --git a/libs/core/src/lib/npmlog/gauge/tests/template-item.spec.ts b/libs/core/src/lib/npmlog/gauge/tests/template-item.spec.ts new file mode 100644 index 0000000000..629f2b7d02 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/tests/template-item.spec.ts @@ -0,0 +1,96 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ + +// eslint-disable-next-line jest/no-export +export {}; + +const TemplateItem = require("../template-item"); + +const width = 200; +const defaults: any = { + overallOutputLength: width, + finished: false, + type: null, + value: null, + length: null, + maxLength: null, + minLength: null, + kerning: null, + align: "left", + padLeft: 0, + padRight: 0, + index: null, + first: null, + last: null, +}; + +function got(values: any): any { + return new TemplateItem(values, width); +} + +function expected(obj: any): any { + return Object.assign({}, defaults, obj); +} + +describe("TemplateItem", () => { + it("should create new TemplateItem correctly", () => { + expect(got("test")).toEqual(expected({ value: "test" })); // str item + expect(got({ value: "test", length: 3 })).toEqual(expected({ value: "test", length: 3 })); // obj item + expect(got({ length: "20%" })).toEqual(expected({ length: 40 })); // length % + expect(got({ maxLength: "10%" })).toEqual(expected({ maxLength: 20 })); // length % + expect(got({ minLength: "95%" })).toEqual(expected({ minLength: 190 })); // length % + }); + + it("getBaseLength", () => { + const direct = got({ value: "test", length: 3 }); + expect(direct.getBaseLength()).toBe(3); // directly set + const intuit = got({ value: "test" }); + expect(intuit.getBaseLength()).toBe(4); // intuit + const varmax = got({ value: "test", maxLength: 4 }); + expect(varmax.getBaseLength()).toBe(null); // variable max + const varmin = got({ value: "test", minLength: 4 }); + expect(varmin.getBaseLength()).toBe(null); // variable min + }); + + it("getLength", () => { + const direct = got({ value: "test", length: 3 }); + expect(direct.getLength()).toBe(3); // directly set + const intuit = got({ value: "test" }); + expect(intuit.getLength()).toBe(4); // intuit + const varmax = got({ value: "test", maxLength: 4 }); + expect(varmax.getLength()).toBe(null); // variable max + const varmin = got({ value: "test", minLength: 4 }); + expect(varmin.getLength()).toBe(null); // variable min + const padleft = got({ value: "test", length: 3, padLeft: 3 }); + expect(padleft.getLength()).toBe(6); // pad left + const padright = got({ value: "test", length: 3, padLeft: 5 }); + expect(padright.getLength()).toBe(8); // pad right + const padboth = got({ value: "test", length: 3, padLeft: 5, padRight: 1 }); + expect(padboth.getLength()).toBe(9); // pad both + }); + + it("getMaxLength", () => { + const nomax = got({ value: "test" }); + expect(nomax.getMaxLength()).toBe(null); // no max length + const direct = got({ value: "test", maxLength: 5 }); + expect(direct.getMaxLength()).toBe(5); // max length + const padleft = got({ value: "test", maxLength: 5, padLeft: 3 }); + expect(padleft.getMaxLength()).toBe(8); // max length + padLeft + const padright = got({ value: "test", maxLength: 5, padRight: 3 }); + expect(padright.getMaxLength()).toBe(8); // max length + padRight + const padboth = got({ value: "test", maxLength: 5, padLeft: 2, padRight: 3 }); + expect(padboth.getMaxLength()).toBe(10); // max length + pad both + }); + + it("getMinLength", () => { + const nomin = got({ value: "test" }); + expect(nomin.getMinLength()).toBe(null); // no min length + const direct = got({ value: "test", minLength: 5 }); + expect(direct.getMinLength()).toBe(5); // min length + const padleft = got({ value: "test", minLength: 5, padLeft: 3 }); + expect(padleft.getMinLength()).toBe(8); // min length + padLeft + const padright = got({ value: "test", minLength: 5, padRight: 3 }); + expect(padright.getMinLength()).toBe(8); // min length + padRight + const padboth = got({ value: "test", minLength: 5, padLeft: 2, padRight: 3 }); + expect(padboth.getMinLength()).toBe(10); // min length + pad both + }); +}); diff --git a/libs/core/src/lib/npmlog/gauge/tests/theme-set.spec.ts b/libs/core/src/lib/npmlog/gauge/tests/theme-set.spec.ts new file mode 100644 index 0000000000..9730ff59ed --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/tests/theme-set.spec.ts @@ -0,0 +1,92 @@ +/* eslint-disable jest/no-conditional-expect */ +/* eslint-disable @typescript-eslint/no-var-requires */ + +// eslint-disable-next-line jest/no-export +export {}; + +const ThemeSet = require("../theme-set"); + +const themes = new ThemeSet(); +themes.addTheme("fallback", { id: 0 }); +themes.addTheme("test1", { id: 1 }); +themes.addTheme("test2", { id: 2 }); +themes.addTheme("test3", { id: 3 }); +themes.addTheme("test4", { id: 4 }); +themes.addTheme("testz", themes.getTheme("fallback"), { id: "z" }); +themes.setDefault("fallback"); +themes.setDefault({ platform: "aa", hasUnicode: false, hasColor: false }, "test1"); +themes.setDefault({ platform: "bb", hasUnicode: true, hasColor: true }, "test2"); +themes.setDefault({ platform: "ab", hasUnicode: false, hasColor: true }, "test3"); +themes.setDefault({ platform: "ba", hasUnicode: true, hasColor: false }, "test4"); + +themes.setDefault({ platform: "zz", hasUnicode: false, hasColor: false }, "test1"); +themes.setDefault({ platform: "zz", hasUnicode: true, hasColor: true }, "test2"); +themes.setDefault({ platform: "zz", hasUnicode: false, hasColor: true }, "test3"); +themes.setDefault({ platform: "zz", hasUnicode: true, hasColor: false }, "test4"); + +describe("ThemeSet", () => { + it("should get themes based on conditions", () => { + expect(themes().id).toBe(0); // fallback + + expect(themes({ platform: "aa" }).id).toBe(1); // aa ff + expect(themes({ platform: "aa", hasUnicode: true }).id).toBe(1); // aa tf + expect(themes({ platform: "aa", hasColor: true }).id).toBe(1); // aa ft + expect(themes({ platform: "aa", hasUnicode: true, hasColor: true }).id).toBe(1); // aa tt + expect(themes({ platform: "bb" }).id).toBe(0); // bb ff + expect(themes({ platform: "bb", hasUnicode: true }).id).toBe(0); // bb tf + expect(themes({ platform: "bb", hasColor: true }).id).toBe(0); // bb ft + expect(themes({ platform: "bb", hasUnicode: true, hasColor: true }).id).toBe(2); // bb tt + + expect(themes({ platform: "ab" }).id).toBe(0); // ab ff + expect(themes({ platform: "ab", hasUnicode: true }).id).toBe(0); // ab tf + expect(themes({ platform: "ab", hasColor: true }).id).toBe(3); // ab ft + expect(themes({ platform: "ab", hasUnicode: true, hasColor: true }).id).toBe(3); // ab tt + + expect(themes({ platform: "ba" }).id).toBe(0); // ba ff + expect(themes({ platform: "ba", hasUnicode: true }).id).toBe(4); // ba tf + expect(themes({ platform: "ba", hasColor: true }).id).toBe(0); // ba ft + expect(themes({ platform: "ba", hasUnicode: true, hasColor: true }).id).toBe(4); // ba tt + + expect(themes({ platform: "zz" }).id).toBe(1); // zz ff + expect(themes({ platform: "zz", hasUnicode: true }).id).toBe(4); // zz tf + expect(themes({ platform: "zz", hasColor: true }).id).toBe(3); // zz ft + expect(themes({ platform: "zz", hasUnicode: true, hasColor: true }).id).toBe(2); // zz tt + + try { + themes.getTheme("does not exist"); + throw new Error("Test failed"); // intentionally throw error if no error is caught + } catch (ex: any) { + expect(ex.code).toBe("EMISSINGTHEME"); // missing theme + } + + expect(themes.getTheme("testz").id).toBe("z"); // testz + + const empty = new ThemeSet(); + + try { + empty(); + throw new Error("Test failed"); // intentionally throw error if no error is caught + } catch (ex: any) { + expect(ex.code).toBe("EMISSINGTHEME"); // no themes + } + + empty.addTheme("exists", { id: "exists" }); + empty.setDefault({ hasUnicode: true, hasColor: true }, "exists"); + try { + empty(); + throw new Error("Test failed"); // intentionally throw error if no error is caught + } catch (ex: any) { + expect(ex.code).toBe("EMISSINGTHEME"); // no fallback + } + }); + + it("should add properties to all themes", () => { + themes.addToAllThemes({ + xyz: 17, + }); + expect(themes.getTheme("test1").xyz).toBe(17); // existing themes updated + const newTheme: any = themes.newTheme({ id: 99 }); + expect(newTheme.id).toBe(99); // new theme initialized + expect(newTheme.xyz).toBe(17); // new theme got extension + }); +}); diff --git a/libs/core/src/lib/npmlog/gauge/tests/themes.spec.ts b/libs/core/src/lib/npmlog/gauge/tests/themes.spec.ts new file mode 100644 index 0000000000..bcc8f34195 --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/tests/themes.spec.ts @@ -0,0 +1,24 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ + +// eslint-disable-next-line jest/no-export +export {}; + +const themes = require("../themes"); + +describe("selector", () => { + it("should return correct theme based on conditions", () => { + expect(themes({ hasUnicode: false, hasColor: false, platform: "unknown" })).toBe( + themes.getTheme("ASCII") + ); // fallback + expect(themes({ hasUnicode: false, hasColor: false, platform: "darwin" })).toBe(themes.getTheme("ASCII")); // ff darwin + expect(themes({ hasUnicode: true, hasColor: false, platform: "darwin" })).toBe( + themes.getTheme("brailleSpinner") + ); // tf darwin + expect(themes({ hasUnicode: false, hasColor: true, platform: "darwin" })).toBe( + themes.getTheme("colorASCII") + ); // ft darwin + expect(themes({ hasUnicode: true, hasColor: true, platform: "darwin" })).toBe( + themes.getTheme("colorBrailleSpinner") + ); // tt darwin + }); +}); diff --git a/libs/core/src/lib/npmlog/gauge/tests/wide-truncate.spec.ts b/libs/core/src/lib/npmlog/gauge/tests/wide-truncate.spec.ts new file mode 100644 index 0000000000..ec2b557bee --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/tests/wide-truncate.spec.ts @@ -0,0 +1,66 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ + +// eslint-disable-next-line jest/no-export +export {}; + +const wideTruncate = require("../wide-truncate"); + +describe("wideTruncate", () => { + it("should handle various truncation cases correctly", () => { + let result: any; + + result = wideTruncate("abc", 6); + expect(result).toBe("abc"); // narrow, no truncation + + result = wideTruncate("古古古", 6); + expect(result).toBe("古古古"); // wide, no truncation + + result = wideTruncate("abc", 2); + expect(result).toBe("ab"); // narrow, truncation + + result = wideTruncate("古古古", 2); + expect(result).toBe("古"); // wide, truncation + + result = wideTruncate("古古", 3); + expect(result).toBe("古"); // wide, truncation, partial + + result = wideTruncate("古", 1); + expect(result).toBe(""); // wide, truncation, no chars fit + + result = wideTruncate("abc", 0); + expect(result).toBe(""); // zero truncation is empty + + result = wideTruncate("", 10); + expect(result).toBe(""); // empty string + + result = wideTruncate("abc古古古def", 12); + expect(result).toBe("abc古古古def"); // mixed nwn, no truncation + + result = wideTruncate("abcdef古古古", 12); + expect(result).toBe("abcdef古古古"); // mixed nw, no truncation + + result = wideTruncate("古古古abcdef", 12); + expect(result).toBe("古古古abcdef"); // mixed wn, no truncation + + result = wideTruncate("古古abcdef古", 12); + expect(result).toBe("古古abcdef古"); // mixed wnw, no truncation + + result = wideTruncate("abc古古古def", 6); + expect(result).toBe("abc古"); // mixed nwn, truncation + + result = wideTruncate("abcdef古古古", 6); + expect(result).toBe("abcdef"); // mixed nw, truncation + + result = wideTruncate("古古古abcdef", 6); + expect(result).toBe("古古古"); // mixed wn, truncation + + result = wideTruncate("古古abcdef古", 6); + expect(result).toBe("古古ab"); // mixed wnw, truncation + + result = wideTruncate("abc\x1b[0mdef", 6); + expect(result).toBe("abc\x1b[0mdef"); // ansi codes are zero width + + result = wideTruncate("abc\x1b[0mdef", 4); + expect(result).toBe("abc\x1b[0md"); // ansi codes are zero width, clip text + }); +}); diff --git a/libs/core/src/lib/npmlog/gauge/theme-set.ts b/libs/core/src/lib/npmlog/gauge/theme-set.ts new file mode 100644 index 0000000000..ed8a0bfafc --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/theme-set.ts @@ -0,0 +1,138 @@ +/* eslint-disable */ +// @ts-nocheck + +/** + * Inlined from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b + */ + +"use strict"; + +module.exports = function () { + return ThemeSetProto.newThemeSet(); +}; + +var ThemeSetProto = {}; + +ThemeSetProto.baseTheme = require("./base-theme.js"); + +ThemeSetProto.newTheme = function (parent, theme) { + if (!theme) { + theme = parent; + parent = this.baseTheme; + } + return Object.assign({}, parent, theme); +}; + +ThemeSetProto.getThemeNames = function () { + return Object.keys(this.themes); +}; + +ThemeSetProto.addTheme = function (name, parent, theme) { + this.themes[name] = this.newTheme(parent, theme); +}; + +ThemeSetProto.addToAllThemes = function (theme) { + var themes = this.themes; + Object.keys(themes).forEach(function (name) { + Object.assign(themes[name], theme); + }); + Object.assign(this.baseTheme, theme); +}; + +ThemeSetProto.getTheme = function (name) { + if (!this.themes[name]) { + throw this.newMissingThemeError(name); + } + return this.themes[name]; +}; + +ThemeSetProto.setDefault = function (opts, name) { + if (name == null) { + name = opts; + opts = {}; + } + var platform = opts.platform == null ? "fallback" : opts.platform; + var hasUnicode = !!opts.hasUnicode; + var hasColor = !!opts.hasColor; + if (!this.defaults[platform]) { + this.defaults[platform] = { true: {}, false: {} }; + } + this.defaults[platform][hasUnicode][hasColor] = name; +}; + +ThemeSetProto.getDefault = function (opts) { + if (!opts) { + opts = {}; + } + var platformName = opts.platform || process.platform; + var platform = this.defaults[platformName] || this.defaults.fallback; + var hasUnicode = !!opts.hasUnicode; + var hasColor = !!opts.hasColor; + if (!platform) { + throw this.newMissingDefaultThemeError(platformName, hasUnicode, hasColor); + } + if (!platform[hasUnicode][hasColor]) { + if (hasUnicode && hasColor && platform[!hasUnicode][hasColor]) { + hasUnicode = false; + } else if (hasUnicode && hasColor && platform[hasUnicode][!hasColor]) { + hasColor = false; + } else if (hasUnicode && hasColor && platform[!hasUnicode][!hasColor]) { + hasUnicode = false; + hasColor = false; + } else if (hasUnicode && !hasColor && platform[!hasUnicode][hasColor]) { + hasUnicode = false; + } else if (!hasUnicode && hasColor && platform[hasUnicode][!hasColor]) { + hasColor = false; + } else if (platform === this.defaults.fallback) { + throw this.newMissingDefaultThemeError(platformName, hasUnicode, hasColor); + } + } + if (platform[hasUnicode][hasColor]) { + return this.getTheme(platform[hasUnicode][hasColor]); + } else { + return this.getDefault(Object.assign({}, opts, { platform: "fallback" })); + } +}; + +ThemeSetProto.newMissingThemeError = function newMissingThemeError(name) { + var err = new Error('Could not find a gauge theme named "' + name + '"'); + Error.captureStackTrace.call(err, newMissingThemeError); + err.theme = name; + err.code = "EMISSINGTHEME"; + return err; +}; + +ThemeSetProto.newMissingDefaultThemeError = function newMissingDefaultThemeError( + platformName, + hasUnicode, + hasColor +) { + var err = new Error( + "Could not find a gauge theme for your platform/unicode/color use combo:\n" + + " platform = " + + platformName + + "\n" + + " hasUnicode = " + + hasUnicode + + "\n" + + " hasColor = " + + hasColor + ); + Error.captureStackTrace.call(err, newMissingDefaultThemeError); + err.platform = platformName; + err.hasUnicode = hasUnicode; + err.hasColor = hasColor; + err.code = "EMISSINGTHEME"; + return err; +}; + +ThemeSetProto.newThemeSet = function () { + var themeset = function (opts) { + return themeset.getDefault(opts); + }; + return Object.assign(themeset, ThemeSetProto, { + themes: Object.assign({}, this.themes), + baseTheme: Object.assign({}, this.baseTheme), + defaults: JSON.parse(JSON.stringify(this.defaults || {})), + }); +}; diff --git a/libs/core/src/lib/npmlog/gauge/themes.ts b/libs/core/src/lib/npmlog/gauge/themes.ts new file mode 100644 index 0000000000..f2ce7ce37d --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/themes.ts @@ -0,0 +1,63 @@ +/* eslint-disable */ +// @ts-nocheck + +/** + * Inlined from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b + */ + +"use strict"; +var color = require("console-control-strings").color; +var ThemeSet = require("./theme-set"); + +var themes = (module.exports = new ThemeSet()); + +themes.addTheme("ASCII", { + preProgressbar: "[", + postProgressbar: "]", + progressbarTheme: { + complete: "#", + remaining: ".", + }, + activityIndicatorTheme: "-\\|/", + preSubsection: ">", +}); + +themes.addTheme("colorASCII", themes.getTheme("ASCII"), { + progressbarTheme: { + preComplete: color("bgBrightWhite", "brightWhite"), + complete: "#", + postComplete: color("reset"), + preRemaining: color("bgBrightBlack", "brightBlack"), + remaining: ".", + postRemaining: color("reset"), + }, +}); + +themes.addTheme("brailleSpinner", { + preProgressbar: "(", + postProgressbar: ")", + progressbarTheme: { + complete: "#", + remaining: "⠂", + }, + activityIndicatorTheme: "⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏", + preSubsection: ">", +}); + +themes.addTheme("colorBrailleSpinner", themes.getTheme("brailleSpinner"), { + progressbarTheme: { + preComplete: color("bgBrightWhite", "brightWhite"), + complete: "#", + postComplete: color("reset"), + preRemaining: color("bgBrightBlack", "brightBlack"), + remaining: "⠂", + postRemaining: color("reset"), + }, +}); + +themes.setDefault({}, "ASCII"); +themes.setDefault({ hasColor: true }, "colorASCII"); +themes.setDefault({ platform: "darwin", hasUnicode: true }, "brailleSpinner"); +themes.setDefault({ platform: "darwin", hasUnicode: true, hasColor: true }, "colorBrailleSpinner"); +themes.setDefault({ platform: "linux", hasUnicode: true }, "brailleSpinner"); +themes.setDefault({ platform: "linux", hasUnicode: true, hasColor: true }, "colorBrailleSpinner"); diff --git a/libs/core/src/lib/npmlog/gauge/wide-truncate.ts b/libs/core/src/lib/npmlog/gauge/wide-truncate.ts new file mode 100644 index 0000000000..e64904e05c --- /dev/null +++ b/libs/core/src/lib/npmlog/gauge/wide-truncate.ts @@ -0,0 +1,38 @@ +/* eslint-disable */ +// @ts-nocheck + +/** + * Inlined from deprecated package https://github.com/npm/gauge/blob/f8092518a47ac6a96027ae3ad97d0251ffe7643b + */ + +"use strict"; +var stringWidth = require("string-width"); +var stripAnsi = require("strip-ansi"); + +module.exports = wideTruncate; + +function wideTruncate(str, target) { + if (stringWidth(str) === 0) { + return str; + } + if (target <= 0) { + return ""; + } + if (stringWidth(str) <= target) { + return str; + } + + // We compute the number of bytes of ansi sequences here and add + // that to our initial truncation to ensure that we don't slice one + // that we want to keep in half. + var noAnsi = stripAnsi(str); + var ansiSize = str.length + noAnsi.length; + var truncated = str.slice(0, target + ansiSize); + + // we have to shrink the result to account for our ansi sequence buffer + // (if an ansi sequence was truncated) and double width characters. + while (stringWidth(truncated) > target) { + truncated = truncated.slice(0, -1); + } + return truncated; +} diff --git a/libs/core/src/lib/npmlog/index.ts b/libs/core/src/lib/npmlog/index.ts new file mode 100644 index 0000000000..3f86c4d319 --- /dev/null +++ b/libs/core/src/lib/npmlog/index.ts @@ -0,0 +1,402 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +/** + * Adapted from https://github.com/npm/npmlog/blob/756bd05d01e7e4841fba25204d6b85dfcffeba3c/lib/log.js + */ + +import { EventEmitter } from "node:events"; +import { WriteStream } from "node:tty"; +import util from "node:util"; +import { TrackerGroup } from "./are-we-there-yet/tracker-group"; +import { Gauge } from "./gauge"; + +const setBlocking = require("set-blocking"); +const consoleControl = require("console-control-strings"); + +setBlocking(true); + +export class Logger extends EventEmitter { + private _stream: WriteStream | null; + private _paused: boolean; + private _buffer: any[]; + private unicodeEnabled: boolean | undefined; + private colorEnabled: boolean | undefined; + private id: number; + record: any[]; + maxRecordSize: number; + gauge: any; + tracker: any; + progressEnabled: boolean; + level: string; + prefixStyle: any; + headingStyle: any; + style: any; + levels: any; + disp: any; + heading: string | undefined; + + // Known log levels, assigned dynamically in the constructor + silly!: (prefix: string, ...messageArgs: any[]) => void; + verbose!: (prefix: string, ...messageArgs: any[]) => void; + info!: (prefix: string, ...messageArgs: any[]) => void; + timing!: (prefix: string, ...messageArgs: any[]) => void; + http!: (prefix: string, ...messageArgs: any[]) => void; + notice!: (prefix: string, ...messageArgs: any[]) => void; + warn!: (prefix: string, ...messageArgs: any[]) => void; + error!: (prefix: string, ...messageArgs: any[]) => void; + silent!: (prefix: string, ...messageArgs: any[]) => void; + + [dynamicallyAddedLogLevelMethod: string]: any; + + constructor() { + super(); + this._stream = process.stderr; + this._paused = false; + this._buffer = []; + this.unicodeEnabled = false; + this.colorEnabled = undefined; + this.id = 0; + this.record = []; + this.maxRecordSize = 10000; + this.level = "info"; + + this.prefixStyle = { fg: "magenta" }; + this.headingStyle = { fg: "white", bg: "black" }; + this.style = {}; + this.levels = {}; + this.disp = {}; + + this.gauge = new Gauge(this._stream, { + enabled: false, + theme: { hasColor: this.useColor() }, + template: [ + { type: "progressbar", length: 20 }, + { type: "activityIndicator", kerning: 1, length: 1 }, + { type: "section", default: "" }, + ":", + { type: "logline", kerning: 1, default: "" }, + ], + }); + + this.tracker = new TrackerGroup(); + this.progressEnabled = this.gauge.isEnabled(); + + this.addLevel("silly", -Infinity, { inverse: true }, "sill"); + this.addLevel("verbose", 1000, { fg: "cyan", bg: "black" }, "verb"); + this.addLevel("info", 2000, { fg: "green" }); + this.addLevel("timing", 2500, { fg: "green", bg: "black" }); + this.addLevel("http", 3000, { fg: "green", bg: "black" }); + this.addLevel("notice", 3500, { fg: "cyan", bg: "black" }); + this.addLevel("warn", 4000, { fg: "black", bg: "yellow" }, "WARN"); + this.addLevel("error", 5000, { fg: "red", bg: "black" }, "ERR!"); + this.addLevel("silent", Infinity); + + this.on("error", () => {}); + } + + get stream(): WriteStream | null { + return this._stream; + } + + set stream(newStream: WriteStream | null) { + this._stream = newStream; + if (this.gauge) { + this.gauge.setWriteTo(this._stream, this._stream); + } + } + + useColor(): boolean { + return this.colorEnabled != null ? this.colorEnabled : this._stream?.isTTY ?? false; + } + + enableColor(): void { + this.colorEnabled = true; + this.gauge.setTheme({ hasColor: this.colorEnabled, hasUnicode: this.unicodeEnabled }); + } + + disableColor(): void { + this.colorEnabled = false; + this.gauge.setTheme({ hasColor: this.colorEnabled, hasUnicode: this.unicodeEnabled }); + } + + enableUnicode(): void { + this.unicodeEnabled = true; + this.gauge.setTheme({ hasColor: this.useColor(), hasUnicode: this.unicodeEnabled }); + } + + disableUnicode(): void { + this.unicodeEnabled = false; + this.gauge.setTheme({ hasColor: this.useColor(), hasUnicode: this.unicodeEnabled }); + } + + setGaugeThemeset(themes: any): void { + this.gauge.setThemeset(themes); + } + + setGaugeTemplate(template: any): void { + this.gauge.setTemplate(template); + } + + enableProgress(): void { + if (this.progressEnabled || this._paused) { + return; + } + this.progressEnabled = true; + this.tracker.on("change", this.showProgress.bind(this)); + this.gauge.enable(); + } + + disableProgress(): void { + if (!this.progressEnabled) { + return; + } + this.progressEnabled = false; + this.tracker.removeListener("change", this.showProgress.bind(this)); + this.gauge.disable(); + } + + clearProgress(cb?: () => void): void { + if (!this.progressEnabled) { + return cb && process.nextTick(cb); + } + this.gauge.hide(cb); + } + + showProgress(name?: string, completed?: number): void { + if (!this.progressEnabled) { + return; + } + const values: any = {}; + if (name) { + values.section = name; + } + const last = this.record[this.record.length - 1]; + if (last) { + values.subsection = last.prefix; + const disp = this.disp[last.level]; + let logline = this._format(disp, this.style[last.level]); + if (last.prefix) { + logline += " " + this._format(last.prefix, this.prefixStyle); + } + logline += " " + last.message.split(/\r?\n/)[0]; + values.logline = logline; + } + values.completed = completed || this.tracker.completed(); + this.gauge.show(values); + } + + pause(): void { + this._paused = true; + if (this.progressEnabled) { + this.gauge.disable(); + } + } + + resume(): void { + if (!this._paused) { + return; + } + this._paused = false; + const buffer = this._buffer; + this._buffer = []; + buffer.forEach((m) => this.emitLog(m)); + if (this.progressEnabled) { + this.gauge.enable(); + } + } + + log(lvl: string, prefix: string, ...messageArgs: any[]): void { + const l = this.levels[lvl]; + if (l === undefined) { + this.emit("error", new Error(util.format("Undefined log level: %j", lvl))); + return; + } + let stack = null; + const a = messageArgs.map((arg) => { + if (arg instanceof Error && arg.stack) { + Object.defineProperty(arg, "stack", { + value: (stack = arg.stack + ""), + enumerable: true, + writable: true, + }); + } + return arg; + }); + if (stack) { + a.unshift(stack + "\n"); + } + const message = util.format(...a); + const m = { + id: this.id++, + level: lvl, + prefix: String(prefix || ""), + message, + messageRaw: a, + }; + this.emit("log", m); + this.emit(`log.${lvl}`, m); + if (m.prefix) { + this.emit(m.prefix, m); + } + this.record.push(m); + const mrs = this.maxRecordSize; + if (this.record.length > mrs) { + this.record = this.record.slice(-Math.floor(mrs * 0.9)); + } + this.emitLog(m); + } + + emitLog(m: { prefix: string; level: string | number; message?: string }): void { + if (this._paused) { + this._buffer.push(m); + return; + } + if (this.progressEnabled) { + this.gauge.pulse(m.prefix); + } + const l = this.levels[m.level]; + if (l === undefined || l < this.levels[this.level] || (l > 0 && !isFinite(l))) { + return; + } + const disp = this.disp[m.level]; + this.clearProgress(); + m.message?.split(/\r?\n/).forEach((line) => { + const heading = this.heading; + if (heading) { + this.write(heading, this.headingStyle); + this.write(" "); + } + this.write(disp, this.style[m.level]); + const p = m.prefix || ""; + if (p) { + this.write(" "); + } + this.write(p, this.prefixStyle); + this.write(" " + line + "\n"); + }); + this.showProgress(); + } + + _format( + msg: string, + style?: { + fg?: string; + bg?: string; + bold?: boolean; + underline?: boolean; + inverse?: boolean; + beep?: boolean; + } + ): string | void { + if (!this._stream) { + return; + } + let output = ""; + if (this.useColor()) { + style = style || {}; + const settings = []; + if (style.fg) settings.push(style.fg); + if (style.bg) settings.push("bg" + style.bg[0].toUpperCase() + style.bg.slice(1)); + if (style.bold) settings.push("bold"); + if (style.underline) settings.push("underline"); + if (style.inverse) settings.push("inverse"); + if (settings.length) output += consoleControl.color(settings); + if (style.beep) output += consoleControl.beep(); + } + output += msg; + if (this.useColor()) output += consoleControl.color("reset"); + return output; + } + + write( + msg: string, + style?: { + fg?: string; + bg?: string; + bold?: boolean; + underline?: boolean; + inverse?: boolean; + beep?: boolean; + } + ): void { + if (!this._stream) { + return; + } + this._stream.write(this._format(msg, style) as any); + } + + addLevel(lvl: string | number, n: any, style?: any, disp: string | number | null = null): void { + if (disp == null) { + disp = lvl as string; + } + this.levels[lvl] = n; + this.style[lvl] = style; + if (!this[lvl]) { + this[lvl] = (...args: any[]) => { + const a: any = [lvl, ...args]; + // eslint-disable-next-line prefer-spread + return this.log.apply(this, a); + }; + } + this.disp[lvl] = disp; + } +} + +const log = new Logger(); + +const trackerConstructors = ["newGroup", "newItem", "newStream"]; + +const mixinLog = function (tracker: { [x: string]: () => any }) { + // mixin the public methods from log into the tracker + // (except: conflicts and one's we handle specially) + Array.from( + new Set([...Object.keys(log), ...Object.getOwnPropertyNames(Object.getPrototypeOf(log))]) + ).forEach(function (P) { + if (P[0] === "_") { + return; + } + + if ( + trackerConstructors.filter(function (C) { + return C === P; + }).length + ) { + return; + } + + if (tracker[P]) { + return; + } + + if (typeof log[P] !== "function") { + return; + } + + const func = log[P]; + tracker[P] = function () { + // eslint-disable-next-line prefer-rest-params + return func.apply(log, arguments); + }; + }); + // if the new tracker is a group, make sure any subtrackers get + // mixed in too + if (tracker instanceof TrackerGroup) { + trackerConstructors.forEach(function (C) { + const func = tracker[C]; + tracker[C] = function () { + // eslint-disable-next-line prefer-rest-params + return mixinLog(func.apply(tracker, arguments as any)); + }; + }); + } + return tracker; +}; + +// Add tracker constructors to the top level log object +trackerConstructors.forEach(function (C) { + log[C] = function () { + // eslint-disable-next-line prefer-spread, prefer-rest-params + return mixinLog(this.tracker[C].apply(this.tracker, arguments)); + }; +}); + +export default log; diff --git a/libs/core/src/lib/npmlog/tests/basic.spec.ts b/libs/core/src/lib/npmlog/tests/basic.spec.ts new file mode 100644 index 0000000000..334d62f748 --- /dev/null +++ b/libs/core/src/lib/npmlog/tests/basic.spec.ts @@ -0,0 +1,554 @@ +/** + * Adapted from https://github.com/npm/npmlog/blob/756bd05d01e7e4841fba25204d6b85dfcffeba3c/test/basic.js + */ +import stream from "node:stream"; + +import log, { Logger } from "../"; + +const result: any[] = []; +const logEvents: any[] = []; +const logInfoEvents: any[] = []; +const logPrefixEvents: any[] = []; + +const resultExpect = [ + // eslint-disable-next-line max-len + '\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[7msill\u001b[0m \u001b[0m\u001b[35msilly prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n', + // eslint-disable-next-line max-len + '\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[36;40mverb\u001b[0m \u001b[0m\u001b[35mverbose prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n', + // eslint-disable-next-line max-len + '\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[32minfo\u001b[0m \u001b[0m\u001b[35minfo prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n', + // eslint-disable-next-line max-len + '\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[32;40mtiming\u001b[0m \u001b[0m\u001b[35mtiming prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n', + // eslint-disable-next-line max-len + '\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[32;40mhttp\u001b[0m \u001b[0m\u001b[35mhttp prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n', + // eslint-disable-next-line max-len + '\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[36;40mnotice\u001b[0m \u001b[0m\u001b[35mnotice prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n', + // eslint-disable-next-line max-len + '\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mwarn prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n', + // eslint-disable-next-line max-len + '\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[31;40mERR!\u001b[0m \u001b[0m\u001b[35merror prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n', + // eslint-disable-next-line max-len + '\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[32minfo\u001b[0m \u001b[0m\u001b[35minfo prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n', + // eslint-disable-next-line max-len + '\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[32;40mtiming\u001b[0m \u001b[0m\u001b[35mtiming prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n', + // eslint-disable-next-line max-len + '\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[32;40mhttp\u001b[0m \u001b[0m\u001b[35mhttp prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n', + // eslint-disable-next-line max-len + '\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[36;40mnotice\u001b[0m \u001b[0m\u001b[35mnotice prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n', + // eslint-disable-next-line max-len + '\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[30;43mWARN\u001b[0m \u001b[0m\u001b[35mwarn prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n', + // eslint-disable-next-line max-len + '\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[31;40mERR!\u001b[0m \u001b[0m\u001b[35merror prefix\u001b[0m x = {"foo":{"bar":"baz"}}\n', + // eslint-disable-next-line max-len + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[31;40mERR!\u001b[0m \u001b[0m\u001b[35m404\u001b[0m This is a longer\n", + // eslint-disable-next-line max-len + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[31;40mERR!\u001b[0m \u001b[0m\u001b[35m404\u001b[0m message, with some details\n", + // eslint-disable-next-line max-len + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[31;40mERR!\u001b[0m \u001b[0m\u001b[35m404\u001b[0m and maybe a stack.\n", + // eslint-disable-next-line max-len + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u001b[31;40mERR!\u001b[0m \u001b[0m\u001b[35m404\u001b[0m \n", + // eslint-disable-next-line max-len + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u0007noise\u001b[0m\u001b[35m\u001b[0m LOUD NOISES\n", + // eslint-disable-next-line max-len + "\u001b[0m\u001b[37;40mnpm\u001b[0m \u001b[0m\u0007noise\u001b[0m \u001b[0m\u001b[35merror\u001b[0m erroring\n", + "\u001b[0m", +]; + +const logPrefixEventsExpect = [ + { + id: 2, + level: "info", + prefix: "info prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 11, + level: "info", + prefix: "info prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 20, + level: "info", + prefix: "info prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, +]; + +// should be the same. +const logInfoEventsExpect = logPrefixEventsExpect; + +const logEventsExpect = [ + { + id: 0, + level: "silly", + prefix: "silly prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 1, + level: "verbose", + prefix: "verbose prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 2, + level: "info", + prefix: "info prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 3, + level: "timing", + prefix: "timing prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 4, + level: "http", + prefix: "http prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 5, + level: "notice", + prefix: "notice prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 6, + level: "warn", + prefix: "warn prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 7, + level: "error", + prefix: "error prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 8, + level: "silent", + prefix: "silent prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 9, + level: "silly", + prefix: "silly prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 10, + level: "verbose", + prefix: "verbose prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 11, + level: "info", + prefix: "info prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 12, + level: "timing", + prefix: "timing prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 13, + level: "http", + prefix: "http prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 14, + level: "notice", + prefix: "notice prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 15, + level: "warn", + prefix: "warn prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 16, + level: "error", + prefix: "error prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 17, + level: "silent", + prefix: "silent prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 18, + level: "silly", + prefix: "silly prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 19, + level: "verbose", + prefix: "verbose prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 20, + level: "info", + prefix: "info prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 21, + level: "timing", + prefix: "timing prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 22, + level: "http", + prefix: "http prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 23, + level: "notice", + prefix: "notice prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 24, + level: "warn", + prefix: "warn prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 25, + level: "error", + prefix: "error prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 26, + level: "silent", + prefix: "silent prefix", + message: 'x = {"foo":{"bar":"baz"}}', + messageRaw: ["x = %j", { foo: { bar: "baz" } }], + }, + { + id: 27, + level: "error", + prefix: "404", + message: "This is a longer\nmessage, with some details\nand maybe a stack.\n", + messageRaw: ["This is a longer\nmessage, with some details\nand maybe a stack.\n"], + }, + { id: 28, level: "noise", prefix: "", message: "LOUD NOISES", messageRaw: ["LOUD NOISES"] }, + { id: 29, level: "noise", prefix: "error", message: "erroring", messageRaw: ["erroring"] }, +]; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +const Stream = require("stream").Stream; +const s = new Stream(); +s.write = function (m: any) { + result.push(m); +}; + +s.writable = true; +s.isTTY = true; +s.end = function () {}; + +log.stream = s; + +log.heading = "npm"; + +describe("Basic Tests", () => { + test("Basic log test", () => { + expect(log.stream).toBe(s); + + log.on("log", logEvents.push.bind(logEvents)); + log.on("log.info", logInfoEvents.push.bind(logInfoEvents)); + log.on("info prefix", logPrefixEvents.push.bind(logPrefixEvents)); + + console.error("log.level=silly"); + log.level = "silly"; + log.silly("silly prefix", "x = %j", { foo: { bar: "baz" } }); + log.verbose("verbose prefix", "x = %j", { foo: { bar: "baz" } }); + log.info("info prefix", "x = %j", { foo: { bar: "baz" } }); + log.timing("timing prefix", "x = %j", { foo: { bar: "baz" } }); + log.http("http prefix", "x = %j", { foo: { bar: "baz" } }); + log.notice("notice prefix", "x = %j", { foo: { bar: "baz" } }); + log.warn("warn prefix", "x = %j", { foo: { bar: "baz" } }); + log.error("error prefix", "x = %j", { foo: { bar: "baz" } }); + log.silent("silent prefix", "x = %j", { foo: { bar: "baz" } }); + + console.error("log.level=silent"); + log.level = "silent"; + log.silly("silly prefix", "x = %j", { foo: { bar: "baz" } }); + log.verbose("verbose prefix", "x = %j", { foo: { bar: "baz" } }); + log.info("info prefix", "x = %j", { foo: { bar: "baz" } }); + log.timing("timing prefix", "x = %j", { foo: { bar: "baz" } }); + log.http("http prefix", "x = %j", { foo: { bar: "baz" } }); + log.notice("notice prefix", "x = %j", { foo: { bar: "baz" } }); + log.warn("warn prefix", "x = %j", { foo: { bar: "baz" } }); + log.error("error prefix", "x = %j", { foo: { bar: "baz" } }); + log.silent("silent prefix", "x = %j", { foo: { bar: "baz" } }); + + console.error("log.level=info"); + log.level = "info"; + log.silly("silly prefix", "x = %j", { foo: { bar: "baz" } }); + log.verbose("verbose prefix", "x = %j", { foo: { bar: "baz" } }); + log.info("info prefix", "x = %j", { foo: { bar: "baz" } }); + log.timing("timing prefix", "x = %j", { foo: { bar: "baz" } }); + log.http("http prefix", "x = %j", { foo: { bar: "baz" } }); + log.notice("notice prefix", "x = %j", { foo: { bar: "baz" } }); + log.warn("warn prefix", "x = %j", { foo: { bar: "baz" } }); + log.error("error prefix", "x = %j", { foo: { bar: "baz" } }); + log.silent("silent prefix", "x = %j", { foo: { bar: "baz" } }); + log.error("404", "This is a longer\n" + "message, with some details\n" + "and maybe a stack.\n"); + log.addLevel("noise", 10000, { beep: true }); + log.noise(false, "LOUD NOISES"); + log.noise("error", "erroring"); + + expect(result.join("").trim()).toBe(resultExpect.join("").trim()); + expect(log.record).toEqual(logEventsExpect); + expect(logEvents).toEqual(logEventsExpect); + expect(logInfoEvents).toEqual(logInfoEventsExpect); + expect(logPrefixEvents).toEqual(logPrefixEventsExpect); + }); + + describe("Util Functions", () => { + let log: Logger; + + beforeEach(() => { + log = new Logger(); + }); + + afterEach(() => { + log.resume(); + log.gauge.enable(); + }); + + test("enableColor", () => { + log.enableColor(); + expect(log.useColor()).toBe(true); + expect(log.gauge._theme).toHaveProperty("hasColor", true); + log.disableColor(); + }); + + test("disableColor", () => { + log.disableColor(); + expect(log.useColor()).toBe(false); + expect(log.gauge._theme).toHaveProperty("hasColor", false); + }); + + test("enableUnicode", () => { + log.enableUnicode(); + expect(log.gauge._theme).toHaveProperty("hasUnicode", true); + log.disableUnicode(); + }); + + test("disableUnicode", () => { + log.disableUnicode(); + expect(log.gauge._theme).toHaveProperty("hasUnicode", false); + }); + + test("themes", () => { + const _themes = log.gauge._themes; + // eslint-disable-next-line @typescript-eslint/no-var-requires + const themes = require("../gauge/themes"); + const newThemes = themes.newThemeSet(); + log.setGaugeThemeset(newThemes); + expect(log.gauge._themes).toEqual(newThemes); + log.setGaugeThemeset(_themes); + }); + + test("template", () => { + const _template = log.gauge._gauge.template; + const template = [{ type: "progressbar", length: 100 }]; + log.setGaugeTemplate(template); + expect(log.gauge._gauge.template).toEqual(template); + log.gauge._gauge.template = _template; + }); + + test("enableProgress while paused", () => { + log.disableProgress(); + log.pause(); + log.enableProgress(); + expect(log.gauge.isEnabled()).toBe(false); + }); + + test("pause while progressEnabled", () => { + log.pause(); + expect(log.gauge.isEnabled()).toBe(false); + }); + + test("_buffer while paused", () => { + log.pause(); + log.log("verbose", "test", "test log"); + expect((log as any)._buffer.length).toBe(1); + log.resume(); + expect((log as any)._buffer.length).toBe(0); + }); + }); + + describe("log.log", () => { + // eslint-disable-next-line jest/no-done-callback + test("emits error on bad loglevel", (done) => { + log.once("error", (err: { message: any }) => { + expect(err.message).toMatch(/Undefined log level: "asdf"/); + done(); + }); + log.log("asdf", "bad loglevel"); + }); + + // eslint-disable-next-line jest/no-done-callback + test("resolves stack traces to a plain string", (done) => { + log.once("log", (m: { message: any }) => { + expect(m.message).toMatch("Error: with a stack trace"); + expect(m.message).toMatch("_runTest"); + done(); + }); + const err = new Error("with a stack trace"); + log.log("verbose", "oops", err); + }); + + test("max record size", () => { + const mrs = log.maxRecordSize; + log.maxRecordSize = 3; + log.log("verbose", "test", "log 1"); + log.log("verbose", "test", "log 2"); + log.log("verbose", "test", "log 3"); + log.log("verbose", "test", "log 4"); + expect(log.record.length).toBe(3); + log.maxRecordSize = mrs; + }); + }); + + describe("write with no stream", () => { + const gauge = log.gauge; + + afterAll(() => { + log.gauge = gauge; + log.stream = s; + }); + + test("should not throw", () => { + log.gauge = null; + log.stream = null; + expect(() => log.write("message")).not.toThrow(); + }); + }); + + describe("emitLog to nonexistant level", () => { + afterEach(() => { + log.stream = s; + }); + + test("should not throw", () => { + const badStream = new stream.Writable(); + badStream.on("data", () => { + throw new Error("should not have gotten data!"); + }); + expect(() => log.emitLog({ prefix: "test", level: "asdf" })).not.toThrow(); + }); + }); + + describe("_format with nonexistant stream", () => { + const gauge = log.gauge; + + afterAll(() => { + log.gauge = gauge; + log.stream = s; + }); + + test("should return undefined", () => { + log.gauge = null; + log.stream = null; + expect(log._format("message")).toBeUndefined(); + }); + }); + + describe("_format", () => { + afterAll(() => { + log.disableColor(); + }); + + test("nonexistant stream", () => { + const gauge = log.gauge; + + log.gauge = null; + log.stream = null; + expect(log._format("message")).toBeUndefined(); + + // Restore the original gauge and stream + log.gauge = gauge; + log.stream = s; + }); + + test("fg", () => { + log.enableColor(); + const o = log._format("test message", { bg: "blue" }); + expect(o).toMatch("\u001b[44mtest message\u001b[0m"); + }); + + test("bg", () => { + log.enableColor(); + const o = log._format("test message", { bg: "white" }); + expect(o).toMatch("\u001b[47mtest message\u001b[0m"); + }); + + test("bold", () => { + log.enableColor(); + const o = log._format("test message", { bold: true }); + expect(o).toMatch("\u001b[1mtest message\u001b[0m"); + }); + + test("underline", () => { + log.enableColor(); + const o = log._format("test message", { underline: true }); + expect(o).toMatch("\u001b[4mtest message\u001b[0m"); + }); + + test("inverse", () => { + log.enableColor(); + const o = log._format("test message", { inverse: true }); + expect(o).toMatch("\u001b[7mtest message\u001b[0m"); + }); + }); +}); diff --git a/libs/core/src/lib/npmlog/tests/display.spec.ts b/libs/core/src/lib/npmlog/tests/display.spec.ts new file mode 100644 index 0000000000..935521c310 --- /dev/null +++ b/libs/core/src/lib/npmlog/tests/display.spec.ts @@ -0,0 +1,36 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ + +import log from "../"; + +describe("log level display", () => { + let actual = ""; + + beforeEach(() => { + const writeSpy = jest.spyOn(log, "write"); + writeSpy.mockImplementation((msg: any) => { + actual += msg; + }); + }); + + afterEach(() => { + actual = ""; + jest.clearAllMocks(); + }); + + it("should set new log level display to empty string", () => { + log.addLevel("explicitNoLevelDisplayed", 20000, {}, ""); + log.explicitNoLevelDisplayed("1", "2"); + expect(actual.trim()).toBe("1 2"); + + actual = ""; + + log.explicitNoLevelDisplayed("", "1"); + expect(actual.trim()).toBe("1"); + }); + + it("should set new log level display to 0", () => { + log.addLevel("explicitNoLevelDisplayed", 20000, {}, 0); + log.explicitNoLevelDisplayed("", "1"); + expect(actual.trim()).toBe("0 1"); + }); +}); diff --git a/libs/core/src/lib/npmlog/tests/progress.spec.ts b/libs/core/src/lib/npmlog/tests/progress.spec.ts new file mode 100644 index 0000000000..33652f165f --- /dev/null +++ b/libs/core/src/lib/npmlog/tests/progress.spec.ts @@ -0,0 +1,298 @@ +/* eslint-disable prefer-rest-params */ +/* eslint-disable @typescript-eslint/no-var-requires */ + +import log from "../"; +import { TrackerGroup } from "../are-we-there-yet/tracker-group"; + +let actions: any[] = []; + +function recursiveMatch(actual: any, expected: any, desc: string) { + if (expected instanceof RegExp) { + expect(actual).toMatch(expected); + } else if (typeof expected === "boolean") { + expect(!!actual).toBe(expected); + } else if (typeof expected !== "object" || expected == null) { + expect(actual).toBe(expected); + } else { + if (actual == null) { + actual = {}; + } + Object.keys(expected).forEach((key) => { + recursiveMatch(actual[key], expected[key], desc + ":" + key); + }); + if (Array.isArray(actual)) { + expect(actual.length).toBe(expected.length); + } else { + Object.keys(actual).forEach((key) => { + if (expected[key] == null) { + throw new Error(desc + ":" + key + " should not be set"); + } + }); + } + } +} + +function didActions(msg: string, output: any) { + expect(actions.length).toBe(output.length); + + for (let cmd = 0; cmd < output.length; ++cmd) { + recursiveMatch(actions[cmd], output[cmd], msg + ":" + output[cmd][0]); + } + + actions = []; +} + +describe("log module", () => { + beforeEach(() => { + // Reset log.gauge to a new instance to avoid state leak between tests + log.gauge = { + enabled: false, + enable() { + this.enabled = true; + actions.push(["enable"]); + }, + disable() { + this.enabled = false; + actions.push(["disable"]); + }, + isEnabled() { + return this.enabled; + }, + hide() { + actions.push(["hide"]); + }, + show() { + actions.push(["show"].concat(Array.prototype.slice.call(arguments))); + }, + pulse(name: any) { + actions.push(["pulse", name]); + }, + }; + + // In the original implementation, the tests were performed using tap which does not set color, so force disable it in jest too to keep assertions consistent + log.useColor = () => false; + log.disableProgress(); + log.resume(); + log.tracker = new TrackerGroup(); + log.enableProgress(); + actions = []; + }); + + afterEach(() => { + actions = []; + }); + + it("enableProgress", () => { + log.disableProgress(); + actions = []; + log.enableProgress(); + didActions("enableProgress", [["enable"]]); + log.enableProgress(); + didActions("enableProgress again", []); + }); + + it("disableProgress", () => { + log.disableProgress(); + didActions("disableProgress", [["disable"]]); + log.disableProgress(); + didActions("disableProgress again", []); + }); + + it("showProgress", () => { + log.disableProgress(); + actions = []; + log.showProgress("foo"); + didActions("showProgress disabled", []); + log.enableProgress(); + actions = []; + log.showProgress("foo"); + didActions("showProgress", [["show", { section: "foo", completed: 0 }]]); + actions = []; + // @ts-expect-error ... + log.log("info", undefined, "foo"); + actions = []; + log.showProgress("foo"); + didActions("showProgress", [ + ["show", { section: "foo", subsection: "", completed: 0, logline: "info foo" }], + ]); + log.record.length = 0; + }); + + it("clearProgress", () => { + log.clearProgress(); + didActions("clearProgress", [["hide"]]); + log.disableProgress(); + actions = []; + log.clearProgress(); + didActions("clearProgress disabled", []); + actions = []; + log.clearProgress(() => { + expect(true).toBe(true); + }); + didActions("clearProgress disabled", []); + }); + + it("newItem", () => { + actions = []; + const a = log.newItem("test", 10); + didActions("newItem", [ + [ + "show", + { + section: "test", + completed: 0, + subsection: false, + logline: false, + }, + ], + ]); + a.completeWork(5); + didActions("newItem:completeWork", [ + [ + "show", + { + section: "test", + completed: 0.5, + subsection: false, + logline: false, + }, + ], + ]); + a.finish(); + didActions("newItem:finish", [ + [ + "show", + { + section: "test", + completed: 1, + subsection: false, + logline: false, + }, + ], + ]); + }); + + it("newGroup", () => { + const a = log.newGroup("newGroup"); + didActions("newGroup", [ + [ + "show", + { + section: "newGroup", + completed: 0, + subsection: false, + logline: false, + }, + ], + ]); + a.warn("test", "this is a test"); + didActions("newGroup:warn", [ + ["pulse", "test"], + ["hide"], + [ + "show", + { + subsection: "test", + logline: /this is a test$/, + completed: 0, + }, + ], + ]); + const b = a.newItem("newGroup2", 10); + didActions("newGroup:newItem", [ + [ + "show", + { + section: "newGroup2", + completed: 0, + subsection: true, + logline: true, + }, + ], + ]); + b.completeWork(5); + didActions("newGroup:completeWork", [ + [ + "show", + { + section: "newGroup2", + completed: 0.5, + subsection: true, + logline: true, + }, + ], + ]); + a.finish(); + didActions("newGroup:finish", [ + [ + "show", + { + section: "newGroup", + completed: 1, + subsection: true, + logline: true, + }, + ], + ]); + }); + + it("newStream", () => { + const a = log.newStream("newStream", 10); + didActions("newStream", [ + [ + "show", + { + completed: 0, + section: "newStream", + subsection: true, + logline: true, + }, + ], + ]); + a.write("abcde"); + didActions("newStream", [ + [ + "show", + { + completed: 0.5, + section: "newStream", + subsection: true, + logline: true, + }, + ], + ]); + a.write("fghij"); + didActions("newStream", [ + [ + "show", + { + completed: 1, + section: "newStream", + subsection: true, + logline: true, + }, + ], + ]); + expect(log.tracker.completed()).toBe(1); // Overall completion + }); + + it("enableProgress while paused", () => { + log.disableProgress(); + actions = []; + log.pause(); + log.enableProgress(); + didActions("enableProgress", []); + log.enableProgress(); + didActions("enableProgress again", []); + }); + + it("pause while enableProgress", () => { + log.disableProgress(); + actions = []; + log.enableProgress(); + log.pause(); + didActions("enableProgress", [["enable"], ["disable"]]); + log.resume(); + didActions("enableProgress", [["enable"]]); + }); +}); diff --git a/libs/core/src/lib/output.ts b/libs/core/src/lib/output.ts index 43e34ede16..56e13a2e50 100644 --- a/libs/core/src/lib/output.ts +++ b/libs/core/src/lib/output.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import log from "./npmlog"; // istanbul ignore next export function output(...args: any[]) { diff --git a/libs/core/src/lib/pack-directory.spec.ts b/libs/core/src/lib/pack-directory.spec.ts index eb4de000dd..d824b4d40f 100644 --- a/libs/core/src/lib/pack-directory.spec.ts +++ b/libs/core/src/lib/pack-directory.spec.ts @@ -38,9 +38,6 @@ function serializeTempDir(match: any, cwd: any, subPath: string) { // process.umask() differs between macOS and Ubuntu, // so we need to overwrite derived hashes for consistency expect.addSnapshotSerializer({ - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore test(val) { if (isObject(val)) { // 420 in macOS, 436 in Ubuntu @@ -51,6 +48,8 @@ expect.addSnapshotSerializer({ // integrity or shasum return /sha512-[\S]{88}/.test(val) || /[0-9a-f]{40}/.test(val) || TAR_DIR_REGEXP.test(val); } + + return false; }, serialize(val, config, indentation, depth, refs, printer) { if (isString(val)) { @@ -80,9 +79,6 @@ expect.addSnapshotSerializer({ /* eslint-enable no-param-reassign */ let result = "Object {"; - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore result += printObjectProperties(val, config, indentation, depth, refs, printer); result += "}"; @@ -98,10 +94,7 @@ describe("pack-directory", () => { // choose first and last package since the middle two are repetitive const [head, tail] = await Promise.all( - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - [pkgs.shift(), pkgs.pop()].map((pkg) => packDirectory(pkg, pkg.location, conf)) + [pkgs.shift()!, pkgs.pop()!].map((pkg) => packDirectory(pkg, pkg.location, conf)) ); const INTEGRITY_PATTERN = /sha512-[\S]{88}/; @@ -136,13 +129,7 @@ describe("pack-directory", () => { `); // integrity is an instance of Integrity // https://github.com/zkat/ssri/blob/a4337cd672f341deee2b52699b6720d82e4d0ddf/index.js#L83 - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore expect(head.integrity.toString()).toMatch(INTEGRITY_PATTERN); - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore expect(head.shasum).toMatch(SHASUM_PATTERN); expect(tail).toMatchInlineSnapshot(` @@ -172,24 +159,12 @@ describe("pack-directory", () => { "version": "4.0.0", } `); - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore expect(tail.integrity.toString()).toMatch(INTEGRITY_PATTERN); - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore expect(tail.shasum).toMatch(SHASUM_PATTERN); - const next = pkgs.pop(); + const next = pkgs.pop()!; const pubs = await packDirectory( - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore next, - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore next.location, Object.assign({}, conf, { ignorePrepublish: true, diff --git a/libs/core/src/lib/pack-directory.ts b/libs/core/src/lib/pack-directory.ts index 1a81762e3a..2cca0e3ac6 100644 --- a/libs/core/src/lib/pack-directory.ts +++ b/libs/core/src/lib/pack-directory.ts @@ -1,10 +1,10 @@ +import Arborist from "@npmcli/arborist"; import packlist from "npm-packlist"; -import log from "npmlog"; import path from "path"; import { IntegrityMap } from "ssri"; -import type { Readable } from "stream"; import tar from "tar"; import { getPacked } from "./get-packed"; +import log from "./npmlog"; import { Package } from "./package"; import { runLifecycle } from "./run-lifecycle"; import tempWrite from "./temp-write"; @@ -36,87 +36,67 @@ export interface Packed { * @param dir to pack * @param options */ -export function packDirectory(_pkg: Package | string, dir: string, options: PackConfig): Promise { +export async function packDirectory( + _pkg: Package | string, + dir: string, + options: PackConfig +): Promise { const pkg = Package.lazy(_pkg, dir); - const opts = { + const opts: PackConfig = { log, ...options, }; - opts.log.verbose("pack-directory", path.relative(".", pkg.contents)); - - let chain = Promise.resolve(undefined); + opts.log!.verbose("pack-directory", path.relative(".", pkg.contents)); if (opts.ignorePrepublish !== true) { - chain = chain.then(() => runLifecycle(pkg, "prepublish", opts)); + await runLifecycle(pkg, "prepublish", opts); } - chain = chain.then(() => runLifecycle(pkg, "prepare", opts)); + await runLifecycle(pkg, "prepare", opts); if (opts.lernaCommand === "publish") { // TODO: refactor based on TS feedback // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore opts.stdio = "inherit"; - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - chain = chain.then(() => pkg.refresh()); - chain = chain.then(() => runLifecycle(pkg, "prepublishOnly", opts)); - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - chain = chain.then(() => pkg.refresh()); + + await pkg.refresh(); + await runLifecycle(pkg, "prepublishOnly", opts); + await pkg.refresh(); } - chain = chain.then(() => runLifecycle(pkg, "prepack", opts)); - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - chain = chain.then(() => pkg.refresh()); - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - chain = chain.then(() => packlist({ path: pkg.contents })); - chain = chain.then((files) => - tar.create( - { - cwd: pkg.contents, - prefix: "package/", - portable: true, - // Provide a specific date in the 1980s for the benefit of zip, - // which is confounded by files dated at the Unix epoch 0. - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - mtime: new Date("1985-10-26T08:15:00.000Z"), - gzip: true, - }, - // NOTE: node-tar does some Magic Stuff depending on prefixes for files - // specifically with @ signs, so we just neutralize that one - // and any such future "features" by prepending `./` - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - files.map((f) => `./${f}`) - ) - ); - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - chain = chain.then((stream) => tempWrite(stream, getTarballName(pkg))); - // TODO: refactor based on TS feedback - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - chain = chain.then((tarFilePath) => - getPacked(pkg, tarFilePath).then((packed) => - Promise.resolve() - .then(() => runLifecycle(pkg, "postpack", opts)) - .then(() => packed) - ) + await runLifecycle(pkg, "prepack", opts); + await pkg.refresh(); + + const arborist = new Arborist({ + path: pkg.contents, + }); + const tree = await arborist.loadActual(); + const files = await packlist(tree); + + const stream = tar.create( + { + cwd: pkg.contents, + prefix: "package/", + portable: true, + // Provide a specific date in the 1980s for the benefit of zip, + // which is confounded by files dated at the Unix epoch 0. + mtime: new Date("1985-10-26T08:15:00.000Z"), + gzip: true, + }, + // NOTE: node-tar does some Magic Stuff depending on prefixes for files + // specifically with @ signs, so we just neutralize that one + // and any such future "features" by prepending `./` + files.map((f) => `./${f}`) ); - return chain as unknown as Promise; + const tarFilePath = await tempWrite(stream, getTarballName(pkg)); + const packed = await getPacked(pkg, tarFilePath); + + await runLifecycle(pkg, "postpack", opts); + + return packed; } function getTarballName(pkg: Package) { diff --git a/libs/core/src/lib/profiler.ts b/libs/core/src/lib/profiler.ts index 1f207aa501..a12d92c5d3 100644 --- a/libs/core/src/lib/profiler.ts +++ b/libs/core/src/lib/profiler.ts @@ -1,6 +1,6 @@ import fs from "fs-extra"; -import npmlog from "npmlog"; import upath from "upath"; +import npmlog, { Logger } from "./npmlog"; const hrtimeToMicroseconds = (hrtime: number[]) => { return (hrtime[0] * 1e9 + hrtime[1]) / 1000; @@ -39,7 +39,7 @@ interface ProfilerConfig { */ export class Profiler { events: any[]; - logger: npmlog.Logger; + logger: Logger; outputPath: string; threads: number[]; diff --git a/libs/core/src/lib/project/index.ts b/libs/core/src/lib/project/index.ts index bddbda2330..56dac40199 100644 --- a/libs/core/src/lib/project/index.ts +++ b/libs/core/src/lib/project/index.ts @@ -7,9 +7,9 @@ import globParent from "glob-parent"; import globby from "globby"; import { load } from "js-yaml"; import loadJsonFile from "load-json-file"; -import log from "npmlog"; import pMap from "p-map"; import path from "path"; +import log from "../npmlog"; import { Package, RawManifest } from "../package"; import { ValidationError } from "../validation-error"; import { applyExtends } from "./apply-extends"; diff --git a/libs/core/src/lib/prompt.ts b/libs/core/src/lib/prompt.ts index 5f408d56aa..ab24c1a9d1 100644 --- a/libs/core/src/lib/prompt.ts +++ b/libs/core/src/lib/prompt.ts @@ -1,5 +1,5 @@ import inquirer from "inquirer"; -import log from "npmlog"; +import log from "./npmlog"; /** * Prompt for confirmation diff --git a/libs/core/src/lib/pulse-till-done.ts b/libs/core/src/lib/pulse-till-done.ts index 046c8f1aa2..37ed28b6fd 100644 --- a/libs/core/src/lib/pulse-till-done.ts +++ b/libs/core/src/lib/pulse-till-done.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import log from "./npmlog"; let pulsers = 0; let pulse: NodeJS.Timeout; @@ -10,7 +10,7 @@ function pulseStart(prefix: any) { return; } - pulse = setInterval(() => log["gauge"].pulse(prefix), 150); + pulse = setInterval(() => log.gauge.pulse(prefix), 150); } function pulseStop() { diff --git a/libs/core/src/lib/rimraf-dir.ts b/libs/core/src/lib/rimraf-dir.ts index 7bad94bebc..b1111545fe 100644 --- a/libs/core/src/lib/rimraf-dir.ts +++ b/libs/core/src/lib/rimraf-dir.ts @@ -1,6 +1,6 @@ import { existsSync } from "fs"; -import log from "npmlog"; import rimraf from "rimraf"; +import log from "./npmlog"; export async function rimrafDir(dirPath: string) { log.silly("rimrafDir", dirPath); diff --git a/libs/core/src/lib/run-lifecycle.ts b/libs/core/src/lib/run-lifecycle.ts index 7cb5e32846..d897caa461 100644 --- a/libs/core/src/lib/run-lifecycle.ts +++ b/libs/core/src/lib/run-lifecycle.ts @@ -1,5 +1,5 @@ -import log from "npmlog"; import PQueue from "p-queue"; +import log from "./npmlog"; import { Package } from "./package"; // @npmcli/run-script does not have any types diff --git a/libs/core/src/lib/scm-clients/github/create-github-client.ts b/libs/core/src/lib/scm-clients/github/create-github-client.ts index 372ba7950b..c065957b14 100644 --- a/libs/core/src/lib/scm-clients/github/create-github-client.ts +++ b/libs/core/src/lib/scm-clients/github/create-github-client.ts @@ -1,6 +1,6 @@ import { Octokit } from "@octokit/rest"; import parseGitUrl from "git-url-parse"; -import log from "npmlog"; +import log from "../../npmlog"; import { ValidationError } from "../../validation-error"; // eslint-disable-next-line @typescript-eslint/no-var-requires diff --git a/libs/core/src/lib/scm-clients/gitlab/create-gitlab-client.ts b/libs/core/src/lib/scm-clients/gitlab/create-gitlab-client.ts index 7cd53d5cf2..db6413ef93 100644 --- a/libs/core/src/lib/scm-clients/gitlab/create-gitlab-client.ts +++ b/libs/core/src/lib/scm-clients/gitlab/create-gitlab-client.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import log from "../../npmlog"; import { GitLabClient } from "./gitlab-client"; function OcktokitAdapter(client: GitLabClient) { diff --git a/libs/core/src/lib/scm-clients/gitlab/gitlab-client.ts b/libs/core/src/lib/scm-clients/gitlab/gitlab-client.ts index 9c395212c2..ca40e98abe 100644 --- a/libs/core/src/lib/scm-clients/gitlab/gitlab-client.ts +++ b/libs/core/src/lib/scm-clients/gitlab/gitlab-client.ts @@ -1,6 +1,6 @@ import fetch from "node-fetch"; -import log from "npmlog"; import path from "path"; +import log from "../../npmlog"; export class GitLabClient { constructor(public token: string, public baseUrl = "https://gitlab.com/api/v4") {} diff --git a/libs/core/src/lib/validation-error.ts b/libs/core/src/lib/validation-error.ts index 54d6b75c9b..1a386da981 100644 --- a/libs/core/src/lib/validation-error.ts +++ b/libs/core/src/lib/validation-error.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import log from "./npmlog"; export class ValidationError extends Error { prefix: string; diff --git a/libs/core/src/lib/write-log-file.ts b/libs/core/src/lib/write-log-file.ts index 7aea9a69b1..438391c8cd 100644 --- a/libs/core/src/lib/write-log-file.ts +++ b/libs/core/src/lib/write-log-file.ts @@ -1,7 +1,7 @@ -import log from "npmlog"; import os from "os"; import path from "path"; import writeFileAtomic from "write-file-atomic"; +import log from "./npmlog"; export function writeLogFile(cwd: string) { let logOutput = ""; @@ -19,8 +19,8 @@ export function writeLogFile(cwd: string) { m.message .trim() .split(/\r?\n/) - .map((line) => `${pref} ${line}`.trim()) - .forEach((line) => { + .map((line: string) => `${pref} ${line}`.trim()) + .forEach((line: string) => { logOutput += line + os.EOL; }); }); diff --git a/libs/legacy-core/src/lib/collect-updates/has-tags.ts b/libs/legacy-core/src/lib/collect-updates/has-tags.ts index c51c5a7f8e..2ecdd146e5 100644 --- a/libs/legacy-core/src/lib/collect-updates/has-tags.ts +++ b/libs/legacy-core/src/lib/collect-updates/has-tags.ts @@ -1,6 +1,6 @@ // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); -import log from "npmlog"; +import { log } from "@lerna/core"; /** * Determine if any git tags are reachable. diff --git a/libs/legacy-core/src/lib/collect-updates/index.ts b/libs/legacy-core/src/lib/collect-updates/index.ts index 483dd431bb..6d3c0c1afc 100644 --- a/libs/legacy-core/src/lib/collect-updates/index.ts +++ b/libs/legacy-core/src/lib/collect-updates/index.ts @@ -1,9 +1,8 @@ -import { getPackagesForOption, Package } from "@lerna/core"; +import { getPackagesForOption, log, Package } from "@lerna/core"; // This import can't be from @lerna/core due to unit tests mocking the specific import path. // It's not worth fixing due to this being legacy code. // eslint-disable-next-line @nx/enforce-module-boundaries import { describeRefSync } from "libs/core/src/lib/describe-ref"; -import log from "npmlog"; import { PackageGraph } from "../package-graph"; import { collectPackages } from "./collect-packages"; import { hasTags } from "./has-tags"; diff --git a/libs/legacy-core/src/lib/collect-updates/make-diff-predicate.ts b/libs/legacy-core/src/lib/collect-updates/make-diff-predicate.ts index ef62bbf5b2..ac68f4a591 100644 --- a/libs/legacy-core/src/lib/collect-updates/make-diff-predicate.ts +++ b/libs/legacy-core/src/lib/collect-updates/make-diff-predicate.ts @@ -1,7 +1,7 @@ // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); +import { log } from "@lerna/core"; import minimatch from "minimatch"; -import log from "npmlog"; import path from "path"; import slash from "slash"; import { PackageGraphNode } from "../package-graph/package-graph-node"; diff --git a/libs/legacy-core/src/lib/command/index.spec.ts b/libs/legacy-core/src/lib/command/index.spec.ts index 7720d0a44f..a181f1fd3c 100644 --- a/libs/legacy-core/src/lib/command/index.spec.ts +++ b/libs/legacy-core/src/lib/command/index.spec.ts @@ -1,9 +1,9 @@ // NOTE: This file can't use ESM without breaking the spyOn() os.cpus() call right now. // TODO: refactor the command index.ts to resolve this +import { log } from "@lerna/core"; /* eslint-disable @typescript-eslint/no-var-requires */ const fs = require("fs-extra"); -const log = require("npmlog"); const path = require("path"); const tempy = require("tempy"); diff --git a/libs/legacy-core/src/lib/command/index.ts b/libs/legacy-core/src/lib/command/index.ts index bd53db99f3..7678b29f74 100644 --- a/libs/legacy-core/src/lib/command/index.ts +++ b/libs/legacy-core/src/lib/command/index.ts @@ -1,8 +1,7 @@ -import { CommandConfigOptions, Project, ValidationError } from "@lerna/core"; +import { CommandConfigOptions, Logger, Project, ValidationError, log } from "@lerna/core"; import cloneDeep from "clone-deep"; import dedent from "dedent"; import execa from "execa"; -import log from "npmlog"; import os from "os"; import { PackageGraph } from "../package-graph"; import { writeLogFile } from "../write-log-file"; @@ -22,7 +21,7 @@ export class Command { toposort = false; execOpts?: { cwd: string; maxBuffer?: number }; packageGraph?: PackageGraph; - logger!: log.Logger; + logger!: Logger; private _project?: Project; get project(): Project { diff --git a/libs/legacy-core/src/lib/command/log-package-error.ts b/libs/legacy-core/src/lib/command/log-package-error.ts index cd84d54052..76ce46c017 100644 --- a/libs/legacy-core/src/lib/command/log-package-error.ts +++ b/libs/legacy-core/src/lib/command/log-package-error.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import { log } from "@lerna/core"; // import { ExecaErrorWithLernaPackage } from "../child-process"; export function logPackageError(err: any, stream = false) { diff --git a/libs/legacy-core/src/lib/command/warn-if-hanging.ts b/libs/legacy-core/src/lib/command/warn-if-hanging.ts index a2e38df40d..044c0ba701 100644 --- a/libs/legacy-core/src/lib/command/warn-if-hanging.ts +++ b/libs/legacy-core/src/lib/command/warn-if-hanging.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import { log } from "@lerna/core"; // eslint-disable-next-line @typescript-eslint/no-var-requires const childProcess = require("@lerna/child-process"); diff --git a/libs/legacy-core/src/lib/create-symlink.spec.ts b/libs/legacy-core/src/lib/create-symlink.spec.ts index 9f15c75980..32594e2aa7 100644 --- a/libs/legacy-core/src/lib/create-symlink.spec.ts +++ b/libs/legacy-core/src/lib/create-symlink.spec.ts @@ -13,7 +13,11 @@ const linkRelative = (from: string, to: string) => path.relative(path.dirname(to describe("create-symlink", () => { fs.lstat.mockImplementation(() => Promise.reject(new Error("MOCK"))); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore fs.unlink.mockResolvedValue(); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore fs.symlink.mockResolvedValue(); // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore @@ -21,6 +25,8 @@ describe("create-symlink", () => { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore fs.outputFile.mockResolvedValue(); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore fs.remove.mockResolvedValue(); cmdShim.mockResolvedValue(); diff --git a/libs/legacy-core/src/lib/create-symlink.ts b/libs/legacy-core/src/lib/create-symlink.ts index e93a399cb3..a60ea67cdc 100644 --- a/libs/legacy-core/src/lib/create-symlink.ts +++ b/libs/legacy-core/src/lib/create-symlink.ts @@ -1,6 +1,6 @@ import cmdShim from "cmd-shim"; import fs, { SymlinkType } from "fs-extra"; -import log from "npmlog"; +import { log } from "@lerna/core"; import path from "path"; type CreateSymlinkType = SymlinkType | "exec"; diff --git a/libs/legacy-core/src/lib/filter-packages.ts b/libs/legacy-core/src/lib/filter-packages.ts index 37155d6f10..705cdb8593 100644 --- a/libs/legacy-core/src/lib/filter-packages.ts +++ b/libs/legacy-core/src/lib/filter-packages.ts @@ -1,6 +1,5 @@ -import { Package, ValidationError } from "@lerna/core"; +import { Package, ValidationError, log } from "@lerna/core"; import multimatch from "multimatch"; -import log from "npmlog"; import util from "util"; /** diff --git a/libs/legacy-core/src/lib/get-filtered-packages.ts b/libs/legacy-core/src/lib/get-filtered-packages.ts index bab58e109c..f313c27638 100644 --- a/libs/legacy-core/src/lib/get-filtered-packages.ts +++ b/libs/legacy-core/src/lib/get-filtered-packages.ts @@ -1,6 +1,5 @@ -import { FilterOptions, Package } from "@lerna/core"; +import { FilterOptions, Package, log } from "@lerna/core"; import { ExecOptions } from "child_process"; -import log from "npmlog"; import { collectUpdates } from "./collect-updates"; import { filterPackages } from "./filter-packages"; import { PackageGraph } from "./package-graph"; diff --git a/libs/legacy-core/src/lib/package-graph/report-cycles.ts b/libs/legacy-core/src/lib/package-graph/report-cycles.ts index 861baf6595..cdd11900a0 100644 --- a/libs/legacy-core/src/lib/package-graph/report-cycles.ts +++ b/libs/legacy-core/src/lib/package-graph/report-cycles.ts @@ -1,5 +1,4 @@ -import { ValidationError } from "@lerna/core"; -import log from "npmlog"; +import { ValidationError, log } from "@lerna/core"; export function reportCycles(paths: string[], rejectCycles?: boolean) { if (!paths.length) { diff --git a/libs/legacy-core/src/lib/resolve-symlink.ts b/libs/legacy-core/src/lib/resolve-symlink.ts index ee9b7be4ef..3d1d8c6244 100644 --- a/libs/legacy-core/src/lib/resolve-symlink.ts +++ b/libs/legacy-core/src/lib/resolve-symlink.ts @@ -1,5 +1,5 @@ +import { log } from "@lerna/core"; import fs from "fs-extra"; -import log from "npmlog"; import path from "path"; // read-cmd-shim does not have any types diff --git a/libs/legacy-core/src/lib/write-log-file.ts b/libs/legacy-core/src/lib/write-log-file.ts index 7aea9a69b1..db89e42d9b 100644 --- a/libs/legacy-core/src/lib/write-log-file.ts +++ b/libs/legacy-core/src/lib/write-log-file.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import { log } from "@lerna/core"; import os from "os"; import path from "path"; import writeFileAtomic from "write-file-atomic"; @@ -19,8 +19,8 @@ export function writeLogFile(cwd: string) { m.message .trim() .split(/\r?\n/) - .map((line) => `${pref} ${line}`.trim()) - .forEach((line) => { + .map((line: string) => `${pref} ${line}`.trim()) + .forEach((line: string) => { logOutput += line + os.EOL; }); }); diff --git a/libs/test-helpers/src/lib/logging-output.ts b/libs/test-helpers/src/lib/logging-output.ts index 387b83f885..1dac71fceb 100644 --- a/libs/test-helpers/src/lib/logging-output.ts +++ b/libs/test-helpers/src/lib/logging-output.ts @@ -1,4 +1,4 @@ -import log from "npmlog"; +import { log } from "@lerna/core"; import { multiLineTrimRight } from "./multi-line-trim-right"; // clear logs between tests diff --git a/libs/test-helpers/src/lib/silence-logging.js b/libs/test-helpers/src/lib/silence-logging.js index b87c65d55b..7fa21d09d6 100644 --- a/libs/test-helpers/src/lib/silence-logging.js +++ b/libs/test-helpers/src/lib/silence-logging.js @@ -1,6 +1,8 @@ "use strict"; -const log = require("npmlog"); +// TODO: verify this actually works after we switched from npmlog to inlined version +// eslint-disable-next-line import/no-unresolved, node/no-missing-require +const { log } = require("@lerna/core"); // silence logs log.level = "silent"; diff --git a/package-lock.json b/package-lock.json index 694f3335ea..8154f29256 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,14 +28,14 @@ "@types/conventional-recommended-bump": "^6.1.0", "@types/dedent": "^0.7.2", "@types/envinfo": "^7.8.4", - "@types/fs-extra": "^9.0.13", + "@types/fs-extra": "^11.0.4", "@types/git-url-parse": "^9.0.3", "@types/glob-parent": "^5.1.3", "@types/inquirer": "^8.2.5", "@types/is-ci": "^3.0.4", "@types/jest": "29.5.12", "@types/js-yaml": "^4.0.9", - "@types/libnpmpublish": "^4.0.3", + "@types/libnpmpublish": "^9.0.0", "@types/lodash": "^4.17.5", "@types/node": "18.19.10", "@types/node-fetch": "^2.6.11", @@ -43,6 +43,7 @@ "@types/npm-package-arg": "^6.1.4", "@types/npm-packlist": "^7.0.3", "@types/npm-registry-fetch": "^8.0.7", + "@types/npmcli__arborist": "^5.6.6", "@types/npmlog": "^7.0.0", "@types/pify": "^5.0.4", "@types/semver": "^7.5.8", @@ -52,7 +53,7 @@ "@types/tar": "^6.1.13", "@types/temp-dir": "^1.0.0", "@types/tmp": "^0.2.6", - "@types/uuid": "^8.3.4", + "@types/uuid": "^9.0.8", "@types/write-file-atomic": "^4.0.3", "@typescript-eslint/eslint-plugin": "7.13.1", "@typescript-eslint/parser": "7.13.1", @@ -74,6 +75,7 @@ "normalize-path": "^3.0.0", "nx": "19.3.0", "prettier": "^2.2.1", + "signal-exit": "3.0.7", "tacks": "1.2.6", "tmp": "^0.2.3", "touch": "^3.1.1", @@ -3398,41 +3400,43 @@ } }, "node_modules/@npmcli/arborist": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-7.2.2.tgz", - "integrity": "sha512-dIIzyhy1zS2dYPS8bdM/8qA8W2evQE9KENBxVOhFthm/2RKqf2ninRWQc8xfc5f1gsiTxTP20Y9flIfziHfSKA==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-7.5.3.tgz", + "integrity": "sha512-7gbMdDNSYUzi0j2mpb6FoXRg3BxXWplMQZH1MZlvNjSdWFObaUz2Ssvo0Nlh2xmWks1OPo+gpsE6qxpT/5M7lQ==", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/fs": "^3.1.1", + "@npmcli/installed-package-contents": "^2.1.0", "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^7.0.0", + "@npmcli/metavuln-calculator": "^7.1.1", "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/query": "^3.0.1", - "@npmcli/run-script": "^7.0.2", - "bin-links": "^4.0.1", - "cacache": "^18.0.0", + "@npmcli/package-json": "^5.1.0", + "@npmcli/query": "^3.1.0", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "bin-links": "^4.0.4", + "cacache": "^18.0.3", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^7.0.1", - "json-parse-even-better-errors": "^3.0.0", + "hosted-git-info": "^7.0.2", + "json-parse-even-better-errors": "^3.0.2", "json-stringify-nice": "^1.1.4", - "minimatch": "^9.0.0", - "nopt": "^7.0.0", + "lru-cache": "^10.2.2", + "minimatch": "^9.0.4", + "nopt": "^7.2.1", "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.1", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "npmlog": "^7.0.1", - "pacote": "^17.0.4", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.1", + "npm-registry-fetch": "^17.0.1", + "pacote": "^18.0.6", "parse-conflict-json": "^3.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.2.0", + "proggy": "^2.0.0", "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.2", + "promise-call-limit": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", - "ssri": "^10.0.5", + "ssri": "^10.0.6", "treeverse": "^3.0.0", "walk-up-path": "^3.0.1" }, @@ -3443,12 +3447,12 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/are-we-there-yet": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-4.0.2.tgz", - "integrity": "sha512-ncSWAawFhKMJDTdoAeOV+jyW1VCMj5QIAwULIBV0SSR7B/RLPPEQiknKcg/RIIZlUQrxELpsxMiTUoAQ4sIUyg==", + "node_modules/@npmcli/arborist/node_modules/@npmcli/redact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz", + "integrity": "sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@npmcli/arborist/node_modules/brace-expansion": { @@ -3459,24 +3463,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/gauge": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-5.0.2.tgz", - "integrity": "sha512-pMaFftXPtiGIHCJHdcUUx9Rby/rFT/Kkt3fIIGCs+9PMDIljSyRiqraTlxNtBReJRDfUefpa263RQ3vnp5G/LQ==", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^4.0.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/arborist/node_modules/minimatch": { "version": "9.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", @@ -3491,55 +3477,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/arborist/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@npmcli/arborist/node_modules/npm-package-arg": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.2.tgz", - "integrity": "sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==", - "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^4.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/npm-package-arg/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/npm-registry-fetch": { - "version": "16.2.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.2.1.tgz", - "integrity": "sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA==", - "dependencies": { - "@npmcli/redact": "^1.1.0", - "make-fetch-happen": "^13.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/npm-registry-fetch/node_modules/proc-log": { + "node_modules/@npmcli/arborist/node_modules/proc-log": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", @@ -3547,42 +3485,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/arborist/node_modules/npmlog": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-7.0.1.tgz", - "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", - "dependencies": { - "are-we-there-yet": "^4.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^5.0.0", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/arborist/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/arborist/node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/@npmcli/fs": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", @@ -3686,362 +3588,118 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@npmcli/redact": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.0.tgz", - "integrity": "sha512-SEjCPAVHWYUIQR+Yn03kJmrJjZDtJLYpj300m3HV9OTRZNpC5YpbMsM3eTkECyT4aWj8lDr9WeY6TWefpubtYQ==", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@npmcli/run-script": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz", - "integrity": "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==", - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^10.0.0", - "proc-log": "^4.0.0", - "which": "^4.0.0" - }, + "node_modules/@npmcli/metavuln-calculator/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@sigstore/bundle": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.1.tgz", - "integrity": "sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g==", - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.1" - }, + "node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", + "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@sigstore/protobuf-specs": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", - "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@sigstore/sign": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.1.tgz", - "integrity": "sha512-YZ71wKIOweC8ViUeZXboz0iPLqMkskxuoeN/D1CEpAyZvEepbX9oRMIoO6a/DxUqO1VEaqmcmmqzSiqtOsvSmw==", + "node_modules/@npmcli/package-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz", + "integrity": "sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==", "dependencies": { - "@sigstore/bundle": "^2.3.0", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.1", - "make-fetch-happen": "^13.0.1", - "proc-log": "^4.2.0", - "promise-retry": "^2.0.1" + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@sigstore/tuf": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.3.tgz", - "integrity": "sha512-agQhHNkIddXFslkudjV88vTXiAMEyUtso3at6ZHUNJ1agZb7Ze6VW/PddHipdWBu1t+8OWLW5X5yZOPiOnaWJQ==", - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.0", - "tuf-js": "^2.2.1" - }, + "node_modules/@npmcli/package-json/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@tufjs/canonical-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", - "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "node_modules/@npmcli/package-json/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/@tufjs/models": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", - "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", + "node_modules/@npmcli/promise-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", + "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.4" + "which": "^4.0.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/ignore-walk": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", - "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", + "node_modules/@npmcli/query": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.1.0.tgz", + "integrity": "sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==", "dependencies": { - "minimatch": "^9.0.0" + "postcss-selector-parser": "^6.0.10" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/npm-package-arg": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.2.tgz", - "integrity": "sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==", + "node_modules/@npmcli/run-script": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz", + "integrity": "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==", "dependencies": { - "hosted-git-info": "^7.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", "proc-log": "^4.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" + "which": "^4.0.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/npm-packlist": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", - "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", - "dependencies": { - "ignore-walk": "^6.0.4" - }, + "node_modules/@npmcli/run-script/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/metavuln-calculator/node_modules/npm-registry-fetch": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.0.1.tgz", - "integrity": "sha512-fLu9MTdZTlJAHUek/VLklE6EpIiP3VZpTiuN7OOMCt2Sd67NCpSEetMaxHHEZiZxllp8ZLsUpvbEszqTFEc+wA==", + "node_modules/@nrwl/devkit": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-19.3.0.tgz", + "integrity": "sha512-WRcph/7U37HkTLIRzQ2oburZVfEFkPHJUn7vmo46gCq+N2cAKy3qwONO0RbthhjFIsG94YPXqFWFlV6k4nXpxA==", "dependencies": { - "@npmcli/redact": "^2.0.0", - "make-fetch-happen": "^13.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/pacote": { - "version": "18.0.6", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz", - "integrity": "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==", - "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/package-json": "^5.1.0", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^8.0.0", - "cacache": "^18.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^17.0.0", - "proc-log": "^4.0.0", - "promise-retry": "^2.0.1", - "sigstore": "^2.2.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "bin/index.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/sigstore": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.0.tgz", - "integrity": "sha512-q+o8L2ebiWD1AxD17eglf1pFrl9jtW7FHa0ygqY6EKvibK8JHyq9Z26v9MZXeDiw+RbfOJ9j2v70M10Hd6E06A==", - "dependencies": { - "@sigstore/bundle": "^2.3.1", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.1", - "@sigstore/sign": "^2.3.0", - "@sigstore/tuf": "^2.3.1", - "@sigstore/verify": "^1.2.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/metavuln-calculator/node_modules/tuf-js": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", - "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", - "dependencies": { - "@tufjs/models": "2.0.1", - "debug": "^4.3.4", - "make-fetch-happen": "^13.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/name-from-folder": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz", - "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/package-json": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.1.0.tgz", - "integrity": "sha512-1aL4TuVrLS9sf8quCLerU3H9J4vtCtgu8VauYozrmEyU57i/EdKleCnsQ7vpnABIH6c9mnTxcH5sFkO3BlV8wQ==", - "dependencies": { - "@npmcli/git": "^5.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^4.0.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/package-json/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/package-json/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/promise-spawn": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", - "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", - "dependencies": { - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/query": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-3.1.0.tgz", - "integrity": "sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==", - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/redact": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-1.1.0.tgz", - "integrity": "sha512-PfnWuOkQgu7gCbnSsAisaX7hKOdZ4wSAhAzH3/ph5dSGau52kCRrMMGbiSQLwyTZpgldkZ49b0brkOr1AzGBHQ==", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.2.tgz", - "integrity": "sha512-Omu0rpA8WXvcGeY6DDzyRoY1i5DkCBkzyJ+m2u7PD6quzb0TvSqdIPOkTn8ZBOj7LbbcbMfZ3c5skwSu6m8y2w==", - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^10.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@nrwl/devkit": { - "version": "19.3.0", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-19.3.0.tgz", - "integrity": "sha512-WRcph/7U37HkTLIRzQ2oburZVfEFkPHJUn7vmo46gCq+N2cAKy3qwONO0RbthhjFIsG94YPXqFWFlV6k4nXpxA==", - "dependencies": { - "@nx/devkit": "19.3.0" + "@nx/devkit": "19.3.0" } }, "node_modules/@nrwl/esbuild": { @@ -4852,14 +4510,14 @@ } }, "node_modules/@sigstore/bundle": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", - "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz", + "integrity": "sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0" + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@sigstore/core": { @@ -4871,219 +4529,86 @@ } }, "node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", - "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", + "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@sigstore/sign": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", - "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz", + "integrity": "sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==", "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "make-fetch-happen": "^11.0.1" + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@sigstore/sign/node_modules/cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, + "node_modules/@sigstore/sign/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@sigstore/sign/node_modules/cacache/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@sigstore/sign/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "node_modules/@sigstore/tuf": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz", + "integrity": "sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^2.2.1" + }, "engines": { - "node": ">=12" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@sigstore/sign/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "node_modules/@sigstore/verify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz", + "integrity": "sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==", "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@sigstore/sign/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@sigstore/sign/node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@sigstore/sign/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sigstore/sign/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@sigstore/sign/node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/sign/node_modules/ssri/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@sigstore/tuf": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", - "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", - "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0", - "tuf-js": "^1.1.7" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/verify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.0.tgz", - "integrity": "sha512-hQF60nc9yab+Csi4AyoAmilGNfpXT+EXdBgFkP9OgPwIBPwyqVf7JAWPtmqrrrneTmAT6ojv7OlH1f6Ix5BG4Q==", - "dependencies": { - "@sigstore/bundle": "^2.3.1", - "@sigstore/core": "^1.1.0", - "@sigstore/protobuf-specs": "^0.3.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/verify/node_modules/@sigstore/bundle": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.1.tgz", - "integrity": "sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g==", - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/verify/node_modules/@sigstore/protobuf-specs": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", - "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" + "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { @@ -5452,14 +4977,6 @@ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", "dev": true }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "engines": { - "node": ">= 10" - } - }, "node_modules/@tsconfig/node10": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", @@ -5485,23 +5002,23 @@ "dev": true }, "node_modules/@tufjs/canonical-json": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", - "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@tufjs/models": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", - "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", + "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", "dependencies": { - "@tufjs/canonical-json": "1.0.0", - "minimatch": "^9.0.0" + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@tufjs/models/node_modules/brace-expansion": { @@ -5669,11 +5186,12 @@ "dev": true }, "node_modules/@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", + "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", "dev": true, "dependencies": { + "@types/jsonfile": "*", "@types/node": "*" } }, @@ -5787,6 +5305,15 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/jsonfile": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", + "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", @@ -5797,9 +5324,9 @@ } }, "node_modules/@types/libnpmpublish": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/libnpmpublish/-/libnpmpublish-4.0.6.tgz", - "integrity": "sha512-xI99EEgpr1R0hpLAKb52QbBYv8ZZa9FDiZS7LEVE6RevjkQHF3BflPR7Mo2F8yxMnqP6eoPkWE0bnWvDC/sA9A==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@types/libnpmpublish/-/libnpmpublish-9.0.0.tgz", + "integrity": "sha512-usLo3IXVcw76e4uWot7Lku3fpZPJPt+OJt+CQiza0v57kZClnUj3Wlayu1VzPs4cniVytWYHm9TiPiBnySYKzg==", "dev": true, "dependencies": { "@npm/types": "*", @@ -6011,9 +5538,9 @@ "dev": true }, "node_modules/@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", "dev": true }, "node_modules/@types/write-file-atomic": { @@ -7031,6 +6558,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, "dependencies": { "debug": "4" }, @@ -7038,17 +6566,6 @@ "node": ">= 6.0.0" } }, - "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -7168,18 +6685,6 @@ } ] }, - "node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -8090,14 +7595,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/byte-size": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-8.1.1.tgz", @@ -8145,17 +7642,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/cacache/node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -8448,9 +7934,9 @@ } }, "node_modules/cmd-shim": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", - "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.3.tgz", + "integrity": "sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -9138,9 +8624,17 @@ } }, "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } }, "node_modules/deep-is": { "version": "0.1.4", @@ -9292,11 +8786,6 @@ "node": ">=0.4.0" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -9634,9 +9123,9 @@ } }, "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", "bin": { "envinfo": "dist/cli.js" }, @@ -11149,24 +10638,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -11395,9 +10866,9 @@ } }, "node_modules/git-url-parse": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", - "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz", + "integrity": "sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==", "dependencies": { "git-up": "^7.0.0" } @@ -11795,19 +11266,6 @@ "node": ">=8.0.0" } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/http-server": { "version": "14.1.1", "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", @@ -11872,6 +11330,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, "dependencies": { "agent-base": "6", "debug": "4" @@ -11888,14 +11347,6 @@ "node": ">=10.17.0" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dependencies": { - "ms": "^2.0.0" - } - }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -11947,14 +11398,14 @@ } }, "node_modules/ignore-walk": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", - "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", "dependencies": { - "minimatch": "^5.0.1" + "minimatch": "^9.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/ignore-walk/node_modules/brace-expansion": { @@ -11966,14 +11417,17 @@ } }, "node_modules/ignore-walk/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/import-fresh": { @@ -12053,53 +11507,20 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/init-package-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-5.0.0.tgz", - "integrity": "sha512-kBhlSheBfYmq3e0L1ii+VKe3zBTLL5lDCDWR+f9dLmEGSB3MqLlMlsolubSsyI88Bg6EA+BIMlomAnQ1SwgQBw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-6.0.3.tgz", + "integrity": "sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w==", "dependencies": { - "npm-package-arg": "^10.0.0", + "@npmcli/package-json": "^5.0.0", + "npm-package-arg": "^11.0.0", "promzard": "^1.0.0", - "read": "^2.0.0", - "read-package-json": "^6.0.0", + "read": "^3.0.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4", "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/init-package-json/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/init-package-json/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/init-package-json/node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/inquirer": { @@ -12851,20 +12272,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-circus/node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, "node_modules/jest-circus/node_modules/jest-matcher-utils": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", @@ -13978,130 +13385,53 @@ } }, "node_modules/libnpmaccess": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-7.0.2.tgz", - "integrity": "sha512-vHBVMw1JFMTgEk15zRsJuSAg7QtGGHpUSEfnbcRL1/gTBag9iEfJbyjpDmdJmwMhvpoLoNBtdAUCdGnaP32hhw==", + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-8.0.6.tgz", + "integrity": "sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw==", "dependencies": { - "npm-package-arg": "^10.1.0", - "npm-registry-fetch": "^14.0.3" + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/libnpmaccess/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/libnpmaccess/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/libnpmaccess/node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/libnpmpublish": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-7.3.0.tgz", - "integrity": "sha512-fHUxw5VJhZCNSls0KLNEG0mCD2PN1i14gH5elGOgiVnU3VgTcRahagYP2LKI1m0tFCJ+XrAm0zVYyF5RCbXzcg==", - "dependencies": { - "ci-info": "^3.6.1", - "normalize-package-data": "^5.0.0", - "npm-package-arg": "^10.1.0", - "npm-registry-fetch": "^14.0.3", - "proc-log": "^3.0.0", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/libnpmpublish/-/libnpmpublish-9.0.9.tgz", + "integrity": "sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg==", + "dependencies": { + "ci-info": "^4.0.0", + "normalize-package-data": "^6.0.1", + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.2.0", "semver": "^7.3.7", - "sigstore": "^1.4.0", - "ssri": "^10.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/libnpmpublish/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/libnpmpublish/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/libnpmpublish/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/libnpmpublish/node_modules/normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", - "dependencies": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "sigstore": "^2.2.0", + "ssri": "^10.0.6" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/libnpmpublish/node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, + "node_modules/libnpmpublish/node_modules/ci-info": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/libnpmpublish/node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", - "dependencies": { - "minipass": "^7.0.3" - }, + "node_modules/libnpmpublish/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -14361,17 +13691,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/make-fetch-happen/node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -14799,26 +14118,6 @@ "node": ">=8" } }, - "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/minipass-pipeline": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", @@ -15219,135 +14518,6 @@ } }, "node_modules/npm-package-arg": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz", - "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==", - "dependencies": { - "hosted-git-info": "^3.0.6", - "semver": "^7.0.0", - "validate-npm-package-name": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-package-arg/node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" - }, - "node_modules/npm-package-arg/node_modules/hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-package-arg/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-package-arg/node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", - "dependencies": { - "builtins": "^1.0.3" - } - }, - "node_modules/npm-packlist": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", - "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", - "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm-packlist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm-packlist/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm-packlist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-packlist/node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" - }, - "node_modules/npm-pick-manifest": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.1.tgz", - "integrity": "sha512-Udm1f0l2nXb3wxDpKjfohwgdFUSV50UVwzEIpDXVsbDMXVIEF81a/i0UhuQbhrPMMmdiq3+YMFLFIRVLs3hxQw==", - "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm-pick-manifest/node_modules/npm-package-arg": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.2.tgz", "integrity": "sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==", @@ -15361,7 +14531,7 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm-pick-manifest/node_modules/proc-log": { + "node_modules/npm-package-arg/node_modules/proc-log": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", @@ -15369,173 +14539,73 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", - "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", - "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + "node_modules/npm-packlist": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", + "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "ignore-walk": "^6.0.4" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/cacache/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "node_modules/npm-pick-manifest": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.1.tgz", + "integrity": "sha512-Udm1f0l2nXb3wxDpKjfohwgdFUSV50UVwzEIpDXVsbDMXVIEF81a/i0UhuQbhrPMMmdiq3+YMFLFIRVLs3hxQw==", "dependencies": { - "lru-cache": "^7.5.1" + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "node_modules/npm-registry-fetch": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz", + "integrity": "sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==", "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", + "@npmcli/redact": "^2.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm-registry-fetch/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm-registry-fetch/node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm-registry-fetch/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/npm-package-arg": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", - "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", - "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, + "node_modules/npm-registry-fetch/node_modules/@npmcli/redact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz", + "integrity": "sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, + "node_modules/npm-registry-fetch/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "engines": { - "node": ">= 10" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/npm-registry-fetch/node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", - "dependencies": { - "minipass": "^7.0.3" - }, + "node_modules/npm-registry-fetch/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/ssri/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -15547,20 +14617,6 @@ "node": ">=8" } }, - "node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -16053,257 +15109,59 @@ "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-2.1.1.tgz", "integrity": "sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==", "dependencies": { - "p-reduce": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pacote": { - "version": "17.0.7", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.7.tgz", - "integrity": "sha512-sgvnoUMlkv9xHwDUKjKQFXVyUi8dtJGKp3vg6sYy+TxbDic5RjZCHF3ygv0EJgNRZ2GfRONjlKPUfokJ9lDpwQ==", - "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.0", - "cacache": "^18.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^7.0.2", - "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^4.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^7.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^2.2.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/@sigstore/bundle": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.1.tgz", - "integrity": "sha512-eqV17lO3EIFqCWK3969Rz+J8MYrRZKw9IBHpSo6DEcEX2c+uzDFOgHE9f2MnyDpfs48LFO4hXmk9KhQ74JzU1g==", - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/@sigstore/protobuf-specs": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", - "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/@sigstore/sign": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.1.tgz", - "integrity": "sha512-YZ71wKIOweC8ViUeZXboz0iPLqMkskxuoeN/D1CEpAyZvEepbX9oRMIoO6a/DxUqO1VEaqmcmmqzSiqtOsvSmw==", - "dependencies": { - "@sigstore/bundle": "^2.3.0", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.1", - "make-fetch-happen": "^13.0.1", - "proc-log": "^4.2.0", - "promise-retry": "^2.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/@sigstore/tuf": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.3.tgz", - "integrity": "sha512-agQhHNkIddXFslkudjV88vTXiAMEyUtso3at6ZHUNJ1agZb7Ze6VW/PddHipdWBu1t+8OWLW5X5yZOPiOnaWJQ==", - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.0", - "tuf-js": "^2.2.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/@tufjs/canonical-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", - "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/@tufjs/models": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", - "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", - "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/pacote/node_modules/ignore-walk": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", - "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", - "dependencies": { - "minimatch": "^9.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/pacote/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/pacote/node_modules/npm-package-arg": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.2.tgz", - "integrity": "sha512-IGN0IAwmhDJwy13Wc8k+4PEbTPhpJnMtfR53ZbOyjkvmEcLS4nCwp6mvMWjS5sUjeiW3mpx6cHmuhKEu9XmcQw==", - "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^4.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/npm-packlist": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", - "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", - "dependencies": { - "ignore-walk": "^6.0.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/npm-registry-fetch": { - "version": "16.2.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.2.1.tgz", - "integrity": "sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA==", - "dependencies": { - "@npmcli/redact": "^1.1.0", - "make-fetch-happen": "^13.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/pacote/node_modules/read-package-json": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-7.0.1.tgz", - "integrity": "sha512-8PcDiZ8DXUjLf687Ol4BR8Bpm2umR7vhoZOzNRt+uxD9GpBh/K+CAAALVIiYFknmvlmyg7hM7BSNUXPaCCqd0Q==", - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0" + "p-reduce": "^2.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pacote/node_modules/sigstore": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.0.tgz", - "integrity": "sha512-q+o8L2ebiWD1AxD17eglf1pFrl9jtW7FHa0ygqY6EKvibK8JHyq9Z26v9MZXeDiw+RbfOJ9j2v70M10Hd6E06A==", + "node_modules/pacote": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz", + "integrity": "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==", "dependencies": { - "@sigstore/bundle": "^2.3.1", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.1", - "@sigstore/sign": "^2.3.0", - "@sigstore/tuf": "^2.3.1", - "@sigstore/verify": "^1.2.0" + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/package-json": "^5.1.0", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^8.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "bin/index.js" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/pacote/node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", - "dependencies": { - "minipass": "^7.0.3" - }, + "node_modules/pacote/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/pacote/node_modules/tuf-js": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", - "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", - "dependencies": { - "@tufjs/models": "2.0.1", - "debug": "^4.3.4", - "make-fetch-happen": "^13.0.1" - }, + "node_modules/pacote/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/pako": { @@ -16819,6 +15677,14 @@ "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==", "dev": true }, + "node_modules/proggy": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/proggy/-/proggy-2.0.0.tgz", + "integrity": "sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/promise-all-reject-late": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", @@ -16828,9 +15694,9 @@ } }, "node_modules/promise-call-limit": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.2.tgz", - "integrity": "sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-3.0.1.tgz", + "integrity": "sha512-utl+0x8gIDasV5X+PI5qWEPqH6fJS0pFtQ/4gZ95xfEFb/89dmh+/b895TbFDBLiafBvxD/PGTKfvxl4kH/pQg==", "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -16876,25 +15742,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/promzard/node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/promzard/node_modules/read": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/read/-/read-3.0.1.tgz", - "integrity": "sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw==", - "dependencies": { - "mute-stream": "^1.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/property-expr": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", @@ -17095,11 +15942,11 @@ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, "node_modules/read": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/read/-/read-2.1.0.tgz", - "integrity": "sha512-bvxi1QLJHcaywCAEsAk4DG3nVoqiY2Csps3qzWalhj5hFqRn1d/OixkFXtLO1PrgHUcAP0FNaSY/5GYNfENFFQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/read/-/read-3.0.1.tgz", + "integrity": "sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw==", "dependencies": { - "mute-stream": "~1.0.0" + "mute-stream": "^1.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -17113,20 +15960,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-package-json": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", - "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/read-package-json-fast": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", @@ -17139,39 +15972,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-package-json/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", - "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-package-json/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/read-package-json/node_modules/normalize-package-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", - "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", - "dependencies": { - "hosted-git-info": "^6.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -17900,231 +16700,104 @@ "dev": true, "dependencies": { "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/sigstore": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", - "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", - "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "@sigstore/sign": "^1.0.0", - "@sigstore/tuf": "^1.0.3", - "make-fetch-happen": "^11.0.1" - }, - "bin": { - "sigstore": "bin/sigstore.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sigstore/node_modules/cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sigstore/node_modules/cacache/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sigstore/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/sigstore/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.4" } }, - "node_modules/sigstore/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/sigstore/node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dependencies": { - "minipass": "^3.0.0" + "kind-of": "^6.0.2" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/sigstore/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dependencies": { - "yallist": "^4.0.0" + "shebang-regex": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/sigstore/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/sigstore/node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, "dependencies": { - "minipass": "^7.0.3" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sigstore/node_modules/ssri/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/sigstore": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz", + "integrity": "sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==", + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^2.3.2", + "@sigstore/tuf": "^2.3.4", + "@sigstore/verify": "^1.2.1" + }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/sisteransi": { @@ -18332,25 +17005,22 @@ "dev": true }, "node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dependencies": { - "minipass": "^3.1.1" + "minipass": "^7.0.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/ssri/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/stack-utils": { @@ -19311,141 +17981,16 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/tuf-js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", - "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", + "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", "dependencies": { - "@tufjs/models": "1.0.4", + "@tufjs/models": "2.0.1", "debug": "^4.3.4", - "make-fetch-happen": "^11.1.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/cacache/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/tuf-js/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/tuf-js/node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/tuf-js/node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/tuf-js/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tuf-js/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/tuf-js/node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", - "dependencies": { - "minipass": "^7.0.3" + "make-fetch-happen": "^13.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/tuf-js/node_modules/ssri/node_modules/minipass": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.1.tgz", - "integrity": "sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==", - "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/tunnel-agent": { @@ -19832,9 +18377,9 @@ } }, "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -19873,12 +18418,9 @@ } }, "node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dependencies": { - "builtins": "^5.0.0" - }, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -20016,18 +18558,6 @@ "url": "https://opencollective.com/verdaccio" } }, - "node_modules/verdaccio/node_modules/envinfo": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", - "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/verdaccio/node_modules/kleur": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", @@ -20481,27 +19011,31 @@ "version": "8.1.4", "license": "MIT", "dependencies": { - "@npmcli/arborist": "7.2.2", - "@npmcli/run-script": "7.0.2", + "@npmcli/arborist": "7.5.3", + "@npmcli/package-json": "5.2.0", + "@npmcli/run-script": "8.1.0", "@nx/devkit": ">=17.1.2 < 20", "@octokit/rest": "19.0.11", + "aproba": "2.0.0", "byte-size": "8.1.1", "chalk": "4.1.0", "clone-deep": "4.0.1", - "cmd-shim": "6.0.1", + "cmd-shim": "6.0.3", + "color-support": "1.1.3", "columnify": "1.6.0", + "console-control-strings": "^1.1.0", "conventional-changelog-core": "5.0.1", "conventional-recommended-bump": "7.0.1", "cosmiconfig": "^8.2.0", - "dedent": "0.7.0", + "dedent": "1.5.3", "execa": "5.0.0", "file-url": "3.0.0", "find-up": "5.0.0", - "fs-extra": "^11.1.1", + "fs-extra": "^11.2.0", "get-port": "5.1.1", "get-stream": "6.0.0", - "git-url-parse": "13.1.0", - "glob-parent": "5.1.2", + "git-url-parse": "14.0.0", + "glob-parent": "6.0.2", "globby": "11.1.0", "graceful-fs": "4.2.11", "has-unicode": "2.0.1", @@ -20509,37 +19043,37 @@ "inquirer": "8.2.4", "is-ci": "3.0.1", "is-stream": "2.0.0", - "libnpmpublish": "7.3.0", + "libnpmpublish": "9.0.9", "load-json-file": "6.2.0", "make-dir": "4.0.0", "minimatch": "3.0.5", "multimatch": "5.0.0", "node-fetch": "2.6.7", - "npm-package-arg": "8.1.1", - "npm-packlist": "5.1.1", - "npm-registry-fetch": "^14.0.5", - "npmlog": "^6.0.2", + "npm-package-arg": "11.0.2", + "npm-packlist": "8.0.2", + "npm-registry-fetch": "^17.1.0", "p-map": "4.0.0", "p-map-series": "2.1.0", "p-queue": "6.6.2", "p-waterfall": "2.1.1", - "pacote": "^17.0.5", + "pacote": "^18.0.6", "pify": "5.0.0", "pretty-format": "29.4.3", "read-cmd-shim": "4.0.0", - "read-package-json": "6.0.4", "resolve-from": "5.0.0", "rimraf": "^4.4.1", "semver": "7.5.2", + "set-blocking": "^2.0.0", "signal-exit": "3.0.7", "slash": "3.0.0", - "ssri": "^9.0.1", + "ssri": "^10.0.6", "strong-log-transformer": "2.1.0", "tar": "6.2.1", "temp-dir": "1.0.0", "tempy": "1.0.0", "upath": "2.0.1", - "uuid": "^9.0.0", + "uuid": "^10.0.0", + "wide-align": "1.1.5", "write-file-atomic": "5.0.1", "write-pkg": "4.0.0", "yargs": "17.7.2" @@ -20563,71 +19097,87 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "packages/legacy-package-management/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "packages/legacy-structure/commands/create": { "name": "@lerna/create", "version": "8.1.4", "license": "MIT", "dependencies": { - "@npmcli/run-script": "7.0.2", + "@npmcli/arborist": "7.5.3", + "@npmcli/package-json": "5.2.0", + "@npmcli/run-script": "8.1.0", "@nx/devkit": ">=17.1.2 < 20", "@octokit/plugin-enterprise-rest": "6.0.1", "@octokit/rest": "19.0.11", + "aproba": "2.0.0", "byte-size": "8.1.1", "chalk": "4.1.0", "clone-deep": "4.0.1", - "cmd-shim": "6.0.1", + "cmd-shim": "6.0.3", + "color-support": "1.1.3", "columnify": "1.6.0", + "console-control-strings": "^1.1.0", "conventional-changelog-core": "5.0.1", "conventional-recommended-bump": "7.0.1", "cosmiconfig": "^8.2.0", - "dedent": "0.7.0", + "dedent": "1.5.3", "execa": "5.0.0", - "fs-extra": "^11.1.1", + "fs-extra": "^11.2.0", "get-stream": "6.0.0", - "git-url-parse": "13.1.0", - "glob-parent": "5.1.2", + "git-url-parse": "14.0.0", + "glob-parent": "6.0.2", "globby": "11.1.0", "graceful-fs": "4.2.11", "has-unicode": "2.0.1", "ini": "^1.3.8", - "init-package-json": "5.0.0", + "init-package-json": "6.0.3", "inquirer": "^8.2.4", "is-ci": "3.0.1", "is-stream": "2.0.0", "js-yaml": "4.1.0", - "libnpmpublish": "7.3.0", + "libnpmpublish": "9.0.9", "load-json-file": "6.2.0", "lodash": "^4.17.21", "make-dir": "4.0.0", "minimatch": "3.0.5", "multimatch": "5.0.0", "node-fetch": "2.6.7", - "npm-package-arg": "8.1.1", - "npm-packlist": "5.1.1", - "npm-registry-fetch": "^14.0.5", - "npmlog": "^6.0.2", + "npm-package-arg": "11.0.2", + "npm-packlist": "8.0.2", + "npm-registry-fetch": "^17.1.0", "nx": ">=17.1.2 < 20", "p-map": "4.0.0", "p-map-series": "2.1.0", "p-queue": "6.6.2", "p-reduce": "^2.1.0", - "pacote": "^17.0.5", + "pacote": "^18.0.6", "pify": "5.0.0", "read-cmd-shim": "4.0.0", - "read-package-json": "6.0.4", "resolve-from": "5.0.0", "rimraf": "^4.4.1", "semver": "^7.3.4", + "set-blocking": "^2.0.0", "signal-exit": "3.0.7", "slash": "^3.0.0", - "ssri": "^9.0.1", + "ssri": "^10.0.6", "strong-log-transformer": "2.1.0", "tar": "6.2.1", "temp-dir": "1.0.0", "upath": "2.0.1", - "uuid": "^9.0.0", + "uuid": "^10.0.0", "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "5.0.0", + "validate-npm-package-name": "5.0.1", + "wide-align": "1.1.5", "write-file-atomic": "5.0.1", "write-pkg": "4.0.0", "yargs": "17.7.2", @@ -20652,55 +19202,70 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "packages/legacy-structure/commands/create/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, "packages/lerna": { "version": "8.1.4", "license": "MIT", "dependencies": { "@lerna/create": "8.1.4", - "@npmcli/run-script": "7.0.2", + "@npmcli/arborist": "7.5.3", + "@npmcli/package-json": "5.2.0", + "@npmcli/run-script": "8.1.0", "@nx/devkit": ">=17.1.2 < 20", "@octokit/plugin-enterprise-rest": "6.0.1", "@octokit/rest": "19.0.11", + "aproba": "2.0.0", "byte-size": "8.1.1", "chalk": "4.1.0", "clone-deep": "4.0.1", - "cmd-shim": "6.0.1", + "cmd-shim": "6.0.3", + "color-support": "1.1.3", "columnify": "1.6.0", + "console-control-strings": "^1.1.0", "conventional-changelog-angular": "7.0.0", "conventional-changelog-core": "5.0.1", "conventional-recommended-bump": "7.0.1", "cosmiconfig": "^8.2.0", - "dedent": "0.7.0", - "envinfo": "7.8.1", + "dedent": "1.5.3", + "envinfo": "7.13.0", "execa": "5.0.0", - "fs-extra": "^11.1.1", + "fs-extra": "^11.2.0", "get-port": "5.1.1", "get-stream": "6.0.0", - "git-url-parse": "13.1.0", - "glob-parent": "5.1.2", + "git-url-parse": "14.0.0", + "glob-parent": "6.0.2", "globby": "11.1.0", "graceful-fs": "4.2.11", "has-unicode": "2.0.1", "import-local": "3.1.0", "ini": "^1.3.8", - "init-package-json": "5.0.0", + "init-package-json": "6.0.3", "inquirer": "^8.2.4", "is-ci": "3.0.1", "is-stream": "2.0.0", "jest-diff": ">=29.4.3 < 30", "js-yaml": "4.1.0", - "libnpmaccess": "7.0.2", - "libnpmpublish": "7.3.0", + "libnpmaccess": "8.0.6", + "libnpmpublish": "9.0.9", "load-json-file": "6.2.0", "lodash": "^4.17.21", "make-dir": "4.0.0", "minimatch": "3.0.5", "multimatch": "5.0.0", "node-fetch": "2.6.7", - "npm-package-arg": "8.1.1", - "npm-packlist": "5.1.1", - "npm-registry-fetch": "^14.0.5", - "npmlog": "^6.0.2", + "npm-package-arg": "11.0.2", + "npm-packlist": "8.0.2", + "npm-registry-fetch": "^17.1.0", "nx": ">=17.1.2 < 20", "p-map": "4.0.0", "p-map-series": "2.1.0", @@ -20708,24 +19273,25 @@ "p-queue": "6.6.2", "p-reduce": "2.1.0", "p-waterfall": "2.1.1", - "pacote": "^17.0.5", + "pacote": "^18.0.6", "pify": "5.0.0", "read-cmd-shim": "4.0.0", - "read-package-json": "6.0.4", "resolve-from": "5.0.0", "rimraf": "^4.4.1", "semver": "^7.3.8", + "set-blocking": "^2.0.0", "signal-exit": "3.0.7", "slash": "3.0.0", - "ssri": "^9.0.1", + "ssri": "^10.0.6", "strong-log-transformer": "2.1.0", "tar": "6.2.1", "temp-dir": "1.0.0", "typescript": ">=3 < 6", "upath": "2.0.1", - "uuid": "^9.0.0", + "uuid": "^10.0.0", "validate-npm-package-license": "3.0.4", - "validate-npm-package-name": "5.0.0", + "validate-npm-package-name": "5.0.1", + "wide-align": "1.1.5", "write-file-atomic": "5.0.1", "write-pkg": "4.0.0", "yargs": "17.7.2", @@ -20752,6 +19318,17 @@ "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } + }, + "packages/lerna/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } } } } diff --git a/package.json b/package.json index 4eda182d47..f5a090beea 100644 --- a/package.json +++ b/package.json @@ -51,14 +51,14 @@ "@types/conventional-recommended-bump": "^6.1.0", "@types/dedent": "^0.7.2", "@types/envinfo": "^7.8.4", - "@types/fs-extra": "^9.0.13", + "@types/fs-extra": "^11.0.4", "@types/git-url-parse": "^9.0.3", "@types/glob-parent": "^5.1.3", "@types/inquirer": "^8.2.5", "@types/is-ci": "^3.0.4", "@types/jest": "29.5.12", "@types/js-yaml": "^4.0.9", - "@types/libnpmpublish": "^4.0.3", + "@types/libnpmpublish": "^9.0.0", "@types/lodash": "^4.17.5", "@types/node": "18.19.10", "@types/node-fetch": "^2.6.11", @@ -66,6 +66,7 @@ "@types/npm-package-arg": "^6.1.4", "@types/npm-packlist": "^7.0.3", "@types/npm-registry-fetch": "^8.0.7", + "@types/npmcli__arborist": "^5.6.6", "@types/npmlog": "^7.0.0", "@types/pify": "^5.0.4", "@types/semver": "^7.5.8", @@ -75,7 +76,7 @@ "@types/tar": "^6.1.13", "@types/temp-dir": "^1.0.0", "@types/tmp": "^0.2.6", - "@types/uuid": "^8.3.4", + "@types/uuid": "^9.0.8", "@types/write-file-atomic": "^4.0.3", "@typescript-eslint/eslint-plugin": "7.13.1", "@typescript-eslint/parser": "7.13.1", @@ -98,6 +99,7 @@ "nx": "19.3.0", "prettier": "^2.2.1", "tacks": "1.2.6", + "signal-exit": "3.0.7", "tmp": "^0.2.3", "touch": "^3.1.1", "ts-jest": "29.1.5", diff --git a/packages/legacy-package-management/package.json b/packages/legacy-package-management/package.json index 43189b931a..fd40f6b441 100644 --- a/packages/legacy-package-management/package.json +++ b/packages/legacy-package-management/package.json @@ -26,27 +26,31 @@ "directory": "packages/legacy-package-management" }, "dependencies": { - "@npmcli/arborist": "7.2.2", - "@npmcli/run-script": "7.0.2", + "@npmcli/arborist": "7.5.3", + "@npmcli/package-json": "5.2.0", + "@npmcli/run-script": "8.1.0", "@nx/devkit": ">=17.1.2 < 20", "@octokit/rest": "19.0.11", + "aproba": "2.0.0", "byte-size": "8.1.1", "chalk": "4.1.0", "clone-deep": "4.0.1", - "cmd-shim": "6.0.1", + "cmd-shim": "6.0.3", + "color-support": "1.1.3", "columnify": "1.6.0", + "console-control-strings": "^1.1.0", "conventional-changelog-core": "5.0.1", "conventional-recommended-bump": "7.0.1", "cosmiconfig": "^8.2.0", - "dedent": "0.7.0", + "dedent": "1.5.3", "execa": "5.0.0", "file-url": "3.0.0", "find-up": "5.0.0", - "fs-extra": "^11.1.1", + "fs-extra": "^11.2.0", "get-port": "5.1.1", "get-stream": "6.0.0", - "git-url-parse": "13.1.0", - "glob-parent": "5.1.2", + "git-url-parse": "14.0.0", + "glob-parent": "6.0.2", "globby": "11.1.0", "graceful-fs": "4.2.11", "has-unicode": "2.0.1", @@ -54,37 +58,37 @@ "inquirer": "8.2.4", "is-ci": "3.0.1", "is-stream": "2.0.0", - "libnpmpublish": "7.3.0", + "libnpmpublish": "9.0.9", "load-json-file": "6.2.0", "make-dir": "4.0.0", "minimatch": "3.0.5", "multimatch": "5.0.0", "node-fetch": "2.6.7", - "npm-package-arg": "8.1.1", - "npm-packlist": "5.1.1", - "npm-registry-fetch": "^14.0.5", - "npmlog": "^6.0.2", + "npm-package-arg": "11.0.2", + "npm-packlist": "8.0.2", + "npm-registry-fetch": "^17.1.0", "p-map": "4.0.0", "p-map-series": "2.1.0", "p-queue": "6.6.2", "p-waterfall": "2.1.1", - "pacote": "^17.0.5", + "pacote": "^18.0.6", "pify": "5.0.0", "pretty-format": "29.4.3", "read-cmd-shim": "4.0.0", - "read-package-json": "6.0.4", "resolve-from": "5.0.0", "rimraf": "^4.4.1", "semver": "7.5.2", + "set-blocking": "^2.0.0", "signal-exit": "3.0.7", "slash": "3.0.0", - "ssri": "^9.0.1", + "ssri": "^10.0.6", "strong-log-transformer": "2.1.0", "tar": "6.2.1", "temp-dir": "1.0.0", "tempy": "1.0.0", "upath": "2.0.1", - "uuid": "^9.0.0", + "uuid": "^10.0.0", + "wide-align": "1.1.5", "write-file-atomic": "5.0.1", "write-pkg": "4.0.0", "yargs": "17.7.2" diff --git a/packages/legacy-structure/commands/create/__tests__/create-command.spec.ts b/packages/legacy-structure/commands/create/__tests__/create-command.spec.ts index 63f2fd2eae..95ce3beb6c 100644 --- a/packages/legacy-structure/commands/create/__tests__/create-command.spec.ts +++ b/packages/legacy-structure/commands/create/__tests__/create-command.spec.ts @@ -1,5 +1,3 @@ -"use strict"; - import { commandRunner, gitAdd, gitSHASerializer, initFixtureFactory } from "@lerna/test-helpers"; import execa from "execa"; import fs from "fs-extra"; diff --git a/packages/legacy-structure/commands/create/package.json b/packages/legacy-structure/commands/create/package.json index 184a84401f..7d5c5cceb4 100644 --- a/packages/legacy-structure/commands/create/package.json +++ b/packages/legacy-structure/commands/create/package.json @@ -30,66 +30,71 @@ "directory": "packages/legacy-structure/commands/create" }, "dependencies": { - "@npmcli/run-script": "7.0.2", + "@npmcli/arborist": "7.5.3", + "@npmcli/package-json": "5.2.0", + "@npmcli/run-script": "8.1.0", "@nx/devkit": ">=17.1.2 < 20", "@octokit/plugin-enterprise-rest": "6.0.1", "@octokit/rest": "19.0.11", + "aproba": "2.0.0", "byte-size": "8.1.1", "chalk": "4.1.0", "clone-deep": "4.0.1", - "cmd-shim": "6.0.1", + "cmd-shim": "6.0.3", + "color-support": "1.1.3", "columnify": "1.6.0", + "console-control-strings": "^1.1.0", "conventional-changelog-core": "5.0.1", "conventional-recommended-bump": "7.0.1", "cosmiconfig": "^8.2.0", - "dedent": "0.7.0", + "dedent": "1.5.3", "execa": "5.0.0", - "fs-extra": "^11.1.1", + "fs-extra": "^11.2.0", "get-stream": "6.0.0", - "git-url-parse": "13.1.0", - "glob-parent": "5.1.2", + "git-url-parse": "14.0.0", + "glob-parent": "6.0.2", "globby": "11.1.0", "graceful-fs": "4.2.11", "has-unicode": "2.0.1", "ini": "^1.3.8", - "init-package-json": "5.0.0", + "init-package-json": "6.0.3", "inquirer": "^8.2.4", "is-ci": "3.0.1", "is-stream": "2.0.0", "js-yaml": "4.1.0", - "libnpmpublish": "7.3.0", + "libnpmpublish": "9.0.9", "load-json-file": "6.2.0", "lodash": "^4.17.21", "make-dir": "4.0.0", "minimatch": "3.0.5", "multimatch": "5.0.0", "node-fetch": "2.6.7", - "npm-package-arg": "8.1.1", - "npm-packlist": "5.1.1", - "npm-registry-fetch": "^14.0.5", - "npmlog": "^6.0.2", + "npm-package-arg": "11.0.2", + "npm-packlist": "8.0.2", + "npm-registry-fetch": "^17.1.0", "nx": ">=17.1.2 < 20", "p-map": "4.0.0", "p-map-series": "2.1.0", "p-queue": "6.6.2", "p-reduce": "^2.1.0", - "pacote": "^17.0.5", + "pacote": "^18.0.6", "pify": "5.0.0", "read-cmd-shim": "4.0.0", - "read-package-json": "6.0.4", "resolve-from": "5.0.0", "rimraf": "^4.4.1", "semver": "^7.3.4", + "set-blocking": "^2.0.0", "signal-exit": "3.0.7", "slash": "^3.0.0", - "ssri": "^9.0.1", + "ssri": "^10.0.6", "strong-log-transformer": "2.1.0", "tar": "6.2.1", "temp-dir": "1.0.0", "upath": "2.0.1", - "uuid": "^9.0.0", + "uuid": "^10.0.0", "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "5.0.0", + "validate-npm-package-name": "5.0.1", + "wide-align": "1.1.5", "write-file-atomic": "5.0.1", "write-pkg": "4.0.0", "yargs": "17.7.2", diff --git a/packages/lerna/package.json b/packages/lerna/package.json index 998ec605e6..09994e16b4 100644 --- a/packages/lerna/package.json +++ b/packages/lerna/package.json @@ -38,50 +38,54 @@ }, "dependencies": { "@lerna/create": "8.1.4", - "@npmcli/run-script": "7.0.2", + "@npmcli/arborist": "7.5.3", + "@npmcli/package-json": "5.2.0", + "@npmcli/run-script": "8.1.0", "@nx/devkit": ">=17.1.2 < 20", "@octokit/plugin-enterprise-rest": "6.0.1", "@octokit/rest": "19.0.11", + "aproba": "2.0.0", "byte-size": "8.1.1", "chalk": "4.1.0", "clone-deep": "4.0.1", - "cmd-shim": "6.0.1", + "cmd-shim": "6.0.3", + "color-support": "1.1.3", "columnify": "1.6.0", + "console-control-strings": "^1.1.0", "conventional-changelog-angular": "7.0.0", "conventional-changelog-core": "5.0.1", "conventional-recommended-bump": "7.0.1", "cosmiconfig": "^8.2.0", - "dedent": "0.7.0", - "envinfo": "7.8.1", + "dedent": "1.5.3", + "envinfo": "7.13.0", "execa": "5.0.0", - "fs-extra": "^11.1.1", + "fs-extra": "^11.2.0", "get-port": "5.1.1", "get-stream": "6.0.0", - "git-url-parse": "13.1.0", - "glob-parent": "5.1.2", + "git-url-parse": "14.0.0", + "glob-parent": "6.0.2", "globby": "11.1.0", "graceful-fs": "4.2.11", "has-unicode": "2.0.1", "import-local": "3.1.0", "ini": "^1.3.8", - "init-package-json": "5.0.0", + "init-package-json": "6.0.3", "inquirer": "^8.2.4", "is-ci": "3.0.1", "is-stream": "2.0.0", "jest-diff": ">=29.4.3 < 30", "js-yaml": "4.1.0", - "libnpmaccess": "7.0.2", - "libnpmpublish": "7.3.0", + "libnpmaccess": "8.0.6", + "libnpmpublish": "9.0.9", "load-json-file": "6.2.0", "lodash": "^4.17.21", "make-dir": "4.0.0", "minimatch": "3.0.5", "multimatch": "5.0.0", "node-fetch": "2.6.7", - "npm-package-arg": "8.1.1", - "npm-packlist": "5.1.1", - "npm-registry-fetch": "^14.0.5", - "npmlog": "^6.0.2", + "npm-package-arg": "11.0.2", + "npm-packlist": "8.0.2", + "npm-registry-fetch": "^17.1.0", "nx": ">=17.1.2 < 20", "p-map": "4.0.0", "p-map-series": "2.1.0", @@ -89,24 +93,25 @@ "p-queue": "6.6.2", "p-reduce": "2.1.0", "p-waterfall": "2.1.1", - "pacote": "^17.0.5", + "pacote": "^18.0.6", "pify": "5.0.0", "read-cmd-shim": "4.0.0", - "read-package-json": "6.0.4", "resolve-from": "5.0.0", "rimraf": "^4.4.1", "semver": "^7.3.8", + "set-blocking": "^2.0.0", "signal-exit": "3.0.7", "slash": "3.0.0", - "ssri": "^9.0.1", + "ssri": "^10.0.6", "strong-log-transformer": "2.1.0", "tar": "6.2.1", "temp-dir": "1.0.0", "typescript": ">=3 < 6", "upath": "2.0.1", - "uuid": "^9.0.0", + "uuid": "^10.0.0", "validate-npm-package-license": "3.0.4", - "validate-npm-package-name": "5.0.0", + "validate-npm-package-name": "5.0.1", + "wide-align": "1.1.5", "write-file-atomic": "5.0.1", "write-pkg": "4.0.0", "yargs": "17.7.2", diff --git a/packages/lerna/src/cli.js b/packages/lerna/src/cli.js index 04e0f4babb..9efa5b52cc 100755 --- a/packages/lerna/src/cli.js +++ b/packages/lerna/src/cli.js @@ -1,5 +1,7 @@ #!/usr/bin/env node +// @ts-check + /* eslint-disable */ "use strict"; @@ -7,7 +9,42 @@ const importLocal = require("import-local"); if (importLocal(__filename)) { - require("npmlog").info("cli", "using local version of lerna"); + // Minimal standalone log function to avoid needing to import full Logger + function minimalInfoLog(prefix, message) { + const stream = process.stderr; + const green = "\x1b[32m"; + const magenta = "\x1b[35m"; + const reset = "\x1b[0m"; + const useColor = stream.isTTY; + + let output = ""; + + if (useColor) { + output += green; // Info level color + } + output += "info"; + if (useColor) { + output += reset; + } + + if (prefix) { + output += " "; + if (useColor) { + output += magenta; // Prefix color + } + output += prefix; + if (useColor) { + output += reset; + } + } + + output += " " + message; + + stream.write(output + "\n"); + } + + minimalInfoLog("cli", "using local version of lerna"); } else { + // @ts-ignore require(".")(process.argv.slice(2)); } diff --git a/packages/lerna/src/commands/add-caching/index.ts b/packages/lerna/src/commands/add-caching/index.ts index a054781304..e4f88606db 100644 --- a/packages/lerna/src/commands/add-caching/index.ts +++ b/packages/lerna/src/commands/add-caching/index.ts @@ -1,3 +1,4 @@ +import { log } from "@lerna/core"; import { Command } from "@lerna/legacy-core"; import { joinPathFragments, @@ -9,7 +10,6 @@ import { import execa from "execa"; import { appendFile } from "fs-extra"; import inquirer from "inquirer"; -import log from "npmlog"; module.exports = function factory(argv: NodeJS.Process["argv"]) { return new AddCachingCommand(argv); diff --git a/packages/lerna/src/commands/repair/index.ts b/packages/lerna/src/commands/repair/index.ts index a94418a06f..e2fb97bc08 100644 --- a/packages/lerna/src/commands/repair/index.ts +++ b/packages/lerna/src/commands/repair/index.ts @@ -1,5 +1,4 @@ -import { Arguments, Command, CommandConfigOptions } from "@lerna/core"; -import log from "npmlog"; +import { Arguments, Command, CommandConfigOptions, log } from "@lerna/core"; import { repair } from "nx/src/command-line/repair/repair"; // eslint-disable-next-line @typescript-eslint/no-var-requires diff --git a/packages/lerna/src/index.ts b/packages/lerna/src/index.ts index 4a99efa859..a02441900a 100644 --- a/packages/lerna/src/index.ts +++ b/packages/lerna/src/index.ts @@ -1,11 +1,10 @@ /* eslint-disable @typescript-eslint/no-var-requires */ -import log from "npmlog"; // Currently external until the usage of LERNA_MODULE_DATA can be refactored const createCmd = require("@lerna/create/command"); // Bundled -import { lernaCLI } from "@lerna/core"; +import { lernaCLI, log } from "@lerna/core"; import changedCmd from "@lerna/commands/changed/command"; import cleanCmd from "@lerna/commands/clean/command"; import diffCmd from "@lerna/commands/diff/command"; From 3f91a3433fcca2c4a63a179497bbb7255cc86e16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CJamesHenry=E2=80=9D?= Date: Mon, 24 Jun 2024 18:41:33 +0400 Subject: [PATCH 08/11] chore(misc): publish 8.1.5 --- CHANGELOG.md | 6 ++++++ lerna.json | 2 +- package-lock.json | 8 ++++---- packages/legacy-package-management/CHANGELOG.md | 6 ++++++ packages/legacy-package-management/package.json | 2 +- packages/legacy-structure/commands/create/CHANGELOG.md | 6 ++++++ packages/legacy-structure/commands/create/package.json | 2 +- packages/lerna/CHANGELOG.md | 6 ++++++ packages/lerna/package.json | 4 ++-- 9 files changed, 33 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e186a256c..c35a078779 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.1.5](https://github.com/lerna/lerna/compare/v8.1.4...v8.1.5) (2024-06-24) + +### Bug Fixes + +- update npm utility dependencies and related packages ([#4033](https://github.com/lerna/lerna/issues/4033)) ([bd1c2d8](https://github.com/lerna/lerna/commit/bd1c2d8a267af47b409e2933fde2186dd73f4772)) + ## [8.1.4](https://github.com/lerna/lerna/compare/v8.1.3...v8.1.4) (2024-06-09) ### Bug Fixes diff --git a/lerna.json b/lerna.json index 5e181b5441..b80f395d11 100644 --- a/lerna.json +++ b/lerna.json @@ -16,5 +16,5 @@ } }, "ignoreChanges": ["**/__fixtures__/**", "**/__tests__/**", "**/*.md"], - "version": "8.1.4" + "version": "8.1.5" } diff --git a/package-lock.json b/package-lock.json index 8154f29256..f87d5b0f80 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19008,7 +19008,7 @@ }, "packages/legacy-package-management": { "name": "@lerna/legacy-package-management", - "version": "8.1.4", + "version": "8.1.5", "license": "MIT", "dependencies": { "@npmcli/arborist": "7.5.3", @@ -19110,7 +19110,7 @@ }, "packages/legacy-structure/commands/create": { "name": "@lerna/create", - "version": "8.1.4", + "version": "8.1.5", "license": "MIT", "dependencies": { "@npmcli/arborist": "7.5.3", @@ -19214,10 +19214,10 @@ } }, "packages/lerna": { - "version": "8.1.4", + "version": "8.1.5", "license": "MIT", "dependencies": { - "@lerna/create": "8.1.4", + "@lerna/create": "8.1.5", "@npmcli/arborist": "7.5.3", "@npmcli/package-json": "5.2.0", "@npmcli/run-script": "8.1.0", diff --git a/packages/legacy-package-management/CHANGELOG.md b/packages/legacy-package-management/CHANGELOG.md index d117e9e393..5e8be90ae5 100644 --- a/packages/legacy-package-management/CHANGELOG.md +++ b/packages/legacy-package-management/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.1.5](https://github.com/lerna/lerna/compare/v8.1.4...v8.1.5) (2024-06-24) + +### Bug Fixes + +- update npm utility dependencies and related packages ([#4033](https://github.com/lerna/lerna/issues/4033)) ([bd1c2d8](https://github.com/lerna/lerna/commit/bd1c2d8a267af47b409e2933fde2186dd73f4772)) + ## [8.1.4](https://github.com/lerna/lerna/compare/v8.1.3...v8.1.4) (2024-06-09) **Note:** Version bump only for package @lerna/legacy-package-management diff --git a/packages/legacy-package-management/package.json b/packages/legacy-package-management/package.json index fd40f6b441..8aea07630f 100644 --- a/packages/legacy-package-management/package.json +++ b/packages/legacy-package-management/package.json @@ -1,6 +1,6 @@ { "name": "@lerna/legacy-package-management", - "version": "8.1.4", + "version": "8.1.5", "description": "Legacy package management concerns provided by lerna. Please migrate to use npm/yarn/pnpm workspaces instead.", "keywords": [ "lerna", diff --git a/packages/legacy-structure/commands/create/CHANGELOG.md b/packages/legacy-structure/commands/create/CHANGELOG.md index 73f65293e0..f836b6463f 100644 --- a/packages/legacy-structure/commands/create/CHANGELOG.md +++ b/packages/legacy-structure/commands/create/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.1.5](https://github.com/lerna/lerna/compare/v8.1.4...v8.1.5) (2024-06-24) + +### Bug Fixes + +- update npm utility dependencies and related packages ([#4033](https://github.com/lerna/lerna/issues/4033)) ([bd1c2d8](https://github.com/lerna/lerna/commit/bd1c2d8a267af47b409e2933fde2186dd73f4772)) + ## [8.1.4](https://github.com/lerna/lerna/compare/v8.1.3...v8.1.4) (2024-06-09) **Note:** Version bump only for package @lerna/create diff --git a/packages/legacy-structure/commands/create/package.json b/packages/legacy-structure/commands/create/package.json index 7d5c5cceb4..58696214ae 100644 --- a/packages/legacy-structure/commands/create/package.json +++ b/packages/legacy-structure/commands/create/package.json @@ -1,6 +1,6 @@ { "name": "@lerna/create", - "version": "8.1.4", + "version": "8.1.5", "description": "Create a new lerna-managed package", "keywords": [ "lerna", diff --git a/packages/lerna/CHANGELOG.md b/packages/lerna/CHANGELOG.md index 4bacee0513..c1e39892d4 100644 --- a/packages/lerna/CHANGELOG.md +++ b/packages/lerna/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [8.1.5](https://github.com/lerna/lerna/compare/v8.1.4...v8.1.5) (2024-06-24) + +### Bug Fixes + +- update npm utility dependencies and related packages ([#4033](https://github.com/lerna/lerna/issues/4033)) ([bd1c2d8](https://github.com/lerna/lerna/commit/bd1c2d8a267af47b409e2933fde2186dd73f4772)) + ## [8.1.4](https://github.com/lerna/lerna/compare/v8.1.3...v8.1.4) (2024-06-09) **Note:** Version bump only for package lerna diff --git a/packages/lerna/package.json b/packages/lerna/package.json index 09994e16b4..3bbf00d74b 100644 --- a/packages/lerna/package.json +++ b/packages/lerna/package.json @@ -1,6 +1,6 @@ { "name": "lerna", - "version": "8.1.4", + "version": "8.1.5", "description": "Lerna is a fast, modern build system for managing and publishing multiple JavaScript/TypeScript packages from the same repository", "keywords": [ "lerna", @@ -37,7 +37,7 @@ "migrations": "./migrations.json" }, "dependencies": { - "@lerna/create": "8.1.4", + "@lerna/create": "8.1.5", "@npmcli/arborist": "7.5.3", "@npmcli/package-json": "5.2.0", "@npmcli/run-script": "8.1.0", From e2b125ba004f6d33178e0a7e6890beff396c2e8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CJamesHenry=E2=80=9D?= Date: Mon, 24 Jun 2024 19:33:45 +0400 Subject: [PATCH 09/11] chore: skip cache in other-node-versions --- .github/workflows/other-node-versions.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/other-node-versions.yml b/.github/workflows/other-node-versions.yml index b6762b74d4..5c7e400838 100644 --- a/.github/workflows/other-node-versions.yml +++ b/.github/workflows/other-node-versions.yml @@ -15,6 +15,7 @@ env: NX_VERBOSE_LOGGING: false COREPACK_ENABLE_AUTO_PIN: "0" COREPACK_ENABLE_STRICT: "0" + NX_SKIP_NX_CACHE: true jobs: set-node-versions: From 1a210dfb25c19fea681d3ea5eda3dd57f4f8aa6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CJamesHenry=E2=80=9D?= Date: Mon, 24 Jun 2024 19:45:14 +0400 Subject: [PATCH 10/11] chore: treat key workflows as global inputs to cache --- .github/workflows/other-node-versions.yml | 1 - nx.json | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/other-node-versions.yml b/.github/workflows/other-node-versions.yml index 5c7e400838..b6762b74d4 100644 --- a/.github/workflows/other-node-versions.yml +++ b/.github/workflows/other-node-versions.yml @@ -15,7 +15,6 @@ env: NX_VERBOSE_LOGGING: false COREPACK_ENABLE_AUTO_PIN: "0" COREPACK_ENABLE_STRICT: "0" - NX_SKIP_NX_CACHE: true jobs: set-node-versions: diff --git a/nx.json b/nx.json index ab067e8c72..c413a0c25c 100644 --- a/nx.json +++ b/nx.json @@ -11,7 +11,9 @@ }, { "runtime": "npm --version" - } + }, + "{workspaceRoot}/.github/workflows/ci.yml", + "{workspaceRoot}/.github/workflows/other-node-versions.yml" ], "production": [ "default", From 52c3bcb5a74a750f9ed93bb6e4c0e6dd1c385ef9 Mon Sep 17 00:00:00 2001 From: James Henry Date: Mon, 24 Jun 2024 23:37:47 +0400 Subject: [PATCH 11/11] chore: swallow non-critical error within test helpers (#4034) --- libs/test-helpers/src/lib/cli.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/libs/test-helpers/src/lib/cli.ts b/libs/test-helpers/src/lib/cli.ts index cbfa08839f..6a3f200f7e 100644 --- a/libs/test-helpers/src/lib/cli.ts +++ b/libs/test-helpers/src/lib/cli.ts @@ -17,11 +17,15 @@ export function commandRunner(commandModule: yargs.CommandModule) { // eslint-disable-next-line @typescript-eslint/no-var-requires - // prime the pump so slow-as-molasses CI doesn't fail with delayed require() - // TODO: refactor to address type issues - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - require(path.resolve(require.main.filename, "../../")); + try { + // prime the pump so slow-as-molasses CI doesn't fail with delayed require() + // TODO: refactor to address type issues + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + require(path.resolve(require.main.filename, "../../")); + } catch { + /* empty */ + } return (cwd: string) => { // create a _new_ yargs instance every time cwd changes to avoid singleton pollution