diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 294dae87c..e84ba9c8b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -39,7 +39,7 @@ jobs: labels: ${{ steps.meta.outputs.labels }} build-args: | "PUBLIC_CONSOLE_MODE=cloud" - "PUBLIC_CONSOLE_FEATURE_FLAGS=" + "PUBLIC_CONSOLE_FEATURE_FLAGS=sites" "PUBLIC_APPWRITE_MULTI_REGION=true" "PUBLIC_GROWTH_ENDPOINT=${{ secrets.PUBLIC_GROWTH_ENDPOINT }}" "PUBLIC_STRIPE_KEY=${{ secrets.PUBLIC_STRIPE_KEY }}" diff --git a/package.json b/package.json index 7fca0c3e5..a65379ebb 100644 --- a/package.json +++ b/package.json @@ -48,8 +48,8 @@ "tippy.js": "^6.3.7" }, "devDependencies": { - "@eslint/compat": "^1.2.7", - "@eslint/js": "^9.24.0", + "@eslint/compat": "^1.3.1", + "@eslint/js": "^9.31.0", "@melt-ui/pp": "^0.3.2", "@melt-ui/svelte": "^0.86.5", "@playwright/test": "^1.51.1", @@ -58,20 +58,20 @@ "@sveltejs/vite-plugin-svelte": "^5.0.3", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", - "@testing-library/svelte": "^5.2.4", + "@testing-library/svelte": "^5.2.8", "@testing-library/user-event": "^14.6.1", "@types/deep-equal": "^1.0.4", "@types/prismjs": "^1.26.5", "@types/remarkable": "^2.0.8", "@typescript-eslint/eslint-plugin": "^8.28.0", "@typescript-eslint/parser": "^8.28.0", - "@vitest/ui": "^3.0.9", + "@vitest/ui": "^3.2.4", "color": "^5.0.0", "eslint": "^9.31.0", "eslint-config-prettier": "^10.1.0", "eslint-plugin-svelte": "^3.3.3", "globals": "^16.0.0", - "jsdom": "^26.0.0", + "jsdom": "^26.1.0", "kleur": "^4.1.5", "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 397df19ce..0e6defd68 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -85,11 +85,11 @@ importers: version: 6.3.7 devDependencies: '@eslint/compat': - specifier: ^1.2.7 - version: 1.2.7(eslint@9.31.0) + specifier: ^1.3.1 + version: 1.3.1(eslint@9.31.0) '@eslint/js': - specifier: ^9.24.0 - version: 9.24.0 + specifier: ^9.31.0 + version: 9.31.0 '@melt-ui/pp': specifier: ^0.3.2 version: 0.3.2(@melt-ui/svelte@0.86.5(svelte@5.25.3))(svelte@5.25.3) @@ -115,8 +115,8 @@ importers: specifier: ^6.6.3 version: 6.6.3 '@testing-library/svelte': - specifier: ^5.2.4 - version: 5.2.7(svelte@5.25.3)(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0))(vitest@3.0.9) + specifier: ^5.2.8 + version: 5.2.8(svelte@5.25.3)(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0))(vitest@3.0.9) '@testing-library/user-event': specifier: ^14.6.1 version: 14.6.1(@testing-library/dom@10.4.0) @@ -136,8 +136,8 @@ importers: specifier: ^8.28.0 version: 8.28.0(eslint@9.31.0)(typescript@5.8.2) '@vitest/ui': - specifier: ^3.0.9 - version: 3.0.9(vitest@3.0.9) + specifier: ^3.2.4 + version: 3.2.4(vitest@3.0.9) color: specifier: ^5.0.0 version: 5.0.0 @@ -154,8 +154,8 @@ importers: specifier: ^16.0.0 version: 16.0.0 jsdom: - specifier: ^26.0.0 - version: 26.0.0 + specifier: ^26.1.0 + version: 26.1.0 kleur: specifier: ^4.1.5 version: 4.1.5 @@ -197,7 +197,7 @@ importers: version: 6.2.3(@types/node@22.13.14)(sass@1.86.0) vitest: specifier: ^3.0.0 - version: 3.0.9(@types/node@22.13.14)(@vitest/ui@3.0.9)(jsdom@26.0.0)(sass@1.86.0) + version: 3.0.9(@types/node@22.13.14)(@vitest/ui@3.2.4)(jsdom@26.1.0)(sass@1.86.0) packages: @@ -548,11 +548,11 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@1.2.7': - resolution: {integrity: sha512-xvv7hJE32yhegJ8xNAnb62ggiAwTYHBpUCWhRxEj/ksvgDJuSXfoDkBcRYaYNFiJ+jH0IE3K16hd+xXzhBgNbg==} + '@eslint/compat@1.3.1': + resolution: {integrity: sha512-k8MHony59I5EPic6EQTCNOuPoVBnoYXkP+20xvwFjN7t0qI3ImyvyBgg+hIVPwC8JaxVjjUZld+cLfBLFDLucg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^9.10.0 + eslint: ^8.40 || 9 peerDependenciesMeta: eslint: optional: true @@ -573,10 +573,6 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.24.0': - resolution: {integrity: sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.31.0': resolution: {integrity: sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1288,8 +1284,8 @@ packages: resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - '@testing-library/svelte@5.2.7': - resolution: {integrity: sha512-aGhUaFmEXEVost4QOsbHUUbHLwi7ZZRRxAHFDO2Cmr0BZD3/3+XvaYEPq70Rdw0NRNjdqZHdARBEcrCOkPuAqw==} + '@testing-library/svelte@5.2.8': + resolution: {integrity: sha512-ucQOtGsJhtawOEtUmbR4rRh53e6RbM1KUluJIXRmh6D4UzxR847iIqqjRtg9mHNFmGQ8Vkam9yVcR5d1mhIHKA==} engines: {node: '>= 10'} peerDependencies: svelte: ^3 || ^4 || ^5 || ^5.0.0-next.0 @@ -1484,6 +1480,9 @@ packages: '@vitest/pretty-format@3.0.9': resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@vitest/runner@3.0.9': resolution: {integrity: sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==} @@ -1493,14 +1492,17 @@ packages: '@vitest/spy@3.0.9': resolution: {integrity: sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==} - '@vitest/ui@3.0.9': - resolution: {integrity: sha512-FpZD4aIv/qNpwkV3XbLV6xldWFHMgoNWAJEgg5GmpObmAOLAErpYjew9dDwXdYdKOS3iZRKdwI+P3JOJcYeUBg==} + '@vitest/ui@3.2.4': + resolution: {integrity: sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==} peerDependencies: - vitest: 3.0.9 + vitest: 3.2.4 '@vitest/utils@3.0.9': resolution: {integrity: sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==} + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + '@vue/compiler-core@3.5.13': resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} @@ -1631,9 +1633,6 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - autolinker@3.16.2: resolution: {integrity: sha512-JiYl7j2Z19F9NdTmirENSUUIIL/9MytEWtmzhfmsKPCp9E+G35Y0UNCMoM9tFigxT59qSc8Ml2dlZXOCVTYwuA==} @@ -1756,10 +1755,6 @@ packages: resolution: {integrity: sha512-16BlyiuyLq3MLxpRWyOTiWsO3ii/eLQLJUQXBSNcxMBBSnyt1ee9YUdaozQp03ifwm5woztEZGDbk9RGVuCsdw==} engines: {node: '>=18'} - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -1976,10 +1971,6 @@ packages: delaunator@5.0.1: resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -2043,10 +2034,6 @@ packages: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - esbuild@0.25.1: resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} engines: {node: '>=18'} @@ -2189,6 +2176,14 @@ packages: picomatch: optional: true + fdir@6.4.6: + resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} @@ -2218,10 +2213,6 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - form-data@4.0.2: - resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} - engines: {node: '>= 6'} - forwarded-parse@2.1.2: resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} @@ -2491,8 +2482,8 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsdom@26.0.0: - resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==} + jsdom@26.1.0: + resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} engines: {node: '>=18'} peerDependencies: canvas: ^3.0.0 @@ -2560,6 +2551,9 @@ packages: loupe@3.1.3: resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + loupe@3.2.0: + resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -2621,14 +2615,6 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -3262,8 +3248,8 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.12: - resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} tinypool@1.0.2: @@ -3914,7 +3900,7 @@ snapshots: '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.2.7(eslint@9.31.0)': + '@eslint/compat@1.3.1(eslint@9.31.0)': optionalDependencies: eslint: 9.31.0 @@ -3946,8 +3932,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.24.0': {} - '@eslint/js@9.31.0': {} '@eslint/object-schema@2.1.6': {} @@ -4773,13 +4757,13 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 - '@testing-library/svelte@5.2.7(svelte@5.25.3)(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0))(vitest@3.0.9)': + '@testing-library/svelte@5.2.8(svelte@5.25.3)(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0))(vitest@3.0.9)': dependencies: '@testing-library/dom': 10.4.0 svelte: 5.25.3 optionalDependencies: vite: 6.2.3(@types/node@22.13.14)(sass@1.86.0) - vitest: 3.0.9(@types/node@22.13.14)(@vitest/ui@3.0.9)(jsdom@26.0.0)(sass@1.86.0) + vitest: 3.0.9(@types/node@22.13.14)(@vitest/ui@3.2.4)(jsdom@26.1.0)(sass@1.86.0) '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.0)': dependencies: @@ -5023,6 +5007,10 @@ snapshots: dependencies: tinyrainbow: 2.0.0 + '@vitest/pretty-format@3.2.4': + dependencies: + tinyrainbow: 2.0.0 + '@vitest/runner@3.0.9': dependencies: '@vitest/utils': 3.0.9 @@ -5038,16 +5026,16 @@ snapshots: dependencies: tinyspy: 3.0.2 - '@vitest/ui@3.0.9(vitest@3.0.9)': + '@vitest/ui@3.2.4(vitest@3.0.9)': dependencies: - '@vitest/utils': 3.0.9 + '@vitest/utils': 3.2.4 fflate: 0.8.2 flatted: 3.3.3 pathe: 2.0.3 sirv: 3.0.1 - tinyglobby: 0.2.12 + tinyglobby: 0.2.14 tinyrainbow: 2.0.0 - vitest: 3.0.9(@types/node@22.13.14)(@vitest/ui@3.0.9)(jsdom@26.0.0)(sass@1.86.0) + vitest: 3.0.9(@types/node@22.13.14)(@vitest/ui@3.2.4)(jsdom@26.1.0)(sass@1.86.0) '@vitest/utils@3.0.9': dependencies: @@ -5055,6 +5043,12 @@ snapshots: loupe: 3.1.3 tinyrainbow: 2.0.0 + '@vitest/utils@3.2.4': + dependencies: + '@vitest/pretty-format': 3.2.4 + loupe: 3.2.0 + tinyrainbow: 2.0.0 + '@vue/compiler-core@3.5.13': dependencies: '@babel/parser': 7.27.0 @@ -5206,8 +5200,6 @@ snapshots: dependencies: tslib: 2.8.1 - asynckit@0.4.0: {} - autolinker@3.16.2: dependencies: tslib: 2.8.1 @@ -5340,10 +5332,6 @@ snapshots: color-convert: 3.1.0 color-string: 2.0.1 - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - comma-separated-tokens@2.0.3: {} commander@7.2.0: {} @@ -5588,8 +5576,6 @@ snapshots: dependencies: robust-predicates: 3.0.2 - delayed-stream@1.0.0: {} - dequal@2.0.3: {} detect-libc@1.0.3: @@ -5648,13 +5634,6 @@ snapshots: dependencies: es-errors: 1.3.0 - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - esbuild@0.25.1: optionalDependencies: '@esbuild/aix-ppc64': 0.25.1 @@ -5836,6 +5815,10 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fdir@6.4.6(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + fflate@0.8.2: {} file-entry-cache@8.0.0: @@ -5866,13 +5849,6 @@ snapshots: dependencies: is-callable: 1.2.7 - form-data@4.0.2: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - mime-types: 2.1.35 - forwarded-parse@2.1.2: {} framesync@6.1.2: @@ -6140,12 +6116,11 @@ snapshots: dependencies: argparse: 2.0.1 - jsdom@26.0.0: + jsdom@26.1.0: dependencies: cssstyle: 4.3.0 data-urls: 5.0.0 decimal.js: 10.5.0 - form-data: 4.0.2 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -6211,6 +6186,8 @@ snapshots: loupe@3.1.3: {} + loupe@3.2.0: {} + lru-cache@10.4.3: {} lru-cache@5.1.1: @@ -6279,12 +6256,6 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - min-indent@1.0.1: {} minimatch@3.1.2: @@ -6905,9 +6876,9 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.12: + tinyglobby@0.2.14: dependencies: - fdir: 6.4.3(picomatch@4.0.2) + fdir: 6.4.6(picomatch@4.0.2) picomatch: 4.0.2 tinypool@1.0.2: {} @@ -7071,7 +7042,7 @@ snapshots: optionalDependencies: vite: 6.2.3(@types/node@22.13.14)(sass@1.86.0) - vitest@3.0.9(@types/node@22.13.14)(@vitest/ui@3.0.9)(jsdom@26.0.0)(sass@1.86.0): + vitest@3.0.9(@types/node@22.13.14)(@vitest/ui@3.2.4)(jsdom@26.1.0)(sass@1.86.0): dependencies: '@vitest/expect': 3.0.9 '@vitest/mocker': 3.0.9(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)) @@ -7095,8 +7066,8 @@ snapshots: why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.13.14 - '@vitest/ui': 3.0.9(vitest@3.0.9) - jsdom: 26.0.0 + '@vitest/ui': 3.2.4(vitest@3.0.9) + jsdom: 26.1.0 transitivePeerDependencies: - jiti - less diff --git a/src/lib/components/breadcrumbs.svelte b/src/lib/components/breadcrumbs.svelte index e29c4c8d0..da4bfd5c0 100644 --- a/src/lib/components/breadcrumbs.svelte +++ b/src/lib/components/breadcrumbs.svelte @@ -103,6 +103,9 @@ isLoadingProjects = true; // null on non-org/project path like `onboarding`. loadedProjects = (await projects) ?? loadedProjects; + for (const project of loadedProjects.projects) { + project.region ??= 'default'; + } isLoadingProjects = false; const createProjectItem = { @@ -112,10 +115,12 @@ }; if (loadedProjects.total > 1 && selectedOrg) { - const projectLinks = loadedProjects.projects.slice(0, 4).map((project) => ({ - name: project.name, - href: `${base}/project-${project.region}-${project.$id}/overview/platforms` - })); + const projectLinks = loadedProjects.projects.slice(0, 4).map((project) => { + return { + name: project.name, + href: `${base}/project-${project.region}-${project.$id}/overview/platforms` + }; + }); if (loadedProjects.projects.length > 4) { projectLinks.push({ diff --git a/src/lib/components/fakeModal.svelte b/src/lib/components/fakeModal.svelte index 13a40cb2d..7de186864 100644 --- a/src/lib/components/fakeModal.svelte +++ b/src/lib/components/fakeModal.svelte @@ -1,5 +1,5 @@
@@ -75,12 +89,7 @@ c.filter !== false) - .map((c) => ({ - label: c.title, - value: c.id - }))} + options={columnOptions} placeholder="Select column" bind:value={columnId} /> ({ - label: e?.label ?? e, - value: e?.value ?? e, - checked: arrayValues.includes(e?.value ?? e) - }))}> + options={enumOptionsWithChecked}> {:else} ({ - label: e?.label ?? e, - value: e?.value ?? e - }))} /> + options={enumOptions} /> {:else if column.type === 'integer' || column.type === 'double'} {:else if column.type === 'boolean'} @@ -131,7 +133,7 @@ options={[ { label: 'True', value: true }, { label: 'False', value: false } - ].filter(Boolean)} + ]} bind:value /> {:else if column.type === 'datetime'} {#key value} @@ -151,10 +153,10 @@ {/if} - {#if !singleCondition} + {#if !singleCondition && appliedTags.length > 0}
    { queries.removeFilter(e.detail); queries.apply(); diff --git a/src/lib/components/git/productionBranchFieldset.svelte b/src/lib/components/git/productionBranchFieldset.svelte index 2820ee962..de059a73c 100644 --- a/src/lib/components/git/productionBranchFieldset.svelte +++ b/src/lib/components/git/productionBranchFieldset.svelte @@ -16,17 +16,17 @@ let show = false; async function loadBranches() { + const repo = await sdk + .forProject(page.params.region, page.params.project) + .vcs.getRepository(installationId, repositoryId); + + branch = repo.defaultBranch ?? 'main'; + const { branches } = await sdk .forProject(page.params.region, page.params.project) .vcs.listRepositoryBranches(installationId, repositoryId); - const sorted = sortBranches(branches); - branch = sorted[0]?.name ?? null; - if (!branch) { - branch = 'main'; - } - - return sorted; + return sortBranches(branches); } diff --git a/src/lib/layout/containerHeader.svelte b/src/lib/layout/containerHeader.svelte index 83654a708..c33adf668 100644 --- a/src/lib/layout/containerHeader.svelte +++ b/src/lib/layout/containerHeader.svelte @@ -1,7 +1,8 @@ + + + + + + {'{{user}}'} + {'{{project}}'} + {'{{otp}}'} + + + {'{{agentClient}}'} + {'{{agentDevice}}'} + {'{{agentOs}}'} + + + + diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/emailTemplate.svelte b/src/routes/(console)/project-[region]-[project]/auth/templates/emailTemplate.svelte index b43f6c5f5..39d80d455 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/templates/emailTemplate.svelte +++ b/src/routes/(console)/project-[region]-[project]/auth/templates/emailTemplate.svelte @@ -119,7 +119,7 @@ >here.

    - + {/if} diff --git a/src/routes/(console)/project-[region]-[project]/auth/templates/store.ts b/src/routes/(console)/project-[region]-[project]/auth/templates/store.ts index 4173fd0b7..f9c3b6a86 100644 --- a/src/routes/(console)/project-[region]-[project]/auth/templates/store.ts +++ b/src/routes/(console)/project-[region]-[project]/auth/templates/store.ts @@ -5,8 +5,9 @@ import type { Models } from '@appwrite.io/console'; // component imports import Email2FaTemplate from './email2FATemplate.svelte'; import EmailInviteTemplate from './emailInviteTemplate.svelte'; -import EmailRecoveryTemplate from './emailRecoveryTemplate.svelte'; import EmailMagicUrlTemplate from './emailMagicUrlTemplate.svelte'; +import EmailRecoveryTemplate from './emailRecoveryTemplate.svelte'; +import EmailOtpSessionTemplate from './emailOtpSessionTemplate.svelte'; import EmailVerificationTemplate from './emailVerificationTemplate.svelte'; import EmailSessionAlertTemplate from './emailSessionAlertTemplate.svelte'; @@ -62,7 +63,7 @@ export const templates = [ key: 'otpSession', title: 'OTP session', description: 'Send an email to users that sign in with a email OTP.', - component: EmailMagicUrlTemplate + component: EmailOtpSessionTemplate }, { key: 'recovery', diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/document-[document]/settings/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/document-[document]/settings/+page.svelte index fd24eb648..abfab7dee 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/document-[document]/settings/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/document-[document]/settings/+page.svelte @@ -1,5 +1,5 @@ diff --git a/src/routes/(console)/project-[region]-[project]/sites/create-site/importSiteVariablesModal.svelte b/src/routes/(console)/project-[region]-[project]/sites/create-site/importSiteVariablesModal.svelte index 16237068a..db776b05d 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/create-site/importSiteVariablesModal.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/create-site/importSiteVariablesModal.svelte @@ -1,6 +1,6 @@ diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte index 84d14d4cc..cae96ec49 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/+layout.svelte @@ -14,7 +14,7 @@ onMount(() => { let previousStatus: string = null; return sdk.forConsole.client.subscribe('console', (message) => { - if (previousStatus === message.payload.status) { + if (message.payload.status !== 'ready' && previousStatus === message.payload.status) { return; } previousStatus = message.payload.status; diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/createGitDeploymentModal.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/createGitDeploymentModal.svelte index 099f9dcdb..fcf26a97f 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/createGitDeploymentModal.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/createGitDeploymentModal.svelte @@ -57,7 +57,10 @@ .vcs.listRepositoryBranches($installation.$id, selectedRepository); const sorted = sortBranches(branchList.branches); - branch = sorted[0]?.name ?? null; + + branch = sorted.find((b) => b.name === site.providerBranch) + ? site.providerBranch + : (sorted[0]?.name ?? null); if (!branch) { branch = 'main'; diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte index 82db52688..4e5651181 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/deployments/deployment-[deployment]/+page.svelte @@ -12,7 +12,7 @@ import CancelDeploymentModal from '../cancelDeploymentModal.svelte'; import RedeployModal from '../../../redeployModal.svelte'; import ActivateDeploymentModal from '../../../activateDeploymentModal.svelte'; - import { Accordion } from '@appwrite.io/pink-svelte'; + import { Accordion, Tooltip } from '@appwrite.io/pink-svelte'; import { capitalize } from '$lib/helpers/string'; import LogsTimer from '../../../(components)/logsTimer.svelte'; import { invalidate } from '$app/navigation'; @@ -56,7 +56,17 @@ {/if} - + +
    + +
    +
    Source is empty
    +
    {/key} - + { } }); + const enabledSpecs = specificationsList?.specifications?.filter((s) => s.enabled) ?? []; + if (!enabledSpecs.some((s) => s.slug === site.specification)) { + site.specification = enabledSpecs[0]?.slug; + } + return { site, frameworks, diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/settings/updateBuildSettings.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/settings/updateBuildSettings.svelte index b8344ea39..c18f70d8f 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/settings/updateBuildSettings.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/settings/updateBuildSettings.svelte @@ -17,10 +17,12 @@ let { site, - frameworks + frameworks, + specs }: { site: Models.Site; frameworks: Models.Framework[]; + specs: Models.SpecificationList; } = $props(); let frameworkKey = $state(site.framework); @@ -88,12 +90,33 @@ } }); + $effect(() => { + if (selectedFramework) { + if (!selectedFramework.adapters.some((a) => a.key === adapter)) { + adapter = selectedFramework.adapters[0].key as Adapter; + site.adapter = adapter; + } + if (specs && specs.specifications?.length) { + if (!specs.specifications.some((s) => s.slug === site.specification)) { + site.specification = specs.specifications[0].slug; + } + } + } + }); + async function update() { let adptr = selectedFramework.adapters.find((a) => a.key === adapter); if (!adptr?.key && selectedFramework.adapters?.length) { adapter = selectedFramework.adapters[0].key as Adapter; adptr = selectedFramework.adapters[0]; + site.adapter = adapter; } + // only allow enabled specsification for it + const enabledSpecs = specs?.specifications?.filter((s) => s.enabled) ?? []; + let specToSend = enabledSpecs.some((s) => s.slug === site.specification) + ? site.specification + : enabledSpecs[0]?.slug; + site.specification = specToSend; try { await sdk .forProject(page.params.region, page.params.project) @@ -115,7 +138,7 @@ site.providerBranch || undefined, site.providerSilentMode || undefined, site.providerRootDirectory || undefined, - site?.specification || undefined + specToSend || undefined ); await invalidate(Dependencies.SITE); addNotification({ diff --git a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/settings/updateResourceLimits.svelte b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/settings/updateResourceLimits.svelte index 9f8275a41..23a4da12b 100644 --- a/src/routes/(console)/project-[region]-[project]/sites/site-[site]/settings/updateResourceLimits.svelte +++ b/src/routes/(console)/project-[region]-[project]/sites/site-[site]/settings/updateResourceLimits.svelte @@ -19,8 +19,6 @@ let specification = site.specification; let originalSpecification = site.specification; - $: originalSpecification = site.specification; - async function updateLogging() { try { await sdk diff --git a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/updateMaxFileSize.svelte b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/updateMaxFileSize.svelte index 62bbb8c4b..6e8b681dc 100644 --- a/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/updateMaxFileSize.svelte +++ b/src/routes/(console)/project-[region]-[project]/storage/bucket-[bucket]/settings/updateMaxFileSize.svelte @@ -1,6 +1,7 @@