diff --git a/index.html b/index.html index b1c915e2c8b..8b56d9795fb 100644 --- a/index.html +++ b/index.html @@ -7,14 +7,14 @@ STL Status Chart - - diff --git a/package-lock.json b/package-lock.json index dfbf9c00a68..1df336cdbce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,76 +9,88 @@ "version": "1.0.0", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { - "@octokit/graphql": "^4.8.0", + "@octokit/graphql": "^5.0.0", "@types/cli-progress": "^3.11.0", - "@types/luxon": "^2.3.2", - "@types/node": "^18.0.2", + "@types/luxon": "^3.0.0", + "@types/node": "^18.6.2", "@types/yargs": "^17.0.10", - "chart.js": "^3.8.0", + "chart.js": "^3.8.2", "chartjs-adapter-luxon": "^1.1.0", "cli-progress": "^3.11.2", "dotenv": "^16.0.1", - "esbuild": "^0.14.48", + "esbuild": "^0.14.51", "http-server": "^14.1.1", - "luxon": "^2.4.0", + "luxon": "^2.5.0", "typescript": "^4.7.4", "yargs": "^17.5.1" } }, "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.0.tgz", + "integrity": "sha512-Kz/mIkOTjs9rV50hf/JK9pIDl4aGwAtT8pry6Rpy+hVXkAPhXanNQRxMoq6AeRgDCZR6t/A1zKniY2V1YhrzlQ==", "dependencies": { "@octokit/types": "^6.0.3", "is-plain-object": "^5.0.0", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" } }, "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.0.tgz", + "integrity": "sha512-1ZZ8tX4lUEcLPvHagfIVu5S2xpHYXAmgN0+95eAOPoaVPzCfUXJtA5vASafcpWcO86ze0Pzn30TAx72aB2aguQ==", "dependencies": { - "@octokit/request": "^5.6.0", + "@octokit/request": "^6.0.0", "@octokit/types": "^6.0.3", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" } }, "node_modules/@octokit/openapi-types": { - "version": "12.8.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.8.0.tgz", - "integrity": "sha512-ydcKLs2KKcxlhpdWLzJxEBDEk/U5MUeqtqkXlrtAUXXFPs6vLl1PEGghFC/BbpleosB7iXs0Z4P2DGe7ZT5ZNg==" + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" }, "node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.0.tgz", + "integrity": "sha512-7IAmHnaezZrgUqtRShMlByJK33MT9ZDnMRgZjnRrRV9a/jzzFwKGz0vxhFU6i7VMLraYcQ1qmcAOin37Kryq+Q==", "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", "@octokit/types": "^6.16.1", "is-plain-object": "^5.0.0", "node-fetch": "^2.6.7", "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 14" } }, "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.0.tgz", + "integrity": "sha512-WBtpzm9lR8z4IHIMtOqr6XwfkGvMOOILNLxsWvDwtzm/n7f5AWuqJTXQXdDtOvPfTDrH4TPhEvW2qMlR4JFA2w==", "dependencies": { "@octokit/types": "^6.0.3", "deprecation": "^2.0.0", "once": "^1.4.0" + }, + "engines": { + "node": ">= 14" } }, "node_modules/@octokit/types": { - "version": "6.39.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.39.0.tgz", - "integrity": "sha512-Mq4N9sOAYCitTsBtDdRVrBE80lIrMBhL9Jbrw0d+j96BAzlq4V+GLHFJbHokEsVvO/9tQupQdoFdgVYhD2C8UQ==", + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", "dependencies": { - "@octokit/openapi-types": "^12.7.0" + "@octokit/openapi-types": "^12.11.0" } }, "node_modules/@types/cli-progress": { @@ -90,14 +102,14 @@ } }, "node_modules/@types/luxon": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-2.3.2.tgz", - "integrity": "sha512-WOehptuhKIXukSUUkRgGbj2c997Uv/iUgYgII8U7XLJqq9W2oF0kQ6frEznRQbdurioz+L/cdaIm4GutTQfgmA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.0.0.tgz", + "integrity": "sha512-Lx+EZoJxUKw4dp8uei9XiUVNlgkYmax5+ovqt6Xf3LzJOnWhlfJw/jLBmqfGVwOP/pDr4HT8bI1WtxK0IChMLw==" }, "node_modules/@types/node": { - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.2.tgz", - "integrity": "sha512-b947SdS4GH+g2W33wf5FzUu1KLj5FcSIiNWbU1ZyMvt/X7w48ZsVcsQoirIgE/Oq03WT5Qbn/dkY0hePi4ZXcQ==" + "version": "18.6.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.2.tgz", + "integrity": "sha512-KcfkBq9H4PI6Vpu5B/KoPeuVDAbmi+2mDBqGPGUgoL7yXQtcWGu2vJWmmRkneWK3Rh0nIAX192Aa87AqKHYChQ==" }, "node_modules/@types/yargs": { "version": "17.0.10", @@ -181,9 +193,9 @@ } }, "node_modules/chart.js": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.8.0.tgz", - "integrity": "sha512-cr8xhrXjLIXVLOBZPkBZVF6NDeiVIrPLHcMhnON7UufudL+CNeRrD+wpYanswlm8NpudMdrt3CHoLMQMxJhHRg==" + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.8.2.tgz", + "integrity": "sha512-7rqSlHWMUKFyBDOJvmFGW2lxULtcwaPLegDjX/Nu5j6QybY+GCiQkEY+6cqHw62S5tcwXMD8Y+H5OBGoR7d+ZQ==" }, "node_modules/chartjs-adapter-luxon": { "version": "1.1.0", @@ -266,9 +278,9 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/esbuild": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.48.tgz", - "integrity": "sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.51.tgz", + "integrity": "sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -277,32 +289,32 @@ "node": ">=12" }, "optionalDependencies": { - "esbuild-android-64": "0.14.48", - "esbuild-android-arm64": "0.14.48", - "esbuild-darwin-64": "0.14.48", - "esbuild-darwin-arm64": "0.14.48", - "esbuild-freebsd-64": "0.14.48", - "esbuild-freebsd-arm64": "0.14.48", - "esbuild-linux-32": "0.14.48", - "esbuild-linux-64": "0.14.48", - "esbuild-linux-arm": "0.14.48", - "esbuild-linux-arm64": "0.14.48", - "esbuild-linux-mips64le": "0.14.48", - "esbuild-linux-ppc64le": "0.14.48", - "esbuild-linux-riscv64": "0.14.48", - "esbuild-linux-s390x": "0.14.48", - "esbuild-netbsd-64": "0.14.48", - "esbuild-openbsd-64": "0.14.48", - "esbuild-sunos-64": "0.14.48", - "esbuild-windows-32": "0.14.48", - "esbuild-windows-64": "0.14.48", - "esbuild-windows-arm64": "0.14.48" + "esbuild-android-64": "0.14.51", + "esbuild-android-arm64": "0.14.51", + "esbuild-darwin-64": "0.14.51", + "esbuild-darwin-arm64": "0.14.51", + "esbuild-freebsd-64": "0.14.51", + "esbuild-freebsd-arm64": "0.14.51", + "esbuild-linux-32": "0.14.51", + "esbuild-linux-64": "0.14.51", + "esbuild-linux-arm": "0.14.51", + "esbuild-linux-arm64": "0.14.51", + "esbuild-linux-mips64le": "0.14.51", + "esbuild-linux-ppc64le": "0.14.51", + "esbuild-linux-riscv64": "0.14.51", + "esbuild-linux-s390x": "0.14.51", + "esbuild-netbsd-64": "0.14.51", + "esbuild-openbsd-64": "0.14.51", + "esbuild-sunos-64": "0.14.51", + "esbuild-windows-32": "0.14.51", + "esbuild-windows-64": "0.14.51", + "esbuild-windows-arm64": "0.14.51" } }, "node_modules/esbuild-android-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.48.tgz", - "integrity": "sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.51.tgz", + "integrity": "sha512-6FOuKTHnC86dtrKDmdSj2CkcKF8PnqkaIXqvgydqfJmqBazCPdw+relrMlhGjkvVdiiGV70rpdnyFmA65ekBCQ==", "cpu": [ "x64" ], @@ -315,9 +327,9 @@ } }, "node_modules/esbuild-android-arm64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.48.tgz", - "integrity": "sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.51.tgz", + "integrity": "sha512-vBtp//5VVkZWmYYvHsqBRCMMi1MzKuMIn5XDScmnykMTu9+TD9v0NMEDqQxvtFToeYmojdo5UCV2vzMQWJcJ4A==", "cpu": [ "arm64" ], @@ -330,9 +342,9 @@ } }, "node_modules/esbuild-darwin-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.48.tgz", - "integrity": "sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.51.tgz", + "integrity": "sha512-YFmXPIOvuagDcwCejMRtCDjgPfnDu+bNeh5FU2Ryi68ADDVlWEpbtpAbrtf/lvFTWPexbgyKgzppNgsmLPr8PA==", "cpu": [ "x64" ], @@ -345,9 +357,9 @@ } }, "node_modules/esbuild-darwin-arm64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.48.tgz", - "integrity": "sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.51.tgz", + "integrity": "sha512-juYD0QnSKwAMfzwKdIF6YbueXzS6N7y4GXPDeDkApz/1RzlT42mvX9jgNmyOlWKN7YzQAYbcUEJmZJYQGdf2ow==", "cpu": [ "arm64" ], @@ -360,9 +372,9 @@ } }, "node_modules/esbuild-freebsd-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.48.tgz", - "integrity": "sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.51.tgz", + "integrity": "sha512-cLEI/aXjb6vo5O2Y8rvVSQ7smgLldwYY5xMxqh/dQGfWO+R1NJOFsiax3IS4Ng300SVp7Gz3czxT6d6qf2cw0g==", "cpu": [ "x64" ], @@ -375,9 +387,9 @@ } }, "node_modules/esbuild-freebsd-arm64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.48.tgz", - "integrity": "sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.51.tgz", + "integrity": "sha512-TcWVw/rCL2F+jUgRkgLa3qltd5gzKjIMGhkVybkjk6PJadYInPtgtUBp1/hG+mxyigaT7ib+od1Xb84b+L+1Mg==", "cpu": [ "arm64" ], @@ -390,9 +402,9 @@ } }, "node_modules/esbuild-linux-32": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.48.tgz", - "integrity": "sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.51.tgz", + "integrity": "sha512-RFqpyC5ChyWrjx8Xj2K0EC1aN0A37H6OJfmUXIASEqJoHcntuV3j2Efr9RNmUhMfNE6yEj2VpYuDteZLGDMr0w==", "cpu": [ "ia32" ], @@ -405,9 +417,9 @@ } }, "node_modules/esbuild-linux-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.48.tgz", - "integrity": "sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.51.tgz", + "integrity": "sha512-dxjhrqo5i7Rq6DXwz5v+MEHVs9VNFItJmHBe1CxROWNf4miOGoQhqSG8StStbDkQ1Mtobg6ng+4fwByOhoQoeA==", "cpu": [ "x64" ], @@ -420,9 +432,9 @@ } }, "node_modules/esbuild-linux-arm": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.48.tgz", - "integrity": "sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.51.tgz", + "integrity": "sha512-LsJynDxYF6Neg7ZC7748yweCDD+N8ByCv22/7IAZglIEniEkqdF4HCaa49JNDLw1UQGlYuhOB8ZT/MmcSWzcWg==", "cpu": [ "arm" ], @@ -435,9 +447,9 @@ } }, "node_modules/esbuild-linux-arm64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.48.tgz", - "integrity": "sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.51.tgz", + "integrity": "sha512-D9rFxGutoqQX3xJPxqd6o+kvYKeIbM0ifW2y0bgKk5HPgQQOo2k9/2Vpto3ybGYaFPCE5qTGtqQta9PoP6ZEzw==", "cpu": [ "arm64" ], @@ -450,9 +462,9 @@ } }, "node_modules/esbuild-linux-mips64le": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.48.tgz", - "integrity": "sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.51.tgz", + "integrity": "sha512-vS54wQjy4IinLSlb5EIlLoln8buh1yDgliP4CuEHumrPk4PvvP4kTRIG4SzMXm6t19N0rIfT4bNdAxzJLg2k6A==", "cpu": [ "mips64el" ], @@ -465,9 +477,9 @@ } }, "node_modules/esbuild-linux-ppc64le": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.48.tgz", - "integrity": "sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.51.tgz", + "integrity": "sha512-xcdd62Y3VfGoyphNP/aIV9LP+RzFw5M5Z7ja+zdpQHHvokJM7d0rlDRMN+iSSwvUymQkqZO+G/xjb4/75du8BQ==", "cpu": [ "ppc64" ], @@ -480,9 +492,9 @@ } }, "node_modules/esbuild-linux-riscv64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.48.tgz", - "integrity": "sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.51.tgz", + "integrity": "sha512-syXHGak9wkAnFz0gMmRBoy44JV0rp4kVCEA36P5MCeZcxFq8+fllBC2t6sKI23w3qd8Vwo9pTADCgjTSf3L3rA==", "cpu": [ "riscv64" ], @@ -495,9 +507,9 @@ } }, "node_modules/esbuild-linux-s390x": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.48.tgz", - "integrity": "sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.51.tgz", + "integrity": "sha512-kFAJY3dv+Wq8o28K/C7xkZk/X34rgTwhknSsElIqoEo8armCOjMJ6NsMxm48KaWY2h2RUYGtQmr+RGuUPKBhyw==", "cpu": [ "s390x" ], @@ -510,9 +522,9 @@ } }, "node_modules/esbuild-netbsd-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.48.tgz", - "integrity": "sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.51.tgz", + "integrity": "sha512-ZZBI7qrR1FevdPBVHz/1GSk1x5GDL/iy42Zy8+neEm/HA7ma+hH/bwPEjeHXKWUDvM36CZpSL/fn1/y9/Hb+1A==", "cpu": [ "x64" ], @@ -525,9 +537,9 @@ } }, "node_modules/esbuild-openbsd-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.48.tgz", - "integrity": "sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.51.tgz", + "integrity": "sha512-7R1/p39M+LSVQVgDVlcY1KKm6kFKjERSX1lipMG51NPcspJD1tmiZSmmBXoY5jhHIu6JL1QkFDTx94gMYK6vfA==", "cpu": [ "x64" ], @@ -540,9 +552,9 @@ } }, "node_modules/esbuild-sunos-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.48.tgz", - "integrity": "sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.51.tgz", + "integrity": "sha512-HoHaCswHxLEYN8eBTtyO0bFEWvA3Kdb++hSQ/lLG7TyKF69TeSG0RNoBRAs45x/oCeWaTDntEZlYwAfQlhEtJA==", "cpu": [ "x64" ], @@ -555,9 +567,9 @@ } }, "node_modules/esbuild-windows-32": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.48.tgz", - "integrity": "sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.51.tgz", + "integrity": "sha512-4rtwSAM35A07CBt1/X8RWieDj3ZUHQqUOaEo5ZBs69rt5WAFjP4aqCIobdqOy4FdhYw1yF8Z0xFBTyc9lgPtEg==", "cpu": [ "ia32" ], @@ -570,9 +582,9 @@ } }, "node_modules/esbuild-windows-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.48.tgz", - "integrity": "sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.51.tgz", + "integrity": "sha512-HoN/5HGRXJpWODprGCgKbdMvrC3A2gqvzewu2eECRw2sYxOUoh2TV1tS+G7bHNapPGI79woQJGV6pFH7GH7qnA==", "cpu": [ "x64" ], @@ -585,9 +597,9 @@ } }, "node_modules/esbuild-windows-arm64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.48.tgz", - "integrity": "sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.51.tgz", + "integrity": "sha512-JQDqPjuOH7o+BsKMSddMfmVJXrnYZxXDHsoLHc0xgmAZkOOCflRmC43q31pk79F9xuyWY45jDBPolb5ZgGOf9g==", "cpu": [ "arm64" ], @@ -778,9 +790,9 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/luxon": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.4.0.tgz", - "integrity": "sha512-w+NAwWOUL5hO0SgwOHsMBAmZ15SoknmQXhSO0hIbJCAmPKSsGeK8MlmhYh2w6Iib38IxN2M+/ooXWLbeis7GuA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.0.tgz", + "integrity": "sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A==", "engines": { "node": ">=12" } @@ -1083,9 +1095,9 @@ }, "dependencies": { "@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.0.tgz", + "integrity": "sha512-Kz/mIkOTjs9rV50hf/JK9pIDl4aGwAtT8pry6Rpy+hVXkAPhXanNQRxMoq6AeRgDCZR6t/A1zKniY2V1YhrzlQ==", "requires": { "@octokit/types": "^6.0.3", "is-plain-object": "^5.0.0", @@ -1093,27 +1105,27 @@ } }, "@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.0.tgz", + "integrity": "sha512-1ZZ8tX4lUEcLPvHagfIVu5S2xpHYXAmgN0+95eAOPoaVPzCfUXJtA5vASafcpWcO86ze0Pzn30TAx72aB2aguQ==", "requires": { - "@octokit/request": "^5.6.0", + "@octokit/request": "^6.0.0", "@octokit/types": "^6.0.3", "universal-user-agent": "^6.0.0" } }, "@octokit/openapi-types": { - "version": "12.8.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.8.0.tgz", - "integrity": "sha512-ydcKLs2KKcxlhpdWLzJxEBDEk/U5MUeqtqkXlrtAUXXFPs6vLl1PEGghFC/BbpleosB7iXs0Z4P2DGe7ZT5ZNg==" + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==" }, "@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.0.tgz", + "integrity": "sha512-7IAmHnaezZrgUqtRShMlByJK33MT9ZDnMRgZjnRrRV9a/jzzFwKGz0vxhFU6i7VMLraYcQ1qmcAOin37Kryq+Q==", "requires": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", "@octokit/types": "^6.16.1", "is-plain-object": "^5.0.0", "node-fetch": "^2.6.7", @@ -1121,9 +1133,9 @@ } }, "@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.0.tgz", + "integrity": "sha512-WBtpzm9lR8z4IHIMtOqr6XwfkGvMOOILNLxsWvDwtzm/n7f5AWuqJTXQXdDtOvPfTDrH4TPhEvW2qMlR4JFA2w==", "requires": { "@octokit/types": "^6.0.3", "deprecation": "^2.0.0", @@ -1131,11 +1143,11 @@ } }, "@octokit/types": { - "version": "6.39.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.39.0.tgz", - "integrity": "sha512-Mq4N9sOAYCitTsBtDdRVrBE80lIrMBhL9Jbrw0d+j96BAzlq4V+GLHFJbHokEsVvO/9tQupQdoFdgVYhD2C8UQ==", + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", "requires": { - "@octokit/openapi-types": "^12.7.0" + "@octokit/openapi-types": "^12.11.0" } }, "@types/cli-progress": { @@ -1147,14 +1159,14 @@ } }, "@types/luxon": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-2.3.2.tgz", - "integrity": "sha512-WOehptuhKIXukSUUkRgGbj2c997Uv/iUgYgII8U7XLJqq9W2oF0kQ6frEznRQbdurioz+L/cdaIm4GutTQfgmA==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.0.0.tgz", + "integrity": "sha512-Lx+EZoJxUKw4dp8uei9XiUVNlgkYmax5+ovqt6Xf3LzJOnWhlfJw/jLBmqfGVwOP/pDr4HT8bI1WtxK0IChMLw==" }, "@types/node": { - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.2.tgz", - "integrity": "sha512-b947SdS4GH+g2W33wf5FzUu1KLj5FcSIiNWbU1ZyMvt/X7w48ZsVcsQoirIgE/Oq03WT5Qbn/dkY0hePi4ZXcQ==" + "version": "18.6.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.2.tgz", + "integrity": "sha512-KcfkBq9H4PI6Vpu5B/KoPeuVDAbmi+2mDBqGPGUgoL7yXQtcWGu2vJWmmRkneWK3Rh0nIAX192Aa87AqKHYChQ==" }, "@types/yargs": { "version": "17.0.10", @@ -1217,9 +1229,9 @@ } }, "chart.js": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.8.0.tgz", - "integrity": "sha512-cr8xhrXjLIXVLOBZPkBZVF6NDeiVIrPLHcMhnON7UufudL+CNeRrD+wpYanswlm8NpudMdrt3CHoLMQMxJhHRg==" + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.8.2.tgz", + "integrity": "sha512-7rqSlHWMUKFyBDOJvmFGW2lxULtcwaPLegDjX/Nu5j6QybY+GCiQkEY+6cqHw62S5tcwXMD8Y+H5OBGoR7d+ZQ==" }, "chartjs-adapter-luxon": { "version": "1.1.0", @@ -1287,150 +1299,150 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "esbuild": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.48.tgz", - "integrity": "sha512-w6N1Yn5MtqK2U1/WZTX9ZqUVb8IOLZkZ5AdHkT6x3cHDMVsYWC7WPdiLmx19w3i4Rwzy5LqsEMtVihG3e4rFzA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.51.tgz", + "integrity": "sha512-+CvnDitD7Q5sT7F+FM65sWkF8wJRf+j9fPcprxYV4j+ohmzVj2W7caUqH2s5kCaCJAfcAICjSlKhDCcvDpU7nw==", "requires": { - "esbuild-android-64": "0.14.48", - "esbuild-android-arm64": "0.14.48", - "esbuild-darwin-64": "0.14.48", - "esbuild-darwin-arm64": "0.14.48", - "esbuild-freebsd-64": "0.14.48", - "esbuild-freebsd-arm64": "0.14.48", - "esbuild-linux-32": "0.14.48", - "esbuild-linux-64": "0.14.48", - "esbuild-linux-arm": "0.14.48", - "esbuild-linux-arm64": "0.14.48", - "esbuild-linux-mips64le": "0.14.48", - "esbuild-linux-ppc64le": "0.14.48", - "esbuild-linux-riscv64": "0.14.48", - "esbuild-linux-s390x": "0.14.48", - "esbuild-netbsd-64": "0.14.48", - "esbuild-openbsd-64": "0.14.48", - "esbuild-sunos-64": "0.14.48", - "esbuild-windows-32": "0.14.48", - "esbuild-windows-64": "0.14.48", - "esbuild-windows-arm64": "0.14.48" + "esbuild-android-64": "0.14.51", + "esbuild-android-arm64": "0.14.51", + "esbuild-darwin-64": "0.14.51", + "esbuild-darwin-arm64": "0.14.51", + "esbuild-freebsd-64": "0.14.51", + "esbuild-freebsd-arm64": "0.14.51", + "esbuild-linux-32": "0.14.51", + "esbuild-linux-64": "0.14.51", + "esbuild-linux-arm": "0.14.51", + "esbuild-linux-arm64": "0.14.51", + "esbuild-linux-mips64le": "0.14.51", + "esbuild-linux-ppc64le": "0.14.51", + "esbuild-linux-riscv64": "0.14.51", + "esbuild-linux-s390x": "0.14.51", + "esbuild-netbsd-64": "0.14.51", + "esbuild-openbsd-64": "0.14.51", + "esbuild-sunos-64": "0.14.51", + "esbuild-windows-32": "0.14.51", + "esbuild-windows-64": "0.14.51", + "esbuild-windows-arm64": "0.14.51" } }, "esbuild-android-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.48.tgz", - "integrity": "sha512-3aMjboap/kqwCUpGWIjsk20TtxVoKck8/4Tu19rubh7t5Ra0Yrpg30Mt1QXXlipOazrEceGeWurXKeFJgkPOUg==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.51.tgz", + "integrity": "sha512-6FOuKTHnC86dtrKDmdSj2CkcKF8PnqkaIXqvgydqfJmqBazCPdw+relrMlhGjkvVdiiGV70rpdnyFmA65ekBCQ==", "optional": true }, "esbuild-android-arm64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.48.tgz", - "integrity": "sha512-vptI3K0wGALiDq+EvRuZotZrJqkYkN5282iAfcffjI5lmGG9G1ta/CIVauhY42MBXwEgDJkweiDcDMRLzBZC4g==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.51.tgz", + "integrity": "sha512-vBtp//5VVkZWmYYvHsqBRCMMi1MzKuMIn5XDScmnykMTu9+TD9v0NMEDqQxvtFToeYmojdo5UCV2vzMQWJcJ4A==", "optional": true }, "esbuild-darwin-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.48.tgz", - "integrity": "sha512-gGQZa4+hab2Va/Zww94YbshLuWteyKGD3+EsVon8EWTWhnHFRm5N9NbALNbwi/7hQ/hM1Zm4FuHg+k6BLsl5UA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.51.tgz", + "integrity": "sha512-YFmXPIOvuagDcwCejMRtCDjgPfnDu+bNeh5FU2Ryi68ADDVlWEpbtpAbrtf/lvFTWPexbgyKgzppNgsmLPr8PA==", "optional": true }, "esbuild-darwin-arm64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.48.tgz", - "integrity": "sha512-bFjnNEXjhZT+IZ8RvRGNJthLWNHV5JkCtuOFOnjvo5pC0sk2/QVk0Qc06g2PV3J0TcU6kaPC3RN9yy9w2PSLEA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.51.tgz", + "integrity": "sha512-juYD0QnSKwAMfzwKdIF6YbueXzS6N7y4GXPDeDkApz/1RzlT42mvX9jgNmyOlWKN7YzQAYbcUEJmZJYQGdf2ow==", "optional": true }, "esbuild-freebsd-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.48.tgz", - "integrity": "sha512-1NOlwRxmOsnPcWOGTB10JKAkYSb2nue0oM1AfHWunW/mv3wERfJmnYlGzL3UAOIUXZqW8GeA2mv+QGwq7DToqA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.51.tgz", + "integrity": "sha512-cLEI/aXjb6vo5O2Y8rvVSQ7smgLldwYY5xMxqh/dQGfWO+R1NJOFsiax3IS4Ng300SVp7Gz3czxT6d6qf2cw0g==", "optional": true }, "esbuild-freebsd-arm64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.48.tgz", - "integrity": "sha512-gXqKdO8wabVcYtluAbikDH2jhXp+Klq5oCD5qbVyUG6tFiGhrC9oczKq3vIrrtwcxDQqK6+HDYK8Zrd4bCA9Gw==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.51.tgz", + "integrity": "sha512-TcWVw/rCL2F+jUgRkgLa3qltd5gzKjIMGhkVybkjk6PJadYInPtgtUBp1/hG+mxyigaT7ib+od1Xb84b+L+1Mg==", "optional": true }, "esbuild-linux-32": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.48.tgz", - "integrity": "sha512-ghGyDfS289z/LReZQUuuKq9KlTiTspxL8SITBFQFAFRA/IkIvDpnZnCAKTCjGXAmUqroMQfKJXMxyjJA69c/nQ==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.51.tgz", + "integrity": "sha512-RFqpyC5ChyWrjx8Xj2K0EC1aN0A37H6OJfmUXIASEqJoHcntuV3j2Efr9RNmUhMfNE6yEj2VpYuDteZLGDMr0w==", "optional": true }, "esbuild-linux-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.48.tgz", - "integrity": "sha512-vni3p/gppLMVZLghI7oMqbOZdGmLbbKR23XFARKnszCIBpEMEDxOMNIKPmMItQrmH/iJrL1z8Jt2nynY0bE1ug==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.51.tgz", + "integrity": "sha512-dxjhrqo5i7Rq6DXwz5v+MEHVs9VNFItJmHBe1CxROWNf4miOGoQhqSG8StStbDkQ1Mtobg6ng+4fwByOhoQoeA==", "optional": true }, "esbuild-linux-arm": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.48.tgz", - "integrity": "sha512-+VfSV7Akh1XUiDNXgqgY1cUP1i2vjI+BmlyXRfVz5AfV3jbpde8JTs5Q9sYgaoq5cWfuKfoZB/QkGOI+QcL1Tw==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.51.tgz", + "integrity": "sha512-LsJynDxYF6Neg7ZC7748yweCDD+N8ByCv22/7IAZglIEniEkqdF4HCaa49JNDLw1UQGlYuhOB8ZT/MmcSWzcWg==", "optional": true }, "esbuild-linux-arm64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.48.tgz", - "integrity": "sha512-3CFsOlpoxlKPRevEHq8aAntgYGYkE1N9yRYAcPyng/p4Wyx0tPR5SBYsxLKcgPB9mR8chHEhtWYz6EZ+H199Zw==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.51.tgz", + "integrity": "sha512-D9rFxGutoqQX3xJPxqd6o+kvYKeIbM0ifW2y0bgKk5HPgQQOo2k9/2Vpto3ybGYaFPCE5qTGtqQta9PoP6ZEzw==", "optional": true }, "esbuild-linux-mips64le": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.48.tgz", - "integrity": "sha512-cs0uOiRlPp6ymknDnjajCgvDMSsLw5mST2UXh+ZIrXTj2Ifyf2aAP3Iw4DiqgnyYLV2O/v/yWBJx+WfmKEpNLA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.51.tgz", + "integrity": "sha512-vS54wQjy4IinLSlb5EIlLoln8buh1yDgliP4CuEHumrPk4PvvP4kTRIG4SzMXm6t19N0rIfT4bNdAxzJLg2k6A==", "optional": true }, "esbuild-linux-ppc64le": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.48.tgz", - "integrity": "sha512-+2F0vJMkuI0Wie/wcSPDCqXvSFEELH7Jubxb7mpWrA/4NpT+/byjxDz0gG6R1WJoeDefcrMfpBx4GFNN1JQorQ==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.51.tgz", + "integrity": "sha512-xcdd62Y3VfGoyphNP/aIV9LP+RzFw5M5Z7ja+zdpQHHvokJM7d0rlDRMN+iSSwvUymQkqZO+G/xjb4/75du8BQ==", "optional": true }, "esbuild-linux-riscv64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.48.tgz", - "integrity": "sha512-BmaK/GfEE+5F2/QDrIXteFGKnVHGxlnK9MjdVKMTfvtmudjY3k2t8NtlY4qemKSizc+QwyombGWTBDc76rxePA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.51.tgz", + "integrity": "sha512-syXHGak9wkAnFz0gMmRBoy44JV0rp4kVCEA36P5MCeZcxFq8+fllBC2t6sKI23w3qd8Vwo9pTADCgjTSf3L3rA==", "optional": true }, "esbuild-linux-s390x": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.48.tgz", - "integrity": "sha512-tndw/0B9jiCL+KWKo0TSMaUm5UWBLsfCKVdbfMlb3d5LeV9WbijZ8Ordia8SAYv38VSJWOEt6eDCdOx8LqkC4g==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.51.tgz", + "integrity": "sha512-kFAJY3dv+Wq8o28K/C7xkZk/X34rgTwhknSsElIqoEo8armCOjMJ6NsMxm48KaWY2h2RUYGtQmr+RGuUPKBhyw==", "optional": true }, "esbuild-netbsd-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.48.tgz", - "integrity": "sha512-V9hgXfwf/T901Lr1wkOfoevtyNkrxmMcRHyticybBUHookznipMOHoF41Al68QBsqBxnITCEpjjd4yAos7z9Tw==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.51.tgz", + "integrity": "sha512-ZZBI7qrR1FevdPBVHz/1GSk1x5GDL/iy42Zy8+neEm/HA7ma+hH/bwPEjeHXKWUDvM36CZpSL/fn1/y9/Hb+1A==", "optional": true }, "esbuild-openbsd-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.48.tgz", - "integrity": "sha512-+IHf4JcbnnBl4T52egorXMatil/za0awqzg2Vy6FBgPcBpisDWT2sVz/tNdrK9kAqj+GZG/jZdrOkj7wsrNTKA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.51.tgz", + "integrity": "sha512-7R1/p39M+LSVQVgDVlcY1KKm6kFKjERSX1lipMG51NPcspJD1tmiZSmmBXoY5jhHIu6JL1QkFDTx94gMYK6vfA==", "optional": true }, "esbuild-sunos-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.48.tgz", - "integrity": "sha512-77m8bsr5wOpOWbGi9KSqDphcq6dFeJyun8TA+12JW/GAjyfTwVtOnN8DOt6DSPUfEV+ltVMNqtXUeTeMAxl5KA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.51.tgz", + "integrity": "sha512-HoHaCswHxLEYN8eBTtyO0bFEWvA3Kdb++hSQ/lLG7TyKF69TeSG0RNoBRAs45x/oCeWaTDntEZlYwAfQlhEtJA==", "optional": true }, "esbuild-windows-32": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.48.tgz", - "integrity": "sha512-EPgRuTPP8vK9maxpTGDe5lSoIBHGKO/AuxDncg5O3NkrPeLNdvvK8oywB0zGaAZXxYWfNNSHskvvDgmfVTguhg==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.51.tgz", + "integrity": "sha512-4rtwSAM35A07CBt1/X8RWieDj3ZUHQqUOaEo5ZBs69rt5WAFjP4aqCIobdqOy4FdhYw1yF8Z0xFBTyc9lgPtEg==", "optional": true }, "esbuild-windows-64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.48.tgz", - "integrity": "sha512-YmpXjdT1q0b8ictSdGwH3M8VCoqPpK1/UArze3X199w6u8hUx3V8BhAi1WjbsfDYRBanVVtduAhh2sirImtAvA==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.51.tgz", + "integrity": "sha512-HoN/5HGRXJpWODprGCgKbdMvrC3A2gqvzewu2eECRw2sYxOUoh2TV1tS+G7bHNapPGI79woQJGV6pFH7GH7qnA==", "optional": true }, "esbuild-windows-arm64": { - "version": "0.14.48", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.48.tgz", - "integrity": "sha512-HHaOMCsCXp0rz5BT2crTka6MPWVno121NKApsGs/OIW5QC0ggC69YMGs1aJct9/9FSUF4A1xNE/cLvgB5svR4g==", + "version": "0.14.51", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.51.tgz", + "integrity": "sha512-JQDqPjuOH7o+BsKMSddMfmVJXrnYZxXDHsoLHc0xgmAZkOOCflRmC43q31pk79F9xuyWY45jDBPolb5ZgGOf9g==", "optional": true }, "escalade": { @@ -1553,9 +1565,9 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "luxon": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.4.0.tgz", - "integrity": "sha512-w+NAwWOUL5hO0SgwOHsMBAmZ15SoknmQXhSO0hIbJCAmPKSsGeK8MlmhYh2w6Iib38IxN2M+/ooXWLbeis7GuA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.0.tgz", + "integrity": "sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A==" }, "mime": { "version": "1.6.0", diff --git a/package.json b/package.json index a7df54be8e0..578ceea2f16 100644 --- a/package.json +++ b/package.json @@ -30,18 +30,18 @@ "tabWidth": 4 }, "dependencies": { - "@octokit/graphql": "^4.8.0", + "@octokit/graphql": "^5.0.0", "@types/cli-progress": "^3.11.0", - "@types/luxon": "^2.3.2", - "@types/node": "^18.0.2", + "@types/luxon": "^3.0.0", + "@types/node": "^18.6.2", "@types/yargs": "^17.0.10", - "chart.js": "^3.8.0", + "chart.js": "^3.8.2", "chartjs-adapter-luxon": "^1.1.0", "cli-progress": "^3.11.2", "dotenv": "^16.0.1", - "esbuild": "^0.14.48", + "esbuild": "^0.14.51", "http-server": "^14.1.1", - "luxon": "^2.4.0", + "luxon": "^2.5.0", "typescript": "^4.7.4", "yargs": "^17.5.1" } diff --git a/src/status_chart.ts b/src/status_chart.ts index 0680be70bc5..e731023658f 100644 --- a/src/status_chart.ts +++ b/src/status_chart.ts @@ -9,409 +9,413 @@ import { DailyRow, daily_table } from './daily_table'; import { WeeklyRow, weekly_table } from './weekly_table'; import { MonthlyRow, monthly_table } from './monthly_table'; -type StlDataPoint = { - x: string; - y: number | null; -}; - -function get_values( - table: TimelyRow[], - get_y: (row: TimelyRow) => number | null | undefined -) { - const datapoints: StlDataPoint[] = []; - for (const row of table) { - const y = get_y(row); - if (y !== undefined) { - datapoints.push({ x: row.date, y: y }); +function load_charts() { + type StlDataPoint = { + x: string; + y: number | null; + }; + + function get_values( + table: TimelyRow[], + get_y: (row: TimelyRow) => number | null | undefined + ) { + const datapoints: StlDataPoint[] = []; + for (const row of table) { + const y = get_y(row); + if (y !== undefined) { + datapoints.push({ x: row.date, y: y }); + } } + return datapoints; } - return datapoints; -} -function get_daily_values(key: Exclude) { - return get_values(daily_table, row => row[key]); -} + function get_daily_values(key: Exclude) { + return get_values(daily_table, row => row[key]); + } -function get_weekly_values(key: Exclude) { - return get_values(weekly_table, row => row[key]); -} + function get_weekly_values(key: Exclude) { + return get_values(weekly_table, row => row[key]); + } -function get_monthly_values(key: Exclude) { - return get_values(monthly_table, row => row[key]); -} + function get_monthly_values(key: Exclude) { + return get_values(monthly_table, row => row[key]); + } -type AxisID = `${string}Axis`; + type AxisID = `${string}Axis`; + + type ColorName = `--color-${string}`; + + class DatasetInfo { + url_key: string; + chart_label: string; + yAxisID: AxisID; + color_name: ColorName; + default_hidden: boolean; + + constructor( + url_key: string, + chart_label: string, + yAxisID: AxisID, + color_name: ColorName, + default_hidden: boolean = false + ) { + this.url_key = url_key; + this.chart_label = chart_label; + this.yAxisID = yAxisID; + this.color_name = color_name; + this.default_hidden = default_hidden; + } + } -type ColorName = `--color-${string}`; + class DatasetInfoMaps { + static url_key = new Map(); + static chart_label = new Map(); + + static { + const arr = [ + new DatasetInfo('cxx17', 'C++17 Features', 'smallAxis', '--color-severe-emphasis'), + new DatasetInfo('cxx20', 'C++20 Features', 'smallAxis', '--color-sponsors-emphasis'), + new DatasetInfo('cxx23', 'C++23 Features', 'smallAxis', '--color-done-emphasis'), + new DatasetInfo('lwg', 'LWG Resolutions', 'smallAxis', '--color-success-emphasis'), + new DatasetInfo('pr', 'Pull Requests', 'smallAxis', '--color-accent-emphasis'), + new DatasetInfo('vso', 'Old Bugs', 'largeAxis', '--color-scale-red-7'), + new DatasetInfo('bug', 'GitHub Bugs', 'largeAxis', '--color-danger-emphasis'), + new DatasetInfo('issue', 'GitHub Issues', 'largeAxis', '--color-neutral-emphasis'), + new DatasetInfo('libcxx', 'Skipped Libcxx Tests', 'largeAxis', '--color-attention-emphasis'), + + new DatasetInfo('avg_age', 'Average Age', 'leftAxis', '--color-neutral-emphasis', true), + new DatasetInfo('avg_wait', 'Average Wait', 'leftAxis', '--color-sponsors-emphasis', true), + new DatasetInfo('sum_age', 'Combined Age', 'rightAxis', '--color-fg-default'), + new DatasetInfo('sum_wait', 'Combined Wait', 'rightAxis', '--color-done-emphasis'), + + new DatasetInfo('merged', 'Line: Sliding Window', 'mergeAxis', '--color-accent-emphasis'), + new DatasetInfo('merge_bar', 'Bars: Calendar Months', 'mergeAxis', '--color-border-default'), + ]; + + for (const elem of arr) { + this.url_key.set(elem.url_key, elem); + this.chart_label.set(elem.chart_label, elem); + } + } -class DatasetInfo { - url_key: string; - chart_label: string; - yAxisID: AxisID; - color_name: ColorName; - default_hidden: boolean; + static lookup(field: 'url_key' | 'chart_label', value: string) { + const ret = this[field].get(value); - constructor( - url_key: string, - chart_label: string, - yAxisID: AxisID, - color_name: ColorName, - default_hidden: boolean = false - ) { - this.url_key = url_key; - this.chart_label = chart_label; - this.yAxisID = yAxisID; - this.color_name = color_name; - this.default_hidden = default_hidden; - } -} + if (ret === undefined) { + throw new Error('DatasetInfoMaps.lookup() should always find the value.'); + } -class DatasetInfoMaps { - static url_key = new Map(); - static chart_label = new Map(); - - static { - const arr = [ - new DatasetInfo('cxx17', 'C++17 Features', 'smallAxis', '--color-severe-emphasis'), - new DatasetInfo('cxx20', 'C++20 Features', 'smallAxis', '--color-sponsors-emphasis'), - new DatasetInfo('cxx23', 'C++23 Features', 'smallAxis', '--color-done-emphasis'), - new DatasetInfo('lwg', 'LWG Resolutions', 'smallAxis', '--color-success-emphasis'), - new DatasetInfo('pr', 'Pull Requests', 'smallAxis', '--color-accent-emphasis'), - new DatasetInfo('vso', 'Old Bugs', 'largeAxis', '--color-scale-red-7'), - new DatasetInfo('bug', 'GitHub Bugs', 'largeAxis', '--color-danger-emphasis'), - new DatasetInfo('issue', 'GitHub Issues', 'largeAxis', '--color-neutral-emphasis'), - new DatasetInfo('libcxx', 'Skipped Libcxx Tests', 'largeAxis', '--color-attention-emphasis'), - - new DatasetInfo('avg_age', 'Average Age', 'leftAxis', '--color-neutral-emphasis', true), - new DatasetInfo('avg_wait', 'Average Wait', 'leftAxis', '--color-sponsors-emphasis', true), - new DatasetInfo('sum_age', 'Combined Age', 'rightAxis', '--color-fg-default'), - new DatasetInfo('sum_wait', 'Combined Wait', 'rightAxis', '--color-done-emphasis'), - - new DatasetInfo('merged', 'Line: Sliding Window', 'mergeAxis', '--color-accent-emphasis'), - new DatasetInfo('merge_bar', 'Bars: Calendar Months', 'mergeAxis', '--color-border-default'), - ]; - - for (const elem of arr) { - this.url_key.set(elem.url_key, elem); - this.chart_label.set(elem.chart_label, elem); + return ret; } } - static lookup(field: 'url_key' | 'chart_label', value: string) { - const ret = this[field].get(value); + const url_search_params = new URLSearchParams(window.location.search); + const hide_string = 'n'; + const show_string = 'y'; - if (ret === undefined) { - throw new Error('DatasetInfoMaps.lookup() should always find the value.'); - } + const css_style_declaration = window.getComputedStyle(document.documentElement); - return ret; + function get_css_property(property_name: string) { + return css_style_declaration.getPropertyValue(property_name); } -} -const url_search_params = new URLSearchParams(window.location.search); -const hide_string = 'n'; -const show_string = 'y'; + function get_dataset_properties(url_key: string) { + const { chart_label, yAxisID, color_name, default_hidden } = DatasetInfoMaps.lookup('url_key', url_key); -const css_style_declaration = window.getComputedStyle(document.documentElement); + let hidden: boolean; -function get_css_property(property_name: string) { - return css_style_declaration.getPropertyValue(property_name); -} + const value = url_search_params.get(url_key); -function get_dataset_properties(url_key: string) { - const { chart_label, yAxisID, color_name, default_hidden } = DatasetInfoMaps.lookup('url_key', url_key); + if (value === hide_string) { + hidden = true; + } else if (value === show_string) { + hidden = false; + } else { + hidden = default_hidden; + } - let hidden: boolean; + const color = get_css_property(color_name); - const value = url_search_params.get(url_key); + return { + label: chart_label, + yAxisID: yAxisID, + borderColor: color, + backgroundColor: color, + hidden: hidden, + }; + } + + function update_url() { + let url = window.location.pathname; - if (value === hide_string) { - hidden = true; - } else if (value === show_string) { - hidden = false; - } else { - hidden = default_hidden; + const params_string = `${url_search_params}`; + + if (params_string.length > 0) { + url += `?${params_string}`; + } + + window.history.replaceState({}, '', url); } - const color = get_css_property(color_name); + const status_data = { + datasets: [ + { + data: get_weekly_values('cxx17'), + ...get_dataset_properties('cxx17'), + }, + { + data: get_weekly_values('cxx20').concat(get_daily_values('cxx20')), + ...get_dataset_properties('cxx20'), + }, + { + data: get_daily_values('cxx23'), + ...get_dataset_properties('cxx23'), + }, + { + data: get_weekly_values('lwg').concat(get_daily_values('lwg')), + ...get_dataset_properties('lwg'), + }, + { + data: get_daily_values('pr'), + ...get_dataset_properties('pr'), + }, + { + data: get_weekly_values('vso'), + ...get_dataset_properties('vso'), + }, + { + data: get_daily_values('bug'), + ...get_dataset_properties('bug'), + }, + { + data: get_daily_values('issue'), + ...get_dataset_properties('issue'), + }, + { + data: get_weekly_values('libcxx'), + ...get_dataset_properties('libcxx'), + }, + ], + }; - return { - label: chart_label, - yAxisID: yAxisID, - borderColor: color, - backgroundColor: color, - hidden: hidden, + const age_data = { + datasets: [ + { + data: get_daily_values('avg_age'), + ...get_dataset_properties('avg_age'), + }, + { + data: get_daily_values('avg_wait'), + ...get_dataset_properties('avg_wait'), + }, + { + data: get_daily_values('sum_age'), + ...get_dataset_properties('sum_age'), + }, + { + data: get_daily_values('sum_wait'), + ...get_dataset_properties('sum_wait'), + }, + ], }; -} -function update_url() { - let url = window.location.pathname; + const merge_data = { + datasets: [ + { + data: get_daily_values('merged'), + ...get_dataset_properties('merged'), + }, + { + type: 'bar' as const, + data: get_monthly_values('merge_bar'), + ...get_dataset_properties('merge_bar'), + }, + ], + }; - const params_string = `${url_search_params}`; + type Timeframe = { + min: string; + time: { unit: TimeUnit }; + }; - if (params_string.length > 0) { - url += `?${params_string}`; - } + const timeframe_all: Timeframe = { + min: '2017-06-09', + time: { unit: 'year' }, + }; + const timeframe_github: Timeframe = { + min: '2019-09-20', // first Friday after 2019-09-16 + time: { unit: 'year' }, + }; + const timeframe_2021: Timeframe = { + min: '2021-01-01', + time: { unit: 'quarter' }, + }; + const timeframes = [timeframe_all, timeframe_github, timeframe_2021]; + const timeframe_github_idx = 1; + let timeframe_idx = timeframe_github_idx; - window.history.replaceState({}, '', url); -} + function legend_click_handler(_event: ChartEvent, legend_item: LegendItem, legend: LegendElement<'bar' | 'line'>) { + const ch = legend.chart; + const index = legend_item.datasetIndex; -const status_data = { - datasets: [ - { - data: get_weekly_values('cxx17'), - ...get_dataset_properties('cxx17'), - }, - { - data: get_weekly_values('cxx20').concat(get_daily_values('cxx20')), - ...get_dataset_properties('cxx20'), - }, - { - data: get_daily_values('cxx23'), - ...get_dataset_properties('cxx23'), - }, - { - data: get_weekly_values('lwg').concat(get_daily_values('lwg')), - ...get_dataset_properties('lwg'), - }, - { - data: get_daily_values('pr'), - ...get_dataset_properties('pr'), - }, - { - data: get_weekly_values('vso'), - ...get_dataset_properties('vso'), - }, - { - data: get_daily_values('bug'), - ...get_dataset_properties('bug'), - }, - { - data: get_daily_values('issue'), - ...get_dataset_properties('issue'), - }, - { - data: get_weekly_values('libcxx'), - ...get_dataset_properties('libcxx'), - }, - ], -}; - -const age_data = { - datasets: [ - { - data: get_daily_values('avg_age'), - ...get_dataset_properties('avg_age'), - }, - { - data: get_daily_values('avg_wait'), - ...get_dataset_properties('avg_wait'), - }, - { - data: get_daily_values('sum_age'), - ...get_dataset_properties('sum_age'), - }, - { - data: get_daily_values('sum_wait'), - ...get_dataset_properties('sum_wait'), - }, - ], -}; - -const merge_data = { - datasets: [ - { - data: get_daily_values('merged'), - ...get_dataset_properties('merged'), - }, - { - type: 'bar' as const, - data: get_monthly_values('merge_bar'), - ...get_dataset_properties('merge_bar'), - }, - ], -}; - -type Timeframe = { - min: string; - time: { unit: TimeUnit }; -}; - -const timeframe_all: Timeframe = { - min: '2017-06-09', - time: { unit: 'year' }, -}; -const timeframe_github: Timeframe = { - min: '2019-09-20', // first Friday after 2019-09-16 - time: { unit: 'year' }, -}; -const timeframe_2021: Timeframe = { - min: '2021-01-01', - time: { unit: 'quarter' }, -}; -const timeframes = [timeframe_all, timeframe_github, timeframe_2021]; -const timeframe_github_idx = 1; -let timeframe_idx = timeframe_github_idx; - -function legend_click_handler(_event: ChartEvent, legend_item: LegendItem, legend: LegendElement<'bar' | 'line'>) { - const ch = legend.chart; - const index = legend_item.datasetIndex; - - const becoming_hidden = ch.isDatasetVisible(index); - - if (becoming_hidden) { - ch.hide(index); - } else { - ch.show(index); - } + if (index === undefined) { + throw new Error('legend_click_handler() was surprised by legend_item.datasetIndex.'); + } - legend_item.hidden = becoming_hidden; + const becoming_hidden = ch.isDatasetVisible(index); - const { url_key, default_hidden } = DatasetInfoMaps.lookup('chart_label', legend_item.text); + if (becoming_hidden) { + ch.hide(index); + } else { + ch.show(index); + } - if (becoming_hidden === default_hidden) { - url_search_params.delete(url_key); - } else { - url_search_params.set(url_key, becoming_hidden ? hide_string : show_string); - url_search_params.sort(); - } + legend_item.hidden = becoming_hidden; - update_url(); -} + const { url_key, default_hidden } = DatasetInfoMaps.lookup('chart_label', legend_item.text); -function make_common_options() { - return { - animation: { - duration: 0, - }, - elements: { - line: { - borderCapStyle: 'round' as const, - borderJoinStyle: 'round' as const, - fill: false, - spanGaps: false, - }, - point: { - radius: 0, + if (becoming_hidden === default_hidden) { + url_search_params.delete(url_key); + } else { + url_search_params.set(url_key, becoming_hidden ? hide_string : show_string); + url_search_params.sort(); + } + + update_url(); + } + + function make_common_options() { + return { + animation: { + duration: 0, }, - }, - hover: { - mode: 'nearest' as const, - }, - plugins: { - legend: { - display: true, - labels: { - color: get_css_property('--color-fg-default'), + elements: { + line: { + borderCapStyle: 'round' as const, + borderJoinStyle: 'round' as const, + fill: false, + spanGaps: false, + }, + point: { + radius: 0, }, - onClick: legend_click_handler, }, - tooltip: { + hover: { mode: 'nearest' as const, - intersect: false, }, - }, - onResize: (chart: Chart, size: { width: number; height: number }) => { - if (chart.options.plugins?.legend === undefined) { - throw new Error('onResize was surprised by chart.options.'); - } - chart.options.plugins.legend.display = size.width > 670; - }, - }; -} + plugins: { + legend: { + display: true, + labels: { + color: get_css_property('--color-fg-default'), + }, + onClick: legend_click_handler, + }, + tooltip: { + mode: 'nearest' as const, + intersect: false, + }, + }, + onResize: (chart: Chart, size: { width: number; height: number }) => { + if (chart.options.plugins?.legend === undefined) { + throw new Error('onResize was surprised by chart.options.'); + } + chart.options.plugins.legend.display = size.width > 670; + }, + }; + } -function make_xAxis(timeframe: Timeframe) { - return { - type: 'time' as const, - min: timeframe.min, - max: daily_table[daily_table.length - 1].date, - grid: { - borderColor: get_css_property('--color-border-default'), - color: get_css_property('--color-border-default'), + function make_xAxis(timeframe: Timeframe) { + return { + type: 'time' as const, + min: timeframe.min, + max: daily_table[daily_table.length - 1].date, + grid: { + borderColor: get_css_property('--color-border-default'), + color: get_css_property('--color-border-default'), + offset: false, + }, offset: false, - }, - offset: false, - title: { - color: get_css_property('--color-fg-default'), - }, - ticks: { - color: get_css_property('--color-fg-default'), - }, - time: { - parser: 'yyyy-MM-dd', - tooltipFormat: 'MMM d, yyyy', - unit: timeframe.time.unit, - displayFormats: { - quarter: 'MMM yyyy', + title: { + color: get_css_property('--color-fg-default'), + }, + ticks: { + color: get_css_property('--color-fg-default'), + }, + time: { + parser: 'yyyy-MM-dd', + tooltipFormat: 'MMM d, yyyy', + unit: timeframe.time.unit, + displayFormats: { + quarter: 'MMM yyyy', + }, + }, + }; + } + + function make_yAxis(position: 'left' | 'right', title_text: string, min: number, max: number, stepSize: number) { + return { + type: 'linear' as const, + display: 'auto' as const, + position: position, + title: { + color: get_css_property('--color-fg-default'), + display: true, + text: title_text, + }, + min: min, + max: max, + grid: { + borderColor: get_css_property('--color-border-default'), + color: get_css_property('--color-border-default'), + }, + ticks: { + color: get_css_property('--color-fg-default'), + stepSize: stepSize, }, + }; + } + + const status_options = { + ...make_common_options(), + scales: { + x: make_xAxis(timeframes[timeframe_idx]), + largeAxis: make_yAxis('left', 'Bugs, Issues, Skipped Libcxx Tests', 0, 800, 100), + smallAxis: make_yAxis('right', 'Features, LWG Resolutions, Pull Requests', 0, 80, 10), }, }; -} -function make_yAxis(position: 'left' | 'right', title_text: string, min: number, max: number, stepSize: number) { - return { - type: 'linear' as const, - display: 'auto' as const, - position: position, - title: { - color: get_css_property('--color-fg-default'), - display: true, - text: title_text, - }, - min: min, - max: max, - grid: { - borderColor: get_css_property('--color-border-default'), - color: get_css_property('--color-border-default'), + const age_options = { + ...make_common_options(), + scales: { + x: make_xAxis(timeframe_github), + leftAxis: make_yAxis('left', 'Average Age, Average Wait (days)', 0, 500, 100), + rightAxis: make_yAxis('right', 'Combined Age, Combined Wait (PR-months)', 0, 500, 100), }, - ticks: { - color: get_css_property('--color-fg-default'), - stepSize: stepSize, + }; + + const merge_options = { + ...make_common_options(), + scales: { + x: make_xAxis(timeframe_github), + mergeAxis: make_yAxis('right', 'PRs / month', 0, 80, 10), }, }; -} -const status_options = { - ...make_common_options(), - scales: { - x: make_xAxis(timeframes[timeframe_idx]), - largeAxis: make_yAxis('left', 'Bugs, Issues, Skipped Libcxx Tests', 0, 800, 100), - smallAxis: make_yAxis('right', 'Features, LWG Resolutions, Pull Requests', 0, 80, 10), - }, -}; - -const age_options = { - ...make_common_options(), - scales: { - x: make_xAxis(timeframe_github), - leftAxis: make_yAxis('left', 'Average Age, Average Wait (days)', 0, 500, 100), - rightAxis: make_yAxis('right', 'Combined Age, Combined Wait (PR-months)', 0, 500, 100), - }, -}; - -const merge_options = { - ...make_common_options(), - scales: { - x: make_xAxis(timeframe_github), - mergeAxis: make_yAxis('right', 'PRs / month', 0, 80, 10), - }, -}; - -function getElementByIdAs(id: string, type: new () => Type) { - const element = document.getElementById(id); - - if (element === null) { - throw new Error(`document.getElementById('${id}') returned null.`); - } + function getElementByIdAs(id: string, type: new () => Type) { + const element = document.getElementById(id); - if (element instanceof type) { - return element as Type; - } + if (element === null) { + throw new Error(`document.getElementById('${id}') returned null.`); + } - throw new Error(`document.getElementById('${id}') returned an unexpected type.`); -} + if (element instanceof type) { + return element as Type; + } + + throw new Error(`document.getElementById('${id}') returned an unexpected type.`); + } -function load_charts() { const status_chart = new Chart('statusChart', { type: 'line', data: status_data, @@ -540,4 +544,4 @@ function load_charts() { } } -load_charts(); +window.addEventListener('load', _event => load_charts()); // wait for stylesheets to finish loading diff --git a/src/weekly_table.ts b/src/weekly_table.ts index 7c0bf7a5828..6dde7ea9714 100644 --- a/src/weekly_table.ts +++ b/src/weekly_table.ts @@ -274,4 +274,8 @@ export const weekly_table: WeeklyRow[] = [ { date: '2022-06-17', vso: 173, libcxx: 614 }, { date: '2022-06-24', vso: 177, libcxx: 614 }, { date: '2022-07-01', vso: 175, libcxx: 614 }, + { date: '2022-07-08', vso: 174, libcxx: 614 }, + { date: '2022-07-15', vso: 173, libcxx: 581 }, + { date: '2022-07-22', vso: 172, libcxx: 581 }, + { date: '2022-07-29', vso: 174, libcxx: 584 }, ];