From 9a1bd73339a519b48bf8acd684910a183fd4850b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kevin=20Gr=C3=BCneberg?= Date: Thu, 21 Dec 2023 11:31:32 +0100 Subject: [PATCH] chore: stop polyfilling node modules (#19909) --- .../DatabaseSettings/ResetDbPassword.tsx | 2 +- .../layouts/ReportsLayout/ReportsLayout.tsx | 22 +++++---- .../components/ui/ProductMenu/ProductMenu.tsx | 2 +- .../ui/ProductMenu/ProductMenu.types.ts | 1 + apps/studio/data/sql/execute-sql-query.ts | 5 +- apps/studio/next.config.js | 5 ++ apps/studio/package.json | 4 +- .../[slug]/deploy-button/new-project.tsx | 2 +- apps/studio/pages/new/[slug].tsx | 2 +- apps/studio/pages/vercel/setupProject.tsx | 2 +- package-lock.json | 47 +++++++++++++------ 11 files changed, 59 insertions(+), 35 deletions(-) diff --git a/apps/studio/components/interfaces/Settings/Database/DatabaseSettings/ResetDbPassword.tsx b/apps/studio/components/interfaces/Settings/Database/DatabaseSettings/ResetDbPassword.tsx index f57af867ad2..62997d38072 100644 --- a/apps/studio/components/interfaces/Settings/Database/DatabaseSettings/ResetDbPassword.tsx +++ b/apps/studio/components/interfaces/Settings/Database/DatabaseSettings/ResetDbPassword.tsx @@ -1,7 +1,7 @@ import * as Tooltip from '@radix-ui/react-tooltip' import { PermissionAction } from '@supabase/shared-types/out/constants' import { useParams } from 'common' -import generator from 'generate-password' +import generator from 'generate-password-browser' import { debounce } from 'lodash' import { useEffect, useRef, useState } from 'react' import { Button, Input, Modal } from 'ui' diff --git a/apps/studio/components/layouts/ReportsLayout/ReportsLayout.tsx b/apps/studio/components/layouts/ReportsLayout/ReportsLayout.tsx index 1616d182812..3ec45efeff2 100644 --- a/apps/studio/components/layouts/ReportsLayout/ReportsLayout.tsx +++ b/apps/studio/components/layouts/ReportsLayout/ReportsLayout.tsx @@ -20,7 +20,7 @@ const ReportsLayout = ({ title, children }: PropsWithChildren {
{menu.map((group, idx) => ( -
+
( { enabled = true, ...options }: UseQueryOptions = {} ) => useQuery( - sqlKeys.query(projectRef, queryKey ?? [md5(sql)]), + sqlKeys.query(projectRef, queryKey ?? [btoa(sql)]), ({ signal }) => executeSql( { projectRef, connectionString, sql, queryKey, handleError, isRoleImpersonationEnabled }, @@ -135,7 +134,7 @@ export const prefetchExecuteSql = ( client: QueryClient, { projectRef, connectionString, sql, queryKey, handleError }: ExecuteSqlVariables ) => { - return client.prefetchQuery(sqlKeys.query(projectRef, queryKey ?? [md5(sql)]), ({ signal }) => + return client.prefetchQuery(sqlKeys.query(projectRef, queryKey ?? [btoa(sql)]), ({ signal }) => executeSql({ projectRef, connectionString, sql, queryKey, handleError }, signal) ) } diff --git a/apps/studio/next.config.js b/apps/studio/next.config.js index bcd7186fed3..26995bfcb02 100644 --- a/apps/studio/next.config.js +++ b/apps/studio/next.config.js @@ -27,6 +27,11 @@ const csp = [ const nextConfig = { basePath: process.env.NEXT_PUBLIC_BASE_PATH, output: 'standalone', + experimental: { + // [Kevin] Next polyfills Node modules like Crypto by default, blowing up the bundle size. We use generate-password-browser (safe to use in browser) and the polyfills are not needed for us + // Revisit on Next 14 upgrade (PR #19909) + fallbackNodePolyfills: false, + }, async redirects() { return [ ...(process.env.NEXT_PUBLIC_IS_PLATFORM === 'true' diff --git a/apps/studio/package.json b/apps/studio/package.json index 221b5f6869d..d4610a38b4f 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -42,7 +42,6 @@ "ai-commands": "*", "ajv": "^8.6.3", "awesome-debounce-promise": "^2.1.0", - "blueimp-md5": "^2.19.0", "clsx": "^1.2.1", "common": "*", "common-tags": "^1.8.2", @@ -51,7 +50,7 @@ "dayjs": "^1.11.10", "file-saver": "^2.0.5", "framer-motion": "^6.5.1", - "generate-password": "^1.7.0", + "generate-password-browser": "^1.1.0", "html-to-image": "^1.10.8", "immutability-helper": "^3.1.1", "ip-address": "^8.1.0", @@ -116,7 +115,6 @@ "@testing-library/dom": "^9.3.3", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^13.5.0", - "@types/blueimp-md5": "^2.18.0", "@types/common-tags": "^1.8.1", "@types/file-saver": "^2.0.2", "@types/json-logic-js": "^1.2.1", diff --git a/apps/studio/pages/integrations/vercel/[slug]/deploy-button/new-project.tsx b/apps/studio/pages/integrations/vercel/[slug]/deploy-button/new-project.tsx index 10734e57db5..4712e2761d7 100644 --- a/apps/studio/pages/integrations/vercel/[slug]/deploy-button/new-project.tsx +++ b/apps/studio/pages/integrations/vercel/[slug]/deploy-button/new-project.tsx @@ -1,4 +1,4 @@ -import generator from 'generate-password' +import generator from 'generate-password-browser' import { debounce } from 'lodash' import { useRouter } from 'next/router' import { ChangeEvent, useRef, useState } from 'react' diff --git a/apps/studio/pages/new/[slug].tsx b/apps/studio/pages/new/[slug].tsx index afc176cad48..139b25ec827 100644 --- a/apps/studio/pages/new/[slug].tsx +++ b/apps/studio/pages/new/[slug].tsx @@ -1,6 +1,6 @@ import { PermissionAction } from '@supabase/shared-types/out/constants' import { useParams } from 'common' -import generator from 'generate-password' +import generator from 'generate-password-browser' import { debounce } from 'lodash' import Link from 'next/link' import { useRouter } from 'next/router' diff --git a/apps/studio/pages/vercel/setupProject.tsx b/apps/studio/pages/vercel/setupProject.tsx index d83d87dec1a..e3e96d0c0d2 100644 --- a/apps/studio/pages/vercel/setupProject.tsx +++ b/apps/studio/pages/vercel/setupProject.tsx @@ -1,4 +1,4 @@ -import generator from 'generate-password' +import generator from 'generate-password-browser' import { debounce } from 'lodash' import { makeAutoObservable } from 'mobx' import { observer, useLocalObservable } from 'mobx-react-lite' diff --git a/package-lock.json b/package-lock.json index fcba4cebdca..30608b2f322 100644 --- a/package-lock.json +++ b/package-lock.json @@ -730,7 +730,6 @@ "ai-commands": "*", "ajv": "^8.6.3", "awesome-debounce-promise": "^2.1.0", - "blueimp-md5": "^2.19.0", "clsx": "^1.2.1", "common": "*", "common-tags": "^1.8.2", @@ -739,7 +738,7 @@ "dayjs": "^1.11.10", "file-saver": "^2.0.5", "framer-motion": "^6.5.1", - "generate-password": "^1.7.0", + "generate-password-browser": "^1.1.0", "html-to-image": "^1.10.8", "immutability-helper": "^3.1.1", "ip-address": "^8.1.0", @@ -804,7 +803,6 @@ "@testing-library/dom": "^9.3.3", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^13.5.0", - "@types/blueimp-md5": "^2.18.0", "@types/common-tags": "^1.8.1", "@types/file-saver": "^2.0.2", "@types/json-logic-js": "^1.2.1", @@ -11264,11 +11262,6 @@ "@babel/types": "^7.20.7" } }, - "node_modules/@types/blueimp-md5": { - "version": "2.18.0", - "dev": true, - "license": "MIT" - }, "node_modules/@types/body-parser": { "version": "1.19.3", "dev": true, @@ -14026,10 +14019,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/blueimp-md5": { - "version": "2.19.0", - "license": "MIT" - }, "node_modules/body-parser": { "version": "1.20.1", "dev": true, @@ -18966,9 +18955,37 @@ "node": ">=8" } }, - "node_modules/generate-password": { - "version": "1.7.0", - "license": "MIT" + "node_modules/generate-password-browser": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/generate-password-browser/-/generate-password-browser-1.1.0.tgz", + "integrity": "sha512-qsQve0rVbCqGqAfKgZwjxKUfI1d1nyd22dz+kE8gn1iw1LxGkR+Slsl79XXfm2wxuK27IkopTs5KXcOEQnhg0w==", + "dependencies": { + "buffer": "^6.0.3", + "randombytes": "^2.0.5" + } + }, + "node_modules/generate-password-browser/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } }, "node_modules/gensync": { "version": "1.0.0-beta.2",