From ecc04fc394120cb1f9b598d7bb70bdb954a67214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Ramiro=20Zu=C3=B1iga?= Date: Wed, 17 Apr 2024 15:07:53 -0600 Subject: [PATCH 01/18] setting up svelte ux and theme --- package.json | 6 +- pnpm-lock.yaml | 777 +++++++++++++++++++++++++++++++++++--- postcss.config.js | 6 + src/app.css | 3 + src/routes/+layout.svelte | 15 + tailwind.config.js | 104 +++++ 6 files changed, 868 insertions(+), 43 deletions(-) create mode 100644 postcss.config.js create mode 100644 src/app.css create mode 100644 tailwind.config.js diff --git a/package.json b/package.json index 735672da..22393c3f 100644 --- a/package.json +++ b/package.json @@ -24,15 +24,18 @@ "@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/parser": "^7.0.0", "@zerodevx/svelte-toast": "^0.9.5", + "autoprefixer": "^10.4.19", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-svelte": "^2.35.1", "moment": "^2.30.1", + "postcss": "^8.4.38", "prettier": "^3.1.1", "prettier-plugin-svelte": "^3.1.2", "svelte": "^4.2.7", "svelte-check": "^3.6.0", "sveltekit-i18n": "^2.4.2", + "tailwindcss": "^3.4.3", "tslib": "^2.4.1", "typescript": "^5.0.0", "vite": "^5.0.3", @@ -42,6 +45,7 @@ "dependencies": { "@supabase/ssr": "^0.3.0", "@supabase/supabase-js": "^2.42.4", - "svelte-i18n": "^4.0.0" + "svelte-i18n": "^4.0.0", + "svelte-ux": "^0.62.8" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 09a43a79..d43c8959 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ dependencies: svelte-i18n: specifier: ^4.0.0 version: 4.0.0(svelte@4.2.14) + svelte-ux: + specifier: ^0.62.8 + version: 0.62.8(postcss@8.4.38)(svelte@4.2.14) devDependencies: '@fontsource/fira-mono': @@ -46,6 +49,9 @@ devDependencies: '@zerodevx/svelte-toast': specifier: ^0.9.5 version: 0.9.5(svelte@4.2.14) + autoprefixer: + specifier: ^10.4.19 + version: 10.4.19(postcss@8.4.38) eslint: specifier: ^8.56.0 version: 8.57.0 @@ -58,6 +64,9 @@ devDependencies: moment: specifier: ^2.30.1 version: 2.30.1 + postcss: + specifier: ^8.4.38 + version: 8.4.38 prettier: specifier: ^3.1.1 version: 3.2.5 @@ -73,6 +82,9 @@ devDependencies: sveltekit-i18n: specifier: ^2.4.2 version: 2.4.2(svelte@4.2.14) + tailwindcss: + specifier: ^3.4.3 + version: 3.4.3 tslib: specifier: ^2.4.1 version: 2.6.2 @@ -93,6 +105,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: true + /@ampproject/remapping@2.3.0: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -100,6 +117,13 @@ packages: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + /@babel/runtime@7.24.4: + resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false + /@esbuild/aix-ppc64@0.19.12: resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -551,6 +575,23 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@floating-ui/core@1.6.0: + resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + dependencies: + '@floating-ui/utils': 0.2.1 + dev: false + + /@floating-ui/dom@1.6.3: + resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} + dependencies: + '@floating-ui/core': 1.6.0 + '@floating-ui/utils': 0.2.1 + dev: false + + /@floating-ui/utils@0.2.1: + resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + dev: false + /@fontsource/fira-mono@4.5.10: resolution: {integrity: sha512-bxUnRP8xptGRo8YXeY073DSpfK74XpSb0ZyRNpHV9WvLnJ7TwPOjZll8hTMin7zLC6iOp59pDZ8EQDj1gzgAQQ==} dev: true @@ -589,6 +630,12 @@ packages: tslib: 2.6.2 dev: false + /@fortawesome/fontawesome-common-types@6.5.2: + resolution: {integrity: sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==} + engines: {node: '>=6'} + requiresBuild: true + dev: false + /@humanwhocodes/config-array@0.11.14: resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} @@ -609,6 +656,18 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} dev: true + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + /@jest/schemas@29.6.3: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -641,6 +700,10 @@ packages: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 + /@mdi/js@7.4.47: + resolution: {integrity: sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==} + dev: false + /@neoconfetti/svelte@1.0.0: resolution: {integrity: sha512-SmksyaJAdSlMa9cTidVSIqYo1qti+WTsviNDwgjNVm+KQ3DRP2Df9umDIzC4vCcpEYY+chQe0i2IKnLw03AT8Q==} dev: true @@ -651,12 +714,10 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -664,7 +725,13 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true dev: true + optional: true /@playwright/test@1.43.1: resolution: {integrity: sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==} @@ -678,6 +745,41 @@ packages: resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} dev: true + /@rollup/plugin-node-resolve@13.3.0(rollup@2.79.1): + resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^2.42.0 + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@types/resolve': 1.17.1 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.8 + rollup: 2.79.1 + dev: false + + /@rollup/pluginutils@3.1.0(rollup@2.79.1): + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.79.1 + dev: false + + /@rollup/pluginutils@4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: false + /@rollup/rollup-android-arm-eabi@4.14.3: resolution: {integrity: sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==} cpu: [arm] @@ -972,6 +1074,10 @@ packages: '@types/json-schema': 7.0.15 dev: true + /@types/estree@0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: false + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -991,7 +1097,12 @@ packages: /@types/pug@2.0.10: resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} - dev: true + + /@types/resolve@1.17.1: + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + dependencies: + '@types/node': 20.12.7 + dev: false /@types/semver@7.5.8: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -1218,6 +1329,11 @@ packages: engines: {node: '>=8'} dev: true + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -1230,6 +1346,15 @@ packages: engines: {node: '>=10'} dev: true + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -1238,6 +1363,10 @@ packages: picomatch: 2.3.1 dev: true + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true @@ -1256,6 +1385,22 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true + /autoprefixer@10.4.19(postcss@8.4.38): + resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001610 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + dev: true + /axobject-query@4.0.0: resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} dependencies: @@ -1263,7 +1408,6 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true /binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} @@ -1275,7 +1419,6 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -1288,11 +1431,25 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 + + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001610 + electron-to-chromium: 1.4.738 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) dev: true /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - dev: true + + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: false /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} @@ -1304,6 +1461,15 @@ packages: engines: {node: '>=6'} dev: true + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + + /caniuse-lite@1.0.30001610: + resolution: {integrity: sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==} + dev: true + /chai@4.4.1: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} @@ -1357,6 +1523,11 @@ packages: timers-ext: 0.1.7 dev: false + /clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + engines: {node: '>=6'} + dev: false + /code-red@1.0.4: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} dependencies: @@ -1377,9 +1548,18 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + dev: false + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true /cookie@0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} @@ -1413,6 +1593,60 @@ packages: hasBin: true dev: true + /culori@4.0.1: + resolution: {integrity: sha512-LSnjA6HuIUOlkfKVbzi2OlToZE8OjFi667JWN9qNymXVXzGDmvuP60SSgC+e92sd7B7158f7Fy3Mb6rXS5EDPw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + + /d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + dependencies: + internmap: 2.0.3 + dev: false + + /d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + dev: false + + /d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + dev: false + + /d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + dev: false + + /d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + dev: false + + /d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + dependencies: + d3-time: 3.1.0 + dev: false + + /d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + dev: false + /d@1.0.2: resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} engines: {node: '>=0.12'} @@ -1421,6 +1655,10 @@ packages: type: 2.7.2 dev: false + /date-fns@3.6.0: + resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} + dev: false + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -1455,12 +1693,15 @@ packages: /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} - dev: true /devalue@4.3.2: resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} dev: true + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true + /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1473,6 +1714,10 @@ packages: path-type: 4.0.0 dev: true + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true + /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -1480,6 +1725,22 @@ packages: esutils: 2.0.3 dev: true + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /electron-to-chromium@1.4.738: + resolution: {integrity: sha512-lwKft2CLFztD+vEIpesrOtCrko/TFnEJlHFdRhazU7Y/jx5qc4cqsocfVrBg4So4gGe9lvxnbLIoev47WMpg+A==} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + /es5-ext@0.10.64: resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} engines: {node: '>=0.10'} @@ -1501,7 +1762,6 @@ packages: /es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} - dev: true /es6-symbol@3.1.4: resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} @@ -1582,6 +1842,11 @@ packages: '@esbuild/win32-x64': 0.20.2 dev: true + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true + /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -1737,6 +2002,10 @@ packages: engines: {node: '>=4.0'} dev: true + /estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: false + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: false @@ -1792,7 +2061,6 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: true /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -1806,7 +2074,6 @@ packages: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 - dev: true /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} @@ -1820,7 +2087,6 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: true /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -1843,9 +2109,20 @@ packages: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} dev: true + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} @@ -1860,9 +2137,11 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true @@ -1877,7 +2156,6 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - dev: true /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} @@ -1886,6 +2164,18 @@ packages: is-glob: 4.0.3 dev: true + /glob@10.3.12: + resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.4 + minipass: 7.0.4 + path-scurry: 1.10.2 + dev: true + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -1895,7 +2185,6 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true /globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} @@ -1924,7 +2213,6 @@ packages: /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -1935,6 +2223,12 @@ packages: engines: {node: '>=8'} dev: true + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -1945,6 +2239,10 @@ packages: engines: {node: '>= 4'} dev: true + /immer@10.0.4: + resolution: {integrity: sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw==} + dev: false + /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -1967,11 +2265,14 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true + + /internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + dev: false /intl-messageformat@10.5.11: resolution: {integrity: sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==} @@ -1989,9 +2290,25 @@ packages: binary-extensions: 2.3.0 dev: true + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: false + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.2 + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} dev: true /is-glob@4.0.3: @@ -1999,12 +2316,14 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true + + /is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: false /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} @@ -2029,6 +2348,20 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + dev: true + /js-tokens@9.0.0: resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} dev: true @@ -2084,6 +2417,15 @@ packages: engines: {node: '>=10'} dev: true + /lilconfig@3.1.1: + resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + engines: {node: '>=14'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + /local-pkg@0.5.0: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} @@ -2102,6 +2444,10 @@ packages: p-locate: 5.0.0 dev: true + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -2112,6 +2458,11 @@ packages: get-func-name: 2.0.2 dev: true + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + dev: true + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -2154,7 +2505,6 @@ packages: /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -2162,7 +2512,6 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} @@ -2172,13 +2521,11 @@ packages: /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - dev: true /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - dev: true /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} @@ -2189,6 +2536,10 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} dev: true /mkdirp@0.5.6: @@ -2196,7 +2547,6 @@ packages: hasBin: true dependencies: minimist: 1.2.8 - dev: true /mlly@1.6.1: resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} @@ -2224,11 +2574,18 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + /nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: true /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -2238,11 +2595,20 @@ packages: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: false + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + /npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2250,11 +2616,20 @@ packages: path-key: 4.0.0 dev: true + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - dev: true /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} @@ -2311,7 +2686,6 @@ packages: /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - dev: true /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -2323,6 +2697,17 @@ packages: engines: {node: '>=12'} dev: true + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-scurry@1.10.2: + resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.2.0 + minipass: 7.0.4 + dev: true + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -2345,11 +2730,19 @@ packages: /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} dev: true /pkg-types@1.0.3: @@ -2376,6 +2769,28 @@ packages: fsevents: 2.3.2 dev: true + /postcss-import@15.1.0(postcss@8.4.38): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.38 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + dev: true + + /postcss-js@4.0.1(postcss@8.4.38): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.38 + dev: true + /postcss-load-config@3.1.4(postcss@8.4.38): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -2393,6 +2808,33 @@ packages: yaml: 1.10.2 dev: true + /postcss-load-config@4.0.2(postcss@8.4.38): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.1.1 + postcss: 8.4.38 + yaml: 2.4.1 + dev: true + + /postcss-nested@6.0.1(postcss@8.4.38): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.38 + postcss-selector-parser: 6.0.16 + dev: true + /postcss-safe-parser@6.0.0(postcss@8.4.38): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} @@ -2419,6 +2861,10 @@ packages: util-deprecate: 1.0.2 dev: true + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + /postcss@8.4.38: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} @@ -2426,7 +2872,6 @@ packages: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.2.0 - dev: true /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -2443,6 +2888,12 @@ packages: svelte: 4.2.14 dev: true + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: false + /prettier@3.2.5: resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} @@ -2458,6 +2909,19 @@ packages: react-is: 18.2.0 dev: true + /prism-svelte@0.5.0: + resolution: {integrity: sha512-db91Bf3pRGKDPz1lAqLFSJXeW13mulUJxhycysFpfXV5MIK7RgWWK2E5aPAa71s8TCzQUXxF5JOV42/iOs6QkA==} + dev: false + + /prism-themes@1.9.0: + resolution: {integrity: sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==} + dev: false + + /prismjs@1.29.0: + resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} + engines: {node: '>=6'} + dev: false + /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -2465,7 +2929,6 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true /ramda@0.29.1: resolution: {integrity: sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==} @@ -2475,6 +2938,12 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: true + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -2482,22 +2951,37 @@ packages: picomatch: 2.3.1 dev: true + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: false + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: false + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true /rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true dependencies: glob: 7.2.3 - dev: true /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} @@ -2506,6 +2990,27 @@ packages: glob: 7.2.3 dev: true + /rollup-plugin-svelte@7.2.0(rollup@2.79.1)(svelte@4.2.14): + resolution: {integrity: sha512-Qvo5VNFQZtaI+sHSjcCIFDP+olfKVyslAoJIkL3DxuhUpNY5Ys0+hhxUY3kuEKt9BXFgkFJiiic/XRb07zdSbg==} + engines: {node: '>=10'} + peerDependencies: + rollup: '>=2.0.0' + svelte: '>=3.5.0' + dependencies: + '@rollup/pluginutils': 4.2.1 + resolve.exports: 2.0.2 + rollup: 2.79.1 + svelte: 4.2.14 + dev: false + + /rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: false + /rollup@4.14.3: resolution: {integrity: sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -2536,7 +3041,6 @@ packages: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: true /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} @@ -2551,7 +3055,6 @@ packages: graceful-fs: 4.2.11 mkdirp: 0.5.6 rimraf: 2.7.1 - dev: true /semver@7.6.0: resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} @@ -2608,7 +3111,6 @@ packages: buffer-crc32: 0.2.13 minimist: 1.2.8 sander: 0.5.1 - dev: true /source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} @@ -2622,6 +3124,24 @@ packages: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} dev: true + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -2629,6 +3149,13 @@ packages: ansi-regex: 5.0.1 dev: true + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -2639,7 +3166,6 @@ packages: engines: {node: '>=8'} dependencies: min-indent: 1.0.1 - dev: true /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} @@ -2652,6 +3178,20 @@ packages: js-tokens: 9.0.0 dev: true + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.3.12 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: true + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -2659,6 +3199,36 @@ packages: has-flag: 4.0.0 dev: true + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /sveld@0.19.2(postcss@8.4.38): + resolution: {integrity: sha512-690sbiEq2cyH6HINJw0f+m9s2wGFX3G8D/EHWnpShAfqTfzWoDUrrqPmul+RyzVJQ5tH5zfbJ98C+4OtR3DUAQ==} + hasBin: true + dependencies: + '@rollup/plugin-node-resolve': 13.3.0(rollup@2.79.1) + acorn: 8.11.3 + comment-parser: 1.4.1 + fast-glob: 3.3.2 + prettier: 2.8.8 + rollup: 2.79.1 + rollup-plugin-svelte: 7.2.0(rollup@2.79.1)(svelte@4.2.14) + svelte: 4.2.14 + svelte-preprocess: 5.1.3(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + dev: false + /svelte-check@3.6.9(postcss@8.4.38)(svelte@4.2.14): resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==} hasBin: true @@ -2775,7 +3345,40 @@ packages: strip-indent: 3.0.0 svelte: 4.2.14 typescript: 5.4.5 - dev: true + + /svelte-ux@0.62.8(postcss@8.4.38)(svelte@4.2.14): + resolution: {integrity: sha512-M+FbcMtNpJVN4zhLc54Ks2ClKfTPmF3eNzoA4CuHGGog4RwJ/Xd1d/Wn4BXCxEjSZZT5SRQzws95f78S3ZDu3w==} + peerDependencies: + svelte: ^3.56.0 || ^4.0.0 + dependencies: + '@floating-ui/dom': 1.6.3 + '@fortawesome/fontawesome-common-types': 6.5.2 + '@mdi/js': 7.4.47 + clsx: 2.1.0 + culori: 4.0.1 + d3-array: 3.2.4 + d3-scale: 4.0.2 + date-fns: 3.6.0 + immer: 10.0.4 + lodash-es: 4.17.21 + prism-svelte: 0.5.0 + prism-themes: 1.9.0 + prismjs: 1.29.0 + sveld: 0.19.2(postcss@8.4.38) + svelte: 4.2.14 + tailwind-merge: 2.2.2 + zod: 3.22.4 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + dev: false /svelte@4.2.14: resolution: {integrity: sha512-ry3+YlWqZpHxLy45MW4MZIxNdvB+Wl7p2nnstWKbOAewaJyNJuOtivSbRChcfIej6wFBjWqyKmf/NgK1uW2JAA==} @@ -2806,10 +3409,60 @@ packages: svelte: 4.2.14 dev: true + /tailwind-merge@2.2.2: + resolution: {integrity: sha512-tWANXsnmJzgw6mQ07nE3aCDkCK4QdT3ThPMCzawoYA2Pws7vSTCvz3Vrjg61jVUGfFZPJzxEP+NimbcW+EdaDw==} + dependencies: + '@babel/runtime': 7.24.4 + dev: false + + /tailwindcss@3.4.3: + resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} + engines: {node: '>=14.0.0'} + hasBin: true + 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.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.38 + postcss-import: 15.1.0(postcss@8.4.38) + postcss-js: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38) + postcss-nested: 6.0.1(postcss@8.4.38) + postcss-selector-parser: 6.0.16 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + dev: true + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + /timers-ext@0.1.7: resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} dependencies: @@ -2842,7 +3495,6 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: true /totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} @@ -2862,6 +3514,10 @@ packages: typescript: 5.4.5 dev: true + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -2890,7 +3546,6 @@ packages: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true - dev: true /ufo@1.5.3: resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} @@ -2900,6 +3555,17 @@ packages: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: false + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.0 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -3060,9 +3726,26 @@ packages: stackback: 0.0.2 dev: true + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true /ws@8.16.0: resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} @@ -3086,6 +3769,12 @@ packages: engines: {node: '>= 6'} dev: true + /yaml@2.4.1: + resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} + engines: {node: '>= 14'} + hasBin: true + dev: true + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -3095,3 +3784,7 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} dev: true + + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: false diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 00000000..2e7af2b7 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/src/app.css b/src/app.css new file mode 100644 index 00000000..bd6213e1 --- /dev/null +++ b/src/app.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index bb2930d8..2e66ee31 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -4,6 +4,7 @@ import { onMount } from 'svelte'; import { _, isLoading } from 'svelte-i18n'; import { SvelteToast } from '@zerodevx/svelte-toast'; + import "../app.css"; export let data; @@ -37,6 +38,20 @@ +
+ +

{$_('header.home')}

diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 00000000..41197da6 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,104 @@ +const colors = require('tailwindcss/colors'); +const svelteUx = require('svelte-ux/plugins/tailwind.cjs'); + +module.exports = { + content: [ + './src/**/*.{html,svelte}', + './node_modules/svelte-ux/**/*.{svelte,js}' + ], + + // See customization docs: https://svelte-ux.techniq.dev/customization + ux: { + themes: { + // light: { + // primary: colors['orange']['500'], + // 'primary-content': 'white', + // secondary: colors['blue']['500'], + // 'surface-100': 'white', + // 'surface-200': colors['gray']['100'], + // 'surface-300': colors['gray']['300'], + // 'surface-content': colors['gray']['900'], + // 'color-scheme': 'light' + // }, + // dark: { + // primary: colors['orange']['500'], + // 'primary-content': 'white', + // secondary: colors['blue']['500'], + // 'surface-100': colors['zinc']['800'], + // 'surface-200': colors['zinc']['900'], + // 'surface-300': colors['zinc']['950'], + // 'surface-content': colors['zinc']['100'], + // 'color-scheme': 'dark' + // }, + light: { + "color-scheme": "light", + primary: "#055817", + secondary: "#0DBF34", + "accent": "#8EF4FF", + "neutral": "#242327", + "info": "#7a95ff", + "success": "#62ef98", + "warning": "#f9ffa3", + "danger": "#ff8f8f", + "surface-100": "#FFFEF4", + "surface-200": "#F2F2F2", + "surface-300": "#E5E6E6" + }, + dark: { + "color-scheme": "dark", + primary: "#055817", + secondary: "#0DBF34", + "accent": "#8EF4FF", + "neutral": "#FFFEF4", + "info": "#7a95ff", + "success": "#62ef98", + "warning": "#f9ffa3", + "danger": "#ff8f8f", + "surface-100": "#242327", + "surface-200": "#191e24", + "surface-300": "#15191e" + } + } + }, + }, + + plugins: [ + svelteUx, // uses hsl() color space by default. To use oklch(), use: svelteUx({ colorSpace: 'oklch' }), + ] +}; + +// { +// "light": { +// "color-scheme": "light", +// "primary": "#055817", +// "secondary": "#0DBF34", +// "secondary-content": "oklch(98.71% 0.0106 342.55)", +// "accent": "#8EF4FF", +// "neutral": "#242327", +// "neutral-content": "#D7DDE4", +// "surface-100": "#FFFEF4", +// "surface-200": "#F2F2F2", +// "surface-300": "#E5E6E6", +// "surface-content": "#1f2937", +// "success": "#62ef98", +// "warning": "#f9ffa3", +// "danger": "#ff8f8f", +// "info": "#7a95ff" +// }, +// "dark": { +// "color-scheme": "dark", +// "primary": "#055817", +// "secondary": "#0DBF34", +// "accent": "#8EF4FF", +// "neutral": "#FFFEF4", +// "neutral-content": "#A6ADBB", +// "surface-100": "#242327", +// "surface-200": "#191e24", +// "surface-300": "#15191e", +// "surface-content": "#A6ADBB", +// "success": "#62ef98", +// "warning": "#f9ffa3", +// "danger": "#ff8f8f", +// "info": "#7a95ff" +// } +// } From 139604493051ff78b510a80a4eb0df8d1dba3835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Ramiro=20Zu=C3=B1iga?= Date: Wed, 17 Apr 2024 16:08:14 -0600 Subject: [PATCH 02/18] homepage first section --- src/routes/+layout.svelte | 9 ++++--- src/routes/+page.svelte | 6 +++-- tailwind.config.js | 55 +++------------------------------------ themes.json | 30 +++++++++++++++++++++ 4 files changed, 42 insertions(+), 58 deletions(-) create mode 100644 themes.json diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 2e66ee31..d94cd11b 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -38,9 +38,10 @@ -
+
@@ -86,7 +87,7 @@ flex: 1; display: flex; flex-direction: column; - padding: 1rem; + padding: 0rem; width: 100%; max-width: 64rem; margin: 0 auto; diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index cb3df4c2..e42dccbe 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,5 +1,4 @@ @@ -8,5 +7,8 @@
-

Welcome to this website ...

+
+

Get real time data from your crops

+

Knowing what your crops need is not easy. Making it accessible to you is our job.

+
diff --git a/tailwind.config.js b/tailwind.config.js index 41197da6..8fcf6ffe 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -9,61 +9,12 @@ module.exports = { // See customization docs: https://svelte-ux.techniq.dev/customization ux: { - themes: { - // light: { - // primary: colors['orange']['500'], - // 'primary-content': 'white', - // secondary: colors['blue']['500'], - // 'surface-100': 'white', - // 'surface-200': colors['gray']['100'], - // 'surface-300': colors['gray']['300'], - // 'surface-content': colors['gray']['900'], - // 'color-scheme': 'light' - // }, - // dark: { - // primary: colors['orange']['500'], - // 'primary-content': 'white', - // secondary: colors['blue']['500'], - // 'surface-100': colors['zinc']['800'], - // 'surface-200': colors['zinc']['900'], - // 'surface-300': colors['zinc']['950'], - // 'surface-content': colors['zinc']['100'], - // 'color-scheme': 'dark' - // }, - light: { - "color-scheme": "light", - primary: "#055817", - secondary: "#0DBF34", - "accent": "#8EF4FF", - "neutral": "#242327", - "info": "#7a95ff", - "success": "#62ef98", - "warning": "#f9ffa3", - "danger": "#ff8f8f", - "surface-100": "#FFFEF4", - "surface-200": "#F2F2F2", - "surface-300": "#E5E6E6" - }, - dark: { - "color-scheme": "dark", - primary: "#055817", - secondary: "#0DBF34", - "accent": "#8EF4FF", - "neutral": "#FFFEF4", - "info": "#7a95ff", - "success": "#62ef98", - "warning": "#f9ffa3", - "danger": "#ff8f8f", - "surface-100": "#242327", - "surface-200": "#191e24", - "surface-300": "#15191e" - } - } - }, + themes: require('./themes.json') + , }, plugins: [ - svelteUx, // uses hsl() color space by default. To use oklch(), use: svelteUx({ colorSpace: 'oklch' }), + svelteUx({ colorSpace: 'oklch' }), // uses hsl() color space by default. To use oklch(), use: svelteUx({ colorSpace: 'oklch' }), ] }; diff --git a/themes.json b/themes.json new file mode 100644 index 00000000..90321f31 --- /dev/null +++ b/themes.json @@ -0,0 +1,30 @@ +{ + "light": { + "color-scheme": "light", + "primary": "#055817", + "secondary": "#0DBF34", + "accent": "#8EF4FF", + "neutral": "#242327", + "info": "#7a95ff", + "success": "#62ef98", + "warning": "#f9ffa3", + "danger": "#ff8f8f", + "surface-100": "#FFFEF4", + "surface-200": "#F2F2F2", + "surface-300": "#E5E6E6" + }, + "dark": { + "color-scheme": "dark", + "primary": "#055817", + "secondary": "#0DBF34", + "accent": "#8EF4FF", + "neutral": "#FFFEF4", + "info": "#7a95ff", + "success": "#62ef98", + "warning": "#f9ffa3", + "danger": "#ff8f8f", + "surface-100": "#242327", + "surface-200": "#191e24", + "surface-300": "#15191e" + } + } \ No newline at end of file From d1406870277f4e0bf7c0b7b12ae56ca5976db84a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Ramiro=20Zu=C3=B1iga?= Date: Thu, 18 Apr 2024 15:27:52 -0600 Subject: [PATCH 03/18] Dashboard Cards layout --- package.json | 1 + pnpm-lock.yaml | 7 +++ src/routes/+page.svelte | 102 ++++++++++++++++++++++++++++++++++++++-- 3 files changed, 107 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 22393c3f..677e3eb5 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "prettier-plugin-svelte": "^3.1.2", "svelte": "^4.2.7", "svelte-check": "^3.6.0", + "svelte-grid": "^5.1.2", "sveltekit-i18n": "^2.4.2", "tailwindcss": "^3.4.3", "tslib": "^2.4.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d43c8959..151430c8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -79,6 +79,9 @@ devDependencies: svelte-check: specifier: ^3.6.0 version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) + svelte-grid: + specifier: ^5.1.2 + version: 5.1.2 sveltekit-i18n: specifier: ^2.4.2 version: 2.4.2(svelte@4.2.14) @@ -3273,6 +3276,10 @@ packages: svelte: 4.2.14 dev: true + /svelte-grid@5.1.2: + resolution: {integrity: sha512-Suwgb+L3LALhTyA7z4vn87UOJ+xBY6EeKa6MdWqDv/lZOtQgIZ21ry/I6txIn9IC0p8of4AiOXupkSMcZ+DEug==} + dev: true + /svelte-hmr@0.16.0(svelte@4.2.14): resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} engines: {node: ^12.20 || ^14.13.1 || >= 16} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index e42dccbe..0b34a8ec 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,4 +1,5 @@ - @@ -8,7 +9,102 @@
-

Get real time data from your crops

-

Knowing what your crops need is not easy. Making it accessible to you is our job.

+

Get real time data from your crops

+

+ Knowing what your crops need is not easy. Making it accessible to you is our job. +

+
+
+
+
+
+
+ +
+
+

Takasue's GreenHouse

+
+

+

Temperature

+

Humidity

+
+
+ + + +
+
+

Sensor 1

+

25ºC

+

34%

+
+
+ +
+
+

Soil Details

+
+
+

Temperature

+

27ºC

+
+
+

Moisture

+

23%

+
+
+

pH

+

3.4

+
+
+

EC

+

7.6

+
+ + +
+
+

N

+

23%

+
+
+

P

+

3.4

+
+
+

K

+

7.6

+
+
+
+
+
+ + +
+
+

Sensor 1

+

25ºC

+

34%

+
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis quod culpa et, + dolores omnis, ipsum in perspiciatis porro ut nihil molestiae molestias tenetur + delectus velit! Inventore laborum rerum at id? +
+
+
+
+
+
From ffa2fd223b9dd656b69f155f16d27a366e64b24e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Ramiro=20Zu=C3=B1iga?= Date: Tue, 23 Apr 2024 18:07:40 -0600 Subject: [PATCH 04/18] add icons and top layout order --- src/routes/+layout.svelte | 53 ++++++++++++++---- src/routes/+page.svelte | 8 ++- static/icons/UI/cw-05.png | Bin 0 -> 3722 bytes static/icons/UI/cw-05.svg | 1 + static/icons/UI/cw-09.png | Bin 0 -> 4191 bytes static/icons/UI/cw-09.svg | 1 + static/icons/UI/cw-10.png | Bin 0 -> 7813 bytes static/icons/UI/cw-10.svg | 1 + static/icons/UI/cw-bell.png | Bin 0 -> 5144 bytes static/icons/UI/cw-bell.svg | 1 + static/icons/UI/cw_Bell 1.png | Bin 0 -> 2230 bytes static/icons/UI/cw_Bell 1.svg | 1 + static/icons/UI/cw_Bell icon light.png | Bin 0 -> 5070 bytes static/icons/UI/cw_Bell icon light.svg | 1 + static/icons/UI/cw_Logo.png | Bin 0 -> 10352 bytes static/icons/UI/cw_Logo.svg | 1 + static/icons/UI/cw_compass arrow.png | Bin 0 -> 3934 bytes static/icons/UI/cw_compass arrow.svg | 1 + static/icons/UI/cw_filter.png | Bin 0 -> 2868 bytes static/icons/UI/cw_filter.svg | 1 + static/icons/UI/cw_get into arrow.png | Bin 0 -> 2828 bytes static/icons/UI/cw_get into arrow.svg | 1 + static/icons/UI/cw_history.png | Bin 0 -> 5718 bytes static/icons/UI/cw_history.svg | 1 + static/icons/UI/cw_inactive circle.png | Bin 0 -> 3700 bytes static/icons/UI/cw_inactive circle.svg | 1 + static/icons/UI/cw_menu hamburger.png | Bin 0 -> 1155 bytes static/icons/UI/cw_menu hamburger.svg | 1 + static/icons/UI/cw_moisture.png | Bin 0 -> 6932 bytes static/icons/UI/cw_moisture.svg | 1 + static/icons/UI/cw_options.png | Bin 0 -> 2674 bytes static/icons/UI/cw_options.svg | 1 + static/icons/UI/cw_permissions.png | Bin 0 -> 6004 bytes static/icons/UI/cw_permissions.svg | 1 + static/icons/UI/cw_rule.png | Bin 0 -> 6989 bytes static/icons/UI/cw_rule.svg | 1 + static/icons/UI/cw_rules.png | Bin 0 -> 7557 bytes static/icons/UI/cw_rules.svg | 1 + static/icons/UI/cw_sensor status inactive.png | Bin 0 -> 7797 bytes static/icons/UI/cw_sensor status inactive.svg | 1 + static/icons/UI/cw_settings.png | Bin 0 -> 4874 bytes static/icons/UI/cw_settings.svg | 1 + static/icons/UI/cw_thermometer.png | Bin 0 -> 4101 bytes static/icons/UI/cw_thermometer.svg | 1 + 44 files changed, 69 insertions(+), 13 deletions(-) create mode 100644 static/icons/UI/cw-05.png create mode 100644 static/icons/UI/cw-05.svg create mode 100644 static/icons/UI/cw-09.png create mode 100644 static/icons/UI/cw-09.svg create mode 100644 static/icons/UI/cw-10.png create mode 100644 static/icons/UI/cw-10.svg create mode 100644 static/icons/UI/cw-bell.png create mode 100644 static/icons/UI/cw-bell.svg create mode 100644 static/icons/UI/cw_Bell 1.png create mode 100644 static/icons/UI/cw_Bell 1.svg create mode 100644 static/icons/UI/cw_Bell icon light.png create mode 100644 static/icons/UI/cw_Bell icon light.svg create mode 100644 static/icons/UI/cw_Logo.png create mode 100644 static/icons/UI/cw_Logo.svg create mode 100644 static/icons/UI/cw_compass arrow.png create mode 100644 static/icons/UI/cw_compass arrow.svg create mode 100644 static/icons/UI/cw_filter.png create mode 100644 static/icons/UI/cw_filter.svg create mode 100644 static/icons/UI/cw_get into arrow.png create mode 100644 static/icons/UI/cw_get into arrow.svg create mode 100644 static/icons/UI/cw_history.png create mode 100644 static/icons/UI/cw_history.svg create mode 100644 static/icons/UI/cw_inactive circle.png create mode 100644 static/icons/UI/cw_inactive circle.svg create mode 100644 static/icons/UI/cw_menu hamburger.png create mode 100644 static/icons/UI/cw_menu hamburger.svg create mode 100644 static/icons/UI/cw_moisture.png create mode 100644 static/icons/UI/cw_moisture.svg create mode 100644 static/icons/UI/cw_options.png create mode 100644 static/icons/UI/cw_options.svg create mode 100644 static/icons/UI/cw_permissions.png create mode 100644 static/icons/UI/cw_permissions.svg create mode 100644 static/icons/UI/cw_rule.png create mode 100644 static/icons/UI/cw_rule.svg create mode 100644 static/icons/UI/cw_rules.png create mode 100644 static/icons/UI/cw_rules.svg create mode 100644 static/icons/UI/cw_sensor status inactive.png create mode 100644 static/icons/UI/cw_sensor status inactive.svg create mode 100644 static/icons/UI/cw_settings.png create mode 100644 static/icons/UI/cw_settings.svg create mode 100644 static/icons/UI/cw_thermometer.png create mode 100644 static/icons/UI/cw_thermometer.svg diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index d94cd11b..29e28627 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -4,7 +4,7 @@ import { onMount } from 'svelte'; import { _, isLoading } from 'svelte-i18n'; import { SvelteToast } from '@zerodevx/svelte-toast'; - import "../app.css"; + import '../app.css'; export let data; @@ -38,7 +38,7 @@ -
+
-
-
-

{$_('header.home')}

- + +
+ + +
+ +
+ + +
+ cw +
+
+ +
+
+ + {#if !data.session} login / signup / {:else} - Home / +
- +
{/if}
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 0b34a8ec..e2294c67 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -7,16 +7,18 @@ -
+
-
+
+ +
}4Gxt&|LrCS{+&9Y&hO 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 literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw-05.svg b/static/icons/UI/cw-05.svg new file mode 100644 index 00000000..0dc6cea1 --- /dev/null +++ b/static/icons/UI/cw-05.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw-09.png b/static/icons/UI/cw-09.png new file mode 100644 index 0000000000000000000000000000000000000000..a85b20fea22bfe46c80a655ac03383ffb47fce87 GIT binary patch literal 4191 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 KO)8DBcm4w?%#BI_ literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw-09.svg b/static/icons/UI/cw-09.svg new file mode 100644 index 00000000..d826afdc --- /dev/null +++ b/static/icons/UI/cw-09.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw-10.png b/static/icons/UI/cw-10.png new file mode 100644 index 0000000000000000000000000000000000000000..94374be4c155d389f088efcf9324dedfce16eb3f GIT binary patch literal 7813 zcmd^k=Tnp4^EOH+H0dB99VDSCAPOkGN=Ha&h7t$_5fXZp(1}QsUPQVO=`DarsM34y zO?pwPz(=2a-#-7s@5PyW?matucJ^E|=h|yy4D~f>s5q#Ih=^#kwbYD>i0**?w+y5ow zl@}NHl&9>H{=+v5|86sln>piqW^(=&(348$=zS{r=xwYsa^Ujzjo!-i-`n6n7l)SH zogC@I#Y3HojUo46Txt6}Eb9CP51jv_5&bURP-g#pir?G^hPbXd)e|&*2%eZbi%^{X zI-F+hmbv7@pwe@vsKC5ds|ras{scEju-oZqFwL6i+h#tfu;T9 zWgQ)NyUJ`k^%*0gyG{oY&Y-Wl^5LSn>!btRUCzZ|N~6bdaO=sFn^+bQWBCB70dWM_ z$wtpZt4t@O z_t3dSP!Jy&_AR9}mCLeLV5n~`_~8?5^f)J=X2Ju=tbkd6SN1HpYk+<12RGUW>9tP z(Db6*ZJNsH(wXe{m0k{;;A+5{J>gsffym7b39kOxtw}RuLMP!2ps1|p)dd!p`9J@- z70JXy7%;Y9$WLJsjm!I^f3yDW29AAl|3W)vr83X#$+a>C4kN(E|5=u7**~Y7%0DZF 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 literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw-10.svg b/static/icons/UI/cw-10.svg new file mode 100644 index 00000000..cf6d7964 --- /dev/null +++ b/static/icons/UI/cw-10.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw-bell.png b/static/icons/UI/cw-bell.png new file mode 100644 index 0000000000000000000000000000000000000000..96b7be22b4e791da4388cb20bd3e285404930872 GIT binary patch literal 5144 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 literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw-bell.svg b/static/icons/UI/cw-bell.svg new file mode 100644 index 00000000..d72c75e6 --- /dev/null +++ b/static/icons/UI/cw-bell.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw_Bell 1.png b/static/icons/UI/cw_Bell 1.png new file mode 100644 index 0000000000000000000000000000000000000000..59aa7a10d6cea48e14aa55b4fffc104405129fca GIT binary patch literal 2230 zcmdUx`CHOS9LK-9DtI8exgL2$v742a*`cd>RGL_}ViZOih?;qll!{lFia@?ic`2v0f=q4R9opnjHr=nq<#oF#w?b<4RF^+nb^U0BG2L_dQ1vie$ZS zNMcXbw*Kk0Q`2b+QSrI4o$;5)x}j2(frC?zjG~UbbE~jcMwC z>RBT$e%n(CbK6V9D#b^$AYLCkgP){0*9;{)9TW^FpQB(cn|db^%RX6xeH({D{7Y<7 zpq^&}4m4OX-sfXZm4(Y6O-VUjL}8=zW=69W<9I%%!_XBly9Q^_nbd5~oFU8ZcBA1Y z<930Q=k+q4!i6wPpkc=;7Kc7J;#4kwkh$EhO=3s%cC?kJ1h4=PdD0C#`$*0(wWyO_ za0{U){VYN!2tohFkJZoK2Um=+%q{$QA|wl2YNi)0T+d3 zO!FwnLL-ccZ+S3`dMbE^1gz=;dBg?{y@hWSJ>A@KWpoTpqP#w6EkJ|F#;UF(n(NbsFC~QvX3;(u4J?J%#q#Xd}KPuTy5UVcPMQHjyy7odbS!Ij*aYZ=0mBCkRN3 zQ>{Bl7KV|K_y=N{heRXh<}d3Z^dUBc)kC<;qx{vS%9> z$#?ZTx9-a8hj!|J+7-ISjZesa5bvS&WvtnFNIl2Ex5h+}f_Ai&P&^nTDFBmmiuN@Z_$h=&sG~lWk~9xJ!h^{Jx>pWVppy6a|wT zJPZZ59uL1^=T?-4ebos}Ura*7?FYa}^?ztb{yC+vjOWw!JUhX!^+L3cgX%o8WB0b> zY%nIfPo7$Mgwr$`o}XmS5iHtA>OVF{wE<=smfUhod(+i2_oW-A6-y>niDA^y_4i^& z@*P`U>%Q?>`?fFvey40^!s7XA)>b=A48}cntg&+ z${)Anr`IX1a~SldL{Ni*`u`2l5c= zL0@)bI|}#4VGks3|5W!Y8!o39Rk>*TrbqM=I?l%8#ng%Fe(Rd|_+$%4==znERr}Kisw_ldsmm`P6IO5NV*I)t2ev94&eK zR)ss(_H4xTW^los=u`sK7Xof#jE`F(?}jCBCQXeAPciuvs`efK4E4Z3A zCx;lf`>RaDowrSPgMjAspd)}LT(R#RF-4@hZZaoN$5=-6x;Tnk{Lx_S%+lYTP1E;v z?aSe)IG&WmK7}$@l@*NUkA^q~ofl@#Y4<19E*-ywbyZ^`1vS^<6C88uuGqoK9*@O! zxZ?1bjAbT$CVZAOy~??^;wn$tXTlxxF%9P(?oc*;o*^5fNrk1R#}qI2%mXCa<19NE zuV+LY98xNB@Rgq#NWean@hyeTddAnEbCDQ%{AQ8LU literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw_Bell 1.svg b/static/icons/UI/cw_Bell 1.svg new file mode 100644 index 00000000..0d4c6b27 --- /dev/null +++ b/static/icons/UI/cw_Bell 1.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw_Bell icon light.png b/static/icons/UI/cw_Bell icon light.png new file mode 100644 index 0000000000000000000000000000000000000000..45af4f298ac26cd557124520e9adea671b1fcfe3 GIT binary patch literal 5070 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 R`r<$b(APEAsnkL~`!5nuiFN=0 literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw_Bell icon light.svg b/static/icons/UI/cw_Bell icon light.svg new file mode 100644 index 00000000..3cbe7a4c --- /dev/null +++ b/static/icons/UI/cw_Bell icon light.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw_Logo.png b/static/icons/UI/cw_Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2148fa5c797e6170525653079f9ac1ce0453f4d8 GIT binary patch literal 10352 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 literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw_Logo.svg b/static/icons/UI/cw_Logo.svg new file mode 100644 index 00000000..d60b6ac2 --- /dev/null +++ b/static/icons/UI/cw_Logo.svg @@ -0,0 +1 @@ +cwCropWatch \ No newline at end of file diff --git a/static/icons/UI/cw_compass arrow.png b/static/icons/UI/cw_compass arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..a9f8454e6d3ef11814a8fd5e2cfc1bda5780e980 GIT binary patch literal 3934 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 Zo!|WGc)z&&AqBI*8G_xZs*~Wg{{cD)YJva& literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw_compass arrow.svg b/static/icons/UI/cw_compass arrow.svg new file mode 100644 index 00000000..634c64ce --- /dev/null +++ b/static/icons/UI/cw_compass arrow.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw_filter.png b/static/icons/UI/cw_filter.png new file mode 100644 index 0000000000000000000000000000000000000000..0126c4d01ea7d5d5c5dc2c4ff45da67e1bf13413 GIT binary patch literal 2868 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 qdn%*nERbrdF8s6qxl1q4Uxcw \ No newline at end of file diff --git a/static/icons/UI/cw_get into arrow.png b/static/icons/UI/cw_get into arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..800133b2649e3441531e8c16f236077e2b3b40da GIT binary patch literal 2828 zcmai0jXRV38{b%MbcThjOko;jVcweRc&D=;79FJ040$WkHg6$@A`F#cp>#s!bxTEW zTU*E0DIB4inwOf>I75fn^3wP{`~Ciab6wAK-{1Rt-}mS9`F@}4xvsm=pST~cxkVEM z0>KHtcpd~i69fWdVe5gF%hz-T;51JEa+n4JZP=)K!2=^%KR_T&F2U0+Fs){08b49HZmARGRGs%HP%d?)3g8STI&%2N= zr?@#sz0e_yIooryVrlUmPFTekqkG?2Ns#XAhm?Ae&pu{qrnakZiX3j}Cbb>F2`4;X zcV0$JQ|DhTozl3LxET$3uCm(=KOHNr}p38 zDym*cm?sh+w0$=pmkv^E4?4i|8nZyhs+eQ7{;vBB#0Kh3S9cBZrp%dOMOa z6|11mdpUJjGfuvPKHZoQmRV0tIC`JYKQMVE!q(4nFmA=Y z|44%s!kRdvPkqrt*5T&8HdrI&xG+WPgqcKiCNZuYsE;%!cXm-(Y*t&JZIMDbxm zZO>mY=BG=-3 z5h>e6N^0x@Zh2D~E*m{9zuz9;6UtNU6lqsmcT+wci^PO=U3Blz9YId;p62&(|MnP~ z3Y(O7MlJ{0E-b%{Sv}?@A-OlbW;eWn zAmC(4Bd)@igh#_!Yum*J$#4hg-mVhLO1@UeO;O^Fg31?zQ@i6A5!l!ar8e+gN!b`} zG_zf_#vo;HHUMu}Snj3jvRzqYW(G922XN%iCm>=E))=f3TqjB_5Fr?(=ZI74npho1!p41bT>jHxDt5Pgm;e zu+fupksFT-@H(j}AnD2|*pSAgd;(22za^?INGP)FpK{Sg4=qi~YjY6TyhoycWL^pe zd2<&h>(FkYMhGTddB=pjZc^@2;uNxO80k_<4>FyWud%V+?7gd@rc(j(9pbgH+zAVbT3BA&2G-U2zC4!T?7(nh>WB>() zyxN&lKz9HjpR+R~Yv>O4k*wN;BCTkd+%8v+^JCQ_TFM_RKm9&B6$6<%o>fZ~Xpy9asK?9pNh-9F5{yKI`_&89S#ZvX!(r{oPF)^G@>s>B18 z0+m4Z7m*t8uSWHc8iHx=X;`;@3vV9ka77d+aFw)_xPTQh&uU=Es}|D850wNpsc*V& z=u7}M!-2pv_TtqLG7degZGASDNi|iImfh07q_opuq8s4>E99qRJ~uSY$;5hizjp3( zzku@vbf=3SwTpblR|X2)V}Je0%1`#sK)KkVwNfZC@7c^3rdq-dwY*z1C#(CkzW>MV%iX#Mz#(QSJ9)QH_ywD#fo@v2=4e3Bz{&+RUJQT;B06lr7aftEUs{0ncF(wbu zbN4~SGsHQ|qV$zAQ*z3VV8%Cs(nKx#VyxiN6JPD~_8vS2q750=e27sNemU`%Be+%5 z#S*j59HJYKq0@$J)`QY0h4!w`BI4VPC_jPkyFH9(2}bpJ@%HGpAzA6ZGHnFAbfD3p zNPk>h1zoBjUmhbcDA&{0FpGmvTanv5czXbtC;>k-)YQ<&Qh2ie)tiwHbg2n>X5>Oq zUL^-0HX*|WNEgl0V9i}cd5>Ws=s3ZmHox|LJ)T)i$Wo6xxK{A#zzKj=0K-&_S{#*! zzpsy@*cgCyH;zWelT>ORIH&K>lA4lDal+Ia00{H14fXot=KM0pWWz~4NQ*7&e+n!& z5@p-c4WKjx`$_1&6T!OR=B^ACQnTyg-D}q*WGl?l`Dg$s0%CbFm{EklRB*$8*Ysxl z#tG6aWhuuPdm3H3U=@i?K&e_qxKQO%FyWNhm~McehySMy4S+)r6)G_Dci9UtU=uP8 z$@pB=0i1hR{3-o%GMEC1NmOI5i55bV!e7k@~3fy*iv)8u95Gek~W%LHgr|w>ZFT?s! znxCOfQC@_&qP&hrTlf}QAIGC1b@5G0%B@BDhbX4{uz61fcLRI z$CE1glzF6&kEfir?N#%poF@9IEa@A;*<9;SzdgAWiScpO1w-aw-V~iGIuLW4wgTtv z;x^HMyTb=2K*ZH=ML-id2#`>7PVAc3?2tRx6tS-fPkteG)q@&YRQ+`a>bUxN=@zOp zr^dpFZ#J=C$I7K$y~3OIvAXdjpKE zQN4eL+GIv{u!)lQvdOX+Ls(`N?Ok?Ey h+t>)qmFDMWx7|kdMKA4jjRMA75W$P++2&5p{V&4&MsENB literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw_get into arrow.svg b/static/icons/UI/cw_get into arrow.svg new file mode 100644 index 00000000..d750578b --- /dev/null +++ b/static/icons/UI/cw_get into arrow.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw_history.png b/static/icons/UI/cw_history.png new file mode 100644 index 0000000000000000000000000000000000000000..6d1428c41e69b25c036856a8811c00466d21daf9 GIT binary patch literal 5718 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 literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw_history.svg b/static/icons/UI/cw_history.svg new file mode 100644 index 00000000..cae93c86 --- /dev/null +++ b/static/icons/UI/cw_history.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw_inactive circle.png b/static/icons/UI/cw_inactive circle.png new file mode 100644 index 0000000000000000000000000000000000000000..107c95eee8ead2c59266f22e006e3ca8673cf47a GIT binary patch literal 3700 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 literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw_inactive circle.svg b/static/icons/UI/cw_inactive circle.svg new file mode 100644 index 00000000..1e167d43 --- /dev/null +++ b/static/icons/UI/cw_inactive circle.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw_menu hamburger.png b/static/icons/UI/cw_menu hamburger.png new file mode 100644 index 0000000000000000000000000000000000000000..721e701d2ff5c893ffa817ab9a8c2a943b4894e0 GIT binary patch literal 1155 zcmeAS@N?(olHy`uVBq!ia0y~yVAKI&4mO}jWo=(6km4-xh%9Dc;1&X5#!GkW{xC4G zn0mT6hE&XXdu`*&!vQ=Ffj=kTy1it(dVh8PWY&A~3VRcw \ No newline at end of file diff --git a/static/icons/UI/cw_moisture.png b/static/icons/UI/cw_moisture.png new file mode 100644 index 0000000000000000000000000000000000000000..a10a136440a7e4650782256fb18d97390d047260 GIT binary patch literal 6932 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 literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw_moisture.svg b/static/icons/UI/cw_moisture.svg new file mode 100644 index 00000000..542ea7c2 --- /dev/null +++ b/static/icons/UI/cw_moisture.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw_options.png b/static/icons/UI/cw_options.png new file mode 100644 index 0000000000000000000000000000000000000000..03bdb867920b88217c1bc15bb9cf749cadba2de2 GIT binary patch literal 2674 zcmeHJ`8V6?8jn^RTj($y#!}_BoYr>D6^u3v%GioAMeOu+Lv7Vm#MY?_I+nUYOk-*9 zl!QdWNXZRJCZ_d0X>21WB9;ajqe&=gsfHvs{o(!%_x>iNx`v;iF||;92m91UQ}6HC1JCi^)4$Hi>T;m^#!G=H@CTrXR*(fY)-`__*?|H0~L#p27k zH6wCwLGb6L_S(+3RRt`{qb@uD>wOF!YrUnV<)h@!KRZBY_J6#o9bg6jMvr~us@4}L ze0%PjJUI69g#BrBvWBy!ZpB}v|M4^q5z(z(IWSMV_BBD<&D~Y?t%`Keg(+KV;eS1sW5n2v7|vxMLhx;?wfpXPB;!=nZ=BoQcU3a)g=ov%c#4!cyFj~l zl2qn{5QLTyLkXBN;O>)Tr*eL_>)ceQnii?cWXA`QSe~t}*T+0Y=LKIZa7~(1pBhqv z%ZMKzOg$;s&LMk{zb7c0)N85zfl#}m_yV{qR~3nPO^p*` zc}j5ac|^Qu`fDS*du32EAZb|sAVja{*D0luw*0wI=|4zlEJOh_m|CQ@>JzQrAG5ks z#!n^%741GsIO*cvX;V@qbM}B&*T^;y`mZYEQur48Nqvy@{eoHNZhu>TMjcUr8kLIF z6cS2869y{2V|Rf|MH8;n>mIa^_A3~&N2llQttS3J)5y+gN!in4Q>1X87OJe<(fD>W zZkT@bOf$aE_Q^q|pt_44hI(Y!2(jMKmB?R3P9MJ+sXZ8DBMX#K{tgVbZ47_-rI zZ>G^}$wR;S%Gu;3WNJK?cc^2xh-p-9QLo1ylFjQC|u=R^$8FY3nAh4ALaM&n;QAx7KHFxE-W( zb15q)qeegAnBGPhVxRF3V{WHo>y%5A8Drxxw}=G?7(=V4G*&;#3GA#Q4)7sui2Zrj z3m-^oF?0YEiGv+9ZVt<%Fca5O5CtD>pF2?WnyK5vFf!C0&f#sw*~yt*+!JJtWnf<} zMVO3m{dX+NKDtkIEzRM?!WzY4f-x;JOdKu7bhcYO#a8lX#c!|2<63jO!9?uQ4F_0F z;t2JHSVyR!t$h5(U&j!xo#DUC&89L2v8?)S(*M#c|rH313IQB4-l1iA($R-hSN{qW4@B zp^M}uCoh4I{wVP*Lah7RC%L+Ns@pE(thscK&w+{@fjcJ zP_lzL4}~!${&VNt61GaVMJT?=stz-tNWHma$ExUwf(vs~O^E{Mb*Z6nWqZJNynhEa zE<@S>U0w!N8gh2EXGFuoO`bH91*E?az(Z^snQHBt9+ZDpkk@;@tu}Q%YpI0|&?zG< z-HN1?g{bH_K$rF4a+orQf{~KxvmPyoBFC1qVk`vWvI#!D>maR=;7Zq-9`RY4 z?F?Ut1a{um+0NWWa0Rf-gpC*BG`cR|AIqL40D3jjz(RvcfnP#G^9yCeWBi@;5Q9@l z^r0UkV7@Z0ttg5$mk$T_ti-6u+FAsRoB)>f(|!N@m7svfsXi^XEg(8%R~B&qO~k2~ z+@@lDmbri{&rJjnwu#|+Ht=se-6D?tWe@&;9g$vpy$UpISZRyqZmp?JBq-1?^b*-8 H`N4kxH&w7c literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw_options.svg b/static/icons/UI/cw_options.svg new file mode 100644 index 00000000..54c79763 --- /dev/null +++ b/static/icons/UI/cw_options.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw_permissions.png b/static/icons/UI/cw_permissions.png new file mode 100644 index 0000000000000000000000000000000000000000..789bcf4e436770765ffda05a36daaf8e028c9b7e GIT binary patch literal 6004 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 Pox#%dx=F1OJnlaL#R)$L literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw_permissions.svg b/static/icons/UI/cw_permissions.svg new file mode 100644 index 00000000..f9e4a5e2 --- /dev/null +++ b/static/icons/UI/cw_permissions.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw_rule.png b/static/icons/UI/cw_rule.png new file mode 100644 index 0000000000000000000000000000000000000000..ac6a1f71c48e6257963e930980291248eac07a38 GIT binary patch literal 6989 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 Lxo)M7GxFa6E$r8# literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw_rule.svg b/static/icons/UI/cw_rule.svg new file mode 100644 index 00000000..b5abd4d5 --- /dev/null +++ b/static/icons/UI/cw_rule.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw_rules.png b/static/icons/UI/cw_rules.png new file mode 100644 index 0000000000000000000000000000000000000000..fb1fe3398f54de0d0ee5ab964942867cc539005b GIT binary patch literal 7557 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 literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw_rules.svg b/static/icons/UI/cw_rules.svg new file mode 100644 index 00000000..7dfd3d99 --- /dev/null +++ b/static/icons/UI/cw_rules.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw_sensor status inactive.png b/static/icons/UI/cw_sensor status inactive.png new file mode 100644 index 0000000000000000000000000000000000000000..83336fef54d2dea0fcdfab39235823bf9a994b17 GIT binary patch literal 7797 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 \ No newline at end of file diff --git a/static/icons/UI/cw_settings.png b/static/icons/UI/cw_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..af7430b2acd81ad1bf7ab537f884e1a1d2a9a527 GIT binary patch literal 4874 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 literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw_settings.svg b/static/icons/UI/cw_settings.svg new file mode 100644 index 00000000..c587e3ff --- /dev/null +++ b/static/icons/UI/cw_settings.svg @@ -0,0 +1 @@ +cw \ No newline at end of file diff --git a/static/icons/UI/cw_thermometer.png b/static/icons/UI/cw_thermometer.png new file mode 100644 index 0000000000000000000000000000000000000000..25aba5d6587b5c8de7f35c1dc61f42277b27caae GIT binary patch literal 4101 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 L6}u`MRN8+4_+dC6 literal 0 HcmV?d00001 diff --git a/static/icons/UI/cw_thermometer.svg b/static/icons/UI/cw_thermometer.svg new file mode 100644 index 00000000..b24e39d7 --- /dev/null +++ b/static/icons/UI/cw_thermometer.svg @@ -0,0 +1 @@ +cw \ No newline at end of file From 91a4f728f1a51d734fd93b2b1fe5c409765c1246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Ramiro=20Zu=C3=B1iga?= Date: Tue, 23 Apr 2024 18:49:30 -0600 Subject: [PATCH 05/18] ui in place Update theme --- notes.txt | 17 ++++++ src/routes/+page.server.ts | 5 ++ src/routes/+page.svelte | 52 +++++++++++++++--- static/icons/UI/{cw-05.png => cw_active.png} | Bin static/icons/UI/{cw-05.svg => cw_active.svg} | 0 .../icons/UI/{cw_filter.png => cw_back.png} | Bin .../icons/UI/{cw_filter.svg => cw_back.svg} | 0 .../{cw_Bell 1.png => cw_filter_button.png} | Bin .../{cw_Bell 1.svg => cw_filter_button.svg} | 0 themes.json | 11 ++-- 10 files changed, 72 insertions(+), 13 deletions(-) create mode 100644 notes.txt create mode 100644 src/routes/+page.server.ts rename static/icons/UI/{cw-05.png => cw_active.png} (100%) rename static/icons/UI/{cw-05.svg => cw_active.svg} (100%) rename static/icons/UI/{cw_filter.png => cw_back.png} (100%) rename static/icons/UI/{cw_filter.svg => cw_back.svg} (100%) rename static/icons/UI/{cw_Bell 1.png => cw_filter_button.png} (100%) rename static/icons/UI/{cw_Bell 1.svg => cw_filter_button.svg} (100%) diff --git a/notes.txt b/notes.txt new file mode 100644 index 00000000..688c7fac --- /dev/null +++ b/notes.txt @@ -0,0 +1,17 @@ +Both light and dark themes are currently the same. + // , + // "dark": { + // "color-scheme": "dark", + // "primary": "#055817", + // "secondary": "#0DBF34", + // "accent": "#8EF4FF", + // "neutral": "#FFFEF4", + // "info": "#7a95ff", + // "success": "#62ef98", + // "warning": "#f9ffa3", + // "danger": "#ff8f8f", + // "surface-100": "#242327", + // "surface-200": "#191e24", + // "surface-300": "#15191e" + // } +This used to be the dark theme \ No newline at end of file diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts new file mode 100644 index 00000000..8fa72eb0 --- /dev/null +++ b/src/routes/+page.server.ts @@ -0,0 +1,5 @@ +import type { PageServerLoad } from './$types'; + +export const load = (async () => { + return {}; +}) satisfies PageServerLoad; \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index e2294c67..cf9092e3 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -16,8 +16,29 @@
-->
-
- +
+ +
+
+ +
+
+ + + +
+ + +

Dashboard

+ + +
+
+ +
+

Filter

+
+
@@ -28,13 +49,18 @@ />
-

Takasue's GreenHouse

+

Takasue's GreenHouse

-

Temperature

-

Humidity

+
+ +

Temperature

+
+
+ +

Humidity

-
+
@@ -42,7 +68,12 @@
-

Sensor 1

+
+
+ +
+

Sensor 1

+

25ºC

34%

@@ -93,7 +124,12 @@
-

Sensor 1

+
+
+ +
+

Sensor 1

+

25ºC

34%

diff --git a/static/icons/UI/cw-05.png b/static/icons/UI/cw_active.png similarity index 100% rename from static/icons/UI/cw-05.png rename to static/icons/UI/cw_active.png diff --git a/static/icons/UI/cw-05.svg b/static/icons/UI/cw_active.svg similarity index 100% rename from static/icons/UI/cw-05.svg rename to static/icons/UI/cw_active.svg diff --git a/static/icons/UI/cw_filter.png b/static/icons/UI/cw_back.png similarity index 100% rename from static/icons/UI/cw_filter.png rename to static/icons/UI/cw_back.png diff --git a/static/icons/UI/cw_filter.svg b/static/icons/UI/cw_back.svg similarity index 100% rename from static/icons/UI/cw_filter.svg rename to static/icons/UI/cw_back.svg diff --git a/static/icons/UI/cw_Bell 1.png b/static/icons/UI/cw_filter_button.png similarity index 100% rename from static/icons/UI/cw_Bell 1.png rename to static/icons/UI/cw_filter_button.png diff --git a/static/icons/UI/cw_Bell 1.svg b/static/icons/UI/cw_filter_button.svg similarity index 100% rename from static/icons/UI/cw_Bell 1.svg rename to static/icons/UI/cw_filter_button.svg diff --git a/themes.json b/themes.json index 90321f31..a22b4c31 100644 --- a/themes.json +++ b/themes.json @@ -14,17 +14,18 @@ "surface-300": "#E5E6E6" }, "dark": { - "color-scheme": "dark", + "color-scheme": "light", "primary": "#055817", "secondary": "#0DBF34", "accent": "#8EF4FF", - "neutral": "#FFFEF4", + "neutral": "#242327", "info": "#7a95ff", "success": "#62ef98", "warning": "#f9ffa3", "danger": "#ff8f8f", - "surface-100": "#242327", - "surface-200": "#191e24", - "surface-300": "#15191e" + "surface-100": "#FFFEF4", + "surface-200": "#F2F2F2", + "surface-300": "#E5E6E6" } + } \ No newline at end of file From c76ab49fda9522b5b19f3541bf86401c098335a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Ramiro=20Zu=C3=B1iga?= Date: Tue, 23 Apr 2024 19:04:44 -0600 Subject: [PATCH 06/18] updating files to fetch data --- package.json | 74 +- pnpm-lock.yaml | 1338 ++++++++++++++++++++++++++-------- src/hooks.server.ts | 96 +-- src/routes/+layout.server.ts | 11 +- src/routes/+layout.ts | 41 +- src/routes/+page.server.ts | 18 +- svelte.config.js | 23 +- tsconfig.json | 20 +- 8 files changed, 1160 insertions(+), 461 deletions(-) diff --git a/package.json b/package.json index 677e3eb5..c6efaaf1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,8 @@ { - "name": "sveltekit-mvc", + "name": "cropwatch-userInterface", "version": "0.0.1", + "private": true, + "type": "module", "scripts": { "dev": "vite dev", "build": "vite build", @@ -8,45 +10,57 @@ "test": "npm run test:integration && npm run test:unit", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "prettier --check . && eslint .", - "format": "prettier --write .", + "lint": "prettier --plugin-search-dir . --check . && eslint .", + "format": "prettier --plugin-search-dir . --write .", "test:integration": "playwright test", "test:unit": "vitest" }, "devDependencies": { - "@fontsource/fira-mono": "^4.5.10", - "@neoconfetti/svelte": "^1.0.0", + "@event-calendar/core": "^2.6.1", + "@event-calendar/day-grid": "^2.6.1", + "@event-calendar/time-grid": "^2.6.1", + "@mdi/js": "^7.3.67", + "@octokit/rest": "^20.0.2", "@playwright/test": "^1.28.1", - "@sveltejs/adapter-auto": "^3.0.0", + "@supabase/auth-helpers-sveltekit": "^0.12.0", "@sveltejs/kit": "^2.0.0", - "@sveltejs/vite-plugin-svelte": "^3.0.0", - "@types/eslint": "^8.56.0", - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.2", + "@types/d3-scale": "^4.0.8", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", "@zerodevx/svelte-toast": "^0.9.5", - "autoprefixer": "^10.4.19", - "eslint": "^8.56.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-svelte": "^2.35.1", - "moment": "^2.30.1", - "postcss": "^8.4.38", - "prettier": "^3.1.1", - "prettier-plugin-svelte": "^3.1.2", - "svelte": "^4.2.7", - "svelte-check": "^3.6.0", + "autoprefixer": "^10.4.14", + "d3-scale": "^4.0.2", + "d3-shape": "^3.2.0", + "date-fns": "^3.3.1", + "eslint": "^8.28.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-svelte": "^2.30.0", + "highcharts": "^11.3.0", + "layerchart": "^0.31.1", + "leaflet": "^1.9.4", + "postcss": "^8.4.24", + "postcss-load-config": "^5.0.0", + "prettier": "^3.0.0", + "prettier-plugin-svelte": "^3.0.0", + "svelte": "^4.0.5", + "svelte-check": "^3.4.3", "svelte-grid": "^5.1.2", - "sveltekit-i18n": "^2.4.2", - "tailwindcss": "^3.4.3", + "svelte-i18n": "^4.0.0", + "svelte-ux": "^0.60.2", + "svelvet": "^10.0.2", + "tailwindcss": "^3.3.2", "tslib": "^2.4.1", "typescript": "^5.0.0", - "vite": "^5.0.3", - "vitest": "^1.2.0" + "vite": "^5.1.7", + "vitest": "^1.0.0" }, - "type": "module", "dependencies": { - "@supabase/ssr": "^0.3.0", - "@supabase/supabase-js": "^2.42.4", - "svelte-i18n": "^4.0.0", - "svelte-ux": "^0.62.8" + "@supabase/supabase-js": "^2.39.6", + "@sveltejs/adapter-vercel": "^5.2.0", + "dotenv": "16.4.2", + "gridjs": "^6.2.0", + "gridjs-svelte": "^2.1.1", + "moment": "^2.30.1" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 151430c8..c6f14271 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,88 +5,127 @@ settings: excludeLinksFromLockfile: false dependencies: - '@supabase/ssr': - specifier: ^0.3.0 - version: 0.3.0(@supabase/supabase-js@2.42.4) '@supabase/supabase-js': - specifier: ^2.42.4 + specifier: ^2.39.6 version: 2.42.4 - svelte-i18n: - specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.14) - svelte-ux: - specifier: ^0.62.8 - version: 0.62.8(postcss@8.4.38)(svelte@4.2.14) + '@sveltejs/adapter-vercel': + specifier: ^5.2.0 + version: 5.3.0(@sveltejs/kit@2.5.6) + dotenv: + specifier: 16.4.2 + version: 16.4.2 + gridjs: + specifier: ^6.2.0 + version: 6.2.0 + gridjs-svelte: + specifier: ^2.1.1 + version: 2.1.1(gridjs@6.2.0)(svelte@4.2.14) + moment: + specifier: ^2.30.1 + version: 2.30.1 devDependencies: - '@fontsource/fira-mono': - specifier: ^4.5.10 - version: 4.5.10 - '@neoconfetti/svelte': - specifier: ^1.0.0 - version: 1.0.0 + '@event-calendar/core': + specifier: ^2.6.1 + version: 2.6.1 + '@event-calendar/day-grid': + specifier: ^2.6.1 + version: 2.6.1 + '@event-calendar/time-grid': + specifier: ^2.6.1 + version: 2.6.1 + '@mdi/js': + specifier: ^7.3.67 + version: 7.4.47 + '@octokit/rest': + specifier: ^20.0.2 + version: 20.1.0 '@playwright/test': specifier: ^1.28.1 version: 1.43.1 - '@sveltejs/adapter-auto': - specifier: ^3.0.0 - version: 3.2.0(@sveltejs/kit@2.5.6) + '@supabase/auth-helpers-sveltekit': + specifier: ^0.12.0 + version: 0.12.0(@supabase/supabase-js@2.42.4)(@sveltejs/kit@2.5.6) '@sveltejs/kit': specifier: ^2.0.0 version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8) '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.0 + specifier: ^3.0.2 version: 3.1.0(svelte@4.2.14)(vite@5.2.8) - '@types/eslint': - specifier: ^8.56.0 - version: 8.56.9 + '@types/d3-scale': + specifier: ^4.0.8 + version: 4.0.8 '@typescript-eslint/eslint-plugin': - specifier: ^7.0.0 - version: 7.7.0(@typescript-eslint/parser@7.7.0)(eslint@8.57.0)(typescript@5.4.5) + specifier: ^6.0.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: ^7.0.0 - version: 7.7.0(eslint@8.57.0)(typescript@5.4.5) + specifier: ^6.0.0 + version: 6.21.0(eslint@8.57.0)(typescript@5.4.5) '@zerodevx/svelte-toast': specifier: ^0.9.5 version: 0.9.5(svelte@4.2.14) autoprefixer: - specifier: ^10.4.19 + specifier: ^10.4.14 version: 10.4.19(postcss@8.4.38) + d3-scale: + specifier: ^4.0.2 + version: 4.0.2 + d3-shape: + specifier: ^3.2.0 + version: 3.2.0 + date-fns: + specifier: ^3.3.1 + version: 3.6.0 eslint: - specifier: ^8.56.0 + specifier: ^8.28.0 version: 8.57.0 eslint-config-prettier: - specifier: ^9.1.0 + specifier: ^9.0.0 version: 9.1.0(eslint@8.57.0) eslint-plugin-svelte: - specifier: ^2.35.1 + specifier: ^2.30.0 version: 2.37.0(eslint@8.57.0)(svelte@4.2.14) - moment: - specifier: ^2.30.1 - version: 2.30.1 + highcharts: + specifier: ^11.3.0 + version: 11.4.1 + layerchart: + specifier: ^0.31.1 + version: 0.31.2(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5)(vite@5.2.8) + leaflet: + specifier: ^1.9.4 + version: 1.9.4 postcss: - specifier: ^8.4.38 + specifier: ^8.4.24 version: 8.4.38 + postcss-load-config: + specifier: ^5.0.0 + version: 5.0.3(postcss@8.4.38) prettier: - specifier: ^3.1.1 + specifier: ^3.0.0 version: 3.2.5 prettier-plugin-svelte: - specifier: ^3.1.2 + specifier: ^3.0.0 version: 3.2.3(prettier@3.2.5)(svelte@4.2.14) svelte: - specifier: ^4.2.7 + specifier: ^4.0.5 version: 4.2.14 svelte-check: - specifier: ^3.6.0 - version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) + specifier: ^3.4.3 + version: 3.6.9(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14) svelte-grid: specifier: ^5.1.2 version: 5.1.2 - sveltekit-i18n: - specifier: ^2.4.2 - version: 2.4.2(svelte@4.2.14) + svelte-i18n: + specifier: ^4.0.0 + version: 4.0.0(svelte@4.2.14) + svelte-ux: + specifier: ^0.60.2 + version: 0.60.6(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14) + svelvet: + specifier: ^10.0.2 + version: 10.0.2(svelte@4.2.14) tailwindcss: - specifier: ^3.4.3 + specifier: ^3.3.2 version: 3.4.3 tslib: specifier: ^2.4.1 @@ -95,10 +134,10 @@ devDependencies: specifier: ^5.0.0 version: 5.4.5 vite: - specifier: ^5.0.3 + specifier: ^5.1.7 version: 5.2.8 vitest: - specifier: ^1.2.0 + specifier: ^1.0.0 version: 1.5.0 packages: @@ -125,7 +164,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 - dev: false + dev: true /@esbuild/aix-ppc64@0.19.12: resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} @@ -133,7 +172,7 @@ packages: cpu: [ppc64] os: [aix] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/aix-ppc64@0.20.2: @@ -142,7 +181,6 @@ packages: cpu: [ppc64] os: [aix] requiresBuild: true - dev: true optional: true /@esbuild/android-arm64@0.19.12: @@ -151,7 +189,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/android-arm64@0.20.2: @@ -160,7 +198,6 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/android-arm@0.19.12: @@ -169,7 +206,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/android-arm@0.20.2: @@ -178,7 +215,6 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/android-x64@0.19.12: @@ -187,7 +223,7 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/android-x64@0.20.2: @@ -196,7 +232,6 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/darwin-arm64@0.19.12: @@ -205,7 +240,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/darwin-arm64@0.20.2: @@ -214,7 +249,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true optional: true /@esbuild/darwin-x64@0.19.12: @@ -223,7 +257,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/darwin-x64@0.20.2: @@ -232,7 +266,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true /@esbuild/freebsd-arm64@0.19.12: @@ -241,7 +274,7 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/freebsd-arm64@0.20.2: @@ -250,7 +283,6 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true optional: true /@esbuild/freebsd-x64@0.19.12: @@ -259,7 +291,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/freebsd-x64@0.20.2: @@ -268,7 +300,6 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: true optional: true /@esbuild/linux-arm64@0.19.12: @@ -277,7 +308,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/linux-arm64@0.20.2: @@ -286,7 +317,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-arm@0.19.12: @@ -295,7 +325,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/linux-arm@0.20.2: @@ -304,7 +334,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-ia32@0.19.12: @@ -313,7 +342,7 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/linux-ia32@0.20.2: @@ -322,7 +351,6 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-loong64@0.19.12: @@ -331,7 +359,7 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/linux-loong64@0.20.2: @@ -340,7 +368,6 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-mips64el@0.19.12: @@ -349,7 +376,7 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/linux-mips64el@0.20.2: @@ -358,7 +385,6 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-ppc64@0.19.12: @@ -367,7 +393,7 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/linux-ppc64@0.20.2: @@ -376,7 +402,6 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-riscv64@0.19.12: @@ -385,7 +410,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/linux-riscv64@0.20.2: @@ -394,7 +419,6 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-s390x@0.19.12: @@ -403,7 +427,7 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/linux-s390x@0.20.2: @@ -412,7 +436,6 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-x64@0.19.12: @@ -421,7 +444,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/linux-x64@0.20.2: @@ -430,7 +453,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/netbsd-x64@0.19.12: @@ -439,7 +461,7 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/netbsd-x64@0.20.2: @@ -448,7 +470,6 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: true optional: true /@esbuild/openbsd-x64@0.19.12: @@ -457,7 +478,7 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/openbsd-x64@0.20.2: @@ -466,7 +487,6 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: true optional: true /@esbuild/sunos-x64@0.19.12: @@ -475,7 +495,7 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/sunos-x64@0.20.2: @@ -484,7 +504,6 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: true optional: true /@esbuild/win32-arm64@0.19.12: @@ -493,7 +512,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/win32-arm64@0.20.2: @@ -502,7 +521,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true optional: true /@esbuild/win32-ia32@0.19.12: @@ -511,7 +529,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/win32-ia32@0.20.2: @@ -520,7 +538,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: true optional: true /@esbuild/win32-x64@0.19.12: @@ -529,7 +546,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: false + dev: true optional: true /@esbuild/win32-x64@0.20.2: @@ -538,7 +555,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): @@ -578,25 +594,41 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@event-calendar/core@2.6.1: + resolution: {integrity: sha512-3dxMnmFfjEzeyNFhm0PS04/Js3LqqQC6HzqY6XtypxC2wLFhxrK4NqX4cq8ZKtIrTJu6EFFB3DZ8GamW28Pl7g==} + dependencies: + svelte: 4.2.14 + dev: true + + /@event-calendar/day-grid@2.6.1: + resolution: {integrity: sha512-wYzPRauhJRyCYNfh00vLdYdinE9DhWE5DYSh8drk8z1dVdjrunERRvcaMASi+Q6gwn9/i7U4yTORBnFeSktqrQ==} + dependencies: + '@event-calendar/core': 2.6.1 + svelte: 4.2.14 + dev: true + + /@event-calendar/time-grid@2.6.1: + resolution: {integrity: sha512-YSy2sJlpu7ZR7l+/c4DO/LpyZ+1+i357mXwth/i3gBew+bNQvWdMpiaYX05gNR5DokbXx3ZNYcbnXFPLVVvBDw==} + dependencies: + '@event-calendar/core': 2.6.1 + svelte: 4.2.14 + dev: true + /@floating-ui/core@1.6.0: resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} dependencies: '@floating-ui/utils': 0.2.1 - dev: false + dev: true /@floating-ui/dom@1.6.3: resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} dependencies: '@floating-ui/core': 1.6.0 '@floating-ui/utils': 0.2.1 - dev: false + dev: true /@floating-ui/utils@0.2.1: resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} - dev: false - - /@fontsource/fira-mono@4.5.10: - resolution: {integrity: sha512-bxUnRP8xptGRo8YXeY073DSpfK74XpSb0ZyRNpHV9WvLnJ7TwPOjZll8hTMin7zLC6iOp59pDZ8EQDj1gzgAQQ==} dev: true /@formatjs/ecma402-abstract@1.18.2: @@ -604,13 +636,13 @@ packages: dependencies: '@formatjs/intl-localematcher': 0.5.4 tslib: 2.6.2 - dev: false + dev: true /@formatjs/fast-memoize@2.2.0: resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} dependencies: tslib: 2.6.2 - dev: false + dev: true /@formatjs/icu-messageformat-parser@2.7.6: resolution: {integrity: sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==} @@ -618,26 +650,26 @@ packages: '@formatjs/ecma402-abstract': 1.18.2 '@formatjs/icu-skeleton-parser': 1.8.0 tslib: 2.6.2 - dev: false + dev: true /@formatjs/icu-skeleton-parser@1.8.0: resolution: {integrity: sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==} dependencies: '@formatjs/ecma402-abstract': 1.18.2 tslib: 2.6.2 - dev: false + dev: true /@formatjs/intl-localematcher@0.5.4: resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} dependencies: tslib: 2.6.2 - dev: false + dev: true /@fortawesome/fontawesome-common-types@6.5.2: resolution: {integrity: sha512-gBxPg3aVO6J0kpfHNILc+NMhXnqHumFxOmjYCFfOiLZfwhnnfhtsdA2hfJlDnj+8PjAs6kKQPenOTKj3Rf7zHw==} engines: {node: '>=6'} requiresBuild: true - dev: false + dev: true /@humanwhocodes/config-array@0.11.14: resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} @@ -703,12 +735,26 @@ packages: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - /@mdi/js@7.4.47: - resolution: {integrity: sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==} + /@mapbox/node-pre-gyp@1.0.11: + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true + dependencies: + detect-libc: 2.0.3 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.6.0 + tar: 6.2.1 + transitivePeerDependencies: + - encoding + - supports-color dev: false - /@neoconfetti/svelte@1.0.0: - resolution: {integrity: sha512-SmksyaJAdSlMa9cTidVSIqYo1qti+WTsviNDwgjNVm+KQ3DRP2Df9umDIzC4vCcpEYY+chQe0i2IKnLw03AT8Q==} + /@mdi/js@7.4.47: + resolution: {integrity: sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==} dev: true /@nodelib/fs.scandir@2.1.5: @@ -717,10 +763,12 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 + dev: true /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} + dev: true /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -728,6 +776,120 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + dev: true + + /@octokit/auth-token@4.0.0: + resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} + engines: {node: '>= 18'} + dev: true + + /@octokit/core@5.2.0: + resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==} + engines: {node: '>= 18'} + dependencies: + '@octokit/auth-token': 4.0.0 + '@octokit/graphql': 7.1.0 + '@octokit/request': 8.4.0 + '@octokit/request-error': 5.1.0 + '@octokit/types': 13.4.1 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/endpoint@9.0.5: + resolution: {integrity: sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==} + engines: {node: '>= 18'} + dependencies: + '@octokit/types': 13.4.1 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/graphql@7.1.0: + resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==} + engines: {node: '>= 18'} + dependencies: + '@octokit/request': 8.4.0 + '@octokit/types': 13.4.1 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/openapi-types@20.0.0: + resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==} + dev: true + + /@octokit/openapi-types@22.1.0: + resolution: {integrity: sha512-pGUdSP+eEPfZiQHNkZI0U01HLipxncisdJQB4G//OAmfeO8sqTQ9KRa0KF03TUPCziNsoXUrTg4B2Q1EX++T0Q==} + dev: true + + /@octokit/plugin-paginate-rest@9.2.1(@octokit/core@5.2.0): + resolution: {integrity: sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' + dependencies: + '@octokit/core': 5.2.0 + '@octokit/types': 12.6.0 + dev: true + + /@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.0): + resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' + dependencies: + '@octokit/core': 5.2.0 + dev: true + + /@octokit/plugin-rest-endpoint-methods@10.4.1(@octokit/core@5.2.0): + resolution: {integrity: sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' + dependencies: + '@octokit/core': 5.2.0 + '@octokit/types': 12.6.0 + dev: true + + /@octokit/request-error@5.1.0: + resolution: {integrity: sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==} + engines: {node: '>= 18'} + dependencies: + '@octokit/types': 13.4.1 + deprecation: 2.3.1 + once: 1.4.0 + dev: true + + /@octokit/request@8.4.0: + resolution: {integrity: sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==} + engines: {node: '>= 18'} + dependencies: + '@octokit/endpoint': 9.0.5 + '@octokit/request-error': 5.1.0 + '@octokit/types': 13.4.1 + universal-user-agent: 6.0.1 + dev: true + + /@octokit/rest@20.1.0: + resolution: {integrity: sha512-STVO3itHQLrp80lvcYB2UIKoeil5Ctsgd2s1AM+du3HqZIR35ZH7WE9HLwUOLXH0myA0y3AGNPo8gZtcgIbw0g==} + engines: {node: '>= 18'} + dependencies: + '@octokit/core': 5.2.0 + '@octokit/plugin-paginate-rest': 9.2.1(@octokit/core@5.2.0) + '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.0) + '@octokit/plugin-rest-endpoint-methods': 10.4.1(@octokit/core@5.2.0) + dev: true + + /@octokit/types@12.6.0: + resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==} + dependencies: + '@octokit/openapi-types': 20.0.0 + dev: true + + /@octokit/types@13.4.1: + resolution: {integrity: sha512-Y73oOAzRBAUzR/iRAbGULzpNkX8vaxKCqEtg6K74Ff3w9f5apFnWtE/2nade7dMWWW3bS5Kkd6DJS4HF04xreg==} + dependencies: + '@octokit/openapi-types': 22.1.0 + dev: true /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -746,7 +908,6 @@ packages: /@polka/url@1.0.0-next.25: resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} - dev: true /@rollup/plugin-node-resolve@13.3.0(rollup@2.79.1): resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} @@ -761,7 +922,7 @@ packages: is-module: 1.0.0 resolve: 1.22.8 rollup: 2.79.1 - dev: false + dev: true /@rollup/pluginutils@3.1.0(rollup@2.79.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} @@ -773,7 +934,7 @@ packages: estree-walker: 1.0.1 picomatch: 2.3.1 rollup: 2.79.1 - dev: false + dev: true /@rollup/pluginutils@4.2.1: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} @@ -781,14 +942,12 @@ packages: dependencies: estree-walker: 2.0.2 picomatch: 2.3.1 - dev: false /@rollup/rollup-android-arm-eabi@4.14.3: resolution: {integrity: sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==} cpu: [arm] os: [android] requiresBuild: true - dev: true optional: true /@rollup/rollup-android-arm64@4.14.3: @@ -796,7 +955,6 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: true optional: true /@rollup/rollup-darwin-arm64@4.14.3: @@ -804,7 +962,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true optional: true /@rollup/rollup-darwin-x64@4.14.3: @@ -812,7 +969,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-arm-gnueabihf@4.14.3: @@ -820,7 +976,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-arm-musleabihf@4.14.3: @@ -828,7 +983,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-arm64-gnu@4.14.3: @@ -836,7 +990,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-arm64-musl@4.14.3: @@ -844,7 +997,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-powerpc64le-gnu@4.14.3: @@ -852,7 +1004,6 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-riscv64-gnu@4.14.3: @@ -860,7 +1011,6 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-s390x-gnu@4.14.3: @@ -868,7 +1018,6 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-x64-gnu@4.14.3: @@ -876,7 +1025,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-linux-x64-musl@4.14.3: @@ -884,7 +1032,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true /@rollup/rollup-win32-arm64-msvc@4.14.3: @@ -892,7 +1039,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true optional: true /@rollup/rollup-win32-ia32-msvc@4.14.3: @@ -900,7 +1046,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: true optional: true /@rollup/rollup-win32-x64-msvc@4.14.3: @@ -908,37 +1053,52 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true + /@supabase/auth-helpers-shared@0.6.3(@supabase/supabase-js@2.42.4): + resolution: {integrity: sha512-xYQRLFeFkL4ZfwC7p9VKcarshj3FB2QJMgJPydvOY7J5czJe6xSG5/wM1z63RmAzGbCkKg+dzpq61oeSyWiGBQ==} + peerDependencies: + '@supabase/supabase-js': ^2.19.0 + dependencies: + '@supabase/supabase-js': 2.42.4 + jose: 4.15.5 + dev: true + + /@supabase/auth-helpers-sveltekit@0.12.0(@supabase/supabase-js@2.42.4)(@sveltejs/kit@2.5.6): + resolution: {integrity: sha512-/gSjhtIInGriH66tWfen/3ne8TXpqCzE3nGvAWAshrm8a1JYg4MunY8PvU8YltF8M4dDYxpKf1f8IlC0oEbUkw==} + peerDependencies: + '@supabase/supabase-js': ^2.19.0 + '@sveltejs/kit': ^1.30.3 || ^2.0.0 + dependencies: + '@supabase/auth-helpers-shared': 0.6.3(@supabase/supabase-js@2.42.4) + '@supabase/supabase-js': 2.42.4 + '@sveltejs/kit': 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8) + dev: true + /@supabase/auth-js@2.63.0: resolution: {integrity: sha512-yIgcHnlgv24GxHtVGUhwGqAFDyJkPIC/xjx7HostN08A8yCy8HIfl4JEkTKyBqD1v1L05jNEJOUke4Lf4O1+Qg==} dependencies: '@supabase/node-fetch': 2.6.15 - dev: false /@supabase/functions-js@2.3.0: resolution: {integrity: sha512-GPXzSl4MXdc0P7q+TvE8XgaPdvGBeAJ0p6AN0tbKcezpkp32mpsDf58JXaWOJGyiWSVJn6z1W73eKxf6NZNaFA==} dependencies: '@supabase/node-fetch': 2.6.15 - dev: false /@supabase/node-fetch@2.6.15: resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} engines: {node: 4.x || >=6.0.0} dependencies: whatwg-url: 5.0.0 - dev: false /@supabase/postgrest-js@1.15.2: resolution: {integrity: sha512-9/7pUmXExvGuEK1yZhVYXPZnLEkDTwxgMQHXLrN5BwPZZm4iUCL1YEyep/Z2lIZah8d8M433mVAUEGsihUj5KQ==} dependencies: '@supabase/node-fetch': 2.6.15 - dev: false /@supabase/realtime-js@2.9.4: resolution: {integrity: sha512-wdq+2hZpgw0r2ldRs87d3U08Y8BrsO1bZxPNqbImpYshAEkusDz4vufR8KaqujKxqewmXS6YnUhuRVdvSEIKCA==} @@ -950,23 +1110,11 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - - /@supabase/ssr@0.3.0(@supabase/supabase-js@2.42.4): - resolution: {integrity: sha512-lcVyQ7H6eumb2FB1Wa2N+jYWMfq6CFza3KapikT0fgttMQ+QvDgpNogx9jI8bZgKds+XFSMCojxFvFb+gwdbfA==} - peerDependencies: - '@supabase/supabase-js': ^2.33.1 - dependencies: - '@supabase/supabase-js': 2.42.4 - cookie: 0.5.0 - ramda: 0.29.1 - dev: false /@supabase/storage-js@2.5.5: resolution: {integrity: sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w==} dependencies: '@supabase/node-fetch': 2.6.15 - dev: false /@supabase/supabase-js@2.42.4: resolution: {integrity: sha512-tRn3wloKnnFdmEr3O2VIaxqzKACpyJ3ymLDmeq0V5lvhkJ+B4VH+QmDrnBbJJUkO2t+IHg65j5jombZxU4yMyw==} @@ -980,16 +1128,19 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - /@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.6): - resolution: {integrity: sha512-She5nKT47kwHE18v9NMe6pbJcvULr82u0V3yZ0ej3n1laWKGgkgdEABE9/ak5iDPs93LqsBkuIo51kkwCLBjJA==} + /@sveltejs/adapter-vercel@5.3.0(@sveltejs/kit@2.5.6): + resolution: {integrity: sha512-JzTJVmAWmbyNe3pQU2l0M1ggt4FjIVnKHEQOrqW4XVxYtNGdq3znuMqFSdzsR+5LaIEFqZaLIpm82XZsZroBoQ==} peerDependencies: - '@sveltejs/kit': ^2.0.0 + '@sveltejs/kit': ^2.4.0 dependencies: '@sveltejs/kit': 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8) - import-meta-resolve: 4.0.0 - dev: true + '@vercel/nft': 0.26.4 + esbuild: 0.20.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: false /@sveltejs/kit@2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8): resolution: {integrity: sha512-AYb02Jm5MfNqJHc8zrj7ScQAFAKmTUCkpkfoi8EVaZZDdnjkvI7L2GtnTDhpiXSAZRVitZX4qm59sMS1FgL+lQ==} @@ -1016,7 +1167,6 @@ packages: svelte: 4.2.14 tiny-glob: 0.2.9 vite: 5.2.8 - dev: true /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8): resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} @@ -1032,7 +1182,6 @@ packages: vite: 5.2.8 transitivePeerDependencies: - supports-color - dev: true /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.14)(vite@5.2.8): resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} @@ -1052,34 +1201,23 @@ packages: vitefu: 0.2.5(vite@5.2.8) transitivePeerDependencies: - supports-color - dev: true - - /@sveltekit-i18n/base@1.3.7(svelte@4.2.14): - resolution: {integrity: sha512-kg1kql1/ro/lIudwFiWrv949Q07gmweln87tflUZR51MNdXXzK4fiJQv5Mw50K/CdQ5BOk/dJ0WOH2vOtBI6yw==} - peerDependencies: - svelte: '>=3.49.0' - dependencies: - svelte: 4.2.14 - dev: true - - /@sveltekit-i18n/parser-default@1.1.1: - resolution: {integrity: sha512-/gtzLlqm/sox7EoPKD56BxGZktK/syGc79EbJAPWY5KVitQD9SM0TP8yJCqDxTVPk7Lk0WJhrBGUE2Nn0f5M1w==} - dev: true /@types/cookie@0.6.0: resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - dev: true - /@types/eslint@8.56.9: - resolution: {integrity: sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==} + /@types/d3-scale@4.0.8: + resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==} dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 + '@types/d3-time': 3.0.3 + dev: true + + /@types/d3-time@3.0.3: + resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} dev: true /@types/estree@0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - dev: false + dev: true /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} @@ -1092,20 +1230,19 @@ packages: resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} dependencies: undici-types: 5.26.5 - dev: false /@types/phoenix@1.6.4: resolution: {integrity: sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA==} - dev: false /@types/pug@2.0.10: resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + dev: true /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: '@types/node': 20.12.7 - dev: false + dev: true /@types/semver@7.5.8: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -1115,25 +1252,24 @@ packages: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: '@types/node': 20.12.7 - dev: false - /@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0)(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==} - engines: {node: ^18.18.0 || >=20.0.0} + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/type-utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 eslint: 8.57.0 graphemer: 1.4.0 @@ -1146,20 +1282,20 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} - engines: {node: ^18.18.0 || >=20.0.0} + /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 eslint: 8.57.0 typescript: 5.4.5 @@ -1167,26 +1303,26 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@7.7.0: - resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} - engines: {node: ^18.18.0 || >=20.0.0} + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 dev: true - /@typescript-eslint/type-utils@7.7.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==} - engines: {node: ^18.18.0 || >=20.0.0} + /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) debug: 4.3.4 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.4.5) @@ -1195,26 +1331,26 @@ packages: - supports-color dev: true - /@typescript-eslint/types@7.7.0: - resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} - engines: {node: ^18.18.0 || >=20.0.0} + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.5): - resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} - engines: {node: ^18.18.0 || >=20.0.0} + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - minimatch: 9.0.4 + minimatch: 9.0.3 semver: 7.6.0 ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 @@ -1222,18 +1358,18 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@7.7.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==} - engines: {node: ^18.18.0 || >=20.0.0} + /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^8.56.0 + eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: @@ -1241,11 +1377,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@7.7.0: - resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} - engines: {node: ^18.18.0 || >=20.0.0} + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 dev: true @@ -1253,6 +1389,28 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true + /@vercel/nft@0.26.4: + resolution: {integrity: sha512-j4jCOOXke2t8cHZCIxu1dzKLHLcFmYzC3yqAK6MfZznOL1QIJKd0xcFsXK3zcqzU7ScsE2zWkiMMNHGMHgp+FA==} + engines: {node: '>=16'} + hasBin: true + dependencies: + '@mapbox/node-pre-gyp': 1.0.11 + '@rollup/pluginutils': 4.2.1 + acorn: 8.11.3 + acorn-import-attributes: 1.9.5(acorn@8.11.3) + async-sema: 3.1.1 + bindings: 1.5.0 + estree-walker: 2.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + node-gyp-build: 4.8.0 + resolve-from: 5.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + /@vitest/expect@1.5.0: resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} dependencies: @@ -1300,6 +1458,18 @@ packages: svelte: 4.2.14 dev: true + /abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: false + + /acorn-import-attributes@1.9.5(acorn@8.11.3): + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.11.3 + dev: false + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1318,6 +1488,15 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -1330,7 +1509,6 @@ packages: /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - dev: true /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} @@ -1366,6 +1544,18 @@ packages: picomatch: 2.3.1 dev: true + /aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: false + + /are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + dev: false + /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true @@ -1379,6 +1569,10 @@ packages: dependencies: dequal: 2.0.3 + /array-source@0.0.4: + resolution: {integrity: sha512-frNdc+zBn80vipY+GdcJkLEbMWj3xmzArYApmUGxoiV8uAu/ygcs9icPdsGdA26h0MkHUMW6EN2piIvVx+M5Mw==} + dev: true + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -1388,6 +1582,10 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true + /async-sema@3.1.1: + resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} + dev: false + /autoprefixer@10.4.19(postcss@8.4.38): resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} engines: {node: ^10 || ^12 || >=14} @@ -1412,11 +1610,21 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /before-after-hook@2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + dev: true + /binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} dev: true + /bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + dependencies: + file-uri-to-path: 1.0.0 + dev: false + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -1448,11 +1656,12 @@ packages: /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - dev: false + dev: true /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} @@ -1515,6 +1724,11 @@ packages: fsevents: 2.3.3 dev: true + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: false + /cli-color@2.0.4: resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} engines: {node: '>=0.10'} @@ -1524,12 +1738,12 @@ packages: es6-iterator: 2.0.3 memoizee: 0.4.15 timers-ext: 0.1.7 - dev: false + dev: true /clsx@2.1.0: resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} engines: {node: '>=6'} - dev: false + dev: true /code-red@1.0.4: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} @@ -1551,28 +1765,40 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true + /color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + dev: false + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} dev: true + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: true + /comment-parser@1.4.1: resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} - dev: false + dev: true /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} + /console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: false /cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} - dev: true /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} @@ -1599,31 +1825,104 @@ packages: /culori@4.0.1: resolution: {integrity: sha512-LSnjA6HuIUOlkfKVbzi2OlToZE8OjFi667JWN9qNymXVXzGDmvuP60SSgC+e92sd7B7158f7Fy3Mb6rXS5EDPw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false + dev: true + + /d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + dependencies: + internmap: 1.0.1 + dev: true /d3-array@3.2.4: resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} engines: {node: '>=12'} dependencies: internmap: 2.0.3 - dev: false + dev: true /d3-color@3.1.0: resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} engines: {node: '>=12'} - dev: false + dev: true + + /d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + dependencies: + delaunator: 5.0.1 + dev: true + + /d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + dev: true /d3-format@3.1.0: resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} engines: {node: '>=12'} - dev: false + dev: true + + /d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + dependencies: + d3-array: 3.2.4 + dev: true + + /d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + dev: true + + /d3-interpolate-path@2.3.0: + resolution: {integrity: sha512-tZYtGXxBmbgHsIc9Wms6LS5u4w6KbP8C09a4/ZYc4KLMYYqub57rRBUgpUr2CIarIrJEpdAWWxWQvofgaMpbKQ==} + dev: true /d3-interpolate@3.0.1: resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} engines: {node: '>=12'} dependencies: d3-color: 3.1.0 - dev: false + dev: true + + /d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + dev: true + + /d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + dev: true + + /d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + dev: true + + /d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + dev: true + + /d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + dev: true + + /d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + dev: true /d3-scale@4.0.2: resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} @@ -1634,21 +1933,38 @@ packages: d3-interpolate: 3.0.1 d3-time: 3.1.0 d3-time-format: 4.1.0 - dev: false + dev: true + + /d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + dependencies: + d3-path: 1.0.9 + dev: true + + /d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + dependencies: + d3-path: 3.1.0 + dev: true + + /d3-tile@1.0.0: + resolution: {integrity: sha512-79fnTKpPMPDS5xQ0xuS9ir0165NEwwkFpe/DSOmc2Gl9ldYzKKRDWogmTTE8wAJ8NA7PMapNfEcyKhI9Lxdu5Q==} + dev: true /d3-time-format@4.1.0: resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} engines: {node: '>=12'} dependencies: d3-time: 3.1.0 - dev: false + dev: true /d3-time@3.1.0: resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} engines: {node: '>=12'} dependencies: d3-array: 3.2.4 - dev: false + dev: true /d@1.0.2: resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} @@ -1656,11 +1972,11 @@ packages: dependencies: es5-ext: 0.10.64 type: 2.7.2 - dev: false + dev: true /date-fns@3.6.0: resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} - dev: false + dev: true /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -1672,7 +1988,6 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: true /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} @@ -1689,6 +2004,20 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + /delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + dependencies: + robust-predicates: 3.0.2 + dev: true + + /delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + dev: false + + /deprecation@2.3.1: + resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + dev: true + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -1696,10 +2025,15 @@ packages: /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} + dev: true + + /detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + dev: false /devalue@4.3.2: resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} - dev: true /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -1728,6 +2062,11 @@ packages: esutils: 2.0.3 dev: true + /dotenv@16.4.2: + resolution: {integrity: sha512-rZSSFxke7d9nYQ5NeMIwp5PP+f8wXgKNljpOb7KtH6SKW1cEqcXAz9VSJYVLKe7Jhup/gUYOkaeSVyK8GJ+nBg==} + engines: {node: '>=12'} + dev: false + /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true @@ -1738,7 +2077,6 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} @@ -1753,7 +2091,7 @@ packages: es6-symbol: 3.1.4 esniff: 2.0.1 next-tick: 1.1.0 - dev: false + dev: true /es6-iterator@2.0.3: resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} @@ -1761,10 +2099,11 @@ packages: d: 1.0.2 es5-ext: 0.10.64 es6-symbol: 3.1.4 - dev: false + dev: true /es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + dev: true /es6-symbol@3.1.4: resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} @@ -1772,7 +2111,7 @@ packages: dependencies: d: 1.0.2 ext: 1.7.0 - dev: false + dev: true /es6-weak-map@2.0.3: resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} @@ -1781,7 +2120,7 @@ packages: es5-ext: 0.10.64 es6-iterator: 2.0.3 es6-symbol: 3.1.4 - dev: false + dev: true /esbuild@0.19.12: resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} @@ -1812,7 +2151,7 @@ packages: '@esbuild/win32-arm64': 0.19.12 '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 - dev: false + dev: true /esbuild@0.20.2: resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} @@ -1843,7 +2182,6 @@ packages: '@esbuild/win32-arm64': 0.20.2 '@esbuild/win32-ia32': 0.20.2 '@esbuild/win32-x64': 0.20.2 - dev: true /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} @@ -1965,7 +2303,6 @@ packages: /esm-env@1.0.0: resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} - dev: true /esniff@2.0.1: resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} @@ -1975,7 +2312,7 @@ packages: es5-ext: 0.10.64 event-emitter: 0.3.5 type: 2.7.2 - dev: false + dev: true /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} @@ -2007,11 +2344,10 @@ packages: /estree-walker@1.0.1: resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} - dev: false + dev: true /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: false /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -2028,7 +2364,7 @@ packages: dependencies: d: 1.0.2 es5-ext: 0.10.64 - dev: false + dev: true /execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} @@ -2049,7 +2385,7 @@ packages: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} dependencies: type: 2.7.2 - dev: false + dev: true /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2064,6 +2400,7 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 + dev: true /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -2077,6 +2414,11 @@ packages: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 + dev: true + + /fflate@0.4.8: + resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==} + dev: true /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} @@ -2085,6 +2427,16 @@ packages: flat-cache: 3.2.0 dev: true + /file-source@0.6.1: + resolution: {integrity: sha512-1R1KneL7eTXmXfKxC10V/9NeGOdbsAXJ+lQ//fvvcHUgtaZcZDWNJNblxAoVOyV1cj45pOtUrR3vZTBwqcW8XA==} + dependencies: + stream-source: 0.3.5 + dev: true + + /file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + dev: false + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -2124,6 +2476,13 @@ packages: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} dev: true + /fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: false + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -2144,6 +2503,22 @@ packages: /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + dev: false /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} @@ -2159,6 +2534,7 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 + dev: true /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} @@ -2221,22 +2597,64 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true + /gridjs-svelte@2.1.1(gridjs@6.2.0)(svelte@4.2.14): + resolution: {integrity: sha512-tYkgdqNKSnfmAYYc8EP4axn/Xlugp7VLwAlpNkP4SBLHHYD/ejD2DJ+FMatDNqcJ1Z1kuMnJWO+VBcAOirEByw==} + peerDependencies: + gridjs: '>=5.0.0' + svelte: '>=3.30.0' + dependencies: + gridjs: 6.2.0 + svelte: 4.2.14 + dev: false + + /gridjs@6.2.0: + resolution: {integrity: sha512-EAGGfHjyEXWh12Txs6DjTGnWTo226wbowtMrLI+yNZQaJpvs0m7yDcyM7r+D4RA7rZQVj/cfmwEaRz/rlxg8LA==} + dependencies: + preact: 10.20.2 + dev: false + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: true + /has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + dev: false + /hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 + dev: true + + /highcharts@11.4.1: + resolution: {integrity: sha512-t+BjB4hba5rNheczCrpyDz8BJrqGdgECHaaXQrgbf1mRdPMPemlOfo08/kTMgZ/Kp/Xfj015atdXpUFdwUU12Q==} + dev: true + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} dev: true + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -2244,7 +2662,7 @@ packages: /immer@10.0.4: resolution: {integrity: sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw==} - dev: false + dev: true /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -2256,7 +2674,6 @@ packages: /import-meta-resolve@4.0.0: resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} - dev: true /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} @@ -2272,10 +2689,14 @@ packages: /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + /internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + dev: true + /internmap@2.0.3: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} - dev: false + dev: true /intl-messageformat@10.5.11: resolution: {integrity: sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==} @@ -2284,7 +2705,7 @@ packages: '@formatjs/fast-memoize': 2.2.0 '@formatjs/icu-messageformat-parser': 2.7.6 tslib: 2.6.2 - dev: false + dev: true /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -2298,31 +2719,33 @@ packages: engines: {node: '>=6'} dependencies: builtin-modules: 3.3.0 - dev: false + dev: true /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: hasown: 2.0.2 + dev: true /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} + dev: true /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - dev: true /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 + dev: true /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - dev: false + dev: true /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} @@ -2335,7 +2758,7 @@ packages: /is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - dev: false + dev: true /is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} @@ -2365,6 +2788,10 @@ packages: hasBin: true dev: true + /jose@4.15.5: + resolution: {integrity: sha512-jc7BFxgKPKi94uOvEmzlSWFFe2+vASyXaKUpdQKatWAESU2MWjDfFf0fdfc83CDKcA5QecabZeNLyfhe3yKNkg==} + dev: true + /js-tokens@9.0.0: resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} dev: true @@ -2401,12 +2828,74 @@ packages: /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - dev: true /known-css-properties@0.30.0: resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} dev: true + /layercake@8.1.1(svelte@4.2.14)(typescript@5.4.5): + resolution: {integrity: sha512-RszgGluHwNhBx+seQM/wyWwWGUWli4D5mIGigIQcXKsHyHnVYkd57QjTdGwjUrj7b7lgckje958wOmvP+9mYyQ==} + peerDependencies: + svelte: 3 - 4 + typescript: ^5.0.2 + dependencies: + d3-array: 3.2.4 + d3-color: 3.1.0 + d3-scale: 4.0.2 + d3-shape: 3.2.0 + svelte: 4.2.14 + typescript: 5.4.5 + dev: true + + /layerchart@0.31.2(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5)(vite@5.2.8): + resolution: {integrity: sha512-vlCYUkTPCp+2hon/K2fYF7O+kZzYys/jPa4QvCN/JIwRZGzjrspGGZUjft3UwdjWGCJA5qvXjot4HwTWjLgJYw==} + peerDependencies: + svelte: ^3.56.0 || ^4.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.14)(vite@5.2.8) + d3-array: 3.2.4 + d3-color: 3.1.0 + d3-delaunay: 6.0.4 + d3-dsv: 3.0.1 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-interpolate-path: 2.3.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 + date-fns: 3.6.0 + layercake: 8.1.1(svelte@4.2.14)(typescript@5.4.5) + lodash-es: 4.17.21 + posthog-js: 1.128.3 + shapefile: 0.6.6 + svelte: 4.2.14 + svelte-ux: 0.60.6(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14) + topojson-client: 3.1.0 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + - supports-color + - typescript + - vite + dev: true + + /leaflet@1.9.4: + resolution: {integrity: sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==} + dev: true + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -2449,7 +2938,7 @@ packages: /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - dev: false + dev: true /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -2471,13 +2960,12 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 - dev: true /lru-queue@0.1.0: resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} dependencies: es5-ext: 0.10.64 - dev: false + dev: true /magic-string@0.30.9: resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} @@ -2485,6 +2973,13 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.1 + dev: false + /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} @@ -2499,7 +2994,7 @@ packages: lru-queue: 0.1.0 next-tick: 1.1.0 timers-ext: 0.1.7 - dev: false + dev: true /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -2508,6 +3003,7 @@ packages: /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + dev: true /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -2524,12 +3020,20 @@ packages: /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + dev: true /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} @@ -2539,17 +3043,45 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: false + + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: false /minipass@7.0.4: resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} engines: {node: '>=16 || 14 >=14.17'} dev: true + /minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + dev: false + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true dependencies: minimist: 1.2.8 + dev: true + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: false /mlly@1.6.1: resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} @@ -2562,7 +3094,7 @@ packages: /moment@2.30.1: resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - dev: true + dev: false /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} @@ -2571,11 +3103,9 @@ packages: /mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} - dev: true /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -2596,12 +3126,37 @@ packages: /next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: true + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /node-gyp-build@4.8.0: + resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + hasBin: true dev: false /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} dev: true + /nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: false + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -2619,10 +3174,18 @@ packages: path-key: 4.0.0 dev: true + /npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + dev: false + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - dev: true /object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} @@ -2702,6 +3265,7 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true /path-scurry@1.10.2: resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} @@ -2711,6 +3275,13 @@ packages: minipass: 7.0.4 dev: true + /path-source@0.1.3: + resolution: {integrity: sha512-dWRHm5mIw5kw0cs3QZLNmpUWty48f5+5v9nWD2dw3Y0Hf+s01Ag8iJEWV0Sm0kocE8kK27DrIowha03e1YR+Qw==} + dependencies: + array-source: 0.0.4 + file-source: 0.6.1 + dev: true + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -2828,6 +3399,23 @@ packages: yaml: 2.4.1 dev: true + /postcss-load-config@5.0.3(postcss@8.4.38): + resolution: {integrity: sha512-90pBBI5apUVruIEdCxZic93Wm+i9fTrp7TXbgdUCH+/L+2WnfpITSpq5dFU/IPvbv7aNiMlQISpUkAm3fEcvgQ==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + dependencies: + lilconfig: 3.1.1 + postcss: 8.4.38 + yaml: 2.4.1 + dev: true + /postcss-nested@6.0.1(postcss@8.4.38): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} @@ -2876,6 +3464,16 @@ packages: picocolors: 1.0.0 source-map-js: 1.2.0 + /posthog-js@1.128.3: + resolution: {integrity: sha512-ES5FLTw/u2JTHocJZJtJibVkbk+xc4u9XTxWQPGE1ZVbUOH4lVjSXbEtI56fJvSJaaAuGSQ43kB5crJZ2gNG+g==} + dependencies: + fflate: 0.4.8 + preact: 10.20.2 + dev: true + + /preact@10.20.2: + resolution: {integrity: sha512-S1d1ernz3KQ+Y2awUxKakpfOg2CEmJmwOP+6igPx6dgr6pgDvenqYviyokWso2rhHvGtTlWWnJDa7RaPbQerTg==} + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2895,7 +3493,7 @@ packages: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true - dev: false + dev: true /prettier@3.2.5: resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} @@ -2914,16 +3512,16 @@ packages: /prism-svelte@0.5.0: resolution: {integrity: sha512-db91Bf3pRGKDPz1lAqLFSJXeW13mulUJxhycysFpfXV5MIK7RgWWK2E5aPAa71s8TCzQUXxF5JOV42/iOs6QkA==} - dev: false + dev: true /prism-themes@1.9.0: resolution: {integrity: sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==} - dev: false + dev: true /prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} - dev: false + dev: true /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} @@ -2932,10 +3530,7 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - /ramda@0.29.1: - resolution: {integrity: sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==} - dev: false + dev: true /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} @@ -2947,6 +3542,15 @@ packages: pify: 2.3.0 dev: true + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -2956,17 +3560,22 @@ packages: /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - dev: false + dev: true /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: false + /resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} - dev: false + dev: true /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} @@ -2975,22 +3584,28 @@ packages: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true /rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true dependencies: glob: 7.2.3 + dev: true /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 + + /robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} dev: true /rollup-plugin-svelte@7.2.0(rollup@2.79.1)(svelte@4.2.14): @@ -3004,7 +3619,7 @@ packages: resolve.exports: 2.0.2 rollup: 2.79.1 svelte: 4.2.14 - dev: false + dev: true /rollup@2.79.1: resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} @@ -3012,7 +3627,7 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.3 - dev: false + dev: true /rollup@4.14.3: resolution: {integrity: sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==} @@ -3038,12 +3653,16 @@ packages: '@rollup/rollup-win32-ia32-msvc': 4.14.3 '@rollup/rollup-win32-x64-msvc': 4.14.3 fsevents: 2.3.3 - dev: true /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 + dev: true + + /rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + dev: true /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} @@ -3051,6 +3670,14 @@ packages: dependencies: mri: 1.2.0 + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + /sander@0.5.1: resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} dependencies: @@ -3058,6 +3685,12 @@ packages: graceful-fs: 4.2.11 mkdirp: 0.5.6 rimraf: 2.7.1 + dev: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: false /semver@7.6.0: resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} @@ -3065,10 +3698,24 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: true + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: false /set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + + /shapefile@0.6.6: + resolution: {integrity: sha512-rLGSWeK2ufzCVx05wYd+xrWnOOdSV7xNUW5/XFgx3Bc02hBkpMlrd2F1dDII7/jhWzv0MSyBFh5uJIy9hLdfuw==} + hasBin: true + dependencies: + array-source: 0.0.4 + commander: 2.20.3 + path-source: 0.1.3 + slice-source: 0.4.1 + stream-source: 0.3.5 + text-encoding: 0.6.4 dev: true /shebang-command@2.0.0: @@ -3087,6 +3734,10 @@ packages: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: false + /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -3099,13 +3750,16 @@ packages: '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 totalist: 3.0.1 - dev: true /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: true + /slice-source@0.4.1: + resolution: {integrity: sha512-YiuPbxpCj4hD9Qs06hGAz/OZhQ0eDuALN0lRWJez0eD/RevzKqGdUx1IOMUnXgpr+sXZLq3g8ERwbAH0bCb8vg==} + dev: true + /sorcery@0.11.0: resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} hasBin: true @@ -3114,6 +3768,7 @@ packages: buffer-crc32: 0.2.13 minimist: 1.2.8 sander: 0.5.1 + dev: true /source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} @@ -3127,6 +3782,10 @@ packages: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} dev: true + /stream-source@0.3.5: + resolution: {integrity: sha512-ZuEDP9sgjiAwUVoDModftG0JtYiLUV8K4ljYD1VyUMRWtbVf92474o4kuuul43iZ8t/hRuiDAx1dIJSvirrK/g==} + dev: true + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -3134,7 +3793,6 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: true /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} @@ -3145,12 +3803,17 @@ packages: strip-ansi: 7.1.0 dev: true + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: false + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - dev: true /strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} @@ -3169,6 +3832,7 @@ packages: engines: {node: '>=8'} dependencies: min-indent: 1.0.1 + dev: true /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} @@ -3205,8 +3869,9 @@ packages: /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + dev: true - /sveld@0.19.2(postcss@8.4.38): + /sveld@0.19.2(postcss-load-config@5.0.3)(postcss@8.4.38): resolution: {integrity: sha512-690sbiEq2cyH6HINJw0f+m9s2wGFX3G8D/EHWnpShAfqTfzWoDUrrqPmul+RyzVJQ5tH5zfbJ98C+4OtR3DUAQ==} hasBin: true dependencies: @@ -3218,7 +3883,7 @@ packages: rollup: 2.79.1 rollup-plugin-svelte: 7.2.0(rollup@2.79.1)(svelte@4.2.14) svelte: 4.2.14 - svelte-preprocess: 5.1.3(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5) + svelte-preprocess: 5.1.3(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - '@babel/core' @@ -3230,9 +3895,9 @@ packages: - sass - stylus - sugarss - dev: false + dev: true - /svelte-check@3.6.9(postcss@8.4.38)(svelte@4.2.14): + /svelte-check@3.6.9(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14): resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==} hasBin: true peerDependencies: @@ -3245,7 +3910,7 @@ packages: picocolors: 1.0.0 sade: 1.8.1 svelte: 4.2.14 - svelte-preprocess: 5.1.3(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5) + svelte-preprocess: 5.1.3(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - '@babel/core' @@ -3287,7 +3952,6 @@ packages: svelte: ^3.19.0 || ^4.0.0 dependencies: svelte: 4.2.14 - dev: true /svelte-i18n@4.0.0(svelte@4.2.14): resolution: {integrity: sha512-4vivjKZADUMRIhTs38JuBNy3unbnh9AFRxWFLxq62P4NHic+/BaIZZlAsvqsCdnp7IdJf5EoSiH6TNdItcjA6g==} @@ -3304,9 +3968,9 @@ packages: sade: 1.8.1 svelte: 4.2.14 tiny-glob: 0.2.9 - dev: false + dev: true - /svelte-preprocess@5.1.3(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5): + /svelte-preprocess@5.1.3(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5): resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} engines: {node: '>= 16.0.0', pnpm: ^8.0.0} requiresBuild: true @@ -3348,13 +4012,15 @@ packages: detect-indent: 6.1.0 magic-string: 0.30.9 postcss: 8.4.38 + postcss-load-config: 5.0.3(postcss@8.4.38) sorcery: 0.11.0 strip-indent: 3.0.0 svelte: 4.2.14 typescript: 5.4.5 + dev: true - /svelte-ux@0.62.8(postcss@8.4.38)(svelte@4.2.14): - resolution: {integrity: sha512-M+FbcMtNpJVN4zhLc54Ks2ClKfTPmF3eNzoA4CuHGGog4RwJ/Xd1d/Wn4BXCxEjSZZT5SRQzws95f78S3ZDu3w==} + /svelte-ux@0.60.6(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14): + resolution: {integrity: sha512-lkfGW1rGtXqHnHBDxBlHGOgLnKr5INzPCbdc6N4TDS5ZvAz8AAuvbUvDd+kPjwuCyuCNXapXLePiHgGPf2kk4A==} peerDependencies: svelte: ^3.56.0 || ^4.0.0 dependencies: @@ -3371,7 +4037,7 @@ packages: prism-svelte: 0.5.0 prism-themes: 1.9.0 prismjs: 1.29.0 - sveld: 0.19.2(postcss@8.4.38) + sveld: 0.19.2(postcss-load-config@5.0.3)(postcss@8.4.38) svelte: 4.2.14 tailwind-merge: 2.2.2 zod: 3.22.4 @@ -3385,7 +4051,7 @@ packages: - sass - stylus - sugarss - dev: false + dev: true /svelte@4.2.14: resolution: {integrity: sha512-ry3+YlWqZpHxLy45MW4MZIxNdvB+Wl7p2nnstWKbOAewaJyNJuOtivSbRChcfIej6wFBjWqyKmf/NgK1uW2JAA==} @@ -3406,13 +4072,11 @@ packages: magic-string: 0.30.9 periscopic: 3.1.0 - /sveltekit-i18n@2.4.2(svelte@4.2.14): - resolution: {integrity: sha512-hjRWn4V4DBL8JQKJoJa3MRvn6d32Zo+rWkoSP5bsQ/XIAguPdQUZJ8LMe6Nc1rST8WEVdu9+vZI3aFdKYGR3+Q==} + /svelvet@10.0.2(svelte@4.2.14): + resolution: {integrity: sha512-CSxAyQ9xF/Qq3K0xsL/gy9u9UpC4DVFUUbq3awpQ9Dic4EGJ40qAhlcCKBBAb3Kul6hlks2bzlyBmNby8CfpDg==} peerDependencies: - svelte: '>=3.49.0' + svelte: '>=3.59.2 || ^4.0.0' dependencies: - '@sveltekit-i18n/base': 1.3.7(svelte@4.2.14) - '@sveltekit-i18n/parser-default': 1.1.1 svelte: 4.2.14 dev: true @@ -3420,7 +4084,7 @@ packages: resolution: {integrity: sha512-tWANXsnmJzgw6mQ07nE3aCDkCK4QdT3ThPMCzawoYA2Pws7vSTCvz3Vrjg61jVUGfFZPJzxEP+NimbcW+EdaDw==} dependencies: '@babel/runtime': 7.24.4 - dev: false + dev: true /tailwindcss@3.4.3: resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==} @@ -3453,6 +4117,23 @@ packages: - ts-node dev: true + /tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: false + + /text-encoding@0.6.4: + resolution: {integrity: sha512-hJnc6Qg3dWoOMkqP53F0dzRIgtmsAge09kxUIqGrEUS4qr5rWLckGYaQAVr+opBrIMRErGgy6f5aPnyPpyGRfg==} + deprecated: no longer maintained + dev: true + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -3475,7 +4156,7 @@ packages: dependencies: es5-ext: 0.10.64 next-tick: 1.1.0 - dev: false + dev: true /tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} @@ -3503,14 +4184,19 @@ packages: dependencies: is-number: 7.0.0 + /topojson-client@3.1.0: + resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==} + hasBin: true + dependencies: + commander: 2.20.3 + dev: true + /totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - dev: true /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false /ts-api-utils@1.3.0(typescript@5.4.5): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} @@ -3527,6 +4213,7 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} @@ -3547,12 +4234,13 @@ packages: /type@2.7.2: resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - dev: false + dev: true /typescript@5.4.5: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true + dev: true /ufo@1.5.3: resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} @@ -3560,7 +4248,10 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - dev: false + + /universal-user-agent@6.0.1: + resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} + dev: true /update-browserslist-db@1.0.13(browserslist@4.23.0): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} @@ -3581,7 +4272,6 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true /vite-node@1.5.0: resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} @@ -3637,7 +4327,6 @@ packages: rollup: 4.14.3 optionalDependencies: fsevents: 2.3.3 - dev: true /vitefu@0.2.5(vite@5.2.8): resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} @@ -3648,7 +4337,6 @@ packages: optional: true dependencies: vite: 5.2.8 - dev: true /vitest@1.5.0: resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} @@ -3707,14 +4395,12 @@ packages: /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: false /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -3733,6 +4419,12 @@ packages: stackback: 0.0.2 dev: true + /wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + dependencies: + string-width: 4.2.3 + dev: false + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -3765,11 +4457,9 @@ packages: optional: true utf-8-validate: optional: true - dev: false /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} @@ -3794,4 +4484,4 @@ packages: /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - dev: false + dev: true diff --git a/src/hooks.server.ts b/src/hooks.server.ts index c0a30dd4..be425eb2 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,62 +1,64 @@ -import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/public'; -import { createServerClient } from '@supabase/ssr'; -import type { Handle } from '@sveltejs/kit'; -import { sequence } from '@sveltejs/kit/hooks'; -import { locale } from 'svelte-i18n'; -import type { Database } from './database.types'; +// src/hooks.server.ts +import { type Handle, redirect, error } from '@sveltejs/kit' +import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/public' +import { createSupabaseServerClient } from '@supabase/auth-helpers-sveltekit' +import { sequence } from '@sveltejs/kit/hooks' +import { locale } from 'svelte-i18n' -const setLocale: Handle = async ({ event, resolve }) => { - const lang = event.request.headers.get('accept-language')?.split(',')[0]; - if (lang) { - locale.set(lang); - } - return resolve(event); -}; - -const handleSB: Handle = async ({ event, resolve }) => { - event.locals.supabase = createServerClient(PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY, { - cookies: { - get: (key) => event.cookies.get(key), - /** - * Note: You have to add the `path` variable to the - * set and remove method due to sveltekit's cookie API - * requiring this to be set, setting the path to '/' - * will replicate previous/standard behaviour (https://kit.svelte.dev/docs/types#public-types-cookies) - */ - set: (key, value, options) => { - event.cookies.set(key, value, { ...options, path: '/' }) - }, - remove: (key, options) => { - event.cookies.delete(key, { ...options, path: '/' }) - }, - }, +async function supabase({ event, resolve }) { + event.locals.supabase = createSupabaseServerClient({ + supabaseUrl: PUBLIC_SUPABASE_URL, + supabaseKey: PUBLIC_SUPABASE_ANON_KEY, + event, }) /** - * Unlike `supabase.auth.getSession`, which is unsafe on the server because it - * doesn't validate the JWT, this function validates the JWT by first calling - * `getUser` and aborts early if the JWT signature is invalid. - */ - event.locals.safeGetSession = async () => { - const { - data: { user }, - error, - } = await event.locals.supabase.auth.getUser() - if (error) { - return { session: null, user: null } - } - + * a little helper that is written for convenience so that instead + * of calling `const { data: { session } } = await supabase.auth.getSession()` + * you just call this `await getSession()` + */ + event.locals.getSession = async () => { const { data: { session }, } = await event.locals.supabase.auth.getSession() - return { session, user } + return session } return resolve(event, { filterSerializedResponseHeaders(name) { return name === 'content-range' }, - }); + }) } -export const handle = sequence(setLocale, handleSB); \ No newline at end of file +async function authorization({ event, resolve }) { + // protect requests to all routes that start with /protected-routes + if (event.url.pathname.startsWith('/app') && event.request.method === 'GET') { + const session = await event.locals.getSession() + if (!session) { + // the user is not signed in + throw redirect(303, '/auth/login') + } + } + + // protect POST requests to all routes that start with /protected-posts + if (event.url.pathname.startsWith('/app') && event.request.method === 'POST') { + const session = await event.locals.getSession() + if (!session) { + // the user is not signed in + throw error(400, '/auth/login') + } + } + + return resolve(event) +} + +const setLocale: Handle = async ({ event, resolve }) => { + const lang = event.request.headers.get('accept-language')?.split(',')[0]; + if (lang) { + locale.set(lang); + } + return resolve(event); +}; + +export const handle: Handle = sequence(supabase, authorization, setLocale); \ No newline at end of file diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts index 42600bf2..b6df8155 100644 --- a/src/routes/+layout.server.ts +++ b/src/routes/+layout.server.ts @@ -1,11 +1,6 @@ // src/routes/+layout.server.ts -import type { LayoutServerLoad } from './$types' - -export const load = (async ({ locals: { safeGetSession } }) => { - const { session, user } = await safeGetSession() - +export const load = async ({ locals: { getSession } }) => { return { - session, - user, + session: await getSession(), } -}) satisfies LayoutServerLoad \ No newline at end of file +} \ No newline at end of file diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts index a91eb6ac..d154c69a 100644 --- a/src/routes/+layout.ts +++ b/src/routes/+layout.ts @@ -1,40 +1,29 @@ -// src/routes/+layout.js +// src/routes/+layout.ts import { PUBLIC_SUPABASE_ANON_KEY, PUBLIC_SUPABASE_URL } from '$env/static/public' -import { combineChunks, createBrowserClient, isBrowser, parse } from '@supabase/ssr' +import { createSupabaseLoadClient } from '@supabase/auth-helpers-sveltekit' +import type { Database } from '../DatabaseDefinitions' +import { browser } from '$app/environment' import '$lib/i18n' // Import to initialize. Important :) import { locale, waitLocale } from 'svelte-i18n'; -import { browser } from '$app/environment'; export const load = async ({ fetch, data, depends }) => { - depends('supabase:auth'); + depends('supabase:auth') - if (browser) { - locale.set(window.navigator.language); - } - await waitLocale(); - - const supabase = createBrowserClient(PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY, { - global: { - fetch, - }, - cookies: { - get(key) { - if (!isBrowser()) { - return JSON.stringify(data.session) - } - - const cookie = combineChunks(key, (name) => { - const cookies = parse(document.cookie) - return cookies[name] - }) - return cookie - }, - }, + const supabase = createSupabaseLoadClient({ + supabaseUrl: PUBLIC_SUPABASE_URL, + supabaseKey: PUBLIC_SUPABASE_ANON_KEY, + event: { fetch }, + serverSession: data.session, }) const { data: { session }, } = await supabase.auth.getSession(); + if (browser) { + locale.set(window.navigator.language); + } + await waitLocale(); + return { supabase, session } } \ No newline at end of file diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index 8fa72eb0..a5d9858c 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -1,5 +1,15 @@ -import type { PageServerLoad } from './$types'; +import { redirect } from '@sveltejs/kit'; -export const load = (async () => { - return {}; -}) satisfies PageServerLoad; \ No newline at end of file +export async function load({ fetch, locals: { supabase, getSession } }) { + const session = await getSession(); + if (!session) throw redirect(304, '/auth/login'); + const user_id = session?.user.id; + + const deviceTableResponse = await fetch('/api/device-table', {method: 'GET'}); + const res = await deviceTableResponse.json(); + + console.log(res) + return { + sensors: res, + } +} \ No newline at end of file diff --git a/svelte.config.js b/svelte.config.js index 2b35fe1b..1a3f903a 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,18 +1,19 @@ -import adapter from '@sveltejs/adapter-auto'; +// import adapter from '@sveltejs/adapter-auto'; +import adapter from '@sveltejs/adapter-vercel'; import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; /** @type {import('@sveltejs/kit').Config} */ const config = { - // Consult https://kit.svelte.dev/docs/integrations#preprocessors - // for more information about preprocessors - preprocess: vitePreprocess(), + // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // for more information about preprocessors + preprocess: [vitePreprocess({})], - kit: { - // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. - // If your environment is not supported or you settled on a specific environment, switch out the adapter. - // See https://kit.svelte.dev/docs/adapters for more information about adapters. - adapter: adapter() - } + kit: { + // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. + // If your environment is not supported or you settled on a specific environment, switch out the adapter. + // See https://kit.svelte.dev/docs/adapters for more information about adapters. + adapter: adapter(), + }, }; -export default config; +export default config; \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index fc93cbd9..50f52a2f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,19 +1,17 @@ { "extends": "./.svelte-kit/tsconfig.json", "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "moduleResolution": "bundler" + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true } // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias - // except $lib which is handled by https://kit.svelte.dev/docs/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 -} + } \ No newline at end of file From 24559ca6ea79d1f8d8380295305ecec88e1601fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Ramiro=20Zu=C3=B1iga?= Date: Tue, 23 Apr 2024 19:12:48 -0600 Subject: [PATCH 07/18] add api folder --- src/routes/api/add-device/+server.ts | 62 +++++++++ src/routes/api/co2-data/+server.ts | 59 +++++++++ src/routes/api/cw-air-thvd-data/+server.ts | 57 ++++++++ src/routes/api/device-table/+server.ts | 88 +++++++++++++ src/routes/api/device/+server.ts | 0 src/routes/api/latest-data/+server.ts | 51 ++++++++ src/routes/api/rules/+server.ts | 143 +++++++++++++++++++++ src/routes/api/tmepnpk-data/+server.ts | 57 ++++++++ 8 files changed, 517 insertions(+) create mode 100644 src/routes/api/add-device/+server.ts create mode 100644 src/routes/api/co2-data/+server.ts create mode 100644 src/routes/api/cw-air-thvd-data/+server.ts create mode 100644 src/routes/api/device-table/+server.ts create mode 100644 src/routes/api/device/+server.ts create mode 100644 src/routes/api/latest-data/+server.ts create mode 100644 src/routes/api/rules/+server.ts create mode 100644 src/routes/api/tmepnpk-data/+server.ts diff --git a/src/routes/api/add-device/+server.ts b/src/routes/api/add-device/+server.ts new file mode 100644 index 00000000..4f7ec225 --- /dev/null +++ b/src/routes/api/add-device/+server.ts @@ -0,0 +1,62 @@ + + +// src/routes/api/protected-route/+server.ts +import { json, error } from '@sveltejs/kit' + +export const POST = async ({request, locals: { supabase, getSession } }) => { + const session = await getSession(); + const formData = await request.formData(); + console.log(session, formData); + if (!session) { + // the user is not signed in + throw error(401, { message: 'Unauthorized' }) + } + + //Validate Dev_eui + const cw_devices_response = await supabase.from('cw_devices').insert({ + dev_eui: formData.get('dev_eui'), + name: formData.get('name'), + type: 3,// formData.type, + upload_interval: formData.get('interval'), + lat: formData.get('lat'), + long: formData.get('long'), + }); + + let cw_device_locations_response; + if (!cw_devices_response.error) { + cw_device_locations_response = await supabase.from('cw_device_locations') + .insert({ + dev_eui: formData.get('dev_eui'), + location_id: formData.get('location_id'), + }); + } + + let cw_device_owners_resposne; + if (!cw_device_locations_response?.error) { + cw_device_owners_resposne = await supabase.from('cw_device_owners').insert({ + user_id: session.user.id, + dev_eui: formData.get('dev_eui'), + permission_level: 3, + }) + } + + + return json({ + cw_device_locations_response, + cw_device_owners_resposne, + cw_devices_response, + }) +} + + + +// import { json, type RequestEvent } from '@sveltejs/kit' + +// export async function POST(event: RequestEvent, { locals: { supabase, getSession }}) { +// const session = await getSession(); +// const form = await event.request.formData(); + +// console.log(form, session); + +// return json({a:1}) +// } \ No newline at end of file diff --git a/src/routes/api/co2-data/+server.ts b/src/routes/api/co2-data/+server.ts new file mode 100644 index 00000000..87047b64 --- /dev/null +++ b/src/routes/api/co2-data/+server.ts @@ -0,0 +1,59 @@ +import type { Session, SupabaseClient } from '@supabase/supabase-js'; +import { json, redirect, type RequestEvent } from '@sveltejs/kit' +import moment from 'moment'; + +export async function GET({ response, url, locals: { supabase, getSession } }: { response: any, locals: { supabase: SupabaseClient, getSession: () => Promise } }) { + const session = await getSession(); + if (!session) throw redirect(304, '/auth/login'); + const user_id = session?.user.id; + + let dev_eui = url.searchParams.get('dev_eui'); + let from = url.searchParams.get('from'); + let to = url.searchParams.get('to'); + + const sensors = await getAllSensorsForUser(supabase, user_id, dev_eui); + if(sensors.dev_eui == dev_eui) { + + const csvData = await getDataForSensor(supabase, 'seeed_co2_lorawan_uplinks', dev_eui, from, to); + console.log(csvData); + if (csvData) { + const csvResponse = new Response(csvData, { + headers: { + 'Content-Type': 'text/csv', + }, + }); + return csvResponse; + } + + } + + return false; +} + +async function getAllSensorsForUser(supabase: SupabaseClient, user_id: string, dev_eui: string) { + const { data, error } = await supabase.from('cw_device_owners').select('*, cw_devices(*)').eq('user_id', user_id).eq('dev_eui', dev_eui).maybeSingle(); + console.log('getAllSensorsForUser', data, error) + if (!data) { + console.log(error); + return []; + } else { + return data; + } +} + +async function getDataForSensor(supabase: SupabaseClient, data_table: string, dev_eui: string, from: Date, to: Date) { + const { data, error } = await supabase + .from(data_table) + .select('*') + .eq('dev_eui', dev_eui) + .order('created_at', { ascending: false }) + .gte('created_at', moment(from).utc().toDate().toISOString()) + .lt('created_at', moment(to).utc().toDate().toISOString()) + .csv(); + if (!data) { + console.log(error); + return []; + } else { + return data; + } +} diff --git a/src/routes/api/cw-air-thvd-data/+server.ts b/src/routes/api/cw-air-thvd-data/+server.ts new file mode 100644 index 00000000..3089c644 --- /dev/null +++ b/src/routes/api/cw-air-thvd-data/+server.ts @@ -0,0 +1,57 @@ +import type { Session, SupabaseClient } from '@supabase/supabase-js'; +import { json, redirect, type RequestEvent } from '@sveltejs/kit' +import moment from 'moment'; + +export async function GET({ response, url, locals: { supabase, getSession } }: { response: any, locals: { supabase: SupabaseClient, getSession: () => Promise } }) { + const session = await getSession(); + if (!session) throw redirect(304, '/auth/login'); + const user_id = session?.user.id; + + let dev_eui = url.searchParams.get('dev_eui'); + let from = url.searchParams.get('from'); + let to = url.searchParams.get('to'); + + const sensors = await getAllSensorsForUser(supabase, user_id, dev_eui); + if(sensors.dev_eui == dev_eui) { + + const csvData = await getDataForSensor(supabase, 'cw_air_thvd', dev_eui, from, to); + if (csvData) { + const csvResponse = new Response(csvData, { + headers: { + 'Content-Type': 'text/csv', + }, + }); + return csvResponse; + } + + } + + return false; +} + +async function getAllSensorsForUser(supabase: SupabaseClient, user_id: string, dev_eui: string) { + const { data, error } = await supabase.from('cw_device_owners').select('*, cw_devices(*)').eq('user_id', user_id).eq('dev_eui', dev_eui).maybeSingle(); + if (!data) { + console.log(error); + return []; + } else { + return data; + } +} + +async function getDataForSensor(supabase: SupabaseClient, data_table: string, dev_eui: string, from: Date, to: Date) { + const { data, error } = await supabase + .from(data_table) + .select('*') + .eq('dev_eui', dev_eui) + .order('created_at', { ascending: false }) + .gte('created_at', moment(from).utc().toDate().toISOString()) + .lt('created_at', moment(to).utc().toDate().toISOString()) + .csv(); + if (!data) { + console.log(error); + return []; + } else { + return data; + } +} diff --git a/src/routes/api/device-table/+server.ts b/src/routes/api/device-table/+server.ts new file mode 100644 index 00000000..ab1555b5 --- /dev/null +++ b/src/routes/api/device-table/+server.ts @@ -0,0 +1,88 @@ +import type { Session, SupabaseClient } from '@supabase/supabase-js'; +import { json, redirect } from '@sveltejs/kit' +import moment from 'moment'; + +export async function GET({ locals: { supabase, getSession } }: { locals: { supabase: SupabaseClient, getSession: () => Promise } }) { + const session = await getSession(); + if (!session) throw redirect(304, '/auth/login'); + const user_id = session?.user.id; + + const sensors = await getAllSensorsForUser(supabase, user_id); + // for (let i = 0; i < sensors.length; i++) { + // const data_table = sensors[i].cw_devices.cw_device_type.data_table; + // if (data_table) { + // const dev_data = await getDataForSensor(supabase, data_table, sensors[i].cw_devices.dev_eui); + // sensors[i].data = Object.assign({}, sensors[i], dev_data); + // } + // } + + // Transform the data for Grid.js + // const transformedData = sensors.map(sensor => { + // // Extracting the sensor's name + // const name = sensor.cw_devices.name; + + // // Extracting the created_at timestamp from sensor data if available, otherwise from the device type + // const lastSeen = sensor.data?.created_at ?? sensor.cw_devices.cw_device_type.created_at; + + // const devEui = sensor.cw_devices.dev_eui; + + // const Location = sensor.cw_devices?.cw_device_locations; + + // const model = sensor.cw_devices.cw_device_type.id; + + // // Extract additional sensor data, e.g., temperature, and format it + // const primaryData = sensor.data[sensor.cw_devices.cw_device_type.primary_data] ? + // `${sensor.data[sensor.cw_devices.cw_device_type.primary_data]}${sensor.cw_devices.cw_device_type.primary_data_notation}` : + // 'N/A'; + + // // Here, you can add more sensor data as needed + // // const otherSensorData = ... + + // let active = '⚪'; + // if (sensor.cw_devices.upload_interval > 0) { + // if (moment(lastSeen).add(sensor.cw_devices.upload_interval, 'minutes').isAfter(moment().utc())) { + // active = '🟢'; + // } else { + // active = '🔴'; + // } + // } + + // const url = sensor.cw_devices.cw_device_type.device_app; + + // const locationName = Location?.cw_locations?.name ?? 'N/A'; + + // return { active, name, locationName, Location, devEui, lastSeen, model, primaryData, url }; + // }); + + // return json(transformedData); + return json(sensors) +} + +async function getAllSensorsForUser(supabase: SupabaseClient, user_id: string) { + try { + const { data, error } = await supabase.from('cw_device_owners').select('*, cw_devices(*, cw_device_locations(id, cw_locations(*)), cw_device_type(*))').eq('user_id', user_id); + if (!data) { + console.error('getAllSensorsForUser', error); + return []; + } else { + return data; + } + } catch (error) { + console.error('getAllSensorsForUser', error); + return []; + } +} + +async function getDataForSensor(supabase: SupabaseClient, data_table: string, dev_eui: string) { + try { + const { data, error } = await supabase.from(data_table).select('*').eq('dev_eui', dev_eui).order('created_at', { ascending: false }).limit(1).maybeSingle(); + if (!data) { + console.error('getDataForSensor', error); + return []; + } else { + return data; + } + } catch (error) { + return []; + } +} diff --git a/src/routes/api/device/+server.ts b/src/routes/api/device/+server.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/routes/api/latest-data/+server.ts b/src/routes/api/latest-data/+server.ts new file mode 100644 index 00000000..5d32101a --- /dev/null +++ b/src/routes/api/latest-data/+server.ts @@ -0,0 +1,51 @@ +import type { Session, SupabaseClient } from '@supabase/supabase-js'; +import { json, redirect } from '@sveltejs/kit' + +export async function GET({ url, locals: { supabase, getSession } }: { response: any, locals: { supabase: SupabaseClient, getSession: () => Promise } }) { + const session = await getSession(); + if (!session) throw redirect(304, '/auth/login'); + const user_id = session?.user.id; + + let dev_eui = url.searchParams.get('dev_eui'); + let store = url.searchParams.get('store'); + + const sensors = await getAllSensorsForUser(supabase, user_id, dev_eui, store); + if(sensors.dev_eui == dev_eui) { + + return json(sensors); + + } + + return json(null); +} + +async function getAllSensorsForUser(supabase: SupabaseClient, user_id: string, dev_eui: string, store: string) { + if(store === 'cw_pulse') return []; + try { + const { data, error } = await supabase.from('cw_device_owners').select(`*, cw_devices(*, ${store}(*))`).eq('user_id', user_id).eq('dev_eui', dev_eui).maybeSingle(); + if (!data) { + console.log(error); + return []; + } else { + return data; + } + } catch (error) { + return []; + } +} + +async function getDataForSensor(supabase: SupabaseClient, data_table: string, dev_eui: string) { + const { data, error } = await supabase + .from(data_table) + .select('*') + .eq('dev_eui', dev_eui) + .order('created_at', { ascending: false }) + .limit(1) + .single(); + if (!data) { + console.log(error); + return []; + } else { + return data; + } +} diff --git a/src/routes/api/rules/+server.ts b/src/routes/api/rules/+server.ts new file mode 100644 index 00000000..1b4680dd --- /dev/null +++ b/src/routes/api/rules/+server.ts @@ -0,0 +1,143 @@ + + +// src/routes/api/protected-route/+server.ts +import type { Session, SupabaseClient } from '@supabase/supabase-js'; +import { json, error } from '@sveltejs/kit'; + +export const GET = async ({ url, locals: { supabase, getSession } }) => { + const session = await getSession(); + if (!session) { + // the user is not signed in + throw error(401, { message: 'Unauthorized' }) + } + + + let dev_eui = url.searchParams.get('dev_eui'); + + const { data, error } = await supabase.from('cw_rules') + .select('*, cw_rule_criteria(*)') + .eq('dev_eui', dev_eui); + + console.log(data, error); + + return json(data); +} + +export const POST = async ({ request, locals: { supabase, getSession } }) => { + const session = await getSession(); + if (!session) { + // the user is not signed in + throw error(401, { message: 'Unauthorized' }) + } + + const jsonData = await request.json(); + console.log('Raw JSON', jsonData); + if (jsonData.ruleGroup === null) { + return error(400, { message: 'Bad Request' }); + } + + await saveRule(jsonData.ruleGroup, supabase, session); + await insertCriteria(jsonData.ruleGroup.root, supabase); + + return json({}); +} + +export const DELETE = async ({ url, locals: { supabase, getSession } }) => { + const session = await getSession(); + if (!session) { + // the user is not signed in + throw error(401, { message: 'Unauthorized' }) + } + + let ruleId = url.searchParams.get('rule_id'); + + if (ruleId === null) { + return error(400, { message: 'Bad Request' }); + } + + const { data, error } = await supabase.from('cw_rules').delete().eq('id', ruleId); + console.log(data, error); + + return json({ data, error }, { status: 200 }); +} + +export const PUT = async ({ url, request, locals: { supabase, getSession } }) => { + const session = await getSession(); + if (!session) { + // the user is not signed in + throw error(401, { message: 'Unauthorized' }) + } + + let ruleId = url.searchParams.get('rule_id'); + const jsonData = await request.json(); + + if (jsonData === null || ruleId === null) { + return error(400, { message: 'Bad Request' }); + } + + const { data, error } = await supabase.from('cw_rules') + .update({ + is_triggered: jsonData.reset, + }) + .eq('id', ruleId) + .select(); + + return json({ data, error }, { status: (data && data.length > 0) ? 201 : 401 }); +} + + + +function insertCriteria(criteriaArray, supabase) { + // Iterate over each criteria object in the array + criteriaArray.forEach(criteria => { + // Log the current criteria details + // console.log(`ID: ${criteria.id}, Subject: ${criteria.subject}, Operator: ${criteria.operator}, Threshold: ${criteria.threshold_value}`); + saveCriteria(criteria, supabase); + // If the current criteria has children, recursively call this function on the children array + if (criteria.children && criteria.children.length > 0) { + insertCriteria(criteria.children, supabase); + } + }); +} + +async function saveRule(rule, supabase, session: Session) { + const aboutToInsert = { + profile_id: session.user.id, + dev_eui: rule.dev_eui, + name: rule.ruleName, + babylon_notifier_type: 1, + action_recipient: rule.action_recipient.join(), + is_triggered: false, + last_triggered: null, + ruleGroupId: rule.groupId, + }; + + console.log('about to insert:', aboutToInsert); + + + const { data, error } = await supabase.from('cw_rules').insert(); + if (error) { + console.log('Failed to insert rule criteria', error); + return false; + } + console.log('Rule Insert SUCCESS'); + return true; +} + +async function saveCriteria(criteria, supabase) { + console.log('criteria to save:', criteria); + const { data, error } = await supabase.from('cw_rule_criteria').insert({ + subject: criteria.subject, + operator: criteria.operator, + trigger_value: criteria.threshold_value, + reset_value: criteria.reset_value, + ruleGroupId: criteria.ruleGroupId, + parent_id: criteria.parent_id, + + }); + if (error) { + console.log('Failed to insert rule criteria', error); + return false; + } + return true; +} \ No newline at end of file diff --git a/src/routes/api/tmepnpk-data/+server.ts b/src/routes/api/tmepnpk-data/+server.ts new file mode 100644 index 00000000..17aaee2a --- /dev/null +++ b/src/routes/api/tmepnpk-data/+server.ts @@ -0,0 +1,57 @@ +import type { Session, SupabaseClient } from '@supabase/supabase-js'; +import { json, redirect, type RequestEvent } from '@sveltejs/kit' +import moment from 'moment'; + +export async function GET({ response, url, locals: { supabase, getSession } }: { response: any, locals: { supabase: SupabaseClient, getSession: () => Promise } }) { + const session = await getSession(); + if (!session) throw redirect(304, '/auth/login'); + const user_id = session?.user.id; + + let dev_eui = url.searchParams.get('dev_eui'); + let from = url.searchParams.get('from'); + let to = url.searchParams.get('to'); + + const sensors = await getAllSensorsForUser(supabase, user_id, dev_eui); + if(sensors.dev_eui == dev_eui) { + + const csvData = await getDataForSensor(supabase, 'cw_ss_tmepnpk', dev_eui, from, to); + if (csvData) { + const csvResponse = new Response(csvData, { + headers: { + 'Content-Type': 'text/csv', + }, + }); + return csvResponse; + } + + } + + return false; +} + +async function getAllSensorsForUser(supabase: SupabaseClient, user_id: string, dev_eui: string) { + const { data, error } = await supabase.from('cw_device_owners').select('*, cw_devices(*)').eq('user_id', user_id).eq('dev_eui', dev_eui).maybeSingle(); + if (!data) { + console.log(error); + return []; + } else { + return data; + } +} + +async function getDataForSensor(supabase: SupabaseClient, data_table: string, dev_eui: string, from: Date, to: Date) { + const { data, error } = await supabase + .from(data_table) + .select('*') + .eq('dev_eui', dev_eui) + .order('created_at', { ascending: false }) + .gte('created_at', moment(from).utc().toDate().toISOString()) + .lt('created_at', moment(to).utc().toDate().toISOString()) + .csv(); + if (!data) { + console.log(error); + return []; + } else { + return data; + } +} From 5a9cc31a714000f137aa3d1774b586d314275249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Ramiro=20Zu=C3=B1iga?= Date: Tue, 23 Apr 2024 19:39:57 -0600 Subject: [PATCH 08/18] fetching locations name properly and showing info in svelte component --- src/lib/components/ui/dashboardCard.svelte | 108 +++++++++++++++++++++ src/routes/+page.server.ts | 54 ++++++++--- src/routes/+page.svelte | 15 ++- 3 files changed, 164 insertions(+), 13 deletions(-) create mode 100644 src/lib/components/ui/dashboardCard.svelte diff --git a/src/lib/components/ui/dashboardCard.svelte b/src/lib/components/ui/dashboardCard.svelte new file mode 100644 index 00000000..e4b54abc --- /dev/null +++ b/src/lib/components/ui/dashboardCard.svelte @@ -0,0 +1,108 @@ + +
+
+ +
+
+

{locationName}

+
+

+
+ +

Temperature

+
+
+ +

Humidity

+
+
+ + + +
+
+
+
+ +
+

Sensor 1

+
+

25ºC

+

34%

+
+
+ +
+
+

Soil Details

+
+
+

Temperature

+

27ºC

+
+
+

Moisture

+

23%

+
+
+

pH

+

3.4

+
+
+

EC

+

7.6

+
+ + +
+
+

N

+

23%

+
+
+

P

+

3.4

+
+
+

K

+

7.6

+
+
+
+
+
+ + +
+
+
+
+ +
+

Sensor 1

+
+

25ºC

+

34%

+
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis quod culpa et, + dolores omnis, ipsum in perspiciatis porro ut nihil molestiae molestias tenetur + delectus velit! Inventore laborum rerum at id? +
+
+
+
+
+
\ No newline at end of file diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index a5d9858c..fe435dc7 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -1,15 +1,45 @@ -import { redirect } from '@sveltejs/kit'; -export async function load({ fetch, locals: { supabase, getSession } }) { - const session = await getSession(); - if (!session) throw redirect(304, '/auth/login'); - const user_id = session?.user.id; +/** @type {import('./$types').PageLoad} */ +export async function load({ params, locals: { supabase, getSession } }) { + let session = await getSession(); + let {data, error} = await supabase.from('cw_location_owners').select(`cw_locations(*)`).eq('user_id', session?.user.id) + console.log(data, error) + return { + locations: data, + weatherJSON: await getWeatherAPIData(), + }; +} - const deviceTableResponse = await fetch('/api/device-table', {method: 'GET'}); - const res = await deviceTableResponse.json(); +async function getWeatherAPIData() { + const weatherRequest = await fetch( + 'https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=32.1359004857804&lon=131.39106608149575' + ); + const weatherJSON = weatherRequest.json(); + return weatherJSON; +} - console.log(res) - return { - sensors: res, - } -} \ No newline at end of file + + + +/* +RLS: + +CREATE POLICY user_owns_location +ON public.cw_locations +FOR SELECT +USING ( + EXISTS ( + SELECT 1 + FROM public.cw_location_owners + WHERE + public.cw_location_owners.location_id = public.cw_locations.location_id + AND public.cw_location_owners.user_id = auth.uid() -- Replace `current_user_id()` with your method of obtaining the current user's ID, often `auth.uid()` + AND public.cw_location_owners.is_active = true + ) +); + + + + + +*/ \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index cf9092e3..020890b0 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,5 +1,10 @@ @@ -16,6 +21,10 @@
-->
+ +
+ {JSON.stringify(data.locations)} +
@@ -39,6 +48,10 @@

Filter

+ + {#each locations as location} + + {/each}
From 42cd0dd04c9b884b8b04e710836144fa77a4e1f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Ramiro=20Zu=C3=B1iga?= Date: Wed, 24 Apr 2024 20:26:47 -0600 Subject: [PATCH 09/18] fetch data from backend to top part of card --- src/lib/components/ui/dashboardCard.svelte | 34 ++++-- src/routes/+page.server.ts | 117 +++++++++++++++++++-- src/routes/+page.svelte | 10 +- 3 files changed, 144 insertions(+), 17 deletions(-) diff --git a/src/lib/components/ui/dashboardCard.svelte b/src/lib/components/ui/dashboardCard.svelte index e4b54abc..2c565a31 100644 --- a/src/lib/components/ui/dashboardCard.svelte +++ b/src/lib/components/ui/dashboardCard.svelte @@ -1,14 +1,31 @@
-
+
+
+
+ +

Rainfall: {rainfall}%

+

Humidity: {humidity}%

+

Windspeed: {windSpeed} km/h

+
+
+

{temperature}ºC

+

{locationName}

@@ -105,4 +122,9 @@
-
\ No newline at end of file +
+ \ No newline at end of file diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index fe435dc7..b70d3e45 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -1,24 +1,127 @@ +import type { SupabaseClient } from "@supabase/supabase-js"; +import { redirect } from "@sveltejs/kit"; + /** @type {import('./$types').PageLoad} */ export async function load({ params, locals: { supabase, getSession } }) { let session = await getSession(); + console.log(session) + // if (!session) throw redirect(304, '/auth/login'); + // const user_id = session?.user.id; + const user_id = 'e7ab491a-0d92-4d86-9a69-f73f268d7524' + let {data, error} = await supabase.from('cw_location_owners').select(`cw_locations(*)`).eq('user_id', session?.user.id) - console.log(data, error) + // console.log(data, error) + const locations = await updateLocations(data, supabase, user_id) return { - locations: data, + locations: locations, weatherJSON: await getWeatherAPIData(), }; } +async function updateLocations(locations, supabase, user_id){ + for (var location of locations){ + // const loc = await checkLocationOwner(supabase, location.location_id, user_id) + const streamed = { + sensors: load_AllSensors(supabase, location.location_id), + } + console.log("STREAMED", streamed) + const weatherJSON = await getWeatherAPIData() + console.log("WEATHER JSON", weatherJSON) + location.cw_locations.weatherJSON = weatherJSON + return locations + } +} +async function checkLocationOwner(supabase: SupabaseClient, id: number, user_id: string) { + const { data, error } = await supabase + .from('cw_locations') + .select('*, cw_location_owners(id, user_id), cw_device_locations(*, cw_devices(*, cw_ss_tmepnpk(soil_moisture, soil_temperatureC)))') + .eq('cw_location_owners.user_id', user_id) + .eq('location_id', id) + .single(); + + if (error) { + console.error(error); + throw redirect(304, '/auth/login'); + } + return data; +} + +async function load_AllSensors(supabase: SupabaseClient, location_id: number) { + const { data, error } = await supabase + .from('cw_device_locations') + .select('*, cw_devices(*, cw_ss_tmepnpk(*), cw_air_thvd(*), seeed_co2_lorawan_uplinks(*))') + .eq('location_id', location_id) + .order('created_at', { referencedTable: 'cw_devices.seeed_co2_lorawan_uplinks', ascending: false }) + .order('created_at', { referencedTable: 'cw_devices.cw_air_thvd', ascending: false }) + .order('created_at', { referencedTable: 'cw_devices.cw_ss_tmepnpk', ascending: false }) + .limit(1, { referencedTable: 'cw_devices.cw_ss_tmepnpk' }) + .limit(1, { referencedTable: 'cw_devices.seeed_co2_lorawan_uplinks' }) + .limit(1, { referencedTable: 'cw_devices.cw_air_thvd' }) + ; + return data; +} + async function getWeatherAPIData() { - const weatherRequest = await fetch( - 'https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=32.1359004857804&lon=131.39106608149575' - ); - const weatherJSON = weatherRequest.json(); - return weatherJSON; + try { + const weatherRequest = await fetch( + 'https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41¤t=temperature_2m,relative_humidity_2m,is_day,rain,cloud_cover,surface_pressure,wind_speed_10m,wind_direction_10m&hourly=temperature_2m&daily=uv_index_max' + ); + const weatherJSON = await weatherRequest.json(); + const result = convertApiResponseToResultIncludingLux(weatherJSON); + return result; + } catch (error) { + + } } +function convertApiResponseToResultIncludingLux(apiResponse) { + // Helper function to convert wind direction from degrees to cardinal directions + const degreesToDirection = deg => { + if (deg >= 337.5 || deg < 22.5) { + return 'N'; + } else if (deg >= 22.5 && deg < 67.5) { + return 'NE'; + } else if (deg >= 67.5 && deg < 112.5) { + return 'E'; + } else if (deg >= 112.5 && deg < 157.5) { + return 'SE'; + } else if (deg >= 157.5 && deg < 202.5) { + return 'S'; + } else if (deg >= 202.5 && deg < 247.5) { + return 'SW'; + } else if (deg >= 247.5 && deg < 292.5) { + return 'W'; + } else if (deg >= 292.5 && deg < 337.5) { + return 'NW'; + } else { + return 'N/A'; // In case of any unexpected value + } + }; + + // Assuming a basic conversion for cloud cover to lux as a placeholder + // Note: This is a simplistic approach and not scientifically accurate + const cloudCoverToLux = cloudCover => { + // Assuming a maximum lux of 100,000 for clear sky conditions and subtracting based on cloud cover percentage + return Math.max(0, 100000 - (cloudCover * 1000)); + }; + + // Extracting necessary data from the API response + const result = { + temperature: apiResponse.current.temperature_2m || 0, + humidity: apiResponse.current.relative_humidity_2m || 0, + lux: apiResponse.current.cloud_cover !== undefined ? cloudCoverToLux(apiResponse.current.cloud_cover) : 0, + uv: 0, // Assuming not available from the API + pressure: apiResponse.current.surface_pressure || 0, + windSpeed: apiResponse.current.wind_speed_10m || 0, + windDirection: apiResponse.current.wind_direction_10m ? degreesToDirection(apiResponse.current.wind_direction_10m) : 'N/A', + rainfall: apiResponse.current.rain || 0 + }; + + return result; +} + /* diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 020890b0..b90ea320 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -3,8 +3,9 @@ import { Card, Collapse } from 'svelte-ux'; export let data; const {locations, weatherJSON} = data; - console.log("Data from Server:", data.locations) - console.log("Data from Server:", data.weatherJSON) + + // console.log("Data from Server:", data.locations) + // console.log("Data from Server WEATHER:", weatherJSON.properties.timeseries.slice(-1)[0].data.instant) @@ -23,7 +24,8 @@ import { Card, Collapse } from 'svelte-ux';
- {JSON.stringify(data.locations)} + +
@@ -50,7 +52,7 @@ import { Card, Collapse } from 'svelte-ux';
{#each locations as location} - + {/each}
From 5f7ce57f645104b28ed4d68fd2bfdab73ce61381 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Ramiro=20Zu=C3=B1iga?= Date: Fri, 26 Apr 2024 12:05:57 -0600 Subject: [PATCH 10/18] date UI and device route --- src/lib/components/ui/Date.svelte | 20 ++ src/lib/components/ui/dashboardCard.svelte | 255 +++++++++--------- .../(api)/api/v1/device-data/+server.ts | 32 --- src/routes/(api)/api/v1/devices/+server.ts | 25 -- .../(api)/api/v1/devices/deviceEndpoints.ts | 3 - src/routes/(api)/api/v1/endpoints.ts | 5 - src/routes/+layout.svelte | 4 +- src/routes/+page.server.ts | 18 +- .../locations/[location_Id]/+page.svelte | 6 + 9 files changed, 170 insertions(+), 198 deletions(-) create mode 100644 src/lib/components/ui/Date.svelte delete mode 100644 src/routes/(api)/api/v1/device-data/+server.ts delete mode 100644 src/routes/(api)/api/v1/devices/+server.ts delete mode 100644 src/routes/(api)/api/v1/devices/deviceEndpoints.ts delete mode 100644 src/routes/(api)/api/v1/endpoints.ts create mode 100644 src/routes/locations/[location_Id]/+page.svelte diff --git a/src/lib/components/ui/Date.svelte b/src/lib/components/ui/Date.svelte new file mode 100644 index 00000000..efb23a6c --- /dev/null +++ b/src/lib/components/ui/Date.svelte @@ -0,0 +1,20 @@ + + +
+
+

{formatDate()}

+
+
\ No newline at end of file diff --git a/src/lib/components/ui/dashboardCard.svelte b/src/lib/components/ui/dashboardCard.svelte index 2c565a31..385dfd72 100644 --- a/src/lib/components/ui/dashboardCard.svelte +++ b/src/lib/components/ui/dashboardCard.svelte @@ -1,130 +1,137 @@ +
-
- -
-
- -

Rainfall: {rainfall}%

-

Humidity: {humidity}%

-

Windspeed: {windSpeed} km/h

-
-
-

{temperature}ºC

-
-
-
-

{locationName}

-
-

-
- -

Temperature

-
-
- -

Humidity

-
-
- - - -
-
-
-
- -
-

Sensor 1

-
-

25ºC

-

34%

-
-
- -
-
-

Soil Details

-
-
-

Temperature

-

27ºC

-
-
-

Moisture

-

23%

-
-
-

pH

-

3.4

-
-
-

EC

-

7.6

-
+
+ + + +
+
+ +

Rainfall: {rainfall}%

+

Humidity: {humidity}%

+

Windspeed: {windSpeed} km/h

+
+
+

+ {temperature}ºC +

+
+
+
+

{locationName}

+
+

+
+ +

Temperature

+
+
+ +

Humidity

+
+
+
+ + + +
+
+
+
+ +
+

Sensor 1

+
+

25ºC

+

34%

+
+
+ +
+
+

Soil Details

+
+
+

Temperature

+

27ºC

+
+
+

Moisture

+

23%

+
+
+

pH

+

3.4

+
+
+

EC

+

7.6

+
- -
-
-

N

-

23%

-
-
-

P

-

3.4

-
-
-

K

-

7.6

-
-
-
-
-
- - -
-
-
-
- -
-

Sensor 1

-
-

25ºC

-

34%

-
-
-
- Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis quod culpa et, - dolores omnis, ipsum in perspiciatis porro ut nihil molestiae molestias tenetur - delectus velit! Inventore laborum rerum at id? -
-
-
-
-
+ +
+
+

N

+

23%

+
+
+

P

+

3.4

+
+
+

K

+

7.6

+
+
+
+
+
+ + +
+
+
+
+ +
+

Sensor 1

+
+

25ºC

+

34%

+
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis quod culpa et, + dolores omnis, ipsum in perspiciatis porro ut nihil molestiae molestias tenetur delectus + velit! Inventore laborum rerum at id? +
+
+
+
+
+ \ No newline at end of file + .text-shadow { + text-shadow: 0px 1px 5px gray; + } + diff --git a/src/routes/(api)/api/v1/device-data/+server.ts b/src/routes/(api)/api/v1/device-data/+server.ts deleted file mode 100644 index 0a4c03cd..00000000 --- a/src/routes/(api)/api/v1/device-data/+server.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { dev } from "$app/environment"; -import { redirect, type RequestHandler } from "@sveltejs/kit"; -import moment from 'moment'; - -export const GET: RequestHandler = async ({ url, locals: { supabase, safeGetSession } }) => { - const { session } = await safeGetSession(); - if (!session) { - throw redirect(303, '/auth/unauthorized'); - } - - const query = new URLSearchParams(url.search); - const dev_eui = query.get('dev_eui'); - const from = moment.utc(query.get('from') ?? moment.utc().subtract(1, 'day').toISOString()).toISOString(); - const to = moment.utc(query.get('to') ?? new Date()).toISOString(); - const startingPage = query.get('pageNumber') || 0; - const itemsPerPage = query.get('itemsPerPage') || 10; - - if(dev_eui === null || dev_eui === undefined) { - return new Response(JSON.stringify({ error: "No device EUI provided" }), { status: 400 }); - } - - const { data, error } = await supabase - .from(query.get('deviceType')) - .select('*') - .eq('dev_eui', dev_eui) - .gte('created_at', from) - .lte('created_at', to) - .range(startingPage, itemsPerPage) - .order('created_at', { ascending: false }) - ; - return new Response(JSON.stringify(data) ?? error, { status: 200 }); -} \ No newline at end of file diff --git a/src/routes/(api)/api/v1/devices/+server.ts b/src/routes/(api)/api/v1/devices/+server.ts deleted file mode 100644 index 1f74d159..00000000 --- a/src/routes/(api)/api/v1/devices/+server.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { redirect, type RequestHandler } from "@sveltejs/kit"; - -export const GET: RequestHandler = async ({ url, locals: { supabase, safeGetSession } }) => { - const { session } = await safeGetSession(); - if (!session) { - throw redirect(303, '/auth/unauthorized'); - } - - const query = new URLSearchParams(url.search); - const startingPage = query.get('pageNumber') || 0; - const itemsPerPage = query.get('itemsPerPage') || 10; - - const { data, error } = await supabase - .from('cw_device_owners') - .select('*, cw_devices(*, cw_device_type(*), cw_device_locations(*, cw_locations(*)))') - .eq('user_id', session.user.id) - .range(+startingPage, +itemsPerPage) - ; - return new Response( - JSON.stringify(data) || - error, - { - status: 200, - }); -} \ No newline at end of file diff --git a/src/routes/(api)/api/v1/devices/deviceEndpoints.ts b/src/routes/(api)/api/v1/devices/deviceEndpoints.ts deleted file mode 100644 index 5a40a0a6..00000000 --- a/src/routes/(api)/api/v1/devices/deviceEndpoints.ts +++ /dev/null @@ -1,3 +0,0 @@ -export abstract class DeviceEndpoints { - static getDevices = '/api/v1/devices'; -} \ No newline at end of file diff --git a/src/routes/(api)/api/v1/endpoints.ts b/src/routes/(api)/api/v1/endpoints.ts deleted file mode 100644 index 37026bf0..00000000 --- a/src/routes/(api)/api/v1/endpoints.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { DeviceEndpoints } from "./devices/deviceEndpoints"; - -export abstract class Endpoints { - static getDevices = DeviceEndpoints; -} \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 29e28627..18e04260 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -56,7 +56,9 @@
- + + +
diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index b70d3e45..65009af1 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -13,24 +13,26 @@ export async function load({ params, locals: { supabase, getSession } }) { let {data, error} = await supabase.from('cw_location_owners').select(`cw_locations(*)`).eq('user_id', session?.user.id) // console.log(data, error) const locations = await updateLocations(data, supabase, user_id) + console.log("LOCATIONS\n",locations) + + return { - locations: locations, - weatherJSON: await getWeatherAPIData(), + locations: locations, + weatherJSON: await getWeatherAPIData(), + // sensor: await supabase.from('cw_ss_tmepnpk').select('*').eq('dev_eui', params.sensor_eui).order('created_at', { ascending: false }).limit(100), }; } async function updateLocations(locations, supabase, user_id){ for (var location of locations){ // const loc = await checkLocationOwner(supabase, location.location_id, user_id) - const streamed = { - sensors: load_AllSensors(supabase, location.location_id), - } - console.log("STREAMED", streamed) + const streamed = await load_AllSensors(supabase, location.location_id) + console.log("STREAMED \n", streamed) const weatherJSON = await getWeatherAPIData() - console.log("WEATHER JSON", weatherJSON) + console.log("WEATHER JSON\n", weatherJSON) location.cw_locations.weatherJSON = weatherJSON - return locations } + return locations } async function checkLocationOwner(supabase: SupabaseClient, id: number, user_id: string) { const { data, error } = await supabase diff --git a/src/routes/locations/[location_Id]/+page.svelte b/src/routes/locations/[location_Id]/+page.svelte new file mode 100644 index 00000000..950d8ce1 --- /dev/null +++ b/src/routes/locations/[location_Id]/+page.svelte @@ -0,0 +1,6 @@ + +
+ +
\ No newline at end of file From d5a1994fab3698e3db0c4919456dae080debd464 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Ramiro=20Zu=C3=B1iga?= Date: Fri, 26 Apr 2024 12:29:48 -0600 Subject: [PATCH 11/18] location page --- src/lib/components/ui/Back.svelte | 5 +++++ src/lib/components/ui/NotificationsBell.svelte | 5 +++++ src/routes/locations/[location_Id]/+page.svelte | 10 ++++++++-- 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 src/lib/components/ui/Back.svelte create mode 100644 src/lib/components/ui/NotificationsBell.svelte diff --git a/src/lib/components/ui/Back.svelte b/src/lib/components/ui/Back.svelte new file mode 100644 index 00000000..2f8e2866 --- /dev/null +++ b/src/lib/components/ui/Back.svelte @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/src/lib/components/ui/NotificationsBell.svelte b/src/lib/components/ui/NotificationsBell.svelte new file mode 100644 index 00000000..9b63d3d0 --- /dev/null +++ b/src/lib/components/ui/NotificationsBell.svelte @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/src/routes/locations/[location_Id]/+page.svelte b/src/routes/locations/[location_Id]/+page.svelte index 950d8ce1..5be65a33 100644 --- a/src/routes/locations/[location_Id]/+page.svelte +++ b/src/routes/locations/[location_Id]/+page.svelte @@ -1,6 +1,12 @@ -
+
+
+ + +
\ No newline at end of file From 534bfd315c7d281d52de14017e7fb875ff3c7697 Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Mon, 29 Apr 2024 22:27:14 +0900 Subject: [PATCH 12/18] safety checkin --- package.json | 28 +- pnpm-lock.yaml | 3937 +++++------------ src/app.d.ts | 2 +- src/hooks.server.ts | 76 +- src/lib/components/ui/dashboardCard.svelte | 128 +- src/routes/(api)/api/v1/dashboard/+server.ts | 27 +- src/routes/+layout.server.ts | 11 +- src/routes/+layout.svelte | 8 +- src/routes/+layout.ts | 41 +- src/routes/+page.server.ts | 100 +- src/routes/+page.svelte | 116 +- src/routes/api/add-device/+server.ts | 62 - src/routes/api/co2-data/+server.ts | 59 - src/routes/api/cw-air-thvd-data/+server.ts | 57 - src/routes/api/device-table/+server.ts | 88 - src/routes/api/device/+server.ts | 0 src/routes/api/latest-data/+server.ts | 51 - src/routes/api/rules/+server.ts | 143 - src/routes/api/tmepnpk-data/+server.ts | 57 - ...tive circle.png => cw_inactive_circle.png} | Bin ...tive circle.svg => cw_inactive_circle.svg} | 0 21 files changed, 1237 insertions(+), 3754 deletions(-) delete mode 100644 src/routes/api/add-device/+server.ts delete mode 100644 src/routes/api/co2-data/+server.ts delete mode 100644 src/routes/api/cw-air-thvd-data/+server.ts delete mode 100644 src/routes/api/device-table/+server.ts delete mode 100644 src/routes/api/device/+server.ts delete mode 100644 src/routes/api/latest-data/+server.ts delete mode 100644 src/routes/api/rules/+server.ts delete mode 100644 src/routes/api/tmepnpk-data/+server.ts rename static/icons/UI/{cw_inactive circle.png => cw_inactive_circle.png} (100%) rename static/icons/UI/{cw_inactive circle.svg => cw_inactive_circle.svg} (100%) diff --git a/package.json b/package.json index 1ea8ae81..8870bd8f 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,6 @@ "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", "@zerodevx/svelte-toast": "^0.9.5", -<<<<<<< HEAD "autoprefixer": "^10.4.14", "d3-scale": "^4.0.2", "d3-shape": "^3.2.0", @@ -40,38 +39,29 @@ "highcharts": "^11.3.0", "layerchart": "^0.31.1", "leaflet": "^1.9.4", - "postcss": "^8.4.24", - "postcss-load-config": "^5.0.0", - "prettier": "^3.0.0", - "prettier-plugin-svelte": "^3.0.0", - "svelte": "^4.0.5", - "svelte-check": "^3.4.3", - "svelte-grid": "^5.1.2", - "svelte-i18n": "^4.0.0", - "svelte-ux": "^0.60.2", - "svelvet": "^10.0.2", - "tailwindcss": "^3.3.2", -======= - "eslint": "^8.56.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-svelte": "^2.35.1", - "highcharts": "^11.4.1", "moment": "^2.30.1", "plotly.js-dist-min": "^2.31.1", + "postcss": "^8.4.24", + "postcss-load-config": "^5.0.0", "prettier": "^3.1.1", "prettier-plugin-svelte": "^3.1.2", "svelte": "^4.2.7", "svelte-check": "^3.6.0", + "svelte-grid": "^5.1.2", + "svelte-i18n": "^4.0.0", + "svelte-ux": "^0.60.2", "sveltekit-i18n": "^2.4.2", ->>>>>>> develop + "svelvet": "^10.0.2", + "tailwindcss": "^3.3.2", "tslib": "^2.4.1", "typescript": "^5.0.0", "vite": "^5.1.7", "vitest": "^1.0.0" }, "dependencies": { + "@supabase/ssr": "^0.3.0", "@supabase/supabase-js": "^2.39.6", - "@sveltejs/adapter-vercel": "^5.2.0", + "@sveltejs/adapter-vercel": "^5.3.0", "dotenv": "16.4.2", "gridjs": "^6.2.0", "gridjs-svelte": "^2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0119595..06423ba4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,16 +1,18 @@ -lockfileVersion: '9.0' +lockfileVersion: '6.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -<<<<<<< HEAD dependencies: + '@supabase/ssr': + specifier: ^0.3.0 + version: 0.3.0(@supabase/supabase-js@2.42.4) '@supabase/supabase-js': specifier: ^2.39.6 version: 2.42.4 '@sveltejs/adapter-vercel': - specifier: ^5.2.0 + specifier: ^5.3.0 version: 5.3.0(@sveltejs/kit@2.5.6) dotenv: specifier: 16.4.2 @@ -95,6 +97,9 @@ devDependencies: leaflet: specifier: ^1.9.4 version: 1.9.4 + plotly.js-dist-min: + specifier: ^2.31.1 + version: 2.31.1 postcss: specifier: ^8.4.24 version: 8.4.38 @@ -102,16 +107,16 @@ devDependencies: specifier: ^5.0.0 version: 5.0.3(postcss@8.4.38) prettier: - specifier: ^3.0.0 + specifier: ^3.1.1 version: 3.2.5 prettier-plugin-svelte: - specifier: ^3.0.0 + specifier: ^3.1.2 version: 3.2.3(prettier@3.2.5)(svelte@4.2.14) svelte: - specifier: ^4.0.5 + specifier: ^4.2.7 version: 4.2.14 svelte-check: - specifier: ^3.4.3 + specifier: ^3.6.0 version: 3.6.9(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14) svelte-grid: specifier: ^5.1.2 @@ -122,6 +127,9 @@ devDependencies: svelte-ux: specifier: ^0.60.2 version: 0.60.6(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14) + sveltekit-i18n: + specifier: ^2.4.2 + version: 2.4.2(svelte@4.2.14) svelvet: specifier: ^10.0.2 version: 10.0.2(svelte@4.2.14) @@ -140,118 +148,26 @@ devDependencies: vitest: specifier: ^1.0.0 version: 1.5.0 -======= -importers: - - .: - dependencies: - '@supabase/ssr': - specifier: ^0.3.0 - version: 0.3.0(@supabase/supabase-js@2.42.4) - '@supabase/supabase-js': - specifier: ^2.42.4 - version: 2.42.4 - svelte-i18n: - specifier: ^4.0.0 - version: 4.0.0(svelte@4.2.14) - devDependencies: - '@fontsource/fira-mono': - specifier: ^4.5.10 - version: 4.5.10 - '@neoconfetti/svelte': - specifier: ^1.0.0 - version: 1.0.0 - '@playwright/test': - specifier: ^1.28.1 - version: 1.43.1 - '@sveltejs/adapter-auto': - specifier: ^3.0.0 - version: 3.2.0(@sveltejs/kit@2.5.6) - '@sveltejs/kit': - specifier: ^2.0.0 - version: 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8) - '@sveltejs/vite-plugin-svelte': - specifier: ^3.0.0 - version: 3.1.0(svelte@4.2.14)(vite@5.2.8) - '@types/eslint': - specifier: ^8.56.0 - version: 8.56.9 - '@typescript-eslint/eslint-plugin': - specifier: ^7.0.0 - version: 7.7.0(@typescript-eslint/parser@7.7.0)(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/parser': - specifier: ^7.0.0 - version: 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@zerodevx/svelte-toast': - specifier: ^0.9.5 - version: 0.9.5(svelte@4.2.14) - eslint: - specifier: ^8.56.0 - version: 8.57.0 - eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) - eslint-plugin-svelte: - specifier: ^2.35.1 - version: 2.37.0(eslint@8.57.0)(svelte@4.2.14) - highcharts: - specifier: ^11.4.1 - version: 11.4.1 - moment: - specifier: ^2.30.1 - version: 2.30.1 - plotly.js-dist-min: - specifier: ^2.31.1 - version: 2.31.1 - prettier: - specifier: ^3.1.1 - version: 3.2.5 - prettier-plugin-svelte: - specifier: ^3.1.2 - version: 3.2.3(prettier@3.2.5)(svelte@4.2.14) - svelte: - specifier: ^4.2.7 - version: 4.2.14 - svelte-check: - specifier: ^3.6.0 - version: 3.6.9(postcss@8.4.38)(svelte@4.2.14) - sveltekit-i18n: - specifier: ^2.4.2 - version: 2.4.2(svelte@4.2.14) - tslib: - specifier: ^2.4.1 - version: 2.6.2 - typescript: - specifier: ^5.0.0 - version: 5.4.5 - vite: - specifier: ^5.0.3 - version: 5.2.8 - vitest: - specifier: ^1.2.0 - version: 1.5.0 ->>>>>>> develop packages: - '@aashutoshrathi/word-wrap@1.2.6': + /@aashutoshrathi/word-wrap@1.2.6: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} + dev: true -<<<<<<< HEAD /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} dev: true /@ampproject/remapping@2.3.0: -======= - '@ampproject/remapping@2.3.0': ->>>>>>> develop resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 -<<<<<<< HEAD /@babel/runtime@7.24.4: resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} engines: {node: '>=6.9.0'} @@ -260,556 +176,433 @@ packages: dev: true /@esbuild/aix-ppc64@0.19.12: -======= - '@esbuild/aix-ppc64@0.19.12': ->>>>>>> develop resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/aix-ppc64@0.20.2': + /@esbuild/aix-ppc64@0.20.2: resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/android-arm64@0.19.12': + /@esbuild/android-arm64@0.19.12: resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} cpu: [arm64] os: [android] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/android-arm64@0.20.2': + /@esbuild/android-arm64@0.20.2: resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} cpu: [arm64] os: [android] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/android-arm@0.19.12': + /@esbuild/android-arm@0.19.12: resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} cpu: [arm] os: [android] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/android-arm@0.20.2': + /@esbuild/android-arm@0.20.2: resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} cpu: [arm] os: [android] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/android-x64@0.19.12': + /@esbuild/android-x64@0.19.12: resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} cpu: [x64] os: [android] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/android-x64@0.20.2': + /@esbuild/android-x64@0.20.2: resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} cpu: [x64] os: [android] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/darwin-arm64@0.19.12': + /@esbuild/darwin-arm64@0.19.12: resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/darwin-arm64@0.20.2': + /@esbuild/darwin-arm64@0.20.2: resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/darwin-x64@0.19.12': + /@esbuild/darwin-x64@0.19.12: resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/darwin-x64@0.20.2': + /@esbuild/darwin-x64@0.20.2: resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} cpu: [x64] os: [darwin] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/freebsd-arm64@0.19.12': + /@esbuild/freebsd-arm64@0.19.12: resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/freebsd-arm64@0.20.2': + /@esbuild/freebsd-arm64@0.20.2: resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/freebsd-x64@0.19.12': + /@esbuild/freebsd-x64@0.19.12: resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/freebsd-x64@0.20.2': + /@esbuild/freebsd-x64@0.20.2: resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-arm64@0.19.12': + /@esbuild/linux-arm64@0.19.12: resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-arm64@0.20.2': + /@esbuild/linux-arm64@0.20.2: resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} cpu: [arm64] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-arm@0.19.12': + /@esbuild/linux-arm@0.19.12: resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} cpu: [arm] os: [linux] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-arm@0.20.2': + /@esbuild/linux-arm@0.20.2: resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} cpu: [arm] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-ia32@0.19.12': + /@esbuild/linux-ia32@0.19.12: resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-ia32@0.20.2': + /@esbuild/linux-ia32@0.20.2: resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} cpu: [ia32] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-loong64@0.19.12': + /@esbuild/linux-loong64@0.19.12: resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-loong64@0.20.2': + /@esbuild/linux-loong64@0.20.2: resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-mips64el@0.19.12': + /@esbuild/linux-mips64el@0.19.12: resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-mips64el@0.20.2': + /@esbuild/linux-mips64el@0.20.2: resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-ppc64@0.19.12': + /@esbuild/linux-ppc64@0.19.12: resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-ppc64@0.20.2': + /@esbuild/linux-ppc64@0.20.2: resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-riscv64@0.19.12': + /@esbuild/linux-riscv64@0.19.12: resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-riscv64@0.20.2': + /@esbuild/linux-riscv64@0.20.2: resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-s390x@0.19.12': + /@esbuild/linux-s390x@0.19.12: resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-s390x@0.20.2': + /@esbuild/linux-s390x@0.20.2: resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-x64@0.19.12': + /@esbuild/linux-x64@0.19.12: resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} cpu: [x64] os: [linux] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/linux-x64@0.20.2': + /@esbuild/linux-x64@0.20.2: resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} cpu: [x64] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/netbsd-x64@0.19.12': + /@esbuild/netbsd-x64@0.19.12: resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/netbsd-x64@0.20.2': + /@esbuild/netbsd-x64@0.20.2: resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/openbsd-x64@0.19.12': + /@esbuild/openbsd-x64@0.19.12: resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/openbsd-x64@0.20.2': + /@esbuild/openbsd-x64@0.20.2: resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/sunos-x64@0.19.12': + /@esbuild/sunos-x64@0.19.12: resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} cpu: [x64] os: [sunos] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/sunos-x64@0.20.2': + /@esbuild/sunos-x64@0.20.2: resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} cpu: [x64] os: [sunos] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/win32-arm64@0.19.12': + /@esbuild/win32-arm64@0.19.12: resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/win32-arm64@0.20.2': + /@esbuild/win32-arm64@0.20.2: resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/win32-ia32@0.19.12': + /@esbuild/win32-ia32@0.19.12: resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/win32-ia32@0.20.2': + /@esbuild/win32-ia32@0.20.2: resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@esbuild/win32-x64@0.19.12': + /@esbuild/win32-x64@0.19.12: resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} cpu: [x64] os: [win32] -<<<<<<< HEAD requiresBuild: true dev: true optional: true -======= ->>>>>>> develop - '@esbuild/win32-x64@0.20.2': + /@esbuild/win32-x64@0.20.2: resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@eslint-community/eslint-utils@4.4.0': + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + dev: true - '@eslint-community/regexpp@4.10.0': + /@eslint-community/regexpp@4.10.0: resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true - '@eslint/eslintrc@2.1.4': + /@eslint/eslintrc@2.1.4: resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true - '@eslint/js@8.57.0': + /@eslint/js@8.57.0: resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true -<<<<<<< HEAD /@event-calendar/core@2.6.1: resolution: {integrity: sha512-3dxMnmFfjEzeyNFhm0PS04/Js3LqqQC6HzqY6XtypxC2wLFhxrK4NqX4cq8ZKtIrTJu6EFFB3DZ8GamW28Pl7g==} dependencies: @@ -830,70 +623,53 @@ packages: svelte: 4.2.14 dev: true - /@floating-ui/core@1.6.0: - resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + /@floating-ui/core@1.6.1: + resolution: {integrity: sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==} dependencies: - '@floating-ui/utils': 0.2.1 + '@floating-ui/utils': 0.2.2 dev: true - /@floating-ui/dom@1.6.3: - resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} + /@floating-ui/dom@1.6.4: + resolution: {integrity: sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ==} dependencies: - '@floating-ui/core': 1.6.0 - '@floating-ui/utils': 0.2.1 + '@floating-ui/core': 1.6.1 + '@floating-ui/utils': 0.2.2 dev: true - /@floating-ui/utils@0.2.1: - resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + /@floating-ui/utils@0.2.2: + resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} dev: true -======= - '@fontsource/fira-mono@4.5.10': - resolution: {integrity: sha512-bxUnRP8xptGRo8YXeY073DSpfK74XpSb0ZyRNpHV9WvLnJ7TwPOjZll8hTMin7zLC6iOp59pDZ8EQDj1gzgAQQ==} ->>>>>>> develop - '@formatjs/ecma402-abstract@1.18.2': + /@formatjs/ecma402-abstract@1.18.2: resolution: {integrity: sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==} -<<<<<<< HEAD dependencies: '@formatjs/intl-localematcher': 0.5.4 tslib: 2.6.2 dev: true -======= ->>>>>>> develop - '@formatjs/fast-memoize@2.2.0': + /@formatjs/fast-memoize@2.2.0: resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} -<<<<<<< HEAD dependencies: tslib: 2.6.2 dev: true -======= ->>>>>>> develop - '@formatjs/icu-messageformat-parser@2.7.6': + /@formatjs/icu-messageformat-parser@2.7.6: resolution: {integrity: sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==} -<<<<<<< HEAD dependencies: '@formatjs/ecma402-abstract': 1.18.2 '@formatjs/icu-skeleton-parser': 1.8.0 tslib: 2.6.2 dev: true -======= ->>>>>>> develop - '@formatjs/icu-skeleton-parser@1.8.0': + /@formatjs/icu-skeleton-parser@1.8.0: resolution: {integrity: sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==} -<<<<<<< HEAD dependencies: '@formatjs/ecma402-abstract': 1.18.2 tslib: 2.6.2 dev: true -======= ->>>>>>> develop - '@formatjs/intl-localematcher@0.5.4': + /@formatjs/intl-localematcher@0.5.4: resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} -<<<<<<< HEAD dependencies: tslib: 2.6.2 dev: true @@ -903,21 +679,27 @@ packages: engines: {node: '>=6'} requiresBuild: true dev: true -======= ->>>>>>> develop - '@humanwhocodes/config-array@0.11.14': + /@humanwhocodes/config-array@0.11.14: resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true - '@humanwhocodes/module-importer@1.0.1': + /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} + dev: true - '@humanwhocodes/object-schema@2.0.3': + /@humanwhocodes/object-schema@2.0.3: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + dev: true -<<<<<<< HEAD /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -931,31 +713,37 @@ packages: dev: true /@jest/schemas@29.6.3: -======= - '@jest/schemas@29.6.3': ->>>>>>> develop resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true - '@jridgewell/gen-mapping@0.3.5': + /@jridgewell/gen-mapping@0.3.5: resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/resolve-uri@3.1.2': + /@jridgewell/resolve-uri@3.1.2: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': + /@jridgewell/set-array@1.2.1: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.4.15': + /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - '@jridgewell/trace-mapping@0.3.25': + /@jridgewell/trace-mapping@0.3.25: resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 -<<<<<<< HEAD /@mapbox/node-pre-gyp@1.0.11: resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true @@ -977,24 +765,28 @@ packages: /@mdi/js@7.4.47: resolution: {integrity: sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==} dev: true -======= - '@neoconfetti/svelte@1.0.0': - resolution: {integrity: sha512-SmksyaJAdSlMa9cTidVSIqYo1qti+WTsviNDwgjNVm+KQ3DRP2Df9umDIzC4vCcpEYY+chQe0i2IKnLw03AT8Q==} ->>>>>>> develop - '@nodelib/fs.scandir@2.1.5': + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true - '@nodelib/fs.stat@2.0.5': + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} + dev: true - '@nodelib/fs.walk@1.2.8': + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: true -<<<<<<< HEAD /@octokit/auth-token@4.0.0: resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} engines: {node: '>= 18'} @@ -1116,16 +908,15 @@ packages: optional: true /@playwright/test@1.43.1: -======= - '@playwright/test@1.43.1': ->>>>>>> develop resolution: {integrity: sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==} engines: {node: '>=16'} hasBin: true + dependencies: + playwright: 1.43.1 + dev: true - '@polka/url@1.0.0-next.25': + /@polka/url@1.0.0-next.25: resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} -<<<<<<< HEAD /@rollup/plugin-node-resolve@13.3.0(rollup@2.79.1): resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} @@ -1167,168 +958,116 @@ packages: os: [android] requiresBuild: true optional: true -======= - - '@rollup/rollup-android-arm-eabi@4.14.3': - resolution: {integrity: sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==} - cpu: [arm] - os: [android] ->>>>>>> develop - '@rollup/rollup-android-arm64@4.14.3': + /@rollup/rollup-android-arm64@4.14.3: resolution: {integrity: sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==} cpu: [arm64] os: [android] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@rollup/rollup-darwin-arm64@4.14.3': + /@rollup/rollup-darwin-arm64@4.14.3: resolution: {integrity: sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==} cpu: [arm64] os: [darwin] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@rollup/rollup-darwin-x64@4.14.3': + /@rollup/rollup-darwin-x64@4.14.3: resolution: {integrity: sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==} cpu: [x64] os: [darwin] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@rollup/rollup-linux-arm-gnueabihf@4.14.3': + /@rollup/rollup-linux-arm-gnueabihf@4.14.3: resolution: {integrity: sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==} cpu: [arm] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@rollup/rollup-linux-arm-musleabihf@4.14.3': + /@rollup/rollup-linux-arm-musleabihf@4.14.3: resolution: {integrity: sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==} cpu: [arm] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@rollup/rollup-linux-arm64-gnu@4.14.3': + /@rollup/rollup-linux-arm64-gnu@4.14.3: resolution: {integrity: sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==} cpu: [arm64] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@rollup/rollup-linux-arm64-musl@4.14.3': + /@rollup/rollup-linux-arm64-musl@4.14.3: resolution: {integrity: sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==} cpu: [arm64] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@rollup/rollup-linux-powerpc64le-gnu@4.14.3': + /@rollup/rollup-linux-powerpc64le-gnu@4.14.3: resolution: {integrity: sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==} cpu: [ppc64] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@rollup/rollup-linux-riscv64-gnu@4.14.3': + /@rollup/rollup-linux-riscv64-gnu@4.14.3: resolution: {integrity: sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==} cpu: [riscv64] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@rollup/rollup-linux-s390x-gnu@4.14.3': + /@rollup/rollup-linux-s390x-gnu@4.14.3: resolution: {integrity: sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==} cpu: [s390x] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@rollup/rollup-linux-x64-gnu@4.14.3': + /@rollup/rollup-linux-x64-gnu@4.14.3: resolution: {integrity: sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==} cpu: [x64] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@rollup/rollup-linux-x64-musl@4.14.3': + /@rollup/rollup-linux-x64-musl@4.14.3: resolution: {integrity: sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==} cpu: [x64] os: [linux] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@rollup/rollup-win32-arm64-msvc@4.14.3': + /@rollup/rollup-win32-arm64-msvc@4.14.3: resolution: {integrity: sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==} cpu: [arm64] os: [win32] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@rollup/rollup-win32-ia32-msvc@4.14.3': + /@rollup/rollup-win32-ia32-msvc@4.14.3: resolution: {integrity: sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==} cpu: [ia32] os: [win32] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@rollup/rollup-win32-x64-msvc@4.14.3': + /@rollup/rollup-win32-x64-msvc@4.14.3: resolution: {integrity: sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==} cpu: [x64] os: [win32] -<<<<<<< HEAD requiresBuild: true optional: true -======= ->>>>>>> develop - '@sinclair/typebox@0.27.8': + /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true -<<<<<<< HEAD /@supabase/auth-helpers-shared@0.6.3(@supabase/supabase-js@2.42.4): resolution: {integrity: sha512-xYQRLFeFkL4ZfwC7p9VKcarshj3FB2QJMgJPydvOY7J5czJe6xSG5/wM1z63RmAzGbCkKg+dzpq61oeSyWiGBQ==} peerDependencies: @@ -1353,39 +1092,25 @@ packages: resolution: {integrity: sha512-yIgcHnlgv24GxHtVGUhwGqAFDyJkPIC/xjx7HostN08A8yCy8HIfl4JEkTKyBqD1v1L05jNEJOUke4Lf4O1+Qg==} dependencies: '@supabase/node-fetch': 2.6.15 -======= - '@supabase/auth-js@2.63.0': - resolution: {integrity: sha512-yIgcHnlgv24GxHtVGUhwGqAFDyJkPIC/xjx7HostN08A8yCy8HIfl4JEkTKyBqD1v1L05jNEJOUke4Lf4O1+Qg==} ->>>>>>> develop - '@supabase/functions-js@2.3.0': + /@supabase/functions-js@2.3.0: resolution: {integrity: sha512-GPXzSl4MXdc0P7q+TvE8XgaPdvGBeAJ0p6AN0tbKcezpkp32mpsDf58JXaWOJGyiWSVJn6z1W73eKxf6NZNaFA==} -<<<<<<< HEAD dependencies: '@supabase/node-fetch': 2.6.15 -======= ->>>>>>> develop - '@supabase/node-fetch@2.6.15': + /@supabase/node-fetch@2.6.15: resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} engines: {node: 4.x || >=6.0.0} -<<<<<<< HEAD dependencies: whatwg-url: 5.0.0 -======= ->>>>>>> develop - '@supabase/postgrest-js@1.15.2': + /@supabase/postgrest-js@1.15.2: resolution: {integrity: sha512-9/7pUmXExvGuEK1yZhVYXPZnLEkDTwxgMQHXLrN5BwPZZm4iUCL1YEyep/Z2lIZah8d8M433mVAUEGsihUj5KQ==} -<<<<<<< HEAD dependencies: '@supabase/node-fetch': 2.6.15 -======= ->>>>>>> develop - '@supabase/realtime-js@2.9.4': + /@supabase/realtime-js@2.9.4: resolution: {integrity: sha512-wdq+2hZpgw0r2ldRs87d3U08Y8BrsO1bZxPNqbImpYshAEkusDz4vufR8KaqujKxqewmXS6YnUhuRVdvSEIKCA==} -<<<<<<< HEAD dependencies: '@supabase/node-fetch': 2.6.15 '@types/phoenix': 1.6.4 @@ -1394,25 +1119,24 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate -======= - '@supabase/ssr@0.3.0': + /@supabase/ssr@0.3.0(@supabase/supabase-js@2.42.4): resolution: {integrity: sha512-lcVyQ7H6eumb2FB1Wa2N+jYWMfq6CFza3KapikT0fgttMQ+QvDgpNogx9jI8bZgKds+XFSMCojxFvFb+gwdbfA==} peerDependencies: '@supabase/supabase-js': ^2.33.1 ->>>>>>> develop + dependencies: + '@supabase/supabase-js': 2.42.4 + cookie: 0.5.0 + ramda: 0.29.1 + dev: false - '@supabase/storage-js@2.5.5': + /@supabase/storage-js@2.5.5: resolution: {integrity: sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w==} -<<<<<<< HEAD dependencies: '@supabase/node-fetch': 2.6.15 -======= ->>>>>>> develop - '@supabase/supabase-js@2.42.4': + /@supabase/supabase-js@2.42.4: resolution: {integrity: sha512-tRn3wloKnnFdmEr3O2VIaxqzKACpyJ3ymLDmeq0V5lvhkJ+B4VH+QmDrnBbJJUkO2t+IHg65j5jombZxU4yMyw==} -<<<<<<< HEAD dependencies: '@supabase/auth-js': 2.63.0 '@supabase/functions-js': 2.3.0 @@ -1436,23 +1160,16 @@ packages: - encoding - supports-color dev: false -======= - '@sveltejs/adapter-auto@3.2.0': - resolution: {integrity: sha512-She5nKT47kwHE18v9NMe6pbJcvULr82u0V3yZ0ej3n1laWKGgkgdEABE9/ak5iDPs93LqsBkuIo51kkwCLBjJA==} - peerDependencies: - '@sveltejs/kit': ^2.0.0 ->>>>>>> develop - - '@sveltejs/kit@2.5.6': + /@sveltejs/kit@2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8): resolution: {integrity: sha512-AYb02Jm5MfNqJHc8zrj7ScQAFAKmTUCkpkfoi8EVaZZDdnjkvI7L2GtnTDhpiXSAZRVitZX4qm59sMS1FgL+lQ==} engines: {node: '>=18.13'} hasBin: true + requiresBuild: true peerDependencies: '@sveltejs/vite-plugin-svelte': ^3.0.0 svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.3 -<<<<<<< HEAD dependencies: '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.14)(vite@5.2.8) '@types/cookie': 0.6.0 @@ -1469,17 +1186,14 @@ packages: svelte: 4.2.14 tiny-glob: 0.2.9 vite: 5.2.8 -======= ->>>>>>> develop - '@sveltejs/vite-plugin-svelte-inspector@2.1.0': + /@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8): resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} engines: {node: ^18.0.0 || >=20} peerDependencies: '@sveltejs/vite-plugin-svelte': ^3.0.0 svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 -<<<<<<< HEAD dependencies: '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.14)(vite@5.2.8) debug: 4.3.4 @@ -1487,16 +1201,13 @@ packages: vite: 5.2.8 transitivePeerDependencies: - supports-color -======= ->>>>>>> develop - '@sveltejs/vite-plugin-svelte@3.1.0': + /@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.14)(vite@5.2.8): resolution: {integrity: sha512-sY6ncCvg+O3njnzbZexcVtUqOBE3iYmQPJ9y+yXSkOwG576QI/xJrBnQSRXFLGwJNBa0T78JEKg5cIR0WOAuUw==} engines: {node: ^18.0.0 || >=20} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 -<<<<<<< HEAD dependencies: '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8) debug: 4.3.4 @@ -1510,6 +1221,18 @@ packages: transitivePeerDependencies: - supports-color + /@sveltekit-i18n/base@1.3.7(svelte@4.2.14): + resolution: {integrity: sha512-kg1kql1/ro/lIudwFiWrv949Q07gmweln87tflUZR51MNdXXzK4fiJQv5Mw50K/CdQ5BOk/dJ0WOH2vOtBI6yw==} + peerDependencies: + svelte: '>=3.49.0' + dependencies: + svelte: 4.2.14 + dev: true + + /@sveltekit-i18n/parser-default@1.1.1: + resolution: {integrity: sha512-/gtzLlqm/sox7EoPKD56BxGZktK/syGc79EbJAPWY5KVitQD9SM0TP8yJCqDxTVPk7Lk0WJhrBGUE2Nn0f5M1w==} + dev: true + /@types/cookie@0.6.0: resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} @@ -1526,44 +1249,26 @@ packages: /@types/estree@0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: true -======= - - '@sveltekit-i18n/base@1.3.7': - resolution: {integrity: sha512-kg1kql1/ro/lIudwFiWrv949Q07gmweln87tflUZR51MNdXXzK4fiJQv5Mw50K/CdQ5BOk/dJ0WOH2vOtBI6yw==} - peerDependencies: - svelte: '>=3.49.0' - - '@sveltekit-i18n/parser-default@1.1.1': - resolution: {integrity: sha512-/gtzLlqm/sox7EoPKD56BxGZktK/syGc79EbJAPWY5KVitQD9SM0TP8yJCqDxTVPk7Lk0WJhrBGUE2Nn0f5M1w==} - - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} - - '@types/eslint@8.56.9': - resolution: {integrity: sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==} ->>>>>>> develop - '@types/estree@1.0.5': + /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - '@types/json-schema@7.0.15': + /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true - '@types/node@20.12.7': + /@types/node@20.12.7: resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} -<<<<<<< HEAD dependencies: undici-types: 5.26.5 -======= ->>>>>>> develop - '@types/phoenix@1.6.4': + /@types/phoenix@1.6.4: resolution: {integrity: sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA==} - '@types/pug@2.0.10': + /@types/pug@2.0.10: resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + dev: true -<<<<<<< HEAD /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: @@ -1571,26 +1276,17 @@ packages: dev: true /@types/semver@7.5.8: -======= - '@types/semver@7.5.8': ->>>>>>> develop resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + dev: true - '@types/ws@8.5.10': + /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} -<<<<<<< HEAD dependencies: '@types/node': 20.12.7 /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} engines: {node: ^16.0.0 || >=18.0.0} -======= - - '@typescript-eslint/eslint-plugin@7.7.0': - resolution: {integrity: sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==} - engines: {node: ^18.18.0 || >=20.0.0} ->>>>>>> develop peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha eslint: ^7.0.0 || ^8.0.0 @@ -1598,7 +1294,6 @@ packages: peerDependenciesMeta: typescript: optional: true -<<<<<<< HEAD dependencies: '@eslint-community/regexpp': 4.10.0 '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) @@ -1621,19 +1316,12 @@ packages: /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} -======= - - '@typescript-eslint/parser@7.7.0': - resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} - engines: {node: ^18.18.0 || >=20.0.0} ->>>>>>> develop peerDependencies: eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true -<<<<<<< HEAD dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 @@ -1657,23 +1345,12 @@ packages: /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} engines: {node: ^16.0.0 || >=18.0.0} -======= - - '@typescript-eslint/scope-manager@7.7.0': - resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/type-utils@7.7.0': - resolution: {integrity: sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==} - engines: {node: ^18.18.0 || >=20.0.0} ->>>>>>> develop peerDependencies: eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true -<<<<<<< HEAD dependencies: '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.5) @@ -1693,22 +1370,11 @@ packages: /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5): resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} -======= - - '@typescript-eslint/types@7.7.0': - resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} - engines: {node: ^18.18.0 || >=20.0.0} - - '@typescript-eslint/typescript-estree@7.7.0': - resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} - engines: {node: ^18.18.0 || >=20.0.0} ->>>>>>> develop peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true -<<<<<<< HEAD dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 @@ -1728,1837 +1394,225 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 -======= - - '@typescript-eslint/utils@7.7.0': - resolution: {integrity: sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) + eslint: 8.57.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true - '@typescript-eslint/visitor-keys@7.7.0': - resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} - engines: {node: ^18.18.0 || >=20.0.0} + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + dev: true - '@ungap/structured-clone@1.2.0': + /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@vercel/nft@0.26.4: + resolution: {integrity: sha512-j4jCOOXke2t8cHZCIxu1dzKLHLcFmYzC3yqAK6MfZznOL1QIJKd0xcFsXK3zcqzU7ScsE2zWkiMMNHGMHgp+FA==} + engines: {node: '>=16'} + hasBin: true + dependencies: + '@mapbox/node-pre-gyp': 1.0.11 + '@rollup/pluginutils': 4.2.1 + acorn: 8.11.3 + acorn-import-attributes: 1.9.5(acorn@8.11.3) + async-sema: 3.1.1 + bindings: 1.5.0 + estree-walker: 2.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + node-gyp-build: 4.8.0 + resolve-from: 5.0.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false - '@vitest/expect@1.5.0': + /@vitest/expect@1.5.0: resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} + dependencies: + '@vitest/spy': 1.5.0 + '@vitest/utils': 1.5.0 + chai: 4.4.1 + dev: true - '@vitest/runner@1.5.0': + /@vitest/runner@1.5.0: resolution: {integrity: sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==} + dependencies: + '@vitest/utils': 1.5.0 + p-limit: 5.0.0 + pathe: 1.1.2 + dev: true - '@vitest/snapshot@1.5.0': + /@vitest/snapshot@1.5.0: resolution: {integrity: sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==} + dependencies: + magic-string: 0.30.9 + pathe: 1.1.2 + pretty-format: 29.7.0 + dev: true - '@vitest/spy@1.5.0': + /@vitest/spy@1.5.0: resolution: {integrity: sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==} + dependencies: + tinyspy: 2.2.1 + dev: true - '@vitest/utils@1.5.0': + /@vitest/utils@1.5.0: resolution: {integrity: sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==} + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true - '@zerodevx/svelte-toast@0.9.5': + /@zerodevx/svelte-toast@0.9.5(svelte@4.2.14): resolution: {integrity: sha512-JLeB/oRdJfT+dz9A5bgd3Z7TuQnBQbeUtXrGIrNWMGqWbabpepBF2KxtWVhL2qtxpRqhae2f6NAOzH7xs4jUSw==} peerDependencies: svelte: ^3.57.0 || ^4.0.0 + dependencies: + svelte: 4.2.14 + dev: true + + /abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: false - acorn-jsx@5.3.2: + /acorn-import-attributes@1.9.5(acorn@8.11.3): + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.11.3 + dev: false + + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: true - acorn-walk@8.3.2: + /acorn-walk@8.3.2: resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} engines: {node: '>=0.4.0'} + dev: true - acorn@8.11.3: + /acorn@8.11.3: resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true - ajv@6.12.6: + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + + /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true - ansi-regex@5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-styles@4.3.0: + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true - ansi-styles@5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true - anymatch@3.1.3: + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: false + + /are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + dev: false + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true - argparse@2.0.1: + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true - aria-query@5.3.0: + /aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + + /array-source@0.0.4: + resolution: {integrity: sha512-frNdc+zBn80vipY+GdcJkLEbMWj3xmzArYApmUGxoiV8uAu/ygcs9icPdsGdA26h0MkHUMW6EN2piIvVx+M5Mw==} + dev: true - array-union@2.1.0: + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + dev: true - assertion-error@1.1.0: + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true - axobject-query@4.0.0: - resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - cli-color@2.0.4: - resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} - engines: {node: '>=0.10'} - - code-red@1.0.4: - resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} - - cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} - engines: {node: '>= 0.6'} - - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - d@1.0.2: - resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} - engines: {node: '>=0.12'} - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - - devalue@4.3.2: - resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} - - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - es5-ext@0.10.64: - resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} - engines: {node: '>=0.10'} - - es6-iterator@2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - - es6-promise@3.3.1: - resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} - - es6-symbol@3.1.4: - resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} - engines: {node: '>=0.12'} - - es6-weak-map@2.0.3: - resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} - - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} - engines: {node: '>=12'} - hasBin: true - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eslint-compat-utils@0.5.0: - resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - - eslint-config-prettier@9.1.0: - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-plugin-svelte@2.37.0: - resolution: {integrity: sha512-H/2Gz7agYHEMEEzRuLYuCmAIdjuBnbhFG9hOK0yCdSBvvJGJMkjo+lR6j67OIvLOavgp4L7zA5LnDKi8WqdPhQ==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.95 - peerDependenciesMeta: - svelte: - optional: true - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - - esm-env@1.0.0: - resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} - - esniff@2.0.1: - resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} - engines: {node: '>=0.10'} - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - event-emitter@0.3.5: - resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} - - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - - ext@1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - highcharts@11.4.1: - resolution: {integrity: sha512-t+BjB4hba5rNheczCrpyDz8BJrqGdgECHaaXQrgbf1mRdPMPemlOfo08/kTMgZ/Kp/Xfj015atdXpUFdwUU12Q==} - - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - import-meta-resolve@4.0.0: - resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - intl-messageformat@10.5.11: - resolution: {integrity: sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-promise@2.2.2: - resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} - - is-reference@3.0.2: - resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} - - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - - known-css-properties@0.30.0: - resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} - - locate-character@3.0.0: - resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - - lru-queue@0.1.0: - resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} - - magic-string@0.30.9: - resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} - engines: {node: '>=12'} - - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - - memoizee@0.4.15: - resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mlly@1.6.1: - resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} - - moment@2.30.1: - resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - - mrmime@2.0.0: - resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} - engines: {node: '>=10'} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - next-tick@1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - periscopic@3.1.0: - resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} - - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} - - playwright-core@1.43.1: - resolution: {integrity: sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==} - engines: {node: '>=16'} - hasBin: true - - playwright@1.43.1: - resolution: {integrity: sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==} - engines: {node: '>=16'} - hasBin: true - - plotly.js-dist-min@2.31.1: - resolution: {integrity: sha512-SSbggZZWMhlw9NEJ0SXP19IPTefdWD5L0JDPIq6oyco3u7MRQecEvyS1Uu/arK7+REYXjTJ/rzTdoV4GW3dcVA==} - - postcss-load-config@3.1.4: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-safe-parser@6.0.0: - resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.3.3 - - postcss-scss@4.0.9: - resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.4.29 - - postcss-selector-parser@6.0.16: - resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} - engines: {node: '>=4'} - - postcss@8.4.38: - resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-plugin-svelte@3.2.3: - resolution: {integrity: sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==} - peerDependencies: - prettier: ^3.0.0 - svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 - - prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} - engines: {node: '>=14'} - hasBin: true - - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - ramda@0.29.1: - resolution: {integrity: sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==} - - react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - - rollup@4.14.3: - resolution: {integrity: sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - - sander@0.5.1: - resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} - - semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true - - set-cookie-parser@2.6.0: - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - sorcery@0.11.0: - resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} - hasBin: true - - source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - svelte-check@3.6.9: - resolution: {integrity: sha512-hDQrk3L0osX07djQyMiXocKysTLfusqi8AriNcCiQxhQR49/LonYolcUGMtZ0fbUR8HTR198Prrgf52WWU9wEg==} - hasBin: true - peerDependencies: - svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - - svelte-eslint-parser@0.34.1: - resolution: {integrity: sha512-9+uLA1pqI9AZioKVGJzYYmlOZWxfoCXSbAM9iaNm7H01XlYlzRTtJfZgl9o3StQGN41PfGJIbkKkfk3e/pHFfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.94 - peerDependenciesMeta: - svelte: - optional: true - - svelte-hmr@0.16.0: - resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} - engines: {node: ^12.20 || ^14.13.1 || >= 16} - peerDependencies: - svelte: ^3.19.0 || ^4.0.0 - - svelte-i18n@4.0.0: - resolution: {integrity: sha512-4vivjKZADUMRIhTs38JuBNy3unbnh9AFRxWFLxq62P4NHic+/BaIZZlAsvqsCdnp7IdJf5EoSiH6TNdItcjA6g==} - engines: {node: '>= 16'} - hasBin: true - peerDependencies: - svelte: ^3 || ^4 - - svelte-preprocess@5.1.3: - resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} - engines: {node: '>= 16.0.0', pnpm: ^8.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: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - pug: ^3.0.0 - sass: ^1.26.8 - stylus: ^0.55.0 - sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 - svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - typescript: '>=3.9.5 || ^4.0.0 || ^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 - - svelte@4.2.14: - resolution: {integrity: sha512-ry3+YlWqZpHxLy45MW4MZIxNdvB+Wl7p2nnstWKbOAewaJyNJuOtivSbRChcfIej6wFBjWqyKmf/NgK1uW2JAA==} - engines: {node: '>=16'} - - sveltekit-i18n@2.4.2: - resolution: {integrity: sha512-hjRWn4V4DBL8JQKJoJa3MRvn6d32Zo+rWkoSP5bsQ/XIAguPdQUZJ8LMe6Nc1rST8WEVdu9+vZI3aFdKYGR3+Q==} - peerDependencies: - svelte: '>=3.49.0' - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - timers-ext@0.1.7: - resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} - - tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - - tinybench@2.7.0: - resolution: {integrity: sha512-Qgayeb106x2o4hNzNjsZEfFziw8IbKqtbXBjVh7VIZfBxfD5M4gWtpyx5+YTae2gJ6Y6Dz/KLepiv16RFeQWNA==} - - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} - - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type@2.7.2: - resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - - typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} - engines: {node: '>=14.17'} - hasBin: true - - ufo@1.5.3: - resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - vite-node@1.5.0: - resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - - vite@5.2.8: - resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - vitefu@0.2.5: - resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - vite: - optional: true - - vitest@1.5.0: - resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.5.0 - '@vitest/ui': 1.5.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - ws@8.16.0: - resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - -snapshots: - - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@esbuild/aix-ppc64@0.19.12': - optional: true - - '@esbuild/aix-ppc64@0.20.2': - optional: true - - '@esbuild/android-arm64@0.19.12': - optional: true - - '@esbuild/android-arm64@0.20.2': - optional: true - - '@esbuild/android-arm@0.19.12': - optional: true - - '@esbuild/android-arm@0.20.2': - optional: true - - '@esbuild/android-x64@0.19.12': - optional: true - - '@esbuild/android-x64@0.20.2': - optional: true - - '@esbuild/darwin-arm64@0.19.12': - optional: true - - '@esbuild/darwin-arm64@0.20.2': - optional: true - - '@esbuild/darwin-x64@0.19.12': - optional: true - - '@esbuild/darwin-x64@0.20.2': - optional: true - - '@esbuild/freebsd-arm64@0.19.12': - optional: true - - '@esbuild/freebsd-arm64@0.20.2': - optional: true - - '@esbuild/freebsd-x64@0.19.12': - optional: true - - '@esbuild/freebsd-x64@0.20.2': - optional: true - - '@esbuild/linux-arm64@0.19.12': - optional: true - - '@esbuild/linux-arm64@0.20.2': - optional: true - - '@esbuild/linux-arm@0.19.12': - optional: true - - '@esbuild/linux-arm@0.20.2': - optional: true - - '@esbuild/linux-ia32@0.19.12': - optional: true - - '@esbuild/linux-ia32@0.20.2': - optional: true - - '@esbuild/linux-loong64@0.19.12': - optional: true - - '@esbuild/linux-loong64@0.20.2': - optional: true - - '@esbuild/linux-mips64el@0.19.12': - optional: true - - '@esbuild/linux-mips64el@0.20.2': - optional: true - - '@esbuild/linux-ppc64@0.19.12': - optional: true - - '@esbuild/linux-ppc64@0.20.2': - optional: true - - '@esbuild/linux-riscv64@0.19.12': - optional: true - - '@esbuild/linux-riscv64@0.20.2': - optional: true - - '@esbuild/linux-s390x@0.19.12': - optional: true - - '@esbuild/linux-s390x@0.20.2': - optional: true - - '@esbuild/linux-x64@0.19.12': - optional: true - - '@esbuild/linux-x64@0.20.2': - optional: true - - '@esbuild/netbsd-x64@0.19.12': - optional: true - - '@esbuild/netbsd-x64@0.20.2': - optional: true - - '@esbuild/openbsd-x64@0.19.12': - optional: true - - '@esbuild/openbsd-x64@0.20.2': - optional: true - - '@esbuild/sunos-x64@0.19.12': - optional: true - - '@esbuild/sunos-x64@0.20.2': - optional: true - - '@esbuild/win32-arm64@0.19.12': - optional: true - - '@esbuild/win32-arm64@0.20.2': - optional: true - - '@esbuild/win32-ia32@0.19.12': - optional: true - - '@esbuild/win32-ia32@0.20.2': - optional: true - - '@esbuild/win32-x64@0.19.12': - optional: true - - '@esbuild/win32-x64@0.20.2': - optional: true - - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': - dependencies: - eslint: 8.57.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.10.0': {} - - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@8.57.0': {} - - '@fontsource/fira-mono@4.5.10': {} - - '@formatjs/ecma402-abstract@1.18.2': - dependencies: - '@formatjs/intl-localematcher': 0.5.4 - tslib: 2.6.2 - - '@formatjs/fast-memoize@2.2.0': - dependencies: - tslib: 2.6.2 - - '@formatjs/icu-messageformat-parser@2.7.6': - dependencies: - '@formatjs/ecma402-abstract': 1.18.2 - '@formatjs/icu-skeleton-parser': 1.8.0 - tslib: 2.6.2 - - '@formatjs/icu-skeleton-parser@1.8.0': - dependencies: - '@formatjs/ecma402-abstract': 1.18.2 - tslib: 2.6.2 - - '@formatjs/intl-localematcher@0.5.4': - dependencies: - tslib: 2.6.2 - - '@humanwhocodes/config-array@0.11.14': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/object-schema@2.0.3': {} - - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - - '@jridgewell/gen-mapping@0.3.5': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - - '@neoconfetti/svelte@1.0.0': {} - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@playwright/test@1.43.1': - dependencies: - playwright: 1.43.1 - - '@polka/url@1.0.0-next.25': {} - - '@rollup/rollup-android-arm-eabi@4.14.3': - optional: true - - '@rollup/rollup-android-arm64@4.14.3': - optional: true - - '@rollup/rollup-darwin-arm64@4.14.3': - optional: true - - '@rollup/rollup-darwin-x64@4.14.3': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.14.3': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.14.3': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.14.3': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.14.3': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.14.3': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.14.3': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.14.3': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.14.3': - optional: true - - '@rollup/rollup-linux-x64-musl@4.14.3': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.14.3': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.14.3': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.14.3': - optional: true - - '@sinclair/typebox@0.27.8': {} - - '@supabase/auth-js@2.63.0': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/functions-js@2.3.0': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/node-fetch@2.6.15': - dependencies: - whatwg-url: 5.0.0 - - '@supabase/postgrest-js@1.15.2': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/realtime-js@2.9.4': - dependencies: - '@supabase/node-fetch': 2.6.15 - '@types/phoenix': 1.6.4 - '@types/ws': 8.5.10 - ws: 8.16.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@supabase/ssr@0.3.0(@supabase/supabase-js@2.42.4)': - dependencies: - '@supabase/supabase-js': 2.42.4 - cookie: 0.5.0 - ramda: 0.29.1 - - '@supabase/storage-js@2.5.5': - dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/supabase-js@2.42.4': - dependencies: - '@supabase/auth-js': 2.63.0 - '@supabase/functions-js': 2.3.0 - '@supabase/node-fetch': 2.6.15 - '@supabase/postgrest-js': 1.15.2 - '@supabase/realtime-js': 2.9.4 - '@supabase/storage-js': 2.5.5 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@sveltejs/adapter-auto@3.2.0(@sveltejs/kit@2.5.6)': - dependencies: - '@sveltejs/kit': 2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8) - import-meta-resolve: 4.0.0 - - '@sveltejs/kit@2.5.6(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8)': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.14)(vite@5.2.8) - '@types/cookie': 0.6.0 - cookie: 0.6.0 - devalue: 4.3.2 - esm-env: 1.0.0 - import-meta-resolve: 4.0.0 - kleur: 4.1.5 - magic-string: 0.30.9 - mrmime: 2.0.0 - sade: 1.8.1 - set-cookie-parser: 2.6.0 - sirv: 2.0.4 - svelte: 4.2.14 - tiny-glob: 0.2.9 - vite: 5.2.8 - - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8)': - dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.0(svelte@4.2.14)(vite@5.2.8) - debug: 4.3.4 - svelte: 4.2.14 - vite: 5.2.8 - transitivePeerDependencies: - - supports-color - - '@sveltejs/vite-plugin-svelte@3.1.0(svelte@4.2.14)(vite@5.2.8)': - dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.0)(svelte@4.2.14)(vite@5.2.8) - debug: 4.3.4 - deepmerge: 4.3.1 - kleur: 4.1.5 - magic-string: 0.30.9 - svelte: 4.2.14 - svelte-hmr: 0.16.0(svelte@4.2.14) - vite: 5.2.8 - vitefu: 0.2.5(vite@5.2.8) - transitivePeerDependencies: - - supports-color - - '@sveltekit-i18n/base@1.3.7(svelte@4.2.14)': - dependencies: - svelte: 4.2.14 - - '@sveltekit-i18n/parser-default@1.1.1': {} - - '@types/cookie@0.6.0': {} - - '@types/eslint@8.56.9': - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 - - '@types/estree@1.0.5': {} - - '@types/json-schema@7.0.15': {} - - '@types/node@20.12.7': - dependencies: - undici-types: 5.26.5 - - '@types/phoenix@1.6.4': {} - - '@types/pug@2.0.10': {} - - '@types/semver@7.5.8': {} - - '@types/ws@8.5.10': - dependencies: - '@types/node': 20.12.7 - - '@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0)(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/type-utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.0 - debug: 4.3.4 - eslint: 8.57.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.0 - debug: 4.3.4 - eslint: 8.57.0 - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@7.7.0': - dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 - - '@typescript-eslint/type-utils@7.7.0(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.4 - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@7.7.0': {} - - '@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.5)': - dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@7.7.0(eslint@8.57.0)(typescript@5.4.5)': ->>>>>>> develop - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 -<<<<<<< HEAD - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) -======= - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) ->>>>>>> develop - eslint: 8.57.0 - semver: 7.6.0 - transitivePeerDependencies: - - supports-color - - typescript - -<<<<<<< HEAD - /@typescript-eslint/visitor-keys@6.21.0: - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} -======= - '@typescript-eslint/visitor-keys@7.7.0': ->>>>>>> develop - dependencies: - '@typescript-eslint/types': 6.21.0 - eslint-visitor-keys: 3.4.3 - - '@ungap/structured-clone@1.2.0': {} - -<<<<<<< HEAD - /@vercel/nft@0.26.4: - resolution: {integrity: sha512-j4jCOOXke2t8cHZCIxu1dzKLHLcFmYzC3yqAK6MfZznOL1QIJKd0xcFsXK3zcqzU7ScsE2zWkiMMNHGMHgp+FA==} - engines: {node: '>=16'} - hasBin: true - dependencies: - '@mapbox/node-pre-gyp': 1.0.11 - '@rollup/pluginutils': 4.2.1 - acorn: 8.11.3 - acorn-import-attributes: 1.9.5(acorn@8.11.3) - async-sema: 3.1.1 - bindings: 1.5.0 - estree-walker: 2.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - node-gyp-build: 4.8.0 - resolve-from: 5.0.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /@vitest/expect@1.5.0: - resolution: {integrity: sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==} -======= - '@vitest/expect@1.5.0': ->>>>>>> develop - dependencies: - '@vitest/spy': 1.5.0 - '@vitest/utils': 1.5.0 - chai: 4.4.1 - - '@vitest/runner@1.5.0': - dependencies: - '@vitest/utils': 1.5.0 - p-limit: 5.0.0 - pathe: 1.1.2 - - '@vitest/snapshot@1.5.0': - dependencies: - magic-string: 0.30.9 - pathe: 1.1.2 - pretty-format: 29.7.0 - - '@vitest/spy@1.5.0': - dependencies: - tinyspy: 2.2.1 - - '@vitest/utils@1.5.0': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - - '@zerodevx/svelte-toast@0.9.5(svelte@4.2.14)': - dependencies: - svelte: 4.2.14 - -<<<<<<< HEAD - /abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: false - - /acorn-import-attributes@1.9.5(acorn@8.11.3): - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - dependencies: - acorn: 8.11.3 - dev: false - - /acorn-jsx@5.3.2(acorn@8.11.3): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 -======= - acorn-jsx@5.3.2(acorn@8.11.3): ->>>>>>> develop - dependencies: - acorn: 8.11.3 - - acorn-walk@8.3.2: {} - - acorn@8.11.3: {} - -<<<<<<< HEAD - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} -======= - ajv@6.12.6: ->>>>>>> develop - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - -<<<<<<< HEAD - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: true -======= - ansi-regex@5.0.1: {} ->>>>>>> develop - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@5.2.0: {} - -<<<<<<< HEAD - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: true - - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: true - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} -======= - anymatch@3.1.3: ->>>>>>> develop - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - -<<<<<<< HEAD - /aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: false - - /are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - dev: false - - /arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - dev: true - - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true -======= - argparse@2.0.1: {} ->>>>>>> develop - - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 - -<<<<<<< HEAD - /array-source@0.0.4: - resolution: {integrity: sha512-frNdc+zBn80vipY+GdcJkLEbMWj3xmzArYApmUGxoiV8uAu/ygcs9icPdsGdA26h0MkHUMW6EN2piIvVx+M5Mw==} - dev: true - - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true -======= - array-union@2.1.0: {} ->>>>>>> develop - - assertion-error@1.1.0: {} - -<<<<<<< HEAD /async-sema@3.1.1: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} dev: false @@ -3571,7 +1625,7 @@ snapshots: postcss: ^8.1.0 dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001610 + caniuse-lite: 1.0.30001614 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -3590,17 +1644,12 @@ snapshots: /before-after-hook@2.2.3: resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} dev: true -======= - axobject-query@4.0.0: - dependencies: - dequal: 2.0.3 - balanced-match@1.0.2: {} ->>>>>>> develop - - binary-extensions@2.3.0: {} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: true -<<<<<<< HEAD /bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} dependencies: @@ -3609,38 +1658,37 @@ snapshots: /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} -======= - brace-expansion@1.1.11: ->>>>>>> develop dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 + dev: true - braces@3.0.2: + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} dependencies: fill-range: 7.0.1 -<<<<<<< HEAD /browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001610 - electron-to-chromium: 1.4.738 + caniuse-lite: 1.0.30001614 + electron-to-chromium: 1.4.750 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) dev: true -======= ->>>>>>> develop - buffer-crc32@0.2.13: {} + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true -<<<<<<< HEAD /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} @@ -3650,28 +1698,24 @@ snapshots: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} dev: true -======= - cac@6.7.14: {} ->>>>>>> develop - callsites@3.1.0: {} + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true -<<<<<<< HEAD /camelcase-css@2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} dev: true - /caniuse-lite@1.0.30001610: - resolution: {integrity: sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==} + /caniuse-lite@1.0.30001614: + resolution: {integrity: sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==} dev: true /chai@4.4.1: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} -======= - chai@4.4.1: ->>>>>>> develop dependencies: assertion-error: 1.1.0 check-error: 1.0.3 @@ -3680,17 +1724,25 @@ snapshots: loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.0.8 + dev: true - chalk@4.1.2: + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true - check-error@1.0.3: + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: get-func-name: 2.0.2 + dev: true - chokidar@3.6.0: + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -3701,8 +1753,8 @@ snapshots: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 + dev: true -<<<<<<< HEAD /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} @@ -3711,26 +1763,21 @@ snapshots: /cli-color@2.0.4: resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} engines: {node: '>=0.10'} -======= - cli-color@2.0.4: ->>>>>>> develop dependencies: d: 1.0.2 es5-ext: 0.10.64 es6-iterator: 2.0.3 memoizee: 0.4.15 timers-ext: 0.1.7 -<<<<<<< HEAD dev: true - /clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + /clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} dev: true -======= ->>>>>>> develop - code-red@1.0.4: + /code-red@1.0.4: + resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 '@types/estree': 1.0.5 @@ -3738,13 +1785,17 @@ snapshots: estree-walker: 3.0.3 periscopic: 3.1.0 - color-convert@2.0.1: + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 + dev: true - color-name@1.1.4: {} + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true -<<<<<<< HEAD /color-support@1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true @@ -3776,31 +1827,37 @@ snapshots: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: false + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: false + /cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} -======= - concat-map@0.0.1: {} - cookie@0.5.0: {} - - cookie@0.6.0: {} ->>>>>>> develop - - cross-spawn@7.0.3: + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + dev: true - css-tree@2.3.1: + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} dependencies: mdn-data: 2.0.30 source-map-js: 1.2.0 - cssesc@3.0.0: {} + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true -<<<<<<< HEAD /culori@4.0.1: resolution: {integrity: sha512-LSnjA6HuIUOlkfKVbzi2OlToZE8OjFi667JWN9qNymXVXzGDmvuP60SSgC+e92sd7B7158f7Fy3Mb6rXS5EDPw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3956,26 +2013,33 @@ snapshots: /date-fns@3.6.0: resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} dev: true -======= - d@1.0.2: - dependencies: - es5-ext: 0.10.64 - type: 2.7.2 ->>>>>>> develop - debug@4.3.4: + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true dependencies: ms: 2.1.2 - deep-eql@4.1.3: + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} dependencies: type-detect: 4.0.8 + dev: true - deep-is@0.1.4: {} + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true - deepmerge@4.3.1: {} + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} -<<<<<<< HEAD /delaunator@5.0.1: resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} dependencies: @@ -3993,13 +2057,12 @@ snapshots: /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} -======= - dequal@2.0.3: {} ->>>>>>> develop - detect-indent@6.1.0: {} + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true -<<<<<<< HEAD /detect-libc@2.0.3: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} @@ -4011,17 +2074,19 @@ snapshots: /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true -======= - devalue@4.3.2: {} ->>>>>>> develop - diff-sequences@29.6.3: {} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true - dir-glob@3.0.1: + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dependencies: path-type: 4.0.0 + dev: true -<<<<<<< HEAD /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: true @@ -4029,13 +2094,10 @@ snapshots: /doctrine@3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} -======= - doctrine@3.0.0: ->>>>>>> develop dependencies: esutils: 2.0.3 + dev: true -<<<<<<< HEAD /dotenv@16.4.2: resolution: {integrity: sha512-rZSSFxke7d9nYQ5NeMIwp5PP+f8wXgKNljpOb7KtH6SKW1cEqcXAz9VSJYVLKe7Jhup/gUYOkaeSVyK8GJ+nBg==} engines: {node: '>=12'} @@ -4045,8 +2107,8 @@ snapshots: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.738: - resolution: {integrity: sha512-lwKft2CLFztD+vEIpesrOtCrko/TFnEJlHFdRhazU7Y/jx5qc4cqsocfVrBg4So4gGe9lvxnbLIoev47WMpg+A==} + /electron-to-chromium@1.4.750: + resolution: {integrity: sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==} dev: true /emoji-regex@8.0.0: @@ -4060,52 +2122,47 @@ snapshots: resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} engines: {node: '>=0.10'} requiresBuild: true -======= - es5-ext@0.10.64: ->>>>>>> develop dependencies: es6-iterator: 2.0.3 es6-symbol: 3.1.4 esniff: 2.0.1 next-tick: 1.1.0 -<<<<<<< HEAD dev: true -======= ->>>>>>> develop - es6-iterator@2.0.3: + /es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} dependencies: d: 1.0.2 es5-ext: 0.10.64 es6-symbol: 3.1.4 -<<<<<<< HEAD dev: true -======= ->>>>>>> develop - es6-promise@3.3.1: {} + /es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + dev: true - es6-symbol@3.1.4: + /es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} dependencies: d: 1.0.2 ext: 1.7.0 -<<<<<<< HEAD dev: true -======= ->>>>>>> develop - es6-weak-map@2.0.3: + /es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} dependencies: d: 1.0.2 es5-ext: 0.10.64 es6-iterator: 2.0.3 es6-symbol: 3.1.4 -<<<<<<< HEAD dev: true -======= ->>>>>>> develop - esbuild@0.19.12: + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true optionalDependencies: '@esbuild/aix-ppc64': 0.19.12 '@esbuild/android-arm': 0.19.12 @@ -4130,12 +2187,13 @@ snapshots: '@esbuild/win32-arm64': 0.19.12 '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 -<<<<<<< HEAD dev: true -======= ->>>>>>> develop - esbuild@0.20.2: + /esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true optionalDependencies: '@esbuild/aix-ppc64': 0.20.2 '@esbuild/android-arm': 0.20.2 @@ -4160,27 +2218,45 @@ snapshots: '@esbuild/win32-arm64': 0.20.2 '@esbuild/win32-ia32': 0.20.2 '@esbuild/win32-x64': 0.20.2 -<<<<<<< HEAD /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} dev: true -======= ->>>>>>> develop - escape-string-regexp@4.0.0: {} + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true - eslint-compat-utils@0.5.0(eslint@8.57.0): + /eslint-compat-utils@0.5.0(eslint@8.57.0): + resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' dependencies: eslint: 8.57.0 semver: 7.6.0 + dev: true - eslint-config-prettier@9.1.0(eslint@8.57.0): + /eslint-config-prettier@9.1.0(eslint@8.57.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' dependencies: eslint: 8.57.0 + dev: true - eslint-plugin-svelte@2.37.0(eslint@8.57.0)(svelte@4.2.14): + /eslint-plugin-svelte@2.37.0(eslint@8.57.0)(svelte@4.2.14): + resolution: {integrity: sha512-H/2Gz7agYHEMEEzRuLYuCmAIdjuBnbhFG9hOK0yCdSBvvJGJMkjo+lR6j67OIvLOavgp4L7zA5LnDKi8WqdPhQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.95 + peerDependenciesMeta: + svelte: + optional: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@jridgewell/sourcemap-codec': 1.4.15 @@ -4199,15 +2275,25 @@ snapshots: transitivePeerDependencies: - supports-color - ts-node + dev: true - eslint-scope@7.2.2: + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 + dev: true - eslint-visitor-keys@3.4.3: {} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true - eslint@8.57.0: + /eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 @@ -4249,68 +2335,76 @@ snapshots: text-table: 0.2.0 transitivePeerDependencies: - supports-color + dev: true -<<<<<<< HEAD /esm-env@1.0.0: resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} -======= - esm-env@1.0.0: {} ->>>>>>> develop - esniff@2.0.1: + /esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} dependencies: d: 1.0.2 es5-ext: 0.10.64 event-emitter: 0.3.5 type: 2.7.2 -<<<<<<< HEAD dev: true -======= ->>>>>>> develop - espree@9.6.1: + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.11.3 acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 + dev: true - esquery@1.5.0: + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 + dev: true - esrecurse@4.3.0: + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 + dev: true - estraverse@5.3.0: {} + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true -<<<<<<< HEAD /estree-walker@1.0.1: resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} dev: true /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} -======= - estree-walker@2.0.2: {} ->>>>>>> develop - estree-walker@3.0.3: + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: '@types/estree': 1.0.5 - esutils@2.0.3: {} + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true - event-emitter@0.3.5: + /event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} dependencies: d: 1.0.2 es5-ext: 0.10.64 -<<<<<<< HEAD dev: true -======= ->>>>>>> develop - execa@8.0.1: + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} dependencies: cross-spawn: 7.0.3 get-stream: 8.0.1 @@ -4321,34 +2415,43 @@ snapshots: onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 + dev: true - ext@1.7.0: + /ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} dependencies: type: 2.7.2 -<<<<<<< HEAD dev: true -======= ->>>>>>> develop - fast-deep-equal@3.1.3: {} + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true - fast-glob@3.3.2: + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 + dev: true - fast-json-stable-stringify@2.1.0: {} + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true - fast-levenshtein@2.0.6: {} + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true - fastq@1.17.1: + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 + dev: true -<<<<<<< HEAD /fflate@0.4.8: resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==} dev: true @@ -4356,13 +2459,10 @@ snapshots: /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} -======= - file-entry-cache@6.0.1: ->>>>>>> develop dependencies: flat-cache: 3.2.0 + dev: true -<<<<<<< HEAD /file-source@0.6.1: resolution: {integrity: sha512-1R1KneL7eTXmXfKxC10V/9NeGOdbsAXJ+lQ//fvvcHUgtaZcZDWNJNblxAoVOyV1cj45pOtUrR3vZTBwqcW8XA==} dependencies: @@ -4376,26 +2476,30 @@ snapshots: /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} -======= - fill-range@7.0.1: ->>>>>>> develop dependencies: to-regex-range: 5.0.1 - find-up@5.0.0: + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + dev: true - flat-cache@3.2.0: + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: flatted: 3.3.1 keyv: 4.5.4 rimraf: 3.0.2 + dev: true - flatted@3.3.1: {} + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + dev: true -<<<<<<< HEAD /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} @@ -4417,14 +2521,15 @@ snapshots: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} -======= - fs.realpath@1.0.0: {} ->>>>>>> develop - fsevents@2.3.2: + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true optional: true -<<<<<<< HEAD /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -4459,24 +2564,21 @@ snapshots: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} dev: true -======= - fsevents@2.3.3: - optional: true - - get-func-name@2.0.2: {} - get-stream@8.0.1: {} ->>>>>>> develop - - glob-parent@5.1.2: + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 + dev: true - glob-parent@6.0.2: + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 + dev: true -<<<<<<< HEAD /glob@10.3.12: resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} engines: {node: '>=16 || 14 >=14.17'} @@ -4491,9 +2593,6 @@ snapshots: /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} -======= - glob@7.2.3: ->>>>>>> develop dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -4502,13 +2601,19 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - globals@13.24.0: + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} dependencies: type-fest: 0.20.2 + dev: true - globalyzer@0.1.0: {} + /globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - globby@11.1.0: + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -4516,19 +2621,18 @@ snapshots: ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 + dev: true - globrex@0.1.2: {} + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} -<<<<<<< HEAD /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} -======= - graceful-fs@4.2.11: {} ->>>>>>> develop - graphemer@1.4.0: {} + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true -<<<<<<< HEAD /gridjs-svelte@2.1.1(gridjs@6.2.0)(svelte@4.2.14): resolution: {integrity: sha512-tYkgdqNKSnfmAYYc8EP4axn/Xlugp7VLwAlpNkP4SBLHHYD/ejD2DJ+FMatDNqcJ1Z1kuMnJWO+VBcAOirEByw==} peerDependencies: @@ -4592,43 +2696,32 @@ snapshots: engines: {node: '>= 4'} dev: true - /immer@10.0.4: - resolution: {integrity: sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw==} + /immer@10.1.1: + resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} dev: true /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} -======= - has-flag@4.0.0: {} - - highcharts@11.4.1: {} - - human-signals@5.0.0: {} - - ignore@5.3.1: {} - - import-fresh@3.3.0: ->>>>>>> develop dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: true -<<<<<<< HEAD /import-meta-resolve@4.0.0: resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} -======= - import-meta-resolve@4.0.0: {} ->>>>>>> develop - imurmurhash@0.1.4: {} + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true - inflight@1.0.6: + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 -<<<<<<< HEAD /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -4640,26 +2733,23 @@ snapshots: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} dev: true -======= - inherits@2.0.4: {} ->>>>>>> develop - intl-messageformat@10.5.11: + /intl-messageformat@10.5.11: + resolution: {integrity: sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==} dependencies: '@formatjs/ecma402-abstract': 1.18.2 '@formatjs/fast-memoize': 2.2.0 '@formatjs/icu-messageformat-parser': 2.7.6 tslib: 2.6.2 -<<<<<<< HEAD dev: true -======= ->>>>>>> develop - is-binary-path@2.1.0: + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} dependencies: binary-extensions: 2.3.0 + dev: true -<<<<<<< HEAD /is-builtin-module@3.2.1: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} @@ -4685,15 +2775,10 @@ snapshots: /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} -======= - is-extglob@2.1.1: {} - - is-glob@4.0.3: ->>>>>>> develop dependencies: is-extglob: 2.1.1 + dev: true -<<<<<<< HEAD /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true @@ -4701,29 +2786,30 @@ snapshots: /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} -======= - is-number@7.0.0: {} ->>>>>>> develop - is-path-inside@3.0.3: {} + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true -<<<<<<< HEAD /is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} dev: true -======= - is-promise@2.2.2: {} ->>>>>>> develop - is-reference@3.0.2: + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} dependencies: '@types/estree': 1.0.5 - is-stream@3.0.0: {} + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true - isexe@2.0.0: {} + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true -<<<<<<< HEAD /jackspeak@2.3.6: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} @@ -4745,39 +2831,46 @@ snapshots: /js-tokens@9.0.0: resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} dev: true -======= - js-tokens@9.0.0: {} ->>>>>>> develop - js-yaml@4.1.0: + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true dependencies: argparse: 2.0.1 + dev: true - json-buffer@3.0.1: {} + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true - json-schema-traverse@0.4.1: {} + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true - json-stable-stringify-without-jsonify@1.0.1: {} + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true - jsonc-parser@3.2.1: {} + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: true - keyv@4.5.4: + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 + dev: true -<<<<<<< HEAD /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} -======= - kleur@4.1.5: {} ->>>>>>> develop - known-css-properties@0.30.0: {} + /known-css-properties@0.30.0: + resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==} + dev: true -<<<<<<< HEAD - /layercake@8.1.1(svelte@4.2.14)(typescript@5.4.5): - resolution: {integrity: sha512-RszgGluHwNhBx+seQM/wyWwWGUWli4D5mIGigIQcXKsHyHnVYkd57QjTdGwjUrj7b7lgckje958wOmvP+9mYyQ==} + /layercake@8.1.2(svelte@4.2.14)(typescript@5.4.5): + resolution: {integrity: sha512-/FEQ6MQfvKgCHriEi63J1tM+GTEvWhFKjAGs7n05rwUKbTM/3bOzslyv7EMbMrJQvAPSQAzz1uZ8qkrlUL+TtQ==} peerDependencies: svelte: 3 - 4 typescript: ^5.0.2 @@ -4813,9 +2906,9 @@ snapshots: d3-tile: 1.0.0 d3-time: 3.1.0 date-fns: 3.6.0 - layercake: 8.1.1(svelte@4.2.14)(typescript@5.4.5) + layercake: 8.1.2(svelte@4.2.14)(typescript@5.4.5) lodash-es: 4.17.21 - posthog-js: 1.128.3 + posthog-js: 1.130.0 shapefile: 0.6.6 svelte: 4.2.14 svelte-ux: 0.60.6(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14) @@ -4842,16 +2935,16 @@ snapshots: /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} -======= - levn@0.4.1: ->>>>>>> develop dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + dev: true - lilconfig@2.1.0: {} + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true -<<<<<<< HEAD /lilconfig@3.1.1: resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} engines: {node: '>=14'} @@ -4864,20 +2957,21 @@ snapshots: /local-pkg@0.5.0: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} -======= - local-pkg@0.5.0: ->>>>>>> develop dependencies: mlly: 1.6.1 pkg-types: 1.0.3 + dev: true - locate-character@3.0.0: {} + /locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} - locate-path@6.0.0: + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} dependencies: p-locate: 5.0.0 + dev: true -<<<<<<< HEAD /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} dev: true @@ -4885,42 +2979,36 @@ snapshots: /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true -======= - lodash.merge@4.6.2: {} ->>>>>>> develop - loupe@2.3.7: + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: get-func-name: 2.0.2 + dev: true -<<<<<<< HEAD - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} engines: {node: 14 || >=16.14} dev: true /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} -======= - lru-cache@6.0.0: ->>>>>>> develop dependencies: yallist: 4.0.0 - lru-queue@0.1.0: + /lru-queue@0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} dependencies: es5-ext: 0.10.64 -<<<<<<< HEAD dev: true -======= ->>>>>>> develop - magic-string@0.30.9: + /magic-string@0.30.9: + resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} + engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 -<<<<<<< HEAD /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -4930,11 +3018,9 @@ snapshots: /mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} -======= - mdn-data@2.0.30: {} ->>>>>>> develop - memoizee@0.4.15: + /memoizee@0.4.15: + resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} dependencies: d: 1.0.2 es5-ext: 0.10.64 @@ -4944,28 +3030,38 @@ snapshots: lru-queue: 0.1.0 next-tick: 1.1.0 timers-ext: 0.1.7 -<<<<<<< HEAD dev: true -======= ->>>>>>> develop - merge-stream@2.0.0: {} + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true - merge2@1.4.1: {} + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true - micromatch@4.0.5: + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} dependencies: braces: 3.0.2 picomatch: 2.3.1 - mimic-fn@4.0.0: {} + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true - min-indent@1.0.1: {} + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true - minimatch@3.1.2: + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 -<<<<<<< HEAD /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} @@ -4973,16 +3069,18 @@ snapshots: dependencies: brace-expansion: 2.0.1 dev: true -======= ->>>>>>> develop - minimatch@9.0.4: + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 + dev: true - minimist@1.2.8: {} + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true -<<<<<<< HEAD /minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} @@ -5011,13 +3109,10 @@ snapshots: /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true -======= - mkdirp@0.5.6: ->>>>>>> develop dependencies: minimist: 1.2.8 + dev: true -<<<<<<< HEAD /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -5026,26 +3121,21 @@ snapshots: /mlly@1.6.1: resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} -======= - mlly@1.6.1: ->>>>>>> develop dependencies: acorn: 8.11.3 pathe: 1.1.2 pkg-types: 1.0.3 ufo: 1.5.3 + dev: true -<<<<<<< HEAD /moment@2.30.1: resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} dev: false -======= - moment@2.30.1: {} ->>>>>>> develop - mri@1.2.0: {} + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} -<<<<<<< HEAD /mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} @@ -5065,17 +3155,11 @@ snapshots: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true -======= - mrmime@2.0.0: {} - ms@2.1.2: {} - - nanoid@3.3.7: {} ->>>>>>> develop - - natural-compare@1.4.0: {} + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true -<<<<<<< HEAD /next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: true @@ -5108,13 +3192,12 @@ snapshots: dependencies: abbrev: 1.1.1 dev: false -======= - next-tick@1.1.0: {} ->>>>>>> develop - normalize-path@3.0.0: {} + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true -<<<<<<< HEAD /normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} @@ -5123,13 +3206,10 @@ snapshots: /npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} -======= - npm-run-path@5.3.0: ->>>>>>> develop dependencies: path-key: 4.0.0 + dev: true -<<<<<<< HEAD /npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} dependencies: @@ -5150,17 +3230,19 @@ snapshots: /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} -======= - once@1.4.0: ->>>>>>> develop dependencies: wrappy: 1.0.2 - onetime@6.0.0: + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 + dev: true - optionator@0.9.3: + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} dependencies: '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 @@ -5168,38 +3250,55 @@ snapshots: levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + dev: true - p-limit@3.1.0: + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 + dev: true - p-limit@5.0.0: + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} dependencies: yocto-queue: 1.0.0 + dev: true - p-locate@5.0.0: + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} dependencies: p-limit: 3.1.0 + dev: true - parent-module@1.0.1: + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: true - path-exists@4.0.0: {} + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true -<<<<<<< HEAD /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} -======= - path-is-absolute@1.0.1: {} ->>>>>>> develop - path-key@3.1.1: {} + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true - path-key@4.0.0: {} + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true -<<<<<<< HEAD /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true @@ -5208,7 +3307,7 @@ snapshots: resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.2.0 + lru-cache: 10.2.2 minipass: 7.0.4 dev: true @@ -5223,21 +3322,22 @@ snapshots: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true -======= - path-type@4.0.0: {} ->>>>>>> develop - pathe@1.1.2: {} + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true - pathval@1.1.1: {} + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true - periscopic@3.1.0: + /periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: '@types/estree': 1.0.5 estree-walker: 3.0.3 is-reference: 3.0.2 -<<<<<<< HEAD /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -5254,26 +3354,33 @@ snapshots: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} dev: true -======= - picocolors@1.0.0: {} - picomatch@2.3.1: {} ->>>>>>> develop - - pkg-types@1.0.3: + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.1 mlly: 1.6.1 pathe: 1.1.2 + dev: true - playwright-core@1.43.1: {} + /playwright-core@1.43.1: + resolution: {integrity: sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==} + engines: {node: '>=16'} + hasBin: true + dev: true - playwright@1.43.1: + /playwright@1.43.1: + resolution: {integrity: sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==} + engines: {node: '>=16'} + hasBin: true dependencies: playwright-core: 1.43.1 optionalDependencies: fsevents: 2.3.2 -<<<<<<< HEAD + dev: true + + /plotly.js-dist-min@2.31.1: + resolution: {integrity: sha512-SSbggZZWMhlw9NEJ0SXP19IPTefdWD5L0JDPIq6oyco3u7MRQecEvyS1Uu/arK7+REYXjTJ/rzTdoV4GW3dcVA==} dev: true /postcss-import@15.1.0(postcss@8.4.38): @@ -5309,18 +3416,12 @@ snapshots: optional: true ts-node: optional: true -======= - - plotly.js-dist-min@2.31.1: {} - - postcss-load-config@3.1.4(postcss@8.4.38): ->>>>>>> develop dependencies: lilconfig: 2.1.0 postcss: 8.4.38 yaml: 1.10.2 + dev: true -<<<<<<< HEAD /postcss-load-config@4.0.2(postcss@8.4.38): resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} @@ -5335,7 +3436,7 @@ snapshots: dependencies: lilconfig: 3.1.1 postcss: 8.4.38 - yaml: 2.4.1 + yaml: 2.4.2 dev: true /postcss-load-config@5.0.3(postcss@8.4.38): @@ -5352,7 +3453,7 @@ snapshots: dependencies: lilconfig: 3.1.1 postcss: 8.4.38 - yaml: 2.4.1 + yaml: 2.4.2 dev: true /postcss-nested@6.0.1(postcss@8.4.38): @@ -5370,22 +3471,27 @@ snapshots: engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 -======= - postcss-safe-parser@6.0.0(postcss@8.4.38): ->>>>>>> develop dependencies: postcss: 8.4.38 + dev: true - postcss-scss@4.0.9(postcss@8.4.38): + /postcss-scss@4.0.9(postcss@8.4.38): + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 dependencies: postcss: 8.4.38 + dev: true - postcss-selector-parser@6.0.16: + /postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} + engines: {node: '>=4'} dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + dev: true -<<<<<<< HEAD /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true @@ -5393,17 +3499,13 @@ snapshots: /postcss@8.4.38: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} -======= - postcss@8.4.38: ->>>>>>> develop dependencies: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.2.0 -<<<<<<< HEAD - /posthog-js@1.128.3: - resolution: {integrity: sha512-ES5FLTw/u2JTHocJZJtJibVkbk+xc4u9XTxWQPGE1ZVbUOH4lVjSXbEtI56fJvSJaaAuGSQ43kB5crJZ2gNG+g==} + /posthog-js@1.130.0: + resolution: {integrity: sha512-bCrw5HunoXLybO20Q1bYEg68i5WCZWKxhStYJK4OR/9jrm7GwZ53GDrN78p8apFi0EH5ay4YZGbLFSkg+SsZWQ==} dependencies: fflate: 0.4.8 preact: 10.20.2 @@ -5416,17 +3518,17 @@ snapshots: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} dev: true -======= - - prelude-ls@1.2.1: {} ->>>>>>> develop - prettier-plugin-svelte@3.2.3(prettier@3.2.5)(svelte@4.2.14): + /prettier-plugin-svelte@3.2.3(prettier@3.2.5)(svelte@4.2.14): + resolution: {integrity: sha512-wJq8RunyFlWco6U0WJV5wNCM7zpBFakS76UBSbmzMGpncpK98NZABaE+s7n8/APDCEVNHXC5Mpq+MLebQtsRlg==} + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 dependencies: prettier: 3.2.5 svelte: 4.2.14 + dev: true -<<<<<<< HEAD /prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -5438,17 +3540,16 @@ snapshots: engines: {node: '>=14'} hasBin: true dev: true -======= - prettier@3.2.5: {} ->>>>>>> develop - pretty-format@29.7.0: + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 + dev: true -<<<<<<< HEAD /prism-svelte@0.5.0: resolution: {integrity: sha512-db91Bf3pRGKDPz1lAqLFSJXeW13mulUJxhycysFpfXV5MIK7RgWWK2E5aPAa71s8TCzQUXxF5JOV42/iOs6QkA==} dev: true @@ -5466,13 +3567,15 @@ snapshots: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} dev: true -======= - punycode@2.3.1: {} ->>>>>>> develop - queue-microtask@1.2.3: {} + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /ramda@0.29.1: + resolution: {integrity: sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==} + dev: false -<<<<<<< HEAD /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true @@ -5495,17 +3598,10 @@ snapshots: /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} -======= - ramda@0.29.1: {} - - react-is@18.2.0: {} - - readdirp@3.6.0: ->>>>>>> develop dependencies: picomatch: 2.3.1 + dev: true -<<<<<<< HEAD /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} dev: true @@ -5538,20 +3634,19 @@ snapshots: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true -======= - resolve-from@4.0.0: {} - reusify@1.0.4: {} ->>>>>>> develop - - rimraf@2.7.1: + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true dependencies: glob: 7.2.3 + dev: true - rimraf@3.0.2: + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true dependencies: glob: 7.2.3 -<<<<<<< HEAD /robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} @@ -5577,10 +3672,11 @@ snapshots: optionalDependencies: fsevents: 2.3.3 dev: true -======= ->>>>>>> develop - rollup@4.14.3: + /rollup@4.14.3: + resolution: {integrity: sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: @@ -5602,11 +3698,12 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.14.3 fsevents: 2.3.3 - run-parallel@1.2.0: + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 + dev: true -<<<<<<< HEAD /rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} dev: true @@ -5627,20 +3724,13 @@ snapshots: /sander@0.5.1: resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} -======= - sade@1.8.1: - dependencies: - mri: 1.2.0 - - sander@0.5.1: ->>>>>>> develop dependencies: es6-promise: 3.3.1 graceful-fs: 4.2.11 mkdirp: 0.5.6 rimraf: 2.7.1 + dev: true -<<<<<<< HEAD /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -5671,23 +3761,23 @@ snapshots: stream-source: 0.3.5 text-encoding: 0.6.4 dev: true -======= - semver@7.6.0: - dependencies: - lru-cache: 6.0.0 - - set-cookie-parser@2.6.0: {} ->>>>>>> develop - shebang-command@2.0.0: + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 + dev: true - shebang-regex@3.0.0: {} + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true - siginfo@2.0.0: {} + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true -<<<<<<< HEAD /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: false @@ -5696,19 +3786,20 @@ snapshots: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} dev: true -======= - signal-exit@4.1.0: {} ->>>>>>> develop - sirv@2.0.4: + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} dependencies: '@polka/url': 1.0.0-next.25 mrmime: 2.0.0 totalist: 3.0.1 - slash@3.0.0: {} + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true -<<<<<<< HEAD /slice-source@0.4.1: resolution: {integrity: sha512-YiuPbxpCj4hD9Qs06hGAz/OZhQ0eDuALN0lRWJez0eD/RevzKqGdUx1IOMUnXgpr+sXZLq3g8ERwbAH0bCb8vg==} dev: true @@ -5716,22 +3807,25 @@ snapshots: /sorcery@0.11.0: resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} hasBin: true -======= - sorcery@0.11.0: ->>>>>>> develop dependencies: '@jridgewell/sourcemap-codec': 1.4.15 buffer-crc32: 0.2.13 minimist: 1.2.8 sander: 0.5.1 + dev: true - source-map-js@1.2.0: {} + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} - stackback@0.0.2: {} + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true - std-env@3.7.0: {} + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + dev: true -<<<<<<< HEAD /stream-source@0.3.5: resolution: {integrity: sha512-ZuEDP9sgjiAwUVoDModftG0JtYiLUV8K4ljYD1VyUMRWtbVf92474o4kuuul43iZ8t/hRuiDAx1dIJSvirrK/g==} dev: true @@ -5771,25 +3865,30 @@ snapshots: dependencies: ansi-regex: 6.0.1 dev: true -======= - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 ->>>>>>> develop - strip-final-newline@3.0.0: {} + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true - strip-indent@3.0.0: + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} dependencies: min-indent: 1.0.1 + dev: true - strip-json-comments@3.1.1: {} + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true - strip-literal@2.1.0: + /strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} dependencies: js-tokens: 9.0.0 + dev: true -<<<<<<< HEAD /sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -5807,13 +3906,10 @@ snapshots: /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} -======= - supports-color@7.2.0: ->>>>>>> develop dependencies: has-flag: 4.0.0 + dev: true -<<<<<<< HEAD /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -5850,9 +3946,6 @@ snapshots: hasBin: true peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 -======= - svelte-check@3.6.9(postcss@8.4.38)(svelte@4.2.14): ->>>>>>> develop dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 @@ -5873,8 +3966,16 @@ snapshots: - sass - stylus - sugarss + dev: true - svelte-eslint-parser@0.34.1(svelte@4.2.14): + /svelte-eslint-parser@0.34.1(svelte@4.2.14): + resolution: {integrity: sha512-9+uLA1pqI9AZioKVGJzYYmlOZWxfoCXSbAM9iaNm7H01XlYlzRTtJfZgl9o3StQGN41PfGJIbkKkfk3e/pHFfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.94 + peerDependenciesMeta: + svelte: + optional: true dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -5882,8 +3983,8 @@ snapshots: postcss: 8.4.38 postcss-scss: 4.0.9(postcss@8.4.38) svelte: 4.2.14 + dev: true -<<<<<<< HEAD /svelte-grid@5.1.2: resolution: {integrity: sha512-Suwgb+L3LALhTyA7z4vn87UOJ+xBY6EeKa6MdWqDv/lZOtQgIZ21ry/I6txIn9IC0p8of4AiOXupkSMcZ+DEug==} dev: true @@ -5893,13 +3994,15 @@ snapshots: engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: ^3.19.0 || ^4.0.0 -======= - svelte-hmr@0.16.0(svelte@4.2.14): ->>>>>>> develop dependencies: svelte: 4.2.14 - svelte-i18n@4.0.0(svelte@4.2.14): + /svelte-i18n@4.0.0(svelte@4.2.14): + resolution: {integrity: sha512-4vivjKZADUMRIhTs38JuBNy3unbnh9AFRxWFLxq62P4NHic+/BaIZZlAsvqsCdnp7IdJf5EoSiH6TNdItcjA6g==} + engines: {node: '>= 16'} + hasBin: true + peerDependencies: + svelte: ^3 || ^4 dependencies: cli-color: 2.0.4 deepmerge: 4.3.1 @@ -5909,7 +4012,6 @@ snapshots: sade: 1.8.1 svelte: 4.2.14 tiny-glob: 0.2.9 -<<<<<<< HEAD dev: true /svelte-preprocess@5.1.3(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5): @@ -5949,10 +4051,6 @@ snapshots: optional: true typescript: optional: true -======= - - svelte-preprocess@5.1.3(postcss@8.4.38)(svelte@4.2.14)(typescript@5.4.5): ->>>>>>> develop dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 @@ -5963,30 +4061,30 @@ snapshots: strip-indent: 3.0.0 svelte: 4.2.14 typescript: 5.4.5 + dev: true -<<<<<<< HEAD /svelte-ux@0.60.6(postcss-load-config@5.0.3)(postcss@8.4.38)(svelte@4.2.14): resolution: {integrity: sha512-lkfGW1rGtXqHnHBDxBlHGOgLnKr5INzPCbdc6N4TDS5ZvAz8AAuvbUvDd+kPjwuCyuCNXapXLePiHgGPf2kk4A==} peerDependencies: svelte: ^3.56.0 || ^4.0.0 dependencies: - '@floating-ui/dom': 1.6.3 + '@floating-ui/dom': 1.6.4 '@fortawesome/fontawesome-common-types': 6.5.2 '@mdi/js': 7.4.47 - clsx: 2.1.0 + clsx: 2.1.1 culori: 4.0.1 d3-array: 3.2.4 d3-scale: 4.0.2 date-fns: 3.6.0 - immer: 10.0.4 + 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.19.2(postcss-load-config@5.0.3)(postcss@8.4.38) svelte: 4.2.14 - tailwind-merge: 2.2.2 - zod: 3.22.4 + tailwind-merge: 2.3.0 + zod: 3.23.4 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -6002,9 +4100,6 @@ snapshots: /svelte@4.2.14: resolution: {integrity: sha512-ry3+YlWqZpHxLy45MW4MZIxNdvB+Wl7p2nnstWKbOAewaJyNJuOtivSbRChcfIej6wFBjWqyKmf/NgK1uW2JAA==} engines: {node: '>=16'} -======= - svelte@4.2.14: ->>>>>>> develop dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.4.15 @@ -6021,20 +4116,26 @@ snapshots: magic-string: 0.30.9 periscopic: 3.1.0 -<<<<<<< HEAD + /sveltekit-i18n@2.4.2(svelte@4.2.14): + resolution: {integrity: sha512-hjRWn4V4DBL8JQKJoJa3MRvn6d32Zo+rWkoSP5bsQ/XIAguPdQUZJ8LMe6Nc1rST8WEVdu9+vZI3aFdKYGR3+Q==} + peerDependencies: + svelte: '>=3.49.0' + dependencies: + '@sveltekit-i18n/base': 1.3.7(svelte@4.2.14) + '@sveltekit-i18n/parser-default': 1.1.1 + svelte: 4.2.14 + dev: true + /svelvet@10.0.2(svelte@4.2.14): resolution: {integrity: sha512-CSxAyQ9xF/Qq3K0xsL/gy9u9UpC4DVFUUbq3awpQ9Dic4EGJ40qAhlcCKBBAb3Kul6hlks2bzlyBmNby8CfpDg==} peerDependencies: svelte: '>=3.59.2 || ^4.0.0' -======= - sveltekit-i18n@2.4.2(svelte@4.2.14): ->>>>>>> develop dependencies: svelte: 4.2.14 + dev: true -<<<<<<< HEAD - /tailwind-merge@2.2.2: - resolution: {integrity: sha512-tWANXsnmJzgw6mQ07nE3aCDkCK4QdT3ThPMCzawoYA2Pws7vSTCvz3Vrjg61jVUGfFZPJzxEP+NimbcW+EdaDw==} + /tailwind-merge@2.3.0: + resolution: {integrity: sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==} dependencies: '@babel/runtime': 7.24.4 dev: true @@ -6110,30 +4211,32 @@ snapshots: es5-ext: 0.10.64 next-tick: 1.1.0 dev: true -======= - text-table@0.2.0: {} - - timers-ext@0.1.7: - dependencies: - es5-ext: 0.10.64 - next-tick: 1.1.0 ->>>>>>> develop - tiny-glob@0.2.9: + /tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: globalyzer: 0.1.0 globrex: 0.1.2 - tinybench@2.7.0: {} + /tinybench@2.7.0: + resolution: {integrity: sha512-Qgayeb106x2o4hNzNjsZEfFziw8IbKqtbXBjVh7VIZfBxfD5M4gWtpyx5+YTae2gJ6Y6Dz/KLepiv16RFeQWNA==} + dev: true - tinypool@0.8.4: {} + /tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + dev: true - tinyspy@2.2.1: {} + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + dev: true - to-regex-range@5.0.1: + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 -<<<<<<< HEAD /topojson-client@3.1.0: resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==} @@ -6148,18 +4251,16 @@ snapshots: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} -======= - - totalist@3.0.1: {} - tr46@0.0.3: {} ->>>>>>> develop - - ts-api-utils@1.3.0(typescript@5.4.5): + /ts-api-utils@1.3.0(typescript@5.4.5): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' dependencies: typescript: 5.4.5 + dev: true -<<<<<<< HEAD /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true @@ -6167,31 +4268,38 @@ snapshots: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true -======= - tslib@2.6.2: {} ->>>>>>> develop - type-check@0.4.0: + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 + dev: true - type-detect@4.0.8: {} + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true - type-fest@0.20.2: {} + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true -<<<<<<< HEAD /type@2.7.2: resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} dev: true -======= - type@2.7.2: {} ->>>>>>> develop - typescript@5.4.5: {} + /typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: true - ufo@1.5.3: {} + /ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + dev: true -<<<<<<< HEAD /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -6209,22 +4317,20 @@ snapshots: escalade: 3.1.2 picocolors: 1.0.0 dev: true -======= - undici-types@5.26.5: {} ->>>>>>> develop - uri-js@4.4.1: + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.1 + dev: true -<<<<<<< HEAD /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} -======= - util-deprecate@1.0.2: {} ->>>>>>> develop - vite-node@1.5.0: + /vite-node@1.5.0: + resolution: {integrity: sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4 @@ -6240,8 +4346,35 @@ snapshots: - sugarss - supports-color - terser + dev: true - vite@5.2.8: + /vite@5.2.8: + resolution: {integrity: sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true dependencies: esbuild: 0.20.2 postcss: 8.4.38 @@ -6249,11 +4382,40 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - vitefu@0.2.5(vite@5.2.8): + /vitefu@0.2.5(vite@5.2.8): + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true dependencies: vite: 5.2.8 - vitest@1.5.0: + /vitest@1.5.0: + resolution: {integrity: sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.5.0 + '@vitest/ui': 1.5.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true dependencies: '@vitest/expect': 1.5.0 '@vitest/runner': 1.5.0 @@ -6283,29 +4445,34 @@ snapshots: - sugarss - supports-color - terser + dev: true -<<<<<<< HEAD /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} -======= - webidl-conversions@3.0.1: {} ->>>>>>> develop - whatwg-url@5.0.0: + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - which@2.0.2: + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true dependencies: isexe: 2.0.0 + dev: true - why-is-node-running@2.2.2: + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true dependencies: siginfo: 2.0.0 stackback: 0.0.2 + dev: true -<<<<<<< HEAD /wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} dependencies: @@ -6347,19 +4514,14 @@ snapshots: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} -======= - wrappy@1.0.2: {} - - ws@8.16.0: {} - - yallist@4.0.0: {} ->>>>>>> develop - yaml@1.10.2: {} + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true -<<<<<<< HEAD - /yaml@2.4.1: - resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} + /yaml@2.4.2: + resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} engines: {node: '>= 14'} hasBin: true dev: true @@ -6374,11 +4536,6 @@ snapshots: engines: {node: '>=12.20'} dev: true - /zod@3.22.4: - resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + /zod@3.23.4: + resolution: {integrity: sha512-/AtWOKbBgjzEYYQRNfoGKHObgfAZag6qUJX1VbHo2PRBgS+wfWagEY2mizjfyAPcGesrJOcx/wcl0L9WnVrHFw==} dev: true -======= - yocto-queue@0.1.0: {} - - yocto-queue@1.0.0: {} ->>>>>>> develop diff --git a/src/app.d.ts b/src/app.d.ts index 6a9e48ea..34066141 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -20,4 +20,4 @@ declare global { } } -export { }; +export { }; \ No newline at end of file diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 16a06d73..e07797c8 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,15 +1,35 @@ -// src/hooks.server.ts -import { type Handle, redirect, error } from '@sveltejs/kit' -import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/public' -import { createSupabaseServerClient } from '@supabase/auth-helpers-sveltekit' -import { sequence } from '@sveltejs/kit/hooks' -import { locale } from 'svelte-i18n' +import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/public'; +import { createServerClient } from '@supabase/ssr'; +import type { Handle } from '@sveltejs/kit'; +import { sequence } from '@sveltejs/kit/hooks'; +import { locale } from 'svelte-i18n'; +import type { Database } from './database.types'; -async function supabase({ event, resolve }) { - event.locals.supabase = createSupabaseServerClient({ - supabaseUrl: PUBLIC_SUPABASE_URL, - supabaseKey: PUBLIC_SUPABASE_ANON_KEY, - event, +const setLocale: Handle = async ({ event, resolve }) => { + const lang = event.request.headers.get('accept-language')?.split(',')[0]; + if (lang) { + locale.set(lang); + } + return resolve(event); +}; + +const handleSB: Handle = async ({ event, resolve }) => { + event.locals.supabase = createServerClient(PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY, { + cookies: { + get: (key) => event.cookies.get(key), + /** + * Note: You have to add the `path` variable to the + * set and remove method due to sveltekit's cookie API + * requiring this to be set, setting the path to '/' + * will replicate previous/standard behaviour (https://kit.svelte.dev/docs/types#public-types-cookies) + */ + set: (key, value, options) => { + event.cookies.set(key, value, { ...options, path: '/' }) + }, + remove: (key, options) => { + event.cookies.delete(key, { ...options, path: '/' }) + }, + }, }) /** @@ -45,37 +65,7 @@ async function supabase({ event, resolve }) { filterSerializedResponseHeaders(name) { return name === 'content-range' }, - }) -} - -async function authorization({ event, resolve }) { - // protect requests to all routes that start with /protected-routes - if (event.url.pathname.startsWith('/app') && event.request.method === 'GET') { - const session = await event.locals.getSession() - if (!session) { - // the user is not signed in - throw redirect(303, '/auth/login') - } - } - - // protect POST requests to all routes that start with /protected-posts - if (event.url.pathname.startsWith('/app') && event.request.method === 'POST') { - const session = await event.locals.getSession() - if (!session) { - // the user is not signed in - throw error(400, '/auth/login') - } - } - - return resolve(event) + }); } -const setLocale: Handle = async ({ event, resolve }) => { - const lang = event.request.headers.get('accept-language')?.split(',')[0]; - if (lang) { - locale.set(lang); - } - return resolve(event); -}; - -export const handle: Handle = sequence(supabase, authorization, setLocale); \ No newline at end of file +export const handle = sequence(setLocale, handleSB); \ No newline at end of file diff --git a/src/lib/components/ui/dashboardCard.svelte b/src/lib/components/ui/dashboardCard.svelte index 385dfd72..d3431c75 100644 --- a/src/lib/components/ui/dashboardCard.svelte +++ b/src/lib/components/ui/dashboardCard.svelte @@ -2,15 +2,15 @@ import { Card, Collapse } from 'svelte-ux'; // export let locationName = 'Location Name' export let data; - const locationId = data.cw_locations.location_id; - const locationName = data.cw_locations.name; - const temperature = data.cw_locations.weatherJSON.temperature; - const rainfall = data.cw_locations.weatherJSON.rainfall; - const humidity = data.cw_locations.weatherJSON.humidity; - const windSpeed = data.cw_locations.weatherJSON.windSpeed; + const locationId = data.location_id; + const locationName = data.locationName; + const temperature = data.weatherJSON.temperature; + const rainfall = data.weatherJSON.rainfall; + const humidity = data.weatherJSON.humidity; + const windSpeed = data.weatherJSON.windSpeed; -
+
- - - -
-
-
-
- + {#each data.devices as device} + + + + +
+
+
+
+ +
+

{device.cw_devices.name}

-

Sensor 1

+

{device.cw_devices.primary_data}{device.cw_devices.primary_data_notation}

+

{device.cw_devices.secondary_data}{device.cw_devices.secondary_data_notation}

-

25ºC

-

34%

-
- -
-
-

Soil Details

-
-
-

Temperature

-

27ºC

-
-
-

Moisture

-

23%

-
-
-

pH

-

3.4

-
-
-

EC

-

7.6

-
- - -
+ +
+
+

Details

+
-

N

+

Temperature

+

27ºC

+
+
+

Moisture

23%

-

P

+

pH

3.4

-

K

+

EC

7.6

-
-
- - - - -
-
-
-
- + + +
+
+

N

+

23%

+
+
+

P

+

3.4

+
+
+

K

+

7.6

-

Sensor 1

-

25ºC

-

34%

-
-
- Lorem ipsum dolor sit amet consectetur adipisicing elit. Reiciendis quod culpa et, - dolores omnis, ipsum in perspiciatis porro ut nihil molestiae molestias tenetur delectus - velit! Inventore laborum rerum at id? -
- - + + + {/each}
diff --git a/src/routes/(api)/api/v1/dashboard/+server.ts b/src/routes/(api)/api/v1/dashboard/+server.ts index 1da1ecbb..9bb138a6 100644 --- a/src/routes/(api)/api/v1/dashboard/+server.ts +++ b/src/routes/(api)/api/v1/dashboard/+server.ts @@ -1,4 +1,5 @@ import { redirect, type RequestHandler } from "@sveltejs/kit"; +import moment from "moment"; export const GET: RequestHandler = async ({ url, fetch, locals: { supabase, safeGetSession } }) => { const { session } = await safeGetSession(); @@ -19,25 +20,39 @@ export const GET: RequestHandler = async ({ url, fetch, locals: { supabase, safe for (let dil of devicesInLocation) { const data_table = dil.cw_devices.cw_device_type.data_table; const primaryData = dil.cw_devices.cw_device_type.primary_data; + const secondaryData = dil.cw_devices.cw_device_type.secondary_data; + const queryString = `created_at, ${primaryData}${(secondaryData != null && secondaryData != '') ? ',' + secondaryData : ''}`; const { data, error } = await supabase .from(data_table) - .select(`created_at, ${primaryData}`) + .select(queryString) .limit(1) .single(); + if (error) { + console.error(error); + continue; + } + if (data) { + dil.cw_devices.primary_data = data[primaryData]; + dil.cw_devices.primary_data_notation = dil.cw_devices.cw_device_type.primary_data_notation; + dil.cw_devices.secondary_data = data[secondaryData]; + dil.cw_devices.secondary_data_notation = dil.cw_devices.cw_device_type.secondary_data_notation; + dil.cw_devices.isPastDue = (dil.cw_devices.upload_interval && moment().diff(moment(data.created_at), 'minutes') > dil.cw_devices.upload_interval) ? false : true; + } + dashboardResponse.push({ lastReceived: data.created_at, sensorName: dil.cw_devices.name, - sensorPrimaryData: data, - sensorSecondaryData: null, + devices: devicesInLocation, locationName: locationItem.cw_locations.name, - }) + lat: locationItem.cw_locations.latitude, + lng: locationItem.cw_locations.longitude, - console.log(data, error); + }); } } - console.log(dashboardResponse) + return new Response(JSON.stringify(dashboardResponse), { status: 200, diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts index b6df8155..42600bf2 100644 --- a/src/routes/+layout.server.ts +++ b/src/routes/+layout.server.ts @@ -1,6 +1,11 @@ // src/routes/+layout.server.ts -export const load = async ({ locals: { getSession } }) => { +import type { LayoutServerLoad } from './$types' + +export const load = (async ({ locals: { safeGetSession } }) => { + const { session, user } = await safeGetSession() + return { - session: await getSession(), + session, + user, } -} \ No newline at end of file +}) satisfies LayoutServerLoad \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 4eeacf1f..b8907540 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -39,7 +39,7 @@
-
-
+
{#if !data.session} @@ -103,7 +103,7 @@ {/if} -
+
diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index 6af1035f..e69de29b 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -1,118 +0,0 @@ -import type { SupabaseClient } from "@supabase/supabase-js"; -import { redirect } from "@sveltejs/kit"; - - -/** @type {import('./$types').PageLoad} */ -export async function load({ params, fetch, locals: { supabase, safeGetSession } }) { - let session = await safeGetSession(); - console.log(session) - if (!session) throw redirect(304, '/auth/login'); - const user_id = session?.user.id; - - // console.log(data, error) - const locationsRequest = await fetch(`/api/v1/dashboard`); - const locationsData = await locationsRequest.json(); - const locations = await updateLocations(locationsData, supabase, user_id) - - console.log("LOCATIONS\n", locations) - - - return { - locations: locations, - // weatherJSON: await getWeatherAPIData(), - // sensor: await supabase.from('cw_ss_tmepnpk').select('*').eq('dev_eui', params.sensor_eui).order('created_at', { ascending: false }).limit(100), - }; -} - -async function updateLocations(locations, supabase, user_id) { - for (var location of locations) { - const weatherJSON = await getWeatherAPIData(location.lat, location.lng); - location.weatherJSON = weatherJSON - } - return locations -} - -async function getWeatherAPIData(lat: number, lng: number) { - try { - const weatherRequest = await fetch( - `https://api.open-meteo.com/v1/forecast?latitude=${lat}&longitude=${lng}¤t=temperature_2m,relative_humidity_2m,is_day,rain,cloud_cover,surface_pressure,wind_speed_10m,wind_direction_10m&hourly=temperature_2m&daily=uv_index_max`, - ); - const weatherJSON = await weatherRequest.json(); - const result = convertApiResponseToResultIncludingLux(weatherJSON); - return result; - } catch (error) { - - } -} - - -function convertApiResponseToResultIncludingLux(apiResponse) { - // Helper function to convert wind direction from degrees to cardinal directions - const degreesToDirection = (deg: number) => { - if (deg >= 337.5 || deg < 22.5) { - return 'N'; - } else if (deg >= 22.5 && deg < 67.5) { - return 'NE'; - } else if (deg >= 67.5 && deg < 112.5) { - return 'E'; - } else if (deg >= 112.5 && deg < 157.5) { - return 'SE'; - } else if (deg >= 157.5 && deg < 202.5) { - return 'S'; - } else if (deg >= 202.5 && deg < 247.5) { - return 'SW'; - } else if (deg >= 247.5 && deg < 292.5) { - return 'W'; - } else if (deg >= 292.5 && deg < 337.5) { - return 'NW'; - } else { - return 'N/A'; // In case of any unexpected value - } - }; - - // Assuming a basic conversion for cloud cover to lux as a placeholder - // Note: This is a simplistic approach and not scientifically accurate - const cloudCoverToLux = (cloudCover: number) => { - // Assuming a maximum lux of 100,000 for clear sky conditions and subtracting based on cloud cover percentage - return Math.max(0, 100000 - (cloudCover * 1000)); - }; - - // Extracting necessary data from the API response - const result = { - temperature: apiResponse.current.temperature_2m || 0, - humidity: apiResponse.current.relative_humidity_2m || 0, - lux: apiResponse.current.cloud_cover !== undefined ? cloudCoverToLux(apiResponse.current.cloud_cover) : 0, - uv: 0, // Assuming not available from the API - pressure: apiResponse.current.surface_pressure || 0, - windSpeed: apiResponse.current.wind_speed_10m || 0, - windDirection: apiResponse.current.wind_direction_10m ? degreesToDirection(apiResponse.current.wind_direction_10m) : 'N/A', - rainfall: apiResponse.current.rain || 0 - }; - - return result; -} - - - -// /* -// RLS: - -// CREATE POLICY user_owns_location -// ON public.cw_locations -// FOR SELECT -// USING ( -// EXISTS ( -// SELECT 1 -// FROM public.cw_location_owners -// WHERE -// public.cw_location_owners.location_id = public.cw_locations.location_id -// AND public.cw_location_owners.user_id = auth.uid() -- Replace `current_user_id()` with your method of obtaining the current user's ID, often `auth.uid()` -// AND public.cw_location_owners.is_active = true -// ) -// ); - - - - - -// */ \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index b3139780..fb41ce5d 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,54 +1,2 @@ - - - - Home - - - - -
- - -
-
- -
-
- - -
- -

Dashboard

- - -
-
- -
-

Filter

-
-
- - {#each locations as location} - - {/each} -
+//Goto login or app page +
CLICK \ No newline at end of file diff --git a/src/routes/about/+page.svelte b/src/routes/about/+page.svelte deleted file mode 100644 index 629a04ec..00000000 --- a/src/routes/about/+page.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - About - - - -
-

About this app

- -

- This is a SvelteKit app. You can make your own by typing the - following into your command line and following the prompts: -

- -
npm create svelte@latest
- -

- The page you're looking at is purely static HTML, with no client-side interactivity needed. - Because of that, we don't need to load any JavaScript. Try viewing the page's source, or opening - the devtools network panel and reloading. -

- -
diff --git a/src/routes/about/+page.ts b/src/routes/about/+page.ts deleted file mode 100644 index e739ef4b..00000000 --- a/src/routes/about/+page.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { dev } from '$app/environment'; - -// we don't need any JS on this page, though we'll load -// it in dev so that we get hot module replacement -export const csr = dev; - -// since there's no dynamic data here, we can prerender -// it so that it gets served as a static asset in production -export const prerender = true; diff --git a/src/routes/app/+page.server.ts b/src/routes/app/+page.server.ts new file mode 100644 index 00000000..40eeb462 --- /dev/null +++ b/src/routes/app/+page.server.ts @@ -0,0 +1,117 @@ +import { redirect } from "@sveltejs/kit"; + + +/** @type {import('./$types').PageLoad} */ +export async function load({ params, fetch, locals: { supabase, safeGetSession } }) { + let session = await safeGetSession(); + console.log(session) + if (!session) throw redirect(304, '/auth/login'); + const user_id = session?.user.id; + + // console.log(data, error) + const locationsRequest = await fetch(`/api/v1/dashboard`); + const locationsData = await locationsRequest.json(); + const locations = await updateLocations(locationsData, supabase, user_id) + + console.log("LOCATIONS\n", locations) + + + return { + locations: locations, + // weatherJSON: await getWeatherAPIData(), + // sensor: await supabase.from('cw_ss_tmepnpk').select('*').eq('dev_eui', params.sensor_eui).order('created_at', { ascending: false }).limit(100), + }; +} + +async function updateLocations(locations, supabase, user_id) { + for (var location of locations) { + const weatherJSON = await getWeatherAPIData(location.lat, location.lng); + location.weatherJSON = weatherJSON + } + return locations +} + +async function getWeatherAPIData(lat: number, lng: number) { + try { + const weatherRequest = await fetch( + `https://api.open-meteo.com/v1/forecast?latitude=${lat}&longitude=${lng}¤t=temperature_2m,relative_humidity_2m,is_day,rain,cloud_cover,surface_pressure,wind_speed_10m,wind_direction_10m&hourly=temperature_2m&daily=uv_index_max`, + ); + const weatherJSON = await weatherRequest.json(); + const result = convertApiResponseToResultIncludingLux(weatherJSON); + return result; + } catch (error) { + + } +} + + +function convertApiResponseToResultIncludingLux(apiResponse) { + // Helper function to convert wind direction from degrees to cardinal directions + const degreesToDirection = (deg: number) => { + if (deg >= 337.5 || deg < 22.5) { + return 'N'; + } else if (deg >= 22.5 && deg < 67.5) { + return 'NE'; + } else if (deg >= 67.5 && deg < 112.5) { + return 'E'; + } else if (deg >= 112.5 && deg < 157.5) { + return 'SE'; + } else if (deg >= 157.5 && deg < 202.5) { + return 'S'; + } else if (deg >= 202.5 && deg < 247.5) { + return 'SW'; + } else if (deg >= 247.5 && deg < 292.5) { + return 'W'; + } else if (deg >= 292.5 && deg < 337.5) { + return 'NW'; + } else { + return 'N/A'; // In case of any unexpected value + } + }; + + // Assuming a basic conversion for cloud cover to lux as a placeholder + // Note: This is a simplistic approach and not scientifically accurate + const cloudCoverToLux = (cloudCover: number) => { + // Assuming a maximum lux of 100,000 for clear sky conditions and subtracting based on cloud cover percentage + return Math.max(0, 100000 - (cloudCover * 1000)); + }; + + // Extracting necessary data from the API response + const result = { + temperature: apiResponse.current.temperature_2m || 0, + humidity: apiResponse.current.relative_humidity_2m || 0, + lux: apiResponse.current.cloud_cover !== undefined ? cloudCoverToLux(apiResponse.current.cloud_cover) : 0, + uv: 0, // Assuming not available from the API + pressure: apiResponse.current.surface_pressure || 0, + windSpeed: apiResponse.current.wind_speed_10m || 0, + windDirection: apiResponse.current.wind_direction_10m ? degreesToDirection(apiResponse.current.wind_direction_10m) : 'N/A', + rainfall: apiResponse.current.rain || 0 + }; + + return result; +} + + + +// /* +// RLS: + +// CREATE POLICY user_owns_location +// ON public.cw_locations +// FOR SELECT +// USING ( +// EXISTS ( +// SELECT 1 +// FROM public.cw_location_owners +// WHERE +// public.cw_location_owners.location_id = public.cw_locations.location_id +// AND public.cw_location_owners.user_id = auth.uid() -- Replace `current_user_id()` with your method of obtaining the current user's ID, often `auth.uid()` +// AND public.cw_location_owners.is_active = true +// ) +// ); + + + + + +// */ \ No newline at end of file diff --git a/src/routes/app/+page.svelte b/src/routes/app/+page.svelte new file mode 100644 index 00000000..b3139780 --- /dev/null +++ b/src/routes/app/+page.svelte @@ -0,0 +1,54 @@ + + + + Home + + + + +
+ + +
+
+ +
+
+ + +
+ +

Dashboard

+ + +
+
+ +
+

Filter

+
+
+ + {#each locations as location} + + {/each} +
From 34106e85a2d42b6d2201cd48f52dca35467f5fba Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Tue, 30 Apr 2024 16:02:32 +0900 Subject: [PATCH 14/18] dashboard in a good place, just need to fix expanded view --- src/lib/components/ui/dashboardCard.svelte | 87 ++++++++----------- .../api/v1/devices/[dev_eui]/data/+server.ts | 17 +++- .../api/v1/locations/[id]/devices/+server.ts | 5 +- src/routes/+layout.svelte | 69 ++++++++------- src/routes/app/+page.server.ts | 10 ++- src/routes/app/+page.svelte | 6 +- 6 files changed, 96 insertions(+), 98 deletions(-) diff --git a/src/lib/components/ui/dashboardCard.svelte b/src/lib/components/ui/dashboardCard.svelte index d2915e88..974ee2a2 100644 --- a/src/lib/components/ui/dashboardCard.svelte +++ b/src/lib/components/ui/dashboardCard.svelte @@ -1,22 +1,33 @@
@@ -30,7 +41,6 @@
-

Rainfall: {rainfall}%

Humidity: {humidity}%

Windspeed: {windSpeed} km/h

@@ -42,7 +52,7 @@
-

{locationName}

+

{locationName ?? '--'}

@@ -55,12 +65,11 @@
- {#each data.devices as device} - + {#each $devices as device} - loadDeviceDataFor(device)}> +
@@ -76,10 +85,14 @@

{device.cw_devices.name}

- {device.cw_devices.primary_data}{device.cw_devices.primary_data_notation} + {#if device.data && device.data.primaryData && device.data.primary_data_notation} + {device.data[device.data.primaryData]}{device.data.primary_data_notation} + {/if}

- {device.cw_devices.secondary_data}{device.cw_devices.secondary_data_notation} + {#if device.data && device.data.secondaryData && device.data.secondary_data_notation} + {device.data[device.data.secondaryData]}{device.data.secondary_data_notation} + {/if}

@@ -90,42 +103,12 @@
{#if device.data} {#each Object.keys(device.data) as dataPointKey} -
-

{dataPointKey}

-

{device.data[dataPointKey]}

-
+
+

{dataPointKey}

+

{device.data[dataPointKey]}

+
{/each} {/if} -
diff --git a/src/routes/(api)/api/v1/devices/[dev_eui]/data/+server.ts b/src/routes/(api)/api/v1/devices/[dev_eui]/data/+server.ts index d0eb21b9..8dca81a0 100644 --- a/src/routes/(api)/api/v1/devices/[dev_eui]/data/+server.ts +++ b/src/routes/(api)/api/v1/devices/[dev_eui]/data/+server.ts @@ -19,15 +19,24 @@ export const GET: RequestHandler = async ({ url, params, locals: { supabase, saf }); } - let dataTable = await getDeviceDataTable(dev_eui, session, supabase); + let deviceType = await getDeviceDataTable(dev_eui, session, supabase); const { data, error } = await supabase - .from(dataTable) + .from(deviceType.data_table) .select('*') .eq('dev_eui', dev_eui) .order('created_at', { ascending: true }) .range(+startingPage, +itemsPerPage) - ; + .limit(1) + .single(); + + if (data) { + data.primaryData = deviceType.primary_data; + data.secondaryData = deviceType.secondary_data; + data.primary_data_notation = deviceType.primary_data_notation; + data.secondary_data_notation = deviceType.secondary_data_notation; + } + return new Response( JSON.stringify(data) || error, @@ -53,7 +62,7 @@ async function getDeviceDataTable(dev_eui: string, session: any, supabase: any) if (error) { return null; } else { - return data.cw_devices.cw_device_type.data_table; + return data.cw_devices.cw_device_type; } } catch (error) { return new Response( diff --git a/src/routes/(api)/api/v1/locations/[id]/devices/+server.ts b/src/routes/(api)/api/v1/locations/[id]/devices/+server.ts index 4bd72ad8..9be682e4 100644 --- a/src/routes/(api)/api/v1/locations/[id]/devices/+server.ts +++ b/src/routes/(api)/api/v1/locations/[id]/devices/+server.ts @@ -1,19 +1,20 @@ import { redirect, type RequestHandler } from "@sveltejs/kit"; -export const GET: RequestHandler = async ({ url, locals: { supabase, safeGetSession } }) => { +export const GET: RequestHandler = async ({ url, params, locals: { supabase, safeGetSession } }) => { const { session } = await safeGetSession(); if (!session) { throw redirect(303, '/auth/unauthorized'); } const query = new URLSearchParams(url.search); + const locationId = +(params.id ?? 0); const startingPage = query.get('pageNumber') || 0; const itemsPerPage = query.get('itemsPerPage') || 10; const { data, error } = await supabase .from('cw_device_locations') .select('*, cw_devices(*)') - .eq('id', url.searchParams.get('id')) + .eq('location_id', locationId) .range(+startingPage, +itemsPerPage) ; return new Response( diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index c737ea8e..eb40a326 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -38,8 +38,8 @@ -
- +
+
+ + devices
- +
{/if} - + -->
diff --git a/src/routes/app/+page.server.ts b/src/routes/app/+page.server.ts index 40eeb462..d195a00d 100644 --- a/src/routes/app/+page.server.ts +++ b/src/routes/app/+page.server.ts @@ -9,12 +9,14 @@ export async function load({ params, fetch, locals: { supabase, safeGetSession } const user_id = session?.user.id; // console.log(data, error) - const locationsRequest = await fetch(`/api/v1/dashboard`); + // const locationsRequest = await fetch(`/api/v1/dashboard`); + const locationsRequest = await fetch(`/api/v1/locations`); const locationsData = await locationsRequest.json(); - const locations = await updateLocations(locationsData, supabase, user_id) - - console.log("LOCATIONS\n", locations) + const locations = await updateLocations(locationsData, supabase, user_id); + for(var location of locations){ + location.weatherJSON = await getWeatherAPIData(location.cw_locations.latitude, location.cw_locations.longitude); + } return { locations: locations, diff --git a/src/routes/app/+page.svelte b/src/routes/app/+page.svelte index b3139780..b7aa7b4f 100644 --- a/src/routes/app/+page.svelte +++ b/src/routes/app/+page.svelte @@ -6,9 +6,9 @@ import { onMount } from 'svelte'; onMount(async () => { - const response = await fetch('/api/v1/dashboard'); - const data = await response.json(); - console.log('loaded data', data); + // const response = await fetch('/api/v1/dashboard'); + // const data = await response.json(); + // console.log('loaded data', data); }); From 17b7c2e3e648f0e60a3a5266542fc3b9e2499af1 Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Tue, 30 Apr 2024 16:45:33 +0900 Subject: [PATCH 15/18] loading devices for locations --- src/lib/components/ui/Back.svelte | 8 ++--- src/lib/components/ui/dashboardCard.svelte | 17 +++++++++-- .../(api)/api/v1/locations/[id]/+server.ts | 0 src/routes/app/locations/+page.svelte | 30 ------------------- .../app/locations/[location_id]/+page.svelte | 28 +++++++++++++++++ .../locations/[location_Id]/+page.svelte | 12 -------- 6 files changed, 46 insertions(+), 49 deletions(-) create mode 100644 src/routes/(api)/api/v1/locations/[id]/+server.ts delete mode 100644 src/routes/app/locations/+page.svelte create mode 100644 src/routes/app/locations/[location_id]/+page.svelte delete mode 100644 src/routes/locations/[location_Id]/+page.svelte diff --git a/src/lib/components/ui/Back.svelte b/src/lib/components/ui/Back.svelte index 2f8e2866..4ba34f2f 100644 --- a/src/lib/components/ui/Back.svelte +++ b/src/lib/components/ui/Back.svelte @@ -1,5 +1,5 @@ \ No newline at end of file + history.go(-1)}> + + +
diff --git a/src/lib/components/ui/dashboardCard.svelte b/src/lib/components/ui/dashboardCard.svelte index 974ee2a2..1783dd0a 100644 --- a/src/lib/components/ui/dashboardCard.svelte +++ b/src/lib/components/ui/dashboardCard.svelte @@ -1,6 +1,6 @@ -
+
+ {#if $devices.length === 0 && loading} + + {/if} {#each $devices as device} {#if device.data && device.data.primaryData && device.data.primary_data_notation} {device.data[device.data.primaryData]}{device.data.primary_data_notation} + {:else} + N/A {/if}

{#if device.data && device.data.secondaryData && device.data.secondary_data_notation} {device.data[device.data.secondaryData]}{device.data.secondary_data_notation} + {:else} + N/A {/if}

@@ -108,6 +117,8 @@

{device.data[dataPointKey]}

{/each} + {:else} + {/if}
diff --git a/src/routes/(api)/api/v1/locations/[id]/+server.ts b/src/routes/(api)/api/v1/locations/[id]/+server.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/routes/app/locations/+page.svelte b/src/routes/app/locations/+page.svelte deleted file mode 100644 index 435bfa1f..00000000 --- a/src/routes/app/locations/+page.svelte +++ /dev/null @@ -1,30 +0,0 @@ - - - - Home - - - -

Locations

- -
    - {#each $locationStore as device} -
  • {JSON.stringify(device, null, 2)}
  • - {/each} -
diff --git a/src/routes/app/locations/[location_id]/+page.svelte b/src/routes/app/locations/[location_id]/+page.svelte new file mode 100644 index 00000000..864aad3f --- /dev/null +++ b/src/routes/app/locations/[location_id]/+page.svelte @@ -0,0 +1,28 @@ + + +
+ +
+ + +
+ {#await location} + + {:then loc} +
{JSON.stringify(loc, null, 2)}
+ {/await} +
diff --git a/src/routes/locations/[location_Id]/+page.svelte b/src/routes/locations/[location_Id]/+page.svelte deleted file mode 100644 index 5be65a33..00000000 --- a/src/routes/locations/[location_Id]/+page.svelte +++ /dev/null @@ -1,12 +0,0 @@ - -
- -
- - -
-
\ No newline at end of file From 8b051f997de0e60740be4dd966e98fdbcf6efc91 Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Tue, 30 Apr 2024 17:47:43 +0900 Subject: [PATCH 16/18] about to add openlayers --- .../(api)/api/v1/locations/[id]/+server.ts | 33 +++++++++++++++++++ .../app/locations/[location_id]/+page.svelte | 14 +++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/src/routes/(api)/api/v1/locations/[id]/+server.ts b/src/routes/(api)/api/v1/locations/[id]/+server.ts index e69de29b..e80e9a3e 100644 --- a/src/routes/(api)/api/v1/locations/[id]/+server.ts +++ b/src/routes/(api)/api/v1/locations/[id]/+server.ts @@ -0,0 +1,33 @@ +import { redirect, type RequestHandler } from "@sveltejs/kit"; + +export const GET: RequestHandler = async ({ url, params, locals: { supabase, safeGetSession } }) => { + const { session } = await safeGetSession(); + if (!session) { + throw redirect(303, '/auth/unauthorized'); + } + + const locationId = +(params.id ?? 0); + if (locationId === 0) { + return new Response( + JSON.stringify({ error: 'location_id is required' }), + { + status: 400, + }); + } + const { data, error } = await supabase + .from('cw_location_owners') + .select('*, cw_locations(*)') + .eq('location_id', locationId) + .eq('user_id', session.user.id) + .limit(1) + .single(); + return new Response( + JSON.stringify(data) || + JSON.stringify(error), + { + status: data ? 200 : 404, + headers: { + 'Content-Type': 'application/json', + } + }); +} \ No newline at end of file diff --git a/src/routes/app/locations/[location_id]/+page.svelte b/src/routes/app/locations/[location_id]/+page.svelte index 864aad3f..5929351f 100644 --- a/src/routes/app/locations/[location_id]/+page.svelte +++ b/src/routes/app/locations/[location_id]/+page.svelte @@ -7,7 +7,13 @@ import { ProgressCircle } from 'svelte-ux'; import type { Tables } from '../../../../database.types'; - const location: Promise[]> = browser + const location: Promise> = browser + ? fetch(`/api/v1/locations/${$page.params.location_id}`, { method: 'GET' }).then((r) => + r.json() + ) + : Promise.resolve([]); + + const locationDevices: Promise[]> = browser ? fetch(`/api/v1/locations/${$page.params.location_id}/devices`, { method: 'GET' }).then((r) => r.json() ) @@ -25,4 +31,10 @@ {:then loc}
{JSON.stringify(loc, null, 2)}
{/await} + + {#await locationDevices} + + {:then devices} +
{JSON.stringify(devices, null, 2)}
+ {/await}
From 6187ac1fd8ee389a6fab623e8b92ec4a379d63de Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Tue, 30 Apr 2024 19:49:33 +0900 Subject: [PATCH 17/18] dashboard -> location -> detail click throukgh is working! --- package.json | 1 + pnpm-lock.yaml | 119 ++++++++++++++++++ .../components/maps/leaflet/Leaflet.svelte | 64 ++++++++++ src/lib/components/maps/leaflet/Marker.svelte | 47 +++++++ src/lib/components/maps/openlayers/Map.svelte | 56 +++++++++ .../api/v1/devices/[dev_eui]/data/+server.ts | 46 ++++--- .../app/locations/[location_id]/+page.svelte | 38 +++++- .../app/locations/[location_id]/+page.ts | 1 + 8 files changed, 347 insertions(+), 25 deletions(-) create mode 100644 src/lib/components/maps/leaflet/Leaflet.svelte create mode 100644 src/lib/components/maps/leaflet/Marker.svelte create mode 100644 src/lib/components/maps/openlayers/Map.svelte create mode 100644 src/routes/app/locations/[location_id]/+page.ts diff --git a/package.json b/package.json index 8870bd8f..6d72400e 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "layerchart": "^0.31.1", "leaflet": "^1.9.4", "moment": "^2.30.1", + "ol": "^9.1.0", "plotly.js-dist-min": "^2.31.1", "postcss": "^8.4.24", "postcss-load-config": "^5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 06423ba4..2a8260c3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -97,6 +97,9 @@ devDependencies: leaflet: specifier: ^1.9.4 version: 1.9.4 + ol: + specifier: ^9.1.0 + version: 9.1.0 plotly.js-dist-min: specifier: ^2.31.1 version: 2.31.1 @@ -900,6 +903,10 @@ packages: '@octokit/openapi-types': 22.1.0 dev: true + /@petamoriken/float16@3.8.6: + resolution: {integrity: sha512-GNJhABTtcmt9al/nqdJPycwFD46ww2+q2zwZzTjY0dFFwUAFRw9zszvEr9osyJRd9krRGy6hUDopWUg9fX7VVw==} + dev: true + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1796,6 +1803,28 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true + /color-name@2.0.0: + resolution: {integrity: sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==} + engines: {node: '>=12.20'} + dev: true + + /color-parse@2.0.2: + resolution: {integrity: sha512-eCtOz5w5ttWIUcaKLiktF+DxZO1R9KLNY/xhbV6CkhM7sR3GhVghmt6X6yOnzeaM24po+Z9/S1apbXMwA3Iepw==} + dependencies: + color-name: 2.0.0 + dev: true + + /color-rgba@3.0.0: + resolution: {integrity: sha512-PPwZYkEY3M2THEHHV6Y95sGUie77S7X8v+h1r6LSAPF3/LL2xJ8duUXSrkic31Nzc4odPwHgUbiX/XuTYzQHQg==} + dependencies: + color-parse: 2.0.2 + color-space: 2.0.1 + dev: true + + /color-space@2.0.1: + resolution: {integrity: sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA==} + dev: true + /color-support@1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true @@ -2103,6 +2132,10 @@ packages: engines: {node: '>=12'} dev: false + /earcut@2.2.4: + resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} + dev: true + /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true @@ -2556,6 +2589,20 @@ packages: wide-align: 1.1.5 dev: false + /geotiff@2.1.3: + resolution: {integrity: sha512-PT6uoF5a1+kbC3tHmZSUsLHBp2QJlHasxxxxPW47QIY1VBKpFB+FcDvX+MxER6UzgLQZ0xDzJ9s48B9JbOCTqA==} + engines: {node: '>=10.19'} + dependencies: + '@petamoriken/float16': 3.8.6 + lerc: 3.0.0 + pako: 2.1.0 + parse-headers: 2.0.5 + quick-lru: 6.1.2 + web-worker: 1.3.0 + xml-utils: 1.8.0 + zstddec: 0.1.0 + dev: true + /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true @@ -2691,6 +2738,10 @@ packages: safer-buffer: 2.1.2 dev: true + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -2932,6 +2983,10 @@ packages: resolution: {integrity: sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==} dev: true + /lerc@3.0.0: + resolution: {integrity: sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==} + dev: true + /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3228,6 +3283,17 @@ packages: engines: {node: '>= 6'} dev: true + /ol@9.1.0: + resolution: {integrity: sha512-nDrkJ2tzZNpo/wzN/PpHV5zdxbnXZaFktoMaD2cFLEc6gCwlgLY21Yd8wnt/4FjaVYwLBnbN9USXSwIBGcyksQ==} + dependencies: + color-rgba: 3.0.0 + color-space: 2.0.1 + earcut: 2.2.4 + geotiff: 2.1.3 + pbf: 3.2.1 + rbush: 3.0.1 + dev: true + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -3273,6 +3339,10 @@ packages: p-limit: 3.1.0 dev: true + /pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + dev: true + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -3280,6 +3350,10 @@ packages: callsites: 3.1.0 dev: true + /parse-headers@2.0.5: + resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} + dev: true + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -3331,6 +3405,14 @@ packages: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true + /pbf@3.2.1: + resolution: {integrity: sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==} + hasBin: true + dependencies: + ieee754: 1.2.1 + resolve-protobuf-schema: 2.1.0 + dev: true + /periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} dependencies: @@ -3563,6 +3645,10 @@ packages: engines: {node: '>=6'} dev: true + /protocol-buffers-schema@3.6.0: + resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} + dev: true + /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -3572,10 +3658,25 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true + /quick-lru@6.1.2: + resolution: {integrity: sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==} + engines: {node: '>=12'} + dev: true + + /quickselect@2.0.0: + resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} + dev: true + /ramda@0.29.1: resolution: {integrity: sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==} dev: false + /rbush@3.0.1: + resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==} + dependencies: + quickselect: 2.0.0 + dev: true + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true @@ -3616,6 +3717,12 @@ packages: engines: {node: '>=8'} dev: false + /resolve-protobuf-schema@2.1.0: + resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} + dependencies: + protocol-buffers-schema: 3.6.0 + dev: true + /resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} @@ -4447,6 +4554,10 @@ packages: - terser dev: true + /web-worker@1.3.0: + resolution: {integrity: sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==} + dev: true + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -4512,6 +4623,10 @@ packages: utf-8-validate: optional: true + /xml-utils@1.8.0: + resolution: {integrity: sha512-1TY5yLw8DApowZAUsWCniNr8HH6Ebt6O7UQvmIwziGKwUNsQx6e+4NkfOvCfnqmYIcPjCeoI6dh1JenPJ9a1hQ==} + dev: true + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} @@ -4539,3 +4654,7 @@ packages: /zod@3.23.4: resolution: {integrity: sha512-/AtWOKbBgjzEYYQRNfoGKHObgfAZag6qUJX1VbHo2PRBgS+wfWagEY2mizjfyAPcGesrJOcx/wcl0L9WnVrHFw==} dev: true + + /zstddec@0.1.0: + resolution: {integrity: sha512-w2NTI8+3l3eeltKAdK8QpiLo/flRAr2p8AGeakfMZOXBxOg9HIu4LVDxBi81sYgVhFhdJjv1OrB5ssI8uFPoLg==} + dev: true diff --git a/src/lib/components/maps/leaflet/Leaflet.svelte b/src/lib/components/maps/leaflet/Leaflet.svelte new file mode 100644 index 00000000..6799e076 --- /dev/null +++ b/src/lib/components/maps/leaflet/Leaflet.svelte @@ -0,0 +1,64 @@ + + +
+ {#if map} + + {/if} +
\ No newline at end of file diff --git a/src/lib/components/maps/leaflet/Marker.svelte b/src/lib/components/maps/leaflet/Marker.svelte new file mode 100644 index 00000000..b4d080f2 --- /dev/null +++ b/src/lib/components/maps/leaflet/Marker.svelte @@ -0,0 +1,47 @@ + + +
+ {#if marker} + + {/if} +
\ No newline at end of file diff --git a/src/lib/components/maps/openlayers/Map.svelte b/src/lib/components/maps/openlayers/Map.svelte new file mode 100644 index 00000000..9acf1d43 --- /dev/null +++ b/src/lib/components/maps/openlayers/Map.svelte @@ -0,0 +1,56 @@ + +
+
+ + \ No newline at end of file diff --git a/src/routes/(api)/api/v1/devices/[dev_eui]/data/+server.ts b/src/routes/(api)/api/v1/devices/[dev_eui]/data/+server.ts index 8dca81a0..d1957a65 100644 --- a/src/routes/(api)/api/v1/devices/[dev_eui]/data/+server.ts +++ b/src/routes/(api)/api/v1/devices/[dev_eui]/data/+server.ts @@ -8,8 +8,8 @@ export const GET: RequestHandler = async ({ url, params, locals: { supabase, saf const dev_eui = params.dev_eui; const query = new URLSearchParams(url.search); - const startingPage = query.get('page') || 0; - const itemsPerPage = query.get('count') || 10; + const startingPage = parseInt(query.get('page') || '0'); + const itemsPerPage = parseInt(query.get('count') || '10'); if (!dev_eui) { return new Response( @@ -20,15 +20,28 @@ export const GET: RequestHandler = async ({ url, params, locals: { supabase, saf } let deviceType = await getDeviceDataTable(dev_eui, session, supabase); - - const { data, error } = await supabase + let baseQuery = supabase .from(deviceType.data_table) .select('*') .eq('dev_eui', dev_eui) .order('created_at', { ascending: true }) - .range(+startingPage, +itemsPerPage) - .limit(1) - .single(); + .range(startingPage, startingPage + itemsPerPage - 1); + + // Conditionally apply `.single()` if itemsPerPage is 1 + let finalQuery = itemsPerPage === 1 ? baseQuery.single() : baseQuery; + + const { data, error } = await finalQuery; + + if (error) { + return new Response( + JSON.stringify({ error: error.message }), + { + status: 500, + headers: { + 'Content-Type': 'application/json', + } + }); + } if (data) { data.primaryData = deviceType.primary_data; @@ -38,11 +51,9 @@ export const GET: RequestHandler = async ({ url, params, locals: { supabase, saf } return new Response( - JSON.stringify(data) || - error, + JSON.stringify(data || { error: 'No data found' }), { - status: error ? 500 : 200, - statusText: 'OK', + status: data ? 200 : 404, headers: { 'Content-Type': 'application/json', } @@ -57,22 +68,19 @@ async function getDeviceDataTable(dev_eui: string, session: any, supabase: any) .eq('user_id', session.user.id) .eq('dev_eui', dev_eui) .limit(1) - .single() - ; + .single(); if (error) { - return null; - } else { - return data.cw_devices.cw_device_type; + throw new Error(error.message); } + return data.cw_devices.cw_device_type; } catch (error) { return new Response( - JSON.stringify(error), + JSON.stringify({ error: error.message }), { status: 500, - statusText: 'Server Error', headers: { 'Content-Type': 'application/json', } }); } -} \ No newline at end of file +} diff --git a/src/routes/app/locations/[location_id]/+page.svelte b/src/routes/app/locations/[location_id]/+page.svelte index 5929351f..55a52a0e 100644 --- a/src/routes/app/locations/[location_id]/+page.svelte +++ b/src/routes/app/locations/[location_id]/+page.svelte @@ -6,6 +6,10 @@ import NotificationsBell from '$lib/components/ui/NotificationsBell.svelte'; import { ProgressCircle } from 'svelte-ux'; import type { Tables } from '../../../../database.types'; + import Maps from '$lib/components/maps/openlayers/Map.svelte'; + import Leaflet from '$lib/components/maps/leaflet/Leaflet.svelte'; + import Map from '$lib/components/maps/openlayers/Map.svelte'; + import Marker from '$lib/components/maps/leaflet/Marker.svelte'; const location: Promise> = browser ? fetch(`/api/v1/locations/${$page.params.location_id}`, { method: 'GET' }).then((r) => @@ -29,12 +33,34 @@ {#await location} {:then loc} -
{JSON.stringify(loc, null, 2)}
- {/await} +
+

{loc.cw_locations.name}

+
- {#await locationDevices} - - {:then devices} -
{JSON.stringify(devices, null, 2)}
+ {#await locationDevices} + + {:then devices} + + {#each devices as device} +
CLICK TO GOTO {device.cw_devices.name} + {/each} + {/await} + + + + {#await locationDevices then devices} + {#each devices as device} + +
ICON HERE!
+
+ {/each} + {/await} +
{/await}
diff --git a/src/routes/app/locations/[location_id]/+page.ts b/src/routes/app/locations/[location_id]/+page.ts new file mode 100644 index 00000000..b8dcd205 --- /dev/null +++ b/src/routes/app/locations/[location_id]/+page.ts @@ -0,0 +1 @@ +export let ssr = false; \ No newline at end of file From 34c732253dcc1a78d87002304c316fd006e18000 Mon Sep 17 00:00:00 2001 From: Kevin Cantrell Date: Tue, 30 Apr 2024 20:13:04 +0900 Subject: [PATCH 18/18] made rules link more visible --- src/routes/app/devices/[dev_eui]/data/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/app/devices/[dev_eui]/data/+page.svelte b/src/routes/app/devices/[dev_eui]/data/+page.svelte index e1473791..e96b04d4 100644 --- a/src/routes/app/devices/[dev_eui]/data/+page.svelte +++ b/src/routes/app/devices/[dev_eui]/data/+page.svelte @@ -116,7 +116,7 @@

Device Data

Current Temp: {currentTemp}

Current Humidity: {currentHumidity}