diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js index 009d5c26da..0793732bc0 100644 --- a/frontend/eslint.config.js +++ b/frontend/eslint.config.js @@ -17,10 +17,14 @@ export default [ ...globals.browser, ...globals.node } + }, + rules: { + '@typescript-eslint/no-unused-vars': 'warn', + '@typescript-eslint/no-explicit-any': 'warn' } }, { - files: ['**/*.svelte'], + files: ['**/*.svelte', '**/*.svelte.ts'], languageOptions: { parserOptions: { parser: ts.parser @@ -28,12 +32,13 @@ export default [ }, rules: { '@typescript-eslint/no-unused-vars': [ - 'error', + 'warn', { argsIgnorePattern: '^_', varsIgnorePattern: '^\\$\\$(Props|Events|Slots|Generic)$' } - ] + ], + 'svelte/require-each-key': 'off' } }, { diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 8d6d11857d..765f487bb5 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -11,53 +11,54 @@ "@creditkarma/thrift-server-core": "^1.0.4", "@creditkarma/thrift-typescript": "^3.7.6", "@layerstack/svelte-actions": "^1.0.0", + "@layerstack/svelte-table": "^1.0.1-next.0", "@layerstack/tailwind": "^2.0.0-next.2", "@layerstack/utils": "^1.0.0", - "@tailwindcss/vite": "^4.0.14", + "@tailwindcss/vite": "^4.1.0", "d3": "^7.9.0", "dotenv": "^16.4.7", - "layerchart": "^2.0.0-next.1", + "layerchart": "https://pkg.pr.new/layerchart@67759e2", "lodash": "^4.17.21", - "mode-watcher": "^0.5.1", + "runed": "^0.25.0", "svelte-inspect-value": "0.3.0", - "svelte-ux": "^2.0.0-next.2", + "svelte-ux": "^2.0.0-next.4", "tailwind-variants": "^0.3.1" }, "devDependencies": { - "@iconify-json/carbon": "^1.2.7", + "@iconify-json/carbon": "^1.2.8", "@iconify-json/heroicons": "^1.2.2", + "@iconify-json/lucide": "^1.2.34", "@internationalized/date": "^3.7.0", "@playwright/test": "^1.50.1", "@sveltejs/adapter-auto": "^4.0.0", "@sveltejs/adapter-node": "^5.2.12", "@sveltejs/adapter-static": "^3.0.8", - "@sveltejs/kit": "^2.17.2", + "@sveltejs/kit": "^2.20.2", "@sveltejs/vite-plugin-svelte": "^5.0.3", - "@tailwindcss/postcss": "^4.0.8", + "@tailwindcss/postcss": "^4.1.0", "@types/d3": "^7.4.3", "@types/eslint": "^9.6.1", - "@types/lodash": "^4.17.15", - "@types/node": "^22.13.4", + "@types/lodash": "^4.17.16", + "@types/node": "^22.13.17", "bits-ui": "^0.21.16", "cmdk-sv": "^0.0.18", - "eslint": "^9.20.1", - "eslint-config-prettier": "^10.0.1", - "eslint-plugin-svelte": "^2.46.1", + "eslint": "^9.23.0", + "eslint-config-prettier": "^10.1.1", + "eslint-plugin-svelte": "^3.5.0", "globals": "^15.15.0", - "prettier": "^3.5.1", + "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", - "svelte": "^5.20.2", - "svelte-check": "^4.1.4", - "svelte-headless-table": "^0.18.3", + "svelte": "^5.25.6", + "svelte-check": "^4.1.5", "svelte-intersection-observer": "^1.0.0", "svelte-radix": "^1.1.1", "sveltekit-search-params": "^4.0.0-next.0", - "tailwindcss": "^4.0.8", - "typescript": "^5.7.3", - "typescript-eslint": "^8.24.1", + "tailwindcss": "^4.1.0", + "typescript": "^5.8.2", + "typescript-eslint": "^8.29.0", "unplugin-icons": "^22.1.0", - "vite": "^6.1.1", - "vitest": "^3.0.6" + "vite": "^6.2.4", + "vitest": "^3.1.1" }, "optionalDependencies": { "@rollup/rollup-linux-x64-gnu": "^4.34.8" @@ -165,17 +166,401 @@ "node": ">17.0.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", "cpu": [ - "arm64" + "x64" ], "license": "MIT", "optional": true, "os": [ - "darwin" + "win32" ], "engines": { "node": ">=18" @@ -218,11 +603,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.19.1", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.5", + "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -230,10 +617,20 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz", + "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/core": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", - "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -244,7 +641,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.2.0", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "license": "MIT", "dependencies": { @@ -267,6 +666,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", "engines": { @@ -277,9 +678,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", - "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", + "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", "dev": true, "license": "MIT", "engines": { @@ -287,7 +688,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.5", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -295,19 +698,32 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.6.tgz", - "integrity": "sha512-+0TjwR1eAUdZtvv/ir1mGX+v0tUoR3VEPB8Up0LLJC+whRW0GgBBtpbOkg/a/U4Dxa6l5a3l9AJ1aWIQVyoWJA==", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", + "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.11.0", + "@eslint/core": "^0.13.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", + "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@floating-ui/core": { "version": "1.6.8", "license": "MIT", @@ -385,7 +801,9 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -397,9 +815,9 @@ } }, "node_modules/@iconify-json/carbon": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@iconify-json/carbon/-/carbon-1.2.7.tgz", - "integrity": "sha512-nqEjicnNdb3CnY21MsTr9DfU8JBkP9C8hup1bCe4zvpLKjcU9YRmYChUbqZYBP4P+BL5NdrprTSN+B7qJg3H3Q==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@iconify-json/carbon/-/carbon-1.2.8.tgz", + "integrity": "sha512-6xh4YiFBz6qoSnB3XMe23WvjTJroDFXB17J1MbiT7nATFe+70+em1acRXr8hgP/gYpwFMHFc4IvjA/IPTPnTzg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -414,6 +832,16 @@ "@iconify/types": "*" } }, + "node_modules/@iconify-json/lucide": { + "version": "1.2.34", + "resolved": "https://registry.npmjs.org/@iconify-json/lucide/-/lucide-1.2.34.tgz", + "integrity": "sha512-6xiITvlYP/5d6KQPRBHDQ+eaLxRWiTvXfuVGuNX2ahNLbEi0VKB04v008IQLPrMu/C4tRMI4+sRzHd/wSFxGZQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@iconify/types": "*" + } + }, "node_modules/@iconify/types": { "version": "2.0.0", "dev": true, @@ -598,12 +1026,6 @@ "url": "https://github.com/sponsors/dcastil" } }, - "node_modules/@layerstack/tailwind/node_modules/tailwindcss": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.14.tgz", - "integrity": "sha512-92YT2dpt671tFiHH/e1ok9D987N9fHD5VWoly1CdPD/Cd1HMglvZwP3nx2yTj2lbXDAHt8QssZkxTLCCTNL+xw==", - "license": "MIT" - }, "node_modules/@layerstack/utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@layerstack/utils/-/utils-1.0.0.tgz", @@ -623,6 +1045,8 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { @@ -635,6 +1059,8 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", "engines": { @@ -643,6 +1069,8 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { @@ -788,6 +1216,15 @@ "linux" ] }, + "node_modules/@sveltejs/acorn-typescript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.5.tgz", + "integrity": "sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^8.9.0" + } + }, "node_modules/@sveltejs/adapter-auto": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-4.0.0.tgz", @@ -826,9 +1263,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.17.2.tgz", - "integrity": "sha512-Vypk02baf7qd3SOB1uUwUC/3Oka+srPo2J0a8YN3EfJypRshDkNx9HzNKjSmhOnGWwT+SSO06+N0mAb8iVTmTQ==", + "version": "2.20.2", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.20.2.tgz", + "integrity": "sha512-Dv8TOAZC9vyfcAB9TMsvUEJsRbklRTeNfcYBPaeH6KnABJ99i3CvCB2eNx8fiiliIqe+9GIchBg4RodRH5p1BQ==", "dev": true, "license": "MIT", "dependencies": { @@ -885,326 +1322,59 @@ }, "engines": { "node": "^18.0.0 || ^20.0.0 || >=22" - }, - "peerDependencies": { - "@sveltejs/vite-plugin-svelte": "^5.0.0", - "svelte": "^5.0.0", - "vite": "^6.0.0" - } - }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@tailwindcss/node": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.8.tgz", - "integrity": "sha512-FKArQpbrbwv08TNT0k7ejYXpF+R8knZFAatNc0acOxbgeqLzwb86r+P3LGOjIeI3Idqe9CVkZrh4GlsJLJKkkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "enhanced-resolve": "^5.18.1", - "jiti": "^2.4.2", - "tailwindcss": "4.0.8" - } - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.8.tgz", - "integrity": "sha512-KfMcuAu/Iw+DcV1e8twrFyr2yN8/ZDC/odIGta4wuuJOGkrkHZbvJvRNIbQNhGh7erZTYV6Ie0IeD6WC9Y8Hcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.0.8", - "@tailwindcss/oxide-darwin-arm64": "4.0.8", - "@tailwindcss/oxide-darwin-x64": "4.0.8", - "@tailwindcss/oxide-freebsd-x64": "4.0.8", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.8", - "@tailwindcss/oxide-linux-arm64-gnu": "4.0.8", - "@tailwindcss/oxide-linux-arm64-musl": "4.0.8", - "@tailwindcss/oxide-linux-x64-gnu": "4.0.8", - "@tailwindcss/oxide-linux-x64-musl": "4.0.8", - "@tailwindcss/oxide-win32-arm64-msvc": "4.0.8", - "@tailwindcss/oxide-win32-x64-msvc": "4.0.8" - } - }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.8.tgz", - "integrity": "sha512-We7K79+Sm4mwJHk26Yzu/GAj7C7myemm7PeXvpgMxyxO70SSFSL3uCcqFbz9JA5M5UPkrl7N9fkBe/Y0iazqpA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.8.tgz", - "integrity": "sha512-Lv9Isi2EwkCTG1sRHNDi0uRNN1UGFdEThUAGFrydRmQZnraGLMjN8gahzg2FFnOizDl7LB2TykLUuiw833DSNg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.8.tgz", - "integrity": "sha512-fWfywfYIlSWtKoqWTjukTHLWV3ARaBRjXCC2Eo0l6KVpaqGY4c2y8snUjp1xpxUtpqwMvCvFWFaleMoz1Vhzlw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.8.tgz", - "integrity": "sha512-SO+dyvjJV9G94bnmq2288Ke0BIdvrbSbvtPLaQdqjqHR83v5L2fWADyFO+1oecHo9Owsk8MxcXh1agGVPIKIqw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.8.tgz", - "integrity": "sha512-ZSHggWiEblQNV69V0qUK5vuAtHP+I+S2eGrKGJ5lPgwgJeAd6GjLsVBN+Mqn2SPVfYM3BOpS9jX/zVg9RWQVDQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.8.tgz", - "integrity": "sha512-xWpr6M0OZLDNsr7+bQz+3X7zcnDJZJ1N9gtBWCtfhkEtDjjxYEp+Lr5L5nc/yXlL4MyCHnn0uonGVXy3fhxaVA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.8.tgz", - "integrity": "sha512-5tz2IL7LN58ssGEq7h/staD7pu/izF/KeMWdlJ86WDe2Ah46LF3ET6ZGKTr5eZMrnEA0M9cVFuSPprKRHNgjeg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.14.tgz", - "integrity": "sha512-EE+EQ+c6tTpzsg+LGO1uuusjXxYx0Q00JE5ubcIGfsogSKth8n8i2BcS2wYTQe4jXGs+BQs35l78BIPzgwLddw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.8.tgz", - "integrity": "sha512-yFYKG5UtHTRimjtqxUWXBgI4Tc6NJe3USjRIVdlTczpLRxq/SFwgzGl5JbatCxgSRDPBFwRrNPxq+ukfQFGdrw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.8.tgz", - "integrity": "sha512-tndGujmCSba85cRCnQzXgpA2jx5gXimyspsUYae5jlPyLRG0RjXbDshFKOheVXU4TLflo7FSG8EHCBJ0EHTKdQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.8.tgz", - "integrity": "sha512-T77jroAc0p4EHVVgTUiNeFn6Nj3jtD3IeNId2X+0k+N1XxfNipy81BEkYErpKLiOkNhpNFjPee8/ZVas29b2OQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide/node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.0.8.tgz", - "integrity": "sha512-KSzMkhyrxAQyY2o194NKVKU9j/c+NFSoMvnHWFaNHKi3P1lb+Vq1UC19tLHrmxSkKapcMMu69D7+G1+FVGNDXQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/postcss": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.0.8.tgz", - "integrity": "sha512-SUwlrXjn1ycmUbA0o0n3Y0LqlXqxN5R8HR+ti+OBbRS79wl2seDmiypEs3xJCuQXe07ol81s1AmRMitBmPveJA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.0.8", - "@tailwindcss/oxide": "4.0.8", - "lightningcss": "^1.29.1", - "postcss": "^8.4.41", - "tailwindcss": "4.0.8" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^5.0.0", + "svelte": "^5.0.0", + "vite": "^6.0.0" } }, - "node_modules/@tailwindcss/vite": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.0.14.tgz", - "integrity": "sha512-y69ztPTRFy+13EPS/7dEFVl7q2Goh1pQueVO8IfGeyqSpcx/joNJXFk0lLhMgUbF0VFJotwRSb9ZY7Xoq3r26Q==", - "license": "MIT", + "node_modules/@swc/helpers": { + "version": "0.5.15", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@tailwindcss/node": "4.0.14", - "@tailwindcss/oxide": "4.0.14", - "lightningcss": "1.29.2", - "tailwindcss": "4.0.14" - }, - "peerDependencies": { - "vite": "^5.2.0 || ^6" + "tslib": "^2.8.0" } }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/node": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.14.tgz", - "integrity": "sha512-Ux9NbFkKWYE4rfUFz6M5JFLs/GEYP6ysxT8uSyPn6aTbh2K3xDE1zz++eVK4Vwx799fzMF8CID9sdHn4j/Ab8w==", + "node_modules/@tailwindcss/node": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.0.tgz", + "integrity": "sha512-mfgxGxFaxbsUbaGwKIAQXUSm7Qoojw53FftpoKwo4ANwr9wnDaByz4vi1gMti/xfJvmQ5lzA1DvPiX5yCHtBkQ==", "license": "MIT", "dependencies": { "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", - "tailwindcss": "4.0.14" + "lightningcss": "1.29.2", + "tailwindcss": "4.1.0" } }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.0.14.tgz", - "integrity": "sha512-M8VCNyO/NBi5vJ2cRcI9u8w7Si+i76a7o1vveoGtbbjpEYJZYiyc7f2VGps/DqawO56l3tImIbq2OT/533jcrA==", + "node_modules/@tailwindcss/oxide": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.0.tgz", + "integrity": "sha512-A33oyZKpPFH08d7xkl13Dc8OTsbPhsuls0z9gUCxIHvn8c1BsUACddQxL6HwaeJR1fSYyXZUw8bdWcD8bVawpQ==", "license": "MIT", "engines": { "node": ">= 10" }, "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.0.14", - "@tailwindcss/oxide-darwin-arm64": "4.0.14", - "@tailwindcss/oxide-darwin-x64": "4.0.14", - "@tailwindcss/oxide-freebsd-x64": "4.0.14", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.0.14", - "@tailwindcss/oxide-linux-arm64-gnu": "4.0.14", - "@tailwindcss/oxide-linux-arm64-musl": "4.0.14", - "@tailwindcss/oxide-linux-x64-gnu": "4.0.14", - "@tailwindcss/oxide-linux-x64-musl": "4.0.14", - "@tailwindcss/oxide-win32-arm64-msvc": "4.0.14", - "@tailwindcss/oxide-win32-x64-msvc": "4.0.14" - } - }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.0.14.tgz", - "integrity": "sha512-VBFKC2rFyfJ5J8lRwjy6ub3rgpY186kAcYgiUr8ArR8BAZzMruyeKJ6mlsD22Zp5ZLcPW/FXMasJiJBx0WsdQg==", + "@tailwindcss/oxide-android-arm64": "4.1.0", + "@tailwindcss/oxide-darwin-arm64": "4.1.0", + "@tailwindcss/oxide-darwin-x64": "4.1.0", + "@tailwindcss/oxide-freebsd-x64": "4.1.0", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.0", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.0", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.0", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.0", + "@tailwindcss/oxide-linux-x64-musl": "4.1.0", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.0", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.0" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.0.tgz", + "integrity": "sha512-UredFljuHey2Kh5qyYfQVBr0Xfq70ZE5Df6i5IubNYQGs2JXXT4VL0SIUjwzHx5W9T6t7dT7banunlV6lthGPQ==", "cpu": [ "arm64" ], @@ -1217,10 +1387,10 @@ "node": ">= 10" } }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.0.14.tgz", - "integrity": "sha512-U3XOwLrefGr2YQZ9DXasDSNWGPZBCh8F62+AExBEDMLDfvLLgI/HDzY8Oq8p/JtqkAY38sWPOaNnRwEGKU5Zmg==", + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.0.tgz", + "integrity": "sha512-QHQ/46lRVwH9zEBNiRk8AJ3Af4pMq6DuZAI//q323qrPOXjsRdrhLsH9LUO3mqBfHr5EZNUxN3Am5vpO89sntw==", "cpu": [ "arm64" ], @@ -1233,10 +1403,10 @@ "node": ">= 10" } }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.0.14.tgz", - "integrity": "sha512-V5AjFuc3ndWGnOi1d379UsODb0TzAS2DYIP/lwEbfvafUaD2aNZIcbwJtYu2DQqO2+s/XBvDVA+w4yUyaewRwg==", + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.0.tgz", + "integrity": "sha512-lEMgYHCvQQ6x2KOZ4FwnPprwfnc+UnjzwXRqEYIhB/NlYvXQD1QMf7oKEDRqy94DiZaYox9ZRfG2YJOBgM0UkA==", "cpu": [ "x64" ], @@ -1249,10 +1419,10 @@ "node": ">= 10" } }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.0.14.tgz", - "integrity": "sha512-tXvtxbaZfcPfqBwW3f53lTcyH6EDT+1eT7yabwcfcxTs+8yTPqxsDUhrqe9MrnEzpNkd+R/QAjJapfd4tjWdLg==", + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.0.tgz", + "integrity": "sha512-9fdImTc+2lA5yHqJ61oeTXfCtzylNOzJVFhyWwVQAJESJJbVCPnj6f+b+Zf/AYAdKQfS6FCThbPEahkQrDCgLQ==", "cpu": [ "x64" ], @@ -1265,10 +1435,10 @@ "node": ">= 10" } }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.0.14.tgz", - "integrity": "sha512-cSeLNWWqIWeSTmBntQvyY2/2gcLX8rkPFfDDTQVF8qbRcRMVPLxBvFVJyfSAYRNch6ZyVH2GI6dtgALOBDpdNA==", + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.0.tgz", + "integrity": "sha512-HB0bTkUOuTLLSdadyRhKE9yps4/ZBjrojbHTPMSvvf/8yBLZRPpWb+A6IgW5R+2A2AL4KhVPgLwWfoXsErxJFg==", "cpu": [ "arm" ], @@ -1281,10 +1451,10 @@ "node": ">= 10" } }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.0.14.tgz", - "integrity": "sha512-bwDWLBalXFMDItcSXzFk6y7QKvj6oFlaY9vM+agTlwFL1n1OhDHYLZkSjaYsh6KCeG0VB0r7H8PUJVOM1LRZyg==", + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.0.tgz", + "integrity": "sha512-+QtYCwvKLjC46h6RikKkpELJWrpiMMtgyK0aaqhwPLEx1icGgIhwz8dqrkAiqbFRE0KiRrE2aenhYoEkplyRmA==", "cpu": [ "arm64" ], @@ -1297,10 +1467,10 @@ "node": ">= 10" } }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.0.14.tgz", - "integrity": "sha512-gVkJdnR/L6iIcGYXx64HGJRmlme2FGr/aZH0W6u4A3RgPMAb+6ELRLi+UBiH83RXBm9vwCfkIC/q8T51h8vUJQ==", + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.0.tgz", + "integrity": "sha512-nApadFKM9GauzuPZPlt6TKfELavMHqJ0gVd+GYkYBTwr2t9KhgCAb2sKiFDDIhs1a7gOjsU7P1lEauv3iKFp+Q==", "cpu": [ "arm64" ], @@ -1313,10 +1483,26 @@ "node": ">= 10" } }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.0.14.tgz", - "integrity": "sha512-KCCOzo+L6XPT0oUp2Jwh233ETRQ/F6cwUnMnR0FvMUCbkDAzHbcyOgpfuAtRa5HD0WbTbH4pVD+S0pn1EhNfbw==", + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.0.tgz", + "integrity": "sha512-cp0Rf9Wit2kZHhrV8HIoDFD8dxU2+ZTCFCFbDj3a07pGyyPwLCJm5H5VipKXgYrBaLmlYu73ERidW0S5sdEXEg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.0.tgz", + "integrity": "sha512-4/wf42XWBJGXsOS6BhgPhdQbg/qyfdZ1nZvTL9sJoxYN+Ah+cfY5Dd7R0smzI8hmgCRt3TD1lYb72ChTyIA59w==", "cpu": [ "x64" ], @@ -1329,10 +1515,10 @@ "node": ">= 10" } }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.0.14.tgz", - "integrity": "sha512-AHObFiFL9lNYcm3tZSPqa/cHGpM5wOrNmM2uOMoKppp+0Hom5uuyRh0QkOp7jftsHZdrZUpmoz0Mp6vhh2XtUg==", + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.0.tgz", + "integrity": "sha512-caXJJ0G6NwGbcoxEYdH3MZYN84C3PldaMdAEPMU6bjJXURQlKdSlQ/Ecis7/nSgBkMkicZyhqWmb36Tw/BFSIw==", "cpu": [ "arm64" ], @@ -1345,10 +1531,10 @@ "node": ">= 10" } }, - "node_modules/@tailwindcss/vite/node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.0.14.tgz", - "integrity": "sha512-rNXXMDJfCJLw/ZaFTOLOHoGULxyXfh2iXTGiChFiYTSgKBKQHIGEpV0yn5N25WGzJJ+VBnRjHzlmDqRV+d//oQ==", + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.0.tgz", + "integrity": "sha512-ZHXRXRxB7HBmkUE8U13nmkGGYfR1I2vsuhiYjeDDUFIYpk1BL6caU8hvzkSlL/X5CAQNdIUUJRGom5I0ZyfJOA==", "cpu": [ "x64" ], @@ -1361,11 +1547,33 @@ "node": ">= 10" } }, - "node_modules/@tailwindcss/vite/node_modules/tailwindcss": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.14.tgz", - "integrity": "sha512-92YT2dpt671tFiHH/e1ok9D987N9fHD5VWoly1CdPD/Cd1HMglvZwP3nx2yTj2lbXDAHt8QssZkxTLCCTNL+xw==", - "license": "MIT" + "node_modules/@tailwindcss/postcss": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.0.tgz", + "integrity": "sha512-b2NWFAFfLXY7960jLY5QkKbuYKrQUULx60XU3BCzyaUQpU/7lLf3n2CiHibZPdBq5CIXrUp10wdxhV0EI0Js2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.1.0", + "@tailwindcss/oxide": "4.1.0", + "postcss": "^8.4.41", + "tailwindcss": "4.1.0" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.0.tgz", + "integrity": "sha512-IszG0h/o8jOGheY0f7v41a9qyDymZ5eU8qm4koTypMKagBhaQA06Keip13wch6sz7rG3cvIG7A3/ytdfRh2BUw==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.0", + "@tailwindcss/oxide": "4.1.0", + "tailwindcss": "4.1.0" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6" + } }, "node_modules/@types/cookie": { "version": "0.6.0", @@ -1625,15 +1833,15 @@ "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw==", + "version": "4.17.16", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.16.tgz", + "integrity": "sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==", "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.4.tgz", - "integrity": "sha512-ywP2X0DYtX3y08eFVx5fNIw7/uIv8hYUKgXoK8oayJlLnKcRfEYCxWMVE1XagUdVtCJlZT1AU4LXEABW+L1Peg==", + "version": "22.13.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.17.tgz", + "integrity": "sha512-nAJuQXoyPj04uLgu+obZcSmsfOenUg6DxPKogeUy6yNCFwWaj5sBF8/G/pNo8EtBJjAfSVgfIlugR/BCOleO+g==", "license": "MIT", "dependencies": { "undici-types": "~6.20.0" @@ -1645,17 +1853,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.1.tgz", - "integrity": "sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.0.tgz", + "integrity": "sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.24.1", - "@typescript-eslint/type-utils": "8.24.1", - "@typescript-eslint/utils": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/type-utils": "8.29.0", + "@typescript-eslint/utils": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -1671,20 +1879,20 @@ "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.1.tgz", - "integrity": "sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.0.tgz", + "integrity": "sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.24.1", - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/typescript-estree": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/typescript-estree": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", "debug": "^4.3.4" }, "engines": { @@ -1696,18 +1904,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", - "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz", + "integrity": "sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1" + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1718,14 +1926,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.1.tgz", - "integrity": "sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.0.tgz", + "integrity": "sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.24.1", - "@typescript-eslint/utils": "8.24.1", + "@typescript-eslint/typescript-estree": "8.29.0", + "@typescript-eslint/utils": "8.29.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, @@ -1738,13 +1946,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", - "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.0.tgz", + "integrity": "sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg==", "dev": true, "license": "MIT", "engines": { @@ -1756,14 +1964,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", - "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz", + "integrity": "sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/visitor-keys": "8.29.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -1779,7 +1987,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { @@ -1809,16 +2017,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz", - "integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.0.tgz", + "integrity": "sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.24.1", - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/typescript-estree": "8.24.1" + "@typescript-eslint/scope-manager": "8.29.0", + "@typescript-eslint/types": "8.29.0", + "@typescript-eslint/typescript-estree": "8.29.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1829,17 +2037,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", - "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz", + "integrity": "sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/types": "8.29.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -1851,14 +2059,14 @@ } }, "node_modules/@vitest/expect": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.6.tgz", - "integrity": "sha512-zBduHf/ja7/QRX4HdP1DSq5XrPgdN+jzLOwaTq/0qZjYfgETNFCKf9nOAp2j3hmom3oTbczuUzrzg9Hafh7hNg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.1.tgz", + "integrity": "sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.6", - "@vitest/utils": "3.0.6", + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -1867,13 +2075,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.6.tgz", - "integrity": "sha512-KPztr4/tn7qDGZfqlSPQoF2VgJcKxnDNhmfR3VgZ6Fy1bO8T9Fc1stUiTXtqz0yG24VpD00pZP5f8EOFknjNuQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.1.tgz", + "integrity": "sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.6", + "@vitest/spy": "3.1.1", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -1904,9 +2112,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.6.tgz", - "integrity": "sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.1.tgz", + "integrity": "sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==", "dev": true, "license": "MIT", "dependencies": { @@ -1917,13 +2125,13 @@ } }, "node_modules/@vitest/runner": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.6.tgz", - "integrity": "sha512-JopP4m/jGoaG1+CBqubV/5VMbi7L+NQCJTu1J1Pf6YaUbk7bZtaq5CX7p+8sY64Sjn1UQ1XJparHfcvTTdu9cA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.1.tgz", + "integrity": "sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.6", + "@vitest/utils": "3.1.1", "pathe": "^2.0.3" }, "funding": { @@ -1931,13 +2139,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.6.tgz", - "integrity": "sha512-qKSmxNQwT60kNwwJHMVwavvZsMGXWmngD023OHSgn873pV0lylK7dwBTfYP7e4URy5NiBCHHiQGA9DHkYkqRqg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.1.tgz", + "integrity": "sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.6", + "@vitest/pretty-format": "3.1.1", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -1946,9 +2154,9 @@ } }, "node_modules/@vitest/spy": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.6.tgz", - "integrity": "sha512-HfOGx/bXtjy24fDlTOpgiAEJbRfFxoX3zIGagCqACkFKKZ/TTOE6gYMKXlqecvxEndKFuNHcHqP081ggZ2yM0Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.1.tgz", + "integrity": "sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1959,13 +2167,13 @@ } }, "node_modules/@vitest/utils": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.6.tgz", - "integrity": "sha512-18ktZpf4GQFTbf9jK543uspU03Q2qya7ZGya5yiZ0Gx0nnnalBvd5ZBislbl2EhLjM8A8rt4OilqKG7QwcGkvQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.1.tgz", + "integrity": "sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.6", + "@vitest/pretty-format": "3.1.1", "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" }, @@ -1985,21 +2193,18 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-typescript": { - "version": "1.4.13", - "license": "MIT", - "peerDependencies": { - "acorn": ">=8.9.0" - } - }, "node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -2029,6 +2234,8 @@ }, "node_modules/argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "license": "Python-2.0" }, @@ -2094,6 +2301,8 @@ }, "node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", "dependencies": { @@ -2103,6 +2312,8 @@ }, "node_modules/braces": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { @@ -2136,6 +2347,8 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { @@ -2277,6 +2490,8 @@ }, "node_modules/concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, "license": "MIT" }, @@ -2323,6 +2538,8 @@ }, "node_modules/cssesc": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, "license": "MIT", "bin": { @@ -2783,6 +3000,8 @@ }, "node_modules/deepmerge": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -2848,9 +3067,9 @@ "license": "MIT" }, "node_modules/esbuild": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", - "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -2860,31 +3079,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.2", - "@esbuild/android-arm": "0.24.2", - "@esbuild/android-arm64": "0.24.2", - "@esbuild/android-x64": "0.24.2", - "@esbuild/darwin-arm64": "0.24.2", - "@esbuild/darwin-x64": "0.24.2", - "@esbuild/freebsd-arm64": "0.24.2", - "@esbuild/freebsd-x64": "0.24.2", - "@esbuild/linux-arm": "0.24.2", - "@esbuild/linux-arm64": "0.24.2", - "@esbuild/linux-ia32": "0.24.2", - "@esbuild/linux-loong64": "0.24.2", - "@esbuild/linux-mips64el": "0.24.2", - "@esbuild/linux-ppc64": "0.24.2", - "@esbuild/linux-riscv64": "0.24.2", - "@esbuild/linux-s390x": "0.24.2", - "@esbuild/linux-x64": "0.24.2", - "@esbuild/netbsd-arm64": "0.24.2", - "@esbuild/netbsd-x64": "0.24.2", - "@esbuild/openbsd-arm64": "0.24.2", - "@esbuild/openbsd-x64": "0.24.2", - "@esbuild/sunos-x64": "0.24.2", - "@esbuild/win32-arm64": "0.24.2", - "@esbuild/win32-ia32": "0.24.2", - "@esbuild/win32-x64": "0.24.2" + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" } }, "node_modules/escape-string-regexp": { @@ -2899,22 +3118,23 @@ } }, "node_modules/eslint": { - "version": "9.20.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", - "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", + "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.11.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.20.0", - "@eslint/plugin-kit": "^0.2.5", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.2.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.23.0", + "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", + "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -2922,7 +3142,7 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", + "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", @@ -2959,7 +3179,9 @@ } }, "node_modules/eslint-compat-utils": { - "version": "0.5.1", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.4.tgz", + "integrity": "sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==", "dev": true, "license": "MIT", "dependencies": { @@ -2973,43 +3195,44 @@ } }, "node_modules/eslint-config-prettier": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz", - "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.1.tgz", + "integrity": "sha512-4EQQr6wXwS+ZJSzaR5ZCrYgLxqvUjdXctaEtBqHcbkW944B1NQyO4qpdHQbXBONfwxXdkAY81HH4+LUfrg+zPw==", "dev": true, "license": "MIT", "bin": { - "eslint-config-prettier": "build/bin/cli.js" + "eslint-config-prettier": "bin/cli.js" }, "peerDependencies": { "eslint": ">=7.0.0" } }, "node_modules/eslint-plugin-svelte": { - "version": "2.46.1", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-3.5.0.tgz", + "integrity": "sha512-986WKRAFoS5KN/jc0Z06akYxfNs+obca486sf9Y+0VbjRUfqJZYX/HSQR/js3xd3enrFqDLg8MToWgDOvCQUqQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@jridgewell/sourcemap-codec": "^1.4.15", - "eslint-compat-utils": "^0.5.1", + "@eslint-community/eslint-utils": "^4.4.1", + "@jridgewell/sourcemap-codec": "^1.5.0", + "eslint-compat-utils": "^0.6.4", "esutils": "^2.0.3", "known-css-properties": "^0.35.0", - "postcss": "^8.4.38", + "postcss": "^8.4.49", "postcss-load-config": "^3.1.4", - "postcss-safe-parser": "^6.0.0", - "postcss-selector-parser": "^6.1.0", - "semver": "^7.6.2", - "svelte-eslint-parser": "^0.43.0" + "postcss-safe-parser": "^7.0.0", + "semver": "^7.6.3", + "svelte-eslint-parser": "^1.1.1" }, "engines": { - "node": "^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://github.com/sponsors/ota-meshi" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0-0 || ^9.0.0-0", + "eslint": "^8.57.1 || ^9.0.0", "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" }, "peerDependenciesMeta": { @@ -3018,20 +3241,10 @@ } } }, - "node_modules/eslint-plugin-svelte/node_modules/postcss-selector-parser": { - "version": "6.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/eslint-scope": { - "version": "8.2.0", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -3062,6 +3275,8 @@ }, "node_modules/espree": { "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -3088,9 +3303,9 @@ } }, "node_modules/esrap": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.5.tgz", - "integrity": "sha512-CjNMjkBWWZeHn+VX+gS8YvFwJ5+NDhg8aWZBSFJPR8qQduDNjbJodA2WcwCm7uQa5Rjqj+nZvVmceg1RbHFB9g==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.6.tgz", + "integrity": "sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -3098,6 +3313,8 @@ }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -3128,7 +3345,9 @@ } }, "node_modules/expect-type": { - "version": "1.1.0", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", + "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -3140,7 +3359,9 @@ "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", "dependencies": { @@ -3148,7 +3369,7 @@ "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -3156,6 +3377,8 @@ }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "license": "ISC", "dependencies": { @@ -3167,6 +3390,8 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, @@ -3176,7 +3401,9 @@ "license": "MIT" }, "node_modules/fastq": { - "version": "1.17.1", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, "license": "ISC", "dependencies": { @@ -3210,6 +3437,8 @@ }, "node_modules/fill-range": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { @@ -3420,7 +3649,9 @@ } }, "node_modules/import-fresh": { - "version": "3.3.0", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3511,6 +3742,8 @@ }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", "engines": { @@ -3541,6 +3774,8 @@ }, "node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "license": "MIT", "dependencies": { @@ -3557,6 +3792,8 @@ }, "node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, @@ -3616,8 +3853,8 @@ }, "node_modules/layerchart": { "version": "2.0.0-next.1", - "resolved": "https://registry.npmjs.org/layerchart/-/layerchart-2.0.0-next.1.tgz", - "integrity": "sha512-RwZfVzF5+pGAJl6XslXqNrw8aLn2i27m34ks8yvBgqklldsiYjBP29ykQi0WLRO3xAdxMlHdVd0gRSmlWA0vmw==", + "resolved": "https://pkg.pr.new/layerchart@67759e2", + "integrity": "sha512-nO+f3tJ9zsRlOMUbBaEKlM+niTT6cQIGxmTY/Mhcbd0jKEXk2qu/+PHSoncfA9UEUANWd1Z8dFFzc2Uz8/dHyw==", "license": "MIT", "dependencies": { "@dagrejs/dagre": "^1.1.4", @@ -3646,10 +3883,11 @@ "d3-time": "^3.1.0", "date-fns": "^4.1.0", "layercake": "^8.4.2", - "lodash-es": "^4.17.21" + "lodash-es": "^4.17.21", + "runed": "^0.24.0" }, "peerDependencies": { - "svelte": "^3.56.0 || ^4.0.0 || ^5.0.0" + "svelte": "^5.0.0" } }, "node_modules/layerchart/node_modules/@layerstack/svelte-actions": { @@ -3677,6 +3915,21 @@ "lodash-es": "^4.17.21" } }, + "node_modules/layerchart/node_modules/runed": { + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/runed/-/runed-0.24.1.tgz", + "integrity": "sha512-7LWRiZ+TR/NKSkBwO/AQXgCR40dLl/toM3DxlagPSxXsRGGi40hQkKt2S5ESUrgZJ7YbXhct/vlnJwp2oRrGCg==", + "funding": [ + "https://github.com/sponsors/huntabyte", + "https://github.com/sponsors/tglide" + ], + "dependencies": { + "esm-env": "^1.0.0" + }, + "peerDependencies": { + "svelte": "^5.7.0" + } + }, "node_modules/levn": { "version": "0.4.1", "dev": true, @@ -3999,6 +4252,8 @@ }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "license": "MIT", "engines": { @@ -4007,6 +4262,8 @@ }, "node_modules/micromatch": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { @@ -4019,6 +4276,8 @@ }, "node_modules/micromatch/node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { @@ -4030,6 +4289,8 @@ }, "node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -4059,15 +4320,6 @@ "ufo": "^1.5.4" } }, - "node_modules/mode-watcher": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mode-watcher/-/mode-watcher-0.5.1.tgz", - "integrity": "sha512-adEC6T7TMX/kzQlaO/MtiQOSFekZfQu4MC+lXyoceQG+U5sKpJWZ4yKXqw846ExIuWJgedkOIPqAYYRk/xHm+w==", - "license": "MIT", - "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0-next.1" - } - }, "node_modules/mri": { "version": "1.2.0", "dev": true, @@ -4163,6 +4415,8 @@ }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", "dependencies": { @@ -4382,22 +4636,36 @@ } }, "node_modules/postcss-safe-parser": { - "version": "6.0.0", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=18.0" }, "peerDependencies": { - "postcss": "^8.3.3" + "postcss": "^8.4.31" } }, "node_modules/postcss-scss": { "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", "dev": true, "funding": [ { @@ -4421,6 +4689,20 @@ "postcss": "^8.4.29" } }, + "node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "dev": true, @@ -4430,9 +4712,9 @@ } }, "node_modules/prettier": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", - "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -4478,6 +4760,8 @@ }, "node_modules/punycode": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "license": "MIT", "engines": { @@ -4486,6 +4770,8 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -4535,6 +4821,8 @@ }, "node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", "engines": { @@ -4551,7 +4839,9 @@ } }, "node_modules/reusify": { - "version": "1.0.4", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", "engines": { @@ -4645,6 +4935,8 @@ }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -4665,6 +4957,21 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/runed": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/runed/-/runed-0.25.0.tgz", + "integrity": "sha512-7+ma4AG9FT2sWQEA0Egf6mb7PBT2vHyuHail1ie8ropfSjvZGtEAx8YTmUjv/APCsdRRxEVvArNjALk9zFSOrg==", + "funding": [ + "https://github.com/sponsors/huntabyte", + "https://github.com/sponsors/tglide" + ], + "dependencies": { + "esm-env": "^1.0.0" + }, + "peerDependencies": { + "svelte": "^5.7.0" + } + }, "node_modules/rw": { "version": "1.3.3", "license": "BSD-3-Clause" @@ -4750,12 +5057,16 @@ "license": "MIT" }, "node_modules/std-env": { - "version": "3.8.0", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.1.tgz", + "integrity": "sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==", "dev": true, "license": "MIT" }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { @@ -4936,21 +5247,21 @@ } }, "node_modules/svelte": { - "version": "5.20.2", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.20.2.tgz", - "integrity": "sha512-aYXJreNUiyTob0QOzRZeBXZMGeFZDch6SrSRV8QTncZb6zj0O3BEdUzPpojuHQ1pTvk+KX7I6rZCXPUf8pTPxA==", + "version": "5.25.6", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.25.6.tgz", + "integrity": "sha512-RGkaeAXDuJdvhA1fdSM5GgD++vYfJYijZL0uN6kM2s/TRJ663jktBhZlF0qjzAJGR/34PtaeT3G8MKJY1EKeqg==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", "@jridgewell/sourcemap-codec": "^1.5.0", + "@sveltejs/acorn-typescript": "^1.0.5", "@types/estree": "^1.0.5", "acorn": "^8.12.1", - "acorn-typescript": "^1.4.13", "aria-query": "^5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", "esm-env": "^1.2.1", - "esrap": "^1.4.3", + "esrap": "^1.4.6", "is-reference": "^3.0.3", "locate-character": "^3.0.0", "magic-string": "^0.30.11", @@ -4961,9 +5272,9 @@ } }, "node_modules/svelte-check": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.4.tgz", - "integrity": "sha512-v0j7yLbT29MezzaQJPEDwksybTE2Ups9rUxEXy92T06TiA0cbqcO8wAOwNUVkFW6B0hsYHA+oAX3BS8b/2oHtw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.5.tgz", + "integrity": "sha512-Gb0T2IqBNe1tLB9EB1Qh+LOe+JB8wt2/rNBDGvkxQVvk8vNeAoG+vZgFB/3P5+zC7RWlyBlzm9dVjZFph/maIg==", "dev": true, "license": "MIT", "dependencies": { @@ -4985,18 +5296,21 @@ } }, "node_modules/svelte-eslint-parser": { - "version": "0.43.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.1.1.tgz", + "integrity": "sha512-QLVGPIMDettl30qRHXU2VrPvVJKG8GsGstye7n8rFbEiu3gEARksuQg9Xu4GzubNxhGNM8stfBZkhyMbBQmjFA==", "dev": true, "license": "MIT", "dependencies": { - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "postcss": "^8.4.39", - "postcss-scss": "^4.0.9" + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.0.0", + "postcss": "^8.4.49", + "postcss-scss": "^4.0.9", + "postcss-selector-parser": "^7.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://github.com/sponsors/ota-meshi" @@ -5010,61 +5324,6 @@ } } }, - "node_modules/svelte-eslint-parser/node_modules/eslint-scope": { - "version": "7.2.2", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/svelte-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/svelte-eslint-parser/node_modules/espree": { - "version": "9.6.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/svelte-headless-table": { - "version": "0.18.3", - "dev": true, - "license": "MIT", - "dependencies": { - "svelte-keyed": "^2.0.0", - "svelte-render": "^2.0.1", - "svelte-subscribe": "^2.0.1" - }, - "peerDependencies": { - "svelte": "^4.0.0" - } - }, "node_modules/svelte-inspect-value": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/svelte-inspect-value/-/svelte-inspect-value-0.3.0.tgz", @@ -5084,14 +5343,6 @@ "dev": true, "license": "MIT" }, - "node_modules/svelte-keyed": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "svelte": "^4.0.0" - } - }, "node_modules/svelte-preprocess": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-6.0.3.tgz", @@ -5155,29 +5406,10 @@ "svelte": "^3.54.0 || ^4.0.0 || ^5.0.0 || ^5.0.0-next.1" } }, - "node_modules/svelte-render": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "svelte-subscribe": "^2.0.0" - }, - "peerDependencies": { - "svelte": "^4.0.0" - } - }, - "node_modules/svelte-subscribe": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "peerDependencies": { - "svelte": "^4.0.0" - } - }, "node_modules/svelte-ux": { - "version": "2.0.0-next.2", - "resolved": "https://registry.npmjs.org/svelte-ux/-/svelte-ux-2.0.0-next.2.tgz", - "integrity": "sha512-3p/w+XmW+7Tsy8N7ryIcdVhAgc1FGoDTqEezxI0wIGZodkNIRdEsrYXS/adAZfXt/k7v0ilJwDO+j+ccloLcDQ==", + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/svelte-ux/-/svelte-ux-2.0.0-next.4.tgz", + "integrity": "sha512-Xdv8hVsKUFvgEML88aVo9TQ57F+Tz2tQjYkxrLND8PGTgvZAjfvMxJMKcxOtqM3l/IeWEYF6hdgLCgmVWhizPw==", "license": "MIT", "dependencies": { "@floating-ui/dom": "^1.6.13", @@ -5274,9 +5506,9 @@ } }, "node_modules/tailwindcss": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.0.8.tgz", - "integrity": "sha512-Me7N5CKR+D2A1xdWA5t5+kjjT7bwnxZOE6/yDI/ixJdJokszsn2n++mdU5yJwrsTpqFX2B9ZNMBJDwcqk9C9lw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.0.tgz", + "integrity": "sha512-vBYstoFnvUZCDxaauNGQQEvJNQgCd1vSMDRYuZZMH1xRRcTboOk1rJrW5yFkEabU9X6Yx1C4LQ+QvPOvQj4Daw==", "license": "MIT" }, "node_modules/tapable": { @@ -5346,6 +5578,8 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5393,9 +5627,9 @@ } }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -5406,15 +5640,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.24.1.tgz", - "integrity": "sha512-cw3rEdzDqBs70TIcb0Gdzbt6h11BSs2pS0yaq7hDWDBtCCSei1pPSUXE9qUdQ/Wm9NgFg8mKtMt1b8fTHIl1jA==", + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.29.0.tgz", + "integrity": "sha512-ep9rVd9B4kQsZ7ZnWCVxUE/xDLUUUsRzE0poAeNu+4CkFErLfuvPt/qtm2EpnSyfvsR0S6QzDFSrPCFBwf64fg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.24.1", - "@typescript-eslint/parser": "8.24.1", - "@typescript-eslint/utils": "8.24.1" + "@typescript-eslint/eslint-plugin": "8.29.0", + "@typescript-eslint/parser": "8.29.0", + "@typescript-eslint/utils": "8.29.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5425,7 +5659,7 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/ufo": { @@ -5507,6 +5741,8 @@ }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -5515,17 +5751,19 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, "license": "MIT" }, "node_modules/vite": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.1.1.tgz", - "integrity": "sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==", + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.4.tgz", + "integrity": "sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==", "license": "MIT", "dependencies": { - "esbuild": "^0.24.2", - "postcss": "^8.5.2", + "esbuild": "^0.25.0", + "postcss": "^8.5.3", "rollup": "^4.30.1" }, "bin": { @@ -5590,9 +5828,9 @@ } }, "node_modules/vite-node": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.6.tgz", - "integrity": "sha512-s51RzrTkXKJrhNbUzQRsarjmAae7VmMPAsRT7lppVpIg6mK3zGthP9Hgz0YQQKuNcF+Ii7DfYk3Fxz40jRmePw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.1.tgz", + "integrity": "sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==", "dev": true, "license": "MIT", "dependencies": { @@ -5644,31 +5882,31 @@ } }, "node_modules/vitest": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.6.tgz", - "integrity": "sha512-/iL1Sc5VeDZKPDe58oGK4HUFLhw6b5XdY1MYawjuSaDA4sEfYlY9HnS6aCEG26fX+MgUi7MwlduTBHHAI/OvMA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.1.tgz", + "integrity": "sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "3.0.6", - "@vitest/mocker": "3.0.6", - "@vitest/pretty-format": "^3.0.6", - "@vitest/runner": "3.0.6", - "@vitest/snapshot": "3.0.6", - "@vitest/spy": "3.0.6", - "@vitest/utils": "3.0.6", + "@vitest/expect": "3.1.1", + "@vitest/mocker": "3.1.1", + "@vitest/pretty-format": "^3.1.1", + "@vitest/runner": "3.1.1", + "@vitest/snapshot": "3.1.1", + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", "chai": "^5.2.0", "debug": "^4.4.0", - "expect-type": "^1.1.0", + "expect-type": "^1.2.0", "magic-string": "^0.30.17", "pathe": "^2.0.3", - "std-env": "^3.8.0", + "std-env": "^3.8.1", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.0.6", + "vite-node": "3.1.1", "why-is-node-running": "^2.3.0" }, "bin": { @@ -5684,8 +5922,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.0.6", - "@vitest/ui": "3.0.6", + "@vitest/browser": "3.1.1", + "@vitest/ui": "3.1.1", "happy-dom": "*", "jsdom": "*" }, @@ -5757,18 +5995,6 @@ "node": ">=0.10.0" } }, - "node_modules/yaml": { - "version": "2.6.1", - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "dev": true, diff --git a/frontend/package.json b/frontend/package.json index 47702085e3..b244e04c72 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -21,67 +21,65 @@ "up-deps": "npx npm-check-updates -i" }, "devDependencies": { - "@iconify-json/carbon": "^1.2.7", + "@iconify-json/carbon": "^1.2.8", "@iconify-json/heroicons": "^1.2.2", + "@iconify-json/lucide": "^1.2.34", "@internationalized/date": "^3.7.0", "@playwright/test": "^1.50.1", "@sveltejs/adapter-auto": "^4.0.0", "@sveltejs/adapter-node": "^5.2.12", "@sveltejs/adapter-static": "^3.0.8", - "@sveltejs/kit": "^2.17.2", + "@sveltejs/kit": "^2.20.2", "@sveltejs/vite-plugin-svelte": "^5.0.3", - "@tailwindcss/postcss": "^4.0.8", + "@tailwindcss/postcss": "^4.1.0", "@types/d3": "^7.4.3", "@types/eslint": "^9.6.1", - "@types/lodash": "^4.17.15", - "@types/node": "^22.13.4", + "@types/lodash": "^4.17.16", + "@types/node": "^22.13.17", "bits-ui": "^0.21.16", "cmdk-sv": "^0.0.18", - "eslint": "^9.20.1", - "eslint-config-prettier": "^10.0.1", - "eslint-plugin-svelte": "^2.46.1", + "eslint": "^9.23.0", + "eslint-config-prettier": "^10.1.1", + "eslint-plugin-svelte": "^3.5.0", "globals": "^15.15.0", - "prettier": "^3.5.1", + "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", - "svelte": "^5.20.2", - "svelte-check": "^4.1.4", - "svelte-headless-table": "^0.18.3", + "svelte": "^5.25.6", + "svelte-check": "^4.1.5", "svelte-intersection-observer": "^1.0.0", "svelte-radix": "^1.1.1", "sveltekit-search-params": "^4.0.0-next.0", - "tailwindcss": "^4.0.8", - "typescript": "^5.7.3", - "typescript-eslint": "^8.24.1", + "tailwindcss": "^4.1.0", + "typescript": "^5.8.2", + "typescript-eslint": "^8.29.0", "unplugin-icons": "^22.1.0", - "vite": "^6.1.1", - "vitest": "^3.0.6" + "vite": "^6.2.4", + "vitest": "^3.1.1" }, "type": "module", "dependencies": { "@creditkarma/thrift-server-core": "^1.0.4", "@creditkarma/thrift-typescript": "^3.7.6", "@layerstack/svelte-actions": "^1.0.0", + "@layerstack/svelte-table": "^1.0.1-next.0", "@layerstack/tailwind": "^2.0.0-next.2", "@layerstack/utils": "^1.0.0", - "@tailwindcss/vite": "^4.0.14", + "@tailwindcss/vite": "^4.1.0", "d3": "^7.9.0", "dotenv": "^16.4.7", - "layerchart": "^2.0.0-next.1", + "layerchart": "https://pkg.pr.new/layerchart@67759e2", "lodash": "^4.17.21", - "mode-watcher": "^0.5.1", + "runed": "^0.25.0", "svelte-inspect-value": "0.3.0", - "svelte-ux": "^2.0.0-next.2", + "svelte-ux": "^2.0.0-next.4", "tailwind-variants": "^0.3.1" }, "overrides": { "cross-spawn": "^7.0.6", "cookie": "^0.7.0", "glob": "^9.0.0", - "vite": "^6.1.1", - "nanoid": "^3.3.8", - "svelte-headless-table": { - "svelte": "^5.0.0" - } + "vite": "^6.2.4", + "nanoid": "^3.3.8" }, "optionalDependencies": { "@rollup/rollup-linux-x64-gnu": "^4.34.8" diff --git a/frontend/src/app.css b/frontend/src/app.css index 77d3ce4477..197c3d451e 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -24,8 +24,9 @@ --color-border: var(--color-neutral-300); --color-input: hsl(0 0% 89.8%); - --color-primary: var(--color-primary-300); - --color-primary-foreground: var(--color-primary-800); + /* Defined below */ + /* --color-primary: var(--color-primary-300); + --color-primary-foreground: var(--color-primary-800); */ --color-secondary: hsl(0 0% 96.1%); --color-secondary-foreground: hsl(0 0% 9%); diff --git a/frontend/src/app.d.ts b/frontend/src/app.d.ts index d413be900f..1d90a968f5 100644 --- a/frontend/src/app.d.ts +++ b/frontend/src/app.d.ts @@ -2,7 +2,7 @@ export * from 'unplugin-icons/types/svelte'; import type { DateValue } from '$lib/components/charts/common'; import type { ComponentProps } from 'svelte'; -import type { FeaturesLineChart } from '$lib/components/charts/FeaturesLineChart.svelte'; +import type { CustomLineChart } from '$lib/components/charts/CustomLineChart.svelte'; import type { CustomNode } from '$lib/types'; // See https://kit.svelte.dev/docs/types#app // for information about these interfaces @@ -14,7 +14,7 @@ declare global { interface PageState { selectedNode?: CustomNode | null; selectedSeriesPoint?: { - series: NonNullable['series']>[number]; + series: NonNullable['series']>[number]; data: DateValue; } | null; } diff --git a/frontend/src/lib/api/api.ts b/frontend/src/lib/api/api.ts index 47a44925ca..b57ff29d8f 100644 --- a/frontend/src/lib/api/api.ts +++ b/frontend/src/lib/api/api.ts @@ -1,4 +1,6 @@ import { error } from '@sveltejs/kit'; +import { parseISO } from 'date-fns'; + import { type IConfListResponseArgs, type IJoinArgs, @@ -16,9 +18,13 @@ import { type INodeKeyArgs, ConfType, DriftMetric, - Status + type IJobTrackerRequestArgs } from '$lib/types/codegen'; import { confToLineage } from './utils'; +import { generateLineageTaskInfoData } from '../util/test-data/task-info'; + +import lineageTasks from '$lib/util/test-data/generated/task-info-lineage.json'; +import { DEFAULT_OFFSET } from '../params/offset'; export type ApiOptions = { base?: string; @@ -104,7 +110,7 @@ export class Api { name, startTs, endTs, - offset = '10h', + offset = DEFAULT_OFFSET + 'd', algorithm = DriftMetric.PSI }: IJoinDriftRequestArgs) { const params = new URLSearchParams({ @@ -121,7 +127,7 @@ export class Api { columnName, startTs, endTs, - offset = '10h', + offset = DEFAULT_OFFSET + 'd', algorithm = DriftMetric.PSI }: IJoinDriftRequestArgs) { const params = new URLSearchParams({ @@ -168,9 +174,15 @@ export class Api { // return this.#send(`join/${name}/lineage?${params.toString()}`); // TODO: Remove this once we have the API endpoint - return this.getJoin(name!).then((join) => { - return confToLineage(join); - }); + const join = await this.getJoin(name!); + + // TODO: Replacing source temporarily for demo purposes + if (join.metaData?.name === 'risk.user_transactions.txn_join') { + // @ts-expect-error Ignore + join.left.events.table = 'data.txn_events'; + } + + return confToLineage(join); } async getGroupByLineage({ @@ -180,9 +192,8 @@ export class Api { // direction }: ILineageRequestArgs): Promise { // TODO: Remove this once we have the API endpoint - return this.getGroupBy(name!).then((groupBy) => { - return confToLineage(groupBy); - }); + const groupBy = await this.getGroupBy(name!); + return confToLineage(groupBy); } async getModelLineage({ @@ -192,79 +203,73 @@ export class Api { // direction }: ILineageRequestArgs): Promise { // TODO: Remove this once we have the API endpoint - return this.getModel(name!).then((model) => { - return confToLineage(model); - }); + const model = await this.getModel(name!); + return confToLineage(model); } async getStagingQueryLineage({ name }: ILineageRequestArgs): Promise { // TODO: Remove this once we have the API endpoint - return this.getStagingQuery(name!).then((stagingQuery) => { - return confToLineage(stagingQuery); - }); + const stagingQuery = await this.getStagingQuery(name!); + return confToLineage(stagingQuery); } - async getJobTrackerData( - node: INodeKeyArgs, - daysToGenerate: number = 60 - ): Promise { - const startDate = new Date('2024-01-01'); - const endDateLimit = new Date(startDate); - endDateLimit.setDate(startDate.getDate() + daysToGenerate - 1); - const tasks: IJobTrackerResponseArgs['tasks'] = []; - - let currentDate = new Date(startDate); - while (currentDate <= endDateLimit) { - const taskDuration = 2 + Math.floor(Math.random() * 3); - const endDate = new Date(currentDate); - endDate.setDate(endDate.getDate() + taskDuration); - - // If this task would go beyond our limit, adjust it to end at the limit - if (endDate > endDateLimit) { - endDate.setTime(endDateLimit.getTime()); - } + async getJobTrackerData({ + name, + dateRange + }: IJobTrackerRequestArgs): Promise { + // const startDate = new Date(dateRange?.startDate ?? '2024-01-01'); + // const endDate = new Date(dateRange?.endDate ?? '2024-02-28'); + + // TODO: Remove generated task data once we have the API endpoint + const node: INodeKeyArgs = { + name: name + // TODO: way to determine this just based on the name? + // logicalType: LogicalType.JOIN, + // physicalType: PhysicalType.JOIN + }; + // const tasks: ITaskInfoArgs[] = generateTaskInfoData({ + // startDate, + // endDate + // }); - const statusValues = Object.values(Status).filter((v): v is number => typeof v === 'number'); + // @ts-expect-error Ignore + const tasks = lineageTasks[name ?? 'Unknown'] ?? []; - tasks.push({ - status: statusValues[Math.floor(Math.random() * statusValues.length)], - submittedTs: currentDate.getTime(), - dateRange: { - startDate: currentDate.toISOString().split('T')[0], - endDate: endDate.toISOString().split('T')[0] - } - }); - - // Add overlapping task with 30% chance, but only if we're not at the end - if (Math.random() < 0.3 && endDate < endDateLimit) { - const overlapStart = new Date(currentDate); - overlapStart.setDate(overlapStart.getDate() + 1); - const overlapEnd = new Date(endDate); - overlapEnd.setDate(overlapEnd.getDate() + 1); - - // Ensure overlap end date doesn't exceed limit - if (overlapEnd > endDateLimit) { - overlapEnd.setTime(endDateLimit.getTime()); - } + return { + mainNode: node, + tasks + }; + } - tasks.push({ - status: statusValues[Math.floor(Math.random() * statusValues.length)], - submittedTs: overlapStart.getTime(), - dateRange: { - startDate: overlapStart.toISOString().split('T')[0], - endDate: overlapEnd.toISOString().split('T')[0] - } - }); + // TODO: Temporary until we have orchestrator with API endpoint + async getLineageJobTrackerData({ + name, + dateRange + }: IJobTrackerRequestArgs): Promise> { + const startDate = parseISO(dateRange?.startDate ?? '2024-01-01'); + const endDate = parseISO(dateRange?.endDate ?? '2024-02-28'); + + // Get lineage based on node name + let lineage: ILineageResponseArgs | null = null; + try { + if (name?.includes('join')) { + lineage = await this.getJoinLineage({ name }); + } else if (name?.includes('group')) { + lineage = await this.getGroupByLineage({ name }); } - - currentDate = new Date(endDate); - currentDate.setDate(currentDate.getDate() + 1); + } catch (e) { + // Unable to get lineage unable (common for group by) + // console.error(`Unable to get lineage for ${name}: ${e}`); } - return { - tasks, - mainNode: node - }; + const lineageTasks = generateLineageTaskInfoData({ + node: lineage?.mainNode ?? { name }, + lineage, + startDate, + endDate + }); + + return lineageTasks; } async #send(resource: string, options?: ApiRequestOptions) { diff --git a/frontend/src/lib/api/utils.ts b/frontend/src/lib/api/utils.ts index 1fcaeca241..656d525e4c 100644 --- a/frontend/src/lib/api/utils.ts +++ b/frontend/src/lib/api/utils.ts @@ -34,17 +34,17 @@ export function confToLineage(conf: EntityData, excludeLeft = false): ILineageRe conf: conf as ILogicalNodeArgs }); const confParents: INodeKeyArgs[] = []; - connections.set(confNodeKey, { parents: confParents }); + connections.set(confNodeKey, { parents: confParents, children: [] }); /* * Join */ if ('left' in conf && conf.left && !excludeLeft) { - processSource(conf.left, infoMap, connections, confParents); + processSource(conf.left, infoMap, connections, confParents, confNodeKey); } if ('joinParts' in conf && conf.joinParts) { - processJoinParts(conf.joinParts, infoMap, connections, confParents); + processJoinParts(conf.joinParts, infoMap, connections, confParents, confNodeKey); } /* @@ -52,7 +52,7 @@ export function confToLineage(conf: EntityData, excludeLeft = false): ILineageRe */ if ('sources' in conf && conf.sources) { for (const source of conf.sources ?? []) { - processSource(source, infoMap, connections, confParents); + processSource(source, infoMap, connections, confParents, confNodeKey); } } @@ -60,7 +60,7 @@ export function confToLineage(conf: EntityData, excludeLeft = false): ILineageRe * Model */ if ('source' in conf && conf.source) { - processSource(conf.source, infoMap, connections, confParents); + processSource(conf.source, infoMap, connections, confParents, confNodeKey); } return { @@ -76,7 +76,8 @@ function processJoinParts( joinParts: IJoinPartArgs[], infoMap: NonNullable, connections: NonNullable, - parents: INodeKeyArgs[] + parents: INodeKeyArgs[], + parentNode: INodeKeyArgs ) { for (const jp of joinParts ?? []) { if (jp.groupBy) { @@ -90,10 +91,10 @@ function processJoinParts( parents.push(groupByNodeKey); const groupByParents: INodeKeyArgs[] = []; - connections.set(groupByNodeKey, { parents: groupByParents }); + connections.set(groupByNodeKey, { parents: groupByParents, children: [parentNode] }); for (const source of jp.groupBy?.sources ?? []) { - processSource(source, infoMap, connections, groupByParents); + processSource(source, infoMap, connections, groupByParents, groupByNodeKey); } } } @@ -103,7 +104,8 @@ function processSource( source: ISourceArgs, infoMap: NonNullable, connections: NonNullable, - parents: INodeKeyArgs[] + parents: INodeKeyArgs[], + parentNode: INodeKeyArgs ) { if (source.entities) { const entityNodeKey: INodeKeyArgs = { @@ -114,6 +116,7 @@ function processSource( conf: source.entities as ILogicalNodeArgs }); parents.push(entityNodeKey); + connections.set(entityNodeKey, { parents: [], children: [parentNode] }); } if (source.events) { @@ -125,6 +128,7 @@ function processSource( conf: source.events as ILogicalNodeArgs }); parents.push(eventNodeKey); + connections.set(eventNodeKey, { parents: [], children: [parentNode] }); } if (source.joinSource) { @@ -136,12 +140,18 @@ function processSource( conf: source.joinSource as ILogicalNodeArgs }); parents.push(joinNodeKey); + connections.set(joinNodeKey, { parents: [], children: [parentNode] }); // Transfer connections and infoMap from joinSource join to root join graph const joinSourceLineage = confToLineage(source.joinSource.join as IJoinArgs); for (const [key, nodeConnections] of joinSourceLineage.nodeGraph?.connections ?? []) { - connections.set(key === joinSourceLineage.mainNode ? joinNodeKey : key, nodeConnections); + const newKey = key === joinSourceLineage.mainNode ? joinNodeKey : key; + const existingConnections = connections.get(newKey) || { parents: [], children: [] }; + connections.set(newKey, { + parents: [...(existingConnections.parents ?? []), ...(nodeConnections.parents || [])], + children: [...(existingConnections.children ?? []), ...(nodeConnections.children || [])] + }); } for (const [key, info] of joinSourceLineage.nodeGraph?.infoMap ?? []) { diff --git a/frontend/src/lib/components/BreadcrumbNav.svelte b/frontend/src/lib/components/BreadcrumbNav.svelte index cdba46fec7..fb26e9dded 100644 --- a/frontend/src/lib/components/BreadcrumbNav.svelte +++ b/frontend/src/lib/components/BreadcrumbNav.svelte @@ -1,35 +1,44 @@ - - - - Zipline AI - - {#each breadcrumbs as crumb, index} - - - - - {#if index === breadcrumbs.length - 1} - {crumb} - {:else} - - {crumb} - - {/if} - - {/each} - + + + {#if item.href} + + {item.label} + + {:else} + + {item.label} + + {/if} + + + diff --git a/frontend/src/lib/components/CellDivider.svelte b/frontend/src/lib/components/CellDivider.svelte deleted file mode 100644 index 063d36d320..0000000000 --- a/frontend/src/lib/components/CellDivider.svelte +++ /dev/null @@ -1,3 +0,0 @@ -
diff --git a/frontend/src/lib/components/ChartControls.svelte b/frontend/src/lib/components/ChartControls.svelte deleted file mode 100644 index 93599c117b..0000000000 --- a/frontend/src/lib/components/ChartControls.svelte +++ /dev/null @@ -1,47 +0,0 @@ - - -
-
- {#if isZoomed} - - {/if} - - {#if context === 'drift'} - - {/if} - - {#if showSort} - - {/if} -
-
diff --git a/frontend/src/lib/components/CollapsibleSection.svelte b/frontend/src/lib/components/CollapsibleSection.svelte index 7e2e4cc6cd..c42e1062d8 100644 --- a/frontend/src/lib/components/CollapsibleSection.svelte +++ b/frontend/src/lib/components/CollapsibleSection.svelte @@ -1,67 +1,39 @@ - -
- - -

{title}

-
-
- {#if headerContentLeft} - {@render headerContentLeft()} - {/if} -
- {#if headerContentRight} - {@render headerContentRight()} - {/if} -
-
- - {@render collapsibleContent()} - -
+button]:gap-3', + icon: 'text-sm order-first data-[open=true]:rotate-0 data-[open=false]:-rotate-90', + content: 'mt-2' + }} + class={className} +> + {#snippet trigger()} + {#if trigger} + {@render trigger()} + {:else} + {label} + {/if} + {/snippet} + + {@render children()} + diff --git a/frontend/src/lib/components/ComingSoonPage.svelte b/frontend/src/lib/components/ComingSoonPage.svelte deleted file mode 100644 index 309726fa76..0000000000 --- a/frontend/src/lib/components/ComingSoonPage.svelte +++ /dev/null @@ -1,4 +0,0 @@ -
-

Coming Soon

-

We're working on something exciting. Stay tuned!

-
diff --git a/frontend/src/lib/components/DateRangeField.svelte b/frontend/src/lib/components/DateRangeField.svelte new file mode 100644 index 0000000000..53fae8825a --- /dev/null +++ b/frontend/src/lib/components/DateRangeField.svelte @@ -0,0 +1,60 @@ + + + []} + quickPresets={[ + { + label: 'Last 24 hours', + value: { from: subHours(now, 24), to: now, periodType: PeriodType.Day } + }, + { + label: 'Last 7 days', + value: { from: subDays(now, 7), to: now, periodType: PeriodType.Day } + }, + { + label: 'Last 30 days', + value: { + from: subDays(now, 30), + to: now, + periodType: PeriodType.Day + } + }, + { + label: 'Last 6 months', + value: { + from: subMonths(now, 6), + to: now, + periodType: PeriodType.Day + } + } + ]} + dense + classes={{ + field: { + container: 'bg-transparent' + } + }} + {...restProps} +> + {#snippet prepend()} + + {/snippet} + diff --git a/frontend/src/lib/components/DateRangeSelector.svelte b/frontend/src/lib/components/DateRangeSelector.svelte deleted file mode 100644 index cf27e14ed4..0000000000 --- a/frontend/src/lib/components/DateRangeSelector.svelte +++ /dev/null @@ -1,188 +0,0 @@ - - - - -
- - - - - - {#each getNonCustomDateRanges() as range} - - {/each} - - - - - - - - - - - -
-
- - {#if fallbackDateRange} - - {#if calendarDateRange?.start && calendarDateRange?.end} - No data for - {df.format(calendarDateRange.start.toDate(getLocalTimeZone()))} - {df.format( - calendarDateRange.end.toDate(getLocalTimeZone()) - )}. Showing fallback data - {/if} - - {/if} -
diff --git a/frontend/src/lib/components/DriftMetricToggle.svelte b/frontend/src/lib/components/DriftMetricToggle.svelte index d70f2e41cb..1733d86359 100644 --- a/frontend/src/lib/components/DriftMetricToggle.svelte +++ b/frontend/src/lib/components/DriftMetricToggle.svelte @@ -1,8 +1,8 @@ -
+ (params.metric = e.detail.value)} + variant="default" + gap="px" + classes={{ + options: 'h-8', + label: + 'bg-secondary text-secondary-foreground [&.selected]:text-primary-foreground hover:text-secondary-foreground hover:bg-secondary/80', + indicator: 'bg-primary' + }} +> {#each metrics as value} - + {/each} -
+ diff --git a/frontend/src/lib/components/EntityTable.svelte b/frontend/src/lib/components/EntityTable.svelte deleted file mode 100644 index 26b551513f..0000000000 --- a/frontend/src/lib/components/EntityTable.svelte +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - Name - Team - Online - Production - - - - {#if items.length === 0} - - - No {entityConfig.label.toLowerCase()} found. - - - {:else} - {#each items as item} - - - - - {item.metaData?.name} - - - {item.metaData?.team ?? ''} - - - - - - - - {/each} - {/if} - -
diff --git a/frontend/src/lib/components/ExpandableCell.svelte b/frontend/src/lib/components/ExpandableCell.svelte deleted file mode 100644 index 3cab223b31..0000000000 --- a/frontend/src/lib/components/ExpandableCell.svelte +++ /dev/null @@ -1,89 +0,0 @@ - - -
- - - - - - Open - - - - {/if} - -
diff --git a/frontend/src/lib/components/InfoTooltip.svelte b/frontend/src/lib/components/InfoTooltip.svelte deleted file mode 100644 index f30746e11c..0000000000 --- a/frontend/src/lib/components/InfoTooltip.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - -

- {text} -

-
-
diff --git a/frontend/src/lib/components/JobOverviewChart.svelte b/frontend/src/lib/components/JobOverviewChart.svelte deleted file mode 100644 index dd20a67c44..0000000000 --- a/frontend/src/lib/components/JobOverviewChart.svelte +++ /dev/null @@ -1,34 +0,0 @@ - - -
- {#if job} -
- {#each job.jobTracker?.tasksByDate ?? [] as task} - {@const daysInRange = getDaysInRange( - task?.dateRange?.startDate ?? '', - task?.dateRange?.endDate ?? '', - dates - )} - {@const widthPercentage = (daysInRange / dates.length) * 100} -
- -
- {/each} -
- {:else} - No data available - {/if} -
diff --git a/frontend/src/lib/components/LogsDownloadButton.svelte b/frontend/src/lib/components/LogsDownloadButton.svelte deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frontend/src/lib/components/MetadataTable/MetadataTable.svelte b/frontend/src/lib/components/MetadataTable/MetadataTable.svelte deleted file mode 100644 index a94ef0b397..0000000000 --- a/frontend/src/lib/components/MetadataTable/MetadataTable.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - -
- - - {@render children()} - -
-
diff --git a/frontend/src/lib/components/MetadataTable/MetadataTableRow.svelte b/frontend/src/lib/components/MetadataTable/MetadataTableRow.svelte deleted file mode 100644 index ad90b5cd46..0000000000 --- a/frontend/src/lib/components/MetadataTable/MetadataTableRow.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - - - {label} - {#if value} -
- {value} -
- {/if} - {#if children} - {@render children()} - {/if} -
-
diff --git a/frontend/src/lib/components/ModeSwitcher.svelte b/frontend/src/lib/components/ModeSwitcher.svelte deleted file mode 100644 index 3a565bd189..0000000000 --- a/frontend/src/lib/components/ModeSwitcher.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - setMode('light')}>Light - setMode('dark')}>Dark - resetMode()}>System - - diff --git a/frontend/src/lib/components/NavigationBar.svelte b/frontend/src/lib/components/NavigationBar.svelte deleted file mode 100644 index 32bd5d95a5..0000000000 --- a/frontend/src/lib/components/NavigationBar.svelte +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - - - No results found - {#if searchResults.length === 0} - {#if input === ''} - - - - Show only models with alerts - - - Filter by... - - - Sort by... - - - window.open('https://docs.chronon.ai', '_blank')}> - - Chronon docs - - {/if} - {:else} - - {#each searchResults as entity} - {@const config = getEntityConfig(entity)} - - - handleSelect(`${config.path}/${encodeURIComponent(entity.metaData?.name || '')}`)} - > - {@const IconEntity = config.icon} - - {entity.metaData?.name} - - {/each} - - {/if} - - diff --git a/frontend/src/lib/components/NavigationMenu.svelte b/frontend/src/lib/components/NavigationMenu.svelte new file mode 100644 index 0000000000..9c18b7b962 --- /dev/null +++ b/frontend/src/lib/components/NavigationMenu.svelte @@ -0,0 +1,286 @@ + + + + + + []} + inlineOptions + search={async (text) => { + const options = await search(text); + return options as unknown as MenuOption[]; // TODO: Workaround until `icon` accepts component + }} + on:change={(e) => { + open = false; + if (e.detail.value?.startsWith('http')) { + window.open(e.detail.value, '_blank'); + } else { + goto(e.detail.value ?? '/'); + } + }} + classes={{ + root: 'w-[500px] max-w-[95vw] py-1 border rounded-md', + field: { + container: 'border-none hover:shadow-none group-focus-within:shadow-none' + }, + options: 'overflow-auto max-h-[min(90dvh,380px)]', + group: 'capitalize' + }} + fieldActions={(node) => [autoFocus(node)]} + > + + + + + + &]:bg-surface-content/5')} + scrollIntoView={{ + condition: index === highlightIndex, + onlyIfNeeded: true + }} + > + {@const config = option.config} + {@const Icon = option.icon} + +
+ {#if config} + {@const [namespace, ...nameParts] = option.label?.split('.') ?? []} +
+ +
+
+
+ {namespace} +
+
+ {nameParts.join('.')} +
+
+ {:else} + +
+ {option.label} +
+ {/if} +
+
+
+
+
+ + { + if ((e.metaKey || e.ctrlKey) && e.key === 'k') { + e.preventDefault(); + open = true; + } + }} +/> diff --git a/frontend/src/lib/components/NavigationSlider.svelte b/frontend/src/lib/components/NavigationSlider.svelte index d353050d5c..469f801dec 100644 --- a/frontend/src/lib/components/NavigationSlider.svelte +++ b/frontend/src/lib/components/NavigationSlider.svelte @@ -1,10 +1,10 @@ -{#if $navigating} +{#if navigating.to}
+ import { cls } from '@layerstack/tailwind'; + import TrueFalseBadge from './TrueFalseBadge.svelte'; + import JobStatusRect from '$src/routes/[conf]/[name]/offline/data/JobStatusRect.svelte'; + import { Status } from '../types/codegen'; + + let { + items, + align = 'left' + }: { + items: Array< + | { + label?: string; + value: string | number | boolean | object | null | undefined; + type?: 'auto' | 'boolean' | 'object' | 'string' | 'status'; + } + | null + | undefined + >; + align?: 'left' | 'right'; + } = $props(); + + +
+ {#each items.filter((x) => !!x) as { label, value, type = 'auto' }} +
+ {#if label} + + {label} + + {/if} + + + {#if typeof value === 'boolean' || type === 'boolean'} + + {:else if type === 'status'} + + {:else if typeof value === 'object' || type === 'object'} + {#each Object.entries(value ?? {}) as [key, v]} +
+ {key}: + {v} +
+ {/each} + {:else} + {value} + {/if} +
+
+ {/each} +
diff --git a/frontend/src/lib/components/SortButton.svelte b/frontend/src/lib/components/SortButton.svelte index 5398eac011..61f03d0302 100644 --- a/frontend/src/lib/components/SortButton.svelte +++ b/frontend/src/lib/components/SortButton.svelte @@ -5,7 +5,7 @@ import IconArrowsUpDown from '~icons/heroicons/arrows-up-down-16-solid'; - import { getSortParamKey, type SortContext, getSortParamsConfig } from '$lib/util/sort'; + import { getSortParamKey, type SortContext, getSortParamsConfig } from '$lib/params/sort'; let { context = 'drift', diff --git a/frontend/src/lib/components/StatusCell.svelte b/frontend/src/lib/components/StatusCell.svelte deleted file mode 100644 index e7e4e578f7..0000000000 --- a/frontend/src/lib/components/StatusCell.svelte +++ /dev/null @@ -1,42 +0,0 @@ - - - - -
- -
-
- -
-

- {status ? statusText[status] : ''}{format(endDate, PeriodType.Day, { variant: 'long' })} -

-
- -
-
-
-
diff --git a/frontend/src/lib/components/TrueFalseBadge.svelte b/frontend/src/lib/components/TrueFalseBadge.svelte index f755fccd99..e96cefb45f 100644 --- a/frontend/src/lib/components/TrueFalseBadge.svelte +++ b/frontend/src/lib/components/TrueFalseBadge.svelte @@ -1,15 +1,18 @@ -{#if isTrue} - True -{:else} - False -{/if} + + {value ? 'True' : 'False'} + diff --git a/frontend/src/lib/components/charts/CustomLineChart.svelte b/frontend/src/lib/components/charts/CustomLineChart.svelte new file mode 100644 index 0000000000..6e6078267a --- /dev/null +++ b/frontend/src/lib/components/charts/CustomLineChart.svelte @@ -0,0 +1,329 @@ + + + 'flex items-center gap-2' + } + }} + brush={{ onBrushEnd }} + renderContext="canvas" + {...restProps} + props={{ + ...lineChartProps.props, + yAxis: { + ...lineChartProps.props.yAxis, + format: format === 'percent' ? 'percentRound' : format + }, + tooltip: { + context: { + hideDelay: 150, + locked: lockedTooltip + } + } + }} + onPointClick={onPointClick as any} +> + {#snippet belowContext(snippetProps)} + + + {@render annotationsSnippet(snippetProps, 'below')} + + + {#if restProps.belowContext} + {@render restProps.belowContext(snippetProps)} + {/if} + {/snippet} + + {#snippet aboveContext(snippetProps)} + {@const { context } = snippetProps} + + + + {@render annotationsSnippet(snippetProps, 'above')} + + {#each thresholds as threshold} + + {#snippet children({ pattern })} + + {/snippet} + + + + + + + {/each} + + + {#if restProps.aboveContext} + {@render restProps.aboveContext(snippetProps)} + {/if} + {/snippet} + + {#snippet tooltip({ context, visibleSeries, highlightKey, setHighlightKey })} + {@const data = context.tooltip.data} + + + + {data ? formatUtil(context.x(data), PeriodType.DayTime) : ''} + + + + {#each visibleSeries as s} + {@const seriesTooltipData = s.data ? findRelatedData(s.data, data, context.x) : data} + {@const valueAccessor = accessor(s.value ?? (s.data ? context.y : s.key))} + {@const value = seriesTooltipData ? valueAccessor(seriesTooltipData) : null} + + + {/each} + + +
+ to lock tooltip +
+
+ {/snippet} +
+ +{#snippet annotationsSnippet( + snippetProps: Parameters>[0], + layer: 'above' | 'below' +)} + {@const { context, highlightKey, visibleSeries } = snippetProps} + + {@const visibleAnnotations = annotations.filter( + (a) => + (a.layer === layer || (layer === 'above' && a.layer == null)) && + (highlightKey == null || a.seriesKey == null || a.seriesKey === highlightKey) && + visibleSeries.some((s) => a.seriesKey == null || a.seriesKey === s.key) + )} + + {#each visibleAnnotations as annotation} + {#if annotation.type === 'range'} + {#if annotation.gradient} + + {#snippet children({ gradient })} + + {/snippet} + + {/if} + + {#if annotation.pattern} + + {#snippet children({ pattern })} + + {/snippet} + + {/if} + {:else if annotation.type === 'point'} + { + e.stopPropagation(); + // context.tooltip.show(e, { anomaly }); + }} + onpointerleave={() => { + // context.tooltip.hide(); + }} + > + + {#if annotation.label} + + {/if} + + {:else if annotation.type === 'line'} + + {/if} + {/each} +{/snippet} diff --git a/frontend/src/lib/components/charts/FeaturesLineChart.svelte b/frontend/src/lib/components/charts/FeaturesLineChart.svelte deleted file mode 100644 index 51a484b51a..0000000000 --- a/frontend/src/lib/components/charts/FeaturesLineChart.svelte +++ /dev/null @@ -1,122 +0,0 @@ - - - transformSeries(d, columns))} - padding={{ top: 4, left: 36, bottom: 48 }} - legend={{ - placement: 'bottom-left', - classes: { - root: 'right-0 overflow-auto scrollbar-none', - swatch: 'h-2 w-2 mt-[4px] mr-1 rounded-full', - label: 'text-sm' - // item: () => 'flex items-center gap-2' - } - }} - brush={{ onbrushend }} - renderContext="canvas" - {...lineChartProps} - {...restProps} - {...merge( - {}, - lineChartProps, - { - props: { - canvas: { - class: 'cursor-crosshair' - } - }, - tooltip: { - hideDelay: 150 - } - }, - restProps - )} -> - - {#if markPoint} - {@const x = xScale(markPoint.date)} - {@const y = yScale(markPoint.value)} - - - {/if} - - - - - - {formatDate(x(data))} - - - - {#each visibleSeries as s} - {@const seriesTooltipData = s.data ? findRelatedData(s.data, data, x) : data} - {@const valueAccessor = accessor(s.value ?? (s.data ? (y as unknown) : s.key))} - {@const value = seriesTooltipData ? valueAccessor(seriesTooltipData) : null} - - - {/each} - - -
- {isMacOS() ? '⌘' : 'Ctrl'} to lock tooltip -
-
-
-
diff --git a/frontend/src/lib/components/charts/HistogramLineChart.svelte b/frontend/src/lib/components/charts/HistogramLineChart.svelte new file mode 100644 index 0000000000..5f19d0deed --- /dev/null +++ b/frontend/src/lib/components/charts/HistogramLineChart.svelte @@ -0,0 +1,52 @@ + + + diff --git a/frontend/src/lib/components/charts/PercentileLineChart.svelte b/frontend/src/lib/components/charts/PercentileLineChart.svelte index 5f00a16d2d..b9cf174a7c 100644 --- a/frontend/src/lib/components/charts/PercentileLineChart.svelte +++ b/frontend/src/lib/components/charts/PercentileLineChart.svelte @@ -1,65 +1,49 @@ - + diff --git a/frontend/src/lib/components/charts/TransformControls.svelte b/frontend/src/lib/components/charts/TransformControls.svelte index e2a0b2ce5b..416229b4da 100644 --- a/frontend/src/lib/components/charts/TransformControls.svelte +++ b/frontend/src/lib/components/charts/TransformControls.svelte @@ -1,13 +1,13 @@ @@ -65,45 +65,26 @@ }} > {#if show.includes('zoomIn')} - - - - - Zoom in + + {/if} {#if show.includes('zoomOut')} - - - - - Zoom out + + {/if} {#if show.includes('reset')} - - - - - Reset + + {/if}
diff --git a/frontend/src/lib/components/charts/common.ts b/frontend/src/lib/components/charts/common.ts index d7e089cfb5..4c567d99dd 100644 --- a/frontend/src/lib/components/charts/common.ts +++ b/frontend/src/lib/components/charts/common.ts @@ -22,6 +22,9 @@ export const colors = [ '#BF50D3', '#CB5587' ]; +export const successColor = colors[1]; +export const dangerColor = colors[6]; + export const textClass = 'text-xs text-neutral-700'; export const svgTextClass = 'text-xs fill-neutral-700'; @@ -44,7 +47,7 @@ export const tooltipProps = { root: { variant: 'none', class: 'text-sm/4 bg-neutral-200 border border-neutral-400 rounded-md shadow-lg', - motion: false + motion: { type: 'none' } }, header: { class: 'text-neutral-700 bg-neutral-300 px-3 py-1' @@ -57,11 +60,12 @@ export const tooltipProps = { classes: { label: 'text-neutral-800' } - } + }, + hideTotal: true } satisfies NonNullable['props']>['tooltip']; export const highlightProps = { - motion: false, + motion: { type: 'none' }, points: { r: 8, strokeWidth: 4 diff --git a/frontend/src/lib/components/charts/utils.ts b/frontend/src/lib/components/charts/utils.ts new file mode 100644 index 0000000000..28cb22b20d --- /dev/null +++ b/frontend/src/lib/components/charts/utils.ts @@ -0,0 +1,40 @@ +import { scaleOrdinal } from 'd3'; + +import type { ITileDriftSeriesArgs, ITileSummarySeriesArgs } from '$src/lib/types/codegen'; +import { NULL_VALUE } from '$lib/constants/common'; +import { colors } from './common'; + +/** + * Transform the tile series data into a LayerChart series + */ +export function transformSeries( + data: T[], + values: (s: T) => number[] +) { + const columns = getColumns(data); + const colorScale = scaleOrdinal().domain(columns).range(colors); + + return data.map((d) => { + const timestamps = d.timestamps ?? []; + const column = d.key?.column ?? 'Unknown'; + const _values = values(d); + + return { + key: column, + data: timestamps.map((ts, i) => { + return { + date: new Date(ts as number), + value: _values[i] === NULL_VALUE ? null : _values[i] + }; + }), + color: colorScale(column) + }; + }); +} + +/** + * Get the unique columns from the data + */ +function getColumns(data: ITileSummarySeriesArgs[] | ITileDriftSeriesArgs[]) { + return [...new Set(data.map((d) => d.key?.column ?? 'Unknown'))]; +} diff --git a/frontend/src/lib/components/ui/alert/alert-description.svelte b/frontend/src/lib/components/ui/alert/alert-description.svelte deleted file mode 100644 index 07ce68b347..0000000000 --- a/frontend/src/lib/components/ui/alert/alert-description.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - -
- -
diff --git a/frontend/src/lib/components/ui/alert/alert-title.svelte b/frontend/src/lib/components/ui/alert/alert-title.svelte deleted file mode 100644 index 2bf3c0aff1..0000000000 --- a/frontend/src/lib/components/ui/alert/alert-title.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/alert/alert.svelte b/frontend/src/lib/components/ui/alert/alert.svelte deleted file mode 100644 index e33ae4769f..0000000000 --- a/frontend/src/lib/components/ui/alert/alert.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/frontend/src/lib/components/ui/alert/index.ts b/frontend/src/lib/components/ui/alert/index.ts deleted file mode 100644 index c26e3ebef3..0000000000 --- a/frontend/src/lib/components/ui/alert/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { type VariantProps, tv } from 'tailwind-variants'; - -import Root from './alert.svelte'; -import Description from './alert-description.svelte'; -import Title from './alert-title.svelte'; - -export const alertVariants = tv({ - base: '[&>svg]:text-foreground relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg~*]:pl-7', - variants: { - variant: { - default: 'bg-background text-foreground', - destructive: - 'border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive', - warning: 'border-warning-800 text-warning-800 [&>svg]:text-warning-800' - } - }, - defaultVariants: { - variant: 'default' - } -}); - -export type Variant = VariantProps['variant']; -export type HeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'; - -export { - Root, - Description, - Title, - // - Root as Alert, - Description as AlertDescription, - Title as AlertTitle -}; diff --git a/frontend/src/lib/components/ui/avatar/avatar-fallback.svelte b/frontend/src/lib/components/ui/avatar/avatar-fallback.svelte deleted file mode 100644 index b9ca14f59c..0000000000 --- a/frontend/src/lib/components/ui/avatar/avatar-fallback.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/avatar/avatar-image.svelte b/frontend/src/lib/components/ui/avatar/avatar-image.svelte deleted file mode 100644 index d22ff904b2..0000000000 --- a/frontend/src/lib/components/ui/avatar/avatar-image.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/frontend/src/lib/components/ui/avatar/avatar.svelte b/frontend/src/lib/components/ui/avatar/avatar.svelte deleted file mode 100644 index 94ea630880..0000000000 --- a/frontend/src/lib/components/ui/avatar/avatar.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/avatar/index.ts b/frontend/src/lib/components/ui/avatar/index.ts deleted file mode 100644 index 9585f8ad6b..0000000000 --- a/frontend/src/lib/components/ui/avatar/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import Root from './avatar.svelte'; -import Image from './avatar-image.svelte'; -import Fallback from './avatar-fallback.svelte'; - -export { - Root, - Image, - Fallback, - // - Root as Avatar, - Image as AvatarImage, - Fallback as AvatarFallback -}; diff --git a/frontend/src/lib/components/ui/badge/badge.svelte b/frontend/src/lib/components/ui/badge/badge.svelte deleted file mode 100644 index e7ea40765f..0000000000 --- a/frontend/src/lib/components/ui/badge/badge.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/badge/index.ts b/frontend/src/lib/components/ui/badge/index.ts deleted file mode 100644 index 410478542c..0000000000 --- a/frontend/src/lib/components/ui/badge/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { type VariantProps, tv } from 'tailwind-variants'; - -export { default as Badge } from './badge.svelte'; -export const badgeVariants = tv({ - base: 'focus:ring-ring inline-flex select-none items-center rounded-md border border-neutral-500 px-2 py-0.5 text-xs transition-colors focus:outline-hidden focus:ring-2 focus:ring-offset-2', - variants: { - variant: { - default: - 'bg-primary text-primary-foreground hover:bg-primary/80 border-transparent shadow-sm', - secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80 border-transparent', - destructive: - 'bg-destructive text-destructive-foreground hover:bg-destructive/80 border-transparent shadow-sm', - outline: 'text-foreground', - key: '', - 'key-bg': 'border-transparent bg-neutral-400', - success: 'bg-success-50 text-success-500 border-transparent' // todo use our style guide when it is created - } - }, - compoundVariants: [ - { - variant: ['key', 'key-bg'], - class: 'text-foreground p-0 h-[18px] w-[18px] justify-center rounded-sm' - } - ], - defaultVariants: { - variant: 'default' - } -}); - -export type Variant = VariantProps['variant']; diff --git a/frontend/src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte b/frontend/src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte deleted file mode 100644 index 0b59f9dc8f..0000000000 --- a/frontend/src/lib/components/ui/breadcrumb/breadcrumb-ellipsis.svelte +++ /dev/null @@ -1,24 +0,0 @@ - - - diff --git a/frontend/src/lib/components/ui/breadcrumb/breadcrumb-item.svelte b/frontend/src/lib/components/ui/breadcrumb/breadcrumb-item.svelte deleted file mode 100644 index 87cb0f895d..0000000000 --- a/frontend/src/lib/components/ui/breadcrumb/breadcrumb-item.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -
  • - -
  • diff --git a/frontend/src/lib/components/ui/breadcrumb/breadcrumb-link.svelte b/frontend/src/lib/components/ui/breadcrumb/breadcrumb-link.svelte deleted file mode 100644 index cf4fd3c8d2..0000000000 --- a/frontend/src/lib/components/ui/breadcrumb/breadcrumb-link.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - -{#if asChild} - -{:else} - - - -{/if} diff --git a/frontend/src/lib/components/ui/breadcrumb/breadcrumb-list.svelte b/frontend/src/lib/components/ui/breadcrumb/breadcrumb-list.svelte deleted file mode 100644 index be51a764a0..0000000000 --- a/frontend/src/lib/components/ui/breadcrumb/breadcrumb-list.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
      - -
    diff --git a/frontend/src/lib/components/ui/breadcrumb/breadcrumb-page.svelte b/frontend/src/lib/components/ui/breadcrumb/breadcrumb-page.svelte deleted file mode 100644 index 88b9fa239c..0000000000 --- a/frontend/src/lib/components/ui/breadcrumb/breadcrumb-page.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte b/frontend/src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte deleted file mode 100644 index 597b8712cb..0000000000 --- a/frontend/src/lib/components/ui/breadcrumb/breadcrumb-separator.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - - diff --git a/frontend/src/lib/components/ui/breadcrumb/breadcrumb.svelte b/frontend/src/lib/components/ui/breadcrumb/breadcrumb.svelte deleted file mode 100644 index aa2803ebbf..0000000000 --- a/frontend/src/lib/components/ui/breadcrumb/breadcrumb.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/frontend/src/lib/components/ui/breadcrumb/index.ts b/frontend/src/lib/components/ui/breadcrumb/index.ts deleted file mode 100644 index 773fd604b7..0000000000 --- a/frontend/src/lib/components/ui/breadcrumb/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import Root from './breadcrumb.svelte'; -import Ellipsis from './breadcrumb-ellipsis.svelte'; -import Item from './breadcrumb-item.svelte'; -import Separator from './breadcrumb-separator.svelte'; -import Link from './breadcrumb-link.svelte'; -import List from './breadcrumb-list.svelte'; -import Page from './breadcrumb-page.svelte'; - -export { - Root, - Ellipsis, - Item, - Separator, - Link, - List, - Page, - // - Root as Breadcrumb, - Ellipsis as BreadcrumbEllipsis, - Item as BreadcrumbItem, - Separator as BreadcrumbSeparator, - Link as BreadcrumbLink, - List as BreadcrumbList, - Page as BreadcrumbPage -}; diff --git a/frontend/src/lib/components/ui/calendar/calendar-cell.svelte b/frontend/src/lib/components/ui/calendar/calendar-cell.svelte deleted file mode 100644 index f513b35a82..0000000000 --- a/frontend/src/lib/components/ui/calendar/calendar-cell.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/calendar/calendar-day.svelte b/frontend/src/lib/components/ui/calendar/calendar-day.svelte deleted file mode 100644 index 698ebefc6c..0000000000 --- a/frontend/src/lib/components/ui/calendar/calendar-day.svelte +++ /dev/null @@ -1,43 +0,0 @@ - - - - - {date.day} - - diff --git a/frontend/src/lib/components/ui/calendar/calendar-grid-body.svelte b/frontend/src/lib/components/ui/calendar/calendar-grid-body.svelte deleted file mode 100644 index f48ad6be62..0000000000 --- a/frontend/src/lib/components/ui/calendar/calendar-grid-body.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/calendar/calendar-grid-head.svelte b/frontend/src/lib/components/ui/calendar/calendar-grid-head.svelte deleted file mode 100644 index 297bce5dcb..0000000000 --- a/frontend/src/lib/components/ui/calendar/calendar-grid-head.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/calendar/calendar-grid-row.svelte b/frontend/src/lib/components/ui/calendar/calendar-grid-row.svelte deleted file mode 100644 index 85a8368b90..0000000000 --- a/frontend/src/lib/components/ui/calendar/calendar-grid-row.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/calendar/calendar-grid.svelte b/frontend/src/lib/components/ui/calendar/calendar-grid.svelte deleted file mode 100644 index 6e00523e84..0000000000 --- a/frontend/src/lib/components/ui/calendar/calendar-grid.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/calendar/calendar-head-cell.svelte b/frontend/src/lib/components/ui/calendar/calendar-head-cell.svelte deleted file mode 100644 index fddba32da4..0000000000 --- a/frontend/src/lib/components/ui/calendar/calendar-head-cell.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/calendar/calendar-header.svelte b/frontend/src/lib/components/ui/calendar/calendar-header.svelte deleted file mode 100644 index 3b73343fd0..0000000000 --- a/frontend/src/lib/components/ui/calendar/calendar-header.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/calendar/calendar-heading.svelte b/frontend/src/lib/components/ui/calendar/calendar-heading.svelte deleted file mode 100644 index 9b0e9dd2e1..0000000000 --- a/frontend/src/lib/components/ui/calendar/calendar-heading.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - - - {headingValue} - - diff --git a/frontend/src/lib/components/ui/calendar/calendar-months.svelte b/frontend/src/lib/components/ui/calendar/calendar-months.svelte deleted file mode 100644 index 66fac5244a..0000000000 --- a/frontend/src/lib/components/ui/calendar/calendar-months.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -
    - -
    diff --git a/frontend/src/lib/components/ui/calendar/calendar-next-button.svelte b/frontend/src/lib/components/ui/calendar/calendar-next-button.svelte deleted file mode 100644 index 0c318de878..0000000000 --- a/frontend/src/lib/components/ui/calendar/calendar-next-button.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - diff --git a/frontend/src/lib/components/ui/calendar/calendar-prev-button.svelte b/frontend/src/lib/components/ui/calendar/calendar-prev-button.svelte deleted file mode 100644 index 1d3bc40a27..0000000000 --- a/frontend/src/lib/components/ui/calendar/calendar-prev-button.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - diff --git a/frontend/src/lib/components/ui/calendar/calendar.svelte b/frontend/src/lib/components/ui/calendar/calendar.svelte deleted file mode 100644 index ecdc89a95e..0000000000 --- a/frontend/src/lib/components/ui/calendar/calendar.svelte +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - {#each months as month} - - - - {#each weekdays as weekday} - - {weekday.slice(0, 2)} - - {/each} - - - - {#each month.weeks as weekDates} - - {#each weekDates as date} - - - - {/each} - - {/each} - - - {/each} - - diff --git a/frontend/src/lib/components/ui/calendar/index.ts b/frontend/src/lib/components/ui/calendar/index.ts deleted file mode 100644 index 5d60fa56eb..0000000000 --- a/frontend/src/lib/components/ui/calendar/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import Root from './calendar.svelte'; -import Cell from './calendar-cell.svelte'; -import Day from './calendar-day.svelte'; -import Grid from './calendar-grid.svelte'; -import Header from './calendar-header.svelte'; -import Months from './calendar-months.svelte'; -import GridRow from './calendar-grid-row.svelte'; -import Heading from './calendar-heading.svelte'; -import GridBody from './calendar-grid-body.svelte'; -import GridHead from './calendar-grid-head.svelte'; -import HeadCell from './calendar-head-cell.svelte'; -import NextButton from './calendar-next-button.svelte'; -import PrevButton from './calendar-prev-button.svelte'; - -export { - Day, - Cell, - Grid, - Header, - Months, - GridRow, - Heading, - GridBody, - GridHead, - HeadCell, - NextButton, - PrevButton, - // - Root as Calendar -}; diff --git a/frontend/src/lib/components/ui/checkbox/checkbox.svelte b/frontend/src/lib/components/ui/checkbox/checkbox.svelte deleted file mode 100644 index 7e668470dc..0000000000 --- a/frontend/src/lib/components/ui/checkbox/checkbox.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - - - {#if isIndeterminate} - - {:else} - - {/if} - - diff --git a/frontend/src/lib/components/ui/checkbox/index.ts b/frontend/src/lib/components/ui/checkbox/index.ts deleted file mode 100644 index 5c276719be..0000000000 --- a/frontend/src/lib/components/ui/checkbox/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -import Root from './checkbox.svelte'; -export { - Root, - // - Root as Checkbox -}; diff --git a/frontend/src/lib/components/ui/collapsible/collapsible-content.svelte b/frontend/src/lib/components/ui/collapsible/collapsible-content.svelte deleted file mode 100644 index 812ea5a423..0000000000 --- a/frontend/src/lib/components/ui/collapsible/collapsible-content.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/collapsible/index.ts b/frontend/src/lib/components/ui/collapsible/index.ts deleted file mode 100644 index ac7413ce59..0000000000 --- a/frontend/src/lib/components/ui/collapsible/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Collapsible as CollapsiblePrimitive } from 'bits-ui'; -import Content from './collapsible-content.svelte'; - -const Root = CollapsiblePrimitive.Root; -const Trigger = CollapsiblePrimitive.Trigger; - -export { - Root, - Content, - Trigger, - // - Root as Collapsible, - Content as CollapsibleContent, - Trigger as CollapsibleTrigger -}; diff --git a/frontend/src/lib/components/ui/command/command-dialog.svelte b/frontend/src/lib/components/ui/command/command-dialog.svelte deleted file mode 100644 index 1dea76e161..0000000000 --- a/frontend/src/lib/components/ui/command/command-dialog.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - diff --git a/frontend/src/lib/components/ui/command/command-empty.svelte b/frontend/src/lib/components/ui/command/command-empty.svelte deleted file mode 100644 index 54976fec20..0000000000 --- a/frontend/src/lib/components/ui/command/command-empty.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/command/command-group.svelte b/frontend/src/lib/components/ui/command/command-group.svelte deleted file mode 100644 index 0a0f3857fd..0000000000 --- a/frontend/src/lib/components/ui/command/command-group.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/command/command-input.svelte b/frontend/src/lib/components/ui/command/command-input.svelte deleted file mode 100644 index 3ccfe847e1..0000000000 --- a/frontend/src/lib/components/ui/command/command-input.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
    - - -
    diff --git a/frontend/src/lib/components/ui/command/command-item.svelte b/frontend/src/lib/components/ui/command/command-item.svelte deleted file mode 100644 index 2cb73be335..0000000000 --- a/frontend/src/lib/components/ui/command/command-item.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - -svg:first-of-type]:mr-2 bg-neutral-200 h-10 not-last:border-b', - 'data-disabled:cursor-default cursor-pointer', - className - )} - {...$$restProps} - let:action - let:attrs -> - - diff --git a/frontend/src/lib/components/ui/command/command-list.svelte b/frontend/src/lib/components/ui/command/command-list.svelte deleted file mode 100644 index 5e8b9159b1..0000000000 --- a/frontend/src/lib/components/ui/command/command-list.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/command/command-separator.svelte b/frontend/src/lib/components/ui/command/command-separator.svelte deleted file mode 100644 index 9307becc01..0000000000 --- a/frontend/src/lib/components/ui/command/command-separator.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/frontend/src/lib/components/ui/command/command-shortcut.svelte b/frontend/src/lib/components/ui/command/command-shortcut.svelte deleted file mode 100644 index 15b5236390..0000000000 --- a/frontend/src/lib/components/ui/command/command-shortcut.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/command/command.svelte b/frontend/src/lib/components/ui/command/command.svelte deleted file mode 100644 index 93737d8ef0..0000000000 --- a/frontend/src/lib/components/ui/command/command.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/command/index.ts b/frontend/src/lib/components/ui/command/index.ts deleted file mode 100644 index 03922d5dce..0000000000 --- a/frontend/src/lib/components/ui/command/index.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Command as CommandPrimitive } from 'cmdk-sv'; - -import Root from './command.svelte'; -import Dialog from './command-dialog.svelte'; -import Empty from './command-empty.svelte'; -import Group from './command-group.svelte'; -import Item from './command-item.svelte'; -import Input from './command-input.svelte'; -import List from './command-list.svelte'; -import Separator from './command-separator.svelte'; -import Shortcut from './command-shortcut.svelte'; - -const Loading = CommandPrimitive.Loading; - -export { - Root, - Dialog, - Empty, - Group, - Item, - Input, - List, - Separator, - Shortcut, - Loading, - // - Root as Command, - Dialog as CommandDialog, - Empty as CommandEmpty, - Group as CommandGroup, - Item as CommandItem, - Input as CommandInput, - List as CommandList, - Separator as CommandSeparator, - Shortcut as CommandShortcut, - Loading as CommandLoading -}; diff --git a/frontend/src/lib/components/ui/dialog/dialog-content.svelte b/frontend/src/lib/components/ui/dialog/dialog-content.svelte deleted file mode 100644 index 298cb118d0..0000000000 --- a/frontend/src/lib/components/ui/dialog/dialog-content.svelte +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - Close - - - diff --git a/frontend/src/lib/components/ui/dialog/dialog-description.svelte b/frontend/src/lib/components/ui/dialog/dialog-description.svelte deleted file mode 100644 index edbf9c1b29..0000000000 --- a/frontend/src/lib/components/ui/dialog/dialog-description.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/dialog/dialog-footer.svelte b/frontend/src/lib/components/ui/dialog/dialog-footer.svelte deleted file mode 100644 index 65190697d1..0000000000 --- a/frontend/src/lib/components/ui/dialog/dialog-footer.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -
    - -
    diff --git a/frontend/src/lib/components/ui/dialog/dialog-header.svelte b/frontend/src/lib/components/ui/dialog/dialog-header.svelte deleted file mode 100644 index dea88612b1..0000000000 --- a/frontend/src/lib/components/ui/dialog/dialog-header.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - -
    - -
    diff --git a/frontend/src/lib/components/ui/dialog/dialog-overlay.svelte b/frontend/src/lib/components/ui/dialog/dialog-overlay.svelte deleted file mode 100644 index 9256bd66ea..0000000000 --- a/frontend/src/lib/components/ui/dialog/dialog-overlay.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - diff --git a/frontend/src/lib/components/ui/dialog/dialog-portal.svelte b/frontend/src/lib/components/ui/dialog/dialog-portal.svelte deleted file mode 100644 index a0ba1f1574..0000000000 --- a/frontend/src/lib/components/ui/dialog/dialog-portal.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/dialog/dialog-title.svelte b/frontend/src/lib/components/ui/dialog/dialog-title.svelte deleted file mode 100644 index 7fbb499d4a..0000000000 --- a/frontend/src/lib/components/ui/dialog/dialog-title.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/dialog/index.ts b/frontend/src/lib/components/ui/dialog/index.ts deleted file mode 100644 index 6cbc5a7fd6..0000000000 --- a/frontend/src/lib/components/ui/dialog/index.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Dialog as DialogPrimitive } from 'bits-ui'; - -import Title from './dialog-title.svelte'; -import Portal from './dialog-portal.svelte'; -import Footer from './dialog-footer.svelte'; -import Header from './dialog-header.svelte'; -import Overlay from './dialog-overlay.svelte'; -import Content from './dialog-content.svelte'; -import Description from './dialog-description.svelte'; - -const Root = DialogPrimitive.Root; -const Trigger = DialogPrimitive.Trigger; -const Close = DialogPrimitive.Close; - -export { - Root, - Title, - Portal, - Footer, - Header, - Trigger, - Overlay, - Content, - Description, - Close, - // - Root as Dialog, - Title as DialogTitle, - Portal as DialogPortal, - Footer as DialogFooter, - Header as DialogHeader, - Trigger as DialogTrigger, - Overlay as DialogOverlay, - Content as DialogContent, - Description as DialogDescription, - Close as DialogClose -}; diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte deleted file mode 100644 index bbf11bdb48..0000000000 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte deleted file mode 100644 index b70c6b6f98..0000000000 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte deleted file mode 100644 index e887521f49..0000000000 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte deleted file mode 100644 index d22df325ec..0000000000 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte deleted file mode 100644 index dd67d44038..0000000000 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte deleted file mode 100644 index 84b6a9ea2b..0000000000 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte deleted file mode 100644 index b253054839..0000000000 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte deleted file mode 100644 index 9b2bdd5e27..0000000000 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte deleted file mode 100644 index 65c9b0b157..0000000000 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +++ /dev/null @@ -1,30 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte b/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte deleted file mode 100644 index 005e8b1813..0000000000 --- a/frontend/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - diff --git a/frontend/src/lib/components/ui/dropdown-menu/index.ts b/frontend/src/lib/components/ui/dropdown-menu/index.ts deleted file mode 100644 index 52c1f3c3d2..0000000000 --- a/frontend/src/lib/components/ui/dropdown-menu/index.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { DropdownMenu as DropdownMenuPrimitive } from 'bits-ui'; -import Item from './dropdown-menu-item.svelte'; -import Label from './dropdown-menu-label.svelte'; -import Content from './dropdown-menu-content.svelte'; -import Shortcut from './dropdown-menu-shortcut.svelte'; -import RadioItem from './dropdown-menu-radio-item.svelte'; -import Separator from './dropdown-menu-separator.svelte'; -import RadioGroup from './dropdown-menu-radio-group.svelte'; -import SubContent from './dropdown-menu-sub-content.svelte'; -import SubTrigger from './dropdown-menu-sub-trigger.svelte'; -import CheckboxItem from './dropdown-menu-checkbox-item.svelte'; - -const Sub = DropdownMenuPrimitive.Sub; -const Root = DropdownMenuPrimitive.Root; -const Trigger = DropdownMenuPrimitive.Trigger; -const Group = DropdownMenuPrimitive.Group; - -export { - Sub, - Root, - Item, - Label, - Group, - Trigger, - Content, - Shortcut, - Separator, - RadioItem, - SubContent, - SubTrigger, - RadioGroup, - CheckboxItem, - // - Root as DropdownMenu, - Sub as DropdownMenuSub, - Item as DropdownMenuItem, - Label as DropdownMenuLabel, - Group as DropdownMenuGroup, - Content as DropdownMenuContent, - Trigger as DropdownMenuTrigger, - Shortcut as DropdownMenuShortcut, - RadioItem as DropdownMenuRadioItem, - Separator as DropdownMenuSeparator, - RadioGroup as DropdownMenuRadioGroup, - SubContent as DropdownMenuSubContent, - SubTrigger as DropdownMenuSubTrigger, - CheckboxItem as DropdownMenuCheckboxItem -}; diff --git a/frontend/src/lib/components/ui/input/index.ts b/frontend/src/lib/components/ui/input/index.ts deleted file mode 100644 index 1c8bcb70c7..0000000000 --- a/frontend/src/lib/components/ui/input/index.ts +++ /dev/null @@ -1,29 +0,0 @@ -import Root from './input.svelte'; - -export type FormInputEvent = T & { - currentTarget: EventTarget & HTMLInputElement; -}; -export type InputEvents = { - blur: FormInputEvent; - change: FormInputEvent; - click: FormInputEvent; - focus: FormInputEvent; - focusin: FormInputEvent; - focusout: FormInputEvent; - keydown: FormInputEvent; - keypress: FormInputEvent; - keyup: FormInputEvent; - mouseover: FormInputEvent; - mouseenter: FormInputEvent; - mouseleave: FormInputEvent; - mousemove: FormInputEvent; - paste: FormInputEvent; - input: FormInputEvent; - wheel: FormInputEvent; -}; - -export { - Root, - // - Root as Input -}; diff --git a/frontend/src/lib/components/ui/input/input.svelte b/frontend/src/lib/components/ui/input/input.svelte deleted file mode 100644 index e80c66d412..0000000000 --- a/frontend/src/lib/components/ui/input/input.svelte +++ /dev/null @@ -1,42 +0,0 @@ - - - diff --git a/frontend/src/lib/components/ui/popover/index.ts b/frontend/src/lib/components/ui/popover/index.ts deleted file mode 100644 index 5db432eb03..0000000000 --- a/frontend/src/lib/components/ui/popover/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Popover as PopoverPrimitive } from 'bits-ui'; -import Content from './popover-content.svelte'; -const Root = PopoverPrimitive.Root; -const Trigger = PopoverPrimitive.Trigger; -const Close = PopoverPrimitive.Close; - -export { - Root, - Content, - Trigger, - Close, - // - Root as Popover, - Content as PopoverContent, - Trigger as PopoverTrigger, - Close as PopoverClose -}; diff --git a/frontend/src/lib/components/ui/popover/popover-content.svelte b/frontend/src/lib/components/ui/popover/popover-content.svelte deleted file mode 100644 index 905b832adf..0000000000 --- a/frontend/src/lib/components/ui/popover/popover-content.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/range-calendar/index.ts b/frontend/src/lib/components/ui/range-calendar/index.ts deleted file mode 100644 index 3f539fcf9d..0000000000 --- a/frontend/src/lib/components/ui/range-calendar/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import Root from './range-calendar.svelte'; -import Cell from './range-calendar-cell.svelte'; -import Day from './range-calendar-day.svelte'; -import Grid from './range-calendar-grid.svelte'; -import Header from './range-calendar-header.svelte'; -import Months from './range-calendar-months.svelte'; -import GridRow from './range-calendar-grid-row.svelte'; -import Heading from './range-calendar-heading.svelte'; -import GridBody from './range-calendar-grid-body.svelte'; -import GridHead from './range-calendar-grid-head.svelte'; -import HeadCell from './range-calendar-head-cell.svelte'; -import NextButton from './range-calendar-next-button.svelte'; -import PrevButton from './range-calendar-prev-button.svelte'; - -export { - Day, - Cell, - Grid, - Header, - Months, - GridRow, - Heading, - GridBody, - GridHead, - HeadCell, - NextButton, - PrevButton, - // - Root as RangeCalendar -}; diff --git a/frontend/src/lib/components/ui/range-calendar/range-calendar-cell.svelte b/frontend/src/lib/components/ui/range-calendar/range-calendar-cell.svelte deleted file mode 100644 index 839b318b55..0000000000 --- a/frontend/src/lib/components/ui/range-calendar/range-calendar-cell.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/range-calendar/range-calendar-day.svelte b/frontend/src/lib/components/ui/range-calendar/range-calendar-day.svelte deleted file mode 100644 index f1f94ba090..0000000000 --- a/frontend/src/lib/components/ui/range-calendar/range-calendar-day.svelte +++ /dev/null @@ -1,44 +0,0 @@ - - - - - {date.day} - - diff --git a/frontend/src/lib/components/ui/range-calendar/range-calendar-grid-body.svelte b/frontend/src/lib/components/ui/range-calendar/range-calendar-grid-body.svelte deleted file mode 100644 index 6147439a73..0000000000 --- a/frontend/src/lib/components/ui/range-calendar/range-calendar-grid-body.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/range-calendar/range-calendar-grid-head.svelte b/frontend/src/lib/components/ui/range-calendar/range-calendar-grid-head.svelte deleted file mode 100644 index 1165d61856..0000000000 --- a/frontend/src/lib/components/ui/range-calendar/range-calendar-grid-head.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/range-calendar/range-calendar-grid-row.svelte b/frontend/src/lib/components/ui/range-calendar/range-calendar-grid-row.svelte deleted file mode 100644 index d025825593..0000000000 --- a/frontend/src/lib/components/ui/range-calendar/range-calendar-grid-row.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/range-calendar/range-calendar-grid.svelte b/frontend/src/lib/components/ui/range-calendar/range-calendar-grid.svelte deleted file mode 100644 index 921b77c500..0000000000 --- a/frontend/src/lib/components/ui/range-calendar/range-calendar-grid.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/range-calendar/range-calendar-head-cell.svelte b/frontend/src/lib/components/ui/range-calendar/range-calendar-head-cell.svelte deleted file mode 100644 index 21545be064..0000000000 --- a/frontend/src/lib/components/ui/range-calendar/range-calendar-head-cell.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/range-calendar/range-calendar-header.svelte b/frontend/src/lib/components/ui/range-calendar/range-calendar-header.svelte deleted file mode 100644 index 2687bc8fc1..0000000000 --- a/frontend/src/lib/components/ui/range-calendar/range-calendar-header.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/range-calendar/range-calendar-heading.svelte b/frontend/src/lib/components/ui/range-calendar/range-calendar-heading.svelte deleted file mode 100644 index 588cd8cfdb..0000000000 --- a/frontend/src/lib/components/ui/range-calendar/range-calendar-heading.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - - - {headingValue} - - diff --git a/frontend/src/lib/components/ui/range-calendar/range-calendar-months.svelte b/frontend/src/lib/components/ui/range-calendar/range-calendar-months.svelte deleted file mode 100644 index 66fac5244a..0000000000 --- a/frontend/src/lib/components/ui/range-calendar/range-calendar-months.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -
    - -
    diff --git a/frontend/src/lib/components/ui/range-calendar/range-calendar-next-button.svelte b/frontend/src/lib/components/ui/range-calendar/range-calendar-next-button.svelte deleted file mode 100644 index 642ec7af83..0000000000 --- a/frontend/src/lib/components/ui/range-calendar/range-calendar-next-button.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - diff --git a/frontend/src/lib/components/ui/range-calendar/range-calendar-prev-button.svelte b/frontend/src/lib/components/ui/range-calendar/range-calendar-prev-button.svelte deleted file mode 100644 index abfe3750ee..0000000000 --- a/frontend/src/lib/components/ui/range-calendar/range-calendar-prev-button.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - diff --git a/frontend/src/lib/components/ui/range-calendar/range-calendar.svelte b/frontend/src/lib/components/ui/range-calendar/range-calendar.svelte deleted file mode 100644 index 81745feeeb..0000000000 --- a/frontend/src/lib/components/ui/range-calendar/range-calendar.svelte +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - {#each months as month} - - - - {#each weekdays as weekday} - - {weekday.slice(0, 2)} - - {/each} - - - - {#each month.weeks as weekDates} - - {#each weekDates as date} - - - - {/each} - - {/each} - - - {/each} - - diff --git a/frontend/src/lib/components/ui/select/index.ts b/frontend/src/lib/components/ui/select/index.ts deleted file mode 100644 index 5a9dd8784b..0000000000 --- a/frontend/src/lib/components/ui/select/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Select as SelectPrimitive } from 'bits-ui'; - -import Label from './select-label.svelte'; -import Item from './select-item.svelte'; -import Content from './select-content.svelte'; -import Trigger from './select-trigger.svelte'; -import Separator from './select-separator.svelte'; - -const Root = SelectPrimitive.Root; -const Group = SelectPrimitive.Group; -const Input = SelectPrimitive.Input; -const Value = SelectPrimitive.Value; - -export { - Root, - Item, - Group, - Input, - Label, - Value, - Content, - Trigger, - Separator, - // - Root as Select, - Item as SelectItem, - Group as SelectGroup, - Input as SelectInput, - Label as SelectLabel, - Value as SelectValue, - Content as SelectContent, - Trigger as SelectTrigger, - Separator as SelectSeparator -}; diff --git a/frontend/src/lib/components/ui/select/select-content.svelte b/frontend/src/lib/components/ui/select/select-content.svelte deleted file mode 100644 index 88e7b26b09..0000000000 --- a/frontend/src/lib/components/ui/select/select-content.svelte +++ /dev/null @@ -1,37 +0,0 @@ - - - -
    - -
    -
    diff --git a/frontend/src/lib/components/ui/select/select-item.svelte b/frontend/src/lib/components/ui/select/select-item.svelte deleted file mode 100644 index 5a1aeb43f2..0000000000 --- a/frontend/src/lib/components/ui/select/select-item.svelte +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - {label || value} - - diff --git a/frontend/src/lib/components/ui/select/select-label.svelte b/frontend/src/lib/components/ui/select/select-label.svelte deleted file mode 100644 index ee1bef349e..0000000000 --- a/frontend/src/lib/components/ui/select/select-label.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/select/select-separator.svelte b/frontend/src/lib/components/ui/select/select-separator.svelte deleted file mode 100644 index da4caa1c86..0000000000 --- a/frontend/src/lib/components/ui/select/select-separator.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/frontend/src/lib/components/ui/select/select-trigger.svelte b/frontend/src/lib/components/ui/select/select-trigger.svelte deleted file mode 100644 index 1e2d69ea8b..0000000000 --- a/frontend/src/lib/components/ui/select/select-trigger.svelte +++ /dev/null @@ -1,24 +0,0 @@ - - -span]:data-placeholder:text-muted-foreground flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border bg-transparent px-3 py-2 text-sm shadow-xs focus-visible:outline-hidden focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1', - className - )} - {...$$restProps} -> - -
    - -
    -
    diff --git a/frontend/src/lib/components/ui/sheet/index.ts b/frontend/src/lib/components/ui/sheet/index.ts deleted file mode 100644 index 87e77b516f..0000000000 --- a/frontend/src/lib/components/ui/sheet/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { Dialog as SheetPrimitive } from 'bits-ui'; -import { type VariantProps, tv } from 'tailwind-variants'; - -import Portal from './sheet-portal.svelte'; -import Overlay from './sheet-overlay.svelte'; -import Content from './sheet-content.svelte'; -import Header from './sheet-header.svelte'; -import Footer from './sheet-footer.svelte'; -import Title from './sheet-title.svelte'; -import Description from './sheet-description.svelte'; - -const Root = SheetPrimitive.Root; -const Close = SheetPrimitive.Close; -const Trigger = SheetPrimitive.Trigger; - -export { - Root, - Close, - Trigger, - Portal, - Overlay, - Content, - Header, - Footer, - Title, - Description, - // - Root as Sheet, - Close as SheetClose, - Trigger as SheetTrigger, - Portal as SheetPortal, - Overlay as SheetOverlay, - Content as SheetContent, - Header as SheetHeader, - Footer as SheetFooter, - Title as SheetTitle, - Description as SheetDescription -}; - -export const sheetVariants = tv({ - base: 'bg-neutral-200 fixed z-50 gap-4 px-4 py-5 shadow-lg', - variants: { - side: { - top: 'inset-x-0 top-0 border-b ', - bottom: 'inset-x-0 bottom-0 border-t', - left: 'inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm', - right: 'inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm' - } - }, - defaultVariants: { - side: 'right' - } -}); - -export const sheetTransitions = { - top: { - in: { - y: '-100%', - duration: 500, - opacity: 1 - }, - out: { - y: '-100%', - duration: 300, - opacity: 1 - } - }, - bottom: { - in: { - y: '100%', - duration: 500, - opacity: 1 - }, - out: { - y: '100%', - duration: 300, - opacity: 1 - } - }, - left: { - in: { - x: '-100%', - duration: 500, - opacity: 1 - }, - out: { - x: '-100%', - duration: 300, - opacity: 1 - } - }, - right: { - in: { - x: '100%', - duration: 500, - opacity: 1 - }, - out: { - x: '100%', - duration: 300, - opacity: 1 - } - } -}; - -export type Side = VariantProps['side']; diff --git a/frontend/src/lib/components/ui/sheet/sheet-content.svelte b/frontend/src/lib/components/ui/sheet/sheet-content.svelte deleted file mode 100644 index 3a293f0928..0000000000 --- a/frontend/src/lib/components/ui/sheet/sheet-content.svelte +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - Close - - - diff --git a/frontend/src/lib/components/ui/sheet/sheet-description.svelte b/frontend/src/lib/components/ui/sheet/sheet-description.svelte deleted file mode 100644 index adb66ecfb8..0000000000 --- a/frontend/src/lib/components/ui/sheet/sheet-description.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/sheet/sheet-footer.svelte b/frontend/src/lib/components/ui/sheet/sheet-footer.svelte deleted file mode 100644 index 65190697d1..0000000000 --- a/frontend/src/lib/components/ui/sheet/sheet-footer.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -
    - -
    diff --git a/frontend/src/lib/components/ui/sheet/sheet-header.svelte b/frontend/src/lib/components/ui/sheet/sheet-header.svelte deleted file mode 100644 index e79b8367ba..0000000000 --- a/frontend/src/lib/components/ui/sheet/sheet-header.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - -
    - -
    diff --git a/frontend/src/lib/components/ui/sheet/sheet-overlay.svelte b/frontend/src/lib/components/ui/sheet/sheet-overlay.svelte deleted file mode 100644 index 3979a6240d..0000000000 --- a/frontend/src/lib/components/ui/sheet/sheet-overlay.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - diff --git a/frontend/src/lib/components/ui/sheet/sheet-portal.svelte b/frontend/src/lib/components/ui/sheet/sheet-portal.svelte deleted file mode 100644 index a3b6c68f6b..0000000000 --- a/frontend/src/lib/components/ui/sheet/sheet-portal.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/sheet/sheet-title.svelte b/frontend/src/lib/components/ui/sheet/sheet-title.svelte deleted file mode 100644 index 143bd2a7c7..0000000000 --- a/frontend/src/lib/components/ui/sheet/sheet-title.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/table/index.ts b/frontend/src/lib/components/ui/table/index.ts deleted file mode 100644 index 4432eed61c..0000000000 --- a/frontend/src/lib/components/ui/table/index.ts +++ /dev/null @@ -1,56 +0,0 @@ -import Root from './table.svelte'; -import Body from './table-body.svelte'; -import Caption from './table-caption.svelte'; -import Cell from './table-cell.svelte'; -import Footer from './table-footer.svelte'; -import Head from './table-head.svelte'; -import Header from './table-header.svelte'; -import Row from './table-row.svelte'; -import { type VariantProps, tv } from 'tailwind-variants'; -import type { HTMLThAttributes } from 'svelte/elements'; - -const tableVariants = tv({ - base: 'w-full caption-bottom', - variants: { - density: { - compact: 'text-[13px] [&_td]:py-[0.45rem] [&_th]:py-[0.45rem]', - default: 'text-sm' - } - }, - defaultVariants: { - density: 'default' - } -}); - -type Density = VariantProps['density']; - -type Props = { - density?: Density; -} & HTMLTableElement; - -type TableHeadProps = { - element?: HTMLElement; -} & HTMLThAttributes; - -export { - Root, - Body, - Caption, - Cell, - Footer, - Head, - Header, - Row, - // - Root as Table, - Body as TableBody, - Caption as TableCaption, - Cell as TableCell, - Footer as TableFooter, - Head as TableHead, - Header as TableHeader, - Row as TableRow, - tableVariants, - type Props, - type TableHeadProps -}; diff --git a/frontend/src/lib/components/ui/table/table-body.svelte b/frontend/src/lib/components/ui/table/table-body.svelte deleted file mode 100644 index a86acfaeb2..0000000000 --- a/frontend/src/lib/components/ui/table/table-body.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/table/table-caption.svelte b/frontend/src/lib/components/ui/table/table-caption.svelte deleted file mode 100644 index f82a6b006f..0000000000 --- a/frontend/src/lib/components/ui/table/table-caption.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/table/table-cell.svelte b/frontend/src/lib/components/ui/table/table-cell.svelte deleted file mode 100644 index d872ef23a8..0000000000 --- a/frontend/src/lib/components/ui/table/table-cell.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - -[role=checkbox]]:translate-y-[2px] border-r last:border-r-0', - className - )} - {...$$restProps} - on:click - on:keydown -> - - diff --git a/frontend/src/lib/components/ui/table/table-footer.svelte b/frontend/src/lib/components/ui/table/table-footer.svelte deleted file mode 100644 index bca4d756bf..0000000000 --- a/frontend/src/lib/components/ui/table/table-footer.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/table/table-head.svelte b/frontend/src/lib/components/ui/table/table-head.svelte deleted file mode 100644 index 048546e456..0000000000 --- a/frontend/src/lib/components/ui/table/table-head.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -[role=checkbox]]:translate-y-[2px] border-r last:border-r-0', - className - )} - {...$$restProps} -> - - diff --git a/frontend/src/lib/components/ui/table/table-header.svelte b/frontend/src/lib/components/ui/table/table-header.svelte deleted file mode 100644 index 8026612f4c..0000000000 --- a/frontend/src/lib/components/ui/table/table-header.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/table/table-row.svelte b/frontend/src/lib/components/ui/table/table-row.svelte deleted file mode 100644 index f7d554a755..0000000000 --- a/frontend/src/lib/components/ui/table/table-row.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/table/table.svelte b/frontend/src/lib/components/ui/table/table.svelte deleted file mode 100644 index e02bead5a7..0000000000 --- a/frontend/src/lib/components/ui/table/table.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - -
    - - -
    -
    diff --git a/frontend/src/lib/components/ui/tabs/index.ts b/frontend/src/lib/components/ui/tabs/index.ts deleted file mode 100644 index 00ecd7702b..0000000000 --- a/frontend/src/lib/components/ui/tabs/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Tabs as TabsPrimitive } from 'bits-ui'; -import Content from './tabs-content.svelte'; -import List from './tabs-list.svelte'; -import Trigger from './tabs-trigger.svelte'; - -const Root = TabsPrimitive.Root; - -export { - Root, - Content, - List, - Trigger, - // - Root as Tabs, - Content as TabsContent, - List as TabsList, - Trigger as TabsTrigger -}; diff --git a/frontend/src/lib/components/ui/tabs/tabs-content.svelte b/frontend/src/lib/components/ui/tabs/tabs-content.svelte deleted file mode 100644 index d986214888..0000000000 --- a/frontend/src/lib/components/ui/tabs/tabs-content.svelte +++ /dev/null @@ -1,21 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/tabs/tabs-list.svelte b/frontend/src/lib/components/ui/tabs/tabs-list.svelte deleted file mode 100644 index 930a77a7a6..0000000000 --- a/frontend/src/lib/components/ui/tabs/tabs-list.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - - - diff --git a/frontend/src/lib/components/ui/tabs/tabs-trigger.svelte b/frontend/src/lib/components/ui/tabs/tabs-trigger.svelte deleted file mode 100644 index 0daf158c2a..0000000000 --- a/frontend/src/lib/components/ui/tabs/tabs-trigger.svelte +++ /dev/null @@ -1,45 +0,0 @@ - - -{#if value} - - - -{:else if href} - - - -{/if} diff --git a/frontend/src/lib/components/ui/tooltip/index.ts b/frontend/src/lib/components/ui/tooltip/index.ts deleted file mode 100644 index 243cd02761..0000000000 --- a/frontend/src/lib/components/ui/tooltip/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Tooltip as TooltipPrimitive } from 'bits-ui'; -import Content from './tooltip-content.svelte'; - -const Root = TooltipPrimitive.Root; -const Trigger = TooltipPrimitive.Trigger; - -export { - Root, - Trigger, - Content, - // - Root as Tooltip, - Content as TooltipContent, - Trigger as TooltipTrigger -}; diff --git a/frontend/src/lib/components/ui/tooltip/tooltip-content.svelte b/frontend/src/lib/components/ui/tooltip/tooltip-content.svelte deleted file mode 100644 index 0e24b2217f..0000000000 --- a/frontend/src/lib/components/ui/tooltip/tooltip-content.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/frontend/src/lib/constants/common.ts b/frontend/src/lib/constants/common.ts index edd3d4ad05..09ab7d2003 100644 --- a/frontend/src/lib/constants/common.ts +++ b/frontend/src/lib/constants/common.ts @@ -1,2 +1,10 @@ +import { parseISO } from 'date-fns'; + // Maps to `Constants.magicNullDouble` on server - https://github.com/zipline-ai/chronon/blob/main/api/src/main/scala/ai/chronon/api/Constants.scala#L87 export const NULL_VALUE = -1234567890; + +// Temporary demo date range for join drift data (see: ObservabilityDemoDataLoader) +export const DEMO_DATE_START = parseISO('2023-01-01'); +// export const DEMO_DATE_END = parseISO('2023-03-01'); +// export const DEMO_DATE_END = parseISO('2023-02-28T19:00-05:00'); +export const DEMO_DATE_END = parseISO('2023-02-11'); diff --git a/frontend/src/lib/job/status.ts b/frontend/src/lib/job/status.ts deleted file mode 100644 index bcdfc80f8f..0000000000 --- a/frontend/src/lib/job/status.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Status } from '$lib/types/codegen'; - -export const statusText: Record = { - [Status.WAITING_FOR_UPSTREAM]: 'Waiting for Upstream', - [Status.RUNNING]: 'Running', - [Status.FAILED]: 'Failed', - [Status.SUCCESS]: 'Success', - [Status.QUEUED]: 'Queued', - [Status.UPSTREAM_FAILED]: 'Upstream Failed', - [Status.UPSTREAM_MISSING]: 'Upstream Missing', - [Status.WAITING_FOR_RESOURCES]: 'Waiting for Resources' -}; diff --git a/frontend/src/lib/job/tree-builder/tree-builder.test.ts b/frontend/src/lib/job/tree-builder/tree-builder.test.ts deleted file mode 100644 index 00f90c27be..0000000000 --- a/frontend/src/lib/job/tree-builder/tree-builder.test.ts +++ /dev/null @@ -1,269 +0,0 @@ -import { describe, it, expect } from 'vitest'; -import { buildJobTrackerTree, organizeTasksByDate } from '$lib/job/tree-builder/tree-builder'; -import { - Status, - type IJobTrackerResponseArgs, - type ILineageResponseArgs -} from '$lib/types/codegen'; - -describe('jobTracker.service', () => { - describe('buildJobTrackerTree', () => { - it('should handle empty lineage', () => { - const emptyLineage: ILineageResponseArgs = { - nodeGraph: { - connections: new Map(), - infoMap: new Map() - } - }; - const result = buildJobTrackerTree(emptyLineage, new Map()); - expect(result.jobTree).toEqual([]); - expect(result.dates).toEqual([]); - }); - - it('should handle overlapping task dates correctly', () => { - const lineage: ILineageResponseArgs = { - nodeGraph: { - connections: new Map([[{ name: 'job1' }, { parents: [] }]]), - infoMap: new Map() - } - }; - - const jobTrackerData = new Map([ - [ - 'job1', - { - tasks: [ - { - dateRange: { - startDate: '2024-01-01', - endDate: '2024-01-03' - }, - submittedTs: 1000, - status: Status.FAILED - }, - { - dateRange: { - startDate: '2024-01-02', - endDate: '2024-01-04' - }, - submittedTs: 2000, - status: Status.SUCCESS - } - ] - } - ] - ]); - - const result = buildJobTrackerTree(lineage, jobTrackerData); - - const tasksByDate = result.jobTree[0].jobTracker?.tasksByDate ?? []; - expect(tasksByDate).toHaveLength(2); - - // Jan 1 (FAILED) - expect(tasksByDate[0]).toMatchObject({ - dateRange: { startDate: '2024-01-01', endDate: '2024-01-01' }, - status: Status.FAILED - }); - - // Jan 2-4 (SUCCESS) - expect(tasksByDate[1]).toMatchObject({ - dateRange: { startDate: '2024-01-02', endDate: '2024-01-04' }, - status: Status.SUCCESS - }); - }); - - it('should build hierarchical tree structure', () => { - const lineage: ILineageResponseArgs = { - nodeGraph: { - connections: new Map([ - [ - { name: 'child' }, - { - parents: [{ name: 'parent' }] - } - ], - [ - { name: 'parent' }, - { - parents: [] - } - ] - ]), - infoMap: new Map() - } - }; - - const jobTrackerData = new Map([ - [ - 'child', - { - tasks: [ - { - dateRange: { - startDate: '2024-01-01', - endDate: '2024-01-01' - }, - status: Status.SUCCESS - } - ] - } - ], - [ - 'parent', - { - tasks: [ - { - dateRange: { - startDate: '2024-01-01', - endDate: '2024-01-01' - }, - status: Status.SUCCESS - } - ] - } - ] - ]); - - const result = buildJobTrackerTree(lineage, jobTrackerData); - - expect(result.jobTree).toHaveLength(1); - expect(result.jobTree[0].row).toBe('child'); - expect(result.jobTree[0].children).toHaveLength(1); - expect(result.jobTree[0].children[0].row).toBe('parent'); - }); - - it('should throw error when lineage is undefined', () => { - expect(() => - buildJobTrackerTree(undefined as unknown as ILineageResponseArgs, new Map()) - ).toThrow('Lineage data is required for job tracking'); - }); - }); - - describe('organizeTasksByDate', () => { - it('should handle empty tasks array', () => { - expect(organizeTasksByDate([])).toEqual([]); - }); - - it('should handle single task', () => { - const task = { - dateRange: { startDate: '2024-01-01', endDate: '2024-01-03' }, - submittedTs: 1000, - status: Status.SUCCESS - }; - expect(organizeTasksByDate([task])).toEqual([task]); - }); - - it('should handle non-overlapping tasks', () => { - const tasks = [ - { - dateRange: { startDate: '2024-01-01', endDate: '2024-01-02' }, - submittedTs: 1000, - status: Status.SUCCESS - }, - { - dateRange: { startDate: '2024-01-04', endDate: '2024-01-05' }, - submittedTs: 2000, - status: Status.FAILED - } - ]; - expect(organizeTasksByDate(tasks)).toEqual(tasks); - }); - - it('should handle complete overlap with newer task', () => { - const tasks = [ - { - dateRange: { startDate: '2024-01-01', endDate: '2024-01-03' }, - submittedTs: 1000, - status: Status.FAILED - }, - { - dateRange: { startDate: '2024-01-01', endDate: '2024-01-03' }, - submittedTs: 2000, - status: Status.SUCCESS - } - ]; - expect(organizeTasksByDate(tasks)).toEqual([tasks[1]]); - }); - - it('should handle partial overlap with newer task', () => { - const tasks = [ - { - dateRange: { startDate: '2024-01-01', endDate: '2024-01-03' }, - submittedTs: 1000, - status: Status.FAILED - }, - { - dateRange: { startDate: '2024-01-02', endDate: '2024-01-04' }, - submittedTs: 2000, - status: Status.SUCCESS - } - ]; - const expected = [ - { - dateRange: { startDate: '2024-01-01', endDate: '2024-01-01' }, - submittedTs: 1000, - status: Status.FAILED - }, - { - dateRange: { startDate: '2024-01-02', endDate: '2024-01-04' }, - submittedTs: 2000, - status: Status.SUCCESS - } - ]; - expect(organizeTasksByDate(tasks)).toEqual(expected); - }); - - it('should handle multiple overlapping tasks', () => { - const tasks = [ - { - dateRange: { startDate: '2024-01-01', endDate: '2024-01-05' }, - submittedTs: 1000, - status: Status.RUNNING - }, - { - dateRange: { startDate: '2024-01-02', endDate: '2024-01-04' }, - submittedTs: 2000, - status: Status.FAILED - }, - { - dateRange: { startDate: '2024-01-03', endDate: '2024-01-06' }, - submittedTs: 3000, - status: Status.SUCCESS - } - ]; - const expected = [ - { - dateRange: { startDate: '2024-01-01', endDate: '2024-01-01' }, - submittedTs: 1000, - status: Status.RUNNING - }, - { - dateRange: { startDate: '2024-01-02', endDate: '2024-01-02' }, - submittedTs: 2000, - status: Status.FAILED - }, - { - dateRange: { startDate: '2024-01-03', endDate: '2024-01-06' }, - submittedTs: 3000, - status: Status.SUCCESS - } - ]; - expect(organizeTasksByDate(tasks)).toEqual(expected); - }); - - it('should handle tasks with missing date ranges', () => { - const tasks = [ - { - submittedTs: 1000, - status: Status.FAILED - }, - { - dateRange: { startDate: '2024-01-01', endDate: '2024-01-03' }, - submittedTs: 2000, - status: Status.SUCCESS - } - ]; - expect(organizeTasksByDate(tasks)).toEqual([tasks[1]]); - }); - }); -}); diff --git a/frontend/src/lib/job/tree-builder/tree-builder.ts b/frontend/src/lib/job/tree-builder/tree-builder.ts deleted file mode 100644 index baaec9722d..0000000000 --- a/frontend/src/lib/job/tree-builder/tree-builder.ts +++ /dev/null @@ -1,225 +0,0 @@ -import type { - IJobTrackerResponseArgs, - ILineageResponseArgs, - ITaskInfoArgs, - INodeKeyArgs, - INodeInfoArgs -} from '$lib/types/codegen'; -import type { EntityData } from '$src/lib/types/Entity'; -/** - * Represents a node in the job tracker's hierarchical tree structure. - * Used to display jobs and their dependencies in a collapsible tree view. - */ -export interface JobTreeNode { - row: string; - node?: INodeKeyArgs; - conf?: EntityData; - jobTracker?: IJobTrackerResponseArgs & { - tasksByDate?: ITaskInfoArgs[]; - }; - children: JobTreeNode[]; -} - -/** - * Finds a node by name in the lineage connections - */ -const findNodeInConnections = (name: string, lineage: ILineageResponseArgs) => { - if (!lineage.nodeGraph?.connections) return null; - for (const [node] of lineage.nodeGraph.connections) { - if (node.name === name) { - return node; - } - } - return null; -}; - -/** - * Collects all dates between min and max dates from job tracker responses - */ -const getAllDates = (responses: IJobTrackerResponseArgs[]): string[] => { - const dates = new Set(); - responses.forEach((response) => { - response.tasks?.forEach((task) => { - if (task.dateRange?.startDate && task.dateRange?.endDate) { - dates.add(task.dateRange.startDate); - dates.add(task.dateRange.endDate); - } - }); - }); - - if (dates.size === 0) return []; - - // Convert to array and find min/max dates - const dateArray = Array.from(dates).sort(); - const startDate = new Date(dateArray[0]); - const endDate = new Date(dateArray[dateArray.length - 1]); - - // Generate all dates between start and end - const allDates: string[] = []; - const currentDate = new Date(startDate); - - while (currentDate <= endDate) { - allDates.push(currentDate.toISOString().split('T')[0]); - currentDate.setDate(currentDate.getDate() + 1); - } - - return allDates; -}; - -/** - * Finds leaf nodes in the lineage (nodes that don't appear as parents) - */ -const findLeafNodes = (lineage: ILineageResponseArgs): string[] => { - const allNodes = new Set( - Array.from(lineage.nodeGraph?.connections?.keys() ?? []) - .map((node) => node.name) - .filter((name): name is string => name !== undefined) - ); - const allParents = new Set(); - - lineage.nodeGraph?.connections?.forEach((connection) => { - connection.parents?.forEach((parent) => { - allParents.add(parent.name ?? ''); - }); - }); - - return Array.from(allNodes).filter((node) => !allParents.has(node)); -}; - -/** - * Organizes tasks by date ranges, keeping only the latest task for overlapping periods - */ -export const organizeTasksByDate = (tasks: ITaskInfoArgs[] = []): ITaskInfoArgs[] => { - if (tasks.length === 0) return []; - - // Sort tasks by submittedTs in descending order (most recent first) - const sortedTasks = [...tasks].sort((a, b) => Number(b.submittedTs) - Number(a.submittedTs)); - - const result: ITaskInfoArgs[] = []; - - for (const task of sortedTasks) { - if (!task.dateRange?.startDate || !task.dateRange?.endDate) continue; - - let currentStart = new Date(task.dateRange.startDate); - let currentEnd = new Date(task.dateRange.endDate); - - // Check for overlaps with more recent tasks - for (const existingTask of result) { - const existingStart = new Date(existingTask.dateRange!.startDate!); - const existingEnd = new Date(existingTask.dateRange!.endDate!); - - // If current range starts after existing range ends, no overlap - if (currentStart > existingEnd) continue; - - // If current range ends before existing range starts, no overlap - if (currentEnd < existingStart) continue; - - // Handle overlap by adjusting current range - if (currentStart < existingStart) { - // Current task starts earlier - keep only the non-overlapping part - currentEnd = new Date(existingStart); - currentEnd.setDate(currentEnd.getDate() - 1); - } else { - // Current task starts within or at same time - skip this range - currentStart = new Date(existingEnd); - currentStart.setDate(currentStart.getDate() + 1); - } - - // If the range has been eliminated, break - if (currentStart > currentEnd) break; - } - - // Add the remaining range if it's valid - if (currentStart <= currentEnd) { - result.push({ - ...task, - dateRange: { - startDate: currentStart.toISOString().split('T')[0], - endDate: currentEnd.toISOString().split('T')[0] - } - }); - } - } - - // Sort by start date for consistent ordering - return result.sort( - (a, b) => - new Date(a.dateRange!.startDate!).getTime() - new Date(b.dateRange!.startDate!).getTime() - ); -}; - -/** - * Recursively builds a tree node with its children - */ -const buildJobTreeNode = ( - jobName: string, - lineage: ILineageResponseArgs, - jobTrackerDataMap: Map, - infoMap: Map -): JobTreeNode => { - const node = findNodeInConnections(jobName, lineage); - const jobTrackerData = jobTrackerDataMap.get(jobName); - const nodeInfo = Array.from(infoMap.entries()).find(([key]) => key.name === jobName); - - // Organize tasks by date before adding to the tree - const tasksByDate = organizeTasksByDate(jobTrackerData?.tasks); - - if (!node) { - return { - row: jobName, - conf: nodeInfo?.[1].conf, - jobTracker: jobTrackerData - ? { - ...jobTrackerData, - tasksByDate - } - : undefined, - children: [], - node: undefined - }; - } - - const parentNodes = - Array.from(lineage.nodeGraph?.connections?.entries() ?? []).find( - ([n]) => n.name === jobName - )?.[1]?.parents ?? []; - - return { - row: jobName, - conf: nodeInfo?.[1].conf, - jobTracker: jobTrackerData - ? { - ...jobTrackerData, - tasksByDate - } - : undefined, - children: parentNodes.map((parent) => - buildJobTreeNode(parent.name ?? '', lineage, jobTrackerDataMap, infoMap) - ), - node: { ...node } - }; -}; - -/** - * Transforms lineage and job tracker data into a tree structure for display - */ -export function buildJobTrackerTree( - lineage: ILineageResponseArgs, - jobTrackerDataMap: Map -) { - if (!lineage) { - throw new Error('Lineage data is required for job tracking'); - } - - if (!lineage.nodeGraph?.infoMap) { - throw new Error('Node info map is required for job tracking'); - } - - const leafNodes = findLeafNodes(lineage); - const jobTree = leafNodes.map((leafNode) => - buildJobTreeNode(leafNode, lineage, jobTrackerDataMap, lineage.nodeGraph!.infoMap!) - ); - const dates = getAllDates(Array.from(jobTrackerDataMap.values())); - - return { jobTree, dates }; -} diff --git a/frontend/src/lib/util/date-ranges.ts b/frontend/src/lib/params/date-ranges.ts similarity index 100% rename from frontend/src/lib/util/date-ranges.ts rename to frontend/src/lib/params/date-ranges.ts diff --git a/frontend/src/lib/util/drift-metric.ts b/frontend/src/lib/params/drift-metric.ts similarity index 94% rename from frontend/src/lib/util/drift-metric.ts rename to frontend/src/lib/params/drift-metric.ts index da06000def..d904bb820a 100644 --- a/frontend/src/lib/util/drift-metric.ts +++ b/frontend/src/lib/params/drift-metric.ts @@ -1,5 +1,6 @@ import type { EncodeAndDecodeOptions } from 'sveltekit-search-params/sveltekit-search-params'; -import { getSearchParamValues } from '$lib/util/search-params'; + +import { getSearchParamValues } from './search-params'; import { DriftMetric } from '$lib/types/codegen'; export const DEFAULT_DRIFT_METRIC: DriftMetric = DriftMetric.PSI; diff --git a/frontend/src/lib/params/offset.ts b/frontend/src/lib/params/offset.ts new file mode 100644 index 0000000000..372439ea96 --- /dev/null +++ b/frontend/src/lib/params/offset.ts @@ -0,0 +1,20 @@ +import type { EncodeAndDecodeOptions } from 'sveltekit-search-params/sveltekit-search-params'; +import { getSearchParamValues } from './search-params'; + +export const DEFAULT_OFFSET = 15; // days + +export function getOffsetParamsConfig() { + return { + offset: { + encode: (value) => value.toString(), + decode: (value) => (value ? Number(value) : null), + defaultValue: DEFAULT_OFFSET + } satisfies EncodeAndDecodeOptions + }; +} + +/** Get offset from query string (or default) in days */ +export function getOffset(searchParams: URLSearchParams) { + const paramsConfig = getOffsetParamsConfig(); + return getSearchParamValues(searchParams, paramsConfig).offset; +} diff --git a/frontend/src/lib/util/search-params.ts b/frontend/src/lib/params/search-params.ts similarity index 100% rename from frontend/src/lib/util/search-params.ts rename to frontend/src/lib/params/search-params.ts diff --git a/frontend/src/lib/util/sort.ts b/frontend/src/lib/params/sort.ts similarity index 93% rename from frontend/src/lib/util/sort.ts rename to frontend/src/lib/params/sort.ts index ce4278918e..2a642f9ac2 100644 --- a/frontend/src/lib/util/sort.ts +++ b/frontend/src/lib/params/sort.ts @@ -3,7 +3,7 @@ import { getSearchParamValues } from './search-params'; export const SORT_DIRECTIONS = ['asc', 'desc'] as const; export type SortDirection = (typeof SORT_DIRECTIONS)[number]; -export type SortContext = 'drift' | 'summary'; +export type SortContext = 'drift' | 'summary' | 'consistency'; export function getSortParamKey(context: SortContext): string { return `${context}Sort`; diff --git a/frontend/src/lib/types/Entity.ts b/frontend/src/lib/types/Entity.ts index 2cf2a5784b..3bf7b7b911 100644 --- a/frontend/src/lib/types/Entity.ts +++ b/frontend/src/lib/types/Entity.ts @@ -141,3 +141,17 @@ export function getEntityConfigFromPath(path: string) { const config = Object.values(entityConfig).find((c) => c.path != null && path.startsWith(c.path)); return config; } + +export function getEntityLabel(name: string = '') { + const parts = name.split('.') ?? []; + + // If ends with version, use last 2 parts, else use last + const primaryStartIndex = parts[parts.length - 1].startsWith('v') + ? parts.length - 2 + : parts.length - 1; + + return { + primary: parts.slice(primaryStartIndex).join('.'), + secondary: parts.slice(0, primaryStartIndex).join('.') + }; +} diff --git a/frontend/src/lib/util/colors.ts b/frontend/src/lib/util/colors.ts deleted file mode 100644 index 06c4f831a0..0000000000 --- a/frontend/src/lib/util/colors.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { hsl } from 'd3'; - -export function getCssColorAsHex(cssVariable: string) { - if (typeof window === 'undefined') return ''; - - const hslValue = getComputedStyle(document.documentElement).getPropertyValue(cssVariable).trim(); - if (!hslValue) return ''; - - const [h, s, l] = hslValue.split(' ').map((val) => parseFloat(val.replace('%', ''))); - return hsl(h, s / 100, l / 100).formatHex(); -} diff --git a/frontend/src/lib/util/event.ts b/frontend/src/lib/util/event.ts deleted file mode 100644 index e3d26b025f..0000000000 --- a/frontend/src/lib/util/event.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function stopPropogation(event: Event) { - event.stopPropagation(); -} diff --git a/frontend/src/lib/util/format.ts b/frontend/src/lib/util/format.ts index 0ff84b3075..7d3ccc6f20 100644 --- a/frontend/src/lib/util/format.ts +++ b/frontend/src/lib/util/format.ts @@ -1,36 +1,8 @@ -import { format, PeriodType } from '@layerstack/utils'; +import { format } from '@layerstack/utils'; /** - * Formats a timestamp into a human-readable date string. - * For example: Dec 31, 2022, 5:00:00 PM + * Formats drift value to 4 decimal places */ -export function formatDate(value: Date | string | number | null | undefined): string { - if (value == null || value === undefined) { - return ''; - } else { - const date = value instanceof Date ? value : new Date(value); - return format(date, PeriodType.Custom, { - custom: { - month: 'short', - day: 'numeric', - year: 'numeric', - hour: 'numeric', - minute: '2-digit', - second: '2-digit', - hour12: true - } - }); - } -} - -/** - * Formats a numeric value, limiting decimal places to 4 if needed - */ -export function formatValue(value: string | number): string { - if (typeof value === 'number') { - // Only format to 4 decimals if the number has more decimal places - const decimalPlaces = value.toString().split('.')[1]?.length || 0; - return decimalPlaces > 4 ? value.toFixed(4) : value.toString(); - } - return String(value); +export function formatDrift(value: number) { + return format(value, 'decimal', { fractionDigits: 4 }); } diff --git a/frontend/src/lib/util/heatmap-data-gen.ts b/frontend/src/lib/util/heatmap-data-gen.ts deleted file mode 100644 index 083008182a..0000000000 --- a/frontend/src/lib/util/heatmap-data-gen.ts +++ /dev/null @@ -1,49 +0,0 @@ -// Function to generate X-axis labels based on count (e.g., T1, T2, ..., Tn) -export function generateXAxis(count: number): string[] { - return Array.from({ length: count }, (_, i) => `T${i + 1}`); -} - -// Function to generate Y-axis values based on count (e.g., Feature 1, Feature 2, ..., Feature n) -export function generateYAxis(count: number): string[] { - return Array.from({ length: count }, (_, i) => `Feature ${i + 1}`); -} - -type DataType = 'normal' | 'anomalous' | 'slow-drift'; - -interface HeatmapConfig { - type: DataType; - affectedRows?: number[]; -} - -// Function to generate heatmap data (random values between specified range) -export function generateHeatmapData(xAxis: string[], yAxis: string[], config: HeatmapConfig) { - const data = []; - - for (let i = 0; i < yAxis.length; i++) { - const rowType = config.affectedRows?.includes(i) ? config.type : 'normal'; - - for (let j = 0; j < xAxis.length; j++) { - let value: number; - - switch (rowType) { - case 'normal': { - value = Math.random() * 0.2; - break; - } - case 'anomalous': { - value = Math.random() < 0.9 ? Math.random() * 0.2 : 0.8 + Math.random() * 0.2; - break; - } - case 'slow-drift': { - const progress = j / (xAxis.length - 1); - value = 0.2 + 0.6 * progress + Math.random() * 0.2; - break; - } - } - - data.push([j, i, value]); - } - } - - return data; -} diff --git a/frontend/src/lib/util/lineage-job-sample-data.ts b/frontend/src/lib/util/lineage-job-sample-data.ts deleted file mode 100644 index 00196e68a9..0000000000 --- a/frontend/src/lib/util/lineage-job-sample-data.ts +++ /dev/null @@ -1,560 +0,0 @@ -import { - LogicalType, - Status, - type ILineageResponseArgs, - type IJobTrackerResponseArgs -} from '$lib/types/codegen'; - -export const sampleLineageResponse: ILineageResponseArgs = { - nodeGraph: { - connections: new Map([ - [ - { name: 'job_1', logicalType: LogicalType.JOIN }, - { - parents: [], - children: [{ name: 'job_4', logicalType: LogicalType.JOIN }] - } - ], - [ - { name: 'job_4', logicalType: LogicalType.JOIN }, - { - parents: [{ name: 'job_1', logicalType: LogicalType.JOIN }], - children: [ - { name: 'job_5', logicalType: LogicalType.JOIN }, - { name: 'job_6', logicalType: LogicalType.JOIN } - ] - } - ], - [ - { name: 'job_5', logicalType: LogicalType.JOIN }, - { - parents: [{ name: 'job_4', logicalType: LogicalType.JOIN }], - children: [] - } - ], - [ - { name: 'job_6', logicalType: LogicalType.JOIN }, - { - parents: [{ name: 'job_4', logicalType: LogicalType.JOIN }], - children: [ - { name: 'job_7', logicalType: LogicalType.JOIN }, - { name: 'job_9', logicalType: LogicalType.JOIN } - ] - } - ], - [ - { name: 'job_7', logicalType: LogicalType.JOIN }, - { - parents: [{ name: 'job_6', logicalType: LogicalType.JOIN }], - children: [{ name: 'job_8', logicalType: LogicalType.JOIN }] - } - ], - [ - { name: 'job_8', logicalType: LogicalType.JOIN }, - { - parents: [{ name: 'job_7', logicalType: LogicalType.JOIN }], - children: [] - } - ], - [ - { name: 'job_9', logicalType: LogicalType.JOIN }, - { - parents: [{ name: 'job_6', logicalType: LogicalType.JOIN }], - children: [{ name: 'job_10', logicalType: LogicalType.JOIN }] - } - ], - [ - { name: 'job_10', logicalType: LogicalType.JOIN }, - { - parents: [{ name: 'job_9', logicalType: LogicalType.JOIN }], - children: [] - } - ], - [ - { name: 'job_2', logicalType: LogicalType.JOIN }, - { - parents: [], - children: [] - } - ], - [ - { name: 'job_3', logicalType: LogicalType.JOIN }, - { - parents: [], - children: [] - } - ] - ]), - infoMap: new Map() - }, - mainNode: { - name: 'job_1', - logicalType: LogicalType.JOIN - } -}; - -export const job1Response: IJobTrackerResponseArgs = { - tasks: [ - { - status: Status.SUCCESS, - submittedTs: new Date('2024-01-18').getTime(), - dateRange: { - startDate: '2024-01-18', - endDate: '2024-01-21' - } - }, - { - status: Status.FAILED, - submittedTs: new Date('2024-01-11').getTime(), - dateRange: { - startDate: '2024-01-11', - endDate: '2024-01-17' - } - }, - { - status: Status.RUNNING, - submittedTs: new Date('2024-01-04').getTime(), - dateRange: { - startDate: '2024-01-04', - endDate: '2024-01-10' - } - }, - { - status: Status.UPSTREAM_FAILED, - submittedTs: new Date('2024-01-01').getTime(), - dateRange: { - startDate: '2024-01-01', - endDate: '2024-01-03' - } - } - ], - mainNode: { - name: 'job_1', - logicalType: LogicalType.JOIN - } -}; - -export const job2Response: IJobTrackerResponseArgs = { - tasks: [ - { - status: Status.WAITING_FOR_RESOURCES, - submittedTs: new Date('2024-01-18').getTime(), - dateRange: { - startDate: '2024-01-18', - endDate: '2024-01-21' - } - }, - { - status: Status.QUEUED, - submittedTs: new Date('2024-01-11').getTime(), - dateRange: { - startDate: '2024-01-11', - endDate: '2024-01-17' - } - }, - { - status: Status.SUCCESS, - submittedTs: new Date('2024-01-08').getTime(), - dateRange: { - startDate: '2024-01-08', - endDate: '2024-01-10' - } - }, - { - status: Status.RUNNING, - submittedTs: new Date('2024-01-05').getTime(), - dateRange: { - startDate: '2024-01-05', - endDate: '2024-01-07' - } - }, - { - status: Status.SUCCESS, - submittedTs: new Date('2024-01-01').getTime(), - dateRange: { - startDate: '2024-01-01', - endDate: '2024-01-04' - } - } - ], - mainNode: { - name: 'job_2', - logicalType: LogicalType.JOIN - } -}; - -export const job3Response: IJobTrackerResponseArgs = { - tasks: [ - { - status: Status.SUCCESS, - submittedTs: new Date('2024-01-21').getTime(), - dateRange: { - startDate: '2024-01-21', - endDate: '2024-01-21' - } - }, - { - status: Status.SUCCESS, - submittedTs: new Date('2024-01-16').getTime(), - dateRange: { - startDate: '2024-01-16', - endDate: '2024-01-20' - } - }, - { - status: Status.SUCCESS, - submittedTs: new Date('2024-01-09').getTime(), - dateRange: { - startDate: '2024-01-09', - endDate: '2024-01-15' - } - }, - { - status: Status.QUEUED, - submittedTs: new Date('2024-01-06').getTime(), - dateRange: { - startDate: '2024-01-06', - endDate: '2024-01-08' - } - }, - { - status: Status.QUEUED, - submittedTs: new Date('2024-01-01').getTime(), - dateRange: { - startDate: '2024-01-01', - endDate: '2024-01-05' - } - } - ], - mainNode: { - name: 'job_3', - logicalType: LogicalType.JOIN - } -}; - -export const job4Response: IJobTrackerResponseArgs = { - tasks: [ - { - status: Status.RUNNING, - submittedTs: new Date('2024-01-21').getTime(), - dateRange: { - startDate: '2024-01-21', - endDate: '2024-01-21' - } - }, - { - status: Status.SUCCESS, - submittedTs: new Date('2024-01-19').getTime(), - dateRange: { - startDate: '2024-01-19', - endDate: '2024-01-20' - } - }, - { - status: Status.RUNNING, - submittedTs: new Date('2024-01-12').getTime(), - dateRange: { - startDate: '2024-01-12', - endDate: '2024-01-18' - } - }, - { - status: Status.SUCCESS, - submittedTs: new Date('2024-01-07').getTime(), - dateRange: { - startDate: '2024-01-07', - endDate: '2024-01-11' - } - }, - { - status: Status.UPSTREAM_FAILED, - submittedTs: new Date('2024-01-01').getTime(), - dateRange: { - startDate: '2024-01-01', - endDate: '2024-01-06' - } - } - ], - mainNode: { - name: 'job_4', - logicalType: LogicalType.JOIN - } -}; - -export const job5Response: IJobTrackerResponseArgs = { - tasks: [ - { - status: Status.QUEUED, - submittedTs: new Date('2024-01-17').getTime(), - dateRange: { - startDate: '2024-01-17', - endDate: '2024-01-21' - } - }, - { - status: Status.RUNNING, - submittedTs: new Date('2024-01-12').getTime(), - dateRange: { - startDate: '2024-01-12', - endDate: '2024-01-16' - } - }, - { - status: Status.QUEUED, - submittedTs: new Date('2024-01-05').getTime(), - dateRange: { - startDate: '2024-01-05', - endDate: '2024-01-11' - } - }, - { - status: Status.RUNNING, - submittedTs: new Date('2024-01-01').getTime(), - dateRange: { - startDate: '2024-01-01', - endDate: '2024-01-04' - } - } - ], - mainNode: { - name: 'job_5', - logicalType: LogicalType.JOIN - } -}; - -export const job6Response: IJobTrackerResponseArgs = { - tasks: [ - { - status: Status.RUNNING, - submittedTs: new Date('2024-01-21').getTime(), - dateRange: { - startDate: '2024-01-21', - endDate: '2024-01-21' - } - }, - { - status: Status.SUCCESS, - submittedTs: new Date('2024-01-17').getTime(), - dateRange: { - startDate: '2024-01-17', - endDate: '2024-01-20' - } - }, - { - status: Status.WAITING_FOR_RESOURCES, - submittedTs: new Date('2024-01-12').getTime(), - dateRange: { - startDate: '2024-01-12', - endDate: '2024-01-16' - } - }, - { - status: Status.SUCCESS, - submittedTs: new Date('2024-01-07').getTime(), - dateRange: { - startDate: '2024-01-07', - endDate: '2024-01-11' - } - }, - { - status: Status.SUCCESS, - submittedTs: new Date('2024-01-01').getTime(), - dateRange: { - startDate: '2024-01-01', - endDate: '2024-01-06' - } - } - ], - mainNode: { - name: 'job_6', - logicalType: LogicalType.JOIN - } -}; - -export const job7Response: IJobTrackerResponseArgs = { - tasks: [ - { - status: Status.QUEUED, - submittedTs: new Date('2024-01-16').getTime(), - dateRange: { - startDate: '2024-01-16', - endDate: '2024-01-21' - } - }, - { - status: Status.WAITING_FOR_RESOURCES, - submittedTs: new Date('2024-01-14').getTime(), - dateRange: { - startDate: '2024-01-14', - endDate: '2024-01-15' - } - }, - { - status: Status.RUNNING, - submittedTs: new Date('2024-01-07').getTime(), - dateRange: { - startDate: '2024-01-07', - endDate: '2024-01-13' - } - }, - { - status: Status.SUCCESS, - submittedTs: new Date('2024-01-01').getTime(), - dateRange: { - startDate: '2024-01-01', - endDate: '2024-01-06' - } - } - ], - mainNode: { - name: 'job_7', - logicalType: LogicalType.JOIN - } -}; - -export const job8Response: IJobTrackerResponseArgs = { - tasks: [ - { - status: Status.UPSTREAM_FAILED, - submittedTs: new Date('2024-01-19').getTime(), - dateRange: { - startDate: '2024-01-19', - endDate: '2024-01-21' - } - }, - { - status: Status.QUEUED, - submittedTs: new Date('2024-01-16').getTime(), - dateRange: { - startDate: '2024-01-16', - endDate: '2024-01-18' - } - }, - { - status: Status.SUCCESS, - submittedTs: new Date('2024-01-12').getTime(), - dateRange: { - startDate: '2024-01-12', - endDate: '2024-01-15' - } - }, - { - status: Status.UPSTREAM_FAILED, - submittedTs: new Date('2024-01-10').getTime(), - dateRange: { - startDate: '2024-01-10', - endDate: '2024-01-11' - } - }, - { - status: Status.RUNNING, - submittedTs: new Date('2024-01-05').getTime(), - dateRange: { - startDate: '2024-01-05', - endDate: '2024-01-09' - } - }, - { - status: Status.SUCCESS, - submittedTs: new Date('2024-01-01').getTime(), - dateRange: { - startDate: '2024-01-01', - endDate: '2024-01-04' - } - } - ], - mainNode: { - name: 'job_8', - logicalType: LogicalType.JOIN - } -}; - -export const job9Response: IJobTrackerResponseArgs = { - tasks: [ - { - status: Status.FAILED, - submittedTs: new Date('2024-01-18').getTime(), - dateRange: { - startDate: '2024-01-18', - endDate: '2024-01-21' - } - }, - { - status: Status.QUEUED, - submittedTs: new Date('2024-01-13').getTime(), - dateRange: { - startDate: '2024-01-13', - endDate: '2024-01-17' - } - }, - { - status: Status.RUNNING, - submittedTs: new Date('2024-01-10').getTime(), - dateRange: { - startDate: '2024-01-10', - endDate: '2024-01-12' - } - }, - { - status: Status.FAILED, - submittedTs: new Date('2024-01-03').getTime(), - dateRange: { - startDate: '2024-01-03', - endDate: '2024-01-09' - } - }, - { - status: Status.UPSTREAM_FAILED, - submittedTs: new Date('2024-01-01').getTime(), - dateRange: { - startDate: '2024-01-01', - endDate: '2024-01-02' - } - } - ], - mainNode: { - name: 'job_9', - logicalType: LogicalType.JOIN - } -}; - -export const job10Response: IJobTrackerResponseArgs = { - tasks: [ - { - status: Status.FAILED, - submittedTs: new Date('2024-01-19').getTime(), - dateRange: { - startDate: '2024-01-19', - endDate: '2024-01-21' - } - }, - { - status: Status.QUEUED, - submittedTs: new Date('2024-01-13').getTime(), - dateRange: { - startDate: '2024-01-13', - endDate: '2024-01-18' - } - }, - { - status: Status.RUNNING, - submittedTs: new Date('2024-01-06').getTime(), - dateRange: { - startDate: '2024-01-06', - endDate: '2024-01-12' - } - }, - { - status: Status.UPSTREAM_FAILED, - submittedTs: new Date('2024-01-01').getTime(), - dateRange: { - startDate: '2024-01-01', - endDate: '2024-01-05' - } - } - ], - mainNode: { - name: 'job_10', - logicalType: LogicalType.JOIN - } -}; diff --git a/frontend/src/lib/util/series.ts b/frontend/src/lib/util/series.ts deleted file mode 100644 index 4f86229a48..0000000000 --- a/frontend/src/lib/util/series.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { zip, scaleOrdinal } from 'd3'; -import { Int64 } from '@creditkarma/thrift-server-core'; -import type { ITileDriftSeriesArgs } from '$src/lib/types/codegen'; -import { NULL_VALUE } from '$src/lib/constants/common'; -import { colors } from '$lib/components/charts/common'; - -export function getColumns(data: ITileDriftSeriesArgs[]) { - return [...new Set(data.map((d) => d.key?.column ?? 'Unknown'))]; -} - -export function transformSeries(series: ITileDriftSeriesArgs, columns: string[]) { - const colorScale = scaleOrdinal().domain(columns).range(colors); - const timestamps = series.timestamps ?? []; - const column = series.key?.column ?? 'Unknown'; - // `percentileDriftSeries` = numeric column, `histogramDriftSeries` = categorical column - const values = series.percentileDriftSeries ?? series.histogramDriftSeries ?? []; - - return { - key: column, - data: zip( - timestamps.map((ts) => Number(ts)), - values - ).map(([ts, value]) => ({ - date: new Date(ts as number), - value: value === NULL_VALUE ? null : value - })), - color: colorScale(column) - }; -} diff --git a/frontend/src/lib/util/test-data/generated/task-info-lineage.json b/frontend/src/lib/util/test-data/generated/task-info-lineage.json new file mode 100644 index 0000000000..408b327532 --- /dev/null +++ b/frontend/src/lib/util/test-data/generated/task-info-lineage.json @@ -0,0 +1,9802 @@ +{ + "data.txn_events": [ + { + "dateRange": { + "startDate": "2023-01-01T05:00:00.000Z", + "endDate": "2023-01-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745179336242, + "startedTs": 1672489448000, + "finishedTs": 1672545600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-02T05:00:00.000Z", + "endDate": "2023-01-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745187823242, + "startedTs": 1672583956000, + "finishedTs": 1672632000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-03T05:00:00.000Z", + "endDate": "2023-01-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745193252242, + "startedTs": 1672711175000, + "finishedTs": 1672718400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-04T05:00:00.000Z", + "endDate": "2023-01-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745179858242, + "startedTs": 1672799281000, + "finishedTs": 1672804800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-05T05:00:00.000Z", + "endDate": "2023-01-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745194790242, + "startedTs": 1672850123000, + "finishedTs": 1672891200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-06T05:00:00.000Z", + "endDate": "2023-01-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745193577242, + "startedTs": 1672935310000, + "finishedTs": 1672977600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-07T05:00:00.000Z", + "endDate": "2023-01-08T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745207583242, + "startedTs": 1673055078000, + "finishedTs": 1673064000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-08T05:00:00.000Z", + "endDate": "2023-01-09T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745180722242, + "startedTs": 1673138563000, + "finishedTs": 1673150400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-09T05:00:00.000Z", + "endDate": "2023-01-10T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745206598242, + "startedTs": 1673207531000, + "finishedTs": 1673236800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-10T05:00:00.000Z", + "endDate": "2023-01-11T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745160519242, + "startedTs": 1673249356000, + "finishedTs": 1673323200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-11T05:00:00.000Z", + "endDate": "2023-01-12T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745205069242, + "startedTs": 1673401123000, + "finishedTs": 1673409600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-12T05:00:00.000Z", + "endDate": "2023-01-13T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745184239242, + "startedTs": 1673444372000, + "finishedTs": 1673496000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-13T05:00:00.000Z", + "endDate": "2023-01-14T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745193848242, + "startedTs": 1673551484000, + "finishedTs": 1673582400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-14T05:00:00.000Z", + "endDate": "2023-01-15T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745208516242, + "startedTs": 1673641449000, + "finishedTs": 1673668800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-15T05:00:00.000Z", + "endDate": "2023-01-16T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745169606242, + "startedTs": 1673747007000, + "finishedTs": 1673755200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-16T05:00:00.000Z", + "endDate": "2023-01-17T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745188004242, + "startedTs": 1673793737000, + "finishedTs": 1673841600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-17T05:00:00.000Z", + "endDate": "2023-01-18T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745159055242, + "startedTs": 1673851188000, + "finishedTs": 1673928000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-18T05:00:00.000Z", + "endDate": "2023-01-19T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745192717242, + "startedTs": 1674002077000, + "finishedTs": 1674014400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-19T05:00:00.000Z", + "endDate": "2023-01-20T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745197158242, + "startedTs": 1674062091000, + "finishedTs": 1674100800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-20T05:00:00.000Z", + "endDate": "2023-01-21T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745178259242, + "startedTs": 1674129592000, + "finishedTs": 1674187200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-21T05:00:00.000Z", + "endDate": "2023-01-22T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745199778242, + "startedTs": 1674237511000, + "finishedTs": 1674273600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-22T05:00:00.000Z", + "endDate": "2023-01-23T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745164734242, + "startedTs": 1674288867000, + "finishedTs": 1674360000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-23T05:00:00.000Z", + "endDate": "2023-01-24T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745158559242, + "startedTs": 1674423842000, + "finishedTs": 1674446400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-24T05:00:00.000Z", + "endDate": "2023-01-25T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745165164242, + "startedTs": 1674465490000, + "finishedTs": 1674532800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-25T05:00:00.000Z", + "endDate": "2023-01-26T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745207446242, + "startedTs": 1674590779000, + "finishedTs": 1674619200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-26T05:00:00.000Z", + "endDate": "2023-01-27T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745163600242, + "startedTs": 1674652513000, + "finishedTs": 1674705600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-27T05:00:00.000Z", + "endDate": "2023-01-28T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745172210242, + "startedTs": 1674757375000, + "finishedTs": 1674792000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-28T05:00:00.000Z", + "endDate": "2023-01-29T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745158145242, + "startedTs": 1674825301000, + "finishedTs": 1674878400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-29T05:00:00.000Z", + "endDate": "2023-01-30T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745172413242, + "startedTs": 1674961893000, + "finishedTs": 1674964800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-30T05:00:00.000Z", + "endDate": "2023-01-31T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745165137242, + "startedTs": 1675008305000, + "finishedTs": 1675051200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-31T05:00:00.000Z", + "endDate": "2023-02-01T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745157355242, + "startedTs": 1675064239000, + "finishedTs": 1675137600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-01T05:00:00.000Z", + "endDate": "2023-02-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745191661242, + "startedTs": 1675179794000, + "finishedTs": 1675224000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-02T05:00:00.000Z", + "endDate": "2023-02-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745178333242, + "startedTs": 1675252866000, + "finishedTs": 1675310400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-03T05:00:00.000Z", + "endDate": "2023-02-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745160859242, + "startedTs": 1675393147000, + "finishedTs": 1675396800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-04T05:00:00.000Z", + "endDate": "2023-02-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745172222242, + "startedTs": 1675433747000, + "finishedTs": 1675483200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-05T05:00:00.000Z", + "endDate": "2023-02-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745180920242, + "startedTs": 1675560473000, + "finishedTs": 1675569600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-06T05:00:00.000Z", + "endDate": "2023-02-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745199362242, + "startedTs": 1675633337000, + "finishedTs": 1675656000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-07T05:00:00.000Z", + "endDate": "2023-02-08T04:59:59.999Z" + }, + "status": 3, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745169990242, + "startedTs": 1675722083000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-08T05:00:00.000Z", + "endDate": "2023-02-09T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745161616242, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-09T05:00:00.000Z", + "endDate": "2023-02-10T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745187994242, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-10T05:00:00.000Z", + "endDate": "2023-02-11T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745173595242, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + } + ], + "risk.transaction_events.txn_group_by_user": [ + { + "dateRange": { + "startDate": "2023-01-01T05:00:00.000Z", + "endDate": "2023-01-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745182113242, + "startedTs": 1672514046000, + "finishedTs": 1672545600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-02T05:00:00.000Z", + "endDate": "2023-01-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745170539242, + "startedTs": 1672621147000, + "finishedTs": 1672632000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-03T05:00:00.000Z", + "endDate": "2023-01-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745201686242, + "startedTs": 1672684219000, + "finishedTs": 1672718400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-04T05:00:00.000Z", + "endDate": "2023-01-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745168446242, + "startedTs": 1672753055000, + "finishedTs": 1672804800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-05T05:00:00.000Z", + "endDate": "2023-01-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745186241242, + "startedTs": 1672886053000, + "finishedTs": 1672891200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-06T05:00:00.000Z", + "endDate": "2023-01-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745190765242, + "startedTs": 1672945349000, + "finishedTs": 1672977600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-07T05:00:00.000Z", + "endDate": "2023-01-08T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745157418242, + "startedTs": 1673027189000, + "finishedTs": 1673064000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-08T05:00:00.000Z", + "endDate": "2023-01-09T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745165735242, + "startedTs": 1673086547000, + "finishedTs": 1673150400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-09T05:00:00.000Z", + "endDate": "2023-01-10T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745200024242, + "startedTs": 1673223955000, + "finishedTs": 1673236800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-10T05:00:00.000Z", + "endDate": "2023-01-11T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745165804242, + "startedTs": 1673306157000, + "finishedTs": 1673323200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-11T05:00:00.000Z", + "endDate": "2023-01-12T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745198441242, + "startedTs": 1673372174000, + "finishedTs": 1673409600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-12T05:00:00.000Z", + "endDate": "2023-01-13T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745174827242, + "startedTs": 1673463266000, + "finishedTs": 1673496000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-13T05:00:00.000Z", + "endDate": "2023-01-14T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745176460242, + "startedTs": 1673556136000, + "finishedTs": 1673582400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-14T05:00:00.000Z", + "endDate": "2023-01-15T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745209275242, + "startedTs": 1673663986000, + "finishedTs": 1673668800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-15T05:00:00.000Z", + "endDate": "2023-01-16T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745166757242, + "startedTs": 1673734865000, + "finishedTs": 1673755200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-16T05:00:00.000Z", + "endDate": "2023-01-17T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745177857242, + "startedTs": 1673814492000, + "finishedTs": 1673841600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-17T05:00:00.000Z", + "endDate": "2023-01-18T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745202259242, + "startedTs": 1673894392000, + "finishedTs": 1673928000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-18T05:00:00.000Z", + "endDate": "2023-01-19T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745154576242, + "startedTs": 1673943514000, + "finishedTs": 1674014400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-19T05:00:00.000Z", + "endDate": "2023-01-20T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745168246242, + "startedTs": 1674069472000, + "finishedTs": 1674100800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-20T05:00:00.000Z", + "endDate": "2023-01-21T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745179628242, + "startedTs": 1674130961000, + "finishedTs": 1674187200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-21T05:00:00.000Z", + "endDate": "2023-01-22T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745182986242, + "startedTs": 1674266091000, + "finishedTs": 1674273600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-22T05:00:00.000Z", + "endDate": "2023-01-23T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745192401242, + "startedTs": 1674316534000, + "finishedTs": 1674360000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-23T05:00:00.000Z", + "endDate": "2023-01-24T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745158680242, + "startedTs": 1674413694000, + "finishedTs": 1674446400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-24T05:00:00.000Z", + "endDate": "2023-01-25T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745170862242, + "startedTs": 1674467795000, + "finishedTs": 1674532800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-25T05:00:00.000Z", + "endDate": "2023-01-26T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745172294242, + "startedTs": 1674555627000, + "finishedTs": 1674619200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-26T05:00:00.000Z", + "endDate": "2023-01-27T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745189699242, + "startedTs": 1674659432000, + "finishedTs": 1674705600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-27T05:00:00.000Z", + "endDate": "2023-01-28T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745177604242, + "startedTs": 1674783093000, + "finishedTs": 1674792000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-28T05:00:00.000Z", + "endDate": "2023-01-29T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745207297242, + "startedTs": 1674849830000, + "finishedTs": 1674878400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-29T05:00:00.000Z", + "endDate": "2023-01-30T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745170127242, + "startedTs": 1674899060000, + "finishedTs": 1674964800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-30T05:00:00.000Z", + "endDate": "2023-01-31T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745159158242, + "startedTs": 1675030660000, + "finishedTs": 1675051200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-31T05:00:00.000Z", + "endDate": "2023-02-01T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745201619242, + "startedTs": 1675103352000, + "finishedTs": 1675137600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-01T05:00:00.000Z", + "endDate": "2023-02-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745185263242, + "startedTs": 1675208262000, + "finishedTs": 1675224000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-02T05:00:00.000Z", + "endDate": "2023-02-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745181918242, + "startedTs": 1675257435000, + "finishedTs": 1675310400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-03T05:00:00.000Z", + "endDate": "2023-02-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745204426242, + "startedTs": 1675365359000, + "finishedTs": 1675396800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-04T05:00:00.000Z", + "endDate": "2023-02-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745189837242, + "startedTs": 1675437170000, + "finishedTs": 1675483200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-05T05:00:00.000Z", + "endDate": "2023-02-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745171393242, + "startedTs": 1675505126000, + "finishedTs": 1675569600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-06T05:00:00.000Z", + "endDate": "2023-02-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745174561242, + "startedTs": 1675617899000, + "finishedTs": 1675656000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-07T05:00:00.000Z", + "endDate": "2023-02-08T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745191093242, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-08T05:00:00.000Z", + "endDate": "2023-02-09T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745174687242, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-09T05:00:00.000Z", + "endDate": "2023-02-10T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745181865242, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-10T05:00:00.000Z", + "endDate": "2023-02-11T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745174458242, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + } + ], + "risk.transaction_events.txn_group_by_merchant": [ + { + "dateRange": { + "startDate": "2023-01-01T05:00:00.000Z", + "endDate": "2023-01-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745193403242, + "startedTs": 1672503136000, + "finishedTs": 1672545600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-02T05:00:00.000Z", + "endDate": "2023-01-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745201668242, + "startedTs": 1672597801000, + "finishedTs": 1672632000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-03T05:00:00.000Z", + "endDate": "2023-01-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745209235242, + "startedTs": 1672703007000, + "finishedTs": 1672718400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-04T05:00:00.000Z", + "endDate": "2023-01-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745174054242, + "startedTs": 1672779623000, + "finishedTs": 1672804800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-05T05:00:00.000Z", + "endDate": "2023-01-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745209416242, + "startedTs": 1672864749000, + "finishedTs": 1672891200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-06T05:00:00.000Z", + "endDate": "2023-01-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745174623242, + "startedTs": 1672947618000, + "finishedTs": 1672977600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-07T05:00:00.000Z", + "endDate": "2023-01-08T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745164925242, + "startedTs": 1673002292000, + "finishedTs": 1673064000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-08T05:00:00.000Z", + "endDate": "2023-01-09T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745204695242, + "startedTs": 1673119228000, + "finishedTs": 1673150400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-09T05:00:00.000Z", + "endDate": "2023-01-10T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745210499242, + "startedTs": 1673219644000, + "finishedTs": 1673236800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-10T05:00:00.000Z", + "endDate": "2023-01-11T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745164622242, + "startedTs": 1673320721000, + "finishedTs": 1673323200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-11T05:00:00.000Z", + "endDate": "2023-01-12T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745205315242, + "startedTs": 1673379048000, + "finishedTs": 1673409600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-12T05:00:00.000Z", + "endDate": "2023-01-13T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745153458242, + "startedTs": 1673459353000, + "finishedTs": 1673496000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-13T05:00:00.000Z", + "endDate": "2023-01-14T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745161558242, + "startedTs": 1673516622000, + "finishedTs": 1673582400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-14T05:00:00.000Z", + "endDate": "2023-01-15T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745191905242, + "startedTs": 1673662185000, + "finishedTs": 1673668800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-15T05:00:00.000Z", + "endDate": "2023-01-16T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745181076242, + "startedTs": 1673704714000, + "finishedTs": 1673755200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-16T05:00:00.000Z", + "endDate": "2023-01-17T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745174937242, + "startedTs": 1673834405000, + "finishedTs": 1673841600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-17T05:00:00.000Z", + "endDate": "2023-01-18T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745164331242, + "startedTs": 1673874399000, + "finishedTs": 1673928000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-18T05:00:00.000Z", + "endDate": "2023-01-19T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745170614242, + "startedTs": 1673949147000, + "finishedTs": 1674014400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-19T05:00:00.000Z", + "endDate": "2023-01-20T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745175843242, + "startedTs": 1674088673000, + "finishedTs": 1674100800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-20T05:00:00.000Z", + "endDate": "2023-01-21T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745165917242, + "startedTs": 1674129081000, + "finishedTs": 1674187200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-21T05:00:00.000Z", + "endDate": "2023-01-22T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745193388242, + "startedTs": 1674231121000, + "finishedTs": 1674273600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-22T05:00:00.000Z", + "endDate": "2023-01-23T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745184871242, + "startedTs": 1674309004000, + "finishedTs": 1674360000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-23T05:00:00.000Z", + "endDate": "2023-01-24T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745171287242, + "startedTs": 1674417258000, + "finishedTs": 1674446400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-24T05:00:00.000Z", + "endDate": "2023-01-25T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745196307242, + "startedTs": 1674493240000, + "finishedTs": 1674532800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-25T05:00:00.000Z", + "endDate": "2023-01-26T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745173973242, + "startedTs": 1674557306000, + "finishedTs": 1674619200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-26T05:00:00.000Z", + "endDate": "2023-01-27T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745179826242, + "startedTs": 1674681337000, + "finishedTs": 1674705600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-27T05:00:00.000Z", + "endDate": "2023-01-28T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745204492242, + "startedTs": 1674760625000, + "finishedTs": 1674792000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-28T05:00:00.000Z", + "endDate": "2023-01-29T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745173303242, + "startedTs": 1674863718000, + "finishedTs": 1674878400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-29T05:00:00.000Z", + "endDate": "2023-01-30T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745167010242, + "startedTs": 1674923036000, + "finishedTs": 1674964800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-30T05:00:00.000Z", + "endDate": "2023-01-31T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745176496242, + "startedTs": 1674991829000, + "finishedTs": 1675051200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-31T05:00:00.000Z", + "endDate": "2023-02-01T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745182560242, + "startedTs": 1675125357000, + "finishedTs": 1675137600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-01T05:00:00.000Z", + "endDate": "2023-02-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745196865242, + "startedTs": 1675186681000, + "finishedTs": 1675224000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-02T05:00:00.000Z", + "endDate": "2023-02-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745158906242, + "startedTs": 1675263206000, + "finishedTs": 1675310400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-03T05:00:00.000Z", + "endDate": "2023-02-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745199707242, + "startedTs": 1675360640000, + "finishedTs": 1675396800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-04T05:00:00.000Z", + "endDate": "2023-02-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745200194242, + "startedTs": 1675458921000, + "finishedTs": 1675483200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-05T05:00:00.000Z", + "endDate": "2023-02-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745155507242, + "startedTs": 1675554226000, + "finishedTs": 1675569600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-06T05:00:00.000Z", + "endDate": "2023-02-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745176469242, + "startedTs": 1675596602000, + "finishedTs": 1675656000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-07T05:00:00.000Z", + "endDate": "2023-02-08T04:59:59.999Z" + }, + "status": 3, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745209135242, + "startedTs": 1675715668000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-08T05:00:00.000Z", + "endDate": "2023-02-09T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745176609242, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-09T05:00:00.000Z", + "endDate": "2023-02-10T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745156109242, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-10T05:00:00.000Z", + "endDate": "2023-02-11T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745208363242, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + } + ], + "data.users": [ + { + "dateRange": { + "startDate": "2023-01-01T05:00:00.000Z", + "endDate": "2023-01-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745163639242, + "startedTs": 1672483353000, + "finishedTs": 1672545600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-02T05:00:00.000Z", + "endDate": "2023-01-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745179911242, + "startedTs": 1672608062000, + "finishedTs": 1672632000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-03T05:00:00.000Z", + "endDate": "2023-01-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745178722242, + "startedTs": 1672678923000, + "finishedTs": 1672718400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-04T05:00:00.000Z", + "endDate": "2023-01-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745200009242, + "startedTs": 1672768942000, + "finishedTs": 1672804800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-05T05:00:00.000Z", + "endDate": "2023-01-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745163518242, + "startedTs": 1672878635000, + "finishedTs": 1672891200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-06T05:00:00.000Z", + "endDate": "2023-01-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745178840242, + "startedTs": 1672951402000, + "finishedTs": 1672977600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-07T05:00:00.000Z", + "endDate": "2023-01-08T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745178912242, + "startedTs": 1673007045000, + "finishedTs": 1673064000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-08T05:00:00.000Z", + "endDate": "2023-01-09T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745178032242, + "startedTs": 1673092565000, + "finishedTs": 1673150400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-09T05:00:00.000Z", + "endDate": "2023-01-10T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745205215242, + "startedTs": 1673215721000, + "finishedTs": 1673236800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-10T05:00:00.000Z", + "endDate": "2023-01-11T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745199225242, + "startedTs": 1673295065000, + "finishedTs": 1673323200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-11T05:00:00.000Z", + "endDate": "2023-01-12T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745165782242, + "startedTs": 1673400445000, + "finishedTs": 1673409600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-12T05:00:00.000Z", + "endDate": "2023-01-13T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745189588242, + "startedTs": 1673449721000, + "finishedTs": 1673496000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-13T05:00:00.000Z", + "endDate": "2023-01-14T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745208713242, + "startedTs": 1673555246000, + "finishedTs": 1673582400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-14T05:00:00.000Z", + "endDate": "2023-01-15T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745180815242, + "startedTs": 1673641286000, + "finishedTs": 1673668800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-15T05:00:00.000Z", + "endDate": "2023-01-16T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745200065242, + "startedTs": 1673719398000, + "finishedTs": 1673755200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-16T05:00:00.000Z", + "endDate": "2023-01-17T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745176600242, + "startedTs": 1673836941000, + "finishedTs": 1673841600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-17T05:00:00.000Z", + "endDate": "2023-01-18T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745204617242, + "startedTs": 1673925645000, + "finishedTs": 1673928000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-18T05:00:00.000Z", + "endDate": "2023-01-19T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745156084242, + "startedTs": 1673977941000, + "finishedTs": 1674014400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-19T05:00:00.000Z", + "endDate": "2023-01-20T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745179349242, + "startedTs": 1674044282000, + "finishedTs": 1674100800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-20T05:00:00.000Z", + "endDate": "2023-01-21T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745153467242, + "startedTs": 1674142591000, + "finishedTs": 1674187200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-21T05:00:00.000Z", + "endDate": "2023-01-22T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745178707242, + "startedTs": 1674225500000, + "finishedTs": 1674273600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-22T05:00:00.000Z", + "endDate": "2023-01-23T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745195681242, + "startedTs": 1674319814000, + "finishedTs": 1674360000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-23T05:00:00.000Z", + "endDate": "2023-01-24T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745190632242, + "startedTs": 1674404078000, + "finishedTs": 1674446400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-24T05:00:00.000Z", + "endDate": "2023-01-25T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745198127242, + "startedTs": 1674495060000, + "finishedTs": 1674532800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-25T05:00:00.000Z", + "endDate": "2023-01-26T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745177494242, + "startedTs": 1674601682000, + "finishedTs": 1674619200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-26T05:00:00.000Z", + "endDate": "2023-01-27T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745196750242, + "startedTs": 1674666483000, + "finishedTs": 1674705600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-27T05:00:00.000Z", + "endDate": "2023-01-28T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745177062242, + "startedTs": 1674754702000, + "finishedTs": 1674792000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-28T05:00:00.000Z", + "endDate": "2023-01-29T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745210194242, + "startedTs": 1674852727000, + "finishedTs": 1674878400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-29T05:00:00.000Z", + "endDate": "2023-01-30T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745187689242, + "startedTs": 1674916622000, + "finishedTs": 1674964800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-30T05:00:00.000Z", + "endDate": "2023-01-31T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745205734242, + "startedTs": 1675031200000, + "finishedTs": 1675051200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-31T05:00:00.000Z", + "endDate": "2023-02-01T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745196117242, + "startedTs": 1675118922000, + "finishedTs": 1675137600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-01T05:00:00.000Z", + "endDate": "2023-02-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745210557242, + "startedTs": 1675198690000, + "finishedTs": 1675224000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-02T05:00:00.000Z", + "endDate": "2023-02-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745157937242, + "startedTs": 1675281639000, + "finishedTs": 1675310400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-03T05:00:00.000Z", + "endDate": "2023-02-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745155569242, + "startedTs": 1675321037000, + "finishedTs": 1675396800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-04T05:00:00.000Z", + "endDate": "2023-02-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745164543242, + "startedTs": 1675438763000, + "finishedTs": 1675483200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-05T05:00:00.000Z", + "endDate": "2023-02-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745196683242, + "startedTs": 1675530416000, + "finishedTs": 1675569600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-06T05:00:00.000Z", + "endDate": "2023-02-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745187805242, + "startedTs": 1675647518000, + "finishedTs": 1675656000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-07T05:00:00.000Z", + "endDate": "2023-02-08T04:59:59.999Z" + }, + "status": 3, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745199510242, + "startedTs": 1675706043000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-08T05:00:00.000Z", + "endDate": "2023-02-09T04:59:59.999Z" + }, + "status": 3, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745177255242, + "startedTs": 1675782698000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-09T05:00:00.000Z", + "endDate": "2023-02-10T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745205479242, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-10T05:00:00.000Z", + "endDate": "2023-02-11T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745197647242, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + } + ], + "risk.user_data.user_group_by": [ + { + "dateRange": { + "startDate": "2023-01-01T05:00:00.000Z", + "endDate": "2023-01-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745164784242, + "startedTs": 1672474517000, + "finishedTs": 1672545600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-02T05:00:00.000Z", + "endDate": "2023-01-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745207188242, + "startedTs": 1672603321000, + "finishedTs": 1672632000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-03T05:00:00.000Z", + "endDate": "2023-01-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745173811242, + "startedTs": 1672687776000, + "finishedTs": 1672718400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-04T05:00:00.000Z", + "endDate": "2023-01-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745175626242, + "startedTs": 1672762476000, + "finishedTs": 1672804800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-05T05:00:00.000Z", + "endDate": "2023-01-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745153817242, + "startedTs": 1672821536000, + "finishedTs": 1672891200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-06T05:00:00.000Z", + "endDate": "2023-01-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745206270242, + "startedTs": 1672948003000, + "finishedTs": 1672977600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-07T05:00:00.000Z", + "endDate": "2023-01-08T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745179855242, + "startedTs": 1673011669000, + "finishedTs": 1673064000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-08T05:00:00.000Z", + "endDate": "2023-01-09T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745189781242, + "startedTs": 1673127263000, + "finishedTs": 1673150400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-09T05:00:00.000Z", + "endDate": "2023-01-10T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745201990242, + "startedTs": 1673226586000, + "finishedTs": 1673236800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-10T05:00:00.000Z", + "endDate": "2023-01-11T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745191250242, + "startedTs": 1673278583000, + "finishedTs": 1673323200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-11T05:00:00.000Z", + "endDate": "2023-01-12T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745202372242, + "startedTs": 1673376105000, + "finishedTs": 1673409600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-12T05:00:00.000Z", + "endDate": "2023-01-13T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745198650242, + "startedTs": 1673458783000, + "finishedTs": 1673496000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-13T05:00:00.000Z", + "endDate": "2023-01-14T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745194185242, + "startedTs": 1673540718000, + "finishedTs": 1673582400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-14T05:00:00.000Z", + "endDate": "2023-01-15T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745209055243, + "startedTs": 1673641988000, + "finishedTs": 1673668800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-15T05:00:00.000Z", + "endDate": "2023-01-16T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745198958243, + "startedTs": 1673718291000, + "finishedTs": 1673755200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-16T05:00:00.000Z", + "endDate": "2023-01-17T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745166570243, + "startedTs": 1673772303000, + "finishedTs": 1673841600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-17T05:00:00.000Z", + "endDate": "2023-01-18T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745190496243, + "startedTs": 1673917482000, + "finishedTs": 1673928000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-18T05:00:00.000Z", + "endDate": "2023-01-19T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745193987243, + "startedTs": 1673973094000, + "finishedTs": 1674014400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-19T05:00:00.000Z", + "endDate": "2023-01-20T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745188751243, + "startedTs": 1674090245000, + "finishedTs": 1674100800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-20T05:00:00.000Z", + "endDate": "2023-01-21T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745170172243, + "startedTs": 1674128399000, + "finishedTs": 1674187200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-21T05:00:00.000Z", + "endDate": "2023-01-22T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745172268243, + "startedTs": 1674216373000, + "finishedTs": 1674273600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-22T05:00:00.000Z", + "endDate": "2023-01-23T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745175338243, + "startedTs": 1674328958000, + "finishedTs": 1674360000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-23T05:00:00.000Z", + "endDate": "2023-01-24T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745162247243, + "startedTs": 1674445260000, + "finishedTs": 1674446400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-24T05:00:00.000Z", + "endDate": "2023-01-25T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745162317243, + "startedTs": 1674490579000, + "finishedTs": 1674532800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-25T05:00:00.000Z", + "endDate": "2023-01-26T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745200311243, + "startedTs": 1674588493000, + "finishedTs": 1674619200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-26T05:00:00.000Z", + "endDate": "2023-01-27T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745155373243, + "startedTs": 1674689385000, + "finishedTs": 1674705600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-27T05:00:00.000Z", + "endDate": "2023-01-28T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745172134243, + "startedTs": 1674728267000, + "finishedTs": 1674792000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-28T05:00:00.000Z", + "endDate": "2023-01-29T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745206642243, + "startedTs": 1674850672000, + "finishedTs": 1674878400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-29T05:00:00.000Z", + "endDate": "2023-01-30T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745161206243, + "startedTs": 1674942135000, + "finishedTs": 1674964800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-30T05:00:00.000Z", + "endDate": "2023-01-31T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745192685243, + "startedTs": 1675008018000, + "finishedTs": 1675051200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-31T05:00:00.000Z", + "endDate": "2023-02-01T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745167199243, + "startedTs": 1675115938000, + "finishedTs": 1675137600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-01T05:00:00.000Z", + "endDate": "2023-02-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745182267243, + "startedTs": 1675170400000, + "finishedTs": 1675224000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-02T05:00:00.000Z", + "endDate": "2023-02-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745172492243, + "startedTs": 1675269197000, + "finishedTs": 1675310400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-03T05:00:00.000Z", + "endDate": "2023-02-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745185817243, + "startedTs": 1675346750000, + "finishedTs": 1675396800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-04T05:00:00.000Z", + "endDate": "2023-02-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745172471243, + "startedTs": 1675422613000, + "finishedTs": 1675483200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-05T05:00:00.000Z", + "endDate": "2023-02-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745178186243, + "startedTs": 1675546101000, + "finishedTs": 1675569600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-06T05:00:00.000Z", + "endDate": "2023-02-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745194832243, + "startedTs": 1675621031000, + "finishedTs": 1675656000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-07T05:00:00.000Z", + "endDate": "2023-02-08T04:59:59.999Z" + }, + "status": 3, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745206122243, + "startedTs": 1675712655000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-08T05:00:00.000Z", + "endDate": "2023-02-09T04:59:59.999Z" + }, + "status": 3, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745197016243, + "startedTs": 1675789949000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-09T05:00:00.000Z", + "endDate": "2023-02-10T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745184143243, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-10T05:00:00.000Z", + "endDate": "2023-02-11T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745184923243, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + } + ], + "data.merchants": [ + { + "dateRange": { + "startDate": "2023-01-01T05:00:00.000Z", + "endDate": "2023-01-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745208123243, + "startedTs": 1672517856000, + "finishedTs": 1672545600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-02T05:00:00.000Z", + "endDate": "2023-01-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745201775243, + "startedTs": 1672597908000, + "finishedTs": 1672632000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-03T05:00:00.000Z", + "endDate": "2023-01-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745160265243, + "startedTs": 1672691743000, + "finishedTs": 1672718400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-04T05:00:00.000Z", + "endDate": "2023-01-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745183654243, + "startedTs": 1672752587000, + "finishedTs": 1672804800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-05T05:00:00.000Z", + "endDate": "2023-01-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745170634243, + "startedTs": 1672832021000, + "finishedTs": 1672891200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-06T05:00:00.000Z", + "endDate": "2023-01-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745184316243, + "startedTs": 1672933593000, + "finishedTs": 1672977600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-07T05:00:00.000Z", + "endDate": "2023-01-08T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745177726243, + "startedTs": 1673030586000, + "finishedTs": 1673064000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-08T05:00:00.000Z", + "endDate": "2023-01-09T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745164718243, + "startedTs": 1673134189000, + "finishedTs": 1673150400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-09T05:00:00.000Z", + "endDate": "2023-01-10T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745199364243, + "startedTs": 1673200297000, + "finishedTs": 1673236800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-10T05:00:00.000Z", + "endDate": "2023-01-11T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745194901243, + "startedTs": 1673282234000, + "finishedTs": 1673323200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-11T05:00:00.000Z", + "endDate": "2023-01-12T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745202184243, + "startedTs": 1673386894000, + "finishedTs": 1673409600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-12T05:00:00.000Z", + "endDate": "2023-01-13T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745206147243, + "startedTs": 1673466280000, + "finishedTs": 1673496000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-13T05:00:00.000Z", + "endDate": "2023-01-14T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745160046243, + "startedTs": 1673520730000, + "finishedTs": 1673582400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-14T05:00:00.000Z", + "endDate": "2023-01-15T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745165904243, + "startedTs": 1673607491000, + "finishedTs": 1673668800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-15T05:00:00.000Z", + "endDate": "2023-01-16T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745204221243, + "startedTs": 1673723554000, + "finishedTs": 1673755200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-16T05:00:00.000Z", + "endDate": "2023-01-17T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745175149243, + "startedTs": 1673784894000, + "finishedTs": 1673841600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-17T05:00:00.000Z", + "endDate": "2023-01-18T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745169690243, + "startedTs": 1673925737000, + "finishedTs": 1673928000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-18T05:00:00.000Z", + "endDate": "2023-01-19T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745165661243, + "startedTs": 1673971162000, + "finishedTs": 1674014400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-19T05:00:00.000Z", + "endDate": "2023-01-20T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745203541243, + "startedTs": 1674100376000, + "finishedTs": 1674100800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-20T05:00:00.000Z", + "endDate": "2023-01-21T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745181099243, + "startedTs": 1674142876000, + "finishedTs": 1674187200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-21T05:00:00.000Z", + "endDate": "2023-01-22T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745186561243, + "startedTs": 1674269850000, + "finishedTs": 1674273600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-22T05:00:00.000Z", + "endDate": "2023-01-23T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745167447243, + "startedTs": 1674350872000, + "finishedTs": 1674360000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-23T05:00:00.000Z", + "endDate": "2023-01-24T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745179943243, + "startedTs": 1674393598000, + "finishedTs": 1674446400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-24T05:00:00.000Z", + "endDate": "2023-01-25T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745196195243, + "startedTs": 1674509280000, + "finishedTs": 1674532800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-25T05:00:00.000Z", + "endDate": "2023-01-26T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745208180243, + "startedTs": 1674591513000, + "finishedTs": 1674619200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-26T05:00:00.000Z", + "endDate": "2023-01-27T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745174346243, + "startedTs": 1674658582000, + "finishedTs": 1674705600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-27T05:00:00.000Z", + "endDate": "2023-01-28T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745172231243, + "startedTs": 1674740716000, + "finishedTs": 1674792000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-28T05:00:00.000Z", + "endDate": "2023-01-29T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745209677243, + "startedTs": 1674852210000, + "finishedTs": 1674878400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-29T05:00:00.000Z", + "endDate": "2023-01-30T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745207172243, + "startedTs": 1674936105000, + "finishedTs": 1674964800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-30T05:00:00.000Z", + "endDate": "2023-01-31T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745193731243, + "startedTs": 1675026599000, + "finishedTs": 1675051200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-31T05:00:00.000Z", + "endDate": "2023-02-01T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745187340243, + "startedTs": 1675112404000, + "finishedTs": 1675137600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-01T05:00:00.000Z", + "endDate": "2023-02-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745162694243, + "startedTs": 1675205752000, + "finishedTs": 1675224000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-02T05:00:00.000Z", + "endDate": "2023-02-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745176514243, + "startedTs": 1675306328000, + "finishedTs": 1675310400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-03T05:00:00.000Z", + "endDate": "2023-02-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745198159243, + "startedTs": 1675359092000, + "finishedTs": 1675396800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-04T05:00:00.000Z", + "endDate": "2023-02-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745159396243, + "startedTs": 1675468708000, + "finishedTs": 1675483200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-05T05:00:00.000Z", + "endDate": "2023-02-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745177348243, + "startedTs": 1675539305000, + "finishedTs": 1675569600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-06T05:00:00.000Z", + "endDate": "2023-02-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745163141243, + "startedTs": 1675583274000, + "finishedTs": 1675656000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-07T05:00:00.000Z", + "endDate": "2023-02-08T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745199444243, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-08T05:00:00.000Z", + "endDate": "2023-02-09T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745201788243, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-09T05:00:00.000Z", + "endDate": "2023-02-10T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745199652243, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-10T05:00:00.000Z", + "endDate": "2023-02-11T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745210538243, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + } + ], + "risk.merchant_data.merchant_group_by": [ + { + "dateRange": { + "startDate": "2023-01-01T05:00:00.000Z", + "endDate": "2023-01-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745205878243, + "startedTs": 1672539673000, + "finishedTs": 1672545600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-02T05:00:00.000Z", + "endDate": "2023-01-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745181485243, + "startedTs": 1672593338000, + "finishedTs": 1672632000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-03T05:00:00.000Z", + "endDate": "2023-01-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745183475243, + "startedTs": 1672666008000, + "finishedTs": 1672718400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-04T05:00:00.000Z", + "endDate": "2023-01-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745172515243, + "startedTs": 1672782317000, + "finishedTs": 1672804800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-05T05:00:00.000Z", + "endDate": "2023-01-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745207538243, + "startedTs": 1672870187000, + "finishedTs": 1672891200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-06T05:00:00.000Z", + "endDate": "2023-01-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745178151243, + "startedTs": 1672932153000, + "finishedTs": 1672977600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-07T05:00:00.000Z", + "endDate": "2023-01-08T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745161921243, + "startedTs": 1673006719000, + "finishedTs": 1673064000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-08T05:00:00.000Z", + "endDate": "2023-01-09T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745176522243, + "startedTs": 1673135990000, + "finishedTs": 1673150400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-09T05:00:00.000Z", + "endDate": "2023-01-10T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745179659243, + "startedTs": 1673190409000, + "finishedTs": 1673236800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-10T05:00:00.000Z", + "endDate": "2023-01-11T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745200320243, + "startedTs": 1673316845000, + "finishedTs": 1673323200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-11T05:00:00.000Z", + "endDate": "2023-01-12T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745173214243, + "startedTs": 1673400769000, + "finishedTs": 1673409600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-12T05:00:00.000Z", + "endDate": "2023-01-13T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745163002243, + "startedTs": 1673476861000, + "finishedTs": 1673496000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-13T05:00:00.000Z", + "endDate": "2023-01-14T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745156473243, + "startedTs": 1673545585000, + "finishedTs": 1673582400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-14T05:00:00.000Z", + "endDate": "2023-01-15T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745179499243, + "startedTs": 1673634927000, + "finishedTs": 1673668800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-15T05:00:00.000Z", + "endDate": "2023-01-16T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745189497243, + "startedTs": 1673708830000, + "finishedTs": 1673755200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-16T05:00:00.000Z", + "endDate": "2023-01-17T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745187565243, + "startedTs": 1673819611000, + "finishedTs": 1673841600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-17T05:00:00.000Z", + "endDate": "2023-01-18T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745202979243, + "startedTs": 1673908736000, + "finishedTs": 1673928000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-18T05:00:00.000Z", + "endDate": "2023-01-19T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745155026243, + "startedTs": 1673992671000, + "finishedTs": 1674014400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-19T05:00:00.000Z", + "endDate": "2023-01-20T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745173814243, + "startedTs": 1674093500000, + "finishedTs": 1674100800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-20T05:00:00.000Z", + "endDate": "2023-01-21T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745207994243, + "startedTs": 1674159327000, + "finishedTs": 1674187200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-21T05:00:00.000Z", + "endDate": "2023-01-22T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745164034243, + "startedTs": 1674257329000, + "finishedTs": 1674273600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-22T05:00:00.000Z", + "endDate": "2023-01-23T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745199600243, + "startedTs": 1674352371000, + "finishedTs": 1674360000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-23T05:00:00.000Z", + "endDate": "2023-01-24T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745165314243, + "startedTs": 1674389907000, + "finishedTs": 1674446400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-24T05:00:00.000Z", + "endDate": "2023-01-25T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745200258243, + "startedTs": 1674532762000, + "finishedTs": 1674532800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-25T05:00:00.000Z", + "endDate": "2023-01-26T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745171408243, + "startedTs": 1674554741000, + "finishedTs": 1674619200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-26T05:00:00.000Z", + "endDate": "2023-01-27T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745163606243, + "startedTs": 1674646680000, + "finishedTs": 1674705600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-27T05:00:00.000Z", + "endDate": "2023-01-28T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745169963243, + "startedTs": 1674788148000, + "finishedTs": 1674792000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-28T05:00:00.000Z", + "endDate": "2023-01-29T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745161118243, + "startedTs": 1674876230000, + "finishedTs": 1674878400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-29T05:00:00.000Z", + "endDate": "2023-01-30T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745178662243, + "startedTs": 1674933455000, + "finishedTs": 1674964800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-30T05:00:00.000Z", + "endDate": "2023-01-31T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745200666243, + "startedTs": 1675031869000, + "finishedTs": 1675051200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-31T05:00:00.000Z", + "endDate": "2023-02-01T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745193865243, + "startedTs": 1675105388000, + "finishedTs": 1675137600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-01T05:00:00.000Z", + "endDate": "2023-02-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745202667243, + "startedTs": 1675190800000, + "finishedTs": 1675224000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-02T05:00:00.000Z", + "endDate": "2023-02-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745182690243, + "startedTs": 1675302283000, + "finishedTs": 1675310400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-03T05:00:00.000Z", + "endDate": "2023-02-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745209130243, + "startedTs": 1675370063000, + "finishedTs": 1675396800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-04T05:00:00.000Z", + "endDate": "2023-02-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745166657243, + "startedTs": 1675436408000, + "finishedTs": 1675483200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-05T05:00:00.000Z", + "endDate": "2023-02-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745180271243, + "startedTs": 1675548603000, + "finishedTs": 1675569600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-06T05:00:00.000Z", + "endDate": "2023-02-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745175101243, + "startedTs": 1675599033000, + "finishedTs": 1675656000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-07T05:00:00.000Z", + "endDate": "2023-02-08T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745207849243, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-08T05:00:00.000Z", + "endDate": "2023-02-09T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745199225243, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-09T05:00:00.000Z", + "endDate": "2023-02-10T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745187947243, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-10T05:00:00.000Z", + "endDate": "2023-02-11T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745172032243, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + } + ], + "risk.user_transactions.txn_join": [ + { + "dateRange": { + "startDate": "2023-01-01T05:00:00.000Z", + "endDate": "2023-01-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745194589243, + "startedTs": 1672504322000, + "finishedTs": 1672545600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-02T05:00:00.000Z", + "endDate": "2023-01-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745190483243, + "startedTs": 1672602010000, + "finishedTs": 1672632000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-03T05:00:00.000Z", + "endDate": "2023-01-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745190331243, + "startedTs": 1672698402000, + "finishedTs": 1672718400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-04T05:00:00.000Z", + "endDate": "2023-01-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745193410243, + "startedTs": 1672786788000, + "finishedTs": 1672804800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-05T05:00:00.000Z", + "endDate": "2023-01-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745182856243, + "startedTs": 1672878844000, + "finishedTs": 1672891200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-06T05:00:00.000Z", + "endDate": "2023-01-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745197612243, + "startedTs": 1672939345000, + "finishedTs": 1672977600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-07T05:00:00.000Z", + "endDate": "2023-01-08T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745189275243, + "startedTs": 1673017408000, + "finishedTs": 1673064000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-08T05:00:00.000Z", + "endDate": "2023-01-09T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745162622243, + "startedTs": 1673131761000, + "finishedTs": 1673150400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-09T05:00:00.000Z", + "endDate": "2023-01-10T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745160998243, + "startedTs": 1673186552000, + "finishedTs": 1673236800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-10T05:00:00.000Z", + "endDate": "2023-01-11T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745190854243, + "startedTs": 1673281001000, + "finishedTs": 1673323200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-11T05:00:00.000Z", + "endDate": "2023-01-12T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745197940243, + "startedTs": 1673371673000, + "finishedTs": 1673409600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-12T05:00:00.000Z", + "endDate": "2023-01-13T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745159557243, + "startedTs": 1673434843000, + "finishedTs": 1673496000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-13T05:00:00.000Z", + "endDate": "2023-01-14T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745172826243, + "startedTs": 1673578517000, + "finishedTs": 1673582400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-14T05:00:00.000Z", + "endDate": "2023-01-15T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745166870243, + "startedTs": 1673628914000, + "finishedTs": 1673668800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-15T05:00:00.000Z", + "endDate": "2023-01-16T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745199206243, + "startedTs": 1673749176000, + "finishedTs": 1673755200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-16T05:00:00.000Z", + "endDate": "2023-01-17T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745193772243, + "startedTs": 1673833085000, + "finishedTs": 1673841600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-17T05:00:00.000Z", + "endDate": "2023-01-18T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745166877243, + "startedTs": 1673859010000, + "finishedTs": 1673928000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-18T05:00:00.000Z", + "endDate": "2023-01-19T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745173717243, + "startedTs": 1673983434000, + "finishedTs": 1674014400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-19T05:00:00.000Z", + "endDate": "2023-01-20T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745182750243, + "startedTs": 1674047683000, + "finishedTs": 1674100800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-20T05:00:00.000Z", + "endDate": "2023-01-21T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745156448243, + "startedTs": 1674157632000, + "finishedTs": 1674187200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-21T05:00:00.000Z", + "endDate": "2023-01-22T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745175091243, + "startedTs": 1674260118000, + "finishedTs": 1674273600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-22T05:00:00.000Z", + "endDate": "2023-01-23T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745164593243, + "startedTs": 1674320134000, + "finishedTs": 1674360000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-23T05:00:00.000Z", + "endDate": "2023-01-24T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745178425243, + "startedTs": 1674406787000, + "finishedTs": 1674446400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-24T05:00:00.000Z", + "endDate": "2023-01-25T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745155339243, + "startedTs": 1674502833000, + "finishedTs": 1674532800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-25T05:00:00.000Z", + "endDate": "2023-01-26T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745168284243, + "startedTs": 1674566272000, + "finishedTs": 1674619200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-26T05:00:00.000Z", + "endDate": "2023-01-27T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745177841243, + "startedTs": 1674664152000, + "finishedTs": 1674705600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-27T05:00:00.000Z", + "endDate": "2023-01-28T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745182766243, + "startedTs": 1674753801000, + "finishedTs": 1674792000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-28T05:00:00.000Z", + "endDate": "2023-01-29T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745158981243, + "startedTs": 1674801514000, + "finishedTs": 1674878400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-29T05:00:00.000Z", + "endDate": "2023-01-30T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745195367243, + "startedTs": 1674937908000, + "finishedTs": 1674964800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-30T05:00:00.000Z", + "endDate": "2023-01-31T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745160022243, + "startedTs": 1675027149000, + "finishedTs": 1675051200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-01-31T05:00:00.000Z", + "endDate": "2023-02-01T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745193998243, + "startedTs": 1675095731000, + "finishedTs": 1675137600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-01T05:00:00.000Z", + "endDate": "2023-02-02T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745162366243, + "startedTs": 1675221054000, + "finishedTs": 1675224000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-02T05:00:00.000Z", + "endDate": "2023-02-03T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745167483243, + "startedTs": 1675242016000, + "finishedTs": 1675310400000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-03T05:00:00.000Z", + "endDate": "2023-02-04T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745172251243, + "startedTs": 1675393519000, + "finishedTs": 1675396800000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-04T05:00:00.000Z", + "endDate": "2023-02-05T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745153656243, + "startedTs": 1675472767000, + "finishedTs": 1675483200000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-05T05:00:00.000Z", + "endDate": "2023-02-06T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745204463243, + "startedTs": 1675538196000, + "finishedTs": 1675569600000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-06T05:00:00.000Z", + "endDate": "2023-02-07T04:59:59.999Z" + }, + "status": 4, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745188314243, + "startedTs": 1675650297000, + "finishedTs": 1675656000000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-07T05:00:00.000Z", + "endDate": "2023-02-08T04:59:59.999Z" + }, + "status": 3, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745191559243, + "startedTs": 1675698092000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-08T05:00:00.000Z", + "endDate": "2023-02-09T04:59:59.999Z" + }, + "status": 3, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745204395243, + "startedTs": 1675797328000, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-09T05:00:00.000Z", + "endDate": "2023-02-10T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745175605243, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + }, + { + "dateRange": { + "startDate": "2023-02-10T05:00:00.000Z", + "endDate": "2023-02-11T04:59:59.999Z" + }, + "status": 2, + "logPath": "/var/log/...", + "trackerUrl": "https://example.com/...", + "taskArgs": { + "argsList": [], + "env": {} + }, + "submittedTs": 1745181585243, + "user": "user", + "team": "team", + "allocatedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + }, + "utilizedResources": { + "cumulativeDiskReadBytes": 1, + "cumulativeDiskWriteBytes": 1, + "megaByteSeconds": 1, + "vcoreSeconds": 1 + } + } + ] +} diff --git a/frontend/src/lib/util/test-data/task-info.ts b/frontend/src/lib/util/test-data/task-info.ts new file mode 100644 index 0000000000..49d8afc749 --- /dev/null +++ b/frontend/src/lib/util/test-data/task-info.ts @@ -0,0 +1,182 @@ +import { randomInteger } from '@layerstack/utils'; +import { + Status, + type ITaskInfoArgs, + type ILineageResponseArgs, + type INodeKeyArgs +} from '../../types/codegen'; +import { timeDay } from 'd3'; +import { startOfDay, endOfDay } from 'date-fns'; + +/** + * Consider upstream (parents) status for each node's status + */ +export function generateLineageTaskInfoData({ + node, + lineage, + startDate, + endDate +}: { + node: INodeKeyArgs; + lineage: ILineageResponseArgs | null; + startDate: Date; + endDate: Date; +}): Record { + let tasks: Record = {}; + + // const node = lineage?.mainNode; + const parents = node ? (lineage?.nodeGraph?.connections?.get(node)?.parents ?? []) : []; + + // Resurively generate tasks for each parent + let upstreamTasks: Record = {}; + for (const parent of parents ?? []) { + const parentTasks = generateLineageTaskInfoData({ + node: parent, + lineage, + startDate, + endDate + }); + + upstreamTasks = { ...upstreamTasks, ...parentTasks }; + } + tasks = { ...upstreamTasks, ...tasks }; + + tasks[node.name ?? 'Unknown'] = generateTaskInfoData({ + startDate, + endDate, + upstreamTasks + }); + + return tasks; +} + +export function generateTaskInfoData({ + startDate, + endDate, + upstreamTasks +}: { + startDate: Date; + endDate: Date; + upstreamTasks: Record; +}): ITaskInfoArgs[] { + const tasks: ITaskInfoArgs[] = []; + + const upstreamStatuses = Object.values(upstreamTasks).map((tasks) => { + return tasks.map((t) => t.status); + }); + + const days = timeDay.range(startDate, endDate); + + for (const [i, day] of days.entries()) { + // Respect upstream when generating task status + const upstreamFailure = upstreamStatuses.some((upstream) => { + return upstream[i] === Status.FAILED; + }); + + const upstreamRunning = upstreamStatuses.some((upstream) => { + return upstream[i] === Status.RUNNING; + }); + + const upstreamQueued = upstreamStatuses.some((upstream) => { + return upstream[i] === Status.QUEUED; + }); + + const previousStatus = tasks[i - 1]?.status; + + const status = upstreamFailure + ? Status.FAILED + : upstreamRunning + ? Status.RUNNING + : upstreamQueued || previousStatus === Status.QUEUED + ? Status.QUEUED + : i < days.length * 0.9 + ? Status.SUCCESS + : getRandomStatus(); + + // Submitted sometime in the last 8-24 hours + const submittedTimeOffsetMin = randomInteger(8 * 60 * 60, 24 * 60 * 60); + + // Started sometime in the last 1-24 hours + const startedTimeOffsetMin = Math.min( + submittedTimeOffsetMin, + randomInteger(1 * 60 * 60, 24 * 60 * 60) + ); + + // Started sometime in the last 1-24 hours + const finishedTimeOffsetMin = Math.min( + startedTimeOffsetMin, + randomInteger(1 * 60 * 60, 1 * 60 * 60) + ); + + const task: ITaskInfoArgs = { + dateRange: { + startDate: startOfDay(day).toISOString(), + endDate: endOfDay(day).toISOString() + }, + status, + + // TODO: Improve generated properties + logPath: '/var/log/...', + trackerUrl: 'https://example.com/...', + taskArgs: { + argsList: [], + env: new Map() + }, + + submittedTs: new Date().getTime() - submittedTimeOffsetMin * 1000, + startedTs: ![Status.QUEUED].includes(status) + ? day.getTime() - startedTimeOffsetMin * 1000 + : undefined, + finishedTs: [Status.SUCCESS, Status.FAILED].includes(status) + ? day.getTime() - finishedTimeOffsetMin * 1000 + : undefined, + + user: 'user', + team: 'team', + + allocatedResources: { + cumulativeDiskReadBytes: 1, + cumulativeDiskWriteBytes: 1, + megaByteSeconds: 1, + vcoreSeconds: 1 + }, + utilizedResources: { + cumulativeDiskReadBytes: 1, + cumulativeDiskWriteBytes: 1, + megaByteSeconds: 1, + vcoreSeconds: 1 + } + }; + tasks.push(task); + } + + return tasks; +} + +// function getRandomStatus(): Status { +// const rand = Math.random(); +// if (rand < 0.02) { +// // 2% RUNNING +// return Status.RUNNING; +// } else if (rand < 0.07) { +// // 5% QUEUED +// return Status.QUEUED; +// } else if (rand < 0.075) { +// // 0.5% FAILED +// return Status.FAILED; +// } +// return Status.SUCCESS; // 92.5% SUCCESS +// } + +function getRandomStatus(): Status { + const rand = Math.random(); + if (rand < 0.1) { + // 10% SUCCESS + return Status.SUCCESS; + } + if (rand < 0.5) { + // 50% RUNNING + return Status.RUNNING; + } + return Status.QUEUED; // 40% QUEUED +} diff --git a/frontend/src/lib/util/test-data/tile-series.ts b/frontend/src/lib/util/test-data/tile-series.ts new file mode 100644 index 0000000000..9757eb1e13 --- /dev/null +++ b/frontend/src/lib/util/test-data/tile-series.ts @@ -0,0 +1,143 @@ +import { randomUniform, randomInt } from 'd3'; +import type { + ITileDriftSeriesArgs, + ITileSeriesKeyArgs, + ITileSummarySeriesArgs +} from '../../types/codegen'; + +export function generateTileSummarySeriesData({ + key, + startDate, + endDate, + points, + normal, + anomalies = [], + totalType = 'integer' +}: { + key: ITileSeriesKeyArgs; + startDate: Date; + endDate: Date; + points: number; + normal: { + total: number[] | null; + nullRatio: number[]; + }; + anomalies?: { startDate: Date; endDate: Date; total: number[] | null; nullRatio: number[] }[]; + totalType?: 'integer' | 'decimal'; +}): ITileSummarySeriesArgs { + return generateSeriesData({ + key, + startDate, + endDate, + points, + normal, + anomalies, + totalType + }); +} + +export function generateTileDriftSeriesData({ + key, + startDate, + endDate, + points, + normal, + anomalies = [], + totalType = 'integer' +}: { + key: ITileSeriesKeyArgs; + startDate: Date; + endDate: Date; + points: number; + normal: { + total: number[] | null; + nullRatio: number[]; + }; + anomalies?: { startDate: Date; endDate: Date; total: number[] | null; nullRatio: number[] }[]; + totalType?: 'integer' | 'decimal'; +}): ITileDriftSeriesArgs { + return generateSeriesData({ + key, + startDate, + endDate, + points, + normal, + anomalies, + columns: { + count: 'countChangePercentSeries', + nullCount: 'nullRatioChangePercentSeries' + }, + totalType + }); +} + +function generateSeriesData({ + key, + startDate, + endDate, + points, + normal, + anomalies = [], + columns = { + count: 'count', + nullCount: 'nullCount' + }, + totalType = 'integer' +}: { + key: ITileSeriesKeyArgs; + startDate: Date; + endDate: Date; + points: number; + normal: { + total: number[] | null; + nullRatio: number[]; + }; + anomalies?: { startDate: Date; endDate: Date; total: number[] | null; nullRatio: number[] }[]; + columns?: { + count: string; + nullCount: string; + }; + totalType?: 'integer' | 'decimal'; +}) { + const startDateTime = startDate.getTime(); + const endDateTime = endDate.getTime(); + const timeStep = (endDateTime - startDateTime) / (points - 1); + + const timestamps: number[] = []; + const nullCount: number[] = []; + const count: number[] = []; + + for (let i = 0; i < points; i++) { + const timestamp = startDateTime + timeStep * i; + timestamps.push(timestamp); + + const anomaly = anomalies.find( + ({ startDate, endDate }) => timestamp >= startDate.getTime() && timestamp <= endDate.getTime() + ); + + const randomNumber = totalType === 'decimal' ? randomUniform : randomInt; + + if (anomaly) { + if (anomaly.total) { + const total = randomNumber(anomaly.total[0], anomaly.total[1])(); + const nullRatio = randomUniform(anomaly.nullRatio[0], anomaly.nullRatio[1])(); + count.push(total * (1 - nullRatio)); + nullCount.push(total * nullRatio); + } + } else { + if (normal.total) { + const total = randomNumber(normal.total[0], normal.total[1])(); + const nullRatio = randomUniform(normal.nullRatio[0], normal.nullRatio[1])(); + count.push(total * (1 - nullRatio)); + nullCount.push(total * nullRatio); + } + } + } + + return { + key, + timestamps, + [columns.count]: count, + [columns.nullCount]: nullCount + }; +} diff --git a/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts deleted file mode 100644 index 17fbd0418b..0000000000 --- a/frontend/src/lib/utils.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { cubicOut } from 'svelte/easing'; -import type { TransitionConfig } from 'svelte/transition'; - -type FlyAndScaleParams = { - y?: number; - x?: number; - start?: number; - duration?: number; -}; - -export const flyAndScale = ( - node: Element, - params: FlyAndScaleParams = { y: -8, x: 0, start: 0.95, duration: 150 } -): TransitionConfig => { - const style = getComputedStyle(node); - const transform = style.transform === 'none' ? '' : style.transform; - - const scaleConversion = (valueA: number, scaleA: [number, number], scaleB: [number, number]) => { - const [minA, maxA] = scaleA; - const [minB, maxB] = scaleB; - - const percentage = (valueA - minA) / (maxA - minA); - const valueB = percentage * (maxB - minB) + minB; - - return valueB; - }; - - const styleToString = (style: Record): string => { - return Object.keys(style).reduce((str, key) => { - if (style[key] === undefined) return str; - return str + `${key}:${style[key]};`; - }, ''); - }; - - return { - duration: params.duration ?? 200, - delay: 0, - css: (t) => { - const y = scaleConversion(t, [0, 1], [params.y ?? 5, 0]); - const x = scaleConversion(t, [0, 1], [params.x ?? 0, 0]); - const scale = scaleConversion(t, [0, 1], [params.start ?? 0.95, 1]); - - return styleToString({ - transform: `${transform} translate3d(${x}px, ${y}px, 0) scale(${scale})`, - opacity: t - }); - }, - easing: cubicOut - }; -}; diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte index 5d5409a166..999fb1e8b0 100644 --- a/frontend/src/routes/+layout.svelte +++ b/frontend/src/routes/+layout.svelte @@ -1,13 +1,12 @@ - +
    - - - c.confType != null)} {user} /> - +
    - - + +
    {@render children()}
    diff --git a/frontend/src/routes/[conf]/+page.server.ts b/frontend/src/routes/[conf]/+page.server.ts index a0099694ad..93742d1c38 100644 --- a/frontend/src/routes/[conf]/+page.server.ts +++ b/frontend/src/routes/[conf]/+page.server.ts @@ -28,9 +28,7 @@ export async function load({ fetch, url }) { const items = response[responseKey] ?? []; return { - items: items, - basePath: path, - title: entityConfig.label + items }; } catch (error) { console.error(`Failed to load ${entityConfig.label.toLowerCase()}:`, error); diff --git a/frontend/src/routes/[conf]/+page.svelte b/frontend/src/routes/[conf]/+page.svelte index aa7c83d774..0ac37e6530 100644 --- a/frontend/src/routes/[conf]/+page.svelte +++ b/frontend/src/routes/[conf]/+page.svelte @@ -1,13 +1,16 @@ {#if entityConfig} - - + (searchTerm = e.currentTarget.value)} + classes={{ + root: 'max-w-xs mb-3 [--color:unset]', + container: 'bg-transparent' + }} + bind:value={searchTerm} /> - + + + + {#each data ?? [] as rowData, rowIndex} + + {#each columns as column (column.name)} + {@const value = getCellValue(column, rowData, rowIndex)} + + {/each} + + {:else} + + + + {/each} + +
    + {#if column.name === 'metaData.name'} + + {value} + + {:else if ['metaData.online', 'metaData.production'].includes(column.name)} + + {:else} + {getCellContent(column, rowData, rowIndex)} + {/if} +
    No {entityConfig.label.toLowerCase()} found.
    {:else} {/if} diff --git a/frontend/src/routes/[conf]/[name]/+layout.svelte b/frontend/src/routes/[conf]/[name]/+layout.svelte index da4508e686..98d07164dd 100644 --- a/frontend/src/routes/[conf]/[name]/+layout.svelte +++ b/frontend/src/routes/[conf]/[name]/+layout.svelte @@ -1,15 +1,32 @@ - - - - +
    + { + goto(`/${conf}/${name}/${e.detail.value}`); + }} + > + + Overview - - - - Job tracking - - - - {#if page.params.conf === 'joins'} - - - Observability - + + + + + Offline + + + + + Online + + + +
    + {#if isZoomed()} + {/if} - - - {@render children()} - + {#if secondaryNav === 'drift'} + +
    days
    +
    + {/if} + + + +
    +
    + +{@render children()} diff --git a/frontend/src/routes/[conf]/[name]/+page.svelte b/frontend/src/routes/[conf]/[name]/+page.svelte index 23ba388e94..b999b11a72 100644 --- a/frontend/src/routes/[conf]/[name]/+page.svelte +++ b/frontend/src/routes/[conf]/[name]/+page.svelte @@ -1 +1 @@ - + diff --git a/frontend/src/routes/[conf]/[name]/job-tracking/+page.svelte b/frontend/src/routes/[conf]/[name]/job-tracking/+page.svelte deleted file mode 100644 index 274a40fe5e..0000000000 --- a/frontend/src/routes/[conf]/[name]/job-tracking/+page.svelte +++ /dev/null @@ -1,295 +0,0 @@ - - -
    - - {#snippet headerContentRight()} - - {/snippet} - {#snippet collapsibleContent()} - -
    - - - - - - - - - - -
    - {/snippet} -
    - - - - - {#snippet headerContentRight()} - - - - - - - - - {/snippet} - {#snippet collapsibleContent()} -
    -
    - -
    - {#if $rows.length > 0} - {@const firstJob = ($rows[0] as unknown as DataBodyRow).original} - - {/if} -
    - - -
    -
    - -
    - - - - - Job structure - - {#each data.dates as date} - - {formatDate(date)} - - {/each} - - - - {#each $rows as row (row.id)} - - - - - {#each (row as unknown as DataBodyRow).original.jobTracker?.tasksByDate?.values() ?? [] as task} - {@const daysInRange = getDaysInRange( - task.dateRange?.startDate ?? '', - task.dateRange?.endDate ?? '', - data.dates - )} - - - - {/each} - - {/each} - -
    -
    -
    - {/snippet} -
    -
    - - diff --git a/frontend/src/routes/[conf]/[name]/job-tracking/+page.ts b/frontend/src/routes/[conf]/[name]/job-tracking/+page.ts deleted file mode 100644 index 5f87fc4d6e..0000000000 --- a/frontend/src/routes/[conf]/[name]/job-tracking/+page.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { PageLoad } from './$types'; -import { buildJobTrackerTree } from '$lib/job/tree-builder/tree-builder'; -import type { IJobTrackerResponseArgs, INodeKeyArgs } from '$lib/types/codegen'; -import { Api } from '$lib/api/api'; - -export const load: PageLoad = async ({ parent, fetch }) => { - const { lineage } = await parent(); - const api = new Api({ fetch }); - - // Get job tracker data for all nodes in lineage - const nodes = new Set(); - - // Add main nodes - lineage.nodeGraph?.connections?.forEach((_, node) => { - nodes.add(node); - }); - - // Add parent nodes - lineage.nodeGraph?.connections?.forEach((connection) => { - connection.parents?.forEach((parent) => { - nodes.add(parent); - }); - }); - - // todo think about where this is best called - might be worth lazily lower levels - const jobTrackerDataMap = new Map(); - await Promise.all( - Array.from(nodes).map(async (node) => { - const data = await api.getJobTrackerData(node); - jobTrackerDataMap.set(node.name ?? '', data); - }) - ); - - const jobTrackerData = buildJobTrackerTree(lineage, jobTrackerDataMap); - - return { - jobTree: jobTrackerData.jobTree, - dates: jobTrackerData.dates - }; -}; diff --git a/frontend/src/routes/[conf]/[name]/observability/ObservabilityNavTabs.svelte b/frontend/src/routes/[conf]/[name]/observability/ObservabilityNavTabs.svelte deleted file mode 100644 index 0766e6632a..0000000000 --- a/frontend/src/routes/[conf]/[name]/observability/ObservabilityNavTabs.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - Summary - - - - Drift - - - - diff --git a/frontend/src/routes/[conf]/[name]/observability/drift/+page.svelte b/frontend/src/routes/[conf]/[name]/observability/drift/+page.svelte deleted file mode 100644 index cd993ba958..0000000000 --- a/frontend/src/routes/[conf]/[name]/observability/drift/+page.svelte +++ /dev/null @@ -1,435 +0,0 @@ - - -
    - -
    - - - - -
    - {#each driftSeriesByGroupName as [groupName, values], i (groupName)} - - {#snippet collapsibleContent()} -
    - { - const url = new URL(window.location.href); - url.searchParams.set('node', series.key.toString()); - url.searchParams.set( - 'timestamp', - new Date((data as DateValue).date).getTime().toString() - ); - pushState(url.toString(), { - selectedSeriesPoint: { series, data: data as DateValue } - }); - }} - onitemclick={({ series, data }: { series: SeriesItem; data: DateValue }) => { - selectSeriesPoint({ series, data }); - }} - {xDomain} - onbrushend={(detail: { xDomain?: DomainType }) => { - xDomain = detail.xDomain; - }} - tooltip={{ locked: lockedTooltip }} - /> -
    - {/snippet} -
    - {:else} -
    - No drift data available -
    - {/each} -
    - - { - if (selectedSeriesPoint) { - history.back(); - } - }} -> - - - { - /*highlightSeries(selectedSeries ?? '', dialogGroupChart, 'highlight')*/ - }} - onmouseleave={() => { - /*highlightSeries(selectedSeries ?? '', dialogGroupChart, 'downplay')*/ - }} - > -
    -
    - {selectedSeriesPoint?.series.key} at {formatDate(selectedSeriesPoint?.data.date)} -
    -
    - - -
    - -
    - {#if selectedSeriesPoint} - {@const [groupName, values] = - driftSeriesByGroupName.find(([_, values]) => - values.some((value) => value.key?.column === selectedSeriesPoint?.series.key) - ) ?? []} - - {#if groupName && values} - - {#snippet collapsibleContent()} -
    - { - const url = new URL(window.location.href); - url.searchParams.set('node', series.key.toString()); - url.searchParams.set( - 'timestamp', - new Date((data as DateValue).date).getTime().toString() - ); - pushState(url.toString(), { - selectedSeriesPoint: { series, data: data as DateValue } - }); - }} - onitemclick={({ series, data }: { series: SeriesItem; data: DateValue }) => { - selectSeriesPoint({ series, data }); - }} - {xDomain} - onbrushend={(detail: { xDomain?: DomainType }) => { - xDomain = detail.xDomain; - }} - tooltip={{ locked: lockedTooltip }} - /> -
    - {/snippet} -
    - {/if} - {/if} - - {#if columnSummaryData?.percentiles} - - {#snippet collapsibleContent()} -
    - { - xDomain = detail.xDomain; - }} - tooltip={{ locked: lockedTooltip }} - /> -
    - {/snippet} -
    - {/if} - - {#if columnSummaryData?.timestamps && Object.keys(columnSummaryData?.histogram ?? {}).length > 0} - {@const timestamp = Number(selectedSeriesPoint?.data.date)} - {@const timestampIndex = columnSummaryData.timestamps.findIndex( - (ts) => (ts as unknown as number) === timestamp - )} - {@const currentData = entries( - columnSummaryData.histogram as unknown as Record - ).map(([key, values]) => { - const value = values[timestampIndex]; - return { - label: key, - value: value === NULL_VALUE ? null : value - }; - })} - {@const baselineData = entries( - (columnSummaryBaselineData?.histogram ?? {}) as unknown as Record - ).map(([key, values]) => { - const value = values[timestampIndex]; - return { - label: key, - value: value === NULL_VALUE ? null : value - }; - })} - - {#snippet collapsibleContent()} -
    - -
    - {/snippet} -
    - {/if} - - {#if columnSummaryData?.timestamps && columnSummaryData?.nullCount} - {@const timestamp = Number(selectedSeriesPoint?.data.date)} - {@const timestampIndex = columnSummaryData.timestamps.findIndex( - (ts) => (ts as unknown as number) === timestamp - )} - {@const currentNullValue = columnSummaryData.nullCount[timestampIndex] as unknown as number} - {@const baselineNullValue = columnSummaryBaselineData?.nullCount?.[ - timestampIndex - ] as unknown as number} - - - {#snippet collapsibleContent()} -
    - {#each [{ label: 'Baseline', value: baselineNullValue }, { label: 'Current', value: currentNullValue }] as c} - - -
    -
    - - -
    -
    - {c.label} -
    -
    - {/each} -
    - {/snippet} -
    - {/if} -
    -
    -
    - - { - if (isMacOS() ? e.metaKey : e.ctrlKey) { - lockedTooltip = true; - } - }} - onkeyup={(e) => { - if (isMacOS() ? !e.metaKey : !e.ctrlKey) { - lockedTooltip = false; - } - }} -/> diff --git a/frontend/src/routes/[conf]/[name]/observability/summary/+page.svelte b/frontend/src/routes/[conf]/[name]/observability/summary/+page.svelte deleted file mode 100644 index 06b654f02e..0000000000 --- a/frontend/src/routes/[conf]/[name]/observability/summary/+page.svelte +++ /dev/null @@ -1,108 +0,0 @@ - - -
    - -
    - - - - -
    - {#if columnSummariesByGroupName.length === 0} -
    - No column summary data available -
    - {:else} - {#each columnSummariesByGroupName as [groupName, columnSummaries] (groupName)} - button]:flex-row-reverse [&>button]:gap-4', - trigger: 'text-sm py-4' - }} - > - - - - -
    - {#each columnSummaries as columnSummary (columnSummary.key?.column)} - - {#snippet collapsibleContent()} -
    - { - xDomain = detail.xDomain; - }} - renderContext="canvas" - /> -
    - {/snippet} -
    - {/each} -
    -
    - {/each} - {/if} -
    diff --git a/frontend/src/routes/[conf]/[name]/offline/+layout.svelte b/frontend/src/routes/[conf]/[name]/offline/+layout.svelte new file mode 100644 index 0000000000..22d62696e5 --- /dev/null +++ b/frontend/src/routes/[conf]/[name]/offline/+layout.svelte @@ -0,0 +1,67 @@ + + +
    + { + goto(`/${conf}/${name}/${tab}/${e.detail.value}`); + }} + > + Data + Cost + + + +
    + + + { + goto(`/${conf}/${name}/${tab}/${primaryNav}/${e.detail.value}`); + }} + > + {#if primaryNav === 'data'} + + + Distributions + + + + + Drift + + {/if} + +
    + + + +{@render children()} diff --git a/frontend/src/routes/[conf]/[name]/observability/+page.server.ts b/frontend/src/routes/[conf]/[name]/offline/+page.server.ts similarity index 68% rename from frontend/src/routes/[conf]/[name]/observability/+page.server.ts rename to frontend/src/routes/[conf]/[name]/offline/+page.server.ts index d61b8726b0..30615a4c01 100644 --- a/frontend/src/routes/[conf]/[name]/observability/+page.server.ts +++ b/frontend/src/routes/[conf]/[name]/offline/+page.server.ts @@ -1,5 +1,5 @@ import { redirect } from '@sveltejs/kit'; export async function load({ url }) { - redirect(302, `${url.href}/summary`); + redirect(302, `${url.href}/data`); } diff --git a/frontend/src/routes/[conf]/[name]/offline/+page.svelte b/frontend/src/routes/[conf]/[name]/offline/+page.svelte new file mode 100644 index 0000000000..b999b11a72 --- /dev/null +++ b/frontend/src/routes/[conf]/[name]/offline/+page.svelte @@ -0,0 +1 @@ + diff --git a/frontend/src/routes/[conf]/[name]/offline/cost/+page.svelte b/frontend/src/routes/[conf]/[name]/offline/cost/+page.svelte new file mode 100644 index 0000000000..1bd3e8bacb --- /dev/null +++ b/frontend/src/routes/[conf]/[name]/offline/cost/+page.svelte @@ -0,0 +1,3 @@ +
    + Offline cost view coming soon! +
    diff --git a/frontend/src/routes/[conf]/[name]/offline/data/+layout.svelte b/frontend/src/routes/[conf]/[name]/offline/data/+layout.svelte new file mode 100644 index 0000000000..a87468e110 --- /dev/null +++ b/frontend/src/routes/[conf]/[name]/offline/data/+layout.svelte @@ -0,0 +1,178 @@ + + +
    + + {#snippet trigger()} +
    Current job
    + + {/snippet} + + +
    + + +
    +
    + + + + + {#snippet trigger()} +
    Timeline
    + + + + + + + + + {/snippet} + + +
    + { + shared.xDomain = e.xDomain; + } + }} + > + {#snippet children({ context })} + + {#each tasksChartData as d} + {@const x = context.xScale(d.startDate)} + {@const width = context.xScale(d.endDate) - x} + {@const height = context.height} + +
    + +
    + {/each} + + {/snippet} +
    +
    + +
    +
    + + +
    + + + format(v, PeriodType.Day, { variant: 'short' })} /> + + +
    +
    + + { + shared.xDomain = e.xDomain; + }} + /> +
    + + + + + {@render children()} + +
    diff --git a/frontend/src/routes/[conf]/[name]/offline/data/+layout.ts b/frontend/src/routes/[conf]/[name]/offline/data/+layout.ts new file mode 100644 index 0000000000..34539b5d94 --- /dev/null +++ b/frontend/src/routes/[conf]/[name]/offline/data/+layout.ts @@ -0,0 +1,36 @@ +import type { IJobTrackerResponseArgs } from '$lib/types/codegen'; +import { Api } from '$lib/api/api'; +import { DEMO_DATE_START, DEMO_DATE_END } from '$src/lib/constants/common'; + +export async function load({ parent, fetch }) { + const { lineage } = await parent(); + const api = new Api({ fetch }); + + // Get job tracker data for all nodes in lineage + const nodes = + Array.from(lineage.nodeGraph?.infoMap?.entries() ?? []).map(([key, info]) => ({ + key, + info + })) ?? []; + + // TODO: Lazy load on expansion. How to handle summarizing upstream to + const jobTrackerByNodeKeyName = new Map(); + + await Promise.all( + Array.from(nodes).map(async (node) => { + const data = await api.getJobTrackerData({ + name: node.key.name!, + dateRange: { + // TODO: read from query string + startDate: DEMO_DATE_START.toISOString(), + endDate: DEMO_DATE_END.toISOString() + } + }); + jobTrackerByNodeKeyName.set(node.key.name!, data); + }) + ); + + return { + jobTrackerByNodeKeyName + }; +} diff --git a/frontend/src/routes/[conf]/[name]/offline/data/+page.server.ts b/frontend/src/routes/[conf]/[name]/offline/data/+page.server.ts new file mode 100644 index 0000000000..aba32c5976 --- /dev/null +++ b/frontend/src/routes/[conf]/[name]/offline/data/+page.server.ts @@ -0,0 +1,5 @@ +import { redirect } from '@sveltejs/kit'; + +export async function load({ url }) { + redirect(302, `${url.href}/distributions`); +} diff --git a/frontend/src/lib/components/StatusBar.svelte b/frontend/src/routes/[conf]/[name]/offline/data/JobStatusRect.svelte similarity index 79% rename from frontend/src/lib/components/StatusBar.svelte rename to frontend/src/routes/[conf]/[name]/offline/data/JobStatusRect.svelte index 0831c82fab..1577f7dee3 100644 --- a/frontend/src/lib/components/StatusBar.svelte +++ b/frontend/src/routes/[conf]/[name]/offline/data/JobStatusRect.svelte @@ -1,17 +1,39 @@ -
    +
    + {#if includeLabel} +
    {Status[status].toLowerCase()}
    + {/if} +