From ae1864c134c976abaf2c156746ab67859802a1f9 Mon Sep 17 00:00:00 2001 From: maulanasdqn Date: Wed, 21 Jan 2026 20:52:03 +0700 Subject: [PATCH] chore: remove Supabase dependency completely --- .env.example | 3 - flake.nix | 4 +- libs/service/src/supabase/client.ts | 60 --------------- libs/service/src/supabase/index.ts | 1 - package-lock.json | 110 +--------------------------- package.json | 1 - 6 files changed, 5 insertions(+), 174 deletions(-) delete mode 100644 .env.example delete mode 100644 libs/service/src/supabase/client.ts delete mode 100644 libs/service/src/supabase/index.ts diff --git a/.env.example b/.env.example deleted file mode 100644 index fec1d5e..0000000 --- a/.env.example +++ /dev/null @@ -1,3 +0,0 @@ - -VITE_SUPABASE_URL=https://your-project-id.supabase.co -VITE_SUPABASE_ANON_KEY=your-anon-key-here diff --git a/flake.nix b/flake.nix index cc3ed3d..b62447b 100644 --- a/flake.nix +++ b/flake.nix @@ -12,7 +12,7 @@ pkgs = import nixpkgs { inherit system; }; # NPM dependencies hash (update with: nix run nixpkgs#prefetch-npm-deps -- package-lock.json) - npmDepsHash = "sha256-qJdZprh14BOP1oZXZ32A7cJDKh0fKZ1cuppgmOeBt1w="; + npmDepsHash = "sha256-bz8Q/d08FZtVElksXMvi90xrCCetTMQmzWCwU0W/vbg="; # Import helpers mkViteApp = import ./nix/mkViteApp.nix { @@ -111,7 +111,7 @@ mkHackathonWithEnv = envVars: import ./nix/mkViteApp.nix { pkgs = final; src = self; - npmDepsHash = "sha256-qJdZprh14BOP1oZXZ32A7cJDKh0fKZ1cuppgmOeBt1w="; + npmDepsHash = "sha256-bz8Q/d08FZtVElksXMvi90xrCCetTMQmzWCwU0W/vbg="; } { name = "hackathon"; buildScript = "hackathon:build"; inherit envVars; }; }; }; diff --git a/libs/service/src/supabase/client.ts b/libs/service/src/supabase/client.ts deleted file mode 100644 index 7abc97e..0000000 --- a/libs/service/src/supabase/client.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { createClient, SupabaseClient } from '@supabase/supabase-js'; - -const supabaseUrl = import.meta.env.VITE_SUPABASE_URL; -const supabaseAnonKey = import.meta.env.VITE_SUPABASE_ANON_KEY; - -// Lazy initialization - only create client when credentials are available -let _supabase: SupabaseClient | null = null; - -const getSupabaseClient = (): SupabaseClient => { - if (!supabaseUrl || !supabaseAnonKey) { - throw new Error('Missing Supabase environment variables. Please set VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY.'); - } - - if (!_supabase) { - _supabase = createClient(supabaseUrl, supabaseAnonKey, { - auth: { - autoRefreshToken: true, - persistSession: true, - detectSessionInUrl: true, - storage: typeof window !== 'undefined' ? window.localStorage : undefined, - }, - global: { - headers: { - 'X-Client-Info': 'supabase-js-web', - }, - }, - }); - } - - return _supabase; -}; - -// Export a proxy that lazily initializes the client -export const supabase = new Proxy({} as SupabaseClient, { - get(_, prop) { - return getSupabaseClient()[prop as keyof SupabaseClient]; - }, -}); - -// Helper to create authenticated client (kept for backward compatibility) -// NOTE: With proper session management, this should no longer be needed -// Once session is set via supabase.auth.setSession(), the base client will have auth context -export const getAuthenticatedClient = (accessToken: string) => { - if (!supabaseUrl || !supabaseAnonKey) { - throw new Error('Missing Supabase environment variables. Please set VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY.'); - } - - return createClient(supabaseUrl, supabaseAnonKey, { - auth: { - autoRefreshToken: false, - persistSession: false, - detectSessionInUrl: false, - }, - global: { - headers: { - Authorization: `Bearer ${accessToken}`, - }, - }, - }); -}; diff --git a/libs/service/src/supabase/index.ts b/libs/service/src/supabase/index.ts deleted file mode 100644 index 4f1cce4..0000000 --- a/libs/service/src/supabase/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './client'; diff --git a/package-lock.json b/package-lock.json index ba47a2c..7edbef5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,6 @@ "@radix-ui/react-label": "^2.1.7", "@radix-ui/react-slot": "^1.2.0", "@redocly/ajv": "^8.11.2", - "@supabase/supabase-js": "^2.84.0", "@tanstack/react-query": "^5.74.4", "@tanstack/react-store": "^0.8.0", "@tanstack/react-table": "^8.21.2", @@ -7959,106 +7958,6 @@ "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", "license": "MIT" }, - "node_modules/@supabase/auth-js": { - "version": "2.84.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.84.0.tgz", - "integrity": "sha512-J6XKbqqg1HQPMfYkAT9BrC8anPpAiifl7qoVLsYhQq5B/dnu/lxab1pabnxtJEsvYG5rwI5HEVEGXMjoQ6Wz2Q==", - "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/functions-js": { - "version": "2.84.0", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.84.0.tgz", - "integrity": "sha512-2oY5QBV4py/s64zMlhPEz+4RTdlwxzmfhM1k2xftD2v1DruRZKfoe7Yn9DCz1VondxX8evcvpc2udEIGzHI+VA==", - "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/postgrest-js": { - "version": "2.84.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-2.84.0.tgz", - "integrity": "sha512-oplc/3jfJeVW4F0J8wqywHkjIZvOVHtqzF0RESijepDAv5Dn/LThlGW1ftysoP4+PXVIrnghAbzPHo88fNomPQ==", - "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/realtime-js": { - "version": "2.84.0", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.84.0.tgz", - "integrity": "sha512-ThqjxiCwWiZAroHnYPmnNl6tZk6jxGcG2a7Hp/3kcolPcMj89kWjUTA3cHmhdIWYsP84fHp8MAQjYWMLf7HEUg==", - "license": "MIT", - "dependencies": { - "@types/phoenix": "^1.6.6", - "@types/ws": "^8.18.1", - "tslib": "2.8.1", - "ws": "^8.18.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/realtime-js/node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@supabase/storage-js": { - "version": "2.84.0", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.84.0.tgz", - "integrity": "sha512-vXvAJ1euCuhryOhC6j60dG8ky+lk0V06ubNo+CbhuoUv+sl39PyY0lc+k+qpQhTk/VcI6SiM0OECLN83+nyJ5A==", - "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@supabase/supabase-js": { - "version": "2.84.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.84.0.tgz", - "integrity": "sha512-byMqYBvb91sx2jcZsdp0qLpmd4Dioe80e4OU/UexXftCkpTcgrkoENXHf5dO8FCSai8SgNeq16BKg10QiDI6xg==", - "license": "MIT", - "dependencies": { - "@supabase/auth-js": "2.84.0", - "@supabase/functions-js": "2.84.0", - "@supabase/postgrest-js": "2.84.0", - "@supabase/realtime-js": "2.84.0", - "@supabase/storage-js": "2.84.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", @@ -9626,6 +9525,7 @@ "version": "22.19.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.1.tgz", "integrity": "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==", + "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" @@ -9648,12 +9548,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/phoenix": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.6.tgz", - "integrity": "sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==", - "license": "MIT" - }, "node_modules/@types/qrcode": { "version": "1.5.6", "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.6.tgz", @@ -9792,6 +9686,7 @@ "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, "license": "MIT", "dependencies": { "@types/node": "*" @@ -29532,6 +29427,7 @@ "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { diff --git a/package.json b/package.json index 5a4209a..3289dfc 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,6 @@ "@radix-ui/react-label": "^2.1.7", "@radix-ui/react-slot": "^1.2.0", "@redocly/ajv": "^8.11.2", - "@supabase/supabase-js": "^2.84.0", "@tanstack/react-query": "^5.74.4", "@tanstack/react-store": "^0.8.0", "@tanstack/react-table": "^8.21.2",