diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4ac5f17..c1e770e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -124,29 +124,36 @@ jobs: - name: Start Supabase run: | - pnpm run supabase start > supabase_output.txt 2>&1 + pnpm run supabase start echo "Supabase started successfully" pnpm run supabase migration up echo "Supabase migrations applied successfully" - name: Create Environment File run: | - # Extract anon key and service key from Supabase output - # Handle the exact format with leading spaces for anon key - ANON_KEY=$(grep -E '^\s+anon key:' supabase_output.txt | sed 's/.*anon key: //') - SERVICE_KEY=$(grep -E '^service_role key:' supabase_output.txt | sed 's/.*service_role key: //') + # Extract anon key and service key from supabase status output + SUPABASE_STATUS=$(pnpm run --silent supabase status 2>&1) + + ANON_KEY=$(echo "$SUPABASE_STATUS" | grep 'anon key:' | sed 's/.*anon key: //' | head -1) + SERVICE_KEY=$(echo "$SUPABASE_STATUS" | grep 'service_role key:' | sed 's/.*service_role key: //' | head -1) # Fallback: extract JWT tokens directly if the above fails if [ -z "$ANON_KEY" ] || [ -z "$SERVICE_KEY" ]; then echo "Primary extraction failed, trying JWT pattern matching..." # Extract all JWT tokens and assign them based on position - TOKENS=($(grep -oE 'eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*' supabase_output.txt)) + TOKENS=($(echo "$SUPABASE_STATUS" | grep -oE 'eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*' || true)) if [ ${#TOKENS[@]} -ge 2 ]; then ANON_KEY=${TOKENS[0]} SERVICE_KEY=${TOKENS[1]} fi fi + if [ -z "$ANON_KEY" ] || [ -z "$SERVICE_KEY" ]; then + echo "Failed to extract Supabase keys. Supabase status output:" + echo "$SUPABASE_STATUS" + exit 1 + fi + echo "VITE_SUPABASE_URL=http://localhost:54321" > .env.local echo "VITE_SUPABASE_ANON_KEY=$ANON_KEY" >> .env.local echo "DANGER_SUPABASE_SERVICE_KEY=$SERVICE_KEY" >> .env.local diff --git a/package.json b/package.json index 680bee8..2d33a80 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@emoji-mart/data": "^1.2.1", "@emoji-mart/react": "^1.1.1", "@eslint/js": "^9.30.1", - "@supabase/supabase-js": "^2.50.4", + "@supabase/supabase-js": "^2.99.1", "@tailwindcss/vite": "^4.2.1", "@types/react": "^19.2.14", "@types/react-dom": "^19.1.6", @@ -37,7 +37,7 @@ "react-dom": "^19.1.0", "react-icons": "^5.6.0", "react-router": "^7.13.1", - "supabase": "^2.30.4", + "supabase": "^2.78.1", "tailwindcss": "^4.2.1", "typescript": "~5.8.3", "typescript-eslint": "^8.36.0", @@ -55,5 +55,8 @@ "sharp", "supabase" ] + }, + "devDependencies": { + "@types/node": "^25.5.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7d131b9..0d46a09 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,11 +18,11 @@ importers: specifier: ^9.30.1 version: 9.30.1 '@supabase/supabase-js': - specifier: ^2.50.4 - version: 2.50.4 + specifier: ^2.99.1 + version: 2.99.1 '@tailwindcss/vite': specifier: ^4.2.1 - version: 4.2.1(vite@8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0)) + version: 4.2.1(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0)) '@types/react': specifier: ^19.2.14 version: 19.2.14 @@ -40,7 +40,7 @@ importers: version: 1.0.0 '@vitejs/plugin-react': specifier: ^6.0.0 - version: 6.0.0(vite@8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0)) + version: 6.0.0(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0)) daisyui: specifier: 5.0.46 version: 5.0.46 @@ -81,8 +81,8 @@ importers: specifier: ^7.13.1 version: 7.13.1(react-dom@19.1.0(react@19.2.4))(react@19.2.4) supabase: - specifier: ^2.30.4 - version: 2.30.4 + specifier: ^2.78.1 + version: 2.78.1 tailwindcss: specifier: ^4.2.1 version: 4.2.1 @@ -97,13 +97,17 @@ importers: version: 13.0.0 vite: specifier: ^8.0.0 - version: 8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0) + version: 8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0) vite-plugin-pwa: specifier: ^1.0.1 - version: 1.0.1(@vite-pwa/assets-generator@1.0.0)(vite@8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0))(workbox-build@7.3.0)(workbox-window@7.3.0) + version: 1.0.1(@vite-pwa/assets-generator@1.0.0)(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0))(workbox-build@7.3.0)(workbox-window@7.3.0) vitest: specifier: ^4.1.0 - version: 4.1.0(@types/node@24.0.1)(vite@8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0)) + version: 4.1.0(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0)) + devDependencies: + '@types/node': + specifier: ^25.5.0 + version: 25.5.0 packages: @@ -995,27 +999,29 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@supabase/auth-js@2.70.0': - resolution: {integrity: sha512-BaAK/tOAZFJtzF1sE3gJ2FwTjLf4ky3PSvcvLGEgEmO4BSBkwWKu8l67rLLIBZPDnCyV7Owk2uPyKHa0kj5QGg==} - - '@supabase/functions-js@2.4.5': - resolution: {integrity: sha512-v5GSqb9zbosquTo6gBwIiq7W9eQ7rE5QazsK/ezNiQXdCbY+bH8D9qEaBIkhVvX4ZRW5rP03gEfw5yw9tiq4EQ==} + '@supabase/auth-js@2.99.1': + resolution: {integrity: sha512-x7lKKTvKjABJt/FYcRSPiTT01Xhm2FF8RhfL8+RHMkmlwmRQ88/lREupIHKwFPW0W6pTCJqkZb7Yhpw/EZ+fNw==} + engines: {node: '>=20.0.0'} - '@supabase/node-fetch@2.6.15': - resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} - engines: {node: 4.x || >=6.0.0} + '@supabase/functions-js@2.99.1': + resolution: {integrity: sha512-WQE62W5geYImCO4jzFxCk/avnK7JmOdtqu2eiPz3zOaNiIJajNRSAwMMDgEGd2EMs+sUVYj1LfBjfmW3EzHgIA==} + engines: {node: '>=20.0.0'} - '@supabase/postgrest-js@1.21.0': - resolution: {integrity: sha512-fqpV5ZwaLVJyQnsmljJF6MnpRWnkjbLEymPylhVo9nFxr6XpkmP0XjRdsDwICBR2ugezoyPYj8yPCrPgSyys3Q==} + '@supabase/postgrest-js@2.99.1': + resolution: {integrity: sha512-gtw2ibJrADvfqrpUWXGNlrYUvxttF4WVWfPpTFKOb2IRj7B6YRWMDgcrYqIuD4ZEabK4m6YKQCCGy6clgf1lPA==} + engines: {node: '>=20.0.0'} - '@supabase/realtime-js@2.11.15': - resolution: {integrity: sha512-HQKRnwAqdVqJW/P9TjKVK+/ETpW4yQ8tyDPPtRMKOH4Uh3vQD74vmj353CYs8+YwVBKubeUOOEpI9CT8mT4obw==} + '@supabase/realtime-js@2.99.1': + resolution: {integrity: sha512-9EDdy/5wOseGFqxW88ShV9JMRhm7f+9JGY5x+LqT8c7R0X1CTLwg5qie8FiBWcXTZ+68yYxVWunI+7W4FhkWOg==} + engines: {node: '>=20.0.0'} - '@supabase/storage-js@2.7.1': - resolution: {integrity: sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==} + '@supabase/storage-js@2.99.1': + resolution: {integrity: sha512-mf7zPfqofI62SOoyQJeNUVxe72E4rQsbWim6lTDPeLu3lHija/cP5utlQADGrjeTgOUN6znx/rWn7SjrETP1dw==} + engines: {node: '>=20.0.0'} - '@supabase/supabase-js@2.50.4': - resolution: {integrity: sha512-houC5IKEncIQ06qz0W+TZiTmXVA954ZargG0IJHYWMVUiJ6CmQqvFXJ59ChdHP/EhMIjGeCaol5qQ/QchAJKSQ==} + '@supabase/supabase-js@2.99.1': + resolution: {integrity: sha512-5MRoYD9ffXq8F6a036dm65YoSHisC3by/d22mauKE99Vrwf792KxYIIr/iqCX7E4hkuugbPZ5EGYHTB7MKy6Vg==} + engines: {node: '>=20.0.0'} '@surma/rollup-plugin-off-main-thread@2.2.3': resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} @@ -1128,8 +1134,8 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/node@24.0.1': - resolution: {integrity: sha512-MX4Zioh39chHlDJbKmEgydJDS3tspMP/lnQC67G3SWsTnb9NeYVWOjkxpOSy4oMfPs4StcWHwBrvUb4ybfnuaw==} + '@types/node@25.5.0': + resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==} '@types/phoenix@1.6.6': resolution: {integrity: sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==} @@ -1411,9 +1417,9 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - bin-links@5.0.0: - resolution: {integrity: sha512-sdleLVfCjBtgO5cNjA2HVRvWBJAHs4zwenaCPMNJAJU0yNxpzj80IpjOIimkpkr+mhlA+how5poQtt53PygbHA==} - engines: {node: ^18.17.0 || >=20.5.0} + bin-links@6.0.0: + resolution: {integrity: sha512-X4CiKlcV2GjnCMwnKAfbVWpHa++65th9TuzAEYtZoATiOE2DQKhSp4CJlyLoTqdhBKlXjpXjCTYPNNFS33Fi6w==} + engines: {node: ^20.17.0 || >=22.9.0} brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -1468,9 +1474,9 @@ packages: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} - cmd-shim@7.0.0: - resolution: {integrity: sha512-rtpaCbr164TPPh+zFdkWpCyZuKkjpAzODfaZCf/SVJZzJN+4bHQb/LP3Jzq5/+84um3XXY8r548XiWKSborwVw==} - engines: {node: ^18.17.0 || >=20.5.0} + cmd-shim@8.0.0: + resolution: {integrity: sha512-Jk/BK6NCapZ58BKUxlSI+ouKRbjH1NLZCgJkYoab+vEHUY3f6OzpNBN9u7HFSv9J6TRDGs4PLOHezoKGaFRSCA==} + engines: {node: ^20.17.0 || >=22.9.0} color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -1909,6 +1915,10 @@ packages: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} + iceberg-js@0.8.1: + resolution: {integrity: sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==} + engines: {node: '>=20.0.0'} + ico-endec@0.1.6: resolution: {integrity: sha512-ZdLU38ZoED3g1j3iEyzcQj+wAkY2xfWNkymszfJPoxucIUhK7NayQ+/C4Kv0nDFMIsbtbEHldv3V8PU494/ueQ==} @@ -2066,11 +2076,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isows@1.0.7: - resolution: {integrity: sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==} - peerDependencies: - ws: '*' - iterator.prototype@1.1.5: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} @@ -2338,15 +2343,10 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@3.0.2: - resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -2370,9 +2370,9 @@ packages: node-releases@2.0.36: resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} - npm-normalize-package-bin@4.0.0: - resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} - engines: {node: ^18.17.0 || >=20.5.0} + npm-normalize-package-bin@5.0.0: + resolution: {integrity: sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==} + engines: {node: ^20.17.0 || >=22.9.0} object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -2537,9 +2537,9 @@ packages: resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} engines: {node: ^14.13.1 || >=16.0.0} - proc-log@5.0.0: - resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} - engines: {node: ^18.17.0 || >=20.5.0} + proc-log@6.1.0: + resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} + engines: {node: ^20.17.0 || >=22.9.0} prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -2584,9 +2584,9 @@ packages: resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} engines: {node: '>=0.10.0'} - read-cmd-shim@5.0.0: - resolution: {integrity: sha512-SEbJV7tohp3DAAILbEMPXavBjAnMN0tVnh4+9G8ihV4Pq3HYF9h8QNez9zkJ1ILkv9G2BjdzwctznGZXgu/HGw==} - engines: {node: ^18.17.0 || >=20.5.0} + read-cmd-shim@6.0.0: + resolution: {integrity: sha512-1zM5HuOfagXCBWMN83fuFI/x+T/UhZ7k+KIzhrHXcQoeX5+7gmaDYjELQHmmzIodumBHeByBJT4QYS7ufAgs7A==} + engines: {node: ^20.17.0 || >=22.9.0} reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} @@ -2799,8 +2799,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - supabase@2.30.4: - resolution: {integrity: sha512-AOCyd2vmBBMTXbnahiCU0reRNxKS4n5CrPciUF2tcTrQ8dLzl1HwcLfe5DrG8E0QRcKHPDdzprmh/2+y4Ta5MA==} + supabase@2.78.1: + resolution: {integrity: sha512-fCIE/LTTr1IGrrYLqYBI3w89QU1qW+mRVtUi/Dmrtj+oXtDX4E8VgfFlXZpoYsXy86cfE9RZXUJVAGgvdNfTPg==} engines: {npm: '>=8'} hasBin: true @@ -2819,10 +2819,9 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} - tar@7.4.3: - resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + tar@7.5.11: + resolution: {integrity: sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==} engines: {node: '>=18'} - deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me temp-dir@2.0.0: resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} @@ -2863,9 +2862,6 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} @@ -2921,8 +2917,8 @@ packages: unconfig@7.3.2: resolution: {integrity: sha512-nqG5NNL2wFVGZ0NA/aCFw0oJ2pxSf1lwg4Z5ill8wd7K4KX/rQbHlwbh+bjctXL5Ly1xtzHenHGOK0b+lG6JVg==} - undici-types@7.8.0: - resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + undici-types@7.18.2: + resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} @@ -3059,15 +3055,9 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} @@ -3153,9 +3143,9 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@6.0.0: - resolution: {integrity: sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ==} - engines: {node: ^18.17.0 || >=20.5.0} + write-file-atomic@7.0.1: + resolution: {integrity: sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==} + engines: {node: ^20.17.0 || >=22.9.0} ws@8.18.2: resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} @@ -3883,7 +3873,7 @@ snapshots: '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.1 + debug: 4.4.3 minimatch: 3.1.5 transitivePeerDependencies: - supports-color @@ -3901,7 +3891,7 @@ snapshots: '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.14.0 - debug: 4.4.1 + debug: 4.4.3 espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 @@ -4165,45 +4155,40 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@supabase/auth-js@2.70.0': + '@supabase/auth-js@2.99.1': dependencies: - '@supabase/node-fetch': 2.6.15 - - '@supabase/functions-js@2.4.5': - dependencies: - '@supabase/node-fetch': 2.6.15 + tslib: 2.8.1 - '@supabase/node-fetch@2.6.15': + '@supabase/functions-js@2.99.1': dependencies: - whatwg-url: 5.0.0 + tslib: 2.8.1 - '@supabase/postgrest-js@1.21.0': + '@supabase/postgrest-js@2.99.1': dependencies: - '@supabase/node-fetch': 2.6.15 + tslib: 2.8.1 - '@supabase/realtime-js@2.11.15': + '@supabase/realtime-js@2.99.1': dependencies: - '@supabase/node-fetch': 2.6.15 '@types/phoenix': 1.6.6 '@types/ws': 8.18.1 - isows: 1.0.7(ws@8.18.2) + tslib: 2.8.1 ws: 8.18.2 transitivePeerDependencies: - bufferutil - utf-8-validate - '@supabase/storage-js@2.7.1': + '@supabase/storage-js@2.99.1': dependencies: - '@supabase/node-fetch': 2.6.15 + iceberg-js: 0.8.1 + tslib: 2.8.1 - '@supabase/supabase-js@2.50.4': + '@supabase/supabase-js@2.99.1': dependencies: - '@supabase/auth-js': 2.70.0 - '@supabase/functions-js': 2.4.5 - '@supabase/node-fetch': 2.6.15 - '@supabase/postgrest-js': 1.21.0 - '@supabase/realtime-js': 2.11.15 - '@supabase/storage-js': 2.7.1 + '@supabase/auth-js': 2.99.1 + '@supabase/functions-js': 2.99.1 + '@supabase/postgrest-js': 2.99.1 + '@supabase/realtime-js': 2.99.1 + '@supabase/storage-js': 2.99.1 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -4276,12 +4261,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.2.1 '@tailwindcss/oxide-win32-x64-msvc': 4.2.1 - '@tailwindcss/vite@4.2.1(vite@8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0))': + '@tailwindcss/vite@4.2.1(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0))': dependencies: '@tailwindcss/node': 4.2.1 '@tailwindcss/oxide': 4.2.1 tailwindcss: 4.2.1 - vite: 8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0) + vite: 8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0) '@tybys/wasm-util@0.10.1': dependencies: @@ -4301,9 +4286,9 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/node@24.0.1': + '@types/node@25.5.0': dependencies: - undici-types: 7.8.0 + undici-types: 7.18.2 '@types/phoenix@1.6.6': {} @@ -4321,7 +4306,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 24.0.1 + '@types/node': 25.5.0 '@typescript-eslint/eslint-plugin@8.36.0(@typescript-eslint/parser@8.36.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3)': dependencies: @@ -4374,7 +4359,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 8.36.0(typescript@5.8.3) '@typescript-eslint/utils': 8.36.0(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3) - debug: 4.4.1 + debug: 4.4.3 eslint: 9.30.1(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 @@ -4432,10 +4417,10 @@ snapshots: sharp-ico: 0.1.5 unconfig: 7.3.2 - '@vitejs/plugin-react@6.0.0(vite@8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0))': + '@vitejs/plugin-react@6.0.0(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0) + vite: 8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0) '@vitest/expect@4.1.0': dependencies: @@ -4446,13 +4431,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.0(vite@8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0))': + '@vitest/mocker@4.1.0(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0))': dependencies: '@vitest/spy': 4.1.0 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0) + vite: 8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0) '@vitest/pretty-format@4.1.0': dependencies: @@ -4605,13 +4590,13 @@ snapshots: baseline-browser-mapping@2.10.7: {} - bin-links@5.0.0: + bin-links@6.0.0: dependencies: - cmd-shim: 7.0.0 - npm-normalize-package-bin: 4.0.0 - proc-log: 5.0.0 - read-cmd-shim: 5.0.0 - write-file-atomic: 6.0.0 + cmd-shim: 8.0.0 + npm-normalize-package-bin: 5.0.0 + proc-log: 6.1.0 + read-cmd-shim: 6.0.0 + write-file-atomic: 7.0.1 brace-expansion@1.1.12: dependencies: @@ -4668,7 +4653,7 @@ snapshots: chownr@3.0.0: {} - cmd-shim@7.0.0: {} + cmd-shim@8.0.0: {} color-convert@2.0.1: dependencies: @@ -5191,10 +5176,12 @@ snapshots: https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color + iceberg-js@0.8.1: {} + ico-endec@0.1.6: {} idb@7.1.1: {} @@ -5344,10 +5331,6 @@ snapshots: isexe@2.0.0: {} - isows@1.0.7(ws@8.18.2): - dependencies: - ws: 8.18.2 - iterator.prototype@1.1.5: dependencies: define-data-property: 1.1.4 @@ -5562,12 +5545,10 @@ snapshots: minipass@7.1.2: {} - minizlib@3.0.2: + minizlib@3.1.0: dependencies: minipass: 7.1.2 - mkdirp@3.0.1: {} - ms@2.1.3: {} nanoid@3.3.11: {} @@ -5584,7 +5565,7 @@ snapshots: node-releases@2.0.36: {} - npm-normalize-package-bin@4.0.0: {} + npm-normalize-package-bin@5.0.0: {} object-assign@4.1.1: {} @@ -5691,7 +5672,7 @@ snapshots: pretty-bytes@6.1.1: {} - proc-log@5.0.0: {} + proc-log@6.1.0: {} prop-types@15.8.1: dependencies: @@ -5730,7 +5711,7 @@ snapshots: react@19.2.4: {} - read-cmd-shim@5.0.0: {} + read-cmd-shim@6.0.0: {} reflect.getprototypeof@1.0.10: dependencies: @@ -6029,12 +6010,12 @@ snapshots: strip-json-comments@3.1.1: {} - supabase@2.30.4: + supabase@2.78.1: dependencies: - bin-links: 5.0.0 + bin-links: 6.0.0 https-proxy-agent: 7.0.6 node-fetch: 3.3.2 - tar: 7.4.3 + tar: 7.5.11 transitivePeerDependencies: - supports-color @@ -6048,13 +6029,12 @@ snapshots: tapable@2.3.0: {} - tar@7.4.3: + tar@7.5.11: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 minipass: 7.1.2 - minizlib: 3.0.2 - mkdirp: 3.0.1 + minizlib: 3.1.0 yallist: 5.0.0 temp-dir@2.0.0: {} @@ -6095,8 +6075,6 @@ snapshots: dependencies: is-number: 7.0.0 - tr46@0.0.3: {} - tr46@1.0.1: dependencies: punycode: 2.3.1 @@ -6105,8 +6083,7 @@ snapshots: dependencies: typescript: 5.8.3 - tslib@2.8.1: - optional: true + tslib@2.8.1: {} type-check@0.4.0: dependencies: @@ -6173,7 +6150,7 @@ snapshots: jiti: 2.4.2 quansync: 0.2.10 - undici-types@7.8.0: {} + undici-types@7.18.2: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -6206,12 +6183,12 @@ snapshots: uuid@13.0.0: {} - vite-plugin-pwa@1.0.1(@vite-pwa/assets-generator@1.0.0)(vite@8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0))(workbox-build@7.3.0)(workbox-window@7.3.0): + vite-plugin-pwa@1.0.1(@vite-pwa/assets-generator@1.0.0)(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0))(workbox-build@7.3.0)(workbox-window@7.3.0): dependencies: debug: 4.4.1 pretty-bytes: 6.1.1 tinyglobby: 0.2.14 - vite: 8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0) + vite: 8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0) workbox-build: 7.3.0 workbox-window: 7.3.0 optionalDependencies: @@ -6219,7 +6196,7 @@ snapshots: transitivePeerDependencies: - supports-color - vite@8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0): + vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0): dependencies: '@oxc-project/runtime': 0.115.0 lightningcss: 1.32.0 @@ -6228,15 +6205,15 @@ snapshots: rolldown: 1.0.0-rc.9 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 25.5.0 fsevents: 2.3.3 jiti: 2.6.1 terser: 5.46.0 - vitest@4.1.0(@types/node@24.0.1)(vite@8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0)): + vitest@4.1.0(@types/node@25.5.0)(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0)): dependencies: '@vitest/expect': 4.1.0 - '@vitest/mocker': 4.1.0(vite@8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0)) + '@vitest/mocker': 4.1.0(vite@8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0)) '@vitest/pretty-format': 4.1.0 '@vitest/runner': 4.1.0 '@vitest/snapshot': 4.1.0 @@ -6253,24 +6230,17 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.0(@types/node@24.0.1)(jiti@2.6.1)(terser@5.46.0) + vite: 8.0.0(@types/node@25.5.0)(jiti@2.6.1)(terser@5.46.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.0.1 + '@types/node': 25.5.0 transitivePeerDependencies: - msw web-streams-polyfill@3.3.3: {} - webidl-conversions@3.0.1: {} - webidl-conversions@4.0.2: {} - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - whatwg-url@7.1.0: dependencies: lodash.sortby: 4.7.0 @@ -6444,9 +6414,8 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@6.0.0: + write-file-atomic@7.0.1: dependencies: - imurmurhash: 0.1.4 signal-exit: 4.1.0 ws@8.18.2: {} diff --git a/src/contexts/supabase/database.d.ts b/src/contexts/supabase/database.d.ts index a2b8de1..46da8e1 100644 --- a/src/contexts/supabase/database.d.ts +++ b/src/contexts/supabase/database.d.ts @@ -17,10 +17,10 @@ export type Database = { Functions: { graphql: { Args: { + extensions?: Json operationName?: string query?: string variables?: Json - extensions?: Json } Returns: Json } @@ -364,26 +364,23 @@ export type Database = { } } Functions: { - accept_co_authoring: { - Args: { post_id: string } - Returns: boolean - } + accept_co_authoring: { Args: { post_id: string }; Returns: boolean } extreme_danger_truncate_all_tables_yes_i_am_sure: { - Args: Record + Args: never Returns: undefined } get_posts_feed: { Args: { - has_text?: string[] + from_date?: string has_authors?: string[] has_categories?: string[] + has_text?: string[] liked_by?: string[] - from_date?: string - to_date?: string - sort_by?: string - sort_order?: string paging_limit?: number paging_offset?: number + sort_by?: string + sort_order?: string + to_date?: string } Returns: { body: string | null @@ -392,22 +389,28 @@ export type Database = { parent_post: string | null rt_of: string | null }[] + SetofOptions: { + from: "*" + to: "posts" + isOneToOne: false + isSetofReturn: true + } } get_profiles_feed: { Args: { - has_handle?: string[] - has_bio?: string[] - has_categories?: string[] + author_of?: string[] featured_by?: string[] features_user?: string[] - author_of?: string[] - likes_posts?: string[] from_date?: string - to_date?: string - sort_by?: string - sort_order?: string + has_bio?: string[] + has_categories?: string[] + has_handle?: string[] + likes_posts?: string[] paging_limit?: number paging_offset?: number + sort_by?: string + sort_order?: string + to_date?: string } Returns: { banner: string | null @@ -418,11 +421,14 @@ export type Database = { pinned_posts: string[] | null profile_pic: string | null }[] + SetofOptions: { + from: "*" + to: "profiles" + isOneToOne: false + isSetofReturn: true + } } - id_of_ensured_category: { - Args: { request: string } - Returns: string - } + id_of_ensured_category: { Args: { request: string }; Returns: string } } Enums: { [_ in never]: never @@ -433,21 +439,25 @@ export type Database = { } } -type DefaultSchema = Database[Extract] +type DatabaseWithoutInternals = Omit + +type DefaultSchema = DatabaseWithoutInternals[Extract] export type Tables< DefaultSchemaTableNameOrOptions extends | keyof (DefaultSchema["Tables"] & DefaultSchema["Views"]) - | { schema: keyof Database }, + | { schema: keyof DatabaseWithoutInternals }, TableName extends DefaultSchemaTableNameOrOptions extends { - schema: keyof Database + schema: keyof DatabaseWithoutInternals } - ? keyof (Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] & - Database[DefaultSchemaTableNameOrOptions["schema"]]["Views"]) + ? keyof (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] & + DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Views"]) : never = never, -> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database } - ? (Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] & - Database[DefaultSchemaTableNameOrOptions["schema"]]["Views"])[TableName] extends { +> = DefaultSchemaTableNameOrOptions extends { + schema: keyof DatabaseWithoutInternals +} + ? (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] & + DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Views"])[TableName] extends { Row: infer R } ? R @@ -465,14 +475,16 @@ export type Tables< export type TablesInsert< DefaultSchemaTableNameOrOptions extends | keyof DefaultSchema["Tables"] - | { schema: keyof Database }, + | { schema: keyof DatabaseWithoutInternals }, TableName extends DefaultSchemaTableNameOrOptions extends { - schema: keyof Database + schema: keyof DatabaseWithoutInternals } - ? keyof Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] + ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] : never = never, -> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database } - ? Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends { +> = DefaultSchemaTableNameOrOptions extends { + schema: keyof DatabaseWithoutInternals +} + ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends { Insert: infer I } ? I @@ -488,14 +500,16 @@ export type TablesInsert< export type TablesUpdate< DefaultSchemaTableNameOrOptions extends | keyof DefaultSchema["Tables"] - | { schema: keyof Database }, + | { schema: keyof DatabaseWithoutInternals }, TableName extends DefaultSchemaTableNameOrOptions extends { - schema: keyof Database + schema: keyof DatabaseWithoutInternals } - ? keyof Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] + ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] : never = never, -> = DefaultSchemaTableNameOrOptions extends { schema: keyof Database } - ? Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends { +> = DefaultSchemaTableNameOrOptions extends { + schema: keyof DatabaseWithoutInternals +} + ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends { Update: infer U } ? U @@ -511,14 +525,16 @@ export type TablesUpdate< export type Enums< DefaultSchemaEnumNameOrOptions extends | keyof DefaultSchema["Enums"] - | { schema: keyof Database }, + | { schema: keyof DatabaseWithoutInternals }, EnumName extends DefaultSchemaEnumNameOrOptions extends { - schema: keyof Database + schema: keyof DatabaseWithoutInternals } - ? keyof Database[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"] + ? keyof DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"] : never = never, -> = DefaultSchemaEnumNameOrOptions extends { schema: keyof Database } - ? Database[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"][EnumName] +> = DefaultSchemaEnumNameOrOptions extends { + schema: keyof DatabaseWithoutInternals +} + ? DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"][EnumName] : DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema["Enums"] ? DefaultSchema["Enums"][DefaultSchemaEnumNameOrOptions] : never @@ -526,14 +542,16 @@ export type Enums< export type CompositeTypes< PublicCompositeTypeNameOrOptions extends | keyof DefaultSchema["CompositeTypes"] - | { schema: keyof Database }, + | { schema: keyof DatabaseWithoutInternals }, CompositeTypeName extends PublicCompositeTypeNameOrOptions extends { - schema: keyof Database + schema: keyof DatabaseWithoutInternals } - ? keyof Database[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"] + ? keyof DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"] : never = never, -> = PublicCompositeTypeNameOrOptions extends { schema: keyof Database } - ? Database[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"][CompositeTypeName] +> = PublicCompositeTypeNameOrOptions extends { + schema: keyof DatabaseWithoutInternals +} + ? DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"][CompositeTypeName] : PublicCompositeTypeNameOrOptions extends keyof DefaultSchema["CompositeTypes"] ? DefaultSchema["CompositeTypes"][PublicCompositeTypeNameOrOptions] : never diff --git a/src/contexts/supabase/supabase.ts b/src/contexts/supabase/supabase.ts index bba5850..d8c565b 100644 --- a/src/contexts/supabase/supabase.ts +++ b/src/contexts/supabase/supabase.ts @@ -4,8 +4,10 @@ import { Database, Tables } from "./database"; import profilePicturePlaceholder from "../../assets/profile.png"; import profileBannerPlaceholder from "../../assets/background-6228032_1280.jpg"; -const supabaseUrl = import.meta.env.VITE_SUPABASE_URL; -const supabaseKey = import.meta.env.VITE_SUPABASE_ANON_KEY; +// Fallbacks allow the module to be imported during tests that don't have a Supabase instance. +// In production and in the supabase_tests CI job the env vars are always present. +const supabaseUrl: string = import.meta.env.VITE_SUPABASE_URL || "http://localhost:54321"; +const supabaseKey: string = import.meta.env.VITE_SUPABASE_ANON_KEY || "placeholder"; const supabase = createClient(supabaseUrl, supabaseKey); interface postWithCategories { diff --git a/src/contexts/supabase/tests/supabase.test-utils.ts b/src/contexts/supabase/tests/supabase.test-utils.ts index adf116f..f42f131 100644 --- a/src/contexts/supabase/tests/supabase.test-utils.ts +++ b/src/contexts/supabase/tests/supabase.test-utils.ts @@ -4,13 +4,12 @@ const serviceKey = import.meta.env.DANGER_SUPABASE_SERVICE_KEY; import { queries, supabase } from "../supabase"; -import type { SupabaseClient } from "@supabase/supabase-js"; import { createClient } from "@supabase/supabase-js"; import crypto from "node:crypto"; export async function flushAllTables(): Promise { // try calling it as anon and a regular user. refer to warning in supabase.tests.ts for details. - const anonClient: SupabaseClient = createClient(supabaseUrl, anonKey); + const anonClient = createClient(supabaseUrl, anonKey); const { error: errorAnon } = await anonClient.rpc("extreme_danger_truncate_all_tables_yes_i_am_sure"); if (!errorAnon) {