diff --git a/package-lock.json b/package-lock.json index 40132b33f8..55e48f3c57 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,42 +9,42 @@ "version": "0.0.1", "dependencies": { "@aw-labs/appwrite-console": "^6.0.0", - "@aw-labs/icons": "0.0.0-55", - "@aw-labs/ui": "0.0.0-55", - "echarts": "^5.3.3", + "@aw-labs/icons": "0.0.0-58", + "@aw-labs/ui": "0.0.0-58", + "echarts": "^5.4.0", "prismjs": "^1.29.0", "tippy.js": "^6.3.7", "web-vitals": "^2.1.4" }, "devDependencies": { - "@playwright/test": "^1.25.2", - "@sveltejs/adapter-auto": "1.0.0-next.74", - "@sveltejs/kit": "1.0.0-next.483", - "@sveltejs/vite-plugin-svelte": "^1.0.5", - "@testing-library/dom": "^8.17.1", + "@playwright/test": "^1.26.1", + "@sveltejs/adapter-auto": "1.0.0-next.80", + "@sveltejs/kit": "1.0.0-next.509", + "@sveltejs/vite-plugin-svelte": "^1.0.8", + "@testing-library/dom": "^8.18.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/svelte": "3.1.3", "@testing-library/user-event": "^14.4.3", - "@types/gtag.js": "^0.0.11", + "@types/gtag.js": "^0.0.12", "@types/prismjs": "^1.26.0", - "@typescript-eslint/eslint-plugin": "^5.37.0", - "@typescript-eslint/parser": "^5.37.0", - "@vitest/ui": "^0.23.2", - "eslint": "^8.23.1", + "@typescript-eslint/eslint-plugin": "^5.39.0", + "@typescript-eslint/parser": "^5.39.0", + "@vitest/ui": "^0.23.4", + "eslint": "^8.24.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-svelte3": "^4.0.0", "pre-commit": "^1.2.2", "prettier": "^2.7.1", - "prettier-plugin-svelte": "^2.7.0", - "sass": "^1.54.9", + "prettier-plugin-svelte": "^2.7.1", + "sass": "^1.55.0", "svelte": "^3.50.1", - "svelte-check": "^2.9.0", + "svelte-check": "^2.9.1", "svelte-jester": "^2.3.2", "svelte-preprocess": "^4.10.7", "tslib": "^2.4.0", - "typescript": "^4.7.4", - "vite": "^3.1.1", - "vitest": "^0.23.2" + "typescript": "^4.8.4", + "vite": "^3.1.4", + "vitest": "^0.23.4" }, "engines": { "node": ">=16" @@ -79,14 +79,14 @@ } }, "node_modules/@aw-labs/icons": { - "version": "0.0.0-55", - "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-55.tgz", - "integrity": "sha512-d0SkIdojCodV9Amu4l63DzVw6AH3pjyhGSfwS3jWb9KMztVOgMHnJ1tXooFUjvglALToSNHH/C9ATAN5HsqpDQ==" + "version": "0.0.0-58", + "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-58.tgz", + "integrity": "sha512-xUD5DQcYVNiKhDSpxMO24G/4l7txgAdwochK01tJA6wXhuPAcp5Yjuofjm2bGkMzCuze4Vs+SVvhsBxzVXRPrA==" }, "node_modules/@aw-labs/ui": { - "version": "0.0.0-55", - "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-55.tgz", - "integrity": "sha512-sEWRRwX3Omx7P/q9e52xYFdmSpHlTRPDpVU6ulBVwNcWOO9wduHQeuQyE0wqtGffvd51Fq27I5NWukWu5tkFlw==", + "version": "0.0.0-58", + "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-58.tgz", + "integrity": "sha512-W3bTvAPX4ig5qLBvGn/VpNaDk62RqO4oDa0poube2WuElkVvaGwFAR0wCwmisdi2NeXyGJqt20g3Y/Mz4K2yMA==", "dependencies": { "@aw-labs/icons": "*" } @@ -764,9 +764,9 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", - "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", + "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -1292,13 +1292,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.25.2", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.25.2.tgz", - "integrity": "sha512-6qPznIR4Fw02OMbqXUPMG6bFFg1hDVNEdihKy0t9K0dmRbus1DyP5Q5XFQhGwEHQkLG5hrSfBuu9CW/foqhQHQ==", + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.26.1.tgz", + "integrity": "sha512-bNxyZASVt2adSZ9gbD7NCydzcb5JaI0OR9hc7s+nmPeH604gwp0zp17NNpwXY4c8nvuBGQQ9oGDx72LE+cUWvw==", "dev": true, "dependencies": { "@types/node": "*", - "playwright-core": "1.25.2" + "playwright-core": "1.26.1" }, "bin": { "playwright": "cli.js" @@ -1362,67 +1362,67 @@ } }, "node_modules/@sveltejs/adapter-auto": { - "version": "1.0.0-next.74", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.74.tgz", - "integrity": "sha512-oQV7eyXQboF2x4oanGt9D6eXnunEsfndGoJmy0HqAErX2r7LT5EN4mTyU4IkG8THKcrT15eYhGrCCeGj5Lo+Bg==", + "version": "1.0.0-next.80", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.80.tgz", + "integrity": "sha512-352WoZr9fQgxJqgNENvxRr2gsA+wTF6V9AVaQaaatDYd3RVEBaXTYOOalFaRLSa25mRUJaLYP2aaliqczMl23g==", "dev": true, "dependencies": { - "@sveltejs/adapter-cloudflare": "1.0.0-next.33", - "@sveltejs/adapter-netlify": "1.0.0-next.77", - "@sveltejs/adapter-vercel": "1.0.0-next.75" + "@sveltejs/adapter-cloudflare": "1.0.0-next.38", + "@sveltejs/adapter-netlify": "1.0.0-next.78", + "@sveltejs/adapter-vercel": "1.0.0-next.77" } }, "node_modules/@sveltejs/adapter-cloudflare": { - "version": "1.0.0-next.33", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-1.0.0-next.33.tgz", - "integrity": "sha512-RNHHv3qcIZG7JbvucZEUEM5Vxqt6VApfIpXcOuAfq5IhJ+AOR33L+aAtkbIxhCcXr8d237YHibNWFSnxCHoVOg==", + "version": "1.0.0-next.38", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-1.0.0-next.38.tgz", + "integrity": "sha512-N6jdTomRZkdKlcNoguwYD7lpdXSt0beIyUJsp0MS/YLm/4gI83y698zFYInFKJ9t5e6DAnuEBSAXcg568z2oFA==", "dev": true, "dependencies": { "@cloudflare/workers-types": "^3.14.0", - "esbuild": "^0.15.6", + "esbuild": "^0.15.7", "worktop": "0.8.0-next.14" } }, "node_modules/@sveltejs/adapter-netlify": { - "version": "1.0.0-next.77", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.77.tgz", - "integrity": "sha512-g4+i8xQROxw4Olt5T0bJAj3qCDuluQ/JnvzqajEz620COuIddpa2B1xK5DmbAhxQox823jLNTxg7LOEpBqD3bw==", + "version": "1.0.0-next.78", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.78.tgz", + "integrity": "sha512-Yyn/j/0QcLK3Db442ducLUZmyvkO74j7Gdcwu9xN0fQN3kBlCJP9Itx5o4SySrPFGc4Q8cLJ5ELNg+mWduLBAA==", "dev": true, "dependencies": { "@iarna/toml": "^2.2.5", - "esbuild": "^0.15.6", + "esbuild": "^0.15.7", "set-cookie-parser": "^2.4.8" } }, "node_modules/@sveltejs/adapter-vercel": { - "version": "1.0.0-next.75", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.75.tgz", - "integrity": "sha512-aFy24cx/N7fiTkmSMKB/9BTPJe5Dqre7mUMGwzguugr8FlZw/uvkjcNoqr7XrLqPCB+C550vQOJ/KeEV0g3NwQ==", + "version": "1.0.0-next.77", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.77.tgz", + "integrity": "sha512-r4MqtP+lzx83HfcvI8PU0Yxzmxt6WQq9nzZETLboJouJzhSBUFIN5RmNZfEn6nNIlUwZbGQUEK/FxsRnnxI/Ig==", "dev": true, "dependencies": { "@vercel/nft": "^0.22.0", - "esbuild": "^0.15.6" + "esbuild": "^0.15.7" } }, "node_modules/@sveltejs/kit": { - "version": "1.0.0-next.483", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.483.tgz", - "integrity": "sha512-0aiVdVJSy1kiK7xp4bw81qjDkErVaA6oIPlpbjsIYe2UYfeg3aRtST41b6XzLbyg61qLlHVGoM5WTLTIdLnbAQ==", + "version": "1.0.0-next.509", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.509.tgz", + "integrity": "sha512-PKynROFwayitCsMw1ZRtf7ezoI9YzWbQxAQy0NskNUSWf7iUo1ng7Qd/bB5VpFqKIrjgi/nWl8hriaemkit2Vg==", "dev": true, "hasInstallScript": true, "dependencies": { "@sveltejs/vite-plugin-svelte": "^1.0.5", + "@types/cookie": "^0.5.1", "cookie": "^0.5.0", - "devalue": "^3.1.2", + "devalue": "^4.0.0", "kleur": "^4.1.4", "magic-string": "^0.26.2", "mime": "^3.0.0", - "node-fetch": "^3.2.4", "sade": "^1.8.1", "set-cookie-parser": "^2.4.8", "sirv": "^2.0.2", "tiny-glob": "^0.2.9", - "undici": "^5.8.1" + "undici": "^5.11.0" }, "bin": { "svelte-kit": "svelte-kit.js" @@ -1447,28 +1447,10 @@ "node": ">=12" } }, - "node_modules/@sveltejs/kit/node_modules/node-fetch": { - "version": "3.2.10", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", - "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", - "dev": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.5.tgz", - "integrity": "sha512-CmSdSow0Dr5ua1A11BQMtreWnE0JZmkVIcRU/yG3PKbycKUpXjNdgYTWFSbStLB0vdlGnBbm2+Y4sBVj+C+TIw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.8.tgz", + "integrity": "sha512-1xkVTB4pm6zuign858FzVYE9Fdw9MQBOlxrdd85STV0NvTDmcofcRpcrK+zcIyT8SZ2dseHLu8hvDwzssF6RfA==", "dev": true, "dependencies": { "@rollup/pluginutils": "^4.2.1", @@ -1476,7 +1458,7 @@ "deepmerge": "^4.2.2", "kleur": "^4.1.5", "magic-string": "^0.26.3", - "svelte-hmr": "^0.14.12" + "svelte-hmr": "^0.15.0" }, "engines": { "node": "^14.18.0 || >= 16" @@ -1505,9 +1487,9 @@ } }, "node_modules/@testing-library/dom": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.17.1.tgz", - "integrity": "sha512-KnH2MnJUzmFNPW6RIKfd+zf2Wue8mEKX0M3cpX6aKl5ZXrJM1/c/Pc8c2xDNYQCnJO48Sm5ITbMXgqTr3h4jxQ==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.18.1.tgz", + "integrity": "sha512-oEvsm2B/WtcHKE+IcEeeCqNU/ltFGaVyGbpcm4g/2ytuT49jrlH9x5qRKL/H3A6yfM4YAbSbC0ceT5+9CEXnLg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.10.4", @@ -1663,6 +1645,12 @@ "@types/chai": "*" } }, + "node_modules/@types/cookie": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", + "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", + "dev": true + }, "node_modules/@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -1674,9 +1662,9 @@ } }, "node_modules/@types/gtag.js": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.11.tgz", - "integrity": "sha512-rUuSDedDjcuUpoc2zf6eX6zRrxqALNgwrmMBfVFopkLH7YGM52C7tt6j9GsYIvaxn+ioVRpOKoHnN1DXzHEqIg==", + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz", + "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==", "dev": true }, "node_modules/@types/istanbul-lib-coverage": { @@ -1823,16 +1811,15 @@ "peer": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.37.0.tgz", - "integrity": "sha512-Fde6W0IafXktz1UlnhGkrrmnnGpAo1kyX7dnyHHVrmwJOn72Oqm3eYtddrpOwwel2W8PAK9F3pIL5S+lfoM0og==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.39.0.tgz", + "integrity": "sha512-xVfKOkBm5iWMNGKQ2fwX5GVgBuHmZBO1tCRwXmY5oAIsPscfwm2UADDuNB8ZVYCtpQvJK4xpjrK7jEhcJ0zY9A==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.37.0", - "@typescript-eslint/type-utils": "5.37.0", - "@typescript-eslint/utils": "5.37.0", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/type-utils": "5.39.0", + "@typescript-eslint/utils": "5.39.0", "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", "regexpp": "^3.2.0", "semver": "^7.3.7", @@ -1856,14 +1843,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.37.0.tgz", - "integrity": "sha512-01VzI/ipYKuaG5PkE5+qyJ6m02fVALmMPY3Qq5BHflDx3y4VobbLdHQkSMg9VPRS4KdNt4oYTMaomFoHonBGAw==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.39.0.tgz", + "integrity": "sha512-PhxLjrZnHShe431sBAGHaNe6BDdxAASDySgsBCGxcBecVCi8NQWxQZMcizNA4g0pN51bBAn/FUfkWG3SDVcGlA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.37.0", - "@typescript-eslint/types": "5.37.0", - "@typescript-eslint/typescript-estree": "5.37.0", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/typescript-estree": "5.39.0", "debug": "^4.3.4" }, "engines": { @@ -1883,13 +1870,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.37.0.tgz", - "integrity": "sha512-F67MqrmSXGd/eZnujjtkPgBQzgespu/iCZ+54Ok9X5tALb9L2v3G+QBSoWkXG0p3lcTJsL+iXz5eLUEdSiJU9Q==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.39.0.tgz", + "integrity": "sha512-/I13vAqmG3dyqMVSZPjsbuNQlYS082Y7OMkwhCfLXYsmlI0ca4nkL7wJ/4gjX70LD4P8Hnw1JywUVVAwepURBw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.37.0", - "@typescript-eslint/visitor-keys": "5.37.0" + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1900,13 +1887,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.37.0.tgz", - "integrity": "sha512-BSx/O0Z0SXOF5tY0bNTBcDEKz2Ec20GVYvq/H/XNKiUorUFilH7NPbFUuiiyzWaSdN3PA8JV0OvYx0gH/5aFAQ==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.39.0.tgz", + "integrity": "sha512-KJHJkOothljQWzR3t/GunL0TPKY+fGJtnpl+pX+sJ0YiKTz3q2Zr87SGTmFqsCMFrLt5E0+o+S6eQY0FAXj9uA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.37.0", - "@typescript-eslint/utils": "5.37.0", + "@typescript-eslint/typescript-estree": "5.39.0", + "@typescript-eslint/utils": "5.39.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -1927,9 +1914,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.37.0.tgz", - "integrity": "sha512-3frIJiTa5+tCb2iqR/bf7XwU20lnU05r/sgPJnRpwvfZaqCJBrl8Q/mw9vr3NrNdB/XtVyMA0eppRMMBqdJ1bA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.39.0.tgz", + "integrity": "sha512-gQMZrnfEBFXK38hYqt8Lkwt8f4U6yq+2H5VDSgP/qiTzC8Nw8JO3OuSUOQ2qW37S/dlwdkHDntkZM6SQhKyPhw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1940,13 +1927,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.37.0.tgz", - "integrity": "sha512-JkFoFIt/cx59iqEDSgIGnQpCTRv96MQnXCYvJi7QhBC24uyuzbD8wVbajMB1b9x4I0octYFJ3OwjAwNqk1AjDA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.39.0.tgz", + "integrity": "sha512-qLFQP0f398sdnogJoLtd43pUgB18Q50QSA+BTE5h3sUxySzbWDpTSdgt4UyxNSozY/oDK2ta6HVAzvGgq8JYnA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.37.0", - "@typescript-eslint/visitor-keys": "5.37.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1967,15 +1954,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.37.0.tgz", - "integrity": "sha512-jUEJoQrWbZhmikbcWSMDuUSxEE7ID2W/QCV/uz10WtQqfOuKZUqFGjqLJ+qhDd17rjgp+QJPqTdPIBWwoob2NQ==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.39.0.tgz", + "integrity": "sha512-+DnY5jkpOpgj+EBtYPyHRjXampJfC0yUZZzfzLuUWVZvCuKqSdJVC8UhdWipIw7VKNTfwfAPiOWzYkAwuIhiAg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.37.0", - "@typescript-eslint/types": "5.37.0", - "@typescript-eslint/typescript-estree": "5.37.0", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/typescript-estree": "5.39.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -1991,12 +1978,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.37.0.tgz", - "integrity": "sha512-Hp7rT4cENBPIzMwrlehLW/28EVCOcE9U1Z1BQTc8EA8v5qpr7GRGuG+U58V5tTY48zvUOA3KHvw3rA8tY9fbdA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.39.0.tgz", + "integrity": "sha512-yyE3RPwOG+XJBLrhvsxAidUgybJVQ/hG8BhiJo0k8JSAYfk/CshVcxf0HwP4Jt7WZZ6vLmxdo1p6EyN3tzFTkg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.37.0", + "@typescript-eslint/types": "5.39.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -2039,9 +2026,9 @@ } }, "node_modules/@vitest/ui": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-0.23.2.tgz", - "integrity": "sha512-dO1UxSwEm11OgumUVbEnF7wKwDPoBGjkrvATvvhkFaDw2iiQm8WewF0hmnUVHj6BSNoHUIJ3uXEzfF9T9W+2yg==", + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-0.23.4.tgz", + "integrity": "sha512-lNZVTTrkHThGAwNQ1ah1qCNnm70r7OLB5LCUdSqboStve/1eKTrtt27QfDSSUTG8AVJQzU0eaN/j8UocH+CqfA==", "dev": true, "dependencies": { "sirv": "^2.0.2" @@ -2489,6 +2476,18 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -2812,15 +2811,6 @@ "optional": true, "peer": true }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", - "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/data-urls": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", @@ -2954,9 +2944,9 @@ } }, "node_modules/devalue": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-3.1.3.tgz", - "integrity": "sha512-9KO89Cb+qjzf2CqdrH+NuLaqdk9GhDP5EhR4zlkR51dvuIaiqtlkDkGzLMShDemwUy21raSMdu+kpX8Enw3yGQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.0.0.tgz", + "integrity": "sha512-w25siwXyuMUqMr7jPlEjyNCp1vn0Jzj/fNg3qVt/r/Dpe8HjESh2V92L0jmh3uq4iJt0BvjH+Azk1pQzkcnDWA==", "dev": true }, "node_modules/dir-glob": { @@ -3004,12 +2994,12 @@ } }, "node_modules/echarts": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.3.3.tgz", - "integrity": "sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.0.tgz", + "integrity": "sha512-uPsO9VRUIKAdFOoH3B0aNg7NRVdN7aM39/OjovjO9MwmWsAkfGyeXJhK+dbRi51iDrQWliXV60/XwLA7kg3z0w==", "dependencies": { "tslib": "2.3.0", - "zrender": "5.3.2" + "zrender": "5.4.0" } }, "node_modules/echarts/node_modules/tslib": { @@ -3532,13 +3522,13 @@ } }, "node_modules/eslint": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz", - "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", + "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", "dev": true, "dependencies": { "@eslint/eslintrc": "^1.3.2", - "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/config-array": "^0.10.5", "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", @@ -3964,29 +3954,6 @@ "bser": "2.1.1" } }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -4066,18 +4033,6 @@ "node": ">= 6" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -4116,12 +4071,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, "node_modules/gauge": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", @@ -6126,25 +6075,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, "node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -6496,9 +6426,9 @@ } }, "node_modules/playwright-core": { - "version": "1.25.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.25.2.tgz", - "integrity": "sha512-0yTbUE9lIddkEpLHL3u8PoCL+pWiZtj5A/j3U7YoNjcmKKDGBnCrgHJMzwd2J5vy6l28q4ki3JIuz7McLHhl1A==", + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.26.1.tgz", + "integrity": "sha512-hzFchhhxnEiPc4qVPs9q2ZR+5eKNifY2hQDHtg1HnTTUuphYCBP8ZRb2si+B1TR7BHirgXaPi48LIye5SgrLAA==", "dev": true, "bin": { "playwright": "cli.js" @@ -6628,9 +6558,9 @@ } }, "node_modules/prettier-plugin-svelte": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.7.0.tgz", - "integrity": "sha512-fQhhZICprZot2IqEyoiUYLTRdumULGRvw0o4dzl5jt0jfzVWdGqeYW27QTWAeXhoupEZJULmNoH3ueJwUWFLIA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.7.1.tgz", + "integrity": "sha512-H33qjhCBZyd9Zr1A5hUAYDh7j0Mf97uvy7XcA7CP4nNSYrNcPvBUf7wI8K9NptWTIs0S41QtgTWmJIUiGlEBtw==", "dev": true, "peerDependencies": { "prettier": "^1.16.4 || ^2.0.0", @@ -7015,9 +6945,9 @@ } }, "node_modules/sass": { - "version": "1.54.9", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.9.tgz", - "integrity": "sha512-xb1hjASzEH+0L0WI9oFjqhRi51t/gagWnxLiwUNMltA0Ab6jIDkAacgKiGYKM9Jhy109osM7woEEai6SXeJo5Q==", + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.55.0.tgz", + "integrity": "sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -7221,6 +7151,15 @@ "node": ">=8" } }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -7374,9 +7313,9 @@ } }, "node_modules/svelte-check": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.0.tgz", - "integrity": "sha512-9AVrtP7WbfDgCdqTZNPdj5CCCy1OrYMxFVWAWzNw7fl93c9klFJFtqzVXa6fovfQ050CcpUyJE2dPFL9TFAREw==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.1.tgz", + "integrity": "sha512-+BFPsj6irZ+t2pVSVo//2Ic1mI3A52xCwbkSTVhTqYZqgawcyZd9pYZoEac3fIWbEeTyCb5X82ORKI/gjn+P7A==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.9", @@ -7396,9 +7335,9 @@ } }, "node_modules/svelte-hmr": { - "version": "0.14.12", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.12.tgz", - "integrity": "sha512-4QSW/VvXuqVcFZ+RhxiR8/newmwOCTlbYIezvkeN6302YFRE8cXy0naamHcjz8Y9Ce3ITTZtrHrIL0AGfyo61w==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.0.tgz", + "integrity": "sha512-Aw21SsyoohyVn4yiKXWPNCSW2DQNH/76kvUnE9kpt4h9hcg9tfyQc6xshx9hzgMfGF0kVx0EGD8oBMWSnATeOg==", "dev": true, "engines": { "node": "^12.20 || ^14.13.1 || >= 16" @@ -7738,9 +7677,9 @@ "dev": true }, "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -7751,10 +7690,13 @@ } }, "node_modules/undici": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz", - "integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.11.0.tgz", + "integrity": "sha512-oWjWJHzFet0Ow4YZBkyiJwiK5vWqEYoH7BINzJAJOLedZ++JpAlCbUktW2GQ2DS2FpKmxD/JMtWUUWl1BtghGw==", "dev": true, + "dependencies": { + "busboy": "^1.6.0" + }, "engines": { "node": ">=12.18" } @@ -7801,9 +7743,9 @@ } }, "node_modules/vite": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.1.tgz", - "integrity": "sha512-hgxQWev/AL7nWYrqByYo8nfcH9n97v6oFsta9+JX8h6cEkni7nHKP2kJleNYV2kcGhE8jsbaY1aStwPZXzPbgA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.4.tgz", + "integrity": "sha512-JoQI08aBjY9lycL7jcEq4p9o1xUjq5aRvdH4KWaXtkSx7e7RpAh9D3IjzDWRD4Fg44LS3oDAIOG/Kq1L+82psA==", "dev": true, "dependencies": { "esbuild": "^0.15.6", @@ -7842,9 +7784,9 @@ } }, "node_modules/vitest": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.23.2.tgz", - "integrity": "sha512-kTBKp3ROPDkYC+x2zWt4znkDtnT08W1FQ6ngRFuqxpBGNuNVS+eWZKfffr8y2JGvEzZ9EzMAOcNaiqMj/FZqMw==", + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.23.4.tgz", + "integrity": "sha512-iukBNWqQAv8EKDBUNntspLp9SfpaVFbmzmM0sNcnTxASQZMzRw3PsM6DMlsHiI+I6GeO5/sYDg3ecpC+SNFLrQ==", "dev": true, "dependencies": { "@types/chai": "^4.3.3", @@ -7853,7 +7795,7 @@ "chai": "^4.3.6", "debug": "^4.3.4", "local-pkg": "^0.4.2", - "strip-literal": "^0.4.0", + "strip-literal": "^0.4.1", "tinybench": "^2.1.5", "tinypool": "^0.3.0", "tinyspy": "^1.0.2", @@ -7928,15 +7870,6 @@ "makeerror": "1.0.12" } }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/web-vitals": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", @@ -8177,9 +8110,9 @@ } }, "node_modules/zrender": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.3.2.tgz", - "integrity": "sha512-8IiYdfwHj2rx0UeIGZGGU4WEVSDEdeVCaIg/fomejg1Xu6OifAL1GVzIPHg2D+MyUkbNgPWji90t0a8IDk+39w==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.0.tgz", + "integrity": "sha512-rOS09Z2HSVGFs2dn/TuYk5BlCaZcVe8UDLLjj1ySYF828LATKKdxuakSZMvrDz54yiKPDYVfjdKqcX8Jky3BIA==", "dependencies": { "tslib": "2.3.0" } @@ -8217,14 +8150,14 @@ } }, "@aw-labs/icons": { - "version": "0.0.0-55", - "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-55.tgz", - "integrity": "sha512-d0SkIdojCodV9Amu4l63DzVw6AH3pjyhGSfwS3jWb9KMztVOgMHnJ1tXooFUjvglALToSNHH/C9ATAN5HsqpDQ==" + "version": "0.0.0-58", + "resolved": "https://registry.npmjs.org/@aw-labs/icons/-/icons-0.0.0-58.tgz", + "integrity": "sha512-xUD5DQcYVNiKhDSpxMO24G/4l7txgAdwochK01tJA6wXhuPAcp5Yjuofjm2bGkMzCuze4Vs+SVvhsBxzVXRPrA==" }, "@aw-labs/ui": { - "version": "0.0.0-55", - "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-55.tgz", - "integrity": "sha512-sEWRRwX3Omx7P/q9e52xYFdmSpHlTRPDpVU6ulBVwNcWOO9wduHQeuQyE0wqtGffvd51Fq27I5NWukWu5tkFlw==", + "version": "0.0.0-58", + "resolved": "https://registry.npmjs.org/@aw-labs/ui/-/ui-0.0.0-58.tgz", + "integrity": "sha512-W3bTvAPX4ig5qLBvGn/VpNaDk62RqO4oDa0poube2WuElkVvaGwFAR0wCwmisdi2NeXyGJqt20g3Y/Mz4K2yMA==", "requires": { "@aw-labs/icons": "*" } @@ -8746,9 +8679,9 @@ } }, "@humanwhocodes/config-array": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", - "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", + "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -9169,13 +9102,13 @@ } }, "@playwright/test": { - "version": "1.25.2", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.25.2.tgz", - "integrity": "sha512-6qPznIR4Fw02OMbqXUPMG6bFFg1hDVNEdihKy0t9K0dmRbus1DyP5Q5XFQhGwEHQkLG5hrSfBuu9CW/foqhQHQ==", + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.26.1.tgz", + "integrity": "sha512-bNxyZASVt2adSZ9gbD7NCydzcb5JaI0OR9hc7s+nmPeH604gwp0zp17NNpwXY4c8nvuBGQQ9oGDx72LE+cUWvw==", "dev": true, "requires": { "@types/node": "*", - "playwright-core": "1.25.2" + "playwright-core": "1.26.1" } }, "@polka/url": { @@ -9226,66 +9159,66 @@ } }, "@sveltejs/adapter-auto": { - "version": "1.0.0-next.74", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.74.tgz", - "integrity": "sha512-oQV7eyXQboF2x4oanGt9D6eXnunEsfndGoJmy0HqAErX2r7LT5EN4mTyU4IkG8THKcrT15eYhGrCCeGj5Lo+Bg==", + "version": "1.0.0-next.80", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-1.0.0-next.80.tgz", + "integrity": "sha512-352WoZr9fQgxJqgNENvxRr2gsA+wTF6V9AVaQaaatDYd3RVEBaXTYOOalFaRLSa25mRUJaLYP2aaliqczMl23g==", "dev": true, "requires": { - "@sveltejs/adapter-cloudflare": "1.0.0-next.33", - "@sveltejs/adapter-netlify": "1.0.0-next.77", - "@sveltejs/adapter-vercel": "1.0.0-next.75" + "@sveltejs/adapter-cloudflare": "1.0.0-next.38", + "@sveltejs/adapter-netlify": "1.0.0-next.78", + "@sveltejs/adapter-vercel": "1.0.0-next.77" } }, "@sveltejs/adapter-cloudflare": { - "version": "1.0.0-next.33", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-1.0.0-next.33.tgz", - "integrity": "sha512-RNHHv3qcIZG7JbvucZEUEM5Vxqt6VApfIpXcOuAfq5IhJ+AOR33L+aAtkbIxhCcXr8d237YHibNWFSnxCHoVOg==", + "version": "1.0.0-next.38", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-1.0.0-next.38.tgz", + "integrity": "sha512-N6jdTomRZkdKlcNoguwYD7lpdXSt0beIyUJsp0MS/YLm/4gI83y698zFYInFKJ9t5e6DAnuEBSAXcg568z2oFA==", "dev": true, "requires": { "@cloudflare/workers-types": "^3.14.0", - "esbuild": "^0.15.6", + "esbuild": "^0.15.7", "worktop": "0.8.0-next.14" } }, "@sveltejs/adapter-netlify": { - "version": "1.0.0-next.77", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.77.tgz", - "integrity": "sha512-g4+i8xQROxw4Olt5T0bJAj3qCDuluQ/JnvzqajEz620COuIddpa2B1xK5DmbAhxQox823jLNTxg7LOEpBqD3bw==", + "version": "1.0.0-next.78", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-netlify/-/adapter-netlify-1.0.0-next.78.tgz", + "integrity": "sha512-Yyn/j/0QcLK3Db442ducLUZmyvkO74j7Gdcwu9xN0fQN3kBlCJP9Itx5o4SySrPFGc4Q8cLJ5ELNg+mWduLBAA==", "dev": true, "requires": { "@iarna/toml": "^2.2.5", - "esbuild": "^0.15.6", + "esbuild": "^0.15.7", "set-cookie-parser": "^2.4.8" } }, "@sveltejs/adapter-vercel": { - "version": "1.0.0-next.75", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.75.tgz", - "integrity": "sha512-aFy24cx/N7fiTkmSMKB/9BTPJe5Dqre7mUMGwzguugr8FlZw/uvkjcNoqr7XrLqPCB+C550vQOJ/KeEV0g3NwQ==", + "version": "1.0.0-next.77", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-vercel/-/adapter-vercel-1.0.0-next.77.tgz", + "integrity": "sha512-r4MqtP+lzx83HfcvI8PU0Yxzmxt6WQq9nzZETLboJouJzhSBUFIN5RmNZfEn6nNIlUwZbGQUEK/FxsRnnxI/Ig==", "dev": true, "requires": { "@vercel/nft": "^0.22.0", - "esbuild": "^0.15.6" + "esbuild": "^0.15.7" } }, "@sveltejs/kit": { - "version": "1.0.0-next.483", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.483.tgz", - "integrity": "sha512-0aiVdVJSy1kiK7xp4bw81qjDkErVaA6oIPlpbjsIYe2UYfeg3aRtST41b6XzLbyg61qLlHVGoM5WTLTIdLnbAQ==", + "version": "1.0.0-next.509", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.0.0-next.509.tgz", + "integrity": "sha512-PKynROFwayitCsMw1ZRtf7ezoI9YzWbQxAQy0NskNUSWf7iUo1ng7Qd/bB5VpFqKIrjgi/nWl8hriaemkit2Vg==", "dev": true, "requires": { "@sveltejs/vite-plugin-svelte": "^1.0.5", + "@types/cookie": "^0.5.1", "cookie": "^0.5.0", - "devalue": "^3.1.2", + "devalue": "^4.0.0", "kleur": "^4.1.4", "magic-string": "^0.26.2", "mime": "^3.0.0", - "node-fetch": "^3.2.4", "sade": "^1.8.1", "set-cookie-parser": "^2.4.8", "sirv": "^2.0.2", "tiny-glob": "^0.2.9", - "undici": "^5.8.1" + "undici": "^5.11.0" }, "dependencies": { "magic-string": { @@ -9296,24 +9229,13 @@ "requires": { "sourcemap-codec": "^1.4.8" } - }, - "node-fetch": { - "version": "3.2.10", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz", - "integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==", - "dev": true, - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } } } }, "@sveltejs/vite-plugin-svelte": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.5.tgz", - "integrity": "sha512-CmSdSow0Dr5ua1A11BQMtreWnE0JZmkVIcRU/yG3PKbycKUpXjNdgYTWFSbStLB0vdlGnBbm2+Y4sBVj+C+TIw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-1.0.8.tgz", + "integrity": "sha512-1xkVTB4pm6zuign858FzVYE9Fdw9MQBOlxrdd85STV0NvTDmcofcRpcrK+zcIyT8SZ2dseHLu8hvDwzssF6RfA==", "dev": true, "requires": { "@rollup/pluginutils": "^4.2.1", @@ -9321,7 +9243,7 @@ "deepmerge": "^4.2.2", "kleur": "^4.1.5", "magic-string": "^0.26.3", - "svelte-hmr": "^0.14.12" + "svelte-hmr": "^0.15.0" }, "dependencies": { "magic-string": { @@ -9336,9 +9258,9 @@ } }, "@testing-library/dom": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.17.1.tgz", - "integrity": "sha512-KnH2MnJUzmFNPW6RIKfd+zf2Wue8mEKX0M3cpX6aKl5ZXrJM1/c/Pc8c2xDNYQCnJO48Sm5ITbMXgqTr3h4jxQ==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.18.1.tgz", + "integrity": "sha512-oEvsm2B/WtcHKE+IcEeeCqNU/ltFGaVyGbpcm4g/2ytuT49jrlH9x5qRKL/H3A6yfM4YAbSbC0ceT5+9CEXnLg==", "dev": true, "requires": { "@babel/code-frame": "^7.10.4", @@ -9470,6 +9392,12 @@ "@types/chai": "*" } }, + "@types/cookie": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", + "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", + "dev": true + }, "@types/graceful-fs": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", @@ -9481,9 +9409,9 @@ } }, "@types/gtag.js": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.11.tgz", - "integrity": "sha512-rUuSDedDjcuUpoc2zf6eX6zRrxqALNgwrmMBfVFopkLH7YGM52C7tt6j9GsYIvaxn+ioVRpOKoHnN1DXzHEqIg==", + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.12.tgz", + "integrity": "sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==", "dev": true }, "@types/istanbul-lib-coverage": { @@ -9623,16 +9551,15 @@ "peer": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.37.0.tgz", - "integrity": "sha512-Fde6W0IafXktz1UlnhGkrrmnnGpAo1kyX7dnyHHVrmwJOn72Oqm3eYtddrpOwwel2W8PAK9F3pIL5S+lfoM0og==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.39.0.tgz", + "integrity": "sha512-xVfKOkBm5iWMNGKQ2fwX5GVgBuHmZBO1tCRwXmY5oAIsPscfwm2UADDuNB8ZVYCtpQvJK4xpjrK7jEhcJ0zY9A==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.37.0", - "@typescript-eslint/type-utils": "5.37.0", - "@typescript-eslint/utils": "5.37.0", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/type-utils": "5.39.0", + "@typescript-eslint/utils": "5.39.0", "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", "regexpp": "^3.2.0", "semver": "^7.3.7", @@ -9640,53 +9567,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.37.0.tgz", - "integrity": "sha512-01VzI/ipYKuaG5PkE5+qyJ6m02fVALmMPY3Qq5BHflDx3y4VobbLdHQkSMg9VPRS4KdNt4oYTMaomFoHonBGAw==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.39.0.tgz", + "integrity": "sha512-PhxLjrZnHShe431sBAGHaNe6BDdxAASDySgsBCGxcBecVCi8NQWxQZMcizNA4g0pN51bBAn/FUfkWG3SDVcGlA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.37.0", - "@typescript-eslint/types": "5.37.0", - "@typescript-eslint/typescript-estree": "5.37.0", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/typescript-estree": "5.39.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.37.0.tgz", - "integrity": "sha512-F67MqrmSXGd/eZnujjtkPgBQzgespu/iCZ+54Ok9X5tALb9L2v3G+QBSoWkXG0p3lcTJsL+iXz5eLUEdSiJU9Q==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.39.0.tgz", + "integrity": "sha512-/I13vAqmG3dyqMVSZPjsbuNQlYS082Y7OMkwhCfLXYsmlI0ca4nkL7wJ/4gjX70LD4P8Hnw1JywUVVAwepURBw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.37.0", - "@typescript-eslint/visitor-keys": "5.37.0" + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0" } }, "@typescript-eslint/type-utils": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.37.0.tgz", - "integrity": "sha512-BSx/O0Z0SXOF5tY0bNTBcDEKz2Ec20GVYvq/H/XNKiUorUFilH7NPbFUuiiyzWaSdN3PA8JV0OvYx0gH/5aFAQ==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.39.0.tgz", + "integrity": "sha512-KJHJkOothljQWzR3t/GunL0TPKY+fGJtnpl+pX+sJ0YiKTz3q2Zr87SGTmFqsCMFrLt5E0+o+S6eQY0FAXj9uA==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.37.0", - "@typescript-eslint/utils": "5.37.0", + "@typescript-eslint/typescript-estree": "5.39.0", + "@typescript-eslint/utils": "5.39.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.37.0.tgz", - "integrity": "sha512-3frIJiTa5+tCb2iqR/bf7XwU20lnU05r/sgPJnRpwvfZaqCJBrl8Q/mw9vr3NrNdB/XtVyMA0eppRMMBqdJ1bA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.39.0.tgz", + "integrity": "sha512-gQMZrnfEBFXK38hYqt8Lkwt8f4U6yq+2H5VDSgP/qiTzC8Nw8JO3OuSUOQ2qW37S/dlwdkHDntkZM6SQhKyPhw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.37.0.tgz", - "integrity": "sha512-JkFoFIt/cx59iqEDSgIGnQpCTRv96MQnXCYvJi7QhBC24uyuzbD8wVbajMB1b9x4I0octYFJ3OwjAwNqk1AjDA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.39.0.tgz", + "integrity": "sha512-qLFQP0f398sdnogJoLtd43pUgB18Q50QSA+BTE5h3sUxySzbWDpTSdgt4UyxNSozY/oDK2ta6HVAzvGgq8JYnA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.37.0", - "@typescript-eslint/visitor-keys": "5.37.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/visitor-keys": "5.39.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -9695,26 +9622,26 @@ } }, "@typescript-eslint/utils": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.37.0.tgz", - "integrity": "sha512-jUEJoQrWbZhmikbcWSMDuUSxEE7ID2W/QCV/uz10WtQqfOuKZUqFGjqLJ+qhDd17rjgp+QJPqTdPIBWwoob2NQ==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.39.0.tgz", + "integrity": "sha512-+DnY5jkpOpgj+EBtYPyHRjXampJfC0yUZZzfzLuUWVZvCuKqSdJVC8UhdWipIw7VKNTfwfAPiOWzYkAwuIhiAg==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.37.0", - "@typescript-eslint/types": "5.37.0", - "@typescript-eslint/typescript-estree": "5.37.0", + "@typescript-eslint/scope-manager": "5.39.0", + "@typescript-eslint/types": "5.39.0", + "@typescript-eslint/typescript-estree": "5.39.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.37.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.37.0.tgz", - "integrity": "sha512-Hp7rT4cENBPIzMwrlehLW/28EVCOcE9U1Z1BQTc8EA8v5qpr7GRGuG+U58V5tTY48zvUOA3KHvw3rA8tY9fbdA==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.39.0.tgz", + "integrity": "sha512-yyE3RPwOG+XJBLrhvsxAidUgybJVQ/hG8BhiJo0k8JSAYfk/CshVcxf0HwP4Jt7WZZ6vLmxdo1p6EyN3tzFTkg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.37.0", + "@typescript-eslint/types": "5.39.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -9746,9 +9673,9 @@ } }, "@vitest/ui": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-0.23.2.tgz", - "integrity": "sha512-dO1UxSwEm11OgumUVbEnF7wKwDPoBGjkrvATvvhkFaDw2iiQm8WewF0hmnUVHj6BSNoHUIJ3uXEzfF9T9W+2yg==", + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-0.23.4.tgz", + "integrity": "sha512-lNZVTTrkHThGAwNQ1ah1qCNnm70r7OLB5LCUdSqboStve/1eKTrtt27QfDSSUTG8AVJQzU0eaN/j8UocH+CqfA==", "dev": true, "requires": { "sirv": "^2.0.2" @@ -10099,6 +10026,15 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "requires": { + "streamsearch": "^1.1.0" + } + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -10359,12 +10295,6 @@ } } }, - "data-uri-to-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz", - "integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==", - "dev": true - }, "data-urls": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", @@ -10468,9 +10398,9 @@ "peer": true }, "devalue": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-3.1.3.tgz", - "integrity": "sha512-9KO89Cb+qjzf2CqdrH+NuLaqdk9GhDP5EhR4zlkR51dvuIaiqtlkDkGzLMShDemwUy21raSMdu+kpX8Enw3yGQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.0.0.tgz", + "integrity": "sha512-w25siwXyuMUqMr7jPlEjyNCp1vn0Jzj/fNg3qVt/r/Dpe8HjESh2V92L0jmh3uq4iJt0BvjH+Azk1pQzkcnDWA==", "dev": true }, "dir-glob": { @@ -10509,12 +10439,12 @@ } }, "echarts": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.3.3.tgz", - "integrity": "sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.0.tgz", + "integrity": "sha512-uPsO9VRUIKAdFOoH3B0aNg7NRVdN7aM39/OjovjO9MwmWsAkfGyeXJhK+dbRi51iDrQWliXV60/XwLA7kg3z0w==", "requires": { "tslib": "2.3.0", - "zrender": "5.3.2" + "zrender": "5.4.0" }, "dependencies": { "tslib": { @@ -10815,13 +10745,13 @@ } }, "eslint": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz", - "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", + "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", "dev": true, "requires": { "@eslint/eslintrc": "^1.3.2", - "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/config-array": "^0.10.5", "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", @@ -11142,16 +11072,6 @@ "bser": "2.1.1" } }, - "fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "requires": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - } - }, "file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -11216,15 +11136,6 @@ "mime-types": "^2.1.12" } }, - "formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "requires": { - "fetch-blob": "^3.1.2" - } - }, "fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -11253,12 +11164,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, "gauge": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", @@ -12802,12 +12707,6 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "dev": true - }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -13070,9 +12969,9 @@ } }, "playwright-core": { - "version": "1.25.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.25.2.tgz", - "integrity": "sha512-0yTbUE9lIddkEpLHL3u8PoCL+pWiZtj5A/j3U7YoNjcmKKDGBnCrgHJMzwd2J5vy6l28q4ki3JIuz7McLHhl1A==", + "version": "1.26.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.26.1.tgz", + "integrity": "sha512-hzFchhhxnEiPc4qVPs9q2ZR+5eKNifY2hQDHtg1HnTTUuphYCBP8ZRb2si+B1TR7BHirgXaPi48LIye5SgrLAA==", "dev": true }, "postcss": { @@ -13163,9 +13062,9 @@ "dev": true }, "prettier-plugin-svelte": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.7.0.tgz", - "integrity": "sha512-fQhhZICprZot2IqEyoiUYLTRdumULGRvw0o4dzl5jt0jfzVWdGqeYW27QTWAeXhoupEZJULmNoH3ueJwUWFLIA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-2.7.1.tgz", + "integrity": "sha512-H33qjhCBZyd9Zr1A5hUAYDh7j0Mf97uvy7XcA7CP4nNSYrNcPvBUf7wI8K9NptWTIs0S41QtgTWmJIUiGlEBtw==", "dev": true, "requires": {} }, @@ -13450,9 +13349,9 @@ } }, "sass": { - "version": "1.54.9", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.9.tgz", - "integrity": "sha512-xb1hjASzEH+0L0WI9oFjqhRi51t/gagWnxLiwUNMltA0Ab6jIDkAacgKiGYKM9Jhy109osM7woEEai6SXeJo5Q==", + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.55.0.tgz", + "integrity": "sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -13615,6 +13514,12 @@ } } }, + "streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -13726,9 +13631,9 @@ "dev": true }, "svelte-check": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.0.tgz", - "integrity": "sha512-9AVrtP7WbfDgCdqTZNPdj5CCCy1OrYMxFVWAWzNw7fl93c9klFJFtqzVXa6fovfQ050CcpUyJE2dPFL9TFAREw==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-2.9.1.tgz", + "integrity": "sha512-+BFPsj6irZ+t2pVSVo//2Ic1mI3A52xCwbkSTVhTqYZqgawcyZd9pYZoEac3fIWbEeTyCb5X82ORKI/gjn+P7A==", "dev": true, "requires": { "@jridgewell/trace-mapping": "^0.3.9", @@ -13742,9 +13647,9 @@ } }, "svelte-hmr": { - "version": "0.14.12", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.12.tgz", - "integrity": "sha512-4QSW/VvXuqVcFZ+RhxiR8/newmwOCTlbYIezvkeN6302YFRE8cXy0naamHcjz8Y9Ce3ITTZtrHrIL0AGfyo61w==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.0.tgz", + "integrity": "sha512-Aw21SsyoohyVn4yiKXWPNCSW2DQNH/76kvUnE9kpt4h9hcg9tfyQc6xshx9hzgMfGF0kVx0EGD8oBMWSnATeOg==", "dev": true, "requires": {} }, @@ -13968,16 +13873,19 @@ "dev": true }, "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "dev": true }, "undici": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.10.0.tgz", - "integrity": "sha512-c8HsD3IbwmjjbLvoZuRI26TZic+TSEe8FPMLLOkN1AfYRhdjnKBU6yL+IwcSCbdZiX4e5t0lfMDLDCqj4Sq70g==", - "dev": true + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.11.0.tgz", + "integrity": "sha512-oWjWJHzFet0Ow4YZBkyiJwiK5vWqEYoH7BINzJAJOLedZ++JpAlCbUktW2GQ2DS2FpKmxD/JMtWUUWl1BtghGw==", + "dev": true, + "requires": { + "busboy": "^1.6.0" + } }, "universalify": { "version": "0.1.2", @@ -14015,9 +13923,9 @@ } }, "vite": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.1.tgz", - "integrity": "sha512-hgxQWev/AL7nWYrqByYo8nfcH9n97v6oFsta9+JX8h6cEkni7nHKP2kJleNYV2kcGhE8jsbaY1aStwPZXzPbgA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.4.tgz", + "integrity": "sha512-JoQI08aBjY9lycL7jcEq4p9o1xUjq5aRvdH4KWaXtkSx7e7RpAh9D3IjzDWRD4Fg44LS3oDAIOG/Kq1L+82psA==", "dev": true, "requires": { "esbuild": "^0.15.6", @@ -14028,9 +13936,9 @@ } }, "vitest": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.23.2.tgz", - "integrity": "sha512-kTBKp3ROPDkYC+x2zWt4znkDtnT08W1FQ6ngRFuqxpBGNuNVS+eWZKfffr8y2JGvEzZ9EzMAOcNaiqMj/FZqMw==", + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.23.4.tgz", + "integrity": "sha512-iukBNWqQAv8EKDBUNntspLp9SfpaVFbmzmM0sNcnTxASQZMzRw3PsM6DMlsHiI+I6GeO5/sYDg3ecpC+SNFLrQ==", "dev": true, "requires": { "@types/chai": "^4.3.3", @@ -14039,7 +13947,7 @@ "chai": "^4.3.6", "debug": "^4.3.4", "local-pkg": "^0.4.2", - "strip-literal": "^0.4.0", + "strip-literal": "^0.4.1", "tinybench": "^2.1.5", "tinypool": "^0.3.0", "tinyspy": "^1.0.2", @@ -14078,12 +13986,6 @@ "makeerror": "1.0.12" } }, - "web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "dev": true - }, "web-vitals": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz", @@ -14259,9 +14161,9 @@ "dev": true }, "zrender": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.3.2.tgz", - "integrity": "sha512-8IiYdfwHj2rx0UeIGZGGU4WEVSDEdeVCaIg/fomejg1Xu6OifAL1GVzIPHg2D+MyUkbNgPWji90t0a8IDk+39w==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.0.tgz", + "integrity": "sha512-rOS09Z2HSVGFs2dn/TuYk5BlCaZcVe8UDLLjj1ySYF828LATKKdxuakSZMvrDz54yiKPDYVfjdKqcX8Jky3BIA==", "requires": { "tslib": "2.3.0" }, diff --git a/package.json b/package.json index 6baf4cde4a..c35b59efbf 100644 --- a/package.json +++ b/package.json @@ -19,42 +19,42 @@ }, "dependencies": { "@aw-labs/appwrite-console": "^6.0.0", - "@aw-labs/icons": "0.0.0-55", - "@aw-labs/ui": "0.0.0-55", - "echarts": "^5.3.3", + "@aw-labs/icons": "0.0.0-58", + "@aw-labs/ui": "0.0.0-58", + "echarts": "^5.4.0", "prismjs": "^1.29.0", "tippy.js": "^6.3.7", "web-vitals": "^2.1.4" }, "devDependencies": { - "@playwright/test": "^1.25.2", - "@sveltejs/adapter-auto": "1.0.0-next.74", - "@sveltejs/kit": "1.0.0-next.483", - "@sveltejs/vite-plugin-svelte": "^1.0.5", - "@testing-library/dom": "^8.17.1", + "@playwright/test": "^1.26.1", + "@sveltejs/adapter-auto": "1.0.0-next.80", + "@sveltejs/kit": "1.0.0-next.509", + "@sveltejs/vite-plugin-svelte": "^1.0.8", + "@testing-library/dom": "^8.18.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/svelte": "3.1.3", "@testing-library/user-event": "^14.4.3", - "@types/gtag.js": "^0.0.11", "@types/prismjs": "^1.26.0", - "@typescript-eslint/eslint-plugin": "^5.37.0", - "@typescript-eslint/parser": "^5.37.0", - "@vitest/ui": "^0.23.2", - "eslint": "^8.23.1", + "@types/gtag.js": "^0.0.12", + "@typescript-eslint/eslint-plugin": "^5.39.0", + "@typescript-eslint/parser": "^5.39.0", + "@vitest/ui": "^0.23.4", + "eslint": "^8.24.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-svelte3": "^4.0.0", "pre-commit": "^1.2.2", "prettier": "^2.7.1", - "prettier-plugin-svelte": "^2.7.0", - "sass": "^1.54.9", + "prettier-plugin-svelte": "^2.7.1", + "sass": "^1.55.0", "svelte": "^3.50.1", - "svelte-check": "^2.9.0", + "svelte-check": "^2.9.1", "svelte-jester": "^2.3.2", "svelte-preprocess": "^4.10.7", "tslib": "^2.4.0", - "typescript": "^4.7.4", - "vite": "^3.1.1", - "vitest": "^0.23.2" + "typescript": "^4.8.4", + "vite": "^3.1.4", + "vitest": "^0.23.4" }, "type": "module", "pre-commit": [ diff --git a/src/lib/components/cardContainer.svelte b/src/lib/components/cardContainer.svelte new file mode 100644 index 0000000000..5ba3ee68b0 --- /dev/null +++ b/src/lib/components/cardContainer.svelte @@ -0,0 +1,20 @@ + + + diff --git a/src/lib/components/collapsible.svelte b/src/lib/components/collapsible.svelte index 3647c2ec8b..245eec7810 100644 --- a/src/lib/components/collapsible.svelte +++ b/src/lib/components/collapsible.svelte @@ -1,21 +1,3 @@ diff --git a/src/lib/components/collapsibleItem.svelte b/src/lib/components/collapsibleItem.svelte new file mode 100644 index 0000000000..5caa6caf34 --- /dev/null +++ b/src/lib/components/collapsibleItem.svelte @@ -0,0 +1,14 @@ +
  • +
    + + + +
    +
    +
    +
    + +
    +
    +
  • diff --git a/src/lib/components/customId.svelte b/src/lib/components/customId.svelte new file mode 100644 index 0000000000..91164f4e9c --- /dev/null +++ b/src/lib/components/customId.svelte @@ -0,0 +1,43 @@ + + + + {name} ID + + Enter a custom {name} ID. Leave blank for a randomly generated one. + + +
    + + +
    +
    +
    +
    +
    diff --git a/src/lib/components/dropListItem.svelte b/src/lib/components/dropListItem.svelte index 44ae503053..111f3f7f23 100644 --- a/src/lib/components/dropListItem.svelte +++ b/src/lib/components/dropListItem.svelte @@ -1,9 +1,10 @@
  • - + + + diff --git a/src/lib/components/permissions/index.ts b/src/lib/components/permissions/index.ts new file mode 100644 index 0000000000..865f2d75c9 --- /dev/null +++ b/src/lib/components/permissions/index.ts @@ -0,0 +1 @@ +export { default as Permissions } from './permissions.svelte'; diff --git a/src/lib/components/permissions/permissions.svelte b/src/lib/components/permissions/permissions.svelte new file mode 100644 index 0000000000..1d7c9b0ec7 --- /dev/null +++ b/src/lib/components/permissions/permissions.svelte @@ -0,0 +1,252 @@ + + + + +
    +
    + + + + + {#if withCreate} + + {/if} + + + + + + + {#each [...$groups].sort(sortRoles) as [role, permission]} + + + {#if withCreate} + + {/if} + + + + + + {/each} + +
    + Role + + Create + + Read + + Update + + Delete + +
    + + + togglePermission(role, 'create')} /> + + togglePermission(role, 'read')} /> + + togglePermission(role, 'update')} /> + + togglePermission(role, 'delete')} /> + +
    + +
    +
    +
    +
    + + + + addRole('any')}> + Any + + addRole('guests')}> + All guests + + addRole('users')}> + All users + + (showUser = true)}>Select users + (showTeam = true)}>Select teams + (showCustom = true)}>Custom permission + + + + + + diff --git a/src/lib/components/permissions/row.svelte b/src/lib/components/permissions/row.svelte new file mode 100644 index 0000000000..2f23de52b5 --- /dev/null +++ b/src/lib/components/permissions/row.svelte @@ -0,0 +1,17 @@ + + +
    +
    + {#if role === 'users'} +
    Users
    + {:else if role === 'guests'} +
    Guests
    + {:else if role === 'any'} +
    Any
    + {:else} +
    {role}
    + {/if} +
    +
    diff --git a/src/lib/components/permissions/team.svelte b/src/lib/components/permissions/team.svelte new file mode 100644 index 0000000000..7aa0ca1ad6 --- /dev/null +++ b/src/lib/components/permissions/team.svelte @@ -0,0 +1,111 @@ + + +
    + + Select teams + + {#if results?.teams} +
    + + + {#each results.teams as team (team.$id)} + {@const role = `team:${team.$id}`} + {@const exists = $groups.has(role)} + + + + + {/each} + +
    + onSelection(event, role)} /> + + +
    +
    + {/if} +
    +

    Total results: {results?.total}

    + +
    + + + +
    +
    diff --git a/src/lib/components/permissions/user.svelte b/src/lib/components/permissions/user.svelte new file mode 100644 index 0000000000..20741b6868 --- /dev/null +++ b/src/lib/components/permissions/user.svelte @@ -0,0 +1,111 @@ + + +
    + + Select users + + {#if results?.users} +
    + + + {#each results.users as user (user.$id)} + {@const role = `user:${user.$id}`} + {@const exists = $groups.has(role)} + + + + + {/each} + +
    + onSelection(event, role)} /> + + +
    +
    + {/if} +
    +

    Total results: {results?.total}

    + +
    + + + +
    +
    diff --git a/src/lib/components/secret.svelte b/src/lib/components/secret.svelte new file mode 100644 index 0000000000..e44499b89e --- /dev/null +++ b/src/lib/components/secret.svelte @@ -0,0 +1,28 @@ + + +
    + {#if show} + {value} + {:else} + •••••••••••• + {/if} +
    + + + + +
    +
    diff --git a/src/lib/constants.ts b/src/lib/constants.ts index aeaa77c210..08fad97b46 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -1,80 +1,130 @@ export const scopes = [ - 'users.read', - 'users.write', - 'teams.read', - 'teams.write', - 'collections.read', - 'collections.write', - 'attributes.read', - 'attributes.write', - 'indexes.read', - 'indexes.write', - 'documents.read', - 'documents.write', - 'files.read', - 'files.write', - 'buckets.read', - 'buckets.write', - 'functions.read', - 'functions.write', - 'execution.read', - 'execution.write', - 'locale.read', - 'avatars.read', - 'health.read' -]; - -export const events = [ - 'account.create', - 'account.update.email', - 'account.update.name', - 'account.update.password', - 'users.update.email', - 'users.update.name', - 'users.update.password', - 'account.update.prefs', - 'account.recovery.create', - 'account.recovery.update', - 'account.verification.create', - 'account.verification.update', - 'account.delete', - 'account.sessions.create', - 'account.sessions.delete', - 'account.sessions.update', - 'database.collections.create', - 'database.collections.update', - 'database.collections.delete', - 'database.attributes.create', - 'database.attributes.delete', - 'database.indexes.create', - 'database.indexes.delete', - 'database.documents.create', - 'database.documents.update', - 'database.documents.delete', - 'functions.create', - 'functions.update', - 'functions.delete', - 'functions.deployments.create', - 'functions.deployments.update', - 'functions.deployments.delete', - 'functions.executions.create', - 'functions.executions.update', - 'storage.files.create', - 'storage.files.update', - 'storage.files.delete', - 'storage.buckets.create', - 'storage.buckets.update', - 'storage.buckets.delete', - 'users.create', - 'users.update.prefs', - 'users.update.status', - 'users.delete', - 'users.sessions.delete', - 'teams.create', - 'teams.update', - 'teams.delete', - 'teams.memberships.create', - 'teams.memberships.update', - 'teams.memberships.update.status', - 'teams.memberships.delete' + { + scope: 'users.read', + description: "Access to read your project's users", + category: 'Authentication' + }, + { + scope: 'users.write', + description: "Access to create, update, and delete your project's users", + category: 'Authentication' + }, + { + scope: 'teams.read', + description: "Access to read your project's teams", + category: 'Authentication' + }, + { + scope: 'teams.write', + description: "Access to create, update, and delete your project's teams", + category: 'Authentication' + }, + { + scope: 'databases.read', + description: "Access to read your project's databases", + category: 'Database' + }, + { + scope: 'databases.write', + description: "Access to create, update, and delete your project's databases", + category: 'Database' + }, + { + scope: 'collections.read', + description: "Access to read your project's database collections", + category: 'Database' + }, + { + scope: 'collections.write', + description: "Access to create, update, and delete your project's database collections", + category: 'Database' + }, + { + scope: 'attributes.read', + description: "Access to read your project's database collection's attributes", + category: 'Database' + }, + { + scope: 'attributes.write', + description: + "Access to create, update, and delete your project's database collection's attributes", + category: 'Database' + }, + { + scope: 'indexes.read', + description: "Access to read your project's database collection's indexes", + category: 'Database' + }, + { + scope: 'indexes.write', + description: + "Access to create, update, and delete your project's database collection's indexes", + category: 'Database' + }, + { + scope: 'documents.read', + description: "Access to read your project's database documents", + category: 'Database' + }, + { + scope: 'documents.write', + description: "Access to create, update, and delete your project's database documents", + category: 'Database' + }, + { + scope: 'files.read', + description: "Access to read your project's storage files and preview images", + category: 'Storage' + }, + { + scope: 'files.write', + description: "Access to create, update, and delete your project's storage files", + category: 'Storage' + }, + { + scope: 'buckets.read', + description: "Access to read your project's storage buckets", + category: 'Storage' + }, + { + scope: 'buckets.write', + description: "Access to create, update, and delete your project's storage buckets", + category: 'Storage' + }, + { + scope: 'functions.read', + description: "Access to read your project's functions and code deployments", + category: 'Functions' + }, + { + scope: 'functions.write', + description: + "Access to create, update, and delete your project's functions and code deployments", + category: 'Functions' + }, + { + scope: 'execution.read', + description: "Access to read your project's execution logs", + category: 'Functions' + }, + { + scope: 'execution.write', + description: "Access to execute your project's functions", + category: 'Functions' + }, + { + scope: 'locale.read', + description: "Access to access your project's Locale service", + category: 'Other' + }, + { + scope: 'avatars.read', + description: "Access to access your project's Avatars service", + category: 'Other' + }, + { + scope: 'health.read', + description: "Access to read your project's health status", + category: 'Other' + } ]; diff --git a/src/lib/elements/forms/button.svelte b/src/lib/elements/forms/button.svelte index c89eb11489..1dd0569192 100644 --- a/src/lib/elements/forms/button.svelte +++ b/src/lib/elements/forms/button.svelte @@ -9,6 +9,7 @@ export let href: string = null; export let fullWidth = false; export let ariaLabel: string = null; + export let noMargin = false; //TODO: add option to add aria-label to buttons that are only icons @@ -24,6 +25,7 @@ class:is-text={text} class:is-danger={danger} class:is-full-width={fullWidth} + class:u-padding-inline-0={noMargin} aria-label={ariaLabel}> @@ -37,6 +39,7 @@ class:is-danger={danger} class:is-text={text} class:is-full-width={fullWidth} + class:u-padding-inline-0={noMargin} type={submit ? 'submit' : 'button'} aria-label={ariaLabel}> diff --git a/src/lib/elements/forms/form.svelte b/src/lib/elements/forms/form.svelte index dcc806372b..ce34663f50 100644 --- a/src/lib/elements/forms/form.svelte +++ b/src/lib/elements/forms/form.svelte @@ -1,4 +1,8 @@ + + -
    + diff --git a/src/lib/elements/forms/index.ts b/src/lib/elements/forms/index.ts index 7ed7d656fe..b0b7b47b7b 100644 --- a/src/lib/elements/forms/index.ts +++ b/src/lib/elements/forms/index.ts @@ -11,6 +11,7 @@ export { default as InputSwitch } from './inputSwitch.svelte'; export { default as InputTags } from './inputTags.svelte'; export { default as InputFile } from './inputFile.svelte'; export { default as InputCustomId } from './inputCustomId.svelte'; +export { default as InputDateTime } from './inputDateTime.svelte'; export { default as InputSearch } from './inputSearch.svelte'; export { default as InputRadio } from './inputRadio.svelte'; export { default as InputSelect } from './inputSelect.svelte'; diff --git a/src/lib/elements/forms/inputDateTime.svelte b/src/lib/elements/forms/inputDateTime.svelte new file mode 100644 index 0000000000..3869f498bf --- /dev/null +++ b/src/lib/elements/forms/inputDateTime.svelte @@ -0,0 +1,58 @@ + + + + +
    + +
    + {#if error} + {error} + {/if} +
    diff --git a/src/lib/elements/forms/inputSearch.svelte b/src/lib/elements/forms/inputSearch.svelte index e1806d3d71..8149a5652b 100644 --- a/src/lib/elements/forms/inputSearch.svelte +++ b/src/lib/elements/forms/inputSearch.svelte @@ -1,5 +1,6 @@ @@ -45,14 +45,13 @@ {#if $organizationList?.teams?.length} -
      3 ? '22rem' : '25rem' - };`}> + (addOrganization = true)}> {#each $organizationList.teams as organization, index} {@const avatarList = getMemberships(organization.$id)} - {#if index >= offset && index < limit + offset} + {#if index >= offset && index < $cardLimit + offset} {organization?.total ? organization?.total : 'No'} projects @@ -67,16 +66,14 @@ {/if} {/each} - {#if $organizationList?.total < limit + offset && ($organizationList?.total % 2 !== 0 || $organizationList?.total % 4 === 0)} - (addOrganization = true)}> -

      Create a new organization

      -
      - {/if} -
    + +

    Create a new organization

    +
    +

    Total results: {$organizationList?.total}

    - +
    {:else} (addOrganization = true)}> @@ -84,7 +81,7 @@

    Total results: {$organizationList?.total}

    - +
    {/if}
    diff --git a/src/routes/console/organization-[organization]/+layout.svelte b/src/routes/console/organization-[organization]/+layout.svelte index ba490c381f..b3e21afb10 100644 --- a/src/routes/console/organization-[organization]/+layout.svelte +++ b/src/routes/console/organization-[organization]/+layout.svelte @@ -1,5 +1,5 @@ @@ -56,8 +59,8 @@ Name - Email - Status + Identifier + Status ID Joined @@ -67,16 +70,40 @@ href={`${base}/console/project-${project}/authentication/user/${user.$id}`}>
    - - {user.name ? user.name : 'n/a'} + {#if user.email || user.phone} + {#if user.name} + + {user.name} + {:else} +
    +
    + {/if} + {:else} +
    +
    + {user.name} + {/if}
    - {user.email} + + {user.email && user.phone + ? [user.email, user.phone].join(',') + : user.email || user.phone} + {#if user.status} - {user.emailVerification || user.phoneVerification + {user.emailVerification && user.phoneVerification ? 'verified' + : user.emailVerification + ? 'verified email' + : user.phoneVerification + ? 'verified phone' : 'unverified'} {:else} @@ -102,21 +129,13 @@ {:else if search} - -
    + +
    Sorry, we couldn’t find ‘{search}’ -
    -

    There are no users that match your search.

    -
    -
    - -
    +

    There are no users that match your search.

    - -
    -

    Total results: {$usersList.total}

    - -
    + +
    {:else} (showCreate = true)}>
    -

    Add Your First User To Get Started

    +
    +

    Create your first User to get started.

    +

    Need a hand? Check out our documentation.

    +
    +
    + + +
    {/if} diff --git a/src/routes/console/project-[project]/authentication/_appleOAuth.svelte b/src/routes/console/project-[project]/authentication/_appleOAuth.svelte index 2fd1ceb6e5..2b1dc49268 100644 --- a/src/routes/console/project-[project]/authentication/_appleOAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_appleOAuth.svelte @@ -61,21 +61,10 @@ id="bundleID" label="Bundle ID" autofocus={true} - autocomplete={false} placeholder="com.company.appname" bind:value={provider.id} /> - - + + To complete set up, add this OAuth2 redirect URI to your {provider.name} app configuration. diff --git a/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte b/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte index 0fbc2cc9f4..869907614a 100644 --- a/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte +++ b/src/routes/console/project-[project]/authentication/_auth0OAuth.svelte @@ -60,19 +60,17 @@ id="clientID" label="Client ID" autofocus={true} - autocomplete={false} placeholder="Enter ID" bind:value={provider.id} /> diff --git a/src/routes/console/project-[project]/authentication/_createTeam.svelte b/src/routes/console/project-[project]/authentication/_createTeam.svelte index 109e91f922..88004bd2a6 100644 --- a/src/routes/console/project-[project]/authentication/_createTeam.svelte +++ b/src/routes/console/project-[project]/authentication/_createTeam.svelte @@ -1,5 +1,5 @@ @@ -48,39 +45,15 @@ placeholder="Enter name" autofocus={true} bind:value={name} /> - {#if !showDropdown} + {#if !showCustomId}
    - (showDropdown = !showDropdown)} + (showCustomId = !showCustomId)} >
    {:else} - - Team ID - - Enter a custom team ID. Leave blank for a randomly generated one. - - -
    - -
    -
    -
    -
    -
    + {/if} diff --git a/src/routes/console/project-[project]/authentication/_createUser.svelte b/src/routes/console/project-[project]/authentication/_createUser.svelte index 8f33df69f6..f4c6858f4b 100644 --- a/src/routes/console/project-[project]/authentication/_createUser.svelte +++ b/src/routes/console/project-[project]/authentication/_createUser.svelte @@ -1,11 +1,12 @@ @@ -78,24 +81,16 @@

    Total results: {$teamsList.total}

    - +
    {:else if search} - -
    + +
    Sorry, we couldn’t find ‘{search}’ -
    -

    There are no teams that match your search.

    -
    - -
    - -
    -

    Total results: {$teamsList.total}

    - -
    + +
    {:else} (showCreate = true)}>
    -

    Create your first team to get started

    +
    +

    Create your first Team to get started.

    +

    Need a hand? Check out our documentation.

    +
    +
    + + +
    {/if} diff --git a/src/routes/console/project-[project]/authentication/teams/[team]/+layout.svelte b/src/routes/console/project-[project]/authentication/teams/[team]/+layout.svelte index c813a9d749..8a02e2b209 100644 --- a/src/routes/console/project-[project]/authentication/teams/[team]/+layout.svelte +++ b/src/routes/console/project-[project]/authentication/teams/[team]/+layout.svelte @@ -13,8 +13,10 @@ afterNavigate(handle); async function handle(event = null) { + const promise = team.load(teamId); + if ($team?.$id !== teamId) { - await team.load(teamId); + await promise; } updateLayout({ diff --git a/src/routes/console/project-[project]/authentication/teams/[team]/+page.svelte b/src/routes/console/project-[project]/authentication/teams/[team]/+page.svelte index 279d080d42..1aa5cfaeb2 100644 --- a/src/routes/console/project-[project]/authentication/teams/[team]/+page.svelte +++ b/src/routes/console/project-[project]/authentication/teams/[team]/+page.svelte @@ -17,7 +17,6 @@ let teamName: string = null; onMount(async () => { - await team.load($page.params.team); teamName ??= $team.name; }); @@ -42,73 +41,71 @@ } -{#if $team} - - -
    - -
    -
    {$team.name}
    -
    + + +
    + +
    +
    {$team.name}
    - -
    -

    {$team.total} Members

    -

    Created on {toLocaleDateTime($team.$createdAt)}

    -
    -
    - - -
    - -
    Update Name
    - - -
      - -
    -
    - - - - -
    -
    - - +
    +
    -
    Danger Zone
    +

    {$team.total} Members

    +

    Created on {toLocaleDateTime($team.$createdAt)}

    +
    +
    + +
    + +
    Update Name
    -

    - The team will be permanently deleted, including all data associated with this team. - This action is irreversible. -

    - - - - - -
    {$team.name}
    - {$team.total} Members -
    -
    +
      + +
    - +
    - - -{/if} + + + +
    +
    Danger Zone
    +
    + +

    + The team will be permanently deleted, including all data associated with this team. This + action is irreversible. +

    + + + + + + +
    {$team.name}
    + {$team.total} Members +
    +
    +
    + + + + +
    +
    + diff --git a/src/routes/console/project-[project]/authentication/teams/[team]/members/+page.svelte b/src/routes/console/project-[project]/authentication/teams/[team]/members/+page.svelte index ec93ad4e90..01e68c7cb0 100644 --- a/src/routes/console/project-[project]/authentication/teams/[team]/members/+page.svelte +++ b/src/routes/console/project-[project]/authentication/teams/[team]/members/+page.svelte @@ -1,6 +1,6 @@ -{#if $user} - - -
    - -
    {$user.name}
    -
    - -
    -
    - {#if $user.email} -

    {$user.email}

    - {/if} - {#if $user.phone} -

    {$user.phone}

    - {/if} -

    Joined: {toLocaleDateTime($user.registration)}

    + + +
    + {#if $user.email || $user.phone} + {#if $user.name} + +
    {$user.name}
    + {:else} +
    +
    - {#if !$user.status} - blocked - {:else if $user.email && $user.phone} - - {$user.emailVerification && $user.phoneVerification - ? 'verified' - : $user.emailVerification - ? 'verified email' - : $user.phoneVerification - ? 'verified phone' - : 'unverified'} - - {:else} - - {$user.emailVerification - ? 'verified ' - : $user.phoneVerification - ? 'verified ' - : 'unverified'} - + {/if} + {:else} +
    +
    + {/if} +
    + +
    +
    + {#if $user.email} +

    {$user.email}

    + {/if} + {#if $user.phone} +

    {$user.phone}

    {/if} +

    Joined: {toLocaleDateTime($user.registration)}

    - + {#if !$user.status} + blocked + {:else if $user.email && $user.phone} + + {$user.emailVerification && $user.phoneVerification + ? 'verified' + : $user.emailVerification + ? 'verified email' + : $user.phoneVerification + ? 'verified phone' + : 'unverified'} + + {:else} + + {$user.emailVerification + ? 'verified ' + : $user.phoneVerification + ? 'verified ' + : 'unverified'} + + {/if} +
    +
    - - - {#if $user.status} - {#if $user.phone && $user.email} - - - - updateVerificationEmail()}> - {$user.emailVerification ? 'Unverify' : 'Verify'} email - - updateVerificationPhone()}> - {$user.phoneVerification ? 'Unverify' : 'Verify'} phone - - - - {:else if !$user.phone} - + {#if $user.status} + {#if $user.phone && $user.email} + + - {:else if !$user.email} - {/if} - {/if} - -
    - -
    - -
    Update Name
    - - -
      - -
    -
    - - - - -
    -
    - -
    - -
    Update Email
    - -
      - -
    -
    - - - - -
    -
    + {:else if !$user.email} + {/if} + {/if} + + -
    - -
    Update Phone
    - -
      - -
    -
    + + +
    Update Name
    - - - -
    - + +
      + +
    +
    -
    - -
    -
    Update Password
    -
    + + + +
    +
    -

    - Enter a new password. A password must contain at least 8 characters. -

    - -
      - -
    -
    +
    + +
    Update Email
    + +
      + +
    +
    - - - -
    -
    + + + +
    + -
    - -
    User Preferences
    -

    - You can update your user preferences by storing information on the user's - objects so they can easily be shared across devices and sessions. -

    - - -
      - {#if prefs} - {#each prefs as [key, value], index} -
    • -
      - -
      - -
      -
      -
      - -
      - -
      -
      -
      - -
      -
    • - {/each} - {/if} -
    - - -
    +
    + +
    Update Phone
    + +
      + +
    +
    - - - -
    -
    + + + +
    + +
    -
    Danger Zone
    +
    Update Password
    +

    - The user will be permanently deleted, including all data associated with this user. - This action is irreversible. + Enter a new password. A password must contain at least 8 characters.

    - - - - - -
    {$user.name}
    -
    -

    {$user.email}

    -
    +
      + +
    - +
    - -{/if} +
    + +
    + +
    User Preferences
    +

    + You can update your user preferences by storing information on the user's objects so + they can easily be shared across devices and sessions. +

    + + +
      + {#if prefs} + {#each prefs as [key, value], index} +
    • +
      + +
      + +
      +
      +
      + +
      + +
      +
      +
      + +
      +
    • + {/each} + {/if} +
    + + +
    + + + + +
    + + + +
    +
    Danger Zone
    +
    +

    + The user will be permanently deleted, including all data associated with this user. This + action is irreversible. +

    + + + + {#if $user.email || $user.phone} + {#if $user.name} + + {:else} +
    +
    + {/if} + {:else} +
    +
    + {/if} +
    + +
    + {$user.name || $user.email || $user.phone || 'Anonymous'} +
    +
    +

    + {$user.email && $user.phone + ? [$user.email, $user.phone].join(',') + : $user.email || $user.phone} +

    +
    +
    + + + + +
    +
    + diff --git a/src/routes/console/project-[project]/authentication/user/[user]/_deleteAllMemberships.svelte b/src/routes/console/project-[project]/authentication/user/[user]/_deleteAllMemberships.svelte index fd892d46db..0a853040ba 100644 --- a/src/routes/console/project-[project]/authentication/user/[user]/_deleteAllMemberships.svelte +++ b/src/routes/console/project-[project]/authentication/user/[user]/_deleteAllMemberships.svelte @@ -14,6 +14,10 @@ try { await sdkForProject.teams.deleteMembership('tmpstring', 'tmpstring2'); showDeleteAll = false; + addNotification({ + type: 'success', + message: `All memberships have been deleted` + }); await goto( `${base}/console/project-${$page.params.project}/authentication/${$user.$id}/membeships` ); @@ -24,6 +28,8 @@ }); } }; + + //TODO: implelment delete all memberships
    diff --git a/src/routes/console/project-[project]/authentication/user/[user]/_deleteMembership.svelte b/src/routes/console/project-[project]/authentication/user/[user]/_deleteMembership.svelte index 8bf5f78f26..154f9c8693 100644 --- a/src/routes/console/project-[project]/authentication/user/[user]/_deleteMembership.svelte +++ b/src/routes/console/project-[project]/authentication/user/[user]/_deleteMembership.svelte @@ -22,6 +22,10 @@ ); showDelete = false; dispatch('deleted'); + addNotification({ + type: 'success', + message: `Membership has been deleted` + }); await goto( `${base}/console/project-${$page.params.project}/authentication/user/${selectedMembership.userId}/memberships` ); diff --git a/src/routes/console/project-[project]/authentication/user/[user]/_deleteUser.svelte b/src/routes/console/project-[project]/authentication/user/[user]/_deleteUser.svelte index 6704ae17e0..45825cac00 100644 --- a/src/routes/console/project-[project]/authentication/user/[user]/_deleteUser.svelte +++ b/src/routes/console/project-[project]/authentication/user/[user]/_deleteUser.svelte @@ -17,7 +17,7 @@ showDelete = false; addNotification({ type: 'success', - message: `${$user.name} has been deleted` + message: `${$user.name ? $user.name : 'User'} has been deleted` }); await goto(`${base}/console/project-${$page.params.project}/authentication`); } catch (error) { diff --git a/src/routes/console/project-[project]/authentication/user/[user]/activity/+page.svelte b/src/routes/console/project-[project]/authentication/user/[user]/activity/+page.svelte index 24148db82d..94056cca1b 100644 --- a/src/routes/console/project-[project]/authentication/user/[user]/activity/+page.svelte +++ b/src/routes/console/project-[project]/authentication/user/[user]/activity/+page.svelte @@ -88,19 +88,13 @@ {:else} - -
    -
    -

    No logs available

    -
    -
    - -
    -
    + +

    No logs available

    +
    {/if}
    diff --git a/src/routes/console/project-[project]/authentication/user/[user]/memberships/+page.svelte b/src/routes/console/project-[project]/authentication/user/[user]/memberships/+page.svelte index 52de8964cc..8335b106c5 100644 --- a/src/routes/console/project-[project]/authentication/user/[user]/memberships/+page.svelte +++ b/src/routes/console/project-[project]/authentication/user/[user]/memberships/+page.svelte @@ -17,6 +17,7 @@ import DeleteMembership from '../_deleteMembership.svelte'; import DeleteAllMemberships from '../_deleteAllMemberships.svelte'; import type { Models } from '@aw-labs/appwrite-console'; + import { pageLimit } from '$lib/stores/layout'; const getAvatar = (name: string) => sdkForProject.avatars.getInitials(name, 32, 32).toString(); const deleted = () => (request = sdkForProject.users.listMemberships($page.params.user)); @@ -27,8 +28,6 @@ let showDelete = false; let showDeleteAll = false; - const limit = 25; - $: request = sdkForProject.users.listMemberships($page.params.user); @@ -78,26 +77,20 @@ {:else} - -
    -
    -

    No memberships available

    -
    -
    - -
    -
    + +

    No memberships available

    +
    {/if}

    Total results: {response.total}

    - +
    {/await} diff --git a/src/routes/console/project-[project]/authentication/user/[user]/sessions/+page.svelte b/src/routes/console/project-[project]/authentication/user/[user]/sessions/+page.svelte index 4a1c87b332..ce9d0dd02b 100644 --- a/src/routes/console/project-[project]/authentication/user/[user]/sessions/+page.svelte +++ b/src/routes/console/project-[project]/authentication/user/[user]/sessions/+page.svelte @@ -91,19 +91,13 @@ {:else} - -
    -
    -

    No session available

    -
    -
    - -
    -
    + +

    No session available

    +
    {/if}
    diff --git a/src/routes/console/project-[project]/databases/+page.svelte b/src/routes/console/project-[project]/databases/+page.svelte index 98e51b371d..ef5447ec8d 100644 --- a/src/routes/console/project-[project]/databases/+page.svelte +++ b/src/routes/console/project-[project]/databases/+page.svelte @@ -2,26 +2,29 @@ import { page } from '$app/stores'; import { goto } from '$app/navigation'; import { Button } from '$lib/elements/forms'; - import { Empty, Pagination, Copy, GridItem1 } from '$lib/components'; + import { Empty, Pagination, Copy, GridItem1, CardContainer } from '$lib/components'; import { Pill } from '$lib/elements'; import { Query, type Models } from '@aw-labs/appwrite-console'; import Create from './_create.svelte'; import { Container } from '$lib/layout'; import { base } from '$app/paths'; import { databaseList } from './store'; + import { cardLimit } from '$lib/stores/layout'; let showCreate = false; let search = ''; let offset = 0; - const limit = 6; const project = $page.params.project; const handleCreate = async (event: CustomEvent) => { showCreate = false; await goto(`${base}/console/project-${project}/databases/database/${event.detail.$id}`); }; - $: databaseList.load([Query.limit(limit), Query.offset(offset)], search); + $: databaseList.load( + [Query.limit($cardLimit), Query.offset(offset), Query.orderDesc('$createdAt')], + search + ); @@ -34,9 +37,7 @@
    {#if $databaseList?.total} -
    3 ? '22rem' : '25rem'};`}> + (showCreate = true)}> {#each $databaseList.databases as database} @@ -48,16 +49,14 @@ {/each} - {#if ($databaseList.total % 2 !== 0 || $databaseList.total % 4 === 0) && $databaseList.total - offset <= limit} - (showCreate = true)}> -

    Create a new database

    -
    - {/if} -
    + +

    Create a new database

    +
    +

    Total results: {$databaseList.total}

    - +
    {:else} (showCreate = true)}> diff --git a/src/routes/console/project-[project]/databases/_create.svelte b/src/routes/console/project-[project]/databases/_create.svelte index cbbb66367a..864baecc41 100644 --- a/src/routes/console/project-[project]/databases/_create.svelte +++ b/src/routes/console/project-[project]/databases/_create.svelte @@ -1,5 +1,5 @@ @@ -39,9 +41,7 @@
    {#if $collections?.total} -
    3 ? '22rem' : '25rem'};`}> + (showCreate = true)}> {#each $collections.collections as collection} @@ -62,32 +62,14 @@ {/each} - {#if ($collections.total % 2 !== 0 || $collections.total % 4 === 0) && $collections.total - offset <= limit} - (showCreate = true)}> -

    Create a new collection

    -
    - {/if} -
    + +

    Create a new collection

    +
    +

    Total results: {$collections.total}

    - -
    - {:else if search} - -
    - Sorry, we couldn’t find ‘{search}’ -
    -

    There are no collections that match your search.

    -
    -
    - -
    -
    -
    -
    -

    Total results: {$collections?.total}

    - +
    {:else} (showCreate = true)}> diff --git a/src/routes/console/project-[project]/databases/database/[database]/_create.svelte b/src/routes/console/project-[project]/databases/database/[database]/_create.svelte index 0c03874f31..ac54188b83 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/_create.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/_create.svelte @@ -1,7 +1,7 @@ - + Indicate whether this is a required attribute diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/enum.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/enum.svelte index 0dd3354400..ee9b9ad09f 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/enum.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/enum.svelte @@ -33,6 +33,10 @@ array ); dispatch('created', attribute); + addNotification({ + type: 'success', + message: `${key} has been created` + }); } catch (error) { addNotification({ type: 'error', @@ -67,7 +71,7 @@ label="Default value" bind:options bind:value={xdefault} - disabled={overview} /> + disabled={overview || required} /> Indicate whether this is a required attribute diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/float.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/float.svelte index 1cf87b469c..a13197eae6 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/float.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/float.svelte @@ -35,6 +35,10 @@ array ); dispatch('created', attribute); + addNotification({ + type: 'success', + message: `${key} has been created` + }); } catch (error) { addNotification({ type: 'error', @@ -60,6 +64,7 @@ id="default" label="Default value" bind:value={xdefault} + disabled={required} readonly={overview} step="any" /> diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/integer.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/integer.svelte index de9180c855..8981e8f7e6 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/integer.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/integer.svelte @@ -35,6 +35,10 @@ array ); dispatch('created', attribute); + addNotification({ + type: 'success', + message: `${key} has been created` + }); } catch (error) { addNotification({ type: 'error', @@ -56,7 +60,12 @@ - + Indicate whether this is a required attribute diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/ip.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/ip.svelte index ec362df50e..7d169ef5d5 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/ip.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/ip.svelte @@ -31,6 +31,10 @@ array ); dispatch('created', attribute); + addNotification({ + type: 'success', + message: `${key} has been created` + }); } catch (error) { addNotification({ type: 'error', @@ -49,7 +53,12 @@ } - + Indicate whether this is a required attribute diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/string.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/string.svelte index 54be822fdb..4bf1e046a8 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/string.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/string.svelte @@ -33,6 +33,10 @@ array ); dispatch('created', attribute); + addNotification({ + type: 'success', + message: `${key} has been created` + }); } catch (error) { addNotification({ type: 'error', @@ -52,7 +56,12 @@ - + Indicate whether this is a required attribute diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/url.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/url.svelte index 97cb3e1676..449799f0f8 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/url.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/attributes/url.svelte @@ -31,6 +31,10 @@ array ); dispatch('created', attribute); + addNotification({ + type: 'success', + message: `${key} has been created` + }); } catch (error) { addNotification({ type: 'error', @@ -49,7 +53,12 @@ } - + Indicate whether this is a required attribute diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/document/[document]/+layout.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/document/[document]/+layout.svelte index dd58d34acb..9fb4244596 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/document/[document]/+layout.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/document/[document]/+layout.svelte @@ -15,8 +15,9 @@ afterNavigate(handle); async function handle(event = null) { + const promise = doc.load(databaseId, collectionId, documentId); if ($doc?.$id !== documentId) { - await doc.load(databaseId, collectionId, documentId); + await promise; } updateLayout({ diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/document/[document]/+page.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/document/[document]/+page.svelte index 3006a378df..4f788fcc24 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/document/[document]/+page.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/document/[document]/+page.svelte @@ -1,7 +1,7 @@ @@ -12,21 +11,7 @@ Document Level. If collection Level permissions are assigned, permissions applied to individual documents are ignored. - - - You have Collection Level permissions enabled - -

    - If you want to assign permissions specific to this document, you will need to update - your Collection Settings to enable Document Level permissions. -

    -
    - -
      - -
    +
    + +
    diff --git a/src/routes/console/project-[project]/databases/database/[database]/store.ts b/src/routes/console/project-[project]/databases/database/[database]/store.ts index 4c2adf0bb8..a3eb21e8d8 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/store.ts +++ b/src/routes/console/project-[project]/databases/database/[database]/store.ts @@ -6,17 +6,13 @@ import { cachedStore } from '$lib/helpers/cache'; export const collections = cachedStore< Models.CollectionList, { - load: (databaseId: string, queries: string[], search: string) => Promise; + load: (databaseId: string, queries: string[]) => Promise; total: (databaseId: string, id: string) => Promise>; } >('collections', function ({ set }) { return { - load: async (databaseId, queries, search) => { - const response = await sdkForProject.databases.listCollections( - databaseId, - queries, - search - ); + load: async (databaseId, queries) => { + const response = await sdkForProject.databases.listCollections(databaseId, queries); set(response); }, total: async (databaseId, id) => { diff --git a/src/routes/console/project-[project]/functions/function/[function]/+layout.svelte b/src/routes/console/project-[project]/functions/function/[function]/+layout.svelte index f10b26ad73..24435ef0de 100644 --- a/src/routes/console/project-[project]/functions/function/[function]/+layout.svelte +++ b/src/routes/console/project-[project]/functions/function/[function]/+layout.svelte @@ -12,8 +12,9 @@ afterNavigate(handle); async function handle(event = null) { + const promise = func.load(functionId); if ($func?.$id !== functionId) { - await func.load(functionId); + await promise; } updateLayout({ diff --git a/src/routes/console/project-[project]/keys/+layout.svelte b/src/routes/console/project-[project]/keys/+layout.svelte deleted file mode 100644 index 29247c421c..0000000000 --- a/src/routes/console/project-[project]/keys/+layout.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/src/routes/console/project-[project]/keys/+page.svelte b/src/routes/console/project-[project]/keys/+page.svelte deleted file mode 100644 index 05f59eee2d..0000000000 --- a/src/routes/console/project-[project]/keys/+page.svelte +++ /dev/null @@ -1,62 +0,0 @@ - - - - Appwrite - API Keys - - - {#if $project} - {#if $project.keys} - - - Name - Scopes - - - {#each $project.keys as key} - - - {key.name} - - {key.scopes.length} - - {/each} - -
    - {:else} - -
    -
    No API Keys Found
    -
    - You haven't created any API keys for your project yet. -
    -
    -
    - {/if} - - {/if} -
    - diff --git a/src/routes/console/project-[project]/keys/_create.svelte b/src/routes/console/project-[project]/keys/_create.svelte deleted file mode 100644 index 055b5349c6..0000000000 --- a/src/routes/console/project-[project]/keys/_create.svelte +++ /dev/null @@ -1,69 +0,0 @@ - - - - - Add API Key -

    - Select AllUnselect All -

    - - {#each scopes as scope} - - {/each} - - - - -
    - diff --git a/src/routes/console/project-[project]/keys/key/[key]/+page.svelte b/src/routes/console/project-[project]/keys/key/[key]/+page.svelte deleted file mode 100644 index 691763677d..0000000000 --- a/src/routes/console/project-[project]/keys/key/[key]/+page.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - - - {#await request} - loading - {:then response} -

    {response.name}

    - - {/await} -
    -
    diff --git a/src/routes/console/project-[project]/overview/+layout.svelte b/src/routes/console/project-[project]/overview/+layout.svelte index bacc4dbda1..6ebba1fae0 100644 --- a/src/routes/console/project-[project]/overview/+layout.svelte +++ b/src/routes/console/project-[project]/overview/+layout.svelte @@ -17,17 +17,17 @@ $: path = `/console/project-${projectId}/overview`; let period: UsagePeriods = '30d'; - let showPeriodBandwith = false; + let showPeriodBandwidth = false; let showPeriodRequests = false; onMount(handle); afterNavigate(handle); async function handle() { + const promise = usage.load(projectId, period); + if ($usage) { - await usage.load(projectId, period); - } else { - usage.load(projectId, period); + await promise; } title.set($project.name); @@ -61,7 +61,7 @@ function changePeriod(newPeriod: UsagePeriods) { period = newPeriod; usage.load(projectId, period); - showPeriodBandwith = false; + showPeriodBandwidth = false; showPeriodRequests = false; } @@ -106,14 +106,14 @@
    Bandwidth
    @@ -134,7 +134,7 @@ [e.date, e.value])] } ]} /> @@ -276,7 +276,7 @@
    -
    10
    +
    XX
    Realtime Connections
    diff --git a/src/routes/console/project-[project]/overview/keys/+page.svelte b/src/routes/console/project-[project]/overview/keys/+page.svelte index ebe4a4379b..5f611048c5 100644 --- a/src/routes/console/project-[project]/overview/keys/+page.svelte +++ b/src/routes/console/project-[project]/overview/keys/+page.svelte @@ -39,7 +39,7 @@ {key.name} - {toLocaleDateTime(key.$createdAt)} + {key.accessedAt ? toLocaleDateTime(key.accessedAt) : 'never'} {toLocaleDateTime(key.$updatedAt)} diff --git a/src/routes/console/project-[project]/overview/keys/[key]/+page@project-[project].svelte b/src/routes/console/project-[project]/overview/keys/[key]/+page@project-[project].svelte index 113856d381..29b8e2f591 100644 --- a/src/routes/console/project-[project]/overview/keys/[key]/+page@project-[project].svelte +++ b/src/routes/console/project-[project]/overview/keys/[key]/+page@project-[project].svelte @@ -2,16 +2,10 @@ import { afterNavigate } from '$app/navigation'; import { base } from '$app/paths'; import { page } from '$app/stores'; - import { CardGrid } from '$lib/components'; - import { scopes } from '$lib/constants'; - import { - Button, - Form, - FormList, - InputCheckbox, - InputPassword, - InputText - } from '$lib/elements/forms'; + import { CardGrid, Secret } from '$lib/components'; + import { Button, Form, FormList, InputText } from '$lib/elements/forms'; + import InputDateTime from '$lib/elements/forms/inputDateTime.svelte'; + import { difference } from '$lib/helpers/array'; import { toLocaleDateTime } from '$lib/helpers/date'; import { Container } from '$lib/layout'; import { updateLayout } from '$lib/stores/layout'; @@ -19,38 +13,30 @@ import { sdkForConsole } from '$lib/stores/sdk'; import { onMount } from 'svelte'; import { project } from '../../../store'; + import Scopes from '../scopes.svelte'; import Delete from './delete.svelte'; import { key } from './store'; const projectId = $page.params.project; const keyId = $page.params.key; - const activeScopes = scopes.reduce((prev, next) => { - prev[next] = false; - - return prev; - }, {}); let loaded = false; let showDelete = false; let name: string = null; let secret: string = null; let expire: string = null; + let scopes: string[] = null; onMount(handle); afterNavigate(handle); async function handle(event = null) { - if ($key?.$id !== keyId) { - await key.load(projectId, keyId); - } + await key.load(projectId, keyId); name ??= $key.name; secret ??= $key.secret; expire ??= $key.expire; - unselectAll(); - $key.scopes.forEach((scope) => { - activeScopes[scope] = true; - }); + scopes ??= $key.scopes; updateLayout({ navigate: event, @@ -116,14 +102,9 @@ } async function updateScopes() { - console.log(scopes.filter((scope) => activeScopes[scope])); try { - await sdkForConsole.projects.updateKey( - $project.$id, - $key.$id, - $key.name, - scopes.filter((scope) => activeScopes[scope]) - ); + await sdkForConsole.projects.updateKey($project.$id, $key.$id, $key.name, scopes); + $key.scopes = scopes; addNotification({ type: 'success', message: 'API Key scopes has been updated' @@ -135,12 +116,6 @@ }); } } - - function unselectAll() { - for (const scope in activeScopes) { - activeScopes[scope] = false; - } - } @@ -149,36 +124,26 @@ {#if loaded} + {@const accessedAt = $key.accessedAt ? toLocaleDateTime($key.accessedAt) : 'never'}
    {$key.name}

    - Last accessed: {toLocaleDateTime($key.$updatedAt)}
    + Last accessed: {accessedAt}
    Scopes granted: {$key.scopes.length}

    -
    - -
    API Key Secret
    - - - - - - - - -
    -
    + +
    API Key Secret
    + + + +
    +
    Update Name
    @@ -207,18 +172,16 @@ practice to allow only the permissions you need to meet your project goals.

    - - {#each scopes as scope} - - {/each} - + - +
    @@ -228,11 +191,7 @@

    Choose any name that will help you distinguish between API keys.

    - + @@ -251,7 +210,7 @@
    {$key.name}
    -

    Last accessed: {toLocaleDateTime($key.$updatedAt)}

    +

    Last accessed: {accessedAt}

    diff --git a/src/routes/console/project-[project]/overview/keys/create.svelte b/src/routes/console/project-[project]/overview/keys/create.svelte index 80765d20ca..043cae7cb7 100644 --- a/src/routes/console/project-[project]/overview/keys/create.svelte +++ b/src/routes/console/project-[project]/overview/keys/create.svelte @@ -1,32 +1,21 @@
    - + Create API Key - {#each scopes as scope} - - {/each} + diff --git a/src/routes/console/project-[project]/overview/keys/scopes.svelte b/src/routes/console/project-[project]/overview/keys/scopes.svelte new file mode 100644 index 0000000000..d60f147308 --- /dev/null +++ b/src/routes/console/project-[project]/overview/keys/scopes.svelte @@ -0,0 +1,72 @@ + + +
    + + +
    + + {#each ['Authentication', 'Database', 'Functions', 'Storage', 'Other'] as category} + + {category} + + {#each allScopes.filter((s) => s.category === category) as scope} + + {scope.description} + + {/each} + + + {/each} + diff --git a/src/routes/console/project-[project]/overview/platforms/+page.svelte b/src/routes/console/project-[project]/overview/platforms/+page.svelte index b679ee92e3..34eafdce0d 100644 --- a/src/routes/console/project-[project]/overview/platforms/+page.svelte +++ b/src/routes/console/project-[project]/overview/platforms/+page.svelte @@ -21,7 +21,7 @@ -
    +
    {#each $project.platforms as platform} {platform.name} diff --git a/src/routes/console/project-[project]/storage/+page.svelte b/src/routes/console/project-[project]/storage/+page.svelte index 9de1c49276..515002ec99 100644 --- a/src/routes/console/project-[project]/storage/+page.svelte +++ b/src/routes/console/project-[project]/storage/+page.svelte @@ -2,7 +2,7 @@ import { page } from '$app/stores'; import { goto } from '$app/navigation'; import { Button } from '$lib/elements/forms'; - import { Empty, Pagination, Copy, GridItem1 } from '$lib/components'; + import { Empty, Pagination, Copy, GridItem1, CardContainer } from '$lib/components'; import { Pill } from '$lib/elements'; import { Query, type Models } from '@aw-labs/appwrite-console'; import Create from './_create.svelte'; @@ -10,10 +10,9 @@ import { base } from '$app/paths'; import { bucketList } from './store'; import { tooltip } from '$lib/actions/tooltip'; - import { pageLimit } from '$lib/stores/layout'; + import { cardLimit } from '$lib/stores/layout'; let showCreate = false; - let search = ''; let offset = 0; const project = $page.params.project; @@ -22,8 +21,11 @@ await goto(`${base}/console/project-${project}/storage/bucket/${event.detail.$id}`); }; - $: bucketList.load([Query.limit($pageLimit), Query.offset(offset)], search); - $: if (search) offset = 0; + $: bucketList.load([ + Query.limit($cardLimit), + Query.offset(offset), + Query.orderDesc('$createdAt') + ]); @@ -36,11 +38,7 @@
    {#if $bucketList?.total} -
      3 ? '22rem' : '25rem' - };`}> + (showCreate = true)}> {#each $bucketList.buckets as bucket} XX Files @@ -81,32 +79,14 @@ {/each} - {#if $bucketList.total % 2 !== 0} - (showCreate = true)}> -

      Add a new bucket

      -
      - {/if} -
    + +

    Add a new bucket

    +
    +

    Total results: {$bucketList.total}

    - -
    - {:else if search} - -
    - Sorry, we couldn’t find ‘{search}’ -
    -

    There are no buckets that match your search.

    -
    -
    - -
    -
    -
    -
    -

    Total results: {$bucketList?.total}

    - +
    {:else} (showCreate = true)}> diff --git a/src/routes/console/project-[project]/storage/_create.svelte b/src/routes/console/project-[project]/storage/_create.svelte index f935edb9fd..8ec10ab1c1 100644 --- a/src/routes/console/project-[project]/storage/_create.svelte +++ b/src/routes/console/project-[project]/storage/_create.svelte @@ -1,5 +1,5 @@ @@ -46,41 +46,15 @@ autofocus required /> - {#if !showDropdown} + {#if !showCustomId}
    - (showDropdown = !showDropdown)}> + (showCustomId = !showCustomId)}>
    {:else} - - Bucket ID - - Enter a custom bucket ID. Leave blank for a randomly generated one. - - -
    - - -
    -
    -
    -
    -
    + {/if} diff --git a/src/routes/console/project-[project]/storage/bucket/[bucket]/+layout.svelte b/src/routes/console/project-[project]/storage/bucket/[bucket]/+layout.svelte index a1a4a06594..a099a45a97 100644 --- a/src/routes/console/project-[project]/storage/bucket/[bucket]/+layout.svelte +++ b/src/routes/console/project-[project]/storage/bucket/[bucket]/+layout.svelte @@ -1,10 +1,12 @@ @@ -85,9 +90,9 @@ Filename - Type - Size - Date Created + Type + Size + Date Created @@ -95,11 +100,13 @@ {#if file.chunksTotal / file.chunksUploaded !== 1} -
    -
    +
    + {file.name} - Pending +
    + Pending +
    {file.mimeType} @@ -112,9 +119,7 @@
    {:else if search} - -
    + +
    Sorry, we couldn’t find ‘{search}’ -
    -

    There are no files that match your search.

    -
    -
    - -
    +

    There are no files that match your search.

    - -
    -

    Total results: {$files?.total}

    - -
    + +
    {:else} (showCreate = true)}>

    Upload some files to get started

    diff --git a/src/routes/console/project-[project]/storage/bucket/[bucket]/_create.svelte b/src/routes/console/project-[project]/storage/bucket/[bucket]/_create.svelte index fe94f6e7f6..dc0be399bc 100644 --- a/src/routes/console/project-[project]/storage/bucket/[bucket]/_create.svelte +++ b/src/routes/console/project-[project]/storage/bucket/[bucket]/_create.svelte @@ -1,13 +1,14 @@ @@ -111,56 +108,19 @@

    Max file size: {calculateSize($bucket.maximumFileSize)}

    - {#if !showDropdown} + {#if !showCustomId}
    - (showDropdown = !showDropdown)}> + (showCustomId = !showCustomId)}>
    {:else} - - File ID - - Enter a custom file ID. Leave blank for a randomly generated one. - - -
    - - -
    -
    -
    -
    -
    + {/if}

    Permissions

    - -

    - Tip: Add role:all for wildcard access. Check out our documentation for more on - Permissions -

    -
    - + diff --git a/src/routes/console/project-[project]/storage/bucket/[bucket]/file/[file]/+layout.svelte b/src/routes/console/project-[project]/storage/bucket/[bucket]/file/[file]/+layout.svelte index cdae536c77..51a0c1cc30 100644 --- a/src/routes/console/project-[project]/storage/bucket/[bucket]/file/[file]/+layout.svelte +++ b/src/routes/console/project-[project]/storage/bucket/[bucket]/file/[file]/+layout.svelte @@ -13,8 +13,9 @@ afterNavigate(handle); async function handle(event = null) { + const promise = file.load(bucketId, fileId); if ($file?.$id !== fileId) { - await file.load(bucketId, fileId); + await promise; } updateLayout({ diff --git a/src/routes/console/project-[project]/storage/bucket/[bucket]/file/[file]/+page.svelte b/src/routes/console/project-[project]/storage/bucket/[bucket]/file/[file]/+page.svelte index 38ec20e028..152ab84515 100644 --- a/src/routes/console/project-[project]/storage/bucket/[bucket]/file/[file]/+page.svelte +++ b/src/routes/console/project-[project]/storage/bucket/[bucket]/file/[file]/+page.svelte @@ -1,7 +1,7 @@