feat: add scripts to check that dependencies support the correct Node.js versions

This commit is contained in:
Jeff Williams 2024-12-11 14:18:51 -08:00
parent 04da10fdc4
commit 91731bc274
No known key found for this signature in database
3 changed files with 405 additions and 3 deletions

View File

@ -43,6 +43,16 @@ export const coverage = task({
},
});
export const dependencyEngines = task({
name: 'dependency-engines',
run: async () => {
await execa(bin('installed-check'), ['--no-include-workspace-root'], {
stdout: 'inherit',
stderr: 'inherit',
});
},
});
export const dependencyLicenses = task({
name: 'dependency-licenses',
run: () => {
@ -79,6 +89,11 @@ export const dependencyLicenses = task({
},
});
export const dependencies = task({
name: 'dependencies',
dependencies: [dependencyEngines, dependencyLicenses],
});
export const format = task({
name: 'format',
run: async () => {

390
package-lock.json generated
View File

@ -43,6 +43,7 @@
"execa": "^9.5.2",
"hereby": "^1.10.0",
"husky": "^9.1.7",
"installed-check": "^9.3.0",
"jasmine": "^5.5.0",
"jasmine-console-reporter": "^3.1.0",
"js-green-licenses": "^4.0.0",
@ -2082,6 +2083,50 @@
"url": "https://opencollective.com/unts"
}
},
"node_modules/@pnpm/constants": {
"version": "10.0.0",
"resolved": "https://registry.npmjs.org/@pnpm/constants/-/constants-10.0.0.tgz",
"integrity": "sha512-dxIXcW1F1dxIGfye2JXE7Q8WVwYB0axVzdBOkvE1WKIVR4xjB8e6k/Dkjo7DpbyfW5Vu2k21p6dyM32YLSAWoQ==",
"dev": true,
"engines": {
"node": ">=18.12"
},
"funding": {
"url": "https://opencollective.com/pnpm"
}
},
"node_modules/@pnpm/error": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/@pnpm/error/-/error-6.0.3.tgz",
"integrity": "sha512-OIYhG7HQh4zUFh2s8/6bp7glVRjNxms7bpzXVOLV7pyRa+rSYFmqJ8zDsBC64k58nuaxS85Ip+SCDjFxsFGeOg==",
"dev": true,
"dependencies": {
"@pnpm/constants": "10.0.0"
},
"engines": {
"node": ">=18.12"
},
"funding": {
"url": "https://opencollective.com/pnpm"
}
},
"node_modules/@pnpm/workspace.read-manifest": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/@pnpm/workspace.read-manifest/-/workspace.read-manifest-2.2.2.tgz",
"integrity": "sha512-ryiFUKQfu5sYAtX/jsYRHsTHoB6p6rNBZQkXODlmMczcGeIE78cuz1xf5+xS6Dq2CayiqImuSmCiWbT5uT90Nw==",
"dev": true,
"dependencies": {
"@pnpm/constants": "10.0.0",
"@pnpm/error": "6.0.3",
"read-yaml-file": "^2.1.0"
},
"engines": {
"node": ">=18.12"
},
"funding": {
"url": "https://opencollective.com/pnpm"
}
},
"node_modules/@sec-ant/readable-stream": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
@ -2355,9 +2400,9 @@
"dev": true
},
"node_modules/@types/normalize-package-data": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
"integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
"version": "2.4.4",
"resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
"integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
"dev": true
},
"node_modules/@types/responselike": {
@ -2369,6 +2414,51 @@
"@types/node": "*"
}
},
"node_modules/@voxpelli/semver-set": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@voxpelli/semver-set/-/semver-set-6.0.0.tgz",
"integrity": "sha512-FC6UgwEA6k2dPK8SslOR0nKAW4fRB3d4shV3Jo9AEdUUdyWp3s8KgJPUJLpjcXz+hb+qaI8PhQcz/UH9oBMbUw==",
"dev": true,
"dependencies": {
"semver": "^7.5.3"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
"node_modules/@voxpelli/semver-set/node_modules/semver": {
"version": "7.6.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@voxpelli/type-helpers": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/@voxpelli/type-helpers/-/type-helpers-3.4.0.tgz",
"integrity": "sha512-nDPbVFZ7y7aEMAVRC1LIllMMvwE5Qgd0z+cyd+K4z0NJ7LAjcjydhPw4RYAoYF3JzvZVpra/S0SRN/dCFE8E+A==",
"dev": true,
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@voxpelli/typed-utils": {
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/@voxpelli/typed-utils/-/typed-utils-1.10.2.tgz",
"integrity": "sha512-icXQSR6SeGL6kr9koJw9zkDZqWyFXgpJG8kTaDydjZhy9/V0MQB9tYyibvRgJHlk98SDJJhPLCouTdqOdn+riw==",
"dev": true,
"dependencies": {
"@voxpelli/type-helpers": "^3.4.0"
},
"engines": {
"node": ">=18.0.0"
}
},
"node_modules/@yarnpkg/lockfile": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
@ -2777,6 +2867,15 @@
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true
},
"node_modules/buffered-async-iterable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/buffered-async-iterable/-/buffered-async-iterable-1.0.1.tgz",
"integrity": "sha512-QqoUm0XP17Bu6zzyvpK92K7jNYMoFYgKM0ZKr0OkoDlElpTTeucGmdJL8I7W+reFIfvgUWOm1PgJC+OxM2lMEQ==",
"dev": true,
"engines": {
"node": ">=18.6.0"
}
},
"node_modules/byte-size": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/byte-size/-/byte-size-8.1.1.tgz",
@ -5645,6 +5744,18 @@
"node": ">=8"
}
},
"node_modules/index-to-position": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz",
"integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==",
"dev": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@ -5811,6 +5922,90 @@
"node": ">=8"
}
},
"node_modules/installed-check": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/installed-check/-/installed-check-9.3.0.tgz",
"integrity": "sha512-4aL5tUyCc/MVkaKnTqg5CdMa20uf7HYHjHJfiv4WeIoBoSKDLd/frMnIRUglnUovHUHrwRuzUDHOd4DidHKkkA==",
"dev": true,
"dependencies": {
"chalk": "^5.3.0",
"installed-check-core": "^8.3.0",
"meow": "^12.1.1",
"pony-cause": "^2.1.10",
"version-guard": "^1.1.1"
},
"bin": {
"installed-check": "cli-wrapper.cjs"
},
"engines": {
"node": ">=18.6.0"
}
},
"node_modules/installed-check-core": {
"version": "8.3.1",
"resolved": "https://registry.npmjs.org/installed-check-core/-/installed-check-core-8.3.1.tgz",
"integrity": "sha512-5yH+YyCw2AO1OQpOSce2yUaooOSrK8XXmkOn2xdVpdtpt0pqwfdqU77FIpWN4fPHDcINKUf4R7hgDEfqpy1Z9g==",
"dev": true,
"dependencies": {
"@voxpelli/semver-set": "^6.0.0",
"@voxpelli/typed-utils": "^1.10.2",
"is-glob": "^4.0.3",
"list-installed": "^5.3.1",
"picomatch": "^4.0.1",
"semver": "^7.6.0"
},
"engines": {
"node": ">=18.6.0"
}
},
"node_modules/installed-check-core/node_modules/picomatch": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true,
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/installed-check-core/node_modules/semver": {
"version": "7.6.3",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/installed-check/node_modules/chalk": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
"integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
"dev": true,
"engines": {
"node": "^12.17.0 || ^14.13 || >=16.0.0"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
"node_modules/installed-check/node_modules/meow": {
"version": "12.1.1",
"resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz",
"integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==",
"dev": true,
"engines": {
"node": ">=16.10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/ip-address": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
@ -7663,6 +7858,81 @@
"uc.micro": "^2.0.0"
}
},
"node_modules/list-installed": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/list-installed/-/list-installed-5.3.1.tgz",
"integrity": "sha512-MLK5hj3vViLbs/RDgi/tY7rhi9ifiwnKppUF21mH2DqqMznvZhZ8TnjI0W6ZS0iCsl1qGAiHrUIMhjK7xrJstg==",
"dev": true,
"dependencies": {
"buffered-async-iterable": "^1.0.1",
"pony-cause": "^2.1.10",
"read-pkg": "^9.0.1",
"read-workspaces": "^1.2.0"
},
"engines": {
"node": ">=18.6.0"
}
},
"node_modules/list-installed/node_modules/parse-json": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz",
"integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.22.13",
"index-to-position": "^0.1.2",
"type-fest": "^4.7.1"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/list-installed/node_modules/read-pkg": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz",
"integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==",
"dev": true,
"dependencies": {
"@types/normalize-package-data": "^2.4.3",
"normalize-package-data": "^6.0.0",
"parse-json": "^8.0.0",
"type-fest": "^4.6.0",
"unicorn-magic": "^0.1.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/list-installed/node_modules/type-fest": {
"version": "4.30.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.0.tgz",
"integrity": "sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==",
"dev": true,
"engines": {
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/list-installed/node_modules/unicorn-magic": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
"integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
"dev": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/load-json-file": {
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz",
@ -9925,6 +10195,15 @@
"node": ">=8"
}
},
"node_modules/pony-cause": {
"version": "2.1.11",
"resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.11.tgz",
"integrity": "sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==",
"dev": true,
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/postcss-selector-parser": {
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz",
@ -10380,6 +10659,102 @@
"node": ">=4"
}
},
"node_modules/read-workspaces": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/read-workspaces/-/read-workspaces-1.2.2.tgz",
"integrity": "sha512-P/girX6N7FDk7mGo/i4DB2HzanhnEhuLIAG2RvBkubQxwtEimtIDtCyA1DcHG4IC22+sr6rCppFyW8IflQ5q+Q==",
"dev": true,
"dependencies": {
"@npmcli/map-workspaces": "^3.0.4",
"@pnpm/workspace.read-manifest": "^2.0.0",
"read-pkg": "^9.0.1"
},
"engines": {
"node": ">=18.6.0"
}
},
"node_modules/read-workspaces/node_modules/parse-json": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz",
"integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.22.13",
"index-to-position": "^0.1.2",
"type-fest": "^4.7.1"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/read-workspaces/node_modules/read-pkg": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz",
"integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==",
"dev": true,
"dependencies": {
"@types/normalize-package-data": "^2.4.3",
"normalize-package-data": "^6.0.0",
"parse-json": "^8.0.0",
"type-fest": "^4.6.0",
"unicorn-magic": "^0.1.0"
},
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/read-workspaces/node_modules/type-fest": {
"version": "4.30.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.0.tgz",
"integrity": "sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==",
"dev": true,
"engines": {
"node": ">=16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/read-workspaces/node_modules/unicorn-magic": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
"integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
"dev": true,
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/read-yaml-file": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-2.1.0.tgz",
"integrity": "sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==",
"dev": true,
"dependencies": {
"js-yaml": "^4.0.0",
"strip-bom": "^4.0.0"
},
"engines": {
"node": ">=10.13"
}
},
"node_modules/read-yaml-file/node_modules/strip-bom": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
"integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/read/node_modules/mute-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz",
@ -11716,6 +12091,15 @@
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/version-guard": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/version-guard/-/version-guard-1.1.3.tgz",
"integrity": "sha512-JwPr6erhX53EWH/HCSzfy1tTFrtPXUe927wdM1jqBBeYp1OM+qPHjWbsvv6pIBduqdgxxS+ScfG7S28pzyr2DQ==",
"dev": true,
"engines": {
"node": ">=0.10.48"
}
},
"node_modules/walk-up-path": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz",

View File

@ -22,6 +22,7 @@
"execa": "^9.5.2",
"hereby": "^1.10.0",
"husky": "^9.1.7",
"installed-check": "^9.3.0",
"jasmine": "^5.5.0",
"jasmine-console-reporter": "^3.1.0",
"js-green-licenses": "^4.0.0",
@ -39,6 +40,8 @@
"scripts": {
"coverage": "node_modules/.bin/hereby coverage",
"default": "node_modules/.bin/hereby",
"dependencies": "node_modules/.bin/hereby dependencies",
"dependency-engines": "node_modules/.bin/hereby dependency-engines",
"dependency-licenses": "node_modules/.bin/hereby dependency-licenses",
"format": "node_modules/.bin/hereby format",
"license-check": "node_modules/.bin/hereby license-check",