From f04038fdadae15264f6017987683ba47469d4412 Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 17 May 2024 11:33:05 -0700 Subject: [PATCH 01/22] Add d3 and fix vulnerabilities Signed-off-by: Frances Thai --- web/vtadmin/package-lock.json | 1878 +++++++++++++-------------------- web/vtadmin/package.json | 3 +- 2 files changed, 751 insertions(+), 1130 deletions(-) diff --git a/web/vtadmin/package-lock.json b/web/vtadmin/package-lock.json index 2257ad058f8..d37fb95bbef 100644 --- a/web/vtadmin/package-lock.json +++ b/web/vtadmin/package-lock.json @@ -14,6 +14,7 @@ "@types/node": "^16.11.7", "@types/react-router-dom": "^5.3.3", "classnames": "^2.3.2", + "d3": "^7.9.0", "dayjs": "^1.11.7", "downshift": "^7.2.0", "highcharts": "^10.3.3", @@ -51,7 +52,7 @@ "i": "^0.3.7", "jsdom": "^21.1.1", "msw": "^0.36.8", - "npm": "^9.6.3", + "npm": "^10.8.0", "postcss": "^8.4.31", "prettier": "^2.2.1", "protobufjs-cli": "^1.1.1", @@ -7017,6 +7018,91 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-color": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", @@ -7025,6 +7111,28 @@ "node": ">=12" } }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-dispatch": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", @@ -7045,6 +7153,41 @@ "node": ">=12" } }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/d3-ease": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", @@ -7053,6 +7196,57 @@ "node": ">=12" } }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, "node_modules/d3-interpolate": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", @@ -7064,6 +7258,65 @@ "node": ">=12" } }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-selection": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", @@ -7072,6 +7325,39 @@ "node": ">=12" } }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-timer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", @@ -7327,6 +7613,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -9229,6 +9523,14 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, "node_modules/is-array-buffer": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", @@ -10825,9 +11127,9 @@ } }, "node_modules/npm": { - "version": "9.9.3", - "resolved": "https://registry.npmjs.org/npm/-/npm-9.9.3.tgz", - "integrity": "sha512-Z1l+rcQ5kYb17F3hHtO601arEpvdRYnCLtg8xo3AGtyj3IthwaraEOexI9903uANkifFbqHC8hT53KIrozWg8A==", + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.0.tgz", + "integrity": "sha512-wh93uRczgp7HDnPMiLXcCkv2hagdJS0zJ9KT/31d0FoXP02+qgN2AOwpaW85fxRWkinl2rELfPw+CjBXW48/jQ==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -10836,15 +11138,15 @@ "@npmcli/map-workspaces", "@npmcli/package-json", "@npmcli/promise-spawn", + "@npmcli/redact", "@npmcli/run-script", + "@sigstore/tuf", "abbrev", "archy", "cacache", "chalk", "ci-info", "cli-columns", - "cli-table3", - "columnify", "fastest-levenshtein", "fs-minipass", "glob", @@ -10880,7 +11182,6 @@ "npm-profile", "npm-registry-fetch", "npm-user-validate", - "npmlog", "p-map", "pacote", "parse-conflict-json", @@ -10888,7 +11189,6 @@ "qrcode-terminal", "read", "semver", - "sigstore", "spdx-expression-parse", "ssri", "supports-color", @@ -10901,83 +11201,74 @@ "write-file-atomic" ], "dev": true, - "workspaces": [ - "docs", - "smoke-tests", - "mock-globals", - "mock-registry", - "workspaces/*" - ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^6.5.0", - "@npmcli/config": "^6.4.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/map-workspaces": "^3.0.4", - "@npmcli/package-json": "^4.0.1", - "@npmcli/promise-spawn": "^6.0.2", - "@npmcli/run-script": "^6.0.2", + "@npmcli/arborist": "^7.5.2", + "@npmcli/config": "^8.3.2", + "@npmcli/fs": "^3.1.1", + "@npmcli/map-workspaces": "^3.0.6", + "@npmcli/package-json": "^5.1.0", + "@npmcli/promise-spawn": "^7.0.2", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "@sigstore/tuf": "^2.3.3", "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^17.1.4", + "cacache": "^18.0.3", "chalk": "^5.3.0", "ci-info": "^4.0.0", "cli-columns": "^4.0.0", - "cli-table3": "^0.6.3", - "columnify": "^1.6.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^10.3.10", + "glob": "^10.3.15", "graceful-fs": "^4.2.11", - "hosted-git-info": "^6.1.1", - "ini": "^4.1.1", - "init-package-json": "^5.0.0", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^3.0.1", - "libnpmaccess": "^7.0.2", - "libnpmdiff": "^5.0.20", - "libnpmexec": "^6.0.4", - "libnpmfund": "^4.2.1", - "libnpmhook": "^9.0.3", - "libnpmorg": "^5.0.4", - "libnpmpack": "^5.0.20", - "libnpmpublish": "^7.5.1", - "libnpmsearch": "^6.0.2", - "libnpmteam": "^5.0.3", - "libnpmversion": "^4.0.2", - "make-fetch-happen": "^11.1.1", - "minimatch": "^9.0.3", - "minipass": "^7.0.4", + "hosted-git-info": "^7.0.2", + "ini": "^4.1.2", + "init-package-json": "^6.0.3", + "is-cidr": "^5.0.5", + "json-parse-even-better-errors": "^3.0.2", + "libnpmaccess": "^8.0.6", + "libnpmdiff": "^6.1.2", + "libnpmexec": "^8.1.1", + "libnpmfund": "^5.0.10", + "libnpmhook": "^10.0.5", + "libnpmorg": "^6.0.6", + "libnpmpack": "^7.0.2", + "libnpmpublish": "^9.0.8", + "libnpmsearch": "^7.0.5", + "libnpmteam": "^6.0.5", + "libnpmversion": "^6.0.2", + "make-fetch-happen": "^13.0.1", + "minimatch": "^9.0.4", + "minipass": "^7.1.1", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^9.4.1", - "nopt": "^7.2.0", - "normalize-package-data": "^5.0.0", + "node-gyp": "^10.1.0", + "nopt": "^7.2.1", + "normalize-package-data": "^6.0.1", "npm-audit-report": "^5.0.0", "npm-install-checks": "^6.3.0", - "npm-package-arg": "^10.1.0", - "npm-pick-manifest": "^8.0.2", - "npm-profile": "^7.0.1", - "npm-registry-fetch": "^14.0.5", - "npm-user-validate": "^2.0.0", - "npmlog": "^7.0.1", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.1", + "npm-profile": "^10.0.0", + "npm-registry-fetch": "^17.0.1", + "npm-user-validate": "^2.0.1", "p-map": "^4.0.0", - "pacote": "^15.2.0", + "pacote": "^18.0.6", "parse-conflict-json": "^3.0.1", - "proc-log": "^3.0.0", + "proc-log": "^4.2.0", "qrcode-terminal": "^0.12.0", - "read": "^2.1.0", - "semver": "^7.6.0", - "sigstore": "^1.9.0", - "spdx-expression-parse": "^3.0.1", - "ssri": "^10.0.5", + "read": "^3.0.1", + "semver": "^7.6.2", + "spdx-expression-parse": "^4.0.0", + "ssri": "^10.0.6", "supports-color": "^9.4.0", - "tar": "^6.2.0", + "tar": "^6.2.1", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", "treeverse": "^3.0.0", - "validate-npm-package-name": "^5.0.0", - "which": "^3.0.1", + "validate-npm-package-name": "^5.0.1", + "which": "^4.0.0", "write-file-atomic": "^5.0.1" }, "bin": { @@ -10985,7 +11276,7 @@ "npx": "bin/npx-cli.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-run-path": { @@ -11000,22 +11291,6 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/@colors/colors": { - "version": "1.5.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/npm/node_modules/@gar/promisify": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/@isaacs/cliui": { "version": "8.0.2", "dev": true, @@ -11089,43 +11364,61 @@ "inBundle": true, "license": "ISC" }, + "node_modules/npm/node_modules/@npmcli/agent": { + "version": "2.2.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "6.5.1", + "version": "7.5.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.0", - "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/fs": "^3.1.1", + "@npmcli/installed-package-contents": "^2.1.0", "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^5.0.0", + "@npmcli/metavuln-calculator": "^7.1.1", "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^4.0.0", + "@npmcli/package-json": "^5.1.0", "@npmcli/query": "^3.1.0", - "@npmcli/run-script": "^6.0.0", - "bin-links": "^4.0.1", - "cacache": "^17.0.4", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "bin-links": "^4.0.4", + "cacache": "^18.0.3", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^6.1.1", - "json-parse-even-better-errors": "^3.0.0", + "hosted-git-info": "^7.0.2", + "json-parse-even-better-errors": "^3.0.2", "json-stringify-nice": "^1.1.4", - "minimatch": "^9.0.0", - "nopt": "^7.0.0", + "lru-cache": "^10.2.2", + "minimatch": "^9.0.4", + "nopt": "^7.2.1", "npm-install-checks": "^6.2.0", - "npm-package-arg": "^10.1.0", - "npm-pick-manifest": "^8.0.1", - "npm-registry-fetch": "^14.0.3", - "npmlog": "^7.0.1", - "pacote": "^15.0.8", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.1", + "npm-registry-fetch": "^17.0.1", + "pacote": "^18.0.6", "parse-conflict-json": "^3.0.0", - "proc-log": "^3.0.0", + "proc-log": "^4.2.0", + "proggy": "^2.0.0", "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.2", + "promise-call-limit": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", - "ssri": "^10.0.1", + "ssri": "^10.0.6", "treeverse": "^3.0.0", "walk-up-path": "^3.0.1" }, @@ -11133,42 +11426,30 @@ "arborist": "bin/index.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "6.4.1", + "version": "8.3.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/map-workspaces": "^3.0.2", "ci-info": "^4.0.0", - "ini": "^4.1.0", - "nopt": "^7.0.0", - "proc-log": "^3.0.0", + "ini": "^4.1.2", + "nopt": "^7.2.1", + "proc-log": "^4.2.0", "read-package-json-fast": "^3.0.2", "semver": "^7.3.5", "walk-up-path": "^3.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "ansi-styles": "^4.3.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/fs": { - "version": "3.1.0", + "version": "3.1.1", "dev": true, "inBundle": true, "license": "ISC", @@ -11180,26 +11461,26 @@ } }, "node_modules/npm/node_modules/@npmcli/git": { - "version": "4.1.0", + "version": "5.0.7", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/promise-spawn": "^6.0.0", - "lru-cache": "^7.4.4", - "npm-pick-manifest": "^8.0.0", - "proc-log": "^3.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", - "which": "^3.0.0" + "which": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", + "version": "2.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -11208,14 +11489,14 @@ "npm-normalize-package-bin": "^3.0.0" }, "bin": { - "installed-package-contents": "lib/index.js" + "installed-package-contents": "bin/index.js" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "3.0.4", + "version": "3.0.6", "dev": true, "inBundle": true, "license": "ISC", @@ -11230,31 +11511,19 @@ } }, "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "5.0.1", + "version": "7.1.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "cacache": "^17.0.0", + "cacache": "^18.0.0", "json-parse-even-better-errors": "^3.0.0", - "pacote": "^15.0.0", + "pacote": "^18.0.0", + "proc-log": "^4.1.0", "semver": "^7.3.5" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@npmcli/move-file": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/name-from-folder": { @@ -11276,33 +11545,33 @@ } }, "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "4.0.1", + "version": "5.1.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^4.1.0", + "@npmcli/git": "^5.0.0", "glob": "^10.2.2", - "hosted-git-info": "^6.1.1", + "hosted-git-info": "^7.0.0", "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "proc-log": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", "semver": "^7.5.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "6.0.2", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "which": "^3.0.0" + "which": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@npmcli/query": { @@ -11317,20 +11586,30 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/@npmcli/redact": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "6.0.2", + "version": "8.1.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/node-gyp": "^3.0.0", - "@npmcli/promise-spawn": "^6.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^3.0.0", - "which": "^3.0.0" + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", + "which": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@pkgjs/parseargs": { @@ -11344,82 +11623,99 @@ } }, "node_modules/npm/node_modules/@sigstore/bundle": { - "version": "1.1.0", + "version": "2.3.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0" + "@sigstore/protobuf-specs": "^0.3.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/core": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", + "version": "0.3.2", "dev": true, "inBundle": true, "license": "Apache-2.0", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@sigstore/sign": { - "version": "1.0.0", + "version": "2.3.1", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "make-fetch-happen": "^11.0.1" + "@sigstore/bundle": "^2.3.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "1.0.3", + "version": "2.3.3", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0", - "tuf-js": "^1.1.7" + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@tootallnate/once": { - "version": "2.0.0", + "node_modules/npm/node_modules/@sigstore/verify": { + "version": "1.2.0", "dev": true, "inBundle": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.1" + }, "engines": { - "node": ">= 10" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@tufjs/canonical-json": { - "version": "1.0.0", + "version": "2.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/@tufjs/models": { - "version": "1.0.4", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@tufjs/canonical-json": "1.0.0", - "minimatch": "^9.0.0" + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/abbrev": { @@ -11432,27 +11728,15 @@ } }, "node_modules/npm/node_modules/agent-base": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/npm/node_modules/agentkeepalive": { - "version": "4.5.0", + "version": "7.1.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "humanize-ms": "^1.2.1" + "debug": "^4.3.4" }, "engines": { - "node": ">= 8.0.0" + "node": ">= 14" } }, "node_modules/npm/node_modules/aggregate-error": { @@ -11478,15 +11762,12 @@ } }, "node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", + "version": "6.2.1", "dev": true, "inBundle": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -11504,15 +11785,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/are-we-there-yet": { - "version": "4.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/balanced-match": { "version": "1.0.2", "dev": true, @@ -11520,7 +11792,7 @@ "license": "MIT" }, "node_modules/npm/node_modules/bin-links": { - "version": "4.0.3", + "version": "4.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -11535,12 +11807,15 @@ } }, "node_modules/npm/node_modules/binary-extensions": { - "version": "2.2.0", + "version": "2.3.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm/node_modules/brace-expansion": { @@ -11552,17 +11827,8 @@ "balanced-match": "^1.0.0" } }, - "node_modules/npm/node_modules/builtins": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/npm/node_modules/cacache": { - "version": "17.1.4", + "version": "18.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -11570,9 +11836,9 @@ "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", - "lru-cache": "^7.7.1", + "lru-cache": "^10.0.1", "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", + "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", @@ -11581,7 +11847,7 @@ "unique-filename": "^3.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/chalk": { @@ -11621,15 +11887,15 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", + "version": "4.0.5", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "ip-regex": "^4.1.0" + "ip-regex": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/npm/node_modules/clean-stack": { @@ -11654,32 +11920,8 @@ "node": ">= 10" } }, - "node_modules/npm/node_modules/cli-table3": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/npm/node_modules/clone": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, "node_modules/npm/node_modules/cmd-shim": { - "version": "6.0.2", + "version": "6.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -11705,46 +11947,12 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/npm/node_modules/columnify": { - "version": "1.6.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/npm/node_modules/common-ancestor-path": { "version": "1.0.1", "dev": true, "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/cross-spawn": { "version": "7.0.3", "dev": true, @@ -11809,24 +12017,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/defaults": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/delegates": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/diff": { "version": "5.2.0", "dev": true, @@ -11916,12 +12106,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/function-bind": { "version": "1.1.2", "dev": true, @@ -11931,42 +12115,23 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/gauge": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^4.0.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/glob": { - "version": "10.3.10", + "version": "10.3.15", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", + "jackspeak": "^2.3.6", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -11978,14 +12143,8 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/hasown": { - "version": "2.0.1", + "version": "2.0.2", "dev": true, "inBundle": true, "license": "MIT", @@ -11997,15 +12156,15 @@ } }, "node_modules/npm/node_modules/hosted-git-info": { - "version": "6.1.1", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "lru-cache": "^7.5.1" + "lru-cache": "^10.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/http-cache-semantics": { @@ -12015,39 +12174,29 @@ "license": "BSD-2-Clause" }, "node_modules/npm/node_modules/http-proxy-agent": { - "version": "5.0.0", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/npm/node_modules/https-proxy-agent": { - "version": "5.0.1", + "version": "7.0.4", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/npm/node_modules/humanize-ms": { - "version": "1.2.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" + "node": ">= 14" } }, "node_modules/npm/node_modules/iconv-lite": { @@ -12064,7 +12213,7 @@ } }, "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.4", + "version": "6.0.5", "dev": true, "inBundle": true, "license": "ISC", @@ -12093,30 +12242,8 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/infer-owner": { - "version": "1.0.4", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/ini": { - "version": "4.1.1", + "version": "4.1.2", "dev": true, "inBundle": true, "license": "ISC", @@ -12125,21 +12252,21 @@ } }, "node_modules/npm/node_modules/init-package-json": { - "version": "5.0.0", + "version": "6.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-package-arg": "^10.0.0", + "@npmcli/package-json": "^5.0.0", + "npm-package-arg": "^11.0.0", "promzard": "^1.0.0", - "read": "^2.0.0", - "read-package-json": "^6.0.0", + "read": "^3.0.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4", "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/ip-address": { @@ -12155,31 +12282,28 @@ "node": ">= 12" } }, - "node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.3", - "dev": true, - "inBundle": true, - "license": "BSD-3-Clause" - }, "node_modules/npm/node_modules/ip-regex": { - "version": "4.3.0", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", + "version": "5.0.5", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "cidr-regex": "^3.1.1" + "cidr-regex": "^4.0.4" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/npm/node_modules/is-core-module": { @@ -12240,7 +12364,7 @@ "license": "MIT" }, "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.1", + "version": "3.0.2", "dev": true, "inBundle": true, "license": "MIT", @@ -12279,219 +12403,205 @@ "license": "MIT" }, "node_modules/npm/node_modules/libnpmaccess": { - "version": "7.0.3", + "version": "8.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-package-arg": "^10.1.0", - "npm-registry-fetch": "^14.0.3" + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "5.0.21", + "version": "6.1.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^6.5.0", - "@npmcli/disparity-colors": "^3.0.0", - "@npmcli/installed-package-contents": "^2.0.2", - "binary-extensions": "^2.2.0", + "@npmcli/arborist": "^7.5.2", + "@npmcli/installed-package-contents": "^2.1.0", + "binary-extensions": "^2.3.0", "diff": "^5.1.0", - "minimatch": "^9.0.0", - "npm-package-arg": "^10.1.0", - "pacote": "^15.0.8", - "tar": "^6.1.13" + "minimatch": "^9.0.4", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "tar": "^6.2.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "6.0.5", + "version": "8.1.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^6.5.0", - "@npmcli/run-script": "^6.0.0", + "@npmcli/arborist": "^7.5.2", + "@npmcli/run-script": "^8.1.0", "ci-info": "^4.0.0", - "npm-package-arg": "^10.1.0", - "npmlog": "^7.0.1", - "pacote": "^15.0.8", - "proc-log": "^3.0.0", - "read": "^2.0.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6", + "proc-log": "^4.2.0", + "read": "^3.0.1", "read-package-json-fast": "^3.0.2", "semver": "^7.3.7", "walk-up-path": "^3.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "4.2.2", + "version": "5.0.10", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^6.5.0" + "@npmcli/arborist": "^7.5.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmhook": { - "version": "9.0.4", + "version": "10.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^14.0.3" + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmorg": { - "version": "5.0.5", + "version": "6.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^14.0.3" + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "5.0.21", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^6.5.0", - "@npmcli/run-script": "^6.0.0", - "npm-package-arg": "^10.1.0", - "pacote": "^15.0.8" + "@npmcli/arborist": "^7.5.2", + "@npmcli/run-script": "^8.1.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.6" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "7.5.2", + "version": "9.0.8", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "ci-info": "^4.0.0", - "normalize-package-data": "^5.0.0", - "npm-package-arg": "^10.1.0", - "npm-registry-fetch": "^14.0.3", - "proc-log": "^3.0.0", + "normalize-package-data": "^6.0.1", + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.2.0", "semver": "^7.3.7", - "sigstore": "^1.4.0", - "ssri": "^10.0.1" + "sigstore": "^2.2.0", + "ssri": "^10.0.6" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmsearch": { - "version": "6.0.3", + "version": "7.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-registry-fetch": "^14.0.3" + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmteam": { - "version": "5.0.4", + "version": "6.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^14.0.3" + "npm-registry-fetch": "^17.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/libnpmversion": { - "version": "4.0.3", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^4.0.1", - "@npmcli/run-script": "^6.0.0", - "json-parse-even-better-errors": "^3.0.0", - "proc-log": "^3.0.0", + "@npmcli/git": "^5.0.7", + "@npmcli/run-script": "^8.1.0", + "json-parse-even-better-errors": "^3.0.2", + "proc-log": "^4.2.0", "semver": "^7.3.7" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/lru-cache": { - "version": "7.18.3", + "version": "10.2.2", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": ">=12" + "node": "14 || >=16.14" } }, "node_modules/npm/node_modules/make-fetch-happen": { - "version": "11.1.1", + "version": "13.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", + "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", + "proc-log": "^4.2.0", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", "ssri": "^10.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/make-fetch-happen/node_modules/minipass": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/minimatch": { - "version": "9.0.3", + "version": "9.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -12506,7 +12616,7 @@ } }, "node_modules/npm/node_modules/minipass": { - "version": "7.0.4", + "version": "7.1.1", "dev": true, "inBundle": true, "license": "ISC", @@ -12515,31 +12625,19 @@ } }, "node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/npm/node_modules/minipass-fetch": { - "version": "3.0.4", + "version": "3.0.5", "dev": true, "inBundle": true, "license": "MIT", @@ -12711,349 +12809,40 @@ } }, "node_modules/npm/node_modules/node-gyp": { - "version": "9.4.1", + "version": "10.1.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", + "glob": "^10.3.10", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", "semver": "^7.3.5", "tar": "^6.1.2", - "which": "^2.0.2" + "which": "^4.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": "^12.13 || ^14.13 || >=16" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/@npmcli/fs": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { - "version": "1.1.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache": { - "version": "16.1.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { - "version": "8.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { - "version": "5.1.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/fs-minipass": { - "version": "2.1.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { - "version": "10.2.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/minipass-fetch": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/nopt": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/node-gyp/node_modules/ssri": { - "version": "9.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/unique-filename": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/unique-slug": { + "node_modules/npm/node_modules/node-gyp/node_modules/proc-log": { "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/node-gyp/node_modules/which": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/nopt": { - "version": "7.2.0", + "version": "7.2.1", "dev": true, "inBundle": true, "license": "ISC", @@ -13068,18 +12857,18 @@ } }, "node_modules/npm/node_modules/normalize-package-data": { - "version": "5.0.0", + "version": "6.0.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^6.0.0", + "hosted-git-info": "^7.0.0", "is-core-module": "^2.8.1", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-audit-report": { @@ -13092,7 +12881,7 @@ } }, "node_modules/npm/node_modules/npm-bundled": { - "version": "3.0.0", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -13125,89 +12914,81 @@ } }, "node_modules/npm/node_modules/npm-package-arg": { - "version": "10.1.0", + "version": "11.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "hosted-git-info": "^6.0.0", - "proc-log": "^3.0.0", + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", "semver": "^7.3.5", "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-packlist": { - "version": "7.0.4", + "version": "8.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "ignore-walk": "^6.0.0" + "ignore-walk": "^6.0.4" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "8.0.2", + "version": "9.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^10.0.0", + "npm-package-arg": "^11.0.0", "semver": "^7.3.5" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-profile": { - "version": "7.0.1", + "version": "10.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0" + "npm-registry-fetch": "^17.0.1", + "proc-log": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=18.0.0" } }, "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "14.0.5", + "version": "17.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "make-fetch-happen": "^11.0.0", - "minipass": "^5.0.0", + "@npmcli/redact": "^2.0.0", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", "minipass-fetch": "^3.0.0", "minipass-json-stream": "^1.0.1", "minizlib": "^2.1.2", - "npm-package-arg": "^10.0.0", - "proc-log": "^3.0.0" + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/npm-registry-fetch/node_modules/minipass": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/npm-user-validate": { - "version": "2.0.0", + "version": "2.0.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -13215,30 +12996,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/npmlog": { - "version": "7.0.1", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "are-we-there-yet": "^4.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^5.0.0", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/once": { - "version": "1.4.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, "node_modules/npm/node_modules/p-map": { "version": "4.0.0", "dev": true, @@ -13255,44 +13012,34 @@ } }, "node_modules/npm/node_modules/pacote": { - "version": "15.2.0", + "version": "18.0.6", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^4.0.0", + "@npmcli/git": "^5.0.0", "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^6.0.1", - "@npmcli/run-script": "^6.0.0", - "cacache": "^17.0.0", - "fs-minipass": "^3.0.0", - "minipass": "^5.0.0", - "npm-package-arg": "^10.0.0", - "npm-packlist": "^7.0.0", - "npm-pick-manifest": "^8.0.0", - "npm-registry-fetch": "^14.0.0", - "proc-log": "^3.0.0", + "@npmcli/package-json": "^5.1.0", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^8.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", "promise-retry": "^2.0.1", - "read-package-json": "^6.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^1.3.0", + "sigstore": "^2.2.0", "ssri": "^10.0.0", "tar": "^6.1.11" }, "bin": { - "pacote": "lib/bin.js" + "pacote": "bin/index.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/pacote/node_modules/minipass": { - "version": "5.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/parse-conflict-json": { @@ -13309,15 +13056,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/npm/node_modules/path-key": { "version": "3.1.1", "dev": true, @@ -13328,32 +13066,23 @@ } }, "node_modules/npm/node_modules/path-scurry": { - "version": "1.10.1", + "version": "1.11.1", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm/node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" - } - }, "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.15", + "version": "6.0.16", "dev": true, "inBundle": true, "license": "MIT", @@ -13366,7 +13095,16 @@ } }, "node_modules/npm/node_modules/proc-log": { - "version": "3.0.0", + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/proggy": { + "version": "2.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -13384,7 +13122,7 @@ } }, "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.2", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", @@ -13412,12 +13150,12 @@ } }, "node_modules/npm/node_modules/promzard": { - "version": "1.0.0", + "version": "1.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "read": "^2.0.0" + "read": "^3.0.1" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -13432,12 +13170,12 @@ } }, "node_modules/npm/node_modules/read": { - "version": "2.1.0", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "mute-stream": "~1.0.0" + "mute-stream": "^1.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -13452,21 +13190,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/read-package-json": { - "version": "6.0.4", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^5.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/read-package-json-fast": { "version": "3.0.2", "dev": true, @@ -13480,20 +13203,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/readable-stream": { - "version": "3.6.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/npm/node_modules/retry": { "version": "0.12.0", "dev": true, @@ -13503,83 +13212,6 @@ "node": ">= 4" } }, - "node_modules/npm/node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", "dev": true, @@ -13588,13 +13220,10 @@ "optional": true }, "node_modules/npm/node_modules/semver": { - "version": "7.6.0", + "version": "7.6.2", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -13602,24 +13231,6 @@ "node": ">=10" } }, - "node_modules/npm/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/shebang-command": { "version": "2.0.0", "dev": true, @@ -13654,22 +13265,20 @@ } }, "node_modules/npm/node_modules/sigstore": { - "version": "1.9.0", + "version": "2.3.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "@sigstore/sign": "^1.0.0", - "@sigstore/tuf": "^1.0.3", - "make-fetch-happen": "^11.0.1" - }, - "bin": { - "sigstore": "bin/sigstore.js" + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "@sigstore/sign": "^2.3.0", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.2.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/smart-buffer": { @@ -13683,7 +13292,7 @@ } }, "node_modules/npm/node_modules/socks": { - "version": "2.8.1", + "version": "2.8.3", "dev": true, "inBundle": true, "license": "MIT", @@ -13697,17 +13306,17 @@ } }, "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "7.0.0", + "version": "8.0.3", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" }, "engines": { - "node": ">= 10" + "node": ">= 14" } }, "node_modules/npm/node_modules/spdx-correct": { @@ -13720,6 +13329,16 @@ "spdx-license-ids": "^3.0.0" } }, + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/npm/node_modules/spdx-exceptions": { "version": "2.5.0", "dev": true, @@ -13727,7 +13346,7 @@ "license": "CC-BY-3.0" }, "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", @@ -13742,8 +13361,14 @@ "inBundle": true, "license": "CC0-1.0" }, + "node_modules/npm/node_modules/sprintf-js": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" + }, "node_modules/npm/node_modules/ssri": { - "version": "10.0.5", + "version": "10.0.6", "dev": true, "inBundle": true, "license": "ISC", @@ -13754,15 +13379,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/npm/node_modules/string-width": { "version": "4.2.3", "dev": true, @@ -13830,7 +13446,7 @@ } }, "node_modules/npm/node_modules/tar": { - "version": "6.2.0", + "version": "6.2.1", "dev": true, "inBundle": true, "license": "ISC", @@ -13901,17 +13517,17 @@ } }, "node_modules/npm/node_modules/tuf-js": { - "version": "1.1.7", + "version": "2.2.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@tufjs/models": "1.0.4", + "@tufjs/models": "2.0.1", "debug": "^4.3.4", - "make-fetch-happen": "^11.1.1" + "make-fetch-happen": "^13.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm/node_modules/unique-filename": { @@ -13954,14 +13570,21 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "5.0.0", + "version": "5.0.1", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "builtins": "^5.0.0" - }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -13972,37 +13595,28 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/npm/node_modules/which": { - "version": "3.0.1", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "isexe": "^2.0.0" + "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/wide-align": { - "version": "1.1.5", + "node_modules/npm/node_modules/which/node_modules/isexe": { + "version": "3.1.1", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "engines": { + "node": ">=16" } }, "node_modules/npm/node_modules/wrap-ansi": { @@ -14040,20 +13654,23 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "inBundle": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", "dev": true, "inBundle": true, "license": "MIT", @@ -14061,7 +13678,7 @@ "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { @@ -14102,12 +13719,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/npm/node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/write-file-atomic": { "version": "5.0.1", "dev": true, @@ -16387,6 +15998,11 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, "node_modules/rollup": { "version": "3.29.4", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", @@ -16441,6 +16057,11 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, "node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -16494,8 +16115,7 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { "version": "1.75.0", diff --git a/web/vtadmin/package.json b/web/vtadmin/package.json index 93c363128f1..e5e0c33b03b 100644 --- a/web/vtadmin/package.json +++ b/web/vtadmin/package.json @@ -13,6 +13,7 @@ "@types/node": "^16.11.7", "@types/react-router-dom": "^5.3.3", "classnames": "^2.3.2", + "d3": "^7.9.0", "dayjs": "^1.11.7", "downshift": "^7.2.0", "highcharts": "^10.3.3", @@ -88,7 +89,7 @@ "i": "^0.3.7", "jsdom": "^21.1.1", "msw": "^0.36.8", - "npm": "^9.6.3", + "npm": "^10.8.0", "postcss": "^8.4.31", "prettier": "^2.2.1", "protobufjs-cli": "^1.1.1", From 9d83d692e8a19a00569c1965877e0af98344189c Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 17 May 2024 16:13:52 -0700 Subject: [PATCH 02/22] Render basic graph in d3 Signed-off-by: Frances Thai --- web/vtadmin/package.json | 1 + .../src/components/charts/D3Timeseries.tsx | 118 ++++++++++++++++++ .../src/components/charts/TabletQPSChart.tsx | 12 +- 3 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 web/vtadmin/src/components/charts/D3Timeseries.tsx diff --git a/web/vtadmin/package.json b/web/vtadmin/package.json index e5e0c33b03b..61e4d541aa5 100644 --- a/web/vtadmin/package.json +++ b/web/vtadmin/package.json @@ -38,6 +38,7 @@ "local": "VITE_VTADMIN_API_ADDRESS=\"http://localhost:14200\" VITE_ENABLE_EXPERIMENTAL_TABLET_DEBUG_VARS=\"true\" PORT=14201 vite", "start": "vite", "build": "vite build", + "build-local": "VITE_VTADMIN_API_ADDRESS=\"http://francess-macbook-pro.local:14200\" VITE_ENABLE_EXPERIMENTAL_TABLET_DEBUG_VARS=\"true\" vite build", "test": "vitest", "preview": "vite preview", "lint": "npm run lint:eslint && npm run lint:prettier && npm run lint:stylelint", diff --git a/web/vtadmin/src/components/charts/D3Timeseries.tsx b/web/vtadmin/src/components/charts/D3Timeseries.tsx new file mode 100644 index 00000000000..b55fbacbf6b --- /dev/null +++ b/web/vtadmin/src/components/charts/D3Timeseries.tsx @@ -0,0 +1,118 @@ +/** + * Copyright 2024 The Vitess Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as d3 from 'd3'; +import { useEffect, useMemo, useRef } from 'react'; +import { TimeseriesMap, TimeseriesPoint } from '../../util/tabletDebugVars'; + +const MARGIN = { top: 30, right: 30, bottom: 50, left: 50 }; +const width = 1000 +const height = 500 + +type LineChartProps = { + isLoading: boolean; + timeseriesMap: TimeseriesMap; +}; + +export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { + // bounds = area inside the graph axis = calculated by substracting the margins + const axesRef = useRef(null); + const boundsWidth = width - MARGIN.right - MARGIN.left; + const boundsHeight = height - MARGIN.top - MARGIN.bottom; + + const [xRanges, [yMin, yMax]] = axisMinsAndMaxes(timeseriesMap, boundsWidth) + const yScale = useMemo(() => { + return d3 + .scaleLinear() + .domain([0, yMax || 0]) + .range([boundsHeight, 0]); + }, [timeseriesMap, height]); + + + const xScale = useMemo(() => { + return d3.scaleTime().domain(xRanges).range([0, boundsWidth]); + }, [timeseriesMap, width]); + + // Render the X and Y axis using d3.js, not react + useEffect(() => { + const svgElement = d3.select(axesRef.current); + svgElement.selectAll("*").remove(); + const xAxisGenerator = d3.axisBottom(xScale); + svgElement + .append("g") + .attr("transform", "translate(0," + boundsHeight + ")") + .call(xAxisGenerator); + + const yAxisGenerator = d3.axisLeft(yScale); + svgElement.append("g").call(yAxisGenerator); + }, [xScale, yScale, boundsHeight]); + + // Build the line + const lineBuilder = d3 + .line() + .x((d) => xScale(d.x)) + .y((d) => yScale(d.y)); + + return ( +
+ + + {Object.values(timeseriesMap).map(ts => )} + + + +
+ ); +}; + +type LineProps = { + timeseriesPoints: TimeseriesPoint[] + lineBuilder: d3.Line +} + +const Line: React.FC = ({ timeseriesPoints, lineBuilder }) => { + const linePath = lineBuilder(timeseriesPoints); + if (!linePath) { + return null; + } + + return ( + + ) +} + +const axisMinsAndMaxes = (timeseriesMap: TimeseriesMap, boundsWidth: number): [[Date, Date], [number, number]] => { + const x_values: number[] = Object.values(timeseriesMap).map(points => points.map(point => point.x)).flat() + const y_values = Object.values(timeseriesMap).map(points => points.map(point => point.y)).flat() + const y_max = d3.max(y_values) as number + const x_ranges = d3.extent(x_values.map(x => new Date(x))) as [Date, Date]; + return [x_ranges, [0, y_max || 1]] +} \ No newline at end of file diff --git a/web/vtadmin/src/components/charts/TabletQPSChart.tsx b/web/vtadmin/src/components/charts/TabletQPSChart.tsx index 154e2f32602..e07ca336cd9 100644 --- a/web/vtadmin/src/components/charts/TabletQPSChart.tsx +++ b/web/vtadmin/src/components/charts/TabletQPSChart.tsx @@ -21,6 +21,7 @@ import { useExperimentalTabletDebugVars } from '../../hooks/api'; import { getQPSTimeseries, QPS_REFETCH_INTERVAL } from '../../util/tabletDebugVars'; import { mergeOptions } from './chartOptions'; import { Timeseries } from './Timeseries'; +import { D3Timeseries } from './D3Timeseries'; interface Props { alias: string; @@ -48,5 +49,14 @@ export const TabletQPSChart = ({ alias, clusterID }: Props) => { return mergeOptions({ series }); }, [debugVars, query.dataUpdatedAt]); - return ; + const tsdata = useMemo(() => { + const tsdata = getQPSTimeseries(debugVars?.data, query.dataUpdatedAt); + return tsdata + }, [debugVars, query.dataUpdatedAt]) + return ( + <> + + + + ) }; From 4de6bcc1c8d20e696984e1400638498ffdd52ae1 Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 17 May 2024 16:27:02 -0700 Subject: [PATCH 03/22] Update colors Signed-off-by: Frances Thai --- .../src/components/charts/D3Timeseries.tsx | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/web/vtadmin/src/components/charts/D3Timeseries.tsx b/web/vtadmin/src/components/charts/D3Timeseries.tsx index b55fbacbf6b..8607e464ad3 100644 --- a/web/vtadmin/src/components/charts/D3Timeseries.tsx +++ b/web/vtadmin/src/components/charts/D3Timeseries.tsx @@ -52,12 +52,24 @@ export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { svgElement.selectAll("*").remove(); const xAxisGenerator = d3.axisBottom(xScale); svgElement - .append("g") - .attr("transform", "translate(0," + boundsHeight + ")") - .call(xAxisGenerator); + .append("g") + .attr("transform", "translate(0," + boundsHeight + ")") + .call(xAxisGenerator) + .selectAll("text") + .attr("class", "fill-gray-500") const yAxisGenerator = d3.axisLeft(yScale); - svgElement.append("g").call(yAxisGenerator); + svgElement + .append("g") + .call(yAxisGenerator) + .selectAll("text") + .attr("class", "fill-gray-500"); + svgElement + .selectAll("path") + .attr("class", "!stroke-gray-200") + svgElement + .selectAll("line") + .attr("class", "!stroke-gray-200 z-10") }, [xScale, yScale, boundsHeight]); // Build the line @@ -105,6 +117,7 @@ const Line: React.FC = ({ timeseriesPoints, lineBuilder }) => { stroke="#9a6fb0" fill="none" strokeWidth={2} + className="z-100" /> ) } From e07097a0e25f9810fb881e75f79a9eb1fabfd0bc Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 17 May 2024 16:55:09 -0700 Subject: [PATCH 04/22] Format as 24 hour clock Signed-off-by: Frances Thai --- web/vtadmin/src/components/charts/D3Timeseries.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/web/vtadmin/src/components/charts/D3Timeseries.tsx b/web/vtadmin/src/components/charts/D3Timeseries.tsx index 8607e464ad3..57798c4e9a8 100644 --- a/web/vtadmin/src/components/charts/D3Timeseries.tsx +++ b/web/vtadmin/src/components/charts/D3Timeseries.tsx @@ -27,13 +27,15 @@ type LineChartProps = { timeseriesMap: TimeseriesMap; }; +const timeFormat = d3.timeParse("%H:%M"); + export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { // bounds = area inside the graph axis = calculated by substracting the margins const axesRef = useRef(null); const boundsWidth = width - MARGIN.right - MARGIN.left; const boundsHeight = height - MARGIN.top - MARGIN.bottom; - const [xRanges, [yMin, yMax]] = axisMinsAndMaxes(timeseriesMap, boundsWidth) + const [xRanges, [_yMin, yMax]] = axisMinsAndMaxes(timeseriesMap, boundsWidth) const yScale = useMemo(() => { return d3 .scaleLinear() @@ -50,20 +52,21 @@ export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { useEffect(() => { const svgElement = d3.select(axesRef.current); svgElement.selectAll("*").remove(); - const xAxisGenerator = d3.axisBottom(xScale); + const xAxisGenerator = d3.axisBottom(xScale) + xAxisGenerator.tickFormat(d3.timeFormat("%H:%M")) svgElement .append("g") .attr("transform", "translate(0," + boundsHeight + ")") .call(xAxisGenerator) .selectAll("text") - .attr("class", "fill-gray-500") + .attr("class", "fill-gray-500 font-mono text-medium"); const yAxisGenerator = d3.axisLeft(yScale); svgElement .append("g") .call(yAxisGenerator) .selectAll("text") - .attr("class", "fill-gray-500"); + .attr("class", "fill-gray-500 font-mono text-medium"); svgElement .selectAll("path") .attr("class", "!stroke-gray-200") From 9300043d951dfa1895e101898503e22739a3f8c5 Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 17 May 2024 18:39:39 -0700 Subject: [PATCH 05/22] Add colors and legend colors Signed-off-by: Frances Thai --- .../src/components/charts/D3Timeseries.tsx | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/web/vtadmin/src/components/charts/D3Timeseries.tsx b/web/vtadmin/src/components/charts/D3Timeseries.tsx index 57798c4e9a8..99f48d23fca 100644 --- a/web/vtadmin/src/components/charts/D3Timeseries.tsx +++ b/web/vtadmin/src/components/charts/D3Timeseries.tsx @@ -35,6 +35,8 @@ export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { const boundsWidth = width - MARGIN.right - MARGIN.left; const boundsHeight = height - MARGIN.top - MARGIN.bottom; + const numSeries = Object.keys(timeseriesMap).length + const [xRanges, [_yMin, yMax]] = axisMinsAndMaxes(timeseriesMap, boundsWidth) const yScale = useMemo(() => { return d3 @@ -81,6 +83,8 @@ export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { .x((d) => xScale(d.x)) .y((d) => yScale(d.y)); + const colors = d3.scaleOrdinal(d3.schemePiYG[11]) + return (
@@ -89,7 +93,7 @@ export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { height={boundsHeight} transform={`translate(${[MARGIN.left, MARGIN.top].join(",")})`} > - {Object.values(timeseriesMap).map(ts => )} + {Object.entries(timeseriesMap).map(([name, ts], i) => )} { transform={`translate(${[MARGIN.left, MARGIN.top].join(",")})`} /> +
); }; +const Legend: React.FC<{ names: string[], colors: d3.ScaleOrdinal }> = ({ names, colors }) => { + return ( +
+ {names.map(name => ( +
+
+ {name} +
+ ))} +
+ ) +} + type LineProps = { + color: string timeseriesPoints: TimeseriesPoint[] lineBuilder: d3.Line } -const Line: React.FC = ({ timeseriesPoints, lineBuilder }) => { +const Line: React.FC = ({ color, timeseriesPoints, lineBuilder }) => { const linePath = lineBuilder(timeseriesPoints); if (!linePath) { return null; @@ -117,7 +136,7 @@ const Line: React.FC = ({ timeseriesPoints, lineBuilder }) => { new Date(x))) as [Date, Date]; return [x_ranges, [0, y_max || 1]] -} \ No newline at end of file +} From d2a58f573fc888d004260bf5ccb63a5e3b982b8b Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 17 May 2024 18:54:26 -0700 Subject: [PATCH 06/22] Adding tooltip Signed-off-by: Frances Thai --- web/vtadmin/src/components/charts/D3Timeseries.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/web/vtadmin/src/components/charts/D3Timeseries.tsx b/web/vtadmin/src/components/charts/D3Timeseries.tsx index 99f48d23fca..95a16e5a9eb 100644 --- a/web/vtadmin/src/components/charts/D3Timeseries.tsx +++ b/web/vtadmin/src/components/charts/D3Timeseries.tsx @@ -35,8 +35,6 @@ export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { const boundsWidth = width - MARGIN.right - MARGIN.left; const boundsHeight = height - MARGIN.top - MARGIN.bottom; - const numSeries = Object.keys(timeseriesMap).length - const [xRanges, [_yMin, yMax]] = axisMinsAndMaxes(timeseriesMap, boundsWidth) const yScale = useMemo(() => { return d3 @@ -54,6 +52,8 @@ export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { useEffect(() => { const svgElement = d3.select(axesRef.current); svgElement.selectAll("*").remove(); + + // Render X Axis const xAxisGenerator = d3.axisBottom(xScale) xAxisGenerator.tickFormat(d3.timeFormat("%H:%M")) svgElement @@ -63,6 +63,7 @@ export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { .selectAll("text") .attr("class", "fill-gray-500 font-mono text-medium"); + // Render Y Axis const yAxisGenerator = d3.axisLeft(yScale); svgElement .append("g") @@ -75,6 +76,8 @@ export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { svgElement .selectAll("line") .attr("class", "!stroke-gray-200 z-10") + + // Tooltip }, [xScale, yScale, boundsHeight]); // Build the line From 8420c0cbab6c87d78e0b067e9c13097ea3f22901 Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 31 May 2024 11:58:22 -0700 Subject: [PATCH 07/22] Remove all Timeseries components Signed-off-by: Frances Thai --- .../src/components/charts/D3Timeseries.tsx | 1 - .../src/components/charts/TabletQPSChart.tsx | 27 ++-------- .../charts/TabletVReplicationQPSChart.tsx | 21 ++------ .../charts/WorkflowStreamsLagChart.tsx | 51 ++++++------------- 4 files changed, 24 insertions(+), 76 deletions(-) diff --git a/web/vtadmin/src/components/charts/D3Timeseries.tsx b/web/vtadmin/src/components/charts/D3Timeseries.tsx index 95a16e5a9eb..1163b6faad8 100644 --- a/web/vtadmin/src/components/charts/D3Timeseries.tsx +++ b/web/vtadmin/src/components/charts/D3Timeseries.tsx @@ -27,7 +27,6 @@ type LineChartProps = { timeseriesMap: TimeseriesMap; }; -const timeFormat = d3.timeParse("%H:%M"); export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { // bounds = area inside the graph axis = calculated by substracting the margins diff --git a/web/vtadmin/src/components/charts/TabletQPSChart.tsx b/web/vtadmin/src/components/charts/TabletQPSChart.tsx index e07ca336cd9..fe2349b1a5f 100644 --- a/web/vtadmin/src/components/charts/TabletQPSChart.tsx +++ b/web/vtadmin/src/components/charts/TabletQPSChart.tsx @@ -1,5 +1,5 @@ /** - * Copyright 2021 The Vitess Authors. + * Copyright 2024 The Vitess Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,13 +14,10 @@ * limitations under the License. */ -import Highcharts from 'highcharts'; import { useMemo } from 'react'; import { useExperimentalTabletDebugVars } from '../../hooks/api'; import { getQPSTimeseries, QPS_REFETCH_INTERVAL } from '../../util/tabletDebugVars'; -import { mergeOptions } from './chartOptions'; -import { Timeseries } from './Timeseries'; import { D3Timeseries } from './D3Timeseries'; interface Props { @@ -37,26 +34,8 @@ export const TabletQPSChart = ({ alias, clusterID }: Props) => { } ); - const options = useMemo(() => { - const tsdata = getQPSTimeseries(debugVars?.data, query.dataUpdatedAt); - - const series: Highcharts.SeriesOptionsType[] = Object.entries(tsdata).map(([name, data]) => ({ - data, - name, - type: 'line', - })); - - return mergeOptions({ series }); - }, [debugVars, query.dataUpdatedAt]); - const tsdata = useMemo(() => { - const tsdata = getQPSTimeseries(debugVars?.data, query.dataUpdatedAt); - return tsdata + return getQPSTimeseries(debugVars?.data, query.dataUpdatedAt); }, [debugVars, query.dataUpdatedAt]) - return ( - <> - - - - ) + return }; diff --git a/web/vtadmin/src/components/charts/TabletVReplicationQPSChart.tsx b/web/vtadmin/src/components/charts/TabletVReplicationQPSChart.tsx index 8f11818e56f..7e68aff820e 100644 --- a/web/vtadmin/src/components/charts/TabletVReplicationQPSChart.tsx +++ b/web/vtadmin/src/components/charts/TabletVReplicationQPSChart.tsx @@ -1,5 +1,5 @@ /** - * Copyright 2021 The Vitess Authors. + * Copyright 2024 The Vitess Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,13 +14,11 @@ * limitations under the License. */ -import Highcharts from 'highcharts'; import { useMemo } from 'react'; import { useExperimentalTabletDebugVars } from '../../hooks/api'; import { getVReplicationQPSTimeseries, QPS_REFETCH_INTERVAL } from '../../util/tabletDebugVars'; -import { mergeOptions } from './chartOptions'; -import { Timeseries } from './Timeseries'; +import { D3Timeseries } from './D3Timeseries'; interface Props { alias: string; @@ -36,17 +34,8 @@ export const TabletVReplicationQPSChart = ({ alias, clusterID }: Props) => { } ); - const options = useMemo(() => { - const tsdata = getVReplicationQPSTimeseries(debugVars?.data, query.dataUpdatedAt); - - const series: Highcharts.SeriesOptionsType[] = Object.entries(tsdata).map(([name, data]) => ({ - data, - name, - type: 'line', - })); - - return mergeOptions({ series }); + const tsdata = useMemo(() => { + return getVReplicationQPSTimeseries(debugVars?.data, query.dataUpdatedAt); }, [debugVars, query.dataUpdatedAt]); - - return ; + return }; diff --git a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx index 2cfb6491952..dbefd721b8f 100644 --- a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx +++ b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx @@ -1,5 +1,5 @@ /** - * Copyright 2021 The Vitess Authors. + * Copyright 2024 The Vitess Authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,9 +18,9 @@ import { useMemo } from 'react'; import { useManyExperimentalTabletDebugVars, useWorkflow } from '../../hooks/api'; import { vtadmin } from '../../proto/vtadmin'; -import { getStreamVReplicationLagTimeseries, QPS_REFETCH_INTERVAL } from '../../util/tabletDebugVars'; +import { getStreamVReplicationLagTimeseries, QPS_REFETCH_INTERVAL, TimeseriesMap } from '../../util/tabletDebugVars'; import { formatStreamKey, getStreams, getStreamTablets } from '../../util/workflows'; -import { Timeseries } from './Timeseries'; +import { D3Timeseries } from './D3Timeseries'; interface Props { clusterID: string; @@ -48,37 +48,19 @@ export const WorkflowStreamsLagChart = ({ clusterID, keyspace, workflowName }: P const anyLoading = wq.isLoading || tabletQueries.some((q) => q.isLoading); - const chartOptions: Highcharts.Options = useMemo(() => { - const series = formatSeries(workflow, tabletQueries); - const allSeriesEmpty = series.every((s) => !s.data?.length); - - return { - series, - yAxis: { - labels: { - format: '{text} s', - }, - // The desired behaviour is to show axes + grid lines - // even when there is no data to show. Unfortunately, setting - // softMin/softMax (which is more flexible) doesn't work with showEmpty. - // Instead, we must set explicit min/max, but only when all series are empty. - // If at least one series has data, allow min/max to be automatically calculated. - max: allSeriesEmpty ? DEFAULT_Y_MAX : null, - min: allSeriesEmpty ? DEFAULT_Y_MIN : null, - }, - }; - }, [tabletQueries, workflow]); - - return ; + const timeseries = useMemo(() => { + return getWorkflowTimeseries(workflow, tabletQueries) + }, [[tabletQueries, workflow]]) + + return }; -// Internal function, exported only for testing. -export const formatSeries = ( +export const getWorkflowTimeseries = ( workflow: vtadmin.Workflow | null | undefined, tabletQueries: ReturnType -): Highcharts.SeriesLineOptions[] => { +): TimeseriesMap => { if (!workflow) { - return []; + return {} as TimeseriesMap } // Get streamKeys for streams in this workflow. @@ -86,11 +68,10 @@ export const formatSeries = ( // Initialize the timeseries from the workflow, so that every stream in the workflow // is shown in the legend, even if the /debug/vars data isn't (yet) available. - const seriesByStreamKey: { [streamKey: string]: Highcharts.SeriesLineOptions } = {}; - + const seriesByStreamKey: TimeseriesMap = {}; streamKeys.forEach((streamKey) => { if (streamKey) { - seriesByStreamKey[streamKey] = { data: [], name: streamKey, type: 'line' }; + seriesByStreamKey[streamKey] = []; } }); @@ -117,9 +98,9 @@ export const formatSeries = ( return; } - seriesByStreamKey[streamKey].data = streamLagData; + seriesByStreamKey[streamKey] = streamLagData; }); }); - return Object.values(seriesByStreamKey); -}; + return seriesByStreamKey +} From ba7379e05ba07c51a013f4106ca29c5df20f9cfe Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 31 May 2024 12:01:56 -0700 Subject: [PATCH 08/22] Remove highcharts library, remove highcharts components Signed-off-by: Frances Thai --- web/vtadmin/package-lock.json | 4 +- web/vtadmin/package.json | 1 - .../src/components/charts/Timeseries.tsx | 73 ----------- .../src/components/charts/chartOptions.ts | 55 --------- web/vtadmin/src/components/charts/charts.scss | 113 ------------------ web/vtadmin/src/util/tabletDebugVars.ts | 2 +- 6 files changed, 3 insertions(+), 245 deletions(-) delete mode 100644 web/vtadmin/src/components/charts/Timeseries.tsx delete mode 100644 web/vtadmin/src/components/charts/chartOptions.ts delete mode 100644 web/vtadmin/src/components/charts/charts.scss diff --git a/web/vtadmin/package-lock.json b/web/vtadmin/package-lock.json index d37fb95bbef..130b5fbf7ad 100644 --- a/web/vtadmin/package-lock.json +++ b/web/vtadmin/package-lock.json @@ -17,7 +17,6 @@ "d3": "^7.9.0", "dayjs": "^1.11.7", "downshift": "^7.2.0", - "highcharts": "^10.3.3", "highcharts-react-official": "^3.1.0", "history": "^5.3.0", "lodash-es": "^4.17.21", @@ -9243,7 +9242,8 @@ "node_modules/highcharts": { "version": "10.3.3", "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-10.3.3.tgz", - "integrity": "sha512-r7wgUPQI9tr3jFDn3XT36qsNwEIZYcfgz4mkKEA6E4nn5p86y+u1EZjazIG4TRkl5/gmGRtkBUiZW81g029RIw==" + "integrity": "sha512-r7wgUPQI9tr3jFDn3XT36qsNwEIZYcfgz4mkKEA6E4nn5p86y+u1EZjazIG4TRkl5/gmGRtkBUiZW81g029RIw==", + "peer": true }, "node_modules/highcharts-react-official": { "version": "3.2.1", diff --git a/web/vtadmin/package.json b/web/vtadmin/package.json index 61e4d541aa5..dbb717356d9 100644 --- a/web/vtadmin/package.json +++ b/web/vtadmin/package.json @@ -16,7 +16,6 @@ "d3": "^7.9.0", "dayjs": "^1.11.7", "downshift": "^7.2.0", - "highcharts": "^10.3.3", "highcharts-react-official": "^3.1.0", "history": "^5.3.0", "lodash-es": "^4.17.21", diff --git a/web/vtadmin/src/components/charts/Timeseries.tsx b/web/vtadmin/src/components/charts/Timeseries.tsx deleted file mode 100644 index 8168de62c35..00000000000 --- a/web/vtadmin/src/components/charts/Timeseries.tsx +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Copyright 2021 The Vitess Authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import Highcharts from 'highcharts'; -import HighchartsReact from 'highcharts-react-official'; -import { useEffect, useMemo, useRef } from 'react'; -import { mergeOptions } from './chartOptions'; - -interface Props { - isLoading?: boolean; - options: Highcharts.Options | undefined; -} - -export const Timeseries = ({ isLoading, options }: Props) => { - // See https://github.com/highcharts/highcharts-react/issues/290#issuecomment-802914598 - const ref = useRef<{ - chart: Highcharts.Chart; - container: React.RefObject; - }>(null); - - useEffect(() => { - if (!ref.current) { - return; - } - - if (isLoading) { - ref.current.chart.showLoading(); - } else { - ref.current.chart.hideLoading(); - } - }, [isLoading]); - - const _options = useMemo(() => { - return mergeOptions( - { - tooltip: { - hideDelay: 0, - shared: true, - }, - xAxis: { - crosshair: true, - type: 'datetime', - }, - yAxis: { - crosshair: true, - // Setting `softMax` to any positive integer will anchor the y=0 gridline - // at the bottom of the chart even when there is no data to show. - softMax: 1, - softMin: 0, - title: { - text: undefined, - }, - }, - }, - options - ); - }, [options]); - - return ; -}; diff --git a/web/vtadmin/src/components/charts/chartOptions.ts b/web/vtadmin/src/components/charts/chartOptions.ts deleted file mode 100644 index a6bcf2a7632..00000000000 --- a/web/vtadmin/src/components/charts/chartOptions.ts +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Copyright 2021 The Vitess Authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import Highcharts from 'highcharts'; - -export const mergeOptions = ( - o: Highcharts.Options | undefined, - ...opts: (Highcharts.Options | undefined)[] -): Highcharts.Options => { - return Highcharts.merge({}, DEFAULT_OPTIONS, o, ...opts); -}; - -/** - * Default options applicable to all Highcharts charts. - * Individual chart instances can override any/all of these - * default options with `mergeOptions`. - */ -export const DEFAULT_OPTIONS: Highcharts.Options = { - chart: { - animation: false, - // Enable styled mode by default, so we can use our existing CSS variables. - // See https://www.highcharts.com/docs/chart-design-and-style/style-by-css - styledMode: true, - }, - credits: { - enabled: false, - }, - plotOptions: { - series: { - animation: false, - }, - }, - time: { - useUTC: false, - }, - // Using Highcharts' built in `title` property is not recommended. - // In most cases, using a regular heading element like

- // adjacent to the chart is more flexible and consistent, - // since we can't apply layout-type rules like line-height or margin. - title: { - text: undefined, - }, -}; diff --git a/web/vtadmin/src/components/charts/charts.scss b/web/vtadmin/src/components/charts/charts.scss deleted file mode 100644 index 887146965eb..00000000000 --- a/web/vtadmin/src/components/charts/charts.scss +++ /dev/null @@ -1,113 +0,0 @@ -/** - * Copyright 2021 The Vitess Authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Note that the $colors definition needs to go before the highcharts.scss import. - * This is the easiest way to override the Highcharts colour palette when using styled mode; - * see https://www.highcharts.com/docs/chart-design-and-style/custom-themes-in-styled-mode - * - * The limitation here is that we can't really toggle Highcharts palettes between - * dark/light/other themes, which is not a huge deal, but worth mentioning in case - * it matters later on. - * - * Gradient generated with the very useful https://colordesigner.io/gradient-generator - */ -$colors: #8187ff #b17ff5 #d676e5 #f26fd1 #ff6bbb #ff6ca3 #ff738c #ff7e75 #ff8c60 #ff9b4e #ffab40; - -/* -* We use Highcharts' "styled mode" to style chart components -* (SVGs under the hood) with CSS. This lets us rely on our -* standard CSS variables for consistent theming. -* -* See https://www.highcharts.com/docs/chart-design-and-style/style-by-css -*/ -@import 'highcharts/css/highcharts.scss'; - -.highcharts-axis-labels { - fill: var(--textColorSecondary); -} - -.highcharts-axis-title { - fill: var(--textColorSecondary); -} - -.highcharts-background { - fill: none; -} - -.highcharts-grid-line { - stroke: var(--backgroundPrimaryHighlight); -} - -.highcharts-legend-item text { - fill: var(--textColorPrimary); -} - -.highcharts-line-series .highcharts-graph { - stroke-width: 1px; - transition: stroke-width 200ms; /* slow out */ -} - -.highcharts-loading-inner { - color: var(--textColorSecondary); - font-family: var(--fontFamilyPrimary); - font-size: theme('fontSize.lg'); - font-weight: 500; -} - -.highcharts-series-hover .highcharts-graph { - transition: stroke-width 50ms ease-in-out; /* quick in */ -} - -.highcharts-line-series.highcharts-series-hover .highcharts-graph { - stroke-width: 2px; -} - -// Matches the root svg element of the chart. Use this to set styles -// that should be inherited by all elements, like font-family or other text styles. -.highcharts-root { - font-family: var(--fontFamilyMonospace); -} - -// Using Highcharts' built in `title` property is not recommended. -// In most cases, using a regular heading element like

-// adjacent to the chart is more flexible and consistent, -// since we can't apply layout-type rules like line-height or margin. -.highcharts-title { - font-family: var(--fontFamilyPrimary); - font-weight: 700; -} - -.highcharts-tooltip { - stroke: none; - - text { - fill: #fff; - } -} - -.highcharts-tooltip-box { - fill: rgba(0, 0, 0, 0.85); - fill-opacity: 0.95; -} - -.highcharts-yaxis-grid .highcharts-grid-line { - stroke-width: 1px; -} - -.highcharts-xaxis-grid .highcharts-grid-line { - stroke-width: 1px; -} diff --git a/web/vtadmin/src/util/tabletDebugVars.ts b/web/vtadmin/src/util/tabletDebugVars.ts index 1d01ec16bee..dbef7f3d7ac 100644 --- a/web/vtadmin/src/util/tabletDebugVars.ts +++ b/web/vtadmin/src/util/tabletDebugVars.ts @@ -91,7 +91,7 @@ export const formatTimeseriesMap = (rates: { [k: string]: number[] }, endAt?: nu // (a) be empty, or // (b) contain a minimum of two series, one of them named "All". // In the first case, inserting an empty "All" series renders more nicely - // on a Highcharts graph since it will include the axes, etc. So, we add it here. + // on a graph since it will include the axes, etc. So, we add it here. const _rates = !!Object.keys(rates).length ? rates : { All: [] }; const planTypes = Object.keys(_rates); From ba7e3df68dcda2579e28765cc54309cf05970b8e Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 31 May 2024 12:11:26 -0700 Subject: [PATCH 09/22] Fix some prettier errors Signed-off-by: Frances Thai --- .../src/components/charts/D3Timeseries.tsx | 203 +++++++++--------- .../src/components/charts/TabletQPSChart.tsx | 4 +- .../charts/TabletVReplicationQPSChart.tsx | 2 +- .../charts/WorkflowStreamsLagChart.tsx | 12 +- 4 files changed, 106 insertions(+), 115 deletions(-) diff --git a/web/vtadmin/src/components/charts/D3Timeseries.tsx b/web/vtadmin/src/components/charts/D3Timeseries.tsx index 1163b6faad8..09b205a0a32 100644 --- a/web/vtadmin/src/components/charts/D3Timeseries.tsx +++ b/web/vtadmin/src/components/charts/D3Timeseries.tsx @@ -19,137 +19,128 @@ import { useEffect, useMemo, useRef } from 'react'; import { TimeseriesMap, TimeseriesPoint } from '../../util/tabletDebugVars'; const MARGIN = { top: 30, right: 30, bottom: 50, left: 50 }; -const width = 1000 -const height = 500 +const width = 1000; +const height = 500; type LineChartProps = { - isLoading: boolean; - timeseriesMap: TimeseriesMap; + isLoading: boolean; + timeseriesMap: TimeseriesMap; }; - export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { - // bounds = area inside the graph axis = calculated by substracting the margins - const axesRef = useRef(null); - const boundsWidth = width - MARGIN.right - MARGIN.left; - const boundsHeight = height - MARGIN.top - MARGIN.bottom; - - const [xRanges, [_yMin, yMax]] = axisMinsAndMaxes(timeseriesMap, boundsWidth) - const yScale = useMemo(() => { - return d3 - .scaleLinear() - .domain([0, yMax || 0]) - .range([boundsHeight, 0]); - }, [timeseriesMap, height]); - - - const xScale = useMemo(() => { - return d3.scaleTime().domain(xRanges).range([0, boundsWidth]); - }, [timeseriesMap, width]); - - // Render the X and Y axis using d3.js, not react - useEffect(() => { - const svgElement = d3.select(axesRef.current); - svgElement.selectAll("*").remove(); - - // Render X Axis - const xAxisGenerator = d3.axisBottom(xScale) - xAxisGenerator.tickFormat(d3.timeFormat("%H:%M")) - svgElement - .append("g") - .attr("transform", "translate(0," + boundsHeight + ")") - .call(xAxisGenerator) - .selectAll("text") - .attr("class", "fill-gray-500 font-mono text-medium"); - - // Render Y Axis - const yAxisGenerator = d3.axisLeft(yScale); - svgElement - .append("g") - .call(yAxisGenerator) - .selectAll("text") - .attr("class", "fill-gray-500 font-mono text-medium"); - svgElement - .selectAll("path") - .attr("class", "!stroke-gray-200") - svgElement - .selectAll("line") - .attr("class", "!stroke-gray-200 z-10") - - // Tooltip - }, [xScale, yScale, boundsHeight]); + // bounds = area inside the graph axis = calculated by substracting the margins + const axesRef = useRef(null); + const boundsWidth = width - MARGIN.right - MARGIN.left; + const boundsHeight = height - MARGIN.top - MARGIN.bottom; + + const [xRanges, [_, yMax]] = axisMinsAndMaxes(timeseriesMap, boundsWidth); + const yScale = useMemo(() => { + return d3 + .scaleLinear() + .domain([0, yMax || 0]) + .range([boundsHeight, 0]); + }, [boundsHeight, yMax]); + + const xScale = useMemo(() => { + return d3.scaleTime().domain(xRanges).range([0, boundsWidth]); + }, [boundsWidth, xRanges]); + + // Render the X and Y axis using d3.js, not react + useEffect(() => { + const svgElement = d3.select(axesRef.current); + svgElement.selectAll('*').remove(); + + // Render X Axis + const xAxisGenerator = d3.axisBottom(xScale); + xAxisGenerator.tickFormat(d3.timeFormat('%H:%M')); + svgElement + .append('g') + .attr('transform', 'translate(0,' + boundsHeight + ')') + .call(xAxisGenerator) + .selectAll('text') + .attr('class', 'fill-gray-500 font-mono text-medium'); + + // Render Y Axis + const yAxisGenerator = d3.axisLeft(yScale); + svgElement + .append('g') + .call(yAxisGenerator) + .selectAll('text') + .attr('class', 'fill-gray-500 font-mono text-medium'); + svgElement.selectAll('path').attr('class', '!stroke-gray-200'); + svgElement.selectAll('line').attr('class', '!stroke-gray-200 z-10'); + + // Tooltip + }, [xScale, yScale, boundsHeight]); // Build the line const lineBuilder = d3 - .line() - .x((d) => xScale(d.x)) - .y((d) => yScale(d.y)); - - const colors = d3.scaleOrdinal(d3.schemePiYG[11]) - - return ( -
- - - {Object.entries(timeseriesMap).map(([name, ts], i) => )} - - - - -
- ); + .line() + .x((d) => xScale(d.x)) + .y((d) => yScale(d.y)); + + const colors = d3.scaleOrdinal(d3.schemePiYG[11]); + + return ( +
+ + + {Object.entries(timeseriesMap).map(([name, ts], i) => ( + + ))} + + + + +
+ ); }; -const Legend: React.FC<{ names: string[], colors: d3.ScaleOrdinal }> = ({ names, colors }) => { +const Legend: React.FC<{ names: string[]; colors: d3.ScaleOrdinal }> = ({ names, colors }) => { return (
- {names.map(name => ( + {names.map((name) => (
{name}
))}
- ) -} + ); +}; type LineProps = { - color: string - timeseriesPoints: TimeseriesPoint[] - lineBuilder: d3.Line -} + color: string; + timeseriesPoints: TimeseriesPoint[]; + lineBuilder: d3.Line; +}; const Line: React.FC = ({ color, timeseriesPoints, lineBuilder }) => { const linePath = lineBuilder(timeseriesPoints); if (!linePath) { - return null; + return null; } - return ( - - ) -} + return ; +}; const axisMinsAndMaxes = (timeseriesMap: TimeseriesMap, boundsWidth: number): [[Date, Date], [number, number]] => { - const x_values: number[] = Object.values(timeseriesMap).map(points => points.map(point => point.x)).flat() - const y_values = Object.values(timeseriesMap).map(points => points.map(point => point.y)).flat() - const y_max = d3.max(y_values) as number - const x_ranges = d3.extent(x_values.map(x => new Date(x))) as [Date, Date]; - return [x_ranges, [0, y_max || 1]] -} + const x_values: number[] = Object.values(timeseriesMap) + .map((points) => points.map((point) => point.x)) + .flat(); + const y_values = Object.values(timeseriesMap) + .map((points) => points.map((point) => point.y)) + .flat(); + const y_max = d3.max(y_values) as number; + const x_ranges = d3.extent(x_values.map((x) => new Date(x))) as [Date, Date]; + return [x_ranges, [0, y_max || 1]]; +}; diff --git a/web/vtadmin/src/components/charts/TabletQPSChart.tsx b/web/vtadmin/src/components/charts/TabletQPSChart.tsx index fe2349b1a5f..b064a0365c0 100644 --- a/web/vtadmin/src/components/charts/TabletQPSChart.tsx +++ b/web/vtadmin/src/components/charts/TabletQPSChart.tsx @@ -36,6 +36,6 @@ export const TabletQPSChart = ({ alias, clusterID }: Props) => { const tsdata = useMemo(() => { return getQPSTimeseries(debugVars?.data, query.dataUpdatedAt); - }, [debugVars, query.dataUpdatedAt]) - return + }, [debugVars, query.dataUpdatedAt]); + return ; }; diff --git a/web/vtadmin/src/components/charts/TabletVReplicationQPSChart.tsx b/web/vtadmin/src/components/charts/TabletVReplicationQPSChart.tsx index 7e68aff820e..26cae2845af 100644 --- a/web/vtadmin/src/components/charts/TabletVReplicationQPSChart.tsx +++ b/web/vtadmin/src/components/charts/TabletVReplicationQPSChart.tsx @@ -37,5 +37,5 @@ export const TabletVReplicationQPSChart = ({ alias, clusterID }: Props) => { const tsdata = useMemo(() => { return getVReplicationQPSTimeseries(debugVars?.data, query.dataUpdatedAt); }, [debugVars, query.dataUpdatedAt]); - return + return ; }; diff --git a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx index dbefd721b8f..aa188657bb6 100644 --- a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx +++ b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx @@ -49,10 +49,10 @@ export const WorkflowStreamsLagChart = ({ clusterID, keyspace, workflowName }: P const anyLoading = wq.isLoading || tabletQueries.some((q) => q.isLoading); const timeseries = useMemo(() => { - return getWorkflowTimeseries(workflow, tabletQueries) - }, [[tabletQueries, workflow]]) + return getWorkflowTimeseries(workflow, tabletQueries); + }, [[tabletQueries, workflow]]); - return + return ; }; export const getWorkflowTimeseries = ( @@ -60,7 +60,7 @@ export const getWorkflowTimeseries = ( tabletQueries: ReturnType ): TimeseriesMap => { if (!workflow) { - return {} as TimeseriesMap + return {} as TimeseriesMap; } // Get streamKeys for streams in this workflow. @@ -102,5 +102,5 @@ export const getWorkflowTimeseries = ( }); }); - return seriesByStreamKey -} + return seriesByStreamKey; +}; From 8c9e68f7f2e10610dd739623f456549f873ed50a Mon Sep 17 00:00:00 2001 From: Frances Thai <31225471+notfelineit@users.noreply.github.com> Date: Fri, 31 May 2024 12:25:48 -0700 Subject: [PATCH 10/22] Update web/vtadmin/package.json Signed-off-by: Frances Thai <31225471+notfelineit@users.noreply.github.com> --- web/vtadmin/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/web/vtadmin/package.json b/web/vtadmin/package.json index dbb717356d9..e4e1bb3e28f 100644 --- a/web/vtadmin/package.json +++ b/web/vtadmin/package.json @@ -37,7 +37,6 @@ "local": "VITE_VTADMIN_API_ADDRESS=\"http://localhost:14200\" VITE_ENABLE_EXPERIMENTAL_TABLET_DEBUG_VARS=\"true\" PORT=14201 vite", "start": "vite", "build": "vite build", - "build-local": "VITE_VTADMIN_API_ADDRESS=\"http://francess-macbook-pro.local:14200\" VITE_ENABLE_EXPERIMENTAL_TABLET_DEBUG_VARS=\"true\" vite build", "test": "vitest", "preview": "vite preview", "lint": "npm run lint:eslint && npm run lint:prettier && npm run lint:stylelint", From 85b766c6125ca6cfddeedd2e7d54556a438df993 Mon Sep 17 00:00:00 2001 From: Frances Thai <31225471+notfelineit@users.noreply.github.com> Date: Fri, 31 May 2024 12:36:50 -0700 Subject: [PATCH 11/22] Update web/vtadmin/src/components/charts/D3Timeseries.tsx Signed-off-by: Frances Thai <31225471+notfelineit@users.noreply.github.com> --- web/vtadmin/src/components/charts/D3Timeseries.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/web/vtadmin/src/components/charts/D3Timeseries.tsx b/web/vtadmin/src/components/charts/D3Timeseries.tsx index 09b205a0a32..91338f9fab5 100644 --- a/web/vtadmin/src/components/charts/D3Timeseries.tsx +++ b/web/vtadmin/src/components/charts/D3Timeseries.tsx @@ -70,7 +70,6 @@ export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { svgElement.selectAll('path').attr('class', '!stroke-gray-200'); svgElement.selectAll('line').attr('class', '!stroke-gray-200 z-10'); - // Tooltip }, [xScale, yScale, boundsHeight]); // Build the line From a8926cccd91a06934ad1e0d184f2c281032d2a3e Mon Sep 17 00:00:00 2001 From: Frances Thai <31225471+notfelineit@users.noreply.github.com> Date: Fri, 31 May 2024 12:37:07 -0700 Subject: [PATCH 12/22] Update web/vtadmin/src/components/charts/D3Timeseries.tsx Signed-off-by: Frances Thai <31225471+notfelineit@users.noreply.github.com> --- web/vtadmin/src/components/charts/D3Timeseries.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/web/vtadmin/src/components/charts/D3Timeseries.tsx b/web/vtadmin/src/components/charts/D3Timeseries.tsx index 91338f9fab5..26c99208e5c 100644 --- a/web/vtadmin/src/components/charts/D3Timeseries.tsx +++ b/web/vtadmin/src/components/charts/D3Timeseries.tsx @@ -69,7 +69,6 @@ export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { .attr('class', 'fill-gray-500 font-mono text-medium'); svgElement.selectAll('path').attr('class', '!stroke-gray-200'); svgElement.selectAll('line').attr('class', '!stroke-gray-200 z-10'); - }, [xScale, yScale, boundsHeight]); // Build the line From 38f00492537e3554f2bd7856f419e6a2eff799c4 Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 31 May 2024 13:02:26 -0700 Subject: [PATCH 13/22] Fix some linter issues Signed-off-by: Frances Thai --- web/vtadmin/src/components/charts/D3Timeseries.tsx | 3 ++- web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/web/vtadmin/src/components/charts/D3Timeseries.tsx b/web/vtadmin/src/components/charts/D3Timeseries.tsx index 26c99208e5c..bae213c2b3d 100644 --- a/web/vtadmin/src/components/charts/D3Timeseries.tsx +++ b/web/vtadmin/src/components/charts/D3Timeseries.tsx @@ -33,7 +33,8 @@ export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { const boundsWidth = width - MARGIN.right - MARGIN.left; const boundsHeight = height - MARGIN.top - MARGIN.bottom; - const [xRanges, [_, yMax]] = axisMinsAndMaxes(timeseriesMap, boundsWidth); + const [xRanges, yRanges] = axisMinsAndMaxes(timeseriesMap, boundsWidth); + const yMax = yRanges[1] const yScale = useMemo(() => { return d3 .scaleLinear() diff --git a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx index aa188657bb6..51797edf8a8 100644 --- a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx +++ b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx @@ -50,7 +50,7 @@ export const WorkflowStreamsLagChart = ({ clusterID, keyspace, workflowName }: P const timeseries = useMemo(() => { return getWorkflowTimeseries(workflow, tabletQueries); - }, [[tabletQueries, workflow]]); + }, [tabletQueries, workflow]); return ; }; From 8ed4828a2b8e53166b2dc401b43f3a60fd53ba97 Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 31 May 2024 13:16:41 -0700 Subject: [PATCH 14/22] Fix tests Signed-off-by: Frances Thai --- .../charts/WorkflowStreamsLagChart.test.tsx | 18 +- .../WorkflowStreamsLagChart.test.tsx.snap | 8696 ++++++++--------- 2 files changed, 4346 insertions(+), 4368 deletions(-) diff --git a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx index 948b3e0b624..94a874b193c 100644 --- a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx +++ b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx @@ -17,7 +17,7 @@ import { UseQueryResult } from 'react-query'; import { TabletDebugVarsResponse } from '../../api/http'; import { vtadmin as pb } from '../../proto/vtadmin'; -import { formatSeries } from './WorkflowStreamsLagChart'; +import { getWorkflowTimeseries } from './WorkflowStreamsLagChart'; describe('WorkflowStreamsLagChart', () => { describe('formatSeries', () => { @@ -75,23 +75,25 @@ describe('WorkflowStreamsLagChart', () => { // A sneaky cast to UseQueryResult since otherwise enumerating the many fields // UseQueryResult (most of which we don't use) is pointlessly verbose. - const result = formatSeries(workflow, queries as UseQueryResult[]); + const result = getWorkflowTimeseries(workflow, queries as UseQueryResult[]); + console.log(result) // Use snapshot matching since defining expected values for arrays of 180 data points is... annoying. expect(result).toMatchSnapshot(); // ...but! Add additional validation so that failing tests are easier to debug. // (And because it can be tempting to not examine snapshot changes in detail...) :) - expect(result.length).toEqual(3); + expect(Object.keys(result).length).toEqual(3); - expect(result[0].name).toEqual('us_east_1a-123456/1'); - expect(result[1].name).toEqual('us_east_1a-123456/2'); - expect(result[2].name).toEqual('us_east_1a-789012/1'); + // expect(result['us_east_1a-123456/1']).toEqual([1, 1, 1]) + // expect(result[0].name).toEqual('us_east_1a-123456/1'); + // expect(result[1].name).toEqual('us_east_1a-123456/2'); + // expect(result[2].name).toEqual('us_east_1a-789012/1'); }); it('should handle empty input', () => { - const result = formatSeries(null, []); - expect(result).toEqual([]); + const result = getWorkflowTimeseries(null, []); + expect(result).toEqual({}); }); }); }); diff --git a/web/vtadmin/src/components/charts/__snapshots__/WorkflowStreamsLagChart.test.tsx.snap b/web/vtadmin/src/components/charts/__snapshots__/WorkflowStreamsLagChart.test.tsx.snap index d6dc49711f9..59126ed9dbf 100644 --- a/web/vtadmin/src/components/charts/__snapshots__/WorkflowStreamsLagChart.test.tsx.snap +++ b/web/vtadmin/src/components/charts/__snapshots__/WorkflowStreamsLagChart.test.tsx.snap @@ -1,4367 +1,4343 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`WorkflowStreamsLagChart > formatSeries > should return series for all streams in the workflow 1`] = ` -[ - { - "data": [ - { - "x": 999997852000, - "y": 0, - }, - { - "x": 999997864000, - "y": 0, - }, - { - "x": 999997876000, - "y": 0, - }, - { - "x": 999997888000, - "y": 0, - }, - { - "x": 999997900000, - "y": 0, - }, - { - "x": 999997912000, - "y": 0, - }, - { - "x": 999997924000, - "y": 0, - }, - { - "x": 999997936000, - "y": 0, - }, - { - "x": 999997948000, - "y": 0, - }, - { - "x": 999997960000, - "y": 0, - }, - { - "x": 999997972000, - "y": 0, - }, - { - "x": 999997984000, - "y": 0, - }, - { - "x": 999997996000, - "y": 0, - }, - { - "x": 999998008000, - "y": 0, - }, - { - "x": 999998020000, - "y": 0, - }, - { - "x": 999998032000, - "y": 0, - }, - { - "x": 999998044000, - "y": 0, - }, - { - "x": 999998056000, - "y": 0, - }, - { - "x": 999998068000, - "y": 0, - }, - { - "x": 999998080000, - "y": 0, - }, - { - "x": 999998092000, - "y": 0, - }, - { - "x": 999998104000, - "y": 0, - }, - { - "x": 999998116000, - "y": 0, - }, - { - "x": 999998128000, - "y": 0, - }, - { - "x": 999998140000, - "y": 0, - }, - { - "x": 999998152000, - "y": 0, - }, - { - "x": 999998164000, - "y": 0, - }, - { - "x": 999998176000, - "y": 0, - }, - { - "x": 999998188000, - "y": 0, - }, - { - "x": 999998200000, - "y": 0, - }, - { - "x": 999998212000, - "y": 0, - }, - { - "x": 999998224000, - "y": 0, - }, - { - "x": 999998236000, - "y": 0, - }, - { - "x": 999998248000, - "y": 0, - }, - { - "x": 999998260000, - "y": 0, - }, - { - "x": 999998272000, - "y": 0, - }, - { - "x": 999998284000, - "y": 0, - }, - { - "x": 999998296000, - "y": 0, - }, - { - "x": 999998308000, - "y": 0, - }, - { - "x": 999998320000, - "y": 0, - }, - { - "x": 999998332000, - "y": 0, - }, - { - "x": 999998344000, - "y": 0, - }, - { - "x": 999998356000, - "y": 0, - }, - { - "x": 999998368000, - "y": 0, - }, - { - "x": 999998380000, - "y": 0, - }, - { - "x": 999998392000, - "y": 0, - }, - { - "x": 999998404000, - "y": 0, - }, - { - "x": 999998416000, - "y": 0, - }, - { - "x": 999998428000, - "y": 0, - }, - { - "x": 999998440000, - "y": 0, - }, - { - "x": 999998452000, - "y": 0, - }, - { - "x": 999998464000, - "y": 0, - }, - { - "x": 999998476000, - "y": 0, - }, - { - "x": 999998488000, - "y": 0, - }, - { - "x": 999998500000, - "y": 0, - }, - { - "x": 999998512000, - "y": 0, - }, - { - "x": 999998524000, - "y": 0, - }, - { - "x": 999998536000, - "y": 0, - }, - { - "x": 999998548000, - "y": 0, - }, - { - "x": 999998560000, - "y": 0, - }, - { - "x": 999998572000, - "y": 0, - }, - { - "x": 999998584000, - "y": 0, - }, - { - "x": 999998596000, - "y": 0, - }, - { - "x": 999998608000, - "y": 0, - }, - { - "x": 999998620000, - "y": 0, - }, - { - "x": 999998632000, - "y": 0, - }, - { - "x": 999998644000, - "y": 0, - }, - { - "x": 999998656000, - "y": 0, - }, - { - "x": 999998668000, - "y": 0, - }, - { - "x": 999998680000, - "y": 0, - }, - { - "x": 999998692000, - "y": 0, - }, - { - "x": 999998704000, - "y": 0, - }, - { - "x": 999998716000, - "y": 0, - }, - { - "x": 999998728000, - "y": 0, - }, - { - "x": 999998740000, - "y": 0, - }, - { - "x": 999998752000, - "y": 0, - }, - { - "x": 999998764000, - "y": 0, - }, - { - "x": 999998776000, - "y": 0, - }, - { - "x": 999998788000, - "y": 0, - }, - { - "x": 999998800000, - "y": 0, - }, - { - "x": 999998812000, - "y": 0, - }, - { - "x": 999998824000, - "y": 0, - }, - { - "x": 999998836000, - "y": 0, - }, - { - "x": 999998848000, - "y": 0, - }, - { - "x": 999998860000, - "y": 0, - }, - { - "x": 999998872000, - "y": 0, - }, - { - "x": 999998884000, - "y": 0, - }, - { - "x": 999998896000, - "y": 0, - }, - { - "x": 999998908000, - "y": 0, - }, - { - "x": 999998920000, - "y": 0, - }, - { - "x": 999998932000, - "y": 0, - }, - { - "x": 999998944000, - "y": 0, - }, - { - "x": 999998956000, - "y": 0, - }, - { - "x": 999998968000, - "y": 0, - }, - { - "x": 999998980000, - "y": 0, - }, - { - "x": 999998992000, - "y": 0, - }, - { - "x": 999999004000, - "y": 0, - }, - { - "x": 999999016000, - "y": 0, - }, - { - "x": 999999028000, - "y": 0, - }, - { - "x": 999999040000, - "y": 0, - }, - { - "x": 999999052000, - "y": 0, - }, - { - "x": 999999064000, - "y": 0, - }, - { - "x": 999999076000, - "y": 0, - }, - { - "x": 999999088000, - "y": 0, - }, - { - "x": 999999100000, - "y": 0, - }, - { - "x": 999999112000, - "y": 0, - }, - { - "x": 999999124000, - "y": 0, - }, - { - "x": 999999136000, - "y": 0, - }, - { - "x": 999999148000, - "y": 0, - }, - { - "x": 999999160000, - "y": 0, - }, - { - "x": 999999172000, - "y": 0, - }, - { - "x": 999999184000, - "y": 0, - }, - { - "x": 999999196000, - "y": 0, - }, - { - "x": 999999208000, - "y": 0, - }, - { - "x": 999999220000, - "y": 0, - }, - { - "x": 999999232000, - "y": 0, - }, - { - "x": 999999244000, - "y": 0, - }, - { - "x": 999999256000, - "y": 0, - }, - { - "x": 999999268000, - "y": 0, - }, - { - "x": 999999280000, - "y": 0, - }, - { - "x": 999999292000, - "y": 0, - }, - { - "x": 999999304000, - "y": 0, - }, - { - "x": 999999316000, - "y": 0, - }, - { - "x": 999999328000, - "y": 0, - }, - { - "x": 999999340000, - "y": 0, - }, - { - "x": 999999352000, - "y": 0, - }, - { - "x": 999999364000, - "y": 0, - }, - { - "x": 999999376000, - "y": 0, - }, - { - "x": 999999388000, - "y": 0, - }, - { - "x": 999999400000, - "y": 0, - }, - { - "x": 999999412000, - "y": 0, - }, - { - "x": 999999424000, - "y": 0, - }, - { - "x": 999999436000, - "y": 0, - }, - { - "x": 999999448000, - "y": 0, - }, - { - "x": 999999460000, - "y": 0, - }, - { - "x": 999999472000, - "y": 0, - }, - { - "x": 999999484000, - "y": 0, - }, - { - "x": 999999496000, - "y": 0, - }, - { - "x": 999999508000, - "y": 0, - }, - { - "x": 999999520000, - "y": 0, - }, - { - "x": 999999532000, - "y": 0, - }, - { - "x": 999999544000, - "y": 0, - }, - { - "x": 999999556000, - "y": 0, - }, - { - "x": 999999568000, - "y": 0, - }, - { - "x": 999999580000, - "y": 0, - }, - { - "x": 999999592000, - "y": 0, - }, - { - "x": 999999604000, - "y": 0, - }, - { - "x": 999999616000, - "y": 0, - }, - { - "x": 999999628000, - "y": 0, - }, - { - "x": 999999640000, - "y": 0, - }, - { - "x": 999999652000, - "y": 0, - }, - { - "x": 999999664000, - "y": 0, - }, - { - "x": 999999676000, - "y": 0, - }, - { - "x": 999999688000, - "y": 0, - }, - { - "x": 999999700000, - "y": 0, - }, - { - "x": 999999712000, - "y": 0, - }, - { - "x": 999999724000, - "y": 0, - }, - { - "x": 999999736000, - "y": 0, - }, - { - "x": 999999748000, - "y": 0, - }, - { - "x": 999999760000, - "y": 0, - }, - { - "x": 999999772000, - "y": 0, - }, - { - "x": 999999784000, - "y": 0, - }, - { - "x": 999999796000, - "y": 0, - }, - { - "x": 999999808000, - "y": 0, - }, - { - "x": 999999820000, - "y": 0, - }, - { - "x": 999999832000, - "y": 0, - }, - { - "x": 999999844000, - "y": 0, - }, - { - "x": 999999856000, - "y": 0, - }, - { - "x": 999999868000, - "y": 0, - }, - { - "x": 999999880000, - "y": 0, - }, - { - "x": 999999892000, - "y": 0, - }, - { - "x": 999999904000, - "y": 0, - }, - { - "x": 999999916000, - "y": 0, - }, - { - "x": 999999928000, - "y": 0, - }, - { - "x": 999999940000, - "y": 0, - }, - { - "x": 999999952000, - "y": 0, - }, - { - "x": 999999964000, - "y": 0, - }, - { - "x": 999999976000, - "y": 1, - }, - { - "x": 999999988000, - "y": 1, - }, - { - "x": 1000000000000, - "y": 1, - }, - ], - "name": "us_east_1a-123456/1", - "type": "line", - }, - { - "data": [ - { - "x": 999997852000, - "y": 0, - }, - { - "x": 999997864000, - "y": 0, - }, - { - "x": 999997876000, - "y": 0, - }, - { - "x": 999997888000, - "y": 0, - }, - { - "x": 999997900000, - "y": 0, - }, - { - "x": 999997912000, - "y": 0, - }, - { - "x": 999997924000, - "y": 0, - }, - { - "x": 999997936000, - "y": 0, - }, - { - "x": 999997948000, - "y": 0, - }, - { - "x": 999997960000, - "y": 0, - }, - { - "x": 999997972000, - "y": 0, - }, - { - "x": 999997984000, - "y": 0, - }, - { - "x": 999997996000, - "y": 0, - }, - { - "x": 999998008000, - "y": 0, - }, - { - "x": 999998020000, - "y": 0, - }, - { - "x": 999998032000, - "y": 0, - }, - { - "x": 999998044000, - "y": 0, - }, - { - "x": 999998056000, - "y": 0, - }, - { - "x": 999998068000, - "y": 0, - }, - { - "x": 999998080000, - "y": 0, - }, - { - "x": 999998092000, - "y": 0, - }, - { - "x": 999998104000, - "y": 0, - }, - { - "x": 999998116000, - "y": 0, - }, - { - "x": 999998128000, - "y": 0, - }, - { - "x": 999998140000, - "y": 0, - }, - { - "x": 999998152000, - "y": 0, - }, - { - "x": 999998164000, - "y": 0, - }, - { - "x": 999998176000, - "y": 0, - }, - { - "x": 999998188000, - "y": 0, - }, - { - "x": 999998200000, - "y": 0, - }, - { - "x": 999998212000, - "y": 0, - }, - { - "x": 999998224000, - "y": 0, - }, - { - "x": 999998236000, - "y": 0, - }, - { - "x": 999998248000, - "y": 0, - }, - { - "x": 999998260000, - "y": 0, - }, - { - "x": 999998272000, - "y": 0, - }, - { - "x": 999998284000, - "y": 0, - }, - { - "x": 999998296000, - "y": 0, - }, - { - "x": 999998308000, - "y": 0, - }, - { - "x": 999998320000, - "y": 0, - }, - { - "x": 999998332000, - "y": 0, - }, - { - "x": 999998344000, - "y": 0, - }, - { - "x": 999998356000, - "y": 0, - }, - { - "x": 999998368000, - "y": 0, - }, - { - "x": 999998380000, - "y": 0, - }, - { - "x": 999998392000, - "y": 0, - }, - { - "x": 999998404000, - "y": 0, - }, - { - "x": 999998416000, - "y": 0, - }, - { - "x": 999998428000, - "y": 0, - }, - { - "x": 999998440000, - "y": 0, - }, - { - "x": 999998452000, - "y": 0, - }, - { - "x": 999998464000, - "y": 0, - }, - { - "x": 999998476000, - "y": 0, - }, - { - "x": 999998488000, - "y": 0, - }, - { - "x": 999998500000, - "y": 0, - }, - { - "x": 999998512000, - "y": 0, - }, - { - "x": 999998524000, - "y": 0, - }, - { - "x": 999998536000, - "y": 0, - }, - { - "x": 999998548000, - "y": 0, - }, - { - "x": 999998560000, - "y": 0, - }, - { - "x": 999998572000, - "y": 0, - }, - { - "x": 999998584000, - "y": 0, - }, - { - "x": 999998596000, - "y": 0, - }, - { - "x": 999998608000, - "y": 0, - }, - { - "x": 999998620000, - "y": 0, - }, - { - "x": 999998632000, - "y": 0, - }, - { - "x": 999998644000, - "y": 0, - }, - { - "x": 999998656000, - "y": 0, - }, - { - "x": 999998668000, - "y": 0, - }, - { - "x": 999998680000, - "y": 0, - }, - { - "x": 999998692000, - "y": 0, - }, - { - "x": 999998704000, - "y": 0, - }, - { - "x": 999998716000, - "y": 0, - }, - { - "x": 999998728000, - "y": 0, - }, - { - "x": 999998740000, - "y": 0, - }, - { - "x": 999998752000, - "y": 0, - }, - { - "x": 999998764000, - "y": 0, - }, - { - "x": 999998776000, - "y": 0, - }, - { - "x": 999998788000, - "y": 0, - }, - { - "x": 999998800000, - "y": 0, - }, - { - "x": 999998812000, - "y": 0, - }, - { - "x": 999998824000, - "y": 0, - }, - { - "x": 999998836000, - "y": 0, - }, - { - "x": 999998848000, - "y": 0, - }, - { - "x": 999998860000, - "y": 0, - }, - { - "x": 999998872000, - "y": 0, - }, - { - "x": 999998884000, - "y": 0, - }, - { - "x": 999998896000, - "y": 0, - }, - { - "x": 999998908000, - "y": 0, - }, - { - "x": 999998920000, - "y": 0, - }, - { - "x": 999998932000, - "y": 0, - }, - { - "x": 999998944000, - "y": 0, - }, - { - "x": 999998956000, - "y": 0, - }, - { - "x": 999998968000, - "y": 0, - }, - { - "x": 999998980000, - "y": 0, - }, - { - "x": 999998992000, - "y": 0, - }, - { - "x": 999999004000, - "y": 0, - }, - { - "x": 999999016000, - "y": 0, - }, - { - "x": 999999028000, - "y": 0, - }, - { - "x": 999999040000, - "y": 0, - }, - { - "x": 999999052000, - "y": 0, - }, - { - "x": 999999064000, - "y": 0, - }, - { - "x": 999999076000, - "y": 0, - }, - { - "x": 999999088000, - "y": 0, - }, - { - "x": 999999100000, - "y": 0, - }, - { - "x": 999999112000, - "y": 0, - }, - { - "x": 999999124000, - "y": 0, - }, - { - "x": 999999136000, - "y": 0, - }, - { - "x": 999999148000, - "y": 0, - }, - { - "x": 999999160000, - "y": 0, - }, - { - "x": 999999172000, - "y": 0, - }, - { - "x": 999999184000, - "y": 0, - }, - { - "x": 999999196000, - "y": 0, - }, - { - "x": 999999208000, - "y": 0, - }, - { - "x": 999999220000, - "y": 0, - }, - { - "x": 999999232000, - "y": 0, - }, - { - "x": 999999244000, - "y": 0, - }, - { - "x": 999999256000, - "y": 0, - }, - { - "x": 999999268000, - "y": 0, - }, - { - "x": 999999280000, - "y": 0, - }, - { - "x": 999999292000, - "y": 0, - }, - { - "x": 999999304000, - "y": 0, - }, - { - "x": 999999316000, - "y": 0, - }, - { - "x": 999999328000, - "y": 0, - }, - { - "x": 999999340000, - "y": 0, - }, - { - "x": 999999352000, - "y": 0, - }, - { - "x": 999999364000, - "y": 0, - }, - { - "x": 999999376000, - "y": 0, - }, - { - "x": 999999388000, - "y": 0, - }, - { - "x": 999999400000, - "y": 0, - }, - { - "x": 999999412000, - "y": 0, - }, - { - "x": 999999424000, - "y": 0, - }, - { - "x": 999999436000, - "y": 0, - }, - { - "x": 999999448000, - "y": 0, - }, - { - "x": 999999460000, - "y": 0, - }, - { - "x": 999999472000, - "y": 0, - }, - { - "x": 999999484000, - "y": 0, - }, - { - "x": 999999496000, - "y": 0, - }, - { - "x": 999999508000, - "y": 0, - }, - { - "x": 999999520000, - "y": 0, - }, - { - "x": 999999532000, - "y": 0, - }, - { - "x": 999999544000, - "y": 0, - }, - { - "x": 999999556000, - "y": 0, - }, - { - "x": 999999568000, - "y": 0, - }, - { - "x": 999999580000, - "y": 0, - }, - { - "x": 999999592000, - "y": 0, - }, - { - "x": 999999604000, - "y": 0, - }, - { - "x": 999999616000, - "y": 0, - }, - { - "x": 999999628000, - "y": 0, - }, - { - "x": 999999640000, - "y": 0, - }, - { - "x": 999999652000, - "y": 0, - }, - { - "x": 999999664000, - "y": 0, - }, - { - "x": 999999676000, - "y": 0, - }, - { - "x": 999999688000, - "y": 0, - }, - { - "x": 999999700000, - "y": 0, - }, - { - "x": 999999712000, - "y": 0, - }, - { - "x": 999999724000, - "y": 0, - }, - { - "x": 999999736000, - "y": 0, - }, - { - "x": 999999748000, - "y": 0, - }, - { - "x": 999999760000, - "y": 0, - }, - { - "x": 999999772000, - "y": 0, - }, - { - "x": 999999784000, - "y": 0, - }, - { - "x": 999999796000, - "y": 0, - }, - { - "x": 999999808000, - "y": 0, - }, - { - "x": 999999820000, - "y": 0, - }, - { - "x": 999999832000, - "y": 0, - }, - { - "x": 999999844000, - "y": 0, - }, - { - "x": 999999856000, - "y": 0, - }, - { - "x": 999999868000, - "y": 0, - }, - { - "x": 999999880000, - "y": 0, - }, - { - "x": 999999892000, - "y": 0, - }, - { - "x": 999999904000, - "y": 0, - }, - { - "x": 999999916000, - "y": 0, - }, - { - "x": 999999928000, - "y": 0, - }, - { - "x": 999999940000, - "y": 0, - }, - { - "x": 999999952000, - "y": 0, - }, - { - "x": 999999964000, - "y": 0, - }, - { - "x": 999999976000, - "y": 2, - }, - { - "x": 999999988000, - "y": 2, - }, - { - "x": 1000000000000, - "y": 2, - }, - ], - "name": "us_east_1a-123456/2", - "type": "line", - }, - { - "data": [ - { - "x": 999997852000, - "y": 0, - }, - { - "x": 999997864000, - "y": 0, - }, - { - "x": 999997876000, - "y": 0, - }, - { - "x": 999997888000, - "y": 0, - }, - { - "x": 999997900000, - "y": 0, - }, - { - "x": 999997912000, - "y": 0, - }, - { - "x": 999997924000, - "y": 0, - }, - { - "x": 999997936000, - "y": 0, - }, - { - "x": 999997948000, - "y": 0, - }, - { - "x": 999997960000, - "y": 0, - }, - { - "x": 999997972000, - "y": 0, - }, - { - "x": 999997984000, - "y": 0, - }, - { - "x": 999997996000, - "y": 0, - }, - { - "x": 999998008000, - "y": 0, - }, - { - "x": 999998020000, - "y": 0, - }, - { - "x": 999998032000, - "y": 0, - }, - { - "x": 999998044000, - "y": 0, - }, - { - "x": 999998056000, - "y": 0, - }, - { - "x": 999998068000, - "y": 0, - }, - { - "x": 999998080000, - "y": 0, - }, - { - "x": 999998092000, - "y": 0, - }, - { - "x": 999998104000, - "y": 0, - }, - { - "x": 999998116000, - "y": 0, - }, - { - "x": 999998128000, - "y": 0, - }, - { - "x": 999998140000, - "y": 0, - }, - { - "x": 999998152000, - "y": 0, - }, - { - "x": 999998164000, - "y": 0, - }, - { - "x": 999998176000, - "y": 0, - }, - { - "x": 999998188000, - "y": 0, - }, - { - "x": 999998200000, - "y": 0, - }, - { - "x": 999998212000, - "y": 0, - }, - { - "x": 999998224000, - "y": 0, - }, - { - "x": 999998236000, - "y": 0, - }, - { - "x": 999998248000, - "y": 0, - }, - { - "x": 999998260000, - "y": 0, - }, - { - "x": 999998272000, - "y": 0, - }, - { - "x": 999998284000, - "y": 0, - }, - { - "x": 999998296000, - "y": 0, - }, - { - "x": 999998308000, - "y": 0, - }, - { - "x": 999998320000, - "y": 0, - }, - { - "x": 999998332000, - "y": 0, - }, - { - "x": 999998344000, - "y": 0, - }, - { - "x": 999998356000, - "y": 0, - }, - { - "x": 999998368000, - "y": 0, - }, - { - "x": 999998380000, - "y": 0, - }, - { - "x": 999998392000, - "y": 0, - }, - { - "x": 999998404000, - "y": 0, - }, - { - "x": 999998416000, - "y": 0, - }, - { - "x": 999998428000, - "y": 0, - }, - { - "x": 999998440000, - "y": 0, - }, - { - "x": 999998452000, - "y": 0, - }, - { - "x": 999998464000, - "y": 0, - }, - { - "x": 999998476000, - "y": 0, - }, - { - "x": 999998488000, - "y": 0, - }, - { - "x": 999998500000, - "y": 0, - }, - { - "x": 999998512000, - "y": 0, - }, - { - "x": 999998524000, - "y": 0, - }, - { - "x": 999998536000, - "y": 0, - }, - { - "x": 999998548000, - "y": 0, - }, - { - "x": 999998560000, - "y": 0, - }, - { - "x": 999998572000, - "y": 0, - }, - { - "x": 999998584000, - "y": 0, - }, - { - "x": 999998596000, - "y": 0, - }, - { - "x": 999998608000, - "y": 0, - }, - { - "x": 999998620000, - "y": 0, - }, - { - "x": 999998632000, - "y": 0, - }, - { - "x": 999998644000, - "y": 0, - }, - { - "x": 999998656000, - "y": 0, - }, - { - "x": 999998668000, - "y": 0, - }, - { - "x": 999998680000, - "y": 0, - }, - { - "x": 999998692000, - "y": 0, - }, - { - "x": 999998704000, - "y": 0, - }, - { - "x": 999998716000, - "y": 0, - }, - { - "x": 999998728000, - "y": 0, - }, - { - "x": 999998740000, - "y": 0, - }, - { - "x": 999998752000, - "y": 0, - }, - { - "x": 999998764000, - "y": 0, - }, - { - "x": 999998776000, - "y": 0, - }, - { - "x": 999998788000, - "y": 0, - }, - { - "x": 999998800000, - "y": 0, - }, - { - "x": 999998812000, - "y": 0, - }, - { - "x": 999998824000, - "y": 0, - }, - { - "x": 999998836000, - "y": 0, - }, - { - "x": 999998848000, - "y": 0, - }, - { - "x": 999998860000, - "y": 0, - }, - { - "x": 999998872000, - "y": 0, - }, - { - "x": 999998884000, - "y": 0, - }, - { - "x": 999998896000, - "y": 0, - }, - { - "x": 999998908000, - "y": 0, - }, - { - "x": 999998920000, - "y": 0, - }, - { - "x": 999998932000, - "y": 0, - }, - { - "x": 999998944000, - "y": 0, - }, - { - "x": 999998956000, - "y": 0, - }, - { - "x": 999998968000, - "y": 0, - }, - { - "x": 999998980000, - "y": 0, - }, - { - "x": 999998992000, - "y": 0, - }, - { - "x": 999999004000, - "y": 0, - }, - { - "x": 999999016000, - "y": 0, - }, - { - "x": 999999028000, - "y": 0, - }, - { - "x": 999999040000, - "y": 0, - }, - { - "x": 999999052000, - "y": 0, - }, - { - "x": 999999064000, - "y": 0, - }, - { - "x": 999999076000, - "y": 0, - }, - { - "x": 999999088000, - "y": 0, - }, - { - "x": 999999100000, - "y": 0, - }, - { - "x": 999999112000, - "y": 0, - }, - { - "x": 999999124000, - "y": 0, - }, - { - "x": 999999136000, - "y": 0, - }, - { - "x": 999999148000, - "y": 0, - }, - { - "x": 999999160000, - "y": 0, - }, - { - "x": 999999172000, - "y": 0, - }, - { - "x": 999999184000, - "y": 0, - }, - { - "x": 999999196000, - "y": 0, - }, - { - "x": 999999208000, - "y": 0, - }, - { - "x": 999999220000, - "y": 0, - }, - { - "x": 999999232000, - "y": 0, - }, - { - "x": 999999244000, - "y": 0, - }, - { - "x": 999999256000, - "y": 0, - }, - { - "x": 999999268000, - "y": 0, - }, - { - "x": 999999280000, - "y": 0, - }, - { - "x": 999999292000, - "y": 0, - }, - { - "x": 999999304000, - "y": 0, - }, - { - "x": 999999316000, - "y": 0, - }, - { - "x": 999999328000, - "y": 0, - }, - { - "x": 999999340000, - "y": 0, - }, - { - "x": 999999352000, - "y": 0, - }, - { - "x": 999999364000, - "y": 0, - }, - { - "x": 999999376000, - "y": 0, - }, - { - "x": 999999388000, - "y": 0, - }, - { - "x": 999999400000, - "y": 0, - }, - { - "x": 999999412000, - "y": 0, - }, - { - "x": 999999424000, - "y": 0, - }, - { - "x": 999999436000, - "y": 0, - }, - { - "x": 999999448000, - "y": 0, - }, - { - "x": 999999460000, - "y": 0, - }, - { - "x": 999999472000, - "y": 0, - }, - { - "x": 999999484000, - "y": 0, - }, - { - "x": 999999496000, - "y": 0, - }, - { - "x": 999999508000, - "y": 0, - }, - { - "x": 999999520000, - "y": 0, - }, - { - "x": 999999532000, - "y": 0, - }, - { - "x": 999999544000, - "y": 0, - }, - { - "x": 999999556000, - "y": 0, - }, - { - "x": 999999568000, - "y": 0, - }, - { - "x": 999999580000, - "y": 0, - }, - { - "x": 999999592000, - "y": 0, - }, - { - "x": 999999604000, - "y": 0, - }, - { - "x": 999999616000, - "y": 0, - }, - { - "x": 999999628000, - "y": 0, - }, - { - "x": 999999640000, - "y": 0, - }, - { - "x": 999999652000, - "y": 0, - }, - { - "x": 999999664000, - "y": 0, - }, - { - "x": 999999676000, - "y": 0, - }, - { - "x": 999999688000, - "y": 0, - }, - { - "x": 999999700000, - "y": 0, - }, - { - "x": 999999712000, - "y": 0, - }, - { - "x": 999999724000, - "y": 0, - }, - { - "x": 999999736000, - "y": 0, - }, - { - "x": 999999748000, - "y": 0, - }, - { - "x": 999999760000, - "y": 0, - }, - { - "x": 999999772000, - "y": 0, - }, - { - "x": 999999784000, - "y": 0, - }, - { - "x": 999999796000, - "y": 0, - }, - { - "x": 999999808000, - "y": 0, - }, - { - "x": 999999820000, - "y": 0, - }, - { - "x": 999999832000, - "y": 0, - }, - { - "x": 999999844000, - "y": 0, - }, - { - "x": 999999856000, - "y": 0, - }, - { - "x": 999999868000, - "y": 0, - }, - { - "x": 999999880000, - "y": 0, - }, - { - "x": 999999892000, - "y": 0, - }, - { - "x": 999999904000, - "y": 0, - }, - { - "x": 999999916000, - "y": 0, - }, - { - "x": 999999928000, - "y": 0, - }, - { - "x": 999999940000, - "y": 0, - }, - { - "x": 999999952000, - "y": 0, - }, - { - "x": 999999964000, - "y": 0, - }, - { - "x": 999999976000, - "y": 1, - }, - { - "x": 999999988000, - "y": 1, - }, - { - "x": 1000000000000, - "y": 1, - }, - ], - "name": "us_east_1a-789012/1", - "type": "line", - }, -] +{ + "us_east_1a-123456/1": [ + { + "x": 999997852000, + "y": 0, + }, + { + "x": 999997864000, + "y": 0, + }, + { + "x": 999997876000, + "y": 0, + }, + { + "x": 999997888000, + "y": 0, + }, + { + "x": 999997900000, + "y": 0, + }, + { + "x": 999997912000, + "y": 0, + }, + { + "x": 999997924000, + "y": 0, + }, + { + "x": 999997936000, + "y": 0, + }, + { + "x": 999997948000, + "y": 0, + }, + { + "x": 999997960000, + "y": 0, + }, + { + "x": 999997972000, + "y": 0, + }, + { + "x": 999997984000, + "y": 0, + }, + { + "x": 999997996000, + "y": 0, + }, + { + "x": 999998008000, + "y": 0, + }, + { + "x": 999998020000, + "y": 0, + }, + { + "x": 999998032000, + "y": 0, + }, + { + "x": 999998044000, + "y": 0, + }, + { + "x": 999998056000, + "y": 0, + }, + { + "x": 999998068000, + "y": 0, + }, + { + "x": 999998080000, + "y": 0, + }, + { + "x": 999998092000, + "y": 0, + }, + { + "x": 999998104000, + "y": 0, + }, + { + "x": 999998116000, + "y": 0, + }, + { + "x": 999998128000, + "y": 0, + }, + { + "x": 999998140000, + "y": 0, + }, + { + "x": 999998152000, + "y": 0, + }, + { + "x": 999998164000, + "y": 0, + }, + { + "x": 999998176000, + "y": 0, + }, + { + "x": 999998188000, + "y": 0, + }, + { + "x": 999998200000, + "y": 0, + }, + { + "x": 999998212000, + "y": 0, + }, + { + "x": 999998224000, + "y": 0, + }, + { + "x": 999998236000, + "y": 0, + }, + { + "x": 999998248000, + "y": 0, + }, + { + "x": 999998260000, + "y": 0, + }, + { + "x": 999998272000, + "y": 0, + }, + { + "x": 999998284000, + "y": 0, + }, + { + "x": 999998296000, + "y": 0, + }, + { + "x": 999998308000, + "y": 0, + }, + { + "x": 999998320000, + "y": 0, + }, + { + "x": 999998332000, + "y": 0, + }, + { + "x": 999998344000, + "y": 0, + }, + { + "x": 999998356000, + "y": 0, + }, + { + "x": 999998368000, + "y": 0, + }, + { + "x": 999998380000, + "y": 0, + }, + { + "x": 999998392000, + "y": 0, + }, + { + "x": 999998404000, + "y": 0, + }, + { + "x": 999998416000, + "y": 0, + }, + { + "x": 999998428000, + "y": 0, + }, + { + "x": 999998440000, + "y": 0, + }, + { + "x": 999998452000, + "y": 0, + }, + { + "x": 999998464000, + "y": 0, + }, + { + "x": 999998476000, + "y": 0, + }, + { + "x": 999998488000, + "y": 0, + }, + { + "x": 999998500000, + "y": 0, + }, + { + "x": 999998512000, + "y": 0, + }, + { + "x": 999998524000, + "y": 0, + }, + { + "x": 999998536000, + "y": 0, + }, + { + "x": 999998548000, + "y": 0, + }, + { + "x": 999998560000, + "y": 0, + }, + { + "x": 999998572000, + "y": 0, + }, + { + "x": 999998584000, + "y": 0, + }, + { + "x": 999998596000, + "y": 0, + }, + { + "x": 999998608000, + "y": 0, + }, + { + "x": 999998620000, + "y": 0, + }, + { + "x": 999998632000, + "y": 0, + }, + { + "x": 999998644000, + "y": 0, + }, + { + "x": 999998656000, + "y": 0, + }, + { + "x": 999998668000, + "y": 0, + }, + { + "x": 999998680000, + "y": 0, + }, + { + "x": 999998692000, + "y": 0, + }, + { + "x": 999998704000, + "y": 0, + }, + { + "x": 999998716000, + "y": 0, + }, + { + "x": 999998728000, + "y": 0, + }, + { + "x": 999998740000, + "y": 0, + }, + { + "x": 999998752000, + "y": 0, + }, + { + "x": 999998764000, + "y": 0, + }, + { + "x": 999998776000, + "y": 0, + }, + { + "x": 999998788000, + "y": 0, + }, + { + "x": 999998800000, + "y": 0, + }, + { + "x": 999998812000, + "y": 0, + }, + { + "x": 999998824000, + "y": 0, + }, + { + "x": 999998836000, + "y": 0, + }, + { + "x": 999998848000, + "y": 0, + }, + { + "x": 999998860000, + "y": 0, + }, + { + "x": 999998872000, + "y": 0, + }, + { + "x": 999998884000, + "y": 0, + }, + { + "x": 999998896000, + "y": 0, + }, + { + "x": 999998908000, + "y": 0, + }, + { + "x": 999998920000, + "y": 0, + }, + { + "x": 999998932000, + "y": 0, + }, + { + "x": 999998944000, + "y": 0, + }, + { + "x": 999998956000, + "y": 0, + }, + { + "x": 999998968000, + "y": 0, + }, + { + "x": 999998980000, + "y": 0, + }, + { + "x": 999998992000, + "y": 0, + }, + { + "x": 999999004000, + "y": 0, + }, + { + "x": 999999016000, + "y": 0, + }, + { + "x": 999999028000, + "y": 0, + }, + { + "x": 999999040000, + "y": 0, + }, + { + "x": 999999052000, + "y": 0, + }, + { + "x": 999999064000, + "y": 0, + }, + { + "x": 999999076000, + "y": 0, + }, + { + "x": 999999088000, + "y": 0, + }, + { + "x": 999999100000, + "y": 0, + }, + { + "x": 999999112000, + "y": 0, + }, + { + "x": 999999124000, + "y": 0, + }, + { + "x": 999999136000, + "y": 0, + }, + { + "x": 999999148000, + "y": 0, + }, + { + "x": 999999160000, + "y": 0, + }, + { + "x": 999999172000, + "y": 0, + }, + { + "x": 999999184000, + "y": 0, + }, + { + "x": 999999196000, + "y": 0, + }, + { + "x": 999999208000, + "y": 0, + }, + { + "x": 999999220000, + "y": 0, + }, + { + "x": 999999232000, + "y": 0, + }, + { + "x": 999999244000, + "y": 0, + }, + { + "x": 999999256000, + "y": 0, + }, + { + "x": 999999268000, + "y": 0, + }, + { + "x": 999999280000, + "y": 0, + }, + { + "x": 999999292000, + "y": 0, + }, + { + "x": 999999304000, + "y": 0, + }, + { + "x": 999999316000, + "y": 0, + }, + { + "x": 999999328000, + "y": 0, + }, + { + "x": 999999340000, + "y": 0, + }, + { + "x": 999999352000, + "y": 0, + }, + { + "x": 999999364000, + "y": 0, + }, + { + "x": 999999376000, + "y": 0, + }, + { + "x": 999999388000, + "y": 0, + }, + { + "x": 999999400000, + "y": 0, + }, + { + "x": 999999412000, + "y": 0, + }, + { + "x": 999999424000, + "y": 0, + }, + { + "x": 999999436000, + "y": 0, + }, + { + "x": 999999448000, + "y": 0, + }, + { + "x": 999999460000, + "y": 0, + }, + { + "x": 999999472000, + "y": 0, + }, + { + "x": 999999484000, + "y": 0, + }, + { + "x": 999999496000, + "y": 0, + }, + { + "x": 999999508000, + "y": 0, + }, + { + "x": 999999520000, + "y": 0, + }, + { + "x": 999999532000, + "y": 0, + }, + { + "x": 999999544000, + "y": 0, + }, + { + "x": 999999556000, + "y": 0, + }, + { + "x": 999999568000, + "y": 0, + }, + { + "x": 999999580000, + "y": 0, + }, + { + "x": 999999592000, + "y": 0, + }, + { + "x": 999999604000, + "y": 0, + }, + { + "x": 999999616000, + "y": 0, + }, + { + "x": 999999628000, + "y": 0, + }, + { + "x": 999999640000, + "y": 0, + }, + { + "x": 999999652000, + "y": 0, + }, + { + "x": 999999664000, + "y": 0, + }, + { + "x": 999999676000, + "y": 0, + }, + { + "x": 999999688000, + "y": 0, + }, + { + "x": 999999700000, + "y": 0, + }, + { + "x": 999999712000, + "y": 0, + }, + { + "x": 999999724000, + "y": 0, + }, + { + "x": 999999736000, + "y": 0, + }, + { + "x": 999999748000, + "y": 0, + }, + { + "x": 999999760000, + "y": 0, + }, + { + "x": 999999772000, + "y": 0, + }, + { + "x": 999999784000, + "y": 0, + }, + { + "x": 999999796000, + "y": 0, + }, + { + "x": 999999808000, + "y": 0, + }, + { + "x": 999999820000, + "y": 0, + }, + { + "x": 999999832000, + "y": 0, + }, + { + "x": 999999844000, + "y": 0, + }, + { + "x": 999999856000, + "y": 0, + }, + { + "x": 999999868000, + "y": 0, + }, + { + "x": 999999880000, + "y": 0, + }, + { + "x": 999999892000, + "y": 0, + }, + { + "x": 999999904000, + "y": 0, + }, + { + "x": 999999916000, + "y": 0, + }, + { + "x": 999999928000, + "y": 0, + }, + { + "x": 999999940000, + "y": 0, + }, + { + "x": 999999952000, + "y": 0, + }, + { + "x": 999999964000, + "y": 0, + }, + { + "x": 999999976000, + "y": 1, + }, + { + "x": 999999988000, + "y": 1, + }, + { + "x": 1000000000000, + "y": 1, + }, + ], + "us_east_1a-123456/2": [ + { + "x": 999997852000, + "y": 0, + }, + { + "x": 999997864000, + "y": 0, + }, + { + "x": 999997876000, + "y": 0, + }, + { + "x": 999997888000, + "y": 0, + }, + { + "x": 999997900000, + "y": 0, + }, + { + "x": 999997912000, + "y": 0, + }, + { + "x": 999997924000, + "y": 0, + }, + { + "x": 999997936000, + "y": 0, + }, + { + "x": 999997948000, + "y": 0, + }, + { + "x": 999997960000, + "y": 0, + }, + { + "x": 999997972000, + "y": 0, + }, + { + "x": 999997984000, + "y": 0, + }, + { + "x": 999997996000, + "y": 0, + }, + { + "x": 999998008000, + "y": 0, + }, + { + "x": 999998020000, + "y": 0, + }, + { + "x": 999998032000, + "y": 0, + }, + { + "x": 999998044000, + "y": 0, + }, + { + "x": 999998056000, + "y": 0, + }, + { + "x": 999998068000, + "y": 0, + }, + { + "x": 999998080000, + "y": 0, + }, + { + "x": 999998092000, + "y": 0, + }, + { + "x": 999998104000, + "y": 0, + }, + { + "x": 999998116000, + "y": 0, + }, + { + "x": 999998128000, + "y": 0, + }, + { + "x": 999998140000, + "y": 0, + }, + { + "x": 999998152000, + "y": 0, + }, + { + "x": 999998164000, + "y": 0, + }, + { + "x": 999998176000, + "y": 0, + }, + { + "x": 999998188000, + "y": 0, + }, + { + "x": 999998200000, + "y": 0, + }, + { + "x": 999998212000, + "y": 0, + }, + { + "x": 999998224000, + "y": 0, + }, + { + "x": 999998236000, + "y": 0, + }, + { + "x": 999998248000, + "y": 0, + }, + { + "x": 999998260000, + "y": 0, + }, + { + "x": 999998272000, + "y": 0, + }, + { + "x": 999998284000, + "y": 0, + }, + { + "x": 999998296000, + "y": 0, + }, + { + "x": 999998308000, + "y": 0, + }, + { + "x": 999998320000, + "y": 0, + }, + { + "x": 999998332000, + "y": 0, + }, + { + "x": 999998344000, + "y": 0, + }, + { + "x": 999998356000, + "y": 0, + }, + { + "x": 999998368000, + "y": 0, + }, + { + "x": 999998380000, + "y": 0, + }, + { + "x": 999998392000, + "y": 0, + }, + { + "x": 999998404000, + "y": 0, + }, + { + "x": 999998416000, + "y": 0, + }, + { + "x": 999998428000, + "y": 0, + }, + { + "x": 999998440000, + "y": 0, + }, + { + "x": 999998452000, + "y": 0, + }, + { + "x": 999998464000, + "y": 0, + }, + { + "x": 999998476000, + "y": 0, + }, + { + "x": 999998488000, + "y": 0, + }, + { + "x": 999998500000, + "y": 0, + }, + { + "x": 999998512000, + "y": 0, + }, + { + "x": 999998524000, + "y": 0, + }, + { + "x": 999998536000, + "y": 0, + }, + { + "x": 999998548000, + "y": 0, + }, + { + "x": 999998560000, + "y": 0, + }, + { + "x": 999998572000, + "y": 0, + }, + { + "x": 999998584000, + "y": 0, + }, + { + "x": 999998596000, + "y": 0, + }, + { + "x": 999998608000, + "y": 0, + }, + { + "x": 999998620000, + "y": 0, + }, + { + "x": 999998632000, + "y": 0, + }, + { + "x": 999998644000, + "y": 0, + }, + { + "x": 999998656000, + "y": 0, + }, + { + "x": 999998668000, + "y": 0, + }, + { + "x": 999998680000, + "y": 0, + }, + { + "x": 999998692000, + "y": 0, + }, + { + "x": 999998704000, + "y": 0, + }, + { + "x": 999998716000, + "y": 0, + }, + { + "x": 999998728000, + "y": 0, + }, + { + "x": 999998740000, + "y": 0, + }, + { + "x": 999998752000, + "y": 0, + }, + { + "x": 999998764000, + "y": 0, + }, + { + "x": 999998776000, + "y": 0, + }, + { + "x": 999998788000, + "y": 0, + }, + { + "x": 999998800000, + "y": 0, + }, + { + "x": 999998812000, + "y": 0, + }, + { + "x": 999998824000, + "y": 0, + }, + { + "x": 999998836000, + "y": 0, + }, + { + "x": 999998848000, + "y": 0, + }, + { + "x": 999998860000, + "y": 0, + }, + { + "x": 999998872000, + "y": 0, + }, + { + "x": 999998884000, + "y": 0, + }, + { + "x": 999998896000, + "y": 0, + }, + { + "x": 999998908000, + "y": 0, + }, + { + "x": 999998920000, + "y": 0, + }, + { + "x": 999998932000, + "y": 0, + }, + { + "x": 999998944000, + "y": 0, + }, + { + "x": 999998956000, + "y": 0, + }, + { + "x": 999998968000, + "y": 0, + }, + { + "x": 999998980000, + "y": 0, + }, + { + "x": 999998992000, + "y": 0, + }, + { + "x": 999999004000, + "y": 0, + }, + { + "x": 999999016000, + "y": 0, + }, + { + "x": 999999028000, + "y": 0, + }, + { + "x": 999999040000, + "y": 0, + }, + { + "x": 999999052000, + "y": 0, + }, + { + "x": 999999064000, + "y": 0, + }, + { + "x": 999999076000, + "y": 0, + }, + { + "x": 999999088000, + "y": 0, + }, + { + "x": 999999100000, + "y": 0, + }, + { + "x": 999999112000, + "y": 0, + }, + { + "x": 999999124000, + "y": 0, + }, + { + "x": 999999136000, + "y": 0, + }, + { + "x": 999999148000, + "y": 0, + }, + { + "x": 999999160000, + "y": 0, + }, + { + "x": 999999172000, + "y": 0, + }, + { + "x": 999999184000, + "y": 0, + }, + { + "x": 999999196000, + "y": 0, + }, + { + "x": 999999208000, + "y": 0, + }, + { + "x": 999999220000, + "y": 0, + }, + { + "x": 999999232000, + "y": 0, + }, + { + "x": 999999244000, + "y": 0, + }, + { + "x": 999999256000, + "y": 0, + }, + { + "x": 999999268000, + "y": 0, + }, + { + "x": 999999280000, + "y": 0, + }, + { + "x": 999999292000, + "y": 0, + }, + { + "x": 999999304000, + "y": 0, + }, + { + "x": 999999316000, + "y": 0, + }, + { + "x": 999999328000, + "y": 0, + }, + { + "x": 999999340000, + "y": 0, + }, + { + "x": 999999352000, + "y": 0, + }, + { + "x": 999999364000, + "y": 0, + }, + { + "x": 999999376000, + "y": 0, + }, + { + "x": 999999388000, + "y": 0, + }, + { + "x": 999999400000, + "y": 0, + }, + { + "x": 999999412000, + "y": 0, + }, + { + "x": 999999424000, + "y": 0, + }, + { + "x": 999999436000, + "y": 0, + }, + { + "x": 999999448000, + "y": 0, + }, + { + "x": 999999460000, + "y": 0, + }, + { + "x": 999999472000, + "y": 0, + }, + { + "x": 999999484000, + "y": 0, + }, + { + "x": 999999496000, + "y": 0, + }, + { + "x": 999999508000, + "y": 0, + }, + { + "x": 999999520000, + "y": 0, + }, + { + "x": 999999532000, + "y": 0, + }, + { + "x": 999999544000, + "y": 0, + }, + { + "x": 999999556000, + "y": 0, + }, + { + "x": 999999568000, + "y": 0, + }, + { + "x": 999999580000, + "y": 0, + }, + { + "x": 999999592000, + "y": 0, + }, + { + "x": 999999604000, + "y": 0, + }, + { + "x": 999999616000, + "y": 0, + }, + { + "x": 999999628000, + "y": 0, + }, + { + "x": 999999640000, + "y": 0, + }, + { + "x": 999999652000, + "y": 0, + }, + { + "x": 999999664000, + "y": 0, + }, + { + "x": 999999676000, + "y": 0, + }, + { + "x": 999999688000, + "y": 0, + }, + { + "x": 999999700000, + "y": 0, + }, + { + "x": 999999712000, + "y": 0, + }, + { + "x": 999999724000, + "y": 0, + }, + { + "x": 999999736000, + "y": 0, + }, + { + "x": 999999748000, + "y": 0, + }, + { + "x": 999999760000, + "y": 0, + }, + { + "x": 999999772000, + "y": 0, + }, + { + "x": 999999784000, + "y": 0, + }, + { + "x": 999999796000, + "y": 0, + }, + { + "x": 999999808000, + "y": 0, + }, + { + "x": 999999820000, + "y": 0, + }, + { + "x": 999999832000, + "y": 0, + }, + { + "x": 999999844000, + "y": 0, + }, + { + "x": 999999856000, + "y": 0, + }, + { + "x": 999999868000, + "y": 0, + }, + { + "x": 999999880000, + "y": 0, + }, + { + "x": 999999892000, + "y": 0, + }, + { + "x": 999999904000, + "y": 0, + }, + { + "x": 999999916000, + "y": 0, + }, + { + "x": 999999928000, + "y": 0, + }, + { + "x": 999999940000, + "y": 0, + }, + { + "x": 999999952000, + "y": 0, + }, + { + "x": 999999964000, + "y": 0, + }, + { + "x": 999999976000, + "y": 2, + }, + { + "x": 999999988000, + "y": 2, + }, + { + "x": 1000000000000, + "y": 2, + }, + ], + "us_east_1a-789012/1": [ + { + "x": 999997852000, + "y": 0, + }, + { + "x": 999997864000, + "y": 0, + }, + { + "x": 999997876000, + "y": 0, + }, + { + "x": 999997888000, + "y": 0, + }, + { + "x": 999997900000, + "y": 0, + }, + { + "x": 999997912000, + "y": 0, + }, + { + "x": 999997924000, + "y": 0, + }, + { + "x": 999997936000, + "y": 0, + }, + { + "x": 999997948000, + "y": 0, + }, + { + "x": 999997960000, + "y": 0, + }, + { + "x": 999997972000, + "y": 0, + }, + { + "x": 999997984000, + "y": 0, + }, + { + "x": 999997996000, + "y": 0, + }, + { + "x": 999998008000, + "y": 0, + }, + { + "x": 999998020000, + "y": 0, + }, + { + "x": 999998032000, + "y": 0, + }, + { + "x": 999998044000, + "y": 0, + }, + { + "x": 999998056000, + "y": 0, + }, + { + "x": 999998068000, + "y": 0, + }, + { + "x": 999998080000, + "y": 0, + }, + { + "x": 999998092000, + "y": 0, + }, + { + "x": 999998104000, + "y": 0, + }, + { + "x": 999998116000, + "y": 0, + }, + { + "x": 999998128000, + "y": 0, + }, + { + "x": 999998140000, + "y": 0, + }, + { + "x": 999998152000, + "y": 0, + }, + { + "x": 999998164000, + "y": 0, + }, + { + "x": 999998176000, + "y": 0, + }, + { + "x": 999998188000, + "y": 0, + }, + { + "x": 999998200000, + "y": 0, + }, + { + "x": 999998212000, + "y": 0, + }, + { + "x": 999998224000, + "y": 0, + }, + { + "x": 999998236000, + "y": 0, + }, + { + "x": 999998248000, + "y": 0, + }, + { + "x": 999998260000, + "y": 0, + }, + { + "x": 999998272000, + "y": 0, + }, + { + "x": 999998284000, + "y": 0, + }, + { + "x": 999998296000, + "y": 0, + }, + { + "x": 999998308000, + "y": 0, + }, + { + "x": 999998320000, + "y": 0, + }, + { + "x": 999998332000, + "y": 0, + }, + { + "x": 999998344000, + "y": 0, + }, + { + "x": 999998356000, + "y": 0, + }, + { + "x": 999998368000, + "y": 0, + }, + { + "x": 999998380000, + "y": 0, + }, + { + "x": 999998392000, + "y": 0, + }, + { + "x": 999998404000, + "y": 0, + }, + { + "x": 999998416000, + "y": 0, + }, + { + "x": 999998428000, + "y": 0, + }, + { + "x": 999998440000, + "y": 0, + }, + { + "x": 999998452000, + "y": 0, + }, + { + "x": 999998464000, + "y": 0, + }, + { + "x": 999998476000, + "y": 0, + }, + { + "x": 999998488000, + "y": 0, + }, + { + "x": 999998500000, + "y": 0, + }, + { + "x": 999998512000, + "y": 0, + }, + { + "x": 999998524000, + "y": 0, + }, + { + "x": 999998536000, + "y": 0, + }, + { + "x": 999998548000, + "y": 0, + }, + { + "x": 999998560000, + "y": 0, + }, + { + "x": 999998572000, + "y": 0, + }, + { + "x": 999998584000, + "y": 0, + }, + { + "x": 999998596000, + "y": 0, + }, + { + "x": 999998608000, + "y": 0, + }, + { + "x": 999998620000, + "y": 0, + }, + { + "x": 999998632000, + "y": 0, + }, + { + "x": 999998644000, + "y": 0, + }, + { + "x": 999998656000, + "y": 0, + }, + { + "x": 999998668000, + "y": 0, + }, + { + "x": 999998680000, + "y": 0, + }, + { + "x": 999998692000, + "y": 0, + }, + { + "x": 999998704000, + "y": 0, + }, + { + "x": 999998716000, + "y": 0, + }, + { + "x": 999998728000, + "y": 0, + }, + { + "x": 999998740000, + "y": 0, + }, + { + "x": 999998752000, + "y": 0, + }, + { + "x": 999998764000, + "y": 0, + }, + { + "x": 999998776000, + "y": 0, + }, + { + "x": 999998788000, + "y": 0, + }, + { + "x": 999998800000, + "y": 0, + }, + { + "x": 999998812000, + "y": 0, + }, + { + "x": 999998824000, + "y": 0, + }, + { + "x": 999998836000, + "y": 0, + }, + { + "x": 999998848000, + "y": 0, + }, + { + "x": 999998860000, + "y": 0, + }, + { + "x": 999998872000, + "y": 0, + }, + { + "x": 999998884000, + "y": 0, + }, + { + "x": 999998896000, + "y": 0, + }, + { + "x": 999998908000, + "y": 0, + }, + { + "x": 999998920000, + "y": 0, + }, + { + "x": 999998932000, + "y": 0, + }, + { + "x": 999998944000, + "y": 0, + }, + { + "x": 999998956000, + "y": 0, + }, + { + "x": 999998968000, + "y": 0, + }, + { + "x": 999998980000, + "y": 0, + }, + { + "x": 999998992000, + "y": 0, + }, + { + "x": 999999004000, + "y": 0, + }, + { + "x": 999999016000, + "y": 0, + }, + { + "x": 999999028000, + "y": 0, + }, + { + "x": 999999040000, + "y": 0, + }, + { + "x": 999999052000, + "y": 0, + }, + { + "x": 999999064000, + "y": 0, + }, + { + "x": 999999076000, + "y": 0, + }, + { + "x": 999999088000, + "y": 0, + }, + { + "x": 999999100000, + "y": 0, + }, + { + "x": 999999112000, + "y": 0, + }, + { + "x": 999999124000, + "y": 0, + }, + { + "x": 999999136000, + "y": 0, + }, + { + "x": 999999148000, + "y": 0, + }, + { + "x": 999999160000, + "y": 0, + }, + { + "x": 999999172000, + "y": 0, + }, + { + "x": 999999184000, + "y": 0, + }, + { + "x": 999999196000, + "y": 0, + }, + { + "x": 999999208000, + "y": 0, + }, + { + "x": 999999220000, + "y": 0, + }, + { + "x": 999999232000, + "y": 0, + }, + { + "x": 999999244000, + "y": 0, + }, + { + "x": 999999256000, + "y": 0, + }, + { + "x": 999999268000, + "y": 0, + }, + { + "x": 999999280000, + "y": 0, + }, + { + "x": 999999292000, + "y": 0, + }, + { + "x": 999999304000, + "y": 0, + }, + { + "x": 999999316000, + "y": 0, + }, + { + "x": 999999328000, + "y": 0, + }, + { + "x": 999999340000, + "y": 0, + }, + { + "x": 999999352000, + "y": 0, + }, + { + "x": 999999364000, + "y": 0, + }, + { + "x": 999999376000, + "y": 0, + }, + { + "x": 999999388000, + "y": 0, + }, + { + "x": 999999400000, + "y": 0, + }, + { + "x": 999999412000, + "y": 0, + }, + { + "x": 999999424000, + "y": 0, + }, + { + "x": 999999436000, + "y": 0, + }, + { + "x": 999999448000, + "y": 0, + }, + { + "x": 999999460000, + "y": 0, + }, + { + "x": 999999472000, + "y": 0, + }, + { + "x": 999999484000, + "y": 0, + }, + { + "x": 999999496000, + "y": 0, + }, + { + "x": 999999508000, + "y": 0, + }, + { + "x": 999999520000, + "y": 0, + }, + { + "x": 999999532000, + "y": 0, + }, + { + "x": 999999544000, + "y": 0, + }, + { + "x": 999999556000, + "y": 0, + }, + { + "x": 999999568000, + "y": 0, + }, + { + "x": 999999580000, + "y": 0, + }, + { + "x": 999999592000, + "y": 0, + }, + { + "x": 999999604000, + "y": 0, + }, + { + "x": 999999616000, + "y": 0, + }, + { + "x": 999999628000, + "y": 0, + }, + { + "x": 999999640000, + "y": 0, + }, + { + "x": 999999652000, + "y": 0, + }, + { + "x": 999999664000, + "y": 0, + }, + { + "x": 999999676000, + "y": 0, + }, + { + "x": 999999688000, + "y": 0, + }, + { + "x": 999999700000, + "y": 0, + }, + { + "x": 999999712000, + "y": 0, + }, + { + "x": 999999724000, + "y": 0, + }, + { + "x": 999999736000, + "y": 0, + }, + { + "x": 999999748000, + "y": 0, + }, + { + "x": 999999760000, + "y": 0, + }, + { + "x": 999999772000, + "y": 0, + }, + { + "x": 999999784000, + "y": 0, + }, + { + "x": 999999796000, + "y": 0, + }, + { + "x": 999999808000, + "y": 0, + }, + { + "x": 999999820000, + "y": 0, + }, + { + "x": 999999832000, + "y": 0, + }, + { + "x": 999999844000, + "y": 0, + }, + { + "x": 999999856000, + "y": 0, + }, + { + "x": 999999868000, + "y": 0, + }, + { + "x": 999999880000, + "y": 0, + }, + { + "x": 999999892000, + "y": 0, + }, + { + "x": 999999904000, + "y": 0, + }, + { + "x": 999999916000, + "y": 0, + }, + { + "x": 999999928000, + "y": 0, + }, + { + "x": 999999940000, + "y": 0, + }, + { + "x": 999999952000, + "y": 0, + }, + { + "x": 999999964000, + "y": 0, + }, + { + "x": 999999976000, + "y": 1, + }, + { + "x": 999999988000, + "y": 1, + }, + { + "x": 1000000000000, + "y": 1, + }, + ], +} `; exports[`WorkflowStreamsLagChart formatSeries should return series for all streams in the workflow 1`] = ` -Array [ - Object { - "data": Array [ - Object { - "x": 999997852000, - "y": 0, - }, - Object { - "x": 999997864000, - "y": 0, - }, - Object { - "x": 999997876000, - "y": 0, - }, - Object { - "x": 999997888000, - "y": 0, - }, - Object { - "x": 999997900000, - "y": 0, - }, - Object { - "x": 999997912000, - "y": 0, - }, - Object { - "x": 999997924000, - "y": 0, - }, - Object { - "x": 999997936000, - "y": 0, - }, - Object { - "x": 999997948000, - "y": 0, - }, - Object { - "x": 999997960000, - "y": 0, - }, - Object { - "x": 999997972000, - "y": 0, - }, - Object { - "x": 999997984000, - "y": 0, - }, - Object { - "x": 999997996000, - "y": 0, - }, - Object { - "x": 999998008000, - "y": 0, - }, - Object { - "x": 999998020000, - "y": 0, - }, - Object { - "x": 999998032000, - "y": 0, - }, - Object { - "x": 999998044000, - "y": 0, - }, - Object { - "x": 999998056000, - "y": 0, - }, - Object { - "x": 999998068000, - "y": 0, - }, - Object { - "x": 999998080000, - "y": 0, - }, - Object { - "x": 999998092000, - "y": 0, - }, - Object { - "x": 999998104000, - "y": 0, - }, - Object { - "x": 999998116000, - "y": 0, - }, - Object { - "x": 999998128000, - "y": 0, - }, - Object { - "x": 999998140000, - "y": 0, - }, - Object { - "x": 999998152000, - "y": 0, - }, - Object { - "x": 999998164000, - "y": 0, - }, - Object { - "x": 999998176000, - "y": 0, - }, - Object { - "x": 999998188000, - "y": 0, - }, - Object { - "x": 999998200000, - "y": 0, - }, - Object { - "x": 999998212000, - "y": 0, - }, - Object { - "x": 999998224000, - "y": 0, - }, - Object { - "x": 999998236000, - "y": 0, - }, - Object { - "x": 999998248000, - "y": 0, - }, - Object { - "x": 999998260000, - "y": 0, - }, - Object { - "x": 999998272000, - "y": 0, - }, - Object { - "x": 999998284000, - "y": 0, - }, - Object { - "x": 999998296000, - "y": 0, - }, - Object { - "x": 999998308000, - "y": 0, - }, - Object { - "x": 999998320000, - "y": 0, - }, - Object { - "x": 999998332000, - "y": 0, - }, - Object { - "x": 999998344000, - "y": 0, - }, - Object { - "x": 999998356000, - "y": 0, - }, - Object { - "x": 999998368000, - "y": 0, - }, - Object { - "x": 999998380000, - "y": 0, - }, - Object { - "x": 999998392000, - "y": 0, - }, - Object { - "x": 999998404000, - "y": 0, - }, - Object { - "x": 999998416000, - "y": 0, - }, - Object { - "x": 999998428000, - "y": 0, - }, - Object { - "x": 999998440000, - "y": 0, - }, - Object { - "x": 999998452000, - "y": 0, - }, - Object { - "x": 999998464000, - "y": 0, - }, - Object { - "x": 999998476000, - "y": 0, - }, - Object { - "x": 999998488000, - "y": 0, - }, - Object { - "x": 999998500000, - "y": 0, - }, - Object { - "x": 999998512000, - "y": 0, - }, - Object { - "x": 999998524000, - "y": 0, - }, - Object { - "x": 999998536000, - "y": 0, - }, - Object { - "x": 999998548000, - "y": 0, - }, - Object { - "x": 999998560000, - "y": 0, - }, - Object { - "x": 999998572000, - "y": 0, - }, - Object { - "x": 999998584000, - "y": 0, - }, - Object { - "x": 999998596000, - "y": 0, - }, - Object { - "x": 999998608000, - "y": 0, - }, - Object { - "x": 999998620000, - "y": 0, - }, - Object { - "x": 999998632000, - "y": 0, - }, - Object { - "x": 999998644000, - "y": 0, - }, - Object { - "x": 999998656000, - "y": 0, - }, - Object { - "x": 999998668000, - "y": 0, - }, - Object { - "x": 999998680000, - "y": 0, - }, - Object { - "x": 999998692000, - "y": 0, - }, - Object { - "x": 999998704000, - "y": 0, - }, - Object { - "x": 999998716000, - "y": 0, - }, - Object { - "x": 999998728000, - "y": 0, - }, - Object { - "x": 999998740000, - "y": 0, - }, - Object { - "x": 999998752000, - "y": 0, - }, - Object { - "x": 999998764000, - "y": 0, - }, - Object { - "x": 999998776000, - "y": 0, - }, - Object { - "x": 999998788000, - "y": 0, - }, - Object { - "x": 999998800000, - "y": 0, - }, - Object { - "x": 999998812000, - "y": 0, - }, - Object { - "x": 999998824000, - "y": 0, - }, - Object { - "x": 999998836000, - "y": 0, - }, - Object { - "x": 999998848000, - "y": 0, - }, - Object { - "x": 999998860000, - "y": 0, - }, - Object { - "x": 999998872000, - "y": 0, - }, - Object { - "x": 999998884000, - "y": 0, - }, - Object { - "x": 999998896000, - "y": 0, - }, - Object { - "x": 999998908000, - "y": 0, - }, - Object { - "x": 999998920000, - "y": 0, - }, - Object { - "x": 999998932000, - "y": 0, - }, - Object { - "x": 999998944000, - "y": 0, - }, - Object { - "x": 999998956000, - "y": 0, - }, - Object { - "x": 999998968000, - "y": 0, - }, - Object { - "x": 999998980000, - "y": 0, - }, - Object { - "x": 999998992000, - "y": 0, - }, - Object { - "x": 999999004000, - "y": 0, - }, - Object { - "x": 999999016000, - "y": 0, - }, - Object { - "x": 999999028000, - "y": 0, - }, - Object { - "x": 999999040000, - "y": 0, - }, - Object { - "x": 999999052000, - "y": 0, - }, - Object { - "x": 999999064000, - "y": 0, - }, - Object { - "x": 999999076000, - "y": 0, - }, - Object { - "x": 999999088000, - "y": 0, - }, - Object { - "x": 999999100000, - "y": 0, - }, - Object { - "x": 999999112000, - "y": 0, - }, - Object { - "x": 999999124000, - "y": 0, - }, - Object { - "x": 999999136000, - "y": 0, - }, - Object { - "x": 999999148000, - "y": 0, - }, - Object { - "x": 999999160000, - "y": 0, - }, - Object { - "x": 999999172000, - "y": 0, - }, - Object { - "x": 999999184000, - "y": 0, - }, - Object { - "x": 999999196000, - "y": 0, - }, - Object { - "x": 999999208000, - "y": 0, - }, - Object { - "x": 999999220000, - "y": 0, - }, - Object { - "x": 999999232000, - "y": 0, - }, - Object { - "x": 999999244000, - "y": 0, - }, - Object { - "x": 999999256000, - "y": 0, - }, - Object { - "x": 999999268000, - "y": 0, - }, - Object { - "x": 999999280000, - "y": 0, - }, - Object { - "x": 999999292000, - "y": 0, - }, - Object { - "x": 999999304000, - "y": 0, - }, - Object { - "x": 999999316000, - "y": 0, - }, - Object { - "x": 999999328000, - "y": 0, - }, - Object { - "x": 999999340000, - "y": 0, - }, - Object { - "x": 999999352000, - "y": 0, - }, - Object { - "x": 999999364000, - "y": 0, - }, - Object { - "x": 999999376000, - "y": 0, - }, - Object { - "x": 999999388000, - "y": 0, - }, - Object { - "x": 999999400000, - "y": 0, - }, - Object { - "x": 999999412000, - "y": 0, - }, - Object { - "x": 999999424000, - "y": 0, - }, - Object { - "x": 999999436000, - "y": 0, - }, - Object { - "x": 999999448000, - "y": 0, - }, - Object { - "x": 999999460000, - "y": 0, - }, - Object { - "x": 999999472000, - "y": 0, - }, - Object { - "x": 999999484000, - "y": 0, - }, - Object { - "x": 999999496000, - "y": 0, - }, - Object { - "x": 999999508000, - "y": 0, - }, - Object { - "x": 999999520000, - "y": 0, - }, - Object { - "x": 999999532000, - "y": 0, - }, - Object { - "x": 999999544000, - "y": 0, - }, - Object { - "x": 999999556000, - "y": 0, - }, - Object { - "x": 999999568000, - "y": 0, - }, - Object { - "x": 999999580000, - "y": 0, - }, - Object { - "x": 999999592000, - "y": 0, - }, - Object { - "x": 999999604000, - "y": 0, - }, - Object { - "x": 999999616000, - "y": 0, - }, - Object { - "x": 999999628000, - "y": 0, - }, - Object { - "x": 999999640000, - "y": 0, - }, - Object { - "x": 999999652000, - "y": 0, - }, - Object { - "x": 999999664000, - "y": 0, - }, - Object { - "x": 999999676000, - "y": 0, - }, - Object { - "x": 999999688000, - "y": 0, - }, - Object { - "x": 999999700000, - "y": 0, - }, - Object { - "x": 999999712000, - "y": 0, - }, - Object { - "x": 999999724000, - "y": 0, - }, - Object { - "x": 999999736000, - "y": 0, - }, - Object { - "x": 999999748000, - "y": 0, - }, - Object { - "x": 999999760000, - "y": 0, - }, - Object { - "x": 999999772000, - "y": 0, - }, - Object { - "x": 999999784000, - "y": 0, - }, - Object { - "x": 999999796000, - "y": 0, - }, - Object { - "x": 999999808000, - "y": 0, - }, - Object { - "x": 999999820000, - "y": 0, - }, - Object { - "x": 999999832000, - "y": 0, - }, - Object { - "x": 999999844000, - "y": 0, - }, - Object { - "x": 999999856000, - "y": 0, - }, - Object { - "x": 999999868000, - "y": 0, - }, - Object { - "x": 999999880000, - "y": 0, - }, - Object { - "x": 999999892000, - "y": 0, - }, - Object { - "x": 999999904000, - "y": 0, - }, - Object { - "x": 999999916000, - "y": 0, - }, - Object { - "x": 999999928000, - "y": 0, - }, - Object { - "x": 999999940000, - "y": 0, - }, - Object { - "x": 999999952000, - "y": 0, - }, - Object { - "x": 999999964000, - "y": 0, - }, - Object { - "x": 999999976000, - "y": 1, - }, - Object { - "x": 999999988000, - "y": 1, - }, - Object { - "x": 1000000000000, - "y": 1, - }, - ], - "name": "us_east_1a-123456/1", - "type": "line", - }, - Object { - "data": Array [ - Object { - "x": 999997852000, - "y": 0, - }, - Object { - "x": 999997864000, - "y": 0, - }, - Object { - "x": 999997876000, - "y": 0, - }, - Object { - "x": 999997888000, - "y": 0, - }, - Object { - "x": 999997900000, - "y": 0, - }, - Object { - "x": 999997912000, - "y": 0, - }, - Object { - "x": 999997924000, - "y": 0, - }, - Object { - "x": 999997936000, - "y": 0, - }, - Object { - "x": 999997948000, - "y": 0, - }, - Object { - "x": 999997960000, - "y": 0, - }, - Object { - "x": 999997972000, - "y": 0, - }, - Object { - "x": 999997984000, - "y": 0, - }, - Object { - "x": 999997996000, - "y": 0, - }, - Object { - "x": 999998008000, - "y": 0, - }, - Object { - "x": 999998020000, - "y": 0, - }, - Object { - "x": 999998032000, - "y": 0, - }, - Object { - "x": 999998044000, - "y": 0, - }, - Object { - "x": 999998056000, - "y": 0, - }, - Object { - "x": 999998068000, - "y": 0, - }, - Object { - "x": 999998080000, - "y": 0, - }, - Object { - "x": 999998092000, - "y": 0, - }, - Object { - "x": 999998104000, - "y": 0, - }, - Object { - "x": 999998116000, - "y": 0, - }, - Object { - "x": 999998128000, - "y": 0, - }, - Object { - "x": 999998140000, - "y": 0, - }, - Object { - "x": 999998152000, - "y": 0, - }, - Object { - "x": 999998164000, - "y": 0, - }, - Object { - "x": 999998176000, - "y": 0, - }, - Object { - "x": 999998188000, - "y": 0, - }, - Object { - "x": 999998200000, - "y": 0, - }, - Object { - "x": 999998212000, - "y": 0, - }, - Object { - "x": 999998224000, - "y": 0, - }, - Object { - "x": 999998236000, - "y": 0, - }, - Object { - "x": 999998248000, - "y": 0, - }, - Object { - "x": 999998260000, - "y": 0, - }, - Object { - "x": 999998272000, - "y": 0, - }, - Object { - "x": 999998284000, - "y": 0, - }, - Object { - "x": 999998296000, - "y": 0, - }, - Object { - "x": 999998308000, - "y": 0, - }, - Object { - "x": 999998320000, - "y": 0, - }, - Object { - "x": 999998332000, - "y": 0, - }, - Object { - "x": 999998344000, - "y": 0, - }, - Object { - "x": 999998356000, - "y": 0, - }, - Object { - "x": 999998368000, - "y": 0, - }, - Object { - "x": 999998380000, - "y": 0, - }, - Object { - "x": 999998392000, - "y": 0, - }, - Object { - "x": 999998404000, - "y": 0, - }, - Object { - "x": 999998416000, - "y": 0, - }, - Object { - "x": 999998428000, - "y": 0, - }, - Object { - "x": 999998440000, - "y": 0, - }, - Object { - "x": 999998452000, - "y": 0, - }, - Object { - "x": 999998464000, - "y": 0, - }, - Object { - "x": 999998476000, - "y": 0, - }, - Object { - "x": 999998488000, - "y": 0, - }, - Object { - "x": 999998500000, - "y": 0, - }, - Object { - "x": 999998512000, - "y": 0, - }, - Object { - "x": 999998524000, - "y": 0, - }, - Object { - "x": 999998536000, - "y": 0, - }, - Object { - "x": 999998548000, - "y": 0, - }, - Object { - "x": 999998560000, - "y": 0, - }, - Object { - "x": 999998572000, - "y": 0, - }, - Object { - "x": 999998584000, - "y": 0, - }, - Object { - "x": 999998596000, - "y": 0, - }, - Object { - "x": 999998608000, - "y": 0, - }, - Object { - "x": 999998620000, - "y": 0, - }, - Object { - "x": 999998632000, - "y": 0, - }, - Object { - "x": 999998644000, - "y": 0, - }, - Object { - "x": 999998656000, - "y": 0, - }, - Object { - "x": 999998668000, - "y": 0, - }, - Object { - "x": 999998680000, - "y": 0, - }, - Object { - "x": 999998692000, - "y": 0, - }, - Object { - "x": 999998704000, - "y": 0, - }, - Object { - "x": 999998716000, - "y": 0, - }, - Object { - "x": 999998728000, - "y": 0, - }, - Object { - "x": 999998740000, - "y": 0, - }, - Object { - "x": 999998752000, - "y": 0, - }, - Object { - "x": 999998764000, - "y": 0, - }, - Object { - "x": 999998776000, - "y": 0, - }, - Object { - "x": 999998788000, - "y": 0, - }, - Object { - "x": 999998800000, - "y": 0, - }, - Object { - "x": 999998812000, - "y": 0, - }, - Object { - "x": 999998824000, - "y": 0, - }, - Object { - "x": 999998836000, - "y": 0, - }, - Object { - "x": 999998848000, - "y": 0, - }, - Object { - "x": 999998860000, - "y": 0, - }, - Object { - "x": 999998872000, - "y": 0, - }, - Object { - "x": 999998884000, - "y": 0, - }, - Object { - "x": 999998896000, - "y": 0, - }, - Object { - "x": 999998908000, - "y": 0, - }, - Object { - "x": 999998920000, - "y": 0, - }, - Object { - "x": 999998932000, - "y": 0, - }, - Object { - "x": 999998944000, - "y": 0, - }, - Object { - "x": 999998956000, - "y": 0, - }, - Object { - "x": 999998968000, - "y": 0, - }, - Object { - "x": 999998980000, - "y": 0, - }, - Object { - "x": 999998992000, - "y": 0, - }, - Object { - "x": 999999004000, - "y": 0, - }, - Object { - "x": 999999016000, - "y": 0, - }, - Object { - "x": 999999028000, - "y": 0, - }, - Object { - "x": 999999040000, - "y": 0, - }, - Object { - "x": 999999052000, - "y": 0, - }, - Object { - "x": 999999064000, - "y": 0, - }, - Object { - "x": 999999076000, - "y": 0, - }, - Object { - "x": 999999088000, - "y": 0, - }, - Object { - "x": 999999100000, - "y": 0, - }, - Object { - "x": 999999112000, - "y": 0, - }, - Object { - "x": 999999124000, - "y": 0, - }, - Object { - "x": 999999136000, - "y": 0, - }, - Object { - "x": 999999148000, - "y": 0, - }, - Object { - "x": 999999160000, - "y": 0, - }, - Object { - "x": 999999172000, - "y": 0, - }, - Object { - "x": 999999184000, - "y": 0, - }, - Object { - "x": 999999196000, - "y": 0, - }, - Object { - "x": 999999208000, - "y": 0, - }, - Object { - "x": 999999220000, - "y": 0, - }, - Object { - "x": 999999232000, - "y": 0, - }, - Object { - "x": 999999244000, - "y": 0, - }, - Object { - "x": 999999256000, - "y": 0, - }, - Object { - "x": 999999268000, - "y": 0, - }, - Object { - "x": 999999280000, - "y": 0, - }, - Object { - "x": 999999292000, - "y": 0, - }, - Object { - "x": 999999304000, - "y": 0, - }, - Object { - "x": 999999316000, - "y": 0, - }, - Object { - "x": 999999328000, - "y": 0, - }, - Object { - "x": 999999340000, - "y": 0, - }, - Object { - "x": 999999352000, - "y": 0, - }, - Object { - "x": 999999364000, - "y": 0, - }, - Object { - "x": 999999376000, - "y": 0, - }, - Object { - "x": 999999388000, - "y": 0, - }, - Object { - "x": 999999400000, - "y": 0, - }, - Object { - "x": 999999412000, - "y": 0, - }, - Object { - "x": 999999424000, - "y": 0, - }, - Object { - "x": 999999436000, - "y": 0, - }, - Object { - "x": 999999448000, - "y": 0, - }, - Object { - "x": 999999460000, - "y": 0, - }, - Object { - "x": 999999472000, - "y": 0, - }, - Object { - "x": 999999484000, - "y": 0, - }, - Object { - "x": 999999496000, - "y": 0, - }, - Object { - "x": 999999508000, - "y": 0, - }, - Object { - "x": 999999520000, - "y": 0, - }, - Object { - "x": 999999532000, - "y": 0, - }, - Object { - "x": 999999544000, - "y": 0, - }, - Object { - "x": 999999556000, - "y": 0, - }, - Object { - "x": 999999568000, - "y": 0, - }, - Object { - "x": 999999580000, - "y": 0, - }, - Object { - "x": 999999592000, - "y": 0, - }, - Object { - "x": 999999604000, - "y": 0, - }, - Object { - "x": 999999616000, - "y": 0, - }, - Object { - "x": 999999628000, - "y": 0, - }, - Object { - "x": 999999640000, - "y": 0, - }, - Object { - "x": 999999652000, - "y": 0, - }, - Object { - "x": 999999664000, - "y": 0, - }, - Object { - "x": 999999676000, - "y": 0, - }, - Object { - "x": 999999688000, - "y": 0, - }, - Object { - "x": 999999700000, - "y": 0, - }, - Object { - "x": 999999712000, - "y": 0, - }, - Object { - "x": 999999724000, - "y": 0, - }, - Object { - "x": 999999736000, - "y": 0, - }, - Object { - "x": 999999748000, - "y": 0, - }, - Object { - "x": 999999760000, - "y": 0, - }, - Object { - "x": 999999772000, - "y": 0, - }, - Object { - "x": 999999784000, - "y": 0, - }, - Object { - "x": 999999796000, - "y": 0, - }, - Object { - "x": 999999808000, - "y": 0, - }, - Object { - "x": 999999820000, - "y": 0, - }, - Object { - "x": 999999832000, - "y": 0, - }, - Object { - "x": 999999844000, - "y": 0, - }, - Object { - "x": 999999856000, - "y": 0, - }, - Object { - "x": 999999868000, - "y": 0, - }, - Object { - "x": 999999880000, - "y": 0, - }, - Object { - "x": 999999892000, - "y": 0, - }, - Object { - "x": 999999904000, - "y": 0, - }, - Object { - "x": 999999916000, - "y": 0, - }, - Object { - "x": 999999928000, - "y": 0, - }, - Object { - "x": 999999940000, - "y": 0, - }, - Object { - "x": 999999952000, - "y": 0, - }, - Object { - "x": 999999964000, - "y": 0, - }, - Object { - "x": 999999976000, - "y": 2, - }, - Object { - "x": 999999988000, - "y": 2, - }, - Object { - "x": 1000000000000, - "y": 2, - }, - ], - "name": "us_east_1a-123456/2", - "type": "line", - }, - Object { - "data": Array [ - Object { - "x": 999997852000, - "y": 0, - }, - Object { - "x": 999997864000, - "y": 0, - }, - Object { - "x": 999997876000, - "y": 0, - }, - Object { - "x": 999997888000, - "y": 0, - }, - Object { - "x": 999997900000, - "y": 0, - }, - Object { - "x": 999997912000, - "y": 0, - }, - Object { - "x": 999997924000, - "y": 0, - }, - Object { - "x": 999997936000, - "y": 0, - }, - Object { - "x": 999997948000, - "y": 0, - }, - Object { - "x": 999997960000, - "y": 0, - }, - Object { - "x": 999997972000, - "y": 0, - }, - Object { - "x": 999997984000, - "y": 0, - }, - Object { - "x": 999997996000, - "y": 0, - }, - Object { - "x": 999998008000, - "y": 0, - }, - Object { - "x": 999998020000, - "y": 0, - }, - Object { - "x": 999998032000, - "y": 0, - }, - Object { - "x": 999998044000, - "y": 0, - }, - Object { - "x": 999998056000, - "y": 0, - }, - Object { - "x": 999998068000, - "y": 0, - }, - Object { - "x": 999998080000, - "y": 0, - }, - Object { - "x": 999998092000, - "y": 0, - }, - Object { - "x": 999998104000, - "y": 0, - }, - Object { - "x": 999998116000, - "y": 0, - }, - Object { - "x": 999998128000, - "y": 0, - }, - Object { - "x": 999998140000, - "y": 0, - }, - Object { - "x": 999998152000, - "y": 0, - }, - Object { - "x": 999998164000, - "y": 0, - }, - Object { - "x": 999998176000, - "y": 0, - }, - Object { - "x": 999998188000, - "y": 0, - }, - Object { - "x": 999998200000, - "y": 0, - }, - Object { - "x": 999998212000, - "y": 0, - }, - Object { - "x": 999998224000, - "y": 0, - }, - Object { - "x": 999998236000, - "y": 0, - }, - Object { - "x": 999998248000, - "y": 0, - }, - Object { - "x": 999998260000, - "y": 0, - }, - Object { - "x": 999998272000, - "y": 0, - }, - Object { - "x": 999998284000, - "y": 0, - }, - Object { - "x": 999998296000, - "y": 0, - }, - Object { - "x": 999998308000, - "y": 0, - }, - Object { - "x": 999998320000, - "y": 0, - }, - Object { - "x": 999998332000, - "y": 0, - }, - Object { - "x": 999998344000, - "y": 0, - }, - Object { - "x": 999998356000, - "y": 0, - }, - Object { - "x": 999998368000, - "y": 0, - }, - Object { - "x": 999998380000, - "y": 0, - }, - Object { - "x": 999998392000, - "y": 0, - }, - Object { - "x": 999998404000, - "y": 0, - }, - Object { - "x": 999998416000, - "y": 0, - }, - Object { - "x": 999998428000, - "y": 0, - }, - Object { - "x": 999998440000, - "y": 0, - }, - Object { - "x": 999998452000, - "y": 0, - }, - Object { - "x": 999998464000, - "y": 0, - }, - Object { - "x": 999998476000, - "y": 0, - }, - Object { - "x": 999998488000, - "y": 0, - }, - Object { - "x": 999998500000, - "y": 0, - }, - Object { - "x": 999998512000, - "y": 0, - }, - Object { - "x": 999998524000, - "y": 0, - }, - Object { - "x": 999998536000, - "y": 0, - }, - Object { - "x": 999998548000, - "y": 0, - }, - Object { - "x": 999998560000, - "y": 0, - }, - Object { - "x": 999998572000, - "y": 0, - }, - Object { - "x": 999998584000, - "y": 0, - }, - Object { - "x": 999998596000, - "y": 0, - }, - Object { - "x": 999998608000, - "y": 0, - }, - Object { - "x": 999998620000, - "y": 0, - }, - Object { - "x": 999998632000, - "y": 0, - }, - Object { - "x": 999998644000, - "y": 0, - }, - Object { - "x": 999998656000, - "y": 0, - }, - Object { - "x": 999998668000, - "y": 0, - }, - Object { - "x": 999998680000, - "y": 0, - }, - Object { - "x": 999998692000, - "y": 0, - }, - Object { - "x": 999998704000, - "y": 0, - }, - Object { - "x": 999998716000, - "y": 0, - }, - Object { - "x": 999998728000, - "y": 0, - }, - Object { - "x": 999998740000, - "y": 0, - }, - Object { - "x": 999998752000, - "y": 0, - }, - Object { - "x": 999998764000, - "y": 0, - }, - Object { - "x": 999998776000, - "y": 0, - }, - Object { - "x": 999998788000, - "y": 0, - }, - Object { - "x": 999998800000, - "y": 0, - }, - Object { - "x": 999998812000, - "y": 0, - }, - Object { - "x": 999998824000, - "y": 0, - }, - Object { - "x": 999998836000, - "y": 0, - }, - Object { - "x": 999998848000, - "y": 0, - }, - Object { - "x": 999998860000, - "y": 0, - }, - Object { - "x": 999998872000, - "y": 0, - }, - Object { - "x": 999998884000, - "y": 0, - }, - Object { - "x": 999998896000, - "y": 0, - }, - Object { - "x": 999998908000, - "y": 0, - }, - Object { - "x": 999998920000, - "y": 0, - }, - Object { - "x": 999998932000, - "y": 0, - }, - Object { - "x": 999998944000, - "y": 0, - }, - Object { - "x": 999998956000, - "y": 0, - }, - Object { - "x": 999998968000, - "y": 0, - }, - Object { - "x": 999998980000, - "y": 0, - }, - Object { - "x": 999998992000, - "y": 0, - }, - Object { - "x": 999999004000, - "y": 0, - }, - Object { - "x": 999999016000, - "y": 0, - }, - Object { - "x": 999999028000, - "y": 0, - }, - Object { - "x": 999999040000, - "y": 0, - }, - Object { - "x": 999999052000, - "y": 0, - }, - Object { - "x": 999999064000, - "y": 0, - }, - Object { - "x": 999999076000, - "y": 0, - }, - Object { - "x": 999999088000, - "y": 0, - }, - Object { - "x": 999999100000, - "y": 0, - }, - Object { - "x": 999999112000, - "y": 0, - }, - Object { - "x": 999999124000, - "y": 0, - }, - Object { - "x": 999999136000, - "y": 0, - }, - Object { - "x": 999999148000, - "y": 0, - }, - Object { - "x": 999999160000, - "y": 0, - }, - Object { - "x": 999999172000, - "y": 0, - }, - Object { - "x": 999999184000, - "y": 0, - }, - Object { - "x": 999999196000, - "y": 0, - }, - Object { - "x": 999999208000, - "y": 0, - }, - Object { - "x": 999999220000, - "y": 0, - }, - Object { - "x": 999999232000, - "y": 0, - }, - Object { - "x": 999999244000, - "y": 0, - }, - Object { - "x": 999999256000, - "y": 0, - }, - Object { - "x": 999999268000, - "y": 0, - }, - Object { - "x": 999999280000, - "y": 0, - }, - Object { - "x": 999999292000, - "y": 0, - }, - Object { - "x": 999999304000, - "y": 0, - }, - Object { - "x": 999999316000, - "y": 0, - }, - Object { - "x": 999999328000, - "y": 0, - }, - Object { - "x": 999999340000, - "y": 0, - }, - Object { - "x": 999999352000, - "y": 0, - }, - Object { - "x": 999999364000, - "y": 0, - }, - Object { - "x": 999999376000, - "y": 0, - }, - Object { - "x": 999999388000, - "y": 0, - }, - Object { - "x": 999999400000, - "y": 0, - }, - Object { - "x": 999999412000, - "y": 0, - }, - Object { - "x": 999999424000, - "y": 0, - }, - Object { - "x": 999999436000, - "y": 0, - }, - Object { - "x": 999999448000, - "y": 0, - }, - Object { - "x": 999999460000, - "y": 0, - }, - Object { - "x": 999999472000, - "y": 0, - }, - Object { - "x": 999999484000, - "y": 0, - }, - Object { - "x": 999999496000, - "y": 0, - }, - Object { - "x": 999999508000, - "y": 0, - }, - Object { - "x": 999999520000, - "y": 0, - }, - Object { - "x": 999999532000, - "y": 0, - }, - Object { - "x": 999999544000, - "y": 0, - }, - Object { - "x": 999999556000, - "y": 0, - }, - Object { - "x": 999999568000, - "y": 0, - }, - Object { - "x": 999999580000, - "y": 0, - }, - Object { - "x": 999999592000, - "y": 0, - }, - Object { - "x": 999999604000, - "y": 0, - }, - Object { - "x": 999999616000, - "y": 0, - }, - Object { - "x": 999999628000, - "y": 0, - }, - Object { - "x": 999999640000, - "y": 0, - }, - Object { - "x": 999999652000, - "y": 0, - }, - Object { - "x": 999999664000, - "y": 0, - }, - Object { - "x": 999999676000, - "y": 0, - }, - Object { - "x": 999999688000, - "y": 0, - }, - Object { - "x": 999999700000, - "y": 0, - }, - Object { - "x": 999999712000, - "y": 0, - }, - Object { - "x": 999999724000, - "y": 0, - }, - Object { - "x": 999999736000, - "y": 0, - }, - Object { - "x": 999999748000, - "y": 0, - }, - Object { - "x": 999999760000, - "y": 0, - }, - Object { - "x": 999999772000, - "y": 0, - }, - Object { - "x": 999999784000, - "y": 0, - }, - Object { - "x": 999999796000, - "y": 0, - }, - Object { - "x": 999999808000, - "y": 0, - }, - Object { - "x": 999999820000, - "y": 0, - }, - Object { - "x": 999999832000, - "y": 0, - }, - Object { - "x": 999999844000, - "y": 0, - }, - Object { - "x": 999999856000, - "y": 0, - }, - Object { - "x": 999999868000, - "y": 0, - }, - Object { - "x": 999999880000, - "y": 0, - }, - Object { - "x": 999999892000, - "y": 0, - }, - Object { - "x": 999999904000, - "y": 0, - }, - Object { - "x": 999999916000, - "y": 0, - }, - Object { - "x": 999999928000, - "y": 0, - }, - Object { - "x": 999999940000, - "y": 0, - }, - Object { - "x": 999999952000, - "y": 0, - }, - Object { - "x": 999999964000, - "y": 0, - }, - Object { - "x": 999999976000, - "y": 1, - }, - Object { - "x": 999999988000, - "y": 1, - }, - Object { - "x": 1000000000000, - "y": 1, - }, - ], - "name": "us_east_1a-789012/1", - "type": "line", - }, -] +Object { + "us_east_1a-123456/1": Array [ + Object { + "x": 999997852000, + "y": 0, + }, + Object { + "x": 999997864000, + "y": 0, + }, + Object { + "x": 999997876000, + "y": 0, + }, + Object { + "x": 999997888000, + "y": 0, + }, + Object { + "x": 999997900000, + "y": 0, + }, + Object { + "x": 999997912000, + "y": 0, + }, + Object { + "x": 999997924000, + "y": 0, + }, + Object { + "x": 999997936000, + "y": 0, + }, + Object { + "x": 999997948000, + "y": 0, + }, + Object { + "x": 999997960000, + "y": 0, + }, + Object { + "x": 999997972000, + "y": 0, + }, + Object { + "x": 999997984000, + "y": 0, + }, + Object { + "x": 999997996000, + "y": 0, + }, + Object { + "x": 999998008000, + "y": 0, + }, + Object { + "x": 999998020000, + "y": 0, + }, + Object { + "x": 999998032000, + "y": 0, + }, + Object { + "x": 999998044000, + "y": 0, + }, + Object { + "x": 999998056000, + "y": 0, + }, + Object { + "x": 999998068000, + "y": 0, + }, + Object { + "x": 999998080000, + "y": 0, + }, + Object { + "x": 999998092000, + "y": 0, + }, + Object { + "x": 999998104000, + "y": 0, + }, + Object { + "x": 999998116000, + "y": 0, + }, + Object { + "x": 999998128000, + "y": 0, + }, + Object { + "x": 999998140000, + "y": 0, + }, + Object { + "x": 999998152000, + "y": 0, + }, + Object { + "x": 999998164000, + "y": 0, + }, + Object { + "x": 999998176000, + "y": 0, + }, + Object { + "x": 999998188000, + "y": 0, + }, + Object { + "x": 999998200000, + "y": 0, + }, + Object { + "x": 999998212000, + "y": 0, + }, + Object { + "x": 999998224000, + "y": 0, + }, + Object { + "x": 999998236000, + "y": 0, + }, + Object { + "x": 999998248000, + "y": 0, + }, + Object { + "x": 999998260000, + "y": 0, + }, + Object { + "x": 999998272000, + "y": 0, + }, + Object { + "x": 999998284000, + "y": 0, + }, + Object { + "x": 999998296000, + "y": 0, + }, + Object { + "x": 999998308000, + "y": 0, + }, + Object { + "x": 999998320000, + "y": 0, + }, + Object { + "x": 999998332000, + "y": 0, + }, + Object { + "x": 999998344000, + "y": 0, + }, + Object { + "x": 999998356000, + "y": 0, + }, + Object { + "x": 999998368000, + "y": 0, + }, + Object { + "x": 999998380000, + "y": 0, + }, + Object { + "x": 999998392000, + "y": 0, + }, + Object { + "x": 999998404000, + "y": 0, + }, + Object { + "x": 999998416000, + "y": 0, + }, + Object { + "x": 999998428000, + "y": 0, + }, + Object { + "x": 999998440000, + "y": 0, + }, + Object { + "x": 999998452000, + "y": 0, + }, + Object { + "x": 999998464000, + "y": 0, + }, + Object { + "x": 999998476000, + "y": 0, + }, + Object { + "x": 999998488000, + "y": 0, + }, + Object { + "x": 999998500000, + "y": 0, + }, + Object { + "x": 999998512000, + "y": 0, + }, + Object { + "x": 999998524000, + "y": 0, + }, + Object { + "x": 999998536000, + "y": 0, + }, + Object { + "x": 999998548000, + "y": 0, + }, + Object { + "x": 999998560000, + "y": 0, + }, + Object { + "x": 999998572000, + "y": 0, + }, + Object { + "x": 999998584000, + "y": 0, + }, + Object { + "x": 999998596000, + "y": 0, + }, + Object { + "x": 999998608000, + "y": 0, + }, + Object { + "x": 999998620000, + "y": 0, + }, + Object { + "x": 999998632000, + "y": 0, + }, + Object { + "x": 999998644000, + "y": 0, + }, + Object { + "x": 999998656000, + "y": 0, + }, + Object { + "x": 999998668000, + "y": 0, + }, + Object { + "x": 999998680000, + "y": 0, + }, + Object { + "x": 999998692000, + "y": 0, + }, + Object { + "x": 999998704000, + "y": 0, + }, + Object { + "x": 999998716000, + "y": 0, + }, + Object { + "x": 999998728000, + "y": 0, + }, + Object { + "x": 999998740000, + "y": 0, + }, + Object { + "x": 999998752000, + "y": 0, + }, + Object { + "x": 999998764000, + "y": 0, + }, + Object { + "x": 999998776000, + "y": 0, + }, + Object { + "x": 999998788000, + "y": 0, + }, + Object { + "x": 999998800000, + "y": 0, + }, + Object { + "x": 999998812000, + "y": 0, + }, + Object { + "x": 999998824000, + "y": 0, + }, + Object { + "x": 999998836000, + "y": 0, + }, + Object { + "x": 999998848000, + "y": 0, + }, + Object { + "x": 999998860000, + "y": 0, + }, + Object { + "x": 999998872000, + "y": 0, + }, + Object { + "x": 999998884000, + "y": 0, + }, + Object { + "x": 999998896000, + "y": 0, + }, + Object { + "x": 999998908000, + "y": 0, + }, + Object { + "x": 999998920000, + "y": 0, + }, + Object { + "x": 999998932000, + "y": 0, + }, + Object { + "x": 999998944000, + "y": 0, + }, + Object { + "x": 999998956000, + "y": 0, + }, + Object { + "x": 999998968000, + "y": 0, + }, + Object { + "x": 999998980000, + "y": 0, + }, + Object { + "x": 999998992000, + "y": 0, + }, + Object { + "x": 999999004000, + "y": 0, + }, + Object { + "x": 999999016000, + "y": 0, + }, + Object { + "x": 999999028000, + "y": 0, + }, + Object { + "x": 999999040000, + "y": 0, + }, + Object { + "x": 999999052000, + "y": 0, + }, + Object { + "x": 999999064000, + "y": 0, + }, + Object { + "x": 999999076000, + "y": 0, + }, + Object { + "x": 999999088000, + "y": 0, + }, + Object { + "x": 999999100000, + "y": 0, + }, + Object { + "x": 999999112000, + "y": 0, + }, + Object { + "x": 999999124000, + "y": 0, + }, + Object { + "x": 999999136000, + "y": 0, + }, + Object { + "x": 999999148000, + "y": 0, + }, + Object { + "x": 999999160000, + "y": 0, + }, + Object { + "x": 999999172000, + "y": 0, + }, + Object { + "x": 999999184000, + "y": 0, + }, + Object { + "x": 999999196000, + "y": 0, + }, + Object { + "x": 999999208000, + "y": 0, + }, + Object { + "x": 999999220000, + "y": 0, + }, + Object { + "x": 999999232000, + "y": 0, + }, + Object { + "x": 999999244000, + "y": 0, + }, + Object { + "x": 999999256000, + "y": 0, + }, + Object { + "x": 999999268000, + "y": 0, + }, + Object { + "x": 999999280000, + "y": 0, + }, + Object { + "x": 999999292000, + "y": 0, + }, + Object { + "x": 999999304000, + "y": 0, + }, + Object { + "x": 999999316000, + "y": 0, + }, + Object { + "x": 999999328000, + "y": 0, + }, + Object { + "x": 999999340000, + "y": 0, + }, + Object { + "x": 999999352000, + "y": 0, + }, + Object { + "x": 999999364000, + "y": 0, + }, + Object { + "x": 999999376000, + "y": 0, + }, + Object { + "x": 999999388000, + "y": 0, + }, + Object { + "x": 999999400000, + "y": 0, + }, + Object { + "x": 999999412000, + "y": 0, + }, + Object { + "x": 999999424000, + "y": 0, + }, + Object { + "x": 999999436000, + "y": 0, + }, + Object { + "x": 999999448000, + "y": 0, + }, + Object { + "x": 999999460000, + "y": 0, + }, + Object { + "x": 999999472000, + "y": 0, + }, + Object { + "x": 999999484000, + "y": 0, + }, + Object { + "x": 999999496000, + "y": 0, + }, + Object { + "x": 999999508000, + "y": 0, + }, + Object { + "x": 999999520000, + "y": 0, + }, + Object { + "x": 999999532000, + "y": 0, + }, + Object { + "x": 999999544000, + "y": 0, + }, + Object { + "x": 999999556000, + "y": 0, + }, + Object { + "x": 999999568000, + "y": 0, + }, + Object { + "x": 999999580000, + "y": 0, + }, + Object { + "x": 999999592000, + "y": 0, + }, + Object { + "x": 999999604000, + "y": 0, + }, + Object { + "x": 999999616000, + "y": 0, + }, + Object { + "x": 999999628000, + "y": 0, + }, + Object { + "x": 999999640000, + "y": 0, + }, + Object { + "x": 999999652000, + "y": 0, + }, + Object { + "x": 999999664000, + "y": 0, + }, + Object { + "x": 999999676000, + "y": 0, + }, + Object { + "x": 999999688000, + "y": 0, + }, + Object { + "x": 999999700000, + "y": 0, + }, + Object { + "x": 999999712000, + "y": 0, + }, + Object { + "x": 999999724000, + "y": 0, + }, + Object { + "x": 999999736000, + "y": 0, + }, + Object { + "x": 999999748000, + "y": 0, + }, + Object { + "x": 999999760000, + "y": 0, + }, + Object { + "x": 999999772000, + "y": 0, + }, + Object { + "x": 999999784000, + "y": 0, + }, + Object { + "x": 999999796000, + "y": 0, + }, + Object { + "x": 999999808000, + "y": 0, + }, + Object { + "x": 999999820000, + "y": 0, + }, + Object { + "x": 999999832000, + "y": 0, + }, + Object { + "x": 999999844000, + "y": 0, + }, + Object { + "x": 999999856000, + "y": 0, + }, + Object { + "x": 999999868000, + "y": 0, + }, + Object { + "x": 999999880000, + "y": 0, + }, + Object { + "x": 999999892000, + "y": 0, + }, + Object { + "x": 999999904000, + "y": 0, + }, + Object { + "x": 999999916000, + "y": 0, + }, + Object { + "x": 999999928000, + "y": 0, + }, + Object { + "x": 999999940000, + "y": 0, + }, + Object { + "x": 999999952000, + "y": 0, + }, + Object { + "x": 999999964000, + "y": 0, + }, + Object { + "x": 999999976000, + "y": 1, + }, + Object { + "x": 999999988000, + "y": 1, + }, + Object { + "x": 1000000000000, + "y": 1, + }, + ], + "us_east_1a-123456/2": Array [ + Object { + "x": 999997852000, + "y": 0, + }, + Object { + "x": 999997864000, + "y": 0, + }, + Object { + "x": 999997876000, + "y": 0, + }, + Object { + "x": 999997888000, + "y": 0, + }, + Object { + "x": 999997900000, + "y": 0, + }, + Object { + "x": 999997912000, + "y": 0, + }, + Object { + "x": 999997924000, + "y": 0, + }, + Object { + "x": 999997936000, + "y": 0, + }, + Object { + "x": 999997948000, + "y": 0, + }, + Object { + "x": 999997960000, + "y": 0, + }, + Object { + "x": 999997972000, + "y": 0, + }, + Object { + "x": 999997984000, + "y": 0, + }, + Object { + "x": 999997996000, + "y": 0, + }, + Object { + "x": 999998008000, + "y": 0, + }, + Object { + "x": 999998020000, + "y": 0, + }, + Object { + "x": 999998032000, + "y": 0, + }, + Object { + "x": 999998044000, + "y": 0, + }, + Object { + "x": 999998056000, + "y": 0, + }, + Object { + "x": 999998068000, + "y": 0, + }, + Object { + "x": 999998080000, + "y": 0, + }, + Object { + "x": 999998092000, + "y": 0, + }, + Object { + "x": 999998104000, + "y": 0, + }, + Object { + "x": 999998116000, + "y": 0, + }, + Object { + "x": 999998128000, + "y": 0, + }, + Object { + "x": 999998140000, + "y": 0, + }, + Object { + "x": 999998152000, + "y": 0, + }, + Object { + "x": 999998164000, + "y": 0, + }, + Object { + "x": 999998176000, + "y": 0, + }, + Object { + "x": 999998188000, + "y": 0, + }, + Object { + "x": 999998200000, + "y": 0, + }, + Object { + "x": 999998212000, + "y": 0, + }, + Object { + "x": 999998224000, + "y": 0, + }, + Object { + "x": 999998236000, + "y": 0, + }, + Object { + "x": 999998248000, + "y": 0, + }, + Object { + "x": 999998260000, + "y": 0, + }, + Object { + "x": 999998272000, + "y": 0, + }, + Object { + "x": 999998284000, + "y": 0, + }, + Object { + "x": 999998296000, + "y": 0, + }, + Object { + "x": 999998308000, + "y": 0, + }, + Object { + "x": 999998320000, + "y": 0, + }, + Object { + "x": 999998332000, + "y": 0, + }, + Object { + "x": 999998344000, + "y": 0, + }, + Object { + "x": 999998356000, + "y": 0, + }, + Object { + "x": 999998368000, + "y": 0, + }, + Object { + "x": 999998380000, + "y": 0, + }, + Object { + "x": 999998392000, + "y": 0, + }, + Object { + "x": 999998404000, + "y": 0, + }, + Object { + "x": 999998416000, + "y": 0, + }, + Object { + "x": 999998428000, + "y": 0, + }, + Object { + "x": 999998440000, + "y": 0, + }, + Object { + "x": 999998452000, + "y": 0, + }, + Object { + "x": 999998464000, + "y": 0, + }, + Object { + "x": 999998476000, + "y": 0, + }, + Object { + "x": 999998488000, + "y": 0, + }, + Object { + "x": 999998500000, + "y": 0, + }, + Object { + "x": 999998512000, + "y": 0, + }, + Object { + "x": 999998524000, + "y": 0, + }, + Object { + "x": 999998536000, + "y": 0, + }, + Object { + "x": 999998548000, + "y": 0, + }, + Object { + "x": 999998560000, + "y": 0, + }, + Object { + "x": 999998572000, + "y": 0, + }, + Object { + "x": 999998584000, + "y": 0, + }, + Object { + "x": 999998596000, + "y": 0, + }, + Object { + "x": 999998608000, + "y": 0, + }, + Object { + "x": 999998620000, + "y": 0, + }, + Object { + "x": 999998632000, + "y": 0, + }, + Object { + "x": 999998644000, + "y": 0, + }, + Object { + "x": 999998656000, + "y": 0, + }, + Object { + "x": 999998668000, + "y": 0, + }, + Object { + "x": 999998680000, + "y": 0, + }, + Object { + "x": 999998692000, + "y": 0, + }, + Object { + "x": 999998704000, + "y": 0, + }, + Object { + "x": 999998716000, + "y": 0, + }, + Object { + "x": 999998728000, + "y": 0, + }, + Object { + "x": 999998740000, + "y": 0, + }, + Object { + "x": 999998752000, + "y": 0, + }, + Object { + "x": 999998764000, + "y": 0, + }, + Object { + "x": 999998776000, + "y": 0, + }, + Object { + "x": 999998788000, + "y": 0, + }, + Object { + "x": 999998800000, + "y": 0, + }, + Object { + "x": 999998812000, + "y": 0, + }, + Object { + "x": 999998824000, + "y": 0, + }, + Object { + "x": 999998836000, + "y": 0, + }, + Object { + "x": 999998848000, + "y": 0, + }, + Object { + "x": 999998860000, + "y": 0, + }, + Object { + "x": 999998872000, + "y": 0, + }, + Object { + "x": 999998884000, + "y": 0, + }, + Object { + "x": 999998896000, + "y": 0, + }, + Object { + "x": 999998908000, + "y": 0, + }, + Object { + "x": 999998920000, + "y": 0, + }, + Object { + "x": 999998932000, + "y": 0, + }, + Object { + "x": 999998944000, + "y": 0, + }, + Object { + "x": 999998956000, + "y": 0, + }, + Object { + "x": 999998968000, + "y": 0, + }, + Object { + "x": 999998980000, + "y": 0, + }, + Object { + "x": 999998992000, + "y": 0, + }, + Object { + "x": 999999004000, + "y": 0, + }, + Object { + "x": 999999016000, + "y": 0, + }, + Object { + "x": 999999028000, + "y": 0, + }, + Object { + "x": 999999040000, + "y": 0, + }, + Object { + "x": 999999052000, + "y": 0, + }, + Object { + "x": 999999064000, + "y": 0, + }, + Object { + "x": 999999076000, + "y": 0, + }, + Object { + "x": 999999088000, + "y": 0, + }, + Object { + "x": 999999100000, + "y": 0, + }, + Object { + "x": 999999112000, + "y": 0, + }, + Object { + "x": 999999124000, + "y": 0, + }, + Object { + "x": 999999136000, + "y": 0, + }, + Object { + "x": 999999148000, + "y": 0, + }, + Object { + "x": 999999160000, + "y": 0, + }, + Object { + "x": 999999172000, + "y": 0, + }, + Object { + "x": 999999184000, + "y": 0, + }, + Object { + "x": 999999196000, + "y": 0, + }, + Object { + "x": 999999208000, + "y": 0, + }, + Object { + "x": 999999220000, + "y": 0, + }, + Object { + "x": 999999232000, + "y": 0, + }, + Object { + "x": 999999244000, + "y": 0, + }, + Object { + "x": 999999256000, + "y": 0, + }, + Object { + "x": 999999268000, + "y": 0, + }, + Object { + "x": 999999280000, + "y": 0, + }, + Object { + "x": 999999292000, + "y": 0, + }, + Object { + "x": 999999304000, + "y": 0, + }, + Object { + "x": 999999316000, + "y": 0, + }, + Object { + "x": 999999328000, + "y": 0, + }, + Object { + "x": 999999340000, + "y": 0, + }, + Object { + "x": 999999352000, + "y": 0, + }, + Object { + "x": 999999364000, + "y": 0, + }, + Object { + "x": 999999376000, + "y": 0, + }, + Object { + "x": 999999388000, + "y": 0, + }, + Object { + "x": 999999400000, + "y": 0, + }, + Object { + "x": 999999412000, + "y": 0, + }, + Object { + "x": 999999424000, + "y": 0, + }, + Object { + "x": 999999436000, + "y": 0, + }, + Object { + "x": 999999448000, + "y": 0, + }, + Object { + "x": 999999460000, + "y": 0, + }, + Object { + "x": 999999472000, + "y": 0, + }, + Object { + "x": 999999484000, + "y": 0, + }, + Object { + "x": 999999496000, + "y": 0, + }, + Object { + "x": 999999508000, + "y": 0, + }, + Object { + "x": 999999520000, + "y": 0, + }, + Object { + "x": 999999532000, + "y": 0, + }, + Object { + "x": 999999544000, + "y": 0, + }, + Object { + "x": 999999556000, + "y": 0, + }, + Object { + "x": 999999568000, + "y": 0, + }, + Object { + "x": 999999580000, + "y": 0, + }, + Object { + "x": 999999592000, + "y": 0, + }, + Object { + "x": 999999604000, + "y": 0, + }, + Object { + "x": 999999616000, + "y": 0, + }, + Object { + "x": 999999628000, + "y": 0, + }, + Object { + "x": 999999640000, + "y": 0, + }, + Object { + "x": 999999652000, + "y": 0, + }, + Object { + "x": 999999664000, + "y": 0, + }, + Object { + "x": 999999676000, + "y": 0, + }, + Object { + "x": 999999688000, + "y": 0, + }, + Object { + "x": 999999700000, + "y": 0, + }, + Object { + "x": 999999712000, + "y": 0, + }, + Object { + "x": 999999724000, + "y": 0, + }, + Object { + "x": 999999736000, + "y": 0, + }, + Object { + "x": 999999748000, + "y": 0, + }, + Object { + "x": 999999760000, + "y": 0, + }, + Object { + "x": 999999772000, + "y": 0, + }, + Object { + "x": 999999784000, + "y": 0, + }, + Object { + "x": 999999796000, + "y": 0, + }, + Object { + "x": 999999808000, + "y": 0, + }, + Object { + "x": 999999820000, + "y": 0, + }, + Object { + "x": 999999832000, + "y": 0, + }, + Object { + "x": 999999844000, + "y": 0, + }, + Object { + "x": 999999856000, + "y": 0, + }, + Object { + "x": 999999868000, + "y": 0, + }, + Object { + "x": 999999880000, + "y": 0, + }, + Object { + "x": 999999892000, + "y": 0, + }, + Object { + "x": 999999904000, + "y": 0, + }, + Object { + "x": 999999916000, + "y": 0, + }, + Object { + "x": 999999928000, + "y": 0, + }, + Object { + "x": 999999940000, + "y": 0, + }, + Object { + "x": 999999952000, + "y": 0, + }, + Object { + "x": 999999964000, + "y": 0, + }, + Object { + "x": 999999976000, + "y": 2, + }, + Object { + "x": 999999988000, + "y": 2, + }, + Object { + "x": 1000000000000, + "y": 2, + }, + ], + "us_east_1a-789012/1": Array [ + Object { + "x": 999997852000, + "y": 0, + }, + Object { + "x": 999997864000, + "y": 0, + }, + Object { + "x": 999997876000, + "y": 0, + }, + Object { + "x": 999997888000, + "y": 0, + }, + Object { + "x": 999997900000, + "y": 0, + }, + Object { + "x": 999997912000, + "y": 0, + }, + Object { + "x": 999997924000, + "y": 0, + }, + Object { + "x": 999997936000, + "y": 0, + }, + Object { + "x": 999997948000, + "y": 0, + }, + Object { + "x": 999997960000, + "y": 0, + }, + Object { + "x": 999997972000, + "y": 0, + }, + Object { + "x": 999997984000, + "y": 0, + }, + Object { + "x": 999997996000, + "y": 0, + }, + Object { + "x": 999998008000, + "y": 0, + }, + Object { + "x": 999998020000, + "y": 0, + }, + Object { + "x": 999998032000, + "y": 0, + }, + Object { + "x": 999998044000, + "y": 0, + }, + Object { + "x": 999998056000, + "y": 0, + }, + Object { + "x": 999998068000, + "y": 0, + }, + Object { + "x": 999998080000, + "y": 0, + }, + Object { + "x": 999998092000, + "y": 0, + }, + Object { + "x": 999998104000, + "y": 0, + }, + Object { + "x": 999998116000, + "y": 0, + }, + Object { + "x": 999998128000, + "y": 0, + }, + Object { + "x": 999998140000, + "y": 0, + }, + Object { + "x": 999998152000, + "y": 0, + }, + Object { + "x": 999998164000, + "y": 0, + }, + Object { + "x": 999998176000, + "y": 0, + }, + Object { + "x": 999998188000, + "y": 0, + }, + Object { + "x": 999998200000, + "y": 0, + }, + Object { + "x": 999998212000, + "y": 0, + }, + Object { + "x": 999998224000, + "y": 0, + }, + Object { + "x": 999998236000, + "y": 0, + }, + Object { + "x": 999998248000, + "y": 0, + }, + Object { + "x": 999998260000, + "y": 0, + }, + Object { + "x": 999998272000, + "y": 0, + }, + Object { + "x": 999998284000, + "y": 0, + }, + Object { + "x": 999998296000, + "y": 0, + }, + Object { + "x": 999998308000, + "y": 0, + }, + Object { + "x": 999998320000, + "y": 0, + }, + Object { + "x": 999998332000, + "y": 0, + }, + Object { + "x": 999998344000, + "y": 0, + }, + Object { + "x": 999998356000, + "y": 0, + }, + Object { + "x": 999998368000, + "y": 0, + }, + Object { + "x": 999998380000, + "y": 0, + }, + Object { + "x": 999998392000, + "y": 0, + }, + Object { + "x": 999998404000, + "y": 0, + }, + Object { + "x": 999998416000, + "y": 0, + }, + Object { + "x": 999998428000, + "y": 0, + }, + Object { + "x": 999998440000, + "y": 0, + }, + Object { + "x": 999998452000, + "y": 0, + }, + Object { + "x": 999998464000, + "y": 0, + }, + Object { + "x": 999998476000, + "y": 0, + }, + Object { + "x": 999998488000, + "y": 0, + }, + Object { + "x": 999998500000, + "y": 0, + }, + Object { + "x": 999998512000, + "y": 0, + }, + Object { + "x": 999998524000, + "y": 0, + }, + Object { + "x": 999998536000, + "y": 0, + }, + Object { + "x": 999998548000, + "y": 0, + }, + Object { + "x": 999998560000, + "y": 0, + }, + Object { + "x": 999998572000, + "y": 0, + }, + Object { + "x": 999998584000, + "y": 0, + }, + Object { + "x": 999998596000, + "y": 0, + }, + Object { + "x": 999998608000, + "y": 0, + }, + Object { + "x": 999998620000, + "y": 0, + }, + Object { + "x": 999998632000, + "y": 0, + }, + Object { + "x": 999998644000, + "y": 0, + }, + Object { + "x": 999998656000, + "y": 0, + }, + Object { + "x": 999998668000, + "y": 0, + }, + Object { + "x": 999998680000, + "y": 0, + }, + Object { + "x": 999998692000, + "y": 0, + }, + Object { + "x": 999998704000, + "y": 0, + }, + Object { + "x": 999998716000, + "y": 0, + }, + Object { + "x": 999998728000, + "y": 0, + }, + Object { + "x": 999998740000, + "y": 0, + }, + Object { + "x": 999998752000, + "y": 0, + }, + Object { + "x": 999998764000, + "y": 0, + }, + Object { + "x": 999998776000, + "y": 0, + }, + Object { + "x": 999998788000, + "y": 0, + }, + Object { + "x": 999998800000, + "y": 0, + }, + Object { + "x": 999998812000, + "y": 0, + }, + Object { + "x": 999998824000, + "y": 0, + }, + Object { + "x": 999998836000, + "y": 0, + }, + Object { + "x": 999998848000, + "y": 0, + }, + Object { + "x": 999998860000, + "y": 0, + }, + Object { + "x": 999998872000, + "y": 0, + }, + Object { + "x": 999998884000, + "y": 0, + }, + Object { + "x": 999998896000, + "y": 0, + }, + Object { + "x": 999998908000, + "y": 0, + }, + Object { + "x": 999998920000, + "y": 0, + }, + Object { + "x": 999998932000, + "y": 0, + }, + Object { + "x": 999998944000, + "y": 0, + }, + Object { + "x": 999998956000, + "y": 0, + }, + Object { + "x": 999998968000, + "y": 0, + }, + Object { + "x": 999998980000, + "y": 0, + }, + Object { + "x": 999998992000, + "y": 0, + }, + Object { + "x": 999999004000, + "y": 0, + }, + Object { + "x": 999999016000, + "y": 0, + }, + Object { + "x": 999999028000, + "y": 0, + }, + Object { + "x": 999999040000, + "y": 0, + }, + Object { + "x": 999999052000, + "y": 0, + }, + Object { + "x": 999999064000, + "y": 0, + }, + Object { + "x": 999999076000, + "y": 0, + }, + Object { + "x": 999999088000, + "y": 0, + }, + Object { + "x": 999999100000, + "y": 0, + }, + Object { + "x": 999999112000, + "y": 0, + }, + Object { + "x": 999999124000, + "y": 0, + }, + Object { + "x": 999999136000, + "y": 0, + }, + Object { + "x": 999999148000, + "y": 0, + }, + Object { + "x": 999999160000, + "y": 0, + }, + Object { + "x": 999999172000, + "y": 0, + }, + Object { + "x": 999999184000, + "y": 0, + }, + Object { + "x": 999999196000, + "y": 0, + }, + Object { + "x": 999999208000, + "y": 0, + }, + Object { + "x": 999999220000, + "y": 0, + }, + Object { + "x": 999999232000, + "y": 0, + }, + Object { + "x": 999999244000, + "y": 0, + }, + Object { + "x": 999999256000, + "y": 0, + }, + Object { + "x": 999999268000, + "y": 0, + }, + Object { + "x": 999999280000, + "y": 0, + }, + Object { + "x": 999999292000, + "y": 0, + }, + Object { + "x": 999999304000, + "y": 0, + }, + Object { + "x": 999999316000, + "y": 0, + }, + Object { + "x": 999999328000, + "y": 0, + }, + Object { + "x": 999999340000, + "y": 0, + }, + Object { + "x": 999999352000, + "y": 0, + }, + Object { + "x": 999999364000, + "y": 0, + }, + Object { + "x": 999999376000, + "y": 0, + }, + Object { + "x": 999999388000, + "y": 0, + }, + Object { + "x": 999999400000, + "y": 0, + }, + Object { + "x": 999999412000, + "y": 0, + }, + Object { + "x": 999999424000, + "y": 0, + }, + Object { + "x": 999999436000, + "y": 0, + }, + Object { + "x": 999999448000, + "y": 0, + }, + Object { + "x": 999999460000, + "y": 0, + }, + Object { + "x": 999999472000, + "y": 0, + }, + Object { + "x": 999999484000, + "y": 0, + }, + Object { + "x": 999999496000, + "y": 0, + }, + Object { + "x": 999999508000, + "y": 0, + }, + Object { + "x": 999999520000, + "y": 0, + }, + Object { + "x": 999999532000, + "y": 0, + }, + Object { + "x": 999999544000, + "y": 0, + }, + Object { + "x": 999999556000, + "y": 0, + }, + Object { + "x": 999999568000, + "y": 0, + }, + Object { + "x": 999999580000, + "y": 0, + }, + Object { + "x": 999999592000, + "y": 0, + }, + Object { + "x": 999999604000, + "y": 0, + }, + Object { + "x": 999999616000, + "y": 0, + }, + Object { + "x": 999999628000, + "y": 0, + }, + Object { + "x": 999999640000, + "y": 0, + }, + Object { + "x": 999999652000, + "y": 0, + }, + Object { + "x": 999999664000, + "y": 0, + }, + Object { + "x": 999999676000, + "y": 0, + }, + Object { + "x": 999999688000, + "y": 0, + }, + Object { + "x": 999999700000, + "y": 0, + }, + Object { + "x": 999999712000, + "y": 0, + }, + Object { + "x": 999999724000, + "y": 0, + }, + Object { + "x": 999999736000, + "y": 0, + }, + Object { + "x": 999999748000, + "y": 0, + }, + Object { + "x": 999999760000, + "y": 0, + }, + Object { + "x": 999999772000, + "y": 0, + }, + Object { + "x": 999999784000, + "y": 0, + }, + Object { + "x": 999999796000, + "y": 0, + }, + Object { + "x": 999999808000, + "y": 0, + }, + Object { + "x": 999999820000, + "y": 0, + }, + Object { + "x": 999999832000, + "y": 0, + }, + Object { + "x": 999999844000, + "y": 0, + }, + Object { + "x": 999999856000, + "y": 0, + }, + Object { + "x": 999999868000, + "y": 0, + }, + Object { + "x": 999999880000, + "y": 0, + }, + Object { + "x": 999999892000, + "y": 0, + }, + Object { + "x": 999999904000, + "y": 0, + }, + Object { + "x": 999999916000, + "y": 0, + }, + Object { + "x": 999999928000, + "y": 0, + }, + Object { + "x": 999999940000, + "y": 0, + }, + Object { + "x": 999999952000, + "y": 0, + }, + Object { + "x": 999999964000, + "y": 0, + }, + Object { + "x": 999999976000, + "y": 1, + }, + Object { + "x": 999999988000, + "y": 1, + }, + Object { + "x": 1000000000000, + "y": 1, + }, + ], +} `; From 2757fd04505a09bb9f979cb4176286d24341111d Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 31 May 2024 13:18:50 -0700 Subject: [PATCH 15/22] More lint fixes Signed-off-by: Frances Thai --- web/vtadmin/src/components/charts/D3Timeseries.tsx | 2 +- .../src/components/charts/WorkflowStreamsLagChart.test.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/web/vtadmin/src/components/charts/D3Timeseries.tsx b/web/vtadmin/src/components/charts/D3Timeseries.tsx index bae213c2b3d..c8b7587f402 100644 --- a/web/vtadmin/src/components/charts/D3Timeseries.tsx +++ b/web/vtadmin/src/components/charts/D3Timeseries.tsx @@ -34,7 +34,7 @@ export const D3Timeseries = ({ isLoading, timeseriesMap }: LineChartProps) => { const boundsHeight = height - MARGIN.top - MARGIN.bottom; const [xRanges, yRanges] = axisMinsAndMaxes(timeseriesMap, boundsWidth); - const yMax = yRanges[1] + const yMax = yRanges[1]; const yScale = useMemo(() => { return d3 .scaleLinear() diff --git a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx index 94a874b193c..3e0616e4c53 100644 --- a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx +++ b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx @@ -77,7 +77,7 @@ describe('WorkflowStreamsLagChart', () => { // UseQueryResult (most of which we don't use) is pointlessly verbose. const result = getWorkflowTimeseries(workflow, queries as UseQueryResult[]); - console.log(result) + console.log(result); // Use snapshot matching since defining expected values for arrays of 180 data points is... annoying. expect(result).toMatchSnapshot(); From 4f1a49553ad36d21e2c742abe403981d23afdfc3 Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 31 May 2024 13:19:24 -0700 Subject: [PATCH 16/22] Remove unused vars Signed-off-by: Frances Thai --- web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx index 51797edf8a8..09106db5c23 100644 --- a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx +++ b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.tsx @@ -28,10 +28,6 @@ interface Props { workflowName: string; } -// Default min/max values (in seconds) for the y-axis when there is no data to show. -const DEFAULT_Y_MAX = 5; -const DEFAULT_Y_MIN = 0; - export const WorkflowStreamsLagChart = ({ clusterID, keyspace, workflowName }: Props) => { const { data: workflow, ...wq } = useWorkflow({ clusterID, keyspace, name: workflowName }); From 08e438420b4cd0bf78a97fd04102c9cf342d3a8d Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 31 May 2024 13:34:49 -0700 Subject: [PATCH 17/22] Remove charts Signed-off-by: Frances Thai --- web/vtadmin/src/index.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/web/vtadmin/src/index.tsx b/web/vtadmin/src/index.tsx index 79cd308915d..af839031d40 100644 --- a/web/vtadmin/src/index.tsx +++ b/web/vtadmin/src/index.tsx @@ -18,7 +18,6 @@ import ReactDOM from 'react-dom'; import { QueryClient, QueryClientProvider } from 'react-query'; import './index.css'; -import './components/charts/charts.scss'; import { App } from './components/App'; import * as errorHandler from './errors/errorHandler'; From e2780e5f3603abc10c29a343c4ad128c40ec6234 Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 31 May 2024 13:48:09 -0700 Subject: [PATCH 18/22] Add types Signed-off-by: Frances Thai --- web/vtadmin/package-lock.json | 2 ++ web/vtadmin/package.json | 1 + 2 files changed, 3 insertions(+) diff --git a/web/vtadmin/package-lock.json b/web/vtadmin/package-lock.json index 130b5fbf7ad..acf6d52cff7 100644 --- a/web/vtadmin/package-lock.json +++ b/web/vtadmin/package-lock.json @@ -10,6 +10,7 @@ "dependencies": { "@bugsnag/js": "^7.20.0", "@headlessui/react": "^1.7.8", + "@types/d3": "^7.4.3", "@types/jest": "^29.4.0", "@types/node": "^16.11.7", "@types/react-router-dom": "^5.3.3", @@ -4388,6 +4389,7 @@ "version": "7.4.3", "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "license": "MIT", "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", diff --git a/web/vtadmin/package.json b/web/vtadmin/package.json index e4e1bb3e28f..52029ddd9e4 100644 --- a/web/vtadmin/package.json +++ b/web/vtadmin/package.json @@ -9,6 +9,7 @@ "dependencies": { "@bugsnag/js": "^7.20.0", "@headlessui/react": "^1.7.8", + "@types/d3": "^7.4.3", "@types/jest": "^29.4.0", "@types/node": "^16.11.7", "@types/react-router-dom": "^5.3.3", From b5fe8b086990c6e189c5b4763577241b796a17c7 Mon Sep 17 00:00:00 2001 From: Frances Thai <31225471+notfelineit@users.noreply.github.com> Date: Fri, 31 May 2024 14:30:22 -0700 Subject: [PATCH 19/22] Update web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx Signed-off-by: Frances Thai <31225471+notfelineit@users.noreply.github.com> --- .../src/components/charts/WorkflowStreamsLagChart.test.tsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx index 3e0616e4c53..4ec261bf7b9 100644 --- a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx +++ b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx @@ -85,10 +85,6 @@ describe('WorkflowStreamsLagChart', () => { // (And because it can be tempting to not examine snapshot changes in detail...) :) expect(Object.keys(result).length).toEqual(3); - // expect(result['us_east_1a-123456/1']).toEqual([1, 1, 1]) - // expect(result[0].name).toEqual('us_east_1a-123456/1'); - // expect(result[1].name).toEqual('us_east_1a-123456/2'); - // expect(result[2].name).toEqual('us_east_1a-789012/1'); }); it('should handle empty input', () => { From 8427b0e9eefa0bf11d78e3012c63642c074e80cf Mon Sep 17 00:00:00 2001 From: Frances Thai <31225471+notfelineit@users.noreply.github.com> Date: Fri, 31 May 2024 14:31:00 -0700 Subject: [PATCH 20/22] Update web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx Signed-off-by: Frances Thai <31225471+notfelineit@users.noreply.github.com> --- .../src/components/charts/WorkflowStreamsLagChart.test.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx index 4ec261bf7b9..6c88502d4cb 100644 --- a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx +++ b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx @@ -77,7 +77,6 @@ describe('WorkflowStreamsLagChart', () => { // UseQueryResult (most of which we don't use) is pointlessly verbose. const result = getWorkflowTimeseries(workflow, queries as UseQueryResult[]); - console.log(result); // Use snapshot matching since defining expected values for arrays of 180 data points is... annoying. expect(result).toMatchSnapshot(); From 11191d773ebc782313b7cb856c1eeefb065dc63e Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 31 May 2024 14:44:38 -0700 Subject: [PATCH 21/22] Fix lint issue Signed-off-by: Frances Thai --- .../src/components/charts/WorkflowStreamsLagChart.test.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx index 6c88502d4cb..feec9c2ac7c 100644 --- a/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx +++ b/web/vtadmin/src/components/charts/WorkflowStreamsLagChart.test.tsx @@ -83,7 +83,6 @@ describe('WorkflowStreamsLagChart', () => { // ...but! Add additional validation so that failing tests are easier to debug. // (And because it can be tempting to not examine snapshot changes in detail...) :) expect(Object.keys(result).length).toEqual(3); - }); it('should handle empty input', () => { From 56221a8e03b79bee52f60efe7700d7ebe3b47565 Mon Sep 17 00:00:00 2001 From: Frances Thai Date: Fri, 31 May 2024 14:59:18 -0700 Subject: [PATCH 22/22] Add d3 charts to changelog Signed-off-by: Frances Thai --- changelog/20.0/20.0.0/summary.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/changelog/20.0/20.0.0/summary.md b/changelog/20.0/20.0.0/summary.md index 996967650c2..8dce0963477 100644 --- a/changelog/20.0/20.0.0/summary.md +++ b/changelog/20.0/20.0.0/summary.md @@ -38,6 +38,7 @@ - **[`SIGHUP` reload of gRPC client static auth creds](#sighup-reload-of-grpc-client-auth-creds)** - **[VTAdmin](#vtadmin)** - [Updated to node v20.12.2](#updated-node) + - [Replaced highcharts with d3](#replaced-highcharts) ## Major Changes @@ -334,4 +335,8 @@ The internal gRPC client now caches the static auth credentials and supports rel #### vtadmin-web updated to node v20.12.2 (LTS) Building `vtadmin-web` now requires node >= v20.12.0 (LTS). Breaking changes from v18 to v20 can be found at https://nodejs.org/en/blog/release/v20.12.0 -- with no known issues that apply to VTAdmin. -Full details on the node v20.12.2 release can be found at https://nodejs.org/en/blog/release/v20.12.2. \ No newline at end of file +Full details on the node v20.12.2 release can be found at https://nodejs.org/en/blog/release/v20.12.2. + +#### Replaced highcharts with d3 + +The vtadmin-web UI no longer has a dependency on highcharts for licensing reasons. The tablet QPS, tablet VReplication QPS, and workflow streams lag charts have all been replaced by d3. We'll be iteratively improving the d3 charts until they reach feature parity with the original highcharts charts. \ No newline at end of file