From b9e2c8750e5d09238280be79e0e3317e8cd8263f Mon Sep 17 00:00:00 2001 From: Tyler Date: Thu, 28 Mar 2024 10:36:50 +0900 Subject: [PATCH 01/97] blog: Update video links on the Figma clone article (#22168) Update resource link to include latest Figma clone videos --- apps/www/_blog/2024-01-26-flutter-figma-clone.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/www/_blog/2024-01-26-flutter-figma-clone.mdx b/apps/www/_blog/2024-01-26-flutter-figma-clone.mdx index 8640a76f8c2..51c2c615d3f 100644 --- a/apps/www/_blog/2024-01-26-flutter-figma-clone.mdx +++ b/apps/www/_blog/2024-01-26-flutter-figma-clone.mdx @@ -860,6 +860,8 @@ This article only used circles and rectangles to keep things simple, but you can ## Resources -- [Create live cursor app with Flutter and Supabase video](https://www.youtube.com/watch?v=QhRNXlFLaeE) +- [Add live cursor sharing using Flutter and Supabase | Flutter Figma Clone #1](https://youtu.be/QhRNXlFLaeE?si=_hi5WcILUsAv8jJY) +- [Draw and sync canvas in real-time | Flutter Figma Clone #2](https://youtu.be/zKjrmAMf2Cs?si=i7zILCFKitjDb45K) +- [Track online users with Supabase Realtime Presence | Flutter Figma Clone #3](https://youtu.be/B2NZvZ2uLNs?si=0rMj7u1gaMH9Bmdm) - [How to build a real-time multiplayer game with Flutter Flame](https://supabase.com/blog/flutter-real-time-multiplayer-game) - [Getting started with Flutter authentication](https://supabase.com/blog/flutter-authentication) From 42773a3a3bd0abf4ec513231fedb03ee9684a85b Mon Sep 17 00:00:00 2001 From: Alaister Young Date: Thu, 28 Mar 2024 15:23:55 +0700 Subject: [PATCH 02/97] chore: upgrade to next 14 (#22234) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: upgrade to next 14 * upgrade related next deps * sync deps * fix lock * package lock * bump deps --------- Co-authored-by: Kevin Grüneberg Co-authored-by: Jonathan Summers-Muir --- apps/database-new/package.json | 6 +- apps/docs/package.json | 8 +- apps/studio/package.json | 10 +- apps/www/package.json | 8 +- package-lock.json | 1020 +++++++------------------------- packages/common/package.json | 2 +- packages/ui/package.json | 2 +- 7 files changed, 219 insertions(+), 837 deletions(-) diff --git a/apps/database-new/package.json b/apps/database-new/package.json index 44b5b6d4300..ea879606f3d 100644 --- a/apps/database-new/package.json +++ b/apps/database-new/package.json @@ -19,10 +19,10 @@ "common": "*", "config": "*", "dayjs": "^1.11.10", - "eslint-config-next": "^14.1.0", + "eslint-config-next": "^14.1.4", "lodash": "^4.17.21", "lucide-react": "^0.338.0", - "next": "^14.0.3", + "next": "^14.1.4", "openai": "^4.20.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -38,7 +38,7 @@ "@types/react": "^18.2.24", "@types/react-dom": "^18.2.8", "autoprefixer": "^10.4.14", - "nextjs-node-loader": "^1.1.5-alpha.0", + "nextjs-node-loader": "^1.1.5", "postcss": "^8.4.31", "typescript": "^5.4.3" } diff --git a/apps/docs/package.json b/apps/docs/package.json index 92bf9016101..39f5bcbc422 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -22,8 +22,8 @@ "@code-hike/mdx": "^0.9.0", "@mdx-js/loader": "^2.1.5", "@mdx-js/react": "^2.3.0", - "@next/bundle-analyzer": "^13.5.6", - "@next/mdx": "^13.5.6", + "@next/bundle-analyzer": "^14.1.4", + "@next/mdx": "^14.1.4", "@octokit/auth-app": "^6.0.3", "@octokit/core": "^5.0.2", "@octokit/graphql": "^7.0.2", @@ -54,11 +54,11 @@ "mdx-mermaid": "2.0.0-rc3", "mermaid": "^10.0.2", "micromark-extension-mdxjs": "^1.0.0", - "next": "^13.4.8", + "next": "^14.1.4", "next-mdx-remote": "^4.4.1", "next-plugin-yaml": "^1.0.1", "next-seo": "^6.5.0", - "next-themes": "^0.2.1", + "next-themes": "^0.3.0", "openai": "^4.20.1", "openapi-fetch": "^0.8.2", "react": "^18.2.0", diff --git a/apps/studio/package.json b/apps/studio/package.json index 514a87f5ff8..2b2e75b618b 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -23,11 +23,11 @@ "@hcaptcha/react-hcaptcha": "^1.8.1", "@headlessui/react": "^1.7.17", "@monaco-editor/react": "^4.6.0", - "@next/bundle-analyzer": "^13.5.6", + "@next/bundle-analyzer": "^14.1.4", "@radix-ui/react-popover": "^1.0.7", "@radix-ui/react-tooltip": "^1.0.7", "@scaleleap/pg-format": "^1.0.0", - "@sentry/nextjs": "^7.77.0", + "@sentry/nextjs": "^7.108.0", "@serafin/schema-builder": "^0.18.2", "@stripe/react-stripe-js": "^2.5.0", "@stripe/stripe-js": "^3.0.5", @@ -63,8 +63,8 @@ "mobx": "^6.10.2", "mobx-react-lite": "^4.0.5", "monaco-editor": "0.33.0", - "next": "^13.5.6", - "next-themes": "^0.2.1", + "next": "^14.1.4", + "next-themes": "^0.3.0", "openai": "^4.20.1", "openapi-fetch": "^0.6.2", "p-queue": "^6.6.2", @@ -139,7 +139,7 @@ "autoprefixer": "^10.4.14", "common": "*", "config": "*", - "eslint-config-next": "^14.1.0", + "eslint-config-next": "^14.1.4", "jest": "^29.7.0", "jest-canvas-mock": "^2.5.2", "jest-environment-jsdom": "^29.7.0", diff --git a/apps/www/package.json b/apps/www/package.json index e6896ddd9a5..7cd0a3e59c3 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -16,8 +16,8 @@ "@code-hike/mdx": "^0.9.0", "@heroicons/react": "^1.0.6", "@mdx-js/react": "^2.3.0", - "@next/bundle-analyzer": "^13.5.6", - "@next/mdx": "^13.5.6", + "@next/bundle-analyzer": "^14.1.4", + "@next/mdx": "^14.1.4", "@octokit/auth-app": "^6.0.3", "@octokit/core": "^5.0.2", "@octokit/graphql": "^7.0.2", @@ -38,10 +38,10 @@ "gray-matter": "^4.0.3", "icons": "*", "markdown-toc": "^1.2.0", - "next": "^13.4.8", + "next": "^14.1.4", "next-mdx-remote": "^4.4.1", "next-seo": "^6.5.0", - "next-themes": "^0.2.1", + "next-themes": "^0.3.0", "parse-numeric-range": "^1.3.0", "react": "^18.2.0", "react-copy-to-clipboard": "^5.1.0", diff --git a/package-lock.json b/package-lock.json index 0eb1940d320..1ca07e2dcee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,10 +42,10 @@ "common": "*", "config": "*", "dayjs": "^1.11.10", - "eslint-config-next": "^14.1.0", + "eslint-config-next": "^14.1.4", "lodash": "^4.17.21", "lucide-react": "^0.338.0", - "next": "^14.0.3", + "next": "^14.1.4", "openai": "^4.20.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -61,15 +61,15 @@ "@types/react": "^18.2.24", "@types/react-dom": "^18.2.8", "autoprefixer": "^10.4.14", - "nextjs-node-loader": "^1.1.5-alpha.0", + "nextjs-node-loader": "^1.1.5", "postcss": "^8.4.31", "typescript": "^5.4.3" } }, "apps/database-new/node_modules/@next/eslint-plugin-next": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.0.tgz", - "integrity": "sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==", + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.4.tgz", + "integrity": "sha512-n4zYNLSyCo0Ln5b7qxqQeQ34OZKXwgbdcx6kmkQbywr+0k6M3Vinft0T72R6CDAcDrne2IAgSud4uWCzFgc5HA==", "dependencies": { "glob": "10.3.10" } @@ -115,11 +115,11 @@ } }, "apps/database-new/node_modules/eslint-config-next": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.1.0.tgz", - "integrity": "sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==", + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.1.4.tgz", + "integrity": "sha512-cihIahbhYAWwXJwZkAaRPpUi5t9aOi/HdfWXOjZeUOqNWXHD8X22kd1KG58Dc3MVaRx3HoR/oMGk2ltcrqDn8g==", "dependencies": { - "@next/eslint-plugin-next": "14.1.0", + "@next/eslint-plugin-next": "14.1.4", "@rushstack/eslint-patch": "^1.3.3", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", "eslint-import-resolver-node": "^0.3.6", @@ -227,8 +227,8 @@ "@code-hike/mdx": "^0.9.0", "@mdx-js/loader": "^2.1.5", "@mdx-js/react": "^2.3.0", - "@next/bundle-analyzer": "^13.5.6", - "@next/mdx": "^13.5.6", + "@next/bundle-analyzer": "^14.1.4", + "@next/mdx": "^14.1.4", "@octokit/auth-app": "^6.0.3", "@octokit/core": "^5.0.2", "@octokit/graphql": "^7.0.2", @@ -259,11 +259,11 @@ "mdx-mermaid": "2.0.0-rc3", "mermaid": "^10.0.2", "micromark-extension-mdxjs": "^1.0.0", - "next": "^13.4.8", + "next": "^14.1.4", "next-mdx-remote": "^4.4.1", "next-plugin-yaml": "^1.0.1", "next-seo": "^6.5.0", - "next-themes": "^0.2.1", + "next-themes": "^0.3.0", "openai": "^4.20.1", "openapi-fetch": "^0.8.2", "react": "^18.2.0", @@ -307,154 +307,6 @@ "typescript": "^5.4.3" } }, - "apps/docs/node_modules/@next/env": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.8.tgz", - "integrity": "sha512-twuSf1klb3k9wXI7IZhbZGtFCWvGD4wXTY2rmvzIgVhXhs7ISThrbNyutBx3jWIL8Y/Hk9+woytFz5QsgtcRKQ==" - }, - "apps/docs/node_modules/@next/swc-darwin-arm64": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.8.tgz", - "integrity": "sha512-MSFplVM4dTWOuKAUv0XR9gY7AWtMSBu9os9f+kp+s5rWhM1I2CdR3obFttd6366nS/W/VZxbPM5oEIdlIa46zA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/docs/node_modules/@next/swc-darwin-x64": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.8.tgz", - "integrity": "sha512-Reox+UXgonon9P0WNDE6w85DGtyBqGitl/ryznOvn6TvfxEaZIpTgeu3ZrJLU9dHSMhiK7YAM793mE/Zii2/Qw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/docs/node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.8.tgz", - "integrity": "sha512-kdyzYvAYtqQVgzIKNN7e1rLU8aZv86FDSRqPlOkKZlvqudvTO0iohuTPmnEEDlECeBM6qRPShNffotDcU/R2KA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/docs/node_modules/@next/swc-linux-arm64-musl": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.8.tgz", - "integrity": "sha512-oWxx4yRkUGcR81XwbI+T0zhZ3bDF6V1aVLpG+C7hSG50ULpV8gC39UxVO22/bv93ZlcfMY4zl8xkz9Klct6dpQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/docs/node_modules/@next/swc-linux-x64-gnu": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.8.tgz", - "integrity": "sha512-anhtvuO6eE9YRhYnaEGTfbpH3L5gT/9qPFcNoi6xS432r/4DAtpJY8kNktqkTVevVIC/pVumqO8tV59PR3zbNg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/docs/node_modules/@next/swc-linux-x64-musl": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.8.tgz", - "integrity": "sha512-aR+J4wWfNgH1DwCCBNjan7Iumx0lLtn+2/rEYuhIrYLY4vnxqSVGz9u3fXcgUwo6Q9LT8NFkaqK1vPprdq+BXg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/docs/node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.8.tgz", - "integrity": "sha512-OWBKIrJwQBTqrat0xhxEB/jcsjJR3+diD9nc/Y8F1mRdQzsn4bPsomgJyuqPVZs6Lz3K18qdIkvywmfSq75SsQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/docs/node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.8.tgz", - "integrity": "sha512-agiPWGjUndXGTOn4ChbKipQXRA6/UPkywAWIkx7BhgGv48TiJfHTK6MGfBoL9tS6B4mtW39++uy0wFPnfD0JWg==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/docs/node_modules/@next/swc-win32-x64-msvc": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.8.tgz", - "integrity": "sha512-UIRKoByVKbuR6SnFG4JM8EMFlJrfEGuUQ1ihxzEleWcNwRMMiVaCj1KyqfTOW8VTQhJ0u8P1Ngg6q1RwnIBTtw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/docs/node_modules/@swc/helpers": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", - "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", - "dependencies": { - "tslib": "^2.4.0" - } - }, "apps/docs/node_modules/@tanstack/query-core": { "version": "5.13.4", "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.13.4.tgz", @@ -586,79 +438,6 @@ ], "license": "MIT" }, - "apps/docs/node_modules/next": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/next/-/next-13.4.8.tgz", - "integrity": "sha512-lxUjndYKjZHGK3CWeN2RI+/6ni6EUvjiqGWXAYPxUfGIdFGQ5XoisrqAJ/dF74aP27buAfs8MKIbIMMdxjqSBg==", - "dependencies": { - "@next/env": "13.4.8", - "@swc/helpers": "0.5.1", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.1.1", - "watchpack": "2.4.0", - "zod": "3.21.4" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=16.8.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "13.4.8", - "@next/swc-darwin-x64": "13.4.8", - "@next/swc-linux-arm64-gnu": "13.4.8", - "@next/swc-linux-arm64-musl": "13.4.8", - "@next/swc-linux-x64-gnu": "13.4.8", - "@next/swc-linux-x64-musl": "13.4.8", - "@next/swc-win32-arm64-msvc": "13.4.8", - "@next/swc-win32-ia32-msvc": "13.4.8", - "@next/swc-win32-x64-msvc": "13.4.8" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "fibers": ">= 3.1.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "fibers": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "apps/docs/node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "apps/docs/node_modules/puppeteer": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-16.2.0.tgz", @@ -744,14 +523,6 @@ } } }, - "apps/docs/node_modules/zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "apps/docs/spec/parser": { "name": "@supabase/generator", "version": "0.0.0", @@ -2335,11 +2106,11 @@ "@hcaptcha/react-hcaptcha": "^1.8.1", "@headlessui/react": "^1.7.17", "@monaco-editor/react": "^4.6.0", - "@next/bundle-analyzer": "^13.5.6", + "@next/bundle-analyzer": "^14.1.4", "@radix-ui/react-popover": "^1.0.7", "@radix-ui/react-tooltip": "^1.0.7", "@scaleleap/pg-format": "^1.0.0", - "@sentry/nextjs": "^7.77.0", + "@sentry/nextjs": "^7.108.0", "@serafin/schema-builder": "^0.18.2", "@stripe/react-stripe-js": "^2.5.0", "@stripe/stripe-js": "^3.0.5", @@ -2375,8 +2146,8 @@ "mobx": "^6.10.2", "mobx-react-lite": "^4.0.5", "monaco-editor": "0.33.0", - "next": "^13.5.6", - "next-themes": "^0.2.1", + "next": "^14.1.4", + "next-themes": "^0.3.0", "openai": "^4.20.1", "openapi-fetch": "^0.6.2", "p-queue": "^6.6.2", @@ -2451,7 +2222,7 @@ "autoprefixer": "^10.4.14", "common": "*", "config": "*", - "eslint-config-next": "^14.1.0", + "eslint-config-next": "^14.1.4", "jest": "^29.7.0", "jest-canvas-mock": "^2.5.2", "jest-environment-jsdom": "^29.7.0", @@ -2480,155 +2251,15 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "apps/studio/node_modules/@next/env": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.6.tgz", - "integrity": "sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==" - }, "apps/studio/node_modules/@next/eslint-plugin-next": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.0.tgz", - "integrity": "sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==", + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.4.tgz", + "integrity": "sha512-n4zYNLSyCo0Ln5b7qxqQeQ34OZKXwgbdcx6kmkQbywr+0k6M3Vinft0T72R6CDAcDrne2IAgSud4uWCzFgc5HA==", "dev": true, "dependencies": { "glob": "10.3.10" } }, - "apps/studio/node_modules/@next/swc-darwin-arm64": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.5.6.tgz", - "integrity": "sha512-5nvXMzKtZfvcu4BhtV0KH1oGv4XEW+B+jOfmBdpFI3C7FrB/MfujRpWYSBBO64+qbW8pkZiSyQv9eiwnn5VIQA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/studio/node_modules/@next/swc-darwin-x64": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.5.6.tgz", - "integrity": "sha512-6cgBfxg98oOCSr4BckWjLLgiVwlL3vlLj8hXg2b+nDgm4bC/qVXXLfpLB9FHdoDu4057hzywbxKvmYGmi7yUzA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/studio/node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.5.6.tgz", - "integrity": "sha512-txagBbj1e1w47YQjcKgSU4rRVQ7uF29YpnlHV5xuVUsgCUf2FmyfJ3CPjZUvpIeXCJAoMCFAoGnbtX86BK7+sg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/studio/node_modules/@next/swc-linux-arm64-musl": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.5.6.tgz", - "integrity": "sha512-cGd+H8amifT86ZldVJtAKDxUqeFyLWW+v2NlBULnLAdWsiuuN8TuhVBt8ZNpCqcAuoruoSWynvMWixTFcroq+Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/studio/node_modules/@next/swc-linux-x64-gnu": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.5.6.tgz", - "integrity": "sha512-Mc2b4xiIWKXIhBy2NBTwOxGD3nHLmq4keFk+d4/WL5fMsB8XdJRdtUlL87SqVCTSaf1BRuQQf1HvXZcy+rq3Nw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/studio/node_modules/@next/swc-linux-x64-musl": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.5.6.tgz", - "integrity": "sha512-CFHvP9Qz98NruJiUnCe61O6GveKKHpJLloXbDSWRhqhkJdZD2zU5hG+gtVJR//tyW897izuHpM6Gtf6+sNgJPQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/studio/node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.5.6.tgz", - "integrity": "sha512-aFv1ejfkbS7PUa1qVPwzDHjQWQtknzAZWGTKYIAaS4NMtBlk3VyA6AYn593pqNanlicewqyl2jUhQAaFV/qXsg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/studio/node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.5.6.tgz", - "integrity": "sha512-XqqpHgEIlBHvzwG8sp/JXMFkLAfGLqkbVsyN+/Ih1mR8INb6YCc2x/Mbwi6hsAgUnqQztz8cvEbHJUbSl7RHDg==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/studio/node_modules/@next/swc-win32-x64-msvc": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.5.6.tgz", - "integrity": "sha512-Cqfe1YmOS7k+5mGu92nl5ULkzpKuxJrP3+4AEuPmrpFZ3BHxTY3TnHmU1On3bFmFFs6FbTcdF58CCUProGpIGQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, "apps/studio/node_modules/@storybook/addon-backgrounds": { "version": "7.6.17", "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.6.17.tgz", @@ -3553,12 +3184,12 @@ } }, "apps/studio/node_modules/eslint-config-next": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.1.0.tgz", - "integrity": "sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==", + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.1.4.tgz", + "integrity": "sha512-cihIahbhYAWwXJwZkAaRPpUi5t9aOi/HdfWXOjZeUOqNWXHD8X22kd1KG58Dc3MVaRx3HoR/oMGk2ltcrqDn8g==", "dev": true, "dependencies": { - "@next/eslint-plugin-next": "14.1.0", + "@next/eslint-plugin-next": "14.1.4", "@rushstack/eslint-patch": "^1.3.3", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", "eslint-import-resolver-node": "^0.3.6", @@ -3693,51 +3324,6 @@ "node": ">=10" } }, - "apps/studio/node_modules/next": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/next/-/next-13.5.6.tgz", - "integrity": "sha512-Y2wTcTbO4WwEsVb4A8VSnOsG1I9ok+h74q0ZdxkwM3EODqrs4pasq7O0iUxbcS9VtWMicG7f3+HAj0r1+NtKSw==", - "dependencies": { - "@next/env": "13.5.6", - "@swc/helpers": "0.5.2", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.31", - "styled-jsx": "5.1.1", - "watchpack": "2.4.0" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=16.14.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "13.5.6", - "@next/swc-darwin-x64": "13.5.6", - "@next/swc-linux-arm64-gnu": "13.5.6", - "@next/swc-linux-arm64-musl": "13.5.6", - "@next/swc-linux-x64-gnu": "13.5.6", - "@next/swc-linux-x64-musl": "13.5.6", - "@next/swc-win32-arm64-msvc": "13.5.6", - "@next/swc-win32-ia32-msvc": "13.5.6", - "@next/swc-win32-x64-msvc": "13.5.6" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, "apps/studio/node_modules/openapi-fetch": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/openapi-fetch/-/openapi-fetch-0.6.2.tgz", @@ -3797,8 +3383,8 @@ "@code-hike/mdx": "^0.9.0", "@heroicons/react": "^1.0.6", "@mdx-js/react": "^2.3.0", - "@next/bundle-analyzer": "^13.5.6", - "@next/mdx": "^13.5.6", + "@next/bundle-analyzer": "^14.1.4", + "@next/mdx": "^14.1.4", "@octokit/auth-app": "^6.0.3", "@octokit/core": "^5.0.2", "@octokit/graphql": "^7.0.2", @@ -3819,10 +3405,10 @@ "gray-matter": "^4.0.3", "icons": "*", "markdown-toc": "^1.2.0", - "next": "^13.4.8", + "next": "^14.1.4", "next-mdx-remote": "^4.4.1", "next-seo": "^6.5.0", - "next-themes": "^0.2.1", + "next-themes": "^0.3.0", "parse-numeric-range": "^1.3.0", "react": "^18.2.0", "react-copy-to-clipboard": "^5.1.0", @@ -3867,154 +3453,6 @@ "tsconfig": "*" } }, - "apps/www/node_modules/@next/env": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.8.tgz", - "integrity": "sha512-twuSf1klb3k9wXI7IZhbZGtFCWvGD4wXTY2rmvzIgVhXhs7ISThrbNyutBx3jWIL8Y/Hk9+woytFz5QsgtcRKQ==" - }, - "apps/www/node_modules/@next/swc-darwin-arm64": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.8.tgz", - "integrity": "sha512-MSFplVM4dTWOuKAUv0XR9gY7AWtMSBu9os9f+kp+s5rWhM1I2CdR3obFttd6366nS/W/VZxbPM5oEIdlIa46zA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/www/node_modules/@next/swc-darwin-x64": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.8.tgz", - "integrity": "sha512-Reox+UXgonon9P0WNDE6w85DGtyBqGitl/ryznOvn6TvfxEaZIpTgeu3ZrJLU9dHSMhiK7YAM793mE/Zii2/Qw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/www/node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.8.tgz", - "integrity": "sha512-kdyzYvAYtqQVgzIKNN7e1rLU8aZv86FDSRqPlOkKZlvqudvTO0iohuTPmnEEDlECeBM6qRPShNffotDcU/R2KA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/www/node_modules/@next/swc-linux-arm64-musl": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.8.tgz", - "integrity": "sha512-oWxx4yRkUGcR81XwbI+T0zhZ3bDF6V1aVLpG+C7hSG50ULpV8gC39UxVO22/bv93ZlcfMY4zl8xkz9Klct6dpQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/www/node_modules/@next/swc-linux-x64-gnu": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.8.tgz", - "integrity": "sha512-anhtvuO6eE9YRhYnaEGTfbpH3L5gT/9qPFcNoi6xS432r/4DAtpJY8kNktqkTVevVIC/pVumqO8tV59PR3zbNg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/www/node_modules/@next/swc-linux-x64-musl": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.8.tgz", - "integrity": "sha512-aR+J4wWfNgH1DwCCBNjan7Iumx0lLtn+2/rEYuhIrYLY4vnxqSVGz9u3fXcgUwo6Q9LT8NFkaqK1vPprdq+BXg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/www/node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.8.tgz", - "integrity": "sha512-OWBKIrJwQBTqrat0xhxEB/jcsjJR3+diD9nc/Y8F1mRdQzsn4bPsomgJyuqPVZs6Lz3K18qdIkvywmfSq75SsQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/www/node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.8.tgz", - "integrity": "sha512-agiPWGjUndXGTOn4ChbKipQXRA6/UPkywAWIkx7BhgGv48TiJfHTK6MGfBoL9tS6B4mtW39++uy0wFPnfD0JWg==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/www/node_modules/@next/swc-win32-x64-msvc": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.8.tgz", - "integrity": "sha512-UIRKoByVKbuR6SnFG4JM8EMFlJrfEGuUQ1ihxzEleWcNwRMMiVaCj1KyqfTOW8VTQhJ0u8P1Ngg6q1RwnIBTtw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "apps/www/node_modules/@swc/helpers": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", - "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", - "dependencies": { - "tslib": "^2.4.0" - } - }, "apps/www/node_modules/@types/mdx-js__react": { "version": "1.5.6", "dev": true, @@ -4068,79 +3506,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "apps/www/node_modules/next": { - "version": "13.4.8", - "resolved": "https://registry.npmjs.org/next/-/next-13.4.8.tgz", - "integrity": "sha512-lxUjndYKjZHGK3CWeN2RI+/6ni6EUvjiqGWXAYPxUfGIdFGQ5XoisrqAJ/dF74aP27buAfs8MKIbIMMdxjqSBg==", - "dependencies": { - "@next/env": "13.4.8", - "@swc/helpers": "0.5.1", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.1.1", - "watchpack": "2.4.0", - "zod": "3.21.4" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=16.8.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "13.4.8", - "@next/swc-darwin-x64": "13.4.8", - "@next/swc-linux-arm64-gnu": "13.4.8", - "@next/swc-linux-arm64-musl": "13.4.8", - "@next/swc-linux-x64-gnu": "13.4.8", - "@next/swc-linux-x64-musl": "13.4.8", - "@next/swc-win32-arm64-msvc": "13.4.8", - "@next/swc-win32-ia32-msvc": "13.4.8", - "@next/swc-win32-x64-msvc": "13.4.8" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "fibers": ">= 3.1.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "fibers": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "apps/www/node_modules/next/node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "apps/www/node_modules/slash": { "version": "4.0.0", "license": "MIT", @@ -4151,14 +3516,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "apps/www/node_modules/zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "license": "MIT", @@ -6970,7 +6327,6 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, "engines": { "node": ">=10.0.0" } @@ -8667,10 +8023,11 @@ } }, "node_modules/@next/bundle-analyzer": { - "version": "13.5.6", - "license": "MIT", + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-14.1.4.tgz", + "integrity": "sha512-IpF/18HcAOcfHRr24tqPOUpMmVKIqvkCxIubMeRYWCXs3jm7niPGrt8Mu74yMDzfGlUwgQA6Xd6BUc5+jQxcEg==", "dependencies": { - "webpack-bundle-analyzer": "4.7.0" + "webpack-bundle-analyzer": "4.10.1" } }, "node_modules/@next/env": { @@ -8706,9 +8063,9 @@ } }, "node_modules/@next/mdx": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-13.5.6.tgz", - "integrity": "sha512-2AMyCrz1SxSWNUpADyLz3RbPbq0GHrchbO7Msvg7IsH8MrTw3VYaZSI1KNa6JzZIoykwtNVSEL+uBmPZi106Jw==", + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@next/mdx/-/mdx-14.1.4.tgz", + "integrity": "sha512-FyuDXPTEmuIqtj/AxaKLvwiEZb6hDviq6Ywn8ZlsZOlvYSWpcZGuQrYrDulrdIm/I48hHXANor7EiJzTbVig8Q==", "dependencies": { "source-map": "^0.7.0" }, @@ -9288,8 +8645,9 @@ } }, "node_modules/@polka/url": { - "version": "1.0.0-next.23", - "license": "MIT" + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==" }, "node_modules/@popperjs/core": { "version": "2.11.8", @@ -11138,36 +10496,68 @@ "version": "1.0.0", "license": "MIT" }, - "node_modules/@sentry-internal/tracing": { - "version": "7.77.0", - "license": "MIT", + "node_modules/@sentry-internal/feedback": { + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.108.0.tgz", + "integrity": "sha512-8JcgZEnk1uWrXJhsd3iRvFtEiVeaWOEhN0NZwhwQXHfvODqep6JtrkY1yCIyxbpA37aZmrPc2JhyotRERGfUjg==", "dependencies": { - "@sentry/core": "7.77.0", - "@sentry/types": "7.77.0", - "@sentry/utils": "7.77.0" + "@sentry/core": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sentry-internal/replay-canvas": { + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.108.0.tgz", + "integrity": "sha512-R5tvjGqWUV5vSk0N1eBgVW7wIADinrkfDEBZ9FyKP2mXHBobsyNGt30heJDEqYmVqluRqjU2NuIRapsnnrpGnA==", + "dependencies": { + "@sentry/core": "7.108.0", + "@sentry/replay": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sentry-internal/tracing": { + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.108.0.tgz", + "integrity": "sha512-zuK5XsTsb+U+hgn3SPetYDAogrXsM16U/LLoMW7+TlC6UjlHGYQvmX3o+M2vntejoU1QZS8m1bCAZSMWEypAEw==", + "dependencies": { + "@sentry/core": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.77.0", - "license": "MIT", + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.108.0.tgz", + "integrity": "sha512-FNpzsdTvGvdHJMUelqEouUXMZU7jC+dpN7CdT6IoHVVFEkoAgrjMVUhXZoQ/dmCkdKWHmFSQhJ8Fm6V+e9Aq0A==", "dependencies": { - "@sentry-internal/tracing": "7.77.0", - "@sentry/core": "7.77.0", - "@sentry/replay": "7.77.0", - "@sentry/types": "7.77.0", - "@sentry/utils": "7.77.0" + "@sentry-internal/feedback": "7.108.0", + "@sentry-internal/replay-canvas": "7.108.0", + "@sentry-internal/tracing": "7.108.0", + "@sentry/core": "7.108.0", + "@sentry/replay": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/cli": { - "version": "1.75.2", + "version": "1.77.3", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-1.77.3.tgz", + "integrity": "sha512-c3eDqcDRmy4TFz2bFU5Y6QatlpoBPPa8cxBooaS4aMQpnIdLYPF1xhyyiW0LQlDUNc3rRjNF7oN5qKoaRoMTQQ==", "hasInstallScript": true, - "license": "BSD-3-Clause", "dependencies": { "https-proxy-agent": "^5.0.0", "mkdirp": "^0.5.5", @@ -11185,7 +10575,8 @@ }, "node_modules/@sentry/cli/node_modules/mkdirp": { "version": "0.5.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { "minimist": "^1.2.6" }, @@ -11194,23 +10585,25 @@ } }, "node_modules/@sentry/core": { - "version": "7.77.0", - "license": "MIT", + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.108.0.tgz", + "integrity": "sha512-I/VNZCFgLASxHZaD0EtxZRM34WG9w2gozqgrKGNMzAymwmQ3K9g/1qmBy4e6iS3YRptb7J5UhQkZQHrcwBbjWQ==", "dependencies": { - "@sentry/types": "7.77.0", - "@sentry/utils": "7.77.0" + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/integrations": { - "version": "7.77.0", - "license": "MIT", + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.108.0.tgz", + "integrity": "sha512-b/WbK1f3x2rQ4aJJSA4VSwpBXrXFm1Nzrca3Y9qW0MI1wjZEYsDDrh9m6ulLdVBl4YDc2VqYp1COwU/NjuHlog==", "dependencies": { - "@sentry/core": "7.77.0", - "@sentry/types": "7.77.0", - "@sentry/utils": "7.77.0", + "@sentry/core": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0", "localforage": "^1.8.1" }, "engines": { @@ -11218,18 +10611,19 @@ } }, "node_modules/@sentry/nextjs": { - "version": "7.77.0", - "license": "MIT", + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/nextjs/-/nextjs-7.108.0.tgz", + "integrity": "sha512-etBrMSLRbNAzozetBeL6D+lR9lRAyHmV7NUBGCX9lQvgmcdxkQa15EX8pIKjsMejZ8xAZNsqYVIByIs67A77rg==", "dependencies": { "@rollup/plugin-commonjs": "24.0.0", - "@sentry/core": "7.77.0", - "@sentry/integrations": "7.77.0", - "@sentry/node": "7.77.0", - "@sentry/react": "7.77.0", - "@sentry/types": "7.77.0", - "@sentry/utils": "7.77.0", - "@sentry/vercel-edge": "7.77.0", - "@sentry/webpack-plugin": "1.20.0", + "@sentry/core": "7.108.0", + "@sentry/integrations": "7.108.0", + "@sentry/node": "7.108.0", + "@sentry/react": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0", + "@sentry/vercel-edge": "7.108.0", + "@sentry/webpack-plugin": "1.21.0", "chalk": "3.0.0", "resolve": "1.22.8", "rollup": "2.78.0", @@ -11291,26 +10685,28 @@ } }, "node_modules/@sentry/node": { - "version": "7.77.0", - "license": "MIT", + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.108.0.tgz", + "integrity": "sha512-pMxc9txnDDkU4Z8k2Uw/DPSLPehNtWV3mjJ3+my0AMORGYrXLkJI93tddlE5z/7k+GEJdj1HsOLgxUN0OU+HGA==", "dependencies": { - "@sentry-internal/tracing": "7.77.0", - "@sentry/core": "7.77.0", - "@sentry/types": "7.77.0", - "@sentry/utils": "7.77.0", - "https-proxy-agent": "^5.0.0" + "@sentry-internal/tracing": "7.108.0", + "@sentry/core": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/react": { - "version": "7.77.0", - "license": "MIT", + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.108.0.tgz", + "integrity": "sha512-C60arh5/gtO42eMU9l34aWlKDLZUO+1j1goaEf/XRSwUcyJS9tbJrs+mT4nbKxUsEG714It2gRbfSEvh1eXmCg==", "dependencies": { - "@sentry/browser": "7.77.0", - "@sentry/types": "7.77.0", - "@sentry/utils": "7.77.0", + "@sentry/browser": "7.108.0", + "@sentry/core": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -11321,52 +10717,58 @@ } }, "node_modules/@sentry/replay": { - "version": "7.77.0", - "license": "MIT", + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.108.0.tgz", + "integrity": "sha512-jo8fDOzcZJclP1+4n9jUtVxTlBFT9hXwxhAMrhrt70FV/nfmCtYQMD3bzIj79nwbhUtFP6pN39JH1o7Xqt1hxQ==", "dependencies": { - "@sentry-internal/tracing": "7.77.0", - "@sentry/core": "7.77.0", - "@sentry/types": "7.77.0", - "@sentry/utils": "7.77.0" + "@sentry-internal/tracing": "7.108.0", + "@sentry/core": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/types": { - "version": "7.77.0", - "license": "MIT", + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.108.0.tgz", + "integrity": "sha512-bKtHITmBN3kqtqE5eVvL8mY8znM05vEodENwRpcm6TSrrBjC2RnwNWVwGstYDdHpNfFuKwC8mLY9bgMJcENo8g==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.77.0", - "license": "MIT", + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.108.0.tgz", + "integrity": "sha512-a45yEFD5qtgZaIFRAcFkG8C8lnDzn6t4LfLXuV4OafGAy/3ZAN3XN8wDnrruHkiUezSSANGsLg3bXaLW/JLvJw==", "dependencies": { - "@sentry/types": "7.77.0" + "@sentry/types": "7.108.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/vercel-edge": { - "version": "7.77.0", - "license": "MIT", + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/vercel-edge/-/vercel-edge-7.108.0.tgz", + "integrity": "sha512-dUuUEswaVIzsJnzTfaJxrvkfOowrlJxxHo2AybPDym2rob7CdaLdDJIYJa83X7QeAKMkTgLny/gYSQYC0E4UyA==", "dependencies": { - "@sentry/core": "7.77.0", - "@sentry/types": "7.77.0", - "@sentry/utils": "7.77.0" + "@sentry-internal/tracing": "7.108.0", + "@sentry/core": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/webpack-plugin": { - "version": "1.20.0", - "license": "MIT", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-1.21.0.tgz", + "integrity": "sha512-x0PYIMWcsTauqxgl7vWUY6sANl+XGKtx7DCVnnY7aOIIlIna0jChTAPANTfA2QrK+VK+4I/4JxatCEZBnXh3Og==", "dependencies": { - "@sentry/cli": "^1.74.6", + "@sentry/cli": "^1.77.1", "webpack-sources": "^2.0.0 || ^3.0.0" }, "engines": { @@ -23039,7 +22441,8 @@ }, "node_modules/duplexer": { "version": "0.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, "node_modules/duplexify": { "version": "3.7.1", @@ -25955,7 +25358,8 @@ }, "node_modules/gzip-size": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", "dependencies": { "duplexer": "^0.1.2" }, @@ -26948,7 +26352,6 @@ }, "node_modules/html-escaper": { "version": "2.0.2", - "dev": true, "license": "MIT" }, "node_modules/html-minifier-terser": { @@ -27191,7 +26594,8 @@ }, "node_modules/immediate": { "version": "3.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, "node_modules/immutability-helper": { "version": "3.1.1", @@ -27777,7 +27181,6 @@ }, "node_modules/is-plain-object": { "version": "5.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -30340,7 +29743,8 @@ }, "node_modules/lie": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", "dependencies": { "immediate": "~3.0.5" } @@ -30441,7 +29845,8 @@ }, "node_modules/localforage": { "version": "1.10.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", "dependencies": { "lie": "3.1.1" } @@ -35158,8 +34563,9 @@ } }, "node_modules/mrmime": { - "version": "1.0.1", - "license": "MIT", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "engines": { "node": ">=10" } @@ -35337,18 +34743,18 @@ } }, "node_modules/next-themes": { - "version": "0.2.1", - "license": "MIT", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz", + "integrity": "sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==", "peerDependencies": { - "next": "*", - "react": "*", - "react-dom": "*" + "react": "^16.8 || ^17 || ^18", + "react-dom": "^16.8 || ^17 || ^18" } }, "node_modules/nextjs-node-loader": { - "version": "1.1.5-alpha.0", - "resolved": "https://registry.npmjs.org/nextjs-node-loader/-/nextjs-node-loader-1.1.5-alpha.0.tgz", - "integrity": "sha512-EaY047JUWPlD2pOwRdcYPeyJrUTOfNOGcLyPaiped1bFHvHGIAN8596IbFAM4vwaOMpICodC1mEoOXTKvtcrCA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/nextjs-node-loader/-/nextjs-node-loader-1.1.5.tgz", + "integrity": "sha512-tS2wWPh8QsQHBVNG8w7xzL3ua+OFnmFvcOFxrAQsfK4T017nOiCUrybVWVieilEn1z8CqODcRw1z70mFRPQi1Q==", "dev": true, "dependencies": { "loader-utils": "^2.0.3" @@ -36677,7 +36083,8 @@ }, "node_modules/opener": { "version": "1.5.2", - "license": "(WTFPL OR MIT)", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "bin": { "opener": "bin/opener-bin.js" } @@ -41934,12 +41341,13 @@ } }, "node_modules/sirv": { - "version": "1.0.19", - "license": "MIT", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^1.0.0" + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" }, "engines": { "node": ">= 10" @@ -44130,8 +43538,9 @@ "license": "MIT" }, "node_modules/totalist": { - "version": "1.1.0", - "license": "MIT", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "engines": { "node": ">=6" } @@ -45896,17 +45305,22 @@ } }, "node_modules/webpack-bundle-analyzer": { - "version": "4.7.0", - "license": "MIT", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz", + "integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==", "dependencies": { + "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", "commander": "^7.2.0", + "debounce": "^1.2.1", + "escape-string-regexp": "^4.0.0", "gzip-size": "^6.0.0", - "lodash": "^4.17.20", + "html-escaper": "^2.0.2", + "is-plain-object": "^5.0.0", "opener": "^1.5.2", - "sirv": "^1.0.7", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", "ws": "^7.3.1" }, "bin": { @@ -45916,53 +45330,21 @@ "node": ">= 10.13.0" } }, - "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/webpack-bundle-analyzer/node_modules/ws": { "version": "7.5.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "engines": { "node": ">=8.3.0" }, @@ -46723,7 +46105,7 @@ "config": "*", "dat.gui": "^0.7.9", "lodash": "^4.17.21", - "next-themes": "^0.2.1", + "next-themes": "^0.3.0", "react-hot-toast": "^2.4.1", "react-use": "^17.4.0" }, @@ -46969,7 +46351,7 @@ "formik": "^2.2.9", "lodash": "^4.17.21", "lucide-react": "^0.338.0", - "next-themes": "^0.2.1", + "next-themes": "^0.3.0", "openai": "^4.17.0", "postcss": "^8.4.31", "prop-types": "^15.7.2", diff --git a/packages/common/package.json b/packages/common/package.json index 2c8ff686c4c..9801fec4574 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -12,7 +12,7 @@ "config": "*", "dat.gui": "^0.7.9", "lodash": "^4.17.21", - "next-themes": "^0.2.1", + "next-themes": "^0.3.0", "react-hot-toast": "^2.4.1", "react-use": "^17.4.0" }, diff --git a/packages/ui/package.json b/packages/ui/package.json index f43c246d82b..d26eb39e465 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -60,7 +60,7 @@ "formik": "^2.2.9", "lodash": "^4.17.21", "lucide-react": "^0.338.0", - "next-themes": "^0.2.1", + "next-themes": "^0.3.0", "openai": "^4.17.0", "postcss": "^8.4.31", "prop-types": "^15.7.2", From a2e880f675437e968f1e57e75b74a6810ff7db06 Mon Sep 17 00:00:00 2001 From: Alaister Young Date: Thu, 28 Mar 2024 16:13:15 +0700 Subject: [PATCH 03/97] chore(vercel-integration): add supabase jwt secret env var (#22207) --- .../interfaces/Integrations/Integrations-Vercel.constants.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/studio/components/interfaces/Integrations/Integrations-Vercel.constants.ts b/apps/studio/components/interfaces/Integrations/Integrations-Vercel.constants.ts index f41d20f9616..21ef731872d 100644 --- a/apps/studio/components/interfaces/Integrations/Integrations-Vercel.constants.ts +++ b/apps/studio/components/interfaces/Integrations/Integrations-Vercel.constants.ts @@ -39,6 +39,10 @@ const ENV_VAR_KEYS = { key: 'SUPABASE_SERVICE_ROLE_KEY', type: 'encrypted', }, + SUPABASE_JWT_SECRET: { + key: 'SUPABASE_JWT_SECRET', + type: 'encrypted', + }, NEXT_PUBLIC_SUPABASE_ANON_KEY: { key: 'NEXT_PUBLIC_SUPABASE_ANON_KEY', type: 'encrypted', From eeabbca813e9cd21376190d9282f1fc4a1ca9b10 Mon Sep 17 00:00:00 2001 From: Beng Eu Date: Thu, 28 Mar 2024 17:36:04 +0800 Subject: [PATCH 04/97] fix: tweak pooling optimization defaults to match backend (#22278) Co-authored-by: Alaister Young --- .../Database/ConnectionPooling/ConnectionPooling.constants.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/studio/components/interfaces/Settings/Database/ConnectionPooling/ConnectionPooling.constants.ts b/apps/studio/components/interfaces/Settings/Database/ConnectionPooling/ConnectionPooling.constants.ts index 3d7f7ea2653..0c526a04bb3 100644 --- a/apps/studio/components/interfaces/Settings/Database/ConnectionPooling/ConnectionPooling.constants.ts +++ b/apps/studio/components/interfaces/Settings/Database/ConnectionPooling/ConnectionPooling.constants.ts @@ -3,8 +3,8 @@ export const POOLING_OPTIMIZATIONS = { ci_nano: { - maxClientConn: 100, - poolSize: 10, + maxClientConn: 200, + poolSize: 15, }, ci_micro: { maxClientConn: 200, From bd3807c3563025007f67d721bdb3b9774caf7660 Mon Sep 17 00:00:00 2001 From: Alaister Young Date: Thu, 28 Mar 2024 16:44:41 +0700 Subject: [PATCH 05/97] feat: reset preview branches (#22210) --- .../BranchManagement/BranchPanels.tsx | 57 +++++++++++++++++-- .../data/branches/branch-reset-mutation.ts | 51 +++++++++++++++++ 2 files changed, 103 insertions(+), 5 deletions(-) create mode 100644 apps/studio/data/branches/branch-reset-mutation.ts diff --git a/apps/studio/components/interfaces/BranchManagement/BranchPanels.tsx b/apps/studio/components/interfaces/BranchManagement/BranchPanels.tsx index 2f8471df8b7..3f0823ad92a 100644 --- a/apps/studio/components/interfaces/BranchManagement/BranchPanels.tsx +++ b/apps/studio/components/interfaces/BranchManagement/BranchPanels.tsx @@ -1,12 +1,14 @@ import { useParams } from 'common' import dayjs from 'dayjs' -import { GitPullRequest } from 'lucide-react' +import { GitPullRequest, RefreshCw, Trash2 } from 'lucide-react' import Link from 'next/link' -import { PropsWithChildren, ReactNode } from 'react' +import { PropsWithChildren, ReactNode, useState } from 'react' +import toast from 'react-hot-toast' import { useInView } from 'react-intersection-observer' import ShimmeringLoader from 'components/ui/ShimmeringLoader' import { useBranchQuery } from 'data/branches/branch-query' +import { useBranchResetMutation } from 'data/branches/branch-reset-mutation' import type { Branch } from 'data/branches/branches-query' import { Badge, @@ -19,8 +21,9 @@ import { IconExternalLink, IconMoreVertical, IconShield, - IconTrash, + Modal, } from 'ui' +import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal' import BranchStatusBadge from './BranchStatusBadge' interface BranchManagementSectionProps { @@ -111,6 +114,23 @@ export const BranchRow = ({ } ) + const [showConfirmResetModal, setShowConfirmResetModal] = useState(false) + + const { mutate, isLoading: isResetting } = useBranchResetMutation({ + onSuccess() { + toast.success('Success! Please allow a few seconds for the branch to reset.') + setShowConfirmResetModal(false) + }, + }) + + function onConfirmReset() { + if (!projectRef) { + throw new Error('Invalid project reference') + } + + mutate({ id: branch.id, projectRef }) + } + return (
@@ -204,16 +224,43 @@ export const BranchRow = ({
)}
diff --git a/apps/studio/data/branches/branch-reset-mutation.ts b/apps/studio/data/branches/branch-reset-mutation.ts new file mode 100644 index 00000000000..9637e3347da --- /dev/null +++ b/apps/studio/data/branches/branch-reset-mutation.ts @@ -0,0 +1,51 @@ +import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react-query' +import { toast } from 'react-hot-toast' + +import { post } from 'data/fetchers' +import type { ResponseError } from 'types' +import { branchKeys } from './keys' + +export type BranchResetVariables = { + id: string + projectRef: string +} + +export async function resetBranch({ id }: Pick) { + const { data, error } = await post('/v1/branches/{branch_id}/reset', { + params: { path: { branch_id: id } }, + }) + + if (error) throw error + return data +} + +type BranchResetData = Awaited> + +export const useBranchResetMutation = ({ + onSuccess, + onError, + ...options +}: Omit< + UseMutationOptions, + 'mutationFn' +> = {}) => { + const queryClient = useQueryClient() + return useMutation( + (vars) => resetBranch(vars), + { + async onSuccess(data, variables, context) { + const { projectRef } = variables + await queryClient.invalidateQueries(branchKeys.list(projectRef)) + await onSuccess?.(data, variables, context) + }, + async onError(data, variables, context) { + if (onError === undefined) { + toast.error(`Failed to reset branch: ${data.message}`) + } else { + onError(data, variables, context) + } + }, + ...options, + } + ) +} From 3aba64b5a3b324717e4ed6609a57aec9c51f22cc Mon Sep 17 00:00:00 2001 From: Francesco Sansalvadore Date: Thu, 28 Mar 2024 12:49:28 +0100 Subject: [PATCH 06/97] update favicon ico mime type (#22295) --- packages/common/MetaFavicons/pages-router.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/common/MetaFavicons/pages-router.tsx b/packages/common/MetaFavicons/pages-router.tsx index 27bbf65dbe1..820b98fb9b9 100644 --- a/packages/common/MetaFavicons/pages-router.tsx +++ b/packages/common/MetaFavicons/pages-router.tsx @@ -69,7 +69,7 @@ const MetaFaviconsPagesRouter = ({ - + {includeRssXmlFeed && ( From 0e92e3c8c38fcb1bf947f8d81d2b3f81a7b7a0e5 Mon Sep 17 00:00:00 2001 From: Francesco Sansalvadore Date: Thu, 28 Mar 2024 13:52:56 +0100 Subject: [PATCH 07/97] fix favicon (#22315) fix favicons --- apps/docs/public/favicon/favicon-180x180.png | Bin 0 -> 2481 bytes apps/docs/public/favicon/favicon-48x48.png | Bin 0 -> 4769 bytes apps/docs/public/favicon/manifest.json | 12 ++++----- .../studio/public/favicon/favicon-180x180.png | Bin 0 -> 2472 bytes apps/studio/public/favicon/favicon-48x48.png | Bin 0 -> 4927 bytes apps/studio/public/favicon/manifest.json | 12 ++++----- apps/www/public/favicon/favicon-180x180.png | Bin 0 -> 2472 bytes apps/www/public/favicon/favicon-48x48.png | Bin 0 -> 4927 bytes apps/www/public/favicon/manifest.json | 12 ++++----- packages/common/MetaFavicons/pages-router.tsx | 25 +++++++++++------- 10 files changed, 33 insertions(+), 28 deletions(-) create mode 100644 apps/docs/public/favicon/favicon-180x180.png create mode 100644 apps/docs/public/favicon/favicon-48x48.png create mode 100644 apps/studio/public/favicon/favicon-180x180.png create mode 100644 apps/studio/public/favicon/favicon-48x48.png create mode 100644 apps/www/public/favicon/favicon-180x180.png create mode 100644 apps/www/public/favicon/favicon-48x48.png diff --git a/apps/docs/public/favicon/favicon-180x180.png b/apps/docs/public/favicon/favicon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..3cf7f1132c8f32cda97ee0dbeaa9e8039ea2dd3c GIT binary patch literal 2481 zcma);c{JNuAI76vwYH4plIyHD^zOO-&sh9)9`qg~#Ku+3dEqwuy;}@$vEf z{r%(PzV7aBI-Sm7FuJfm%I+T@_VK7*8b2EuVYHVz*tE($7FUMlBa5!8|O|7)F)YsS7)6MT7#$s*jEoFC z9{)BO{a37tan4v5(D8d|ewqZ&YHf+b>TGR#lIiDUr=k&p(saz!+ysF{%Ol$JYTu=bYqhR311#(|F&Mbn+tF#lcSP(x<_|ki9PcW~o8Q z5NvbS%*&vIrfY1WyL8$p>rS|TV&r$X-?L5ADM*)vL95hb&{RfmZmy$b9ynfg2x}6t zINDbx+oBmUaY7IYSAW70M*bnP`FWlx+V}%H_^bOrQ1z^CFX;clDF69FxZVjABo{dQ z0&Q{CG4rYWP#v_{L`SxFWH_oJrBl#|71Q4)L1x|j8|4t`7_sMvQ3jf1PAZ1+&F)%zo>8Rx8ac~=XhXJ)yD!E(G_$MhWOL{Fg zzXn9`M^n&7qUuP>pQTF91ayDzsBRE&+WxM{GBWu#vF7kvDw>ls0*Wmc@r00zU}$mYPeCKU`NA zQ_rr=u6>ZOI1+AD_X;fok^vq^(q{`~ru!^K)r+H|TAnf)49>p8)s!;3@ZKv0WOk3; z;vznb>yNwK*xB@Qb(7!0Ep{}_KW$c9fApFi25C!bo`~8gTCtda9dZxnxGnB&+!LO7 z@6Cv`EVWuXnD#60z604n;kBprmf`f&xzM%P1e=xz!4uX7nbDLmcP)7OV7#7Y@?5+` zuvF9%JGy2-IahE5;~(9aSH0j{Kz~xbK~5$(^YE(T+fWa-+D`v(6%_Xk)Rs-1={Kdg zZ(FK|zY{g?dL#<*@;z{<^ueJG3dV>RpmsQkHyuOz z*gA9G%W!Mut1Yaxp(bapnB6J!vK+mSmo7oh$cxZIeT$jSq^f-0_251^q3(2aroJ$X z-0r6V6_@n+RU_}6;}t+=J&((JXfQYL#wy8olaOp%#V0Dp6oKG5JRc?IWwK|d=stqG zTt;jc5utVPN^SiV&eDRfJ(6Gn%VpA0XL^4Y+z$z$$L4uS5Y0c*g0SWT>&a7lakRw# zgjyETuAGAKbZ|!nL(Ezu2=N)-^ z`RBC};AAvPjP<+BTOrQtVP=?+kk*QqoEOsXmmci*PuQy+F6L(Va$As;SzF}4lb=tem2HjG(N?5@Sph8y8EON;VM{vG~$qV=!T#1JzD78OG5r^TApKReE$& z4Gh@>DWS@o)gqWA*7V#@&+AofRBQ&2q-1;ByED8WKT4x0h+y|yKm<;=P14^&m968s z6ToJ*a}`gGA)77mG;iRDA;XH9g(zoDcNK|KD{yb98oPCfpKK%`IZeY{zuK9n7_v*y zbogG%a*PEe<@TlQ6kzM_*uvmqYS^V5uv)LvI&kTxZ9KZhhL-fNB86o9(9z@#xueiM zM9V98On|Pe4R<`Bl~*GtVt|R;Y~7L9&*hTRdITj}Qnx>f;3}4z1S#Bt+};g>`itG% zzV!!V-cmgVbX}Cv3Vq%4;s}qBr@rzSv)mP`mbOXV1U?4D6e)q+ACN1?x(Y}e)gq0V za4%Cru_@SJ0t0s!Q|tX)->00Wt;()US$t%c*!Hwr;2LY()`2J+pAq+9q1ct5iSIe0 z=aZ9X4S%ws#8EwJ$6Sc4KsHGEO26`l;AY@QhqMnTy+zOw+g-NLyT37#Q@t4@tWoi> za`O#XqXPYu(ok!=w377c{=ogB=Skh!1HIiVNl#dM_T$2M&239VyN{IoILivmGP26m zQtbNjLVKL$9cIYHCn@`ru!FeW?6QhaFz6c3j{krI!{8KQn3_#f{)y7gAbF&us#EZb O0AXyfs0M`pz5fEg=dTO^ literal 0 HcmV?d00001 diff --git a/apps/docs/public/favicon/favicon-48x48.png b/apps/docs/public/favicon/favicon-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..40377a51b54a7a27eeca15f66335f59b370e8085 GIT binary patch literal 4769 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 Rp8t6eu){i9)nWo}{so)%d%*wz literal 0 HcmV?d00001 diff --git a/apps/studio/public/favicon/favicon-48x48.png b/apps/studio/public/favicon/favicon-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..eb6a7ec729abac9814ce50320a2ca5f8aff6d2ae GIT binary patch literal 4927 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 AT>t<8 literal 0 HcmV?d00001 diff --git a/apps/studio/public/favicon/manifest.json b/apps/studio/public/favicon/manifest.json index 3a90d23e45e..4efcf18e2ec 100644 --- a/apps/studio/public/favicon/manifest.json +++ b/apps/studio/public/favicon/manifest.json @@ -7,37 +7,37 @@ "background_color": "#1C1C1C", "icons": [ { - "src": "/android-icon-36x36.png", + "src": "/favicon/android-icon-36x36.png", "sizes": "36x36", "type": "image/png", "density": "0.75" }, { - "src": "/android-icon-48x48.png", + "src": "/favicon/android-icon-48x48.png", "sizes": "48x48", "type": "image/png", "density": "1.0" }, { - "src": "/android-icon-72x72.png", + "src": "/favicon/android-icon-72x72.png", "sizes": "72x72", "type": "image/png", "density": "1.5" }, { - "src": "/android-icon-96x96.png", + "src": "/favicon/android-icon-96x96.png", "sizes": "96x96", "type": "image/png", "density": "2.0" }, { - "src": "/android-icon-144x144.png", + "src": "/favicon/android-icon-144x144.png", "sizes": "144x144", "type": "image/png", "density": "3.0" }, { - "src": "/android-icon-192x192.png", + "src": "/favicon/android-icon-192x192.png", "sizes": "192x192", "type": "image/png", "density": "4.0" diff --git a/apps/www/public/favicon/favicon-180x180.png b/apps/www/public/favicon/favicon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..456f3c7dd9d662a2bfc21f388b255855c557d253 GIT binary patch literal 2472 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 Rp8t6eu){i9)nWo}{so)%d%*wz literal 0 HcmV?d00001 diff --git a/apps/www/public/favicon/favicon-48x48.png b/apps/www/public/favicon/favicon-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..eb6a7ec729abac9814ce50320a2ca5f8aff6d2ae GIT binary patch literal 4927 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 AT>t<8 literal 0 HcmV?d00001 diff --git a/apps/www/public/favicon/manifest.json b/apps/www/public/favicon/manifest.json index 3a90d23e45e..4efcf18e2ec 100644 --- a/apps/www/public/favicon/manifest.json +++ b/apps/www/public/favicon/manifest.json @@ -7,37 +7,37 @@ "background_color": "#1C1C1C", "icons": [ { - "src": "/android-icon-36x36.png", + "src": "/favicon/android-icon-36x36.png", "sizes": "36x36", "type": "image/png", "density": "0.75" }, { - "src": "/android-icon-48x48.png", + "src": "/favicon/android-icon-48x48.png", "sizes": "48x48", "type": "image/png", "density": "1.0" }, { - "src": "/android-icon-72x72.png", + "src": "/favicon/android-icon-72x72.png", "sizes": "72x72", "type": "image/png", "density": "1.5" }, { - "src": "/android-icon-96x96.png", + "src": "/favicon/android-icon-96x96.png", "sizes": "96x96", "type": "image/png", "density": "2.0" }, { - "src": "/android-icon-144x144.png", + "src": "/favicon/android-icon-144x144.png", "sizes": "144x144", "type": "image/png", "density": "3.0" }, { - "src": "/android-icon-192x192.png", + "src": "/favicon/android-icon-192x192.png", "sizes": "192x192", "type": "image/png", "density": "4.0" diff --git a/packages/common/MetaFavicons/pages-router.tsx b/packages/common/MetaFavicons/pages-router.tsx index 820b98fb9b9..a2e5f157fa5 100644 --- a/packages/common/MetaFavicons/pages-router.tsx +++ b/packages/common/MetaFavicons/pages-router.tsx @@ -31,29 +31,34 @@ const MetaFaviconsPagesRouter = ({ {/* prettier-ignore */} {/* prettier-ignore */} - + {/* prettier-ignore */} {/* prettier-ignore */} - + {/* prettier-ignore */} - + {/* prettier-ignore */} {/* prettier-ignore */} - + {/* prettier-ignore */} {/* prettier-ignore */} - - {/* prettier-ignore */} - - {/* prettier-ignore */} - + {/* prettier-ignore */} {/* prettier-ignore */} - + + {/* prettier-ignore */} + + {/* prettier-ignore */} + + {/* prettier-ignore */} + + {/* prettier-ignore */} + + {/* prettier-ignore */} {/* prettier-ignore */} From 5f11d81630ef21cf93349742d5388ea94bff823f Mon Sep 17 00:00:00 2001 From: Han Qiao Date: Thu, 28 Mar 2024 21:17:16 +0800 Subject: [PATCH 08/97] chore: create .env.example for bootstrap nextjs (#22309) --- .../nextjs-slack-clone/{.env.local.example => .env.example} | 2 +- examples/slack-clone/nextjs-slack-clone/README.md | 4 ++-- examples/user-management/nextjs-user-management/.env.example | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) rename examples/slack-clone/nextjs-slack-clone/{.env.local.example => .env.example} (77%) create mode 100644 examples/user-management/nextjs-user-management/.env.example diff --git a/examples/slack-clone/nextjs-slack-clone/.env.local.example b/examples/slack-clone/nextjs-slack-clone/.env.example similarity index 77% rename from examples/slack-clone/nextjs-slack-clone/.env.local.example rename to examples/slack-clone/nextjs-slack-clone/.env.example index 297256db311..e3a1289f58d 100644 --- a/examples/slack-clone/nextjs-slack-clone/.env.local.example +++ b/examples/slack-clone/nextjs-slack-clone/.env.example @@ -1,4 +1,4 @@ # Get these from your API settings: https://supabase.com/dashboard/project/_/settings/api NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co -NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key \ No newline at end of file +NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key diff --git a/examples/slack-clone/nextjs-slack-clone/README.md b/examples/slack-clone/nextjs-slack-clone/README.md index 183701a7358..a29ae341eb3 100644 --- a/examples/slack-clone/nextjs-slack-clone/README.md +++ b/examples/slack-clone/nextjs-slack-clone/README.md @@ -61,10 +61,10 @@ Simply clone this repo locally and proceed to the next section. ### Required configuration -Copy the `.env.local.example` file into a file named `.env.local` in the root directory of the example: +Copy the `.env.example` file into a file named `.env.local` in the root directory of the example: ```bash -cp .env.local.example .env.local +cp .env.example .env.local ``` Set your Supabase details from [step 3](#3-get-the-url-and-key) above: diff --git a/examples/user-management/nextjs-user-management/.env.example b/examples/user-management/nextjs-user-management/.env.example new file mode 100644 index 00000000000..e3a1289f58d --- /dev/null +++ b/examples/user-management/nextjs-user-management/.env.example @@ -0,0 +1,4 @@ +# Get these from your API settings: https://supabase.com/dashboard/project/_/settings/api + +NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co +NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key From 689b7d1fe6fd325b7bfaec5162cff2dbfd83bef5 Mon Sep 17 00:00:00 2001 From: Ivan Vasilov Date: Thu, 28 Mar 2024 15:21:57 +0100 Subject: [PATCH 09/97] fix: Switch to white icon for vercel when in dark mode (#22316) * Fix the vercel icons to follow the black/white color scheme. * Remove unused CSS classes. --- .../interfaces/Home/ProjectList/ProjectCard.tsx | 11 ++++++----- .../VercelIntegrationWindowLayout.tsx | 5 +++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/apps/studio/components/interfaces/Home/ProjectList/ProjectCard.tsx b/apps/studio/components/interfaces/Home/ProjectList/ProjectCard.tsx index bfc8edc5481..7834f039f58 100644 --- a/apps/studio/components/interfaces/Home/ProjectList/ProjectCard.tsx +++ b/apps/studio/components/interfaces/Home/ProjectList/ProjectCard.tsx @@ -5,6 +5,7 @@ import type { IntegrationProjectConnection } from 'data/integrations/integration import type { ProjectInfo } from 'data/projects/projects-query' import type { ResourceWarning } from 'data/usage/resource-warnings-query' import { BASE_PATH } from 'lib/constants' +import InlineSVG from 'react-inlinesvg' import { inferProjectStatus } from './ProjectCard.utils' import { ProjectCardStatus } from './ProjectCardStatus' @@ -43,22 +44,22 @@ const ProjectCard = ({ {desc}
{isVercelIntegrated && ( -
- +
)} {isBranchingEnabled && ( -
+
)} {isGithubIntegrated && ( <> -
+

{githubRepository}

diff --git a/apps/studio/components/layouts/IntegrationsLayout/VercelIntegrationWindowLayout.tsx b/apps/studio/components/layouts/IntegrationsLayout/VercelIntegrationWindowLayout.tsx index 53e287a291a..9f272918926 100644 --- a/apps/studio/components/layouts/IntegrationsLayout/VercelIntegrationWindowLayout.tsx +++ b/apps/studio/components/layouts/IntegrationsLayout/VercelIntegrationWindowLayout.tsx @@ -1,4 +1,5 @@ import { PropsWithChildren } from 'react' +import InlineSVG from 'react-inlinesvg' import { useParams } from 'common' import { BASE_PATH } from 'lib/constants' @@ -6,8 +7,8 @@ import IntegrationWindowLayout from './IntegrationWindowLayout' import { useIntegrationInstallationSnapshot } from 'state/integration-installation' const VERCEL_ICON = ( -
- Vercel Icon +
+
) From 91921ee7caa3ac6aac19cd4492bd09161ea96a2c Mon Sep 17 00:00:00 2001 From: Kang Ming Date: Fri, 29 Mar 2024 00:57:35 +0700 Subject: [PATCH 10/97] docs: update anonymous sign-ins guide (#22321) * fix: recommend restrictive policies * docs: fix incorrect link --- apps/docs/content/guides/auth/auth-anonymous.mdx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/apps/docs/content/guides/auth/auth-anonymous.mdx b/apps/docs/content/guides/auth/auth-anonymous.mdx index b4f902eae1f..acc247ce8f0 100644 --- a/apps/docs/content/guides/auth/auth-anonymous.mdx +++ b/apps/docs/content/guides/auth/auth-anonymous.mdx @@ -22,7 +22,7 @@ This is different from the `anon` API key which does not create a user and can b -To get started, [enable anonymous sign-ins](/dashboard/project/_/auth/providers) for your Supabase Project. +To get started, [enable anonymous sign-ins](/dashboard/project/_/settings/auth) for your Supabase Project. @@ -108,7 +108,7 @@ An anonymous user assumes the `authenticated` role just like a permanent user. Y ```sql create policy "Only permanent users can post to the news feed" -on news_feed for insert +on news_feed as restrictive for insert to authenticated with check ((auth.jwt()->>'is_anonymous')::boolean is false ); @@ -118,6 +118,12 @@ to authenticated using ( true ); ``` + + +RLS policies are permissive by default, which means that they are combined using an "OR" operator when multiple policies are applied. It is important to construct restrictive policies to ensure that the checks for an anonymous user are always enforced when combined with other policies. + + + ## Resolving identity conflicts Depending on your application requirements, data conflicts can arise when an anonymous user is converted to a permanent user. For example, in the context of an e-commerce application, an anonymous user would be allowed to add items to the shopping cart without signing up / signing in. When they decide to sign-in to an existing account, you will need to decide how you want to resolve data conflicts in the shopping cart: From 0ff546a539262c35afad4292b0b31ecee7af46b0 Mon Sep 17 00:00:00 2001 From: Kang Ming Date: Fri, 29 Mar 2024 11:18:04 +0700 Subject: [PATCH 11/97] chore: bump supabase-js (#22312) * chore: bump supabase-js * more gotrue renames * chore: update types * chore: prettier * chore: typings --------- Co-authored-by: Alaister Young Co-authored-by: Bobbie Soedirgo --- apps/docs/package.json | 2 +- .../interfaces/SignIn/SignInMfaForm.tsx | 2 +- apps/studio/lib/gotrue.ts | 2 +- apps/studio/package.json | 2 +- apps/studio/types/base.ts | 2 +- apps/www/lib/database.types.ts | 163 +++++++++++++++++- apps/www/package.json | 2 +- apps/www/pages/launch-week/index.tsx | 2 +- .../pages/launch-week/tickets/[username].tsx | 2 +- package-lock.json | 59 ++++--- packages/common/gotrue.ts | 4 +- packages/common/package.json | 2 +- tests/package.json | 2 +- 13 files changed, 201 insertions(+), 45 deletions(-) diff --git a/apps/docs/package.json b/apps/docs/package.json index 39f5bcbc422..8151f248049 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -30,7 +30,7 @@ "@octokit/plugin-paginate-graphql": "^4.0.0", "@radix-ui/react-accordion": "^1.1.2", "@supabase/auth-helpers-react": "^0.4.2", - "@supabase/supabase-js": "^2.39.3", + "@supabase/supabase-js": "^2.41.1", "@tailwindcss/container-queries": "^0.1.1", "@tanstack/react-query": "^5.13.4", "common": "*", diff --git a/apps/studio/components/interfaces/SignIn/SignInMfaForm.tsx b/apps/studio/components/interfaces/SignIn/SignInMfaForm.tsx index 3dd480112ef..b50a163975f 100644 --- a/apps/studio/components/interfaces/SignIn/SignInMfaForm.tsx +++ b/apps/studio/components/interfaces/SignIn/SignInMfaForm.tsx @@ -1,4 +1,4 @@ -import type { AuthError } from '@supabase/gotrue-js' +import type { AuthError } from '@supabase/auth-js' import type { Factor } from '@supabase/supabase-js' import { useQueryClient } from '@tanstack/react-query' import Link from 'next/link' diff --git a/apps/studio/lib/gotrue.ts b/apps/studio/lib/gotrue.ts index 140cddcfe22..dc77fa3d5d0 100644 --- a/apps/studio/lib/gotrue.ts +++ b/apps/studio/lib/gotrue.ts @@ -1,4 +1,4 @@ -import type { Session, User } from '@supabase/gotrue-js' +import type { Session, User } from '@supabase/auth-js' import { gotrueClient } from 'common' export const auth = gotrueClient diff --git a/apps/studio/package.json b/apps/studio/package.json index 2b2e75b618b..980c82db361 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -33,7 +33,7 @@ "@stripe/stripe-js": "^3.0.5", "@supabase/auth-helpers-react": "^0.4.2", "@supabase/shared-types": "0.1.55", - "@supabase/supabase-js": "^2.39.3", + "@supabase/supabase-js": "^2.41.1", "@tanstack/react-query": "4.35.7", "@tanstack/react-query-devtools": "4.35.7", "@uidotdev/usehooks": "^2.4.1", diff --git a/apps/studio/types/base.ts b/apps/studio/types/base.ts index 373b42ace45..a9fff242444 100644 --- a/apps/studio/types/base.ts +++ b/apps/studio/types/base.ts @@ -88,7 +88,7 @@ export interface ResponseFailure { export type SupaResponse = T | ResponseFailure export interface ResponseError { - code?: number + code?: number | string message: string requestId?: string } diff --git a/apps/www/lib/database.types.ts b/apps/www/lib/database.types.ts index 2d2ff80377f..aa80d9bc84f 100644 --- a/apps/www/lib/database.types.ts +++ b/apps/www/lib/database.types.ts @@ -1,8 +1,62 @@ export type Json = string | number | boolean | null | { [key: string]: Json | undefined } | Json[] -export interface Database { +export type Database = { public: { Tables: { + dpa_downloads: { + Row: { + contact_email: string + created_at: string | null + document: string | null + id: number + updated_at: string | null + } + Insert: { + contact_email: string + created_at?: string | null + document?: string | null + id?: number + updated_at?: string | null + } + Update: { + contact_email?: string + created_at?: string | null + document?: string | null + id?: number + updated_at?: string | null + } + Relationships: [] + } + lwx_meetups: { + Row: { + created_at: string | null + display_info: string | null + id: number + isLive: boolean + link: string | null + start_at: string | null + title: string | null + } + Insert: { + created_at?: string | null + display_info?: string | null + id?: number + isLive?: boolean + link?: string | null + start_at?: string | null + title?: string | null + } + Update: { + created_at?: string | null + display_info?: string | null + id?: number + isLive?: boolean + link?: string | null + start_at?: string | null + title?: string | null + } + Relationships: [] + } partner_contacts: { Row: { company: string @@ -64,7 +118,7 @@ export interface Database { description: string developer: string docs: string | null - featured: boolean + featured: boolean | null id: number images: string[] | null logo: string @@ -85,7 +139,7 @@ export interface Database { description: string developer: string docs?: string | null - featured?: boolean + featured?: boolean | null id?: number images?: string[] | null logo: string @@ -106,7 +160,7 @@ export interface Database { description?: string developer?: string docs?: string | null - featured?: boolean + featured?: boolean | null id?: number images?: string[] | null logo?: string @@ -122,13 +176,38 @@ export interface Database { { foreignKeyName: 'partners_contact_fkey' columns: ['contact'] + isOneToOne: false referencedRelation: 'partner_contacts' referencedColumns: ['id'] }, ] } } - Views: {} + Views: { + lwx_tickets_golden: { + Row: { + createdAt: string | null + golden: boolean | null + id: string | null + metadata: Json | null + name: string | null + referrals: number | null + sharedOnLinkedIn: string | null + sharedOnTwitter: string | null + ticketNumber: number | null + username: string | null + } + Relationships: [ + { + foreignKeyName: 'lwx_tickets_id_fkey' + columns: ['id'] + isOneToOne: true + referencedRelation: 'users' + referencedColumns: ['id'] + }, + ] + } + } Functions: {} Enums: { partner_type: 'technology' | 'expert' @@ -138,3 +217,77 @@ export interface Database { } } } + +type PublicSchema = Database[Extract] + +export type Tables< + PublicTableNameOrOptions extends + | keyof (PublicSchema['Tables'] & PublicSchema['Views']) + | { schema: keyof Database }, + TableName extends PublicTableNameOrOptions extends { schema: keyof Database } + ? keyof (Database[PublicTableNameOrOptions['schema']]['Tables'] & + Database[PublicTableNameOrOptions['schema']]['Views']) + : never = never, +> = PublicTableNameOrOptions extends { schema: keyof Database } + ? (Database[PublicTableNameOrOptions['schema']]['Tables'] & + Database[PublicTableNameOrOptions['schema']]['Views'])[TableName] extends { + Row: infer R + } + ? R + : never + : PublicTableNameOrOptions extends keyof (PublicSchema['Tables'] & PublicSchema['Views']) + ? (PublicSchema['Tables'] & PublicSchema['Views'])[PublicTableNameOrOptions] extends { + Row: infer R + } + ? R + : never + : never + +export type TablesInsert< + PublicTableNameOrOptions extends keyof PublicSchema['Tables'] | { schema: keyof Database }, + TableName extends PublicTableNameOrOptions extends { schema: keyof Database } + ? keyof Database[PublicTableNameOrOptions['schema']]['Tables'] + : never = never, +> = PublicTableNameOrOptions extends { schema: keyof Database } + ? Database[PublicTableNameOrOptions['schema']]['Tables'][TableName] extends { + Insert: infer I + } + ? I + : never + : PublicTableNameOrOptions extends keyof PublicSchema['Tables'] + ? PublicSchema['Tables'][PublicTableNameOrOptions] extends { + Insert: infer I + } + ? I + : never + : never + +export type TablesUpdate< + PublicTableNameOrOptions extends keyof PublicSchema['Tables'] | { schema: keyof Database }, + TableName extends PublicTableNameOrOptions extends { schema: keyof Database } + ? keyof Database[PublicTableNameOrOptions['schema']]['Tables'] + : never = never, +> = PublicTableNameOrOptions extends { schema: keyof Database } + ? Database[PublicTableNameOrOptions['schema']]['Tables'][TableName] extends { + Update: infer U + } + ? U + : never + : PublicTableNameOrOptions extends keyof PublicSchema['Tables'] + ? PublicSchema['Tables'][PublicTableNameOrOptions] extends { + Update: infer U + } + ? U + : never + : never + +export type Enums< + PublicEnumNameOrOptions extends keyof PublicSchema['Enums'] | { schema: keyof Database }, + EnumName extends PublicEnumNameOrOptions extends { schema: keyof Database } + ? keyof Database[PublicEnumNameOrOptions['schema']]['Enums'] + : never = never, +> = PublicEnumNameOrOptions extends { schema: keyof Database } + ? Database[PublicEnumNameOrOptions['schema']]['Enums'][EnumName] + : PublicEnumNameOrOptions extends keyof PublicSchema['Enums'] + ? PublicSchema['Enums'][PublicEnumNameOrOptions] + : never diff --git a/apps/www/package.json b/apps/www/package.json index 7cd0a3e59c3..a12f8094357 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -26,7 +26,7 @@ "@react-three/fiber": "^7.0.29", "@supabase/auth-helpers-react": "^0.4.2", "@supabase/auth-ui-react": "^0.4.5", - "@supabase/supabase-js": "^2.39.3", + "@supabase/supabase-js": "^2.41.1", "classnames": "^2.3.1", "cobe": "^0.6.2", "common": "*", diff --git a/apps/www/pages/launch-week/index.tsx b/apps/www/pages/launch-week/index.tsx index 7b101763c80..eb21931d170 100644 --- a/apps/www/pages/launch-week/index.tsx +++ b/apps/www/pages/launch-week/index.tsx @@ -132,7 +132,7 @@ export const getServerSideProps: GetServerSideProps = async () => { return { props: { - meetups: meetups?.sort((a, b) => (new Date(a.start_at) > new Date(b.start_at) ? 1 : -1)), + meetups: meetups?.sort((a, b) => (new Date(a.start_at!) > new Date(b.start_at!) ? 1 : -1)), }, } } diff --git a/apps/www/pages/launch-week/tickets/[username].tsx b/apps/www/pages/launch-week/tickets/[username].tsx index 0dba55e2316..00f291bcbd5 100644 --- a/apps/www/pages/launch-week/tickets/[username].tsx +++ b/apps/www/pages/launch-week/tickets/[username].tsx @@ -142,7 +142,7 @@ export const getStaticProps: GetStaticProps = async ({ params }) => { user = data } - const ticketType = user?.metadata?.hasSecretTicket + const ticketType = (user?.metadata as any).hasSecretTicket ? 'secret' : user?.golden ? 'platinum' diff --git a/package-lock.json b/package-lock.json index 1ca07e2dcee..98cf46e459e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -235,7 +235,7 @@ "@octokit/plugin-paginate-graphql": "^4.0.0", "@radix-ui/react-accordion": "^1.1.2", "@supabase/auth-helpers-react": "^0.4.2", - "@supabase/supabase-js": "^2.39.3", + "@supabase/supabase-js": "^2.41.1", "@tailwindcss/container-queries": "^0.1.1", "@tanstack/react-query": "^5.13.4", "common": "*", @@ -2116,7 +2116,7 @@ "@stripe/stripe-js": "^3.0.5", "@supabase/auth-helpers-react": "^0.4.2", "@supabase/shared-types": "0.1.55", - "@supabase/supabase-js": "^2.39.3", + "@supabase/supabase-js": "^2.41.1", "@tanstack/react-query": "4.35.7", "@tanstack/react-query-devtools": "4.35.7", "@uidotdev/usehooks": "^2.4.1", @@ -3393,7 +3393,7 @@ "@react-three/fiber": "^7.0.29", "@supabase/auth-helpers-react": "^0.4.2", "@supabase/auth-ui-react": "^0.4.5", - "@supabase/supabase-js": "^2.39.3", + "@supabase/supabase-js": "^2.41.1", "classnames": "^2.3.1", "cobe": "^0.6.2", "common": "*", @@ -15674,6 +15674,14 @@ "@supabase/supabase-js": "^2.19.0" } }, + "node_modules/@supabase/auth-js": { + "version": "2.63.0", + "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.63.0.tgz", + "integrity": "sha512-yIgcHnlgv24GxHtVGUhwGqAFDyJkPIC/xjx7HostN08A8yCy8HIfl4JEkTKyBqD1v1L05jNEJOUke4Lf4O1+Qg==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, "node_modules/@supabase/auth-ui-react": { "version": "0.4.5", "dependencies": { @@ -15699,8 +15707,9 @@ "link": true }, "node_modules/@supabase/functions-js": { - "version": "2.1.5", - "license": "MIT", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.2.2.tgz", + "integrity": "sha512-sJGq1nludmi7pY/fdtCpyY/pYonx7MfHdN408bqb736guWcVI1AChYVbI4kUM978EuOE4Ci6l7bUudfGg07QRw==", "dependencies": { "@supabase/node-fetch": "^2.6.14" } @@ -15709,17 +15718,10 @@ "resolved": "apps/docs/spec/parser", "link": true }, - "node_modules/@supabase/gotrue-js": { - "version": "2.62.0", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.62.0.tgz", - "integrity": "sha512-4eBuZNXGOk7ewqJuHPYMnk8clCtEx6Hfnu6yHLjZlx7w18TqcojcTRUBZagErtpgwwdfzUwKbquexhbrpH/ysw==", - "dependencies": { - "@supabase/node-fetch": "^2.6.14" - } - }, "node_modules/@supabase/node-fetch": { - "version": "2.6.14", - "license": "MIT", + "version": "2.6.15", + "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz", + "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -15838,23 +15840,24 @@ } }, "node_modules/@supabase/storage-js": { - "version": "2.5.4", - "license": "MIT", + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.5.tgz", + "integrity": "sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w==", "dependencies": { "@supabase/node-fetch": "^2.6.14" } }, "node_modules/@supabase/supabase-js": { - "version": "2.39.3", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.39.3.tgz", - "integrity": "sha512-NoltJSaJNKDJNutO5sJPAAi5RIWrn1z2XH+ig1+cHDojT6BTN7TvZPNa3Kq3gFQWfO5H1N9El/bCTZJ3iFW2kQ==", + "version": "2.41.1", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.41.1.tgz", + "integrity": "sha512-xmECLhYugMo/6SObpsOhu5xaxVfsk+JK/d4JSh055bpESmgmN3PLpzbfqejKCpaUeeUNF21+lrJp/U9HQzT9mA==", "dependencies": { - "@supabase/functions-js": "^2.1.5", - "@supabase/gotrue-js": "^2.60.0", - "@supabase/node-fetch": "^2.6.14", - "@supabase/postgrest-js": "^1.9.0", - "@supabase/realtime-js": "^2.9.3", - "@supabase/storage-js": "^2.5.4" + "@supabase/auth-js": "2.63.0", + "@supabase/functions-js": "2.2.2", + "@supabase/node-fetch": "2.6.15", + "@supabase/postgrest-js": "1.9.2", + "@supabase/realtime-js": "2.9.3", + "@supabase/storage-js": "2.5.5" } }, "node_modules/@swc/core": { @@ -46116,7 +46119,7 @@ "typescript": "^5.4.3" }, "peerDependencies": { - "@supabase/gotrue-js": "^2.58.0", + "@supabase/auth-js": "^2.63.0", "@supabase/supabase-js": "*", "next": "*", "react": "*", @@ -46937,7 +46940,7 @@ "license": "MIT", "devDependencies": { "@faker-js/faker": "^6.1.2", - "@supabase/supabase-js": "^2.39.3", + "@supabase/supabase-js": "^2.41.1", "@testdeck/jest": "^0.3.3", "@types/jest": "^29.5.4", "@types/node": "^20.11.16", diff --git a/packages/common/gotrue.ts b/packages/common/gotrue.ts index e449a70ea4b..e7aca65bf29 100644 --- a/packages/common/gotrue.ts +++ b/packages/common/gotrue.ts @@ -1,4 +1,4 @@ -import { GoTrueClient, navigatorLock } from '@supabase/gotrue-js' +import { AuthClient, navigatorLock } from '@supabase/auth-js' export const STORAGE_KEY = process.env.NEXT_PUBLIC_STORAGE_KEY || 'supabase.dashboard.auth.token' export const AUTH_DEBUG_KEY = @@ -100,7 +100,7 @@ const logIndexedDB = (message: string, ...args: any[]) => { })() } -export const gotrueClient = new GoTrueClient({ +export const gotrueClient = new AuthClient({ url: process.env.NEXT_PUBLIC_GOTRUE_URL, storageKey: STORAGE_KEY, detectSessionInUrl: true, diff --git a/packages/common/package.json b/packages/common/package.json index 9801fec4574..3765018aff6 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -24,7 +24,7 @@ }, "peerDependencies": { "@supabase/supabase-js": "*", - "@supabase/gotrue-js": "^2.58.0", + "@supabase/auth-js": "^2.63.0", "next": "*", "react": "*", "react-dom": "*" diff --git a/tests/package.json b/tests/package.json index 29ef5eb5b6d..4e01114c9ff 100644 --- a/tests/package.json +++ b/tests/package.json @@ -18,7 +18,7 @@ "license": "MIT", "devDependencies": { "@faker-js/faker": "^6.1.2", - "@supabase/supabase-js": "^2.39.3", + "@supabase/supabase-js": "^2.41.1", "@testdeck/jest": "^0.3.3", "@types/jest": "^29.5.4", "@types/node": "^20.11.16", From 67e1b1b00b28c2594ebbc0de1208a77b0b1dcb8c Mon Sep 17 00:00:00 2001 From: Kang Ming Date: Fri, 29 Mar 2024 11:45:11 +0700 Subject: [PATCH 12/97] Revert "chore: bump supabase-js" (#22325) Revert "chore: bump supabase-js (#22312)" This reverts commit 0ff546a539262c35afad4292b0b31ecee7af46b0. --- apps/docs/package.json | 2 +- .../interfaces/SignIn/SignInMfaForm.tsx | 2 +- apps/studio/lib/gotrue.ts | 2 +- apps/studio/package.json | 2 +- apps/studio/types/base.ts | 2 +- apps/www/lib/database.types.ts | 163 +----------------- apps/www/package.json | 2 +- apps/www/pages/launch-week/index.tsx | 2 +- .../pages/launch-week/tickets/[username].tsx | 2 +- package-lock.json | 59 +++---- packages/common/gotrue.ts | 4 +- packages/common/package.json | 2 +- tests/package.json | 2 +- 13 files changed, 45 insertions(+), 201 deletions(-) diff --git a/apps/docs/package.json b/apps/docs/package.json index 8151f248049..39f5bcbc422 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -30,7 +30,7 @@ "@octokit/plugin-paginate-graphql": "^4.0.0", "@radix-ui/react-accordion": "^1.1.2", "@supabase/auth-helpers-react": "^0.4.2", - "@supabase/supabase-js": "^2.41.1", + "@supabase/supabase-js": "^2.39.3", "@tailwindcss/container-queries": "^0.1.1", "@tanstack/react-query": "^5.13.4", "common": "*", diff --git a/apps/studio/components/interfaces/SignIn/SignInMfaForm.tsx b/apps/studio/components/interfaces/SignIn/SignInMfaForm.tsx index b50a163975f..3dd480112ef 100644 --- a/apps/studio/components/interfaces/SignIn/SignInMfaForm.tsx +++ b/apps/studio/components/interfaces/SignIn/SignInMfaForm.tsx @@ -1,4 +1,4 @@ -import type { AuthError } from '@supabase/auth-js' +import type { AuthError } from '@supabase/gotrue-js' import type { Factor } from '@supabase/supabase-js' import { useQueryClient } from '@tanstack/react-query' import Link from 'next/link' diff --git a/apps/studio/lib/gotrue.ts b/apps/studio/lib/gotrue.ts index dc77fa3d5d0..140cddcfe22 100644 --- a/apps/studio/lib/gotrue.ts +++ b/apps/studio/lib/gotrue.ts @@ -1,4 +1,4 @@ -import type { Session, User } from '@supabase/auth-js' +import type { Session, User } from '@supabase/gotrue-js' import { gotrueClient } from 'common' export const auth = gotrueClient diff --git a/apps/studio/package.json b/apps/studio/package.json index 980c82db361..2b2e75b618b 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -33,7 +33,7 @@ "@stripe/stripe-js": "^3.0.5", "@supabase/auth-helpers-react": "^0.4.2", "@supabase/shared-types": "0.1.55", - "@supabase/supabase-js": "^2.41.1", + "@supabase/supabase-js": "^2.39.3", "@tanstack/react-query": "4.35.7", "@tanstack/react-query-devtools": "4.35.7", "@uidotdev/usehooks": "^2.4.1", diff --git a/apps/studio/types/base.ts b/apps/studio/types/base.ts index a9fff242444..373b42ace45 100644 --- a/apps/studio/types/base.ts +++ b/apps/studio/types/base.ts @@ -88,7 +88,7 @@ export interface ResponseFailure { export type SupaResponse = T | ResponseFailure export interface ResponseError { - code?: number | string + code?: number message: string requestId?: string } diff --git a/apps/www/lib/database.types.ts b/apps/www/lib/database.types.ts index aa80d9bc84f..2d2ff80377f 100644 --- a/apps/www/lib/database.types.ts +++ b/apps/www/lib/database.types.ts @@ -1,62 +1,8 @@ export type Json = string | number | boolean | null | { [key: string]: Json | undefined } | Json[] -export type Database = { +export interface Database { public: { Tables: { - dpa_downloads: { - Row: { - contact_email: string - created_at: string | null - document: string | null - id: number - updated_at: string | null - } - Insert: { - contact_email: string - created_at?: string | null - document?: string | null - id?: number - updated_at?: string | null - } - Update: { - contact_email?: string - created_at?: string | null - document?: string | null - id?: number - updated_at?: string | null - } - Relationships: [] - } - lwx_meetups: { - Row: { - created_at: string | null - display_info: string | null - id: number - isLive: boolean - link: string | null - start_at: string | null - title: string | null - } - Insert: { - created_at?: string | null - display_info?: string | null - id?: number - isLive?: boolean - link?: string | null - start_at?: string | null - title?: string | null - } - Update: { - created_at?: string | null - display_info?: string | null - id?: number - isLive?: boolean - link?: string | null - start_at?: string | null - title?: string | null - } - Relationships: [] - } partner_contacts: { Row: { company: string @@ -118,7 +64,7 @@ export type Database = { description: string developer: string docs: string | null - featured: boolean | null + featured: boolean id: number images: string[] | null logo: string @@ -139,7 +85,7 @@ export type Database = { description: string developer: string docs?: string | null - featured?: boolean | null + featured?: boolean id?: number images?: string[] | null logo: string @@ -160,7 +106,7 @@ export type Database = { description?: string developer?: string docs?: string | null - featured?: boolean | null + featured?: boolean id?: number images?: string[] | null logo?: string @@ -176,38 +122,13 @@ export type Database = { { foreignKeyName: 'partners_contact_fkey' columns: ['contact'] - isOneToOne: false referencedRelation: 'partner_contacts' referencedColumns: ['id'] }, ] } } - Views: { - lwx_tickets_golden: { - Row: { - createdAt: string | null - golden: boolean | null - id: string | null - metadata: Json | null - name: string | null - referrals: number | null - sharedOnLinkedIn: string | null - sharedOnTwitter: string | null - ticketNumber: number | null - username: string | null - } - Relationships: [ - { - foreignKeyName: 'lwx_tickets_id_fkey' - columns: ['id'] - isOneToOne: true - referencedRelation: 'users' - referencedColumns: ['id'] - }, - ] - } - } + Views: {} Functions: {} Enums: { partner_type: 'technology' | 'expert' @@ -217,77 +138,3 @@ export type Database = { } } } - -type PublicSchema = Database[Extract] - -export type Tables< - PublicTableNameOrOptions extends - | keyof (PublicSchema['Tables'] & PublicSchema['Views']) - | { schema: keyof Database }, - TableName extends PublicTableNameOrOptions extends { schema: keyof Database } - ? keyof (Database[PublicTableNameOrOptions['schema']]['Tables'] & - Database[PublicTableNameOrOptions['schema']]['Views']) - : never = never, -> = PublicTableNameOrOptions extends { schema: keyof Database } - ? (Database[PublicTableNameOrOptions['schema']]['Tables'] & - Database[PublicTableNameOrOptions['schema']]['Views'])[TableName] extends { - Row: infer R - } - ? R - : never - : PublicTableNameOrOptions extends keyof (PublicSchema['Tables'] & PublicSchema['Views']) - ? (PublicSchema['Tables'] & PublicSchema['Views'])[PublicTableNameOrOptions] extends { - Row: infer R - } - ? R - : never - : never - -export type TablesInsert< - PublicTableNameOrOptions extends keyof PublicSchema['Tables'] | { schema: keyof Database }, - TableName extends PublicTableNameOrOptions extends { schema: keyof Database } - ? keyof Database[PublicTableNameOrOptions['schema']]['Tables'] - : never = never, -> = PublicTableNameOrOptions extends { schema: keyof Database } - ? Database[PublicTableNameOrOptions['schema']]['Tables'][TableName] extends { - Insert: infer I - } - ? I - : never - : PublicTableNameOrOptions extends keyof PublicSchema['Tables'] - ? PublicSchema['Tables'][PublicTableNameOrOptions] extends { - Insert: infer I - } - ? I - : never - : never - -export type TablesUpdate< - PublicTableNameOrOptions extends keyof PublicSchema['Tables'] | { schema: keyof Database }, - TableName extends PublicTableNameOrOptions extends { schema: keyof Database } - ? keyof Database[PublicTableNameOrOptions['schema']]['Tables'] - : never = never, -> = PublicTableNameOrOptions extends { schema: keyof Database } - ? Database[PublicTableNameOrOptions['schema']]['Tables'][TableName] extends { - Update: infer U - } - ? U - : never - : PublicTableNameOrOptions extends keyof PublicSchema['Tables'] - ? PublicSchema['Tables'][PublicTableNameOrOptions] extends { - Update: infer U - } - ? U - : never - : never - -export type Enums< - PublicEnumNameOrOptions extends keyof PublicSchema['Enums'] | { schema: keyof Database }, - EnumName extends PublicEnumNameOrOptions extends { schema: keyof Database } - ? keyof Database[PublicEnumNameOrOptions['schema']]['Enums'] - : never = never, -> = PublicEnumNameOrOptions extends { schema: keyof Database } - ? Database[PublicEnumNameOrOptions['schema']]['Enums'][EnumName] - : PublicEnumNameOrOptions extends keyof PublicSchema['Enums'] - ? PublicSchema['Enums'][PublicEnumNameOrOptions] - : never diff --git a/apps/www/package.json b/apps/www/package.json index a12f8094357..7cd0a3e59c3 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -26,7 +26,7 @@ "@react-three/fiber": "^7.0.29", "@supabase/auth-helpers-react": "^0.4.2", "@supabase/auth-ui-react": "^0.4.5", - "@supabase/supabase-js": "^2.41.1", + "@supabase/supabase-js": "^2.39.3", "classnames": "^2.3.1", "cobe": "^0.6.2", "common": "*", diff --git a/apps/www/pages/launch-week/index.tsx b/apps/www/pages/launch-week/index.tsx index eb21931d170..7b101763c80 100644 --- a/apps/www/pages/launch-week/index.tsx +++ b/apps/www/pages/launch-week/index.tsx @@ -132,7 +132,7 @@ export const getServerSideProps: GetServerSideProps = async () => { return { props: { - meetups: meetups?.sort((a, b) => (new Date(a.start_at!) > new Date(b.start_at!) ? 1 : -1)), + meetups: meetups?.sort((a, b) => (new Date(a.start_at) > new Date(b.start_at) ? 1 : -1)), }, } } diff --git a/apps/www/pages/launch-week/tickets/[username].tsx b/apps/www/pages/launch-week/tickets/[username].tsx index 00f291bcbd5..0dba55e2316 100644 --- a/apps/www/pages/launch-week/tickets/[username].tsx +++ b/apps/www/pages/launch-week/tickets/[username].tsx @@ -142,7 +142,7 @@ export const getStaticProps: GetStaticProps = async ({ params }) => { user = data } - const ticketType = (user?.metadata as any).hasSecretTicket + const ticketType = user?.metadata?.hasSecretTicket ? 'secret' : user?.golden ? 'platinum' diff --git a/package-lock.json b/package-lock.json index 98cf46e459e..1ca07e2dcee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -235,7 +235,7 @@ "@octokit/plugin-paginate-graphql": "^4.0.0", "@radix-ui/react-accordion": "^1.1.2", "@supabase/auth-helpers-react": "^0.4.2", - "@supabase/supabase-js": "^2.41.1", + "@supabase/supabase-js": "^2.39.3", "@tailwindcss/container-queries": "^0.1.1", "@tanstack/react-query": "^5.13.4", "common": "*", @@ -2116,7 +2116,7 @@ "@stripe/stripe-js": "^3.0.5", "@supabase/auth-helpers-react": "^0.4.2", "@supabase/shared-types": "0.1.55", - "@supabase/supabase-js": "^2.41.1", + "@supabase/supabase-js": "^2.39.3", "@tanstack/react-query": "4.35.7", "@tanstack/react-query-devtools": "4.35.7", "@uidotdev/usehooks": "^2.4.1", @@ -3393,7 +3393,7 @@ "@react-three/fiber": "^7.0.29", "@supabase/auth-helpers-react": "^0.4.2", "@supabase/auth-ui-react": "^0.4.5", - "@supabase/supabase-js": "^2.41.1", + "@supabase/supabase-js": "^2.39.3", "classnames": "^2.3.1", "cobe": "^0.6.2", "common": "*", @@ -15674,14 +15674,6 @@ "@supabase/supabase-js": "^2.19.0" } }, - "node_modules/@supabase/auth-js": { - "version": "2.63.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.63.0.tgz", - "integrity": "sha512-yIgcHnlgv24GxHtVGUhwGqAFDyJkPIC/xjx7HostN08A8yCy8HIfl4JEkTKyBqD1v1L05jNEJOUke4Lf4O1+Qg==", - "dependencies": { - "@supabase/node-fetch": "^2.6.14" - } - }, "node_modules/@supabase/auth-ui-react": { "version": "0.4.5", "dependencies": { @@ -15707,9 +15699,8 @@ "link": true }, "node_modules/@supabase/functions-js": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.2.2.tgz", - "integrity": "sha512-sJGq1nludmi7pY/fdtCpyY/pYonx7MfHdN408bqb736guWcVI1AChYVbI4kUM978EuOE4Ci6l7bUudfGg07QRw==", + "version": "2.1.5", + "license": "MIT", "dependencies": { "@supabase/node-fetch": "^2.6.14" } @@ -15718,10 +15709,17 @@ "resolved": "apps/docs/spec/parser", "link": true }, + "node_modules/@supabase/gotrue-js": { + "version": "2.62.0", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.62.0.tgz", + "integrity": "sha512-4eBuZNXGOk7ewqJuHPYMnk8clCtEx6Hfnu6yHLjZlx7w18TqcojcTRUBZagErtpgwwdfzUwKbquexhbrpH/ysw==", + "dependencies": { + "@supabase/node-fetch": "^2.6.14" + } + }, "node_modules/@supabase/node-fetch": { - "version": "2.6.15", - "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz", - "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==", + "version": "2.6.14", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -15840,24 +15838,23 @@ } }, "node_modules/@supabase/storage-js": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.5.tgz", - "integrity": "sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w==", + "version": "2.5.4", + "license": "MIT", "dependencies": { "@supabase/node-fetch": "^2.6.14" } }, "node_modules/@supabase/supabase-js": { - "version": "2.41.1", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.41.1.tgz", - "integrity": "sha512-xmECLhYugMo/6SObpsOhu5xaxVfsk+JK/d4JSh055bpESmgmN3PLpzbfqejKCpaUeeUNF21+lrJp/U9HQzT9mA==", + "version": "2.39.3", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.39.3.tgz", + "integrity": "sha512-NoltJSaJNKDJNutO5sJPAAi5RIWrn1z2XH+ig1+cHDojT6BTN7TvZPNa3Kq3gFQWfO5H1N9El/bCTZJ3iFW2kQ==", "dependencies": { - "@supabase/auth-js": "2.63.0", - "@supabase/functions-js": "2.2.2", - "@supabase/node-fetch": "2.6.15", - "@supabase/postgrest-js": "1.9.2", - "@supabase/realtime-js": "2.9.3", - "@supabase/storage-js": "2.5.5" + "@supabase/functions-js": "^2.1.5", + "@supabase/gotrue-js": "^2.60.0", + "@supabase/node-fetch": "^2.6.14", + "@supabase/postgrest-js": "^1.9.0", + "@supabase/realtime-js": "^2.9.3", + "@supabase/storage-js": "^2.5.4" } }, "node_modules/@swc/core": { @@ -46119,7 +46116,7 @@ "typescript": "^5.4.3" }, "peerDependencies": { - "@supabase/auth-js": "^2.63.0", + "@supabase/gotrue-js": "^2.58.0", "@supabase/supabase-js": "*", "next": "*", "react": "*", @@ -46940,7 +46937,7 @@ "license": "MIT", "devDependencies": { "@faker-js/faker": "^6.1.2", - "@supabase/supabase-js": "^2.41.1", + "@supabase/supabase-js": "^2.39.3", "@testdeck/jest": "^0.3.3", "@types/jest": "^29.5.4", "@types/node": "^20.11.16", diff --git a/packages/common/gotrue.ts b/packages/common/gotrue.ts index e7aca65bf29..e449a70ea4b 100644 --- a/packages/common/gotrue.ts +++ b/packages/common/gotrue.ts @@ -1,4 +1,4 @@ -import { AuthClient, navigatorLock } from '@supabase/auth-js' +import { GoTrueClient, navigatorLock } from '@supabase/gotrue-js' export const STORAGE_KEY = process.env.NEXT_PUBLIC_STORAGE_KEY || 'supabase.dashboard.auth.token' export const AUTH_DEBUG_KEY = @@ -100,7 +100,7 @@ const logIndexedDB = (message: string, ...args: any[]) => { })() } -export const gotrueClient = new AuthClient({ +export const gotrueClient = new GoTrueClient({ url: process.env.NEXT_PUBLIC_GOTRUE_URL, storageKey: STORAGE_KEY, detectSessionInUrl: true, diff --git a/packages/common/package.json b/packages/common/package.json index 3765018aff6..9801fec4574 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -24,7 +24,7 @@ }, "peerDependencies": { "@supabase/supabase-js": "*", - "@supabase/auth-js": "^2.63.0", + "@supabase/gotrue-js": "^2.58.0", "next": "*", "react": "*", "react-dom": "*" diff --git a/tests/package.json b/tests/package.json index 4e01114c9ff..29ef5eb5b6d 100644 --- a/tests/package.json +++ b/tests/package.json @@ -18,7 +18,7 @@ "license": "MIT", "devDependencies": { "@faker-js/faker": "^6.1.2", - "@supabase/supabase-js": "^2.41.1", + "@supabase/supabase-js": "^2.39.3", "@testdeck/jest": "^0.3.3", "@types/jest": "^29.5.4", "@types/node": "^20.11.16", From 33df85e910cf119a1f1eec191cc73f399cd6bb3a Mon Sep 17 00:00:00 2001 From: Jonathan Summers-Muir Date: Fri, 29 Mar 2024 15:27:05 +0800 Subject: [PATCH 13/97] feat: AssistantChatForm ui-pattern and AssistantCommandsPopover ui-pattern (#19296) * proto * chore: added pattern for input * migrated whole form over * Added basics * add commands * Update index.tsx * remove old code * add Input * add chat into studio * init stories * revert * Update AIPolicyChat.tsx * revert * udpate * Update AssistantCommandsPopover.tsx * Update packages/ui-patterns/AssistantChat/AssistantChatForm.tsx Co-authored-by: Alaister Young * Update AssistantCommandsPopover.tsx * Update AssistantCommandsPopover.tsx --------- Co-authored-by: Alaister Young --- .../AssistantChatCommands.stories.tsx | 90 +++++++ .../AssistantChatForm.stories.tsx | 66 ++++++ .../AssistantChat/AssistantChatForm.tsx | 148 ++++++++++++ .../AssistantCommandsPopover.tsx | 221 ++++++++++++++++++ packages/ui-patterns/index.tsx | 2 + packages/ui/index.tsx | 1 + .../ui/src/components/shadcn/ui/command.tsx | 8 +- .../ui/src/components/shadcn/ui/popover.tsx | 3 +- 8 files changed, 535 insertions(+), 4 deletions(-) create mode 100644 packages/ui-patterns/AssistantChat/AssistantChatCommands.stories.tsx create mode 100644 packages/ui-patterns/AssistantChat/AssistantChatForm.stories.tsx create mode 100644 packages/ui-patterns/AssistantChat/AssistantChatForm.tsx create mode 100644 packages/ui-patterns/AssistantChat/AssistantCommandsPopover.tsx diff --git a/packages/ui-patterns/AssistantChat/AssistantChatCommands.stories.tsx b/packages/ui-patterns/AssistantChat/AssistantChatCommands.stories.tsx new file mode 100644 index 00000000000..115209b17c4 --- /dev/null +++ b/packages/ui-patterns/AssistantChat/AssistantChatCommands.stories.tsx @@ -0,0 +1,90 @@ +import { StoryObj } from '@storybook/react' +import { AssistantChatForm } from './AssistantChatForm' +import { AssistantCommandsPopover } from './AssistantCommandsPopover' +import { Box, User } from 'lucide-react' +import { createRef, useRef, useState } from 'react' + +// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export +export default { + title: 'AI/Assistant Chat', + component: AssistantChatForm, + parameters: { + // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout + layout: 'centered', + }, + decorators: [ + (Story: any) => { + return ( +
+ +
+ ) + }, + ], + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs + tags: ['autodocs'], + // More on argTypes: https://storybook.js.org/docs/api/argtypes + // argTypes: {}, +} + +// export default meta + +type Story = StoryObj + +export const CommandsPopover: Story = { + render: function Render(args) { + const [commandsOpen, setCommandsOpen] = useState(false) + const textAreaRef = createRef() + const [value, setValueState] = useState('') + const [loading, setLoading] = useState(false) + + function handleSubmit(event: React.FormEvent) { + // set loading for 3 seconds and then reset + setLoading(true) + setTimeout(() => { + setLoading(false) + }, 1500) + } + + const suggestions = [ + 'Add policy for org Inserted User Access', + 'Add policy for User-Specific Todo Access', + 'Add policy for Org Update Restriction', + ] + + return ( + <> + setValueState(e)} + suggestions={suggestions} + > + setValueState(e.target.value)} + commandsOpen={commandsOpen} + setCommandsOpen={setCommandsOpen} + onSubmit={async (event) => { + event.preventDefault() + handleSubmit(event) + }} + /> + +

+ Press / to open + commands +

+ + ) + }, + args: { + // placeholder: 'Ask AI a question...', + }, +} diff --git a/packages/ui-patterns/AssistantChat/AssistantChatForm.stories.tsx b/packages/ui-patterns/AssistantChat/AssistantChatForm.stories.tsx new file mode 100644 index 00000000000..cb643aeaac2 --- /dev/null +++ b/packages/ui-patterns/AssistantChat/AssistantChatForm.stories.tsx @@ -0,0 +1,66 @@ +import { StoryObj } from '@storybook/react' +import { AssistantChatForm } from './AssistantChatForm' +import { Box, User } from 'lucide-react' +import { createRef, useRef, useState } from 'react' + +// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export +export default { + title: 'AI/Assistant Chat', + component: AssistantChatForm, + parameters: { + // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout + layout: 'centered', + }, + decorators: [ + (Story: any) => { + return ( +
+ +
+ ) + }, + ], + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs + tags: ['autodocs'], + // More on argTypes: https://storybook.js.org/docs/api/argtypes + // argTypes: {}, +} + +// export default meta + +type Story = StoryObj + +export const Primary: Story = { + render: function Render(args) { + const textAreaRef = createRef() + const [value, setValueState] = useState('') + const [loading, setLoading] = useState(false) + + function handleSubmit(event: React.FormEvent) { + // set loading for 3 seconds and then reset + setLoading(true) + setTimeout(() => { + setLoading(false) + }, 1500) + } + + return ( + } + value={value} + loading={loading} + disabled={loading} + onValueChange={(e) => setValueState(e.target.value)} + onSubmit={async (event) => { + event.preventDefault() + handleSubmit(event) + }} + /> + ) + }, + args: { + // placeholder: 'Ask AI a question...', + }, +} diff --git a/packages/ui-patterns/AssistantChat/AssistantChatForm.tsx b/packages/ui-patterns/AssistantChat/AssistantChatForm.tsx new file mode 100644 index 00000000000..4f4190aa723 --- /dev/null +++ b/packages/ui-patterns/AssistantChat/AssistantChatForm.tsx @@ -0,0 +1,148 @@ +import { Loader2 } from 'lucide-react' +import React, { ChangeEvent, createRef, useEffect } from 'react' +import { TextArea } from 'ui/src/components/shadcn/ui/text-area' +import { cn } from 'ui/src/lib/utils' + +export interface FormProps extends React.FormHTMLAttributes { + /* The ref for the textarea */ + textAreaRef: React.RefObject + /* The loading state of the form */ + loading: boolean + /* The disabled state of the form */ + disabled?: boolean + /* The value of the textarea */ + value?: string + /* The function to handle the value change */ + onValueChange: (value: ChangeEvent) => void + /* Used to stop onSubmit event when Command popover is open. Use with AssistantCommandsPopover */ + commandsOpen?: boolean + /* Used to close Command popover when onSubmit event happens. Use with AssistantCommandsPopover */ + setCommandsOpen?: (value: boolean) => void + /* The icon to display on the left of the textarea */ + icon?: React.ReactNode + /* The function to handle the form submission */ + onSubmit: React.FormHTMLAttributes['onSubmit'] +} + +const AssistantChatForm = React.forwardRef( + ( + { + loading = false, + disabled = false, + value = '', + textAreaRef, + commandsOpen = false, + icon = null, + onValueChange, + setCommandsOpen, + onSubmit, + ...props + }, + ref + ) => { + const formRef = createRef() + const submitRef = createRef() + + /** + * This effect is used to resize the textarea based on the content + */ + useEffect(() => { + if (textAreaRef) { + if (!value && textAreaRef && textAreaRef.current) { + textAreaRef.current.style.height = '40px' + } else if (textAreaRef && textAreaRef.current) { + const newHeight = textAreaRef.current.scrollHeight + 'px' + textAreaRef.current.style.height = newHeight + } + } + }, [value, textAreaRef]) + + /** + * This effect is used to focus the textarea when the component mounts + */ + useEffect(() => { + textAreaRef?.current?.focus() + }, [value, textAreaRef]) + + /** + * This function is used to handle the "Enter" key press + */ + const handleKeyDown = (event: React.KeyboardEvent) => { + // Check if the pressed key is "Enter" (key code 13) without the "Shift" key + // also checks if the commands popover is open + if (event.key === 'Enter' && !event.shiftKey && !commandsOpen) { + event.preventDefault() + if (submitRef.current) { + submitRef.current.click() + } + } + + // handles closing the commands popover if open + if (event.key === 'Enter' && commandsOpen) { + if (setCommandsOpen) setCommandsOpen(false) + } + } + + return ( +
+ {icon && ( +
+ {icon} +
+ )} +