diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 597d85d..3597d75 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: version: latest - name: Start Supabase local development setup - run: supabase start + run: supabase start -x realtime,storage-api,imgproxy,inbucket,studio,edge-runtime,logflare,vector,pgbouncer - name: Verify generated types are checked in run: | diff --git a/README.md b/README.md index 6e11e19..ee1a66e 100644 --- a/README.md +++ b/README.md @@ -39,12 +39,12 @@ SUPABASE_SERVICE_ROLE_KEY= CONNECTION_STRING= ``` -The "CONNECTION_STRING" can be found inside the Supabase Dashboard by going to [**Settings > Database**](https://app.supabase.com/project/idqjyyqyuxmhbpclxvxq/settings/database) then scrolling down to **Connection string** and clicking on the **URI** tab. You should see a string looking like `postgresql://postgres:[YOUR-PASSWORD]@host:5432/postgres`. +The "CONNECTION_STRING" can be found inside the Supabase Dashboard by going to [**Settings > Database**](https://app.supabase.com/project/_/settings/database) then scrolling down to **Connection string** and clicking on the **URI** tab. You should see a string looking like `postgresql://postgres:[YOUR-PASSWORD]@host:5432/postgres`. ### Run database migrations ```sh -pnpm m:up +pnpm exec supabase migration up ``` ### Creating admin user @@ -64,7 +64,11 @@ pnpm dev pnpm dev -- --open ``` -## Building +## Production + +There are email templates in this project that are used for local development. To update your hosted project, please copy the templates from `supabase/auth/email` into the [Email Templates](https://supabase.com/dashboard/project/_/auth/templates) section of the Dashboard. + +### Building To create a production version of your app: diff --git a/example.env b/example.env index df93a50..daa7e07 100644 --- a/example.env +++ b/example.env @@ -1,5 +1,5 @@ VITE_APP_URL=http://localhost:3000/ -VITE_SUPABASE_URL= -VITE_SUPABASE_ANON_KEY= -SUPABASE_SERVICE_ROLE_KEY= -CONNECTION_STRING= +VITE_SUPABASE_URL=http://localhost:58721 +VITE_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0 +SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU +CONNECTION_STRING=postgresql://postgres:postgres@localhost:58722/postgres diff --git a/package.json b/package.json index 3f0851f..61340bf 100644 --- a/package.json +++ b/package.json @@ -1,49 +1,49 @@ { - "name": "waiting-list", - "version": "0.3.0", - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview", - "start": "node build/index.js", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "prettier --check --plugin-search-dir=. . && eslint --ignore-path .gitignore .", - "format": "prettier --write --plugin-search-dir=. .", - "m:new": "ley new", - "m:up": "ley up", - "m:down": "ley down", - "m:status": "ley status" - }, - "devDependencies": { - "@supabase/supabase-js": "^2.32.0", - "@sveltejs/adapter-node": "^1.3.1", - "@sveltejs/kit": "^1.22.5", - "@types/cookie": "^0.5.1", - "@typescript-eslint/eslint-plugin": "^5.59.7", - "@typescript-eslint/parser": "^5.59.7", - "dotenv": "^16.0.3", - "eslint": "^8.41.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-svelte": "^2.32.4", - "ley": "^0.8.1", - "pg-connection-string": "^2.6.0", - "postgres": "^3.3.4", - "prettier": "~3.0.1", - "prettier-plugin-svelte": "^3.0.3", - "supabase": "1.85.0", - "svelte": "^4.1.2", - "svelte-check": "^3.4.3", - "svelte-preprocess": "^5.0.4", - "sveltekit-flash-message": "^2.1.3", - "tslib": "^2.5.2", - "typescript": "^5.0.4", - "vite": "^4.3.9" - }, - "type": "module", - "dependencies": { - "@supabase/auth-helpers-sveltekit": "^0.10.2", - "email-regex": "^5.0.0", - "vest": "^4.6.11" - } -} + "name": "waiting-list", + "version": "0.3.0", + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "start": "node build/index.js", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --check --plugin-search-dir=. . && eslint --ignore-path .gitignore .", + "format": "prettier --write --plugin-search-dir=. .", + "m:new": "ley new", + "m:up": "ley up", + "m:down": "ley down", + "m:status": "ley status" + }, + "devDependencies": { + "@supabase/supabase-js": "^2.33.1", + "@sveltejs/adapter-node": "^1.3.1", + "@sveltejs/kit": "^1.24.0", + "@types/cookie": "^0.5.1", + "@typescript-eslint/eslint-plugin": "^6.5.0", + "@typescript-eslint/parser": "^6.5.0", + "dotenv": "^16.3.1", + "eslint": "^8.48.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-svelte": "^2.33.0", + "ley": "^0.8.1", + "pg-connection-string": "^2.6.2", + "postgres": "^3.3.5", + "prettier": "~3.0.3", + "prettier-plugin-svelte": "^3.0.3", + "supabase": "1.88.0", + "svelte": "^4.2.0", + "svelte-check": "^3.5.1", + "svelte-preprocess": "^5.0.4", + "sveltekit-flash-message": "^2.2.0", + "tslib": "^2.6.2", + "typescript": "^5.2.2", + "vite": "^4.4.9" + }, + "type": "module", + "dependencies": { + "@supabase/auth-helpers-sveltekit": "^0.10.2", + "email-regex": "^5.0.0", + "vest": "^4.6.11" + } +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9353e9b..e989b7b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,9 +1,13 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + dependencies: '@supabase/auth-helpers-sveltekit': specifier: ^0.10.2 - version: 0.10.2(@supabase/supabase-js@2.32.0)(@sveltejs/kit@1.22.5) + version: 0.10.2(@supabase/supabase-js@2.33.1)(@sveltejs/kit@1.24.0) email-regex: specifier: ^5.0.0 version: 5.0.0 @@ -13,74 +17,74 @@ dependencies: devDependencies: '@supabase/supabase-js': - specifier: ^2.32.0 - version: 2.32.0 + specifier: ^2.33.1 + version: 2.33.1 '@sveltejs/adapter-node': specifier: ^1.3.1 - version: 1.3.1(@sveltejs/kit@1.22.5) + version: 1.3.1(@sveltejs/kit@1.24.0) '@sveltejs/kit': - specifier: ^1.22.5 - version: 1.22.5(svelte@4.1.2)(vite@4.3.9) + specifier: ^1.24.0 + version: 1.24.0(svelte@4.2.0)(vite@4.4.9) '@types/cookie': specifier: ^0.5.1 version: 0.5.1 '@typescript-eslint/eslint-plugin': - specifier: ^5.59.7 - version: 5.59.7(@typescript-eslint/parser@5.59.7)(eslint@8.41.0)(typescript@5.0.4) + specifier: ^6.5.0 + version: 6.5.0(@typescript-eslint/parser@6.5.0)(eslint@8.48.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^5.59.7 - version: 5.59.7(eslint@8.41.0)(typescript@5.0.4) + specifier: ^6.5.0 + version: 6.5.0(eslint@8.48.0)(typescript@5.2.2) dotenv: - specifier: ^16.0.3 - version: 16.0.3 + specifier: ^16.3.1 + version: 16.3.1 eslint: - specifier: ^8.41.0 - version: 8.41.0 + specifier: ^8.48.0 + version: 8.48.0 eslint-config-prettier: - specifier: ^8.8.0 - version: 8.8.0(eslint@8.41.0) + specifier: ^9.0.0 + version: 9.0.0(eslint@8.48.0) eslint-plugin-svelte: - specifier: ^2.32.4 - version: 2.32.4(eslint@8.41.0)(svelte@4.1.2) + specifier: ^2.33.0 + version: 2.33.0(eslint@8.48.0)(svelte@4.2.0) ley: specifier: ^0.8.1 version: 0.8.1 pg-connection-string: - specifier: ^2.6.0 - version: 2.6.0 + specifier: ^2.6.2 + version: 2.6.2 postgres: - specifier: ^3.3.4 - version: 3.3.4 + specifier: ^3.3.5 + version: 3.3.5 prettier: - specifier: ~3.0.1 - version: 3.0.1 + specifier: ~3.0.3 + version: 3.0.3 prettier-plugin-svelte: specifier: ^3.0.3 - version: 3.0.3(prettier@3.0.1)(svelte@4.1.2) + version: 3.0.3(prettier@3.0.3)(svelte@4.2.0) supabase: - specifier: 1.85.0 - version: 1.85.0 + specifier: 1.88.0 + version: 1.88.0 svelte: - specifier: ^4.1.2 - version: 4.1.2 + specifier: ^4.2.0 + version: 4.2.0 svelte-check: - specifier: ^3.4.3 - version: 3.4.3(postcss@8.4.24)(svelte@4.1.2) + specifier: ^3.5.1 + version: 3.5.1(postcss@8.4.29)(svelte@4.2.0) svelte-preprocess: specifier: ^5.0.4 - version: 5.0.4(postcss@8.4.24)(svelte@4.1.2)(typescript@5.0.4) + version: 5.0.4(postcss@8.4.29)(svelte@4.2.0)(typescript@5.2.2) sveltekit-flash-message: - specifier: ^2.1.3 - version: 2.1.3(@sveltejs/kit@1.22.5)(svelte@4.1.2) + specifier: ^2.2.0 + version: 2.2.0(@sveltejs/kit@1.24.0)(svelte@4.2.0) tslib: - specifier: ^2.5.2 - version: 2.5.2 + specifier: ^2.6.2 + version: 2.6.2 typescript: - specifier: ^5.0.4 - version: 5.0.4 + specifier: ^5.2.2 + version: 5.2.2 vite: - specifier: ^4.3.9 - version: 4.3.9 + specifier: ^4.4.9 + version: 4.4.9 packages: @@ -96,205 +100,205 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 - /@esbuild/android-arm64@0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@esbuild/android-arm@0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] requiresBuild: true optional: true - /@esbuild/android-x64@0.17.19: - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true optional: true - /@esbuild/darwin-arm64@0.17.19: - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@esbuild/darwin-x64@0.17.19: - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@esbuild/freebsd-arm64@0.17.19: - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/freebsd-x64@0.17.19: - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/linux-arm64@0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-arm@0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ia32@0.17.19: - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-loong64@0.17.19: - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-mips64el@0.17.19: - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ppc64@0.17.19: - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-riscv64@0.17.19: - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-s390x@0.17.19: - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-x64@0.17.19: - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@esbuild/netbsd-x64@0.17.19: - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true optional: true - /@esbuild/openbsd-x64@0.17.19: - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true optional: true - /@esbuild/sunos-x64@0.17.19: - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true optional: true - /@esbuild/win32-arm64@0.17.19: - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-ia32@0.17.19: - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-x64@0.17.19: - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.41.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.48.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.41.0 - eslint-visitor-keys: 3.4.1 + eslint: 8.48.0 + eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.5.1: - resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + /@eslint-community/regexpp@4.8.0: + resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.0: - resolution: {integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==} + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.6.0 - globals: 13.20.0 + espree: 9.6.1 + globals: 13.21.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -304,13 +308,13 @@ packages: - supports-color dev: true - /@eslint/js@8.41.0: - resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==} + /@eslint/js@8.48.0: + resolution: {integrity: sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@humanwhocodes/config-array@0.11.10: - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -445,24 +449,24 @@ packages: rollup: 3.26.1 dev: true - /@supabase/auth-helpers-shared@0.4.1(@supabase/supabase-js@2.32.0): + /@supabase/auth-helpers-shared@0.4.1(@supabase/supabase-js@2.33.1): resolution: {integrity: sha512-IEDX9JzWkIjQiLUaP4Qy5YDiG0jFQatWfS+jw8cCQs6QfbNdEPd2Y3qonwGHnM90CZom9SvjuylBv2pFVAL7Lw==} peerDependencies: '@supabase/supabase-js': ^2.19.0 dependencies: - '@supabase/supabase-js': 2.32.0 + '@supabase/supabase-js': 2.33.1 jose: 4.14.4 dev: false - /@supabase/auth-helpers-sveltekit@0.10.2(@supabase/supabase-js@2.32.0)(@sveltejs/kit@1.22.5): + /@supabase/auth-helpers-sveltekit@0.10.2(@supabase/supabase-js@2.33.1)(@sveltejs/kit@1.24.0): resolution: {integrity: sha512-azQqh4ofgB+ewHBGQPp77R9552jD0DXZMd0QQQQvsgLUdGVghRrydW11491473DvcONoy2KMWUShVxccjzo6Gw==} peerDependencies: '@supabase/supabase-js': ^2.19.0 '@sveltejs/kit': ^1.15.4 dependencies: - '@supabase/auth-helpers-shared': 0.4.1(@supabase/supabase-js@2.32.0) - '@supabase/supabase-js': 2.32.0 - '@sveltejs/kit': 1.22.5(svelte@4.1.2)(vite@4.3.9) + '@supabase/auth-helpers-shared': 0.4.1(@supabase/supabase-js@2.33.1) + '@supabase/supabase-js': 2.33.1 + '@sveltejs/kit': 1.24.0(svelte@4.2.0)(vite@4.4.9) dev: false /@supabase/functions-js@2.1.2: @@ -486,8 +490,8 @@ packages: transitivePeerDependencies: - encoding - /@supabase/realtime-js@2.7.3: - resolution: {integrity: sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw==} + /@supabase/realtime-js@2.7.4: + resolution: {integrity: sha512-FzSzs1k9ruh/uds5AJ95Nc3beiMCCIhougExJ3O98CX1LMLAKUKFy5FivKLvcNhXnNfUEL0XUfGMb4UH2J7alg==} dependencies: '@types/phoenix': 1.6.0 '@types/websocket': 1.0.5 @@ -502,20 +506,20 @@ packages: transitivePeerDependencies: - encoding - /@supabase/supabase-js@2.32.0: - resolution: {integrity: sha512-1ShFhuOI5Du7604nlCelBsRD61daXk2O0qwjumoz35bqrYThnSPPtpJqZOHw6Mg6o7mLjIInYLh/DBlh8UvzRg==} + /@supabase/supabase-js@2.33.1: + resolution: {integrity: sha512-jA00rquPTppPOHpBB6KABW98lfg0gYXcuGqP3TB1iiduznRVsi3GGk2qBKXPDLMYSe0kRlQp5xCwWWthaJr8eA==} dependencies: '@supabase/functions-js': 2.1.2 '@supabase/gotrue-js': 2.46.2 '@supabase/postgrest-js': 1.8.0 - '@supabase/realtime-js': 2.7.3 + '@supabase/realtime-js': 2.7.4 '@supabase/storage-js': 2.5.1 cross-fetch: 3.1.8 transitivePeerDependencies: - encoding - supports-color - /@sveltejs/adapter-node@1.3.1(@sveltejs/kit@1.22.5): + /@sveltejs/adapter-node@1.3.1(@sveltejs/kit@1.24.0): resolution: {integrity: sha512-A0VgRQDCDPzdLNoiAbcOxGw4zT1Mc+n1LwT1OmO350R7WxrEqdMUChPPOd1iMfIDWlP4ie6E2d/WQf5es2d4Zw==} peerDependencies: '@sveltejs/kit': ^1.0.0 @@ -523,12 +527,12 @@ packages: '@rollup/plugin-commonjs': 25.0.3(rollup@3.26.1) '@rollup/plugin-json': 6.0.0(rollup@3.26.1) '@rollup/plugin-node-resolve': 15.1.0(rollup@3.26.1) - '@sveltejs/kit': 1.22.5(svelte@4.1.2)(vite@4.3.9) + '@sveltejs/kit': 1.24.0(svelte@4.2.0)(vite@4.4.9) rollup: 3.26.1 dev: true - /@sveltejs/kit@1.22.5(svelte@4.1.2)(vite@4.3.9): - resolution: {integrity: sha512-LHq+ECucoT6c6/tkrxIQtD8KVNhPFV4QQ+xOKTwBAs/Qdtff8P5gAzsIZiwEaaO6J6sYZoy5RP2VR6m8PSCgLA==} + /@sveltejs/kit@1.24.0(svelte@4.2.0)(vite@4.4.9): + resolution: {integrity: sha512-r7Gj0/VcdAIRL1yE1cJ5rurWJ5drrR7BzRv+P+NAathtvnMCi0u4FhezO7T4bj7DJdQ3TNsax3yQcrVWxh60fg==} engines: {node: ^16.14 || >=18} hasBin: true requiresBuild: true @@ -536,7 +540,7 @@ packages: svelte: ^3.54.0 || ^4.0.0-next.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.1.2)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.2.0)(vite@4.4.9) '@types/cookie': 0.5.1 cookie: 0.5.0 devalue: 4.3.2 @@ -547,13 +551,14 @@ packages: sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.3 - svelte: 4.1.2 + svelte: 4.2.0 + tiny-glob: 0.2.9 undici: 5.23.0 - vite: 4.3.9 + vite: 4.4.9 transitivePeerDependencies: - supports-color - /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@4.1.2)(vite@4.3.9): + /@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@4.2.0)(vite@4.4.9): resolution: {integrity: sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==} engines: {node: ^14.18.0 || >= 16} peerDependencies: @@ -561,29 +566,29 @@ packages: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.1.2)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.2.0)(vite@4.4.9) debug: 4.3.4 - svelte: 4.1.2 - vite: 4.3.9 + svelte: 4.2.0 + vite: 4.4.9 transitivePeerDependencies: - supports-color - /@sveltejs/vite-plugin-svelte@2.4.2(svelte@4.1.2)(vite@4.3.9): + /@sveltejs/vite-plugin-svelte@2.4.2(svelte@4.2.0)(vite@4.4.9): resolution: {integrity: sha512-ePfcC48ftMKhkT0OFGdOyycYKnnkT6i/buzey+vHRTR/JpQvuPzzhf1PtKqCDQfJRgoPSN2vscXs6gLigx/zGw==} engines: {node: ^14.18.0 || >= 16} peerDependencies: svelte: ^3.54.0 || ^4.0.0 vite: ^4.0.0 dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@4.1.2)(vite@4.3.9) + '@sveltejs/vite-plugin-svelte-inspector': 1.0.3(@sveltejs/vite-plugin-svelte@2.4.2)(svelte@4.2.0)(vite@4.4.9) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.1 - svelte: 4.1.2 - svelte-hmr: 0.15.2(svelte@4.1.2) - vite: 4.3.9 - vitefu: 0.2.4(vite@4.3.9) + svelte: 4.2.0 + svelte-hmr: 0.15.2(svelte@4.2.0) + vite: 4.4.9 + vitefu: 0.2.4(vite@4.4.9) transitivePeerDependencies: - supports-color @@ -611,8 +616,8 @@ packages: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /@types/semver@7.5.0: - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + /@types/semver@7.5.1: + resolution: {integrity: sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg==} dev: true /@types/websocket@1.0.5: @@ -620,134 +625,135 @@ packages: dependencies: '@types/node': 20.3.3 - /@typescript-eslint/eslint-plugin@5.59.7(@typescript-eslint/parser@5.59.7)(eslint@8.41.0)(typescript@5.0.4): - resolution: {integrity: sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/eslint-plugin@6.5.0(@typescript-eslint/parser@6.5.0)(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-2pktILyjvMaScU6iK3925uvGU87E+N9rh372uGZgiMYwafaw9SXq86U04XPq3UH6tzRvNgBsub6x2DacHc33lw==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 5.59.7(eslint@8.41.0)(typescript@5.0.4) - '@typescript-eslint/scope-manager': 5.59.7 - '@typescript-eslint/type-utils': 5.59.7(eslint@8.41.0)(typescript@5.0.4) - '@typescript-eslint/utils': 5.59.7(eslint@8.41.0)(typescript@5.0.4) + '@eslint-community/regexpp': 4.8.0 + '@typescript-eslint/parser': 6.5.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.5.0 + '@typescript-eslint/type-utils': 6.5.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.5.0(eslint@8.48.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.5.0 debug: 4.3.4 - eslint: 8.41.0 - grapheme-splitter: 1.0.4 + eslint: 8.48.0 + graphemer: 1.4.0 ignore: 5.2.4 - natural-compare-lite: 1.4.0 - semver: 7.5.3 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.59.7(eslint@8.41.0)(typescript@5.0.4): - resolution: {integrity: sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/parser@6.5.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-LMAVtR5GN8nY0G0BadkG0XIe4AcNMeyEy3DyhKGAh9k4pLSMBO7rF29JvDBpZGCmp5Pgz5RLHP6eCpSYZJQDuQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.59.7 - '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.0.4) + '@typescript-eslint/scope-manager': 6.5.0 + '@typescript-eslint/types': 6.5.0 + '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.5.0 debug: 4.3.4 - eslint: 8.41.0 - typescript: 5.0.4 + eslint: 8.48.0 + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.59.7: - resolution: {integrity: sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/scope-manager@6.5.0: + resolution: {integrity: sha512-A8hZ7OlxURricpycp5kdPTH3XnjG85UpJS6Fn4VzeoH4T388gQJ/PGP4ole5NfKt4WDVhmLaQ/dBLNDC4Xl/Kw==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/visitor-keys': 5.59.7 + '@typescript-eslint/types': 6.5.0 + '@typescript-eslint/visitor-keys': 6.5.0 dev: true - /@typescript-eslint/type-utils@5.59.7(eslint@8.41.0)(typescript@5.0.4): - resolution: {integrity: sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/type-utils@6.5.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-f7OcZOkRivtujIBQ4yrJNIuwyCQO1OjocVqntl9dgSIZAdKqicj3xFDqDOzHDlGCZX990LqhLQXWRnQvsapq8A==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: '*' + eslint: ^7.0.0 || ^8.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.0.4) - '@typescript-eslint/utils': 5.59.7(eslint@8.41.0)(typescript@5.0.4) + '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.5.0(eslint@8.48.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.41.0 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + eslint: 8.48.0 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.59.7: - resolution: {integrity: sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/types@6.5.0: + resolution: {integrity: sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w==} + engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.59.7(typescript@5.0.4): - resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/typescript-estree@6.5.0(typescript@5.2.2): + resolution: {integrity: sha512-q0rGwSe9e5Kk/XzliB9h2LBc9tmXX25G0833r7kffbl5437FPWb2tbpIV9wAATebC/018pGa9fwPDuvGN+LxWQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/visitor-keys': 5.59.7 + '@typescript-eslint/types': 6.5.0 + '@typescript-eslint/visitor-keys': 6.5.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.3 - tsutils: 3.21.0(typescript@5.0.4) - typescript: 5.0.4 + semver: 7.5.4 + ts-api-utils: 1.0.2(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.59.7(eslint@8.41.0)(typescript@5.0.4): - resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/utils@6.5.0(eslint@8.48.0)(typescript@5.2.2): + resolution: {integrity: sha512-9nqtjkNykFzeVtt9Pj6lyR9WEdd8npPhhIPM992FWVkZuS6tmxHfGVnlUcjpUP2hv8r4w35nT33mlxd+Be1ACQ==} + engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.59.7 - '@typescript-eslint/types': 5.59.7 - '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.0.4) - eslint: 8.41.0 - eslint-scope: 5.1.1 - semver: 7.5.3 + '@types/semver': 7.5.1 + '@typescript-eslint/scope-manager': 6.5.0 + '@typescript-eslint/types': 6.5.0 + '@typescript-eslint/typescript-estree': 6.5.0(typescript@5.2.2) + eslint: 8.48.0 + semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.59.7: - resolution: {integrity: sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@typescript-eslint/visitor-keys@6.5.0: + resolution: {integrity: sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA==} + engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 5.59.7 - eslint-visitor-keys: 3.4.1 + '@typescript-eslint/types': 6.5.0 + eslint-visitor-keys: 3.4.3 dev: true /acorn-jsx@5.3.2(acorn@8.10.0): @@ -897,7 +903,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /chownr@2.0.0: @@ -1043,8 +1049,8 @@ packages: esutils: 2.0.3 dev: true - /dotenv@16.0.3: - resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + /dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} engines: {node: '>=12'} dev: true @@ -1079,51 +1085,51 @@ packages: d: 1.0.1 ext: 1.7.0 - /esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} dev: true - /eslint-config-prettier@8.8.0(eslint@8.41.0): - resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + /eslint-config-prettier@9.0.0(eslint@8.48.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.41.0 + eslint: 8.48.0 dev: true - /eslint-plugin-svelte@2.32.4(eslint@8.41.0)(svelte@4.1.2): - resolution: {integrity: sha512-VJ12i2Iogug1jvhwxSlognnfGj76P5gks/V4pUD4SCSVQOp14u47MNP0zAG8AQR3LT0Fi1iUvIFnY4l9z5Rwbg==} + /eslint-plugin-svelte@2.33.0(eslint@8.48.0)(svelte@4.2.0): + resolution: {integrity: sha512-kk7Z4BfxVjFYJseFcOpS8kiKNio7KnAnhFagmM89h1wNSKlM7tIn+uguNQppKM9leYW+S+Us0Rjg2Qg3zsEcvg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0-0 @@ -1132,55 +1138,47 @@ packages: svelte: optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) '@jridgewell/sourcemap-codec': 1.4.15 debug: 4.3.4 - eslint: 8.41.0 + eslint: 8.48.0 esutils: 2.0.3 known-css-properties: 0.28.0 - postcss: 8.4.24 - postcss-load-config: 3.1.4(postcss@8.4.24) - postcss-safe-parser: 6.0.0(postcss@8.4.24) + postcss: 8.4.29 + postcss-load-config: 3.1.4(postcss@8.4.29) + postcss-safe-parser: 6.0.0(postcss@8.4.29) postcss-selector-parser: 6.0.13 - semver: 7.5.3 - svelte: 4.1.2 - svelte-eslint-parser: 0.32.2(svelte@4.1.2) + semver: 7.5.4 + svelte: 4.2.0 + svelte-eslint-parser: 0.33.0(svelte@4.2.0) transitivePeerDependencies: - supports-color - ts-node dev: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - - /eslint-scope@7.2.0: - resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true - /eslint-visitor-keys@3.4.1: - resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.41.0: - resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==} + /eslint@8.48.0: + resolution: {integrity: sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) - '@eslint-community/regexpp': 4.5.1 - '@eslint/eslintrc': 2.1.0 - '@eslint/js': 8.41.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.48.0) + '@eslint-community/regexpp': 4.8.0 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.48.0 + '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -1189,19 +1187,18 @@ packages: debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.1 - espree: 9.6.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.20.0 + globals: 13.21.0 graphemer: 1.4.0 ignore: 5.2.4 - import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -1213,7 +1210,6 @@ packages: natural-compare: 1.4.0 optionator: 0.9.3 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color @@ -1222,13 +1218,13 @@ packages: /esm-env@1.0.0: resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} - /espree@9.6.0: - resolution: {integrity: sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==} + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.10.0 acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.1 + eslint-visitor-keys: 3.4.3 dev: true /esquery@1.5.0: @@ -1245,11 +1241,6 @@ packages: estraverse: 5.3.0 dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -1315,7 +1306,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.0.4 + flat-cache: 3.1.0 dev: true /fill-range@7.0.1: @@ -1333,11 +1324,12 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@3.1.0: + resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + engines: {node: '>=12.0.0'} dependencies: flatted: 3.2.7 + keyv: 4.5.3 rimraf: 3.0.2 dev: true @@ -1363,8 +1355,8 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -1410,13 +1402,16 @@ packages: once: 1.4.0 dev: true - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + /globals@13.21.0: + resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true + /globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -1429,14 +1424,13 @@ packages: slash: 3.0.0 dev: true + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true @@ -1557,6 +1551,10 @@ packages: argparse: 2.0.1 dev: true + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -1565,6 +1563,12 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + dependencies: + json-buffer: 3.0.1 + dev: true + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -1738,10 +1742,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -1858,8 +1858,8 @@ packages: estree-walker: 3.0.3 is-reference: 3.0.1 - /pg-connection-string@2.6.0: - resolution: {integrity: sha512-x14ibktcwlHKoHxx9X3uTVW9zIGR41ZB6QNhHb21OPNdCCO3NaRnpJuwKIQSR4u+Yqjx4HCvy7Hh7VSy1U4dGg==} + /pg-connection-string@2.6.2: + resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} dev: true /picocolors@1.0.0: @@ -1870,7 +1870,7 @@ packages: engines: {node: '>=8.6'} dev: true - /postcss-load-config@3.1.4(postcss@8.4.24): + /postcss-load-config@3.1.4(postcss@8.4.29): resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} peerDependencies: @@ -1883,26 +1883,26 @@ packages: optional: true dependencies: lilconfig: 2.1.0 - postcss: 8.4.24 + postcss: 8.4.29 yaml: 1.10.2 dev: true - /postcss-safe-parser@6.0.0(postcss@8.4.24): + /postcss-safe-parser@6.0.0(postcss@8.4.29): resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 dependencies: - postcss: 8.4.24 + postcss: 8.4.29 dev: true - /postcss-scss@4.0.6(postcss@8.4.27): - resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==} + /postcss-scss@4.0.7(postcss@8.4.29): + resolution: {integrity: sha512-xPv2GseoyXPa58Nro7M73ZntttusuCmZdeOojUFR5PZDz2BR62vfYx1w9TyOnp1+nYFowgOMipsCBhxzVkAEPw==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.4.19 dependencies: - postcss: 8.4.27 + postcss: 8.4.29 dev: true /postcss-selector-parser@6.0.13: @@ -1913,25 +1913,16 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss@8.4.24: - resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} - engines: {node: ^10 || ^12 || >=14} - dependencies: - nanoid: 3.3.6 - picocolors: 1.0.0 - source-map-js: 1.0.2 - - /postcss@8.4.27: - resolution: {integrity: sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==} + /postcss@8.4.29: + resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true - /postgres@3.3.4: - resolution: {integrity: sha512-XVu0+d/Y56pl2lSaf0c7V19AhAEfpVrhID1IENWN8nf0xch6hFq6dAov5dtUX6ZD46wfr1TxvLhxLtV8WnNsOg==} + /postgres@3.3.5: + resolution: {integrity: sha512-+JD93VELV9gHkqpV5gdL5/70HdGtEw4/XE1S4BC8f1mcPmdib3K5XsKVbnR1XcAyC41zOnifJ+9YRKxdIsXiUw==} dev: true /prelude-ls@1.2.1: @@ -1939,18 +1930,18 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier-plugin-svelte@3.0.3(prettier@3.0.1)(svelte@4.1.2): + /prettier-plugin-svelte@3.0.3(prettier@3.0.3)(svelte@4.2.0): resolution: {integrity: sha512-dLhieh4obJEK1hnZ6koxF+tMUrZbV5YGvRpf2+OADyanjya5j0z1Llo8iGwiHmFWZVG/hLEw/AJD5chXd9r3XA==} peerDependencies: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 dependencies: - prettier: 3.0.1 - svelte: 4.1.2 + prettier: 3.0.3 + svelte: 4.2.0 dev: true - /prettier@3.0.1: - resolution: {integrity: sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==} + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} hasBin: true dev: true @@ -2014,7 +2005,15 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 + dev: true + + /rollup@3.28.1: + resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -2037,8 +2036,8 @@ packages: rimraf: 2.7.1 dev: true - /semver@7.5.3: - resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true dependencies: @@ -2115,8 +2114,8 @@ packages: engines: {node: '>=8'} dev: true - /supabase@1.85.0: - resolution: {integrity: sha512-juzwdadl4qFVUk0lK5ncV1VR6PCV9ca+ko2F0FCn5H1pqbFsDmo5gM4zvYmFPS/HNeXnrIA6xqAkYU9lRtEURw==} + /supabase@1.88.0: + resolution: {integrity: sha512-eyfgSkLVauPRFOiTtddC/v3TFPTTlOwSur5Qh2s/kR/ZWMCySEYQ2E1+lsGvMSwP+SYpaDrYUICkb5CiaIZKow==} engines: {npm: '>=8'} hasBin: true requiresBuild: true @@ -2138,8 +2137,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /svelte-check@3.4.3(postcss@8.4.24)(svelte@4.1.2): - resolution: {integrity: sha512-O07soQFY3X0VDt+bcGc6D5naz0cLtjwnmNP9JsEBPVyMemFEqUhL2OdLqvkl5H/u8Jwm50EiAU4BPRn5iin/kg==} + /svelte-check@3.5.1(postcss@8.4.29)(svelte@4.2.0): + resolution: {integrity: sha512-+Zb4iHxAhdUtcUg/WJPRjlS1RJalIsWAe9Mz6G1zyznSs7dDkT7VUBdXc3q7Iwg49O/VrZgyJRvOJkjuBfKjFA==} hasBin: true peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 @@ -2150,9 +2149,9 @@ packages: import-fresh: 3.3.0 picocolors: 1.0.0 sade: 1.8.1 - svelte: 4.1.2 - svelte-preprocess: 5.0.4(postcss@8.4.24)(svelte@4.1.2)(typescript@5.0.4) - typescript: 5.0.4 + svelte: 4.2.0 + svelte-preprocess: 5.0.4(postcss@8.4.29)(svelte@4.2.0)(typescript@5.2.2) + typescript: 5.2.2 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -2165,8 +2164,8 @@ packages: - sugarss dev: true - /svelte-eslint-parser@0.32.2(svelte@4.1.2): - resolution: {integrity: sha512-Ok9D3A4b23iLQsONrjqtXtYDu5ZZ/826Blaw2LeFZVTg1pwofKDG4mz3/GYTax8fQ0plRGHI6j+d9VQYy5Lo/A==} + /svelte-eslint-parser@0.33.0(svelte@4.2.0): + resolution: {integrity: sha512-5awZ6Bs+Tb/zQwa41PSdcLynAVQTwW0HGyCBjtbAQ59taLZqDgQSMzRlDmapjZdDtzERm0oXDZNE0E+PKJ6ryg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: svelte: ^3.37.0 || ^4.0.0 @@ -2174,23 +2173,23 @@ packages: svelte: optional: true dependencies: - eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.1 - espree: 9.6.0 - postcss: 8.4.27 - postcss-scss: 4.0.6(postcss@8.4.27) - svelte: 4.1.2 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + postcss: 8.4.29 + postcss-scss: 4.0.7(postcss@8.4.29) + svelte: 4.2.0 dev: true - /svelte-hmr@0.15.2(svelte@4.1.2): + /svelte-hmr@0.15.2(svelte@4.2.0): resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==} engines: {node: ^12.20 || ^14.13.1 || >= 16} peerDependencies: svelte: ^3.19.0 || ^4.0.0-next.0 dependencies: - svelte: 4.1.2 + svelte: 4.2.0 - /svelte-preprocess@5.0.4(postcss@8.4.24)(svelte@4.1.2)(typescript@5.0.4): + /svelte-preprocess@5.0.4(postcss@8.4.29)(svelte@4.2.0)(typescript@5.2.2): resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} engines: {node: '>= 14.10.0'} requiresBuild: true @@ -2231,15 +2230,15 @@ packages: '@types/pug': 2.0.6 detect-indent: 6.1.0 magic-string: 0.27.0 - postcss: 8.4.24 + postcss: 8.4.29 sorcery: 0.11.0 strip-indent: 3.0.0 - svelte: 4.1.2 - typescript: 5.0.4 + svelte: 4.2.0 + typescript: 5.2.2 dev: true - /svelte@4.1.2: - resolution: {integrity: sha512-/evA8U6CgOHe5ZD1C1W3va9iJG7mWflcCdghBORJaAhD2JzrVERJty/2gl0pIPrJYBGZwZycH6onYf+64XXF9g==} + /svelte@4.2.0: + resolution: {integrity: sha512-kVsdPjDbLrv74SmLSUzAsBGquMs4MPgWGkGLpH+PjOYnFOziAvENVzgJmyOCV2gntxE32aNm8/sqNKD6LbIpeQ==} engines: {node: '>=16'} dependencies: '@ampproject/remapping': 2.2.1 @@ -2256,14 +2255,14 @@ packages: magic-string: 0.30.1 periscopic: 3.1.0 - /sveltekit-flash-message@2.1.3(@sveltejs/kit@1.22.5)(svelte@4.1.2): - resolution: {integrity: sha512-NFhQ3t2101AM9JO5Mgj38r69ykF4BOs1Ap3567DaM1RoAaNtXRXpAuEc/DQV78HZN/Fxzw8dxyTMdIC1HztUvA==} + /sveltekit-flash-message@2.2.0(@sveltejs/kit@1.24.0)(svelte@4.2.0): + resolution: {integrity: sha512-22hYvD4kQUWJevbiJQkRNIWtEexKyKYhN4zyn8YhfU6J2hRY1uFdTTfH0JIWwPkJ/QarBgLwzP79GO5t/LLZUw==} peerDependencies: '@sveltejs/kit': 1.x svelte: 3.x || 4.x dependencies: - '@sveltejs/kit': 1.22.5(svelte@4.1.2)(vite@4.3.9) - svelte: 4.1.2 + '@sveltejs/kit': 1.24.0(svelte@4.2.0)(vite@4.4.9) + svelte: 4.2.0 dev: true /tar@6.1.15: @@ -2282,6 +2281,12 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2301,22 +2306,17 @@ packages: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true - - /tslib@2.5.2: - resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} - dev: true - - /tsutils@3.21.0(typescript@5.0.4): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} + /ts-api-utils@1.0.2(typescript@5.2.2): + resolution: {integrity: sha512-Cbu4nIqnEdd+THNEsBdkolnOXhg0I8XteoHaEKgvsxpsbWda4IsUut2c187HxywQCvveojow0Dgw/amxtSKVkQ==} + engines: {node: '>=16.13.0'} peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + typescript: '>=4.2.0' dependencies: - tslib: 1.14.1 - typescript: 5.0.4 + typescript: 5.2.2 + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true /type-check@0.4.0: @@ -2342,9 +2342,9 @@ packages: dependencies: is-typedarray: 1.0.0 - /typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} hasBin: true dev: true @@ -2390,13 +2390,14 @@ packages: vest-utils: 0.1.1 dev: false - /vite@4.3.9: - resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} + /vite@4.4.9: + resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -2406,6 +2407,8 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -2415,13 +2418,13 @@ packages: terser: optional: true dependencies: - esbuild: 0.17.19 - postcss: 8.4.24 - rollup: 3.26.1 + esbuild: 0.18.20 + postcss: 8.4.29 + rollup: 3.28.1 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 - /vitefu@0.2.4(vite@4.3.9): + /vitefu@0.2.4(vite@4.4.9): resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} peerDependencies: vite: ^3.0.0 || ^4.0.0 @@ -2429,7 +2432,7 @@ packages: vite: optional: true dependencies: - vite: 4.3.9 + vite: 4.4.9 /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} diff --git a/src/lib/admin.ts b/src/lib/admin.ts index a17f339..5bd4fee 100644 --- a/src/lib/admin.ts +++ b/src/lib/admin.ts @@ -2,6 +2,12 @@ import { createClient } from '@supabase/supabase-js' import { PUBLIC_SUPABASE_URL } from '$env/static/public' import { SUPABASE_SERVICE_ROLE_KEY } from '$env/static/private' -const supabase = createClient(PUBLIC_SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY) +const supabase = createClient(PUBLIC_SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, { + auth: { + persistSession: false, + autoRefreshToken: false, + detectSessionInUrl: false, + } +}) export default supabase diff --git a/src/lib/data/mappers/waiting_list.ts b/src/lib/data/mappers/waiting_list.ts index ee62a03..b2c0d36 100644 --- a/src/lib/data/mappers/waiting_list.ts +++ b/src/lib/data/mappers/waiting_list.ts @@ -7,6 +7,7 @@ export interface WaitingListMapper { email: string invitedAt: string | null isInvited: boolean + isConfirmed: boolean } type WaitingListRow = Database['public']['Tables']['waiting_list']['Row'] @@ -16,7 +17,8 @@ export const waitingListMapper = (user: WaitingListRow): WaitingListMapper => ({ fullName: withDefault(user.full_name, ''), email: user.email, invitedAt: user.invited_at, - isInvited: user.invited_at ? true : false + isInvited: user.invited_at ? true : false, + isConfirmed: user.email_confirmed_at ? true : false }) export const waitingListsMapper = (users: WaitingListRow[]): WaitingListMapper[] => diff --git a/src/lib/schema.ts b/src/lib/schema.ts index 661a3a7..1ab2c37 100644 --- a/src/lib/schema.ts +++ b/src/lib/schema.ts @@ -3,77 +3,110 @@ export type Json = | number | boolean | null - | { [key: string]: Json } + | { [key: string]: Json | undefined } | Json[] export interface Database { - public: { + graphql_public: { Tables: { - migrations: { - Row: { - id: number - name: string - created_at: string - } - Insert: { - id?: number - name: string - created_at: string - } - Update: { - id?: number - name?: string - created_at?: string + [_ in never]: never + } + Views: { + [_ in never]: never + } + Functions: { + graphql: { + Args: { + operationName?: string + query?: string + variables?: Json + extensions?: Json } + Returns: Json } + } + Enums: { + [_ in never]: never + } + CompositeTypes: { + [_ in never]: never + } + } + public: { + Tables: { profiles: { Row: { - id: string + confirmed_at: string | null + created_at: string full_name: string | null + id: string is_admin: boolean | null - created_at: string updated_at: string | null } Insert: { - id: string + confirmed_at?: string | null + created_at?: string full_name?: string | null + id: string is_admin?: boolean | null - created_at?: string updated_at?: string | null } Update: { - id?: string + confirmed_at?: string | null + created_at?: string full_name?: string | null + id?: string is_admin?: boolean | null - created_at?: string updated_at?: string | null } + Relationships: [ + { + foreignKeyName: "profiles_id_fkey" + columns: ["id"] + referencedRelation: "users" + referencedColumns: ["id"] + } + ] } waiting_list: { Row: { - id: string - full_name: string + created_at: string email: string + email_confirmed_at: string | null + full_name: string + id: string invited_at: string | null - created_at: string + profile_id: string | null updated_at: string | null } Insert: { - id?: string - full_name: string + created_at?: string email: string + email_confirmed_at?: string | null + full_name: string + id?: string invited_at?: string | null - created_at?: string + profile_id?: string | null updated_at?: string | null } Update: { - id?: string - full_name?: string + created_at?: string email?: string + email_confirmed_at?: string | null + full_name?: string + id?: string invited_at?: string | null - created_at?: string + profile_id?: string | null updated_at?: string | null } + Relationships: [ + { + foreignKeyName: "waiting_list_id_fkey" + columns: ["profile_id"] + referencedRelation: "profiles" + referencedColumns: ["id"] + } + ] } } Views: { @@ -81,13 +114,197 @@ export interface Database { } Functions: { is_admin: { - Args: { user_id: string } + Args: { + user_id: string + } Returns: boolean } } Enums: { [_ in never]: never } + CompositeTypes: { + [_ in never]: never + } + } + storage: { + Tables: { + buckets: { + Row: { + allowed_mime_types: string[] | null + avif_autodetection: boolean | null + created_at: string | null + file_size_limit: number | null + id: string + name: string + owner: string | null + public: boolean | null + updated_at: string | null + } + Insert: { + allowed_mime_types?: string[] | null + avif_autodetection?: boolean | null + created_at?: string | null + file_size_limit?: number | null + id: string + name: string + owner?: string | null + public?: boolean | null + updated_at?: string | null + } + Update: { + allowed_mime_types?: string[] | null + avif_autodetection?: boolean | null + created_at?: string | null + file_size_limit?: number | null + id?: string + name?: string + owner?: string | null + public?: boolean | null + updated_at?: string | null + } + Relationships: [ + { + foreignKeyName: "buckets_owner_fkey" + columns: ["owner"] + referencedRelation: "users" + referencedColumns: ["id"] + } + ] + } + migrations: { + Row: { + executed_at: string | null + hash: string + id: number + name: string + } + Insert: { + executed_at?: string | null + hash: string + id: number + name: string + } + Update: { + executed_at?: string | null + hash?: string + id?: number + name?: string + } + Relationships: [] + } + objects: { + Row: { + bucket_id: string | null + created_at: string | null + id: string + last_accessed_at: string | null + metadata: Json | null + name: string | null + owner: string | null + path_tokens: string[] | null + updated_at: string | null + version: string | null + } + Insert: { + bucket_id?: string | null + created_at?: string | null + id?: string + last_accessed_at?: string | null + metadata?: Json | null + name?: string | null + owner?: string | null + path_tokens?: string[] | null + updated_at?: string | null + version?: string | null + } + Update: { + bucket_id?: string | null + created_at?: string | null + id?: string + last_accessed_at?: string | null + metadata?: Json | null + name?: string | null + owner?: string | null + path_tokens?: string[] | null + updated_at?: string | null + version?: string | null + } + Relationships: [ + { + foreignKeyName: "objects_bucketId_fkey" + columns: ["bucket_id"] + referencedRelation: "buckets" + referencedColumns: ["id"] + } + ] + } + } + Views: { + [_ in never]: never + } + Functions: { + can_insert_object: { + Args: { + bucketid: string + name: string + owner: string + metadata: Json + } + Returns: undefined + } + extension: { + Args: { + name: string + } + Returns: string + } + filename: { + Args: { + name: string + } + Returns: string + } + foldername: { + Args: { + name: string + } + Returns: unknown + } + get_size_by_bucket: { + Args: Record + Returns: { + size: number + bucket_id: string + }[] + } + search: { + Args: { + prefix: string + bucketname: string + limits?: number + levels?: number + offsets?: number + search?: string + sortcolumn?: string + sortorder?: string + } + Returns: { + name: string + id: string + updated_at: string + created_at: string + last_accessed_at: string + metadata: Json + }[] + } + } + Enums: { + [_ in never]: never + } + CompositeTypes: { + [_ in never]: never + } } } diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts index 6816a19..7451d71 100644 --- a/src/routes/+layout.server.ts +++ b/src/routes/+layout.server.ts @@ -1,6 +1,7 @@ import { loadFlash } from 'sveltekit-flash-message/server' +import type { LayoutServerLoad } from './$types' -export const load = loadFlash(async ({ locals: { getSession, user } }) => { +export const load: LayoutServerLoad = loadFlash(async ({ locals: { getSession, user } }) => { return { session: await getSession(), user diff --git a/src/routes/+layout.ts b/src/routes/+layout.ts index 5b6974f..17da3d2 100644 --- a/src/routes/+layout.ts +++ b/src/routes/+layout.ts @@ -2,8 +2,9 @@ import { PUBLIC_SUPABASE_ANON_KEY, PUBLIC_SUPABASE_URL } from '$env/static/public' import { createSupabaseLoadClient } from '@supabase/auth-helpers-sveltekit' import type { Database } from '../lib/schema' +import type { LayoutLoadEvent } from './$types' -export const load = async ({ fetch, data, depends }) => { +export const load = async ({ fetch, data, depends }: LayoutLoadEvent) => { depends('supabase:auth') const supabase = createSupabaseLoadClient({ diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index 680e741..cbd5c5b 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -1,7 +1,8 @@ import { WaitingListSchema } from '$lib/validationSchema' import { fail } from '@sveltejs/kit' +import type { Actions } from './$types' -export const actions = { +export const actions: Actions = { default: async (event) => { const { request, diff --git a/src/routes/account/+layout.server.ts b/src/routes/account/+layout.server.ts index f801282..e8e26d6 100644 --- a/src/routes/account/+layout.server.ts +++ b/src/routes/account/+layout.server.ts @@ -1,6 +1,7 @@ import { redirect } from '@sveltejs/kit' +import type { LayoutServerLoad } from './$types' -export const load = async ({ locals: { getSession, user } }) => { +export const load: LayoutServerLoad = async ({ locals: { getSession, user } }) => { const session = await getSession() if (!session) { diff --git a/src/routes/account/password-update/+page.server.ts b/src/routes/account/password-update/+page.server.ts index 877546f..1d7b559 100644 --- a/src/routes/account/password-update/+page.server.ts +++ b/src/routes/account/password-update/+page.server.ts @@ -1,12 +1,9 @@ import { ResetPasswordSchema } from '$lib/validationSchema' import { fail } from '@sveltejs/kit' +import type { Actions } from './$types' -export const actions = { - default: async (event) => { - const { - request, - locals: { supabase } - } = event +export const actions: Actions = { + default: async ({ request, locals: { supabase } }) => { const formData = await request.formData() const password = formData.get('password') as string const passwordConfirm = formData.get('passwordConfirm') as string diff --git a/src/routes/auth/+page.ts b/src/routes/auth/+page.ts index b4935f1..3859474 100644 --- a/src/routes/auth/+page.ts +++ b/src/routes/auth/+page.ts @@ -1,6 +1,6 @@ -import type { PageLoad } from './$types' import { redirect } from '@sveltejs/kit' +import type { PageLoad } from './$types' -export const load = async () => { +export const load: PageLoad = async () => { throw redirect(302, '/auth/signin') } diff --git a/src/routes/auth/confirm/+server.ts b/src/routes/auth/confirm/+server.ts index 66bcfd7..73461b0 100644 --- a/src/routes/auth/confirm/+server.ts +++ b/src/routes/auth/confirm/+server.ts @@ -2,8 +2,9 @@ import { ConfirmTokenSchema } from '$lib/validationSchema' import type { EmailOtpType } from '@supabase/supabase-js' import { fail, redirect } from '@sveltejs/kit' import { setFlash } from 'sveltekit-flash-message/server' +import type { RequestHandler } from './$types' -export const GET = async (event) => { +export const GET: RequestHandler = async (event) => { let { url, locals: { supabase } @@ -24,11 +25,11 @@ export const GET = async (event) => { setFlash( { type: 'error', - message: `The token you have used has expired, please try getting invited again.` + message: `The token link has expired, please try getting invited again.` }, event ) - next = '/auth/signin' + next = `/auth/signin${next ? '?next=' + next : ''}` } throw redirect(303, `/${next.slice(1)}`) diff --git a/src/routes/auth/forgotpassword/+page.server.ts b/src/routes/auth/forgotpassword/+page.server.ts index 7134252..78ae272 100644 --- a/src/routes/auth/forgotpassword/+page.server.ts +++ b/src/routes/auth/forgotpassword/+page.server.ts @@ -1,7 +1,8 @@ import { ForgotPasswordSchema } from '$lib/validationSchema' import { fail } from '@sveltejs/kit' +import type { Actions } from './$types' -export const actions = { +export const actions: Actions = { default: async (event) => { const { url, diff --git a/src/routes/auth/invite-code/+page.server.ts b/src/routes/auth/invite-code/+page.server.ts index f6e237d..00d2bc7 100644 --- a/src/routes/auth/invite-code/+page.server.ts +++ b/src/routes/auth/invite-code/+page.server.ts @@ -1,7 +1,11 @@ import { InviteTokenSchema } from '$lib/validationSchema' import { fail, redirect } from '@sveltejs/kit' +import type { Actions, PageServerLoad } from './$types.js' -export const load = async ({ locals: { getSession } }) => { +export const load: PageServerLoad = async (event) => { + const { + locals: { getSession } + } = event const session = await getSession() if (session) { @@ -9,7 +13,7 @@ export const load = async ({ locals: { getSession } }) => { } } -export const actions = { +export const actions: Actions = { default: async (event) => { const { request, diff --git a/src/routes/auth/signin/+page.server.ts b/src/routes/auth/signin/+page.server.ts index 7108dad..16a9ce4 100644 --- a/src/routes/auth/signin/+page.server.ts +++ b/src/routes/auth/signin/+page.server.ts @@ -1,8 +1,12 @@ import { SignInSchema } from '$lib/validationSchema' import { fail, redirect } from '@sveltejs/kit' import { loadFlash } from 'sveltekit-flash-message/server' +import type { Actions, PageServerLoad } from './$types.js' -export const load = loadFlash(async ({ locals: { getSession } }) => { +export const load: PageServerLoad = loadFlash(async (event) => { + const { + locals: { getSession } + } = event const session = await getSession() if (session) { @@ -10,15 +14,17 @@ export const load = loadFlash(async ({ locals: { getSession } }) => { } }) -export const actions = { +export const actions: Actions = { default: async (event) => { const { + url, request, locals: { supabase } } = event const formData = await request.formData() const email = formData.get('email') as string const password = formData.get('password') as string + const next = new URL(url.searchParams.get('next') ?? '/account', url) const test = SignInSchema({ email, password }) @@ -36,6 +42,6 @@ export const actions = { }) } - throw redirect(303, '/account') + throw redirect(303, next.pathname) } } diff --git a/src/routes/auth/signout/+page.server.ts b/src/routes/auth/signout/+page.server.ts index 1735dd7..5702fd8 100644 --- a/src/routes/auth/signout/+page.server.ts +++ b/src/routes/auth/signout/+page.server.ts @@ -1,7 +1,11 @@ import { redirect } from '@sveltejs/kit' +import type { Actions } from './$types' -export const actions = { - default: async ({ locals: { supabase, getSession } }) => { +export const actions: Actions = { + default: async (event) => { + const { + locals: { supabase, getSession } + } = event const session = await getSession() if (session) { diff --git a/src/routes/auth/signup/+page.server.ts b/src/routes/auth/signup/+page.server.ts index 36b753c..9cd609d 100644 --- a/src/routes/auth/signup/+page.server.ts +++ b/src/routes/auth/signup/+page.server.ts @@ -1,8 +1,9 @@ import { SignUpSchema } from '$lib/validationSchema' import { fail, redirect } from '@sveltejs/kit' import supabase from '$lib/admin' +import type { Actions, PageServerLoad } from './$types' -export const load = async () => { +export const load: PageServerLoad = async () => { const { data, error } = await supabase .from('profiles') .select('is_admin, confirmed_at') @@ -18,7 +19,7 @@ export const load = async () => { throw redirect(302, '/auth/signin') } -export const actions = { +export const actions: Actions = { default: async (event) => { const { request, diff --git a/src/routes/logging-in/+page.svelte b/src/routes/logging-in/+page.svelte deleted file mode 100644 index f36f630..0000000 --- a/src/routes/logging-in/+page.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - diff --git a/src/routes/manage/+layout.server.ts b/src/routes/manage/+layout.server.ts index 2afd585..78e4a53 100644 --- a/src/routes/manage/+layout.server.ts +++ b/src/routes/manage/+layout.server.ts @@ -1,6 +1,7 @@ import { redirect } from '@sveltejs/kit' +import type { LayoutServerLoad } from './$types' -export const load = async (event) => { +export const load: LayoutServerLoad = async (event) => { const { user, getSession } = event.locals const session = await getSession() diff --git a/src/routes/manage/+page.server.ts b/src/routes/manage/+page.server.ts index 050f656..b084ad9 100644 --- a/src/routes/manage/+page.server.ts +++ b/src/routes/manage/+page.server.ts @@ -1,8 +1,9 @@ import { fail } from '@sveltejs/kit' import { waitingListsMapper } from '$lib/data/mappers/waiting_list' import supabase from '$lib/admin' +import type { Actions, PageServerLoad } from './$types.js' -export const load = async (event) => { +export const load: PageServerLoad = async (event) => { const { locals: { supabase } } = event @@ -22,7 +23,7 @@ export const load = async (event) => { } } -export const actions = { +export const actions: Actions = { invite: async (event) => { const { locals, request } = event if (!locals.user?.isAdmin) { @@ -47,7 +48,7 @@ export const actions = { }) if (error) { - return fail(400, { message: 'There was an error sending the invite link.' }) + return fail(400, { message: error.message }) } return { ...user, isInvited: true, invitedAt: data.user.invited_at } @@ -83,7 +84,7 @@ export const actions = { const { error } = await supabase.from('waiting_list').delete().match({ id: userId }) if (error) { - return fail(400, { message: 'There was an error deleting the user.' }) + return fail(400, { message: error.message }) } return { success: true, message: 'User was deleted successfully' } diff --git a/src/routes/manage/+page.svelte b/src/routes/manage/+page.svelte index 493d31a..8d386e0 100644 --- a/src/routes/manage/+page.svelte +++ b/src/routes/manage/+page.svelte @@ -42,7 +42,7 @@ {user.isInvited ? 'Yes' : 'No'}
- + diff --git a/src/routes/manage/users/+page.server.ts b/src/routes/manage/users/+page.server.ts index bf4a92a..6071ea6 100644 --- a/src/routes/manage/users/+page.server.ts +++ b/src/routes/manage/users/+page.server.ts @@ -1,8 +1,9 @@ import { usersMapper } from '$lib/data/mappers/users' import { fail } from '@sveltejs/kit' import supabase from '$lib/admin' +import type { Actions, PageServerLoad } from './$types.js' -export const load = async ({ locals: { supabase } }) => { +export const load: PageServerLoad = async ({ locals: { supabase } }) => { const { error, data } = await supabase .from('profiles') .select('*') @@ -20,7 +21,7 @@ export const load = async ({ locals: { supabase } }) => { } } -export const actions = { +export const actions: Actions = { remove: async (event) => { const { locals, request } = event if (!locals.user?.isAdmin) { diff --git a/supabase/migrations/20230903015359_waiting_list_email_confirmed_function.sql b/supabase/migrations/20230903015359_waiting_list_email_confirmed_function.sql new file mode 100644 index 0000000..b2b669c --- /dev/null +++ b/supabase/migrations/20230903015359_waiting_list_email_confirmed_function.sql @@ -0,0 +1,17 @@ +create or replace function public.handle_waiting_list_email_confirmed_at() +returns trigger as $$ +begin + IF (NEW.confirmed_at is not null) THEN + UPDATE public.waiting_list + SET email_confirmed_at = NEW.confirmed_at + WHERE profile_id = (NEW.id)::uuid; + RETURN NEW; + END IF; + RETURN NULL; +end; +$$ language plpgsql security definer; + + +create or replace trigger on_waiting_list_user_confirmation + after update on auth.users + for each row execute procedure public.handle_waiting_list_email_confirmed_at(); \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 6ae0c8c..2786bcb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,4 +14,4 @@ // // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes // from the referenced tsconfig.json - TypeScript does not merge them in -} +} \ No newline at end of file