From 71bf3a4d359626831c1711b1a1c1b01ed108c6a5 Mon Sep 17 00:00:00 2001 From: electrovir Date: Sat, 14 Sep 2024 13:04:35 +0000 Subject: [PATCH] [patch] use new augment-vir --- package-lock.json | 1740 ++++++++++------- package.json | 4 +- packages/compile/package.json | 19 +- packages/compile/src/compile.test.ts | 9 +- packages/compile/src/compile.ts | 27 +- packages/core/package.json | 14 +- packages/core/src/api/copy-configs.test.ts | 47 +- packages/core/src/api/copy-configs.ts | 7 +- packages/core/src/api/execute-command.ts | 41 +- packages/core/src/api/install-deps.ts | 12 +- packages/core/src/api/parse-args.test.ts | 45 +- packages/core/src/api/parse-args.ts | 31 +- .../core/src/api/typescript-config-file.ts | 2 +- packages/core/src/augments/fs/search.ts | 46 +- .../core/src/augments/object/access.test.ts | 10 +- packages/core/src/augments/object/access.ts | 7 +- .../src/augments/stream/callback-writable.ts | 4 +- .../augments/tsconfig/parse-tsconfig.test.ts | 13 +- .../src/augments/tsconfig/parse-tsconfig.ts | 2 +- packages/core/src/colors.test.ts | 8 +- .../errors/virmator-no-trace.error.test.ts | 6 +- packages/core/src/plugin/index.ts | 1 - packages/core/src/plugin/plugin-configs.ts | 5 +- packages/core/src/plugin/plugin-env.ts | 8 - packages/core/src/plugin/plugin-executor.ts | 11 +- packages/core/src/plugin/plugin-init.ts | 5 +- packages/core/src/plugin/plugin-logger.ts | 113 -- packages/core/src/plugin/plugin.test.ts | 2 +- packages/core/src/plugin/plugin.ts | 7 +- packages/deps/package.json | 12 +- packages/deps/src/deps.test.ts | 6 +- packages/deps/src/deps.ts | 28 +- packages/docs/package.json | 15 +- packages/docs/src/docs.test.ts | 20 +- packages/docs/src/docs.ts | 35 +- packages/format/package.json | 10 +- packages/format/src/format.test.ts | 4 +- packages/format/src/format.ts | 47 +- packages/frontend/configs/vite.config.base.ts | 2 +- packages/frontend/package.json | 14 +- packages/frontend/src/always-reload.vite.ts | 2 +- packages/frontend/src/frontend.test.ts | 4 +- .../frontend/src/frontend.test.ts.snapshot | 4 +- packages/frontend/src/frontend.ts | 19 +- packages/help/package.json | 13 +- packages/help/src/help-message.test.ts | 20 +- packages/help/src/help-message.ts | 9 +- packages/help/src/help.test.ts | 2 +- packages/help/src/index.test.ts | 8 +- packages/init/package.json | 13 +- packages/init/src/init.ts | 86 +- packages/lint/package.json | 12 +- packages/lint/src/lint.test.ts | 4 +- packages/lint/src/lint.test.ts.snapshot | 16 +- packages/lint/src/lint.ts | 75 +- packages/plugin-testing/package.json | 15 +- .../src/augments/fs/dir-contents.test.ts | 16 +- .../src/augments/fs/dir-contents.ts | 12 +- packages/plugin-testing/src/index.test.ts | 6 +- .../plugin-testing/src/test-plugin.test.ts | 13 +- packages/plugin-testing/src/test-plugin.ts | 66 +- packages/publish/package.json | 12 +- packages/publish/src/publish.ts | 29 +- packages/scripts/package.json | 10 +- packages/scripts/src/cli.ts | 3 +- .../scripts/src/generate-plugin-readmes.ts | 3 +- .../scripts/src/generate-virmator-readmes.ts | 2 +- packages/spellcheck/package.json | 21 +- packages/spellcheck/src/spellcheck.test.ts | 4 +- packages/spellcheck/src/spellcheck.ts | 20 +- packages/test/package.json | 16 +- packages/test/src/test.test.ts | 4 +- packages/test/src/test.ts | 41 +- .../test-files/node-tests/src/bad.test.ts | 6 +- .../test-files/node-tests/src/good.test.ts | 6 +- packages/virmator/package.json | 34 +- packages/virmator/src/cli.ts | 10 +- packages/virmator/src/tests/init.test.ts | 23 +- .../virmator/src/tests/init.test.ts.snapshot | 4 +- .../virmator/src/tests/test-virmator.mock.ts | 4 +- 80 files changed, 1678 insertions(+), 1428 deletions(-) delete mode 100644 packages/core/src/plugin/plugin-logger.ts diff --git a/package-lock.json b/package-lock.json index 8a5b576f..86e5976d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@virmator/mono-repo-root", - "version": "13.3.12", + "version": "13.3.13", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@virmator/mono-repo-root", - "version": "13.3.12", + "version": "13.3.13", "workspaces": [ "packages/*" ], @@ -21,7 +21,7 @@ "esbuild": "^0.23.1", "eslint": "^9.10.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-jsdoc": "^50.2.2", + "eslint-plugin-jsdoc": "^50.2.3", "eslint-plugin-monorepo-cop": "^1.0.2", "eslint-plugin-playwright": "^1.6.2", "eslint-plugin-prettier": "^5.2.1", @@ -60,6 +60,22 @@ "node": ">=6.0.0" } }, + "node_modules/@augment-vir/assert": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/assert/-/assert-30.0.4.tgz", + "integrity": "sha512-gHLeN8EnvJS+y/LW3qH4GJbPcRcrtBE2SHsOp9P/f2g02XqYgxmil7yyiRAuZYQVimVi3S4Vg4favkJFHZUVkw==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "deep-eql": "^5.0.2", + "expect-type": "^0.20.0", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=22" + } + }, "node_modules/@augment-vir/common": { "version": "29.3.0", "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-29.3.0.tgz", @@ -71,10 +87,44 @@ "type-fest": "^4.21.0" } }, + "node_modules/@augment-vir/core": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/core/-/core-30.0.4.tgz", + "integrity": "sha512-WCLrT5EF14gzN3WJ5s5LvS04UCXe2+Ny5C+A8H2TdsqRxbrJUTKaX6VCHkLM81Ulkn45j65IqRfkQNioMNra6w==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@date-vir/duration": "^6.0.0", + "browser-or-node": "^3.0.0", + "json5": "^2.2.3", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/@augment-vir/node": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/node/-/node-30.0.4.tgz", + "integrity": "sha512-uFXkJ80Ot0QQcvAJppln4EaJfxRU0I+5T++YcSKXyrkmhnYA2BNyB2CFHuPCRQSsPk+R+vKYTxjv6h5+to8Smw==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "terminate": "^2.8.0", + "type-fest": "^4.26.1", + "typed-event-target": "^3.4.0" + }, + "engines": { + "node": ">=22" + } + }, "node_modules/@augment-vir/node-js": { "version": "29.3.0", "resolved": "https://registry.npmjs.org/@augment-vir/node-js/-/node-js-29.3.0.tgz", "integrity": "sha512-MC+5HEcECwZ0SbG5Rtqv6+5gPINi/VIct2V+DLib4Zf6ZO8/0yiryQJsWKYHM2sumAbnlKB0mucj9jgPFepssA==", + "dev": true, "license": "MIT", "dependencies": { "@augment-vir/common": "^29.3.0", @@ -86,16 +136,55 @@ "type-fest": "^4.20.1" } }, - "node_modules/@augment-vir/testing": { - "version": "29.3.0", - "resolved": "https://registry.npmjs.org/@augment-vir/testing/-/testing-29.3.0.tgz", - "integrity": "sha512-8MneC2+JLtp7YCMzvclkqNpNh3WtRi+QjLQpir5wF964uwJEkT6ejVRyno0kRf1/mAEFthlgOwoY/mYMU4HcPA==", + "node_modules/@augment-vir/node/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/@augment-vir/test": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/test/-/test-30.0.4.tgz", + "integrity": "sha512-QXM7r8UTevuMnhmgDUXvUC525aU6tUCDA/1cg2N+TmXyBbg2qyMuS0fVVzYB+qfAXyYZDmwIl4zzpuX1dZ1XuQ==", "dev": true, - "license": "MIT", + "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "expect-type": "^0.15.0", - "type-fest": "^4.20.1" + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@open-wc/testing-helpers": "^3.0.1", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/@augment-vir/test/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "dev": true, + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=22" } }, "node_modules/@babel/code-frame": { @@ -547,23 +636,6 @@ "node": ">=4" } }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -2712,6 +2784,19 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@date-vir/duration": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@date-vir/duration/-/duration-6.0.0.tgz", + "integrity": "sha512-ZRNNR9adO7Dto2r+veOe+ZDX5R1M5vh0BFP0ZIH3A0hH04eRqLJXcRXD7FI20X0pChCJizmEYavQMJgUROtT9Q==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@types/luxon": "^3.4.2", + "luxon": "^3.5.0" + }, + "engines": { + "node": ">=22" + } + }, "node_modules/@es-joy/jsdoccomment": { "version": "0.48.0", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.48.0.tgz", @@ -3621,9 +3706,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz", - "integrity": "sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz", + "integrity": "sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==", "cpu": [ "arm" ], @@ -3635,9 +3720,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz", - "integrity": "sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz", + "integrity": "sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==", "cpu": [ "arm64" ], @@ -3649,9 +3734,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz", - "integrity": "sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz", + "integrity": "sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==", "cpu": [ "arm64" ], @@ -3663,9 +3748,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz", - "integrity": "sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz", + "integrity": "sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==", "cpu": [ "x64" ], @@ -3677,9 +3762,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz", - "integrity": "sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz", + "integrity": "sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==", "cpu": [ "arm" ], @@ -3691,9 +3776,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz", - "integrity": "sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz", + "integrity": "sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==", "cpu": [ "arm" ], @@ -3705,9 +3790,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz", - "integrity": "sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz", + "integrity": "sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==", "cpu": [ "arm64" ], @@ -3719,9 +3804,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz", - "integrity": "sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz", + "integrity": "sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==", "cpu": [ "arm64" ], @@ -3733,9 +3818,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz", - "integrity": "sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz", + "integrity": "sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==", "cpu": [ "ppc64" ], @@ -3747,9 +3832,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz", - "integrity": "sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz", + "integrity": "sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==", "cpu": [ "riscv64" ], @@ -3761,9 +3846,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz", - "integrity": "sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz", + "integrity": "sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==", "cpu": [ "s390x" ], @@ -3775,9 +3860,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz", - "integrity": "sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz", + "integrity": "sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==", "cpu": [ "x64" ], @@ -3789,9 +3874,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz", - "integrity": "sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz", + "integrity": "sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==", "cpu": [ "x64" ], @@ -3803,9 +3888,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz", - "integrity": "sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz", + "integrity": "sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==", "cpu": [ "arm64" ], @@ -3817,9 +3902,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz", - "integrity": "sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz", + "integrity": "sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==", "cpu": [ "ia32" ], @@ -3831,9 +3916,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz", - "integrity": "sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz", + "integrity": "sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==", "cpu": [ "x64" ], @@ -3852,47 +3937,46 @@ "license": "MIT" }, "node_modules/@shikijs/core": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.17.0.tgz", - "integrity": "sha512-Mkk4Mp4bNnW1kytU8I7S5PK5teNSe0iKlfqxPss4sdwnlcU8a2N62Z3te2gVmZfU9t1HF6L3wyWuM43IvEeEsg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.17.6.tgz", + "integrity": "sha512-9ztslig6/YmCg/XwESAXbKjAjOhaq6HVced9NY6qcbDz1X5g/S90Wco2vMjBNX/6V71ASkzri76JewSGPa7kiQ==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/engine-javascript": "1.17.0", - "@shikijs/engine-oniguruma": "1.17.0", - "@shikijs/types": "1.17.0", + "@shikijs/engine-javascript": "1.17.6", + "@shikijs/engine-oniguruma": "1.17.6", + "@shikijs/types": "1.17.6", "@shikijs/vscode-textmate": "^9.2.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.2" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.17.0.tgz", - "integrity": "sha512-EiBVlxmzJZdC2ypzn8k+vxLngbBNgHLS4RilwrFOABGRc72kUZubbD/6Chrq2RcVtD3yq1GtiiIdFMGd9BTX3Q==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.17.6.tgz", + "integrity": "sha512-5EEZj8tVcierNxm4V0UMS2PVoflb0UJPalWWV8l9rRg+oOfnr5VivqBJbkyq5grltVPvByIXvVbY8GSM/356jQ==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "1.17.0", - "oniguruma-to-js": "0.3.3", - "regex": "4.3.2" + "@shikijs/types": "1.17.6", + "oniguruma-to-js": "0.4.3" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.17.0.tgz", - "integrity": "sha512-nsXzJGLQ0fhKmA4Gwt1cF7vC8VuZ1HSDrTRuj48h/qDeX/TzmOlTDXQ3uPtyuhyg/2rbZRzNhN8UFU4fSnQfXg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.17.6.tgz", + "integrity": "sha512-NLfWDMXFYe0nDHFbEoyZdz89aIIey3bTfF3zLYSUNTXks5s4uinZVmuPOFf1HfTeGqIn8uErJSBc3VnpJO7Alw==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "1.17.0", + "@shikijs/types": "1.17.6", "@shikijs/vscode-textmate": "^9.2.2" } }, "node_modules/@shikijs/types": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.17.0.tgz", - "integrity": "sha512-Tvu2pA69lbpXB+MmgIaROP1tio8y0uYvKb5Foh3q0TJBTAJuaoa5eDEtS/0LquyveacsiVrYF4uEZILju+7Ybg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.17.6.tgz", + "integrity": "sha512-ndTFa2TJi2w51ddKQDn3Jy8f6K4E5Q2x3dA3Hmsd3+YmxDQ10UWHjcw7VbVbKzv3VcUvYPLy+z9neqytSzUMUg==", "dev": true, "license": "MIT", "dependencies": { @@ -4239,7 +4323,6 @@ "version": "3.4.2", "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.2.tgz", "integrity": "sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==", - "dev": true, "license": "MIT" }, "node_modules/@types/mdast": { @@ -4270,9 +4353,9 @@ } }, "node_modules/@types/mocha": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.7.tgz", - "integrity": "sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==", + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.8.tgz", + "integrity": "sha512-HfMcUmy9hTMJh66VNcmeC9iVErIZJli2bszuXc6julh5YGuRb/W5OnkHjwLNYdFlMis0sY3If5SEAp+PktdJjw==", "dev": true, "license": "MIT" }, @@ -4284,9 +4367,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.5.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz", - "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "version": "22.5.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", + "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", "license": "MIT", "dependencies": { "undici-types": "~6.19.2" @@ -4327,9 +4410,9 @@ } }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", + "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", "dev": true, "license": "MIT" }, @@ -4825,13 +4908,6 @@ "node": ">=16.14" } }, - "node_modules/@web/dev-server-core/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true, - "license": "MIT" - }, "node_modules/@web/dev-server-core/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -5293,13 +5369,6 @@ "@esbuild/win32-x64": "0.19.12" } }, - "node_modules/@web/dev-server-esbuild/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true, - "license": "MIT" - }, "node_modules/@web/dev-server-rollup": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.6.4.tgz", @@ -5318,13 +5387,6 @@ "node": ">=18.0.0" } }, - "node_modules/@web/dev-server-rollup/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true, - "license": "MIT" - }, "node_modules/@web/parse5-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", @@ -5339,13 +5401,6 @@ "node": ">=18.0.0" } }, - "node_modules/@web/parse5-utils/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true, - "license": "MIT" - }, "node_modules/@web/test-runner": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.19.0.tgz", @@ -5447,27 +5502,6 @@ "node": ">=18.0.0" } }, - "node_modules/@web/test-runner-core/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@web/test-runner-core/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -5481,16 +5515,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/@web/test-runner-core/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@web/test-runner-coverage-v8": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@web/test-runner-coverage-v8/-/test-runner-coverage-v8-0.8.0.tgz", @@ -5579,47 +5603,6 @@ "node": ">=18.0.0" } }, - "node_modules/@web/test-runner/node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/@web/test-runner/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@web/test-runner/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -6213,9 +6196,9 @@ "optional": true }, "node_modules/bare-fs": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.4.tgz", - "integrity": "sha512-7YyxitZEq0ey5loOF5gdo1fZQFF7290GziT+VbAJ+JbYTJYaPZwuEz2r/Nq23sm4fjyTgUf2uJI2gkT3xAuSYA==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", + "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -6226,9 +6209,9 @@ } }, "node_modules/bare-os": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.3.tgz", - "integrity": "sha512-FjkNiU3AwTQNQkcxFOmDcCfoN1LjjtU+ofGJh5DymZZLTqdw2i/CzV7G0h3snvh6G8jrWtdmNSgZPH4L2VOAsQ==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", + "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", "dev": true, "license": "Apache-2.0", "optional": true @@ -6807,6 +6790,24 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -6895,21 +6896,20 @@ } }, "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "color-name": "1.1.3" } }, "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, "license": "MIT" }, "node_modules/combined-stream": { @@ -7026,6 +7026,26 @@ "url": "https://github.com/chalk/chalk-template?sponsor=1" } }, + "node_modules/command-line-usage/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/command-line-usage/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/command-line-usage/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7094,17 +7114,15 @@ "license": "MIT" }, "node_modules/concurrently": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", - "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.0.1.tgz", + "integrity": "sha512-wYKvCd/f54sTXJMSfV6Ln/B8UrfLBKOYa+lzc6CHay3Qek+LorVSBdMVfyewFhRbH0Rbabsk4D+3PL/VjQ5gzg==", "license": "MIT", "dependencies": { "chalk": "^4.1.2", - "date-fns": "^2.30.0", "lodash": "^4.17.21", "rxjs": "^7.8.1", "shell-quote": "^1.8.1", - "spawn-command": "0.0.2", "supports-color": "^8.1.1", "tree-kill": "^1.2.2", "yargs": "^17.7.2" @@ -7114,7 +7132,7 @@ "concurrently": "dist/bin/concurrently.js" }, "engines": { - "node": "^14.13.0 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" @@ -7163,6 +7181,24 @@ "node": ">=8" } }, + "node_modules/concurrently/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/concurrently/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -7583,6 +7619,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/deep-equal": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", @@ -7875,9 +7920,10 @@ "license": "BSD-3-Clause" }, "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -7909,6 +7955,12 @@ "node": ">=0.10.0" } }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT" + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -7923,9 +7975,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.19", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.19.tgz", - "integrity": "sha512-kpLJJi3zxTR1U828P+LIUDZ5ohixyo68/IcYOHLqnbTPr/wdgn4i1ECvmALN9E16JPA6cvCG5UG79gVwVdEK5w==", + "version": "1.5.23", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.23.tgz", + "integrity": "sha512-mBhODedOXg4v5QWwl21DjM5amzjmI1zw9EPrPK/5Wx7C8jt33bpZNrC7OhHUG3pxRtbLpr3W2dXT+Ph1SsfRZA==", "dev": true, "license": "ISC" }, @@ -8461,9 +8513,9 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "50.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.2.2.tgz", - "integrity": "sha512-i0ZMWA199DG7sjxlzXn5AeYZxpRfMJjDPUl7lL9eJJX8TPRoIaxJU4ys/joP5faM5AXE1eqW/dslCj3uj4Nqpg==", + "version": "50.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.2.3.tgz", + "integrity": "sha512-aNh/dz3wSkyo53y2KWDCrA8fDuXDMtMVflcbesd8AFPgcF8ugOv9mJxC7qKB95R96nzCB91iEwU7MMznh/7okQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -8617,9 +8669,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.35.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.2.tgz", - "integrity": "sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==", + "version": "7.36.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz", + "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==", "dev": true, "license": "MIT", "dependencies": { @@ -9303,27 +9355,6 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-sonarjs/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint-plugin-sonarjs/node_modules/json5": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", @@ -9392,16 +9423,6 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-sonarjs/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/eslint-plugin-sonarjs/node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -9639,6 +9660,26 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint/node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -9787,6 +9828,21 @@ "node": ">= 0.6" } }, + "node_modules/event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", + "license": "MIT", + "dependencies": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -9819,10 +9875,13 @@ "license": "ISC" }, "node_modules/expect-type": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-0.15.0.tgz", - "integrity": "sha512-yWnriYB4e8G54M5/fAFj7rCIBiKs1HAACaY13kCz6Ku0dezjS9aMcfcdVK2X8Tv2tEV1BPz/wKfQ7WA4S/d8aA==", - "license": "Apache-2.0" + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-0.20.0.tgz", + "integrity": "sha512-uHaC9LYNv6BcW+8SvXcwUUDCrrUxt3GSa61DFvTHj8JC+M0hekMFBwMlCarLQDk5bbpZ2vStpnQPIwRuV98YMw==", + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } }, "node_modules/extend": { "version": "3.0.2", @@ -10130,6 +10189,12 @@ "node": ">= 0.6" } }, + "node_modules/from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "license": "MIT" + }, "node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", @@ -10298,9 +10363,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.0.tgz", - "integrity": "sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -10442,20 +10507,21 @@ } }, "node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", "dependencies": { + "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", "merge2": "^1.4.1", - "slash": "^4.0.0" + "slash": "^3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10610,6 +10676,19 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-from-html/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/hast-util-from-parse5": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", @@ -11797,7 +11876,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, "license": "MIT", "bin": { "json5": "lib/cli.js" @@ -12205,6 +12283,26 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/log-update/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-update/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/log-update/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -12289,7 +12387,6 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -12317,6 +12414,11 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "license": "ISC" }, + "node_modules/map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==" + }, "node_modules/markdown-code-example-inserter": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/markdown-code-example-inserter/-/markdown-code-example-inserter-2.0.3.tgz", @@ -13110,12 +13212,100 @@ "type-fest": "^4.12.0" } }, + "node_modules/mono-vir/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/mono-vir/node_modules/browser-or-node": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==", "license": "MIT" }, + "node_modules/mono-vir/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/mono-vir/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mono-vir/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/mono-vir/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/mono-vir/node_modules/concurrently": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", + "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "date-fns": "^2.30.0", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "spawn-command": "0.0.2", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^14.13.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", @@ -13476,11 +13666,14 @@ } }, "node_modules/oniguruma-to-js": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.3.3.tgz", - "integrity": "sha512-m90/WEhgs8g4BxG37+Nu3YrMfJDs2YXtYtIllhsEPR+wP3+K4EZk6dDUvy2v2K4MNFDDOYKL4/yqYPXDqyozTQ==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz", + "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==", "dev": true, "license": "MIT", + "dependencies": { + "regex": "^4.3.2" + }, "funding": { "url": "https://github.com/sponsors/antfu" } @@ -13695,17 +13888,11 @@ } }, "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } + "license": "MIT" }, "node_modules/parseurl": { "version": "1.3.3", @@ -13788,6 +13975,18 @@ "node": ">=8" } }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "license": [ + "MIT", + "Apache2" + ], + "dependencies": { + "through": "~2.3" + } + }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -14302,6 +14501,21 @@ "dev": true, "license": "MIT" }, + "node_modules/ps-tree": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", + "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", + "license": "MIT", + "dependencies": { + "event-stream": "=3.3.4" + }, + "bin": { + "ps-tree": "bin/ps-tree.js" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/pump": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", @@ -14656,9 +14870,9 @@ "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, "license": "MIT", "dependencies": { @@ -15010,9 +15224,9 @@ } }, "node_modules/rollup": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.2.tgz", - "integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==", + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.3.tgz", + "integrity": "sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==", "dev": true, "license": "MIT", "dependencies": { @@ -15026,22 +15240,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.21.2", - "@rollup/rollup-android-arm64": "4.21.2", - "@rollup/rollup-darwin-arm64": "4.21.2", - "@rollup/rollup-darwin-x64": "4.21.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.21.2", - "@rollup/rollup-linux-arm-musleabihf": "4.21.2", - "@rollup/rollup-linux-arm64-gnu": "4.21.2", - "@rollup/rollup-linux-arm64-musl": "4.21.2", - "@rollup/rollup-linux-powerpc64le-gnu": "4.21.2", - "@rollup/rollup-linux-riscv64-gnu": "4.21.2", - "@rollup/rollup-linux-s390x-gnu": "4.21.2", - "@rollup/rollup-linux-x64-gnu": "4.21.2", - "@rollup/rollup-linux-x64-musl": "4.21.2", - "@rollup/rollup-win32-arm64-msvc": "4.21.2", - "@rollup/rollup-win32-ia32-msvc": "4.21.2", - "@rollup/rollup-win32-x64-msvc": "4.21.2", + "@rollup/rollup-android-arm-eabi": "4.21.3", + "@rollup/rollup-android-arm64": "4.21.3", + "@rollup/rollup-darwin-arm64": "4.21.3", + "@rollup/rollup-darwin-x64": "4.21.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.3", + "@rollup/rollup-linux-arm-musleabihf": "4.21.3", + "@rollup/rollup-linux-arm64-gnu": "4.21.3", + "@rollup/rollup-linux-arm64-musl": "4.21.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.3", + "@rollup/rollup-linux-riscv64-gnu": "4.21.3", + "@rollup/rollup-linux-s390x-gnu": "4.21.3", + "@rollup/rollup-linux-x64-gnu": "4.21.3", + "@rollup/rollup-linux-x64-musl": "4.21.3", + "@rollup/rollup-win32-arm64-msvc": "4.21.3", + "@rollup/rollup-win32-ia32-msvc": "4.21.3", + "@rollup/rollup-win32-x64-msvc": "4.21.3", "fsevents": "~2.3.2" } }, @@ -15080,6 +15294,12 @@ "type-fest": "^4.22.0" } }, + "node_modules/run-time-assertions/node_modules/expect-type": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-0.15.0.tgz", + "integrity": "sha512-yWnriYB4e8G54M5/fAFj7rCIBiKs1HAACaY13kCz6Ku0dezjS9aMcfcdVK2X8Tv2tEV1BPz/wKfQ7WA4S/d8aA==", + "license": "Apache-2.0" + }, "node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -15263,14 +15483,16 @@ } }, "node_modules/shiki": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.17.0.tgz", - "integrity": "sha512-VZf8cPShRwfzPcaswv81+YP7qJEoFwRT+Ehy6bizim7M0zG9bk8Egug550C+xS9g7rKIOPhzAlp2uEyuCxbk/A==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.17.6.tgz", + "integrity": "sha512-RejGugKpDM75vh6YtF9R771acxHRDikC/01kxsUGW+Pnaz3pTY+c8aZB5CnD7p0vuFPs1HaoAIU/4E+NCfS+mQ==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/core": "1.17.0", - "@shikijs/types": "1.17.0", + "@shikijs/core": "1.17.6", + "@shikijs/engine-javascript": "1.17.6", + "@shikijs/engine-oniguruma": "1.17.6", + "@shikijs/types": "1.17.6", "@shikijs/vscode-textmate": "^9.2.2", "@types/hast": "^3.0.4" } @@ -15329,16 +15551,13 @@ "license": "MIT" }, "node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/slashes": { @@ -15382,13 +15601,33 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", - "engines": { + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" } @@ -15450,6 +15689,39 @@ "sort-package-json": "cli.js" } }, + "node_modules/sort-package-json/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sort-package-json/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -15533,6 +15805,18 @@ "dev": true, "license": "CC0-1.0" }, + "node_modules/split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", + "license": "MIT", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, "node_modules/sprintf-js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", @@ -15563,10 +15847,19 @@ "node": ">= 0.4" } }, + "node_modules/stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", + "license": "MIT", + "dependencies": { + "duplexer": "~0.1.1" + } + }, "node_modules/streamx": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.0.tgz", - "integrity": "sha512-ZGd1LhDeGFucr1CUCTBOS58ZhEendd0ttpGT3usTvosS4ntIwKN9LJFp+OeCSprsCPL14BXVRZlHGRY1V9PVzQ==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", + "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", "dev": true, "license": "MIT", "dependencies": { @@ -15949,6 +16242,18 @@ "dev": true, "license": "MIT" }, + "node_modules/terminate": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/terminate/-/terminate-2.8.0.tgz", + "integrity": "sha512-bcbjJEg0wY5nuJXvGxxHfmoEPkyHLCctUKO6suwtxy7jVSgGcgPeGwpbLDLELFhIaxCGRr3dPvyNg1yuz2V0eg==", + "license": "GPL-2.0", + "dependencies": { + "ps-tree": "^1.2.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/test-exclude": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", @@ -16052,9 +16357,9 @@ } }, "node_modules/text-decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.1.tgz", - "integrity": "sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.0.tgz", + "integrity": "sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -16072,7 +16377,6 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true, "license": "MIT" }, "node_modules/to-fast-properties": { @@ -16208,6 +16512,15 @@ } } }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/tsconfck": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.3.tgz", @@ -16292,6 +16605,26 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/tsconfig-paths-webpack-plugin/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -16322,9 +16655,9 @@ } }, "node_modules/tsx": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.0.tgz", - "integrity": "sha512-bV30kM7bsLZKZIOCHeMNVMJ32/LuJzLVajkQI/qf92J2Qr08ueLQvW00PUZGiuLPP760UINwupgUj8qrSCPUKg==", + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.1.tgz", + "integrity": "sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==", "license": "MIT", "dependencies": { "esbuild": "~0.23.0", @@ -16460,7 +16793,6 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/typed-event-target/-/typed-event-target-3.4.0.tgz", "integrity": "sha512-BvSk33Dgo+kubQpbRqiI8A7C5obN0hRydWYya/LTZQoPTCpmB4zScNJSckuKBJDq62A/sCRlZN8ZHgSQxVAKqw==", - "dev": true, "license": "(MIT or CC0 1.0)", "dependencies": { "@augment-vir/common": "^26.2.0", @@ -16471,7 +16803,6 @@ "version": "26.4.0", "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-26.4.0.tgz", "integrity": "sha512-rQoLA+t3bbvs269KvZYKZ76WO7Ofp468mqahsI4RAvPjJaOJ/6lCo49HgvUjnFlv7DoEVbTMfHT3G3+VztNnsA==", - "dev": true, "license": "MIT", "dependencies": { "browser-or-node": "^2.1.1", @@ -16483,7 +16814,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==", - "dev": true, "license": "MIT" }, "node_modules/typed-query-selector": { @@ -16590,9 +16920,9 @@ } }, "node_modules/ua-parser-js": { - "version": "1.0.38", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.38.tgz", - "integrity": "sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==", + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.39.tgz", + "integrity": "sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==", "dev": true, "funding": [ { @@ -16609,6 +16939,9 @@ } ], "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, "engines": { "node": "*" } @@ -16654,9 +16987,9 @@ "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, "license": "MIT", "engines": { @@ -16678,9 +17011,9 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, "license": "MIT", "engines": { @@ -16983,9 +17316,9 @@ "link": true }, "node_modules/vite": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.4.tgz", - "integrity": "sha512-RHFCkULitycHVTtelJ6jQLd+KSAAzOgEYorV32R2q++M6COBjKJR6BxqClwp5sf0XaBDjVMuJ9wnNfyAJwjMkA==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.5.tgz", + "integrity": "sha512-pXqR0qtb2bTwLkev4SE3r4abCNioP3GkjvIDLlzziPpXtHgiJIjuKl+1GN6ESOT3wMjG3JTeARopj2SwYaHTOA==", "dev": true, "license": "MIT", "dependencies": { @@ -17804,6 +18137,24 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -18041,23 +18392,24 @@ }, "packages/compile": { "name": "@virmator/compile", - "version": "13.3.12", + "version": "13.3.13", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", - "run-time-assertions": "^1.5.2" + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13" }, "devDependencies": { - "@types/node": "^22.5.4", - "@virmator/plugin-testing": "^13.3.12", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", + "@virmator/plugin-testing": "^13.3.13", "c8": "^10.1.2", "chalk": "^5.3.0", - "concurrently": "^9.0.0", + "concurrently": "^9.0.1", "istanbul-smart-text-reporter": "^1.1.4", "mono-vir": "^1.0.1", - "tsx": "^4.19.0", + "tsx": "^4.19.1", "typescript": "^5.6.2" }, "engines": { @@ -18067,97 +18419,42 @@ "typescript": "*" } }, - "packages/compile/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "packages/compile/node_modules/concurrently": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.0.0.tgz", - "integrity": "sha512-iAxbsDeUkn8E/4+QalT7T3WvlyTfmsoez+19lbbcsxZdOEMfBukd8LA30KYez2UR5xkKFzbcqXIZy5RisCbaxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "lodash": "^4.17.21", - "rxjs": "^7.8.1", - "shell-quote": "^1.8.1", - "supports-color": "^8.1.1", - "tree-kill": "^1.2.2", - "yargs": "^17.7.2" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" - } - }, - "packages/compile/node_modules/concurrently/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "packages/compile/node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", + "packages/compile/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", "dependencies": { - "has-flag": "^4.0.0" + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" }, "engines": { - "node": ">=8" + "node": ">=22" } }, "packages/core": { "name": "@virmator/core", - "version": "13.3.12", + "version": "13.3.13", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", "chalk": "^5.3.0", "cli-args-vir": "^0.0.3", - "concurrently": "^9.0.0", + "concurrently": "^9.0.1", "mono-vir": "^1.0.1", - "run-time-assertions": "^1.5.2", "semver": "^7.6.3", "type-fest": "^4.26.1", "typescript": "^5.6.2" }, "devDependencies": { - "@augment-vir/testing": "^29.3.0", - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "@types/semver": "^7.5.8", "esbuild": "^0.23.1" }, @@ -18165,86 +18462,37 @@ "node": ">=22" } }, - "packages/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "packages/core/node_modules/concurrently": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.0.0.tgz", - "integrity": "sha512-iAxbsDeUkn8E/4+QalT7T3WvlyTfmsoez+19lbbcsxZdOEMfBukd8LA30KYez2UR5xkKFzbcqXIZy5RisCbaxw==", - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "lodash": "^4.17.21", - "rxjs": "^7.8.1", - "shell-quote": "^1.8.1", - "supports-color": "^8.1.1", - "tree-kill": "^1.2.2", - "yargs": "^17.7.2" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" - } - }, - "packages/core/node_modules/concurrently/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "packages/core/node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", + "packages/core/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", "dependencies": { - "has-flag": "^4.0.0" + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" }, "engines": { - "node": ">=8" + "node": ">=22" } }, "packages/deps": { "name": "@virmator/deps", - "version": "13.3.12", + "version": "13.3.13", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", "mri": "^1.2.0" }, "devDependencies": { - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "c8": "^10.1.2", "dependency-cruiser": "^16.4.1", "esbuild": "^0.23.1", @@ -18255,20 +18503,38 @@ "node": ">=22" } }, + "packages/deps/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=22" + } + }, "packages/docs": { "name": "@virmator/docs", - "version": "13.3.12", + "version": "13.3.13", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", "chalk": "^5.3.0", - "mri": "^1.2.0", - "run-time-assertions": "^1.5.2" + "mri": "^1.2.0" }, "devDependencies": { - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "c8": "^10.1.2", "esbuild": "^0.23.1", "istanbul-smart-text-reporter": "^1.1.4", @@ -18279,17 +18545,36 @@ "node": ">=22" } }, + "packages/docs/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=22" + } + }, "packages/format": { "name": "@virmator/format", - "version": "13.3.12", + "version": "13.3.13", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@virmator/core": "^13.3.13", "mri": "^1.2.0" }, "devDependencies": { - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "c8": "^10.1.2", "istanbul-smart-text-reporter": "^1.1.4", "prettier": "^3.3.3", @@ -18305,38 +18590,75 @@ "node": ">=22" } }, + "packages/format/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=22" + } + }, "packages/frontend": { "name": "@virmator/frontend", - "version": "13.3.12", + "version": "13.3.13", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", "mri": "^1.2.0" }, "devDependencies": { - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "typescript": "^5.6.2", - "vite": "^5.4.3", + "vite": "^5.4.5", "vite-tsconfig-paths": "^5.0.1" }, "engines": { "node": ">=22" } }, + "packages/frontend/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=22" + } + }, "packages/help": { "name": "@virmator/help", - "version": "13.3.12", + "version": "13.3.13", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", - "run-time-assertions": "^1.5.2" + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13" }, "devDependencies": { - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "c8": "^10.1.2", "istanbul-smart-text-reporter": "^1.1.4" }, @@ -18344,21 +18666,56 @@ "node": ">=22" } }, + "packages/help/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=22" + } + }, "packages/init": { "name": "@virmator/init", - "version": "13.3.12", + "version": "13.3.13", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", "simple-git": "^3.26.0" }, "devDependencies": { - "@types/node": "^22.5.4", + "@types/node": "^22.5.5", "element-vir": "^22.2.2", "mono-vir": "^1.0.1", - "tsx": "^4.19.0", + "tsx": "^4.19.1", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=22" + } + }, + "packages/init/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", "type-fest": "^4.26.1" }, "engines": { @@ -18367,24 +18724,26 @@ }, "packages/lint": { "name": "@virmator/lint", - "version": "13.3.12", + "version": "13.3.13", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@virmator/core": "^13.3.13", "mri": "^1.2.0" }, "devDependencies": { + "@augment-vir/test": "^30.0.4", "@eslint/eslintrc": "^3.1.0", "@eslint/js": "^9.10.0", "@stylistic/eslint-plugin": "^2.8.0", "@stylistic/eslint-plugin-ts": "^2.8.0", - "@types/node": "^22.5.4", + "@types/node": "^22.5.5", "@typescript-eslint/eslint-plugin": "^8.5.0", "c8": "^10.1.2", "eslint": "^9.10.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-jsdoc": "^50.2.2", + "eslint-plugin-jsdoc": "^50.2.3", "eslint-plugin-monorepo-cop": "^1.0.2", "eslint-plugin-playwright": "^1.6.2", "eslint-plugin-prettier": "^5.2.1", @@ -18398,46 +18757,81 @@ "node": ">=22" } }, + "packages/lint/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=22" + } + }, "packages/plugin-testing": { "name": "@virmator/plugin-testing", - "version": "13.3.12", + "version": "13.3.13", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", "cli-args-vir": "^0.0.3", - "run-time-assertions": "^1.5.2", "type-fest": "^4.26.1" }, "devDependencies": { - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "c8": "^10.1.2", "istanbul-smart-text-reporter": "^1.1.4", - "tsx": "^4.19.0", + "tsx": "^4.19.1", "typescript": "^5.6.2" }, "engines": { "node": ">=22" } }, + "packages/plugin-testing/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=22" + } + }, "packages/publish": { "name": "@virmator/publish", - "version": "13.3.12", + "version": "13.3.13", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", "chalk": "^5.3.0", "mri": "^1.2.0", - "run-time-assertions": "^1.5.2", "semver": "^7.6.3", "simple-git": "^3.26.0", "url-vir": "^1.5.0" }, "devDependencies": { - "@types/node": "^22.5.4", + "@types/node": "^22.5.5", "@types/semver": "^7.5.8", "markdown-code-example-inserter": "^2.0.3", "type-fest": "^4.26.1", @@ -18447,134 +18841,116 @@ "node": ">=22" } }, - "packages/scripts": { - "name": "@virmator/scripts", - "version": "13.3.12", + "packages/publish/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "mri": "^1.2.0", - "virmator": "^13.3.12" - }, - "devDependencies": { - "@types/node": "^22.5.4" + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" }, "engines": { "node": ">=22" } }, - "packages/spellcheck": { - "name": "@virmator/spellcheck", - "version": "13.3.12", + "packages/scripts": { + "name": "@virmator/scripts", + "version": "13.3.13", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", "mri": "^1.2.0", - "run-time-assertions": "^1.5.2" + "virmator": "^13.3.13" }, "devDependencies": { - "@types/node": "^22.5.4", - "@virmator/plugin-testing": "^13.3.12", - "c8": "^10.1.2", - "concurrently": "^9.0.0", - "cspell": "^8.14.2", - "istanbul-smart-text-reporter": "^1.1.4", - "tsx": "^4.19.0" + "@types/node": "^22.5.5" }, "engines": { "node": ">=22" } }, - "packages/spellcheck/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", + "packages/scripts/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", "dependencies": { - "color-convert": "^2.0.1" + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=22" } }, - "packages/spellcheck/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", + "packages/spellcheck": { + "name": "@virmator/spellcheck", + "version": "13.3.13", + "license": "(MIT or CC0 1.0)", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", + "mri": "^1.2.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "packages/spellcheck/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" + "devDependencies": { + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", + "@virmator/plugin-testing": "^13.3.13", + "c8": "^10.1.2", + "concurrently": "^9.0.1", + "cspell": "^8.14.2", + "istanbul-smart-text-reporter": "^1.1.4", + "tsx": "^4.19.1" }, "engines": { - "node": ">=8" + "node": ">=22" } }, - "packages/spellcheck/node_modules/concurrently": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.0.0.tgz", - "integrity": "sha512-iAxbsDeUkn8E/4+QalT7T3WvlyTfmsoez+19lbbcsxZdOEMfBukd8LA30KYez2UR5xkKFzbcqXIZy5RisCbaxw==", - "dev": true, - "license": "MIT", + "packages/spellcheck/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", "dependencies": { - "chalk": "^4.1.2", - "lodash": "^4.17.21", - "rxjs": "^7.8.1", - "shell-quote": "^1.8.1", - "supports-color": "^8.1.1", - "tree-kill": "^1.2.2", - "yargs": "^17.7.2" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + "node": ">=22" } }, "packages/test": { "name": "@virmator/test", - "version": "13.3.12", + "version": "13.3.13", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", "glob": "^11.0.0", "mri": "^1.2.0" }, "devDependencies": { + "@augment-vir/test": "^30.0.4", "@open-wc/testing": "^4.0.0", - "@types/mocha": "^10.0.7", - "@types/node": "^22.5.4", + "@types/mocha": "^10.0.8", + "@types/node": "^22.5.5", "@web/dev-server-esbuild": "^1.0.2", "@web/test-runner": "^0.19.0", "@web/test-runner-commands": "^0.9.0", @@ -18582,42 +18958,78 @@ "@web/test-runner-visual-regression": "^0.10.0", "c8": "^10.1.2", "istanbul-smart-text-reporter": "^1.1.4", - "tsx": "^4.19.0" + "tsx": "^4.19.1" + }, + "engines": { + "node": ">=22" + } + }, + "packages/test/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" }, "engines": { "node": ">=22" } }, "packages/virmator": { - "version": "13.3.12", + "version": "13.3.13", "license": "(MIT or CC0 1.0)", "dependencies": { - "@augment-vir/node-js": "^29.3.0", - "@virmator/compile": "^13.3.12", - "@virmator/core": "^13.3.12", - "@virmator/deps": "^13.3.12", - "@virmator/docs": "^13.3.12", - "@virmator/format": "^13.3.12", - "@virmator/frontend": "^13.3.12", - "@virmator/help": "^13.3.12", - "@virmator/init": "^13.3.12", - "@virmator/lint": "^13.3.12", - "@virmator/publish": "^13.3.12", - "@virmator/spellcheck": "^13.3.12", - "@virmator/test": "^13.3.12", - "tsx": "^4.19.0" + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/compile": "^13.3.13", + "@virmator/core": "^13.3.13", + "@virmator/deps": "^13.3.13", + "@virmator/docs": "^13.3.13", + "@virmator/format": "^13.3.13", + "@virmator/frontend": "^13.3.13", + "@virmator/help": "^13.3.13", + "@virmator/init": "^13.3.13", + "@virmator/lint": "^13.3.13", + "@virmator/publish": "^13.3.13", + "@virmator/spellcheck": "^13.3.13", + "@virmator/test": "^13.3.13", + "tsx": "^4.19.1" }, "bin": { "virmator": "src/cli.ts" }, "devDependencies": { - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "c8": "^10.1.2", "istanbul-smart-text-reporter": "^1.1.4" }, "engines": { "node": ">=22" } + }, + "packages/virmator/node_modules/@augment-vir/common": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-30.0.4.tgz", + "integrity": "sha512-l1SItvNqABOFOqFDHA6gk24PEQyWz//HZKqM9AG84j0+54iDILv2bCohlELFk8B+98D2+oqP+emKjKo3YmzZ1g==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/assert": "^30.0.4", + "@augment-vir/core": "^30.0.4", + "@date-vir/duration": "^6.0.0", + "ansi-styles": "^6.2.1", + "json5": "^2.2.3", + "type-fest": "^4.26.1" + }, + "engines": { + "node": ">=22" + } } } } diff --git a/package.json b/package.json index dcc67aee..84964d0e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/mono-repo-root", - "version": "13.3.12", + "version": "13.3.13", "private": true, "type": "module", "workspaces": [ @@ -33,7 +33,7 @@ "esbuild": "^0.23.1", "eslint": "^9.10.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-jsdoc": "^50.2.2", + "eslint-plugin-jsdoc": "^50.2.3", "eslint-plugin-monorepo-cop": "^1.0.2", "eslint-plugin-playwright": "^1.6.2", "eslint-plugin-prettier": "^5.2.1", diff --git a/packages/compile/package.json b/packages/compile/package.json index 1e685483..aa5857c5 100644 --- a/packages/compile/package.json +++ b/packages/compile/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/compile", - "version": "13.3.12", + "version": "13.3.13", "description": "Default TS compile plugin for virmator.", "keywords": [ "virmator", @@ -31,20 +31,21 @@ "test:update": "npm test update" }, "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", - "run-time-assertions": "^1.5.2" + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13" }, "devDependencies": { - "@types/node": "^22.5.4", - "@virmator/plugin-testing": "^13.3.12", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", + "@virmator/plugin-testing": "^13.3.13", "c8": "^10.1.2", "chalk": "^5.3.0", - "concurrently": "^9.0.0", + "concurrently": "^9.0.1", "istanbul-smart-text-reporter": "^1.1.4", "mono-vir": "^1.0.1", - "tsx": "^4.19.0", + "tsx": "^4.19.1", "typescript": "^5.6.2" }, "peerDependencies": { diff --git a/packages/compile/src/compile.test.ts b/packages/compile/src/compile.test.ts index 9c4fb970..e6b81cb3 100644 --- a/packages/compile/src/compile.test.ts +++ b/packages/compile/src/compile.test.ts @@ -1,14 +1,15 @@ -import {LogOutputType, runShellCommand} from '@augment-vir/node-js'; +import {LogOutputType} from '@augment-vir/common'; +import {runShellCommand} from '@augment-vir/node'; +import {describe, it, type UniversalTestContext} from '@augment-vir/test'; import {testPlugin} from '@virmator/plugin-testing'; import {join} from 'node:path'; -import {describe, it, TestContext} from 'node:test'; import {virmatorCompilePlugin} from './compile.js'; import {testFilesDir} from './file-paths.mock.js'; describe(virmatorCompilePlugin.name, () => { async function testVirmatorCompilePlugin( shouldPass: boolean, - context: TestContext, + context: UniversalTestContext, cwd: string, ) { await testPlugin(shouldPass, context, virmatorCompilePlugin, 'compile', cwd, { @@ -17,7 +18,7 @@ describe(virmatorCompilePlugin.name, () => { * This log transform removes excessive TypeScript help logging so that test results * are stable. */ - if (logType === LogOutputType.standard) { + if (logType === LogOutputType.Standard) { return arg; } return arg; diff --git a/packages/compile/src/compile.ts b/packages/compile/src/compile.ts index 04860328..3756e3e5 100644 --- a/packages/compile/src/compile.ts +++ b/packages/compile/src/compile.ts @@ -1,12 +1,11 @@ -import {isTruthy} from '@augment-vir/common'; -import {logColors} from '@augment-vir/node-js'; +import {check} from '@augment-vir/assert'; +import {logColors, RuntimeEnv} from '@augment-vir/common'; import { copyConfigFile, defineVirmatorPlugin, NpmDepType, PackageType, parseTsConfig, - VirmatorEnv, VirmatorPluginExecutorParams, } from '@virmator/core'; import type {ChalkInstance} from 'chalk'; @@ -46,8 +45,8 @@ export const virmatorCompilePlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'tsconfig.package.json'), copyToPath: 'tsconfig.json', env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -58,8 +57,8 @@ export const virmatorCompilePlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'tsconfig.mono-package.json'), copyToPath: 'tsconfig.json', env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoPackage, @@ -70,8 +69,8 @@ export const virmatorCompilePlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'tsconfig.mono.json'), copyToPath: join('configs', 'tsconfig.base.json'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -83,8 +82,8 @@ export const virmatorCompilePlugin = defineVirmatorPlugin( typescript: { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -93,8 +92,8 @@ export const virmatorCompilePlugin = defineVirmatorPlugin( 'mono-vir': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -177,7 +176,7 @@ async function createCompileCommandString( tsconfig?.options.composite ? '-b' : '', '--pretty', ...cliInputs.filteredArgs, - ].filter(isTruthy); + ].filter(check.isTruthy); return fullCommand.join(' '); } diff --git a/packages/core/package.json b/packages/core/package.json index f9f348b4..4815f205 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/core", - "version": "13.3.12", + "version": "13.3.13", "description": "Shared core functionality for all virmator plugins and the virmator CLI.", "keywords": [ "automation", @@ -31,20 +31,20 @@ "test:update": "npm test update" }, "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", "chalk": "^5.3.0", "cli-args-vir": "^0.0.3", - "concurrently": "^9.0.0", + "concurrently": "^9.0.1", "mono-vir": "^1.0.1", - "run-time-assertions": "^1.5.2", "semver": "^7.6.3", "type-fest": "^4.26.1", "typescript": "^5.6.2" }, "devDependencies": { - "@augment-vir/testing": "^29.3.0", - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "@types/semver": "^7.5.8", "esbuild": "^0.23.1" }, diff --git a/packages/core/src/api/copy-configs.test.ts b/packages/core/src/api/copy-configs.test.ts index 6a98e8c5..b3cea966 100644 --- a/packages/core/src/api/copy-configs.test.ts +++ b/packages/core/src/api/copy-configs.test.ts @@ -1,12 +1,13 @@ -import {PackageType, VirmatorEnv} from '@virmator/core'; -import assert from 'node:assert/strict'; +import {assert} from '@augment-vir/assert'; +import {RuntimeEnv} from '@augment-vir/common'; +import {describe, it} from '@augment-vir/test'; +import {PackageType} from '@virmator/core'; import {join} from 'node:path'; -import {describe, it} from 'node:test'; import {flattenConfigs} from './copy-configs.js'; describe(flattenConfigs.name, () => { it('flattens the compile configs', () => { - assert.deepStrictEqual( + assert.deepEquals( flattenConfigs( { compile: { @@ -20,8 +21,8 @@ describe(flattenConfigs.name, () => { copyFromPath: join('configs', 'tsconfig.package.json'), copyToPath: 'tsconfig.json', env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -32,8 +33,8 @@ describe(flattenConfigs.name, () => { copyFromPath: join('configs', 'tsconfig.mono.json'), copyToPath: join('configs', 'tsconfig.base.json'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -52,8 +53,8 @@ describe(flattenConfigs.name, () => { copyFromPath: join('configs', 'tsconfig.package.json'), copyToPath: 'tsconfig.json', env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -71,8 +72,8 @@ describe(flattenConfigs.name, () => { copyFromPath: join('configs', 'tsconfig.mono.json'), copyToPath: join('configs', 'tsconfig.base.json'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -100,8 +101,8 @@ describe(flattenConfigs.name, () => { copyFromPath: join('configs', 'tsconfig.package.json'), copyToPath: 'tsconfig.json', env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -119,8 +120,8 @@ describe(flattenConfigs.name, () => { copyFromPath: join('configs', 'tsconfig.mono.json'), copyToPath: join('configs', 'tsconfig.base.json'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -133,7 +134,7 @@ describe(flattenConfigs.name, () => { ); }); it('flattens the deps configs', () => { - assert.deepStrictEqual( + assert.deepEquals( flattenConfigs( { deps: { @@ -167,8 +168,8 @@ describe(flattenConfigs.name, () => { copyFromPath: join('configs', 'dep-cruiser.config.ts'), copyToPath: join('configs', 'dep-cruiser.config.ts'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -193,8 +194,8 @@ describe(flattenConfigs.name, () => { copyFromPath: join('configs', 'dep-cruiser.config.ts'), copyToPath: join('configs', 'dep-cruiser.config.ts'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -241,8 +242,8 @@ describe(flattenConfigs.name, () => { 'dep-cruiser.config.ts', ), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, diff --git a/packages/core/src/api/copy-configs.ts b/packages/core/src/api/copy-configs.ts index 8da5f9a1..9c5992f5 100644 --- a/packages/core/src/api/copy-configs.ts +++ b/packages/core/src/api/copy-configs.ts @@ -1,4 +1,4 @@ -import {awaitedForEach, extractErrorMessage, MaybePromise} from '@augment-vir/common'; +import {awaitedForEach, extractErrorMessage, MaybePromise, type Logger} from '@augment-vir/common'; import {existsSync} from 'node:fs'; import {mkdir, readFile, writeFile} from 'node:fs/promises'; import {basename, dirname, join} from 'node:path'; @@ -9,7 +9,6 @@ import { UsedVirmatorPluginCommands, VirmatorPluginResolvedConfigs, } from '../plugin/plugin-executor.js'; -import {PluginLogger} from '../plugin/plugin-logger.js'; /** * Extracts a 1d array of virmator plugin config files from previously calculated used commands and @@ -47,7 +46,7 @@ export async function copyPluginConfigs( resolvedConfigs: Readonly>, packageType: PackageType, monoRepoPackages: MonoRepoPackage[], - log: PluginLogger, + log: Logger, filteredArgs: string[], ) { const configs = flattenConfigs(usedCommands, resolvedConfigs).sort((a, b) => @@ -84,7 +83,7 @@ export async function copyPluginConfigs( /** Copies a single virmator plugin config file. */ export async function copyConfigFile( config: Readonly>, - log: PluginLogger, + log: Logger, /** * If `true`, the config will be copied even if the copy destination already exists. * diff --git a/packages/core/src/api/execute-command.ts b/packages/core/src/api/execute-command.ts index 9fa0b371..c6783a1a 100644 --- a/packages/core/src/api/execute-command.ts +++ b/packages/core/src/api/execute-command.ts @@ -1,25 +1,23 @@ +import {check} from '@augment-vir/assert'; import { awaitedBlockingMap, extractErrorMessage, filterMap, - isTruthy, - mapObjectValues, - PartialAndUndefined, - wrapInTry, -} from '@augment-vir/common'; -import { log, logColors, + log as logImport, LogOutputType, - readPackageJson, - runShellCommand, -} from '@augment-vir/node-js'; + mapObjectValues, + PartialWithUndefined, + wrapInTry, + type Logger, +} from '@augment-vir/common'; +import {readPackageJson, runShellCommand} from '@augment-vir/node'; import chalk from 'chalk'; import concurrently, {CloseEvent, ConcurrentlyCommandInput} from 'concurrently'; import {getRelativePosixPackagePathsInDependencyOrder} from 'mono-vir'; import {cpus} from 'node:os'; import {join, resolve} from 'node:path'; -import {isRunTimeType} from 'run-time-assertions'; import {PackageJson} from 'type-fest'; import {findClosestPackageDir} from '../augments/index.js'; import {CallbackWritable} from '../augments/stream/callback-writable.js'; @@ -35,7 +33,6 @@ import { VirmatorPluginResolvedConfigs, } from '../plugin/plugin-executor.js'; import {VirmatorPluginCliCommands} from '../plugin/plugin-init.js'; -import {createPluginLogger, PluginLogger} from '../plugin/plugin-logger.js'; import {VirmatorPlugin} from '../plugin/plugin.js'; import {copyPluginConfigs} from './copy-configs.js'; import {installNpmDeps, installPluginNpmDeps} from './install-deps.js'; @@ -72,7 +69,7 @@ export type ExecuteCommandParams = { * ]; */ cliCommand: string | ReadonlyArray; -} & PartialAndUndefined<{ +} & PartialWithUndefined<{ /** * The current working directory. In most cases, this can be left unset. * @@ -87,7 +84,7 @@ export type ExecuteCommandParams = { */ entryPointFilePath: string; /** Set the logger for use with this execution. */ - log: PluginLogger; + log: Logger; /** * The maximum number of concurrent processes that can run at the same time when running a * command per mono-repo sub package. @@ -129,7 +126,7 @@ async function determinePackageType( try { if ( cwdPackageJson.workspaces && - (isRunTimeType(cwdPackageJson.workspaces, 'array') + (check.isArray(cwdPackageJson.workspaces) ? cwdPackageJson.workspaces.length : cwdPackageJson.workspaces.packages?.length) ) { @@ -201,9 +198,9 @@ async function findMonoRepoDir(cwdPackagePath: string) { function writeLog( arg: string, - log: PluginLogger, + log: Logger, logType: LogOutputType, - extraOptions: PartialAndUndefined | undefined, + extraOptions: PartialWithUndefined | undefined, ) { const transformed: string = extraOptions?.logTransform?.[logType] ? extraOptions.logTransform[logType](arg) @@ -216,7 +213,7 @@ function writeLog( transformed.replace(/\n$/, ''), ].join(''); - if (logType === LogOutputType.error) { + if (logType === LogOutputType.Error) { log.error(finalLog); } else { log.plain(finalLog); @@ -230,7 +227,7 @@ export async function executeVirmatorCommand({ cwd = process.cwd(), ...params }: ExecuteCommandParams) { - const log = logParam || createPluginLogger(process); + const log = logParam || logImport; const args = parseCliArgs({ ...params, log, @@ -258,7 +255,7 @@ export async function executeVirmatorCommand({ const monoRepoPackages = packageType === PackageType.MonoRoot ? await getMonoRepoPackages(cwdPackagePath) : []; const outerMaxProcesses = params.concurrency || cpus().length - 1 || 1; - const filteredArgs = args.filteredCommandArgs.filter(isTruthy); + const filteredArgs = args.filteredCommandArgs.filter(check.isTruthy); const executorParams: VirmatorPluginExecutorParams = { cliInputs: { @@ -290,10 +287,10 @@ export async function executeVirmatorCommand({ cwd, shell: 'bash', stderrCallback(stderr) { - writeLog(stderr, log, LogOutputType.error, extraOptions); + writeLog(stderr, log, LogOutputType.Error, extraOptions); }, stdoutCallback(stdout) { - writeLog(stdout, log, LogOutputType.standard, extraOptions); + writeLog(stdout, log, LogOutputType.Standard, extraOptions); }, ...options, }); @@ -355,7 +352,7 @@ export async function executeVirmatorCommand({ }; }, ) - ).filter(isTruthy); + ).filter(check.isTruthy); const writeStream = new CallbackWritable(log); diff --git a/packages/core/src/api/install-deps.ts b/packages/core/src/api/install-deps.ts index 51ca69fc..7aa8936f 100644 --- a/packages/core/src/api/install-deps.ts +++ b/packages/core/src/api/install-deps.ts @@ -1,12 +1,12 @@ -import {awaitedBlockingMap, getObjectTypedEntries, isTruthy} from '@augment-vir/common'; -import {readPackageJson, runShellCommand} from '@augment-vir/node-js'; +import {check} from '@augment-vir/assert'; +import {awaitedBlockingMap, getObjectTypedEntries, type Logger} from '@augment-vir/common'; +import {readPackageJson, runShellCommand} from '@augment-vir/node'; import * as semver from 'semver'; import {PackageJson} from 'type-fest'; import {VirmatorNoTraceError} from '../errors/virmator-no-trace.error.js'; import {PackageType} from '../plugin/plugin-env.js'; import {UsedVirmatorPluginCommands} from '../plugin/plugin-executor.js'; import {NpmDepType, PluginNpmDeps} from '../plugin/plugin-init.js'; -import {PluginLogger} from '../plugin/plugin-logger.js'; /** Install's a virmator plugin's listed npm deps depending on which command is being run. */ export async function installPluginNpmDeps({ @@ -18,7 +18,7 @@ export async function installPluginNpmDeps({ pluginPackagePath: string; pluginName: string; packageType: PackageType; - log: PluginLogger; + log: Logger; usedCommands: Readonly; }): Promise { const deps = flattenDeps(usedCommands); @@ -41,7 +41,7 @@ export async function installNpmDeps({ pluginPackagePath: string; pluginName: string; packageType: PackageType; - log: PluginLogger; + log: Logger; deps: Partial; }): Promise { const neededDeps = getObjectTypedEntries(deps); @@ -111,7 +111,7 @@ export async function installNpmDeps({ depType === NpmDepType.Dev ? '-D' : '', installDeps, ] - .filter(isTruthy) + .filter(check.isTruthy) .join(' '); log.faint(`Installing ${installDeps}...`); diff --git a/packages/core/src/api/parse-args.test.ts b/packages/core/src/api/parse-args.test.ts index 002e7c2e..f548e3cf 100644 --- a/packages/core/src/api/parse-args.test.ts +++ b/packages/core/src/api/parse-args.test.ts @@ -1,13 +1,14 @@ -import {emptyLog, NpmDepType, PackageType, VirmatorEnv} from '@virmator/core'; -import assert from 'node:assert/strict'; +import {assert} from '@augment-vir/assert'; +import {emptyLog, RuntimeEnv, type AnyObject} from '@augment-vir/common'; +import {describe, it} from '@augment-vir/test'; +import {NpmDepType, PackageType} from '@virmator/core'; import {join} from 'node:path'; -import {describe, it} from 'node:test'; import {VirmatorPlugin} from '../plugin/plugin.js'; import {calculateUsedCommands, parseCliArgs} from './parse-args.js'; describe(calculateUsedCommands.name, () => { it('calculates correctly', () => { - assert.deepStrictEqual( + assert.deepEquals( calculateUsedCommands( { deps: { @@ -45,8 +46,8 @@ describe(calculateUsedCommands.name, () => { copyFromPath: join('configs', 'dep-cruiser.config.ts'), copyToPath: join('configs', 'dep-cruiser.config.ts'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -59,8 +60,8 @@ describe(calculateUsedCommands.name, () => { 'dependency-cruiser': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -71,8 +72,8 @@ describe(calculateUsedCommands.name, () => { esbuild: { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -91,8 +92,8 @@ describe(calculateUsedCommands.name, () => { 'npm-check-updates': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -108,7 +109,7 @@ describe(calculateUsedCommands.name, () => { 'deps', 'check', ], - ), + ) as AnyObject, { deps: { doc: { @@ -192,14 +193,12 @@ describe(parseCliArgs.name, () => { const examplePlugins = [ { cliCommands: { - fake: {}, + fake: {doc: {examples: [], sections: []}}, }, name: 'fake plugin', - } satisfies Pick< - VirmatorPlugin, - | 'name' - | 'cliCommands' - > as VirmatorPlugin, + executor() {}, + pluginPackageRootPath: '', + }, ] as const satisfies ReadonlyArray>; function testParseCliArgs(cliCommand: string) { @@ -212,23 +211,23 @@ describe(parseCliArgs.name, () => { } it('parses command name', () => { - assert.deepStrictEqual(testParseCliArgs('fake'), { + assert.deepEquals(testParseCliArgs('fake'), { commands: ['fake'], filteredCommandArgs: [], plugin: examplePlugins[0], - usedCommands: {fake: {subCommands: {}}}, + usedCommands: {fake: {subCommands: {}, doc: {examples: [], sections: []}}}, virmatorFlags: {}, }); }); it('parses multiple args', () => { - assert.deepStrictEqual(testParseCliArgs('fake --no-deps some-arg --more-arg'), { + assert.deepEquals(testParseCliArgs('fake --no-deps some-arg --more-arg'), { commands: ['fake'], filteredCommandArgs: [ 'some-arg', '--more-arg', ], plugin: examplePlugins[0], - usedCommands: {fake: {subCommands: {}}}, + usedCommands: {fake: {subCommands: {}, doc: {examples: [], sections: []}}}, virmatorFlags: { '--no-deps': true, }, diff --git a/packages/core/src/api/parse-args.ts b/packages/core/src/api/parse-args.ts index f4d2807b..0527850d 100644 --- a/packages/core/src/api/parse-args.ts +++ b/packages/core/src/api/parse-args.ts @@ -1,17 +1,10 @@ -import { - getObjectTypedEntries, - hasKey, - isLengthAtLeast, - mapObjectValues, - wrapInTry, -} from '@augment-vir/common'; +import {check} from '@augment-vir/assert'; +import {getObjectTypedEntries, mapObjectValues, wrapInTry, type Logger} from '@augment-vir/common'; import {extractRelevantArgs} from 'cli-args-vir'; -import {isRunTimeType} from 'run-time-assertions'; import {Writable} from 'type-fest'; import {accessAtKeys} from '../augments/object/access.js'; import {UsedVirmatorPluginCommands} from '../plugin/plugin-executor.js'; -import {VirmatorPluginCliCommands} from '../plugin/plugin-init.js'; -import {PluginLogger} from '../plugin/plugin-logger.js'; +import {IndividualPluginCommand, VirmatorPluginCliCommands} from '../plugin/plugin-init.js'; import {VirmatorPlugin} from '../plugin/plugin.js'; import {SetVirmatorFlags, virmatorFlags} from './virmator-flags.js'; @@ -59,8 +52,8 @@ export function mapPluginsByCommand( commandName, command, ]) => { - if (!isRunTimeType(commandName, 'string')) { - throw new Error( + if (!check.isString(commandName)) { + throw new TypeError( `Command '${String(commandName)}' in plugin '${plugin.name}' must be string.`, ); } @@ -75,7 +68,9 @@ export function mapPluginsByCommand( mappedPlugins[commandName] = { plugin, - subCommands: extractNestedCommands(command.subCommands || {}), + subCommands: extractNestedCommands( + (command as IndividualPluginCommand).subCommands || {}, + ), }; }, ); @@ -89,7 +84,7 @@ export function calculateUsedCommands( pluginCliCommands: Readonly, commands: ReadonlyArray, ): UsedVirmatorPluginCommands { - if (!isLengthAtLeast(commands, 1)) { + if (!check.isLengthAtLeast(commands, 1)) { return {}; } @@ -121,9 +116,9 @@ export function parseCliArgs({ plugins: ReadonlyArray>; cliCommand: string | ReadonlyArray; entryPointFilePath: string; - log: PluginLogger; + log: Logger; }): ParsedArgs { - const rawArgs: ReadonlyArray = isRunTimeType(cliCommand, 'array') + const rawArgs: ReadonlyArray = check.isArray(cliCommand) ? cliCommand : cliCommand.split(' '); @@ -144,11 +139,11 @@ export function parseCliArgs({ const parsedArgs = relevantArgs.reduce( (parsedArgs: ParsedArgs, arg) => { - if (hasKey(virmatorFlags, arg)) { + if (check.isKeyOf(arg, virmatorFlags)) { parsedArgs.virmatorFlags[arg] = true; } else if (parsedArgs.filteredCommandArgs.length) { parsedArgs.filteredCommandArgs.push(arg); - } else if (isLengthAtLeast(parsedArgs.commands, 1)) { + } else if (check.isLengthAtLeast(parsedArgs.commands, 1)) { const mainCommand = parsedArgs.commands[0]; const subCommands = mappedPlugins[mainCommand]?.subCommands || {}; const availableSubCommands = accessAtKeys( diff --git a/packages/core/src/api/typescript-config-file.ts b/packages/core/src/api/typescript-config-file.ts index 6d18dd2f..5eb22d41 100644 --- a/packages/core/src/api/typescript-config-file.ts +++ b/packages/core/src/api/typescript-config-file.ts @@ -1,5 +1,5 @@ import {MaybePromise, wrapInTry} from '@augment-vir/common'; -import {toPosixPath} from '@augment-vir/node-js'; +import {toPosixPath} from '@augment-vir/node'; import {rm} from 'node:fs/promises'; import {basename, join, relative} from 'node:path'; import {findClosestNodeModulesDir} from '../augments/index.js'; diff --git a/packages/core/src/augments/fs/search.ts b/packages/core/src/augments/fs/search.ts index 4890c0ac..277deda0 100644 --- a/packages/core/src/augments/fs/search.ts +++ b/packages/core/src/augments/fs/search.ts @@ -1,42 +1,22 @@ +import {assert} from '@augment-vir/assert'; +import {findAncestor} from '@augment-vir/node'; import {existsSync} from 'node:fs'; -import {dirname, join} from 'node:path'; - -/** - * Recursively calls the `check` callback on ancestor directories until there are no more ancestor - * directories to check. - */ -export function searchUpwardsForDir( - startDirPath: string, - check: (dirPath: string) => boolean, -): string { - if (!existsSync(startDirPath) || !startDirPath) { - throw new Error(`Could not search in '${startDirPath}': it does not exist.`); - } - if (check(startDirPath)) { - return startDirPath; - } - const parent = dirname(startDirPath); - - if (parent === startDirPath) { - throw new Error(`Cannot recurse any higher, already at '${parent}'`); - } - - return searchUpwardsForDir(parent, check); -} +import {join} from 'node:path'; /** Finds the closest ancestor directory with a `package.json` file. */ -export function findClosestPackageDir(startDirPath: string) { - return searchUpwardsForDir(startDirPath, (dir) => { +export function findClosestPackageDir(startDirPath: string): string { + const ancestor = findAncestor(startDirPath, (dir) => { return existsSync(join(dir, 'package.json')); }); + assert.isDefined(ancestor, 'Failed to find ancestor package root.'); + return ancestor; } /** Finds the closest ancestor `node_modules` directory. */ -export function findClosestNodeModulesDir(startDirPath: string) { - return join( - searchUpwardsForDir(startDirPath, (dir) => { - return existsSync(join(dir, 'node_modules')); - }), - 'node_modules', - ); +export function findClosestNodeModulesDir(startDirPath: string): string { + const ancestor = findAncestor(startDirPath, (dir) => { + return existsSync(join(dir, 'node_modules')); + }); + assert.isDefined(ancestor, 'Failed to find ancestor node_modules root.'); + return join(ancestor, 'node_modules'); } diff --git a/packages/core/src/augments/object/access.test.ts b/packages/core/src/augments/object/access.test.ts index 53d80305..91f35691 100644 --- a/packages/core/src/augments/object/access.test.ts +++ b/packages/core/src/augments/object/access.test.ts @@ -1,13 +1,13 @@ -import assert from 'node:assert/strict'; -import {describe, it} from 'node:test'; +import {assert} from '@augment-vir/assert'; +import {describe, it} from '@augment-vir/test'; import {accessAtKeys} from './access.js'; describe(accessAtKeys.name, () => { it('accesses a top member', () => { - assert.strictEqual(accessAtKeys({a: 4}, ['a']), 4); + assert.strictEquals(accessAtKeys({a: 4}, ['a']), 4); }); it('accesses a nested member', () => { - assert.strictEqual( + assert.strictEquals( accessAtKeys({a: {b: 4}}, [ 'a', 'b', @@ -16,7 +16,7 @@ describe(accessAtKeys.name, () => { ); }); it('fails to access a missing member', () => { - assert.strictEqual( + assert.strictEquals( accessAtKeys({a: {b: 4}}, [ 'a', '1', diff --git a/packages/core/src/augments/object/access.ts b/packages/core/src/augments/object/access.ts index 1718e8d6..b3a266cc 100644 --- a/packages/core/src/augments/object/access.ts +++ b/packages/core/src/augments/object/access.ts @@ -1,13 +1,14 @@ -import {AnyObject, isLengthAtLeast} from '@augment-vir/common'; +import {check} from '@augment-vir/assert'; +import {AnyObject} from '@augment-vir/common'; /** Gets the nested value within an object with the provided chain of keys. */ -export function accessAtKeys( +export function accessAtKeys( parent: Readonly | undefined, keys: ReadonlyArray, ): T | undefined { if (!parent) { return undefined; - } else if (isLengthAtLeast(keys, 1)) { + } else if (check.isLengthAtLeast(keys, 1)) { return accessAtKeys(parent[keys[0]], keys.slice(1)); } else { return parent; diff --git a/packages/core/src/augments/stream/callback-writable.ts b/packages/core/src/augments/stream/callback-writable.ts index 739eae71..cc6a597e 100644 --- a/packages/core/src/augments/stream/callback-writable.ts +++ b/packages/core/src/augments/stream/callback-writable.ts @@ -1,5 +1,5 @@ +import type {Logger} from '@augment-vir/common'; import {Writable} from 'node:stream'; -import {PluginLogger} from '../../plugin/plugin-logger.js'; /** * A [Writable](https://nodejs.org/api/stream.html#class-streamwritable) implementation that writes @@ -24,7 +24,7 @@ export class CallbackWritable extends Writable { callback(); } - constructor(private readonly logger: PluginLogger) { + constructor(private readonly logger: Logger) { super(); } } diff --git a/packages/core/src/augments/tsconfig/parse-tsconfig.test.ts b/packages/core/src/augments/tsconfig/parse-tsconfig.test.ts index 2faaebe9..196221a3 100644 --- a/packages/core/src/augments/tsconfig/parse-tsconfig.test.ts +++ b/packages/core/src/augments/tsconfig/parse-tsconfig.test.ts @@ -1,7 +1,6 @@ -import assert from 'node:assert/strict'; +import {assert} from '@augment-vir/assert'; +import {describe, it} from '@augment-vir/test'; import {basename, join} from 'node:path'; -import {describe, it} from 'node:test'; -import {assertDefined} from 'run-time-assertions'; import {coreTestFilesDir, monoRepoTestFilesDir} from '../../file-paths.mock.js'; import {parseTsConfig} from './parse-tsconfig.js'; @@ -20,14 +19,14 @@ describe(parseTsConfig.name, () => { ), )?.options; - assertDefined(parsedOptions); + assert.isDefined(parsedOptions); - assert.strictEqual(parsedOptions.allowJs, true); - assert.strictEqual(basename(parsedOptions.outDir || ''), 'not-dist'); + assert.strictEquals(parsedOptions.allowJs, true); + assert.strictEquals(basename(parsedOptions.outDir || ''), 'not-dist'); }); it('handles missing tsconfig', () => { const parsedOptions = parseTsConfig(join(monoRepoTestFilesDir, 'no-ts-configs')); - assert.strictEqual(parsedOptions, undefined); + assert.strictEquals(parsedOptions, undefined); }); }); diff --git a/packages/core/src/augments/tsconfig/parse-tsconfig.ts b/packages/core/src/augments/tsconfig/parse-tsconfig.ts index f07cee78..a33dd11b 100644 --- a/packages/core/src/augments/tsconfig/parse-tsconfig.ts +++ b/packages/core/src/augments/tsconfig/parse-tsconfig.ts @@ -1,4 +1,4 @@ -import {log} from '@augment-vir/node-js'; +import {log} from '@augment-vir/common'; import {existsSync} from 'node:fs'; import {dirname} from 'node:path'; import { diff --git a/packages/core/src/colors.test.ts b/packages/core/src/colors.test.ts index 6d6960f7..9624ea42 100644 --- a/packages/core/src/colors.test.ts +++ b/packages/core/src/colors.test.ts @@ -1,12 +1,12 @@ -import {describe, it} from 'node:test'; -import {assertRunTimeType} from 'run-time-assertions'; +import {assert} from '@augment-vir/assert'; +import {describe, it} from '@augment-vir/test'; import {getTerminalColor, terminalColors} from './colors.js'; describe(getTerminalColor.name, () => { it('gets a color', () => { - assertRunTimeType(getTerminalColor(0), 'string'); + assert.isString(getTerminalColor(0)); }); it('gets a color out of range', () => { - assertRunTimeType(getTerminalColor(terminalColors.length * 2), 'string'); + assert.isString(getTerminalColor(terminalColors.length * 2)); }); }); diff --git a/packages/core/src/errors/virmator-no-trace.error.test.ts b/packages/core/src/errors/virmator-no-trace.error.test.ts index 6333b2b0..c3d8139a 100644 --- a/packages/core/src/errors/virmator-no-trace.error.test.ts +++ b/packages/core/src/errors/virmator-no-trace.error.test.ts @@ -1,9 +1,9 @@ -import assert from 'node:assert/strict'; -import {describe, it} from 'node:test'; +import {assert} from '@augment-vir/assert'; +import {describe, it} from '@augment-vir/test'; import {hideNoTraceTraces} from './virmator-no-trace.error.js'; describe('hideNoTraceTraces', () => { it('should be true', () => { - assert.strictEqual(hideNoTraceTraces, true); + assert.strictEquals(hideNoTraceTraces, true); }); }); diff --git a/packages/core/src/plugin/index.ts b/packages/core/src/plugin/index.ts index 323329d2..efb74813 100644 --- a/packages/core/src/plugin/index.ts +++ b/packages/core/src/plugin/index.ts @@ -2,5 +2,4 @@ export * from './plugin-configs.js'; export * from './plugin-env.js'; export * from './plugin-executor.js'; export * from './plugin-init.js'; -export * from './plugin-logger.js'; export * from './plugin.js'; diff --git a/packages/core/src/plugin/plugin-configs.ts b/packages/core/src/plugin/plugin-configs.ts index c41747ed..987c18ed 100644 --- a/packages/core/src/plugin/plugin-configs.ts +++ b/packages/core/src/plugin/plugin-configs.ts @@ -1,4 +1,5 @@ -import {PackageType, VirmatorEnv} from './plugin-env.js'; +import type {RuntimeEnv} from '@augment-vir/common'; +import {PackageType} from './plugin-env.js'; /** Definition for a plugin's config file. */ export type VirmatorPluginConfigFile = { @@ -14,7 +15,7 @@ export type VirmatorPluginConfigFile = { copyToPath: string; /** The environments in which this config should be used. */ - env: VirmatorEnv[]; + env: RuntimeEnv[]; /** The package type for which this config should be used. */ packageType: PackageType[]; /** diff --git a/packages/core/src/plugin/plugin-env.ts b/packages/core/src/plugin/plugin-env.ts index 3b49644b..77ff86c8 100644 --- a/packages/core/src/plugin/plugin-env.ts +++ b/packages/core/src/plugin/plugin-env.ts @@ -1,11 +1,3 @@ -/** The different execution environments that virmator supports. */ -export enum VirmatorEnv { - /** Node.js */ - Node = 'node', - /** Any code that will run in a browser. */ - Web = 'web', -} - /** The different npm package types that virmator supports. */ export enum PackageType { /** The root of an npm mono repo package. */ diff --git a/packages/core/src/plugin/plugin-executor.ts b/packages/core/src/plugin/plugin-executor.ts index cababe24..29cf491c 100644 --- a/packages/core/src/plugin/plugin-executor.ts +++ b/packages/core/src/plugin/plugin-executor.ts @@ -1,10 +1,12 @@ import type { AnyObject, + Logger, + LogOutputType, MaybePromise, - PartialAndUndefined, + PartialWithUndefined, TypedFunction, } from '@augment-vir/common'; -import type {LogOutputType, runShellCommand} from '@augment-vir/node-js'; +import type {runShellCommand} from '@augment-vir/node'; import {ChalkInstance} from 'chalk'; import {EmptyObject, PackageJson, SetRequired} from 'type-fest'; import {VirmatorPluginResolvedConfigFile} from './plugin-configs.js'; @@ -15,7 +17,6 @@ import { VirmatorPluginCliCommands, VirmatorPluginInit, } from './plugin-init.js'; -import {PluginLogger} from './plugin-logger.js'; /** A picked nesting of commands based on which commands are currently in use. */ export type UsedVirmatorPluginCommands< @@ -120,7 +121,7 @@ export type VirmatorPluginExecutorParams< /** Run a shell command with sensible defaults. */ runShellCommand: TypedFunction< - [...Parameters, PartialAndUndefined?], + [...Parameters, PartialWithUndefined?], ReturnType >; /** Runs the given command for each package within a mono repo, if it has any. */ @@ -128,7 +129,7 @@ export type VirmatorPluginExecutorParams< /** Installs the given list of deps within the current package directory. */ runInstallDeps: (deps: Readonly>) => Promise; - log: PluginLogger; + log: Logger; configs: VirmatorPluginResolvedConfigs; diff --git a/packages/core/src/plugin/plugin-init.ts b/packages/core/src/plugin/plugin-init.ts index 5052580f..c9a40e0e 100644 --- a/packages/core/src/plugin/plugin-init.ts +++ b/packages/core/src/plugin/plugin-init.ts @@ -1,5 +1,6 @@ +import type {RuntimeEnv} from '@augment-vir/common'; import {VirmatorPluginConfigFile} from './plugin-configs.js'; -import {PackageType, VirmatorEnv} from './plugin-env.js'; +import {PackageType} from './plugin-env.js'; /** A single doc entry for {@link PluginCommandDocs}. */ export type PluginDocEntry = Readonly<{ @@ -19,7 +20,7 @@ export type PluginNpmDeps = Record< { type: NpmDepType; packageType: ReadonlyArray; - env: ReadonlyArray; + env: ReadonlyArray; } >; diff --git a/packages/core/src/plugin/plugin-logger.ts b/packages/core/src/plugin/plugin-logger.ts deleted file mode 100644 index 651c4111..00000000 --- a/packages/core/src/plugin/plugin-logger.ts +++ /dev/null @@ -1,113 +0,0 @@ -import {ColorKey, Logger, LogOutputType, toLogString} from '@augment-vir/node-js'; -import {Socket} from 'node:net'; - -/** An extensions of `@augment-vir/node-js`'s logger with a `plain` log command. */ -export type PluginLogger = Logger & {plain: Logger['faint']}; - -/** Creates a plugin logger based on the provided stderr and stdout writers. */ -export function createPluginLogger( - logWriters: Record>, - omitNewLines?: boolean | undefined, -): PluginLogger { - function writeLog(params: { - logType: LogOutputType; - args: ReadonlyArray; - colors: ColorKey | ColorKey[]; - }) { - const logString = toLogString(params); - const fixedLogString = omitNewLines ? logString.replace(/\n$/, '') : logString; - - logWriters[params.logType].write(fixedLogString); - } - - return { - info(...args) { - writeLog({ - logType: LogOutputType.standard, - colors: ColorKey.info, - args, - }); - }, - plain(...args) { - writeLog({ - logType: LogOutputType.standard, - colors: [], - args, - }); - }, - error(...args) { - writeLog({ - logType: LogOutputType.error, - colors: [ - ColorKey.error, - ColorKey.bold, - ], - args, - }); - }, - bold(...args) { - writeLog({ - logType: LogOutputType.standard, - colors: ColorKey.bold, - args, - }); - }, - mutate(...args) { - writeLog({ - logType: LogOutputType.standard, - colors: [ - ColorKey.bold, - ColorKey.mutate, - ], - args, - }); - }, - faint(...args) { - writeLog({ - logType: LogOutputType.standard, - colors: ColorKey.faint, - args, - }); - }, - warning(...args) { - writeLog({ - logType: LogOutputType.standard, - colors: ColorKey.warning, - args, - }); - }, - success(...args) { - writeLog({ - logType: LogOutputType.standard, - colors: [ - ColorKey.bold, - ColorKey.success, - ], - args, - }); - }, - }; -} - -/** A {@link PluginLogger} implementation that does nothing. */ -export const emptyLog: PluginLogger = createPluginLogger({ - stderr: { - write() { - return true; - }, - }, - stdout: { - write() { - return true; - }, - }, -}); - -/** - * The default implementation of a {@link PluginLogger} which simply logs to the running process - * pipelines. - */ -export const defaultPluginLogger: PluginLogger = createPluginLogger({ - stderr: process.stderr, - stdout: process.stdout, -}); diff --git a/packages/core/src/plugin/plugin.test.ts b/packages/core/src/plugin/plugin.test.ts index d3eeeea2..93487d5a 100644 --- a/packages/core/src/plugin/plugin.test.ts +++ b/packages/core/src/plugin/plugin.test.ts @@ -1,4 +1,4 @@ -import {describe, it} from 'node:test'; +import {describe, it} from '@augment-vir/test'; import {defineVirmatorPlugin} from './plugin.js'; describe(defineVirmatorPlugin.name, () => { diff --git a/packages/core/src/plugin/plugin.ts b/packages/core/src/plugin/plugin.ts index 553c7869..10e2e00f 100644 --- a/packages/core/src/plugin/plugin.ts +++ b/packages/core/src/plugin/plugin.ts @@ -1,6 +1,7 @@ +import {assert} from '@augment-vir/assert'; +import {findAncestor} from '@augment-vir/node'; import {existsSync} from 'node:fs'; import {join} from 'node:path'; -import {searchUpwardsForDir} from '../augments/fs/search.js'; import {VirmatorPlugin, VirmatorPluginExecutor} from './plugin-executor.js'; import {VirmatorPluginCliCommands, VirmatorPluginInit} from './plugin-init.js'; @@ -13,10 +14,12 @@ export function defineVirmatorPlugin, executor: VirmatorPluginExecutor>, ): VirmatorPlugin> { - const pluginPackageRootPath = searchUpwardsForDir(currentDir, (path) => { + const pluginPackageRootPath = findAncestor(currentDir, (path) => { return existsSync(join(path, 'package.json')); }); + assert.isDefined(pluginPackageRootPath, 'Failed to find plugin package root.'); + return { ...init, executor, diff --git a/packages/deps/package.json b/packages/deps/package.json index 666c2859..16843af7 100644 --- a/packages/deps/package.json +++ b/packages/deps/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/deps", - "version": "13.3.12", + "version": "13.3.13", "description": "Default TS deps plugin for virmator.", "keywords": [ "virmator", @@ -33,13 +33,15 @@ "test:update": "npm test update" }, "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", "mri": "^1.2.0" }, "devDependencies": { - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "c8": "^10.1.2", "dependency-cruiser": "^16.4.1", "esbuild": "^0.23.1", diff --git a/packages/deps/src/deps.test.ts b/packages/deps/src/deps.test.ts index d54b7d69..eacdfc79 100644 --- a/packages/deps/src/deps.test.ts +++ b/packages/deps/src/deps.test.ts @@ -1,8 +1,8 @@ -import {runShellCommand} from '@augment-vir/node-js'; +import {runShellCommand} from '@augment-vir/node'; +import {describe, it, type UniversalTestContext} from '@augment-vir/test'; import {virmatorFlags} from '@virmator/core'; import {testPlugin} from '@virmator/plugin-testing'; import {join, resolve} from 'node:path'; -import {describe, it, type TestContext} from 'node:test'; import {virmatorDepsPlugin} from './deps.js'; const packageDir = resolve(import.meta.dirname, '..'); @@ -12,7 +12,7 @@ const testFilesDir = join(packageDir, 'test-files'); describe(virmatorDepsPlugin.name, () => { async function testDepsPlugin( shouldPass: boolean, - context: TestContext, + context: UniversalTestContext, dir: string, extraCommand: string, ) { diff --git a/packages/deps/src/deps.ts b/packages/deps/src/deps.ts index ddff3f1a..875fef8d 100644 --- a/packages/deps/src/deps.ts +++ b/packages/deps/src/deps.ts @@ -1,11 +1,11 @@ -import {awaitedBlockingMap, isTruthy} from '@augment-vir/common'; -import {toPosixPath} from '@augment-vir/node-js'; +import {check} from '@augment-vir/assert'; +import {awaitedBlockingMap, RuntimeEnv} from '@augment-vir/common'; +import {toPosixPath} from '@augment-vir/node'; import { defineVirmatorPlugin, JsModuleType, NpmDepType, PackageType, - VirmatorEnv, VirmatorNoTraceError, withCompiledTsFile, withImportedTsFile, @@ -64,8 +64,8 @@ export const virmatorDepsPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'dep-cruiser.config.cts'), copyToPath: join('configs', 'dep-cruiser.config.cts'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -78,8 +78,8 @@ export const virmatorDepsPlugin = defineVirmatorPlugin( 'dependency-cruiser': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -90,8 +90,8 @@ export const virmatorDepsPlugin = defineVirmatorPlugin( esbuild: { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -120,8 +120,8 @@ export const virmatorDepsPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'ncu.config.ts'), copyToPath: join('configs', 'ncu.config.ts'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -135,8 +135,8 @@ export const virmatorDepsPlugin = defineVirmatorPlugin( 'npm-check-updates': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -209,7 +209,7 @@ export const virmatorDepsPlugin = defineVirmatorPlugin( pathToCheck, ...filteredArgs, ] - .filter(isTruthy) + .filter(check.isTruthy) .join(' '); } diff --git a/packages/docs/package.json b/packages/docs/package.json index 8dc5c500..2174a74a 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/docs", - "version": "13.3.12", + "version": "13.3.13", "description": "Default TS docs plugin for virmator.", "keywords": [ "virmator", @@ -32,15 +32,16 @@ "test:update": "npm test update" }, "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", "chalk": "^5.3.0", - "mri": "^1.2.0", - "run-time-assertions": "^1.5.2" + "mri": "^1.2.0" }, "devDependencies": { - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "c8": "^10.1.2", "esbuild": "^0.23.1", "istanbul-smart-text-reporter": "^1.1.4", diff --git a/packages/docs/src/docs.test.ts b/packages/docs/src/docs.test.ts index ff20cf9c..4ecc9bcf 100644 --- a/packages/docs/src/docs.test.ts +++ b/packages/docs/src/docs.test.ts @@ -1,10 +1,10 @@ +import {assert} from '@augment-vir/assert'; import {MaybePromise, wrapString} from '@augment-vir/common'; -import {runShellCommand} from '@augment-vir/node-js'; +import {runShellCommand} from '@augment-vir/node'; +import {describe, it, type UniversalTestContext} from '@augment-vir/test'; import {readAllDirContents, resetDirContents, testPlugin} from '@virmator/plugin-testing'; -import assert from 'node:assert/strict'; import {existsSync} from 'node:fs'; import {join, resolve, sep} from 'node:path'; -import {describe, it, type TestContext} from 'node:test'; import {virmatorDocsPlugin} from './docs.js'; const packageDir = resolve(import.meta.dirname, '..'); @@ -14,7 +14,7 @@ const testFilesDir = join(packageDir, 'test-files'); describe(virmatorDocsPlugin.name, () => { async function testDocsPlugin( shouldPass: boolean, - context: TestContext, + context: UniversalTestContext, dir: string, extraCommand?: string, beforeCleanupCallback?: (cwd: string) => MaybePromise, @@ -37,7 +37,7 @@ describe(virmatorDocsPlugin.name, () => { it('runs typedoc and md-code', async (context) => { await testDocsPlugin(true, context, join(testFilesDir, 'unfinished-readme'), '', (cwd) => { - assert.strictEqual(existsSync(join(cwd, 'dist-docs', 'index.html')), true); + assert.strictEquals(existsSync(join(cwd, 'dist-docs', 'index.html')), true); }); }); it('fails unfinished readme', async (context) => { @@ -47,7 +47,7 @@ describe(virmatorDocsPlugin.name, () => { join(testFilesDir, 'unfinished-readme'), 'check', (cwd) => { - assert.strictEqual(existsSync(join(cwd, 'dist-docs', 'index.html')), false); + assert.strictEquals(existsSync(join(cwd, 'dist-docs', 'index.html')), false); }, ); }); @@ -67,7 +67,7 @@ describe(virmatorDocsPlugin.name, () => { const dirContents = await readAllDirContents(monoDir, {recursive: true, excludeList: []}); await runShellCommand('npm i', {cwd: monoDir}); await testDocsPlugin(true, context, join(monoDir, 'packages', 'b'), '', (cwd) => { - assert.strictEqual(existsSync(join(cwd, 'dist-docs', 'index.html')), false); + assert.strictEquals(existsSync(join(cwd, 'dist-docs', 'index.html')), false); }); await resetDirContents(monoDir, dirContents); }); @@ -80,7 +80,7 @@ describe(virmatorDocsPlugin.name, () => { }); it('passes docs check', async (context) => { await testDocsPlugin(true, context, join(testFilesDir, 'valid-docs'), 'check', (cwd) => { - assert.strictEqual(existsSync(join(cwd, 'dist-docs', 'index.html')), false); + assert.strictEquals(existsSync(join(cwd, 'dist-docs', 'index.html')), false); }); }); it('allows custom file inputs', async (context) => { @@ -90,7 +90,7 @@ describe(virmatorDocsPlugin.name, () => { join(testFilesDir, 'valid-docs'), 'check something-else.md', (cwd) => { - assert.strictEqual(existsSync(join(cwd, 'dist-docs', 'index.html')), false); + assert.strictEquals(existsSync(join(cwd, 'dist-docs', 'index.html')), false); }, ); }); @@ -102,7 +102,7 @@ describe(virmatorDocsPlugin.name, () => { join(testFilesDir, 'invalid-typedoc'), 'check', (cwd) => { - assert.strictEqual(existsSync(join(cwd, 'dist-docs', 'index.html')), false); + assert.strictEquals(existsSync(join(cwd, 'dist-docs', 'index.html')), false); }, ); }); diff --git a/packages/docs/src/docs.ts b/packages/docs/src/docs.ts index 46d31a4d..c2359732 100644 --- a/packages/docs/src/docs.ts +++ b/packages/docs/src/docs.ts @@ -1,14 +1,7 @@ -import {ensureError, isTruthy} from '@augment-vir/common'; -import {readPackageJson} from '@augment-vir/node-js'; -import { - defaultPluginLogger, - defineVirmatorPlugin, - NpmDepType, - PackageType, - PluginLogger, - VirmatorEnv, - VirmatorNoTraceError, -} from '@virmator/core'; +import {check} from '@augment-vir/assert'; +import {ensureError, log as logImport, RuntimeEnv, type Logger} from '@augment-vir/common'; +import {readPackageJson} from '@augment-vir/node'; +import {defineVirmatorPlugin, NpmDepType, PackageType, VirmatorNoTraceError} from '@virmator/core'; import {ChalkInstance} from 'chalk'; import mri from 'mri'; import {basename, join} from 'node:path'; @@ -57,8 +50,8 @@ export const virmatorDocsPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'typedoc.config.share.ts'), copyToPath: join('configs', 'typedoc.config.ts'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -71,8 +64,8 @@ export const virmatorDocsPlugin = defineVirmatorPlugin( 'markdown-code-example-inserter': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -83,8 +76,8 @@ export const virmatorDocsPlugin = defineVirmatorPlugin( typedoc: { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -117,7 +110,7 @@ export const virmatorDocsPlugin = defineVirmatorPlugin( ...filteredArgs, mdFilesArg, ] - .filter(isTruthy) + .filter(check.isTruthy) .join(' '); async function runDocs( @@ -203,7 +196,7 @@ export async function runTypedoc({ config, packageDir, checkOnly = false, - log = defaultPluginLogger, + log = logImport, }: { /** Full typedoc options object. */ config: Partial; @@ -215,7 +208,7 @@ export async function runTypedoc({ /** Set to `true` to only check current doc comments, rather than generating HTML from them. */ checkOnly?: boolean | undefined; /** Optionally override the logger. */ - log?: PluginLogger | undefined; + log?: Logger | undefined; }) { // dynamic imports are not branches /* node:coverage ignore next */ @@ -239,7 +232,7 @@ export async function runTypedoc({ async function runTypedocInternal( options: Partial, typeDoc: typeof Typedoc, - log: PluginLogger, + log: Logger, ): Promise { /** Lots of edge cases included in here to just make sure we fully run the typedoc API. */ /* node:coverage disable */ diff --git a/packages/format/package.json b/packages/format/package.json index 267f2656..b16fe6d0 100644 --- a/packages/format/package.json +++ b/packages/format/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/format", - "version": "13.3.12", + "version": "13.3.13", "description": "Default format plugin for virmator.", "keywords": [ "virmator", @@ -31,12 +31,14 @@ "test:update": "npm test update" }, "dependencies": { - "@augment-vir/common": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@virmator/core": "^13.3.13", "mri": "^1.2.0" }, "devDependencies": { - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "c8": "^10.1.2", "istanbul-smart-text-reporter": "^1.1.4", "prettier": "^3.3.3", diff --git a/packages/format/src/format.test.ts b/packages/format/src/format.test.ts index a9045643..f428cb68 100644 --- a/packages/format/src/format.test.ts +++ b/packages/format/src/format.test.ts @@ -1,6 +1,6 @@ +import {describe, it, type UniversalTestContext} from '@augment-vir/test'; import {testPlugin} from '@virmator/plugin-testing'; import {join, resolve} from 'node:path'; -import {describe, it, type TestContext} from 'node:test'; import {virmatorFormatPlugin} from './format.js'; const packageDir = resolve(import.meta.dirname, '..'); @@ -10,7 +10,7 @@ const testFilesDir = join(packageDir, 'test-files'); describe(virmatorFormatPlugin.name, () => { async function testFormatPlugin( shouldPass: boolean, - context: TestContext, + context: UniversalTestContext, dir: string, extraCommand?: string, ) { diff --git a/packages/format/src/format.ts b/packages/format/src/format.ts index 5111db8f..d8abc3da 100644 --- a/packages/format/src/format.ts +++ b/packages/format/src/format.ts @@ -1,5 +1,6 @@ -import {isTruthy} from '@augment-vir/common'; -import {defineVirmatorPlugin, NpmDepType, PackageType, VirmatorEnv} from '@virmator/core'; +import {check} from '@augment-vir/assert'; +import {RuntimeEnv} from '@augment-vir/common'; +import {defineVirmatorPlugin, NpmDepType, PackageType} from '@virmator/core'; import mri from 'mri'; import {join} from 'node:path'; @@ -62,8 +63,8 @@ export const virmatorFormatPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'prettier.config.share.mjs'), copyToPath: 'prettier.config.mjs', env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -75,8 +76,8 @@ export const virmatorFormatPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'prettierignore.txt'), copyToPath: '.prettierignore', env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -89,8 +90,8 @@ export const virmatorFormatPlugin = defineVirmatorPlugin( prettier: { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -100,8 +101,8 @@ export const virmatorFormatPlugin = defineVirmatorPlugin( 'prettier-plugin-jsdoc': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -111,8 +112,8 @@ export const virmatorFormatPlugin = defineVirmatorPlugin( 'prettier-plugin-multiline-arrays': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -122,8 +123,8 @@ export const virmatorFormatPlugin = defineVirmatorPlugin( 'prettier-plugin-organize-imports': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -133,8 +134,8 @@ export const virmatorFormatPlugin = defineVirmatorPlugin( 'prettier-plugin-packagejson': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -144,8 +145,8 @@ export const virmatorFormatPlugin = defineVirmatorPlugin( 'prettier-plugin-sort-json': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -155,8 +156,8 @@ export const virmatorFormatPlugin = defineVirmatorPlugin( 'prettier-plugin-toml': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -166,8 +167,8 @@ export const virmatorFormatPlugin = defineVirmatorPlugin( 'prettier-plugin-interpolated-html-tags': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -205,7 +206,7 @@ export const virmatorFormatPlugin = defineVirmatorPlugin( ...filteredArgs, formatString, ] - .filter(isTruthy) + .filter(check.isTruthy) .join(' '); await runShellCommand( diff --git a/packages/frontend/configs/vite.config.base.ts b/packages/frontend/configs/vite.config.base.ts index 727afb53..8cde0abb 100644 --- a/packages/frontend/configs/vite.config.base.ts +++ b/packages/frontend/configs/vite.config.base.ts @@ -1,4 +1,4 @@ -import {log, logColors} from '@augment-vir/node-js'; +import {log, logColors} from '@augment-vir/common'; import {alwaysReloadPlugin} from '@virmator/frontend/src/always-reload.vite'; import {existsSync} from 'node:fs'; import {basename, dirname, join, relative} from 'node:path'; diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 6340120f..3bee6dbd 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/frontend", - "version": "13.3.12", + "version": "13.3.13", "description": "Default frontend plugin for virmator.", "keywords": [ "virmator", @@ -34,15 +34,17 @@ "test:update": "npm test update" }, "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", "mri": "^1.2.0" }, "devDependencies": { - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "typescript": "^5.6.2", - "vite": "^5.4.3", + "vite": "^5.4.5", "vite-tsconfig-paths": "^5.0.1" }, "engines": { diff --git a/packages/frontend/src/always-reload.vite.ts b/packages/frontend/src/always-reload.vite.ts index 6c747ca1..b691763c 100644 --- a/packages/frontend/src/always-reload.vite.ts +++ b/packages/frontend/src/always-reload.vite.ts @@ -1,4 +1,4 @@ -import {logColors} from '@augment-vir/node-js'; +import {logColors} from '@augment-vir/common'; import {existsSync, lstatSync, readlinkSync} from 'node:fs'; import {relative} from 'node:path'; import type {LogOptions, PluginOption} from 'vite'; diff --git a/packages/frontend/src/frontend.test.ts b/packages/frontend/src/frontend.test.ts index 0bfb5bb8..b4c79192 100644 --- a/packages/frontend/src/frontend.test.ts +++ b/packages/frontend/src/frontend.test.ts @@ -1,6 +1,6 @@ +import {describe, it, type UniversalTestContext} from '@augment-vir/test'; import {testPlugin} from '@virmator/plugin-testing'; import {join, resolve} from 'node:path'; -import {describe, it, type TestContext} from 'node:test'; import {virmatorFrontendPlugin} from './frontend.js'; const packageDir = resolve(import.meta.dirname, '..'); @@ -10,7 +10,7 @@ const testFilesDir = join(packageDir, 'test-files'); describe(virmatorFrontendPlugin.name, () => { async function testFormatPlugin( shouldPass: boolean, - context: TestContext, + context: UniversalTestContext, dir: string, extraCommand?: string, ) { diff --git a/packages/frontend/src/frontend.test.ts.snapshot b/packages/frontend/src/frontend.test.ts.snapshot index 11a8745a..aa09e314 100644 --- a/packages/frontend/src/frontend.test.ts.snapshot +++ b/packages/frontend/src/frontend.test.ts.snapshot @@ -1,11 +1,11 @@ exports[`Frontend > builds 1`] = ` { "logs": { - "stdout": "Installing typescript@5.6.2 vite@5.4.3...\\nBuilding...\\n> NODE_OPTIONS=\\"--import tsx\\" npx vite build --config configs/vite.config.ts\\npublic dir: www-static\\nroot dir: src\\nout dir: dist\\nbase path: /\\nvite v5.4.3 building for production...\\ntransforming...\\n✓ 3 modules transformed.\\nrendering chunks...\\ncomputing gzip size...\\n../dist/index.html 0.29 kB │ gzip: 0.21 kB\\n../dist/assets/index-mfONQ4jQ.js 0.80 kB │ gzip: 0.45 kB\\n✓ built\\nCreating 404 page...\\nfrontend finished." + "stdout": "Installing typescript@5.6.2 vite@5.4.5...\\nBuilding...\\n> NODE_OPTIONS=\\"--import tsx\\" npx vite build --config configs/vite.config.ts\\npublic dir: www-static\\nroot dir: src\\nout dir: dist\\nbase path: /\\nvite v5.4.5 building for production...\\ntransforming...\\n✓ 3 modules transformed.\\nrendering chunks...\\ncomputing gzip size...\\n../dist/index.html 0.29 kB │ gzip: 0.21 kB\\n../dist/assets/index-mfONQ4jQ.js 0.80 kB │ gzip: 0.45 kB\\n✓ built\\nCreating 404 page...\\nfrontend finished." }, "cwd": "packages/frontend/test-files/valid-frontend", "contentsDiff": { - "package.json": "{\\n \\"type\\": \\"module\\",\\n \\"devDependencies\\": {\\n \\"typescript\\": \\"^5.6.2\\",\\n \\"vite\\": \\"^5.4.3\\"\\n }\\n}\\n", + "package.json": "{\\n \\"type\\": \\"module\\",\\n \\"devDependencies\\": {\\n \\"typescript\\": \\"^5.6.2\\",\\n \\"vite\\": \\"^5.4.5\\"\\n }\\n}\\n", "dist": { "404.html": "\\n\\n \\n Test File\\n \\n \\n \\n \\n\\n", "assets": { diff --git a/packages/frontend/src/frontend.ts b/packages/frontend/src/frontend.ts index 9097c3e2..94cf6bb9 100644 --- a/packages/frontend/src/frontend.ts +++ b/packages/frontend/src/frontend.ts @@ -1,6 +1,7 @@ -import {isTruthy, MaybePromise} from '@augment-vir/common'; -import {toPosixPath} from '@augment-vir/node-js'; -import {defineVirmatorPlugin, NpmDepType, PackageType, VirmatorEnv} from '@virmator/core'; +import {check} from '@augment-vir/assert'; +import {MaybePromise, RuntimeEnv} from '@augment-vir/common'; +import {toPosixPath} from '@augment-vir/node'; +import {defineVirmatorPlugin, NpmDepType, PackageType} from '@virmator/core'; import mri from 'mri'; import {cp, rm} from 'node:fs/promises'; import {join, relative, resolve} from 'node:path'; @@ -61,7 +62,7 @@ export const virmatorFrontendPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'vite.config.ts'), copyToPath: join('configs', 'vite.config.ts'), env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -75,7 +76,7 @@ export const virmatorFrontendPlugin = defineVirmatorPlugin( typescript: { type: NpmDepType.Dev, env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoPackage, @@ -85,7 +86,7 @@ export const virmatorFrontendPlugin = defineVirmatorPlugin( vite: { type: NpmDepType.Dev, env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoPackage, @@ -141,7 +142,7 @@ export const virmatorFrontendPlugin = defineVirmatorPlugin( ...filteredArgs, ...configArgs, ] - .filter(isTruthy) + .filter(check.isTruthy) .join(' '); log.faint('Building...'); @@ -167,7 +168,7 @@ export const virmatorFrontendPlugin = defineVirmatorPlugin( ...filteredArgs, ...configArgs, ] - .filter(isTruthy) + .filter(check.isTruthy) .join(' '); log.faint('Previewing...'); await runShellCommand(previewCommand, { @@ -184,7 +185,7 @@ export const virmatorFrontendPlugin = defineVirmatorPlugin( ...filteredArgs, ...configArgs, ] - .filter(isTruthy) + .filter(check.isTruthy) .join(' '); await runShellCommand(devCommand, { diff --git a/packages/help/package.json b/packages/help/package.json index 24702e46..3c747fcd 100644 --- a/packages/help/package.json +++ b/packages/help/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/help", - "version": "13.3.12", + "version": "13.3.13", "description": "Default help plugin for virmator.", "keywords": [ "virmator", @@ -31,13 +31,14 @@ "test:update": "npm test update" }, "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", - "run-time-assertions": "^1.5.2" + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13" }, "devDependencies": { - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "c8": "^10.1.2", "istanbul-smart-text-reporter": "^1.1.4" }, diff --git a/packages/help/src/help-message.test.ts b/packages/help/src/help-message.test.ts index 091ba64e..701f2329 100644 --- a/packages/help/src/help-message.test.ts +++ b/packages/help/src/help-message.test.ts @@ -1,9 +1,9 @@ -import {addSuffix, wrapInTry} from '@augment-vir/common'; -import {NpmDepType, PackageType, VirmatorEnv, VirmatorPluginCliCommands} from '@virmator/core'; -import assert from 'node:assert/strict'; +import {assert} from '@augment-vir/assert'; +import {addSuffix, RuntimeEnv, wrapInTry} from '@augment-vir/common'; +import {describe, it} from '@augment-vir/test'; +import {NpmDepType, PackageType, VirmatorPluginCliCommands} from '@virmator/core'; import {readFile, writeFile} from 'node:fs/promises'; import {join, resolve} from 'node:path'; -import {describe, it} from 'node:test'; import { createFormatter, generateHelpMessage, @@ -48,8 +48,8 @@ describe(generateHelpMessage.name, () => { await writeFile(outputMarkdownPath, newMarkdown); await writeFile(outputCliPath, newCli); - assert.strictEqual(existingMarkdown, newMarkdown); - assert.strict(existingCli, newCli); + assert.strictEquals(existingMarkdown, newMarkdown); + assert.strictEquals(existingCli, newCli); } it('handles simple top level command', async () => { @@ -316,7 +316,7 @@ describe(generateHelpMessage.name, () => { someConfig: { copyFromPath: 'path', copyToPath: 'path', - env: [VirmatorEnv.Node], + env: [RuntimeEnv.Node], packageType: [ PackageType.MonoPackage, ], @@ -326,7 +326,7 @@ describe(generateHelpMessage.name, () => { }, npmDeps: { 'element-vir': { - env: [VirmatorEnv.Node], + env: [RuntimeEnv.Node], packageType: [PackageType.MonoPackage], type: NpmDepType.Dev, }, @@ -341,13 +341,13 @@ describe(generateHelpMessage.name, () => { describe(wrapLines.name, () => { it('wraps a whole word', () => { - assert.strictEqual( + assert.strictEquals( wrapLines('hello there', 10, createFormatter(HelpMessageSyntax.Cli)), 'hello\nthere', ); }); it('wraps with indent', () => { - assert.strictEqual( + assert.strictEquals( wrapLines(' hello there', 10, createFormatter(HelpMessageSyntax.Cli)), ' hello\n there', ); diff --git a/packages/help/src/help-message.ts b/packages/help/src/help-message.ts index 8105815e..bd9a6e19 100644 --- a/packages/help/src/help-message.ts +++ b/packages/help/src/help-message.ts @@ -1,11 +1,12 @@ +import {check} from '@augment-vir/assert'; import { collapseWhiteSpace, getObjectTypedEntries, - isTruthy, + logColors, mapObjectValues, safeMatch, } from '@augment-vir/common'; -import {logColors, toPosixPath} from '@augment-vir/node-js'; +import {toPosixPath} from '@augment-vir/node'; import { IndividualPluginCommand, virmatorFlags, @@ -98,7 +99,7 @@ export const formats = { [HelpMessageSyntax.Markdown]: '**', }, unBold: { - [HelpMessageSyntax.Cli]: logColors['normal-weight'], + [HelpMessageSyntax.Cli]: logColors.normalWeight, [HelpMessageSyntax.Markdown]: '**', }, code: { @@ -238,7 +239,7 @@ function commandDocToString( exampleBlock, configsBlock, depsBlock, - ].filter(isTruthy); + ].filter(check.isTruthy); return blocks.join('\n'); } diff --git a/packages/help/src/help.test.ts b/packages/help/src/help.test.ts index 30424060..ab3dc270 100644 --- a/packages/help/src/help.test.ts +++ b/packages/help/src/help.test.ts @@ -1,6 +1,6 @@ +import {describe, it} from '@augment-vir/test'; import {testPlugin} from '@virmator/plugin-testing'; import {join, resolve} from 'node:path'; -import {describe, it} from 'node:test'; import {virmatorHelpPlugin} from './help.js'; const packageDir = resolve(import.meta.dirname, '..'); diff --git a/packages/help/src/index.test.ts b/packages/help/src/index.test.ts index e11cdf04..a984a038 100644 --- a/packages/help/src/index.test.ts +++ b/packages/help/src/index.test.ts @@ -1,10 +1,10 @@ -import {describe, it} from 'node:test'; -import {assertDefined} from 'run-time-assertions'; +import {assert} from '@augment-vir/assert'; +import {describe, it} from '@augment-vir/test'; import * as indexExports from './index.js'; describe('index', () => { it('exports expected stuff', () => { - assertDefined(indexExports.generateHelpMessage); - assertDefined(indexExports.virmatorHelpPlugin); + assert.isDefined(indexExports.generateHelpMessage); + assert.isDefined(indexExports.virmatorHelpPlugin); }); }); diff --git a/packages/init/package.json b/packages/init/package.json index e88cc93d..14e7d348 100644 --- a/packages/init/package.json +++ b/packages/init/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/init", - "version": "13.3.12", + "version": "13.3.13", "description": "Default init plugin for virmator.", "keywords": [ "virmator", @@ -30,16 +30,17 @@ "test:update": "npm test" }, "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", "simple-git": "^3.26.0" }, "devDependencies": { - "@types/node": "^22.5.4", + "@types/node": "^22.5.5", "element-vir": "^22.2.2", "mono-vir": "^1.0.1", - "tsx": "^4.19.0", + "tsx": "^4.19.1", "type-fest": "^4.26.1" }, "engines": { diff --git a/packages/init/src/init.ts b/packages/init/src/init.ts index 0b12974f..c441d099 100644 --- a/packages/init/src/init.ts +++ b/packages/init/src/init.ts @@ -3,16 +3,17 @@ * missed without the other packages. */ +import {check} from '@augment-vir/assert'; import { awaitedBlockingMap, filterObject, - getEnumTypedValues, - isEnumValue, + getEnumValues, joinWithFinalConjunction, pickObjectKeys, + RuntimeEnv, safeMatch, } from '@augment-vir/common'; -import {readPackageJson, writeJson} from '@augment-vir/node-js'; +import {readPackageJson, writeJsonFile} from '@augment-vir/node'; import { copyConfigFile, defineVirmatorPlugin, @@ -20,7 +21,6 @@ import { NpmDepType, PackageType, PluginNpmDeps, - VirmatorEnv, VirmatorNoTraceError, VirmatorPlugin, VirmatorPluginCliCommands, @@ -33,15 +33,15 @@ import {PackageJson} from 'type-fest'; const deps: PluginNpmDeps = { 'mono-vir': { env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [PackageType.MonoRoot], type: NpmDepType.Dev, }, tsx: { env: [ - VirmatorEnv.Node, + RuntimeEnv.Node, ], packageType: [ PackageType.MonoPackage, @@ -51,7 +51,7 @@ const deps: PluginNpmDeps = { }, 'element-vir': { env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoPackage, @@ -93,8 +93,8 @@ export const virmatorInitPlugin = defineVirmatorPlugin( ), copyToPath: join('.github', 'workflows', 'build-for-gh-pages.yml'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -106,8 +106,8 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'github', 'workflows', 'tagged-release.yml'), copyToPath: join('.github', 'workflows', 'tagged-release.yml'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -119,7 +119,7 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'github', 'workflows', 'tests-node.yml'), copyToPath: join('.github', 'workflows', 'tests.yml'), env: [ - VirmatorEnv.Node, + RuntimeEnv.Node, ], packageType: [ PackageType.TopPackage, @@ -131,7 +131,7 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'github', 'workflows', 'tests-web.yml'), copyToPath: join('.github', 'workflows', 'tests.yml'), env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -143,8 +143,8 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'vscode', 'settings.json'), copyToPath: join('.vscode', 'settings.json'), env: [ - VirmatorEnv.Web, - VirmatorEnv.Node, + RuntimeEnv.Web, + RuntimeEnv.Node, ], packageType: [ PackageType.TopPackage, @@ -162,7 +162,7 @@ export const virmatorInitPlugin = defineVirmatorPlugin( ), copyToPath: join('src', 'ui', 'elements', 'vir-app.element.ts'), env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -174,7 +174,7 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'src', 'index.html'), copyToPath: join('src', 'index.html'), env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -186,7 +186,7 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'www-static', 'index.css'), copyToPath: join('www-static', 'index.css'), env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -198,7 +198,7 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'www-static', '_redirects'), copyToPath: join('www-static', '_redirects'), env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -210,8 +210,8 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'gitattributes.txt'), copyToPath: join('.gitattributes'), env: [ - VirmatorEnv.Web, - VirmatorEnv.Node, + RuntimeEnv.Web, + RuntimeEnv.Node, ], packageType: [ PackageType.TopPackage, @@ -223,8 +223,8 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'nvmrc.txt'), copyToPath: join('.nvmrc'), env: [ - VirmatorEnv.Web, - VirmatorEnv.Node, + RuntimeEnv.Web, + RuntimeEnv.Node, ], packageType: [ PackageType.TopPackage, @@ -236,8 +236,8 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'gitignore.txt'), copyToPath: join('.gitignore'), env: [ - VirmatorEnv.Web, - VirmatorEnv.Node, + RuntimeEnv.Web, + RuntimeEnv.Node, ], packageType: [ PackageType.TopPackage, @@ -249,8 +249,8 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'LICENSE-MIT'), copyToPath: join('LICENSE-MIT'), env: [ - VirmatorEnv.Web, - VirmatorEnv.Node, + RuntimeEnv.Web, + RuntimeEnv.Node, ], packageType: [ PackageType.TopPackage, @@ -263,8 +263,8 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'LICENSE-CC0'), copyToPath: join('LICENSE-CC0'), env: [ - VirmatorEnv.Web, - VirmatorEnv.Node, + RuntimeEnv.Web, + RuntimeEnv.Node, ], packageType: [ PackageType.TopPackage, @@ -277,8 +277,8 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'npmignore.txt'), copyToPath: join('.npmignore'), env: [ - VirmatorEnv.Web, - VirmatorEnv.Node, + RuntimeEnv.Web, + RuntimeEnv.Node, ], packageType: [ PackageType.TopPackage, @@ -290,7 +290,7 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'package-mono-package-node', 'package.json'), copyToPath: join('package.json'), env: [ - VirmatorEnv.Node, + RuntimeEnv.Node, ], packageType: [ PackageType.MonoPackage, @@ -301,7 +301,7 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'package-mono-package-web', 'package.json'), copyToPath: join('package.json'), env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoPackage, @@ -312,8 +312,8 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'package-mono-root', 'package.json'), copyToPath: join('package.json'), env: [ - VirmatorEnv.Web, - VirmatorEnv.Node, + RuntimeEnv.Web, + RuntimeEnv.Node, ], packageType: [ PackageType.MonoRoot, @@ -324,7 +324,7 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'package-top-package-node', 'package.json'), copyToPath: join('package.json'), env: [ - VirmatorEnv.Node, + RuntimeEnv.Node, ], packageType: [ PackageType.TopPackage, @@ -335,7 +335,7 @@ export const virmatorInitPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'package-top-package-web', 'package.json'), copyToPath: join('package.json'), env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -353,16 +353,16 @@ export const virmatorInitPlugin = defineVirmatorPlugin( log, runInstallDeps, }) => { - const packageType = filteredArgs.find((arg) => isEnumValue(arg, PackageType)); - const packageEnv = filteredArgs.find((arg) => isEnumValue(arg, VirmatorEnv)); + const packageType = filteredArgs.find((arg) => check.isEnumValue(arg, PackageType)); + const packageEnv = filteredArgs.find((arg) => check.isEnumValue(arg, RuntimeEnv)); if (!packageEnv) { throw new VirmatorNoTraceError( - `Missing env. Expected one of ${joinWithFinalConjunction(getEnumTypedValues(VirmatorEnv), 'or')}`, + `Missing env. Expected one of ${joinWithFinalConjunction(getEnumValues(RuntimeEnv), 'or')}`, ); } else if (!packageType) { throw new VirmatorNoTraceError( - `Missing package type. Expected one of ${joinWithFinalConjunction(getEnumTypedValues(PackageType), 'or')}`, + `Missing package type. Expected one of ${joinWithFinalConjunction(getEnumValues(PackageType), 'or')}`, ); } @@ -405,7 +405,7 @@ async function writePackageJson(originalPackageJson: Readonly, pack ]), }; - await writeJson(join(packagePath, 'package.json'), packageJson); + await writeJsonFile(join(packagePath, 'package.json'), packageJson); } function createGitUrls(ref: string) { diff --git a/packages/lint/package.json b/packages/lint/package.json index 4adbc008..35629775 100644 --- a/packages/lint/package.json +++ b/packages/lint/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/lint", - "version": "13.3.12", + "version": "13.3.13", "description": "Default ESLint linting plugin for virmator.", "keywords": [ "virmator", @@ -31,21 +31,23 @@ "test:update": "npm test update" }, "dependencies": { - "@augment-vir/common": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@virmator/core": "^13.3.13", "mri": "^1.2.0" }, "devDependencies": { + "@augment-vir/test": "^30.0.4", "@eslint/eslintrc": "^3.1.0", "@eslint/js": "^9.10.0", "@stylistic/eslint-plugin": "^2.8.0", "@stylistic/eslint-plugin-ts": "^2.8.0", - "@types/node": "^22.5.4", + "@types/node": "^22.5.5", "@typescript-eslint/eslint-plugin": "^8.5.0", "c8": "^10.1.2", "eslint": "^9.10.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-jsdoc": "^50.2.2", + "eslint-plugin-jsdoc": "^50.2.3", "eslint-plugin-monorepo-cop": "^1.0.2", "eslint-plugin-playwright": "^1.6.2", "eslint-plugin-prettier": "^5.2.1", diff --git a/packages/lint/src/lint.test.ts b/packages/lint/src/lint.test.ts index 0ee8d299..dc697642 100644 --- a/packages/lint/src/lint.test.ts +++ b/packages/lint/src/lint.test.ts @@ -1,7 +1,7 @@ import {safeMatch} from '@augment-vir/common'; +import {describe, it, type UniversalTestContext} from '@augment-vir/test'; import {testPlugin} from '@virmator/plugin-testing'; import {basename, join, resolve} from 'node:path'; -import {describe, it, TestContext} from 'node:test'; import {virmatorLintPlugin} from './lint.js'; const testFilesDir = resolve(import.meta.dirname, '..', 'test-files'); @@ -9,7 +9,7 @@ const testFilesDir = resolve(import.meta.dirname, '..', 'test-files'); describe(virmatorLintPlugin.name, () => { async function testVirmatorLintPlugin( shouldPass: boolean, - context: TestContext, + context: UniversalTestContext, cwd: string, extraCommand = '', ) { diff --git a/packages/lint/src/lint.test.ts.snapshot b/packages/lint/src/lint.test.ts.snapshot index 9391bade..9cee6799 100644 --- a/packages/lint/src/lint.test.ts.snapshot +++ b/packages/lint/src/lint.test.ts.snapshot @@ -1,12 +1,12 @@ exports[`Lint > fixes an invalid project 1`] = ` { "logs": { - "stdout": "Copied eslint.config.mjs\\nInstalling eslint@9.10.0 eslint-plugin-require-extensions@0.1.3 eslint-plugin-unicorn@55.0.0 @eslint/js@9.10.0 @eslint/eslintrc@3.1.0 @stylistic/eslint-plugin@2.8.0 eslint-plugin-monorepo-cop@1.0.2 @stylistic/eslint-plugin-ts@2.8.0 @typescript-eslint/eslint-plugin@8.5.0 eslint-config-prettier@9.1.0 eslint-plugin-jsdoc@50.2.2 eslint-plugin-playwright@1.6.2 eslint-plugin-prettier@5.2.1 eslint-plugin-sonarjs@2.0.2 typescript-eslint@8.5.0...\\n> npx eslint --fix .\\n\\na.ts\\n 3:8 error Async function 'doThing' has no 'await' expression @typescript-eslint/require-await\\n 4:12 error Forbidden non-null assertion @typescript-eslint/no-non-null-assertion\\n\\n✖ 2 problems (2 errors, 0 warnings)\\n", + "stdout": "Copied eslint.config.mjs\\nInstalling eslint@9.10.0 eslint-plugin-require-extensions@0.1.3 eslint-plugin-unicorn@55.0.0 @eslint/js@9.10.0 @eslint/eslintrc@3.1.0 @stylistic/eslint-plugin@2.8.0 eslint-plugin-monorepo-cop@1.0.2 @stylistic/eslint-plugin-ts@2.8.0 @typescript-eslint/eslint-plugin@8.5.0 eslint-config-prettier@9.1.0 eslint-plugin-jsdoc@50.2.3 eslint-plugin-playwright@1.6.2 eslint-plugin-prettier@5.2.1 eslint-plugin-sonarjs@2.0.2 typescript-eslint@8.5.0...\\n> npx eslint --fix .\\n\\na.ts\\n 3:8 error Async function 'doThing' has no 'await' expression @typescript-eslint/require-await\\n 4:12 error Forbidden non-null assertion @typescript-eslint/no-non-null-assertion\\n\\n✖ 2 problems (2 errors, 0 warnings)\\n", "stderr": "lint failed." }, "cwd": "packages/lint/test-files/bad-repo", "contentsDiff": { - "package.json": "{\\n \\"devDependencies\\": {\\n \\"@eslint/eslintrc\\": \\"^3.1.0\\",\\n \\"@eslint/js\\": \\"^9.10.0\\",\\n \\"@stylistic/eslint-plugin\\": \\"^2.8.0\\",\\n \\"@stylistic/eslint-plugin-ts\\": \\"^2.8.0\\",\\n \\"@typescript-eslint/eslint-plugin\\": \\"^8.5.0\\",\\n \\"eslint\\": \\"^9.10.0\\",\\n \\"eslint-config-prettier\\": \\"^9.1.0\\",\\n \\"eslint-plugin-jsdoc\\": \\"^50.2.2\\",\\n \\"eslint-plugin-monorepo-cop\\": \\"^1.0.2\\",\\n \\"eslint-plugin-playwright\\": \\"^1.6.2\\",\\n \\"eslint-plugin-prettier\\": \\"^5.2.1\\",\\n \\"eslint-plugin-require-extensions\\": \\"^0.1.3\\",\\n \\"eslint-plugin-sonarjs\\": \\"^2.0.2\\",\\n \\"eslint-plugin-unicorn\\": \\"^55.0.0\\",\\n \\"typescript-eslint\\": \\"^8.5.0\\"\\n }\\n}\\n", + "package.json": "{\\n \\"devDependencies\\": {\\n \\"@eslint/eslintrc\\": \\"^3.1.0\\",\\n \\"@eslint/js\\": \\"^9.10.0\\",\\n \\"@stylistic/eslint-plugin\\": \\"^2.8.0\\",\\n \\"@stylistic/eslint-plugin-ts\\": \\"^2.8.0\\",\\n \\"@typescript-eslint/eslint-plugin\\": \\"^8.5.0\\",\\n \\"eslint\\": \\"^9.10.0\\",\\n \\"eslint-config-prettier\\": \\"^9.1.0\\",\\n \\"eslint-plugin-jsdoc\\": \\"^50.2.3\\",\\n \\"eslint-plugin-monorepo-cop\\": \\"^1.0.2\\",\\n \\"eslint-plugin-playwright\\": \\"^1.6.2\\",\\n \\"eslint-plugin-prettier\\": \\"^5.2.1\\",\\n \\"eslint-plugin-require-extensions\\": \\"^0.1.3\\",\\n \\"eslint-plugin-sonarjs\\": \\"^2.0.2\\",\\n \\"eslint-plugin-unicorn\\": \\"^55.0.0\\",\\n \\"typescript-eslint\\": \\"^8.5.0\\"\\n }\\n}\\n", "src": { "a.ts": "const something: undefined | number = undefined;\\n\\nexport async function doThing(): Promise {\\n return something!;\\n}\\n" }, @@ -21,11 +21,11 @@ exports[`Lint > fixes an invalid project 1`] = ` exports[`Lint > lints a valid project 1`] = ` { "logs": { - "stdout": "Copied eslint.config.mjs\\nInstalling eslint@9.10.0 eslint-plugin-require-extensions@0.1.3 eslint-plugin-unicorn@55.0.0 @eslint/js@9.10.0 @eslint/eslintrc@3.1.0 @stylistic/eslint-plugin@2.8.0 eslint-plugin-monorepo-cop@1.0.2 @stylistic/eslint-plugin-ts@2.8.0 @typescript-eslint/eslint-plugin@8.5.0 eslint-config-prettier@9.1.0 eslint-plugin-jsdoc@50.2.2 eslint-plugin-playwright@1.6.2 eslint-plugin-prettier@5.2.1 eslint-plugin-sonarjs@2.0.2 typescript-eslint@8.5.0...\\n> npx eslint .\\nlint finished." + "stdout": "Copied eslint.config.mjs\\nInstalling eslint@9.10.0 eslint-plugin-require-extensions@0.1.3 eslint-plugin-unicorn@55.0.0 @eslint/js@9.10.0 @eslint/eslintrc@3.1.0 @stylistic/eslint-plugin@2.8.0 eslint-plugin-monorepo-cop@1.0.2 @stylistic/eslint-plugin-ts@2.8.0 @typescript-eslint/eslint-plugin@8.5.0 eslint-config-prettier@9.1.0 eslint-plugin-jsdoc@50.2.3 eslint-plugin-playwright@1.6.2 eslint-plugin-prettier@5.2.1 eslint-plugin-sonarjs@2.0.2 typescript-eslint@8.5.0...\\n> npx eslint .\\nlint finished." }, "cwd": "packages/lint/test-files/good-repo", "contentsDiff": { - "package.json": "{\\n \\"devDependencies\\": {\\n \\"@eslint/eslintrc\\": \\"^3.1.0\\",\\n \\"@eslint/js\\": \\"^9.10.0\\",\\n \\"@stylistic/eslint-plugin\\": \\"^2.8.0\\",\\n \\"@stylistic/eslint-plugin-ts\\": \\"^2.8.0\\",\\n \\"@typescript-eslint/eslint-plugin\\": \\"^8.5.0\\",\\n \\"eslint\\": \\"^9.10.0\\",\\n \\"eslint-config-prettier\\": \\"^9.1.0\\",\\n \\"eslint-plugin-jsdoc\\": \\"^50.2.2\\",\\n \\"eslint-plugin-monorepo-cop\\": \\"^1.0.2\\",\\n \\"eslint-plugin-playwright\\": \\"^1.6.2\\",\\n \\"eslint-plugin-prettier\\": \\"^5.2.1\\",\\n \\"eslint-plugin-require-extensions\\": \\"^0.1.3\\",\\n \\"eslint-plugin-sonarjs\\": \\"^2.0.2\\",\\n \\"eslint-plugin-unicorn\\": \\"^55.0.0\\",\\n \\"typescript-eslint\\": \\"^8.5.0\\"\\n }\\n}\\n", + "package.json": "{\\n \\"devDependencies\\": {\\n \\"@eslint/eslintrc\\": \\"^3.1.0\\",\\n \\"@eslint/js\\": \\"^9.10.0\\",\\n \\"@stylistic/eslint-plugin\\": \\"^2.8.0\\",\\n \\"@stylistic/eslint-plugin-ts\\": \\"^2.8.0\\",\\n \\"@typescript-eslint/eslint-plugin\\": \\"^8.5.0\\",\\n \\"eslint\\": \\"^9.10.0\\",\\n \\"eslint-config-prettier\\": \\"^9.1.0\\",\\n \\"eslint-plugin-jsdoc\\": \\"^50.2.3\\",\\n \\"eslint-plugin-monorepo-cop\\": \\"^1.0.2\\",\\n \\"eslint-plugin-playwright\\": \\"^1.6.2\\",\\n \\"eslint-plugin-prettier\\": \\"^5.2.1\\",\\n \\"eslint-plugin-require-extensions\\": \\"^0.1.3\\",\\n \\"eslint-plugin-sonarjs\\": \\"^2.0.2\\",\\n \\"eslint-plugin-unicorn\\": \\"^55.0.0\\",\\n \\"typescript-eslint\\": \\"^8.5.0\\"\\n }\\n}\\n", "eslint.config.mjs": "import {defineEslintConfig} from '@virmator/lint/configs/eslint.config.base.mjs';\\nimport {dirname} from 'node:path';\\nimport {fileURLToPath} from 'node:url';\\n\\nconst __dirname = dirname(fileURLToPath(import.meta.url));\\n\\nexport default [\\n ...defineEslintConfig(__dirname),\\n {\\n ignores: [\\n /** Add file globs that should be ignored. */\\n ],\\n },\\n {\\n rules: {\\n /**\\n * Turn off or on specific rules. See {@link defineEslintConfig} for which plugins are\\n * already enabled.\\n */\\n },\\n },\\n];\\n" } } @@ -34,12 +34,12 @@ exports[`Lint > lints a valid project 1`] = ` exports[`Lint > lints an invalid project 1`] = ` { "logs": { - "stdout": "Copied eslint.config.mjs\\nInstalling eslint@9.10.0 eslint-plugin-require-extensions@0.1.3 eslint-plugin-unicorn@55.0.0 @eslint/js@9.10.0 @eslint/eslintrc@3.1.0 @stylistic/eslint-plugin@2.8.0 eslint-plugin-monorepo-cop@1.0.2 @stylistic/eslint-plugin-ts@2.8.0 @typescript-eslint/eslint-plugin@8.5.0 eslint-config-prettier@9.1.0 eslint-plugin-jsdoc@50.2.2 eslint-plugin-playwright@1.6.2 eslint-plugin-prettier@5.2.1 eslint-plugin-sonarjs@2.0.2 typescript-eslint@8.5.0...\\n> npx eslint .\\n\\na.ts\\n 3:8 error Async function 'doThing' has no 'await' expression @typescript-eslint/require-await\\n 4:12 error Forbidden non-null assertion @typescript-eslint/no-non-null-assertion\\n 4:12 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion\\n 4:12 error Forbidden non-null assertion @typescript-eslint/no-non-null-assertion\\n 4:12 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion\\n 4:12 error Forbidden extra non-null assertion @typescript-eslint/no-extra-non-null-assertion\\n 4:12 error Forbidden non-null assertion @typescript-eslint/no-non-null-assertion\\n 4:12 error Forbidden extra non-null assertion @typescript-eslint/no-extra-non-null-assertion\\n\\n✖ 8 problems (8 errors, 0 warnings)\\n 4 errors and 0 warnings potentially fixable with the \`--fix\` option.\\n", + "stdout": "Copied eslint.config.mjs\\nInstalling eslint@9.10.0 eslint-plugin-require-extensions@0.1.3 eslint-plugin-unicorn@55.0.0 @eslint/js@9.10.0 @eslint/eslintrc@3.1.0 @stylistic/eslint-plugin@2.8.0 eslint-plugin-monorepo-cop@1.0.2 @stylistic/eslint-plugin-ts@2.8.0 @typescript-eslint/eslint-plugin@8.5.0 eslint-config-prettier@9.1.0 eslint-plugin-jsdoc@50.2.3 eslint-plugin-playwright@1.6.2 eslint-plugin-prettier@5.2.1 eslint-plugin-sonarjs@2.0.2 typescript-eslint@8.5.0...\\n> npx eslint .\\n\\na.ts\\n 3:8 error Async function 'doThing' has no 'await' expression @typescript-eslint/require-await\\n 4:12 error Forbidden non-null assertion @typescript-eslint/no-non-null-assertion\\n 4:12 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion\\n 4:12 error Forbidden non-null assertion @typescript-eslint/no-non-null-assertion\\n 4:12 error This assertion is unnecessary since it does not change the type of the expression @typescript-eslint/no-unnecessary-type-assertion\\n 4:12 error Forbidden extra non-null assertion @typescript-eslint/no-extra-non-null-assertion\\n 4:12 error Forbidden non-null assertion @typescript-eslint/no-non-null-assertion\\n 4:12 error Forbidden extra non-null assertion @typescript-eslint/no-extra-non-null-assertion\\n\\n✖ 8 problems (8 errors, 0 warnings)\\n 4 errors and 0 warnings potentially fixable with the \`--fix\` option.\\n", "stderr": "lint failed." }, "cwd": "packages/lint/test-files/bad-repo", "contentsDiff": { - "package.json": "{\\n \\"devDependencies\\": {\\n \\"@eslint/eslintrc\\": \\"^3.1.0\\",\\n \\"@eslint/js\\": \\"^9.10.0\\",\\n \\"@stylistic/eslint-plugin\\": \\"^2.8.0\\",\\n \\"@stylistic/eslint-plugin-ts\\": \\"^2.8.0\\",\\n \\"@typescript-eslint/eslint-plugin\\": \\"^8.5.0\\",\\n \\"eslint\\": \\"^9.10.0\\",\\n \\"eslint-config-prettier\\": \\"^9.1.0\\",\\n \\"eslint-plugin-jsdoc\\": \\"^50.2.2\\",\\n \\"eslint-plugin-monorepo-cop\\": \\"^1.0.2\\",\\n \\"eslint-plugin-playwright\\": \\"^1.6.2\\",\\n \\"eslint-plugin-prettier\\": \\"^5.2.1\\",\\n \\"eslint-plugin-require-extensions\\": \\"^0.1.3\\",\\n \\"eslint-plugin-sonarjs\\": \\"^2.0.2\\",\\n \\"eslint-plugin-unicorn\\": \\"^55.0.0\\",\\n \\"typescript-eslint\\": \\"^8.5.0\\"\\n }\\n}\\n", + "package.json": "{\\n \\"devDependencies\\": {\\n \\"@eslint/eslintrc\\": \\"^3.1.0\\",\\n \\"@eslint/js\\": \\"^9.10.0\\",\\n \\"@stylistic/eslint-plugin\\": \\"^2.8.0\\",\\n \\"@stylistic/eslint-plugin-ts\\": \\"^2.8.0\\",\\n \\"@typescript-eslint/eslint-plugin\\": \\"^8.5.0\\",\\n \\"eslint\\": \\"^9.10.0\\",\\n \\"eslint-config-prettier\\": \\"^9.1.0\\",\\n \\"eslint-plugin-jsdoc\\": \\"^50.2.3\\",\\n \\"eslint-plugin-monorepo-cop\\": \\"^1.0.2\\",\\n \\"eslint-plugin-playwright\\": \\"^1.6.2\\",\\n \\"eslint-plugin-prettier\\": \\"^5.2.1\\",\\n \\"eslint-plugin-require-extensions\\": \\"^0.1.3\\",\\n \\"eslint-plugin-sonarjs\\": \\"^2.0.2\\",\\n \\"eslint-plugin-unicorn\\": \\"^55.0.0\\",\\n \\"typescript-eslint\\": \\"^8.5.0\\"\\n }\\n}\\n", "eslint.config.mjs": "import {defineEslintConfig} from '@virmator/lint/configs/eslint.config.base.mjs';\\nimport {dirname} from 'node:path';\\nimport {fileURLToPath} from 'node:url';\\n\\nconst __dirname = dirname(fileURLToPath(import.meta.url));\\n\\nexport default [\\n ...defineEslintConfig(__dirname),\\n {\\n ignores: [\\n /** Add file globs that should be ignored. */\\n ],\\n },\\n {\\n rules: {\\n /**\\n * Turn off or on specific rules. See {@link defineEslintConfig} for which plugins are\\n * already enabled.\\n */\\n },\\n },\\n];\\n" }, "error": { @@ -51,11 +51,11 @@ exports[`Lint > lints an invalid project 1`] = ` exports[`Lint > works with a custom path 1`] = ` { "logs": { - "stdout": "Copied eslint.config.mjs\\nInstalling eslint@9.10.0 eslint-plugin-require-extensions@0.1.3 eslint-plugin-unicorn@55.0.0 @eslint/js@9.10.0 @eslint/eslintrc@3.1.0 @stylistic/eslint-plugin@2.8.0 eslint-plugin-monorepo-cop@1.0.2 @stylistic/eslint-plugin-ts@2.8.0 @typescript-eslint/eslint-plugin@8.5.0 eslint-config-prettier@9.1.0 eslint-plugin-jsdoc@50.2.2 eslint-plugin-playwright@1.6.2 eslint-plugin-prettier@5.2.1 eslint-plugin-sonarjs@2.0.2 typescript-eslint@8.5.0...\\n> npx eslint src/a.ts\\nlint finished." + "stdout": "Copied eslint.config.mjs\\nInstalling eslint@9.10.0 eslint-plugin-require-extensions@0.1.3 eslint-plugin-unicorn@55.0.0 @eslint/js@9.10.0 @eslint/eslintrc@3.1.0 @stylistic/eslint-plugin@2.8.0 eslint-plugin-monorepo-cop@1.0.2 @stylistic/eslint-plugin-ts@2.8.0 @typescript-eslint/eslint-plugin@8.5.0 eslint-config-prettier@9.1.0 eslint-plugin-jsdoc@50.2.3 eslint-plugin-playwright@1.6.2 eslint-plugin-prettier@5.2.1 eslint-plugin-sonarjs@2.0.2 typescript-eslint@8.5.0...\\n> npx eslint src/a.ts\\nlint finished." }, "cwd": "packages/lint/test-files/good-repo", "contentsDiff": { - "package.json": "{\\n \\"devDependencies\\": {\\n \\"@eslint/eslintrc\\": \\"^3.1.0\\",\\n \\"@eslint/js\\": \\"^9.10.0\\",\\n \\"@stylistic/eslint-plugin\\": \\"^2.8.0\\",\\n \\"@stylistic/eslint-plugin-ts\\": \\"^2.8.0\\",\\n \\"@typescript-eslint/eslint-plugin\\": \\"^8.5.0\\",\\n \\"eslint\\": \\"^9.10.0\\",\\n \\"eslint-config-prettier\\": \\"^9.1.0\\",\\n \\"eslint-plugin-jsdoc\\": \\"^50.2.2\\",\\n \\"eslint-plugin-monorepo-cop\\": \\"^1.0.2\\",\\n \\"eslint-plugin-playwright\\": \\"^1.6.2\\",\\n \\"eslint-plugin-prettier\\": \\"^5.2.1\\",\\n \\"eslint-plugin-require-extensions\\": \\"^0.1.3\\",\\n \\"eslint-plugin-sonarjs\\": \\"^2.0.2\\",\\n \\"eslint-plugin-unicorn\\": \\"^55.0.0\\",\\n \\"typescript-eslint\\": \\"^8.5.0\\"\\n }\\n}\\n", + "package.json": "{\\n \\"devDependencies\\": {\\n \\"@eslint/eslintrc\\": \\"^3.1.0\\",\\n \\"@eslint/js\\": \\"^9.10.0\\",\\n \\"@stylistic/eslint-plugin\\": \\"^2.8.0\\",\\n \\"@stylistic/eslint-plugin-ts\\": \\"^2.8.0\\",\\n \\"@typescript-eslint/eslint-plugin\\": \\"^8.5.0\\",\\n \\"eslint\\": \\"^9.10.0\\",\\n \\"eslint-config-prettier\\": \\"^9.1.0\\",\\n \\"eslint-plugin-jsdoc\\": \\"^50.2.3\\",\\n \\"eslint-plugin-monorepo-cop\\": \\"^1.0.2\\",\\n \\"eslint-plugin-playwright\\": \\"^1.6.2\\",\\n \\"eslint-plugin-prettier\\": \\"^5.2.1\\",\\n \\"eslint-plugin-require-extensions\\": \\"^0.1.3\\",\\n \\"eslint-plugin-sonarjs\\": \\"^2.0.2\\",\\n \\"eslint-plugin-unicorn\\": \\"^55.0.0\\",\\n \\"typescript-eslint\\": \\"^8.5.0\\"\\n }\\n}\\n", "eslint.config.mjs": "import {defineEslintConfig} from '@virmator/lint/configs/eslint.config.base.mjs';\\nimport {dirname} from 'node:path';\\nimport {fileURLToPath} from 'node:url';\\n\\nconst __dirname = dirname(fileURLToPath(import.meta.url));\\n\\nexport default [\\n ...defineEslintConfig(__dirname),\\n {\\n ignores: [\\n /** Add file globs that should be ignored. */\\n ],\\n },\\n {\\n rules: {\\n /**\\n * Turn off or on specific rules. See {@link defineEslintConfig} for which plugins are\\n * already enabled.\\n */\\n },\\n },\\n];\\n" } } diff --git a/packages/lint/src/lint.ts b/packages/lint/src/lint.ts index ff84ffd0..32ef0ece 100644 --- a/packages/lint/src/lint.ts +++ b/packages/lint/src/lint.ts @@ -1,5 +1,6 @@ -import {isTruthy} from '@augment-vir/common'; -import {defineVirmatorPlugin, NpmDepType, PackageType, VirmatorEnv} from '@virmator/core'; +import {check} from '@augment-vir/assert'; +import {RuntimeEnv} from '@augment-vir/common'; +import {defineVirmatorPlugin, NpmDepType, PackageType} from '@virmator/core'; import mri from 'mri'; import {join} from 'node:path'; @@ -43,8 +44,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'tsconfig.eslint.json'), copyToPath: join('configs', 'tsconfig.eslint.json'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -55,8 +56,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'eslint.config.share.mjs'), copyToPath: join('eslint.config.mjs'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -73,8 +74,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( eslint: { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -84,8 +85,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( 'eslint-plugin-require-extensions': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -95,8 +96,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( 'eslint-plugin-unicorn': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -106,8 +107,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( '@eslint/js': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -117,8 +118,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( '@eslint/eslintrc': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -128,8 +129,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( '@stylistic/eslint-plugin': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -139,8 +140,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( 'eslint-plugin-monorepo-cop': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -150,8 +151,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( '@stylistic/eslint-plugin-ts': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -161,8 +162,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( '@typescript-eslint/eslint-plugin': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -172,8 +173,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( 'eslint-config-prettier': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -183,8 +184,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( 'eslint-plugin-jsdoc': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -194,8 +195,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( 'eslint-plugin-playwright': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -205,8 +206,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( 'eslint-plugin-prettier': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -216,8 +217,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( 'eslint-plugin-sonarjs': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -227,8 +228,8 @@ export const virmatorLintPlugin = defineVirmatorPlugin( 'typescript-eslint': { type: NpmDepType.Dev, env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.TopPackage, @@ -255,7 +256,7 @@ export const virmatorLintPlugin = defineVirmatorPlugin( dirPath, ...filteredArgs, ] - .filter(isTruthy) + .filter(check.isTruthy) .join(' '); await runShellCommand(eslintCommand, {cwd: monoRepoRootPath}); diff --git a/packages/plugin-testing/package.json b/packages/plugin-testing/package.json index bc5c28b0..a24bd70c 100644 --- a/packages/plugin-testing/package.json +++ b/packages/plugin-testing/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/plugin-testing", - "version": "13.3.12", + "version": "13.3.13", "description": "Testing for virmator plugins.", "keywords": [ "virmator", @@ -30,18 +30,19 @@ "test:update": "npm test update" }, "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", "cli-args-vir": "^0.0.3", - "run-time-assertions": "^1.5.2", "type-fest": "^4.26.1" }, "devDependencies": { - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "c8": "^10.1.2", "istanbul-smart-text-reporter": "^1.1.4", - "tsx": "^4.19.0", + "tsx": "^4.19.1", "typescript": "^5.6.2" }, "engines": { diff --git a/packages/plugin-testing/src/augments/fs/dir-contents.test.ts b/packages/plugin-testing/src/augments/fs/dir-contents.test.ts index defd3967..3f9a0438 100644 --- a/packages/plugin-testing/src/augments/fs/dir-contents.test.ts +++ b/packages/plugin-testing/src/augments/fs/dir-contents.test.ts @@ -1,9 +1,9 @@ +import {assert} from '@augment-vir/assert'; import {wrapString} from '@augment-vir/common'; -import assert from 'node:assert/strict'; +import {describe, it} from '@augment-vir/test'; import {existsSync} from 'node:fs'; import {mkdir, writeFile} from 'node:fs/promises'; import {dirname, join, sep} from 'node:path'; -import {describe, it} from 'node:test'; import {dirContentsTestPath} from '../../file-paths.js'; import {readAllDirContents, resetDirContents} from './dir-contents.js'; @@ -13,7 +13,7 @@ describe(readAllDirContents.name, () => { recursive: true, }); - assert.deepStrictEqual(output, { + assert.deepEquals(output, { 'a.ts': "export function hello() {\n return 'hi';\n}\n", 'package.json': '{}\n', b: { @@ -24,7 +24,7 @@ describe(readAllDirContents.name, () => { it('does not recurse', async () => { const output = await readAllDirContents(dirContentsTestPath, {}); - assert.deepStrictEqual(output, { + assert.deepEquals(output, { 'a.ts': "export function hello() {\n return 'hi';\n}\n", 'package.json': '{}\n', }); @@ -36,7 +36,7 @@ describe(readAllDirContents.name, () => { excludeList: [wrapString({value: 'b', wrapper: sep})], }); - assert.deepStrictEqual(output, { + assert.deepEquals(output, { 'a.ts': "export function hello() {\n return 'hi';\n}\n", 'package.json': '{}\n', }); @@ -48,7 +48,7 @@ describe(readAllDirContents.name, () => { excludeList: [/b/], }); - assert.deepStrictEqual(output, { + assert.deepEquals(output, { 'a.ts': "export function hello() {\n return 'hi';\n}\n", 'package.json': '{}\n', }); @@ -63,8 +63,8 @@ describe(resetDirContents.name, () => { await mkdir(dirname(extraFilePath), {recursive: true}); await writeFile(extraFilePath, 'test'); - assert.strictEqual(existsSync(extraFilePath), true); + assert.strictEquals(existsSync(extraFilePath), true); await resetDirContents(dirContentsTestPath, originalContents); - assert.strictEqual(existsSync(extraFilePath), false); + assert.strictEquals(existsSync(extraFilePath), false); }); }); diff --git a/packages/plugin-testing/src/augments/fs/dir-contents.ts b/packages/plugin-testing/src/augments/fs/dir-contents.ts index 15ef2cf2..c61c4ab2 100644 --- a/packages/plugin-testing/src/augments/fs/dir-contents.ts +++ b/packages/plugin-testing/src/augments/fs/dir-contents.ts @@ -1,8 +1,8 @@ -import {getObjectTypedEntries, isObject} from '@augment-vir/common'; -import {writeFileAndDir} from '@augment-vir/node-js'; +import {check} from '@augment-vir/assert'; +import {getObjectTypedEntries} from '@augment-vir/common'; +import {writeFileAndDir} from '@augment-vir/node'; import {readdir, readFile, rm, stat} from 'node:fs/promises'; import {join} from 'node:path'; -import {isRunTimeType} from 'run-time-assertions'; /** Nested contents read from a file system directory. */ export type DirContents = { @@ -28,7 +28,7 @@ export async function readAllDirContents( if ( excludeList?.some((excludeItem) => { - if (isRunTimeType(excludeItem, 'string')) { + if (check.isString(excludeItem)) { return filePath.includes(excludeItem); } else { return filePath.match(excludeItem); @@ -45,7 +45,7 @@ export async function readAllDirContents( ? await readAllDirContents(filePath, {recursive, excludeList}) : undefined; - if (isObject(contents) && !Object.keys(contents).length) { + if (check.isObject(contents) && !Object.keys(contents).length) { return undefined; } @@ -86,7 +86,7 @@ export async function writeDirContents( content, ]) => { const fullPath = join(rootDir, relativePath); - if (isRunTimeType(content, 'string')) { + if (check.isString(content)) { await writeFileAndDir(fullPath, content); } else { await writeDirContents(fullPath, content); diff --git a/packages/plugin-testing/src/index.test.ts b/packages/plugin-testing/src/index.test.ts index f2941c6c..ff191978 100644 --- a/packages/plugin-testing/src/index.test.ts +++ b/packages/plugin-testing/src/index.test.ts @@ -1,9 +1,9 @@ -import assert from 'node:assert/strict'; -import {describe, it} from 'node:test'; +import {assert} from '@augment-vir/assert'; +import {describe, it} from '@augment-vir/test'; import * as pluginTestingExports from './index.js'; describe('index file', () => { it('exports testPlugin', () => { - assert.deepStrictEqual(Object.keys(pluginTestingExports).includes('testPlugin'), true); + assert.deepEquals(Object.keys(pluginTestingExports).includes('testPlugin'), true); }); }); diff --git a/packages/plugin-testing/src/test-plugin.test.ts b/packages/plugin-testing/src/test-plugin.test.ts index 0a5e1aa1..58a1594e 100644 --- a/packages/plugin-testing/src/test-plugin.test.ts +++ b/packages/plugin-testing/src/test-plugin.test.ts @@ -1,7 +1,6 @@ +import {assert} from '@augment-vir/assert'; +import {describe, it, type UniversalTestContext} from '@augment-vir/test'; import {defineVirmatorPlugin, VirmatorNoTraceError} from '@virmator/core'; -import assert from 'node:assert/strict'; -import {describe, it, TestContext} from 'node:test'; -import {assertThrows} from 'run-time-assertions'; import {dirContentsTestPath} from './file-paths.js'; import {testPlugin} from './test-plugin.js'; @@ -34,7 +33,7 @@ describe(testPlugin.name, () => { async function testExamplePlugin( shouldPass: boolean, - context: TestContext, + context: UniversalTestContext, extraCliArgs: string = '', ) { await testPlugin( @@ -53,8 +52,8 @@ describe(testPlugin.name, () => { await testExamplePlugin(false, context, 'error'); }); it('errors on shouldPass mismatch', async (context) => { - await assertThrows(() => testExamplePlugin(true, context, 'error')); - await assertThrows(() => testExamplePlugin(false, context)); + await assert.throws(() => testExamplePlugin(true, context, 'error')); + await assert.throws(() => testExamplePlugin(false, context)); }); it('handles empty no trace error', async (context) => { await testExamplePlugin(false, context, 'empty-error'); @@ -65,7 +64,7 @@ describe(testPlugin.name, () => { it('handles a cleanup callback', async (context) => { await testPlugin(true, context, virmatorExamplePlugin, 'example', dirContentsTestPath, { beforeCleanupCallback(cwd) { - assert.strictEqual(!!cwd, true); + assert.strictEquals(!!cwd, true); }, }); }); diff --git a/packages/plugin-testing/src/test-plugin.ts b/packages/plugin-testing/src/test-plugin.ts index 58004e93..73b742fe 100644 --- a/packages/plugin-testing/src/test-plugin.ts +++ b/packages/plugin-testing/src/test-plugin.ts @@ -1,44 +1,34 @@ import { addSuffix, + createLogger, + diffObjects, getOrSet, - isTruthy, + LogOutputType, mapObjectValues, MaybePromise, - PartialAndUndefined, + PartialWithUndefined, removeColor, + RuntimeEnv, wrapInTry, wrapString, + type Logger, } from '@augment-vir/common'; -import {LogOutputType, toPosixPath} from '@augment-vir/node-js'; +import {toPosixPath} from '@augment-vir/node'; +import {assertTestContext, type UniversalTestContext} from '@augment-vir/test'; import { - createPluginLogger, executeVirmatorCommand, findClosestPackageDir, hideNoTraceTraces, - PluginLogger, VirmatorNoTraceError, VirmatorPlugin, } from '@virmator/core'; import {relative, sep} from 'node:path'; -import {TestContext} from 'node:test'; -import {diffObjects} from 'run-time-assertions'; import {DirContents, readAllDirContents, resetDirContents} from './augments/index.js'; import {monoRepoDir} from './file-paths.js'; /** Log string transformer. */ export type LogTransform = (logType: LogOutputType, arg: string) => string; -function serializeLogArgs(args: unknown[]): string[] { - return args - .map((arg): string | undefined => { - return removeColor(String(arg)).replaceAll( - addSuffix({value: monoRepoDir, suffix: '/'}), - '', - ); - }) - .filter(isTruthy); -} - /** Results of a plugin test. */ export type TestPluginResult = { /** @@ -55,14 +45,14 @@ export type TestPluginResult = { }; function handleWrite( - logs: Partial>, + logs: Partial>, logType: LogOutputType, - args: unknown[], + text: string, ): true { - const serialized = serializeLogArgs(args); + const fixed = removeColor(text).replaceAll(addSuffix({value: monoRepoDir, suffix: '/'}), ''); - if (serialized.length) { - getOrSet(logs, logType, () => []).push(serialized); + if (fixed.length) { + getOrSet(logs, logType, () => []).push(fixed); } return true; @@ -77,7 +67,7 @@ const defaultContentsExcludeList = [ ]; /** Optional options for {@link testPlugin}. */ -export type TestPluginOptions = PartialAndUndefined<{ +export type TestPluginOptions = PartialWithUndefined<{ /** Transforms the final log string output of a plugin's command. */ logTransform: LogTransform; /** Exclude the given contents from directory reading. */ @@ -89,7 +79,7 @@ export type TestPluginOptions = PartialAndUndefined<{ /** Tests a virmator plugin and saves a snapshot of the results. */ export async function testPlugin( shouldPass: boolean, - context: TestContext, + context: UniversalTestContext, plugin: Readonly | ReadonlyArray>, cliCommand: string, cwd: string, @@ -99,22 +89,18 @@ export async function testPlugin( beforeCleanupCallback, }: TestPluginOptions = {}, ): Promise { - const logs: Partial> = {}; - const logger: PluginLogger = createPluginLogger( - { - stderr: { - write(...args: unknown[]) { - return handleWrite(logs, LogOutputType.error, args); - }, - }, - stdout: { - write(...args: unknown[]) { - return handleWrite(logs, LogOutputType.standard, args); - }, - }, + assertTestContext(context, RuntimeEnv.Node); + + const logs: Partial> = {}; + const logger: Logger = createLogger({ + stderr({text}) { + return handleWrite(logs, LogOutputType.Error, text); }, - true, - ); + + stdout({text}) { + return handleWrite(logs, LogOutputType.Standard, text); + }, + }); const fullExcludeList = [ ...excludeContents, diff --git a/packages/publish/package.json b/packages/publish/package.json index 78d5fe46..188cf740 100644 --- a/packages/publish/package.json +++ b/packages/publish/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/publish", - "version": "13.3.12", + "version": "13.3.13", "description": "Default publish plugin for virmator.", "keywords": [ "virmator", @@ -33,18 +33,18 @@ "test:update": "npm test" }, "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", "chalk": "^5.3.0", "mri": "^1.2.0", - "run-time-assertions": "^1.5.2", "semver": "^7.6.3", "simple-git": "^3.26.0", "url-vir": "^1.5.0" }, "devDependencies": { - "@types/node": "^22.5.4", + "@types/node": "^22.5.5", "@types/semver": "^7.5.8", "markdown-code-example-inserter": "^2.0.3", "type-fest": "^4.26.1", diff --git a/packages/publish/src/publish.ts b/packages/publish/src/publish.ts index 24160919..afab37f6 100644 --- a/packages/publish/src/publish.ts +++ b/packages/publish/src/publish.ts @@ -1,21 +1,15 @@ -import { - awaitedBlockingMap, - extractErrorMessage, - isEnumValue, - isTruthy, - safeMatch, -} from '@augment-vir/common'; +import {assert, check} from '@augment-vir/assert'; +import {awaitedBlockingMap, extractErrorMessage, safeMatch, type Logger} from '@augment-vir/common'; import { askQuestionUntilConditionMet, readPackageJson, runShellCommand as runHiddenShellCommand, runShellCommand, -} from '@augment-vir/node-js'; +} from '@augment-vir/node'; import { defineVirmatorPlugin, MonoRepoPackage, parseTsConfig, - PluginLogger, ValidPackageJson, VirmatorNoTraceError, } from '@virmator/core'; @@ -23,7 +17,6 @@ import mri from 'mri'; import {existsSync} from 'node:fs'; import {readFile, writeFile} from 'node:fs/promises'; import {join, relative, resolve} from 'node:path'; -import {assertDefined} from 'run-time-assertions'; import semver, {SemVer} from 'semver'; import simpleGit, {SimpleGit} from 'simple-git'; import {PackageJson, SetRequired} from 'type-fest'; @@ -133,7 +126,7 @@ export const virmatorPublishPlugin = defineVirmatorPlugin( if (!nextVersion || (await isVersionPublished(nextVersion, allPackageJsonFiles))) { nextVersion = await askQuestionUntilConditionMet({ - async conditionCallback(response): Promise { + async verifyResponseCallback(response): Promise { const version = semver.coerce(response)?.raw; if (!version) { return false; @@ -162,7 +155,7 @@ export const virmatorPublishPlugin = defineVirmatorPlugin( 'publish', ...publishArgs, ] - .filter(isTruthy) + .filter(check.isTruthy) .join(' '); const alteredPackageJsonFiles: {path: string; original: string}[] = []; @@ -280,7 +273,7 @@ export const virmatorPublishPlugin = defineVirmatorPlugin( async function updateGit(packageDirPath: string): Promise { const newVersion: string | undefined = (await readPackageJson(packageDirPath)).version; - assertDefined(newVersion); + assert.isDefined(newVersion); if (await doChangesExist(packageDirPath)) { await runShellCommand(`git commit -a --amend --no-edit`, { @@ -350,13 +343,13 @@ async function getGitCommitVersion(decrement: number, git: Readonly) const tags = maybeTag ? Array.from(maybeTag.matchAll(/tag: ([^),]+)[),]/g)) .map((entry) => entry[1]) - .filter(isTruthy) + .filter(check.isTruthy) : []; const versionTags = tags .map((tag) => { return semver.coerce(tag); }) - .filter(isTruthy); + .filter(check.isTruthy); const sortedVersionTags = semver.sort(versionTags); const latestVersionTag = sortedVersionTags.slice(-1)[0]; @@ -366,7 +359,9 @@ async function getGitCommitVersion(decrement: number, git: Readonly) ] = message ? safeMatch(message.trim(), /^\[([^\]]+)]/) : []; const changeMarker = - rawChangeMarker && isEnumValue(rawChangeMarker, ChangeMarker) ? rawChangeMarker : undefined; + rawChangeMarker && check.isEnumValue(rawChangeMarker, ChangeMarker) + ? rawChangeMarker + : undefined; return { version: latestVersionTag, @@ -412,7 +407,7 @@ async function updateVersions( version: string, monoRepoRootPath: string, monoPackages: ReadonlyArray>, - log: PluginLogger, + log: Logger, ) { const packagePaths = [ monoRepoRootPath, diff --git a/packages/scripts/package.json b/packages/scripts/package.json index f812462d..2448ecf8 100644 --- a/packages/scripts/package.json +++ b/packages/scripts/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/scripts", - "version": "13.3.12", + "version": "13.3.13", "private": true, "description": "Internal virmator scripts.", "keywords": [ @@ -27,13 +27,13 @@ "test:update": "npm start" }, "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", "mri": "^1.2.0", - "virmator": "^13.3.12" + "virmator": "^13.3.13" }, "devDependencies": { - "@types/node": "^22.5.4" + "@types/node": "^22.5.5" }, "engines": { "node": ">=22" diff --git a/packages/scripts/src/cli.ts b/packages/scripts/src/cli.ts index dba4b5b0..26c47d38 100644 --- a/packages/scripts/src/cli.ts +++ b/packages/scripts/src/cli.ts @@ -1,5 +1,4 @@ -import {extractErrorMessage} from '@augment-vir/common'; -import {log} from '@augment-vir/node-js'; +import {extractErrorMessage, log} from '@augment-vir/common'; import mri from 'mri'; import {checkPluginReadmes, writePluginReadmes} from './generate-plugin-readmes.js'; import {checkVirmatorReadme, writeVirmatorReadme} from './generate-virmator-readmes.js'; diff --git a/packages/scripts/src/generate-plugin-readmes.ts b/packages/scripts/src/generate-plugin-readmes.ts index 68289ecc..22d67e75 100644 --- a/packages/scripts/src/generate-plugin-readmes.ts +++ b/packages/scripts/src/generate-plugin-readmes.ts @@ -1,5 +1,4 @@ -import {awaitedForEach} from '@augment-vir/common'; -import {logColors} from '@augment-vir/node-js'; +import {awaitedForEach, logColors} from '@augment-vir/common'; import {generateHelpMessageFromPlugins, HelpMessageSyntax} from '@virmator/help'; import {readFile, writeFile} from 'node:fs/promises'; import {basename, join, relative, resolve} from 'node:path'; diff --git a/packages/scripts/src/generate-virmator-readmes.ts b/packages/scripts/src/generate-virmator-readmes.ts index 4bb3a62e..6decf97f 100644 --- a/packages/scripts/src/generate-virmator-readmes.ts +++ b/packages/scripts/src/generate-virmator-readmes.ts @@ -1,4 +1,4 @@ -import {logColors} from '@augment-vir/node-js'; +import {logColors} from '@augment-vir/common'; import {generateHelpMessageFromPlugins, HelpMessageSyntax} from '@virmator/help'; import {readFile, writeFile} from 'node:fs/promises'; import {join, resolve} from 'node:path'; diff --git a/packages/spellcheck/package.json b/packages/spellcheck/package.json index 9209e50a..328ed393 100644 --- a/packages/spellcheck/package.json +++ b/packages/spellcheck/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/spellcheck", - "version": "13.3.12", + "version": "13.3.13", "description": "Default spellcheck plugin for virmator", "keywords": [ "virmator", @@ -31,20 +31,21 @@ "test:update": "npm test update" }, "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", - "mri": "^1.2.0", - "run-time-assertions": "^1.5.2" + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", + "mri": "^1.2.0" }, "devDependencies": { - "@types/node": "^22.5.4", - "@virmator/plugin-testing": "^13.3.12", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", + "@virmator/plugin-testing": "^13.3.13", "c8": "^10.1.2", - "concurrently": "^9.0.0", + "concurrently": "^9.0.1", "cspell": "^8.14.2", "istanbul-smart-text-reporter": "^1.1.4", - "tsx": "^4.19.0" + "tsx": "^4.19.1" }, "engines": { "node": ">=22" diff --git a/packages/spellcheck/src/spellcheck.test.ts b/packages/spellcheck/src/spellcheck.test.ts index 2c53a9ae..386266de 100644 --- a/packages/spellcheck/src/spellcheck.test.ts +++ b/packages/spellcheck/src/spellcheck.test.ts @@ -1,6 +1,6 @@ +import {describe, it, type UniversalTestContext} from '@augment-vir/test'; import {testPlugin} from '@virmator/plugin-testing'; import {join, resolve} from 'node:path'; -import {describe, it, type TestContext} from 'node:test'; import {virmatorSpellcheckPlugin} from './spellcheck.js'; const packageDir = resolve(import.meta.dirname, '..'); @@ -10,7 +10,7 @@ const testFilesDir = join(packageDir, 'test-files'); describe(virmatorSpellcheckPlugin.name, () => { async function testSpellcheckPlugin( shouldPass: boolean, - context: TestContext, + context: UniversalTestContext, dir: string, extraCommand?: string, ) { diff --git a/packages/spellcheck/src/spellcheck.ts b/packages/spellcheck/src/spellcheck.ts index 57c97f34..868dcaed 100644 --- a/packages/spellcheck/src/spellcheck.ts +++ b/packages/spellcheck/src/spellcheck.ts @@ -1,9 +1,9 @@ -import {isTruthy} from '@augment-vir/common'; -import {toPosixPath} from '@augment-vir/node-js'; -import {defineVirmatorPlugin, NpmDepType, PackageType, VirmatorEnv} from '@virmator/core'; +import {check} from '@augment-vir/assert'; +import {RuntimeEnv} from '@augment-vir/common'; +import {toPosixPath} from '@augment-vir/node'; +import {defineVirmatorPlugin, NpmDepType, PackageType} from '@virmator/core'; import mri from 'mri'; import {join, relative} from 'node:path'; -import {isRunTimeType} from 'run-time-assertions'; /** A virmator package for checking spelling. */ export const virmatorSpellcheckPlugin = defineVirmatorPlugin( @@ -34,8 +34,8 @@ export const virmatorSpellcheckPlugin = defineVirmatorPlugin( copyToPath: 'cspell.config.cjs', copyFromPath: join('configs', 'cspell.config.cjs'), env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -51,8 +51,8 @@ export const virmatorSpellcheckPlugin = defineVirmatorPlugin( npmDeps: { cspell: { env: [ - VirmatorEnv.Node, - VirmatorEnv.Web, + RuntimeEnv.Node, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoRoot, @@ -71,7 +71,7 @@ export const virmatorSpellcheckPlugin = defineVirmatorPlugin( }, }); - const configPath = isRunTimeType(args.config, 'string') + const configPath = check.isString(args.config) ? args.config : toPosixPath( relative(cwd, join(cwdPackagePath, configs.spellcheck.configs.cspell.copyToPath)), @@ -92,7 +92,7 @@ export const virmatorSpellcheckPlugin = defineVirmatorPlugin( ...cliInputs.filteredArgs, filesArg, ] - .filter(isTruthy) + .filter(check.isTruthy) .join(' '); await runShellCommand(fullCommand); diff --git a/packages/test/package.json b/packages/test/package.json index 61bb49ad..efc3b369 100644 --- a/packages/test/package.json +++ b/packages/test/package.json @@ -1,6 +1,6 @@ { "name": "@virmator/test", - "version": "13.3.12", + "version": "13.3.13", "description": "Default test plugin for virmator.", "keywords": [ "virmator", @@ -33,16 +33,18 @@ "test:update": "npm test update" }, "dependencies": { - "@augment-vir/common": "^29.3.0", - "@augment-vir/node-js": "^29.3.0", - "@virmator/core": "^13.3.12", + "@augment-vir/assert": "^30.0.4", + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/core": "^13.3.13", "glob": "^11.0.0", "mri": "^1.2.0" }, "devDependencies": { + "@augment-vir/test": "^30.0.4", "@open-wc/testing": "^4.0.0", - "@types/mocha": "^10.0.7", - "@types/node": "^22.5.4", + "@types/mocha": "^10.0.8", + "@types/node": "^22.5.5", "@web/dev-server-esbuild": "^1.0.2", "@web/test-runner": "^0.19.0", "@web/test-runner-commands": "^0.9.0", @@ -50,7 +52,7 @@ "@web/test-runner-visual-regression": "^0.10.0", "c8": "^10.1.2", "istanbul-smart-text-reporter": "^1.1.4", - "tsx": "^4.19.0" + "tsx": "^4.19.1" }, "engines": { "node": ">=22" diff --git a/packages/test/src/test.test.ts b/packages/test/src/test.test.ts index 511f7344..6a62f904 100644 --- a/packages/test/src/test.test.ts +++ b/packages/test/src/test.test.ts @@ -1,7 +1,7 @@ import {collapseWhiteSpace, wrapString} from '@augment-vir/common'; +import {describe, it, type UniversalTestContext} from '@augment-vir/test'; import {testPlugin} from '@virmator/plugin-testing'; import {join, resolve, sep} from 'node:path'; -import {describe, it, type TestContext} from 'node:test'; import {virmatorTestPlugin} from './test.js'; const packageDir = resolve(import.meta.dirname, '..'); @@ -11,7 +11,7 @@ const testFilesDir = join(packageDir, 'test-files'); describe(virmatorTestPlugin.name, () => { async function testFormatPlugin( shouldPass: boolean, - context: TestContext, + context: UniversalTestContext, dir: string, extraCommand: string, ) { diff --git a/packages/test/src/test.ts b/packages/test/src/test.ts index 262f3a70..b43ba84c 100644 --- a/packages/test/src/test.ts +++ b/packages/test/src/test.ts @@ -1,12 +1,7 @@ -import {isTruthy} from '@augment-vir/common'; -import {interpolationSafeWindowsPath, toPosixPath} from '@augment-vir/node-js'; -import { - defineVirmatorPlugin, - NpmDepType, - PackageType, - VirmatorEnv, - VirmatorNoTraceError, -} from '@virmator/core'; +import {check} from '@augment-vir/assert'; +import {RuntimeEnv} from '@augment-vir/common'; +import {interpolationSafeWindowsPath, toPosixPath} from '@augment-vir/node'; +import {defineVirmatorPlugin, NpmDepType, PackageType, VirmatorNoTraceError} from '@virmator/core'; import {TestRunnerConfig} from '@web/test-runner'; import {glob} from 'glob'; import mri from 'mri'; @@ -76,7 +71,7 @@ export const virmatorTestPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'web-test-runner.config.mjs'), copyToPath: join('configs', 'web-test-runner.config.mjs'), env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoPackage, @@ -89,7 +84,7 @@ export const virmatorTestPlugin = defineVirmatorPlugin( npmDeps: { '@open-wc/testing': { env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoPackage, @@ -99,7 +94,7 @@ export const virmatorTestPlugin = defineVirmatorPlugin( }, '@web/dev-server-esbuild': { env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoPackage, @@ -109,7 +104,7 @@ export const virmatorTestPlugin = defineVirmatorPlugin( }, '@web/test-runner-commands': { env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoPackage, @@ -119,7 +114,7 @@ export const virmatorTestPlugin = defineVirmatorPlugin( }, '@web/test-runner-playwright': { env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoPackage, @@ -129,7 +124,7 @@ export const virmatorTestPlugin = defineVirmatorPlugin( }, '@web/test-runner-visual-regression': { env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoPackage, @@ -139,7 +134,7 @@ export const virmatorTestPlugin = defineVirmatorPlugin( }, '@web/test-runner': { env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoPackage, @@ -149,7 +144,7 @@ export const virmatorTestPlugin = defineVirmatorPlugin( }, 'istanbul-smart-text-reporter': { env: [ - VirmatorEnv.Web, + RuntimeEnv.Web, ], packageType: [ PackageType.MonoPackage, @@ -191,7 +186,7 @@ export const virmatorTestPlugin = defineVirmatorPlugin( copyFromPath: join('configs', 'c8.config.json'), copyToPath: join('configs', 'c8.config.json'), env: [ - VirmatorEnv.Node, + RuntimeEnv.Node, ], packageType: [ PackageType.MonoPackage, @@ -203,7 +198,7 @@ export const virmatorTestPlugin = defineVirmatorPlugin( npmDeps: { c8: { env: [ - VirmatorEnv.Node, + RuntimeEnv.Node, ], packageType: [ PackageType.MonoPackage, @@ -213,7 +208,7 @@ export const virmatorTestPlugin = defineVirmatorPlugin( }, 'istanbul-smart-text-reporter': { env: [ - VirmatorEnv.Node, + RuntimeEnv.Node, ], packageType: [ PackageType.MonoPackage, @@ -223,7 +218,7 @@ export const virmatorTestPlugin = defineVirmatorPlugin( }, '@types/node': { env: [ - VirmatorEnv.Node, + RuntimeEnv.Node, ], packageType: [ PackageType.MonoPackage, @@ -307,7 +302,7 @@ export const virmatorTestPlugin = defineVirmatorPlugin( includeCoverage ? '--coverage' : '', ...filteredArgs, ] - .filter(isTruthy) + .filter(check.isTruthy) .join(' '); await runShellCommand(testCommand); @@ -350,7 +345,7 @@ export const virmatorTestPlugin = defineVirmatorPlugin( ...updateSnapshotsArgs, ...filesArgs, ] - .filter(isTruthy) + .filter(check.isTruthy) .join(' '); await runShellCommand(testCommand, { diff --git a/packages/test/test-files/node-tests/src/bad.test.ts b/packages/test/test-files/node-tests/src/bad.test.ts index daafd977..e24781a7 100644 --- a/packages/test/test-files/node-tests/src/bad.test.ts +++ b/packages/test/test-files/node-tests/src/bad.test.ts @@ -1,8 +1,8 @@ -import assert from 'node:assert/strict'; -import {describe, it} from 'node:test'; +import {assert} from '@augment-vir/assert'; +import {describe, it} from '@augment-vir/test'; describe('fake failing test', () => { it('fails a thing', () => { - assert.strictEqual(true, false); + assert.strictEquals(true, false); }); }); diff --git a/packages/test/test-files/node-tests/src/good.test.ts b/packages/test/test-files/node-tests/src/good.test.ts index eeca2359..f1f9a812 100644 --- a/packages/test/test-files/node-tests/src/good.test.ts +++ b/packages/test/test-files/node-tests/src/good.test.ts @@ -1,8 +1,8 @@ -import assert from 'node:assert/strict'; -import {describe, it} from 'node:test'; +import {assert} from '@augment-vir/assert'; +import {describe, it} from '@augment-vir/test'; describe('fake test', () => { it('tests a thing', () => { - assert.strictEqual(true, true); + assert.strictEquals(true, true); }); }); diff --git a/packages/virmator/package.json b/packages/virmator/package.json index 33fac0ef..4d49e64f 100644 --- a/packages/virmator/package.json +++ b/packages/virmator/package.json @@ -1,6 +1,6 @@ { "name": "virmator", - "version": "13.3.12", + "version": "13.3.13", "description": "Handle common package configs, commands, and dependencies.", "keywords": [ "automation", @@ -37,23 +37,25 @@ "test:update": "npm test update" }, "dependencies": { - "@augment-vir/node-js": "^29.3.0", - "@virmator/compile": "^13.3.12", - "@virmator/core": "^13.3.12", - "@virmator/deps": "^13.3.12", - "@virmator/docs": "^13.3.12", - "@virmator/format": "^13.3.12", - "@virmator/frontend": "^13.3.12", - "@virmator/help": "^13.3.12", - "@virmator/init": "^13.3.12", - "@virmator/lint": "^13.3.12", - "@virmator/publish": "^13.3.12", - "@virmator/spellcheck": "^13.3.12", - "@virmator/test": "^13.3.12", - "tsx": "^4.19.0" + "@augment-vir/common": "^30.0.4", + "@augment-vir/node": "^30.0.4", + "@virmator/compile": "^13.3.13", + "@virmator/core": "^13.3.13", + "@virmator/deps": "^13.3.13", + "@virmator/docs": "^13.3.13", + "@virmator/format": "^13.3.13", + "@virmator/frontend": "^13.3.13", + "@virmator/help": "^13.3.13", + "@virmator/init": "^13.3.13", + "@virmator/lint": "^13.3.13", + "@virmator/publish": "^13.3.13", + "@virmator/spellcheck": "^13.3.13", + "@virmator/test": "^13.3.13", + "tsx": "^4.19.1" }, "devDependencies": { - "@types/node": "^22.5.4", + "@augment-vir/test": "^30.0.4", + "@types/node": "^22.5.5", "c8": "^10.1.2", "istanbul-smart-text-reporter": "^1.1.4" }, diff --git a/packages/virmator/src/cli.ts b/packages/virmator/src/cli.ts index 3a9105d0..24f285fa 100755 --- a/packages/virmator/src/cli.ts +++ b/packages/virmator/src/cli.ts @@ -1,16 +1,10 @@ #!/usr/bin/env -S npx tsx -import { - createPluginLogger, - executeVirmatorCommand, - hideNoTraceTraces, - VirmatorNoTraceError, -} from '@virmator/core'; +import {log} from '@augment-vir/common'; +import {executeVirmatorCommand, hideNoTraceTraces, VirmatorNoTraceError} from '@virmator/core'; import {fileURLToPath} from 'node:url'; import {defaultVirmatorPlugins} from './index.js'; -const log = createPluginLogger(process); - executeVirmatorCommand({ cliCommand: process.argv, plugins: defaultVirmatorPlugins, diff --git a/packages/virmator/src/tests/init.test.ts b/packages/virmator/src/tests/init.test.ts index e8373c71..0d6ff470 100644 --- a/packages/virmator/src/tests/init.test.ts +++ b/packages/virmator/src/tests/init.test.ts @@ -1,7 +1,8 @@ -import {PackageType, VirmatorEnv} from '@virmator/core'; +import {RuntimeEnv} from '@augment-vir/common'; +import {describe, it, type UniversalTestContext} from '@augment-vir/test'; +import {PackageType} from '@virmator/core'; import {virmatorInitPlugin} from '@virmator/init'; import {join, resolve} from 'node:path'; -import {describe, it, type TestContext} from 'node:test'; import {testVirmator} from './test-virmator.mock.js'; const packageDir = resolve(import.meta.dirname, '..', '..'); @@ -11,9 +12,9 @@ const testFilesDir = join(packageDir, 'test-files'); describe(virmatorInitPlugin.name, () => { async function testDocsPlugin( shouldPass: boolean, - context: TestContext, + context: UniversalTestContext, dir: string, - env: VirmatorEnv | undefined, + env: RuntimeEnv | undefined, packageType: PackageType | undefined, ) { await testVirmator(shouldPass, context, `init ${env || ''} ${packageType || ''}`, dir, { @@ -37,7 +38,7 @@ describe(virmatorInitPlugin.name, () => { false, context, join(testFilesDir, 'top-package'), - VirmatorEnv.Node, + RuntimeEnv.Node, undefined, ); }); @@ -46,7 +47,7 @@ describe(virmatorInitPlugin.name, () => { true, context, join(testFilesDir, 'top-package'), - VirmatorEnv.Node, + RuntimeEnv.Node, PackageType.TopPackage, ); }); @@ -55,7 +56,7 @@ describe(virmatorInitPlugin.name, () => { true, context, join(testFilesDir, 'top-package'), - VirmatorEnv.Web, + RuntimeEnv.Web, PackageType.TopPackage, ); }); @@ -64,7 +65,7 @@ describe(virmatorInitPlugin.name, () => { true, context, join(testFilesDir, 'mono-root'), - VirmatorEnv.Node, + RuntimeEnv.Node, PackageType.MonoRoot, ); }); @@ -73,7 +74,7 @@ describe(virmatorInitPlugin.name, () => { true, context, join(testFilesDir, 'mono-root'), - VirmatorEnv.Web, + RuntimeEnv.Web, PackageType.MonoRoot, ); }); @@ -82,7 +83,7 @@ describe(virmatorInitPlugin.name, () => { true, context, join(testFilesDir, 'mono-package'), - VirmatorEnv.Web, + RuntimeEnv.Web, PackageType.MonoPackage, ); }); @@ -91,7 +92,7 @@ describe(virmatorInitPlugin.name, () => { true, context, join(testFilesDir, 'mono-package'), - VirmatorEnv.Node, + RuntimeEnv.Node, PackageType.MonoPackage, ); }); diff --git a/packages/virmator/src/tests/init.test.ts.snapshot b/packages/virmator/src/tests/init.test.ts.snapshot index dfc5b4b8..3f81aba2 100644 --- a/packages/virmator/src/tests/init.test.ts.snapshot +++ b/packages/virmator/src/tests/init.test.ts.snapshot @@ -25,7 +25,7 @@ exports[`Init > errors without package type 1`] = ` exports[`Init > initializes a mono-package node package 1`] = ` { "logs": { - "stdout": "Installing tsx@4.19.0...\\nCopied .npmignore\\nCopied c8.config.json\\nCopied LICENSE-CC0\\nCopied LICENSE-MIT\\nCopied package.json\\nCopied tsconfig.json\\nCopied typedoc.config.ts\\ninit finished." + "stdout": "Installing tsx@4.19.1...\\nCopied .npmignore\\nCopied c8.config.json\\nCopied LICENSE-CC0\\nCopied LICENSE-MIT\\nCopied package.json\\nCopied tsconfig.json\\nCopied typedoc.config.ts\\ninit finished." }, "cwd": "packages/virmator/test-files/mono-package", "contentsDiff": { @@ -126,7 +126,7 @@ exports[`Init > initializes a mono-root web package 1`] = ` exports[`Init > initializes a top-level node package 1`] = ` { "logs": { - "stdout": "Installing tsx@4.19.0...\\nCopied .gitattributes\\nCopied .gitignore\\nCopied .npmignore\\nCopied .nvmrc\\nCopied .prettierignore\\nCopied build-for-gh-pages.yml\\nCopied c8.config.json\\nCopied cspell.config.cjs\\nCopied dep-cruiser.config.cts\\nCopied eslint.config.mjs\\nCopied LICENSE-CC0\\nCopied LICENSE-MIT\\nCopied ncu.config.ts\\nCopied package.json\\nCopied prettier.config.mjs\\nCopied settings.json\\nCopied tagged-release.yml\\nCopied tests.yml\\nCopied tsconfig.json\\nCopied typedoc.config.ts\\ninit finished." + "stdout": "Installing tsx@4.19.1...\\nCopied .gitattributes\\nCopied .gitignore\\nCopied .npmignore\\nCopied .nvmrc\\nCopied .prettierignore\\nCopied build-for-gh-pages.yml\\nCopied c8.config.json\\nCopied cspell.config.cjs\\nCopied dep-cruiser.config.cts\\nCopied eslint.config.mjs\\nCopied LICENSE-CC0\\nCopied LICENSE-MIT\\nCopied ncu.config.ts\\nCopied package.json\\nCopied prettier.config.mjs\\nCopied settings.json\\nCopied tagged-release.yml\\nCopied tests.yml\\nCopied tsconfig.json\\nCopied typedoc.config.ts\\ninit finished." }, "cwd": "packages/virmator/test-files/top-package", "contentsDiff": { diff --git a/packages/virmator/src/tests/test-virmator.mock.ts b/packages/virmator/src/tests/test-virmator.mock.ts index 6740519a..8e23aa58 100644 --- a/packages/virmator/src/tests/test-virmator.mock.ts +++ b/packages/virmator/src/tests/test-virmator.mock.ts @@ -1,10 +1,10 @@ +import {type UniversalTestContext} from '@augment-vir/test'; import {testPlugin, TestPluginOptions} from '@virmator/plugin-testing'; -import {TestContext} from 'node:test'; import {defaultVirmatorPlugins} from '../index.js'; export async function testVirmator( shouldPass: boolean, - context: TestContext, + context: UniversalTestContext, command: string, cwd: string, testOptions: TestPluginOptions = {},