diff --git a/go.mod b/go.mod index 2a56539a..2a7a768a 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/digitalocean/go-libvirt v0.0.0-20250417173424-a6a66ef779d6 github.com/gin-contrib/gzip v1.2.2 github.com/gin-gonic/gin v1.10.0 - github.com/go-playground/validator/v10 v10.24.0 + github.com/go-playground/validator/v10 v10.26.0 github.com/golang-jwt/jwt/v4 v4.5.2 github.com/google/uuid v1.6.0 github.com/gorilla/websocket v1.5.3 @@ -28,15 +28,16 @@ require ( github.com/BurntSushi/toml v1.1.0 // indirect github.com/KyleBanks/depth v1.2.1 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/bytedance/sonic v1.12.7 // indirect - github.com/bytedance/sonic/loader v0.2.2 // indirect + github.com/bytedance/sonic v1.13.2 // indirect + github.com/bytedance/sonic/loader v0.2.4 // indirect github.com/cavaliergopher/grab/v3 v3.0.1 // indirect github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/cenkalti/log v1.0.0 // indirect github.com/cenkalti/rain v1.13.0 // indirect - github.com/cloudwego/base64x v0.1.4 // indirect + github.com/cloudwego/base64x v0.1.5 // indirect github.com/gabriel-vasile/mimetype v1.4.8 // indirect github.com/gin-contrib/sse v1.0.0 // indirect + github.com/gin-contrib/static v1.1.5 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect @@ -44,7 +45,7 @@ require ( github.com/go-openapi/swag v0.22.3 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect - github.com/goccy/go-json v0.10.4 // indirect + github.com/goccy/go-json v0.10.5 // indirect github.com/gofrs/uuid v4.4.0+incompatible // indirect github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect github.com/google/btree v1.1.3 // indirect @@ -84,12 +85,12 @@ require ( github.com/yusufpapurcu/wmi v1.2.4 // indirect github.com/zeebo/bencode v1.0.0 // indirect go.etcd.io/bbolt v1.3.11 // indirect - golang.org/x/arch v0.13.0 // indirect + golang.org/x/arch v0.16.0 // indirect golang.org/x/net v0.39.0 // indirect golang.org/x/sys v0.33.0 // indirect golang.org/x/text v0.25.0 // indirect golang.org/x/tools v0.32.0 // indirect - google.golang.org/protobuf v1.36.2 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 98d3c9d0..18223cba 100644 --- a/go.sum +++ b/go.sum @@ -6,9 +6,13 @@ github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3d github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/bytedance/sonic v1.12.7 h1:CQU8pxOy9HToxhndH0Kx/S1qU/CuS9GnKYrGioDcU1Q= github.com/bytedance/sonic v1.12.7/go.mod h1:tnbal4mxOMju17EGfknm2XyYcpyCnIROYOEYuemj13I= +github.com/bytedance/sonic v1.13.2 h1:8/H1FempDZqC4VqjptGo14QQlJx8VdZJegxs6wwfqpQ= +github.com/bytedance/sonic v1.13.2/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= github.com/bytedance/sonic/loader v0.2.2 h1:jxAJuN9fOot/cyz5Q6dUuMJF5OqQ6+5GfA8FjjQ0R4o= github.com/bytedance/sonic/loader v0.2.2/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= +github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY= +github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= github.com/cavaliergopher/grab/v3 v3.0.1 h1:4z7TkBfmPjmLAAmkkAZNX/6QJ1nNFdv3SdIHXju0Fr4= github.com/cavaliergopher/grab/v3 v3.0.1/go.mod h1:1U/KNnD+Ft6JJiYoYBAimKH2XrYptb8Kl3DFGmsjpq4= github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M= @@ -19,6 +23,8 @@ github.com/cenkalti/rain v1.13.0 h1:Hxy0/KobLTrc4+287O3I8trNt3bmjdoYw25HxLdngmI= github.com/cenkalti/rain v1.13.0/go.mod h1:1yClO1IkcP8Vofr6MZ4AxAhe4wfQrsy6Juo2IUvATQk= github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4= +github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -35,6 +41,8 @@ github.com/gin-contrib/gzip v1.2.2 h1:iUU/EYCM8ENfkjmZaVrxbjF/ZC267Iqv5S0MMCMEli github.com/gin-contrib/gzip v1.2.2/go.mod h1:C1a5cacjlDsS20cKnHlZRCPUu57D3qH6B2pV0rl+Y/s= github.com/gin-contrib/sse v1.0.0 h1:y3bT1mUWUxDpW4JLQg/HnTqV4rozuW4tC9eFKTxYI9E= github.com/gin-contrib/sse v1.0.0/go.mod h1:zNuFdwarAygJBht0NTKiSi3jRf6RbqeILZ9Sp6Slhe0= +github.com/gin-contrib/static v1.1.5 h1:bAPqT4KTZN+4uDY1b90eSrD1t8iNzod7Jj8njwmnzz4= +github.com/gin-contrib/static v1.1.5/go.mod h1:8JSEXwZHcQ0uCrLPcsvnAJ4g+ODxeupP8Zetl9fd8wM= github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= @@ -60,8 +68,12 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.24.0 h1:KHQckvo8G6hlWnrPX4NJJ+aBfWNAE/HH+qdL2cBpCmg= github.com/go-playground/validator/v10 v10.24.0/go.mod h1:GGzBIJMuE98Ic/kJsBXbz1x/7cByt++cQ+YOuDM5wus= +github.com/go-playground/validator/v10 v10.26.0 h1:SP05Nqhjcvz81uJaRfEV0YBSSSGMc/iMaVtFbr3Sw2k= +github.com/go-playground/validator/v10 v10.26.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= github.com/goccy/go-json v0.10.4 h1:JSwxQzIqKfmFX1swYPpUThQZp/Ka4wzJdK0LWVytLPM= github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= +github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA= github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= @@ -106,6 +118,7 @@ github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgSh github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -207,6 +220,8 @@ go.etcd.io/bbolt v1.3.11 h1:yGEzV1wPz2yVCLsD8ZAiGHhHVlczyC9d1rP43/VCRJ0= go.etcd.io/bbolt v1.3.11/go.mod h1:dksAq7YMXoljX0xu6VF5DMZGbhYYoLUalEiSySYAS4I= golang.org/x/arch v0.13.0 h1:KCkqVVV1kGg0X87TFysjCJ8MxtZEIU4Ja/yXGeoECdA= golang.org/x/arch v0.13.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= +golang.org/x/arch v0.16.0 h1:foMtLTdyOmIniqWCHjY6+JxuC54XP1fDwx4N0ASyW+U= +golang.org/x/arch v0.16.0/go.mod h1:JmwW7aLIoRUKgaTzhkiEFxvcEiQGyOg9BMonBJUS7EE= golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= @@ -230,6 +245,8 @@ golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU= golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s= google.golang.org/protobuf v1.36.2 h1:R8FeyR1/eLmkutZOM5CWghmo5itiG9z0ktFlTVLuTmU= google.golang.org/protobuf v1.36.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/internal/handlers/routes.go b/internal/handlers/routes.go index d9f9351b..f0d6070c 100644 --- a/internal/handlers/routes.go +++ b/internal/handlers/routes.go @@ -10,9 +10,10 @@ package handlers import ( "log" + "net/http" + static "github.com/gin-contrib/static" "github.com/gin-gonic/gin" - static "github.com/soulteary/gin-static" "sylve/internal/assets" diskHandlers "sylve/internal/handlers/disk" @@ -217,19 +218,20 @@ func RegisterRoutes(r *gin.Engine, ReverseProxy(c, "http://127.0.0.1:5173") }) } else { - staticFiles, err := static.EmbedFolder(assets.SvelteKitFiles, "web-files") + files, err := static.EmbedFolder(assets.SvelteKitFiles, "web-files") if err != nil { log.Fatalln("Initialization of embed folder failed:", err) } - r.Use(static.Serve("/", staticFiles)) - + r.Use(static.Serve("/", files)) r.NoRoute(func(c *gin.Context) { - c.FileFromFS("index.html", staticFiles) - }) + indexFile, err := assets.SvelteKitFiles.ReadFile("web-files/index.html") + if err != nil { + c.String(http.StatusInternalServerError, "Internal Server Error") + return + } - r.GET("/", func(c *gin.Context) { - c.FileFromFS("index.html", staticFiles) + c.Data(http.StatusOK, "text/html", indexFile) }) } } diff --git a/new-web/.gitignore b/new-web/.gitignore deleted file mode 100644 index c826bc02..00000000 --- a/new-web/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -node_modules - -# Output -.output -.vercel -.netlify -.wrangler -/.svelte-kit -/build - -# OS -.DS_Store -Thumbs.db - -# Env -.env -.env.* -!.env.example -!.env.test - -# Vite -vite.config.js.timestamp-* -vite.config.ts.timestamp-* - -src/lib/locales/*.json -src/lib/locales/*.js diff --git a/new-web/.npmrc b/new-web/.npmrc deleted file mode 100644 index b6f27f13..00000000 --- a/new-web/.npmrc +++ /dev/null @@ -1 +0,0 @@ -engine-strict=true diff --git a/new-web/.prettierignore b/new-web/.prettierignore deleted file mode 100644 index 6562bcbb..00000000 --- a/new-web/.prettierignore +++ /dev/null @@ -1,6 +0,0 @@ -# Package Managers -package-lock.json -pnpm-lock.yaml -yarn.lock -bun.lock -bun.lockb diff --git a/new-web/.prettierrc b/new-web/.prettierrc deleted file mode 100644 index 7ebb855b..00000000 --- a/new-web/.prettierrc +++ /dev/null @@ -1,15 +0,0 @@ -{ - "useTabs": true, - "singleQuote": true, - "trailingComma": "none", - "printWidth": 100, - "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], - "overrides": [ - { - "files": "*.svelte", - "options": { - "parser": "svelte" - } - } - ] -} diff --git a/new-web/components.json b/new-web/components.json deleted file mode 100644 index c5d91b45..00000000 --- a/new-web/components.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "$schema": "https://shadcn-svelte.com/schema.json", - "tailwind": { - "css": "src/app.css", - "baseColor": "slate" - }, - "aliases": { - "components": "$lib/components", - "utils": "$lib/utils", - "ui": "$lib/components/ui", - "hooks": "$lib/hooks", - "lib": "$lib" - }, - "typescript": true, - "registry": "https://shadcn-svelte.com/registry" -} diff --git a/new-web/eslint.config.js b/new-web/eslint.config.js deleted file mode 100644 index ef07d322..00000000 --- a/new-web/eslint.config.js +++ /dev/null @@ -1,36 +0,0 @@ -import prettier from 'eslint-config-prettier'; -import js from '@eslint/js'; -import { includeIgnoreFile } from '@eslint/compat'; -import svelte from 'eslint-plugin-svelte'; -import globals from 'globals'; -import { fileURLToPath } from 'node:url'; -import ts from 'typescript-eslint'; -import svelteConfig from './svelte.config.js'; - -const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url)); - -export default ts.config( - includeIgnoreFile(gitignorePath), - js.configs.recommended, - ...ts.configs.recommended, - ...svelte.configs.recommended, - prettier, - ...svelte.configs.prettier, - { - languageOptions: { - globals: { ...globals.browser, ...globals.node } - }, - rules: { 'no-undef': 'off' } - }, - { - files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'], - languageOptions: { - parserOptions: { - projectService: true, - extraFileExtensions: ['.svelte'], - parser: ts.parser, - svelteConfig - } - } - } -); diff --git a/new-web/package-lock.json b/new-web/package-lock.json deleted file mode 100644 index 7eca3c51..00000000 --- a/new-web/package-lock.json +++ /dev/null @@ -1,6428 +0,0 @@ -{ - "name": "new-web", - "version": "0.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "new-web", - "version": "0.0.1", - "dependencies": { - "@battlefieldduck/xterm-svelte": "^2.1.0", - "@fontsource/noto-sans": "^5.2.7", - "@layerstack/svelte-stores": "^1.0.2", - "@lucide/svelte": "^0.516.0", - "@svelte-put/shortcut": "^4.1.0", - "@sveltestack/svelte-query": "^1.6.0", - "adze": "^2.2.4", - "axios": "^1.10.0", - "chart.js": "^4.5.0", - "chartjs-adapter-date-fns": "^3.0.0", - "chartjs-plugin-zoom": "^2.2.0", - "d3-shape": "^3.2.0", - "date-fns": "^4.1.0", - "date-fns-tz": "^3.2.0", - "human-format": "^1.2.1", - "is-cidr": "^5.1.1", - "is-ip": "^5.0.1", - "lucide-svelte": "^0.516.0", - "tabulator-tables": "^6.3.1", - "validator": "^13.15.15", - "wuchale": "0.5.5", - "zod": "^3.25.67" - }, - "devDependencies": { - "@eslint/compat": "^1.2.5", - "@eslint/js": "^9.18.0", - "@iconify/svelte": "^5.0.0", - "@internationalized/date": "^3.8.2", - "@sveltejs/adapter-static": "^3.0.8", - "@sveltejs/kit": "^2.16.0", - "@sveltejs/vite-plugin-svelte": "^5.0.0", - "@tailwindcss/forms": "^0.5.9", - "@tailwindcss/typography": "^0.5.15", - "@tailwindcss/vite": "^4.0.0", - "@types/d3-scale": "^4.0.9", - "@types/d3-shape": "^3.1.7", - "@types/tabulator-tables": "^6.2.6", - "@types/validator": "^13.15.2", - "bits-ui": "^2.8.0", - "clsx": "^2.1.1", - "eslint": "^9.18.0", - "eslint-config-prettier": "^10.0.1", - "eslint-plugin-svelte": "^3.0.0", - "globals": "^16.0.0", - "layerchart": "^2.0.0-next.18", - "mode-watcher": "^1.0.8", - "paneforge": "^1.0.0-next.5", - "prettier": "^3.4.2", - "prettier-plugin-svelte": "^3.3.3", - "prettier-plugin-tailwindcss": "^0.6.11", - "svelte": "^5.0.0", - "svelte-check": "^4.0.0", - "svelte-sonner": "^1.0.5", - "tailwind-merge": "^3.3.1", - "tailwind-variants": "^1.0.0", - "tailwindcss": "^4.0.0", - "tw-animate-css": "^1.3.4", - "typescript": "^5.0.0", - "typescript-eslint": "^8.20.0", - "vite": "^6.2.6" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@battlefieldduck/xterm-svelte": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@battlefieldduck/xterm-svelte/-/xterm-svelte-2.1.0.tgz", - "integrity": "sha512-OeuGnPqblPBc57WZ8TtcU2yX0MvMs7rMbhZaLethyD5i8/WqM/XJej0NOp0KcND8jNmPnBWjePwghAQDlDXnlw==", - "license": "MIT", - "dependencies": { - "@xterm/addon-attach": "^0.11.0", - "@xterm/addon-canvas": "^0.7.0", - "@xterm/addon-clipboard": "^0.1.0", - "@xterm/addon-fit": "^0.10.0", - "@xterm/addon-image": "^0.8.0", - "@xterm/addon-search": "^0.15.0", - "@xterm/addon-serialize": "^0.13.0", - "@xterm/addon-unicode11": "^0.8.0", - "@xterm/addon-web-links": "^0.11.0", - "@xterm/addon-webgl": "^0.18.0", - "@xterm/xterm": "^5.5.0" - }, - "peerDependencies": { - "svelte": "^5.0.0" - } - }, - "node_modules/@dagrejs/dagre": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@dagrejs/dagre/-/dagre-1.1.5.tgz", - "integrity": "sha512-Ghgrh08s12DCL5SeiR6AoyE80mQELTWhJBRmXfFoqDiFkR458vPEdgTbbjA0T+9ETNxUblnD0QW55tfdvi5pjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@dagrejs/graphlib": "2.2.4" - } - }, - "node_modules/@dagrejs/graphlib": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@dagrejs/graphlib/-/graphlib-2.2.4.tgz", - "integrity": "sha512-mepCf/e9+SKYy1d02/UkvSy6+6MoyXhVxP8lLDfA7BPE1X1d4dR0sZznmbM8/XVJ1GPM+Svnx7Xj6ZweByWUkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">17.0.0" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", - "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", - "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/compat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.3.0.tgz", - "integrity": "sha512-ZBygRBqpDYiIHsN+d1WyHn3TYgzgpzLEcgJUxTATyiInQbKZz6wZb6+ljwdg8xeeOe4v03z6Uh6lELiw0/mVhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": "^9.10.0" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/@eslint/config-array": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", - "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", - "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", - "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", - "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/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "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": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "9.29.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz", - "integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "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": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz", - "integrity": "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.15.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.15.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.0.tgz", - "integrity": "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==", - "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.7.1", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.1.tgz", - "integrity": "sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.9" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.1.tgz", - "integrity": "sha512-cwsmW/zyw5ltYTUeeYJ60CnQuPqmGwuGVhG9w0PRaRKkAyi38BT5CKrpIbb+jtahSwUl04cWzSx9ZOIxeS6RsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.7.1", - "@floating-ui/utils": "^0.2.9" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", - "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@fontsource/noto-sans": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans/-/noto-sans-5.2.7.tgz", - "integrity": "sha512-mTpMSMft6Nb+ZSF4DSiJVYnLzKCRjHNFieZ/swuxSDQK+v1hjUeDTBxLHKUdfmC+ZPg6TUEWw4oRq2ltnDbSjQ==", - "license": "OFL-1.1", - "funding": { - "url": "https://github.com/sponsors/ayuhito" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@iconify/svelte": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@iconify/svelte/-/svelte-5.0.0.tgz", - "integrity": "sha512-Bm5iKnNpIWHuUlWaaf16QgVL1tcbQUUSdPdkvDlpmYXg3nFJSA1SLY9V4rRTd+K4h3QT12ZS7JHFLkf8khQd8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@iconify/types": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/cyberalien" - }, - "peerDependencies": { - "svelte": ">4.0.0" - } - }, - "node_modules/@iconify/types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", - "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@internationalized/date": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.8.2.tgz", - "integrity": "sha512-/wENk7CbvLbkUvX1tu0mwq49CVkkWpkXubGel6birjRPyo6uQ4nQpnq5xZu823zRCwwn82zgHrvgF1vZyvmVgA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/helpers": "^0.5.0" - } - }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@kurkle/color": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", - "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", - "license": "MIT" - }, - "node_modules/@layerstack/svelte-actions": { - "version": "1.0.1-next.12", - "resolved": "https://registry.npmjs.org/@layerstack/svelte-actions/-/svelte-actions-1.0.1-next.12.tgz", - "integrity": "sha512-dndWTlYu8b1u6vw2nrO7NssccoACArGG75WoNlyVC13KuENZlWdKE9Q79/wlnbq00NeQMNKMjJwRMsrKQj2ULA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@floating-ui/dom": "^1.7.0", - "@layerstack/utils": "2.0.0-next.12", - "d3-scale": "^4.0.2" - } - }, - "node_modules/@layerstack/svelte-actions/node_modules/@layerstack/utils": { - "version": "2.0.0-next.12", - "resolved": "https://registry.npmjs.org/@layerstack/utils/-/utils-2.0.0-next.12.tgz", - "integrity": "sha512-fhGZUlSr3N+D44BYm37WKMGSEFyZBW+dwIqtGU8Cl54mR4TLQ/UwyGhdpgIHyH/x/8q1abE0fP0Dn6ZsrDE3BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "d3-array": "^3.2.4", - "d3-time": "^3.1.0", - "d3-time-format": "^4.1.0", - "lodash-es": "^4.17.21" - } - }, - "node_modules/@layerstack/svelte-state": { - "version": "0.1.0-next.17", - "resolved": "https://registry.npmjs.org/@layerstack/svelte-state/-/svelte-state-0.1.0-next.17.tgz", - "integrity": "sha512-z7e6mPJnypD80LEI/UDuH0bI6s8/nut06MB7rEkRcEfHJekhKSJgFhMnrYzLED7Mc2gTTD0X/wcYlakauWlU8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@layerstack/utils": "2.0.0-next.12" - } - }, - "node_modules/@layerstack/svelte-state/node_modules/@layerstack/utils": { - "version": "2.0.0-next.12", - "resolved": "https://registry.npmjs.org/@layerstack/utils/-/utils-2.0.0-next.12.tgz", - "integrity": "sha512-fhGZUlSr3N+D44BYm37WKMGSEFyZBW+dwIqtGU8Cl54mR4TLQ/UwyGhdpgIHyH/x/8q1abE0fP0Dn6ZsrDE3BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "d3-array": "^3.2.4", - "d3-time": "^3.1.0", - "d3-time-format": "^4.1.0", - "lodash-es": "^4.17.21" - } - }, - "node_modules/@layerstack/svelte-stores": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@layerstack/svelte-stores/-/svelte-stores-1.0.2.tgz", - "integrity": "sha512-IxK0UKD0PVxg1VsyaR+n7NyJ+NlvyqvYYAp+J10lkjDQxm0yx58CaF2LBV08T22C3aY1iTlqJaatn/VHV4SoQg==", - "license": "MIT", - "dependencies": { - "@layerstack/utils": "1.0.1", - "d3-array": "^3.2.4", - "date-fns": "^4.1.0", - "immer": "^10.1.1", - "lodash-es": "^4.17.21", - "zod": "^3.24.2" - } - }, - "node_modules/@layerstack/tailwind": { - "version": "2.0.0-next.15", - "resolved": "https://registry.npmjs.org/@layerstack/tailwind/-/tailwind-2.0.0-next.15.tgz", - "integrity": "sha512-7tqKE3OV7/ybeDOORX++USYYCBJa7IgTya2czFpzbgXGo7CQDVyuv+0J1DggjRcEqhhXQA4MUhgnhcRaZvHxWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@layerstack/utils": "^2.0.0-next.12", - "clsx": "^2.1.1", - "d3-array": "^3.2.4", - "lodash-es": "^4.17.21", - "tailwind-merge": "^3.2.0" - } - }, - "node_modules/@layerstack/tailwind/node_modules/@layerstack/utils": { - "version": "2.0.0-next.12", - "resolved": "https://registry.npmjs.org/@layerstack/utils/-/utils-2.0.0-next.12.tgz", - "integrity": "sha512-fhGZUlSr3N+D44BYm37WKMGSEFyZBW+dwIqtGU8Cl54mR4TLQ/UwyGhdpgIHyH/x/8q1abE0fP0Dn6ZsrDE3BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "d3-array": "^3.2.4", - "d3-time": "^3.1.0", - "d3-time-format": "^4.1.0", - "lodash-es": "^4.17.21" - } - }, - "node_modules/@layerstack/utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@layerstack/utils/-/utils-1.0.1.tgz", - "integrity": "sha512-sWP9b+SFMkJYMZyYFI01aLxbg2ZUrix6Tv+BCDmeOrcLNxtWFsMYAomMhALzTMHbb+Vis/ua5vXhpdNXEw8a2Q==", - "license": "MIT", - "dependencies": { - "d3-array": "^3.2.4", - "date-fns": "^4.1.0", - "lodash-es": "^4.17.21" - } - }, - "node_modules/@lucide/svelte": { - "version": "0.516.0", - "resolved": "https://registry.npmjs.org/@lucide/svelte/-/svelte-0.516.0.tgz", - "integrity": "sha512-Ovkg2IgUeF85guSbnG9iPwUMMRuz+rdh8HsnKbD1uEY2Wv3d9qf0ERKFrz0ePZqmPXOedCPcf2a/rvRsqkaZcw==", - "license": "ISC", - "peerDependencies": { - "svelte": "^5" - } - }, - "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": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 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": { - "node": ">= 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": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", - "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.1", - "@parcel/watcher-darwin-arm64": "2.5.1", - "@parcel/watcher-darwin-x64": "2.5.1", - "@parcel/watcher-freebsd-x64": "2.5.1", - "@parcel/watcher-linux-arm-glibc": "2.5.1", - "@parcel/watcher-linux-arm-musl": "2.5.1", - "@parcel/watcher-linux-arm64-glibc": "2.5.1", - "@parcel/watcher-linux-arm64-musl": "2.5.1", - "@parcel/watcher-linux-x64-glibc": "2.5.1", - "@parcel/watcher-linux-x64-musl": "2.5.1", - "@parcel/watcher-win32-arm64": "2.5.1", - "@parcel/watcher-win32-ia32": "2.5.1", - "@parcel/watcher-win32-x64": "2.5.1" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", - "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", - "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", - "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", - "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", - "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", - "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", - "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", - "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", - "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", - "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", - "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", - "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", - "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher/node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.29", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", - "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz", - "integrity": "sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz", - "integrity": "sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz", - "integrity": "sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz", - "integrity": "sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz", - "integrity": "sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz", - "integrity": "sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz", - "integrity": "sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz", - "integrity": "sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz", - "integrity": "sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz", - "integrity": "sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz", - "integrity": "sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz", - "integrity": "sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz", - "integrity": "sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz", - "integrity": "sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz", - "integrity": "sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz", - "integrity": "sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz", - "integrity": "sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz", - "integrity": "sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz", - "integrity": "sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz", - "integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@svelte-put/shortcut": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@svelte-put/shortcut/-/shortcut-4.1.0.tgz", - "integrity": "sha512-wImNEIkbxAIWFqlfuhcbC+jRPDeRa/uJGIXHMEVVD+jqL9xCwWNnkGQJ6Qb2XVszuRLHlb8SGZDL3Io/h3vs8w==", - "license": "MIT", - "peerDependencies": { - "svelte": "^5.1.0" - } - }, - "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-static": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.8.tgz", - "integrity": "sha512-YaDrquRpZwfcXbnlDsSrBQNCChVOT9MGuSg+dMAyfsAa1SmiAhrA5jUYUiIMC59G92kIbY/AaQOWcBdq+lh+zg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@sveltejs/kit": "^2.0.0" - } - }, - "node_modules/@sveltejs/kit": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.22.0.tgz", - "integrity": "sha512-DJm0UxVgzXq+1MUfiJK4Ridk7oIQsIets6JwHiEl97sI6nXScfXe+BeqNhzB7jQIVBb3BM51U4hNk8qQxRXBAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sveltejs/acorn-typescript": "^1.0.5", - "@types/cookie": "^0.6.0", - "acorn": "^8.14.1", - "cookie": "^0.6.0", - "devalue": "^5.1.0", - "esm-env": "^1.2.2", - "kleur": "^4.1.5", - "magic-string": "^0.30.5", - "mrmime": "^2.0.0", - "sade": "^1.8.1", - "set-cookie-parser": "^2.6.0", - "sirv": "^3.0.0", - "vitefu": "^1.0.6" - }, - "bin": { - "svelte-kit": "svelte-kit.js" - }, - "engines": { - "node": ">=18.13" - }, - "peerDependencies": { - "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0", - "svelte": "^4.0.0 || ^5.0.0-next.0", - "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0" - } - }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.1.0.tgz", - "integrity": "sha512-wojIS/7GYnJDYIg1higWj2ROA6sSRWvcR1PO/bqEyFr/5UZah26c8Cz4u0NaqjPeVltzsVpt2Tm8d2io0V+4Tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1", - "debug": "^4.4.1", - "deepmerge": "^4.3.1", - "kleur": "^4.1.5", - "magic-string": "^0.30.17", - "vitefu": "^1.0.6" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22" - }, - "peerDependencies": { - "svelte": "^5.0.0", - "vite": "^6.0.0" - } - }, - "node_modules/@sveltejs/vite-plugin-svelte-inspector": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-4.0.1.tgz", - "integrity": "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.7" - }, - "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/@sveltestack/svelte-query": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@sveltestack/svelte-query/-/svelte-query-1.6.0.tgz", - "integrity": "sha512-C0wWuh6av1zu3Pzwrg6EQmX3BhDZQ4gMAdYu6Tfv4bjbEZTB00uEDz52z92IZdONh+iUKuyo0xRZ2e16k2Xifg==", - "license": "MIT", - "peerDependencies": { - "broadcast-channel": "^4.5.0" - }, - "peerDependenciesMeta": { - "broadcast-channel": { - "optional": true - } - } - }, - "node_modules/@swc/helpers": { - "version": "0.5.17", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", - "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@tailwindcss/forms": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.10.tgz", - "integrity": "sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mini-svg-data-uri": "^1.2.3" - }, - "peerDependencies": { - "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" - } - }, - "node_modules/@tailwindcss/node": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.10.tgz", - "integrity": "sha512-2ACf1znY5fpRBwRhMgj9ZXvb2XZW8qs+oTfotJ2C5xR0/WNL7UHZ7zXl6s+rUqedL1mNi+0O+WQr5awGowS3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.3.0", - "enhanced-resolve": "^5.18.1", - "jiti": "^2.4.2", - "lightningcss": "1.30.1", - "magic-string": "^0.30.17", - "source-map-js": "^1.2.1", - "tailwindcss": "4.1.10" - } - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.10.tgz", - "integrity": "sha512-v0C43s7Pjw+B9w21htrQwuFObSkio2aV/qPx/mhrRldbqxbWJK6KizM+q7BF1/1CmuLqZqX3CeYF7s7P9fbA8Q==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "detect-libc": "^2.0.4", - "tar": "^7.4.3" - }, - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.10", - "@tailwindcss/oxide-darwin-arm64": "4.1.10", - "@tailwindcss/oxide-darwin-x64": "4.1.10", - "@tailwindcss/oxide-freebsd-x64": "4.1.10", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.10", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.10", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.10", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.10", - "@tailwindcss/oxide-linux-x64-musl": "4.1.10", - "@tailwindcss/oxide-wasm32-wasi": "4.1.10", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.10", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.10" - } - }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.10.tgz", - "integrity": "sha512-VGLazCoRQ7rtsCzThaI1UyDu/XRYVyH4/EWiaSX6tFglE+xZB5cvtC5Omt0OQ+FfiIVP98su16jDVHDEIuH4iQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.10.tgz", - "integrity": "sha512-ZIFqvR1irX2yNjWJzKCqTCcHZbgkSkSkZKbRM3BPzhDL/18idA8uWCoopYA2CSDdSGFlDAxYdU2yBHwAwx8euQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.10.tgz", - "integrity": "sha512-eCA4zbIhWUFDXoamNztmS0MjXHSEJYlvATzWnRiTqJkcUteSjO94PoRHJy1Xbwp9bptjeIxxBHh+zBWFhttbrQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.10.tgz", - "integrity": "sha512-8/392Xu12R0cc93DpiJvNpJ4wYVSiciUlkiOHOSOQNH3adq9Gi/dtySK7dVQjXIOzlpSHjeCL89RUUI8/GTI6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.10.tgz", - "integrity": "sha512-t9rhmLT6EqeuPT+MXhWhlRYIMSfh5LZ6kBrC4FS6/+M1yXwfCtp24UumgCWOAJVyjQwG+lYva6wWZxrfvB+NhQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.10.tgz", - "integrity": "sha512-3oWrlNlxLRxXejQ8zImzrVLuZ/9Z2SeKoLhtCu0hpo38hTO2iL86eFOu4sVR8cZc6n3z7eRXXqtHJECa6mFOvA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.10.tgz", - "integrity": "sha512-saScU0cmWvg/Ez4gUmQWr9pvY9Kssxt+Xenfx1LG7LmqjcrvBnw4r9VjkFcqmbBb7GCBwYNcZi9X3/oMda9sqQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.10.tgz", - "integrity": "sha512-/G3ao/ybV9YEEgAXeEg28dyH6gs1QG8tvdN9c2MNZdUXYBaIY/Gx0N6RlJzfLy/7Nkdok4kaxKPHKJUlAaoTdA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.10.tgz", - "integrity": "sha512-LNr7X8fTiKGRtQGOerSayc2pWJp/9ptRYAa4G+U+cjw9kJZvkopav1AQc5HHD+U364f71tZv6XamaHKgrIoVzA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.10.tgz", - "integrity": "sha512-d6ekQpopFQJAcIK2i7ZzWOYGZ+A6NzzvQ3ozBvWFdeyqfOZdYHU66g5yr+/HC4ipP1ZgWsqa80+ISNILk+ae/Q==", - "bundleDependencies": [ - "@napi-rs/wasm-runtime", - "@emnapi/core", - "@emnapi/runtime", - "@tybys/wasm-util", - "@emnapi/wasi-threads", - "tslib" - ], - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@emnapi/wasi-threads": "^1.0.2", - "@napi-rs/wasm-runtime": "^0.2.10", - "@tybys/wasm-util": "^0.9.0", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.10.tgz", - "integrity": "sha512-i1Iwg9gRbwNVOCYmnigWCCgow8nDWSFmeTUU5nbNx3rqbe4p0kRbEqLwLJbYZKmSSp23g4N6rCDmm7OuPBXhDA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.10.tgz", - "integrity": "sha512-sGiJTjcBSfGq2DVRtaSljq5ZgZS2SDHSIfhOylkBvHVjwOsodBhnb3HdmiKkVuUGKD0I7G63abMOVaskj1KpOA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/typography": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", - "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.castarray": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "postcss-selector-parser": "6.0.10" - }, - "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" - } - }, - "node_modules/@tailwindcss/vite": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.10.tgz", - "integrity": "sha512-QWnD5HDY2IADv+vYR82lOhqOlS1jSCUUAmfem52cXAhRTKxpDh3ARX8TTXJTCCO7Rv7cD2Nlekabv02bwP3a2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tailwindcss/node": "4.1.10", - "@tailwindcss/oxide": "4.1.10", - "tailwindcss": "4.1.10" - }, - "peerDependencies": { - "vite": "^5.2.0 || ^6" - } - }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/d3-path": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", - "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/d3-scale": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", - "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-shape": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", - "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", - "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "license": "MIT" - }, - "node_modules/@types/hammerjs": { - "version": "2.0.46", - "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", - "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==", - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/tabulator-tables": { - "version": "6.2.6", - "resolved": "https://registry.npmjs.org/@types/tabulator-tables/-/tabulator-tables-6.2.6.tgz", - "integrity": "sha512-A+2VrqDluI6hNw5dQl1Z7b8pjQfAE62+3Kj0cFfenWzj0T0ewMicPrpPINHL7ASqz9u9FTDn1Mz1Ige2tF4Wlw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/validator": { - "version": "13.15.2", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.2.tgz", - "integrity": "sha512-y7pa/oEJJ4iGYBxOpfAKn5b9+xuihvzDVnC/OSvlVnGxVg0pOqmjiMafiJ1KVNQEaPZf9HsEp5icEwGg8uIe5Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.1.tgz", - "integrity": "sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.34.1", - "@typescript-eslint/type-utils": "8.34.1", - "@typescript-eslint/utils": "8.34.1", - "@typescript-eslint/visitor-keys": "8.34.1", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.34.1", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.1.tgz", - "integrity": "sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.34.1", - "@typescript-eslint/types": "8.34.1", - "@typescript-eslint/typescript-estree": "8.34.1", - "@typescript-eslint/visitor-keys": "8.34.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.1.tgz", - "integrity": "sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.34.1", - "@typescript-eslint/types": "^8.34.1", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz", - "integrity": "sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.34.1", - "@typescript-eslint/visitor-keys": "8.34.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.1.tgz", - "integrity": "sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.1.tgz", - "integrity": "sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "8.34.1", - "@typescript-eslint/utils": "8.34.1", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz", - "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz", - "integrity": "sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.34.1", - "@typescript-eslint/tsconfig-utils": "8.34.1", - "@typescript-eslint/types": "8.34.1", - "@typescript-eslint/visitor-keys": "8.34.1", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.1.tgz", - "integrity": "sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.34.1", - "@typescript-eslint/types": "8.34.1", - "@typescript-eslint/typescript-estree": "8.34.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz", - "integrity": "sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.34.1", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "license": "ISC" - }, - "node_modules/@xterm/addon-attach": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-attach/-/addon-attach-0.11.0.tgz", - "integrity": "sha512-JboCN0QAY6ZLY/SSB/Zl2cQ5zW1Eh4X3fH7BnuR1NB7xGRhzbqU2Npmpiw/3zFlxDaU88vtKzok44JKi2L2V2Q==", - "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.0.0" - } - }, - "node_modules/@xterm/addon-canvas": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-canvas/-/addon-canvas-0.7.0.tgz", - "integrity": "sha512-LF5LYcfvefJuJ7QotNRdRSPc9YASAVDeoT5uyXS/nZshZXjYplGXRECBGiznwvhNL2I8bq1Lf5MzRwstsYQ2Iw==", - "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.0.0" - } - }, - "node_modules/@xterm/addon-clipboard": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-clipboard/-/addon-clipboard-0.1.0.tgz", - "integrity": "sha512-zdoM7p53T5sv/HbRTyp4hY0kKmEQ3MZvAvEtiXqNIHc/JdpqwByCtsTaQF5DX2n4hYdXRPO4P/eOS0QEhX1nPw==", - "license": "MIT", - "dependencies": { - "js-base64": "^3.7.5" - }, - "peerDependencies": { - "@xterm/xterm": "^5.4.0" - } - }, - "node_modules/@xterm/addon-fit": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.10.0.tgz", - "integrity": "sha512-UFYkDm4HUahf2lnEyHvio51TNGiLK66mqP2JoATy7hRZeXaGMRDr00JiSF7m63vR5WKATF605yEggJKsw0JpMQ==", - "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.0.0" - } - }, - "node_modules/@xterm/addon-image": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-image/-/addon-image-0.8.0.tgz", - "integrity": "sha512-b/dqpFn3jUad2pUP5UpF4scPIh0WdxRQL/1qyiahGfUI85XZTCXo0py9G6AcOR2QYUw8eJ8EowGspT7BQcgw6A==", - "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.2.0" - } - }, - "node_modules/@xterm/addon-search": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-search/-/addon-search-0.15.0.tgz", - "integrity": "sha512-ZBZKLQ+EuKE83CqCmSSz5y1tx+aNOCUaA7dm6emgOX+8J9H1FWXZyrKfzjwzV+V14TV3xToz1goIeRhXBS5qjg==", - "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.0.0" - } - }, - "node_modules/@xterm/addon-serialize": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-serialize/-/addon-serialize-0.13.0.tgz", - "integrity": "sha512-kGs8o6LWAmN1l2NpMp01/YkpxbmO4UrfWybeGu79Khw5K9+Krp7XhXbBTOTc3GJRRhd6EmILjpR8k5+odY39YQ==", - "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.0.0" - } - }, - "node_modules/@xterm/addon-unicode11": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-unicode11/-/addon-unicode11-0.8.0.tgz", - "integrity": "sha512-LxinXu8SC4OmVa6FhgwsVCBZbr8WoSGzBl2+vqe8WcQ6hb1r6Gj9P99qTNdPiFPh4Ceiu2pC8xukZ6+2nnh49Q==", - "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.0.0" - } - }, - "node_modules/@xterm/addon-web-links": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-web-links/-/addon-web-links-0.11.0.tgz", - "integrity": "sha512-nIHQ38pQI+a5kXnRaTgwqSHnX7KE6+4SVoceompgHL26unAxdfP6IPqUTSYPQgSwM56hsElfoNrrW5V7BUED/Q==", - "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.0.0" - } - }, - "node_modules/@xterm/addon-webgl": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@xterm/addon-webgl/-/addon-webgl-0.18.0.tgz", - "integrity": "sha512-xCnfMBTI+/HKPdRnSOHaJDRqEpq2Ugy8LEj9GiY4J3zJObo3joylIFaMvzBwbYRg8zLtkO0KQaStCeSfoaI2/w==", - "license": "MIT", - "peerDependencies": { - "@xterm/xterm": "^5.0.0" - } - }, - "node_modules/@xterm/xterm": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz", - "integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==", - "license": "MIT" - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "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/adze": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/adze/-/adze-2.2.4.tgz", - "integrity": "sha512-Kqe4cLmYS42QNPtFoiDKsaZMPJYnAhBsh3SuVEeTEvjjTy3zOO1ovvD3wbylXtC+mUOcWU9vzS3ezXHpk0Lq6A==", - "license": "Apache-2.0", - "dependencies": { - "@ungap/structured-clone": "1.2.0", - "picocolors": "1.1.1" - }, - "engines": { - "node": ">=18.19.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": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "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" - }, - "node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/axios": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz", - "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/bits-ui": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-2.8.1.tgz", - "integrity": "sha512-fyKn2UnuPlyqtU7dtp9jDF6KV2aP1N6alzU5S1V1YkEmA2KP0Rm9g+sR+CeDJ/vN/UoMK9uiAl6y7M/Y0e67Bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.7.0", - "@floating-ui/dom": "^1.7.0", - "css.escape": "^1.5.1", - "esm-env": "^1.1.2", - "runed": "^0.28.0", - "svelte-toolbelt": "^0.9.2", - "tabbable": "^6.2.0" - }, - "engines": { - "node": ">=20", - "pnpm": ">=8.7.0" - }, - "funding": { - "url": "https://github.com/sponsors/huntabyte" - }, - "peerDependencies": { - "@internationalized/date": "^3.8.1", - "svelte": "^5.33.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chart.js": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.0.tgz", - "integrity": "sha512-aYeC/jDgSEx8SHWZvANYMioYMZ2KX02W6f6uVfyteuCGcadDLcYVHdfdygsTQkQ4TKn5lghoojAsPj5pu0SnvQ==", - "license": "MIT", - "dependencies": { - "@kurkle/color": "^0.3.0" - }, - "engines": { - "pnpm": ">=8" - } - }, - "node_modules/chartjs-adapter-date-fns": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chartjs-adapter-date-fns/-/chartjs-adapter-date-fns-3.0.0.tgz", - "integrity": "sha512-Rs3iEB3Q5pJ973J93OBTpnP7qoGwvq3nUnoMdtxO+9aoJof7UFcRbWcIDteXuYd1fgAvct/32T9qaLyLuZVwCg==", - "license": "MIT", - "peerDependencies": { - "chart.js": ">=2.8.0", - "date-fns": ">=2.0.0" - } - }, - "node_modules/chartjs-plugin-zoom": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/chartjs-plugin-zoom/-/chartjs-plugin-zoom-2.2.0.tgz", - "integrity": "sha512-in6kcdiTlP6npIVLMd4zXZ08PDUXC52gZ4FAy5oyjk1zX3gKarXMAof7B9eFiisf9WOC3bh2saHg+J5WtLXZeA==", - "license": "MIT", - "dependencies": { - "@types/hammerjs": "^2.0.45", - "hammerjs": "^2.0.8" - }, - "peerDependencies": { - "chart.js": ">=3.2.0" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/cidr-regex": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/cidr-regex/-/cidr-regex-4.1.3.tgz", - "integrity": "sha512-86M1y3ZeQvpZkZejQCcS+IaSWjlDUC+ORP0peScQ4uEUFCZ8bEQVz7NlJHqysoUb6w3zCjx4Mq/8/2RHhMwHYw==", - "license": "BSD-2-Clause", - "dependencies": { - "ip-regex": "^5.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/clone-regexp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-3.0.0.tgz", - "integrity": "sha512-ujdnoq2Kxb8s3ItNBtnYeXdm07FcU0u8ARAT1lQ2YdMwQC+cdiXX8KoqMVuglztILivceTtp4ivqGSmEmhBUJw==", - "license": "MIT", - "dependencies": { - "is-regexp": "^3.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "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" - }, - "node_modules/convert-hrtime": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", - "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true, - "license": "MIT" - }, - "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": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "license": "ISC", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", - "dev": true, - "license": "ISC", - "dependencies": { - "delaunator": "5" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "dev": true, - "license": "ISC", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-geo": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", - "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-geo-voronoi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/d3-geo-voronoi/-/d3-geo-voronoi-2.1.0.tgz", - "integrity": "sha512-kqE4yYuOjPbKdBXG0xztCacPwkVSK2REF1opSNrnqqtXJmNcM++UbwQ8SxvwP6IQTj9RvIjjK4qeiVsEfj0Z2Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "d3-array": "3", - "d3-delaunay": "6", - "d3-geo": "3", - "d3-tricontour": "1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "dev": true, - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate-path": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/d3-interpolate-path/-/d3-interpolate-path-2.3.0.tgz", - "integrity": "sha512-tZYtGXxBmbgHsIc9Wms6LS5u4w6KbP8C09a4/ZYc4KLMYYqub57rRBUgpUr2CIarIrJEpdAWWxWQvofgaMpbKQ==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-sankey": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", - "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "d3-array": "1 - 2", - "d3-shape": "^1.2.0" - } - }, - "node_modules/d3-sankey/node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "internmap": "^1.0.0" - } - }, - "node_modules/d3-sankey/node_modules/d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/d3-sankey/node_modules/d3-shape": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "d3-path": "1" - } - }, - "node_modules/d3-sankey/node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", - "dev": true, - "license": "ISC" - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "license": "ISC", - "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-tile": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d3-tile/-/d3-tile-1.0.0.tgz", - "integrity": "sha512-79fnTKpPMPDS5xQ0xuS9ir0165NEwwkFpe/DSOmc2Gl9ldYzKKRDWogmTTE8wAJ8NA7PMapNfEcyKhI9Lxdu5Q==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "dev": true, - "license": "ISC", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-tricontour": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/d3-tricontour/-/d3-tricontour-1.0.2.tgz", - "integrity": "sha512-HIRxHzHagPtUPNabjOlfcyismJYIsc+Xlq4mlsts4e8eAcwyq9Tgk/sYdyhlBpQ0MHwVquc/8j+e29YjXnmxeA==", - "dev": true, - "license": "ISC", - "dependencies": { - "d3-delaunay": "6", - "d3-scale": "4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/date-fns": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", - "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/kossnocorp" - } - }, - "node_modules/date-fns-tz": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-3.2.0.tgz", - "integrity": "sha512-sg8HqoTEulcbbbVXeg84u5UnlsQa8GS5QXMqjjYIhS4abEVVKIUwe0/l/UhrZdKaL/W5eWZNlbTeEIiOXTcsBQ==", - "license": "MIT", - "peerDependencies": { - "date-fns": "^3.0.0 || ^4.0.0" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delaunator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", - "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", - "dev": true, - "license": "ISC", - "dependencies": { - "robust-predicates": "^3.0.2" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-libc": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", - "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/devalue": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", - "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", - "dev": true, - "license": "MIT" - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", - "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.29.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz", - "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.20.1", - "@eslint/config-helpers": "^0.2.1", - "@eslint/core": "^0.14.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.29.0", - "@eslint/plugin-kit": "^0.3.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-prettier": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", - "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "funding": { - "url": "https://opencollective.com/eslint-config-prettier" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-svelte": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-3.9.2.tgz", - "integrity": "sha512-aqzfHtG9RPaFhCUFm5QFC6eFY/yHFQIT8VYYFe7/mT2A9mbgVR3XV2keCqU19LN8iVD9mdvRvqHU+4+CzJImvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.6.1", - "@jridgewell/sourcemap-codec": "^1.5.0", - "esutils": "^2.0.3", - "globals": "^16.0.0", - "known-css-properties": "^0.36.0", - "postcss": "^8.4.49", - "postcss-load-config": "^3.1.4", - "postcss-safe-parser": "^7.0.0", - "semver": "^7.6.3", - "svelte-eslint-parser": "^1.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "eslint": "^8.57.1 || ^9.0.0", - "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "svelte": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esm-env": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", - "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", - "license": "MIT" - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrap": { - "version": "1.4.9", - "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.9.tgz", - "integrity": "sha512-3OMlcd0a03UGuZpPeUC1HxR3nA23l+HEyCiZw3b3FumJIN9KphoGzDJKMXI1S72jVS1dsenDyQC0kJlO1U9E1g==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - } - }, - "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": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "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": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "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": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "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" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "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": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "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": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", - "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function-timeout": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-0.1.1.tgz", - "integrity": "sha512-0NVVC0TaP7dSTvn1yMiy6d6Q8gifzbvQafO46RtLG/kHJUBNd+pVRGOBoK44wNBvtSPUJRfdVvkFdD3p0xvyZg==", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz", - "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/hammerjs": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/human-format": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/human-format/-/human-format-1.2.1.tgz", - "integrity": "sha512-o5Ldz62VWR5lYUZ8aVQaLKiN37NsHnmk3xjMoUjza3mGkk8MvMofgZT0T6HKSCKSJIir+AWk9Dx8KhxvZAUgCg==", - "license": "ISC", - "engines": { - "node": ">=4" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immer": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", - "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, - "node_modules/immutable": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", - "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/import-fresh": { - "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": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inline-style-parser": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", - "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/ip-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", - "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-cidr": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/is-cidr/-/is-cidr-5.1.1.tgz", - "integrity": "sha512-AwzRMjtJNTPOgm7xuYZ71715z99t+4yRnSnSzgK5err5+heYi4zMuvmpUadaJ28+KCXCQo8CjUrKQZRWSPmqTQ==", - "license": "BSD-2-Clause", - "dependencies": { - "cidr-regex": "^4.1.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-ip": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-5.0.1.tgz", - "integrity": "sha512-FCsGHdlrOnZQcp0+XT5a+pYowf33itBalCl+7ovNXC/7o5BhIpG14M3OrpPPdBSIQJCm+0M5+9mO7S9VVTTCFw==", - "license": "MIT", - "dependencies": { - "ip-regex": "^5.0.0", - "super-regex": "^0.2.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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": { - "node": ">=0.12.0" - } - }, - "node_modules/is-reference": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", - "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.6" - } - }, - "node_modules/is-regexp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-3.1.0.tgz", - "integrity": "sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/jiti": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", - "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/js-base64": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", - "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==", - "license": "BSD-3-Clause" - }, - "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": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "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" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/known-css-properties": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz", - "integrity": "sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/layerchart": { - "version": "2.0.0-next.23", - "resolved": "https://registry.npmjs.org/layerchart/-/layerchart-2.0.0-next.23.tgz", - "integrity": "sha512-Uf7/xMjhHcJHQqstjV4RN9GdUWSLQkmrfCKsvTneeJBVNUWs2C9djH6SQTVtv/FcT0HEyIv573RomB3m7uLSUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@dagrejs/dagre": "^1.1.4", - "@layerstack/svelte-actions": "1.0.1-next.12", - "@layerstack/svelte-state": "0.1.0-next.17", - "@layerstack/tailwind": "2.0.0-next.15", - "@layerstack/utils": "2.0.0-next.12", - "d3-array": "^3.2.4", - "d3-color": "^3.1.0", - "d3-delaunay": "^6.0.4", - "d3-dsv": "^3.0.1", - "d3-force": "^3.0.0", - "d3-geo": "^3.1.1", - "d3-geo-voronoi": "^2.1.0", - "d3-hierarchy": "^3.1.2", - "d3-interpolate": "^3.0.1", - "d3-interpolate-path": "^2.3.0", - "d3-path": "^3.1.0", - "d3-quadtree": "^3.0.1", - "d3-random": "^3.0.1", - "d3-sankey": "^0.12.3", - "d3-scale": "^4.0.2", - "d3-scale-chromatic": "^3.1.0", - "d3-shape": "^3.2.0", - "d3-tile": "^1.0.0", - "d3-time": "^3.1.0", - "lodash-es": "^4.17.21", - "memoize": "^10.1.0", - "runed": "^0.28.0" - }, - "peerDependencies": { - "svelte": "^5.0.0" - } - }, - "node_modules/layerchart/node_modules/@layerstack/utils": { - "version": "2.0.0-next.12", - "resolved": "https://registry.npmjs.org/@layerstack/utils/-/utils-2.0.0-next.12.tgz", - "integrity": "sha512-fhGZUlSr3N+D44BYm37WKMGSEFyZBW+dwIqtGU8Cl54mR4TLQ/UwyGhdpgIHyH/x/8q1abE0fP0Dn6ZsrDE3BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "d3-array": "^3.2.4", - "d3-time": "^3.1.0", - "d3-time-format": "^4.1.0", - "lodash-es": "^4.17.21" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lightningcss": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", - "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.30.1", - "lightningcss-darwin-x64": "1.30.1", - "lightningcss-freebsd-x64": "1.30.1", - "lightningcss-linux-arm-gnueabihf": "1.30.1", - "lightningcss-linux-arm64-gnu": "1.30.1", - "lightningcss-linux-arm64-musl": "1.30.1", - "lightningcss-linux-x64-gnu": "1.30.1", - "lightningcss-linux-x64-musl": "1.30.1", - "lightningcss-win32-arm64-msvc": "1.30.1", - "lightningcss-win32-x64-msvc": "1.30.1" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", - "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", - "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", - "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", - "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", - "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", - "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", - "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", - "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", - "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", - "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/locate-character": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", - "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", - "license": "MIT" - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "license": "MIT" - }, - "node_modules/lodash.castarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", - "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lucide-svelte": { - "version": "0.516.0", - "resolved": "https://registry.npmjs.org/lucide-svelte/-/lucide-svelte-0.516.0.tgz", - "integrity": "sha512-8YmF3pke1owMbtdYWscJFN47dEqJ41oXz3hVRKnYjQbDXE9uYqkE9KnAME1268mBhsC97xTqMYh07/RYrojLKA==", - "license": "ISC", - "peerDependencies": { - "svelte": "^3 || ^4 || ^5.0.0-next.42" - } - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/memoize": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/memoize/-/memoize-10.1.0.tgz", - "integrity": "sha512-MMbFhJzh4Jlg/poq1si90XRlTZRDHVqdlz2mPyGJ6kqMpyHUyVpDd5gpFAvVehW64+RA1eKE9Yt8aSLY7w2Kgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sindresorhus/memoize?sponsor=1" - } - }, - "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": { - "node": ">= 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": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mini-svg-data-uri": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", - "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", - "dev": true, - "license": "MIT", - "bin": { - "mini-svg-data-uri": "cli.js" - } - }, - "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": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minizlib": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", - "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mode-watcher": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/mode-watcher/-/mode-watcher-1.0.8.tgz", - "integrity": "sha512-1YIgYymrae0lhcG9zPS/YWOvcKsUbM4bLGIh+eXTUIput5+dEJifcmUgp8NSehSXGSwITH6jbSjNhGEIhE3k5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "runed": "^0.25.0", - "svelte-toolbelt": "^0.7.1" - }, - "peerDependencies": { - "svelte": "^5.27.0" - } - }, - "node_modules/mode-watcher/node_modules/runed": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/runed/-/runed-0.25.0.tgz", - "integrity": "sha512-7+ma4AG9FT2sWQEA0Egf6mb7PBT2vHyuHail1ie8ropfSjvZGtEAx8YTmUjv/APCsdRRxEVvArNjALk9zFSOrg==", - "dev": true, - "funding": [ - "https://github.com/sponsors/huntabyte", - "https://github.com/sponsors/tglide" - ], - "dependencies": { - "esm-env": "^1.0.0" - }, - "peerDependencies": { - "svelte": "^5.7.0" - } - }, - "node_modules/mode-watcher/node_modules/svelte-toolbelt": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.7.1.tgz", - "integrity": "sha512-HcBOcR17Vx9bjaOceUvxkY3nGmbBmCBBbuWLLEWO6jtmWH8f/QoWmbyUfQZrpDINH39en1b8mptfPQT9VKQ1xQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/huntabyte" - ], - "dependencies": { - "clsx": "^2.1.1", - "runed": "^0.23.2", - "style-to-object": "^1.0.8" - }, - "engines": { - "node": ">=18", - "pnpm": ">=8.7.0" - }, - "peerDependencies": { - "svelte": "^5.0.0" - } - }, - "node_modules/mode-watcher/node_modules/svelte-toolbelt/node_modules/runed": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/runed/-/runed-0.23.4.tgz", - "integrity": "sha512-9q8oUiBYeXIDLWNK5DfCWlkL0EW3oGbk845VdKlPeia28l751VpfesaB/+7pI6rnbx1I6rqoZ2fZxptOJLxILA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/huntabyte", - "https://github.com/sponsors/tglide" - ], - "dependencies": { - "esm-env": "^1.0.0" - }, - "peerDependencies": { - "svelte": "^5.7.0" - } - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/mrmime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", - "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/paneforge": { - "version": "1.0.0-next.5", - "resolved": "https://registry.npmjs.org/paneforge/-/paneforge-1.0.0-next.5.tgz", - "integrity": "sha512-1ArDM+GMEO+o6pixEAFobhTkWkyxUDdHyw2bKruvQIXBStJmdRP7HoV4jNBZ/2i9UHDzmczxJzA3D2tKa91phw==", - "dev": true, - "license": "MIT", - "dependencies": { - "runed": "^0.23.4", - "svelte-toolbelt": "^0.7.1" - }, - "peerDependencies": { - "svelte": "^5.20.0" - } - }, - "node_modules/paneforge/node_modules/runed": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/runed/-/runed-0.23.4.tgz", - "integrity": "sha512-9q8oUiBYeXIDLWNK5DfCWlkL0EW3oGbk845VdKlPeia28l751VpfesaB/+7pI6rnbx1I6rqoZ2fZxptOJLxILA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/huntabyte", - "https://github.com/sponsors/tglide" - ], - "dependencies": { - "esm-env": "^1.0.0" - }, - "peerDependencies": { - "svelte": "^5.7.0" - } - }, - "node_modules/paneforge/node_modules/svelte-toolbelt": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.7.1.tgz", - "integrity": "sha512-HcBOcR17Vx9bjaOceUvxkY3nGmbBmCBBbuWLLEWO6jtmWH8f/QoWmbyUfQZrpDINH39en1b8mptfPQT9VKQ1xQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/huntabyte" - ], - "dependencies": { - "clsx": "^2.1.1", - "runed": "^0.23.2", - "style-to-object": "^1.0.8" - }, - "engines": { - "node": ">=18", - "pnpm": ">=8.7.0" - }, - "peerDependencies": { - "svelte": "^5.0.0" - } - }, - "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": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "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": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pofile": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/pofile/-/pofile-1.1.4.tgz", - "integrity": "sha512-r6Q21sKsY1AjTVVjOuU02VYKVNQGJNQHjTIvs4dEbeuuYfxgYk/DGD2mqqq4RDaVkwdSq0VEtmQUOPe/wH8X3g==", - "license": "MIT" - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-load-config/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-safe-parser": { - "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": ">=18.0" - }, - "peerDependencies": { - "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": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss-scss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.4.29" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "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", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-plugin-svelte": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.4.0.tgz", - "integrity": "sha512-pn1ra/0mPObzqoIQn/vUTR3ZZI6UuZ0sHqMK5x2jMLGrs53h0sXhkVuDcrlssHwIMk7FYrMjHBPoUSyyEEDlBQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "prettier": "^3.0.0", - "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" - } - }, - "node_modules/prettier-plugin-tailwindcss": { - "version": "0.6.12", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.12.tgz", - "integrity": "sha512-OuTQKoqNwV7RnxTPwXWzOFXy6Jc4z8oeRZYGuMpRyG3WbuR3jjXdQFK8qFBMBx8UHWdHrddARz2fgUenild6aw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.21.3" - }, - "peerDependencies": { - "@ianvs/prettier-plugin-sort-imports": "*", - "@prettier/plugin-pug": "*", - "@shopify/prettier-plugin-liquid": "*", - "@trivago/prettier-plugin-sort-imports": "*", - "@zackad/prettier-plugin-twig": "*", - "prettier": "^3.0", - "prettier-plugin-astro": "*", - "prettier-plugin-css-order": "*", - "prettier-plugin-import-sort": "*", - "prettier-plugin-jsdoc": "*", - "prettier-plugin-marko": "*", - "prettier-plugin-multiline-arrays": "*", - "prettier-plugin-organize-attributes": "*", - "prettier-plugin-organize-imports": "*", - "prettier-plugin-sort-imports": "*", - "prettier-plugin-style-order": "*", - "prettier-plugin-svelte": "*" - }, - "peerDependenciesMeta": { - "@ianvs/prettier-plugin-sort-imports": { - "optional": true - }, - "@prettier/plugin-pug": { - "optional": true - }, - "@shopify/prettier-plugin-liquid": { - "optional": true - }, - "@trivago/prettier-plugin-sort-imports": { - "optional": true - }, - "@zackad/prettier-plugin-twig": { - "optional": true - }, - "prettier-plugin-astro": { - "optional": true - }, - "prettier-plugin-css-order": { - "optional": true - }, - "prettier-plugin-import-sort": { - "optional": true - }, - "prettier-plugin-jsdoc": { - "optional": true - }, - "prettier-plugin-marko": { - "optional": true - }, - "prettier-plugin-multiline-arrays": { - "optional": true - }, - "prettier-plugin-organize-attributes": { - "optional": true - }, - "prettier-plugin-organize-imports": { - "optional": true - }, - "prettier-plugin-sort-imports": { - "optional": true - }, - "prettier-plugin-style-order": { - "optional": true - }, - "prettier-plugin-svelte": { - "optional": true - } - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, - "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": { - "node": ">=6" - } - }, - "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": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "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": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", - "dev": true, - "license": "Unlicense" - }, - "node_modules/rollup": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", - "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.7" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.43.0", - "@rollup/rollup-android-arm64": "4.43.0", - "@rollup/rollup-darwin-arm64": "4.43.0", - "@rollup/rollup-darwin-x64": "4.43.0", - "@rollup/rollup-freebsd-arm64": "4.43.0", - "@rollup/rollup-freebsd-x64": "4.43.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.43.0", - "@rollup/rollup-linux-arm-musleabihf": "4.43.0", - "@rollup/rollup-linux-arm64-gnu": "4.43.0", - "@rollup/rollup-linux-arm64-musl": "4.43.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.43.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0", - "@rollup/rollup-linux-riscv64-gnu": "4.43.0", - "@rollup/rollup-linux-riscv64-musl": "4.43.0", - "@rollup/rollup-linux-s390x-gnu": "4.43.0", - "@rollup/rollup-linux-x64-gnu": "4.43.0", - "@rollup/rollup-linux-x64-musl": "4.43.0", - "@rollup/rollup-win32-arm64-msvc": "4.43.0", - "@rollup/rollup-win32-ia32-msvc": "4.43.0", - "@rollup/rollup-win32-x64-msvc": "4.43.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup/node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", - "dev": true, - "license": "MIT" - }, - "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": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/runed": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/runed/-/runed-0.28.0.tgz", - "integrity": "sha512-k2xx7RuO9hWcdd9f+8JoBeqWtYrm5CALfgpkg2YDB80ds/QE4w0qqu34A7fqiAwiBBSBQOid7TLxwxVC27ymWQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/huntabyte", - "https://github.com/sponsors/tglide" - ], - "license": "MIT", - "dependencies": { - "esm-env": "^1.0.0" - }, - "peerDependencies": { - "svelte": "^5.7.0" - } - }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/sass": { - "version": "1.89.2", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.2.tgz", - "integrity": "sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" - } - }, - "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-cookie-parser": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/sirv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", - "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "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": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/style-to-object": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz", - "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "inline-style-parser": "0.2.4" - } - }, - "node_modules/super-regex": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-0.2.0.tgz", - "integrity": "sha512-WZzIx3rC1CvbMDloLsVw0lkZVKJWbrkJ0k1ghKFmcnPrW1+jWbgTkTEWVtD9lMdmI4jZEz40+naBxl1dCUhXXw==", - "license": "MIT", - "dependencies": { - "clone-regexp": "^3.0.0", - "function-timeout": "^0.1.0", - "time-span": "^5.1.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/svelte": { - "version": "5.34.5", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.34.5.tgz", - "integrity": "sha512-MMqhT/iTdwExPcyBCt+Bqxv7FV+LpSciej/gVgd/Vj7zRF9iPgRWGBxiVAwfzPYAOgwgFigIAQV8VJfhyB08/w==", - "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", - "aria-query": "^5.3.1", - "axobject-query": "^4.1.0", - "clsx": "^2.1.1", - "esm-env": "^1.2.1", - "esrap": "^1.4.8", - "is-reference": "^3.0.3", - "locate-character": "^3.0.0", - "magic-string": "^0.30.11", - "zimmerframe": "^1.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/svelte-check": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.2.1.tgz", - "integrity": "sha512-e49SU1RStvQhoipkQ/aonDhHnG3qxHSBtNfBRb9pxVXoa+N7qybAo32KgA9wEb2PCYFNaDg7bZCdhLD1vHpdYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "chokidar": "^4.0.1", - "fdir": "^6.2.0", - "picocolors": "^1.0.0", - "sade": "^1.7.4" - }, - "bin": { - "svelte-check": "bin/svelte-check" - }, - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0-next.0", - "typescript": ">=5.0.0" - } - }, - "node_modules/svelte-check/node_modules/fdir": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", - "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/svelte-check/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/svelte-eslint-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.2.0.tgz", - "integrity": "sha512-mbPtajIeuiyU80BEyGvwAktBeTX7KCr5/0l+uRGLq1dafwRNrjfM5kHGJScEBlPG3ipu6dJqfW/k0/fujvIEVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "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": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "svelte": { - "optional": true - } - } - }, - "node_modules/svelte-eslint-parser/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/svelte-sonner": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/svelte-sonner/-/svelte-sonner-1.0.5.tgz", - "integrity": "sha512-9dpGPFqKb/QWudYqGnEz93vuY+NgCEvyNvxoCLMVGw6sDN/3oVeKV1xiEirW2E1N3vJEyj5imSBNOGltQHA7mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "runed": "^0.28.0" - }, - "peerDependencies": { - "svelte": "^5.0.0" - } - }, - "node_modules/svelte-toolbelt": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.9.2.tgz", - "integrity": "sha512-REb1cENGnFbhNSmIdCb1SDIpjEa3n1kXhNVHqGNEesjmPX3bG87gUZiCG8cqOt9AAarqzTzOtI2jEEWr/ZbHwA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/huntabyte" - ], - "dependencies": { - "clsx": "^2.1.1", - "runed": "^0.28.0", - "style-to-object": "^1.0.8" - }, - "engines": { - "node": ">=18", - "pnpm": ">=8.7.0" - }, - "peerDependencies": { - "svelte": "^5.30.2" - } - }, - "node_modules/tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", - "dev": true, - "license": "MIT" - }, - "node_modules/tabulator-tables": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/tabulator-tables/-/tabulator-tables-6.3.1.tgz", - "integrity": "sha512-qFW7kfadtcaISQIibKAIy0f3eeIXUVi8242Vly1iJfMD79kfEGzfczNuPBN/80hDxHzQJXYbmJ8VipI40hQtfA==", - "license": "MIT" - }, - "node_modules/tailwind-merge": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.1.tgz", - "integrity": "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" - } - }, - "node_modules/tailwind-variants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-1.0.0.tgz", - "integrity": "sha512-2WSbv4ulEEyuBKomOunut65D8UZwxrHoRfYnxGcQNnHqlSCp2+B7Yz2W+yrNDrxRodOXtGD/1oCcKGNBnUqMqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tailwind-merge": "3.0.2" - }, - "engines": { - "node": ">=16.x", - "pnpm": ">=7.x" - }, - "peerDependencies": { - "tailwindcss": "*" - } - }, - "node_modules/tailwind-variants/node_modules/tailwind-merge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.0.2.tgz", - "integrity": "sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" - } - }, - "node_modules/tailwindcss": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.10.tgz", - "integrity": "sha512-P3nr6WkvKV/ONsTzj6Gb57sWPMX29EPNPopo7+FcpkQaNsrNpZ1pv8QmrYI2RqEKD7mlGqLnGovlcYnBK0IqUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tapable": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", - "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", - "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/time-span": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", - "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", - "license": "MIT", - "dependencies": { - "convert-hrtime": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", - "license": "MIT", - "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", - "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "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": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD" - }, - "node_modules/tw-animate-css": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.3.4.tgz", - "integrity": "sha512-dd1Ht6/YQHcNbq0znIT6dG8uhO7Ce+VIIhZUhjsryXsMPJQz3bZg7Q2eNzLwipb25bRZslGb2myio5mScd1TFg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Wombosvideo" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.34.1.tgz", - "integrity": "sha512-XjS+b6Vg9oT1BaIUfkW3M3LvqZE++rbzAMEHuccCfO/YkP43ha6w3jTEMilQxMF92nVOYCcdjv1ZUhAa1D/0ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.34.1", - "@typescript-eslint/parser": "8.34.1", - "@typescript-eslint/utils": "8.34.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "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": { - "punycode": "^2.1.0" - } - }, - "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/validator": { - "version": "13.15.15", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.15.tgz", - "integrity": "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vite": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", - "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", - "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", - "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", - "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", - "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", - "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", - "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", - "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", - "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", - "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", - "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", - "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", - "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", - "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", - "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", - "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", - "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", - "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", - "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", - "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", - "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", - "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", - "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", - "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", - "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.5", - "@esbuild/android-arm": "0.25.5", - "@esbuild/android-arm64": "0.25.5", - "@esbuild/android-x64": "0.25.5", - "@esbuild/darwin-arm64": "0.25.5", - "@esbuild/darwin-x64": "0.25.5", - "@esbuild/freebsd-arm64": "0.25.5", - "@esbuild/freebsd-x64": "0.25.5", - "@esbuild/linux-arm": "0.25.5", - "@esbuild/linux-arm64": "0.25.5", - "@esbuild/linux-ia32": "0.25.5", - "@esbuild/linux-loong64": "0.25.5", - "@esbuild/linux-mips64el": "0.25.5", - "@esbuild/linux-ppc64": "0.25.5", - "@esbuild/linux-riscv64": "0.25.5", - "@esbuild/linux-s390x": "0.25.5", - "@esbuild/linux-x64": "0.25.5", - "@esbuild/netbsd-arm64": "0.25.5", - "@esbuild/netbsd-x64": "0.25.5", - "@esbuild/openbsd-arm64": "0.25.5", - "@esbuild/openbsd-x64": "0.25.5", - "@esbuild/sunos-x64": "0.25.5", - "@esbuild/win32-arm64": "0.25.5", - "@esbuild/win32-ia32": "0.25.5", - "@esbuild/win32-x64": "0.25.5" - } - }, - "node_modules/vite/node_modules/fdir": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", - "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/vitefu": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.6.tgz", - "integrity": "sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==", - "dev": true, - "license": "MIT", - "workspaces": [ - "tests/deps/*", - "tests/projects/*" - ], - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wuchale": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/wuchale/-/wuchale-0.5.5.tgz", - "integrity": "sha512-Dqvg/XeeGciT/kX8bbsQLO6beIisEFnYmp71rofITXi3vJxmQN4yk0DhUXLKfJO9+xXSBNmrwU7rxpIL6/dpKw==", - "license": "MIT", - "dependencies": { - "@sveltejs/acorn-typescript": "^1.0.5", - "acorn": "^8.15.0", - "magic-string": "^0.30.17", - "pofile": "^1.1.4", - "svelte": "^5.28.1", - "tinyglobby": "^0.2.14" - }, - "bin": { - "wuchale": "dist/cli.js" - } - }, - "node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/yaml": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", - "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zimmerframe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", - "integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==", - "license": "MIT" - }, - "node_modules/zod": { - "version": "3.25.67", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", - "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - } -} diff --git a/new-web/package.json b/new-web/package.json deleted file mode 100644 index 5f73342a..00000000 --- a/new-web/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "name": "new-web", - "private": true, - "version": "0.0.1", - "type": "module", - "scripts": { - "dev": "vite dev --host", - "build": "vite build", - "preview": "vite preview", - "prepare": "svelte-kit sync || echo ''", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "format": "prettier --write .", - "lint": "prettier --check . && eslint ." - }, - "devDependencies": { - "@eslint/compat": "^1.2.5", - "@eslint/js": "^9.18.0", - "@iconify/svelte": "^5.0.0", - "@internationalized/date": "^3.8.2", - "@sveltejs/adapter-static": "^3.0.8", - "@sveltejs/kit": "^2.16.0", - "@sveltejs/vite-plugin-svelte": "^5.0.0", - "@tailwindcss/forms": "^0.5.9", - "@tailwindcss/typography": "^0.5.15", - "@tailwindcss/vite": "^4.0.0", - "@types/d3-scale": "^4.0.9", - "@types/d3-shape": "^3.1.7", - "@types/tabulator-tables": "^6.2.6", - "@types/validator": "^13.15.2", - "bits-ui": "^2.8.0", - "clsx": "^2.1.1", - "eslint": "^9.18.0", - "eslint-config-prettier": "^10.0.1", - "eslint-plugin-svelte": "^3.0.0", - "globals": "^16.0.0", - "layerchart": "^2.0.0-next.18", - "mode-watcher": "^1.0.8", - "paneforge": "^1.0.0-next.5", - "prettier": "^3.4.2", - "prettier-plugin-svelte": "^3.3.3", - "prettier-plugin-tailwindcss": "^0.6.11", - "svelte": "^5.0.0", - "svelte-check": "^4.0.0", - "svelte-sonner": "^1.0.5", - "tailwind-merge": "^3.3.1", - "tailwind-variants": "^1.0.0", - "tailwindcss": "^4.0.0", - "tw-animate-css": "^1.3.4", - "typescript": "^5.0.0", - "typescript-eslint": "^8.20.0", - "vite": "^6.2.6" - }, - "dependencies": { - "@battlefieldduck/xterm-svelte": "^2.1.0", - "@fontsource/noto-sans": "^5.2.7", - "@layerstack/svelte-stores": "^1.0.2", - "@lucide/svelte": "^0.516.0", - "@svelte-put/shortcut": "^4.1.0", - "@sveltestack/svelte-query": "^1.6.0", - "adze": "^2.2.4", - "axios": "^1.10.0", - "chart.js": "^4.5.0", - "chartjs-adapter-date-fns": "^3.0.0", - "chartjs-plugin-zoom": "^2.2.0", - "d3-shape": "^3.2.0", - "date-fns": "^4.1.0", - "date-fns-tz": "^3.2.0", - "human-format": "^1.2.1", - "is-cidr": "^5.1.1", - "is-ip": "^5.0.1", - "lucide-svelte": "^0.516.0", - "tabulator-tables": "^6.3.1", - "validator": "^13.15.15", - "wuchale": "0.5.5", - "zod": "^3.25.67" - } -} diff --git a/new-web/src/app.d.ts b/new-web/src/app.d.ts deleted file mode 100644 index da08e6da..00000000 --- a/new-web/src/app.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -// See https://svelte.dev/docs/kit/types#app.d.ts -// for information about these interfaces -declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface PageState {} - // interface Platform {} - } -} - -export {}; diff --git a/new-web/src/app.html b/new-web/src/app.html deleted file mode 100644 index 3a9e3d39..00000000 --- a/new-web/src/app.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - %sveltekit.head% - - - -
%sveltekit.body%
- - - \ No newline at end of file diff --git a/new-web/src/css/tabulator.scss b/new-web/src/css/tabulator.scss deleted file mode 100644 index e9edcafa..00000000 --- a/new-web/src/css/tabulator.scss +++ /dev/null @@ -1,1657 +0,0 @@ -@use 'sass:color'; - -//Main Theme Variables -$backgroundColor: #888 !default; //background color of tabulator -$borderColor: #999 !default; //border to tabulator -$textSize: 14px !default; //table text size - -//header theming -$headerBackgroundColor: #e6e6e6 !default; //border to tabulator -$headerTextColor: #555 !default; //header text color -$headerBorderColor: #aaa !default; //header border color -$headerSeparatorColor: #999 !default; //header bottom separator color -$headerMargin: 4px !default; //padding round header.io -//column header arrows -$sortArrowHover: #555 !default; -$sortArrowActive: #666 !default; -$sortArrowInactive: #bbb !default; - -$columnResizeGuideColor: #999 !default; - -//row theming -$rowBackgroundColor: #fff !default; //table row background color -$rowAltBackgroundColor: #efefef !default; //table row background color -$rowBorderColor: #aaa !default; //table border color -$rowTextColor: #333 !default; //table text color -$rowHoverBackground: #bbb !default; //row background color on hover - -$rowSelectedBackground: #9abcea !default; //row background color when selected -$rowSelectedBackgroundHover: #769bcc !default; //row background color when selected and hovered - -$editBoxColor: #1d68cd !default; //border color for edit boxes -$errorColor: #dd0000 !default; //error indication - -//footer theming -$footerBackgroundColor: #e6e6e6 !default; //border to tabulator -$footerTextColor: #555 !default; //footer text color -$footerBorderColor: #aaa !default; //footer border color -$footerSeparatorColor: #999 !default; //footer bottom separator color -$footerActiveColor: #d00 !default; //footer bottom active text color - -$spreadsheetActiveTabColor: #fff !default; //color for the active spreadsheet tab - -//range selection -$rangeBorderColor: #2975dd !default; //range border color -$rangeHandleColor: $rangeBorderColor !default; //range handle color -$rangeHeaderSelectedBackground: #3876ca !default; //header background color when selected -$rangeHeaderSelectedTextColor: #ffffff !default; //header text color when selected -$rangeHeaderHighlightBackground: #d6d6d6 !default; //header background color when highlighted -$rangeHeaderTextHighlightBackground: #000000 !default; //header text color when highlighted - -//Tabulator Containing Element -.tabulator { - position: relative; - - border: 1px solid $borderColor; - - background-color: $backgroundColor; - - font-size: $textSize; - text-align: left; - overflow: hidden; - - -webkit-transform: translateZ(0); - -moz-transform: translateZ(0); - -ms-transform: translateZ(0); - -o-transform: translateZ(0); - transform: translateZ(0); - - &[tabulator-layout='fitDataFill'] { - .tabulator-tableholder { - .tabulator-table { - min-width: 100%; - } - } - } - - &[tabulator-layout='fitDataTable'] { - display: inline-block; - } - - &.tabulator-block-select { - user-select: none; - } - - &.tabulator-ranges { - .tabulator-cell:not(.tabulator-editing) { - user-select: none; - } - } - - //column header containing element - .tabulator-header { - position: relative; - box-sizing: border-box; - - width: 100%; - - border-bottom: 1px solid $headerSeparatorColor; - background-color: $headerBackgroundColor; - color: $headerTextColor; - font-weight: bold; - - white-space: nowrap; - overflow: hidden; - - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - - outline: none; - - &.tabulator-header-hidden { - display: none; - } - - .tabulator-header-contents { - position: relative; - overflow: hidden; - - .tabulator-headers { - display: inline-block; - } - } - - //individual column header element - .tabulator-col { - display: inline-flex; - position: relative; - box-sizing: border-box; - - flex-direction: column; - justify-content: flex-start; - - border-right: 1px solid $headerBorderColor; - background: $headerBackgroundColor; - - text-align: left; - vertical-align: bottom; - overflow: hidden; - - &.tabulator-moving { - position: absolute; - border: 1px solid $headerSeparatorColor; - background: color.adjust($headerBackgroundColor, $lightness: -10%); - pointer-events: none; - } - - &.tabulator-range-highlight { - background-color: $rangeHeaderHighlightBackground; - color: $rangeHeaderTextHighlightBackground; - } - - &.tabulator-range-selected { - background-color: $rangeHeaderSelectedBackground; - color: $rangeHeaderSelectedTextColor; - } - - //hold content of column header - .tabulator-col-content { - box-sizing: border-box; - position: relative; - padding: 4px; - - //header menu button - .tabulator-header-popup-button { - padding: 0 8px; - - &:hover { - cursor: pointer; - opacity: 0.6; - } - } - - //hold title and sort arrow - .tabulator-col-title-holder { - position: relative; - } - - //hold title of column header - .tabulator-col-title { - box-sizing: border-box; - width: 100%; - - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - vertical-align: bottom; - - &.tabulator-col-title-wrap { - white-space: normal; - text-overflow: initial; - } - - //element to hold title editor - .tabulator-title-editor { - box-sizing: border-box; - width: 100%; - - border: 1px solid #999; - - padding: 1px; - - background: #fff; - } - - .tabulator-header-popup-button + .tabulator-title-editor { - width: calc(100% - 22px); - } - } - - //column sorter arrow - .tabulator-col-sorter { - display: flex; - align-items: center; - - position: absolute; - top: 0; - bottom: 0; - right: 4px; - - .tabulator-arrow { - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid $sortArrowInactive; - } - } - } - - //complex header column group - &.tabulator-col-group { - //gelement to hold sub columns in column group - .tabulator-col-group-cols { - position: relative; - display: flex; - - border-top: 1px solid $headerBorderColor; - overflow: hidden; - - margin-right: -1px; - } - } - - //header filter containing element - .tabulator-header-filter { - position: relative; - box-sizing: border-box; - margin-top: 2px; - width: 100%; - text-align: center; - - //styling adjustment for inbuilt editors - textarea { - height: auto !important; - } - - svg { - margin-top: 3px; - } - - input { - &::-ms-clear { - width: 0; - height: 0; - } - } - } - - //styling child elements for sortable columns - &.tabulator-sortable { - .tabulator-col-title { - padding-right: 25px; - } - - @media (hover: hover) and (pointer: fine) { - &.tabulator-col-sorter-element:hover { - @apply cursor-pointer bg-neutral-200; - } - } - - &[aria-sort='none'] { - .tabulator-col-content .tabulator-col-sorter { - color: $sortArrowInactive; - - @media (hover: hover) and (pointer: fine) { - &.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid $sortArrowHover; - } - } - - .tabulator-arrow { - border-top: none; - border-bottom: 6px solid $sortArrowInactive; - } - } - } - - &[aria-sort='ascending'] { - .tabulator-col-content .tabulator-col-sorter { - color: $sortArrowActive; - - @media (hover: hover) and (pointer: fine) { - &.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-bottom: 6px solid $sortArrowHover; - } - } - - .tabulator-arrow { - border-top: none; - border-bottom: 6px solid $sortArrowActive; - } - } - } - - &[aria-sort='descending'] { - .tabulator-col-content .tabulator-col-sorter { - color: $sortArrowActive; - - @media (hover: hover) and (pointer: fine) { - &.tabulator-col-sorter-element .tabulator-arrow:hover { - cursor: pointer; - border-top: 6px solid $sortArrowHover; - } - } - - .tabulator-arrow { - border-bottom: none; - border-top: 6px solid $sortArrowActive; - color: $sortArrowActive; - } - } - } - } - - &.tabulator-col-vertical { - .tabulator-col-content { - .tabulator-col-title { - writing-mode: vertical-rl; - text-orientation: mixed; - - display: flex; - align-items: center; - justify-content: center; - } - } - - &.tabulator-col-vertical-flip { - .tabulator-col-title { - transform: rotate(180deg); - } - } - - &.tabulator-sortable { - .tabulator-col-title { - padding-right: 0; - padding-top: 20px; - } - - &.tabulator-col-vertical-flip { - .tabulator-col-title { - padding-right: 0; - padding-bottom: 20px; - } - } - - .tabulator-col-sorter { - justify-content: center; - left: 0; - right: 0; - top: 4px; - bottom: auto; - } - } - } - } - - .tabulator-frozen { - position: sticky; - left: 0; - - // background-color: inherit; - - z-index: 11; - - &.tabulator-frozen-left { - border-right: 2px solid $rowBorderColor; - } - - &.tabulator-frozen-right { - border-left: 2px solid $rowBorderColor; - } - } - - .tabulator-calcs-holder { - box-sizing: border-box; - display: inline-block; - - background: color.adjust($headerBackgroundColor, $lightness: 5%) !important; - - border-top: 1px solid $rowBorderColor; - border-bottom: 1px solid $headerBorderColor; - - // overflow: hidden; - - .tabulator-row { - background: color.adjust($headerBackgroundColor, $lightness: 5%) !important; - - .tabulator-col-resize-handle { - display: none; - } - } - } - - .tabulator-frozen-rows-holder { - display: inline-block; - &:empty { - display: none; - } - } - } - - //scrolling element to hold table - .tabulator-tableholder { - position: relative; - width: 100%; - white-space: nowrap; - overflow: auto; - -webkit-overflow-scrolling: touch; - - &:focus { - outline: none; - } - - //default placeholder element - .tabulator-placeholder { - box-sizing: border-box; - display: flex; - align-items: center; - justify-content: center; - - min-width: 100%; - width: 100%; - - &[tabulator-render-mode='virtual'] { - min-height: 100%; - } - - .tabulator-placeholder-contents { - display: inline-block; - text-align: center; - - padding: 10px; - - color: #ccc; - font-weight: bold; - font-size: 20px; - - white-space: normal; - } - } - - //element to hold table rows - .tabulator-table { - position: relative; - display: inline-block; - background-color: $rowBackgroundColor; - white-space: nowrap; - overflow: visible; - color: $rowTextColor; - - //row element - .tabulator-row { - &.tabulator-calcs { - font-weight: bold; - background: color.adjust($rowAltBackgroundColor, $lightness: -5%) !important; - - &.tabulator-calcs-top { - border-bottom: 2px solid $rowBorderColor; - } - - &.tabulator-calcs-bottom { - border-top: 2px solid $rowBorderColor; - } - } - } - } - - .tabulator-range-overlay { - position: absolute; - inset: 0; - z-index: 10; - pointer-events: none; - - .tabulator-range { - position: absolute; - box-sizing: border-box; - border: 1px solid $rangeBorderColor; - - &.tabulator-range-active::after { - content: ''; - position: absolute; - right: -3px; - bottom: -3px; - width: 6px; - height: 6px; - background-color: $rangeHandleColor; - border-radius: 999px; - } - } - - .tabulator-range-cell-active { - position: absolute; - box-sizing: border-box; - border: 2px solid $rangeBorderColor; - } - } - } - - //footer element - .tabulator-footer { - border-top: 1px solid $footerSeparatorColor; - background-color: $footerBackgroundColor; - - color: $footerTextColor; - font-weight: bold; - white-space: nowrap; - user-select: none; - - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - - .tabulator-footer-contents { - display: flex; - flex-direction: row; - align-items: center; - justify-content: space-between; - - padding: 5px 10px; - - &:empty { - display: none; - } - } - - .tabulator-spreadsheet-tabs { - margin-top: -5px; - - overflow-x: auto; - - .tabulator-spreadsheet-tab { - display: inline-block; - padding: 5px; - - border: $borderColor 1px solid; - border-top: none; - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; - - font-size: 0.9em; - - &:hover { - cursor: pointer; - opacity: 0.7; - } - - &.tabulator-spreadsheet-tab-active { - background: $spreadsheetActiveTabColor; - } - } - } - - .tabulator-calcs-holder { - box-sizing: border-box; - width: 100%; - - text-align: left; - - background: color.adjust($footerBackgroundColor, $lightness: 5%) !important; - border-bottom: 1px solid $rowBorderColor; - border-top: 1px solid $rowBorderColor; - - overflow: hidden; - - .tabulator-row { - display: inline-block; - background: color.adjust($footerBackgroundColor, $lightness: 5%) !important; - - .tabulator-col-resize-handle { - display: none; - } - } - - &:only-child { - margin-bottom: -5px; - border-bottom: none; - } - } - - & > * + .tabulator-page-counter { - margin-left: 10px; - } - - .tabulator-page-counter { - font-weight: normal; - } - - .tabulator-paginator { - flex: 1; - - text-align: right; - - color: $footerTextColor; - font-family: inherit; - font-weight: inherit; - font-size: inherit; - } - - //pagination container element - .tabulator-page-size { - display: inline-block; - - margin: 0 5px; - padding: 2px 5px; - - border: 1px solid $footerBorderColor; - border-radius: 3px; - } - - .tabulator-pages { - margin: 0 7px; - } - - //pagination button - .tabulator-page { - display: inline-block; - - margin: 0 2px; - padding: 2px 5px; - - border: 1px solid $footerBorderColor; - border-radius: 3px; - - background: rgba(255, 255, 255, 0.2); - - &.active { - color: $footerActiveColor; - } - - &:disabled { - opacity: 0.5; - } - - &:not(disabled) { - @media (hover: hover) and (pointer: fine) { - &:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - color: #fff; - } - } - } - } - } - - //column resize handles - .tabulator-col-resize-handle { - position: relative; - display: inline-block; - width: 6px; - - margin-left: -3px; - margin-right: -3px; - - z-index: 11; - vertical-align: middle; - - @media (hover: hover) and (pointer: fine) { - &:hover { - cursor: ew-resize; - } - } - - &:last-of-type { - width: 3px; - margin-right: 0; - } - } - - //column resize guide - .tabulator-col-resize-guide { - position: absolute; - top: 0; - width: 4px; - height: 100%; - margin-left: -0.5px; - background-color: $columnResizeGuideColor; - opacity: 0.5; - } - - //row resize guide - .tabulator-row-resize-guide { - position: absolute; - left: 0; - width: 100%; - height: 4px; - margin-top: -0.5px; - background-color: $columnResizeGuideColor; - opacity: 0.5; - } - - //holding div that contains loader and covers tabulator element to prevent interaction - .tabulator-alert { - position: absolute; - display: flex; - align-items: center; - - top: 0; - left: 0; - z-index: 100; - - height: 100%; - width: 100%; - background: rgba(0, 0, 0, 0.4); - text-align: center; - - //loading message element - .tabulator-alert-msg { - display: inline-block; - - margin: 0 auto; - padding: 10px 20px; - - border-radius: 10px; - - background: #fff; - font-weight: bold; - font-size: 16px; - - //loading message - &.tabulator-alert-state-msg { - border: 4px solid #333; - color: #000; - } - - //error message - &.tabulator-alert-state-error { - border: 4px solid #d00; - color: #590000; - } - } - } -} - -//row element -.tabulator-row { - position: relative; - box-sizing: border-box; - min-height: $textSize + ($headerMargin * 2); - background-color: $rowBackgroundColor; - - &.tabulator-row-even { - background-color: $rowAltBackgroundColor; - } - - @media (hover: hover) and (pointer: fine) { - &.tabulator-selectable:hover { - background-color: $rowHoverBackground; - cursor: pointer; - } - } - - &.tabulator-selected { - background-color: $rowSelectedBackground; - } - - @media (hover: hover) and (pointer: fine) { - &.tabulator-selected:hover { - background-color: $rowSelectedBackgroundHover; - cursor: pointer; - } - } - - &.tabulator-row-moving { - border: 1px solid #000; - background: #fff; - } - - &.tabulator-moving { - position: absolute; - - border-top: 1px solid $rowBorderColor; - border-bottom: 1px solid $rowBorderColor; - - pointer-events: none; - z-index: 15; - } - - &.tabulator-range-highlight { - .tabulator-cell.tabulator-range-row-header { - background-color: $rangeHeaderHighlightBackground; - color: $rangeHeaderTextHighlightBackground; - } - - &.tabulator-range-selected { - .tabulator-cell.tabulator-range-row-header { - background-color: $rangeHeaderSelectedBackground; - color: $rangeHeaderSelectedTextColor; - } - } - } - - &.tabulator-range-selected { - .tabulator-cell.tabulator-range-row-header { - background-color: $rangeHeaderSelectedBackground; - color: $rangeHeaderSelectedTextColor; - } - } - - //row resize handles - .tabulator-row-resize-handle { - position: absolute; - right: 0; - bottom: 0; - left: 0; - height: 5px; - - &.prev { - top: 0; - bottom: auto; - } - - @media (hover: hover) and (pointer: fine) { - &:hover { - cursor: ns-resize; - } - } - } - - .tabulator-responsive-collapse { - box-sizing: border-box; - - padding: 5px; - - border-top: 1px solid $rowBorderColor; - border-bottom: 1px solid $rowBorderColor; - - &:empty { - display: none; - } - - table { - font-size: $textSize; - - tr { - td { - position: relative; - - &:first-of-type { - padding-right: 10px; - } - } - } - } - } - - //cell element - .tabulator-cell { - display: inline-block; - position: relative; - box-sizing: border-box; - padding: 4px; - // border-right:1px solid $rowBorderColor; - vertical-align: middle; - white-space: nowrap; - overflow: hidden; - // text-overflow: ellipsis; - outline: none; - - &.tabulator-row-header { - border-right: 1px solid $borderColor; - border-bottom: 1px solid $rowBorderColor; - background: $headerBackgroundColor; - } - - &.tabulator-frozen { - display: inline-block; - position: sticky; - - left: 0; - - background-color: inherit; - - z-index: 11; - - &.tabulator-frozen-left { - border: none; - } - - &.tabulator-frozen-right { - border: none; - } - } - - &.tabulator-editing { - border: 1px solid $editBoxColor; - outline: none; - - padding: 0; - - input, - select { - border: 1px; - background: transparent; - outline: none; - } - } - - &.tabulator-validation-fail { - border: 1px solid $errorColor; - - input, - select { - border: 1px; - background: transparent; - - color: $errorColor; - } - } - - //movable row handle - &.tabulator-row-handle { - display: inline-flex; - align-items: center; - justify-content: center; - - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - - //handle holder - .tabulator-row-handle-box { - width: 80%; - - //Hamburger element - .tabulator-row-handle-bar { - width: 100%; - height: 3px; - margin-top: 2px; - background: #666; - } - } - } - - &.tabulator-range-selected:not(.tabulator-range-only-cell-selected):not( - .tabulator-range-row-header - ) { - background-color: $rowSelectedBackground; - } - - .tabulator-data-tree-branch-empty { - display: inline-block; - width: 7px; - } - - .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - - height: 9px; - width: 7px; - - margin-top: -9px; - margin-right: 5px; - - border-bottom-left-radius: 1px; - - border-left: 2px solid $rowBorderColor; - border-bottom: 2px solid $rowBorderColor; - } - - .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - - height: 11px; - width: 11px; - - margin-right: 5px; - - border: 1px solid $rowTextColor; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - - overflow: hidden; - - @media (hover: hover) and (pointer: fine) { - &:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } - } - - .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - - height: 7px; - width: 1px; - - background: transparent; - - &:after { - position: absolute; - content: ''; - left: -3px; - top: 3px; - - height: 1px; - width: 7px; - - background: $rowTextColor; - } - } - - .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - - height: 7px; - width: 1px; - - background: $rowTextColor; - - &:after { - position: absolute; - content: ''; - left: -3px; - top: 3px; - - height: 1px; - width: 7px; - - background: $rowTextColor; - } - } - } - - .tabulator-responsive-collapse-toggle { - display: inline-flex; - align-items: center; - justify-content: center; - - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; - - height: 15px; - width: 15px; - - border-radius: 20px; - background: #666; - - color: $rowBackgroundColor; - font-weight: bold; - font-size: 1.1em; - - @media (hover: hover) and (pointer: fine) { - &:hover { - opacity: 0.7; - cursor: pointer; - } - } - - &.open { - .tabulator-responsive-collapse-toggle-close { - display: initial; - } - - .tabulator-responsive-collapse-toggle-open { - display: none; - } - } - - svg { - stroke: $rowBackgroundColor; - } - - .tabulator-responsive-collapse-toggle-close { - display: none; - } - } - - .tabulator-traffic-light { - display: inline-block; - height: 14px; - width: 14px; - - border-radius: 14px; - } - } - - //row grouping element - &.tabulator-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid $rowBorderColor; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - - min-width: 100%; - - @media (hover: hover) and (pointer: fine) { - &:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } - } - - &.tabulator-group-visible { - .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid $sortArrowActive; - border-bottom: 0; - } - } - - &.tabulator-group-level-1 { - padding-left: 30px; - } - - &.tabulator-group-level-2 { - padding-left: 50px; - } - - &.tabulator-group-level-3 { - padding-left: 70px; - } - - &.tabulator-group-level-4 { - padding-left: 90px; - } - - &.tabulator-group-level-5 { - padding-left: 110px; - } - - .tabulator-group-toggle { - display: inline-block; - } - - //sorting arrow - .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid $sortArrowActive; - vertical-align: middle; - } - - span { - margin-left: 10px; - color: #d00; - } - } -} - -.tabulator-toggle { - box-sizing: border-box; - - display: flex; - flex-direction: row; - - border: 1px solid #ccc; - background: #dcdcdc; - - &.tabulator-toggle-on { - background: #1c6cc2; - } - - .tabulator-toggle-switch { - box-sizing: border-box; - border: 1px solid #ccc; - - background: #fff; - } -} - -.tabulator-popup-container { - position: absolute; - display: inline-block; - box-sizing: border-box; - - background: $rowBackgroundColor; - border: 1px solid $rowBorderColor; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - - font-size: $textSize; - - overflow-y: auto; - -webkit-overflow-scrolling: touch; - - z-index: 10000; -} - -.tabulator-popup { - padding: 5px; - - border-radius: 3px; -} - -.tabulator-tooltip { - max-width: Min(500px, 100%); - - padding: 3px 5px; - - border-radius: 2px; - box-shadow: none; - - font-size: 12px; - - pointer-events: none; -} - -.tabulator-menu { - .tabulator-menu-item { - position: relative; - box-sizing: border-box; - - padding: 5px 10px; - - user-select: none; - - &.tabulator-menu-item-disabled { - opacity: 0.5; - } - - @media (hover: hover) and (pointer: fine) { - &:not(.tabulator-menu-item-disabled):hover { - cursor: pointer; - background: $rowAltBackgroundColor; - } - } - - &.tabulator-menu-item-submenu { - padding-right: 25px; - - &::after { - display: inline-block; - position: absolute; - - top: calc(5px + 0.4em); - right: 10px; - height: 7px; - width: 7px; - - content: ''; - - border-width: 1px 1px 0 0; - border-style: solid; - border-color: $rowBorderColor; - vertical-align: top; - - transform: rotate(45deg); - } - } - } - - .tabulator-menu-separator { - border-top: 1px solid $rowBorderColor; - } -} - -.tabulator-edit-list { - max-height: 200px; - - font-size: $textSize; - - overflow-y: auto; - -webkit-overflow-scrolling: touch; - - .tabulator-edit-list-item { - padding: 4px; - - color: $rowTextColor; - outline: none; - - &.active { - color: $rowBackgroundColor; - background: $editBoxColor; - - &.focused { - outline: 1px solid rgba($rowBackgroundColor, 0.5); - } - } - - &.focused { - outline: 1px solid $editBoxColor; - } - - @media (hover: hover) and (pointer: fine) { - &:hover { - cursor: pointer; - - color: $rowBackgroundColor; - background: $editBoxColor; - } - } - } - - .tabulator-edit-list-placeholder { - padding: 4px; - - color: $rowTextColor; - text-align: center; - } - - .tabulator-edit-list-group { - border-bottom: 1px solid $rowBorderColor; - - padding: 4px; - padding-top: 6px; - - color: $rowTextColor; - font-weight: bold; - } - - .tabulator-edit-list-item, - .tabulator-edit-list-group { - &.tabulator-edit-list-group-level-2 { - padding-left: 12px; - } - - &.tabulator-edit-list-group-level-3 { - padding-left: 20px; - } - - &.tabulator-edit-list-group-level-4 { - padding-left: 28px; - } - - &.tabulator-edit-list-group-level-5 { - padding-left: 36px; - } - } -} - -//RTL Styling - -.tabulator.tabulator-ltr { - direction: ltr; -} - -.tabulator.tabulator-rtl { - text-align: initial; - direction: rtl; - - .tabulator-header { - .tabulator-col { - text-align: initial; - border-left: 1px solid $headerBorderColor; - border-right: initial; - - &.tabulator-col-group { - .tabulator-col-group-cols { - margin-right: initial; - margin-left: -1px; - } - } - - &.tabulator-sortable { - .tabulator-col-title { - padding-right: 0; - padding-left: 25px; - } - } - - .tabulator-col-content { - .tabulator-col-sorter { - left: 8px; - right: initial; - } - } - } - } - - .tabulator-tableholder { - .tabulator-range-overlay { - .tabulator-range { - &.tabulator-range-active::after { - content: ''; - position: absolute; - left: -3px; - right: initial; - bottom: -3px; - width: 6px; - height: 6px; - background-color: $rangeHandleColor; - border-radius: 999px; - } - } - } - } - - .tabulator-row { - .tabulator-cell { - border-right: initial; - border-left: 1px solid $rowBorderColor; - - .tabulator-data-tree-branch { - margin-right: initial; - margin-left: 5px; - - border-bottom-left-radius: initial; - border-bottom-right-radius: 1px; - - border-left: initial; - border-right: 2px solid $rowBorderColor; - } - - .tabulator-data-tree-control { - margin-right: initial; - margin-left: 5px; - } - - &.tabulator-frozen { - &.tabulator-frozen-left { - border-left: 2px solid $rowBorderColor; - } - - &.tabulator-frozen-right { - border-right: 2px solid $rowBorderColor; - } - } - } - - .tabulator-col-resize-handle { - &:last-of-type { - width: 3px; - margin-left: 0; - margin-right: -3px; - } - } - } - - .tabulator-footer { - .tabulator-calcs-holder { - text-align: initial; - } - } -} - -// Table print styling - -.tabulator-print-fullscreen { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - - z-index: 10000; -} - -body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) { - display: none !important; -} - -.tabulator-print-table { - border-collapse: collapse; - - .tabulator-data-tree-branch { - display: inline-block; - vertical-align: middle; - - height: 9px; - width: 7px; - - margin-top: -9px; - margin-right: 5px; - - border-bottom-left-radius: 1px; - - border-left: 2px solid $rowBorderColor; - border-bottom: 2px solid $rowBorderColor; - } - - //row grouping element - .tabulator-print-table-group { - box-sizing: border-box; - border-bottom: 1px solid #999; - border-right: 1px solid $rowBorderColor; - border-top: 1px solid #999; - padding: 5px; - padding-left: 10px; - background: #ccc; - font-weight: bold; - - min-width: 100%; - - @media (hover: hover) and (pointer: fine) { - &:hover { - cursor: pointer; - background-color: rgba(0, 0, 0, 0.1); - } - } - - &.tabulator-group-visible { - .tabulator-arrow { - margin-right: 10px; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-top: 6px solid $sortArrowActive; - border-bottom: 0; - } - } - - &.tabulator-group-level-1 { - td { - padding-left: 30px !important; - } - } - - &.tabulator-group-level-2 { - td { - padding-left: 50px !important; - } - } - - &.tabulator-group-level-3 { - td { - padding-left: 70px !important; - } - } - - &.tabulator-group-level-4 { - td { - padding-left: 90px !important; - } - } - - &.tabulator-group-level-5 { - td { - padding-left: 110px !important; - } - } - - .tabulator-group-toggle { - display: inline-block; - } - - //sorting arrow - .tabulator-arrow { - display: inline-block; - width: 0; - height: 0; - margin-right: 16px; - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - border-right: 0; - border-left: 6px solid $sortArrowActive; - vertical-align: middle; - } - - span { - margin-left: 10px; - color: #d00; - } - } - - .tabulator-data-tree-control { - display: inline-flex; - justify-content: center; - align-items: center; - vertical-align: middle; - - height: 11px; - width: 11px; - - margin-right: 5px; - - border: 1px solid $rowTextColor; - border-radius: 2px; - background: rgba(0, 0, 0, 0.1); - - overflow: hidden; - - @media (hover: hover) and (pointer: fine) { - &:hover { - cursor: pointer; - background: rgba(0, 0, 0, 0.2); - } - } - - .tabulator-data-tree-control-collapse { - display: inline-block; - position: relative; - - height: 7px; - width: 1px; - - background: transparent; - - &:after { - position: absolute; - content: ''; - left: -3px; - top: 3px; - - height: 1px; - width: 7px; - - background: $rowTextColor; - } - } - - .tabulator-data-tree-control-expand { - display: inline-block; - position: relative; - - height: 7px; - width: 1px; - - background: $rowTextColor; - - &:after { - position: absolute; - content: ''; - left: -3px; - top: 3px; - - height: 1px; - width: 7px; - - background: $rowTextColor; - } - } - } -} diff --git a/new-web/src/css/tabulator_simple.scss b/new-web/src/css/tabulator_simple.scss deleted file mode 100644 index bd0de7e5..00000000 --- a/new-web/src/css/tabulator_simple.scss +++ /dev/null @@ -1,233 +0,0 @@ -@use './tabulator.scss'; - -.tabulator { - @apply bg-primary border-none; - - .tabulator-header { - @apply border-border bg-background; - - .tabulator-header-contents { - @apply bg-background; - } - - .tabulator-col-content { - @apply bg-background hover:bg-muted; - } - - .tabulator-calcs-holder { - @apply !border-border !bg-background !border; - - .tabulator-row { - @apply !bg-background; - } - } - - .tabulator-col { - @apply bg-background; - - &.tabulator-sortable { - @media (hover: hover) and (pointer: fine) { - @apply border-border; - &.tabulator-col-sorter-element:hover { - @apply bg-background cursor-pointer; - } - } - } - } - - .tabulator-col-title-holder { - @apply text-black dark:text-white; - - .tabulator-col-title { - @apply text-black dark:text-white; - } - } - - .tabulator-col-title input { - @apply border-border border; - } - } - - .tabulator-row { - @apply border-border bg-background border-b text-black dark:text-white; - - @media (hover: hover) and (pointer: fine) { - &.tabulator-selectable:hover { - @apply bg-background; - cursor: pointer; - } - } - - .tabulator-cell { - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - &:last-of-type { - border-right: none; - } - - &.tabulator-row-header { - border-bottom: none; - } - - .tabulator-data-tree-control { - @apply border-primary bg-primary; - - .tabulator-data-tree-control-collapse { - background: transparent; - &:after { - @apply bg-primary-foreground; - } - } - - .tabulator-data-tree-control-expand { - @apply bg-primary-foreground; - - &:after { - @apply bg-primary-foreground; - } - } - } - } - - &.tabulator-group { - span { - color: #666; - } - } - - .tabulator-frozen input { - @apply opacity-40; - background-color: rgb(63 63 70) !important; - @apply border-border border; - } - } - - .tabulator-tableholder { - .tabulator-cell { - .tabulator-data-tree-control { - @apply bg-primary; - } - } - - @apply bg-background; - .tabulator-placeholder { - span { - @apply text-secondary; - } - .tabulator-placeholder-contents { - @apply text-secondary; - } - } - } - - .tabulator-footer { - @apply border-border bg-background; - - .tabulator-footer-contents { - @apply text-black dark:text-white; - - .tabulator-paginator { - label { - @apply text-black dark:text-white; - } - - select { - @apply border-border bg-primary text-black dark:text-white; - } - - .tabulator-page { - @apply border-border bg-primary-foreground hover:border-primary/10 hover:bg-primary/10 dark:bg-muted hover:dark:border-muted hover:dark:bg-muted/10 text-black dark:text-white; - - &.active { - @apply !bg-primary !text-secondary; - } - - &:disabled { - opacity: 0.4; - } - } - } - } - - .tabulator-calcs-holder { - .tabulator-row { - @apply !bg-primary; - } - } - - .tabulator-spreadsheet-tabs { - .tabulator-spreadsheet-tab { - font-weight: normal; - - &.tabulator-spreadsheet-tab-active { - color: tabulator.$footerActiveColor; - font-weight: bold; - } - } - } - } -} - -.tabulator-table .tabulator-row-odd { - @apply border-border bg-background border-b border-none text-black dark:text-white; - - .tabulator-frozen { - @apply bg-secondary; - } - - @media (hover: hover) and (pointer: fine) { - &.tabulator-selectable:hover { - // @apply bg-background hover:bg-muted; - cursor: pointer; - } - } -} - -.tabulator-table .tabulator-row-even { - @apply border-border bg-background border-b border-none text-black dark:text-white; - - .tabulator-frozen { - @apply bg-secondary; - } - - .tabulator-frozen input { - @apply border-border border; - } - - @media (hover: hover) and (pointer: fine) { - &.tabulator-selectable:hover { - // @apply bg-background hover:bg-muted; - cursor: pointer; - } - } -} - -.tabulator-table .tabulator-selected { - @apply !bg-muted; -} - -.tabulator-table .tabulator-tree-level-0 .tabulator-cell:first-of-type { - padding-left: 9px; -} - -.tabulator-table .tabulator-tree-level-1 .tabulator-cell:first-of-type { - padding-left: 5px; -} - -.tabulator-table .tabulator-tree-level-2 .tabulator-cell:first-of-type { - padding-left: 12px; -} - -.tabulator-table .tabulator-tree-level-3 .tabulator-cell:first-of-type { - padding-left: 12px; -} - -.tabulator-print-table { - .tabulator-print-table-group { - span { - margin-left: 10px; - color: #666; - } - } -} diff --git a/new-web/src/lib/api/auth.ts b/new-web/src/lib/api/auth.ts deleted file mode 100644 index 72dff94a..00000000 --- a/new-web/src/lib/api/auth.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { browser } from '$app/environment'; -import { goto } from '$app/navigation'; -import { oldStore, store } from '$lib/stores/auth'; -import { hostname, language as langStore } from '$lib/stores/basic'; -import type { APIResponse } from '$lib/types/common'; -import adze from 'adze'; -import axios, { AxiosError } from 'axios'; -import { toast } from 'svelte-sonner'; -import { get } from 'svelte/store'; - -export async function login( - username: string, - password: string, - authType: string, - remember: boolean, - language: string -) { - try { - if (username === '' || password === '') { - toast.error('Credentials are required', { - position: 'bottom-center' - }); - - return; - } - - if (authType === '') { - toast.error('Authentication type is required', { - position: 'bottom-center' - }); - - return; - } - - const response = await axios.post('/api/auth/login', { - username, - password, - authType, - remember - }); - - if (response.status === 200 && response.data) { - if (response.data.data?.hostname && response.data.data?.token) { - langStore.set(language); - hostname.set(response.data.data.hostname); - store.set(response.data.data.token); - return true; - } else { - toast.error('Invalid response received', { - position: 'bottom-center' - }); - } - } else { - return false; - } - } catch (error) { - if (axios.isAxiosError(error)) { - const axiosError = error as AxiosError; - const data = axiosError.response?.data as APIResponse; - if (data.error) { - toast.error('Authentication failed', { - position: 'bottom-center' - }); - } - } else { - toast.error('Fatal error logging in, check logs!', { - position: 'bottom-center' - }); - } - return false; - } -} - -export function getToken(): string | null { - if (browser) { - try { - const parsed = JSON.parse(localStorage.getItem('token') || ''); - return parsed.value; - } catch (_e: unknown) { - return null; - } - } - - return null; -} - -export async function isTokenValid(): Promise { - try { - const response = await axios.get('/api/health/basic', { - headers: { - Authorization: `Bearer ${getToken()}` - } - }); - - if (response.status < 400) { - if (response.data?.hostname) { - hostname.set(response.data.hostname); - } - return true; - } - } catch (_e: unknown) { - return false; - } - - return false; -} - -export async function logOut() { - const token = getToken(); - if (token) { - oldStore.set(token); - } - - store.set(''); - hostname.set(''); - - if (browser) { - localStorage.removeItem('token'); - localStorage.removeItem('hostname'); - } - - goto('/', { - replaceState: true, - state: { - loggedOut: true - } - }); -} - -export async function revokeJWT() { - try { - const oldToken = get(oldStore); - if (oldToken) { - await axios.get('/api/auth/logout', { - headers: { - Authorization: `Bearer ${oldToken}` - } - }); - - oldStore.set(''); - } - } catch (_e: unknown) { - adze.error('Failed to revoke JWT'); - } -} diff --git a/new-web/src/lib/api/common.ts b/new-web/src/lib/api/common.ts deleted file mode 100644 index 5b1817f5..00000000 --- a/new-web/src/lib/api/common.ts +++ /dev/null @@ -1,113 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import { browser } from '$app/environment'; -import { goto } from '$app/navigation'; -import { store as token } from '$lib/stores/auth'; -import type { APIResponse } from '$lib/types/common'; -import adze from 'adze'; -import axios, { AxiosError, type AxiosInstance, type InternalAxiosRequestConfig } from 'axios'; -import { toast } from 'svelte-sonner'; -import { get } from 'svelte/store'; - -export let ENDPOINT: string; -export let API_ENDPOINT: string; - -if (browser) { - ENDPOINT = window.location.origin; - API_ENDPOINT = `${window.location.origin}/api`; -} else { - ENDPOINT = ''; - API_ENDPOINT = ''; -} - -export const api: AxiosInstance = axios.create({ - baseURL: API_ENDPOINT -}); - -api.interceptors.request.use( - (config: InternalAxiosRequestConfig) => { - if (browser) { - if (get(token)) { - config.headers['Authorization'] = `Bearer ${get(token)}`; - } - } - return config; - }, - (error) => { - return Promise.reject(error); - } -); - -api.interceptors.response.use( - (response) => response, - async (error) => { - if (error.response?.status === 401 && browser) { - toast.error('Session expired, please login again', { - position: 'bottom-center' - }); - goto('/login'); - return; - } - handleAxiosError(error); - return Promise.reject(error); - } -); - -export function handleAxiosError(error: unknown): void { - if (!browser) return; - - if (!axios.isAxiosError(error)) { - toast.error('An unexpected error occurred', { - position: 'bottom-center' - }); - adze.withEmoji.error('An unexpected error occurred'); - return; - } - - const axiosError = error as AxiosError<{ message?: string }>; - if (axiosError.response) { - const errorMessage = - axiosError.response.data?.message || axiosError.message || 'An error occurred'; - adze.withEmoji.error( - JSON.stringify({ - status: axiosError.response.status, - data: axiosError.response.data, - message: errorMessage - }) - ); - } else if (axiosError.request) { - adze.withEmoji.error('No response:', axiosError.request); - } -} - -export function handleAPIResponse( - response: APIResponse, - messages: { - success?: string; - error?: string; - info?: string; - warn?: string; - } -): void { - // console.log('API Response:', response); - if (response.status === 'error') { - adze.withEmoji.error(response); - toast.error(messages.error || 'Operation failed', { - position: 'bottom-center' - }); - } - - if (response.status === 'success') { - toast.success(messages.success || 'Operation successful', { - position: 'bottom-center' - }); - } -} diff --git a/new-web/src/lib/api/disk/disk.ts b/new-web/src/lib/api/disk/disk.ts deleted file mode 100644 index 848d7608..00000000 --- a/new-web/src/lib/api/disk/disk.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { APIResponseSchema, type APIResponse } from '$lib/types/common'; -import { DiskSchema, type Disk } from '$lib/types/disk/disk'; -import { apiRequest } from '$lib/utils/http'; -import { z } from 'zod/v4'; - -export async function listDisks(): Promise { - return await apiRequest('/disk/list', z.array(DiskSchema), 'GET'); -} - -export async function destroyDisk(disk: string): Promise { - return await apiRequest(`/disk/wipe`, APIResponseSchema, 'POST', { - device: disk - }); -} - -export async function destroyPartition(partition: string): Promise { - return await apiRequest(`/disk/delete-partition`, APIResponseSchema, 'POST', { - device: partition - }); -} - -export async function initializeGPT(disk: string): Promise { - return await apiRequest(`/disk/initialize-gpt`, APIResponseSchema, 'POST', { - device: disk - }); -} - -export async function createPartitions(disk: string, sizes: number[]): Promise { - return await apiRequest(`/disk/create-partitions`, APIResponseSchema, 'POST', { - device: disk, - sizes - }); -} diff --git a/new-web/src/lib/api/info/audit.ts b/new-web/src/lib/api/info/audit.ts deleted file mode 100644 index 654a0bf5..00000000 --- a/new-web/src/lib/api/info/audit.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { AuditLogSchema, type AuditLog } from '$lib/types/info/audit'; -import { apiRequest } from '$lib/utils/http'; - -export async function getAuditLogs(): Promise { - return await apiRequest('/info/audit-logs', AuditLogSchema, 'GET'); -} - -export function formatAction(action: string): string { - return action; -} - -export function formatStatus(status: string): string { - switch (status) { - case 'started': - return 'Started'; - case 'success': - return 'OK'; - case 'failure': - return 'Failed'; - case 'failed': - return 'Failed'; - case 'progress': - return 'In Progress'; - default: - return status; - } -} diff --git a/new-web/src/lib/api/info/basic.ts b/new-web/src/lib/api/info/basic.ts deleted file mode 100644 index 2f818ab8..00000000 --- a/new-web/src/lib/api/info/basic.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { BasicInfoSchema, type BasicInfo } from '$lib/types/info/basic'; -import { apiRequest } from '$lib/utils/http'; - -export async function getBasicInfo(): Promise { - return await apiRequest('/info/basic', BasicInfoSchema, 'GET'); -} diff --git a/new-web/src/lib/api/info/cpu.ts b/new-web/src/lib/api/info/cpu.ts deleted file mode 100644 index 0d26dcbc..00000000 --- a/new-web/src/lib/api/info/cpu.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { - CPUInfoHistoricalSchema, - CPUInfoSchema, - type CPUInfo, - type CPUInfoHistorical -} from '$lib/types/info/cpu'; -import { apiRequest } from '$lib/utils/http'; -import type { QueryFunctionContext } from '@sveltestack/svelte-query'; - -export async function getCPUInfo( - queryObj?: QueryFunctionContext -): Promise { - if (queryObj) { - if (queryObj.queryKey.includes('cpuInfoHistorical')) { - return await apiRequest('/info/cpu/historical', CPUInfoHistoricalSchema, 'GET'); - } - } - - return await apiRequest('/info/cpu', CPUInfoSchema, 'GET'); -} diff --git a/new-web/src/lib/api/info/info.ts b/new-web/src/lib/api/info/info.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/new-web/src/lib/api/info/notes.ts b/new-web/src/lib/api/info/notes.ts deleted file mode 100644 index 995db12d..00000000 --- a/new-web/src/lib/api/info/notes.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { APIResponseSchema, type APIResponse } from '$lib/types/common'; -import { NoteSchema, NotesSchema, type Note, type Notes } from '$lib/types/info/notes'; -import { apiRequest } from '$lib/utils/http'; -import { z } from 'zod/v4'; - -async function notesRequest( - endpoint: string, - method: 'GET' | 'POST' | 'PUT' | 'DELETE', - body?: object -): Promise { - let schema; - - if (method === 'GET') { - schema = z.array(NoteSchema); - } else if (method === 'POST') { - schema = NoteSchema; - } else { - schema = APIResponseSchema; - } - - return await apiRequest(endpoint, schema, method, body); -} - -export const getNotes = () => notesRequest('/info/notes', 'GET'); -export const deleteNote = (id: number) => notesRequest(`/info/notes/${id}`, 'DELETE'); - -export const createNote = async (title: string, content: string): Promise => { - return (await notesRequest('/info/notes', 'POST', { title, content })) as Note | APIResponse; -}; - -export const updateNote = async ( - id: number, - title: string, - content: string -): Promise => { - return (await notesRequest(`/info/notes/${id}`, 'PUT', { title, content })) as APIResponse; -}; - -export const deleteNotes = async (ids: number[]): Promise => { - return (await notesRequest('/info/notes/bulk-delete', 'POST', { ids })) as APIResponse; -}; diff --git a/new-web/src/lib/api/info/ram.ts b/new-web/src/lib/api/info/ram.ts deleted file mode 100644 index dc9e9a8c..00000000 --- a/new-web/src/lib/api/info/ram.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { - RAMInfoHistoricalSchema, - RAMInfoSchema, - type RAMInfo, - type RAMInfoHistorical -} from '$lib/types/info/ram'; -import { apiRequest } from '$lib/utils/http'; -import type { QueryFunctionContext } from '@sveltestack/svelte-query'; - -export async function getRAMInfo( - queryObj?: QueryFunctionContext -): Promise { - if (queryObj) { - if (queryObj.queryKey.includes('ramInfoHistorical')) { - return await apiRequest('/info/ram/historical', RAMInfoHistoricalSchema, 'GET'); - } - } - - return await apiRequest('/info/ram', RAMInfoSchema, 'GET'); -} - -export async function getSwapInfo( - queryObj?: QueryFunctionContext -): Promise { - if (queryObj) { - if (queryObj.queryKey.includes('swapInfoHistorical')) { - return await apiRequest('/info/swap/historical', RAMInfoHistoricalSchema, 'GET'); - } - } - - return await apiRequest('/info/swap', RAMInfoSchema, 'GET'); -} diff --git a/new-web/src/lib/api/network/iface.ts b/new-web/src/lib/api/network/iface.ts deleted file mode 100644 index d1efcdbb..00000000 --- a/new-web/src/lib/api/network/iface.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { IfaceSchema, type Iface } from '$lib/types/network/iface'; -import { apiRequest } from '$lib/utils/http'; - -export async function getInterfaces(): Promise { - return await apiRequest('/network/interface', IfaceSchema.array(), 'GET'); -} diff --git a/new-web/src/lib/api/network/switch.ts b/new-web/src/lib/api/network/switch.ts deleted file mode 100644 index 2c4d8997..00000000 --- a/new-web/src/lib/api/network/switch.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { APIResponseSchema, type APIResponse } from '$lib/types/common'; -import { SwitchListSchema, type SwitchList } from '$lib/types/network/switch'; -import { apiRequest } from '$lib/utils/http'; - -export async function getSwitches(): Promise { - return await apiRequest('/network/switch', SwitchListSchema, 'GET'); -} - -export async function createSwitch( - name: string, - mtu: number, - vlan: number, - address: string, - address6: string, - privateSw: boolean, - dhcp: boolean, - ports: string[], - disableIPv6: boolean, - slaac: boolean -): Promise { - const body = { - name, - mtu, - vlan, - address, - address6, - private: privateSw, - ports, - dhcp, - disableIPv6, - slaac - }; - - return await apiRequest('/network/switch/standard', APIResponseSchema, 'POST', body); -} - -export async function deleteSwitch(id: number): Promise { - return await apiRequest(`/network/switch/standard/${id}`, APIResponseSchema, 'DELETE'); -} - -export async function updateSwitch( - id: number, - mtu: number, - vlan: number, - address: string, - address6: string, - privateSw: boolean, - ports: string[], - disableIPv6: boolean, - slaac: boolean, - dhcp: boolean -): Promise { - const body = { - id, - mtu, - vlan, - address, - address6, - private: privateSw, - ports, - disableIPv6, - slaac, - dhcp - }; - - return await apiRequest('/network/switch/standard', APIResponseSchema, 'PUT', body); -} diff --git a/new-web/src/lib/api/system/pci.ts b/new-web/src/lib/api/system/pci.ts deleted file mode 100644 index 06457db1..00000000 --- a/new-web/src/lib/api/system/pci.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { APIResponseSchema, type APIResponse } from '$lib/types/common'; -import { - PCIDeviceSchema, - PPTDeviceSchema, - type PCIDevice, - type PPTDevice -} from '$lib/types/system/pci'; -import { apiRequest } from '$lib/utils/http'; - -export async function getPCIDevices(): Promise { - return await apiRequest('/system/pci-devices', PCIDeviceSchema.array(), 'GET'); -} - -export async function getPPTDevices(): Promise { - return await apiRequest('/system/ppt-devices', PPTDeviceSchema.array(), 'GET'); -} - -export async function addPPTDevice(domain: string, deviceID: string): Promise { - return await apiRequest('/system/ppt-devices', APIResponseSchema, 'POST', { domain, deviceID }); -} - -export async function removePPTDevice(deviceID: string): Promise { - return await apiRequest(`/system/ppt-devices/${deviceID}`, APIResponseSchema, 'DELETE'); -} diff --git a/new-web/src/lib/api/utilities/downloader.ts b/new-web/src/lib/api/utilities/downloader.ts deleted file mode 100644 index 684e7699..00000000 --- a/new-web/src/lib/api/utilities/downloader.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { APIResponseSchema, type APIResponse } from '$lib/types/common'; -import { DownloadSchema, type Download } from '$lib/types/utilities/downloader'; -import { apiRequest } from '$lib/utils/http'; - -export async function getDownloads(): Promise { - return await apiRequest('/utilities/downloads', DownloadSchema.array(), 'GET'); -} - -export async function startDownload(url: string): Promise { - return await apiRequest('/utilities/downloads', APIResponseSchema, 'POST', { - url - }); -} - -export async function deleteDownload(id: number): Promise { - return await apiRequest(`/utilities/downloads/${id}`, APIResponseSchema, 'DELETE'); -} - -export async function bulkDeleteDownloads(ids: number[]): Promise { - return await apiRequest('/utilities/downloads/bulk-delete', APIResponseSchema, 'POST', { - ids - }); -} - -export async function getSignedURL(name: string, parentUUID: string): Promise { - return await apiRequest('/utilities/downloads/signed-url', APIResponseSchema, 'POST', { - name, - parentUUID - }); -} diff --git a/new-web/src/lib/api/vm/storage.ts b/new-web/src/lib/api/vm/storage.ts deleted file mode 100644 index 1cd8078d..00000000 --- a/new-web/src/lib/api/vm/storage.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { APIResponseSchema, type APIResponse } from '$lib/types/common'; -import { apiRequest } from '$lib/utils/http'; - -export async function storageDetach(vmId: number, storageId: number): Promise { - return await apiRequest(`/vm/storage/detach`, APIResponseSchema, 'POST', { - vmId, - storageId - }); -} diff --git a/new-web/src/lib/api/vm/vm.ts b/new-web/src/lib/api/vm/vm.ts deleted file mode 100644 index db3b9bc9..00000000 --- a/new-web/src/lib/api/vm/vm.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { APIResponseSchema, type APIResponse } from '$lib/types/common'; -import { - VMDomainSchema, - VMSchema, - VMStatSchema, - type CreateData, - type VM, - type VMDomain, - type VMStat -} from '$lib/types/vm/vm'; -import { apiRequest } from '$lib/utils/http'; -import { z } from 'zod/v4'; - -export async function getVMs(): Promise { - return await apiRequest('/vm', z.array(VMSchema), 'GET'); -} - -export async function newVM(data: CreateData): Promise { - return await apiRequest('/vm', APIResponseSchema, 'POST', { - name: data.name, - vmId: parseInt(data.id.toString(), 10), - iso: data.storage.iso, - storageType: data.storage.type, - storageDataset: data.storage.guid, - storageSize: data.storage.size, - storageEmulationType: data.storage.emulation, - switchId: data.network.switch, - switchEmulationType: data.network.emulation, - macAddress: data.network.mac, - cpuSockets: parseInt(data.hardware.sockets.toString(), 10), - cpuCores: parseInt(data.hardware.cores.toString(), 10), - cpuThreads: parseInt(data.hardware.threads.toString(), 10), - ram: parseInt(data.hardware.memory.toString(), 10), - cpuPinning: data.hardware.pinnedCPUs, - vncPort: data.advanced.vncPort, - vncPassword: data.advanced.vncPassword, - vncWait: data.advanced.vncWait, - vncResolution: data.advanced.vncResolution, - startAtBoot: data.advanced.startAtBoot, - bootOrder: parseInt(data.advanced.bootOrder.toString(), 10), - pciDevices: data.hardware.passthroughIds, - description: data.description - }); -} - -export async function deleteVM(id: number): Promise { - return await apiRequest(`/vm/${id}`, APIResponseSchema, 'DELETE'); -} - -export async function getVMDomain(id: number | string): Promise { - return await apiRequest(`/vm/domain/${id}`, VMDomainSchema, 'GET'); -} - -export async function actionVm(id: number | string, action: string): Promise { - return await apiRequest(`/vm/${id}/${action}`, APIResponseSchema, 'POST'); -} - -export async function getStats(vmId: number, limit: number): Promise { - return await apiRequest(`/vm/stats`, z.array(VMStatSchema), 'POST', { - vmId, - limit - }); -} - -export async function updateDescription(id: number, description: string): Promise { - return await apiRequest(`/vm/description`, APIResponseSchema, 'PUT', { - id, - description - }); -} diff --git a/new-web/src/lib/api/zfs/datasets.ts b/new-web/src/lib/api/zfs/datasets.ts deleted file mode 100644 index 7729df09..00000000 --- a/new-web/src/lib/api/zfs/datasets.ts +++ /dev/null @@ -1,140 +0,0 @@ -import { APIResponseSchema, type APIResponse } from '$lib/types/common'; -import { - DatasetSchema, - PeriodicSnapshotSchema, - type Dataset, - type PeriodicSnapshot -} from '$lib/types/zfs/dataset'; - -import { apiRequest } from '$lib/utils/http'; - -export async function getDatasets(): Promise { - return await apiRequest('/zfs/datasets', DatasetSchema.array(), 'GET'); -} - -export async function deleteSnapshot( - snapshot: Dataset, - recursive: boolean = false -): Promise { - const param = recursive ? '?recursive=true' : ''; - return await apiRequest( - `/zfs/datasets/snapshot/${snapshot.properties.guid}${param}`, - APIResponseSchema, - 'DELETE' - ); -} - -export async function createSnapshot( - dataset: Dataset, - name: string, - recursive: boolean -): Promise { - return await apiRequest('/zfs/datasets/snapshot', APIResponseSchema, 'POST', { - name: name, - recursive: recursive, - guid: dataset.properties.guid - }); -} - -export async function getPeriodicSnapshots(): Promise { - return await apiRequest('/zfs/datasets/snapshot/periodic', PeriodicSnapshotSchema.array(), 'GET'); -} - -export async function createPeriodicSnapshot( - dataset: Dataset, - prefix: string, - recursive: boolean, - interval: number -): Promise { - return await apiRequest('/zfs/datasets/snapshot/periodic', APIResponseSchema, 'POST', { - guid: dataset.properties.guid, - prefix: prefix, - recursive: recursive, - interval: interval - }); -} - -export async function deletePeriodicSnapshot(guid: string): Promise { - return await apiRequest(`/zfs/datasets/snapshot/periodic/${guid}`, APIResponseSchema, 'DELETE'); -} - -export async function createFileSystem( - name: string, - parent: string, - properties: Record -): Promise { - return await apiRequest('/zfs/datasets/filesystem', APIResponseSchema, 'POST', { - name: name, - parent: parent, - properties: properties - }); -} - -export async function editFileSystem( - guid: string, - properties: Record -): Promise { - return await apiRequest(`/zfs/datasets/filesystem`, APIResponseSchema, 'PATCH', { - guid: guid, - properties: properties - }); -} - -export async function deleteFileSystem(dataset: Dataset): Promise { - return await apiRequest( - `/zfs/datasets/filesystem/${dataset.properties.guid}`, - APIResponseSchema, - 'DELETE' - ); -} - -export async function rollbackSnapshot(guid: string): Promise { - return await apiRequest(`/zfs/datasets/snapshot/rollback`, APIResponseSchema, 'POST', { - guid: guid, - destroyMoreRecent: true - }); -} - -export async function createVolume( - name: string, - parent: string, - props: Record -): Promise { - return await apiRequest('/zfs/datasets/volume', APIResponseSchema, 'POST', { - name: name, - parent: parent, - properties: props - }); -} - -export async function editVolume( - dataset: Dataset, - properties: Record -): Promise { - return await apiRequest('/zfs/datasets/volume', APIResponseSchema, 'PATCH', { - name: dataset.name, - properties: properties - }); -} - -export async function deleteVolume(dataset: Dataset): Promise { - return await apiRequest( - `/zfs/datasets/volume/${dataset.properties.guid}`, - APIResponseSchema, - 'DELETE' - ); -} - -export async function bulkDelete(datasets: Dataset[]): Promise { - const guids = datasets.map((dataset) => dataset.properties.guid); - return await apiRequest('/zfs/datasets/bulk-delete', APIResponseSchema, 'POST', { - guids: guids - }); -} - -export async function flashVolume(guid: string, uuid: string): Promise { - return await apiRequest('/zfs/datasets/volume/flash', APIResponseSchema, 'POST', { - guid: guid, - uuid: uuid - }); -} diff --git a/new-web/src/lib/api/zfs/pool.ts b/new-web/src/lib/api/zfs/pool.ts deleted file mode 100644 index 89194772..00000000 --- a/new-web/src/lib/api/zfs/pool.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { APIResponseSchema, type APIResponse } from '$lib/types/common'; -import { - IODelayHistoricalSchema, - IODelaySchema, - PoolStatPointsResponseSchema, - ZpoolSchema, - type CreateZpool, - type IODelay, - type IODelayHistorical, - type PoolStatPointsResponse, - type ReplaceDevice, - type Zpool -} from '$lib/types/zfs/pool'; -import { apiRequest } from '$lib/utils/http'; -import type { QueryFunctionContext } from '@sveltestack/svelte-query'; - -export async function getIODelay( - queryObj: QueryFunctionContext | undefined -): Promise { - if (queryObj) { - if (queryObj.queryKey.includes('ioDelayHistorical')) { - const data = await apiRequest( - '/zfs/pool/io-delay/historical', - IODelayHistoricalSchema, - 'GET' - ); - return IODelayHistoricalSchema.parse(data); - } - } - - return await apiRequest('/zfs/pool/io-delay', IODelaySchema, 'GET'); -} - -export async function getPools(): Promise { - return await apiRequest('/zfs/pools', ZpoolSchema.array(), 'GET'); -} - -export async function createPool(data: CreateZpool) { - return await apiRequest('/zfs/pools', APIResponseSchema, 'POST', { - ...data - }); -} - -export async function replaceDevice(data: ReplaceDevice) { - return await apiRequest(`/zfs/pools/${data.guid}/replace-device`, APIResponseSchema, 'POST', { - ...data - }); -} - -export async function deletePool(guid: string) { - return await apiRequest(`/zfs/pools/${guid}`, APIResponseSchema, 'DELETE'); -} - -export async function scrubPool(guid: string) { - return await apiRequest(`/zfs/pools/${guid}/scrub`, APIResponseSchema, 'POST'); -} - -export async function getPoolStats( - interval: number, - limit: number -): Promise { - return await apiRequest( - `/zfs/pool/stats/${interval}/${limit}`, - PoolStatPointsResponseSchema, - 'GET' - ); -} - -export async function editPool( - name: string, - properties: Record, - spares: string[] = [] -): Promise { - return await apiRequest(`/zfs/pools`, APIResponseSchema, 'PATCH', { - name, - properties, - spares - }); -} diff --git a/new-web/src/lib/components/custom/Header.svelte b/new-web/src/lib/components/custom/Header.svelte deleted file mode 100644 index 1c1cb213..00000000 --- a/new-web/src/lib/components/custom/Header.svelte +++ /dev/null @@ -1,123 +0,0 @@ - - -
- - - - - - - - - - -
- - - - - - - - - {#each menuData.menuItems as { icon, label, shortcut }} - label === 'Color Theme' && toggleMode()} - > - - {label} - {#if shortcut} - {shortcut} - {/if} - - {/each} - - - - logOut()}> - - Log out - ⌘⇧Q - - - -
-
diff --git a/new-web/src/lib/components/custom/KVTableModal.svelte b/new-web/src/lib/components/custom/KVTableModal.svelte deleted file mode 100644 index a4b7cbf6..00000000 --- a/new-web/src/lib/components/custom/KVTableModal.svelte +++ /dev/null @@ -1,133 +0,0 @@ - - - - e.preventDefault()} - onEscapeKeydown={(e) => e.preventDefault()} - > -
-
- {#if titles.icon} - - {/if} -

{titles.main}

-
- - - - -
- -
- - - - {#if tableHeaders.length > 0} - {#each tableHeaders as header} - {header} - {/each} - {:else} - {titles.key} - {titles.value} - {/if} - - - - - {#if tableHeaders.length > 0} - {#each KV as Array> as row} - - {#each tableHeaders as header} - {row[header]} - {/each} - - {/each} - {:else} - {#each Object.entries(KV) as [key, value]} - {#if typeof value === 'object' && value !== null && !Array.isArray(value)} - - - - - - Object ({Object.keys(value).length} properties) - - - {#if expandedObjects[key]} - {#each Object.entries(value) as [nestedKey, nestedValue]} - - - {nestedKey} - - - {nestedValue} - - - {/each} - {/if} - {:else} - - {key} - {value} - - {/if} - {/each} - {/if} - - -
-
-
diff --git a/new-web/src/lib/components/custom/Login.svelte b/new-web/src/lib/components/custom/Login.svelte deleted file mode 100644 index 41534063..00000000 --- a/new-web/src/lib/components/custom/Login.svelte +++ /dev/null @@ -1,155 +0,0 @@ - - -
- - - {#if mode.current === 'dark'} - Sylve Logo - {:else} - Sylve Logo - {/if} -

SYLVE

-
- - -
- - -
-
- - -
- -
- - - - {#if authType === 'pam'} - PAM - {:else if authType === 'sylve'} - Sylve - {/if} - - - PAM - Sylve - - -
- -
- - - - {languageArr.find((lang) => lang.value === language)?.label || 'Select Language'} - - - English - Malayalam - - -
-
- - -
- - -
- -
-
-
diff --git a/new-web/src/lib/components/custom/Terminal.svelte b/new-web/src/lib/components/custom/Terminal.svelte deleted file mode 100644 index 52af311b..00000000 --- a/new-web/src/lib/components/custom/Terminal.svelte +++ /dev/null @@ -1,274 +0,0 @@ - - - - -{#if $terminalStore.isOpen && !$terminalStore.isMinimized} -
-
-
-
- -
- {$terminalStore.title} -
- -
- - -
-
- - -
- {#each $terminalStore.tabs as tab} -
visiblityAction('tab-select', tab.id)} - onkeydown={(e) => - (e.key === 'Enter' || e.key === ' ') && visiblityAction('tab-select', tab.id)} - role="button" - tabindex="0" - > - {tab.title} - {#if tabsCount > 1} - - {/if} -
- {/each} -
- -
-
- - -
- {#each $terminalStore.tabs as tab} - {#if tab.id === $terminalStore.activeTabId} -
- -
- {/if} - {/each} -
-
-
-{/if} diff --git a/new-web/src/lib/components/custom/Throbber.svelte b/new-web/src/lib/components/custom/Throbber.svelte deleted file mode 100644 index 64ec04e2..00000000 --- a/new-web/src/lib/components/custom/Throbber.svelte +++ /dev/null @@ -1,195 +0,0 @@ - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

- SYLVE -

-
- - diff --git a/new-web/src/lib/components/custom/TreeTable.svelte b/new-web/src/lib/components/custom/TreeTable.svelte deleted file mode 100644 index 4a83f238..00000000 --- a/new-web/src/lib/components/custom/TreeTable.svelte +++ /dev/null @@ -1,158 +0,0 @@ - - -
diff --git a/new-web/src/lib/components/custom/TreeTable/Search.svelte b/new-web/src/lib/components/custom/TreeTable/Search.svelte deleted file mode 100644 index 5bd3c166..00000000 --- a/new-web/src/lib/components/custom/TreeTable/Search.svelte +++ /dev/null @@ -1,62 +0,0 @@ - - -
-
- - - {#if expanded} - { - if (e.key === 'Escape') { - query = ''; - expanded = false; - } - }} - /> - {/if} -
-
diff --git a/new-web/src/lib/components/custom/TreeView.svelte b/new-web/src/lib/components/custom/TreeView.svelte deleted file mode 100644 index ba7c3bcc..00000000 --- a/new-web/src/lib/components/custom/TreeView.svelte +++ /dev/null @@ -1,98 +0,0 @@ - - -
  • - -
    - -

    - {item.label} -

    -
    - {#if item.children} - - {/if} -
    -
  • - -{#if isOpen && item.children} -
      t }} style="overflow: hidden;"> - {#each item.children as child} - - {/each} -
    -{/if} diff --git a/new-web/src/lib/components/disk/CreatePartition.svelte b/new-web/src/lib/components/disk/CreatePartition.svelte deleted file mode 100644 index a49f6165..00000000 --- a/new-web/src/lib/components/disk/CreatePartition.svelte +++ /dev/null @@ -1,258 +0,0 @@ - - - - -
    - - Create Partitions - - - -
    - - -
    -
    - -
    - - - - Name - Size - Usage - Actions - - - - {#if disk && disk.partitions && disk.partitions.length > 0} - {#each disk.partitions as partition} - - {partition.name} - {humanFormat(partition.size)} - {partition.usage} - - Existing - - - {/each} - {/if} - - {#if newPartitions.length > 0} - {#each newPartitions as partition, index} - - {partition.name} - {humanFormat(partition.size)} - - - - - - - {/each} - {/if} - - {#if (!disk || !disk.partitions || disk.partitions.length === 0) && newPartitions.length === 0} - - - No partitions created yet - - - {/if} - - -
    - -
    -
    -
    - {#if remainingSpace > 0} - - {/if} -
    - - - -
    0 ? '' : 'cursor-not-allowed'}> - -
    -
    - -
    -

    - Size: {humanFormat(currentPartition)} -

    -

    - Remaining space: {humanFormat(remainingSpace)} -

    -
    -
    - {#if newPartitions.length > 0} -
    - -
    - -
    -
    -
    - {/if} -
    -
    diff --git a/new-web/src/lib/components/skeleton/BottomPanel.svelte b/new-web/src/lib/components/skeleton/BottomPanel.svelte deleted file mode 100644 index 444d19f3..00000000 --- a/new-web/src/lib/components/skeleton/BottomPanel.svelte +++ /dev/null @@ -1,65 +0,0 @@ - - - - -
    - - - - Start Time - End Time - Node - User - Action - Status - - - - - {#each logs as log, i (i)} - - {convertDbTime(log.started)} - {convertDbTime(log.ended)} - {log.node} - {`${log.user}@${log.authType}`} - {formatAction(log.action)} - {formatStatus(log.status)} - - {/each} - - -
    -
    -
    diff --git a/new-web/src/lib/components/skeleton/LeftPanel.svelte b/new-web/src/lib/components/skeleton/LeftPanel.svelte deleted file mode 100644 index 545c3b07..00000000 --- a/new-web/src/lib/components/skeleton/LeftPanel.svelte +++ /dev/null @@ -1,60 +0,0 @@ - - -
    - -
    diff --git a/new-web/src/lib/components/skeleton/Shell.svelte b/new-web/src/lib/components/skeleton/Shell.svelte deleted file mode 100644 index 293f423b..00000000 --- a/new-web/src/lib/components/skeleton/Shell.svelte +++ /dev/null @@ -1,52 +0,0 @@ - - -
    -
    -
    -
    - - - - - - - - - - - {@render children?.()} - - - - - - - - - - -
    - - -
    -
    diff --git a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte b/new-web/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte deleted file mode 100644 index a0056912..00000000 --- a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte b/new-web/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte deleted file mode 100644 index a7b0cf79..00000000 --- a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte b/new-web/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte deleted file mode 100644 index 6c3c6046..00000000 --- a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - diff --git a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte b/new-web/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte deleted file mode 100644 index 2ec67dc2..00000000 --- a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte b/new-web/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte deleted file mode 100644 index f78b97ab..00000000 --- a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte b/new-web/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte deleted file mode 100644 index c8fa7625..00000000 --- a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte b/new-web/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte deleted file mode 100644 index a64ee768..00000000 --- a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte b/new-web/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte deleted file mode 100644 index 7ef2b5fb..00000000 --- a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/new-web/src/lib/components/ui/alert-dialog/index.ts b/new-web/src/lib/components/ui/alert-dialog/index.ts deleted file mode 100644 index cc281c58..00000000 --- a/new-web/src/lib/components/ui/alert-dialog/index.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { AlertDialog as AlertDialogPrimitive } from "bits-ui"; -import Trigger from "./alert-dialog-trigger.svelte"; -import Title from "./alert-dialog-title.svelte"; -import Action from "./alert-dialog-action.svelte"; -import Cancel from "./alert-dialog-cancel.svelte"; -import Footer from "./alert-dialog-footer.svelte"; -import Header from "./alert-dialog-header.svelte"; -import Overlay from "./alert-dialog-overlay.svelte"; -import Content from "./alert-dialog-content.svelte"; -import Description from "./alert-dialog-description.svelte"; - -const Root = AlertDialogPrimitive.Root; -const Portal = AlertDialogPrimitive.Portal; - -export { - Root, - Title, - Action, - Cancel, - Portal, - Footer, - Header, - Trigger, - Overlay, - Content, - Description, - // - Root as AlertDialog, - Title as AlertDialogTitle, - Action as AlertDialogAction, - Cancel as AlertDialogCancel, - Portal as AlertDialogPortal, - Footer as AlertDialogFooter, - Header as AlertDialogHeader, - Trigger as AlertDialogTrigger, - Overlay as AlertDialogOverlay, - Content as AlertDialogContent, - Description as AlertDialogDescription, -}; diff --git a/new-web/src/lib/components/ui/badge/badge.svelte b/new-web/src/lib/components/ui/badge/badge.svelte deleted file mode 100644 index 50004570..00000000 --- a/new-web/src/lib/components/ui/badge/badge.svelte +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - {@render children?.()} - diff --git a/new-web/src/lib/components/ui/badge/index.ts b/new-web/src/lib/components/ui/badge/index.ts deleted file mode 100644 index 64e0aa9b..00000000 --- a/new-web/src/lib/components/ui/badge/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as Badge } from "./badge.svelte"; -export { badgeVariants, type BadgeVariant } from "./badge.svelte"; diff --git a/new-web/src/lib/components/ui/button/button.svelte b/new-web/src/lib/components/ui/button/button.svelte deleted file mode 100644 index a100eeec..00000000 --- a/new-web/src/lib/components/ui/button/button.svelte +++ /dev/null @@ -1,80 +0,0 @@ - - - - -{#if href} - - {@render children?.()} - -{:else} - -{/if} diff --git a/new-web/src/lib/components/ui/button/index.ts b/new-web/src/lib/components/ui/button/index.ts deleted file mode 100644 index fb585d76..00000000 --- a/new-web/src/lib/components/ui/button/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -import Root, { - type ButtonProps, - type ButtonSize, - type ButtonVariant, - buttonVariants, -} from "./button.svelte"; - -export { - Root, - type ButtonProps as Props, - // - Root as Button, - buttonVariants, - type ButtonProps, - type ButtonSize, - type ButtonVariant, -}; diff --git a/new-web/src/lib/components/ui/card/card-content.svelte b/new-web/src/lib/components/ui/card/card-content.svelte deleted file mode 100644 index bc90b837..00000000 --- a/new-web/src/lib/components/ui/card/card-content.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/new-web/src/lib/components/ui/card/card-description.svelte b/new-web/src/lib/components/ui/card/card-description.svelte deleted file mode 100644 index 9b20ac70..00000000 --- a/new-web/src/lib/components/ui/card/card-description.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -

    - {@render children?.()} -

    diff --git a/new-web/src/lib/components/ui/card/card-footer.svelte b/new-web/src/lib/components/ui/card/card-footer.svelte deleted file mode 100644 index cf433539..00000000 --- a/new-web/src/lib/components/ui/card/card-footer.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/new-web/src/lib/components/ui/card/card-header.svelte b/new-web/src/lib/components/ui/card/card-header.svelte deleted file mode 100644 index 8a91abbf..00000000 --- a/new-web/src/lib/components/ui/card/card-header.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/new-web/src/lib/components/ui/card/card-title.svelte b/new-web/src/lib/components/ui/card/card-title.svelte deleted file mode 100644 index 22586e61..00000000 --- a/new-web/src/lib/components/ui/card/card-title.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/new-web/src/lib/components/ui/card/card.svelte b/new-web/src/lib/components/ui/card/card.svelte deleted file mode 100644 index 99448cc9..00000000 --- a/new-web/src/lib/components/ui/card/card.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
    - {@render children?.()} -
    diff --git a/new-web/src/lib/components/ui/card/index.ts b/new-web/src/lib/components/ui/card/index.ts deleted file mode 100644 index 4d3fce48..00000000 --- a/new-web/src/lib/components/ui/card/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import Root from "./card.svelte"; -import Content from "./card-content.svelte"; -import Description from "./card-description.svelte"; -import Footer from "./card-footer.svelte"; -import Header from "./card-header.svelte"; -import Title from "./card-title.svelte"; -import Action from "./card-action.svelte"; - -export { - Root, - Content, - Description, - Footer, - Header, - Title, - Action, - // - Root as Card, - Content as CardContent, - Description as CardDescription, - Footer as CardFooter, - Header as CardHeader, - Title as CardTitle, - Action as CardAction, -}; diff --git a/new-web/src/lib/components/ui/checkbox/checkbox.svelte b/new-web/src/lib/components/ui/checkbox/checkbox.svelte deleted file mode 100644 index 1622e05c..00000000 --- a/new-web/src/lib/components/ui/checkbox/checkbox.svelte +++ /dev/null @@ -1,36 +0,0 @@ - - - - {#snippet children({ checked, indeterminate })} -
    - {#if checked} - - {:else if indeterminate} - - {/if} -
    - {/snippet} -
    diff --git a/new-web/src/lib/components/ui/checkbox/index.ts b/new-web/src/lib/components/ui/checkbox/index.ts deleted file mode 100644 index 6d92d945..00000000 --- a/new-web/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/new-web/src/lib/components/ui/command/command-dialog.svelte b/new-web/src/lib/components/ui/command/command-dialog.svelte deleted file mode 100644 index 5c9a82a8..00000000 --- a/new-web/src/lib/components/ui/command/command-dialog.svelte +++ /dev/null @@ -1,40 +0,0 @@ - - - - - {title} - {description} - - - - - diff --git a/new-web/src/lib/components/ui/command/command-empty.svelte b/new-web/src/lib/components/ui/command/command-empty.svelte deleted file mode 100644 index 6726cd8d..00000000 --- a/new-web/src/lib/components/ui/command/command-empty.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/new-web/src/lib/components/ui/command/command-group.svelte b/new-web/src/lib/components/ui/command/command-group.svelte deleted file mode 100644 index 104f8170..00000000 --- a/new-web/src/lib/components/ui/command/command-group.svelte +++ /dev/null @@ -1,32 +0,0 @@ - - - - {#if heading} - - {heading} - - {/if} - - diff --git a/new-web/src/lib/components/ui/command/command-input.svelte b/new-web/src/lib/components/ui/command/command-input.svelte deleted file mode 100644 index 240278a6..00000000 --- a/new-web/src/lib/components/ui/command/command-input.svelte +++ /dev/null @@ -1,26 +0,0 @@ - - -
    - - -
    diff --git a/new-web/src/lib/components/ui/command/command-item.svelte b/new-web/src/lib/components/ui/command/command-item.svelte deleted file mode 100644 index 2297c978..00000000 --- a/new-web/src/lib/components/ui/command/command-item.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/new-web/src/lib/components/ui/command/command-list.svelte b/new-web/src/lib/components/ui/command/command-list.svelte deleted file mode 100644 index 569f5957..00000000 --- a/new-web/src/lib/components/ui/command/command-list.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/new-web/src/lib/components/ui/command/command-separator.svelte b/new-web/src/lib/components/ui/command/command-separator.svelte deleted file mode 100644 index 35c4c957..00000000 --- a/new-web/src/lib/components/ui/command/command-separator.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/new-web/src/lib/components/ui/command/command-shortcut.svelte b/new-web/src/lib/components/ui/command/command-shortcut.svelte deleted file mode 100644 index 3d68bc56..00000000 --- a/new-web/src/lib/components/ui/command/command-shortcut.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - - {@render children?.()} - diff --git a/new-web/src/lib/components/ui/command/command.svelte b/new-web/src/lib/components/ui/command/command.svelte deleted file mode 100644 index c64a77ef..00000000 --- a/new-web/src/lib/components/ui/command/command.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/new-web/src/lib/components/ui/command/index.ts b/new-web/src/lib/components/ui/command/index.ts deleted file mode 100644 index d3dbadea..00000000 --- a/new-web/src/lib/components/ui/command/index.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Command as CommandPrimitive } from "bits-ui"; - -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"; -import LinkItem from "./command-link-item.svelte"; - -const Loading = CommandPrimitive.Loading; - -export { - Root, - Dialog, - Empty, - Group, - Item, - LinkItem, - Input, - List, - Separator, - Shortcut, - Loading, - // - Root as Command, - Dialog as CommandDialog, - Empty as CommandEmpty, - Group as CommandGroup, - Item as CommandItem, - LinkItem as CommandLinkItem, - Input as CommandInput, - List as CommandList, - Separator as CommandSeparator, - Shortcut as CommandShortcut, - Loading as CommandLoading, -}; diff --git a/new-web/src/lib/components/ui/custom-input/checkbox.svelte b/new-web/src/lib/components/ui/custom-input/checkbox.svelte deleted file mode 100644 index 9048903b..00000000 --- a/new-web/src/lib/components/ui/custom-input/checkbox.svelte +++ /dev/null @@ -1,30 +0,0 @@ - - -
    - - -
    diff --git a/new-web/src/lib/components/ui/custom-input/combobox.svelte b/new-web/src/lib/components/ui/custom-input/combobox.svelte deleted file mode 100644 index e96283a0..00000000 --- a/new-web/src/lib/components/ui/custom-input/combobox.svelte +++ /dev/null @@ -1,151 +0,0 @@ - - -
    - - - - - - - - - - No data -
    - - {#each filteredData as element} - selectItem(element.value)} - onkeydown={(e) => { - if (e.key === 'Enter') selectItem(element.value); - }} - > - - {element.label} - - {/each} - -
    -
    -
    -
    -
    diff --git a/new-web/src/lib/components/ui/custom-input/value.svelte b/new-web/src/lib/components/ui/custom-input/value.svelte deleted file mode 100644 index 487e78bc..00000000 --- a/new-web/src/lib/components/ui/custom-input/value.svelte +++ /dev/null @@ -1,66 +0,0 @@ - - -
    - {#if label} - - {/if} - {#if type === 'textarea'} - diff --git a/new-web/src/lib/components/ui/tooltip/index.ts b/new-web/src/lib/components/ui/tooltip/index.ts deleted file mode 100644 index 313a7f06..00000000 --- a/new-web/src/lib/components/ui/tooltip/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Tooltip as TooltipPrimitive } from "bits-ui"; -import Trigger from "./tooltip-trigger.svelte"; -import Content from "./tooltip-content.svelte"; - -const Root = TooltipPrimitive.Root; -const Provider = TooltipPrimitive.Provider; -const Portal = TooltipPrimitive.Portal; - -export { - Root, - Trigger, - Content, - Provider, - Portal, - // - Root as Tooltip, - Content as TooltipContent, - Trigger as TooltipTrigger, - Provider as TooltipProvider, - Portal as TooltipPortal, -}; diff --git a/new-web/src/lib/components/ui/tooltip/tooltip-content.svelte b/new-web/src/lib/components/ui/tooltip/tooltip-content.svelte deleted file mode 100644 index b0c399ca..00000000 --- a/new-web/src/lib/components/ui/tooltip/tooltip-content.svelte +++ /dev/null @@ -1,47 +0,0 @@ - - - - - {@render children?.()} - - {#snippet child({ props })} -
    - {/snippet} -
    -
    -
    diff --git a/new-web/src/lib/index.ts b/new-web/src/lib/index.ts deleted file mode 100644 index 856f2b6c..00000000 --- a/new-web/src/lib/index.ts +++ /dev/null @@ -1 +0,0 @@ -// place files you want to import through the `$lib` alias in this folder. diff --git a/new-web/src/lib/locale/en.json b/new-web/src/lib/locale/en.json deleted file mode 100644 index 8ba0f477..00000000 --- a/new-web/src/lib/locale/en.json +++ /dev/null @@ -1,250 +0,0 @@ -{ - "auth": { - "username": "Username", - "password": "Password", - "realm": "Realm", - "select_authentication": "Select Authentication", - "pam": "PAM Standard Authentication", - "sylve": "Sylve Authentication", - "language": "Language", - "select_language": "Select Language", - "remember_me": "Remember Me", - "login": "Login", - "logout": "Logout", - "invalid_auth_type": "Authentication type required", - "invalid_credentials": "Invalid credentials", - "pam_auth_error": "PAM authentication error" - }, - "node": { - "summary": "Summary", - "search": "Search", - "notes": "Notes", - "network": "Network", - "storage": "Storage", - "certificates": "Certificates", - "interfaces": "Interfaces", - "firewall": "Firewall", - "disks": "Disks", - "zfs": "ZFS", - "pools": "Pools", - "datasets": "Datasets", - "file_systems": "Filesystems", - "notifications": "Notifications", - "volumes": "Volumes", - "snapshots": "Snapshots", - "switches": "Switches", - "utilities": "Utilities", - "downloader": "Downloader", - "settings": "Settings", - "console": "Console", - "dashboard": "Dashboard" - }, - "summary": { - "CPU_s": "CPU(s)", - "Operating System": "Operating System", - "load_average": "Load Average", - "boot_mode": "Boot Mode", - "cpu_usage": "CPU Usage", - "disk_usage": "Disk Usage", - "swap_usage": "Swap Usage", - "ram_usage": "RAM Usage", - "io_delay": "I/O Delay" - }, - "notes": { - "note": "note", - "notes": "notes", - "title": "title", - "content": "content", - "created": "note created", - "updated": "note updated", - "delete": "note deleted", - "bulk_delete": "notes deleted" - }, - "disk": { - "smart": "S.M.A.R.T.", - "smart_values": "S.M.A.R.T. values", - "initialize_gpt": "Initialize GPT", - "wipe_disk": "wipe disk", - "attribute": "Attribute", - "delete_partition": "delete partition", - "create_partition": "create partition", - "value": "Value", - "wipe": "wipe", - "partition": "partition", - "partitions": "partitions", - "gpt_initialized": "initialized with GPT", - "initialize": "initialize", - "full_wipe_success": "Disk wiped", - "partition_wipe_success": "Partition deleted", - "device": "Device", - "type": "Type", - "usage": "Usage", - "size": "Size", - "gpt": "GPT", - "model": "Model", - "serial": "Serial", - "wearout": "Wearout" - }, - "network": { - "switch": { - "switch": "switch", - "errors": { - "invalid_switch_name": "Invalid switch name", - "invalid_mtu": "Invalid MTU", - "invalid_vlan": "Invalid VLAN", - "invalid_ipv4_cidr": "Invalid IPv4 CIDR", - "delete_switch": "Error deleting switch", - "create_switch": "Error creating switch", - "update_switch": "Error updating switch" - } - }, - "ports": "ports", - "mtu": "MTU", - "vlan": "VLAN", - "ipv4": "IPv4", - "ipv6": "IPv6", - "model": "model", - "mac_address": "MAC address", - "enabled_capabilities": "enabled capabilities", - "supported_capabilities": "supported capabilities", - "media_options": "media options", - "sub_type": "sub type" - }, - "partition": { - "create": "Create Partition" - }, - "vm": { - "vm": "VM", - "create_vm": "create VM", - "delete_vm": "delete VM", - "deleting_vm_full": "deleting virtual machine" - }, - "zfs": { - "pool": { - "pool": "pool", - "pool_not_found": "Pool not found", - "pool_deleted": "Pool deleted", - "pool_created": "Pool created", - "pool_edited": "Pool edited", - "errors": { - "pool_create_failed_mirror_different_sizes": "Pool contains a mirror with devices of different sizes", - "pool_create_failed_raidz_different_sizes": "Pool contains a raidz vdev with devices of different sizes", - "pool_delete_failed_busy": "Pool is busy", - "pool_create_failed_no_disks": "No available disks or partitions", - "pool_create_failed_invalid_name": "Invalid pool name", - "pool_create_failed_need_atleast_one": "Please add at least one disk", - "pool_create_failed_new_device_smaller": "New device is smaller than old device", - "pool_create_failed_new_partition_smaller": "New partition is smaller than old device", - "pool_edit_failed": "Pool edit failed" - }, - "warnings": { - "disks_within_vdev_should_be_same_type": "Disks within a VDEV should ideally be the same type", - "disks_within_vdev_should_be_same_drive_type": "Disks within a VDEV should ideally be the same drive type", - "disks_within_vdev_should_be_same_size": "Disks within a VDEV should ideally be the same size", - "partitions_within_vdev_should_be_same_size": "Partitions within a VDEV should ideally be the same size", - "disks_or_partitions_within_vdev_should_be_same_drive_type": "Disks/Partitions within a VDEV should ideally be the same drive type", - "cannot_delete_pool_while_replacing_device": "Cannot delete pool while replacing device in any pool" - }, - "redundancy": { - "stripe": "Stripe", - "mirror": "Mirror", - "raidz": "RAIDZ", - "raidz2": "RAIDZ2", - "raidz3": "RAIDZ3", - "redundancy": "redundancy" - }, - "pool_status": "Pool Status", - "delete_pool": "delete pool", - "replace_device": "replace device", - "replacing": "Replacing", - "scrub": "Scrub", - "delete": "Delete", - "scrub_in_progress": "A scrub is already in progress", - "no_available_disks": "No available disks", - "partitions": "Partitions", - "no_available_partitions": "No available partitions", - "create_zfs_pool": "Create ZFS Pool", - "edit_zfs_pool": "Edit ZFS Pool", - "create_pool": "create pool", - "scrub_pool": "scrub pool", - "mount_point": "Mount Point", - "edit_pool": "edit pool" - }, - "datasets": { - "filesystem_already_exists": "filesystem already exists", - "dataset_already_exists": "dataset already exists", - "numeric_value_too_large": "numeric value is too large", - "invalid_encryption_key_length": "invalid encryption key length", - "snapshot_already_exists": "snapshot already exists", - "pool_or_dataset_is_busy": "pool or dataset is busy", - "vol_size_greater_than_available_space": "volume size is greater than available space", - "parent_not_found": "parent not found", - "invalid_volume_name": "invalid volume name", - "no_parent_selected": "no parent selected", - "encryption_key_required": "encryption key required", - "invalid_volume_size": "invalid volume size", - "dataset_in_use_by_vm": "Dataset used by a VM" - } - }, - "common": { - "example": "Example", - "of": "of", - "are_you_sure": "Are you sure?", - "this_action_cannot_be_undone": "This action cannot be undone", - "this_will_permanently": "This will permanently", - "permanent_delete_msg": "This action cannot be undone. This will permanently delete", - "completely": "completely", - "created": "created", - "creating": "creating", - "created_successfully": "created successfully", - "error": "error", - "delete": "delete", - "create": "create", - "invalid_response_received": "Invalid response received", - "datacenter": "datacenter", - "languages": { - "en": "English", - "en_default": "English (Default)", - "mal": "Malayalam" - }, - "values": "values", - "with": "with", - "status": "Status", - "new": "new", - "devices": "devices", - "options": "options", - "name": "name", - "virtual": "virtual", - "filesystem": "filesystem", - "volume": "volume", - "deleted": "deleted", - "prefix": "prefix", - "details": "details", - "updated": "updated", - "view": "view", - "edit": "edit", - "reset": "reset", - "close": "close", - "OK": "OK", - "save": "save", - "bulk": "bulk", - "ID": "ID", - "id": "id", - "description": "description", - "raw": "raw", - "mode": "mode", - "search": "search", - "private": "private", - "content": "content", - "value": "value", - "worst": "worst", - "threshold": "threshold", - "flags": "flags", - "failing": "failing", - "magnet": "magnet", - "http": "HTTP" - }, - "validation_errors": { - "failed validation: min": "too small" - } -} diff --git a/new-web/src/lib/locale/mal.json b/new-web/src/lib/locale/mal.json deleted file mode 100644 index 0745f73c..00000000 --- a/new-web/src/lib/locale/mal.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "auth": { - "username": "പേര്", - "password": "പാസ്സ്‌വേഡ്", - "realm": "സാമ്രാജ്യം", - "pam": "പി.എ.എം", - "sylve": "സിൽവ്", - "language": "ഭാഷ", - "select_language": "ഭാഷ തിരഞ്ഞെടുക്കുക", - "remember_me": "എന്നെ ഓർമ്മിക്കുക", - "login": "ലോഗിൻ", - "logout": "ലോഗ്ഔട്ട്", - "invalid_auth_type": "അധികാര തരം ആവശ്യമാണ്", - "invalid_credentials": "അസാധുവായ ക്രെഡൻഷ്യലുകൾ", - "pam_auth_error": "പി.എ.എം. അധികാര പിശക്" - }, - "node": { - "summary": "സാരാംശം", - "search": "തിരയൽ", - "notes": "കുറിപ്പുകൾ", - "storage": "സ്റ്റോറേജ്", - "certificates": "സർട്ടിഫിക്കറ്റുകൾ", - "firewall": "ഫയർവാൾ", - "disks": "ഡിസ്കുകൾ", - "zfs": "ഇസഡ് എഫ് എസ്", - "pools": "പൂലുകൾ", - "datasets": "ഡാറ്റാസെറ്റുകൾ", - "file_systems": "ഫയൽ സിസ്റ്റങ്ങൾ", - "notifications": "അറിയിപ്പുകൾ" - }, - "summary": { - "CPU_s": "സിപിയു", - "operating_system": "ഓപ്പറേറ്റിംഗ് സിസ്റ്റം", - "load_average": "ലോഡ് ശരാശരി", - "boot_mode": "ബൂട്ട് മോഡ്", - "sylve_version": "സിൽവ് പതിപ്പ്", - "cpu_usage": "സിപിയു ഉപയോഗം", - "disk_usage": "ഡിസ്ക് ഉപയോഗം", - "swap_usage": "സ്വാപ്പ് ഉപയോഗം", - "ram_usage": "റാം ഉപയോഗം", - "io_delay": "ഐ/ഒ വൈകിയാൽ" - }, - "notes": { - "note": "കുറിപ്പ്", - "note_l": "കുറിപ്പ്", - "title": "ശീർഷകം" - }, - "disk": { - "smart": "എസ്.മാർട്ട്", - "smart_values": "എസ്.മാർട്ട് വിലകൾ", - "initialize_gpt": "ജിപിടി ആരംഭിക്കുക", - "wipe_disk": "ഡിസ്ക് ശുദ്ധീകരിക്കുക", - "attribute": "ഗുണം", - "delete_partition": "വിഭാഗം ഇല്ലാതാക്കുക", - "create_partition": "വിഭാഗം സൃഷ്ടിക്കുക", - "value": "മൂല്യം", - "wipe": "ശുദ്ധീകരിക്കുക", - "partition": "വിഭാഗം", - "partitions": "വിഭാഗങ്ങൾ", - "gpt_initialized": "ജിപിടി ഉപയോഗിച്ച് ആരംഭിച്ചു", - "initialize": "ആരംഭിക്കുക", - "full_wipe_success": "ഡിസ്ക് ശുദ്ധീകരിച്ചു", - "partition_wipe_success": "വിഭാഗം ഇല്ലാതാക്കി", - "device": "ഉപകരണം", - "type": "തരം", - "usage": "ഉപയോഗം", - "size": "വലുപ്പം", - "gpt": "ജിപിടി", - "model": "മോഡൽ", - "serial": "സീരിയൽ", - "wearout": "വെയർ ഔട്ട്" - }, - "zfs": { - "pool": { - "pool_not_found": "പൂൽ കണ്ടെത്തിയില്ല", - "pool_deleted": "പൂൽ ഇല്ലാതാക്കി", - "pool_created": "പൂൽ സൃഷ്ടിച്ചു", - "errors": { - "pool_create_failed_mirror_different_sizes": "പൂൽ വ്യത്യസ്ത വലുപ്പങ്ങളുള്ള ഉപകരണങ്ങളുമായി ഒരു മിറർ അടങ്ങിയിരിക്കുന്നു", - "pool_create_failed_raidz_different_sizes": "പൂൽ വ്യത്യസ്ത വലുപ്പങ്ങളുള്ള ഉപകരണങ്ങളുമായി ഒരു റെയിഡ്‌എസ് വി.ഡി.ഇ.വി അടങ്ങിയിരിക്കുന്നു", - "pool_delete_failed_busy": "പൂൽ തിരക്കിലാണ്" - } - } - }, - "common": { - "example": "ഉദാഹരണം", - "of": "യുടെ", - "are_you_sure": "നിങ്ങൾക്ക് ഉറപ്പാണോ?", - "this_action_cannot_be_undone": "ഈ പ്രവർത്തനം തിരികെ ചെയ്യാൻ കഴിയില്ല", - "this_will_permanently": "ഈ സ്ഥിരമായി", - "permanent_delete_msg": "ഈ പ്രവർത്തനം തിരികെ ചെയ്യാൻ കഴിയില്ല. ഇത് സ്ഥിരമായി ഇല്ലാതാക്കും", - "completely": "പൂർണ്ണമായും", - "created": "സൃഷ്ടിച്ചു", - "creating": "സൃഷ്ടിക്കുന്നു", - "created_successfully": "വിജയകരമായി സൃഷ്ടിച്ചു", - "error": "പിശക്", - "delete": "ഇല്ലാതാക്കുക", - "create": "സൃഷ്ടിക്കുക", - "invalid_response_received": "അസാധുവായ പ്രതികരണം ലഭിച്ചു", - "datacenter": "ഡാറ്റാ സെന്റർ", - "languages": { - "en": "English", - "en_default": "English (Default)", - "mal": "Malayalam" - } - }, - "validation_errors": { - "failed validation: min": "ചെറിയത്" - } -} diff --git a/new-web/src/lib/stores/auth.ts b/new-web/src/lib/stores/auth.ts deleted file mode 100644 index 29977005..00000000 --- a/new-web/src/lib/stores/auth.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import { parseJwt } from '$lib/utils/string'; -import { localStore } from '@layerstack/svelte-stores'; -import { addDays } from 'date-fns'; -import { get } from 'svelte/store'; - -export const store = localStore('token', '', { - expiry: addDays(new Date(), 1) -}); - -export const oldStore = localStore('oldToken', '', { - expiry: addDays(new Date(), 1) -}); - -export function getUsername(): string { - try { - const token = get(store); - if (!token) return 'unknown'; - - const decoded = parseJwt(token); - return decoded.custom_claims.username; - } catch (e) { - return 'unknown'; - } -} diff --git a/new-web/src/lib/stores/basic.ts b/new-web/src/lib/stores/basic.ts deleted file mode 100644 index be0347ff..00000000 --- a/new-web/src/lib/stores/basic.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import { localStore } from '@layerstack/svelte-stores'; -import { addDays } from 'date-fns'; - -export const hostname = localStore('hostname', '', { - expiry: addDays(new Date(), 1) -}); - -export const language = localStore('language', 'en', { - expiry: addDays(new Date(), 720) -}); diff --git a/new-web/src/lib/stores/localStore.svelte.ts b/new-web/src/lib/stores/localStore.svelte.ts deleted file mode 100644 index d88a1873..00000000 --- a/new-web/src/lib/stores/localStore.svelte.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import { browser } from '$app/environment'; - -export class LocalStore { - value = $state() as T; - key = ''; - - constructor(key: string, value: T) { - this.key = key; - this.value = value; - - if (browser) { - const item = localStorage.getItem(key); - if (item) this.value = this.deserialize(item); - } - - $effect(() => { - localStorage.setItem(this.key, this.serialize(this.value)); - }); - } - - serialize(value: T): string { - return JSON.stringify(value); - } - - deserialize(item: string): T { - return JSON.parse(item); - } -} - -export function localStore(key: string, value: T) { - return new LocalStore(key, value); -} diff --git a/new-web/src/lib/stores/terminal.svelte.ts b/new-web/src/lib/stores/terminal.svelte.ts deleted file mode 100644 index 95921902..00000000 --- a/new-web/src/lib/stores/terminal.svelte.ts +++ /dev/null @@ -1,71 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import { hostname } from '$lib/stores/basic'; -import type { Terminal as Xterm } from '@battlefieldduck/xterm-svelte'; -import { localStore } from '@layerstack/svelte-stores'; -import { nanoid } from 'nanoid'; -import { get } from 'svelte/store'; -import { getUsername } from './auth'; - -interface Tab { - id: string; - title: string; -} - -interface Terminal { - isOpen: boolean; - isMinimized: boolean; - title: string; - tabs: Tab[]; - activeTabId: string; -} - -export const terminalStore = localStore('terminal', { - isOpen: false, - isMinimized: false, - title: '', - tabs: [], - activeTabId: '' -}); - -export function getDefaultTitle() { - return `${getUsername()}@${get(hostname)}:~`; -} - -export function openTerminal() { - terminalStore.set({ - ...get(terminalStore), - isOpen: true, - isMinimized: false - }); - - let store = get(terminalStore); - if (store.tabs.length > 0) { - return; - } - - const tabId = nanoid(9); - const newTerminal: Terminal = { - isOpen: true, - isMinimized: false, - title: 'Terminal', - tabs: [ - { - id: tabId, - title: getDefaultTitle() - } - ], - - activeTabId: tabId - }; - - terminalStore.set(newTerminal); -} diff --git a/new-web/src/lib/types/common.ts b/new-web/src/lib/types/common.ts deleted file mode 100644 index f90c9c16..00000000 --- a/new-web/src/lib/types/common.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import { z } from 'zod/v4'; - -export const APIResponseSchema = z - .object({ - status: z.string(), - message: z.string().optional(), - error: z.string().optional(), - data: z.unknown().optional() - }) - .describe('APIResponseSchema'); - -export interface HistoricalBase { - id?: number | string; - createdAt?: string | Date; - [key: string]: number | string | Date | undefined; -} - -export interface HistoricalData { - date: Date; - [key: string]: number | string | Date; -} - -export interface PieChartData { - label: string; - value: number; - color: string; -} - -export interface SeriesData { - name: string; - value: number; -} - -export interface SeriesDataWithBaseline { - name: string; - baseline: number; - value: number; -} - -export type APIResponse = z.infer; -export type Locales = 'en' | 'mal'; diff --git a/new-web/src/lib/types/components/tree-table.ts b/new-web/src/lib/types/components/tree-table.ts deleted file mode 100644 index 66dff810..00000000 --- a/new-web/src/lib/types/components/tree-table.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { CellComponent, EmptyCallback, FormatterParams } from 'tabulator-tables'; - -export interface Row { - id: number | string; - [key: string]: any; - children?: Row[]; -} - -export interface Column { - field: string; - title: string; - visible?: boolean; - formatter?: - | ((cell: CellComponent, formatterParams: FormatterParams, onRendered: EmptyCallback) => void) - | string; -} - -export type ExpandedRows = Record; diff --git a/new-web/src/lib/types/disk/disk.ts b/new-web/src/lib/types/disk/disk.ts deleted file mode 100644 index 6e55ae90..00000000 --- a/new-web/src/lib/types/disk/disk.ts +++ /dev/null @@ -1,147 +0,0 @@ -import { z } from 'zod/v4'; - -export const SmartNVMESchema = z.object({ - device: z.string(), - criticalWarning: z.string(), - criticalWarningState: z.object({ - availableSpare: z.union([z.number(), z.string()]), - temperature: z.union([z.number(), z.string()]), - deviceReliability: z.union([z.number(), z.string()]), - readOnly: z.union([z.number(), z.string()]), - volatileMemoryBackup: z.union([z.number(), z.string()]) - }), - temperature: z.number(), - availableSpare: z.number(), - availableSpareThreshold: z.number(), - percentageUsed: z.number(), - dataUnitsRead: z.number(), - dataUnitsWritten: z.number(), - hostReadCommands: z.number(), - hostWriteCommands: z.number(), - controllerBusyTime: z.number(), - powerCycles: z.number(), - powerOnHours: z.number(), - unsafeShutdowns: z.number(), - mediaErrors: z.number(), - errorInfoLogEntries: z.number(), - warningCompositeTempTime: z.number(), - temperature1TransitionCnt: z.number(), - temperature2TransitionCnt: z.number(), - totalTimeForTemperature1: z.number(), - totalTimeForTemperature2: z.number() -}); - -export const SmartCtlSchema = z.object({ - json_format_version: z.array(z.number()), - smartctl: z.object({ - version: z.array(z.number()), - pre_release: z.boolean(), - svn_revision: z.string(), - platform_info: z.string(), - build_info: z.string().optional(), - argv: z.array(z.string()), - drive_database_version: z - .object({ - string: z.string() - }) - .optional(), - exit_status: z.number() - }), - local_time: z.object({ - time_t: z.number(), - asctime: z.string() - }), - device: z.object({ - name: z.string(), - info_name: z.string(), - type: z.string(), - protocol: z.string() - }), - smart_status: z.object({ - passed: z.boolean() - }), - power_on_time: z.object({ - hours: z.number() - }), - power_cycle_count: z.number(), - temperature: z.object({ - current: z.number() - }), - ata_smart_attributes: z.object({ - revision: z.number(), - table: z.array( - z.object({ - id: z.number(), - name: z.string(), - value: z.number(), - worst: z.number(), - thresh: z.number(), - when_failed: z.string(), - flags: z.object({ - value: z.number(), - string: z.string(), - prefailure: z.boolean(), - updated_online: z.boolean(), - performance: z.boolean(), - error_rate: z.boolean(), - event_count: z.boolean(), - auto_keep: z.boolean() - }), - raw: z.object({ - value: z.number(), - string: z.string() - }) - }) - ) - }) -}); - -export const PartitionSchema = z.object({ - uuid: z.string(), - name: z.string(), - usage: z.string(), - size: z.number(), - id: z.string().optional() -}); - -export const DiskSchema = z.object({ - uuid: z.string(), - device: z.string(), - type: z.string(), - usage: z.string(), - size: z.number(), - gpt: z.boolean(), - model: z.string(), - serial: z.string(), - smartData: z.union([SmartNVMESchema, SmartCtlSchema, z.null()]).optional(), - wearOut: z.union([z.number(), z.string()]).optional(), - partitions: z.array(PartitionSchema).optional().default([]) -}); - -export const DiskActionSchema = z.object({ - device: z.string() -}); - -export type SmartAttribute = Record< - string, - string | number | boolean | Record ->; -export type SmartNVME = z.infer; -export type SmartCtl = z.infer; -export type Disk = z.infer; -export type Partition = z.infer; - -// export interface Disk { -// UUID: string; -// Device: string; -// Type: string; -// Usage: string; -// Size: number; -// GPT: boolean; -// Model: string; -// Serial: string; -// 'S.M.A.R.T.': string; -// Wearout: string | number | undefined; -// Partitions: Partition[]; -// SmartData: SmartNVME | SmartCtl | null; -// } diff --git a/new-web/src/lib/types/info/audit.ts b/new-web/src/lib/types/info/audit.ts deleted file mode 100644 index 8409e1b5..00000000 --- a/new-web/src/lib/types/info/audit.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { z } from 'zod/v4'; - -export const AuditLogSchema = z.array( - z.object({ - id: z.number(), - userId: z.number(), - user: z.string(), - authType: z.string(), - node: z.string(), - started: z.string(), - ended: z.string(), - action: z.string(), - status: z.string(), - createdAt: z.string(), - updatedAt: z.string() - }) -); - -export type AuditLog = z.infer; diff --git a/new-web/src/lib/types/info/basic.ts b/new-web/src/lib/types/info/basic.ts deleted file mode 100644 index 340f4857..00000000 --- a/new-web/src/lib/types/info/basic.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { z } from 'zod/v4'; - -export const BasicInfoSchema = z.object({ - hostname: z.string().default('Unknown'), - os: z.string().default('Unknown'), - uptime: z.number().default(0), - loadAverage: z.string().default('Unknown'), - bootMode: z.string().default('Unknown'), - sylveVersion: z.string().default('Unknown') -}); - -export type BasicInfo = z.infer; diff --git a/new-web/src/lib/types/info/cpu.ts b/new-web/src/lib/types/info/cpu.ts deleted file mode 100644 index 5322d5b0..00000000 --- a/new-web/src/lib/types/info/cpu.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { z } from 'zod/v4'; - -export const CPUInfoHistoricalSchema = z.array( - z.object({ - id: z.number().default(0), - usage: z.number().default(0), - createdAt: z.string().default('') - }) -); - -export const CPUInfoSchema = z.object({ - name: z.string().default('Unknown'), - physicalCores: z.number().default(0), - threadsPerCore: z.number().default(0), - logicalCores: z.number().default(0), - family: z.number().default(0), - model: z.number().default(0), - features: z.array(z.string()).default([]), - cacheLine: z.number().default(0), - cache: z.object({ - l1d: z.number().default(0), - l1i: z.number().default(0), - l2: z.number().default(0), - l3: z.number().default(0) - }), - frequency: z.number().default(0), - usage: z.number().default(0) -}); - -export type CPUInfo = z.infer; -export type CPUInfoHistorical = z.infer; diff --git a/new-web/src/lib/types/info/notes.ts b/new-web/src/lib/types/info/notes.ts deleted file mode 100644 index 4ae14295..00000000 --- a/new-web/src/lib/types/info/notes.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { z } from 'zod/v4'; - -export const NoteSchema = z.object({ - id: z.number().default(0), - title: z.string().default(''), - content: z.string().default(''), - createdAt: z.string().default(''), - updatedAt: z.string().default('') -}); - -export const NotesSchema = z.array(NoteSchema); - -export type Notes = z.infer; -export type Note = z.infer; diff --git a/new-web/src/lib/types/info/ram.ts b/new-web/src/lib/types/info/ram.ts deleted file mode 100644 index d087c13d..00000000 --- a/new-web/src/lib/types/info/ram.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { z } from 'zod/v4'; - -export const RAMInfoHistoricalSchema = z.array( - z.object({ - id: z.number().default(0), - usage: z.number().default(0), - createdAt: z.string().default('') - }) -); - -export const RAMInfoSchema = z.object({ - total: z.number().default(0), - free: z.number().default(0), - usedPercent: z.number().default(0) -}); - -export const RAMInfoResponseSchema = z.object({ - info: RAMInfoSchema -}); - -export type RAMInfo = z.infer; -export type RAMInfoHistorical = z.infer; diff --git a/new-web/src/lib/types/network/iface.ts b/new-web/src/lib/types/network/iface.ts deleted file mode 100644 index 4daf755b..00000000 --- a/new-web/src/lib/types/network/iface.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { z } from 'zod/v4'; - -export const FlagsSchema = z.object({ - raw: z.number(), - desc: z.array(z.string()).nullable().default([]) -}); - -export const IPv4RCSchema = z.object({ - id: z.number(), - interfaceId: z.number(), - protocol: z.string(), - address: z.string().nullable().optional(), - netmask: z.string().nullable().optional(), - options: z.string().default(''), - isAlias: z.boolean().default(false) -}); - -export const IPv6RCSchema = z.object({ - id: z.number(), - interfaceId: z.number(), - protocol: z.string(), - address: z.string().nullable().optional(), - options: z.string().default(''), - prefixLength: z.number().nullable().optional(), - isAlias: z.boolean().default(false) -}); - -export const IPv4Schema = z.object({ - ip: z.string(), - netmask: z.string(), - broadcast: z.string() -}); - -export const IPv6Schema = z.object({ - ip: z.string(), - prefixLength: z.number(), - scopeId: z.number(), - autoConf: z.boolean(), - detached: z.boolean(), - deprecated: z.boolean(), - lifeTimes: z.object({ - preferred: z.number(), - valid: z.number() - }) -}); - -export const MediaSchema = z.object({ - type: z.string(), - subtype: z.string(), - options: z.array(z.string()).nullable().default([]), - mode: z.string(), - rawCurrent: z.number(), - rawActive: z.number(), - status: z.string() -}); - -export const ND6Schema = FlagsSchema; - -export const IfaceSchema = z.object({ - name: z.string(), - ether: z.string(), - flags: FlagsSchema, - mtu: z.number().nullable().optional(), - metric: z.number().nullable().optional(), - capabilities: z.object({ - enabled: FlagsSchema, - supported: FlagsSchema - }), - driver: z.string().default(''), - model: z.string().default(''), - description: z.string().default(''), - ipv4: z.array(IPv4Schema).default([]).nullable().optional(), - ipv6: z.array(IPv6Schema).default([]).nullable().optional(), - media: MediaSchema.nullable().optional(), - nd6: ND6Schema.nullable().optional(), - groups: z.array(z.string()).default([]).nullable().optional() -}); - -export type Iface = z.infer; diff --git a/new-web/src/lib/types/network/switch.ts b/new-web/src/lib/types/network/switch.ts deleted file mode 100644 index 87822252..00000000 --- a/new-web/src/lib/types/network/switch.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { array, z } from 'zod'; - -export const NetworkPortSchema = z.object({ - id: z.number(), - name: z.string(), - switchId: z.number() -}); - -export const StandardSwitchSchema = z.object({ - id: z.number(), - name: z.string(), - mtu: z.number(), - vlan: z.number(), - private: z.boolean(), - address: z.string(), - address6: z.string(), - ports: array(NetworkPortSchema).optional(), - dhcp: z.boolean().optional(), - slaac: z.boolean(), - disableIPv6: z.boolean() -}); - -export const SwitchListSchema = z.object({ - standard: array(StandardSwitchSchema).optional() -}); - -export type StandardSwitch = z.infer; -export type SwitchList = z.infer; diff --git a/new-web/src/lib/types/system/pci.ts b/new-web/src/lib/types/system/pci.ts deleted file mode 100644 index eb7e6bc7..00000000 --- a/new-web/src/lib/types/system/pci.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { z } from 'zod/v4'; - -export const PCIDeviceSchema = z.object({ - name: z.string(), - unit: z.number(), - domain: z.number(), - bus: z.number(), - device: z.number(), - function: z.number(), - class: z.number().int(), - rev: z.number().int(), - hdr: z.number().int(), - vendor: z.number().int(), - subVendor: z.number().int().optional().default(0), - subDevice: z.number().int().optional().default(0), - names: z.object({ - vendor: z.string().optional().default(''), - device: z.string().optional().default(''), - class: z.string().optional().default(''), - subclass: z.string().optional().default('') - }) -}); - -export const PPTDeviceSchema = z.object({ - id: z.number().int(), - deviceID: z.string() -}); - -export type PCIDevice = z.infer; -export type PPTDevice = z.infer; diff --git a/new-web/src/lib/types/utilities/downloader.ts b/new-web/src/lib/types/utilities/downloader.ts deleted file mode 100644 index 0ef3de81..00000000 --- a/new-web/src/lib/types/utilities/downloader.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { z } from 'zod/v4'; - -export const DownloadedFileSchema = z.object({ - id: z.number(), - downloadId: z.number(), - name: z.string(), - size: z.number() -}); - -export const DownloadSchema = z.object({ - id: z.number(), - uuid: z.string(), - path: z.string(), - name: z.string(), - type: z.string(), - url: z.string(), - progress: z.number(), - size: z.number(), - files: z.array(DownloadedFileSchema), - createdAt: z.string(), - updatedAt: z.string() -}); - -export type Download = z.infer; -export type DownloadedFile = z.infer; diff --git a/new-web/src/lib/types/vm/vm.ts b/new-web/src/lib/types/vm/vm.ts deleted file mode 100644 index 3ccf382d..00000000 --- a/new-web/src/lib/types/vm/vm.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { z } from 'zod/v4'; - -export interface CreateData { - name: string; - id: number; - description: string; - storage: { - type: string; - guid: string; - size: number; - emulation: string; - iso: string; - }; - network: { - switch: number; - mac: string; - emulation: string; - }; - hardware: { - sockets: number; - cores: number; - threads: number; - memory: number; - passthroughIds: number[]; - pinnedCPUs: number[]; - }; - advanced: { - vncPort: number; - vncPassword: string; - vncWait: boolean; - vncResolution: string; - startAtBoot: boolean; - bootOrder: number; - }; -} - -export const VMStorageSchema = z.object({ - id: z.number().int(), - type: z.string(), - dataset: z.string(), - size: z.number().int(), - emulation: z.string(), - detached: z.boolean().optional(), - vmId: z.number().int().optional() -}); - -export const VMNetworkSchema = z.object({ - id: z.number().int(), - mac: z.string(), - switchId: z.number().int(), - emulation: z.string(), - vmId: z.number().int().optional() -}); - -export const VMSchema = z.object({ - id: z.number().int(), - name: z.string(), - description: z.string(), - vmId: z.number().int(), - cpuSockets: z.number().int(), - cpuCores: z.number().int(), - cpuThreads: z.number().int(), - ram: z.number().int(), - vncPort: z.number().int(), - vncPassword: z.string(), - vncResolution: z.string(), - vncWait: z.boolean(), - startAtBoot: z.boolean(), - startOrder: z.number().int(), - - storages: z.array(VMStorageSchema), - networks: z.array(VMNetworkSchema), - pciDevices: z.union([z.array(z.number().int()), z.null()]), - cpuPinning: z.union([z.array(z.number().int()), z.null()]), - - createdAt: z.string(), - updatedAt: z.string(), - - startedAt: z.string().nullable(), - stoppedAt: z.string().nullable() -}); - -export const VMStatSchema = z.object({ - vmId: z.number().int(), - cpuUsage: z.number(), - memoryUsage: z.number(), - memoryUsed: z.number(), - createdAt: z.string() -}); - -export const VMDomainSchema = z.object({ - id: z.number().int(), - uuid: z.string(), - name: z.string(), - status: z.string() -}); - -export type VM = z.infer; -export type VMStorage = z.infer; -export type VMNetwork = z.infer; -export type VMDomain = z.infer; -export type VMStat = z.infer; diff --git a/new-web/src/lib/types/zfs/dataset.ts b/new-web/src/lib/types/zfs/dataset.ts deleted file mode 100644 index 23b32a44..00000000 --- a/new-web/src/lib/types/zfs/dataset.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { z } from 'zod/v4'; -import { ZpoolSchema } from './pool'; - -export const DatasetSchema = z.object({ - name: z.string(), - origin: z.string(), - used: z.number(), - avail: z.number(), - mountpoint: z.string(), - compression: z.string(), - type: z.string(), - written: z.number(), - volsize: z.number(), - volblocksize: z.number(), - logicalused: z.number(), - usedbydataset: z.number(), - quota: z.number(), - referenced: z.number(), - properties: z - .object({ - aclinherit: z.string(), - aclmode: z.string(), - acltype: z.string(), - available: z.coerce.number(), - canmount: z.string(), - casesensitivity: z.string(), - checksum: z.string(), - compression: z.string(), - compressratio: z.coerce.number(), - context: z.string(), - copies: z.coerce.number(), - createtxg: z.coerce.number(), - creation: z.coerce.number(), - dedup: z.string(), - defcontext: z.string(), - devices: z.string(), - dnodesize: z.string(), - encryption: z.string(), - exec: z.string(), - filesystem_count: z.union([z.number(), z.literal('none')]), - filesystem_limit: z.union([z.number(), z.literal('none')]), - fscontext: z.string(), - guid: z.string(), - jailed: z.string(), - keyformat: z.string(), - keylocation: z.string(), - logbias: z.string(), - logicalreferenced: z.coerce.number(), - logicalused: z.coerce.number(), - mlslabel: z.string(), - mounted: z.string(), - mountpoint: z.string(), - nbmand: z.string(), - normalization: z.string(), - objsetid: z.coerce.number(), - overlay: z.string(), - pbkdf2iters: z.coerce.number(), - prefetch: z.string(), - primarycache: z.string(), - quota: z.coerce.number(), - readonly: z.string(), - recordsize: z.coerce.number(), - refcompressratio: z.coerce.number(), - referenced: z.coerce.number(), - refquota: z.coerce.number(), - refreservation: z.coerce.number(), - relatime: z.string(), - reservation: z.coerce.number(), - rootcontext: z.string(), - secondarycache: z.string(), - setuid: z.string(), - sharenfs: z.string(), - sharesmb: z.string(), - snapdev: z.string(), - snapdir: z.string(), - snapshot_count: z.union([z.number(), z.literal('none')]), - snapshot_limit: z.union([z.number(), z.literal('none')]), - special_small_blocks: z.coerce.number(), - sync: z.string(), - type: z.string(), - used: z.coerce.number(), - usedbychildren: z.coerce.number(), - usedbydataset: z.coerce.number(), - usedbyrefreservation: z.coerce.number(), - usedbysnapshots: z.coerce.number(), - utf8only: z.string(), - version: z.coerce.number(), - volmode: z.string(), - vscan: z.string(), - written: z.coerce.number(), - xattr: z.string() - }) - .partial() -}); - -export const PeriodicSnapshotSchema = z.object({ - id: z.number(), - guid: z.string(), - prefix: z.string(), - recursive: z.boolean(), - interval: z.number(), - createdAt: z.coerce.date().optional(), - lastRunAt: z.coerce.date() -}); - -export const GroupedByPoolSchema = z.object({ - name: z.string(), - pool: ZpoolSchema, - filesystems: z.array(DatasetSchema).default([]), - snapshots: z.array(DatasetSchema).default([]), - volumes: z.array(DatasetSchema).default([]) -}); - -export type Dataset = z.infer; -export type GroupedByPool = z.infer; -export type PeriodicSnapshot = z.infer; diff --git a/new-web/src/lib/types/zfs/pool.ts b/new-web/src/lib/types/zfs/pool.ts deleted file mode 100644 index f039f5ad..00000000 --- a/new-web/src/lib/types/zfs/pool.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { z } from 'zod/v4'; - -export const IODelaySchema = z.object({ - delay: z.number().default(0) -}); - -export const IODelayHistoricalSchema = z.array( - z.object({ - id: z.number().default(0), - delay: z.number().default(0), - createdAt: z.string().default('') - }) -); - -export const RWSchema = z.object({ - read: z.number(), - write: z.number() -}); - -export const VdevDeviceSchema = z.object({ - name: z.string(), - size: z.number(), - health: z.string() -}); - -export const ReplacingVdevDeviceSchema = z.object({ - name: z.string(), - health: z.string(), - oldDrive: VdevDeviceSchema, - newDrive: VdevDeviceSchema -}); - -export const VdevSchema = z.object({ - name: z.string(), - alloc: z.number(), - free: z.number(), - size: z.number(), - health: z.string(), - operations: RWSchema, - bandwidth: RWSchema, - devices: z.array(VdevDeviceSchema), - replacingDevices: z.array(ReplacingVdevDeviceSchema).optional() -}); - -export const ZpoolDeviceSchema: z.ZodType = z.lazy(() => - z.object({ - name: z.string(), - state: z.string(), - read: z.number(), - write: z.number(), - cksum: z.number(), - note: z.string(), - children: z.array(ZpoolDeviceSchema).optional().default([]) - }) -); - -export const ZpoolStatusSchema = z.object({ - name: z.string(), - state: z.string(), - status: z.string(), - action: z.string(), - scan: z.string(), - devices: z.array(ZpoolDeviceSchema).optional().default([]), - errors: z.string() -}); - -export const ZpoolSpareSchema = z.object({ - name: z.string(), - size: z.number(), - health: z.string() -}); - -export const ZpoolPropertySchema = z.object({ - property: z.string(), - value: z.string(), - source: z.string() -}); - -export const ZpoolSchema = z.object({ - id: z.string(), - name: z.string(), - guid: z.string(), - health: z.string(), - allocated: z.number(), - size: z.number(), - free: z.number(), - readOnly: z.boolean(), - freeing: z.number(), - leaked: z.number(), - dedupRatio: z.number(), - vdevs: z.array(VdevSchema), - properties: z.array(ZpoolPropertySchema).optional().default([]), - status: ZpoolStatusSchema, - spares: z.array(ZpoolSpareSchema).optional().default([]) -}); - -export const CreateVdevSchema = z.object({ - name: z.string(), - devices: z.array(z.string()) -}); - -export const ZpoolRaidTypeSchema = z.union([ - z.enum(['mirror', 'raidz', 'raidz2', 'raidz3', 'stripe']), - z.undefined() -]); - -export const CreateZpoolSchema = z.object({ - name: z - .string() - .min(1, 'Name must be at least 1 character long') - .max(24, 'Name must be at most 24 characters long') - .regex(/^[a-zA-Z0-9]+$/, 'Name must be alphanumeric'), - raidType: ZpoolRaidTypeSchema, - vdevs: z.array(CreateVdevSchema), - properties: z.record(z.string(), z.string()).optional(), - createForce: z.boolean().default(false), - spares: z.array(z.string()).optional() -}); - -export const ReplaceDeviceSchema = z.object({ - guid: z.string(), - old: z.string(), - new: z.string() -}); - -export const PoolStatPointSchema = z.object({ - allocated: z.number(), - free: z.number(), - size: z.number(), - dedupRatio: z.number(), - time: z.number() -}); - -export const PoolStatPointsSchema = z.record( - z.string(), - z - .array(PoolStatPointSchema) - .refine((obj) => Object.keys(obj).length > 0, { message: 'No Data Found' }) -); - -export const PoolStatPointsResponseSchema = z.object({ - poolStatPoint: PoolStatPointsSchema, - intervalMap: z.array( - z.object({ value: z.number().transform((v) => v.toString()), label: z.string() }) - ) -}); - -export type IODelay = z.infer; -export type IODelayHistorical = z.infer; -export type Zpool = z.infer; -export type ReplaceDevice = z.infer; -export type CreateZpool = z.infer; -export type ZpoolRaidType = z.infer; -export type PoolStatPointsResponse = z.infer; diff --git a/new-web/src/lib/utils.ts b/new-web/src/lib/utils.ts deleted file mode 100644 index e98cb353..00000000 --- a/new-web/src/lib/utils.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { clsx, type ClassValue } from 'clsx'; -import { cubicOut } from 'svelte/easing'; -import type { TransitionConfig } from 'svelte/transition'; -import { twMerge } from 'tailwind-merge'; - -export const SEVEN_DAYS = 7 * 24 * 60 * 60 * 1000; - -export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)); -} - -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 - }; -}; - -export function sleep(ms: number) { - return new Promise((resolve) => setTimeout(resolve, ms)); -} - -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export type WithoutChild = T extends { child?: any } ? Omit : T; -// eslint-disable-next-line @typescript-eslint/no-explicit-any -export type WithoutChildren = T extends { children?: any } ? Omit : T; -export type WithoutChildrenOrChild = WithoutChildren>; -export type WithElementRef = T & { ref?: U | null }; diff --git a/new-web/src/lib/utils/arr.ts b/new-web/src/lib/utils/arr.ts deleted file mode 100644 index 1eb7eb62..00000000 --- a/new-web/src/lib/utils/arr.ts +++ /dev/null @@ -1,66 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import { deepDiff } from './obj'; - -export function createEmptyArrayOfArrays(length: number): Array> { - return Array.from({ length }, () => []); -} - -export function deepDiffArr(arr1: any[], arr2: any[]): any[] { - const changes = []; - - for (let i = 0; i < Math.max(arr1.length, arr2.length); i++) { - const val1 = arr1[i]; - const val2 = arr2[i]; - - if (typeof val1 === 'object' && typeof val2 === 'object' && val1 && val2) { - changes.push(...deepDiff(val1, val2, `${i}`)); - } else if (val1 !== val2) { - changes.push({ path: `${i}`, from: val1, to: val2 }); - } - } - - return changes; -} - -export function findValueInArrayByKey>( - value: unknown, - array: T[], - key: keyof T -): boolean { - if (typeof value === 'object' && value !== null) { - return array.some((obj) => obj[key] === value); - } - return array.some((obj) => obj[key] === value); -} - -export function deepSearchKey(obj: any, targetKey: string): any[] { - const results: any[] = []; - - function search(current: any): void { - if (Array.isArray(current)) { - for (const item of current) { - search(item); - } - } else if (typeof current === 'object' && current !== null) { - for (const key in current) { - if (key === targetKey) { - results.push(current[key]); - } - - search(current[key]); - } - } - } - - search(obj); - return results; -} diff --git a/new-web/src/lib/utils/chart.ts b/new-web/src/lib/utils/chart.ts deleted file mode 100644 index ff3b96c7..00000000 --- a/new-web/src/lib/utils/chart.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -export function sampleByInterval( - data: Array<{ date: Date; value: number }>, - intervalMin: number -): Array<{ date: Date; value: number }> { - if (!data.length || intervalMin <= 0) return []; - - const ms = intervalMin * 60 * 1000; - const sorted = data.slice().sort((a, b) => a.date.getTime() - b.date.getTime()); - const buckets = new Map(); - - for (const pt of sorted) { - const bucketKey = Math.floor(pt.date.getTime() / ms) * ms; - if (!buckets.has(bucketKey)) { - buckets.set(bucketKey, pt); - } - } - - return Array.from(buckets.values()).sort((a, b) => a.date - b.date); -} diff --git a/new-web/src/lib/utils/disk.ts b/new-web/src/lib/utils/disk.ts deleted file mode 100644 index 38f9a3ea..00000000 --- a/new-web/src/lib/utils/disk.ts +++ /dev/null @@ -1,308 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import type { Column, Row } from '$lib/types/components/tree-table'; -import type { Disk, Partition, SmartAttribute, SmartCtl, SmartNVME } from '$lib/types/disk/disk'; -import type { Zpool } from '$lib/types/zfs/pool'; -import humanFormat from 'human-format'; -import type { CellComponent } from 'tabulator-tables'; -import { generateNumberFromString } from './numbers'; -import { renderWithIcon } from './table'; - -export function parseSMART(disk: Disk): SmartAttribute | SmartAttribute[] { - if (disk.type === 'NVMe') { - return { - 'Available Spare': (disk.smartData as SmartNVME).availableSpare, - 'Available Spare Threshold': (disk.smartData as SmartNVME).availableSpareThreshold, - 'Controller Busy Time': (disk.smartData as SmartNVME).controllerBusyTime, - 'Critical Warning': (disk.smartData as SmartNVME).criticalWarning, - 'Critical Warning State': { - 'Available Spare': (disk.smartData as SmartNVME).criticalWarningState.availableSpare, - 'Device Reliability': (disk.smartData as SmartNVME).criticalWarningState.deviceReliability, - 'Read Only': (disk.smartData as SmartNVME).criticalWarningState.readOnly, - Temperature: (disk.smartData as SmartNVME).criticalWarningState.temperature, - 'Volatile Memory Backup': (disk.smartData as SmartNVME).criticalWarningState - .volatileMemoryBackup - }, - 'Data Units Read': (disk.smartData as SmartNVME).dataUnitsRead, - 'Data Units Written': (disk.smartData as SmartNVME).dataUnitsWritten, - 'Error Info Log Entries': (disk.smartData as SmartNVME).errorInfoLogEntries, - 'Host Read Commands': (disk.smartData as SmartNVME).hostReadCommands, - 'Host Write Commands': (disk.smartData as SmartNVME).hostWriteCommands, - 'Media Errors': (disk.smartData as SmartNVME).mediaErrors, - 'Percentage Used': (disk.smartData as SmartNVME).percentageUsed, - 'Power Cycles': (disk.smartData as SmartNVME).powerCycles, - 'Power On Hours': (disk.smartData as SmartNVME).powerOnHours, - Temperature: (disk.smartData as SmartNVME).temperature, - 'Temperature 1 Transition Count': (disk.smartData as SmartNVME).temperature1TransitionCnt, - 'Temperature 2 Transition Count': (disk.smartData as SmartNVME).temperature2TransitionCnt, - 'Total Time For Temperature 1': (disk.smartData as SmartNVME).totalTimeForTemperature1, - 'Total Time For Temperature 2': (disk.smartData as SmartNVME).totalTimeForTemperature2, - 'Unsafe Shutdowns': (disk.smartData as SmartNVME).unsafeShutdowns, - 'Warning Composite Temp Time': (disk.smartData as SmartNVME).warningCompositeTempTime - }; - } else if (disk.type === 'HDD' || disk.type === 'SSD') { - const data = disk.smartData as SmartCtl; - const attributes: SmartAttribute[] = []; - - if (data?.ata_smart_attributes?.table?.length) { - for (const element of data.ata_smart_attributes.table) { - attributes.push({ - ['ID']: element.id, - ['Name']: element.name, - ['Value']: element.value, - ['Worst']: element.worst, - ['Threshold']: element.thresh, - ['Flags']: element.flags.string, - ['Failing']: element.when_failed || '-' - }); - } - } - - if (attributes.length > 0) { - return attributes; - } - } - - return {}; -} - -export function smartStatus(disk: Disk): string { - if (disk.smartData) { - if (disk.smartData.hasOwnProperty('smart_status')) { - if ((disk.smartData as SmartCtl).smart_status.passed) { - return 'Passed'; - } - return 'Failed'; - } - - if (disk.smartData.hasOwnProperty('criticalWarning')) { - if ((disk.smartData as SmartNVME).criticalWarning !== '0x00') { - return 'Failed'; - } - - return 'Passed'; - } - } - - return '-'; -} - -export function diskSpaceAvailable(disk: Disk, required: number): boolean { - if (disk.usage === 'Partitions') { - const total = disk.size; - const used = disk.partitions.reduce((acc, cur) => acc + cur.size, 0); - return total - used >= required; - } - - return disk.size >= required; -} - -export function isPartitionInDisk(disks: Disk[], partition: Partition): Disk | null { - for (const disk of disks) { - if (disk.usage === 'Partitions') { - for (const p of disk.partitions) { - const raw = p.name.replace(/p\d+$/, ''); - if (disk.device === raw) { - return disk; - } - } - } - } - - return null; -} - -export function zpoolUseableDisks(disks: Disk[], pools: Zpool[]): Disk[] { - const useable: Disk[] = []; - for (const disk of disks) { - if (disk.device === 'da0' || disk.device === 'cd0') { - continue; - } - - if (disk.usage === 'Partitions') { - continue; - } - - if (disk.usage === 'Unused' && disk.gpt === false) { - useable.push(disk); - } - } - - return useable; -} - -export function zpoolUseablePartitions(disks: Disk[], pools: Zpool[]): Partition[] { - const useablePartitions: Partition[] = []; - const usedPartitionNames = new Set(); - for (const pool of pools) { - for (const vdev of pool.vdevs) { - for (const device of vdev.devices) { - if (device.name.startsWith('/dev/')) { - usedPartitionNames.add(device.name.split('/').pop()!); - } - } - } - } - - for (const disk of disks) { - if (disk.usage === 'Partitions') { - const hasEFI = disk.partitions.some((partition) => partition.usage === 'EFI'); - if (hasEFI) { - continue; - } - - for (const partition of disk.partitions) { - if (!usedPartitionNames.has(partition.name)) { - useablePartitions.push(partition); - } - } - } - } - - return useablePartitions; -} - -export function getDiskSize(disk: Disk): string { - if (disk.usage === 'Partitions') { - return disk.partitions.reduce((acc, cur) => acc + cur.size, 0).toString(); - } - - return disk.size.toString(); -} - -export function stripDev(disk: string): string { - return disk.replace(/^\/dev\//, ''); -} - -export function generateTableData(disks: Disk[]): { rows: Row[]; columns: Column[] } { - const rows: Row[] = []; - const columns: Column[] = [ - { - field: 'device', - title: 'Device', - formatter: (cell: CellComponent) => { - const value = cell.getValue(); - const row = cell.getRow(); - const disk = disks.find((d) => d.device === value); - - if (disk) { - if (disk.type === 'HDD') { - return renderWithIcon('mdi:harddisk', value); - } - - if (disk.type === 'NVMe') { - return renderWithIcon('bi:nvme', value, 'rotate-90'); - } - - if (disk.type === 'SSD') { - return renderWithIcon('icon-park-outline:ssd', value); - } - } - - if (value.match(/p\d+$/)) { - return renderWithIcon('ant-design:partition-outlined', value); - } - - return value; - } - }, - { - field: 'type', - title: 'Type' - }, - { - field: 'usage', - title: 'Usage' - }, - { - field: 'size', - title: 'Size', - formatter: (cell: CellComponent) => { - return humanFormat(cell.getValue()); - } - }, - { - field: 'gpt', - title: 'GPT' - }, - { - field: 'model', - title: 'Model' - }, - { - field: 'serial', - title: 'Serial' - }, - { - field: 'smartStatus', - title: 'S.M.A.R.T.', - visible: false - }, - { - field: 'wearOut', - title: 'Wearout', - formatter: (cell: CellComponent) => { - const value = cell.getValue(); - if (!isNaN(value)) { - return `${value} %`; - } - - return value; - } - } - ]; - - for (const disk of disks) { - if (disk.size <= 0) continue; - const row: Row = { - id: generateNumberFromString(disk.uuid), - device: disk.device, - type: disk.type, - usage: disk.usage, - size: disk.size, - gpt: disk.gpt ? 'Yes' : 'No', - model: disk.model, - serial: disk.serial, - smartStatus: smartStatus(disk), - wearOut: disk.wearOut - }; - - if (disk.partitions && disk.partitions.length > 0) { - row.children = []; - - for (const partition of disk.partitions) { - const partitionRow: Row = { - id: generateNumberFromString(partition.uuid), - device: partition.name, - type: partition.usage, - usage: partition.usage, - size: partition.size, - gpt: disk.gpt ? 'Yes' : 'No', - model: '-', - serial: '-', - smartData: '-', - wearOut: '-' - }; - - row.children.push(partitionRow); - } - } else { - row.children = []; - } - - rows.push(row); - } - - return { - rows: rows, - columns: columns - }; -} diff --git a/new-web/src/lib/utils/dnd.ts b/new-web/src/lib/utils/dnd.ts deleted file mode 100644 index 3cebb428..00000000 --- a/new-web/src/lib/utils/dnd.ts +++ /dev/null @@ -1,128 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -export function draggable(node: HTMLElement, data: string) { - let state = data; - - node.draggable = true; - node.style.cursor = 'grab'; - - function handle_dragstart(e: DragEvent) { - if (!e.dataTransfer) return; - //const dataToTransfer = typeof state === 'string' ? state : state.toString(); - e.dataTransfer.setData('application/disk', state); - e.dataTransfer.setData('text/plain', state); - // Add this to make the drag image transparent if desired - // setTimeout(() => { - // node.style.opacity = '0.4'; - // }, 0); - } - - function handle_dragend(e: DragEvent) { - // Reset any visual changes - // node.style.opacity = '1'; - } - - node.addEventListener('dragstart', handle_dragstart); - node.addEventListener('dragend', handle_dragend); - - return { - update(data: string) { - state = data; - }, - - destroy() { - node.removeEventListener('dragstart', handle_dragstart); - node.removeEventListener('dragend', handle_dragend); - } - }; -} - -export function dropzone( - node: HTMLElement, - options: { - dropEffect?: 'move' | 'none' | 'copy' | 'link'; - dragover_class?: string; - on_dropzone?: (data: string, e: DragEvent) => void; - } -) { - let state = { - dropEffect: 'move' as 'move' | 'none' | 'copy' | 'link', - dragover_class: 'droppable', - ...options - }; - - let dragCounter = 0; - - function handle_dragenter(e: DragEvent) { - e.preventDefault(); - dragCounter++; - - if (dragCounter === 1) { - node.classList.add(state.dragover_class); - } - } - - function handle_dragleave(e: DragEvent) { - dragCounter--; - - if (dragCounter === 0) { - // Only remove class when fully leaving - node.classList.remove(state.dragover_class); - } - } - - function handle_dragover(e: DragEvent) { - e.preventDefault(); - if (!e.dataTransfer) return; - e.dataTransfer.dropEffect = state.dropEffect; - } - - function handle_drop(e: DragEvent) { - e.preventDefault(); - e.stopPropagation(); - - dragCounter = 0; - node.classList.remove(state.dragover_class); - - if (!e.dataTransfer) return; - const data = e.dataTransfer.getData('text/plain'); - - if (typeof state.on_dropzone === 'function') { - state.on_dropzone(data, e); - } - } - - node.addEventListener('dragenter', handle_dragenter); - node.addEventListener('dragleave', handle_dragleave); - node.addEventListener('dragover', handle_dragover); - node.addEventListener('drop', handle_drop); - - return { - update(options: { - dropEffect?: 'move' | 'none' | 'copy' | 'link'; - dragover_class?: string; - on_dropzone?: (data: string, e: DragEvent) => void; - }) { - state = { - dropEffect: 'move', - dragover_class: 'droppable', - ...options - }; - }, - - destroy() { - node.removeEventListener('dragenter', handle_dragenter); - node.removeEventListener('dragleave', handle_dragleave); - node.removeEventListener('dragover', handle_dragover); - node.removeEventListener('drop', handle_drop); - } - }; -} diff --git a/new-web/src/lib/utils/http.ts b/new-web/src/lib/utils/http.ts deleted file mode 100644 index 6c5f8729..00000000 --- a/new-web/src/lib/utils/http.ts +++ /dev/null @@ -1,141 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import { api } from '$lib/api/common'; -import { APIResponseSchema, type APIResponse } from '$lib/types/common'; -import type { QueryFunctionContext } from '@sveltestack/svelte-query'; -import adze from 'adze'; -import { z } from 'zod/v4'; - -export async function apiRequest( - endpoint: string, - schema: T, - method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH', - body?: unknown -): Promise> { - try { - const config = { - method, - url: endpoint, - ...(body ? { data: body } : {}) - }; - - const response = await api.request({ ...config, validateStatus: () => true }); - const apiResponse = APIResponseSchema.safeParse(response.data); - - /* Couldn't parse response data into APIResponse so we'll just return the data? */ - if (!apiResponse.success) { - return apiResponse.data; - } - - /* Caller asked for a raw response */ - if (schema._def.description === 'APIResponseSchema') { - return apiResponse.data as z.infer; - } - - if (apiResponse.data.data) { - const parsedResult = schema.safeParse(apiResponse.data.data); - if (parsedResult.success) { - return parsedResult.data; - } else { - adze.withEmoji.warn('Zod Validation Error', parsedResult.error); - return getDefaultValue(schema, apiResponse.data); - } - } - - return getDefaultValue(schema, apiResponse.data); - } catch (error) { - adze.withEmoji.error('API Request Error', error); - return getDefaultValue(schema, { status: 'error' }); - } -} - -function getDefaultValue(schema: T, response: APIResponse): z.infer { - if (schema instanceof z.ZodArray) { - return [] as z.infer; - } - - if (schema instanceof z.ZodObject) { - return response as z.infer; - } - - return undefined as z.infer; -} - -type CacheEntry = { - timestamp: number; - data: T; -}; - -export async function cachedFetch( - key: string, - fetchFunction: (queryObj?: QueryFunctionContext) => Promise, - duration: number -): Promise { - const now = Date.now(); - const storedEntry = localStorage.getItem(key); - - if (storedEntry) { - try { - const entry: CacheEntry = JSON.parse(storedEntry); - if (now - entry.timestamp < duration) { - return entry.data; - } - } catch (error) { - console.error(`Failed to parse cached data for key "${key}"`, error); - } - } - - const data = await fetchFunction(); - const entry: CacheEntry = { timestamp: now, data }; - localStorage.setItem(key, JSON.stringify(entry)); - return data; -} - -export function getCache(key: string): T | null { - const storedEntry = localStorage.getItem(key); - if (storedEntry) { - try { - const entry: CacheEntry = JSON.parse(storedEntry); - return entry.data; - } catch (error) { - console.error(`Failed to parse cached data for key "${key}"`, error); - } - } - return null; -} - -export async function updateCache(key: string, obj: T): Promise { - const now = Date.now(); - const storedEntry = localStorage.getItem(key); - - if (storedEntry) { - try { - const entry: CacheEntry = JSON.parse(storedEntry); - entry.data = obj; - entry.timestamp = now; - localStorage.setItem(key, JSON.stringify(entry)); - } catch (error) { - console.error(`Failed to parse cached data for key "${key}"`, error); - } - } -} - -export function isAPIResponse(obj: any): obj is APIResponse { - return ( - obj && - typeof obj.status === 'string' && - (typeof obj.message === 'string' || typeof obj.error === 'string') - ); -} - -export function handleAPIError(result: APIResponse): void { - adze.withEmoji.error('API Error', result); -} diff --git a/new-web/src/lib/utils/i18n.ts b/new-web/src/lib/utils/i18n.ts deleted file mode 100644 index f497ea30..00000000 --- a/new-web/src/lib/utils/i18n.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -// import en from '$lib/locale/en.json'; -// import mal from '$lib/locale/mal.json'; - -// addMessages('en', en); -// addMessages('mal', mal); - -let savedLang: string = 'en'; - -if (typeof window !== 'undefined') { - const stored = window.localStorage.getItem('language'); - try { - const parsed = JSON.parse(stored || ''); - savedLang = parsed.value; - } catch (e) { - savedLang = 'en'; - } -} diff --git a/new-web/src/lib/utils/icons.ts b/new-web/src/lib/utils/icons.ts deleted file mode 100644 index 88b71701..00000000 --- a/new-web/src/lib/utils/icons.ts +++ /dev/null @@ -1,57 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import { getIcon, loadIcon } from '@iconify/svelte'; - -export const iconCache: Record = {}; -const icons = [ - 'carbon:ibm-cloud-vpc-block-storage-snapshots', - 'material-symbols:files', - 'carbon:volume-block-storage', - 'bi:hdd-stack-fill', - 'mdi:harddisk', - 'bi:nvme', - 'icon-park-outline:ssd', - 'ant-design:partition-outlined', - 'mdi:magnet', - 'mdi:download', - 'mdi:internet', - 'mdi:file', - 'mingcute:file-fill', - 'line-md:downloading-loop', - 'lets-icons:check-fill', - 'material-symbols-light:private-connectivity-outline', - 'material-symbols:public', - 'clarity:network-switch-line', - 'ic:baseline-loop', - 'mdi:ethernet', - 'eos-icons:three-dots-loading', - 'wpf:connected', - 'tdesign:cd-filled', - 'clarity:hard-disk-solid', - 'file-icons:openzfs', - 'carbon:volume-block-storage' -]; - -export async function preloadIcons() { - for (const icon of icons) { - await loadIcon(icon); - const i = getIcon(icon); - if (i) { - const { body, width, height, left, top } = i; - const viewBox = `${left} ${top} ${width} ${height}`; - iconCache[icon] = ` - - ${body} - - `.trim(); - } - } -} diff --git a/new-web/src/lib/utils/info/notes.ts b/new-web/src/lib/utils/info/notes.ts deleted file mode 100644 index 1e5f7cdf..00000000 --- a/new-web/src/lib/utils/info/notes.ts +++ /dev/null @@ -1,56 +0,0 @@ -import type { Column, Row } from '$lib/types/components/tree-table'; -import type { Note } from '$lib/types/info/notes'; - -export function generateTableData( - columns: Column[], - notes: Note[] -): { rows: Row[]; columns: Column[] } { - const rows: Row[] = []; - - for (const note of notes) { - const row: Row = { - id: note.id, - name: note.title, - createdAt: note.createdAt, - updatedAt: note.updatedAt - }; - - rows.push(row); - } - - return { - rows: rows, - columns: columns - }; -} - -export function markdownToTailwindHTML(markdown: string): string { - let html = markdown - // Headings - .replace(/^### (.*$)/gim, '

    $1

    ') - .replace(/^## (.*$)/gim, '

    $1

    ') - .replace(/^# (.*$)/gim, '

    $1

    ') - - // Bold - .replace(/\*\*(.*?)\*\*/gim, '$1') - - // Italic - .replace(/\*(.*?)\*/gim, '$1') - - // Links - .replace( - /\[([^\]]+)]\(([^)]+)\)/gim, - '$1' - ) - - // Paragraphs - .replace( - /^\s*(?!<(h[1-3]|ul|ol|li|p|blockquote|pre|code|img|a|strong|em)).+$/gim, - '

    $&

    ' - ) - - // Line breaks - .replace(/\n/g, ''); - - return html.trim(); -} diff --git a/new-web/src/lib/utils/input.ts b/new-web/src/lib/utils/input.ts deleted file mode 100644 index 66f5cda5..00000000 --- a/new-web/src/lib/utils/input.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -export function generateComboboxOptions(values: string[], additional?: string[]) { - const combined = [...values, ...(additional ?? [])]; - return combined.map((option) => ({ - label: option, - value: option - })); -} diff --git a/new-web/src/lib/utils/keyboard-shortcuts.ts b/new-web/src/lib/utils/keyboard-shortcuts.ts deleted file mode 100644 index cfc7b3cb..00000000 --- a/new-web/src/lib/utils/keyboard-shortcuts.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import { logOut } from '$lib/api/auth'; -import { toggleMode } from 'mode-watcher'; - -export interface KeyboardTrigger { - key: string; - modifier: string[][]; - callback: () => void; - onshortcut?: () => void; -} - -export const triggers: KeyboardTrigger[] = [ - { - key: 'l', - modifier: [ - ['ctrl', 'alt'], - ['meta', 'alt'] - ], - callback: () => { - logOut(); - } - }, - { - key: 't', - modifier: [ - ['ctrl', 'alt'], - ['meta', 'alt'] - ], - callback: () => { - toggleMode(); - } - } -]; diff --git a/new-web/src/lib/utils/network/iface.ts b/new-web/src/lib/utils/network/iface.ts deleted file mode 100644 index cec8a7b8..00000000 --- a/new-web/src/lib/utils/network/iface.ts +++ /dev/null @@ -1,116 +0,0 @@ -import type { Column, Row } from '$lib/types/components/tree-table'; -import type { Iface } from '$lib/types/network/iface'; -import { generateNumberFromString } from '../numbers'; - -export function generateTableData( - columns: Column[], - interfaces: Iface[] -): { - rows: Row[]; - columns: Column[]; -} { - const rows: Row[] = []; - for (const iface of interfaces) { - let isBridge = false; - if (iface.groups) { - if (iface.groups.includes('bridge')) { - isBridge = true; - iface.model = 'Bridge'; - } - } - - // TODO: Skip sylve created VLANs for now - if (iface.description.startsWith('svm-vlan')) { - continue; - } - - const row: Row = { - id: generateNumberFromString(iface.ether + iface.name), - ether: iface.ether, - name: iface.name, - model: iface.model, - description: iface.description, - metric: iface.metric, - mtu: iface.mtu, - media: iface.media, - isBridge: isBridge - }; - - rows.push(row); - } - - return { - rows, - columns: columns - }; -} - -type CleanIfaceData = { - Name: string; - Description: string; - Model: string; - 'MAC Address': string; - MTU: number | null | undefined; - Metric: number | null | undefined; - Flags: { - Raw: number; - Description: string; - }; - 'Enabled Capabilities': { - Raw: number; - Description: string; - }; - 'Supported Capabilities': { - Raw: number; - Description: string; - }; - 'Media Options'?: { - Status: string; - Type: string; - 'Sub Type': string; - Mode: string; - Options: string; - }; -}; - -export function getCleanIfaceData(iface: Iface): CleanIfaceData { - if (iface.groups) { - if (iface.groups.includes('bridge')) { - iface.model = 'Bridge'; - iface.name = `${iface.description} (${iface.name})`; - } - } - - const obj: CleanIfaceData = { - ['Name']: iface.name, - ['Description']: iface.description || '-', - ['Model']: iface.model ? iface.model : '-', - ['MAC Address']: iface.ether || '-', - ['MTU']: iface.mtu, - ['Metric']: iface.metric, - ['Flags']: { - ['Raw']: iface.flags.raw, - ['Description']: iface.flags.desc?.join(', ') || '-' - }, - ['Enabled Capabilities']: { - ['Raw']: iface.capabilities.enabled.raw, - ['Description']: iface.capabilities.enabled.desc?.join(', ') || '-' - }, - ['Supported Capabilities']: { - ['Raw']: iface.capabilities.supported.raw, - ['Description']: iface.capabilities.supported.desc?.join(', ') || '-' - } - }; - - if (iface.media !== null && iface.media !== undefined) { - obj['Media Options'] = { - ['Status']: iface.media.status, - ['Type']: iface.media.type, - ['Sub Type']: iface.media.subtype, - ['Mode']: iface.media.mode, - ['Options']: iface.media.options ? iface.media.options?.join(', ') || '-' : '-' - }; - } - - return obj; -} diff --git a/new-web/src/lib/utils/network/switch.ts b/new-web/src/lib/utils/network/switch.ts deleted file mode 100644 index 20781a1e..00000000 --- a/new-web/src/lib/utils/network/switch.ts +++ /dev/null @@ -1,125 +0,0 @@ -import type { Column, Row } from '$lib/types/components/tree-table'; -import type { SwitchList } from '$lib/types/network/switch'; -import type { CellComponent } from 'tabulator-tables'; -import { renderWithIcon } from '../table'; - -export function generateTableData( - switches: SwitchList | undefined, - type: 'standard' = 'standard' -): { - rows: Row[]; - columns: Column[]; -} { - const columns: Column[] = [ - { - field: 'id', - visible: false, - title: 'ID' - }, - { - field: 'name', - title: 'Name', - formatter(cell: CellComponent) { - const value = cell.getValue(); - const row = cell.getRow(); - const data = row.getData(); - const pSw = data.private || false; - - if (pSw) { - return renderWithIcon('material-symbols-light:private-connectivity-outline', value); - } - - return renderWithIcon('material-symbols:public', value); - } - }, - { - field: 'ports', - title: 'Ports', - formatter: (cell: CellComponent) => { - const value = cell.getValue(); - if (value && Array.isArray(value) && value.length > 0) { - return value.map((port) => `${port.name}`).join(', '); - } - - return '-'; - } - }, - { - field: 'mtu', - title: 'MTU' - }, - { - field: 'vlan', - title: 'VLAN' - }, - { - field: 'ipv4', - title: 'IPv4', - formatter: (cell: CellComponent) => { - const row = cell.getRow(); - const data = row.getData(); - const value = cell.getValue(); - if (value === '-' && data.dhcp) { - return 'DHCP'; - } - - return value || '-'; - } - }, - { - field: 'ipv6', - title: 'IPv6' - }, - { - field: 'private', - title: 'Private', - visible: false - }, - { - field: 'dhcp', - title: 'DHCP', - visible: false - }, - { - field: 'disableIPv6', - title: 'Disable IPv6', - visible: false - }, - { - field: 'slaac', - title: 'SLAAC', - visible: false - } - ]; - - const rows: Row[] = []; - - if (switches && switches[type]) { - for (const sw of switches[type]) { - const portsOnly = - sw.ports?.map((port) => { - return port.name; - }) || []; - - rows.push({ - id: sw.id, - name: sw.name, - mtu: sw.mtu, - vlan: sw.vlan || '-', - ipv4: sw.address || '-', - ipv6: sw.address6 || '-', - ports: sw.ports, - private: sw.private, - portsOnly: portsOnly, - dhcp: sw.dhcp || false, - disableIPv6: sw.disableIPv6 || false, - slaac: sw.slaac || false - }); - } - } - - return { - rows: rows, - columns: columns - }; -} diff --git a/new-web/src/lib/utils/numbers.ts b/new-web/src/lib/utils/numbers.ts deleted file mode 100644 index ceabdfa8..00000000 --- a/new-web/src/lib/utils/numbers.ts +++ /dev/null @@ -1,95 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import humanFormat from 'human-format'; - -export function floatToNDecimals(value: number | undefined, n: number): number { - if (!value) return 0.0; - return parseFloat(value.toFixed(n)); -} - -export function bytesToHumanReadable(value: number | undefined): string { - if (!value) return '0 B'; - return humanFormat(value, { unit: 'B' }); -} - -export function parseQuotaToZFSBytes(input: string): string { - if (!input || input.trim() === '') return '0B'; - - try { - const parsed = humanFormat.parse(input); - - if (parsed === null || isNaN(parsed)) { - throw new Error('Invalid quota format'); - } - - return `${parsed}B`; - } catch (e) { - console.error(`Failed to parse quota "${input}":`, e); - return '0B'; - } -} - -export function generateNumberFromString(str: string): number { - let hash = 0x811c9dc5; - for (let i = 0; i < str.length; i++) { - hash ^= str.charCodeAt(i); - hash = Math.imul(hash, 0x01000193); - } - return hash >>> 0; -} - -export function isValidSize(value: string): boolean { - try { - const parsed = humanFormat.parse(value); - return parsed !== null && !isNaN(parsed); - } catch (e) { - return false; - } -} - -export function parseFlexibleTimeToSeconds(input: string) { - if (!input || typeof input !== 'string') return -1; - - const parts = input.split(':').map(Number); - if (parts.some(isNaN)) return -1; - - while (parts.length < 6) { - parts.unshift(0); - } - - const [years, months, days, hours, minutes, seconds] = parts.slice(-6); - - if ( - seconds < 0 || - seconds >= 60 || - minutes < 0 || - minutes >= 60 || - hours < 0 || - hours >= 24 || - days < 0 || - days >= 31 || - months < 0 || - months >= 12 - ) { - return -1; - } - - const totalDays = years * 365 + months * 30 + days; - return totalDays * 86400 + hours * 3600 + minutes * 60 + seconds; -} - -export function isValidMTU(mtu: number): boolean { - return mtu >= 68 && mtu <= 65535; -} - -export function isValidVLAN(vlan: number): boolean { - return vlan >= 0 && vlan <= 4095; -} diff --git a/new-web/src/lib/utils/obj.ts b/new-web/src/lib/utils/obj.ts deleted file mode 100644 index 7f839448..00000000 --- a/new-web/src/lib/utils/obj.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -export function deepDiff( - obj1: Record, - obj2: Record, - path = '' -): { path: string; from: any; to: any }[] { - const changes = []; - - for (const key of new Set([...Object.keys(obj1 || {}), ...Object.keys(obj2 || {})])) { - const fullPath = path ? `${path}.${key}` : key; - const val1 = obj1?.[key]; - const val2 = obj2?.[key]; - - if (typeof val1 === 'object' && typeof val2 === 'object' && val1 && val2) { - changes.push(...deepDiff(val1, val2, fullPath)); - } else if (val1 !== val2) { - changes.push({ path: fullPath, from: val1, to: val2 }); - } - } - - return changes; -} - -export function findValue(value: unknown, object: Record): boolean { - if (typeof value === 'object' && value !== null) { - return Object.keys(object).some((key) => object[key] === value); - } - return Object.values(object).some((val) => val === value); -} diff --git a/new-web/src/lib/utils/string.ts b/new-web/src/lib/utils/string.ts deleted file mode 100644 index 5ae4e596..00000000 --- a/new-web/src/lib/utils/string.ts +++ /dev/null @@ -1,164 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import { getIcon, loadIcon } from '@iconify/svelte'; -import isCidr from 'is-cidr'; -import { isIP, isIPv4 } from 'is-ip'; -import { customRandom, nanoid } from 'nanoid'; -import isMACAddress from 'validator/lib/isMACAddress'; -import isURL from 'validator/lib/isURL'; -import { Mnemonic } from './vendor/mnemonic'; - -export function capitalizeFirstLetter(str: string, firstOnly: boolean = false): string { - if (firstOnly) { - return str.charAt(0).toLocaleUpperCase() + str.slice(1); - } - - return str - .split(' ') - .map((word) => word.charAt(0).toLocaleUpperCase() + word.slice(1)) - .join(' '); -} - -export function parseJwt(token: string) { - let base64Url = token.split('.')[1]; - let base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); - let jsonPayload = decodeURIComponent( - window - .atob(base64) - .split('') - .map(function (c) { - return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); - }) - .join('') - ); - - return JSON.parse(jsonPayload); -} - -export function shortenString(str: string, maxLength: number): string { - if (str.length <= maxLength) return str; - return str.slice(0, maxLength) + '...'; -} - -export function generatePassword(): string { - return new Mnemonic().toWords().slice(0, 6).join('-'); -} - -export async function iconToSVG(icon: string): Promise { - await loadIcon(icon); - const i = getIcon(icon); - if (i) { - const { body, width, height, left, top } = i; - const viewBox = `${left} ${top} ${width} ${height}`; - const svg = `${body}`; - return svg; - } - - return ''; // Ensure the function always returns a string -} - -function seedRandom(seed: string): () => number { - let h = 2166136261 >>> 0; - for (let i = 0; i < seed.length; i++) { - h ^= seed.charCodeAt(i); - h = Math.imul(h, 16777619); - } - let state = h; - - return function () { - state = (state * 1664525 + 1013904223) >>> 0; - return (state >>> 0) / 4294967296; - }; -} - -export function generateNanoId(seed?: string): string { - if (seed) { - const rng = seedRandom(seed); - const customNanoId = customRandom('abcdefghijklmnopqrstuvwxyz', 10, (size) => { - return new Uint8Array(size).map(() => 256 * rng()); - }); - - return customNanoId(); - } - - return nanoid(10); -} - -export function isValidSwitchName(name: string): boolean { - const regex = /^[a-zA-Z0-9-_]+$/; - return regex.test(name); -} - -export function isValidIPv4(ip: string, cidr: boolean = false): boolean { - try { - if (cidr && isCidr.v4(ip)) { - return true; - } - - if (!cidr && isIPv4(ip)) { - return true; - } - - return false; - } catch (e) { - console.log(e); - return false; - } -} - -export function isValidIPv6(ip: string, cidr: boolean = false): boolean { - try { - if (cidr && isCidr.v6(ip)) { - return true; - } - - if (!cidr && isIP(ip)) { - return true; - } - - return false; - } catch (e) { - console.log(e); - return false; - } -} - -export function isDownloadURL(url: string): boolean { - const urlOpts = { - protocols: ['http', 'https'], - require_protocol: true, - require_valid_protocol: true, - require_host: true, - allow_underscores: false, - allow_fragments: false, - allow_query_components: true - }; - - if (!isURL(url, urlOpts)) { - return false; - } - - try { - const { pathname } = new URL(url); - return /\/[^\/]+\.[^\/]+$/.test(pathname); - } catch { - return false; - } -} - -export function isValidVMName(name: string): boolean { - const regex = /^[a-zA-Z0-9-_]+$/; - return regex.test(name); -} - -export function isValidMACAddress(mac: string): boolean { - return isMACAddress(mac, { no_colons: false }); -} diff --git a/new-web/src/lib/utils/system/pci.ts b/new-web/src/lib/utils/system/pci.ts deleted file mode 100644 index db2a6775..00000000 --- a/new-web/src/lib/utils/system/pci.ts +++ /dev/null @@ -1,158 +0,0 @@ -import type { Column, Row } from '$lib/types/components/tree-table'; -import type { PCIDevice, PPTDevice } from '$lib/types/system/pci'; -import type { CellComponent } from 'tabulator-tables'; -import { generateNumberFromString } from '../numbers'; -import { renderWithIcon } from '../table'; - -function getPassthroughStatus(device: PCIDevice, pptDevices: PPTDevice[]): string { - if (device.name.startsWith('ppt')) { - const id = `${device.bus}/${device.device}/${device['function']}`; - if (pptDevices.some((ppt) => ppt.deviceID === id)) { - return 'passed-through-in-db'; - } else { - return 'passed-through-not-in-db'; - } - } - - // Handle a case where the device is in DB but not having a corresponding ppt device - - return 'not-passed-through'; -} - -export function generateTableData( - pciDevices: PCIDevice[], - pptDevices: PPTDevice[] -): { - rows: Row[]; - columns: Column[]; -} { - const rows: Row[] = []; - const columns: Column[] = [ - { - field: 'status', - title: 'Status', - visible: false - }, - { - field: 'id', - title: 'ID', - visible: false - }, - { - field: 'name', - title: 'Name', - visible: false - }, - { - field: 'device', - title: 'Device', - visible: true, - formatter: (cell: CellComponent) => { - const data = cell.getData(); - const device = data.device || '-'; - const status = data.status || 'not-passed-through'; - if (status === 'not-passed-through') { - return renderWithIcon( - 'wpf:connected', - device, - 'text-green-500', - 'This device is connected to the host' - ); - } else if (status === 'passed-through-in-db') { - return renderWithIcon( - 'wpf:connected', - device, - 'text-blue-500', - 'This device is ready for passthrough' - ); - } else if (status === 'passed-through-not-in-db') { - return renderWithIcon( - 'wpf:connected', - device, - 'text-yellow-500', - 'This device state is not quite right, please check configuration in /boot/loader.conf' - ); - } - - return device; - } - }, - { - field: 'vendor', - title: 'Vendor', - visible: true - }, - { - field: 'class', - title: 'Class', - visible: true - }, - { - field: 'subclass', - title: 'Subclass', - visible: true - }, - { - field: 'domain', - title: 'Domain', - visible: false - }, - { - field: 'deviceId', - title: 'Device ID', - visible: false - }, - { - field: 'pptId', - title: 'PPT ID', - visible: false - } - ]; - - for (const device of pciDevices) { - const id = generateNumberFromString( - device.name + - device.bus + - (device.class || '') + - (device.device || '') + - (device['function'] || '') + - (device.vendor || '') - ); - - const deviceId = `${device.bus}/${device.device}/${device['function']}`; - - let pptId = ''; - if (device.name.startsWith('ppt')) { - const pptDevice = pptDevices.find((ppt) => ppt.deviceID === deviceId); - pptId = pptDevice ? pptDevice.id.toString() : ''; - } - - rows.push({ - status: getPassthroughStatus(device, pptDevices), - id: id, - name: device.name || '-', - device: device.names.device || '-', - vendor: device.names.vendor || '-', - class: device.names.class || '-', - subclass: device.names.subclass || '-', - domain: device.domain, - deviceId, - pptId: pptId - }); - } - - return { - rows: rows, - columns: columns - }; -} - -export function getPCIDeviceId(device: PCIDevice): string { - return `pci${device.domain}:${device.bus}:${device.device}:${device['function']}`; -} - -export function getPPTDeviceId(device: PCIDevice, pptDevices: PPTDevice[]): number { - const id = `${device.bus}/${device.device}/${device['function']}`; - const pptDevice = pptDevices.find((ppt) => ppt.deviceID === id); - return pptDevice?.id || 0; -} diff --git a/new-web/src/lib/utils/table.ts b/new-web/src/lib/utils/table.ts deleted file mode 100644 index 5da7d029..00000000 --- a/new-web/src/lib/utils/table.ts +++ /dev/null @@ -1,175 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import type { Row } from '$lib/types/components/tree-table'; -import humanFormat, { type ScaleLike } from 'human-format'; -import { - TabulatorFull, - type CellComponent, - type RowComponent, - type Tabulator -} from 'tabulator-tables'; -import { iconCache } from './icons'; - -export function deselectAllRows(table: Tabulator | null) { - if (table) { - table.getRows().forEach((row) => { - console.log(row); - row.deselect(); - }); - } -} - -export function selectOneRow(table: Tabulator | null, row: RowComponent) { - if (table) { - deselectAllRows(table); - row.select(); - } -} - -export function getTable(id: string): Tabulator | null { - const table = TabulatorFull.findTable(`#${id}`); - if (table) { - return table[0]; - } - - return null; -} - -export function deleteRowByFieldValue(tableId: string, field: string, value: string | number) { - try { - const table = getTable(tableId); - if (table) { - const rows = table.getRows(); - for (const row of rows) { - if (row.getData()[field] === value) { - row.delete(); - } - - if (row.getData()['children']) { - if (Array.isArray(row.getData()['children'])) { - const children = row.getData()['children']; - for (const child of children) { - if (child[field] === value) { - row.delete(); - } - } - } - } - } - } - } catch (error) { - console.error('Error deleting row:', error); - } -} - -export const renderWithIcon = ( - iconKey: string, - suffix: string, - extraClass?: string, - title?: string -) => { - const icon = iconCache[iconKey] || ''; - return ` - - ${icon} - ${suffix} - - `.trim(); -}; - -export function sizeFormatter(cell: CellComponent) { - try { - const sizeOptions = { - scale: 'binary' as ScaleLike, - unit: 'B', - maxDecimals: 1 - }; - - return humanFormat(cell.getValue(), sizeOptions); - } catch (e) { - return cell.getValue(); - } -} - -export function addTabulatorFilters() { - TabulatorFull.extendModule('filter', 'filters', { - matchAny - }); -} - -export function matchAny(data: any, filterParams: any): boolean { - const query = filterParams.query?.toString().toLowerCase(); - if (!query) return false; - - function recursiveMatch(obj: any): boolean { - for (let key in obj) { - const value = obj[key]; - - if (value == null) continue; - - if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') { - if (value.toString().toLowerCase().includes(query)) { - return true; - } - } - - if (key === 'children' && Array.isArray(value)) { - for (const child of value) { - if (recursiveMatch(child)) return true; - } - } - - if (typeof value === 'object' && key !== 'children') { - if (recursiveMatch(value)) return true; - } - } - return false; - } - - return recursiveMatch(data); -} - -function cleanChildren(row: any): any { - if (Array.isArray(row.children)) { - row.children = row.children.map(cleanChildren); - row.children = row.children.filter((child: null) => child != null); - - if (row.children.length === 0) { - delete row.children; - } - } else { - delete row.children; - } - - return row; -} - -export function hasRowsChanged(table: Tabulator | null, newData: Row[]): boolean { - if (!table) { - return true; - } - - const currentData = table.getData(); - if (currentData.length !== newData.length) { - return true; - } - - for (let i = 0; i < currentData.length; i++) { - const currentRow = cleanChildren({ ...currentData[i] }); - const newRow = cleanChildren({ ...newData[i] }); - - if (JSON.stringify(currentRow) !== JSON.stringify(newRow)) { - return true; - } - } - - return false; -} diff --git a/new-web/src/lib/utils/time.ts b/new-web/src/lib/utils/time.ts deleted file mode 100644 index 24b1a3a6..00000000 --- a/new-web/src/lib/utils/time.ts +++ /dev/null @@ -1,91 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import { format, formatDistance, formatRelative, fromUnixTime, parseISO, subDays } from 'date-fns'; -import { formatInTimeZone } from 'date-fns-tz'; - -/** - * Converts a Unix timestamp (in seconds) to a human-readable "X time ago" string - * - * @param seconds - Unix timestamp in seconds since epoch - * @returns Formatted time ago string (e.g., "9 hours ago") - */ -export function secondsToHoursAgo(seconds: number | undefined): string { - if (!seconds) return 'Unknown'; - - // If the value is small (like 32893), it's likely seconds of uptime rather than a Unix timestamp - if (seconds < 86400 * 365) { - // Less than a year in seconds - // Convert uptime seconds to a date by subtracting from now - const uptimeDate = new Date(Date.now() - seconds * 1000); - return formatDistance(uptimeDate, new Date(), { addSuffix: true }); - } - - // Otherwise treat as a Unix timestamp - return formatDistance(fromUnixTime(seconds), new Date(), { addSuffix: true }); -} - -export function dateToAgo(date: Date | string): string { - if (typeof date === 'string' && date.length > 4 && parseInt(date.substring(0, 4)) < 1999) { - return 'Never'; - } - - if (typeof date === 'string') { - date = parseISO(date); - } - - const now = new Date(); - const diff = Math.abs(now.getTime() - date.getTime()); - - if (diff < 1000 * 60) { - return 'Just now'; - } else if (diff < 1000 * 60 * 60) { - return formatDistance(date, now, { addSuffix: true }); - } else if (diff < 1000 * 60 * 60 * 24) { - return formatDistance(date, now, { addSuffix: true }); - } else { - return format(date, 'MMM dd, yyyy'); - } -} - -export function convertDbTime(time: string): string { - try { - const userTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone; - const date = new Date(time); - const zonedDate = formatInTimeZone(date, userTimeZone, 'yyyy-MM-dd hh:mm a'); - - return zonedDate; - } catch (e) { - return time; - } -} - -export function formatUptime(seconds: number): string { - const units = [ - { label: 'y', secs: 12 * 30 * 24 * 60 * 60 }, - { label: 'mo', secs: 30 * 24 * 60 * 60 }, - { label: 'd', secs: 24 * 60 * 60 }, - { label: 'h', secs: 60 * 60 }, - { label: 'm', secs: 60 }, - { label: 's', secs: 1 } - ]; - - const parts = []; - - for (const { label, secs } of units) { - if (seconds >= secs) { - const val = Math.floor(seconds / secs); - seconds %= secs; - parts.push(`${val}${label}`); - } - } - - return parts.length ? parts.join(' ') : '0s'; -} diff --git a/new-web/src/lib/utils/tree-table.ts b/new-web/src/lib/utils/tree-table.ts deleted file mode 100644 index 83fe6cf3..00000000 --- a/new-web/src/lib/utils/tree-table.ts +++ /dev/null @@ -1,75 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import type { Row } from '$lib/types/components/tree-table'; -import type { RowComponent } from 'tabulator-tables'; - -export function cleanChildren(row: Row): Row { - let newRow = { ...row }; - - if (Array.isArray(newRow.children)) { - let cleanedChildren = newRow.children.map(cleanChildren).filter(Boolean); - - if (cleanedChildren.length > 0) { - newRow.children = cleanedChildren; - } else { - delete newRow.children; - } - } - - return newRow; -} - -export function pruneEmptyChildren(rows: Row[]): Row[] { - return rows.map((row) => { - const hasValidChildren = Array.isArray(row.children) && row.children.length > 0; - - const cleanedRow: Row = { - ...row, - ...(hasValidChildren - ? { - children: pruneEmptyChildren(row.children!) - } - : { children: undefined }) - }; - - return cleanedRow; - }); -} - -export function findRow(rows: RowComponent[], id: number): RowComponent | undefined { - for (const row of rows) { - if (row.getData().id === id) return row; - const children = row.getTreeChildren(); - if (children.length > 0) { - const found = findRow(children, id); - if (found) return found; - } - } - return undefined; -} - -export function getAllRows(rows: RowComponent[]): RowComponent[] { - try { - let allRows: RowComponent[] = []; - - for (const row of rows) { - allRows.push(row); - const children = row.getTreeChildren(); - if (children.length > 0) { - allRows = allRows.concat(getAllRows(children)); - } - } - - return allRows; - } catch (e) { - return []; - } -} diff --git a/new-web/src/lib/utils/utilities/downloader.ts b/new-web/src/lib/utils/utilities/downloader.ts deleted file mode 100644 index 0205279f..00000000 --- a/new-web/src/lib/utils/utilities/downloader.ts +++ /dev/null @@ -1,146 +0,0 @@ -import type { Column, Row } from '$lib/types/components/tree-table'; -import type { Download } from '$lib/types/utilities/downloader'; -import humanFormat from 'human-format'; -import type { CellComponent } from 'tabulator-tables'; -import { generateNumberFromString } from '../numbers'; -import { renderWithIcon } from '../table'; - -export function generateTableData(data: Download[]): { rows: Row[]; columns: Column[] } { - const columns: Column[] = [ - { - field: 'id', - title: 'ID', - visible: false - }, - { - field: 'uuid', - title: 'UUID', - visible: false - }, - { - field: 'name', - title: 'Name', - formatter: (cell: CellComponent) => { - const value = cell.getValue(); - const row = cell.getRow(); - const data = row.getData(); - if (data.type !== '-') { - if (data.type === 'torrent') { - return renderWithIcon('mdi:magnet', value); - } else if (data.type === 'http') { - return renderWithIcon('mdi:internet', value); - } else { - return renderWithIcon('mdi:file', value); - } - } - - return renderWithIcon('mdi:file', value); - } - }, - { - field: 'size', - title: 'Size', - formatter: (cell: CellComponent) => { - const value = cell.getValue(); - - if (value === 0 || value === '0') { - return renderWithIcon('eos-icons:three-dots-loading', ''); - } - - return humanFormat(value); - } - }, - { - field: 'type', - title: 'Type', - visible: false - }, - { - field: 'progress', - title: 'Progress', - formatter: (cell: CellComponent) => { - const value = cell.getValue(); - - if (value === '-') { - return '-'; - } - - if (value >= 0 && value < 100) { - return renderWithIcon('line-md:downloading-loop', `${value} %`); - } - - return renderWithIcon('lets-icons:check-fill', '100 %'); - } - }, - { - field: 'parentUUID', - title: 'Parent UUID', - visible: false - } - ]; - - const rows: Row[] = []; - - for (const download of data) { - const row: Row = { - id: download.id, - uuid: download.uuid, - name: download.name, - size: download.size, - type: download.type, - progress: download.progress, - children: [] - }; - - for (const file of download.files) { - const childRow: Row = { - id: generateNumberFromString(file.id + 'file'), - uuid: '-', - name: file.name, - size: file.size, - type: '-', - children: [], - progress: '-', - parentUUID: download.uuid - }; - - row.children?.push(childRow); - } - - rows.push(row); - } - - console.log(rows); - - return { - rows: rows, - columns: columns - }; -} - -export function getISOs( - downloads: Download[], - includeImg: boolean = false -): { label: string; value: string }[] { - const options: { label: string; value: string }[] = []; - - for (const download of downloads || []) { - if (download.progress !== 100) continue; - - const addIfMatch = (name: string) => { - if (name.endsWith('.iso') || (includeImg && name.endsWith('.img'))) { - options.push({ label: name, value: download.uuid }); - } - }; - - if (download.type === 'http') { - addIfMatch(download.name); - } else if (download.type === 'torrent' && Array.isArray(download.files)) { - for (const file of download.files) { - addIfMatch(file.name); - } - } - } - - return options; -} diff --git a/new-web/src/lib/utils/vendor/mnemonic.ts b/new-web/src/lib/utils/vendor/mnemonic.ts deleted file mode 100644 index 0a2abe69..00000000 --- a/new-web/src/lib/utils/vendor/mnemonic.ts +++ /dev/null @@ -1,1730 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -// Mnemonic.ts v.2.0.0 (Browser-only, TypeScript rewrite) -// (c) 2025 Adapted from Yiorgis Gozadinos, Crypho AS (MIT License) - -type WordList = string[]; - -export class Mnemonic { - private seed: Uint32Array; - static words: WordList = [ - 'like', - 'just', - 'love', - 'know', - 'never', - 'want', - 'time', - 'out', - 'there', - 'make', - 'look', - 'eye', - 'down', - 'only', - 'think', - 'heart', - 'back', - 'then', - 'into', - 'about', - 'more', - 'away', - 'still', - 'them', - 'take', - 'thing', - 'even', - 'through', - 'long', - 'always', - 'world', - 'too', - 'friend', - 'tell', - 'try', - 'hand', - 'thought', - 'over', - 'here', - 'other', - 'need', - 'smile', - 'again', - 'much', - 'cry', - 'been', - 'night', - 'ever', - 'little', - 'said', - 'end', - 'some', - 'those', - 'around', - 'mind', - 'people', - 'girl', - 'leave', - 'dream', - 'left', - 'turn', - 'myself', - 'give', - 'nothing', - 'really', - 'off', - 'before', - 'something', - 'find', - 'walk', - 'wish', - 'good', - 'once', - 'place', - 'ask', - 'stop', - 'keep', - 'watch', - 'seem', - 'everything', - 'wait', - 'got', - 'yet', - 'made', - 'remember', - 'start', - 'alone', - 'run', - 'hope', - 'maybe', - 'believe', - 'body', - 'hate', - 'after', - 'close', - 'talk', - 'stand', - 'own', - 'each', - 'hurt', - 'help', - 'home', - 'god', - 'soul', - 'new', - 'many', - 'two', - 'inside', - 'should', - 'true', - 'first', - 'fear', - 'mean', - 'better', - 'play', - 'another', - 'gone', - 'change', - 'use', - 'wonder', - 'someone', - 'hair', - 'cold', - 'open', - 'best', - 'any', - 'behind', - 'happen', - 'water', - 'dark', - 'laugh', - 'stay', - 'forever', - 'name', - 'work', - 'show', - 'sky', - 'break', - 'came', - 'deep', - 'door', - 'put', - 'black', - 'together', - 'upon', - 'happy', - 'such', - 'great', - 'white', - 'matter', - 'fill', - 'past', - 'please', - 'burn', - 'cause', - 'enough', - 'touch', - 'moment', - 'soon', - 'voice', - 'scream', - 'anything', - 'stare', - 'sound', - 'red', - 'everyone', - 'hide', - 'kiss', - 'truth', - 'death', - 'beautiful', - 'mine', - 'blood', - 'broken', - 'very', - 'pass', - 'next', - 'forget', - 'tree', - 'wrong', - 'air', - 'mother', - 'understand', - 'lip', - 'hit', - 'wall', - 'memory', - 'sleep', - 'free', - 'high', - 'realize', - 'school', - 'might', - 'skin', - 'sweet', - 'perfect', - 'blue', - 'kill', - 'breath', - 'dance', - 'against', - 'fly', - 'between', - 'grow', - 'strong', - 'under', - 'listen', - 'bring', - 'sometimes', - 'speak', - 'pull', - 'person', - 'become', - 'family', - 'begin', - 'ground', - 'real', - 'small', - 'father', - 'sure', - 'feet', - 'rest', - 'young', - 'finally', - 'land', - 'across', - 'today', - 'different', - 'guy', - 'line', - 'fire', - 'reason', - 'reach', - 'second', - 'slowly', - 'write', - 'eat', - 'smell', - 'mouth', - 'step', - 'learn', - 'three', - 'floor', - 'promise', - 'breathe', - 'darkness', - 'push', - 'earth', - 'guess', - 'save', - 'song', - 'above', - 'along', - 'both', - 'color', - 'house', - 'almost', - 'sorry', - 'anymore', - 'brother', - 'okay', - 'dear', - 'game', - 'fade', - 'already', - 'apart', - 'warm', - 'beauty', - 'heard', - 'notice', - 'question', - 'shine', - 'began', - 'piece', - 'whole', - 'shadow', - 'secret', - 'street', - 'within', - 'finger', - 'point', - 'morning', - 'whisper', - 'child', - 'moon', - 'green', - 'story', - 'glass', - 'kid', - 'silence', - 'since', - 'soft', - 'yourself', - 'empty', - 'shall', - 'angel', - 'answer', - 'baby', - 'bright', - 'dad', - 'path', - 'worry', - 'hour', - 'drop', - 'follow', - 'power', - 'war', - 'half', - 'flow', - 'heaven', - 'act', - 'chance', - 'fact', - 'least', - 'tired', - 'children', - 'near', - 'quite', - 'afraid', - 'rise', - 'sea', - 'taste', - 'window', - 'cover', - 'nice', - 'trust', - 'lot', - 'sad', - 'cool', - 'force', - 'peace', - 'return', - 'blind', - 'easy', - 'ready', - 'roll', - 'rose', - 'drive', - 'held', - 'music', - 'beneath', - 'hang', - 'mom', - 'paint', - 'emotion', - 'quiet', - 'clear', - 'cloud', - 'few', - 'pretty', - 'bird', - 'outside', - 'paper', - 'picture', - 'front', - 'rock', - 'simple', - 'anyone', - 'meant', - 'reality', - 'road', - 'sense', - 'waste', - 'bit', - 'leaf', - 'thank', - 'happiness', - 'meet', - 'men', - 'smoke', - 'truly', - 'decide', - 'self', - 'age', - 'book', - 'form', - 'alive', - 'carry', - 'escape', - 'damn', - 'instead', - 'able', - 'ice', - 'minute', - 'throw', - 'catch', - 'leg', - 'ring', - 'course', - 'goodbye', - 'lead', - 'poem', - 'sick', - 'corner', - 'desire', - 'known', - 'problem', - 'remind', - 'shoulder', - 'suppose', - 'toward', - 'wave', - 'drink', - 'jump', - 'woman', - 'pretend', - 'sister', - 'week', - 'human', - 'joy', - 'crack', - 'grey', - 'pray', - 'surprise', - 'dry', - 'knee', - 'less', - 'search', - 'bleed', - 'caught', - 'clean', - 'embrace', - 'future', - 'king', - 'son', - 'sorrow', - 'chest', - 'hug', - 'remain', - 'sat', - 'worth', - 'blow', - 'daddy', - 'final', - 'parent', - 'tight', - 'also', - 'create', - 'lonely', - 'safe', - 'cross', - 'dress', - 'evil', - 'silent', - 'bone', - 'fate', - 'perhaps', - 'anger', - 'class', - 'scar', - 'snow', - 'tiny', - 'tonight', - 'continue', - 'control', - 'dog', - 'edge', - 'mirror', - 'month', - 'suddenly', - 'comfort', - 'given', - 'loud', - 'quickly', - 'gaze', - 'plan', - 'rush', - 'stone', - 'town', - 'battle', - 'ignore', - 'spirit', - 'stood', - 'stupid', - 'yours', - 'brown', - 'build', - 'dust', - 'hey', - 'kept', - 'pay', - 'phone', - 'twist', - 'although', - 'ball', - 'beyond', - 'hidden', - 'nose', - 'taken', - 'fail', - 'float', - 'pure', - 'somehow', - 'wash', - 'wrap', - 'angry', - 'cheek', - 'creature', - 'forgotten', - 'heat', - 'rip', - 'single', - 'space', - 'special', - 'weak', - 'whatever', - 'yell', - 'anyway', - 'blame', - 'job', - 'choose', - 'country', - 'curse', - 'drift', - 'echo', - 'figure', - 'grew', - 'laughter', - 'neck', - 'suffer', - 'worse', - 'yeah', - 'disappear', - 'foot', - 'forward', - 'knife', - 'mess', - 'somewhere', - 'stomach', - 'storm', - 'beg', - 'idea', - 'lift', - 'offer', - 'breeze', - 'field', - 'five', - 'often', - 'simply', - 'stuck', - 'win', - 'allow', - 'confuse', - 'enjoy', - 'except', - 'flower', - 'seek', - 'strength', - 'calm', - 'grin', - 'gun', - 'heavy', - 'hill', - 'large', - 'ocean', - 'shoe', - 'sigh', - 'straight', - 'summer', - 'tongue', - 'accept', - 'crazy', - 'everyday', - 'exist', - 'grass', - 'mistake', - 'sent', - 'shut', - 'surround', - 'table', - 'ache', - 'brain', - 'destroy', - 'heal', - 'nature', - 'shout', - 'sign', - 'stain', - 'choice', - 'doubt', - 'glance', - 'glow', - 'mountain', - 'queen', - 'stranger', - 'throat', - 'tomorrow', - 'city', - 'either', - 'fish', - 'flame', - 'rather', - 'shape', - 'spin', - 'spread', - 'ash', - 'distance', - 'finish', - 'image', - 'imagine', - 'important', - 'nobody', - 'shatter', - 'warmth', - 'became', - 'feed', - 'flesh', - 'funny', - 'lust', - 'shirt', - 'trouble', - 'yellow', - 'attention', - 'bare', - 'bite', - 'money', - 'protect', - 'amaze', - 'appear', - 'born', - 'choke', - 'completely', - 'daughter', - 'fresh', - 'friendship', - 'gentle', - 'probably', - 'six', - 'deserve', - 'expect', - 'grab', - 'middle', - 'nightmare', - 'river', - 'thousand', - 'weight', - 'worst', - 'wound', - 'barely', - 'bottle', - 'cream', - 'regret', - 'relationship', - 'stick', - 'test', - 'crush', - 'endless', - 'fault', - 'itself', - 'rule', - 'spill', - 'art', - 'circle', - 'join', - 'kick', - 'mask', - 'master', - 'passion', - 'quick', - 'raise', - 'smooth', - 'unless', - 'wander', - 'actually', - 'broke', - 'chair', - 'deal', - 'favorite', - 'gift', - 'note', - 'number', - 'sweat', - 'box', - 'chill', - 'clothes', - 'lady', - 'mark', - 'park', - 'poor', - 'sadness', - 'tie', - 'animal', - 'belong', - 'brush', - 'consume', - 'dawn', - 'forest', - 'innocent', - 'pen', - 'pride', - 'stream', - 'thick', - 'clay', - 'complete', - 'count', - 'draw', - 'faith', - 'press', - 'silver', - 'struggle', - 'surface', - 'taught', - 'teach', - 'wet', - 'bless', - 'chase', - 'climb', - 'enter', - 'letter', - 'melt', - 'metal', - 'movie', - 'stretch', - 'swing', - 'vision', - 'wife', - 'beside', - 'crash', - 'forgot', - 'guide', - 'haunt', - 'joke', - 'knock', - 'plant', - 'pour', - 'prove', - 'reveal', - 'steal', - 'stuff', - 'trip', - 'wood', - 'wrist', - 'bother', - 'bottom', - 'crawl', - 'crowd', - 'fix', - 'forgive', - 'frown', - 'grace', - 'loose', - 'lucky', - 'party', - 'release', - 'surely', - 'survive', - 'teacher', - 'gently', - 'grip', - 'speed', - 'suicide', - 'travel', - 'treat', - 'vein', - 'written', - 'cage', - 'chain', - 'conversation', - 'date', - 'enemy', - 'however', - 'interest', - 'million', - 'page', - 'pink', - 'proud', - 'sway', - 'themselves', - 'winter', - 'church', - 'cruel', - 'cup', - 'demon', - 'experience', - 'freedom', - 'pair', - 'pop', - 'purpose', - 'respect', - 'shoot', - 'softly', - 'state', - 'strange', - 'bar', - 'birth', - 'curl', - 'dirt', - 'excuse', - 'lord', - 'lovely', - 'monster', - 'order', - 'pack', - 'pants', - 'pool', - 'scene', - 'seven', - 'shame', - 'slide', - 'ugly', - 'among', - 'blade', - 'blonde', - 'closet', - 'creek', - 'deny', - 'drug', - 'eternity', - 'gain', - 'grade', - 'handle', - 'key', - 'linger', - 'pale', - 'prepare', - 'swallow', - 'swim', - 'tremble', - 'wheel', - 'won', - 'cast', - 'cigarette', - 'claim', - 'college', - 'direction', - 'dirty', - 'gather', - 'ghost', - 'hundred', - 'loss', - 'lung', - 'orange', - 'present', - 'swear', - 'swirl', - 'twice', - 'wild', - 'bitter', - 'blanket', - 'doctor', - 'everywhere', - 'flash', - 'grown', - 'knowledge', - 'numb', - 'pressure', - 'radio', - 'repeat', - 'ruin', - 'spend', - 'unknown', - 'buy', - 'clock', - 'devil', - 'early', - 'false', - 'fantasy', - 'pound', - 'precious', - 'refuse', - 'sheet', - 'teeth', - 'welcome', - 'add', - 'ahead', - 'block', - 'bury', - 'caress', - 'content', - 'depth', - 'despite', - 'distant', - 'marry', - 'purple', - 'threw', - 'whenever', - 'bomb', - 'dull', - 'easily', - 'grasp', - 'hospital', - 'innocence', - 'normal', - 'receive', - 'reply', - 'rhyme', - 'shade', - 'someday', - 'sword', - 'toe', - 'visit', - 'asleep', - 'bought', - 'center', - 'consider', - 'flat', - 'hero', - 'history', - 'ink', - 'insane', - 'muscle', - 'mystery', - 'pocket', - 'reflection', - 'shove', - 'silently', - 'smart', - 'soldier', - 'spot', - 'stress', - 'train', - 'type', - 'view', - 'whether', - 'bus', - 'energy', - 'explain', - 'holy', - 'hunger', - 'inch', - 'magic', - 'mix', - 'noise', - 'nowhere', - 'prayer', - 'presence', - 'shock', - 'snap', - 'spider', - 'study', - 'thunder', - 'trail', - 'admit', - 'agree', - 'bag', - 'bang', - 'bound', - 'butterfly', - 'cute', - 'exactly', - 'explode', - 'familiar', - 'fold', - 'further', - 'pierce', - 'reflect', - 'scent', - 'selfish', - 'sharp', - 'sink', - 'spring', - 'stumble', - 'universe', - 'weep', - 'women', - 'wonderful', - 'action', - 'ancient', - 'attempt', - 'avoid', - 'birthday', - 'branch', - 'chocolate', - 'core', - 'depress', - 'drunk', - 'especially', - 'focus', - 'fruit', - 'honest', - 'match', - 'palm', - 'perfectly', - 'pillow', - 'pity', - 'poison', - 'roar', - 'shift', - 'slightly', - 'thump', - 'truck', - 'tune', - 'twenty', - 'unable', - 'wipe', - 'wrote', - 'coat', - 'constant', - 'dinner', - 'drove', - 'egg', - 'eternal', - 'flight', - 'flood', - 'frame', - 'freak', - 'gasp', - 'glad', - 'hollow', - 'motion', - 'peer', - 'plastic', - 'root', - 'screen', - 'season', - 'sting', - 'strike', - 'team', - 'unlike', - 'victim', - 'volume', - 'warn', - 'weird', - 'attack', - 'await', - 'awake', - 'built', - 'charm', - 'crave', - 'despair', - 'fought', - 'grant', - 'grief', - 'horse', - 'limit', - 'message', - 'ripple', - 'sanity', - 'scatter', - 'serve', - 'split', - 'string', - 'trick', - 'annoy', - 'blur', - 'boat', - 'brave', - 'clearly', - 'cling', - 'connect', - 'fist', - 'forth', - 'imagination', - 'iron', - 'jock', - 'judge', - 'lesson', - 'milk', - 'misery', - 'nail', - 'naked', - 'ourselves', - 'poet', - 'possible', - 'princess', - 'sail', - 'size', - 'snake', - 'society', - 'stroke', - 'torture', - 'toss', - 'trace', - 'wise', - 'bloom', - 'bullet', - 'cell', - 'check', - 'cost', - 'darling', - 'during', - 'footstep', - 'fragile', - 'hallway', - 'hardly', - 'horizon', - 'invisible', - 'journey', - 'midnight', - 'mud', - 'nod', - 'pause', - 'relax', - 'shiver', - 'sudden', - 'value', - 'youth', - 'abuse', - 'admire', - 'blink', - 'breast', - 'bruise', - 'constantly', - 'couple', - 'creep', - 'curve', - 'difference', - 'dumb', - 'emptiness', - 'gotta', - 'honor', - 'plain', - 'planet', - 'recall', - 'rub', - 'ship', - 'slam', - 'soar', - 'somebody', - 'tightly', - 'weather', - 'adore', - 'approach', - 'bond', - 'bread', - 'burst', - 'candle', - 'coffee', - 'cousin', - 'crime', - 'desert', - 'flutter', - 'frozen', - 'grand', - 'heel', - 'hello', - 'language', - 'level', - 'movement', - 'pleasure', - 'powerful', - 'random', - 'rhythm', - 'settle', - 'silly', - 'slap', - 'sort', - 'spoken', - 'steel', - 'threaten', - 'tumble', - 'upset', - 'aside', - 'awkward', - 'bee', - 'blank', - 'board', - 'button', - 'card', - 'carefully', - 'complain', - 'crap', - 'deeply', - 'discover', - 'drag', - 'dread', - 'effort', - 'entire', - 'fairy', - 'giant', - 'gotten', - 'greet', - 'illusion', - 'jeans', - 'leap', - 'liquid', - 'march', - 'mend', - 'nervous', - 'nine', - 'replace', - 'rope', - 'spine', - 'stole', - 'terror', - 'accident', - 'apple', - 'balance', - 'boom', - 'childhood', - 'collect', - 'demand', - 'depression', - 'eventually', - 'faint', - 'glare', - 'goal', - 'group', - 'honey', - 'kitchen', - 'laid', - 'limb', - 'machine', - 'mere', - 'mold', - 'murder', - 'nerve', - 'painful', - 'poetry', - 'prince', - 'rabbit', - 'shelter', - 'shore', - 'shower', - 'soothe', - 'stair', - 'steady', - 'sunlight', - 'tangle', - 'tease', - 'treasure', - 'uncle', - 'begun', - 'bliss', - 'canvas', - 'cheer', - 'claw', - 'clutch', - 'commit', - 'crimson', - 'crystal', - 'delight', - 'doll', - 'existence', - 'express', - 'fog', - 'football', - 'gay', - 'goose', - 'guard', - 'hatred', - 'illuminate', - 'mass', - 'math', - 'mourn', - 'rich', - 'rough', - 'skip', - 'stir', - 'student', - 'style', - 'support', - 'thorn', - 'tough', - 'yard', - 'yearn', - 'yesterday', - 'advice', - 'appreciate', - 'autumn', - 'bank', - 'beam', - 'bowl', - 'capture', - 'carve', - 'collapse', - 'confusion', - 'creation', - 'dove', - 'feather', - 'girlfriend', - 'glory', - 'government', - 'harsh', - 'hop', - 'inner', - 'loser', - 'moonlight', - 'neighbor', - 'neither', - 'peach', - 'pig', - 'praise', - 'screw', - 'shield', - 'shimmer', - 'sneak', - 'stab', - 'subject', - 'throughout', - 'thrown', - 'tower', - 'twirl', - 'wow', - 'army', - 'arrive', - 'bathroom', - 'bump', - 'cease', - 'cookie', - 'couch', - 'courage', - 'dim', - 'guilt', - 'howl', - 'hum', - 'husband', - 'insult', - 'led', - 'lunch', - 'mock', - 'mostly', - 'natural', - 'nearly', - 'needle', - 'nerd', - 'peaceful', - 'perfection', - 'pile', - 'price', - 'remove', - 'roam', - 'sanctuary', - 'serious', - 'shiny', - 'shook', - 'sob', - 'stolen', - 'tap', - 'vain', - 'void', - 'warrior', - 'wrinkle', - 'affection', - 'apologize', - 'blossom', - 'bounce', - 'bridge', - 'cheap', - 'crumble', - 'decision', - 'descend', - 'desperately', - 'dig', - 'dot', - 'flip', - 'frighten', - 'heartbeat', - 'huge', - 'lazy', - 'lick', - 'odd', - 'opinion', - 'process', - 'puzzle', - 'quietly', - 'retreat', - 'score', - 'sentence', - 'separate', - 'situation', - 'skill', - 'soak', - 'square', - 'stray', - 'taint', - 'task', - 'tide', - 'underneath', - 'veil', - 'whistle', - 'anywhere', - 'bedroom', - 'bid', - 'bloody', - 'burden', - 'careful', - 'compare', - 'concern', - 'curtain', - 'decay', - 'defeat', - 'describe', - 'double', - 'dreamer', - 'driver', - 'dwell', - 'evening', - 'flare', - 'flicker', - 'grandma', - 'guitar', - 'harm', - 'horrible', - 'hungry', - 'indeed', - 'lace', - 'melody', - 'monkey', - 'nation', - 'object', - 'obviously', - 'rainbow', - 'salt', - 'scratch', - 'shown', - 'shy', - 'stage', - 'stun', - 'third', - 'tickle', - 'useless', - 'weakness', - 'worship', - 'worthless', - 'afternoon', - 'beard', - 'boyfriend', - 'bubble', - 'busy', - 'certain', - 'chin', - 'concrete', - 'desk', - 'diamond', - 'doom', - 'drawn', - 'due', - 'felicity', - 'freeze', - 'frost', - 'garden', - 'glide', - 'harmony', - 'hopefully', - 'hunt', - 'jealous', - 'lightning', - 'mama', - 'mercy', - 'peel', - 'physical', - 'position', - 'pulse', - 'punch', - 'quit', - 'rant', - 'respond', - 'salty', - 'sane', - 'satisfy', - 'savior', - 'sheep', - 'slept', - 'social', - 'sport', - 'tuck', - 'utter', - 'valley', - 'wolf', - 'aim', - 'alas', - 'alter', - 'arrow', - 'awaken', - 'beaten', - 'belief', - 'brand', - 'ceiling', - 'cheese', - 'clue', - 'confidence', - 'connection', - 'daily', - 'disguise', - 'eager', - 'erase', - 'essence', - 'everytime', - 'expression', - 'fan', - 'flag', - 'flirt', - 'foul', - 'fur', - 'giggle', - 'glorious', - 'ignorance', - 'law', - 'lifeless', - 'measure', - 'mighty', - 'muse', - 'north', - 'opposite', - 'paradise', - 'patience', - 'patient', - 'pencil', - 'petal', - 'plate', - 'ponder', - 'possibly', - 'practice', - 'slice', - 'spell', - 'stock', - 'strife', - 'strip', - 'suffocate', - 'suit', - 'tender', - 'tool', - 'trade', - 'velvet', - 'verse', - 'waist', - 'witch', - 'aunt', - 'bench', - 'bold', - 'cap', - 'certainly', - 'click', - 'companion', - 'creator', - 'dart', - 'delicate', - 'determine', - 'dish', - 'dragon', - 'drama', - 'drum', - 'dude', - 'everybody', - 'feast', - 'forehead', - 'former', - 'fright', - 'fully', - 'gas', - 'hook', - 'hurl', - 'invite', - 'juice', - 'manage', - 'moral', - 'possess', - 'raw', - 'rebel', - 'royal', - 'scale', - 'scary', - 'several', - 'slight', - 'stubborn', - 'swell', - 'talent', - 'tea', - 'terrible', - 'thread', - 'torment', - 'trickle', - 'usually', - 'vast', - 'violence', - 'weave', - 'acid', - 'agony', - 'ashamed', - 'awe', - 'belly', - 'blend', - 'blush', - 'character', - 'cheat', - 'common', - 'company', - 'coward', - 'creak', - 'danger', - 'deadly', - 'defense', - 'define', - 'depend', - 'desperate', - 'destination', - 'dew', - 'duck', - 'dusty', - 'embarrass', - 'engine', - 'example', - 'explore', - 'foe', - 'freely', - 'frustrate', - 'generation', - 'glove', - 'guilty', - 'health', - 'hurry', - 'idiot', - 'impossible', - 'inhale', - 'jaw', - 'kingdom', - 'mention', - 'mist', - 'moan', - 'mumble', - 'mutter', - 'observe', - 'ode', - 'pathetic', - 'pattern', - 'pie', - 'prefer', - 'puff', - 'rape', - 'rare', - 'revenge', - 'rude', - 'scrape', - 'spiral', - 'squeeze', - 'strain', - 'sunset', - 'suspend', - 'sympathy', - 'thigh', - 'throne', - 'total', - 'unseen', - 'weapon', - 'weary' - ]; - static wc: number = 1626; - - constructor(bits: number = 96) { - if (bits % 32 !== 0) { - throw new Error('Can only generate 32/64/96/128 bit passwords'); - } - this.seed = Mnemonic.getRandom(bits); - } - - static fromSeed(seed: Uint32Array): Mnemonic { - const instance = Object.create(Mnemonic.prototype); - instance.seed = seed; - return instance; - } - - static fromWords(words: string[]): Mnemonic { - const n = Mnemonic.wc; - const l = words.length / 3; - const seed = new Uint32Array(l); - - for (let i = 0; i < l; i++) { - const w1 = Mnemonic.words.indexOf(words[3 * i]); - const w2 = Mnemonic.words.indexOf(words[3 * i + 1]); - const w3 = Mnemonic.words.indexOf(words[3 * i + 2]); - - if (w1 < 0 || w2 < 0 || w3 < 0) { - throw new Error('Invalid word found in mnemonic.'); - } - - seed[i] = w1 + n * Mnemonic._mod(w2 - w1, n) + n * n * Mnemonic._mod(w3 - w2, n); - } - - return Mnemonic.fromSeed(seed); - } - - static fromHex(hex: string): Mnemonic { - if (!/^[0-9a-fA-F]+$/.test(hex) || hex.length % 8 !== 0) { - throw new Error('Invalid hex input'); - } - - const parts = hex.match(/.{1,8}/g)!; - const seed = new Uint32Array(parts.length); - - for (let i = 0; i < parts.length; i++) { - seed[i] = parseInt(parts[i], 16); - } - - return Mnemonic.fromSeed(seed); - } - - toHex(): string { - return Array.from(this.seed) - .map((val) => ('00000000' + val.toString(16)).slice(-8)) - .join(''); - } - - toWords(): string[] { - const words: string[] = []; - const n = Mnemonic.wc; - - for (const x of this.seed) { - const w1 = x % n; - const w2 = (((x / n) | 0) + w1) % n; - const w3 = (((((x / n) | 0) / n) | 0) + w2) % n; - - words.push(Mnemonic.words[w1], Mnemonic.words[w2], Mnemonic.words[w3]); - } - - return words; - } - - private static getRandom(bits: number): Uint32Array { - const arr = new Uint32Array(bits / 32); - if (typeof crypto !== 'undefined' && crypto.getRandomValues) { - crypto.getRandomValues(arr); - } else { - throw new Error('Web Crypto API is not available'); - } - return arr; - } - - private static _mod(a: number, b: number): number { - return ((a % b) + b) % b; - } -} diff --git a/new-web/src/lib/utils/vm/storage.ts b/new-web/src/lib/utils/vm/storage.ts deleted file mode 100644 index 7abeb9d7..00000000 --- a/new-web/src/lib/utils/vm/storage.ts +++ /dev/null @@ -1,112 +0,0 @@ -import type { Cell } from '$lib/components/ui/table'; -import type { Column, Row } from '$lib/types/components/tree-table'; -import type { Download } from '$lib/types/utilities/downloader'; -import type { VM } from '$lib/types/vm/vm'; -import type { Dataset } from '$lib/types/zfs/dataset'; -import humanFormat from 'human-format'; -import type { CellComponent } from 'tabulator-tables'; -import { renderWithIcon } from '../table'; - -export function generateTableData( - vm: VM, - datasets: Dataset[], - downloads: Download[] -): { - rows: Row[]; - columns: Column[]; -} { - const rows: Row[] = []; - const columns: Column[] = [ - { - field: 'id', - title: 'ID', - visible: false - }, - { - field: 'type', - title: 'Type', - visible: false - }, - { - field: 'name', - title: 'Name', - formatter: (cell: CellComponent) => { - const value = cell.getValue(); - const row = cell.getRow().getData(); - if (row.type === 'iso') { - return renderWithIcon('tdesign:cd-filled', value, 'text-green-500', 'CD-ROM'); - } else if (row.type === 'zvol') { - return renderWithIcon( - 'carbon:volume-block-storage', - value, - 'text-blue-500', - 'ZFS Volume' - ); - } - return value; - } - }, - { - field: 'size', - title: 'Size', - formatter: (cell: CellComponent) => { - const value = cell.getValue(); - if (value === 0) { - return '-'; - } - return humanFormat(value); - } - } - ]; - - const storages = vm.storages || []; - - for (const storage of storages) { - let name = ''; - let size = 0; - - if (storage.detached) { - continue; - } - - if (storage.type === 'iso') { - const download = downloads.find((d) => d.uuid === storage.dataset); - name = download ? download.name : 'Unknown ISO'; - size = download ? download.size : 0; - } else if (storage.type === 'zvol' || storage.type === 'raw') { - for (const dataset of datasets) { - let found: Dataset | null = null; - - if (dataset.properties['guid'] && dataset.properties['guid'] === storage.dataset) { - found = dataset; - } - - if (found) { - name = (found as Dataset).name; - if (storage.type === 'raw') { - name += `/sylve-vm-images/${vm.vmId}.img`; - size = storage.size || 0; - } else if (storage.type === 'zvol') { - if (dataset.volsize) { - size = dataset.volsize; - } - } - - break; - } - } - } - - rows.push({ - id: storage.id, - type: storage.type, - name: name, - size: size - }); - } - - return { - rows: rows, - columns - }; -} diff --git a/new-web/src/lib/utils/vm/vm.ts b/new-web/src/lib/utils/vm/vm.ts deleted file mode 100644 index 707401b4..00000000 --- a/new-web/src/lib/utils/vm/vm.ts +++ /dev/null @@ -1,96 +0,0 @@ -import type { CreateData } from '$lib/types/vm/vm'; -import { toast } from "svelte-sonner"; -import { isValidMACAddress, isValidVMName } from '../string'; - -export function isValidCreateData(modal: CreateData): boolean { - const toastConfig: Record = { - duration: 3000, - position: 'bottom-center' - }; - - if (!isValidVMName(modal.name)) { - toast.error('Invalid name', toastConfig); - return false; - } - - if (modal.id < 1 || modal.id > 9999) { - toast.error('Invalid ID', toastConfig); - return false; - } - - if (modal.description && (modal.description.length < 1 || modal.description.length > 1024)) { - toast.error('Invalid description', toastConfig); - } - - if (modal.storage.type === 'raw') { - if (!modal.storage.size || modal.storage.size < 1024 * 1024 * 128) { - toast.error('Disk size must be >= 128 MiB', toastConfig); - } - } - - if (modal.storage.type === 'raw' || modal.storage.type === 'zvol') { - if (!modal.storage.guid || modal.storage.guid.length < 1) { - const noun = modal.storage.type === 'raw' ? 'filesystem' : 'volume'; - toast.error(`No ${noun} selected`, toastConfig); - return false; - } - } - - if (modal.storage.emulation === '') { - toast.error('No emulation type selected', toastConfig); - } - - if (modal.storage.type === 'none' && modal.storage.iso === '') { - toast.error('Atleast one disk or ISO must be selected', toastConfig); - return false; - } - - if (modal.network.switch !== 0) { - if (modal.network.emulation === '') { - toast.error('No network emulation type selected', toastConfig); - return false; - } - - if (modal.network.mac && isValidMACAddress(modal.network.mac) === false) { - toast.error('Invalid MAC address', toastConfig); - return false; - } - } - - if (modal.hardware.sockets < 1) { - toast.error('Sockets must be >= 1', toastConfig); - return false; - } - - if (modal.hardware.cores < 1) { - toast.error('Cores must be >= 1', toastConfig); - return false; - } - - if (modal.hardware.threads < 1) { - toast.error('Threads must be >= 1', toastConfig); - return false; - } - - if (modal.hardware.memory < 1024 * 1024 * 128) { - toast.error('Memory must be >= 128 MiB', toastConfig); - return false; - } - - if (modal.advanced.vncPort < 1 || modal.advanced.vncPort > 65535) { - toast.error('VNC port must be between 1 and 65535', toastConfig); - return false; - } - - if (modal.advanced.vncPassword && modal.advanced.vncPassword.length < 1) { - toast.error('VNC password required', toastConfig); - return false; - } - - if (modal.advanced.vncResolution === '') { - toast.error('No VNC resolution selected', toastConfig); - return false; - } - - return true; -} diff --git a/new-web/src/lib/utils/zfs.ts b/new-web/src/lib/utils/zfs.ts deleted file mode 100644 index d15968d9..00000000 --- a/new-web/src/lib/utils/zfs.ts +++ /dev/null @@ -1,120 +0,0 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - -import { getPools } from '$lib/api/zfs/pool'; -import type { Zpool } from '$lib/types/zfs/pool'; - -export async function getTotalDiskUsage(): Promise { - try { - const pools = await getPools(); - const total = pools.reduce((acc, pool) => acc + pool.size, 0); - const used = pools.reduce((acc, pool) => acc + pool.allocated, 0); - - if (total === 0) { - return 0.0; - } - - return (used / total) * 100; - } catch (e) { - return 0.0; - } -} - -export function isDeviceVdev(device: string, pools: Zpool[]): boolean { - if (pools.length === 0) { - return false; - } - - for (const pool of pools) { - for (const vdev of pool.vdevs) { - if (vdev.name === device || vdev.name === `/dev/${device}`) { - return true; - } - } - } - - return false; -} - -export function getHealthHelpers(health: string): { icon: string; color: string; text: string } { - switch (health) { - case 'ONLINE': - return { - icon: 'carbon:checkmark-filled', - color: 'text-green-600 dark:text-green-500', - text: 'Online' - }; - case 'DEGRADED': - return { - icon: 'carbon:warning-filled', - color: 'text-yellow-600 dark:text-yellow-500', - text: 'Degraded' - }; - case 'FAULTED': - return { - icon: 'carbon:close-filled', - color: 'text-red-600 dark:text-red-500', - text: 'Faulted' - }; - case 'OFFLINE': - return { - icon: 'material-symbols:offline-pin-off', - color: 'text-red-600 dark:text-red-500', - text: 'Offline' - }; - case 'UNAVAIL': - return { - icon: 'carbon:warning-alt-filled', - color: 'text-yellow-600 dark:text-yellow-500', - text: 'Unavailable' - }; - case 'REMOVED': - return { - icon: 'carbon:warning-alt-filled', - color: 'text-yellow-600 dark:text-yellow-500', - text: 'Removed' - }; - default: - return { - icon: 'carbon:warning-alt-filled', - color: 'text-yellow-600 dark:text-yellow-500', - text: 'Unknown' - }; - } -} - -export function isValidPoolName(name: string): boolean { - const reserved = ['log', 'mirror', 'raidz', 'raidz1', 'raidz2', 'raidz3', 'spare']; - - if (!name) return false; - if (reserved.some((r) => name.startsWith(r))) return false; - if (!/^[a-zA-Z]/.test(name)) return false; - if (!/^[a-zA-Z0-9_.-]+$/.test(name)) return false; - if (name.includes('%')) return false; - if (/^c[0-9]/.test(name)) return false; - - return true; -} - -export function isValidDatasetName(name: string): boolean { - if (!name || typeof name !== 'string') return false; - if (name.length > 255) return false; - if (/[^\x21-\x7E]/.test(name)) return false; - if (name.includes('%') || name.includes(' ')) return false; - - const components = name.split('/'); - for (const comp of components) { - if (!comp) return false; - if (!/^[a-zA-Z0-9_.-]+$/.test(comp)) return false; - if (comp.startsWith('.') || comp.startsWith('-')) return false; - } - - return true; -} diff --git a/new-web/src/lib/utils/zfs/dataset/dataset.ts b/new-web/src/lib/utils/zfs/dataset/dataset.ts deleted file mode 100644 index ac79d56a..00000000 --- a/new-web/src/lib/utils/zfs/dataset/dataset.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { Dataset, GroupedByPool } from '$lib/types/zfs/dataset'; -import type { Zpool } from '$lib/types/zfs/pool'; - -export function groupByPool( - pools: Zpool[] | undefined, - datasets: Dataset[] | undefined -): GroupedByPool[] { - if (!pools || !datasets) { - return []; - } - - const grouped = pools.map((pool) => { - return { - name: pool.name, - pool: pool, - filesystems: datasets.filter( - (dataset) => dataset.name.startsWith(pool.name) && dataset.type === 'filesystem' - ), - snapshots: datasets.filter( - (dataset) => dataset.name.startsWith(pool.name) && dataset.type === 'snapshot' - ), - volumes: datasets.filter( - (dataset) => dataset.name.startsWith(pool.name) && dataset.type === 'volume' - ) - }; - }); - - return grouped; -} - -export function getDatasetByGUID( - datasets: Dataset[] | undefined, - guid: string -): Dataset | undefined { - if (!datasets) { - return undefined; - } - - const dataset = datasets.find((dataset) => dataset.properties.guid === guid); - return dataset; -} diff --git a/new-web/src/lib/utils/zfs/dataset/fs.ts b/new-web/src/lib/utils/zfs/dataset/fs.ts deleted file mode 100644 index 696224a8..00000000 --- a/new-web/src/lib/utils/zfs/dataset/fs.ts +++ /dev/null @@ -1,318 +0,0 @@ -import type { APIResponse } from '$lib/types/common'; -import type { Column, Row } from '$lib/types/components/tree-table'; -import type { Dataset, GroupedByPool } from '$lib/types/zfs/dataset'; -import { generateNumberFromString } from '$lib/utils/numbers'; -import { capitalizeFirstLetter } from '$lib/utils/string'; -import { renderWithIcon, sizeFormatter } from '$lib/utils/table'; -import { cleanChildren } from '$lib/utils/tree-table'; -import { toast } from 'svelte-sonner'; - -export const createFSProps = { - atime: [ - { - label: 'On', - value: 'on' - }, - { - label: 'Off', - value: 'off' - } - ], - checksum: [ - { - label: 'On', - value: 'on' - }, - { - label: 'Off', - value: 'off' - }, - { - label: 'fletcher2', - value: 'fletcher2' - }, - { - label: 'fletcher4', - value: 'fletcher4' - }, - { - label: 'sha256', - value: 'sha256' - }, - { - label: 'noparity', - value: 'noparity' - } - ], - compression: [ - { - label: 'On', - value: 'on' - }, - { - label: 'Off', - value: 'off' - }, - { - label: 'gzip', - value: 'gzip' - }, - { - label: 'lz4', - value: 'lz4' - }, - { - label: 'lzjb', - value: 'lzjb' - }, - { - label: 'zle', - value: 'zle' - }, - { - label: 'zstd', - value: 'zstd' - }, - { - label: 'zstd-fast', - value: 'zstd-fast' - } - ], - dedup: [ - { - label: 'Off', - value: 'off' - }, - { - label: 'On', - value: 'on' - }, - { - label: 'Verify', - value: 'verify' - } - ], - encryption: [ - { - label: 'Off', - value: 'off' - }, - { - label: 'On', - value: 'on' - }, - { - label: 'aes-128-ccm', - value: 'aes-128-ccm' - }, - { - label: 'aes-192-ccm', - value: 'aes-192-ccm' - }, - { - label: 'aes-256-ccm', - value: 'aes-256-ccm' - }, - { - label: 'aes-128-gcm', - value: 'aes-128-gcm' - }, - { - label: 'aes-192-gcm', - value: 'aes-192-gcm' - }, - { - label: 'aes-256-gcm', - value: 'aes-256-gcm' - } - ] -}; - -export function generateTableData(grouped: GroupedByPool[]): { rows: Row[]; columns: Column[] } { - const rows: Row[] = []; - const columns: Column[] = [ - { - field: 'id', - title: 'ID', - visible: false - }, - { - field: 'name', - title: 'Name', - formatter: (cell) => { - const value = cell.getValue(); - - if (value.includes('@')) { - const [, snapshot] = value.split('@'); - return renderWithIcon('carbon:ibm-cloud-vpc-block-storage-snapshots', snapshot); - } - - if (value.includes('/')) { - return renderWithIcon('material-symbols:files', value.substring(value.indexOf('/') + 1)); - } - - if (!value.includes('/') && !value.includes('@')) { - return renderWithIcon('bi:hdd-stack-fill', value); - } - - return `${value}`; - } - }, - { - field: 'used', - title: 'Used', - formatter: sizeFormatter - }, - { - field: 'avail', - title: 'Available', - formatter: sizeFormatter - }, - { - field: 'referenced', - title: 'Referenced', - formatter: sizeFormatter - }, - { - field: 'mountpoint', - title: 'Mount Point' - }, - { - field: 'type', - title: 'Type', - visible: false - } - ]; - - for (const group of grouped) { - const poolLevelFilesystem = group.filesystems.find( - (fs: Dataset) => fs.type === 'filesystem' && fs.name === group.name - ); - - const filesystemChildren = group.filesystems.filter( - (fs) => fs.type === 'filesystem' && fs.name !== group.name - ); - - const snapshotChildren = group.snapshots; - - if (poolLevelFilesystem) { - const poolSnapshots = snapshotChildren.filter((snapshot) => - snapshot.name.startsWith(group.name + '@') - ); - - const childFilesystemsWithSnapshots = filesystemChildren.map((filesystem: Dataset) => ({ - id: generateNumberFromString(filesystem.name) + 1, - name: filesystem.name, - used: filesystem.used, - avail: filesystem.avail, - referenced: filesystem.referenced, - mountpoint: filesystem.mountpoint || '', - children: snapshotChildren - .filter((snapshot) => snapshot.name.startsWith(filesystem.name + '@')) - .map((snapshot: Dataset) => ({ - id: generateNumberFromString(snapshot.name) + 2, - name: snapshot.name, - used: snapshot.used, - avail: snapshot.avail, - referenced: snapshot.referenced, - mountpoint: snapshot.mountpoint || '', - children: [] - })), - type: filesystem.type - })); - - rows.push({ - id: generateNumberFromString(group.name), - name: group.name, - used: poolLevelFilesystem.used, - avail: poolLevelFilesystem.avail, - referenced: poolLevelFilesystem.referenced, - mountpoint: poolLevelFilesystem.mountpoint || '', - children: [ - ...poolSnapshots.map((snapshot: Dataset) => ({ - id: generateNumberFromString(snapshot.name) + 1, - name: snapshot.name, - used: snapshot.used, - avail: snapshot.avail, - referenced: snapshot.referenced, - mountpoint: snapshot.mountpoint || '', - children: [], - isPoolSnapshot: true - })), - ...childFilesystemsWithSnapshots - ].sort((a, b) => { - const aIsPoolSnapshot = a.hasOwnProperty('isPoolSnapshot'); - const bIsPoolSnapshot = b.hasOwnProperty('isPoolSnapshot'); - if (aIsPoolSnapshot && !bIsPoolSnapshot) return -1; - if (!aIsPoolSnapshot && bIsPoolSnapshot) return 1; - return a.name.localeCompare(b.name); - }), - type: 'pool' - }); - } else if (group.filesystems.length > 0) { - rows.push( - ...group.filesystems - .filter((fs) => fs.type === 'filesystem') - .map((filesystem: Dataset) => ({ - id: generateNumberFromString(filesystem.name), - name: filesystem.name, - used: filesystem.used, - avail: filesystem.avail, - referenced: filesystem.referenced, - mountpoint: filesystem.mountpoint || '', - children: snapshotChildren - .filter((snapshot) => snapshot.name.startsWith(filesystem.name + '@')) - .map((snapshot: Dataset) => ({ - id: generateNumberFromString(snapshot.name) + 1, - name: snapshot.name, - used: snapshot.used, - avail: snapshot.avail, - referenced: snapshot.referenced, - mountpoint: snapshot.mountpoint || '', - children: [] - })) - .sort((a, b) => a.name.localeCompare(b.name)) - })) - ); - } - } - - return { - rows: rows.map(cleanChildren), - columns - }; -} - -export function handleError(error: APIResponse): void { - if (error.error?.includes('dataset already exists')) { - let value = ''; - - if (error.error?.includes('snapshot')) { - value = 'Snapshot already exists'; - } else { - value = 'Filesystem already exists'; - } - - toast.error(value, { - position: 'bottom-center' - }); - } - - if (error.error?.includes('numeric value is too large')) { - toast.error('Numeric value is too large', { - position: 'bottom-center' - }); - } - - if (error.error?.includes('invalid_encryption_key_length')) { - toast.error('Invalid encryption key length', { - position: 'bottom-center' - }); - } - - if (error.error?.includes('pool or dataset is busy')) { - toast.error('Pool or dataset is busy', { - position: 'bottom-center' - }); - } -} diff --git a/new-web/src/lib/utils/zfs/dataset/snapshot.ts b/new-web/src/lib/utils/zfs/dataset/snapshot.ts deleted file mode 100644 index 3266337c..00000000 --- a/new-web/src/lib/utils/zfs/dataset/snapshot.ts +++ /dev/null @@ -1,93 +0,0 @@ -import type { Column, Row } from '$lib/types/components/tree-table'; -import type { Dataset, GroupedByPool } from '$lib/types/zfs/dataset'; -import { generateNumberFromString } from '$lib/utils/numbers'; -import { renderWithIcon, sizeFormatter } from '$lib/utils/table'; - -export function generateTableData(grouped: GroupedByPool[]): { rows: Row[]; columns: Column[] } { - const rows: Row[] = []; - const columns: Column[] = [ - { - field: 'id', - title: 'ID', - visible: false - }, - { - field: 'name', - title: 'Name', - formatter: (cell) => { - const value = cell.getValue(); - - if (!value.includes('@') && !value.includes('/')) { - return renderWithIcon('bi:hdd-stack-fill', value); - } - - if (value.includes('/')) { - const [pool, ...rest] = value.split('/'); - const name = rest.join('/'); - return renderWithIcon('carbon:ibm-cloud-vpc-block-storage-snapshots', name); - } - - return renderWithIcon('carbon:ibm-cloud-vpc-block-storage-snapshots', value); - } - }, - { - field: 'used', - title: 'Used', - formatter: sizeFormatter - }, - { - field: 'avail', - title: 'Available', - formatter: sizeFormatter - }, - { - field: 'referenced', - title: 'Referenced', - formatter: sizeFormatter - }, - { - field: 'mountpoint', - title: 'Mount Point' - } - ]; - - for (const group of grouped) { - const poolLevelFilesystem = group.filesystems.find( - (fs: Dataset) => fs.type === 'filesystem' && fs.name === group.name - ); - - if (!poolLevelFilesystem) continue; - - const poolSnapshots = group.snapshots.filter( - (snapshot) => - snapshot.name.startsWith(group.name + '@') || snapshot.name.startsWith(group.name + '/') - ); - - const children = poolSnapshots.map((snapshot: Dataset) => ({ - id: generateNumberFromString(snapshot.name), - name: snapshot.name, - used: snapshot.used, - avail: snapshot.avail, - referenced: snapshot.referenced, - mountpoint: snapshot.mountpoint || '', - children: [], - type: 'snapshot' - })); - - rows.push({ - id: generateNumberFromString(group.name), - name: group.name, - used: poolLevelFilesystem.used, - avail: poolLevelFilesystem.avail, - referenced: poolLevelFilesystem.referenced, - mountpoint: poolLevelFilesystem.mountpoint || '', - type: 'pool', - children - }); - } - - return { - rows, - columns - }; -} diff --git a/new-web/src/lib/utils/zfs/dataset/volume.ts b/new-web/src/lib/utils/zfs/dataset/volume.ts deleted file mode 100644 index ae84cd4b..00000000 --- a/new-web/src/lib/utils/zfs/dataset/volume.ts +++ /dev/null @@ -1,317 +0,0 @@ -import type { APIResponse } from '$lib/types/common'; -import type { Column, Row } from '$lib/types/components/tree-table'; -import type { GroupedByPool } from '$lib/types/zfs/dataset'; -import { generateNumberFromString } from '$lib/utils/numbers'; -import { renderWithIcon, sizeFormatter } from '$lib/utils/table'; -import { cleanChildren } from '$lib/utils/tree-table'; -import { toast } from 'svelte-sonner'; - -export const createVolProps = { - atime: [ - { - label: 'Yes', - value: 'on' - }, - { - label: 'No', - value: 'off' - } - ], - checksum: [ - { - label: 'Yes', - value: 'on' - }, - { - label: 'No', - value: 'off' - }, - { - label: 'fletcher2', - value: 'fletcher2' - }, - { - label: 'fletcher4', - value: 'fletcher4' - }, - { - label: 'sha256', - value: 'sha256' - }, - { - label: 'noparity', - value: 'noparity' - } - ], - compression: [ - { - label: 'Yes', - value: 'on' - }, - { - label: 'No', - value: 'off' - }, - { - label: 'gzip', - value: 'gzip' - }, - { - label: 'lz4', - value: 'lz4' - }, - { - label: 'lzjb', - value: 'lzjb' - }, - { - label: 'zle', - value: 'zle' - }, - { - label: 'zstd', - value: 'zstd' - }, - { - label: 'zstd-fast', - value: 'zstd-fast' - } - ], - dedup: [ - { - label: 'No', - value: 'off' - }, - { - label: 'Yes', - value: 'on' - }, - { - label: 'Verify', - value: 'verify' - } - ], - encryption: [ - { - label: 'No', - value: 'off' - }, - { - label: 'Yes', - value: 'on' - }, - { - label: 'aes-128-ccm', - value: 'aes-128-ccm' - }, - { - label: 'aes-192-ccm', - value: 'aes-192-ccm' - }, - { - label: 'aes-256-ccm', - value: 'aes-256-ccm' - }, - { - label: 'aes-128-gcm', - value: 'aes-128-gcm' - }, - { - label: 'aes-192-gcm', - value: 'aes-192-gcm' - }, - { - label: 'aes-256-gcm', - value: 'aes-256-gcm' - } - ], - volblocksize: [ - { - label: '512B (Legacy HDD sectors)', - value: '512' - }, - { - label: '1K (1024B)', - value: '1024' - }, - { - label: '2K (2048B)', - value: '2048' - }, - { - label: '4K (4096B) - SSD/VMs', - value: '4096' - }, - { - label: '8K (8192B)', - value: '8192' - }, - { - label: '16K (16384B)', - value: '16384' - }, - { - label: '32K (32768B) - Sequential workloads', - value: '32768' - }, - { - label: '64K (65536B) - Large files', - value: '65536' - }, - { - label: '128K (131072B) Media/backups', - value: '131072' - } - ], - primarycache: [ - { - label: 'All', - value: 'all' - }, - { - label: 'Metadata', - value: 'metadata' - }, - { - label: 'None', - value: 'none' - } - ], - volmode: [ - { - label: 'default', - value: 'default' - }, - { - label: 'full', - value: 'full' - }, - { - label: 'geom', - value: 'geom' - }, - { - label: 'dev', - value: 'dev' - }, - { - label: 'none', - value: 'none' - } - ] -}; - -export function generateTableData(grouped: GroupedByPool[]): { rows: Row[]; columns: Column[] } { - const rows: Row[] = []; - const columns: Column[] = [ - { - field: 'id', - title: 'ID', - visible: false - }, - { - field: 'name', - title: 'Name', - formatter: (cell) => { - const value = cell.getValue(); - if (value.includes('@')) { - const [, snapshot] = value.split('@'); - return renderWithIcon('carbon:ibm-cloud-vpc-block-storage-snapshots', snapshot); - } - - if (value.includes('/')) { - const [, volume] = value.split('/'); - return renderWithIcon('carbon:volume-block-storage', volume); - } - - if (!value.includes('/') && !value.includes('@')) { - return renderWithIcon('bi:hdd-stack-fill', value); - } - - return `${value}`; - } - }, - { - field: 'size', - title: 'Size', - formatter: sizeFormatter - }, - { - field: 'referenced', - title: 'Referenced', - formatter: sizeFormatter - }, - { - field: 'guid', - title: 'GUID', - visible: false - } - ]; - - for (const group of grouped) { - const poolRow: Row = { - id: generateNumberFromString(group.name), - name: group.name, - size: 0, - referenced: '-', - guid: undefined, - children: [], - type: 'pool' - }; - - poolRow.size = group.pool?.size; - - const volumeChildren = group.volumes - .filter((vol) => vol.name !== group.name) - .map((vol) => { - const volumeRow: Row = { - id: generateNumberFromString(vol.name), - name: vol.name, - size: vol.volsize, - referenced: vol.referenced, - guid: vol.properties?.guid, - children: [], - type: 'volume' - }; - - const snapshots = group.snapshots.filter((snap) => snap.name.startsWith(vol.name + '@')); - volumeRow.children?.push( - ...snapshots.map((snap) => ({ - id: generateNumberFromString(snap.name), - name: snap.name, - size: snap.used, - referenced: snap.referenced, - guid: snap.properties?.guid, - children: [], - type: 'snapshot' - })) - ); - - return volumeRow; - }); - - poolRow.children?.push(...volumeChildren); - rows.push(poolRow); - } - - return { - rows: rows.filter((row) => row.children && row.children.length > 0).map(cleanChildren), - columns - }; -} - -export function handleError(error: APIResponse): void { - if (error.error?.includes('dataset_in_use_by_vm')) { - toast.error('Dataset is in use by a VM', { - position: 'bottom-center' - }); - - return; - } - - if (error.error?.includes('dataset already exists')) { - toast.error('Dataset already exists', { - position: 'bottom-center' - }); - } -} diff --git a/new-web/src/lib/utils/zfs/pool.ts b/new-web/src/lib/utils/zfs/pool.ts deleted file mode 100644 index 3acbb652..00000000 --- a/new-web/src/lib/utils/zfs/pool.ts +++ /dev/null @@ -1,430 +0,0 @@ -import type { APIResponse, PieChartData, SeriesDataWithBaseline } from '$lib/types/common'; -import type { Column, Row } from '$lib/types/components/tree-table'; -import type { Disk } from '$lib/types/disk/disk'; -import type { Dataset } from '$lib/types/zfs/dataset'; -import type { Zpool } from '$lib/types/zfs/pool'; -import humanFormat from 'human-format'; -import { generateNumberFromString } from '../numbers'; -import { renderWithIcon, sizeFormatter } from '../table'; - -export const raidTypeArr = [ - { - value: 'stripe', - label: 'Stripe', - available: true - }, - { - value: 'mirror', - label: 'Mirror', - available: false - }, - { - value: 'raidz', - label: 'RAIDZ', - available: false - }, - { - value: 'raidz2', - label: 'RAIDZ2', - available: false - }, - { - value: 'raidz3', - label: 'RAIDZ3', - available: false - } -]; - -export function generateTableData( - pools: Zpool[], - disks: Disk[] -): { - rows: Row[]; - columns: Column[]; -} { - let rows: Row[] = []; - let columns: Column[] = [ - { - field: 'id', - title: 'ID', - visible: false - }, - { - field: 'name', - title: 'Name', - formatter: (cell) => { - const value = cell.getValue(); - - if (isPool(pools, value)) { - return renderWithIcon('bi:hdd-stack-fill', value); - } - - if (value.match(/p\d+$/)) { - return renderWithIcon('ant-design:partition-outlined', value); - } - - if (value.startsWith('/dev/')) { - const nameOnly = value.replace('/dev/', ''); - const disk = disks.find((disk) => disk.device === nameOnly); - if (disk) { - if (disk.type === 'HDD') { - return renderWithIcon('mdi:harddisk', value); - } else if (disk.type === 'SSD') { - return renderWithIcon('icon-park-outline:ssd', value); - } else if (disk.type === 'NVMe') { - return renderWithIcon('bi:nvme', value, 'rotate-90'); - } - } - } - - return `${value}`; - } - }, - { - field: 'size', - title: 'Size', - formatter: sizeFormatter - }, - { - field: 'used', - title: 'Used', - formatter: sizeFormatter - }, - { - field: 'health', - title: 'Health' - }, - { - field: 'redundancy', - title: 'Redundancy' - }, - { - field: 'guid', - title: 'GUID', - visible: false - } - ]; - - for (const pool of pools) { - const poolRow = { - id: generateNumberFromString(pool.name + '-pool'), - name: pool.name, - size: pool.size, - used: pool.allocated, - health: pool.health, - redundancy: '', - children: [] as Row[], - guid: pool.guid || '' - }; - - for (const vdev of pool.vdevs) { - if (vdev.name.includes('mirror') || vdev.name.includes('raid') || vdev.devices.length > 1) { - let redundancy = 'Stripe'; - let vdevLabel = vdev.name; - - if (vdev.name.startsWith('mirror')) { - redundancy = 'Mirror'; - vdevLabel = vdev.name.replace(/mirror-?(\d+)/i, 'Mirror $1'); - } else if (vdev.name.startsWith('raidz')) { - redundancy = 'RAIDZ ' + vdev.name.match(/raidz-?(\d+)/i)?.[1]; - vdevLabel = vdev.name.replace(/^raidz/i, 'RAIDZ'); - } - - const vdevRow = { - id: generateNumberFromString(vdev.name), - name: vdevLabel, - size: vdev.alloc + vdev.free, - used: vdev.alloc, - health: vdev.health, - redundancy: '-', - children: [] as Row[] - }; - - for (const device of vdev.devices) { - if ( - vdev.replacingDevices && - vdev.replacingDevices.some( - (r) => r.oldDrive.name === device.name || r.newDrive.name === device.name - ) - ) { - continue; - } - - vdevRow.children.push({ - id: generateNumberFromString(device.name), - name: device.name, - size: device.size, - used: '-', - health: device.health, - redundancy: '-', - children: [] - }); - } - - if (vdev.replacingDevices && vdev.replacingDevices.length > 0) { - for (const replacing of vdev.replacingDevices) { - vdevRow.children.push({ - id: generateNumberFromString(replacing.oldDrive.name), - name: `${replacing.oldDrive.name} [OLD]`, - size: replacing.oldDrive.size, - used: '-', - health: `${replacing.oldDrive.health} (Being replaced)`, - redundancy: '-', - children: [] - }); - - vdevRow.children.push({ - id: generateNumberFromString(replacing.newDrive.name), - name: `${replacing.newDrive.name} [NEW]`, - size: replacing.newDrive.size, - used: '-', - health: `${replacing.newDrive.health} (Replacement)`, - redundancy: '-', - children: [] - }); - } - } - - poolRow.children.push(vdevRow); - poolRow.redundancy = redundancy; - } else { - poolRow.children.push({ - id: generateNumberFromString(vdev.devices[0].name), - name: vdev.devices[0].name, - size: vdev.devices[0].size, - used: '-', - health: vdev.devices[0].health, - redundancy: '-', - children: [] - }); - poolRow.redundancy = 'Stripe'; - } - } - - rows.push(poolRow); - - if (pool.spares && pool.spares.length > 0) { - const sparesRow: Row = { - id: generateNumberFromString(`${pool.name}-spares`), - name: 'Spares', - size: - pool.spares.reduce((acc, spare) => acc + spare.size, 0) > 0 - ? pool.spares.reduce((acc, spare) => acc + spare.size, 0) - : '-', - used: '-', - health: '-', - redundancy: '-', - children: [] - }; - - for (const spare of pool.spares) { - sparesRow.children!.push({ - id: generateNumberFromString(spare.name), - name: spare.name, - size: spare.size, - used: '-', - health: spare.health, - redundancy: '-', - children: [] - }); - } - - poolRow.children!.push(sparesRow); - } - } - - // spares should be at the end of the pool - rows = rows.map((row) => { - if (row.children) { - const sparesIndex = row.children.findIndex((child) => child.name === 'Spares'); - if (sparesIndex !== -1) { - const sparesRow = row.children.splice(sparesIndex, 1)[0]; - row.children.push(sparesRow); - } - } - return row; - }); - - return { - rows, - columns - }; -} - -export function isPool(pools: Zpool[], name: string): boolean { - return pools.some((pool) => pool.name === name); -} - -export function isReplaceableDevice(pools: Zpool[], name: string): boolean { - for (const pool of pools) { - if (pool.vdevs.some((vdev) => vdev.name === name)) { - return false; // False if we're striped - } - } - - return pools.some((pool) => { - for (const vdev of pool.vdevs) { - if (vdev.devices.some((device) => device.name === name)) { - return true; - } - } - return false; - }); -} - -export function getPoolByDevice(pools: Zpool[], name: string): string { - for (const pool of pools) { - for (const vdev of pool.vdevs) { - if (vdev.devices.some((device) => device.name === name)) { - return pool.name; - } - } - } - - return ''; -} - -export function parsePoolActionError(error: APIResponse): string { - if (error.message && error.message === 'pool_create_failed') { - if (error.error) { - if (error.error.includes('mirror contains devices of different sizes')) { - return 'Pool contains a mirror with devices of different sizes'; - } else if (error.error.includes('raidz contains devices of different sizes')) { - return 'Pool contains a RAIDZ vdev with devices of different sizes'; - } - } - } - - if (error.message && error.message === 'pool_delete_failed') { - if (error.error) { - if (error.error.includes('pool or dataset is busy')) { - return 'Pool is busy'; - } - } - } - - if (error.message && error.message === 'pool_edit_failed') { - return 'Pool edit failed'; - } - - return ''; -} - -export function getPoolUsagePieData(pools: Zpool[], pool: string): PieChartData[] { - const poolData = pools.find((p) => p.name === pool); - - return [ - { - label: 'Used', - value: poolData?.allocated || 0, - color: 'chart-1' - }, - { - label: 'Free', - value: poolData?.free || 0, - color: 'chart-2' - } - ]; -} - -export function getDatasetCompressionHist( - pool: string, - datasets: Dataset[] -): SeriesDataWithBaseline[] { - const results: SeriesDataWithBaseline[] = []; - const related = datasets.filter( - (dataset) => dataset.name.startsWith(pool + '/') || dataset.name === pool - ); - - for (const dataset of related) { - const used = dataset.used || dataset.properties?.used; - const logicalUsed = dataset.logicalused || dataset.properties?.logicalused; - - if (typeof used === 'number' && typeof logicalUsed === 'number' && logicalUsed > 0) { - if (dataset.name.includes('/')) { - results.push({ - name: dataset.name, - baseline: logicalUsed, - value: used - }); - } - } - } - - results.sort((a, b) => { - if (a.baseline !== b.baseline) { - return b.baseline - a.baseline; - } - - const ratioA = a.value / a.baseline; - const ratioB = b.value / b.baseline; - - return ratioB - ratioA; - }); - - return results; -} - -type StatType = 'allocated' | 'free' | 'size' | 'dedupRatio'; - -export function getPoolStatsCombined(poolStats: Record, statType: StatType) { - if (!poolStats) { - return { - poolStatsData: [], - poolStatsKeys: [] - }; - } - - const poolStatsData = Object.entries(poolStats) - .map(([poolName, stats]) => { - if (!Array.isArray(stats)) return []; - - return stats.map((entry) => ({ - date: new Date(entry.time), - [poolName]: entry[statType] ?? 0 - })); - }) - .filter((array) => array.length > 0) - // Sort each pool's data points by time - .map((dataPoints) => dataPoints.sort((a, b) => a.date.getTime() - b.date.getTime())); - - const poolStatsKeys = Object.keys(poolStats).map((poolName, index) => { - const hue = (index * 137) % 360; - return { - key: poolName, - title: poolName.charAt(0).toUpperCase() + poolName.slice(1), - color: `hsl(${hue}, 70%, 50%)` - }; - }); - - return { poolStatsData, poolStatsKeys }; -} - -export const getDateFormatByInterval = (intervalValue: number, includeTime: boolean): string => { - if (intervalValue <= 1) return includeTime ? 'hh:mm:ss a' : 'hh:mm a'; - if (intervalValue <= 5) return includeTime ? 'hh:mm a' : 'hh:mm a'; - if (intervalValue <= 60) return includeTime ? 'hh:mm a' : 'hh:mm a'; - if (intervalValue <= 1440) return includeTime ? 'MMM d, hh:mm a' : 'MMM d'; - if (intervalValue <= 10080) return includeTime ? 'MMM d, hh:mm a' : 'MMM d'; - if (intervalValue <= 40320) return includeTime ? 'MMM yyyy' : 'MMM yyyy'; - return includeTime ? 'yyyy' : 'yyyy'; -}; - -export function formatValue( - value: number, - unformattedKeys: string[] | undefined, - valueType: string -): string | number { - if (unformattedKeys?.includes('dedupRatio')) return value; - - switch (valueType) { - case 'fileSize': - return humanFormat(value); - case 'percentage': - return `${value}%`; - case 'celcius': - return `${value}°C`; - default: - return value; - } -} diff --git a/new-web/src/routes/+layout.svelte b/new-web/src/routes/+layout.svelte deleted file mode 100644 index 2d4772da..00000000 --- a/new-web/src/routes/+layout.svelte +++ /dev/null @@ -1,154 +0,0 @@ - - - - Sylve - - - - - -{#if isLoading} - -{:else if isLoggedIn && $hostname} - - - {@render children()} - - -{:else} - -{/if} diff --git a/new-web/src/routes/+page.svelte b/new-web/src/routes/+page.svelte deleted file mode 100644 index e69de29b..00000000 diff --git a/new-web/src/routes/[node]/+layout.svelte b/new-web/src/routes/[node]/+layout.svelte deleted file mode 100644 index 62fcca25..00000000 --- a/new-web/src/routes/[node]/+layout.svelte +++ /dev/null @@ -1,222 +0,0 @@ - - - - -
    -
    -

    Datacenter

    - -
    - - - -
    -
    - -
    -
    -
    - - -
    - {@render children?.()} -
    -
    -
    -
    diff --git a/new-web/src/routes/[node]/+layout.ts b/new-web/src/routes/[node]/+layout.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/new-web/src/routes/[node]/+page.svelte b/new-web/src/routes/[node]/+page.svelte deleted file mode 100644 index e69de29b..00000000 diff --git a/new-web/src/routes/[node]/network/interfaces/+page.svelte b/new-web/src/routes/[node]/network/interfaces/+page.svelte deleted file mode 100644 index bdcf2e92..00000000 --- a/new-web/src/routes/[node]/network/interfaces/+page.svelte +++ /dev/null @@ -1,182 +0,0 @@ - - -{#snippet button(type: string)} - {#if type === 'view' && activeRow !== null && activeRow.length > 0} - - {/if} -{/snippet} - -
    -
    - - {@render button('view')} -
    - - - - -
    diff --git a/new-web/src/routes/[node]/network/interfaces/+page.ts b/new-web/src/routes/[node]/network/interfaces/+page.ts deleted file mode 100644 index 6d0e8230..00000000 --- a/new-web/src/routes/[node]/network/interfaces/+page.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { getInterfaces } from '$lib/api/network/iface'; -import { cachedFetch } from '$lib/utils/http'; - -export async function load() { - const cacheDuration = 1000 * 60000; - const [interfaces] = await Promise.all([ - cachedFetch('networkInterfaces', async () => await getInterfaces(), cacheDuration) - ]); - - return { - interfaces - }; -} diff --git a/new-web/src/routes/[node]/network/switches/+page.svelte b/new-web/src/routes/[node]/network/switches/+page.svelte deleted file mode 100644 index 62fb2cdc..00000000 --- a/new-web/src/routes/[node]/network/switches/+page.svelte +++ /dev/null @@ -1,552 +0,0 @@ - - -{#snippet button(type: string)} - {#if activeRow && Object.keys(activeRow).length > 0} - {#if type === 'edit'} - - {:else if type === 'delete'} - - {/if} - {/if} -{/snippet} - -
    -
    - - - - {@render button('edit')} - {@render button('delete')} -
    - - -
    - -{#if confirmModals.active === 'newSwitch' || confirmModals.active === 'editSwitch'} - - e.preventDefault()} - onEscapeKeydown={(e) => e.preventDefault()} - > -
    - - -
    - - {#if confirmModals.active === 'editSwitch'} - {'Edit Switch -' + confirmModals.editSwitch.oldName} - {:else} - {'New Switch'} - {/if} -
    -
    -
    - -
    - - -
    -
    - - {#if confirmModals.active === 'newSwitch'} - - {/if} - -
    - - - -
    - -
    - - - -
    - - {#if confirmModals.active === 'newSwitch'} - - {:else} - - {/if} - -
    - - - - - - - -
    - - -
    - {#if confirmModals.active === 'editSwitch'} - - {:else} - - {/if} -
    -
    -
    -
    -{/if} - - { - const result = await deleteSwitch(confirmModals.deleteSwitch.id); - if (isAPIResponse(result) && result.status === 'success') { - toast.success(`Switch ${confirmModals.deleteSwitch.name} deleted`, { - position: 'bottom-center' - }); - } else { - if (result && result.error) { - if (result.error === 'switch_in_use_by_vm') { - toast.error('Switch is in use by a VM', { position: 'bottom-center' }); - } else { - toast.error('Error deleting switch', { position: 'bottom-center' }); - } - } - } - - resetModal(true); - }, - onCancel: () => { - resetModal(true); - } - }} -> diff --git a/new-web/src/routes/[node]/network/switches/+page.ts b/new-web/src/routes/[node]/network/switches/+page.ts deleted file mode 100644 index a3d90e8f..00000000 --- a/new-web/src/routes/[node]/network/switches/+page.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { getInterfaces } from '$lib/api/network/iface'; -import { getSwitches } from '$lib/api/network/switch'; -import { cachedFetch } from '$lib/utils/http'; - -export async function load() { - const cacheDuration = 1000 * 60000; - const [interfaces, switches] = await Promise.all([ - cachedFetch('networkInterfaces', async () => await getInterfaces(), cacheDuration), - cachedFetch('networkSwitches', async () => await getSwitches(), cacheDuration) - ]); - - return { - interfaces, - switches - }; -} diff --git a/new-web/src/routes/[node]/notes/+page.svelte b/new-web/src/routes/[node]/notes/+page.svelte deleted file mode 100644 index 71d056aa..00000000 --- a/new-web/src/routes/[node]/notes/+page.svelte +++ /dev/null @@ -1,393 +0,0 @@ - - -{#snippet button(type: string)} - {#if activeRow !== null && activeRow.length === 1} - {#if type === 'view-note'} - - {/if} - - {#if type === 'delete-note'} - - {/if} - - {#if type === 'edit-note'} - - {/if} - {/if} - - {#if activeRow !== null && activeRow.length > 1} - {#if type === 'bulk-delete-note'} - - {/if} - {/if} -{/snippet} - -
    -
    - - - - - {@render button('view-note')} - {@render button('edit-note')} - {@render button('delete-note')} - {@render button('bulk-delete-note')} -
    - - - - - -
    - - - {#if modalState.isEditMode} - {#if selectedId} - Edit - {:else} - New - {/if} - {:else} - View - {/if} - - {'Note'} - -
    -
    - - -
    -
    -
    - - - - - {#if modalState.isEditMode} -
    - -
    - {:else} -
    -

    - Content -

    -
    - {@html markdownToTailwindHTML(modalState.content)} -
    -
    - {/if} -
    - -
    - {#if modalState.isEditMode} - - {/if} -
    -
    -
    -
    - -
    - -
    - - { - const id = activeRow ? activeRow[0]?.id : null; - const result = await deleteNote(id as number); - if (isAPIResponse(result) && result.status === 'success') { - handleNote(undefined, false, true); - } else { - handleAPIError(result as APIResponse); - toast.error('Failed to delete note', { - position: 'bottom-center' - }); - } - }, - onCancel: () => { - modalState.isDeleteOpen = false; - } - }} - > - - { - const ids = activeRow - ? activeRow.map((row) => (typeof row.id === 'number' ? row.id : parseInt(row.id))) - : []; - const result = await deleteNotes(ids); - if (isAPIResponse(result) && result.status === 'success') { - handleNote(undefined, false, true); - } else { - handleAPIError(result as APIResponse); - toast.error('Failed to delete notes', { - position: 'bottom-center' - }); - } - }, - onCancel: () => { - modalState.isBulkDeleteOpen = false; - } - }} - > -
    diff --git a/new-web/src/routes/[node]/notes/+page.ts b/new-web/src/routes/[node]/notes/+page.ts deleted file mode 100644 index bc95bccc..00000000 --- a/new-web/src/routes/[node]/notes/+page.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { getNotes } from '$lib/api/info/notes'; -import type { Note } from '$lib/types/info/notes'; -import { SEVEN_DAYS } from '$lib/utils'; -import { cachedFetch } from '$lib/utils/http'; - -export async function load() { - const cacheDuration = SEVEN_DAYS; - const [notes] = await Promise.all([cachedFetch('notes', async () => getNotes(), cacheDuration)]); - - return { - notes: notes as Note[] - }; -} diff --git a/new-web/src/routes/[node]/settings/device-passthrough/+page.svelte b/new-web/src/routes/[node]/settings/device-passthrough/+page.svelte deleted file mode 100644 index f29dc73d..00000000 --- a/new-web/src/routes/[node]/settings/device-passthrough/+page.svelte +++ /dev/null @@ -1,182 +0,0 @@ - - -{#snippet button(type: string)} - {#if activeRow !== null && activeRow.length === 1} - {#if type === 'enable-passthrough' && !activeRow[0].name.startsWith('ppt')} - - {/if} - - {#if type === 'disable-passthrough' && activeRow[0].name.startsWith('ppt')} - - {/if} - {/if} -{/snippet} - -
    -
    - - - {@render button('enable-passthrough')} - {@render button('disable-passthrough')} -
    - -
    - -
    -
    - - { - if (modalState.action === 'add') { - const result = await addPPTDevice(modalState.add.domain, modalState.add.deviceId); - if (result.status === 'success') { - toast.success('Device added to passthrough', { - position: 'bottom-center' - }); - } else { - toast.error('Failed to add device to passthrough', { - position: 'bottom-center' - }); - } - - modalState.isOpen = false; - } - - if (modalState.action === 'remove') { - const result = await removePPTDevice(modalState.remove.id.toString()); - - if (result.status === 'success') { - toast.success('Device removed from passthrough', { - position: 'bottom-center' - }); - } else { - toast.error('Failed to remove device from passthrough', { - position: 'bottom-center' - }); - } - - modalState.isOpen = false; - } - }, - onCancel: () => { - modalState.isOpen = false; - } - }} -> diff --git a/new-web/src/routes/[node]/settings/device-passthrough/+page.ts b/new-web/src/routes/[node]/settings/device-passthrough/+page.ts deleted file mode 100644 index 477be7ec..00000000 --- a/new-web/src/routes/[node]/settings/device-passthrough/+page.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { getPCIDevices, getPPTDevices } from '$lib/api/system/pci'; -import { SEVEN_DAYS } from '$lib/utils'; -import { cachedFetch } from '$lib/utils/http'; - -export async function load() { - const cacheDuration = SEVEN_DAYS; - const [pciDevices, pptDevices] = await Promise.all([ - cachedFetch('pciDevices', async () => await getPCIDevices(), cacheDuration), - cachedFetch('pptDevices', async () => await getPPTDevices(), cacheDuration) - ]); - - return { - pciDevices, - pptDevices - }; -} diff --git a/new-web/src/routes/[node]/storage/disks/+page.svelte b/new-web/src/routes/[node]/storage/disks/+page.svelte deleted file mode 100644 index 26ff362b..00000000 --- a/new-web/src/routes/[node]/storage/disks/+page.svelte +++ /dev/null @@ -1,345 +0,0 @@ - - -{#snippet button(type: string)} - {#if type == 'smart' && buttonAbilities.smart.ability} - - {/if} - - {#if type == 'gpt' && buttonAbilities.gpt.ability} - - {/if} - - {#if type == 'wipe-disk' && buttonAbilities.wipe.ability && activeDisk !== null} - - {/if} - - {#if type == 'wipe-partition' && buttonAbilities.wipe.ability && activePartition !== null} - - {/if} - - {#if type == 'partition' && buttonAbilities.createPartition.ability} - - {/if} -{/snippet} - -
    -
    - - - {@render button('smart')} - {@render button('gpt')} - {@render button('partition')} - {@render button('wipe-disk')} - {@render button('wipe-partition')} -
    - - { - smartModal.open = false; - } - }} - > - - -
    - - { - if (activeDisk || activePartition) { - const message = activeDisk ? 'Disk Wiped' : 'Partition Deleted'; - - const result = activeDisk - ? await destroyDisk(`/dev/${activeDisk.device}`) - : await destroyPartition(`/dev/${activePartition?.name}`); - - if (result.status === 'success') { - toast.success(message, { position: 'bottom-center' }); - activeRow = null; - } else { - handleAPIError(result); - if ( - (result.status === 'error' && result.message === 'error_wiping_disk') || - result.message === 'error_deleting_partition' - ) { - let message = ''; - if (result.error?.includes('Device busy')) { - if (activeDisk) { - message = 'Unable to wipe busy disk'; - } else { - message = 'Unable to delete busy partition'; - } - } else { - message = `Error ${activeDisk ? 'wiping disk' : 'deleting partition'}: ${result.error}`; - } - - toast.error(message, { position: 'bottom-center' }); - } - } - } - wipeModal.title = ''; - wipeModal.open = false; - }, - onCancel: () => { - wipeModal.title = ''; - wipeModal.open = false; - } - }} - customTitle={wipeModal.title} -> - - { - partitionModal.open = false; - partitionModal.disk = null; - }} -/> diff --git a/new-web/src/routes/[node]/storage/disks/+page.ts b/new-web/src/routes/[node]/storage/disks/+page.ts deleted file mode 100644 index 34c9c34a..00000000 --- a/new-web/src/routes/[node]/storage/disks/+page.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { listDisks } from '$lib/api/disk/disk'; -import { getPools } from '$lib/api/zfs/pool'; -import { SEVEN_DAYS } from '$lib/utils'; -import { cachedFetch } from '$lib/utils/http'; - -export async function load() { - const cacheDuration = SEVEN_DAYS; - const [disks, pools] = await Promise.all([ - cachedFetch('disks', async () => await listDisks(), cacheDuration), - cachedFetch('pools', getPools, cacheDuration) - ]); - - return { - disks, - pools - }; -} diff --git a/new-web/src/routes/[node]/storage/zfs/dashboard/+page.svelte b/new-web/src/routes/[node]/storage/zfs/dashboard/+page.svelte deleted file mode 100644 index 6d1c193c..00000000 --- a/new-web/src/routes/[node]/storage/zfs/dashboard/+page.svelte +++ /dev/null @@ -1,218 +0,0 @@ - - -{#snippet card(type: string)} - - - -
    - - {getCardDetails(type).title} -
    -
    -
    - -

    - {counts[type as CardType]} -

    -
    -
    -{/snippet} - -
    -
    - {#each ['pools', 'datasets', 'file_systems', 'volumes', 'snapshots'] as type} -
    - {@render card(type)} -
    - {/each} -
    - -
    - {#if pools.length > 0} -
    - - - -
    -
    - - Pool Usage -
    - -
    -
    -
    - - -
    - -
    -
    -
    -
    - {/if} -
    -
    diff --git a/new-web/src/routes/[node]/storage/zfs/dashboard/+page.ts b/new-web/src/routes/[node]/storage/zfs/dashboard/+page.ts deleted file mode 100644 index 7d83a1ad..00000000 --- a/new-web/src/routes/[node]/storage/zfs/dashboard/+page.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { getDatasets } from '$lib/api/zfs/datasets'; -import { getPools, getPoolStats } from '$lib/api/zfs/pool'; -import { SEVEN_DAYS } from '$lib/utils'; -import { cachedFetch } from '$lib/utils/http'; - -export async function load() { - const cacheDuration = SEVEN_DAYS; - const [datasets, pools, poolStats] = await Promise.all([ - cachedFetch('datasets', async () => await getDatasets(), cacheDuration), - cachedFetch('pools', getPools, cacheDuration), - cachedFetch('pool-stats', async () => await getPoolStats(1, 128), cacheDuration) - ]); - - return { - pools: pools, - datasets: datasets, - poolStats: poolStats - }; -} diff --git a/new-web/src/routes/[node]/storage/zfs/datasets/fs/+page.svelte b/new-web/src/routes/[node]/storage/zfs/datasets/fs/+page.svelte deleted file mode 100644 index f665dc38..00000000 --- a/new-web/src/routes/[node]/storage/zfs/datasets/fs/+page.svelte +++ /dev/null @@ -1,454 +0,0 @@ - - -{#snippet button(type: string)} - {#if activeRows && activeRows.length == 1} - {#if type === 'rollback-snapshot' && activeDataset?.type === 'snapshot'} - - {/if} - - {#if type === 'create-snapshot' && activeDataset?.type === 'filesystem'} - - {/if} - - {#if type === 'delete-snapshot' && activeDataset?.type === 'snapshot'} - - {/if} - - {#if type === 'edit-filesystem' && activeDataset?.type === 'filesystem'} - - {/if} - - {#if type === 'delete-filesystem' && activeDataset?.type === 'filesystem' && activeDataset?.name.includes('/')} - - {/if} - {:else if activeRows && activeRows.length > 1} - {#if activeDatasets.length > 0 && !poolsSelected} - {#if type === 'bulk-delete'} - - {/if} - {/if} - {/if} -{/snippet} - -
    -
    - - - - {@render button('create-snapshot')} - {@render button('rollback-snapshot')} - {@render button('delete-snapshot')} - {@render button('edit-filesystem')} - {@render button('delete-filesystem')} - {@render button('bulk-delete')} -
    - - -
    - - -{#if modals.snapshot.create.open && activeDataset && activeDataset.type === 'filesystem'} - -{/if} - - -{#if modals.snapshot.rollback.open && activeDataset && activeDataset.type === 'snapshot'} - ${activeDataset.name}? This action cannot be undone.`} - actions={{ - onConfirm: async () => { - if (activeDataset.properties.guid) { - const response = await rollbackSnapshot(activeDataset.properties.guid); - - if (response.status === 'error') { - handleAPIError(response); - toast.success(`Rolled back to snapshot ${activeDataset.name}`, { - position: 'bottom-center' - }); - } else { - toast.error(`Failed to rollback to snapshot ${activeDataset.name}`, { - position: 'bottom-center' - }); - } - } else { - toast.error('Snapshot GUID not found', { - position: 'bottom-center' - }); - } - - modals.snapshot.rollback.open = false; - }, - onCancel: () => { - modals.snapshot.rollback.open = false; - } - }} - /> -{/if} - - -{#if modals.snapshot.delete.open && activeDataset && activeDataset.type === 'snapshot'} - -{/if} - - -{#if modals.fs.delete.open && activeDataset && activeDataset.type === 'filesystem'} - { - if (activeDataset.properties.guid) { - const response = await deleteFileSystem(activeDataset); - - if (response.status === 'success') { - toast.success(`Deleted filesystem ${activeDataset.name}`, { - position: 'bottom-center' - }); - } else { - handleAPIError(response); - toast.error(`Failed to delete filesystem ${activeDataset.name}`, { - position: 'bottom-center' - }); - } - } else { - toast.error('Filesystem GUID not found', { - position: 'bottom-center' - }); - } - - modals.fs.delete.open = false; - }, - onCancel: () => { - modals.fs.delete.open = false; - } - }} - /> -{/if} - - -{#if modals.bulk.delete.open && activeDatasets.length > 0} - { - const response = await bulkDelete(activeDatasets); - if (response.status === 'success') { - toast.success(`Deleted ${activeDatasets.length} datasets`, { - position: 'bottom-center' - }); - } else { - handleAPIError(response); - toast.error('Failed to delete datasets', { - position: 'bottom-center' - }); - } - - modals.bulk.delete.open = false; - }, - onCancel: () => { - modals.bulk.delete.open = false; - } - }} - /> -{/if} - - -{#if modals.fs.create.open} - -{/if} - - -{#if modals.fs.edit.open && activeDataset && activeDataset.type === 'filesystem'} - -{/if} diff --git a/new-web/src/routes/[node]/storage/zfs/datasets/fs/+page.ts b/new-web/src/routes/[node]/storage/zfs/datasets/fs/+page.ts deleted file mode 100644 index 96859628..00000000 --- a/new-web/src/routes/[node]/storage/zfs/datasets/fs/+page.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { getDatasets } from '$lib/api/zfs/datasets'; -import { getPools } from '$lib/api/zfs/pool'; -import { SEVEN_DAYS } from '$lib/utils'; -import { cachedFetch } from '$lib/utils/http'; - -export async function load() { - const cacheDuration = SEVEN_DAYS; - const [datasets, pools] = await Promise.all([ - cachedFetch('datasets', async () => await getDatasets(), cacheDuration), - cachedFetch('pools', getPools, cacheDuration) - ]); - - return { - pools: pools, - datasets: datasets - }; -} diff --git a/new-web/src/routes/[node]/storage/zfs/datasets/snapshots/+page.svelte b/new-web/src/routes/[node]/storage/zfs/datasets/snapshots/+page.svelte deleted file mode 100644 index e036aa46..00000000 --- a/new-web/src/routes/[node]/storage/zfs/datasets/snapshots/+page.svelte +++ /dev/null @@ -1,264 +0,0 @@ - - -{#snippet button(type: string)} - {#if type === 'delete-snapshot' && activeRows && activeRows.length >= 1 && !isPoolSelected} - - {/if} - - {#if type === 'view-periodics' && activePool && activePeriodics && activePeriodics.length > 0} - - {/if} -{/snippet} - -
    -
    - - - - - {@render button('delete-snapshot')} - {@render button('view-periodics')} -
    - - -
    - - -{#if modals.snapshot.create.open} - -{/if} - - -{#if modals.snapshot.delete.open && activeDatasets && activeDatasets.length === 1} - -{/if} - - -{#if modals.snapshot.bulkDelete.open && activeDatasets && activeDatasets.length > 0} - 1 ? 's' : ''}? This action cannot be undone.`} - actions={{ - onConfirm: async () => { - const response = await bulkDelete(activeDatasets); - if (response.status === 'success') { - toast.success( - `Deleted ${activeDatasets.length} snapshot${activeDatasets.length > 1 ? 's' : ''}`, - { - position: 'bottom-center' - } - ); - } else { - handleAPIError(response); - toast.error('Failed to delete snapshots', { - position: 'bottom-center' - }); - } - - modals.snapshot.bulkDelete.open = false; - }, - onCancel: () => { - modals.snapshot.bulkDelete.open = false; - } - }} - /> -{/if} - -{#if modals.snapshot.periodics.open && activePeriodics && activePeriodics.length > 0} - -{/if} diff --git a/new-web/src/routes/[node]/storage/zfs/datasets/snapshots/+page.ts b/new-web/src/routes/[node]/storage/zfs/datasets/snapshots/+page.ts deleted file mode 100644 index 16d1b8a7..00000000 --- a/new-web/src/routes/[node]/storage/zfs/datasets/snapshots/+page.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { getDatasets, getPeriodicSnapshots } from '$lib/api/zfs/datasets'; -import { getPools } from '$lib/api/zfs/pool'; -import { SEVEN_DAYS } from '$lib/utils'; -import { cachedFetch } from '$lib/utils/http'; - -export async function load() { - const cacheDuration = SEVEN_DAYS; - const [datasets, pools, periodicSnapshots] = await Promise.all([ - cachedFetch('datasets', async () => await getDatasets(), cacheDuration), - cachedFetch('pools', getPools, cacheDuration), - cachedFetch('periodicSnapshots', async () => await getPeriodicSnapshots(), cacheDuration) - ]); - - return { - pools: pools, - periodicSnapshots: periodicSnapshots, - datasets: datasets - }; -} diff --git a/new-web/src/routes/[node]/storage/zfs/datasets/volumes/+page.svelte b/new-web/src/routes/[node]/storage/zfs/datasets/volumes/+page.svelte deleted file mode 100644 index a42d84d2..00000000 --- a/new-web/src/routes/[node]/storage/zfs/datasets/volumes/+page.svelte +++ /dev/null @@ -1,444 +0,0 @@ - - -{#snippet button(type: string)} - {#if activeRows && activeRows.length == 1} - {#if type === 'flash-file' && activeVolume?.type === 'volume'} - - {/if} - - {#if type === 'create-snapshot' && activeVolume?.type === 'volume'} - - {/if} - - {#if type === 'delete-snapshot' && activeSnapshot?.type === 'snapshot'} - - {/if} - - {#if type === 'delete-volume' && activeVolume?.type === 'volume'} - - {/if} - - {#if type === 'edit-volume' && activeVolume?.type === 'volume'} - - {/if} - {:else if activeRows && activeRows.length > 1} - {#if activeDatasets.length > 0 && !poolsSelected} - {#if type === 'bulk-delete'} - - {/if} - {/if} - {/if} -{/snippet} - -
    -
    - - - - {@render button('flash-file')} - {@render button('create-snapshot')} - {@render button('delete-snapshot')} - {@render button('edit-volume')} - {@render button('delete-volume')} - {@render button('delete-volumes')} - {@render button('bulk-delete')} -
    - - -
    - - -{#if modals.volume.flash.open && activeVolume && activeVolume.type === 'volume'} - -{/if} - - -{#if modals.snapshot.create.open && activeVolume && activeVolume.type === 'volume'} - -{/if} - - -{#if modals.snapshot.delete.open && activeSnapshot && activeSnapshot.type === 'snapshot'} - -{/if} - - -{#if modals.volume.delete.open && activeVolume && activeVolume.type === 'volume'} - { - if (activeVolume.properties.guid) { - const response = await deleteVolume(activeVolume); - - if (response.status === 'success') { - toast.success(`Deleted volume ${activeVolume.name}`, { - position: 'bottom-center' - }); - } else { - handleAPIError(response); - toast.error(`Failed to delete volume ${activeVolume.name}`, { - position: 'bottom-center' - }); - } - } else { - toast.error('Volume GUID not found', { - position: 'bottom-center' - }); - } - - modals.volume.delete.open = false; - }, - onCancel: () => { - modals.volume.delete.open = false; - } - }} - /> -{/if} - - -{#if modals.bulk.delete.open && activeDatasets.length > 0} - { - const activeSnapshot = $state.snapshot(activeDatasets); - const response = await bulkDelete(activeDatasets); - if (response.status === 'success') { - toast.success(`Deleted ${activeSnapshot.length} datasets`, { - position: 'bottom-center' - }); - } else { - handleAPIError(response); - toast.error('Failed to delete datasets', { - position: 'bottom-center' - }); - } - - modals.bulk.delete.open = false; - }, - onCancel: () => { - modals.bulk.delete.open = false; - } - }} - /> -{/if} - - -{#if modals.volume.create.open} - -{/if} - - -{#if modals.volume.edit.open && activeVolume && activeVolume.type === 'volume'} - -{/if} diff --git a/new-web/src/routes/[node]/storage/zfs/datasets/volumes/+page.ts b/new-web/src/routes/[node]/storage/zfs/datasets/volumes/+page.ts deleted file mode 100644 index dc44975e..00000000 --- a/new-web/src/routes/[node]/storage/zfs/datasets/volumes/+page.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { getDownloads } from '$lib/api/utilities/downloader'; -import { getDatasets } from '$lib/api/zfs/datasets'; -import { getPools } from '$lib/api/zfs/pool'; -import { SEVEN_DAYS } from '$lib/utils'; -import { cachedFetch } from '$lib/utils/http'; - -export async function load() { - const cacheDuration = SEVEN_DAYS; - - const [datasets, pools, downloads] = await Promise.all([ - cachedFetch('datasets', async () => await getDatasets(), cacheDuration), - cachedFetch('pools', getPools, cacheDuration), - cachedFetch('downloads', async () => getDownloads(), cacheDuration) - ]); - - return { - pools: pools, - datasets: datasets, - downloads: downloads - }; -} diff --git a/new-web/src/routes/[node]/storage/zfs/pools/+page.svelte b/new-web/src/routes/[node]/storage/zfs/pools/+page.svelte deleted file mode 100644 index f038915a..00000000 --- a/new-web/src/routes/[node]/storage/zfs/pools/+page.svelte +++ /dev/null @@ -1,359 +0,0 @@ - - -{#snippet button(type: string)} - {#if activeRow && Object.keys(activeRow).length > 0} - {#if isPool(pools, activeRow.name)} - {#if type === 'pool-status'} - - {/if} - - {#if type === 'pool-scrub'} - {#if isPool(pools, activeRow.name)} - - {/if} - {/if} - - {#if type === 'pool-edit'} - - {/if} - - {#if type === 'pool-delete'} - - {/if} - {/if} - - {#if type === 'pool-replace'} - {#if isReplaceableDevice(pools, activeRow.name)} - - {/if} - {/if} - {/if} -{/snippet} - -
    -
    - - - - {@render button('pool-status')} - {@render button('pool-scrub')} - {@render button('pool-edit')} - {@render button('pool-delete')} - {@render button('pool-replace')} -
    - - -
    - - - - - { - modals.delete.open = false; - let pool = $state.snapshot(activePool); - let response = await deletePool(pool?.guid as string); - handleAPIResponse(response, { - success: `Pool ${pool?.name} deleted`, - error: parsePoolActionError(response) - }); - }, - onCancel: () => { - modals.delete.open = false; - } - }} -/> - -{#if modals.replace.data.pool} - -{/if} - - - -{#if activePool} - -{/if} diff --git a/new-web/src/routes/[node]/storage/zfs/pools/+page.ts b/new-web/src/routes/[node]/storage/zfs/pools/+page.ts deleted file mode 100644 index 34c9c34a..00000000 --- a/new-web/src/routes/[node]/storage/zfs/pools/+page.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { listDisks } from '$lib/api/disk/disk'; -import { getPools } from '$lib/api/zfs/pool'; -import { SEVEN_DAYS } from '$lib/utils'; -import { cachedFetch } from '$lib/utils/http'; - -export async function load() { - const cacheDuration = SEVEN_DAYS; - const [disks, pools] = await Promise.all([ - cachedFetch('disks', async () => await listDisks(), cacheDuration), - cachedFetch('pools', getPools, cacheDuration) - ]); - - return { - disks, - pools - }; -} diff --git a/new-web/src/routes/[node]/summary/+page.svelte b/new-web/src/routes/[node]/summary/+page.svelte deleted file mode 100644 index e20affb0..00000000 --- a/new-web/src/routes/[node]/summary/+page.svelte +++ /dev/null @@ -1,360 +0,0 @@ - - -
    -
    - -
    - - - - {basicInfo.hostname} - - - -
    -
    -
    -

    - - CPU Usage -

    -

    - {`${floatToNDecimals(cpuInfo.usage, 2)}% of ${cpuInfo.logicalCores} CPU(s)`} -

    -
    - -
    -
    -
    -

    - - {'RAM Usage'} -

    -

    - {`${floatToNDecimals(ramInfo.usedPercent, 2)}% of ${bytesToHumanReadable(ramInfo.total)}`} -

    -
    - -
    -
    -
    -

    - - {'Disk Usage'} -

    -

    - {floatToNDecimals(totalDiskUsage, 2)} % -

    -
    - -
    -
    -
    -

    - - {'I/O Delay'} -

    -

    {floatToNDecimals(ioDelay.delay, 3) || 0} %

    -
    - -
    -
    -
    -

    - {'Swap Usage'} -

    -

    - {`${floatToNDecimals(swapInfo.usedPercent, 2)}% of ${bytesToHumanReadable(swapInfo.total)}`} -

    -
    - -
    -
    - - - - - CPU(s) - - {`${cpuInfo.logicalCores} x ${cpuInfo.name}`} - - - - Operating System - {basicInfo.os} - - - Uptime - {formatUptime(basicInfo.uptime)} - - - Load Average - {basicInfo.loadAverage} - - - Boot Mode - {basicInfo.bootMode} - - - - Sylve Version - {basicInfo.sylveVersion} - - - -
    -
    - - - - -
    -
    -
    -
    diff --git a/new-web/src/routes/[node]/summary/+page.ts b/new-web/src/routes/[node]/summary/+page.ts deleted file mode 100644 index bf760240..00000000 --- a/new-web/src/routes/[node]/summary/+page.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { getBasicInfo } from '$lib/api/info/basic'; -import { getCPUInfo } from '$lib/api/info/cpu'; -import { getNetworkInterfaceInfoHistorical } from '$lib/api/info/network'; -import { getRAMInfo, getSwapInfo } from '$lib/api/info/ram'; -import { getIODelay } from '$lib/api/zfs/pool'; -import { SEVEN_DAYS } from '$lib/utils'; -import { cachedFetch } from '$lib/utils/http'; -import { getTotalDiskUsage } from '$lib/utils/zfs'; - -export async function load() { - const cacheDuration = SEVEN_DAYS; - const [ - basicInfo, - cpuInfo, - cpuInfoHistorical, - ramInfo, - ramInfoHistorical, - swapInfo, - swapInfoHistorical, - ioDelay, - ioDelayHistorical, - totalDiskUsage, - networkUsageHistorical - ] = await Promise.all([ - cachedFetch('basicInfo', getBasicInfo, cacheDuration), - cachedFetch('cpuInfo', getCPUInfo, cacheDuration), - cachedFetch( - 'cpuInfoHistorical', - () => - getCPUInfo({ - queryKey: ['cpuInfoHistorical'], - meta: undefined - }), - cacheDuration - ), - cachedFetch('ramInfo', getRAMInfo, cacheDuration), - cachedFetch( - 'ramInfoHistorical', - () => getRAMInfo({ queryKey: ['ramInfoHistorical'], meta: undefined }), - cacheDuration - ), - cachedFetch('swapInfo', getSwapInfo, cacheDuration), - cachedFetch( - 'swapInfoHistorical', - () => getSwapInfo({ queryKey: ['swapInfoHistorical'], meta: undefined }), - cacheDuration - ), - cachedFetch( - 'ioDelay', - () => getIODelay({ queryKey: ['ioDelay'], meta: undefined }), - cacheDuration - ), - cachedFetch( - 'ioDelayHistorical', - () => getIODelay({ queryKey: ['ioDelayHistorical'], meta: undefined }), - cacheDuration - ), - cachedFetch('totalDiskUsage', getTotalDiskUsage, cacheDuration), - cachedFetch('networkUsageHistorical', getNetworkInterfaceInfoHistorical, cacheDuration) - ]); - - return { - basicInfo, - cpuInfo, - cpuInfoHistorical, - ramInfo, - ramInfoHistorical, - swapInfo, - swapInfoHistorical, - ioDelay, - ioDelayHistorical, - totalDiskUsage, - networkUsageHistorical - }; -} diff --git a/new-web/src/routes/[node]/utilities/downloader/+page.svelte b/new-web/src/routes/[node]/utilities/downloader/+page.svelte deleted file mode 100644 index cc833d69..00000000 --- a/new-web/src/routes/[node]/utilities/downloader/+page.svelte +++ /dev/null @@ -1,324 +0,0 @@ - - -{#snippet button(type: string)} - {#if type === 'delete' && onlyParentsSelected} - {#if activeRows && activeRows.length >= 1} - - {/if} - {/if} - - {#if type === 'download' && onlyChildSelected && isDownloadCompleted} - {#if activeRows && activeRows.length == 1} - - {/if} - {/if} - - {#if type === 'download' && httpDownloadSelected && isDownloadCompleted} - {#if activeRows && activeRows.length == 1} - - {/if} - {/if} -{/snippet} - -
    -
    - - - - - {@render button('delete')} - {@render button('download')} -
    - - - -
    - - -
    - - Download -
    -
    -
    - -
    - - -
    -
    - - - - -
    - -
    -
    -
    -
    - - - - { - const id = activeRows ? activeRows[0]?.id : null; - const result = await deleteDownload(id as number); - if (isAPIResponse(result) && result.status === 'success') { - modalState.isDelete = false; - modalState.title = ''; - activeRows = null; - } else { - handleAPIError(result as APIResponse); - toast.error('Failed to delete download', { position: 'bottom-center' }); - } - }, - onCancel: () => { - modalState.isDelete = false; - modalState.title = ''; - } - }} - > - - { - const ids = activeRows ? activeRows.map((row) => row.id) : []; - const result = await bulkDeleteDownloads(ids as number[]); - if (isAPIResponse(result) && result.status === 'success') { - modalState.isBulkDelete = false; - modalState.title = ''; - activeRows = null; - } else { - handleAPIError(result as APIResponse); - toast.error('Failed to delete downloads', { position: 'bottom-center' }); - } - }, - onCancel: () => { - modalState.isBulkDelete = false; - modalState.title = ''; - } - }} - > -
    diff --git a/new-web/src/routes/[node]/utilities/downloader/+page.ts b/new-web/src/routes/[node]/utilities/downloader/+page.ts deleted file mode 100644 index 83b1778d..00000000 --- a/new-web/src/routes/[node]/utilities/downloader/+page.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { getDownloads } from '$lib/api/utilities/downloader'; -import { SEVEN_DAYS } from '$lib/utils'; -import { cachedFetch } from '$lib/utils/http'; - -export async function load() { - const cacheDuration = SEVEN_DAYS; - const [downloads] = await Promise.all([ - cachedFetch('downloads', async () => getDownloads(), cacheDuration) - ]); - - return { - downloads - }; -} diff --git a/new-web/src/routes/[node]/vm/[node]/+page.svelte b/new-web/src/routes/[node]/vm/[node]/+page.svelte deleted file mode 100644 index e69de29b..00000000 diff --git a/new-web/src/routes/[node]/vm/[node]/console/+page.svelte b/new-web/src/routes/[node]/vm/[node]/console/+page.svelte deleted file mode 100644 index 87431615..00000000 --- a/new-web/src/routes/[node]/vm/[node]/console/+page.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - -
    - -
    diff --git a/new-web/src/routes/[node]/vm/[node]/console/+page.ts b/new-web/src/routes/[node]/vm/[node]/console/+page.ts deleted file mode 100644 index 743dde65..00000000 --- a/new-web/src/routes/[node]/vm/[node]/console/+page.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { getVMs } from '$lib/api/vm/vm'; - -export async function load({ params }) { - const vms = (await getVMs()) || []; - const vm = vms.find((vm) => vm.vmId === Number(params.node)); - - let port = 0; - let password = ''; - - if (vm) { - port = vm.vncPort; - password = vm.vncPassword; - } - - return { - port, - password - }; -} diff --git a/new-web/src/routes/[node]/vm/[node]/storage/+page.svelte b/new-web/src/routes/[node]/vm/[node]/storage/+page.svelte deleted file mode 100644 index 54a5bb61..00000000 --- a/new-web/src/routes/[node]/vm/[node]/storage/+page.svelte +++ /dev/null @@ -1,148 +0,0 @@ - - -{#snippet button(type: string)} - {#if domain && domain.status === 'Shutoff' && activeRows && activeRows.length === 1} - {#if type === 'detach'} - - {/if} - {/if} -{/snippet} - -
    -
    - - - {@render button('detach')} -
    - - -
    diff --git a/new-web/src/routes/[node]/vm/[node]/storage/+page.ts b/new-web/src/routes/[node]/vm/[node]/storage/+page.ts deleted file mode 100644 index aeac4536..00000000 --- a/new-web/src/routes/[node]/vm/[node]/storage/+page.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { getDownloads } from '$lib/api/utilities/downloader'; -import { getVMDomain, getVMs } from '$lib/api/vm/vm'; -import { getDatasets } from '$lib/api/zfs/datasets'; -import { getPools } from '$lib/api/zfs/pool'; -import { SEVEN_DAYS } from '$lib/utils.js'; -import { cachedFetch } from '$lib/utils/http'; - -export async function load({ params }) { - const cacheDuration = SEVEN_DAYS; - const vmId = params.node; - - const [vms, domain, datasets, pools, downloads] = await Promise.all([ - cachedFetch('vm-list', async () => getVMs(), cacheDuration), - cachedFetch(`vm-domain-${vmId}`, async () => getVMDomain(Number(vmId)), cacheDuration), - cachedFetch('datasets', async () => await getDatasets(), cacheDuration), - cachedFetch('pools', getPools, cacheDuration), - cachedFetch('downloads', async () => getDownloads(), cacheDuration) - ]); - - return { - vms: vms, - domain: domain, - datasets: datasets, - pools: pools, - downloads: downloads - }; -} diff --git a/new-web/src/routes/[node]/vm/[node]/summary/+page.svelte b/new-web/src/routes/[node]/vm/[node]/summary/+page.svelte deleted file mode 100644 index f00decdd..00000000 --- a/new-web/src/routes/[node]/vm/[node]/summary/+page.svelte +++ /dev/null @@ -1,383 +0,0 @@ - - -{#snippet button(type: string)} - {#if type === 'start' && domain.id == -1 && domain.status !== 'Running'} - - - - {:else if type === 'stop' && domain.id !== -1 && domain.status === 'Running'} - - {/if} -{/snippet} - -
    -
    - {@render button('start')} - {@render button('stop')} -
    - -
    - -
    - - - - {`${vm.name} ${udTime ? `(${udTime})` : ''}`} - - - -
    -
    - - {'Status'} -
    -
    - {domain.status} -
    -
    - -
    -
    -

    - - {'CPU Usage'} -

    -

    - {#if domain.status === 'Running'} - {`${floatToNDecimals(recentStat.cpuUsage, 2)}% of ${vm.cpuCores * vm.cpuThreads * vm.cpuSockets} vCPU(s)`} - {:else} - {`0% of ${vm.cpuCores * vm.cpuThreads * vm.cpuSockets} vCPU(s)`} - {/if} -

    -
    - - {#if domain.status === 'Running'} - - {:else} - - {/if} -
    - -
    -
    -

    - - {'RAM Usage'} -

    -

    - {#if domain.status === 'Running'} - {`${floatToNDecimals(recentStat.memoryUsage, 2)}% of ${humanFormat(vm.ram)}`} - {:else} - {`0% of ${humanFormat(vm.ram)}`} - {/if} -

    -
    - - {#if domain.status === 'Running'} - - {:else} - - {/if} -
    -
    -
    - - - - - Description - - - - - - -
    - -
    - - -
    -
    -
    -
    - - { - handleDelete(); - }, - onCancel: () => { - modalState.isDeleteOpen = false; - } - }} -> - - diff --git a/new-web/src/routes/[node]/vm/[node]/summary/+page.ts b/new-web/src/routes/[node]/vm/[node]/summary/+page.ts deleted file mode 100644 index 35efdccd..00000000 --- a/new-web/src/routes/[node]/vm/[node]/summary/+page.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { getStats, getVMDomain, getVMs } from '$lib/api/vm/vm'; -import { SEVEN_DAYS } from '$lib/utils.js'; -import { cachedFetch } from '$lib/utils/http'; - -export async function load({ params }) { - const cacheDuration = SEVEN_DAYS; - const vmId = params.node; - - const [vms, domain, stats] = await Promise.all([ - cachedFetch('vm-list', async () => getVMs(), cacheDuration), - cachedFetch(`vm-domain-${vmId}`, async () => getVMDomain(Number(vmId)), cacheDuration), - cachedFetch(`vm-stats-${vmId}`, async () => getStats(Number(vmId), 10), cacheDuration) - ]); - - return { - vms: vms, - domain: domain, - stats: stats - }; -} diff --git a/new-web/static/logo/black.svg b/new-web/static/logo/black.svg deleted file mode 100644 index 73e260d9..00000000 --- a/new-web/static/logo/black.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/new-web/static/logo/index.html b/new-web/static/logo/index.html deleted file mode 100644 index 76c517a7..00000000 --- a/new-web/static/logo/index.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - Document - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/new-web/static/logo/white.svg b/new-web/static/logo/white.svg deleted file mode 100644 index 7575b4d6..00000000 --- a/new-web/static/logo/white.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/new-web/svelte.config.js b/new-web/svelte.config.js deleted file mode 100644 index 31d8e2cf..00000000 --- a/new-web/svelte.config.js +++ /dev/null @@ -1,13 +0,0 @@ -import adapter from '@sveltejs/adapter-static'; -import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; - -const config = { - preprocess: vitePreprocess(), - kit: { - adapter: adapter({ - fallback: 'index.html' - }) - } -}; - -export default config; diff --git a/new-web/tsconfig.json b/new-web/tsconfig.json deleted file mode 100644 index 0b2d8865..00000000 --- a/new-web/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "moduleResolution": "bundler" - } - // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias - // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files - // - // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes - // from the referenced tsconfig.json - TypeScript does not merge them in -} diff --git a/new-web/vite.config.ts b/new-web/vite.config.ts deleted file mode 100644 index 3f91c631..00000000 --- a/new-web/vite.config.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { sveltekit } from '@sveltejs/kit/vite'; -import tailwindcss from '@tailwindcss/vite'; -import { defineConfig } from 'vite'; -import { wuchale } from 'wuchale'; - -export default defineConfig({ - plugins: [ - wuchale({ - localesDir: 'src/lib/locales', - otherLocales: ['mal'] - }), - tailwindcss(), - sveltekit() - ], - optimizeDeps: { - esbuildOptions: { - target: 'esnext' - }, - exclude: ['xterm', 'Xterm.svelte', '@battlefieldduck/xterm-svelte'] - }, - build: { - target: 'esnext' - } -}); diff --git a/web/.gitignore b/web/.gitignore index 3b462cb0..c826bc02 100644 --- a/web/.gitignore +++ b/web/.gitignore @@ -21,3 +21,6 @@ Thumbs.db # Vite vite.config.js.timestamp-* vite.config.ts.timestamp-* + +src/lib/locales/*.json +src/lib/locales/*.js diff --git a/web/.prettierignore b/web/.prettierignore index ab78a95d..6562bcbb 100644 --- a/web/.prettierignore +++ b/web/.prettierignore @@ -2,3 +2,5 @@ package-lock.json pnpm-lock.yaml yarn.lock +bun.lock +bun.lockb diff --git a/new-web/README.md b/web/README.md similarity index 100% rename from new-web/README.md rename to web/README.md diff --git a/web/components.json b/web/components.json index 8d00bd3a..c5d91b45 100644 --- a/web/components.json +++ b/web/components.json @@ -1,14 +1,16 @@ { "$schema": "https://shadcn-svelte.com/schema.json", - "style": "default", "tailwind": { - "config": "tailwind.config.ts", - "css": "src/css/app.css", + "css": "src/app.css", "baseColor": "slate" }, "aliases": { "components": "$lib/components", - "utils": "$lib/utils" + "utils": "$lib/utils", + "ui": "$lib/components/ui", + "hooks": "$lib/hooks", + "lib": "$lib" }, - "typescript": true + "typescript": true, + "registry": "https://shadcn-svelte.com/registry" } diff --git a/web/eslint.config.js b/web/eslint.config.js index 017be088..ef07d322 100644 --- a/web/eslint.config.js +++ b/web/eslint.config.js @@ -6,6 +6,7 @@ import globals from 'globals'; import { fileURLToPath } from 'node:url'; import ts from 'typescript-eslint'; import svelteConfig from './svelte.config.js'; + const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url)); export default ts.config( @@ -14,19 +15,15 @@ export default ts.config( ...ts.configs.recommended, ...svelte.configs.recommended, prettier, - ...svelte.configs['flat/prettier'], + ...svelte.configs.prettier, { languageOptions: { - globals: { - ...globals.browser, - ...globals.node - } - } + globals: { ...globals.browser, ...globals.node } + }, + rules: { 'no-undef': 'off' } }, { files: ['**/*.svelte', '**/*.svelte.ts', '**/*.svelte.js'], - ignores: ['eslint.config.js', 'svelte.config.js'], - languageOptions: { parserOptions: { projectService: true, diff --git a/web/package-lock.json b/web/package-lock.json index 6ccfcb22..364ba083 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,95 +1,73 @@ { - "name": "sylve-web", + "name": "new-web", "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "sylve-web", + "name": "new-web", "version": "0.0.1", - "license": "BSD-2-Clause", "dependencies": { "@battlefieldduck/xterm-svelte": "^2.1.0", - "@fontsource/noto-sans": "^5.2.5", - "@layerstack/svelte-stores": "^1.0.0", - "@novnc/novnc": "1.5.0", + "@fontsource/noto-sans": "^5.2.7", + "@layerstack/svelte-stores": "^1.0.2", + "@lucide/svelte": "^0.516.0", "@svelte-put/shortcut": "^4.1.0", "@sveltestack/svelte-query": "^1.6.0", - "@thisux/sveltednd": "^0.0.20", - "@types/novnc__novnc": "^1.6.0", - "@types/tabulator-tables": "^6.2.6", - "adze": "^2.2.1", - "axios": "^1.8.2", - "d3-array": "^3.2.4", - "d3-scale": "^4.0.2", + "adze": "^2.2.4", + "axios": "^1.10.0", + "chart.js": "^4.5.0", + "chartjs-adapter-date-fns": "^3.0.0", + "chartjs-plugin-zoom": "^2.2.0", "d3-shape": "^3.2.0", "date-fns": "^4.1.0", "date-fns-tz": "^3.2.0", - "fast-cidr-tools": "^0.3.2", "human-format": "^1.2.1", - "ip-cidr": "^4.0.2", "is-cidr": "^5.1.1", "is-ip": "^5.0.1", - "layerchart": "^1.0.5", - "mode-watcher": "^0.5.1", - "nanoid": "^5.1.5", - "svelte-french-toast": "^2.0.0-alpha.0", - "svelte-i18n": "^4.0.1", - "svelte-multiselect": "^11.0.0-rc.1", - "svelte-ux": "^1.0.3", + "lucide-svelte": "^0.516.0", "tabulator-tables": "^6.3.1", - "validator": "^13.15.0" + "validator": "^13.15.15", + "wuchale": "0.5.5", + "zod": "^3.25.67" }, "devDependencies": { "@eslint/compat": "^1.2.5", "@eslint/js": "^9.18.0", - "@iconify/svelte": "^4.2.0", + "@iconify/svelte": "^5.0.0", + "@internationalized/date": "^3.8.2", "@sveltejs/adapter-static": "^3.0.8", - "@sveltejs/kit": "^2.20.3", + "@sveltejs/kit": "^2.16.0", "@sveltejs/vite-plugin-svelte": "^5.0.0", - "@tailwindcss/container-queries": "^0.1.1", - "@tailwindcss/forms": "^0.5.10", - "@tailwindcss/typography": "^0.5.16", + "@tailwindcss/forms": "^0.5.9", + "@tailwindcss/typography": "^0.5.15", + "@tailwindcss/vite": "^4.0.0", "@types/d3-scale": "^4.0.9", "@types/d3-shape": "^3.1.7", - "autoprefixer": "^10.4.20", - "bits-ui": "^0.22.0", + "@types/tabulator-tables": "^6.2.6", + "@types/validator": "^13.15.2", + "bits-ui": "^2.8.0", "clsx": "^2.1.1", - "cmdk-sv": "^0.0.19", "eslint": "^9.18.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-svelte": "^3.0.0", - "formsnap": "^1.0.1", "globals": "^16.0.0", - "lucide-svelte": "^0.476.0", - "paneforge": "^0.0.6", + "layerchart": "^2.0.0-next.18", + "mode-watcher": "^1.0.8", + "paneforge": "^1.0.0-next.5", "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.3", - "prettier-plugin-tailwindcss": "^0.6.10", - "sass": "^1.85.1", - "svelte": "^5.25.6", + "prettier-plugin-tailwindcss": "^0.6.11", + "svelte": "^5.0.0", "svelte-check": "^4.0.0", - "sveltekit-superforms": "^2.23.1", - "tailwind-merge": "^3.0.2", - "tailwind-variants": "^0.3.1", - "tailwindcss": "^3.4.17", + "svelte-sonner": "^1.0.5", + "tailwind-merge": "^3.3.1", + "tailwind-variants": "^1.0.0", + "tailwindcss": "^4.0.0", + "tw-animate-css": "^1.3.4", "typescript": "^5.0.0", "typescript-eslint": "^8.20.0", - "vite": "^6.2.4", - "vite-plugin-compression2": "^1.3.3", - "zod": "^3.25.0" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "vite": "^6.2.6" } }, "node_modules/@ampproject/remapping": { @@ -105,39 +83,6 @@ "node": ">=6.0.0" } }, - "node_modules/@ark/schema": { - "version": "0.46.0", - "resolved": "https://registry.npmjs.org/@ark/schema/-/schema-0.46.0.tgz", - "integrity": "sha512-c2UQdKgP2eqqDArfBqQIJppxJHvNNXuQPeuSPlDML4rjw+f1cu0qAlzOG4b8ujgm9ctIDWwhpyw6gjG5ledIVQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@ark/util": "0.46.0" - } - }, - "node_modules/@ark/util": { - "version": "0.46.0", - "resolved": "https://registry.npmjs.org/@ark/util/-/util-0.46.0.tgz", - "integrity": "sha512-JPy/NGWn/lvf1WmGCPw2VGpBg5utZraE84I7wli18EDF3p3zc/e9WolT35tINeZO3l7C77SjqRJeAUoT0CvMRg==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@babel/runtime": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", - "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@battlefieldduck/xterm-svelte": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@battlefieldduck/xterm-svelte/-/xterm-svelte-2.1.0.tgz", @@ -161,9 +106,10 @@ } }, "node_modules/@dagrejs/dagre": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@dagrejs/dagre/-/dagre-1.1.4.tgz", - "integrity": "sha512-QUTc54Cg/wvmlEUxB+uvoPVKFazM1H18kVHBQNmK2NbrDR5ihOCR6CXLnDSZzMcSQKJtabPUWridBOlJM3WkDg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@dagrejs/dagre/-/dagre-1.1.5.tgz", + "integrity": "sha512-Ghgrh08s12DCL5SeiR6AoyE80mQELTWhJBRmXfFoqDiFkR458vPEdgTbbjA0T+9ETNxUblnD0QW55tfdvi5pjQ==", + "dev": true, "license": "MIT", "dependencies": { "@dagrejs/graphlib": "2.2.4" @@ -173,304 +119,16 @@ "version": "2.2.4", "resolved": "https://registry.npmjs.org/@dagrejs/graphlib/-/graphlib-2.2.4.tgz", "integrity": "sha512-mepCf/e9+SKYy1d02/UkvSy6+6MoyXhVxP8lLDfA7BPE1X1d4dR0sZznmbM8/XVJ1GPM+Svnx7Xj6ZweByWUkw==", + "dev": true, "license": "MIT", "engines": { "node": ">17.0.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", "cpu": [ "arm64" ], @@ -484,27 +142,10 @@ "node": ">=18" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", "cpu": [ "arm64" ], @@ -518,95 +159,10 @@ "node": ">=18" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, "license": "MIT", "dependencies": { @@ -646,9 +202,9 @@ } }, "node_modules/@eslint/compat": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.7.tgz", - "integrity": "sha512-xvv7hJE32yhegJ8xNAnb62ggiAwTYHBpUCWhRxEj/ksvgDJuSXfoDkBcRYaYNFiJ+jH0IE3K16hd+xXzhBgNbg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.3.0.tgz", + "integrity": "sha512-ZBygRBqpDYiIHsN+d1WyHn3TYgzgpzLEcgJUxTATyiInQbKZz6wZb6+ljwdg8xeeOe4v03z6Uh6lELiw0/mVhQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -664,9 +220,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", - "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.1.tgz", + "integrity": "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -678,10 +234,20 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.3.tgz", + "integrity": "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/core": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", - "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -692,9 +258,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", - "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "license": "MIT", "dependencies": { @@ -729,13 +295,16 @@ } }, "node_modules/@eslint/js": { - "version": "9.21.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", - "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.29.0.tgz", + "integrity": "sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==", "dev": true, "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" } }, "node_modules/@eslint/object-schema": { @@ -749,43 +318,50 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", - "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz", + "integrity": "sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.12.0", + "@eslint/core": "^0.15.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@exodus/schemasafe": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz", - "integrity": "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==", + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.0.tgz", + "integrity": "sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==", "dev": true, - "license": "MIT", - "optional": 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.9", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", - "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.1.tgz", + "integrity": "sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==", + "dev": true, "license": "MIT", "dependencies": { "@floating-ui/utils": "^0.2.9" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.13", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", - "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.1.tgz", + "integrity": "sha512-cwsmW/zyw5ltYTUeeYJ60CnQuPqmGwuGVhG9w0PRaRKkAyi38BT5CKrpIbb+jtahSwUl04cWzSx9ZOIxeS6RsQ==", + "dev": true, "license": "MIT", "dependencies": { - "@floating-ui/core": "^1.6.0", + "@floating-ui/core": "^1.7.1", "@floating-ui/utils": "^0.2.9" } }, @@ -793,122 +369,18 @@ "version": "0.2.9", "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==", + "dev": true, "license": "MIT" }, "node_modules/@fontsource/noto-sans": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans/-/noto-sans-5.2.5.tgz", - "integrity": "sha512-g3hWgsQayHQGVXgQKjbHKpS7YQFQY8azwXFCi3ZkhgCK5fZXe3udeQYrZJJ4PMswGkNhoDPRR9OJZBlMjzZAEQ==", + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@fontsource/noto-sans/-/noto-sans-5.2.7.tgz", + "integrity": "sha512-mTpMSMft6Nb+ZSF4DSiJVYnLzKCRjHNFieZ/swuxSDQK+v1hjUeDTBxLHKUdfmC+ZPg6TUEWw4oRq2ltnDbSjQ==", "license": "OFL-1.1", "funding": { "url": "https://github.com/sponsors/ayuhito" } }, - "node_modules/@formatjs/ecma402-abstract": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.3.tgz", - "integrity": "sha512-pJT1OkhplSmvvr6i3CWTPvC/FGC06MbN5TNBfRO6Ox62AEz90eMq+dVvtX9Bl3jxCEkS0tATzDarRZuOLw7oFg==", - "license": "MIT", - "dependencies": { - "@formatjs/fast-memoize": "2.2.6", - "@formatjs/intl-localematcher": "0.6.0", - "decimal.js": "10", - "tslib": "2" - } - }, - "node_modules/@formatjs/fast-memoize": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.6.tgz", - "integrity": "sha512-luIXeE2LJbQnnzotY1f2U2m7xuQNj2DA8Vq4ce1BY9ebRZaoPB1+8eZ6nXpLzsxuW5spQxr7LdCg+CApZwkqkw==", - "license": "MIT", - "dependencies": { - "tslib": "2" - } - }, - "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.11.1.tgz", - "integrity": "sha512-o0AhSNaOfKoic0Sn1GkFCK4MxdRsw7mPJ5/rBpIqdvcC7MIuyUSW8WChUEvrK78HhNpYOgqCQbINxCTumJLzZA==", - "license": "MIT", - "dependencies": { - "@formatjs/ecma402-abstract": "2.3.3", - "@formatjs/icu-skeleton-parser": "1.8.13", - "tslib": "2" - } - }, - "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.13", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.13.tgz", - "integrity": "sha512-N/LIdTvVc1TpJmMt2jVg0Fr1F7Q1qJPdZSCs19unMskCmVQ/sa0H9L8PWt13vq+gLdLg1+pPsvBLydL1Apahjg==", - "license": "MIT", - "dependencies": { - "@formatjs/ecma402-abstract": "2.3.3", - "tslib": "2" - } - }, - "node_modules/@formatjs/intl-localematcher": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.0.tgz", - "integrity": "sha512-4rB4g+3hESy1bHSBG3tDFaMY2CH67iT7yne1e+0CLTsGLDcmoEWWpJjjpWVaYgYfYuohIRuo0E+N536gd2ZHZA==", - "license": "MIT", - "dependencies": { - "tslib": "2" - } - }, - "node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz", - "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@gcornut/valibot-json-schema": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/@gcornut/valibot-json-schema/-/valibot-json-schema-0.31.0.tgz", - "integrity": "sha512-3xGptCurm23e7nuPQkdrE5rEs1FeTPHhAUsBuwwqG4/YeZLwJOoYZv+fmsppUEfo5y9lzUwNQrNqLS/q7HMc7g==", - "dev": true, - "optional": true, - "dependencies": { - "valibot": "~0.31.0" - }, - "bin": { - "valibot-json-schema": "bin/index.js" - }, - "optionalDependencies": { - "@types/json-schema": ">= 7.0.14", - "esbuild": ">= 0.18.20", - "esbuild-runner": ">= 2.2.2" - } - }, - "node_modules/@gcornut/valibot-json-schema/node_modules/valibot": { - "version": "0.31.1", - "resolved": "https://registry.npmjs.org/valibot/-/valibot-0.31.1.tgz", - "integrity": "sha512-2YYIhPrnVSz/gfT2/iXVTrSj92HwchCt9Cga/6hX4B26iCz9zkIsGTS0HjDYTZfTi1Un0X6aRvhBi1cfqs/i0Q==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -962,9 +434,9 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", - "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -976,9 +448,9 @@ } }, "node_modules/@iconify/svelte": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@iconify/svelte/-/svelte-4.2.0.tgz", - "integrity": "sha512-fEl0T7SAPonK7xk6xUlRPDmFDZVDe2Z7ZstlqeDS/sS8ve2uyU+Qa8rTWbIqzZJlRvONkK5kVXiUf9nIc+6OOQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@iconify/svelte/-/svelte-5.0.0.tgz", + "integrity": "sha512-Bm5iKnNpIWHuUlWaaf16QgVL1tcbQUUSdPdkvDlpmYXg3nFJSA1SLY9V4rRTd+K4h3QT12ZS7JHFLkf8khQd8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -999,30 +471,26 @@ "license": "MIT" }, "node_modules/@internationalized/date": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.7.0.tgz", - "integrity": "sha512-VJ5WS3fcVx0bejE/YHfbDKR/yawZgKqn/if+oEeLqNwBtPzVB06olkfcnojTmEMX+gTpH+FlQ69SHNitJ8/erQ==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.8.2.tgz", + "integrity": "sha512-/wENk7CbvLbkUvX1tu0mwq49CVkkWpkXubGel6birjRPyo6uQ4nQpnq5xZu823zRCwwn82zgHrvgF1vZyvmVgA==", "dev": true, "license": "Apache-2.0", "dependencies": { "@swc/helpers": "^0.5.0" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, "license": "ISC", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "minipass": "^7.0.4" }, "engines": { - "node": ">=12" + "node": ">=18.0.0" } }, "node_modules/@jridgewell/gen-mapping": { @@ -1073,27 +541,67 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@kurkle/color": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz", + "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==", + "license": "MIT" + }, "node_modules/@layerstack/svelte-actions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@layerstack/svelte-actions/-/svelte-actions-1.0.0.tgz", - "integrity": "sha512-cnVxMbcc+xYta9hwHnLja4a7bR7cfX/QW9jDY4ZCI8RIt+3lKNRE+u2XzWoGp4Qsx7A0/nGUIiLWpDBgO1ihsQ==", + "version": "1.0.1-next.12", + "resolved": "https://registry.npmjs.org/@layerstack/svelte-actions/-/svelte-actions-1.0.1-next.12.tgz", + "integrity": "sha512-dndWTlYu8b1u6vw2nrO7NssccoACArGG75WoNlyVC13KuENZlWdKE9Q79/wlnbq00NeQMNKMjJwRMsrKQj2ULA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.0", + "@layerstack/utils": "2.0.0-next.12", + "d3-scale": "^4.0.2" + } + }, + "node_modules/@layerstack/svelte-actions/node_modules/@layerstack/utils": { + "version": "2.0.0-next.12", + "resolved": "https://registry.npmjs.org/@layerstack/utils/-/utils-2.0.0-next.12.tgz", + "integrity": "sha512-fhGZUlSr3N+D44BYm37WKMGSEFyZBW+dwIqtGU8Cl54mR4TLQ/UwyGhdpgIHyH/x/8q1abE0fP0Dn6ZsrDE3BA==", + "dev": true, "license": "MIT", "dependencies": { - "@floating-ui/dom": "^1.6.13", - "@layerstack/utils": "1.0.0", "d3-array": "^3.2.4", - "d3-scale": "^4.0.2", - "date-fns": "^4.1.0", + "d3-time": "^3.1.0", + "d3-time-format": "^4.1.0", + "lodash-es": "^4.17.21" + } + }, + "node_modules/@layerstack/svelte-state": { + "version": "0.1.0-next.17", + "resolved": "https://registry.npmjs.org/@layerstack/svelte-state/-/svelte-state-0.1.0-next.17.tgz", + "integrity": "sha512-z7e6mPJnypD80LEI/UDuH0bI6s8/nut06MB7rEkRcEfHJekhKSJgFhMnrYzLED7Mc2gTTD0X/wcYlakauWlU8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@layerstack/utils": "2.0.0-next.12" + } + }, + "node_modules/@layerstack/svelte-state/node_modules/@layerstack/utils": { + "version": "2.0.0-next.12", + "resolved": "https://registry.npmjs.org/@layerstack/utils/-/utils-2.0.0-next.12.tgz", + "integrity": "sha512-fhGZUlSr3N+D44BYm37WKMGSEFyZBW+dwIqtGU8Cl54mR4TLQ/UwyGhdpgIHyH/x/8q1abE0fP0Dn6ZsrDE3BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "d3-array": "^3.2.4", + "d3-time": "^3.1.0", + "d3-time-format": "^4.1.0", "lodash-es": "^4.17.21" } }, "node_modules/@layerstack/svelte-stores": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@layerstack/svelte-stores/-/svelte-stores-1.0.1.tgz", - "integrity": "sha512-GVm0iMNJ8pI2q8WjofwejK+m6uF7PFUqgZZfkgDv2UmVh/HyW6ZpxA2wXzIxZley4NtUlrRw8cpyy2sJOEGVSA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@layerstack/svelte-stores/-/svelte-stores-1.0.2.tgz", + "integrity": "sha512-IxK0UKD0PVxg1VsyaR+n7NyJ+NlvyqvYYAp+J10lkjDQxm0yx58CaF2LBV08T22C3aY1iTlqJaatn/VHV4SoQg==", "license": "MIT", "dependencies": { - "@layerstack/utils": "1.0.0", + "@layerstack/utils": "1.0.1", "d3-array": "^3.2.4", "date-fns": "^4.1.0", "immer": "^10.1.1", @@ -1101,49 +609,37 @@ "zod": "^3.24.2" } }, - "node_modules/@layerstack/svelte-table": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@layerstack/svelte-table/-/svelte-table-1.0.0.tgz", - "integrity": "sha512-Q3nZYYpuGF45gmiGmBQ6NiIY5ip6nTJZR4Xx16A2I9Wkr9qEWMj4wC/HIRmNTMLOIc82EkDnDoJs2GQscKEh8Q==", - "license": "MIT", - "dependencies": { - "@layerstack/svelte-actions": "1.0.0", - "@layerstack/utils": "1.0.0", - "d3-array": "^3.2.4", - "date-fns": "^4.1.0", - "lodash-es": "^4.17.21" - } - }, "node_modules/@layerstack/tailwind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@layerstack/tailwind/-/tailwind-1.0.0.tgz", - "integrity": "sha512-xV2M6KRNBmbhV9XAvTHiw/BJSTIh5eby+Hj1iXXkMr88fObZHn4s1G2BILEDbdwjZl6Ivu1Du0gO9Vz3lzflUA==", + "version": "2.0.0-next.15", + "resolved": "https://registry.npmjs.org/@layerstack/tailwind/-/tailwind-2.0.0-next.15.tgz", + "integrity": "sha512-7tqKE3OV7/ybeDOORX++USYYCBJa7IgTya2czFpzbgXGo7CQDVyuv+0J1DggjRcEqhhXQA4MUhgnhcRaZvHxWg==", + "dev": true, "license": "MIT", "dependencies": { - "@layerstack/utils": "^1.0.0", + "@layerstack/utils": "^2.0.0-next.12", "clsx": "^2.1.1", - "culori": "^4.0.1", "d3-array": "^3.2.4", - "date-fns": "^4.1.0", "lodash-es": "^4.17.21", - "tailwind-merge": "^2.5.4", - "tailwindcss": "^3.4.15" + "tailwind-merge": "^3.2.0" } }, - "node_modules/@layerstack/tailwind/node_modules/tailwind-merge": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", - "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", + "node_modules/@layerstack/tailwind/node_modules/@layerstack/utils": { + "version": "2.0.0-next.12", + "resolved": "https://registry.npmjs.org/@layerstack/utils/-/utils-2.0.0-next.12.tgz", + "integrity": "sha512-fhGZUlSr3N+D44BYm37WKMGSEFyZBW+dwIqtGU8Cl54mR4TLQ/UwyGhdpgIHyH/x/8q1abE0fP0Dn6ZsrDE3BA==", + "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" + "dependencies": { + "d3-array": "^3.2.4", + "d3-time": "^3.1.0", + "d3-time-format": "^4.1.0", + "lodash-es": "^4.17.21" } }, "node_modules/@layerstack/utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@layerstack/utils/-/utils-1.0.0.tgz", - "integrity": "sha512-kIH8lo4MEzPGtdxQRacy8RsSVhMQwe62ckuev62xQDE5QcUJ4wB9EMaRWaQK8CfEOpUERGPgkMPMbMqPhdp0gw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@layerstack/utils/-/utils-1.0.1.tgz", + "integrity": "sha512-sWP9b+SFMkJYMZyYFI01aLxbg2ZUrix6Tv+BCDmeOrcLNxtWFsMYAomMhALzTMHbb+Vis/ua5vXhpdNXEw8a2Q==", "license": "MIT", "dependencies": { "d3-array": "^3.2.4", @@ -1151,16 +647,20 @@ "lodash-es": "^4.17.21" } }, - "node_modules/@mdi/js": { - "version": "7.4.47", - "resolved": "https://registry.npmjs.org/@mdi/js/-/js-7.4.47.tgz", - "integrity": "sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==", - "license": "Apache-2.0" + "node_modules/@lucide/svelte": { + "version": "0.516.0", + "resolved": "https://registry.npmjs.org/@lucide/svelte/-/svelte-0.516.0.tgz", + "integrity": "sha512-Ovkg2IgUeF85guSbnG9iPwUMMRuz+rdh8HsnKbD1uEY2Wv3d9qf0ERKFrz0ePZqmPXOedCPcf2a/rvRsqkaZcw==", + "license": "ISC", + "peerDependencies": { + "svelte": "^5" + } }, "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": { "@nodelib/fs.stat": "2.0.5", @@ -1174,6 +674,7 @@ "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": { "node": ">= 8" @@ -1183,6 +684,7 @@ "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": { "@nodelib/fs.scandir": "2.1.5", @@ -1192,12 +694,6 @@ "node": ">= 8" } }, - "node_modules/@novnc/novnc": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@novnc/novnc/-/novnc-1.5.0.tgz", - "integrity": "sha512-4yGHOtUCnEJUCsgEt/L78eeJu00kthurLBWXFiaXfonNx0pzbs6R/3gJb1byZe6iAE8V9MF0syQb0xIL8MSOtQ==", - "license": "MPL-2.0" - }, "node_modules/@parcel/watcher": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", @@ -1206,6 +702,7 @@ "hasInstallScript": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", @@ -1248,6 +745,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -1269,6 +767,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -1290,6 +789,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -1311,6 +811,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -1332,6 +833,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -1353,6 +855,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -1374,6 +877,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -1395,6 +899,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -1416,6 +921,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -1437,6 +943,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -1458,6 +965,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -1479,6 +987,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -1500,6 +1009,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 10.0.0" }, @@ -1508,66 +1018,36 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "license": "MIT", + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "license": "Apache-2.0", "optional": true, + "peer": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, "engines": { - "node": ">=14" + "node": ">=0.10" } }, "node_modules/@polka/url": { - "version": "1.0.0-next.28", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", - "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", "dev": true, "license": "MIT" }, - "node_modules/@poppinss/macroable": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@poppinss/macroable/-/macroable-1.0.4.tgz", - "integrity": "sha512-ct43jurbe7lsUX5eIrj4ijO3j/6zIPp7CDnFWXDs7UPAbw1Pu1iH3oAmFdP4jcskKJBURH5M9oTtyeiUXyHX8Q==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=18.16.0" - } - }, - "node_modules/@rollup/pluginutils": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", - "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", - "license": "MIT", - "dependencies": { - "estree-walker": "^2.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/@rollup/pluginutils/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz", - "integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz", + "integrity": "sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==", "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1575,12 +1055,13 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz", - "integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz", + "integrity": "sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1588,12 +1069,13 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz", - "integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz", + "integrity": "sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1601,12 +1083,13 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz", - "integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz", + "integrity": "sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1614,12 +1097,13 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz", - "integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz", + "integrity": "sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1627,12 +1111,13 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz", - "integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz", + "integrity": "sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1640,12 +1125,13 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz", - "integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz", + "integrity": "sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==", "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1653,12 +1139,13 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz", - "integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz", + "integrity": "sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==", "cpu": [ "arm" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1666,12 +1153,13 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz", - "integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz", + "integrity": "sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1679,12 +1167,13 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz", - "integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz", + "integrity": "sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1692,12 +1181,13 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz", - "integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz", + "integrity": "sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==", "cpu": [ "loong64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1705,12 +1195,13 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz", - "integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz", + "integrity": "sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==", "cpu": [ "ppc64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1718,12 +1209,13 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz", - "integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz", + "integrity": "sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==", "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1731,12 +1223,13 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz", - "integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz", + "integrity": "sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==", "cpu": [ "riscv64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1744,12 +1237,13 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz", - "integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz", + "integrity": "sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==", "cpu": [ "s390x" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1757,12 +1251,13 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz", - "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz", + "integrity": "sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1770,12 +1265,13 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz", - "integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz", + "integrity": "sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1783,12 +1279,13 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz", - "integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz", + "integrity": "sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==", "cpu": [ "arm64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1796,12 +1293,13 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz", - "integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz", + "integrity": "sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==", "cpu": [ "ia32" ], + "dev": true, "license": "MIT", "optional": true, "os": [ @@ -1809,61 +1307,19 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz", - "integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz", + "integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==", "cpu": [ "x64" ], + "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ] }, - "node_modules/@sideway/address": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", - "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true - }, - "node_modules/@sinclair/typebox": { - "version": "0.34.28", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.28.tgz", - "integrity": "sha512-e2B9vmvaa5ym5hWgCHw5CstP54au6AOLXrhZErLsOyyRzuWJtXl/8TszKtc5x8rw/b+oY7HKS9m9iRI53RK0WQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@standard-schema/spec": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", - "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/@svelte-put/shortcut": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@svelte-put/shortcut/-/shortcut-4.1.0.tgz", @@ -1893,9 +1349,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.21.1", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.21.1.tgz", - "integrity": "sha512-vLbtVwtDcK8LhJKnFkFYwM0uCdFmzioQnif0bjEYH1I24Arz22JPr/hLUiXGVYAwhu8INKx5qrdvr4tHgPwX6w==", + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.22.2.tgz", + "integrity": "sha512-2MvEpSYabUrsJAoq5qCOBGAlkICjfjunrnLcx3YAk2XV7TvAIhomlKsAgR4H/4uns5rAfYmj7Wet5KRtc8dPIg==", "dev": true, "license": "MIT", "dependencies": { @@ -1910,7 +1366,8 @@ "mrmime": "^2.0.0", "sade": "^1.8.1", "set-cookie-parser": "^2.6.0", - "sirv": "^3.0.0" + "sirv": "^3.0.0", + "vitefu": "^1.0.6" }, "bin": { "svelte-kit": "svelte-kit.js" @@ -1919,24 +1376,24 @@ "node": ">=18.13" }, "peerDependencies": { - "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0", "svelte": "^4.0.0 || ^5.0.0-next.0", - "vite": "^5.0.3 || ^6.0.0" + "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0" } }, "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.0.3.tgz", - "integrity": "sha512-MCFS6CrQDu1yGwspm4qtli0e63vaPCehf6V7pIMP15AsWgMKrqDGCPFF/0kn4SP0ii4aySu4Pa62+fIRGFMjgw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.1.0.tgz", + "integrity": "sha512-wojIS/7GYnJDYIg1higWj2ROA6sSRWvcR1PO/bqEyFr/5UZah26c8Cz4u0NaqjPeVltzsVpt2Tm8d2io0V+4Tw==", "dev": true, "license": "MIT", "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1", - "debug": "^4.4.0", + "debug": "^4.4.1", "deepmerge": "^4.3.1", "kleur": "^4.1.5", - "magic-string": "^0.30.15", - "vitefu": "^1.0.4" + "magic-string": "^0.30.17", + "vitefu": "^1.0.6" }, "engines": { "node": "^18.0.0 || ^20.0.0 || >=22" @@ -1979,25 +1436,15 @@ } }, "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", "dev": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.8.0" } }, - "node_modules/@tailwindcss/container-queries": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@tailwindcss/container-queries/-/container-queries-0.1.1.tgz", - "integrity": "sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "tailwindcss": ">=3.2.0" - } - }, "node_modules/@tailwindcss/forms": { "version": "0.5.10", "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.10.tgz", @@ -2011,6 +1458,268 @@ "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" } }, + "node_modules/@tailwindcss/node": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.10.tgz", + "integrity": "sha512-2ACf1znY5fpRBwRhMgj9ZXvb2XZW8qs+oTfotJ2C5xR0/WNL7UHZ7zXl6s+rUqedL1mNi+0O+WQr5awGowS3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "enhanced-resolve": "^5.18.1", + "jiti": "^2.4.2", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.10" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.10.tgz", + "integrity": "sha512-v0C43s7Pjw+B9w21htrQwuFObSkio2aV/qPx/mhrRldbqxbWJK6KizM+q7BF1/1CmuLqZqX3CeYF7s7P9fbA8Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.10", + "@tailwindcss/oxide-darwin-arm64": "4.1.10", + "@tailwindcss/oxide-darwin-x64": "4.1.10", + "@tailwindcss/oxide-freebsd-x64": "4.1.10", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.10", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.10", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.10", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.10", + "@tailwindcss/oxide-linux-x64-musl": "4.1.10", + "@tailwindcss/oxide-wasm32-wasi": "4.1.10", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.10", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.10" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.10.tgz", + "integrity": "sha512-VGLazCoRQ7rtsCzThaI1UyDu/XRYVyH4/EWiaSX6tFglE+xZB5cvtC5Omt0OQ+FfiIVP98su16jDVHDEIuH4iQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.10.tgz", + "integrity": "sha512-ZIFqvR1irX2yNjWJzKCqTCcHZbgkSkSkZKbRM3BPzhDL/18idA8uWCoopYA2CSDdSGFlDAxYdU2yBHwAwx8euQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.10.tgz", + "integrity": "sha512-eCA4zbIhWUFDXoamNztmS0MjXHSEJYlvATzWnRiTqJkcUteSjO94PoRHJy1Xbwp9bptjeIxxBHh+zBWFhttbrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.10.tgz", + "integrity": "sha512-8/392Xu12R0cc93DpiJvNpJ4wYVSiciUlkiOHOSOQNH3adq9Gi/dtySK7dVQjXIOzlpSHjeCL89RUUI8/GTI6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.10.tgz", + "integrity": "sha512-t9rhmLT6EqeuPT+MXhWhlRYIMSfh5LZ6kBrC4FS6/+M1yXwfCtp24UumgCWOAJVyjQwG+lYva6wWZxrfvB+NhQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.10.tgz", + "integrity": "sha512-3oWrlNlxLRxXejQ8zImzrVLuZ/9Z2SeKoLhtCu0hpo38hTO2iL86eFOu4sVR8cZc6n3z7eRXXqtHJECa6mFOvA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.10.tgz", + "integrity": "sha512-saScU0cmWvg/Ez4gUmQWr9pvY9Kssxt+Xenfx1LG7LmqjcrvBnw4r9VjkFcqmbBb7GCBwYNcZi9X3/oMda9sqQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.10.tgz", + "integrity": "sha512-/G3ao/ybV9YEEgAXeEg28dyH6gs1QG8tvdN9c2MNZdUXYBaIY/Gx0N6RlJzfLy/7Nkdok4kaxKPHKJUlAaoTdA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.10.tgz", + "integrity": "sha512-LNr7X8fTiKGRtQGOerSayc2pWJp/9ptRYAa4G+U+cjw9kJZvkopav1AQc5HHD+U364f71tZv6XamaHKgrIoVzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.10.tgz", + "integrity": "sha512-d6ekQpopFQJAcIK2i7ZzWOYGZ+A6NzzvQ3ozBvWFdeyqfOZdYHU66g5yr+/HC4ipP1ZgWsqa80+ISNILk+ae/Q==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@emnapi/wasi-threads": "^1.0.2", + "@napi-rs/wasm-runtime": "^0.2.10", + "@tybys/wasm-util": "^0.9.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.10.tgz", + "integrity": "sha512-i1Iwg9gRbwNVOCYmnigWCCgow8nDWSFmeTUU5nbNx3rqbe4p0kRbEqLwLJbYZKmSSp23g4N6rCDmm7OuPBXhDA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.10.tgz", + "integrity": "sha512-sGiJTjcBSfGq2DVRtaSljq5ZgZS2SDHSIfhOylkBvHVjwOsodBhnb3HdmiKkVuUGKD0I7G63abMOVaskj1KpOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@tailwindcss/typography": { "version": "0.5.16", "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", @@ -2027,61 +1736,21 @@ "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, - "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "node_modules/@tailwindcss/vite": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.10.tgz", + "integrity": "sha512-QWnD5HDY2IADv+vYR82lOhqOlS1jSCUUAmfem52cXAhRTKxpDh3ARX8TTXJTCCO7Rv7cD2Nlekabv02bwP3a2A==", "dev": true, "license": "MIT", "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@thisux/sveltednd": { - "version": "0.0.20", - "resolved": "https://registry.npmjs.org/@thisux/sveltednd/-/sveltednd-0.0.20.tgz", - "integrity": "sha512-VE0HopIlHIvNOfSZ1SsiIzl1AmTU0VSd2Nz2Q2nIdqIUsT/UP4hiLw2ed2jFqTKTbqC+kbCYL9vuBpkYnEw+Kw==", - "license": "MIT", - "dependencies": { - "@thisux/sveltednd": "^0.0.18" + "@tailwindcss/node": "4.1.10", + "@tailwindcss/oxide": "4.1.10", + "tailwindcss": "4.1.10" }, "peerDependencies": { - "svelte": "^5.0.0" + "vite": "^5.2.0 || ^6" } }, - "node_modules/@thisux/sveltednd/node_modules/@thisux/sveltednd": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@thisux/sveltednd/-/sveltednd-0.0.18.tgz", - "integrity": "sha512-MO+iR9ZRHApvtwgWujmqwUbhv9mKs0jLOmeG4tn98GmU1/9wVOi02jrNqeggKg3c8dXz6pMmUHfOfmcq7WwYZg==", - "license": "MIT", - "dependencies": { - "@thisux/sveltednd": "^0.0.17" - }, - "peerDependencies": { - "svelte": "^5.0.0" - } - }, - "node_modules/@thisux/sveltednd/node_modules/@thisux/sveltednd/node_modules/@thisux/sveltednd": { - "version": "0.0.17", - "resolved": "https://registry.npmjs.org/@thisux/sveltednd/-/sveltednd-0.0.17.tgz", - "integrity": "sha512-lRninjw439phhA8xAHqCpMAX0hnwFMdbXW4M0XJgAdnGxeum+QsLiIC4P3HnkNXAygsVKUqxRcbS84CxDZ9hPw==", - "license": "MIT", - "dependencies": { - "@thisux/sveltednd": "^0.0.14" - }, - "peerDependencies": { - "svelte": "^5.0.0" - } - }, - "node_modules/@thisux/sveltednd/node_modules/@thisux/sveltednd/node_modules/@thisux/sveltednd/node_modules/@thisux/sveltednd": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@thisux/sveltednd/-/sveltednd-0.0.14.tgz", - "integrity": "sha512-Vbq69SU3HUomPg6oCXtb89OG89hka0YIkdaErYibn3waK7tYE66IcQxD/Fzg8YNW3EVsXoA9kc7kW5EUBCSQGg==" - }, "node_modules/@types/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", @@ -2124,9 +1793,15 @@ "license": "MIT" }, "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/hammerjs": { + "version": "2.0.46", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.46.tgz", + "integrity": "sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw==", "license": "MIT" }, "node_modules/@types/json-schema": { @@ -2136,95 +1811,36 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/node": { - "version": "22.13.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.9.tgz", - "integrity": "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/@types/novnc__novnc": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@types/novnc__novnc/-/novnc__novnc-1.6.0.tgz", - "integrity": "sha512-kIH/PQACbf9qj6whiSXRKECpyzgs6IFNVsW4wohyqQUZfQHdLhuGRMLi9XEhBiISSh0lKCSbBa7kScuPu9Gk+Q==", - "license": "MIT" - }, - "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/tabulator-tables": { "version": "6.2.6", "resolved": "https://registry.npmjs.org/@types/tabulator-tables/-/tabulator-tables-6.2.6.tgz", "integrity": "sha512-A+2VrqDluI6hNw5dQl1Z7b8pjQfAE62+3Kj0cFfenWzj0T0ewMicPrpPINHL7ASqz9u9FTDn1Mz1Ige2tF4Wlw==", + "dev": true, "license": "MIT" }, "node_modules/@types/validator": { - "version": "13.12.2", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.12.2.tgz", - "integrity": "sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==", + "version": "13.15.2", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.2.tgz", + "integrity": "sha512-y7pa/oEJJ4iGYBxOpfAKn5b9+xuihvzDVnC/OSvlVnGxVg0pOqmjiMafiJ1KVNQEaPZf9HsEp5icEwGg8uIe5Q==", "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@typeschema/class-validator": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@typeschema/class-validator/-/class-validator-0.3.0.tgz", - "integrity": "sha512-OJSFeZDIQ8EK1HTljKLT5CItM2wsbgczLN8tMEfz3I1Lmhc5TBfkZ0eikFzUC16tI3d1Nag7um6TfCgp2I2Bww==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@typeschema/core": "0.14.0" - }, - "peerDependencies": { - "class-validator": "^0.14.1" - }, - "peerDependenciesMeta": { - "class-validator": { - "optional": true - } - } - }, - "node_modules/@typeschema/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@typeschema/core/-/core-0.14.0.tgz", - "integrity": "sha512-Ia6PtZHcL3KqsAWXjMi5xIyZ7XMH4aSnOQes8mfMLx+wGFGtGRNlwe6Y7cYvX+WfNK67OL0/HSe9t8QDygV0/w==", - "dev": true, - "license": "MIT", - "optional": true, - "peerDependencies": { - "@types/json-schema": "^7.0.15" - }, - "peerDependenciesMeta": { - "@types/json-schema": { - "optional": true - } - } + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.25.0.tgz", - "integrity": "sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.1.tgz", + "integrity": "sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.25.0", - "@typescript-eslint/type-utils": "8.25.0", - "@typescript-eslint/utils": "8.25.0", - "@typescript-eslint/visitor-keys": "8.25.0", + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/type-utils": "8.34.1", + "@typescript-eslint/utils": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "graphemer": "^1.4.0", - "ignore": "^5.3.1", + "ignore": "^7.0.0", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2234,22 +1850,32 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "@typescript-eslint/parser": "^8.34.1", "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/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.25.0.tgz", - "integrity": "sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.1.tgz", + "integrity": "sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.25.0", - "@typescript-eslint/types": "8.25.0", - "@typescript-eslint/typescript-estree": "8.25.0", - "@typescript-eslint/visitor-keys": "8.25.0", + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/typescript-estree": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "debug": "^4.3.4" }, "engines": { @@ -2261,18 +1887,40 @@ }, "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.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.25.0.tgz", - "integrity": "sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.1.tgz", + "integrity": "sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.25.0", - "@typescript-eslint/visitor-keys": "8.25.0" + "@typescript-eslint/tsconfig-utils": "^8.34.1", + "@typescript-eslint/types": "^8.34.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz", + "integrity": "sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2282,17 +1930,34 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.1.tgz", + "integrity": "sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.25.0.tgz", - "integrity": "sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.34.1.tgz", + "integrity": "sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.25.0", - "@typescript-eslint/utils": "8.25.0", + "@typescript-eslint/typescript-estree": "8.34.1", + "@typescript-eslint/utils": "8.34.1", "debug": "^4.3.4", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2303,13 +1968,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.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.25.0.tgz", - "integrity": "sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz", + "integrity": "sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==", "dev": true, "license": "MIT", "engines": { @@ -2321,20 +1986,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.25.0.tgz", - "integrity": "sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz", + "integrity": "sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.25.0", - "@typescript-eslint/visitor-keys": "8.25.0", + "@typescript-eslint/project-service": "8.34.1", + "@typescript-eslint/tsconfig-utils": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/visitor-keys": "8.34.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.1" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2344,13 +2011,13 @@ "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": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2374,16 +2041,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.25.0.tgz", - "integrity": "sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.1.tgz", + "integrity": "sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.25.0", - "@typescript-eslint/types": "8.25.0", - "@typescript-eslint/typescript-estree": "8.25.0" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.34.1", + "@typescript-eslint/types": "8.34.1", + "@typescript-eslint/typescript-estree": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2394,18 +2061,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/visitor-keys": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.25.0.tgz", - "integrity": "sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz", + "integrity": "sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.25.0", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.34.1", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2421,38 +2088,6 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "license": "ISC" }, - "node_modules/@vinejs/compiler": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@vinejs/compiler/-/compiler-3.0.0.tgz", - "integrity": "sha512-v9Lsv59nR56+bmy2p0+czjZxsLHwaibJ+SV5iK9JJfehlJMa501jUJQqqz4X/OqKXrxtE3uTQmSqjUqzF3B2mw==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@vinejs/vine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@vinejs/vine/-/vine-3.0.0.tgz", - "integrity": "sha512-GeCAHLzKkL2kMFqatgqyiiNh+FILOSAV8x8imBDo6AWQ91w30Kaxw4FnzUDqgcd9z8aCYOBQ7RJxBBGfyr+USQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@poppinss/macroable": "^1.0.3", - "@types/validator": "^13.12.2", - "@vinejs/compiler": "^3.0.0", - "camelcase": "^8.0.0", - "dayjs": "^1.11.13", - "dlv": "^1.1.3", - "normalize-url": "^8.0.1", - "validator": "^13.12.0" - }, - "engines": { - "node": ">=18.16.0" - } - }, "node_modules/@xterm/addon-attach": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@xterm/addon-attach/-/addon-attach-0.11.0.tgz", @@ -2553,9 +2188,9 @@ "license": "MIT" }, "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -2575,29 +2210,18 @@ } }, "node_modules/adze": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/adze/-/adze-2.2.1.tgz", - "integrity": "sha512-zTQPl28v/WNEZo4Pmb3HThpYLLTeMuHX3fvC8Aw1CIAHT7nZR5JiqbmE/mB+3qemX4n0ygj+3KfcFpKxLINa/A==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/adze/-/adze-2.2.4.tgz", + "integrity": "sha512-Kqe4cLmYS42QNPtFoiDKsaZMPJYnAhBsh3SuVEeTEvjjTy3zOO1ovvD3wbylXtC+mUOcWU9vzS3ezXHpk0Lq6A==", "license": "Apache-2.0", "dependencies": { "@ungap/structured-clone": "1.2.0", - "date-fns": "^3.6.0", "picocolors": "1.1.1" }, "engines": { "node": ">=18.19.0" } }, - "node_modules/adze/node_modules/date-fns": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", - "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/kossnocorp" - } - }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -2615,22 +2239,11 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -2642,43 +2255,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "license": "MIT" - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2695,72 +2271,16 @@ "node": ">= 0.4" } }, - "node_modules/arktype": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/arktype/-/arktype-2.1.20.tgz", - "integrity": "sha512-IZCEEXaJ8g+Ijd59WtSYwtjnqXiwM8sWQ5EjGamcto7+HVN9eK0C4p0zDlCuAwWhpqr6fIBkxPuYDl4/Mcj/+Q==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@ark/schema": "0.46.0", - "@ark/util": "0.46.0" - } - }, - "node_modules/array-source": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/array-source/-/array-source-0.0.4.tgz", - "integrity": "sha512-frNdc+zBn80vipY+GdcJkLEbMWj3xmzArYApmUGxoiV8uAu/ygcs9icPdsGdA26h0MkHUMW6EN2piIvVx+M5Mw==", - "license": "BSD-3-Clause" - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "license": "MIT" }, - "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/axios": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz", - "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz", + "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -2781,60 +2301,40 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, "license": "MIT" }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bits-ui": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-0.22.0.tgz", - "integrity": "sha512-r7Fw1HNgA4YxZBRcozl7oP0bheQ8EHh+kfMBZJgyFISix8t4p/nqDcHLmBgIiJ3T5XjYnJRorYDjIWaCfhb5fw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-2.8.1.tgz", + "integrity": "sha512-fyKn2UnuPlyqtU7dtp9jDF6KV2aP1N6alzU5S1V1YkEmA2KP0Rm9g+sR+CeDJ/vN/UoMK9uiAl6y7M/Y0e67Bw==", "dev": true, "license": "MIT", "dependencies": { - "@internationalized/date": "^3.5.1", - "@melt-ui/svelte": "0.76.2", - "nanoid": "^5.0.5" + "@floating-ui/core": "^1.7.0", + "@floating-ui/dom": "^1.7.0", + "css.escape": "^1.5.1", + "esm-env": "^1.1.2", + "runed": "^0.28.0", + "svelte-toolbelt": "^0.9.2", + "tabbable": "^6.2.0" + }, + "engines": { + "node": ">=20", + "pnpm": ">=8.7.0" }, "funding": { "url": "https://github.com/sponsors/huntabyte" }, "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/bits-ui/node_modules/@melt-ui/svelte": { - "version": "0.76.2", - "resolved": "https://registry.npmjs.org/@melt-ui/svelte/-/svelte-0.76.2.tgz", - "integrity": "sha512-7SbOa11tXUS95T3fReL+dwDs5FyJtCEqrqG3inRziDws346SYLsxOQ6HmX+4BkIsQh1R8U3XNa+EMmdMt38lMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.3.1", - "@floating-ui/dom": "^1.4.5", - "@internationalized/date": "^3.5.0", - "dequal": "^2.0.3", - "focus-trap": "^7.5.2", - "nanoid": "^5.0.4" - }, - "peerDependencies": { - "svelte": ">=3 <5" + "@internationalized/date": "^3.8.1", + "svelte": "^5.33.0" } }, "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==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -2846,6 +2346,7 @@ "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": { "fill-range": "^7.1.1" @@ -2854,59 +2355,6 @@ "node": ">=8" } }, - "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -2930,50 +2378,6 @@ "node": ">=6" } }, - "node_modules/camelcase": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", - "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001701", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001701.tgz", - "integrity": "sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2991,11 +2395,46 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chart.js": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.0.tgz", + "integrity": "sha512-aYeC/jDgSEx8SHWZvANYMioYMZ2KX02W6f6uVfyteuCGcadDLcYVHdfdygsTQkQ4TKn5lghoojAsPj5pu0SnvQ==", + "license": "MIT", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/chartjs-adapter-date-fns": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chartjs-adapter-date-fns/-/chartjs-adapter-date-fns-3.0.0.tgz", + "integrity": "sha512-Rs3iEB3Q5pJ973J93OBTpnP7qoGwvq3nUnoMdtxO+9aoJof7UFcRbWcIDteXuYd1fgAvct/32T9qaLyLuZVwCg==", + "license": "MIT", + "peerDependencies": { + "chart.js": ">=2.8.0", + "date-fns": ">=2.0.0" + } + }, + "node_modules/chartjs-plugin-zoom": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chartjs-plugin-zoom/-/chartjs-plugin-zoom-2.2.0.tgz", + "integrity": "sha512-in6kcdiTlP6npIVLMd4zXZ08PDUXC52gZ4FAy5oyjk1zX3gKarXMAof7B9eFiisf9WOC3bh2saHg+J5WtLXZeA==", + "license": "MIT", + "dependencies": { + "@types/hammerjs": "^2.0.45", + "hammerjs": "^2.0.8" + }, + "peerDependencies": { + "chart.js": ">=3.2.0" + } + }, "node_modules/chokidar": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "readdirp": "^4.0.1" @@ -3007,6 +2446,16 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/cidr-regex": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/cidr-regex/-/cidr-regex-4.1.3.tgz", @@ -3019,35 +2468,6 @@ "node": ">=14" } }, - "node_modules/class-validator": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.14.1.tgz", - "integrity": "sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@types/validator": "^13.11.8", - "libphonenumber-js": "^1.10.53", - "validator": "^13.9.0" - } - }, - "node_modules/cli-color": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", - "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", - "license": "ISC", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.64", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.15", - "timers-ext": "^0.1.7" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/clone-regexp": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-3.0.0.tgz", @@ -3072,81 +2492,11 @@ "node": ">=6" } }, - "node_modules/cmdk-sv": { - "version": "0.0.19", - "resolved": "https://registry.npmjs.org/cmdk-sv/-/cmdk-sv-0.0.19.tgz", - "integrity": "sha512-Vm6+/up5nQbwGmNw0uYFbXTrbpF460/FhMohTskzzszMtIR/u/78haucSmJWjjp9bW0wxpHXZWa6fk+Lj1tKnA==", - "dev": true, - "dependencies": { - "bits-ui": "^0.21.12", - "nanoid": "^5.0.7" - }, - "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0-next.1" - } - }, - "node_modules/cmdk-sv/node_modules/bits-ui": { - "version": "0.21.16", - "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-0.21.16.tgz", - "integrity": "sha512-XFZ7/bK7j/K+5iktxX/ZpmoFHjYjpPzP5EOO/4bWiaFg5TG1iMcfjDhlBTQnJxD6BoVoHuqeZPHZvaTgF4Iv3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@internationalized/date": "^3.5.1", - "@melt-ui/svelte": "0.76.2", - "nanoid": "^5.0.5" - }, - "funding": { - "url": "https://github.com/sponsors/huntabyte" - }, - "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0-next.118" - } - }, - "node_modules/cmdk-sv/node_modules/bits-ui/node_modules/@melt-ui/svelte": { - "version": "0.76.2", - "resolved": "https://registry.npmjs.org/@melt-ui/svelte/-/svelte-0.76.2.tgz", - "integrity": "sha512-7SbOa11tXUS95T3fReL+dwDs5FyJtCEqrqG3inRziDws346SYLsxOQ6HmX+4BkIsQh1R8U3XNa+EMmdMt38lMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.3.1", - "@floating-ui/dom": "^1.4.5", - "@internationalized/date": "^3.5.0", - "dequal": "^2.0.3", - "focus-trap": "^7.5.2", - "nanoid": "^5.0.4" - }, - "peerDependencies": { - "svelte": ">=3 <5" - } - }, - "node_modules/code-red": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", - "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15", - "@types/estree": "^1.0.1", - "acorn": "^8.10.0", - "estree-walker": "^3.0.3", - "periscopic": "^3.1.0" - } - }, - "node_modules/code-red/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -3159,6 +2509,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/combined-stream": { @@ -3174,21 +2525,13 @@ } }, "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 6" - } - }, - "node_modules/comment-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", - "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", - "license": "MIT", - "engines": { - "node": ">= 12.0.0" + "node": ">= 10" } }, "node_modules/concat-map": { @@ -3224,6 +2567,7 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -3234,23 +2578,18 @@ "node": ">= 8" } }, - "node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" }, "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": { "cssesc": "bin/cssesc" @@ -3259,28 +2598,6 @@ "node": ">=4" } }, - "node_modules/culori": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/culori/-/culori-4.0.1.tgz", - "integrity": "sha512-LSnjA6HuIUOlkfKVbzi2OlToZE8OjFi667JWN9qNymXVXzGDmvuP60SSgC+e92sd7B7158f7Fy3Mb6rXS5EDPw==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/d": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", - "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", - "license": "ISC", - "dependencies": { - "es5-ext": "^0.10.64", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.12" - } - }, "node_modules/d3-array": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", @@ -3297,6 +2614,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3306,6 +2624,7 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dev": true, "license": "ISC", "dependencies": { "delaunator": "5" @@ -3318,6 +2637,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3327,6 +2647,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dev": true, "license": "ISC", "dependencies": { "commander": "7", @@ -3348,19 +2669,11 @@ "node": ">=12" } }, - "node_modules/d3-dsv/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, "node_modules/d3-force": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dev": true, "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", @@ -3375,6 +2688,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3384,6 +2698,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "dev": true, "license": "ISC", "dependencies": { "d3-array": "2.5.0 - 3" @@ -3396,6 +2711,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/d3-geo-voronoi/-/d3-geo-voronoi-2.1.0.tgz", "integrity": "sha512-kqE4yYuOjPbKdBXG0xztCacPwkVSK2REF1opSNrnqqtXJmNcM++UbwQ8SxvwP6IQTj9RvIjjK4qeiVsEfj0Z2Q==", + "dev": true, "license": "ISC", "dependencies": { "d3-array": "3", @@ -3411,6 +2727,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3420,6 +2737,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dev": true, "license": "ISC", "dependencies": { "d3-color": "1 - 3" @@ -3432,6 +2750,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/d3-interpolate-path/-/d3-interpolate-path-2.3.0.tgz", "integrity": "sha512-tZYtGXxBmbgHsIc9Wms6LS5u4w6KbP8C09a4/ZYc4KLMYYqub57rRBUgpUr2CIarIrJEpdAWWxWQvofgaMpbKQ==", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/d3-path": { @@ -3447,6 +2766,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3456,6 +2776,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3465,6 +2786,7 @@ "version": "0.12.3", "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "d3-array": "1 - 2", @@ -3475,6 +2797,7 @@ "version": "2.12.1", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "internmap": "^1.0.0" @@ -3484,12 +2807,14 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/d3-sankey/node_modules/d3-shape": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "d3-path": "1" @@ -3499,12 +2824,14 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "dev": true, "license": "ISC" }, "node_modules/d3-scale": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dev": true, "license": "ISC", "dependencies": { "d3-array": "2.10.0 - 3", @@ -3521,6 +2848,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "dev": true, "license": "ISC", "dependencies": { "d3-color": "1 - 3", @@ -3546,12 +2874,14 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/d3-tile/-/d3-tile-1.0.0.tgz", "integrity": "sha512-79fnTKpPMPDS5xQ0xuS9ir0165NEwwkFpe/DSOmc2Gl9ldYzKKRDWogmTTE8wAJ8NA7PMapNfEcyKhI9Lxdu5Q==", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/d3-time": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dev": true, "license": "ISC", "dependencies": { "d3-array": "2 - 3" @@ -3564,6 +2894,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dev": true, "license": "ISC", "dependencies": { "d3-time": "1 - 3" @@ -3576,6 +2907,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -3585,6 +2917,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/d3-tricontour/-/d3-tricontour-1.0.2.tgz", "integrity": "sha512-HIRxHzHagPtUPNabjOlfcyismJYIsc+Xlq4mlsts4e8eAcwyq9Tgk/sYdyhlBpQ0MHwVquc/8j+e29YjXnmxeA==", + "dev": true, "license": "ISC", "dependencies": { "d3-delaunay": "6", @@ -3613,18 +2946,10 @@ "date-fns": "^3.0.0 || ^4.0.0" } }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3639,12 +2964,6 @@ } } }, - "node_modules/decimal.js": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", - "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", - "license": "MIT" - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -3656,6 +2975,7 @@ "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==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -3665,6 +2985,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "dev": true, "license": "ISC", "dependencies": { "robust-predicates": "^3.0.2" @@ -3679,28 +3000,14 @@ "node": ">=0.4.0" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", "dev": true, "license": "Apache-2.0", - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, "engines": { - "node": ">=0.10" + "node": ">=8" } }, "node_modules/devalue": { @@ -3710,18 +3017,6 @@ "dev": true, "license": "MIT" }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "license": "Apache-2.0" - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "license": "MIT" - }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -3736,37 +3031,20 @@ "node": ">= 0.4" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/effect": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/effect/-/effect-3.15.0.tgz", - "integrity": "sha512-l8eJAz1DVEUg2zgmLR9JGYRc1YrKcf/UziC41pIxUHfMgNKMt/Qg8ENhFvbyc9m6Nhrr/Zkg9XtvU7024KU32A==", + "node_modules/enhanced-resolve": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "@standard-schema/spec": "^1.0.0", - "fast-check": "^3.23.1" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/electron-to-chromium": { - "version": "1.5.107", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.107.tgz", - "integrity": "sha512-dJr1o6yCntRkXElnhsHh1bAV19bo/hKyFf7tCcWgpXbuFIF0Lakjgqv5LRfSDaNzAII8Fnxg2tqgHkgCvxdbxw==", - "dev": true, - "license": "ISC" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -3812,135 +3090,6 @@ "node": ">= 0.4" } }, - "node_modules/es5-ext": { - "version": "0.10.64", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", - "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", - "hasInstallScript": true, - "license": "ISC", - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "esniff": "^2.0.1", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "license": "MIT", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", - "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", - "license": "ISC", - "dependencies": { - "d": "^1.0.2", - "ext": "^1.7.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "license": "ISC", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" - } - }, - "node_modules/esbuild-runner": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/esbuild-runner/-/esbuild-runner-2.2.2.tgz", - "integrity": "sha512-fRFVXcmYVmSmtYm2mL8RlUASt2TDkGh3uRcvHFOKNr/T58VrfVeKD9uT9nlgxk96u0LS0ehS/GY7Da/bXWKkhw==", - "dev": true, - "license": "Apache License 2.0", - "optional": true, - "dependencies": { - "source-map-support": "0.5.21", - "tslib": "2.4.0" - }, - "bin": { - "esr": "bin/esr.js" - }, - "peerDependencies": { - "esbuild": "*" - } - }, - "node_modules/esbuild-runner/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", - "dev": true, - "license": "0BSD", - "optional": true - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -3955,19 +3104,20 @@ } }, "node_modules/eslint": { - "version": "9.21.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", - "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", + "version": "9.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz", + "integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.2", - "@eslint/core": "^0.12.0", - "@eslint/eslintrc": "^3.3.0", - "@eslint/js": "9.21.0", - "@eslint/plugin-kit": "^0.2.7", + "@eslint/config-array": "^0.20.1", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.14.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.29.0", + "@eslint/plugin-kit": "^0.3.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -3978,9 +3128,9 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -4014,55 +3164,42 @@ } } }, - "node_modules/eslint-compat-utils": { - "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": { - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } - }, "node_modules/eslint-config-prettier": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.2.tgz", - "integrity": "sha512-1105/17ZIMjmCOJOPNfVdbXafLCLj3hPmkmB7dLgt7XsQ/zkxSuDerE/xgO3RxoHysR1N1whmquY0lSn2O0VLg==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.5.tgz", + "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", "dev": true, "license": "MIT", "bin": { - "eslint-config-prettier": "build/bin/cli.js" + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" }, "peerDependencies": { "eslint": ">=7.0.0" } }, "node_modules/eslint-plugin-svelte": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-3.0.2.tgz", - "integrity": "sha512-+0QglmWNryvXXxRQKzLF3i+AreTsueCw7PBb0nGVBq+F9HoYqAjQeJ/9N6vFAtjMjK3wgsETrLVyBKPdeufN6Q==", + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-3.9.2.tgz", + "integrity": "sha512-aqzfHtG9RPaFhCUFm5QFC6eFY/yHFQIT8VYYFe7/mT2A9mbgVR3XV2keCqU19LN8iVD9mdvRvqHU+4+CzJImvg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.1", + "@eslint-community/eslint-utils": "^4.6.1", "@jridgewell/sourcemap-codec": "^1.5.0", - "eslint-compat-utils": "^0.6.4", "esutils": "^2.0.3", - "known-css-properties": "^0.35.0", + "globals": "^16.0.0", + "known-css-properties": "^0.36.0", "postcss": "^8.4.49", "postcss-load-config": "^3.1.4", "postcss-safe-parser": "^7.0.0", "semver": "^7.6.3", - "svelte-eslint-parser": "^1.0.0" + "svelte-eslint-parser": "^1.2.0" }, "engines": { - "node": "^18.20.4 || ^20.18.0 || >=22.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://github.com/sponsors/ota-meshi" @@ -4078,9 +3215,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -4095,9 +3232,9 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -4113,31 +3250,16 @@ "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", "license": "MIT" }, - "node_modules/esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", - "license": "ISC", - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.14.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4160,9 +3282,9 @@ } }, "node_modules/esrap": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.6.tgz", - "integrity": "sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==", + "version": "1.4.9", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.9.tgz", + "integrity": "sha512-3OMlcd0a03UGuZpPeUC1HxR3nA23l+HEyCiZw3b3FumJIN9KphoGzDJKMXI1S72jVS1dsenDyQC0kJlO1U9E1g==", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -4191,12 +3313,6 @@ "node": ">=4.0" } }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4207,58 +3323,6 @@ "node": ">=0.10.0" } }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "license": "MIT", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "license": "ISC", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/fast-check": { - "version": "3.23.2", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.23.2.tgz", - "integrity": "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "pure-rand": "^6.1.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/fast-cidr-tools": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/fast-cidr-tools/-/fast-cidr-tools-0.3.2.tgz", - "integrity": "sha512-hH8m1zjBer5VxrFG3dCEIMGEu/hDs/2scCH0vCJqce5ujCEBmZYlCejfZ4IFYTCt1YQard/uXmMzNBs9SR3/qg==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4270,6 +3334,7 @@ "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": { "@nodelib/fs.stat": "^2.0.2", @@ -4286,6 +3351,7 @@ "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": { "is-glob": "^4.0.1" @@ -4312,25 +3378,12 @@ "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": { "reusify": "^1.0.4" } }, - "node_modules/fdir": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", - "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -4344,19 +3397,11 @@ "node": ">=16.0.0" } }, - "node_modules/file-source": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/file-source/-/file-source-0.6.1.tgz", - "integrity": "sha512-1R1KneL7eTXmXfKxC10V/9NeGOdbsAXJ+lQ//fvvcHUgtaZcZDWNJNblxAoVOyV1cj45pOtUrR3vZTBwqcW8XA==", - "license": "BSD-3-Clause", - "dependencies": { - "stream-source": "0.3" - } - }, "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": { "to-regex-range": "^5.0.1" @@ -4403,16 +3448,6 @@ "dev": true, "license": "ISC" }, - "node_modules/focus-trap": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz", - "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tabbable": "^6.2.0" - } - }, "node_modules/follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", @@ -4433,69 +3468,27 @@ } } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", + "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { "node": ">= 6" } }, - "node_modules/formsnap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/formsnap/-/formsnap-1.0.1.tgz", - "integrity": "sha512-TvU9CoLSiacW1c7wXhLiyVpyy/LBfG0CEFDbs3M3jrsxBSrkTpsuhbQ8JYKY3CNCmIhZlgxCH+Vqr7RBF9G53w==", - "dev": true, - "license": "MIT", - "dependencies": { - "nanoid": "^5.0.5" - }, - "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0-next.1", - "sveltekit-superforms": "^2.3.0" - } - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -4564,30 +3557,11 @@ "node": ">= 0.4" } }, - "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -4596,34 +3570,10 @@ "node": ">=10.13.0" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/globals": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", - "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz", + "integrity": "sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==", "dev": true, "license": "MIT", "engines": { @@ -4633,18 +3583,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "license": "MIT" - }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "license": "MIT" - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -4657,6 +3595,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -4664,6 +3609,15 @@ "dev": true, "license": "MIT" }, + "node_modules/hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4726,6 +3680,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -4755,11 +3710,13 @@ } }, "node_modules/immutable": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", - "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", - "devOptional": true, - "license": "MIT" + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/import-fresh": { "version": "3.3.1", @@ -4788,6 +3745,13 @@ "node": ">=0.8.19" } }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==", + "dev": true, + "license": "MIT" + }, "node_modules/internmap": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", @@ -4797,43 +3761,6 @@ "node": ">=12" } }, - "node_modules/intl-messageformat": { - "version": "10.7.15", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.15.tgz", - "integrity": "sha512-LRyExsEsefQSBjU2p47oAheoKz+EOJxSLDdjOaEjdriajfHsMXOmV/EhMvYSg9bAgCUHasuAC+mcUBe/95PfIg==", - "license": "BSD-3-Clause", - "dependencies": { - "@formatjs/ecma402-abstract": "2.3.3", - "@formatjs/fast-memoize": "2.2.6", - "@formatjs/icu-messageformat-parser": "2.11.1", - "tslib": "2" - } - }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/ip-cidr": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/ip-cidr/-/ip-cidr-4.0.2.tgz", - "integrity": "sha512-KifhLKBjdS/hB3TD4UUOalVp1BpzPFvRpgJvXcP0Ya98tuSQTUQ71iI7EW7CKddkBJTYB3GfTWl5eJwpLOXj2A==", - "license": "MIT", - "dependencies": { - "ip-address": "^9.0.5" - }, - "engines": { - "node": ">=16.14.0" - } - }, "node_modules/ip-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", @@ -4846,33 +3773,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "license": "MIT", - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-cidr": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/is-cidr/-/is-cidr-5.1.1.tgz", @@ -4885,43 +3785,21 @@ "node": ">=14" } }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -4946,27 +3824,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "license": "MIT" - }, "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": { "node": ">=0.12.0" } }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "license": "MIT" - }, "node_modules/is-reference": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", @@ -4992,45 +3859,17 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, "license": "ISC" }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/jiti": { - "version": "1.21.7", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", - "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "dev": true, "license": "MIT", "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/joi": { - "version": "17.13.3", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz", - "integrity": "sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "dependencies": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" + "jiti": "lib/jiti-cli.mjs" } }, "node_modules/js-base64": { @@ -5052,12 +3891,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "license": "MIT" - }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -5065,21 +3898,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-schema-to-ts": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-3.1.1.tgz", - "integrity": "sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@babel/runtime": "^7.18.3", - "ts-algebra": "^2.0.0" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -5115,39 +3933,24 @@ } }, "node_modules/known-css-properties": { - "version": "0.35.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", - "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", + "version": "0.36.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.36.0.tgz", + "integrity": "sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==", "dev": true, "license": "MIT" }, - "node_modules/layercake": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/layercake/-/layercake-8.4.2.tgz", - "integrity": "sha512-ZVjdl6ryjz7F4jXX8Dh871nN/Nv6o3m7gLI7KrMPNGiy3Mg5BuA9j0UeucrmK/uLe20XpDyG6X4v/iYJYSPLrg==", - "license": "MIT", - "dependencies": { - "d3-array": "^3.2.4", - "d3-color": "^3.1.0", - "d3-scale": "^4.0.2", - "d3-shape": "^3.2.0" - }, - "peerDependencies": { - "svelte": "3 - 5 || >=5.0.0-next.120", - "typescript": "^5.0.2" - } - }, "node_modules/layerchart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/layerchart/-/layerchart-1.0.5.tgz", - "integrity": "sha512-HVtERu5KJIQ6KB+Fz5RwkjSOGb+kUqPHQkCKPQkSnDIz5B3KypDnHYIillpuFtLCd+tAND4CiY5j0c+NmWrhTg==", + "version": "2.0.0-next.23", + "resolved": "https://registry.npmjs.org/layerchart/-/layerchart-2.0.0-next.23.tgz", + "integrity": "sha512-Uf7/xMjhHcJHQqstjV4RN9GdUWSLQkmrfCKsvTneeJBVNUWs2C9djH6SQTVtv/FcT0HEyIv573RomB3m7uLSUw==", + "dev": true, "license": "MIT", "dependencies": { "@dagrejs/dagre": "^1.1.4", - "@layerstack/svelte-actions": "^1.0.0", - "@layerstack/svelte-stores": "^1.0.0", - "@layerstack/tailwind": "^1.0.0", - "@layerstack/utils": "^1.0.0", + "@layerstack/svelte-actions": "1.0.1-next.12", + "@layerstack/svelte-state": "0.1.0-next.17", + "@layerstack/tailwind": "2.0.0-next.15", + "@layerstack/utils": "2.0.0-next.12", "d3-array": "^3.2.4", "d3-color": "^3.1.0", "d3-delaunay": "^6.0.4", @@ -5167,14 +3970,25 @@ "d3-shape": "^3.2.0", "d3-tile": "^1.0.0", "d3-time": "^3.1.0", - "date-fns": "^4.1.0", - "layercake": "^8.4.2", "lodash-es": "^4.17.21", - "shapefile": "^0.6.6", - "topojson-client": "^3.1.0" + "memoize": "^10.1.0", + "runed": "^0.28.0" }, "peerDependencies": { - "svelte": "^3.56.0 || ^4.0.0 || ^5.0.0" + "svelte": "^5.0.0" + } + }, + "node_modules/layerchart/node_modules/@layerstack/utils": { + "version": "2.0.0-next.12", + "resolved": "https://registry.npmjs.org/@layerstack/utils/-/utils-2.0.0-next.12.tgz", + "integrity": "sha512-fhGZUlSr3N+D44BYm37WKMGSEFyZBW+dwIqtGU8Cl54mR4TLQ/UwyGhdpgIHyH/x/8q1abE0fP0Dn6ZsrDE3BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "d3-array": "^3.2.4", + "d3-time": "^3.1.0", + "d3-time-format": "^4.1.0", + "lodash-es": "^4.17.21" } }, "node_modules/levn": { @@ -5191,30 +4005,255 @@ "node": ">= 0.8.0" } }, - "node_modules/libphonenumber-js": { - "version": "1.12.4", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.4.tgz", - "integrity": "sha512-vLmhg7Gan7idyAKfc6pvCtNzvar4/eIzrVVk3hjNFH5+fGqyjD0gQRovdTrDl20wsmZhBtmZpcsR0tOfquwb8g==", + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", "dev": true, - "license": "MIT", - "optional": true + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } }, "node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=10" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "license": "MIT" - }, "node_modules/locate-character": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", @@ -5264,26 +4303,10 @@ "dev": true, "license": "MIT" }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", - "license": "MIT", - "dependencies": { - "es5-ext": "~0.10.2" - } - }, "node_modules/lucide-svelte": { - "version": "0.476.0", - "resolved": "https://registry.npmjs.org/lucide-svelte/-/lucide-svelte-0.476.0.tgz", - "integrity": "sha512-Ph6zoMWjQVJibDrR+DJoT7LR2uEKLPzzGo886OLRk+nCJZESJUvoCWXk0uE6Y9aaamaSFAdI1Cpwslgzk3YYdQ==", - "dev": true, + "version": "0.516.0", + "resolved": "https://registry.npmjs.org/lucide-svelte/-/lucide-svelte-0.516.0.tgz", + "integrity": "sha512-8YmF3pke1owMbtdYWscJFN47dEqJ41oXz3hVRKnYjQbDXE9uYqkE9KnAME1268mBhsC97xTqMYh07/RYrojLKA==", "license": "ISC", "peerDependencies": { "svelte": "^3 || ^4 || ^5.0.0-next.42" @@ -5307,42 +4330,27 @@ "node": ">= 0.4" } }, - "node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "license": "CC0-1.0" - }, - "node_modules/memoize-weak": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/memoize-weak/-/memoize-weak-1.0.2.tgz", - "integrity": "sha512-gj39xkrjEw7nCn4nJ1M5ms6+MyMlyiGmttzsqAUsAKn6bYKwuTHh/AO3cKPF8IBrTIYTxb0wWXFs3E//Y8VoWQ==", + "node_modules/memoize": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/memoize/-/memoize-10.1.0.tgz", + "integrity": "sha512-MMbFhJzh4Jlg/poq1si90XRlTZRDHVqdlz2mPyGJ6kqMpyHUyVpDd5gpFAvVehW64+RA1eKE9Yt8aSLY7w2Kgg==", "dev": true, - "license": "ISC" - }, - "node_modules/memoizee": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", - "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", - "license": "ISC", + "license": "MIT", "dependencies": { - "d": "^1.0.2", - "es5-ext": "^0.10.64", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" + "mimic-function": "^5.0.1" }, "engines": { - "node": ">=0.12" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/memoize?sponsor=1" } }, "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": { "node": ">= 8" @@ -5352,6 +4360,7 @@ "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": { "braces": "^3.0.3", @@ -5361,18 +4370,6 @@ "node": ">=8.6" } }, - "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==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -5394,6 +4391,19 @@ "node": ">= 0.6" } }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/mini-svg-data-uri": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", @@ -5421,24 +4431,113 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, - "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==", + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "dev": true, "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mode-watcher": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/mode-watcher/-/mode-watcher-1.0.8.tgz", + "integrity": "sha512-1YIgYymrae0lhcG9zPS/YWOvcKsUbM4bLGIh+eXTUIput5+dEJifcmUgp8NSehSXGSwITH6jbSjNhGEIhE3k5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "runed": "^0.25.0", + "svelte-toolbelt": "^0.7.1" + }, "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0-next.1" + "svelte": "^5.27.0" + } + }, + "node_modules/mode-watcher/node_modules/runed": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/runed/-/runed-0.25.0.tgz", + "integrity": "sha512-7+ma4AG9FT2sWQEA0Egf6mb7PBT2vHyuHail1ie8ropfSjvZGtEAx8YTmUjv/APCsdRRxEVvArNjALk9zFSOrg==", + "dev": true, + "funding": [ + "https://github.com/sponsors/huntabyte", + "https://github.com/sponsors/tglide" + ], + "dependencies": { + "esm-env": "^1.0.0" + }, + "peerDependencies": { + "svelte": "^5.7.0" + } + }, + "node_modules/mode-watcher/node_modules/svelte-toolbelt": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.7.1.tgz", + "integrity": "sha512-HcBOcR17Vx9bjaOceUvxkY3nGmbBmCBBbuWLLEWO6jtmWH8f/QoWmbyUfQZrpDINH39en1b8mptfPQT9VKQ1xQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/huntabyte" + ], + "dependencies": { + "clsx": "^2.1.1", + "runed": "^0.23.2", + "style-to-object": "^1.0.8" + }, + "engines": { + "node": ">=18", + "pnpm": ">=8.7.0" + }, + "peerDependencies": { + "svelte": "^5.0.0" + } + }, + "node_modules/mode-watcher/node_modules/svelte-toolbelt/node_modules/runed": { + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/runed/-/runed-0.23.4.tgz", + "integrity": "sha512-9q8oUiBYeXIDLWNK5DfCWlkL0EW3oGbk845VdKlPeia28l751VpfesaB/+7pI6rnbx1I6rqoZ2fZxptOJLxILA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/huntabyte", + "https://github.com/sponsors/tglide" + ], + "dependencies": { + "esm-env": "^1.0.0" + }, + "peerDependencies": { + "svelte": "^5.7.0" } }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -5461,21 +4560,11 @@ "dev": true, "license": "MIT" }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, "node_modules/nanoid": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz", - "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, "funding": [ { "type": "github", @@ -5484,10 +4573,10 @@ ], "license": "MIT", "bin": { - "nanoid": "bin/nanoid.js" + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": "^18 || >=20" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, "node_modules/natural-compare": { @@ -5497,77 +4586,14 @@ "dev": true, "license": "MIT" }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "license": "ISC" - }, "node_modules/node-addon-api": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", "dev": true, "license": "MIT", - "optional": true - }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", - "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", - "dev": true, - "license": "MIT", "optional": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "license": "MIT", - "engines": { - "node": ">= 6" - } + "peer": true }, "node_modules/optionator": { "version": "0.9.4", @@ -5619,23 +4645,55 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "license": "BlueOak-1.0.0" - }, "node_modules/paneforge": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/paneforge/-/paneforge-0.0.6.tgz", - "integrity": "sha512-jYeN/wdREihja5c6nK3S5jritDQ+EbCqC5NrDo97qCZzZ9GkmEcN5C0ZCjF4nmhBwkDKr6tLIgz4QUKWxLXjAw==", + "version": "1.0.0-next.5", + "resolved": "https://registry.npmjs.org/paneforge/-/paneforge-1.0.0-next.5.tgz", + "integrity": "sha512-1ArDM+GMEO+o6pixEAFobhTkWkyxUDdHyw2bKruvQIXBStJmdRP7HoV4jNBZ/2i9UHDzmczxJzA3D2tKa91phw==", "dev": true, "license": "MIT", "dependencies": { - "nanoid": "^5.0.4" + "runed": "^0.23.4", + "svelte-toolbelt": "^0.7.1" }, "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0-next.1" + "svelte": "^5.20.0" + } + }, + "node_modules/paneforge/node_modules/runed": { + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/runed/-/runed-0.23.4.tgz", + "integrity": "sha512-9q8oUiBYeXIDLWNK5DfCWlkL0EW3oGbk845VdKlPeia28l751VpfesaB/+7pI6rnbx1I6rqoZ2fZxptOJLxILA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/huntabyte", + "https://github.com/sponsors/tglide" + ], + "dependencies": { + "esm-env": "^1.0.0" + }, + "peerDependencies": { + "svelte": "^5.7.0" + } + }, + "node_modules/paneforge/node_modules/svelte-toolbelt": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.7.1.tgz", + "integrity": "sha512-HcBOcR17Vx9bjaOceUvxkY3nGmbBmCBBbuWLLEWO6jtmWH8f/QoWmbyUfQZrpDINH39en1b8mptfPQT9VKQ1xQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/huntabyte" + ], + "dependencies": { + "clsx": "^2.1.1", + "runed": "^0.23.2", + "style-to-object": "^1.0.8" + }, + "engines": { + "node": ">=18", + "pnpm": ">=8.7.0" + }, + "peerDependencies": { + "svelte": "^5.0.0" } }, "node_modules/parent-module": { @@ -5665,63 +4723,12 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-source": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/path-source/-/path-source-0.1.3.tgz", - "integrity": "sha512-dWRHm5mIw5kw0cs3QZLNmpUWty48f5+5v9nWD2dw3Y0Hf+s01Ag8iJEWV0Sm0kocE8kK27DrIowha03e1YR+Qw==", - "license": "BSD-3-Clause", - "dependencies": { - "array-source": "0.0", - "file-source": "0.6" - } - }, - "node_modules/periscopic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", - "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^3.0.0", - "is-reference": "^3.0.0" - } - }, - "node_modules/periscopic/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -5729,39 +4736,29 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "license": "MIT", - "engines": { - "node": ">= 6" - } + "node_modules/pofile": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/pofile/-/pofile-1.1.4.tgz", + "integrity": "sha512-r6Q21sKsY1AjTVVjOuU02VYKVNQGJNQHjTIvs4dEbeuuYfxgYk/DGD2mqqq4RDaVkwdSq0VEtmQUOPe/wH8X3g==", + "license": "MIT" }, "node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, "funding": [ { "type": "opencollective", @@ -5778,7 +4775,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.8", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -5786,47 +4783,11 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "license": "MIT", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, "node_modules/postcss-load-config": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "lilconfig": "^2.0.5", @@ -5856,50 +4817,12 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "devOptional": true, + "dev": true, "license": "ISC", "engines": { "node": ">= 6" } }, - "node_modules/postcss-nested": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", - "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.1.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-nested/node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-safe-parser": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", @@ -5955,9 +4878,9 @@ } }, "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==", + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", "dev": true, "license": "MIT", "dependencies": { @@ -5968,30 +4891,6 @@ "node": ">=4" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "license": "MIT" - }, - "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -6003,9 +4902,10 @@ } }, "node_modules/prettier": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", - "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -6018,9 +4918,9 @@ } }, "node_modules/prettier-plugin-svelte": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.3.3.tgz", - "integrity": "sha512-yViK9zqQ+H2qZD1w/bH7W8i+bVfKrD8GIFjkFe4Thl6kCT9SlAsXVNmt3jCvQOCsnOhcvYgsoVlRV/Eu6x5nNw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.4.0.tgz", + "integrity": "sha512-pn1ra/0mPObzqoIQn/vUTR3ZZI6UuZ0sHqMK5x2jMLGrs53h0sXhkVuDcrlssHwIMk7FYrMjHBPoUSyyEEDlBQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -6029,9 +4929,9 @@ } }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.6.11", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.11.tgz", - "integrity": "sha512-YxaYSIvZPAqhrrEpRtonnrXdghZg1irNg4qrjboCXrpybLWVs55cW2N3juhspVJiO0JBvYJT8SYsJpc8OQSnsA==", + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.12.tgz", + "integrity": "sha512-OuTQKoqNwV7RnxTPwXWzOFXy6Jc4z8oeRZYGuMpRyG3WbuR3jjXdQFK8qFBMBx8UHWdHrddARz2fgUenild6aw==", "dev": true, "license": "MIT", "engines": { @@ -6107,35 +5007,6 @@ } } }, - "node_modules/prism-svelte": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/prism-svelte/-/prism-svelte-0.5.0.tgz", - "integrity": "sha512-db91Bf3pRGKDPz1lAqLFSJXeW13mulUJxhycysFpfXV5MIK7RgWWK2E5aPAa71s8TCzQUXxF5JOV42/iOs6QkA==", - "license": "MIT" - }, - "node_modules/prism-themes": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/prism-themes/-/prism-themes-1.9.0.tgz", - "integrity": "sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==", - "license": "MIT" - }, - "node_modules/prismjs": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", - "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/property-expr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", - "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -6152,28 +5023,11 @@ "node": ">=6" } }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT", - "optional": true - }, "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": [ { "type": "github", @@ -6190,20 +5044,11 @@ ], "license": "MIT" }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "license": "MIT", - "dependencies": { - "pify": "^2.3.0" - } - }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 14.18.0" @@ -6213,34 +5058,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -6251,19 +5068,11 @@ "node": ">=4" } }, - "node_modules/resolve.exports": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", - "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -6274,12 +5083,14 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "dev": true, "license": "Unlicense" }, "node_modules/rollup": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz", - "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", + "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==", + "dev": true, "license": "MIT", "dependencies": { "@types/estree": "1.0.7" @@ -6292,50 +5103,41 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.40.0", - "@rollup/rollup-android-arm64": "4.40.0", - "@rollup/rollup-darwin-arm64": "4.40.0", - "@rollup/rollup-darwin-x64": "4.40.0", - "@rollup/rollup-freebsd-arm64": "4.40.0", - "@rollup/rollup-freebsd-x64": "4.40.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.40.0", - "@rollup/rollup-linux-arm-musleabihf": "4.40.0", - "@rollup/rollup-linux-arm64-gnu": "4.40.0", - "@rollup/rollup-linux-arm64-musl": "4.40.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.40.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0", - "@rollup/rollup-linux-riscv64-gnu": "4.40.0", - "@rollup/rollup-linux-riscv64-musl": "4.40.0", - "@rollup/rollup-linux-s390x-gnu": "4.40.0", - "@rollup/rollup-linux-x64-gnu": "4.40.0", - "@rollup/rollup-linux-x64-musl": "4.40.0", - "@rollup/rollup-win32-arm64-msvc": "4.40.0", - "@rollup/rollup-win32-ia32-msvc": "4.40.0", - "@rollup/rollup-win32-x64-msvc": "4.40.0", + "@rollup/rollup-android-arm-eabi": "4.43.0", + "@rollup/rollup-android-arm64": "4.43.0", + "@rollup/rollup-darwin-arm64": "4.43.0", + "@rollup/rollup-darwin-x64": "4.43.0", + "@rollup/rollup-freebsd-arm64": "4.43.0", + "@rollup/rollup-freebsd-x64": "4.43.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.43.0", + "@rollup/rollup-linux-arm-musleabihf": "4.43.0", + "@rollup/rollup-linux-arm64-gnu": "4.43.0", + "@rollup/rollup-linux-arm64-musl": "4.43.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.43.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-musl": "4.43.0", + "@rollup/rollup-linux-s390x-gnu": "4.43.0", + "@rollup/rollup-linux-x64-gnu": "4.43.0", + "@rollup/rollup-linux-x64-musl": "4.43.0", + "@rollup/rollup-win32-arm64-msvc": "4.43.0", + "@rollup/rollup-win32-ia32-msvc": "4.43.0", + "@rollup/rollup-win32-x64-msvc": "4.43.0", "fsevents": "~2.3.2" } }, - "node_modules/rollup-plugin-svelte": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-7.2.2.tgz", - "integrity": "sha512-hgnIblTRewaBEVQD6N0Q43o+y6q1TmDRhBjaEzQCi50bs8TXqjc+d1zFZyE8tsfgcfNHZQzclh4RxlFUB85H8Q==", - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^4.1.0", - "resolve.exports": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "rollup": ">=2.0.0", - "svelte": ">=3.5.0" - } + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" }, "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": [ { "type": "github", @@ -6355,16 +5157,35 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/runed": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/runed/-/runed-0.28.0.tgz", + "integrity": "sha512-k2xx7RuO9hWcdd9f+8JoBeqWtYrm5CALfgpkg2YDB80ds/QE4w0qqu34A7fqiAwiBBSBQOid7TLxwxVC27ymWQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/huntabyte", + "https://github.com/sponsors/tglide" + ], + "license": "MIT", + "dependencies": { + "esm-env": "^1.0.0" + }, + "peerDependencies": { + "svelte": "^5.7.0" + } + }, "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "dev": true, "license": "BSD-3-Clause" }, "node_modules/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, "license": "MIT", "dependencies": { "mri": "^1.1.0" @@ -6377,14 +5198,17 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, "license": "MIT" }, "node_modules/sass": { - "version": "1.85.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.1.tgz", - "integrity": "sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==", - "devOptional": true, + "version": "1.89.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.89.2.tgz", + "integrity": "sha512-xCmtksBKd/jdJ9Bt9p7nPKiuqrlBMBuuGkQlkhZjjQk3Ty48lv93k5Dq6OPkKt4XwxDJ7tvlfrTa1MPA9bf+QA==", + "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", @@ -6401,9 +5225,9 @@ } }, "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", "bin": { @@ -6420,34 +5244,11 @@ "dev": true, "license": "MIT" }, - "node_modules/shapefile": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/shapefile/-/shapefile-0.6.6.tgz", - "integrity": "sha512-rLGSWeK2ufzCVx05wYd+xrWnOOdSV7xNUW5/XFgx3Bc02hBkpMlrd2F1dDII7/jhWzv0MSyBFh5uJIy9hLdfuw==", - "license": "BSD-3-Clause", - "dependencies": { - "array-source": "0.0", - "commander": "2", - "path-source": "0.1", - "slice-source": "0.4", - "stream-source": "0.3", - "text-encoding": "^0.6.4" - }, - "bin": { - "dbf2json": "bin/dbf2json", - "shp2json": "bin/shp2json" - } - }, - "node_modules/shapefile/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" @@ -6460,23 +5261,12 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/sirv": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", @@ -6492,152 +5282,16 @@ "node": ">=18" } }, - "node_modules/slice-source": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/slice-source/-/slice-source-0.4.1.tgz", - "integrity": "sha512-YiuPbxpCj4hD9Qs06hGAz/OZhQ0eDuALN0lRWJez0eD/RevzKqGdUx1IOMUnXgpr+sXZLq3g8ERwbAH0bCb8vg==", - "license": "BSD-3-Clause" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "license": "BSD-3-Clause" - }, - "node_modules/stream-source": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/stream-source/-/stream-source-0.3.5.tgz", - "integrity": "sha512-ZuEDP9sgjiAwUVoDModftG0JtYiLUV8K4ljYD1VyUMRWtbVf92474o4kuuul43iZ8t/hRuiDAx1dIJSvirrK/g==", - "license": "BSD-3-Clause" - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -6651,26 +5305,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "node_modules/style-to-object": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.9.tgz", + "integrity": "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==", + "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "inline-style-parser": "0.2.4" } }, "node_modules/super-regex": { @@ -6690,17 +5332,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/superstruct": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", - "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6714,153 +5345,10 @@ "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sveld": { - "version": "0.22.1", - "resolved": "https://registry.npmjs.org/sveld/-/sveld-0.22.1.tgz", - "integrity": "sha512-81zODtru1jsOujk+RUgj4RT3fXaG2nFZIWkeVkm0ZyqsrHxTNUfGJEQgkj6jcvwiEEVbYLUHvehnkfCbKDnarQ==", - "license": "Apache-2.0", - "dependencies": { - "@rollup/plugin-node-resolve": "^13.3.0", - "acorn": "^8.14.0", - "comment-parser": "^1.4.1", - "prettier": "^3.4.2", - "rollup": "^2.79.2", - "rollup-plugin-svelte": "^7.2.2", - "svelte": "^4.2.19", - "svelte-preprocess": "^6.0.3", - "tinyglobby": "^0.2.10", - "typescript": "^5.7.3" - }, - "bin": { - "sveld": "cli.js" - } - }, - "node_modules/sveld/node_modules/@rollup/plugin-node-resolve": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz", - "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==", - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "deepmerge": "^4.2.2", - "is-builtin-module": "^3.1.0", - "is-module": "^1.0.0", - "resolve": "^1.19.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^2.42.0" - } - }, - "node_modules/sveld/node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "license": "MIT", - "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" - } - }, - "node_modules/sveld/node_modules/@rollup/pluginutils/node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "license": "MIT" - }, - "node_modules/sveld/node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "license": "MIT" - }, - "node_modules/sveld/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/sveld/node_modules/rollup": { - "version": "2.79.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", - "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", - "license": "MIT", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/sveld/node_modules/svelte": { - "version": "4.2.19", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz", - "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==", - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.1", - "@jridgewell/sourcemap-codec": "^1.4.15", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/estree": "^1.0.1", - "acorn": "^8.9.0", - "aria-query": "^5.3.0", - "axobject-query": "^4.0.0", - "code-red": "^1.0.3", - "css-tree": "^2.3.1", - "estree-walker": "^3.0.3", - "is-reference": "^3.0.1", - "locate-character": "^3.0.0", - "magic-string": "^0.30.4", - "periscopic": "^3.1.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/sveld/node_modules/svelte/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/svelte": { - "version": "5.25.6", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.25.6.tgz", - "integrity": "sha512-RGkaeAXDuJdvhA1fdSM5GgD++vYfJYijZL0uN6kM2s/TRJ663jktBhZlF0qjzAJGR/34PtaeT3G8MKJY1EKeqg==", + "version": "5.34.5", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.34.5.tgz", + "integrity": "sha512-MMqhT/iTdwExPcyBCt+Bqxv7FV+LpSciej/gVgd/Vj7zRF9iPgRWGBxiVAwfzPYAOgwgFigIAQV8VJfhyB08/w==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", @@ -6872,7 +5360,7 @@ "axobject-query": "^4.1.0", "clsx": "^2.1.1", "esm-env": "^1.2.1", - "esrap": "^1.4.6", + "esrap": "^1.4.8", "is-reference": "^3.0.3", "locate-character": "^3.0.0", "magic-string": "^0.30.11", @@ -6883,9 +5371,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.2.1", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.2.1.tgz", + "integrity": "sha512-e49SU1RStvQhoipkQ/aonDhHnG3qxHSBtNfBRb9pxVXoa+N7qybAo32KgA9wEb2PCYFNaDg7bZCdhLD1vHpdYA==", "dev": true, "license": "MIT", "dependencies": { @@ -6906,10 +5394,40 @@ "typescript": ">=5.0.0" } }, + "node_modules/svelte-check/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/svelte-check/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/svelte-eslint-parser": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.0.0.tgz", - "integrity": "sha512-diZzpeeFhAxormeIhmRS4vXx98GG6T7Dq5y1a6qffqs/5MBrBqqDg8bj88iEohp6bvhU4MIABJmOTa0gXWcbSQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.2.0.tgz", + "integrity": "sha512-mbPtajIeuiyU80BEyGvwAktBeTX7KCr5/0l+uRGLq1dafwRNrjfM5kHGJScEBlPG3ipu6dJqfW/k0/fujvIEVw==", "dev": true, "license": "MIT", "dependencies": { @@ -6921,7 +5439,7 @@ "postcss-selector-parser": "^7.0.0" }, "engines": { - "node": "^18.20.4 || ^20.18.0 || >=22.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://github.com/sponsors/ota-meshi" @@ -6935,650 +5453,52 @@ } } }, - "node_modules/svelte-french-toast": { - "version": "2.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/svelte-french-toast/-/svelte-french-toast-2.0.0-alpha.0.tgz", - "integrity": "sha512-81wcVaY9UZ/0JuzLEizMSoIXqNbX7yhfTZavBuw94T3cnT2HmJ9O+qXY/c91h9FkeMwboo0KHZVmzOEQVTXDFg==", + "node_modules/svelte-eslint-parser/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": { - "svelte-writable-derived": "^3.1.1" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/svelte-sonner": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/svelte-sonner/-/svelte-sonner-1.0.5.tgz", + "integrity": "sha512-9dpGPFqKb/QWudYqGnEz93vuY+NgCEvyNvxoCLMVGw6sDN/3oVeKV1xiEirW2E1N3vJEyj5imSBNOGltQHA7mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "runed": "^0.28.0" }, "peerDependencies": { "svelte": "^5.0.0" } }, - "node_modules/svelte-i18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/svelte-i18n/-/svelte-i18n-4.0.1.tgz", - "integrity": "sha512-jaykGlGT5PUaaq04JWbJREvivlCnALtT+m87Kbm0fxyYHynkQaxQMnIKHLm2WeIuBRoljzwgyvz0Z6/CMwfdmQ==", - "license": "MIT", - "dependencies": { - "cli-color": "^2.0.3", - "deepmerge": "^4.2.2", - "esbuild": "^0.19.2", - "estree-walker": "^2", - "intl-messageformat": "^10.5.3", - "sade": "^1.8.1", - "tiny-glob": "^0.2.9" - }, - "bin": { - "svelte-i18n": "dist/cli.js" - }, - "engines": { - "node": ">= 16" - }, - "peerDependencies": { - "svelte": "^3 || ^4 || ^5" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/@esbuild/win32-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/svelte-i18n/node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", - "@esbuild/darwin-arm64": "0.19.12", - "@esbuild/darwin-x64": "0.19.12", - "@esbuild/freebsd-arm64": "0.19.12", - "@esbuild/freebsd-x64": "0.19.12", - "@esbuild/linux-arm": "0.19.12", - "@esbuild/linux-arm64": "0.19.12", - "@esbuild/linux-ia32": "0.19.12", - "@esbuild/linux-loong64": "0.19.12", - "@esbuild/linux-mips64el": "0.19.12", - "@esbuild/linux-ppc64": "0.19.12", - "@esbuild/linux-riscv64": "0.19.12", - "@esbuild/linux-s390x": "0.19.12", - "@esbuild/linux-x64": "0.19.12", - "@esbuild/netbsd-x64": "0.19.12", - "@esbuild/openbsd-x64": "0.19.12", - "@esbuild/sunos-x64": "0.19.12", - "@esbuild/win32-arm64": "0.19.12", - "@esbuild/win32-ia32": "0.19.12", - "@esbuild/win32-x64": "0.19.12" - } - }, - "node_modules/svelte-multiselect": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/svelte-multiselect/-/svelte-multiselect-11.1.0.tgz", - "integrity": "sha512-D93t6GlOV//gU7upR59uCd755Hq6OWhqv9ddhOXBDN/mEZj5XOAYHwDjUjePUKlE+bI+jry1BlZef8Mof2Y+YA==", - "license": "MIT", - "peerDependencies": { - "svelte": "^5.8.0" - } - }, - "node_modules/svelte-preprocess": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-6.0.3.tgz", - "integrity": "sha512-PLG2k05qHdhmRG7zR/dyo5qKvakhm8IJ+hD2eFRQmMLHp7X3eJnjeupUtvuRpbNiF31RjVw45W+abDwHEmP5OA==", - "hasInstallScript": true, - "license": "MIT", - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.10.2", - "coffeescript": "^2.5.1", - "less": "^3.11.3 || ^4.0.0", - "postcss": "^7 || ^8", - "postcss-load-config": ">=3", - "pug": "^3.0.0", - "sass": "^1.26.8", - "stylus": ">=0.55", - "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", - "svelte": "^4.0.0 || ^5.0.0-next.100 || ^5.0.0", - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "coffeescript": { - "optional": true - }, - "less": { - "optional": true - }, - "postcss": { - "optional": true - }, - "postcss-load-config": { - "optional": true - }, - "pug": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/svelte-ux": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/svelte-ux/-/svelte-ux-1.0.3.tgz", - "integrity": "sha512-vxuIxgx0QdNxbVSbJ9duVevuZPljGxU5w58vX5Y2STxJCOsGs8EoxubeRlbMbZGyLcOrutplrLrfdT8MjRr5jw==", - "license": "MIT", - "dependencies": { - "@floating-ui/dom": "^1.6.13", - "@fortawesome/fontawesome-common-types": "^6.7.2", - "@layerstack/svelte-actions": "^1.0.0", - "@layerstack/svelte-stores": "^1.0.1", - "@layerstack/svelte-table": "^1.0.0", - "@layerstack/tailwind": "^1.0.0", - "@layerstack/utils": "^1.0.0", - "@mdi/js": "^7.4.47", - "culori": "^4.0.1", - "d3-array": "^3.2.4", - "d3-scale": "^4.0.2", - "date-fns": "^4.1.0", - "esm-env": "^1.2.2", - "immer": "^10.1.1", - "lodash-es": "^4.17.21", - "prism-svelte": "^0.5.0", - "prism-themes": "^1.9.0", - "prismjs": "^1.29.0", - "sveld": "^0.22.1", - "zod": "^3.24.2" - }, - "peerDependencies": { - "svelte": "^3.56.0 || ^4.0.0 || ^5.0.0" - } - }, - "node_modules/svelte-writable-derived": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/svelte-writable-derived/-/svelte-writable-derived-3.1.1.tgz", - "integrity": "sha512-w4LR6/bYZEuCs7SGr+M54oipk/UQKtiMadyOhW0PTwAtJ/Ai12QS77sLngEcfBx2q4H8ZBQucc9ktSA5sUGZWw==", - "license": "MIT", - "funding": { - "url": "https://ko-fi.com/pixievoltno1" - }, - "peerDependencies": { - "svelte": "^3.2.1 || ^4.0.0-next.1 || ^5.0.0-next.94" - } - }, - "node_modules/sveltekit-superforms": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/sveltekit-superforms/-/sveltekit-superforms-2.25.0.tgz", - "integrity": "sha512-QIzoPaoLJKDnMtQIC1XmgBYdZi/n6exU34KhCmxq1dl+kvLC49S2n3DeHUiVnVpVvWc41dgdSEQgzhiJyjlNMg==", + "node_modules/svelte-toolbelt": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.9.2.tgz", + "integrity": "sha512-REb1cENGnFbhNSmIdCb1SDIpjEa3n1kXhNVHqGNEesjmPX3bG87gUZiCG8cqOt9AAarqzTzOtI2jEEWr/ZbHwA==", "dev": true, "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ciscoheat" - }, - { - "type": "ko-fi", - "url": "https://ko-fi.com/ciscoheat" - }, - { - "type": "paypal", - "url": "https://www.paypal.com/donate/?hosted_button_id=NY7F5ALHHSVQS" - } + "https://github.com/sponsors/huntabyte" ], - "license": "MIT", "dependencies": { - "devalue": "^5.1.1", - "memoize-weak": "^1.0.2", - "ts-deepmerge": "^7.0.2" + "clsx": "^2.1.1", + "runed": "^0.28.0", + "style-to-object": "^1.0.8" }, - "optionalDependencies": { - "@exodus/schemasafe": "^1.3.0", - "@gcornut/valibot-json-schema": "^0.31.0", - "@sinclair/typebox": "^0.34.28", - "@typeschema/class-validator": "^0.3.0", - "@vinejs/vine": "^3.0.0", - "arktype": "^2.1.9", - "class-validator": "^0.14.1", - "effect": "^3.13.7", - "joi": "^17.13.3", - "json-schema-to-ts": "^3.1.1", - "superstruct": "^2.0.2", - "valibot": "1.0.0-rc.3", - "yup": "^1.6.1", - "zod": "^3.24.2", - "zod-to-json-schema": "^3.24.3" + "engines": { + "node": ">=18", + "pnpm": ">=8.7.0" }, "peerDependencies": { - "@exodus/schemasafe": "^1.3.0", - "@sinclair/typebox": "^0.34.28", - "@sveltejs/kit": "1.x || 2.x", - "@typeschema/class-validator": "^0.3.0", - "@vinejs/vine": "^1.8.0 || ^2.0.0 || ^3.0.0", - "arktype": ">=2.0.0-rc.23", - "class-validator": "^0.14.1", - "effect": "^3.13.7", - "joi": "^17.13.1", - "superstruct": "^2.0.2", - "svelte": "3.x || 4.x || >=5.0.0-next.51", - "valibot": ">=1.0.0-rc.3", - "yup": "^1.4.0", - "zod": "^3.24.2" - }, - "peerDependenciesMeta": { - "@exodus/schemasafe": { - "optional": true - }, - "@sinclair/typebox": { - "optional": true - }, - "@typeschema/class-validator": { - "optional": true - }, - "@vinejs/vine": { - "optional": true - }, - "arktype": { - "optional": true - }, - "class-validator": { - "optional": true - }, - "effect": { - "optional": true - }, - "joi": { - "optional": true - }, - "superstruct": { - "optional": true - }, - "valibot": { - "optional": true - }, - "yup": { - "optional": true - }, - "zod": { - "optional": true - } + "svelte": "^5.30.2" } }, "node_modules/tabbable": { @@ -7595,9 +5515,9 @@ "license": "MIT" }, "node_modules/tailwind-merge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.0.2.tgz", - "integrity": "sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.3.1.tgz", + "integrity": "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==", "dev": true, "license": "MIT", "funding": { @@ -7606,13 +5526,13 @@ } }, "node_modules/tailwind-variants": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-0.3.1.tgz", - "integrity": "sha512-krn67M3FpPwElg4FsZrOQd0U26o7UDH/QOkK8RNaiCCrr052f6YJPBUfNKnPo/s/xRzNPtv1Mldlxsg8Tb46BQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-1.0.0.tgz", + "integrity": "sha512-2WSbv4ulEEyuBKomOunut65D8UZwxrHoRfYnxGcQNnHqlSCp2+B7Yz2W+yrNDrxRodOXtGD/1oCcKGNBnUqMqA==", "dev": true, "license": "MIT", "dependencies": { - "tailwind-merge": "2.5.4" + "tailwind-merge": "3.0.2" }, "engines": { "node": ">=16.x", @@ -7623,9 +5543,9 @@ } }, "node_modules/tailwind-variants/node_modules/tailwind-merge": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.4.tgz", - "integrity": "sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.0.2.tgz", + "integrity": "sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==", "dev": true, "license": "MIT", "funding": { @@ -7634,195 +5554,38 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.17", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", - "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.6.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.2", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.6", - "lilconfig": "^3.1.3", - "micromatch": "^4.0.8", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.1.1", - "postcss": "^8.4.47", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.2", - "postcss-nested": "^6.2.0", - "postcss-selector-parser": "^6.1.2", - "resolve": "^1.22.8", - "sucrase": "^3.35.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/tailwindcss/node_modules/chokidar/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==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tailwindcss/node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/tailwindcss/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tailwindcss/node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" - }, - "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/tailwindcss/node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tailwindcss/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/tar-mini": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/tar-mini/-/tar-mini-0.2.0.tgz", - "integrity": "sha512-+qfUHz700DWnRutdUsxRRVZ38G1Qr27OetwaMYTdg8hcPxf46U0S1Zf76dQMWRBmusOt2ZCK5kbIaiLkoGO7WQ==", + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.10.tgz", + "integrity": "sha512-P3nr6WkvKV/ONsTzj6Gb57sWPMX29EPNPopo7+FcpkQaNsrNpZ1pv8QmrYI2RqEKD7mlGqLnGovlcYnBK0IqUA==", "dev": true, "license": "MIT" }, - "node_modules/text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha512-hJnc6Qg3dWoOMkqP53F0dzRIgtmsAge09kxUIqGrEUS4qr5rWLckGYaQAVr+opBrIMRErGgy6f5aPnyPpyGRfg==", - "deprecated": "no longer maintained", - "license": "Unlicense" - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "node_modules/tapable": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", + "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "dev": true, "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0" + "engines": { + "node": ">=6" } }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "license": "MIT", + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dev": true, + "license": "ISC", "dependencies": { - "thenify": ">= 3.1.0 < 4" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" }, "engines": { - "node": ">=0.8" + "node": ">=18" } }, "node_modules/time-span": { @@ -7840,41 +5603,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/timers-ext": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", - "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", - "license": "ISC", - "dependencies": { - "es5-ext": "^0.10.64", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/tiny-case": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", - "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "license": "MIT", - "dependencies": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, "node_modules/tinyglobby": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", - "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", "license": "MIT", "dependencies": { "fdir": "^6.4.4", @@ -7887,10 +5619,37 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "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": { "is-number": "^7.0.0" @@ -7899,34 +5658,6 @@ "node": ">=8.0" } }, - "node_modules/topojson-client": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", - "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", - "license": "ISC", - "dependencies": { - "commander": "2" - }, - "bin": { - "topo2geo": "bin/topo2geo", - "topomerge": "bin/topomerge", - "topoquantize": "bin/topoquantize" - } - }, - "node_modules/topojson-client/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" - }, - "node_modules/toposort": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/totalist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", @@ -7937,18 +5668,10 @@ "node": ">=6" } }, - "node_modules/ts-algebra": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-2.0.0.tgz", - "integrity": "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/ts-api-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", - "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { @@ -7958,33 +5681,22 @@ "typescript": ">=4.8.4" } }, - "node_modules/ts-deepmerge": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/ts-deepmerge/-/ts-deepmerge-7.0.2.tgz", - "integrity": "sha512-akcpDTPuez4xzULo5NwuoKwYRtjQJ9eoNfBACiBMaXwNAx7B1PKfe5wqUFJuW5uKzQ68YjDFwPaWHDG1KnFGsA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14.13.1" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "license": "Apache-2.0" - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, "license": "0BSD" }, - "node_modules/type": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", - "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", - "license": "ISC" + "node_modules/tw-animate-css": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.3.4.tgz", + "integrity": "sha512-dd1Ht6/YQHcNbq0znIT6dG8uhO7Ce+VIIhZUhjsryXsMPJQz3bZg7Q2eNzLwipb25bRZslGb2myio5mScd1TFg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Wombosvideo" + } }, "node_modules/type-check": { "version": "0.4.0", @@ -7999,24 +5711,11 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "optional": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "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.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -8027,15 +5726,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.25.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.25.0.tgz", - "integrity": "sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q==", + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.34.1.tgz", + "integrity": "sha512-XjS+b6Vg9oT1BaIUfkW3M3LvqZE++rbzAMEHuccCfO/YkP43ha6w3jTEMilQxMF92nVOYCcdjv1ZUhAa1D/0ow==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.25.0", - "@typescript-eslint/parser": "8.25.0", - "@typescript-eslint/utils": "8.25.0" + "@typescript-eslint/eslint-plugin": "8.34.1", + "@typescript-eslint/parser": "8.34.1", + "@typescript-eslint/utils": "8.34.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8046,44 +5745,7 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/uri-js": { @@ -8100,28 +5762,13 @@ "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/valibot": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/valibot/-/valibot-1.0.0-rc.3.tgz", - "integrity": "sha512-LT0REa7Iqx4QGcaHLiTiTkcmJqJ9QdpOy89HALFFBJgejTS64GQFRIbDF7e4f6pauQbo/myfKGmWXCLhMeM6+g==", - "dev": true, - "license": "MIT", - "optional": true, - "peerDependencies": { - "typescript": ">=5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/validator": { - "version": "13.15.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.0.tgz", - "integrity": "sha512-36B2ryl4+oL5QxZ3AzD0t5SsMNGvTtQHpjgFO5tbNxfXbMFkY822ktCDe1MnlqV3301QQI9SLHDNJokDI+Z9pA==", + "version": "13.15.15", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.15.tgz", + "integrity": "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==", "license": "MIT", "engines": { "node": ">= 0.10" @@ -8202,43 +5849,466 @@ } } }, - "node_modules/vite-plugin-compression2": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/vite-plugin-compression2/-/vite-plugin-compression2-1.3.3.tgz", - "integrity": "sha512-Mb+xi/C5b68awtF4fNwRBPtoZiyUHU3I0SaBOAGlerlR31kusq1si6qG31lsjJH8T7QNg/p3IJY2HY9O9SvsfQ==", + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.1.0", - "tar-mini": "^0.2.0" - }, - "peerDependencies": { - "vite": "^2.0.0||^3.0.0||^4.0.0||^5.0.0 ||^6.0.0" + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" } }, - "node_modules/vite-plugin-compression2/node_modules/@rollup/pluginutils": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", - "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=14.0.0" + "node": ">=18" }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + "picomatch": "^3 || ^4" }, "peerDependenciesMeta": { - "rollup": { + "picomatch": { "optional": true } } }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/vitefu": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.6.tgz", @@ -8262,6 +6332,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" @@ -8283,104 +6354,46 @@ "node": ">=0.10.0" } }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/wuchale": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/wuchale/-/wuchale-0.5.5.tgz", + "integrity": "sha512-Dqvg/XeeGciT/kX8bbsQLO6beIisEFnYmp71rofITXi3vJxmQN4yk0DhUXLKfJO9+xXSBNmrwU7rxpIL6/dpKw==", "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "@sveltejs/acorn-typescript": "^1.0.5", + "acorn": "^8.15.0", + "magic-string": "^0.30.17", + "pofile": "^1.1.4", + "svelte": "^5.28.1", + "tinyglobby": "^0.2.14" }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "bin": { + "wuchale": "dist/cli.js" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=18" } }, "node_modules/yaml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", - "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, "license": "ISC", + "optional": true, + "peer": true, "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" + "node": ">= 14.6" } }, "node_modules/yocto-queue": { @@ -8396,20 +6409,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yup": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/yup/-/yup-1.6.1.tgz", - "integrity": "sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "property-expr": "^2.0.5", - "tiny-case": "^1.0.3", - "toposort": "^2.0.2", - "type-fest": "^2.19.0" - } - }, "node_modules/zimmerframe": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz", @@ -8417,24 +6416,13 @@ "license": "MIT" }, "node_modules/zod": { - "version": "3.25.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.3.tgz", - "integrity": "sha512-VGZqnyYNrl8JpEJRZaFPqeVNIuqgXNu4cXZ5cOb6zEUO1OxKbRnWB4UdDIXMmiERWncs0yDQukssHov8JUxykQ==", + "version": "3.25.67", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", + "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } - }, - "node_modules/zod-to-json-schema": { - "version": "3.24.3", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.3.tgz", - "integrity": "sha512-HIAfWdYIt1sssHfYZFCXp4rU1w2r8hVVXYIlmoa0r0gABLs5di3RCqPU5DDROogVz1pAdYBaz7HK5n9pSUNs3A==", - "dev": true, - "license": "ISC", - "optional": true, - "peerDependencies": { - "zod": "^3.24.1" - } } } } diff --git a/web/package.json b/web/package.json index de8b36b2..5f73342a 100644 --- a/web/package.json +++ b/web/package.json @@ -1,9 +1,8 @@ { - "name": "sylve-web", + "name": "new-web", "private": true, "version": "0.0.1", "type": "module", - "license": "BSD-2-Clause", "scripts": { "dev": "vite dev --host", "build": "vite build", @@ -17,72 +16,63 @@ "devDependencies": { "@eslint/compat": "^1.2.5", "@eslint/js": "^9.18.0", - "@iconify/svelte": "^4.2.0", + "@iconify/svelte": "^5.0.0", + "@internationalized/date": "^3.8.2", "@sveltejs/adapter-static": "^3.0.8", - "@sveltejs/kit": "^2.20.3", + "@sveltejs/kit": "^2.16.0", "@sveltejs/vite-plugin-svelte": "^5.0.0", - "@tailwindcss/container-queries": "^0.1.1", - "@tailwindcss/forms": "^0.5.10", - "@tailwindcss/typography": "^0.5.16", + "@tailwindcss/forms": "^0.5.9", + "@tailwindcss/typography": "^0.5.15", + "@tailwindcss/vite": "^4.0.0", "@types/d3-scale": "^4.0.9", "@types/d3-shape": "^3.1.7", - "autoprefixer": "^10.4.20", - "bits-ui": "^0.22.0", + "@types/tabulator-tables": "^6.2.6", + "@types/validator": "^13.15.2", + "bits-ui": "^2.8.0", "clsx": "^2.1.1", - "cmdk-sv": "^0.0.19", "eslint": "^9.18.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-svelte": "^3.0.0", - "formsnap": "^1.0.1", "globals": "^16.0.0", - "lucide-svelte": "^0.476.0", - "paneforge": "^0.0.6", + "layerchart": "^2.0.0-next.18", + "mode-watcher": "^1.0.8", + "paneforge": "^1.0.0-next.5", "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.3", - "prettier-plugin-tailwindcss": "^0.6.10", - "sass": "^1.85.1", - "svelte": "^5.25.6", + "prettier-plugin-tailwindcss": "^0.6.11", + "svelte": "^5.0.0", "svelte-check": "^4.0.0", - "sveltekit-superforms": "^2.23.1", - "tailwind-merge": "^3.0.2", - "tailwind-variants": "^0.3.1", - "tailwindcss": "^3.4.17", + "svelte-sonner": "^1.0.5", + "tailwind-merge": "^3.3.1", + "tailwind-variants": "^1.0.0", + "tailwindcss": "^4.0.0", + "tw-animate-css": "^1.3.4", "typescript": "^5.0.0", "typescript-eslint": "^8.20.0", - "vite": "^6.2.4", - "vite-plugin-compression2": "^1.3.3", - "zod": "^3.25.0" + "vite": "^6.2.6" }, "dependencies": { "@battlefieldduck/xterm-svelte": "^2.1.0", - "@fontsource/noto-sans": "^5.2.5", - "@layerstack/svelte-stores": "^1.0.0", - "@novnc/novnc": "1.5.0", + "@fontsource/noto-sans": "^5.2.7", + "@layerstack/svelte-stores": "^1.0.2", + "@lucide/svelte": "^0.516.0", "@svelte-put/shortcut": "^4.1.0", "@sveltestack/svelte-query": "^1.6.0", - "@thisux/sveltednd": "^0.0.20", - "@types/novnc__novnc": "^1.6.0", - "@types/tabulator-tables": "^6.2.6", - "adze": "^2.2.1", - "axios": "^1.8.2", - "d3-array": "^3.2.4", - "d3-scale": "^4.0.2", + "adze": "^2.2.4", + "axios": "^1.10.0", + "chart.js": "^4.5.0", + "chartjs-adapter-date-fns": "^3.0.0", + "chartjs-plugin-zoom": "^2.2.0", "d3-shape": "^3.2.0", "date-fns": "^4.1.0", "date-fns-tz": "^3.2.0", - "fast-cidr-tools": "^0.3.2", "human-format": "^1.2.1", - "ip-cidr": "^4.0.2", "is-cidr": "^5.1.1", "is-ip": "^5.0.1", - "layerchart": "^1.0.5", - "mode-watcher": "^0.5.1", - "nanoid": "^5.1.5", - "svelte-french-toast": "^2.0.0-alpha.0", - "svelte-i18n": "^4.0.1", - "svelte-multiselect": "^11.0.0-rc.1", - "svelte-ux": "^1.0.3", + "lucide-svelte": "^0.516.0", "tabulator-tables": "^6.3.1", - "validator": "^13.15.0" + "validator": "^13.15.15", + "wuchale": "0.5.5", + "zod": "^3.25.67" } } diff --git a/web/postcss.config.js b/web/postcss.config.js deleted file mode 100644 index 0f772168..00000000 --- a/web/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {} - } -}; diff --git a/new-web/src/app.css b/web/src/app.css similarity index 100% rename from new-web/src/app.css rename to web/src/app.css diff --git a/web/src/app.scss b/web/src/app.scss deleted file mode 100644 index c9e6b6dd..00000000 --- a/web/src/app.scss +++ /dev/null @@ -1,161 +0,0 @@ -@use './css/tabulator_simple.scss'; - -@tailwind base; -@tailwind components; -@tailwind utilities; - -//default -@layer base { - :root { - --background: 0 0% 100%; - --foreground: 240 10% 3.9%; - --card: 0 0% 100%; - --card-foreground: 240 10% 3.9%; - --popover: 0 0% 100%; - --popover-foreground: 240 10% 3.9%; - --primary: 240 5.9% 10%; - --primary-foreground: 0 0% 98%; - --secondary: 240 4.8% 95.9%; - --secondary-foreground: 240 5.9% 10%; - --muted: 240 4.8% 95.9%; - --muted-foreground: 240 3.8% 46.1%; - --accent: 240 4.8% 95.9%; - --accent-foreground: 240 5.9% 10%; - --destructive: 0 72.22% 50.59%; - --destructive-foreground: 0 0% 98%; - --border: 240 5.9% 90%; - --input: 240 5.9% 90%; - --ring: 240 5.9% 10%; - --radius: 0.3rem; - } - .dark { - --background: 240 10% 3.9%; - --foreground: 0 0% 98%; - --card: 240 10% 3.9%; - --card-foreground: 0 0% 98%; - --popover: 240 10% 3.9%; - --popover-foreground: 0 0% 98%; - --primary: 0 0% 98%; - --primary-foreground: 240 5.9% 10%; - --secondary: 240 3.7% 15.9%; - --secondary-foreground: 0 0% 98%; - --muted: 240 3.7% 15.9%; - --muted-foreground: 240 5% 64.9%; - --accent: 240 3.7% 15.9%; - --accent-foreground: 0 0% 98%; - --destructive: 0 62.8% 30.6%; - --destructive-foreground: 0 0% 98%; - --border: 240 3.7% 15.9%; - --input: 240 3.7% 15.9%; - --ring: 240 4.9% 83.9%; - } -} - -//blue -// @layer base { -// :root { -// --background: 0 0% 100%; -// --foreground: 222.2 84% 4.9%; -// --card: 0 0% 100%; -// --card-foreground: 222.2 84% 4.9%; -// --popover: 0 0% 100%; -// --popover-foreground: 222.2 84% 4.9%; -// --primary: 221.2 83.2% 53.3%; -// --primary-foreground: 210 40% 98%; -// --secondary: 210 40% 96.1%; -// --secondary-foreground: 222.2 47.4% 11.2%; -// --muted: 210 40% 96.1%; -// --muted-foreground: 215.4 16.3% 46.9%; -// --accent: 210 40% 96.1%; -// --accent-foreground: 222.2 47.4% 11.2%; -// --destructive: 0 72.22% 50.59%; -// --destructive-foreground: 210 40% 98%; -// --border: 214.3 31.8% 91.4%; -// --input: 214.3 31.8% 91.4%; -// --ring: 221.2 83.2% 53.3%; -// --radius: 0.3rem; -// } -// .dark { -// --background: 222.2 84% 4.9%; -// --foreground: 210 40% 98%; -// --card: 222.2 84% 4.9%; -// --card-foreground: 210 40% 98%; -// --popover: 222.2 84% 4.9%; -// --popover-foreground: 210 40% 98%; -// --primary: 217.2 91.2% 59.8%; -// --primary-foreground: 222.2 47.4% 11.2%; -// --secondary: 217.2 32.6% 17.5%; -// --secondary-foreground: 210 40% 98%; -// --muted: 217.2 32.6% 17.5%; -// --muted-foreground: 215 20.2% 65.1%; -// --accent: 217.2 32.6% 17.5%; -// --accent-foreground: 210 40% 98%; -// --destructive: 0 62.8% 30.6%; -// --destructive-foreground: 210 40% 98%; -// --border: 217.2 32.6% 17.5%; -// --input: 217.2 32.6% 17.5%; -// --ring: 224.3 76.3% 48%; -// } -// } - -//orange - -// @layer base { -// :root { -// --background: 0 0% 100%; -// --foreground: 20 14.3% 4.1%; -// --card: 0 0% 100%; -// --card-foreground: 20 14.3% 4.1%; -// --popover: 0 0% 100%; -// --popover-foreground: 20 14.3% 4.1%; -// --primary: 24.6 95% 53.1%; -// --primary-foreground: 60 9.1% 97.8%; -// --secondary: 60 4.8% 95.9%; -// --secondary-foreground: 24 9.8% 10%; -// --muted: 60 4.8% 95.9%; -// --muted-foreground: 25 5.3% 44.7%; -// --accent: 60 4.8% 95.9%; -// --accent-foreground: 24 9.8% 10%; -// --destructive: 0 72.22% 50.59%; -// --destructive-foreground: 60 9.1% 97.8%; -// --border: 20 5.9% 90%; -// --input: 20 5.9% 90%; -// --ring: 24.6 95% 53.1%; -// --radius: 0.3rem; -// } -// .dark { -// --background: 20 14.3% 4.1%; -// --foreground: 60 9.1% 97.8%; -// --card: 20 14.3% 4.1%; -// --card-foreground: 60 9.1% 97.8%; -// --popover: 20 14.3% 4.1%; -// --popover-foreground: 60 9.1% 97.8%; -// --primary: 20.5 90.2% 48.2%; -// --primary-foreground: 60 9.1% 97.8%; -// --secondary: 12 6.5% 15.1%; -// --secondary-foreground: 60 9.1% 97.8%; -// --muted: 12 6.5% 15.1%; -// --muted-foreground: 24 5.4% 63.9%; -// --accent: 12 6.5% 15.1%; -// --accent-foreground: 60 9.1% 97.8%; -// --destructive: 0 72.2% 50.6%; -// --destructive-foreground: 60 9.1% 97.8%; -// --border: 12 6.5% 15.1%; -// --input: 12 6.5% 15.1%; -// --ring: 20.5 90.2% 48.2%; -// } -// } - -@layer base { - * { - @apply border-border; - } - - body { - @apply bg-background text-foreground; - } - - .droppable { - @apply border-2 border-muted-foreground dark:border-muted; - } -} diff --git a/new-web/src/css/tabulator.css b/web/src/css/tabulator.css similarity index 100% rename from new-web/src/css/tabulator.css rename to web/src/css/tabulator.css diff --git a/new-web/src/css/tabulator.css.map b/web/src/css/tabulator.css.map similarity index 100% rename from new-web/src/css/tabulator.css.map rename to web/src/css/tabulator.css.map diff --git a/new-web/src/css/tabulator_simple.css b/web/src/css/tabulator_simple.css similarity index 100% rename from new-web/src/css/tabulator_simple.css rename to web/src/css/tabulator_simple.css diff --git a/new-web/src/css/tabulator_simple.css.map b/web/src/css/tabulator_simple.css.map similarity index 100% rename from new-web/src/css/tabulator_simple.css.map rename to web/src/css/tabulator_simple.css.map diff --git a/web/src/css/tabulator_simple.scss b/web/src/css/tabulator_simple.scss index 54b2e128..bd0de7e5 100644 --- a/web/src/css/tabulator_simple.scss +++ b/web/src/css/tabulator_simple.scss @@ -1,7 +1,7 @@ @use './tabulator.scss'; .tabulator { - @apply border-none bg-primary; + @apply bg-primary border-none; .tabulator-header { @apply border-border bg-background; @@ -15,10 +15,10 @@ } .tabulator-calcs-holder { - @apply border border-border bg-background !important; + @apply !border-border !bg-background !border; .tabulator-row { - @apply bg-background !important; + @apply !bg-background; } } @@ -29,7 +29,7 @@ @media (hover: hover) and (pointer: fine) { @apply border-border; &.tabulator-col-sorter-element:hover { - @apply cursor-pointer bg-background; + @apply bg-background cursor-pointer; } } } @@ -44,12 +44,12 @@ } .tabulator-col-title input { - @apply border border-border; + @apply border-border border; } } .tabulator-row { - @apply border-b border-border bg-background text-black dark:text-white; + @apply border-border bg-background border-b text-black dark:text-white; @media (hover: hover) and (pointer: fine) { &.tabulator-selectable:hover { @@ -99,7 +99,7 @@ .tabulator-frozen input { @apply opacity-40; background-color: rgb(63 63 70) !important; - @apply border border-border; + @apply border-border border; } } @@ -137,10 +137,10 @@ } .tabulator-page { - @apply border-border bg-primary-foreground text-black hover:border-primary/10 hover:bg-primary/10 dark:bg-muted dark:text-white hover:dark:border-muted hover:dark:bg-muted/10; + @apply border-border bg-primary-foreground hover:border-primary/10 hover:bg-primary/10 dark:bg-muted hover:dark:border-muted hover:dark:bg-muted/10 text-black dark:text-white; &.active { - @apply bg-primary text-secondary !important; + @apply !bg-primary !text-secondary; } &:disabled { @@ -152,7 +152,7 @@ .tabulator-calcs-holder { .tabulator-row { - @apply bg-primary !important; + @apply !bg-primary; } } @@ -170,7 +170,7 @@ } .tabulator-table .tabulator-row-odd { - @apply border-b border-none border-border bg-background text-black dark:text-white; + @apply border-border bg-background border-b border-none text-black dark:text-white; .tabulator-frozen { @apply bg-secondary; @@ -185,14 +185,14 @@ } .tabulator-table .tabulator-row-even { - @apply border-b border-none border-border bg-background text-black dark:text-white; + @apply border-border bg-background border-b border-none text-black dark:text-white; .tabulator-frozen { @apply bg-secondary; } .tabulator-frozen input { - @apply border border-border; + @apply border-border border; } @media (hover: hover) and (pointer: fine) { @@ -204,7 +204,7 @@ } .tabulator-table .tabulator-selected { - @apply bg-muted !important; + @apply !bg-muted; } .tabulator-table .tabulator-tree-level-0 .tabulator-cell:first-of-type { diff --git a/web/src/lib/api/auth.ts b/web/src/lib/api/auth.ts index b1146746..72dff94a 100644 --- a/web/src/lib/api/auth.ts +++ b/web/src/lib/api/auth.ts @@ -1,22 +1,11 @@ -/** - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2025 The FreeBSD Foundation. - * - * This software was developed by Hayzam Sherif - * of Alchemilla Ventures Pvt. Ltd. , - * under sponsorship from the FreeBSD Foundation. - */ - import { browser } from '$app/environment'; import { goto } from '$app/navigation'; import { oldStore, store } from '$lib/stores/auth'; import { hostname, language as langStore } from '$lib/stores/basic'; import type { APIResponse } from '$lib/types/common'; -import { getTranslation } from '$lib/utils/i18n'; import adze from 'adze'; import axios, { AxiosError } from 'axios'; -import { toast } from 'svelte-french-toast'; +import { toast } from 'svelte-sonner'; import { get } from 'svelte/store'; export async function login( @@ -36,7 +25,7 @@ export async function login( } if (authType === '') { - toast.error(getTranslation('auth.invalid_auth_type', 'Authentication type is required'), { + toast.error('Authentication type is required', { position: 'bottom-center' }); @@ -57,12 +46,9 @@ export async function login( store.set(response.data.data.token); return true; } else { - toast.error( - getTranslation('common.invalid_response_received', 'Invalid response received'), - { - position: 'bottom-center' - } - ); + toast.error('Invalid response received', { + position: 'bottom-center' + }); } } else { return false; @@ -72,7 +58,7 @@ export async function login( const axiosError = error as AxiosError; const data = axiosError.response?.data as APIResponse; if (data.error) { - toast.error(getTranslation(`auth.${data.error}`, data.error), { + toast.error('Authentication failed', { position: 'bottom-center' }); } diff --git a/web/src/lib/api/common.ts b/web/src/lib/api/common.ts index cd936596..5b1817f5 100644 --- a/web/src/lib/api/common.ts +++ b/web/src/lib/api/common.ts @@ -11,9 +11,10 @@ import { browser } from '$app/environment'; import { goto } from '$app/navigation'; import { store as token } from '$lib/stores/auth'; +import type { APIResponse } from '$lib/types/common'; import adze from 'adze'; import axios, { AxiosError, type AxiosInstance, type InternalAxiosRequestConfig } from 'axios'; -import toast from 'svelte-french-toast'; +import { toast } from 'svelte-sonner'; import { get } from 'svelte/store'; export let ENDPOINT: string; @@ -75,16 +76,38 @@ export function handleAxiosError(error: unknown): void { if (axiosError.response) { const errorMessage = axiosError.response.data?.message || axiosError.message || 'An error occurred'; - // adze.withEmoji.error('Status:', axiosError.response.status); - // adze.withEmoji.error('Data:', axiosError.response.data); - // adze.withEmoji.error('Error message:', errorMessage); - // showToast({ text: errorMessage, type: 'error', timeout: 5000 }); + adze.withEmoji.error( + JSON.stringify({ + status: axiosError.response.status, + data: axiosError.response.data, + message: errorMessage + }) + ); } else if (axiosError.request) { - // adze.withEmoji.error('No response:', axiosError.request); - // showToast({ - // text: 'No response from server', - // type: 'error', - // timeout: 5000 - // }); + adze.withEmoji.error('No response:', axiosError.request); + } +} + +export function handleAPIResponse( + response: APIResponse, + messages: { + success?: string; + error?: string; + info?: string; + warn?: string; + } +): void { + // console.log('API Response:', response); + if (response.status === 'error') { + adze.withEmoji.error(response); + toast.error(messages.error || 'Operation failed', { + position: 'bottom-center' + }); + } + + if (response.status === 'success') { + toast.success(messages.success || 'Operation successful', { + position: 'bottom-center' + }); } } diff --git a/web/src/lib/api/info/audit.ts b/web/src/lib/api/info/audit.ts index 26f3c752..654a0bf5 100644 --- a/web/src/lib/api/info/audit.ts +++ b/web/src/lib/api/info/audit.ts @@ -1,26 +1,12 @@ import { AuditLogSchema, type AuditLog } from '$lib/types/info/audit'; import { apiRequest } from '$lib/utils/http'; -import { getTranslation } from '$lib/utils/i18n'; -import { capitalizeFirstLetter } from '$lib/utils/string'; export async function getAuditLogs(): Promise { return await apiRequest('/info/audit-logs', AuditLogSchema, 'GET'); } export function formatAction(action: string): string { - if (action.includes('|-|')) { - const parts = action.split('|-|'); - return capitalizeFirstLetter(getTranslation(parts[0], parts[0]), true) + ' ' + parts[1]; - } - - switch (action) { - case 'login': - return getTranslation('auth.login', 'Login'); - case 'revoke_token': - return getTranslation('auth.logout', 'Logout'); - default: - return action; - } + return action; } export function formatStatus(status: string): string { diff --git a/new-web/src/lib/api/info/network.ts b/web/src/lib/api/info/network.ts similarity index 100% rename from new-web/src/lib/api/info/network.ts rename to web/src/lib/api/info/network.ts diff --git a/web/src/lib/api/info/ram.ts b/web/src/lib/api/info/ram.ts index 849e316f..dc9e9a8c 100644 --- a/web/src/lib/api/info/ram.ts +++ b/web/src/lib/api/info/ram.ts @@ -1,10 +1,32 @@ -import { RAMInfoSchema, type RAMInfo } from '$lib/types/info/ram'; +import { + RAMInfoHistoricalSchema, + RAMInfoSchema, + type RAMInfo, + type RAMInfoHistorical +} from '$lib/types/info/ram'; import { apiRequest } from '$lib/utils/http'; +import type { QueryFunctionContext } from '@sveltestack/svelte-query'; + +export async function getRAMInfo( + queryObj?: QueryFunctionContext +): Promise { + if (queryObj) { + if (queryObj.queryKey.includes('ramInfoHistorical')) { + return await apiRequest('/info/ram/historical', RAMInfoHistoricalSchema, 'GET'); + } + } -export async function getRAMInfo(): Promise { return await apiRequest('/info/ram', RAMInfoSchema, 'GET'); } -export async function getSwapInfo(): Promise { +export async function getSwapInfo( + queryObj?: QueryFunctionContext +): Promise { + if (queryObj) { + if (queryObj.queryKey.includes('swapInfoHistorical')) { + return await apiRequest('/info/swap/historical', RAMInfoHistoricalSchema, 'GET'); + } + } + return await apiRequest('/info/swap', RAMInfoSchema, 'GET'); } diff --git a/new-web/src/lib/api/vm/hardware.ts b/web/src/lib/api/vm/hardware.ts similarity index 100% rename from new-web/src/lib/api/vm/hardware.ts rename to web/src/lib/api/vm/hardware.ts diff --git a/web/src/lib/api/vm/vm.ts b/web/src/lib/api/vm/vm.ts index 50e880e8..db3b9bc9 100644 --- a/web/src/lib/api/vm/vm.ts +++ b/web/src/lib/api/vm/vm.ts @@ -18,7 +18,7 @@ export async function getVMs(): Promise { export async function newVM(data: CreateData): Promise { return await apiRequest('/vm', APIResponseSchema, 'POST', { name: data.name, - vmId: data.id, + vmId: parseInt(data.id.toString(), 10), iso: data.storage.iso, storageType: data.storage.type, storageDataset: data.storage.guid, @@ -27,16 +27,17 @@ export async function newVM(data: CreateData): Promise { switchId: data.network.switch, switchEmulationType: data.network.emulation, macAddress: data.network.mac, - cpuSockets: data.hardware.sockets, - cpuCores: data.hardware.cores, - cpuThreads: data.hardware.threads, - ram: data.hardware.memory, + cpuSockets: parseInt(data.hardware.sockets.toString(), 10), + cpuCores: parseInt(data.hardware.cores.toString(), 10), + cpuThreads: parseInt(data.hardware.threads.toString(), 10), + ram: parseInt(data.hardware.memory.toString(), 10), + cpuPinning: data.hardware.pinnedCPUs, vncPort: data.advanced.vncPort, vncPassword: data.advanced.vncPassword, vncWait: data.advanced.vncWait, vncResolution: data.advanced.vncResolution, startAtBoot: data.advanced.startAtBoot, - bootOrder: data.advanced.bootOrder, + bootOrder: parseInt(data.advanced.bootOrder.toString(), 10), pciDevices: data.hardware.passthroughIds, description: data.description }); diff --git a/web/src/lib/api/zfs/datasets.ts b/web/src/lib/api/zfs/datasets.ts index 390405b2..7729df09 100644 --- a/web/src/lib/api/zfs/datasets.ts +++ b/web/src/lib/api/zfs/datasets.ts @@ -70,6 +70,16 @@ export async function createFileSystem( }); } +export async function editFileSystem( + guid: string, + properties: Record +): Promise { + return await apiRequest(`/zfs/datasets/filesystem`, APIResponseSchema, 'PATCH', { + guid: guid, + properties: properties + }); +} + export async function deleteFileSystem(dataset: Dataset): Promise { return await apiRequest( `/zfs/datasets/filesystem/${dataset.properties.guid}`, @@ -97,6 +107,16 @@ export async function createVolume( }); } +export async function editVolume( + dataset: Dataset, + properties: Record +): Promise { + return await apiRequest('/zfs/datasets/volume', APIResponseSchema, 'PATCH', { + name: dataset.name, + properties: properties + }); +} + export async function deleteVolume(dataset: Dataset): Promise { return await apiRequest( `/zfs/datasets/volume/${dataset.properties.guid}`, @@ -111,3 +131,10 @@ export async function bulkDelete(datasets: Dataset[]): Promise { guids: guids }); } + +export async function flashVolume(guid: string, uuid: string): Promise { + return await apiRequest('/zfs/datasets/volume/flash', APIResponseSchema, 'POST', { + guid: guid, + uuid: uuid + }); +} diff --git a/web/src/lib/api/zfs/pool.ts b/web/src/lib/api/zfs/pool.ts index b36c35d3..89194772 100644 --- a/web/src/lib/api/zfs/pool.ts +++ b/web/src/lib/api/zfs/pool.ts @@ -42,17 +42,17 @@ export async function createPool(data: CreateZpool) { } export async function replaceDevice(data: ReplaceDevice) { - return await apiRequest(`/zfs/pools/${data.name}/replace-device`, APIResponseSchema, 'POST', { + return await apiRequest(`/zfs/pools/${data.guid}/replace-device`, APIResponseSchema, 'POST', { ...data }); } -export async function deletePool(name: string) { - return await apiRequest(`/zfs/pools/${name}`, APIResponseSchema, 'DELETE'); +export async function deletePool(guid: string) { + return await apiRequest(`/zfs/pools/${guid}`, APIResponseSchema, 'DELETE'); } -export async function scrubPool(name: string) { - return await apiRequest(`/zfs/pools/${name}/scrub`, APIResponseSchema, 'POST'); +export async function scrubPool(guid: string) { + return await apiRequest(`/zfs/pools/${guid}/scrub`, APIResponseSchema, 'POST'); } export async function getPoolStats( @@ -68,10 +68,12 @@ export async function getPoolStats( export async function editPool( name: string, - properties: Record + properties: Record, + spares: string[] = [] ): Promise { return await apiRequest(`/zfs/pools`, APIResponseSchema, 'PATCH', { name, - properties + properties, + spares }); } diff --git a/new-web/src/lib/api/zfs/volumes.ts b/web/src/lib/api/zfs/volumes.ts similarity index 100% rename from new-web/src/lib/api/zfs/volumes.ts rename to web/src/lib/api/zfs/volumes.ts diff --git a/web/src/lib/components/custom/AlertDialog.svelte b/web/src/lib/components/custom/AlertDialog.svelte deleted file mode 100644 index 71a35c07..00000000 --- a/web/src/lib/components/custom/AlertDialog.svelte +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - {getTranslation('are_you_sure', 'Are you sure?')} - - {#if customTitle} - {@html customTitle} - {:else} - {getTranslation( - 'common.permanent_delete_msg', - 'This action cannot be undone. This will permanently delete' - )} - {names.parent} {names.element}. - {/if} - - - - Cancel - Continue - - - diff --git a/web/src/lib/components/custom/BarChart.svelte b/web/src/lib/components/custom/BarChart.svelte deleted file mode 100644 index 00c0bd3b..00000000 --- a/web/src/lib/components/custom/BarChart.svelte +++ /dev/null @@ -1,92 +0,0 @@ - - -
    - - - humanFormat(d)} - rule={{ - class: 'stroke-border dark:stroke-border' - }} - ticks={2} - /> - - - - - - - - {data.name} - - - - - - - -
    diff --git a/new-web/src/lib/components/custom/Charts/Area.svelte b/web/src/lib/components/custom/Charts/Area.svelte similarity index 100% rename from new-web/src/lib/components/custom/Charts/Area.svelte rename to web/src/lib/components/custom/Charts/Area.svelte diff --git a/new-web/src/lib/components/custom/Charts/Bar.svelte b/web/src/lib/components/custom/Charts/Bar.svelte similarity index 100% rename from new-web/src/lib/components/custom/Charts/Bar.svelte rename to web/src/lib/components/custom/Charts/Bar.svelte diff --git a/new-web/src/lib/components/custom/Charts/LineGraph.svelte b/web/src/lib/components/custom/Charts/LineGraph.svelte similarity index 100% rename from new-web/src/lib/components/custom/Charts/LineGraph.svelte rename to web/src/lib/components/custom/Charts/LineGraph.svelte diff --git a/new-web/src/lib/components/custom/Charts/Pie.svelte b/web/src/lib/components/custom/Charts/Pie.svelte similarity index 100% rename from new-web/src/lib/components/custom/Charts/Pie.svelte rename to web/src/lib/components/custom/Charts/Pie.svelte diff --git a/web/src/lib/components/custom/CreateVM/Advanced.svelte b/web/src/lib/components/custom/CreateVM/Advanced.svelte deleted file mode 100644 index 3407f2e8..00000000 --- a/web/src/lib/components/custom/CreateVM/Advanced.svelte +++ /dev/null @@ -1,112 +0,0 @@ - - -
    -
    - - -
    - -
    - - - -
    -
    -
    - - - -
    - - - - - -
    -
    diff --git a/web/src/lib/components/custom/CreateVM/Basic.svelte b/web/src/lib/components/custom/CreateVM/Basic.svelte deleted file mode 100644 index 94625d75..00000000 --- a/web/src/lib/components/custom/CreateVM/Basic.svelte +++ /dev/null @@ -1,39 +0,0 @@ - - -
    -
    - - - -
    - - -
    diff --git a/web/src/lib/components/custom/CreateVM/CreateVM.svelte b/web/src/lib/components/custom/CreateVM/CreateVM.svelte deleted file mode 100644 index aa4379d3..00000000 --- a/web/src/lib/components/custom/CreateVM/CreateVM.svelte +++ /dev/null @@ -1,303 +0,0 @@ - - - - -
    - - -
    - - Create Virtual Machine -
    -

    - Configure your virtual machine with custom hardware and network settings -

    -
    -
    - -
    - - -
    -
    - - - - {#each tabs as { value, label }} - {label} - {/each} - - - {#each tabs as { value, label }} - -
    - {#if value === 'basic'} - - {:else if value === 'storage'} - - {:else if value === 'network'} - - {:else if value === 'hardware'} - - {:else if value === 'advanced'} - - {/if} -
    -
    - {/each} -
    - - -
    - -
    -
    -
    -
    diff --git a/web/src/lib/components/custom/CreateVM/Hardware.svelte b/web/src/lib/components/custom/CreateVM/Hardware.svelte deleted file mode 100644 index dbc92ff4..00000000 --- a/web/src/lib/components/custom/CreateVM/Hardware.svelte +++ /dev/null @@ -1,119 +0,0 @@ - - -
    -
    - - - - -
    - - {#if pptDevices && pptDevices.length > 0} -

    PCI Passthrough

    -
    - - {#each checkboxItems as item (item.pptId)} -
    -
    - { - if (typeof v === 'boolean') toggle(item.pptId, v); - }} - /> -
    - -

    - pci{item.device.domain}:{item.device.bus}:{item.device.device}:{item.device - .function} -

    -
    -
    -
    - {/each} -
    -
    - {/if} -
    diff --git a/web/src/lib/components/custom/CreateVM/Network.svelte b/web/src/lib/components/custom/CreateVM/Network.svelte deleted file mode 100644 index b05f5ef8..00000000 --- a/web/src/lib/components/custom/CreateVM/Network.svelte +++ /dev/null @@ -1,95 +0,0 @@ - - -{#snippet radioItem(id: number, name: string)} - {@const i = `radio-${id}`} -
    - - -
    -{/snippet} - -
    - - - {#if switches && switches.standard} - {#each switches.standard ?? [] as sw} - {@render radioItem(sw.id, sw.name)} - {/each} - {/if} - {@render radioItem(0, 'None')} - - - - {#if swStr !== '0'} -
    - - - -
    - {/if} -
    diff --git a/web/src/lib/components/custom/CreateVM/Storage.svelte b/web/src/lib/components/custom/CreateVM/Storage.svelte deleted file mode 100644 index c41434a9..00000000 --- a/web/src/lib/components/custom/CreateVM/Storage.svelte +++ /dev/null @@ -1,230 +0,0 @@ - - -{#snippet radioItem(type: string)} -
    - - -
    -{/snippet} - -{#snippet storageDetail(type: string)} - {#if type === 'zvol'} - - {/if} - - {#if type === 'raw'} -
    - - - -
    - {/if} - - -{/snippet} - -
    - - - {#each ['zvol', 'raw', 'none'] as storageType} - {@render radioItem(storageType)} - {/each} - - - - {#if type !== 'none'} - {@render storageDetail(type)} - {/if} - - -
    diff --git a/new-web/src/lib/components/custom/Dialog/Alert.svelte b/web/src/lib/components/custom/Dialog/Alert.svelte similarity index 100% rename from new-web/src/lib/components/custom/Dialog/Alert.svelte rename to web/src/lib/components/custom/Dialog/Alert.svelte diff --git a/new-web/src/lib/components/custom/Dialog/Loading.svelte b/web/src/lib/components/custom/Dialog/Loading.svelte similarity index 100% rename from new-web/src/lib/components/custom/Dialog/Loading.svelte rename to web/src/lib/components/custom/Dialog/Loading.svelte diff --git a/web/src/lib/components/custom/Header.svelte b/web/src/lib/components/custom/Header.svelte index eaa0acd8..1c1cb213 100644 --- a/web/src/lib/components/custom/Header.svelte +++ b/web/src/lib/components/custom/Header.svelte @@ -6,7 +6,7 @@ import { openTerminal, terminalStore } from '$lib/stores/terminal.svelte'; import Icon from '@iconify/svelte'; import { mode, toggleMode } from 'mode-watcher'; - import CreateVM from './CreateVM/CreateVM.svelte'; + import CreateVM from './VM/Create/CreateVM.svelte'; let menuData = $state({ createVM: { @@ -22,32 +22,22 @@ }); -
    +
    - - @@ -60,59 +50,22 @@

    SYLVE

    Virtual Environment 0.0.1

    - - - - -
    - - -
    @@ -218,19 +194,23 @@ -
    +
    - { - const value = Math.floor(e[0]); - currentPartition = value <= 0 ? 0 : value; - currentPartitionInput = humanFormat(currentPartition); - }} - /> + {#if remainingSpace > 0} + + {/if}
    - +
    @@ -54,7 +53,7 @@ {convertDbTime(log.started)} {convertDbTime(log.ended)} {log.node} - {log.user}@{log.authType} + {`${log.user}@${log.authType}`} {formatAction(log.action)} {formatStatus(log.status)} diff --git a/web/src/lib/components/skeleton/LeftPanel.svelte b/web/src/lib/components/skeleton/LeftPanel.svelte index 9d82a4c2..545c3b07 100644 --- a/web/src/lib/components/skeleton/LeftPanel.svelte +++ b/web/src/lib/components/skeleton/LeftPanel.svelte @@ -4,8 +4,6 @@ import { ScrollArea } from '$lib/components/ui/scroll-area/index.js'; import { hostname } from '$lib/stores/basic'; import type { VM } from '$lib/types/vm/vm'; - import { getTranslation } from '$lib/utils/i18n'; - import { capitalizeFirstLetter } from '$lib/utils/string'; import { useQueries } from '@sveltestack/svelte-query'; let openCategories: { [key: string]: boolean } = $state({}); @@ -31,7 +29,7 @@ const vms = $derived($results[0].data || []); const tree = $derived([ { - label: capitalizeFirstLetter(getTranslation('common.datacenter', 'Data Center')), + label: 'Data Center', icon: 'fa-solid:server', children: [ { diff --git a/web/src/lib/components/skeleton/Shell.svelte b/web/src/lib/components/skeleton/Shell.svelte index b403b760..293f423b 100644 --- a/web/src/lib/components/skeleton/Shell.svelte +++ b/web/src/lib/components/skeleton/Shell.svelte @@ -27,13 +27,13 @@ id="child-left-pane-auto" autoSaveId="child-left-pane-auto-save" > - + - + {@render children?.()} diff --git a/web/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte b/web/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte index 57d643b4..a0056912 100644 --- a/web/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte +++ b/web/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte @@ -3,19 +3,16 @@ import { buttonVariants } from "$lib/components/ui/button/index.js"; import { cn } from "$lib/utils.js"; - type $$Props = AlertDialogPrimitive.ActionProps; - type $$Events = AlertDialogPrimitive.ActionEvents; - - let className: $$Props["class"] = undefined; - export { className as class }; + let { + ref = $bindable(null), + class: className, + ...restProps + }: AlertDialogPrimitive.ActionProps = $props(); - - + {...restProps} +/> diff --git a/web/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte b/web/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte index ef0a953c..a7b0cf79 100644 --- a/web/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte +++ b/web/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte @@ -3,19 +3,16 @@ import { buttonVariants } from "$lib/components/ui/button/index.js"; import { cn } from "$lib/utils.js"; - type $$Props = AlertDialogPrimitive.CancelProps; - type $$Events = AlertDialogPrimitive.CancelEvents; - - let className: $$Props["class"] = undefined; - export { className as class }; + let { + ref = $bindable(null), + class: className, + ...restProps + }: AlertDialogPrimitive.CancelProps = $props(); - - + bind:ref + data-slot="alert-dialog-cancel" + class={cn(buttonVariants({ variant: "outline" }), className)} + {...restProps} +/> diff --git a/web/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte b/web/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte index 28ecc396..6c3c6046 100644 --- a/web/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte +++ b/web/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte @@ -1,28 +1,27 @@ - - + + - - - + {...restProps} + /> + diff --git a/web/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte b/web/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte index f35ac20c..2ec67dc2 100644 --- a/web/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte +++ b/web/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte @@ -2,15 +2,16 @@ import { AlertDialog as AlertDialogPrimitive } from "bits-ui"; import { cn } from "$lib/utils.js"; - type $$Props = AlertDialogPrimitive.DescriptionProps; - - let className: $$Props["class"] = undefined; - export { className as class }; + let { + ref = $bindable(null), + class: className, + ...restProps + }: AlertDialogPrimitive.DescriptionProps = $props(); - - + {...restProps} +/> diff --git a/web/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte b/web/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte index a235d1f8..f78b97ab 100644 --- a/web/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte +++ b/web/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte @@ -1,16 +1,20 @@
    - + {@render children?.()}
    diff --git a/web/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte b/web/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte index 2650ef9f..c8fa7625 100644 --- a/web/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte +++ b/web/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte @@ -1,13 +1,20 @@ -
    - +
    + {@render children?.()}
    diff --git a/web/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte b/web/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte index edf4840e..a64ee768 100644 --- a/web/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte +++ b/web/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte @@ -1,21 +1,20 @@ diff --git a/web/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte b/web/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte deleted file mode 100644 index e2272192..00000000 --- a/web/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - - diff --git a/web/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte b/web/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte index 7f98004c..7ef2b5fb 100644 --- a/web/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte +++ b/web/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte @@ -2,13 +2,16 @@ import { AlertDialog as AlertDialogPrimitive } from "bits-ui"; import { cn } from "$lib/utils.js"; - type $$Props = AlertDialogPrimitive.TitleProps; - - let className: $$Props["class"] = undefined; - export let level: $$Props["level"] = "h3"; - export { className as class }; + let { + ref = $bindable(null), + class: className, + ...restProps + }: AlertDialogPrimitive.TitleProps = $props(); - - - + diff --git a/new-web/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte b/web/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte similarity index 100% rename from new-web/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte rename to web/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte diff --git a/web/src/lib/components/ui/alert-dialog/index.ts b/web/src/lib/components/ui/alert-dialog/index.ts index be56dd7b..cc281c58 100644 --- a/web/src/lib/components/ui/alert-dialog/index.ts +++ b/web/src/lib/components/ui/alert-dialog/index.ts @@ -1,9 +1,8 @@ import { AlertDialog as AlertDialogPrimitive } from "bits-ui"; - +import Trigger from "./alert-dialog-trigger.svelte"; import Title from "./alert-dialog-title.svelte"; import Action from "./alert-dialog-action.svelte"; import Cancel from "./alert-dialog-cancel.svelte"; -import Portal from "./alert-dialog-portal.svelte"; import Footer from "./alert-dialog-footer.svelte"; import Header from "./alert-dialog-header.svelte"; import Overlay from "./alert-dialog-overlay.svelte"; @@ -11,7 +10,7 @@ import Content from "./alert-dialog-content.svelte"; import Description from "./alert-dialog-description.svelte"; const Root = AlertDialogPrimitive.Root; -const Trigger = AlertDialogPrimitive.Trigger; +const Portal = AlertDialogPrimitive.Portal; export { Root, diff --git a/web/src/lib/components/ui/badge/badge.svelte b/web/src/lib/components/ui/badge/badge.svelte index 4408d78c..50004570 100644 --- a/web/src/lib/components/ui/badge/badge.svelte +++ b/web/src/lib/components/ui/badge/badge.svelte @@ -1,18 +1,50 @@ - + + - + {@render children?.()} diff --git a/web/src/lib/components/ui/badge/index.ts b/web/src/lib/components/ui/badge/index.ts index 78ac03a9..64e0aa9b 100644 --- a/web/src/lib/components/ui/badge/index.ts +++ b/web/src/lib/components/ui/badge/index.ts @@ -1,23 +1,2 @@ -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-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2", - variants: { - variant: { - default: "bg-primary text-primary-foreground hover:bg-primary/80 border-transparent", - secondary: - "bg-secondary text-secondary-foreground hover:bg-secondary/80 border-transparent", - destructive: - "bg-destructive text-destructive-foreground hover:bg-destructive/80 border-transparent", - outline: "text-foreground", - success: "bg-green-600 text-success-foreground hover:bg-green-600/80 border-transparent", - warning: "bg-yellow-500 text-warning-foreground hover:bg-yellow-500/80 border-transparent", - }, - }, - defaultVariants: { - variant: "default", - }, -}); - -export type Variant = VariantProps["variant"]; +export { badgeVariants, type BadgeVariant } from "./badge.svelte"; diff --git a/web/src/lib/components/ui/button/button.svelte b/web/src/lib/components/ui/button/button.svelte index 86827f32..a100eeec 100644 --- a/web/src/lib/components/ui/button/button.svelte +++ b/web/src/lib/components/ui/button/button.svelte @@ -1,25 +1,80 @@ - - - - + + +{#if href} + + {@render children?.()} + +{:else} + +{/if} diff --git a/web/src/lib/components/ui/button/index.ts b/web/src/lib/components/ui/button/index.ts index 72980e0b..fb585d76 100644 --- a/web/src/lib/components/ui/button/index.ts +++ b/web/src/lib/components/ui/button/index.ts @@ -1,49 +1,17 @@ -import { type VariantProps, tv } from "tailwind-variants"; -import type { Button as ButtonPrimitive } from "bits-ui"; -import Root from "./button.svelte"; - -const buttonVariants = tv({ - base: "ring-offset-background focus-visible:ring-ring inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:!pointer-events-auto disabled:text-secondary/80 disabled:hover:bg-foreground disabled:opacity-50", - variants: { - variant: { - default: "bg-primary text-primary-foreground hover:bg-primary/90", - destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90", - outline: - "border-input bg-background hover:bg-accent hover:text-accent-foreground border", - secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80", - ghost: "hover:bg-accent hover:text-accent-foreground", - link: "text-primary underline-offset-4 hover:underline", - }, - size: { - default: "h-10 px-4 py-2", - sm: "h-9 rounded-md px-3", - lg: "h-11 rounded-md px-8", - icon: "h-10 w-10", - }, - }, - defaultVariants: { - variant: "default", - size: "default", - }, -}); - -type Variant = VariantProps["variant"]; -type Size = VariantProps["size"]; - -type Props = ButtonPrimitive.Props & { - variant?: Variant; - size?: Size; -}; - -type Events = ButtonPrimitive.Events; +import Root, { + type ButtonProps, + type ButtonSize, + type ButtonVariant, + buttonVariants, +} from "./button.svelte"; export { Root, - type Props, - type Events, + type ButtonProps as Props, // Root as Button, - type Props as ButtonProps, - type Events as ButtonEvents, buttonVariants, + type ButtonProps, + type ButtonSize, + type ButtonVariant, }; diff --git a/new-web/src/lib/components/ui/card/card-action.svelte b/web/src/lib/components/ui/card/card-action.svelte similarity index 100% rename from new-web/src/lib/components/ui/card/card-action.svelte rename to web/src/lib/components/ui/card/card-action.svelte diff --git a/web/src/lib/components/ui/card/card-content.svelte b/web/src/lib/components/ui/card/card-content.svelte index 748c6444..bc90b837 100644 --- a/web/src/lib/components/ui/card/card-content.svelte +++ b/web/src/lib/components/ui/card/card-content.svelte @@ -1,13 +1,15 @@ -
    - +
    + {@render children?.()}
    diff --git a/web/src/lib/components/ui/card/card-description.svelte b/web/src/lib/components/ui/card/card-description.svelte index f65821dc..9b20ac70 100644 --- a/web/src/lib/components/ui/card/card-description.svelte +++ b/web/src/lib/components/ui/card/card-description.svelte @@ -1,13 +1,20 @@ -

    - +

    + {@render children?.()}

    diff --git a/web/src/lib/components/ui/card/card-footer.svelte b/web/src/lib/components/ui/card/card-footer.svelte index 32f90bbb..cf433539 100644 --- a/web/src/lib/components/ui/card/card-footer.svelte +++ b/web/src/lib/components/ui/card/card-footer.svelte @@ -1,13 +1,20 @@ -
    - +
    + {@render children?.()}
    diff --git a/web/src/lib/components/ui/card/card-header.svelte b/web/src/lib/components/ui/card/card-header.svelte index 9c651852..8a91abbf 100644 --- a/web/src/lib/components/ui/card/card-header.svelte +++ b/web/src/lib/components/ui/card/card-header.svelte @@ -1,13 +1,23 @@ -
    - +
    + {@render children?.()}
    diff --git a/web/src/lib/components/ui/card/card-title.svelte b/web/src/lib/components/ui/card/card-title.svelte index 719808ee..22586e61 100644 --- a/web/src/lib/components/ui/card/card-title.svelte +++ b/web/src/lib/components/ui/card/card-title.svelte @@ -1,21 +1,20 @@ - - - + {@render children?.()} +
    diff --git a/web/src/lib/components/ui/card/card.svelte b/web/src/lib/components/ui/card/card.svelte index b69c15c0..99448cc9 100644 --- a/web/src/lib/components/ui/card/card.svelte +++ b/web/src/lib/components/ui/card/card.svelte @@ -1,16 +1,23 @@
    - + {@render children?.()}
    diff --git a/web/src/lib/components/ui/card/index.ts b/web/src/lib/components/ui/card/index.ts index bcc031d0..4d3fce48 100644 --- a/web/src/lib/components/ui/card/index.ts +++ b/web/src/lib/components/ui/card/index.ts @@ -4,6 +4,7 @@ import Description from "./card-description.svelte"; import Footer from "./card-footer.svelte"; import Header from "./card-header.svelte"; import Title from "./card-title.svelte"; +import Action from "./card-action.svelte"; export { Root, @@ -12,6 +13,7 @@ export { Footer, Header, Title, + Action, // Root as Card, Content as CardContent, @@ -19,6 +21,5 @@ export { Footer as CardFooter, Header as CardHeader, Title as CardTitle, + Action as CardAction, }; - -export type HeadingLevel = "h1" | "h2" | "h3" | "h4" | "h5" | "h6"; diff --git a/new-web/src/lib/components/ui/chart/chart-container.svelte b/web/src/lib/components/ui/chart/chart-container.svelte similarity index 100% rename from new-web/src/lib/components/ui/chart/chart-container.svelte rename to web/src/lib/components/ui/chart/chart-container.svelte diff --git a/new-web/src/lib/components/ui/chart/chart-style.svelte b/web/src/lib/components/ui/chart/chart-style.svelte similarity index 100% rename from new-web/src/lib/components/ui/chart/chart-style.svelte rename to web/src/lib/components/ui/chart/chart-style.svelte diff --git a/new-web/src/lib/components/ui/chart/chart-tooltip.svelte b/web/src/lib/components/ui/chart/chart-tooltip.svelte similarity index 100% rename from new-web/src/lib/components/ui/chart/chart-tooltip.svelte rename to web/src/lib/components/ui/chart/chart-tooltip.svelte diff --git a/new-web/src/lib/components/ui/chart/chart-utils.ts b/web/src/lib/components/ui/chart/chart-utils.ts similarity index 100% rename from new-web/src/lib/components/ui/chart/chart-utils.ts rename to web/src/lib/components/ui/chart/chart-utils.ts diff --git a/new-web/src/lib/components/ui/chart/index.ts b/web/src/lib/components/ui/chart/index.ts similarity index 100% rename from new-web/src/lib/components/ui/chart/index.ts rename to web/src/lib/components/ui/chart/index.ts diff --git a/web/src/lib/components/ui/checkbox/checkbox.svelte b/web/src/lib/components/ui/checkbox/checkbox.svelte index f4b906f1..1622e05c 100644 --- a/web/src/lib/components/ui/checkbox/checkbox.svelte +++ b/web/src/lib/components/ui/checkbox/checkbox.svelte @@ -1,35 +1,36 @@ - - {#if isChecked} - - {:else if isIndeterminate} - - {/if} - + {#snippet children({ checked, indeterminate })} +
    + {#if checked} + + {:else if indeterminate} + + {/if} +
    + {/snippet}
    diff --git a/web/src/lib/components/ui/command/command-dialog.svelte b/web/src/lib/components/ui/command/command-dialog.svelte index 68398a84..5c9a82a8 100644 --- a/web/src/lib/components/ui/command/command-dialog.svelte +++ b/web/src/lib/components/ui/command/command-dialog.svelte @@ -1,23 +1,40 @@ - - + + + {title} + {description} + + - - + bind:ref + {children} + /> diff --git a/web/src/lib/components/ui/command/command-empty.svelte b/web/src/lib/components/ui/command/command-empty.svelte index 3a0819df..6726cd8d 100644 --- a/web/src/lib/components/ui/command/command-empty.svelte +++ b/web/src/lib/components/ui/command/command-empty.svelte @@ -1,12 +1,17 @@ - - - + diff --git a/web/src/lib/components/ui/command/command-group.svelte b/web/src/lib/components/ui/command/command-group.svelte index 22f49a41..104f8170 100644 --- a/web/src/lib/components/ui/command/command-group.svelte +++ b/web/src/lib/components/ui/command/command-group.svelte @@ -1,18 +1,32 @@ - + {#if heading} + + {heading} + + {/if} + diff --git a/web/src/lib/components/ui/command/command-input.svelte b/web/src/lib/components/ui/command/command-input.svelte index 3c50f23b..240278a6 100644 --- a/web/src/lib/components/ui/command/command-input.svelte +++ b/web/src/lib/components/ui/command/command-input.svelte @@ -1,23 +1,26 @@ -
    - +
    +
    diff --git a/web/src/lib/components/ui/command/command-item.svelte b/web/src/lib/components/ui/command/command-item.svelte index a75acc8a..2297c978 100644 --- a/web/src/lib/components/ui/command/command-item.svelte +++ b/web/src/lib/components/ui/command/command-item.svelte @@ -1,24 +1,20 @@ - - + {...restProps} +/> diff --git a/new-web/src/lib/components/ui/command/command-link-item.svelte b/web/src/lib/components/ui/command/command-link-item.svelte similarity index 100% rename from new-web/src/lib/components/ui/command/command-link-item.svelte rename to web/src/lib/components/ui/command/command-link-item.svelte diff --git a/web/src/lib/components/ui/command/command-list.svelte b/web/src/lib/components/ui/command/command-list.svelte index 8ceda032..569f5957 100644 --- a/web/src/lib/components/ui/command/command-list.svelte +++ b/web/src/lib/components/ui/command/command-list.svelte @@ -1,15 +1,17 @@ - - + bind:ref + data-slot="command-list" + class={cn("max-h-[300px] scroll-py-1 overflow-y-auto overflow-x-hidden", className)} + {...restProps} +/> diff --git a/web/src/lib/components/ui/command/command-separator.svelte b/web/src/lib/components/ui/command/command-separator.svelte index 71688b85..35c4c957 100644 --- a/web/src/lib/components/ui/command/command-separator.svelte +++ b/web/src/lib/components/ui/command/command-separator.svelte @@ -1,10 +1,17 @@ - + diff --git a/web/src/lib/components/ui/command/command-shortcut.svelte b/web/src/lib/components/ui/command/command-shortcut.svelte index c89bd61c..3d68bc56 100644 --- a/web/src/lib/components/ui/command/command-shortcut.svelte +++ b/web/src/lib/components/ui/command/command-shortcut.svelte @@ -1,16 +1,20 @@ - + {@render children?.()} diff --git a/web/src/lib/components/ui/command/command.svelte b/web/src/lib/components/ui/command/command.svelte index 3889696a..c64a77ef 100644 --- a/web/src/lib/components/ui/command/command.svelte +++ b/web/src/lib/components/ui/command/command.svelte @@ -1,22 +1,22 @@ - - + {...restProps} +/> diff --git a/web/src/lib/components/ui/command/index.ts b/web/src/lib/components/ui/command/index.ts index d8a2e7c0..d3dbadea 100644 --- a/web/src/lib/components/ui/command/index.ts +++ b/web/src/lib/components/ui/command/index.ts @@ -1,4 +1,4 @@ -import { Command as CommandPrimitive } from "cmdk-sv"; +import { Command as CommandPrimitive } from "bits-ui"; import Root from "./command.svelte"; import Dialog from "./command-dialog.svelte"; @@ -9,6 +9,7 @@ import Input from "./command-input.svelte"; import List from "./command-list.svelte"; import Separator from "./command-separator.svelte"; import Shortcut from "./command-shortcut.svelte"; +import LinkItem from "./command-link-item.svelte"; const Loading = CommandPrimitive.Loading; @@ -18,6 +19,7 @@ export { Empty, Group, Item, + LinkItem, Input, List, Separator, @@ -29,6 +31,7 @@ export { Empty as CommandEmpty, Group as CommandGroup, Item as CommandItem, + LinkItem as CommandLinkItem, Input as CommandInput, List as CommandList, Separator as CommandSeparator, diff --git a/web/src/lib/components/ui/context-menu/context-menu-checkbox-item.svelte b/web/src/lib/components/ui/context-menu/context-menu-checkbox-item.svelte deleted file mode 100644 index 7970be79..00000000 --- a/web/src/lib/components/ui/context-menu/context-menu-checkbox-item.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - diff --git a/web/src/lib/components/ui/context-menu/context-menu-content.svelte b/web/src/lib/components/ui/context-menu/context-menu-content.svelte deleted file mode 100644 index 051cccfa..00000000 --- a/web/src/lib/components/ui/context-menu/context-menu-content.svelte +++ /dev/null @@ -1,24 +0,0 @@ - - - - - diff --git a/web/src/lib/components/ui/context-menu/context-menu-item.svelte b/web/src/lib/components/ui/context-menu/context-menu-item.svelte deleted file mode 100644 index e0e34b1c..00000000 --- a/web/src/lib/components/ui/context-menu/context-menu-item.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - - - - diff --git a/web/src/lib/components/ui/context-menu/context-menu-label.svelte b/web/src/lib/components/ui/context-menu/context-menu-label.svelte deleted file mode 100644 index b7198620..00000000 --- a/web/src/lib/components/ui/context-menu/context-menu-label.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - - - diff --git a/web/src/lib/components/ui/context-menu/context-menu-radio-group.svelte b/web/src/lib/components/ui/context-menu/context-menu-radio-group.svelte deleted file mode 100644 index 53fa692c..00000000 --- a/web/src/lib/components/ui/context-menu/context-menu-radio-group.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/web/src/lib/components/ui/context-menu/context-menu-radio-item.svelte b/web/src/lib/components/ui/context-menu/context-menu-radio-item.svelte deleted file mode 100644 index f6fb8ad6..00000000 --- a/web/src/lib/components/ui/context-menu/context-menu-radio-item.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - diff --git a/web/src/lib/components/ui/context-menu/context-menu-separator.svelte b/web/src/lib/components/ui/context-menu/context-menu-separator.svelte deleted file mode 100644 index e161fcc7..00000000 --- a/web/src/lib/components/ui/context-menu/context-menu-separator.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/web/src/lib/components/ui/context-menu/context-menu-shortcut.svelte b/web/src/lib/components/ui/context-menu/context-menu-shortcut.svelte deleted file mode 100644 index 0afcbe17..00000000 --- a/web/src/lib/components/ui/context-menu/context-menu-shortcut.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/web/src/lib/components/ui/context-menu/context-menu-sub-content.svelte b/web/src/lib/components/ui/context-menu/context-menu-sub-content.svelte deleted file mode 100644 index af4862e6..00000000 --- a/web/src/lib/components/ui/context-menu/context-menu-sub-content.svelte +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/web/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte b/web/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte deleted file mode 100644 index e52faba2..00000000 --- a/web/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - diff --git a/web/src/lib/components/ui/context-menu/index.ts b/web/src/lib/components/ui/context-menu/index.ts deleted file mode 100644 index 7d4af845..00000000 --- a/web/src/lib/components/ui/context-menu/index.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { ContextMenu as ContextMenuPrimitive } from "bits-ui"; - -import Item from "./context-menu-item.svelte"; -import Label from "./context-menu-label.svelte"; -import Content from "./context-menu-content.svelte"; -import Shortcut from "./context-menu-shortcut.svelte"; -import RadioItem from "./context-menu-radio-item.svelte"; -import Separator from "./context-menu-separator.svelte"; -import RadioGroup from "./context-menu-radio-group.svelte"; -import SubContent from "./context-menu-sub-content.svelte"; -import SubTrigger from "./context-menu-sub-trigger.svelte"; -import CheckboxItem from "./context-menu-checkbox-item.svelte"; - -const Sub = ContextMenuPrimitive.Sub; -const Root = ContextMenuPrimitive.Root; -const Trigger = ContextMenuPrimitive.Trigger; -const Group = ContextMenuPrimitive.Group; - -export { - Sub, - Root, - Item, - Label, - Group, - Trigger, - Content, - Shortcut, - Separator, - RadioItem, - SubContent, - SubTrigger, - RadioGroup, - CheckboxItem, - // - Root as ContextMenu, - Sub as ContextMenuSub, - Item as ContextMenuItem, - Label as ContextMenuLabel, - Group as ContextMenuGroup, - Content as ContextMenuContent, - Trigger as ContextMenuTrigger, - Shortcut as ContextMenuShortcut, - RadioItem as ContextMenuRadioItem, - Separator as ContextMenuSeparator, - RadioGroup as ContextMenuRadioGroup, - SubContent as ContextMenuSubContent, - SubTrigger as ContextMenuSubTrigger, - CheckboxItem as ContextMenuCheckboxItem, -}; diff --git a/web/src/lib/components/ui/custom-input/combobox.svelte b/web/src/lib/components/ui/custom-input/combobox.svelte index b11fcfb9..e96283a0 100644 --- a/web/src/lib/components/ui/custom-input/combobox.svelte +++ b/web/src/lib/components/ui/custom-input/combobox.svelte @@ -15,6 +15,7 @@ placeholder?: string; disabled?: boolean; classes?: string; + triggerWidth?: string; width?: string; disallowEmpty?: boolean; multiple?: boolean; @@ -28,6 +29,7 @@ placeholder = '', disabled = false, classes = 'space-y-1', + triggerWidth = 'w-full', width = 'w-1/2', disallowEmpty = false, multiple = false, @@ -78,37 +80,40 @@
    -