diff --git a/.github/workflows/bring-it.yaml b/.github/workflows/bring-it.yaml index 0f3d2c7..d788334 100644 --- a/.github/workflows/bring-it.yaml +++ b/.github/workflows/bring-it.yaml @@ -13,7 +13,7 @@ jobs: uses: airkro/bring-it@actions with: npm-token: ${{ secrets.NPM_TOKEN }} - publish-command: npx @bring-it/npm@0.2.0 npm + publish-command: npx @bring-it/npm@0.2.10 npm custom-command: | cd packages mkdir -p sftp/dist diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..c909bdc --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +enable-pre-post-scripts = true +engine-strict = true diff --git a/package-lock.json b/package-lock.json index be41de3..7a0facb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,17 +14,17 @@ ], "devDependencies": { "@nice-move/cli": "^0.10.11", - "@nice-move/eslint-config-base": "^0.9.17", - "@nice-move/prettier-config": "^0.9.2", - "best-shot": "^0.4.1", - "eslint": "^8.46.0", - "garou": "^0.6.12", - "playwright-core": "^1.36.2", - "prettier": "^3.0.0" + "@nice-move/eslint-config-base": "^0.9.20", + "@nice-move/prettier-config": "^0.9.6", + "best-shot": "^0.4.2", + "eslint": "^8.50.0", + "garou": "^0.6.14", + "playwright-core": "^1.38.1", + "prettier": "^3.0.3" }, "engines": { - "node": ">=18.0.0 || >=19.0.0 || ^16.15.0", - "npm": ">=8.1.0 <8.13.0 || ^9.4.0" + "node": "^16.17.0 || ^18.0.0", + "npm": "^9.4.0" } }, "hacks/cpu-features": { @@ -53,12 +53,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz", - "integrity": "sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.10", + "@babel/highlight": "^7.22.13", "chalk": "^2.4.2" }, "engines": { @@ -66,30 +66,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", + "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", - "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz", + "integrity": "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.11", - "@babel/parser": "^7.22.11", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.22.20", + "@babel/helpers": "^7.22.15", + "@babel/parser": "^7.22.16", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.20", + "@babel/types": "^7.22.19", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -105,9 +105,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.11.tgz", - "integrity": "sha512-YjOYZ3j7TjV8OhLW6NCtyg8G04uStATEUe5eiLuCZaXz2VSDQ3dsAtm2D+TuQyAqNMUK2WacGo0/uma9Pein1w==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz", + "integrity": "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==", "dev": true, "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", @@ -123,12 +123,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", - "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", + "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.10", + "@babel/types": "^7.22.15", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -138,13 +138,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", "browserslist": "^4.21.9", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -154,9 +154,9 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" @@ -188,28 +188,28 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz", + "integrity": "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-simple-access": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -261,44 +261,44 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", - "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", + "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz", - "integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, @@ -307,9 +307,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.11.tgz", - "integrity": "sha512-R5zb8eJIBPJriQtbH/htEQy4k7E2dHWlD2Y2VT07JCzwYZHBxV5ZYtM0UhXSNMT74LyxuM+b1jdL7pSesXbC/g==", + "version": "7.22.16", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", + "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -334,33 +334,33 @@ } }, "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.11.tgz", - "integrity": "sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.20.tgz", + "integrity": "sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-environment-visitor": "^7.22.5", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.22.5", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.11", - "@babel/types": "^7.22.11", + "@babel/parser": "^7.22.16", + "@babel/types": "^7.22.19", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -369,13 +369,13 @@ } }, "node_modules/@babel/types": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz", - "integrity": "sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==", + "version": "7.22.19", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", + "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.19", "to-fast-properties": "^2.0.0" }, "engines": { @@ -470,9 +470,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.22.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -497,18 +497,18 @@ } }, "node_modules/@eslint/js": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", - "integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", + "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", - "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -613,25 +613,25 @@ } }, "node_modules/@nice-move/eslint-config-base": { - "version": "0.9.18", - "resolved": "https://registry.npmjs.org/@nice-move/eslint-config-base/-/eslint-config-base-0.9.18.tgz", - "integrity": "sha512-rteh3AKRgQCd95nfRrwPvj2A8jtYFzaBqTkGB/G+rmdxvHRqWxW9T2A6pTgbn1BFmEs6sEofGLy+wNEJULqWOQ==", + "version": "0.9.20", + "resolved": "https://registry.npmjs.org/@nice-move/eslint-config-base/-/eslint-config-base-0.9.20.tgz", + "integrity": "sha512-wQIiicllgehIWh7+xFmzqjhZxwRUubSJ8HyTVfsmNlbYpqHfl8u3sFk4nxn9vvMptTuJPP15Q4W5LyMIkwaw+Q==", "dev": true, "dependencies": { - "@babel/core": "^7.22.9", - "@babel/eslint-parser": "^7.22.9", + "@babel/core": "^7.22.20", + "@babel/eslint-parser": "^7.22.15", "@babel/plugin-syntax-import-attributes": "^7.22.5", "@nice-move/eslint-plugin-html": "0.0.0-beta.3", - "@typescript-eslint/eslint-plugin": "^6.2.1", - "@typescript-eslint/parser": "^6.2.1", + "@typescript-eslint/eslint-plugin": "^6.7.2", + "@typescript-eslint/parser": "^6.7.2", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-eslint-comments": "^3.2.0", - "eslint-plugin-import": "^2.28.0", + "eslint-plugin-import": "^2.28.1", "eslint-plugin-markdown": "^3.0.1", - "eslint-plugin-n": "^16.0.1", + "eslint-plugin-n": "^16.1.0", "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-sonarjs": "^0.20.0", + "eslint-plugin-sonarjs": "^0.21.0", "eslint-plugin-unicorn": "^48.0.1", "espree": "^9.6.1", "resolve.exports": "^2.0.2", @@ -641,7 +641,7 @@ "node": "^16.15.0 || ^18.12.0" }, "peerDependencies": { - "eslint": "^8.46.0" + "eslint": "^8.48.0" } }, "node_modules/@nice-move/eslint-plugin-html": { @@ -660,13 +660,13 @@ } }, "node_modules/@nice-move/prettier-config": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/@nice-move/prettier-config/-/prettier-config-0.9.3.tgz", - "integrity": "sha512-6OeWjVW8ppz9gUeEnIjEl6K3RE0GOQnQk4p3HA8We66fXu4hzcuT5OXVwf30FdSIvdxSBHeE/dwXdyIJt6gaNA==", + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@nice-move/prettier-config/-/prettier-config-0.9.6.tgz", + "integrity": "sha512-kKqSkQ0ZKQbeWDVuLGa8pYlkoZrPu27xbEhk64WHHAQciW67JPVZh8I+MF+21753gGw//Hz65+UbG1dO97lCTQ==", "dev": true, "dependencies": { "@nice-move/prettier-plugin-package-json": "^0.7.5", - "@prettier/plugin-xml": "^3.2.0", + "@prettier/plugin-xml": "^3.2.1", "prettier-plugin-ini": "^1.1.0", "settingz": "^0.2.0" }, @@ -731,9 +731,9 @@ } }, "node_modules/@prettier/plugin-xml": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@prettier/plugin-xml/-/plugin-xml-3.2.0.tgz", - "integrity": "sha512-1SgnoMIOLjGcKqstr6gmly7J6VoVSXULz0kMDimBE36yj59GrNvaOBPjoeYUmcpU3/IwLiCIJRaCX8qiVSvy/A==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@prettier/plugin-xml/-/plugin-xml-3.2.1.tgz", + "integrity": "sha512-DvwnQPf8FsczapBVDm54IhR+Pryt3DbPZSNtUb9gOuFtgoUUPbPN69f3nQBMF5BEqh4ZjZjTaHBmsVno3UnAXQ==", "dev": true, "dependencies": { "@xml-tools/parser": "^1.0.11" @@ -802,15 +802,15 @@ "dev": true }, "node_modules/@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true }, "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", "dev": true }, "node_modules/@types/ssh2": { @@ -829,16 +829,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.4.1.tgz", - "integrity": "sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.2.tgz", + "integrity": "sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.4.1", - "@typescript-eslint/type-utils": "6.4.1", - "@typescript-eslint/utils": "6.4.1", - "@typescript-eslint/visitor-keys": "6.4.1", + "@typescript-eslint/scope-manager": "6.7.2", + "@typescript-eslint/type-utils": "6.7.2", + "@typescript-eslint/utils": "6.7.2", + "@typescript-eslint/visitor-keys": "6.7.2", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -897,15 +897,15 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.4.1.tgz", - "integrity": "sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==", + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.3.tgz", + "integrity": "sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.4.1", - "@typescript-eslint/types": "6.4.1", - "@typescript-eslint/typescript-estree": "6.4.1", - "@typescript-eslint/visitor-keys": "6.4.1", + "@typescript-eslint/scope-manager": "6.7.3", + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/typescript-estree": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3", "debug": "^4.3.4" }, "engines": { @@ -924,14 +924,162 @@ } } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.3.tgz", + "integrity": "sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.3.tgz", + "integrity": "sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.3.tgz", + "integrity": "sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.3", + "@typescript-eslint/visitor-keys": "6.7.3", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.3.tgz", + "integrity": "sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.3", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "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/@typescript-eslint/parser/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz", - "integrity": "sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.2.tgz", + "integrity": "sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.4.1", - "@typescript-eslint/visitor-keys": "6.4.1" + "@typescript-eslint/types": "6.7.2", + "@typescript-eslint/visitor-keys": "6.7.2" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -942,13 +1090,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.4.1.tgz", - "integrity": "sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.2.tgz", + "integrity": "sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.4.1", - "@typescript-eslint/utils": "6.4.1", + "@typescript-eslint/typescript-estree": "6.7.2", + "@typescript-eslint/utils": "6.7.2", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -969,9 +1117,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz", - "integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.2.tgz", + "integrity": "sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -982,13 +1130,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz", - "integrity": "sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.2.tgz", + "integrity": "sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.4.1", - "@typescript-eslint/visitor-keys": "6.4.1", + "@typescript-eslint/types": "6.7.2", + "@typescript-eslint/visitor-keys": "6.7.2", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1071,17 +1219,17 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.4.1.tgz", - "integrity": "sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.2.tgz", + "integrity": "sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.4.1", - "@typescript-eslint/types": "6.4.1", - "@typescript-eslint/typescript-estree": "6.4.1", + "@typescript-eslint/scope-manager": "6.7.2", + "@typescript-eslint/types": "6.7.2", + "@typescript-eslint/typescript-estree": "6.7.2", "semver": "^7.5.4" }, "engines": { @@ -1129,12 +1277,12 @@ "dev": true }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz", - "integrity": "sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.2.tgz", + "integrity": "sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.4.1", + "@typescript-eslint/types": "6.7.2", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -1579,16 +1727,16 @@ } }, "node_modules/best-shot": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/best-shot/-/best-shot-0.4.1.tgz", - "integrity": "sha512-NXYFBVEY95xljKG9TJu0S5F9XJSvqlEHpCVsssHy1NbLGHSB6OwFjirSAF+Jnt7Ov2omcRA2H/G3xWTDjTaKMQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/best-shot/-/best-shot-0.4.2.tgz", + "integrity": "sha512-f38fjkJlSqPDc7No46RD+CmHAIoaQ7NyUQXkQSoZ2s0VC2BkmJNiyCjSD4cx9YNJIz2jgruFJDNd3o+Aa8BZdg==", "dev": true, "dependencies": { "@best-shot/no-cache-loader": "0.0.0", - "browserslist": "^4.21.9", - "terser": "^5.18.2", + "browserslist": "^4.21.10", + "terser": "^5.19.4", "terser-webpack-plugin": "^5.3.9", - "webpack": "^5.88.1", + "webpack": "^5.88.2", "yaml-loader": "^0.8.0" }, "bin": { @@ -2262,16 +2410,16 @@ } }, "node_modules/eslint": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", - "integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", + "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.48.0", - "@humanwhocodes/config-array": "^0.11.10", + "@eslint/js": "8.50.0", + "@humanwhocodes/config-array": "^0.11.11", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.12.4", @@ -2590,14 +2738,15 @@ } }, "node_modules/eslint-plugin-n": { - "version": "16.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.0.2.tgz", - "integrity": "sha512-Y66uDfUNbBzypsr0kELWrIz+5skicECrLUqlWuXawNSLUq3ltGlCwu6phboYYOTSnoTdHgTLrc+5Ydo6KjzZog==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.1.0.tgz", + "integrity": "sha512-3wv/TooBst0N4ND+pnvffHuz9gNPmk/NkLwAxOt2JykTl/hcuECe6yhTtLJcZjIxtZwN+GX92ACp/QTLpHA3Hg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "builtins": "^5.0.1", "eslint-plugin-es-x": "^7.1.0", + "get-tsconfig": "^4.7.0", "ignore": "^5.2.4", "is-core-module": "^2.12.1", "minimatch": "^3.1.2", @@ -2660,9 +2809,9 @@ } }, "node_modules/eslint-plugin-sonarjs": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.20.0.tgz", - "integrity": "sha512-BRhZ7BY/oTr6DDaxvx58ReTg7R+J8T+Y2ZVGgShgpml25IHBTIG7EudUtHuJD1zhtMgUEt59x3VNvUQRo2LV6w==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.21.0.tgz", + "integrity": "sha512-oezUDfFT5S6j3rQheZ4DLPrbetPmMS7zHIKWGHr0CM3g5JgyZroz1FpIKa4jV83NsGpmgIeagpokWDKIJzRQmw==", "dev": true, "engines": { "node": ">=14" @@ -2875,9 +3024,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.22.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", + "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -3021,23 +3170,23 @@ } }, "node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", - "signal-exit": "^3.0.7", + "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" }, "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + "node": ">=16.17" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" @@ -3203,15 +3352,15 @@ } }, "node_modules/garou": { - "version": "0.6.12", - "resolved": "https://registry.npmjs.org/garou/-/garou-0.6.12.tgz", - "integrity": "sha512-Fln09mheU3uXdXro1D7yWijFj75Pwq5MjazPiNctxKSm5z0TsatwC5vXVDecmLUp3qJgVmblHRl6QjlTdsNpkQ==", + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/garou/-/garou-0.6.14.tgz", + "integrity": "sha512-dNfVK2vqL5bNksX1OzZ0ZjI3MmFLObjAco3pZR6oYotLe1AQMWoGCDV2ori0DupBRuliv1TKYqLeLbUqSqU38g==", "dev": true, "dependencies": { - "@typescript-eslint/parser": "^6.1.0", + "@typescript-eslint/parser": "^6.7.3", "@yarnpkg/lockfile": "^1.1.0", "eslint-module-utils": "^2.8.0", - "flat-cache": "^3.0.4", + "flat-cache": "^3.1.0", "vue-eslint-parser": "^9.3.1", "write-file-atomic": "^5.0.1" }, @@ -3222,8 +3371,8 @@ "node": ">=19.0.0 || ^16.15.0 || ^18.12.0" }, "peerDependencies": { - "eslint": "^8.45.0", - "typescript": "^4.9.5 || ^5.1.6" + "eslint": "^8.50.0", + "typescript": "^4.9.5 || ^5.2.2" }, "peerDependenciesMeta": { "typescript": { @@ -3264,12 +3413,12 @@ } }, "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3291,6 +3440,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -3492,12 +3653,12 @@ "dev": true }, "node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, "engines": { - "node": ">=14.18.0" + "node": ">=16.17.0" } }, "node_modules/ignore": { @@ -4685,16 +4846,16 @@ } }, "node_modules/p-retry": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-5.1.2.tgz", - "integrity": "sha512-couX95waDu98NfNZV+i/iLt+fdVxmI7CbrrdC2uDWfPdUAApyxT4wmDlyOtR5KtTDmkDO0zDScDjDou9YHhd9g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.0.0.tgz", + "integrity": "sha512-6NuuXu8Upembd4sNdo4PRbs+M6aHgBTrFE6lkH0YKjVzne3cDW4gkncB98ty/bkMxLxLVNeD5bX9FyWjM7WZ+A==", "dev": true, "dependencies": { - "@types/retry": "0.12.1", + "@types/retry": "0.12.2", "retry": "^0.13.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=16.17" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4840,9 +5001,9 @@ } }, "node_modules/playwright-core": { - "version": "1.37.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.37.1.tgz", - "integrity": "sha512-17EuQxlSIYCmEMwzMqusJ2ztDgJePjrbttaefgdsiqeLWidjYz9BxXaTaZWxH1J95SHGk6tjE+dwgWILJoUZfA==", + "version": "1.38.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.38.1.tgz", + "integrity": "sha512-tQqNFUKa3OfMf4b2jQ7aGLB8o9bS3bOY0yMEtldtC2+spf8QXG9zvXLTXUeRsoNuxEYMgLYR+NXfAa1rjKRcrg==", "bin": { "playwright-core": "cli.js" }, @@ -4884,9 +5045,9 @@ } }, "node_modules/prettier": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.2.tgz", - "integrity": "sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -5133,6 +5294,15 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/resolve.exports": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", @@ -5363,10 +5533,16 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/slash": { "version": "4.0.0", @@ -5431,9 +5607,9 @@ "dev": true }, "node_modules/ssh-config": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ssh-config/-/ssh-config-4.3.0.tgz", - "integrity": "sha512-VOsrKxYnes0A3NGzzuOAy2yB36gv+hie77ltuqLXOWRiYrmAWI9WrKAKJ2+/4f+6vx4eEDSnGYGaCbyqX8aHxg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ssh-config/-/ssh-config-4.4.0.tgz", + "integrity": "sha512-W+AAUSsBirHyXqYBUtZ4l0FBAPH/jnklA0KPBfBuBiJVD8LT4LoQST4MCGPziZJYTVvzFmrgrr7j2JWyl/rPIg==", "dev": true }, "node_modules/ssh2": { @@ -5712,9 +5888,9 @@ } }, "node_modules/terser": { - "version": "5.19.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", - "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", + "version": "5.20.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz", + "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -5790,9 +5966,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.2.tgz", - "integrity": "sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", "dev": true, "engines": { "node": ">=16.13.0" @@ -6301,18 +6477,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -6389,7 +6553,7 @@ }, "packages/npm": { "name": "@bring-it/npm", - "version": "0.2.10", + "version": "0.3.1", "license": "MIT", "dependencies": { "yargs": "^17.7.2" @@ -6400,14 +6564,14 @@ "devDependencies": { "@bring-it/utils": "*", "cheetor": "^0.13.0", - "execa": "^7.2.0", + "execa": "^8.0.1", "is-url": "^1.2.4", "semver": "^7.5.4", "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": "^16.15.0 || ^18.0.0", - "npm": "^8.13.0 || ^9.4.0" + "node": "^16.17.0 || ^18.0.0 || ^20.0.0", + "npm": ">=8.13.0" } }, "packages/npm/node_modules/lru-cache": { @@ -6468,7 +6632,7 @@ }, "packages/sftp": { "name": "@bring-it/sftp", - "version": "0.1.2", + "version": "0.1.4", "license": "MIT", "dependencies": { "yargs": "^17.7.2" @@ -6483,11 +6647,11 @@ "lodash": "^4.17.21", "node-ssh": "^13.1.0", "p-all": "^5.0.0", - "p-retry": "^5.1.2", + "p-retry": "^6.0.0", "p-series": "^3.0.0", "p-timeout": "^6.1.2", "slash": "^5.1.0", - "ssh-config": "^4.2.1" + "ssh-config": "^4.4.0" }, "engines": { "node": "^16.15.0 || ^18.0.0", diff --git a/package.json b/package.json index ffdf7b5..7da9428 100644 --- a/package.json +++ b/package.json @@ -26,18 +26,19 @@ ], "devDependencies": { "@nice-move/cli": "^0.10.11", - "@nice-move/eslint-config-base": "^0.9.17", - "@nice-move/prettier-config": "^0.9.2", - "best-shot": "^0.4.1", - "eslint": "^8.46.0", - "garou": "^0.6.12", - "playwright-core": "^1.36.2", - "prettier": "^3.0.0" + "@nice-move/eslint-config-base": "^0.9.20", + "@nice-move/prettier-config": "^0.9.6", + "best-shot": "^0.4.2", + "eslint": "^8.50.0", + "garou": "^0.6.14", + "playwright-core": "^1.38.1", + "prettier": "^3.0.3" }, "engines": { - "node": ">=18.0.0 || >=19.0.0 || ^16.15.0", - "npm": ">=8.1.0 <8.13.0 || ^9.4.0" + "node": "^16.17.0 || ^18.0.0", + "npm": "^9.4.0" }, + "packageManager": "npm@9.8.1", "eslintConfig": { "extends": "@nice-move/eslint-config-base" }, diff --git a/packages/npm/README.md b/packages/npm/README.md index 2a9d28e..9a25217 100644 --- a/packages/npm/README.md +++ b/packages/npm/README.md @@ -26,29 +26,32 @@ npm x bring-it npm ## Compare with others +- ✔ supported +- ❌ not support +- 🔶 I don't need that +- 🔷 I think other tools should handle that + | Features | bring-it | [np] | [release-it] | [changesets] | | :---------------------- | :------: | :--: | :----------: | :----------: | -| Preview mode / Dry Run | ✔ | ✔ | ✔ | ✔ | -| NPM publish | ✔ | ✔ | ✔ | ✔ | -| Git support limit | ✔ | ✔ | ❌ | ✔ | -| Git branch limit | ✔ | ✔ | ✔ | ❌ | -| Git dirty check | ✔ | ✔ | ✔ | ❌ | -| Engines check | ✔ | ✔ | ❌ | ❌ | -| Git root limit | ✔ | ❌ | ❌ | ✔ | -| Monorepo support | ✔ | ❌ | ❌ | ✔ | -| Generate changelog | ❌ | ❌ | ✔ | ✔ | -| No unpulled changes | ❌ | ✔ | ❌ | ❌ | -| Revert change | ❌ | ✔ | ❌ | ❌ | -| Auto Run tests | ❌ | ✔ | ❌ | ❌ | -| Install dependencies | ❌ | ✔ | ❌ | ❌ | -| 2-factor authentication | ❌ | ✔ | ❌ | ❌ | -| Warns extraneous files | ❌ | ✔ | ❌ | ❌ | -| Create pre-release | ❌ | ✔ | ✔ | ✔ | -| Bump versions | ❌ | ✔ | ✔ | ✔ | -| Create Git release, tag | ❌ | ✔ | ✔ | ✔ | -| Interactive UI | ❌ | ✔ | ✔ | ✔ | -| Push releases and tags | ❌ | ✔ | ✔ | ✔ | +| Preview mode / Dry Run | ✔ | ✔ | ✔ | ✔ | +| Git support limit | ✔ | ✔ | ❌ | ✔ | +| Git branch limit | ✔ | ✔ | ✔ | ❌ | +| Git dirty check | ✔ | ✔ | ✔ | ❌ | +| Engines check | ✔ | ✔ | ❌ | ❌ | +| Git root limit | ✔ | ❌ | ❌ | ✔ | +| Monorepo support | ✔ | ❌ | ❌ | ✔ | +| PublishConfig limit | ✔ | ❌ | ❌ | ❌ | +| corepack support | ✔ | ❌ | ❌ | ❌ | +| Bump versions | ❌ | ✔ | ✔ | ✔ | +| Create Git release, tag | ❌ | ✔ | ✔ | ✔ | +| Interactive UI | 🔶 | ✔ | ✔ | ✔ | +| Install dependencies | 🔶 | ✔ | ❌ | ❌ | +| Generate changelog | 🔷 | ❌ | ✔ | ✔ | +| Create pre-release | 🔷 | ✔ | ✔ | ✔ | +| Push releases and tags | 🔷 | ✔ | ✔ | ✔ | +| Auto Run tests | 🔷 | ✔ | ❌ | ❌ | +| 2-factor authentication | 🔷 | ✔ | ❌ | ❌ | [np]: https://www.npmjs.com/package/np [release-it]: https://www.npmjs.com/package/release-it -[changesets]: https://www.npmjs.com/package/changesets +[changesets]: https://github.com/changesets/changesets diff --git a/packages/npm/lib/npm/action.mjs b/packages/npm/lib/npm/action.mjs index c0e256c..7c0e370 100644 --- a/packages/npm/lib/npm/action.mjs +++ b/packages/npm/lib/npm/action.mjs @@ -20,30 +20,25 @@ export async function action({ preview = false, force = false } = {}) { logger.info("Won't publish in preview mode"); } - for (const { dir, name } of list) { - if (preview) { - logger.task('[Preview]', name); - - await execX('npm', ['publish', '--dry-run'], { cwd: dir }) - .then(() => { - logger.okay('[Preview]', name); - }) - .catch(() => { - logger.fail('[Preview]', name); - process.exitCode = 1; - }); - } else { - logger.task('[Publishing]', name); - - await execX('npm', ['publish'], { cwd: dir }) - .then(() => { - logger.okay('[Published]', name); - }) - .catch(() => { - logger.fail('[Published]', name); - process.exitCode = 1; - }); - } + for (const { dir, name, packageManager } of list) { + const label = preview ? '[Preview]' : '[Publish]'; + + logger.task(label, name); + + await execX( + packageManager, + preview ? ['publish', '--dry-run'] : ['publish'], + { + cwd: dir, + }, + ) + .then(() => { + logger.okay(label, name); + }) + .catch(() => { + logger.fail(label, name); + process.exitCode = 1; + }); } return false; diff --git a/packages/npm/lib/npm/check.mjs b/packages/npm/lib/npm/check.mjs index be04d8b..2f63830 100644 --- a/packages/npm/lib/npm/check.mjs +++ b/packages/npm/lib/npm/check.mjs @@ -4,7 +4,6 @@ import { isGitClean, isGitDir, isGitRoot, - npmSupport, } from './git.mjs'; import { logger } from './logger.mjs'; @@ -12,10 +11,6 @@ export async function check({ force }) { logger.task('Checking the working directory...'); try { - if (!(await npmSupport())) { - return false; - } - if (!(await gitSupport())) { return false; } @@ -32,7 +27,7 @@ export async function check({ force }) { return false; } - if ((process.env.CI ? true : !force) && !(await isGitClean())) { + if (!(await isGitClean())) { return false; } } catch (error) { diff --git a/packages/npm/lib/npm/filter.mjs b/packages/npm/lib/npm/filter.mjs index a7bdd34..2e806bb 100644 --- a/packages/npm/lib/npm/filter.mjs +++ b/packages/npm/lib/npm/filter.mjs @@ -4,7 +4,7 @@ import validate from 'validate-npm-package-name'; import { logger } from './logger.mjs'; -export function filter(pkg) { +export function filter(pkg, env) { if (pkg.private) { logger.info('[package is private]', pkg.name); @@ -55,15 +55,20 @@ export function filter(pkg) { } } - if (pkg.engines?.npm) { - if (!semver.validRange(pkg.engines.npm)) { - logger.warn("[pkg.engines.npm isn't valid]", pkg.pkg); + const { packageManager } = pkg; + + if (pkg.engines?.[packageManager]) { + if (!semver.validRange(pkg.engines[packageManager])) { + logger.warn(`[pkg.engines.${packageManager} isn't valid]`, pkg.pkg); return false; } - if (!semver.satisfies(process.versions.npm, pkg.engines.npm)) { - logger.warn("[pkg.engines.npm isn't match]", pkg.pkg); + if ( + env.packageManager.version && + !semver.satisfies(env.packageManager.version, pkg.engines[packageManager]) + ) { + logger.warn(`[pkg.engines.${packageManager} isn't match]`, pkg.pkg); return false; } diff --git a/packages/npm/lib/npm/git.mjs b/packages/npm/lib/npm/git.mjs index 19297b8..3ad954f 100644 --- a/packages/npm/lib/npm/git.mjs +++ b/packages/npm/lib/npm/git.mjs @@ -19,16 +19,8 @@ async function doAction(condition, okay, fail) { return false; } -export function npmSupport() { - return doAction( - Exec('npm', ['-v']).then((version) => { - process.versions.npm = version; - - return Boolean(version); - }), - 'npm is ready', - 'npm is not installed', - ); +export async function packageManagerVersion(packageManager = 'npm') { + return Exec(packageManager, ['-v']); } export function gitSupport() { diff --git a/packages/npm/lib/npm/scan.mjs b/packages/npm/lib/npm/scan.mjs index 654661e..1cd4e82 100644 --- a/packages/npm/lib/npm/scan.mjs +++ b/packages/npm/lib/npm/scan.mjs @@ -2,22 +2,36 @@ import { readFile } from 'node:fs/promises'; import { dirname } from 'node:path'; import { filter } from './filter.mjs'; -import { getFileContentFromLastCommit, getLastCommitFiles } from './git.mjs'; +import { + getFileContentFromLastCommit, + getLastCommitFiles, + packageManagerVersion, +} from './git.mjs'; import { logger } from './logger.mjs'; import { Exec } from './utils.mjs'; function readJSON(file) { return readFile(file, 'utf8') .then((raw) => JSON.parse(raw)) - .then(({ name, version, private: p = false, engines, publishConfig }) => ({ - pkg: file, - dir: dirname(file), - name, - version, - private: p, - publishConfig, - engines, - })) + .then( + ({ + name, + version, + private: p = false, + engines, + publishConfig, + packageManager = 'npm', + }) => ({ + pkg: file, + dir: dirname(file), + name, + version, + private: p, + publishConfig, + engines, + packageManager: packageManager.split('@')[0], + }), + ) .catch(() => false); } @@ -50,7 +64,9 @@ async function publishReady(list) { for (const item of list) { const okay = await readJSON(item); - if (okay && filter(okay)) { + const version = await packageManagerVersion(okay.packageManager); + + if (okay && filter(okay, { packageManager: { version } })) { io.push(okay); logger.okay('[Publish Allowed]', okay.name); } @@ -83,7 +99,11 @@ async function publishable(list) { const io = []; for (const item of list) { - if (item.publishConfig.registry.includes('registry.npmjs.org')) { + // TODO + if ( + item.packageManager === 'npm' && + item.publishConfig.registry.includes('registry.npmjs.org') + ) { const versions = await getVersions( item.name, item.publishConfig.registry, diff --git a/packages/npm/package.json b/packages/npm/package.json index f84da05..98d1b9f 100644 --- a/packages/npm/package.json +++ b/packages/npm/package.json @@ -1,6 +1,6 @@ { "name": "@bring-it/npm", - "version": "0.2.10", + "version": "0.3.1", "description": "Publish npm packages when needed", "license": "MIT", "author": { @@ -45,14 +45,14 @@ "devDependencies": { "@bring-it/utils": "*", "cheetor": "^0.13.0", - "execa": "^7.2.0", + "execa": "^8.0.1", "is-url": "^1.2.4", "semver": "^7.5.4", "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": "^16.15.0 || ^18.0.0", - "npm": "^8.13.0 || ^9.4.0" + "node": "^16.17.0 || ^18.0.0 || ^20.0.0", + "npm": ">=8.13.0" }, "publishConfig": { "access": "public", diff --git a/packages/sftp/lib/cmd.mjs b/packages/sftp/lib/cmd.mjs index 7a7b4ca..4b39d53 100644 --- a/packages/sftp/lib/cmd.mjs +++ b/packages/sftp/lib/cmd.mjs @@ -47,14 +47,28 @@ export function builder(cli) { requiresArg: true, demand: !private_key_path, }, + path: { + alias: 'p', + description: 'overriding server path', + requiresArg: true, + }, }); } export function handler({ cwd = parsePath(), key = private_key_path, - server: { user, hostname, port, path } = {}, + server, + path: forcePath, }) { + if (!server) { + throw new Error('Missing required positional: server'); + } + + const { user, hostname, port, path: filePath } = server; + + const path = forcePath ?? filePath; + if (!key) { throw new Error('Missing required argument: key'); } diff --git a/packages/sftp/lib/sftp/read-config.mjs b/packages/sftp/lib/sftp/read-config.mjs index 486be69..4f4ba4e 100644 --- a/packages/sftp/lib/sftp/read-config.mjs +++ b/packages/sftp/lib/sftp/read-config.mjs @@ -69,7 +69,10 @@ function parseURI(server) { return {}; } - return { user: username, hostname, port, path: pathname }; + return pickBy( + { user: username, hostname, port, path: pathname }, + (item) => item, + ); } catch { return {}; } @@ -80,14 +83,16 @@ export function checkServer(server) { paramsError(' is missing'); } - const raw = /\S+@\S+/.test(server); - const { user, hostname, port = 22, - path = '/', - } = pickBy(raw ? parseURI(server) : readConfig(server)); + path = '/mnt', + } = pickBy( + /\S+@\S+/.test(server) && URL.canParse(`sftp://${server}`) + ? parseURI(server) + : readConfig(server), + ); if (!user) { paramsError("'User' is missing in config"); diff --git a/packages/sftp/package.json b/packages/sftp/package.json index 2d96b42..90fadca 100644 --- a/packages/sftp/package.json +++ b/packages/sftp/package.json @@ -1,6 +1,6 @@ { "name": "@bring-it/sftp", - "version": "0.1.2", + "version": "0.1.4", "description": "SFTP deployment tool for frontend", "license": "MIT", "author": { @@ -48,11 +48,11 @@ "lodash": "^4.17.21", "node-ssh": "^13.1.0", "p-all": "^5.0.0", - "p-retry": "^5.1.2", + "p-retry": "^6.0.0", "p-series": "^3.0.0", "p-timeout": "^6.1.2", "slash": "^5.1.0", - "ssh-config": "^4.2.1" + "ssh-config": "^4.4.0" }, "engines": { "node": "^16.15.0 || ^18.0.0",