From 9fefca0c1dde62e68aefdc2ef908595fbe35ed2d Mon Sep 17 00:00:00 2001 From: "Kim, Hyeonseo" Date: Tue, 4 Aug 2026 15:31:53 +0900 Subject: [PATCH 1/3] Apply proxy setting for graphql --- packages/web/.env.example | 1 - packages/web/env.d.ts | 4 ---- packages/web/src/RelayEnvironment.ts | 8 +++++++- packages/web/vite.config.ts | 11 ++++++++++- 4 files changed, 17 insertions(+), 7 deletions(-) delete mode 100644 packages/web/.env.example diff --git a/packages/web/.env.example b/packages/web/.env.example deleted file mode 100644 index 8ed9c2c..0000000 --- a/packages/web/.env.example +++ /dev/null @@ -1 +0,0 @@ -VITE_DRFED_URL=http://0.0.0.0:8888/graphql diff --git a/packages/web/env.d.ts b/packages/web/env.d.ts index 9f25370..8c25fdd 100644 --- a/packages/web/env.d.ts +++ b/packages/web/env.d.ts @@ -1,7 +1,3 @@ -interface ImportMetaEnv { - readonly VITE_DRFED_URL: string; -} - interface ImportMeta { readonly env: ImportMetaEnv; } diff --git a/packages/web/src/RelayEnvironment.ts b/packages/web/src/RelayEnvironment.ts index 66e8f94..8daffd5 100644 --- a/packages/web/src/RelayEnvironment.ts +++ b/packages/web/src/RelayEnvironment.ts @@ -35,7 +35,13 @@ const fetchFn: FetchFunction = async (params, variables) => { if (accessToken !== undefined) { headers.Authorization = `Bearer ${accessToken}`; } - const response = await fetch(import.meta.env.VITE_DRFED_URL, { + + const url = new URL( + "/graphql", + event?.request.url ?? globalThis.location.href, + ); + + const response = await fetch(url, { method: "POST", headers, body: JSON.stringify({ diff --git a/packages/web/vite.config.ts b/packages/web/vite.config.ts index a24320e..181ea6a 100644 --- a/packages/web/vite.config.ts +++ b/packages/web/vite.config.ts @@ -23,7 +23,16 @@ import relay from "vite-plugin-relay-lite"; export default defineConfig(({ command }) => ({ plugins: [ solidStart(), - nitro(), + nitro({ + routeRules: { + "/graphql": { + proxy: { + to: "http://127.0.0.1:8888/graphql", + forwardHeaders: ["accept"], + }, + }, + }, + }), relay({ codegen: command !== "build" }), { ...cjsInterop({ dependencies: ["relay-runtime"] }), From e876e844698d33941c74de487f1f13983faec039 Mon Sep 17 00:00:00 2001 From: "Kim, Hyeonseo" Date: Thu, 13 Aug 2026 15:49:21 +0900 Subject: [PATCH 2/3] Set zed to use mise --- .zed/settings.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.zed/settings.json b/.zed/settings.json index 7c42f8b..154f057 100644 --- a/.zed/settings.json +++ b/.zed/settings.json @@ -8,6 +8,12 @@ "fmt.configPath": null } } + }, + "oxlint": { + "binary": { + "path": "mise", + "arguments": ["exec", "--", "oxlint", "--lsp"] + } } }, "languages": { From a14c427ba01b7bf2e8fe08e370fc98f5b3b921dc Mon Sep 17 00:00:00 2001 From: "Kim, Hyeonseo" Date: Tue, 18 Aug 2026 15:10:55 +0900 Subject: [PATCH 3/3] Seperate Backend URL --- packages/graphql/src/index.ts | 8 +------ packages/web/env.d.ts | 4 ++++ packages/web/vite.config.ts | 41 ++++++++++++++++++++--------------- 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/packages/graphql/src/index.ts b/packages/graphql/src/index.ts index f24bb43..2105fcc 100644 --- a/packages/graphql/src/index.ts +++ b/packages/graphql/src/index.ts @@ -97,13 +97,7 @@ const fillOptions = (opt: YogaServerOptions): Required => ({ mailer: opt?.mailer ?? mockTransport(), emailFrom: opt?.emailFrom ?? "noreply@drfed.org", // FIXME: Properly parametrize the following allowlist: - origins: - opt?.origins ?? - new Set([ - "https://drfed.org", - "http://localhost:3000", - "http://0.0.0.0:3000", - ]), + origins: opt?.origins ?? new Set(["https://drfed.org"]), }); const getAccessToken = (headers: Headers) => diff --git a/packages/web/env.d.ts b/packages/web/env.d.ts index 8c25fdd..241f45f 100644 --- a/packages/web/env.d.ts +++ b/packages/web/env.d.ts @@ -1,3 +1,7 @@ +interface ImportMetaEnv { + VITE_BACKEND_URL: string; +} + interface ImportMeta { readonly env: ImportMetaEnv; } diff --git a/packages/web/vite.config.ts b/packages/web/vite.config.ts index 181ea6a..4a1b68b 100644 --- a/packages/web/vite.config.ts +++ b/packages/web/vite.config.ts @@ -14,29 +14,34 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . +import process from "node:process"; + import { solidStart } from "@solidjs/start/config"; import { nitro } from "nitro/vite"; -import { defineConfig } from "vite"; +import { defineConfig, loadEnv } from "vite"; import { cjsInterop } from "vite-plugin-cjs-interop"; import relay from "vite-plugin-relay-lite"; -export default defineConfig(({ command }) => ({ - plugins: [ - solidStart(), - nitro({ - routeRules: { - "/graphql": { - proxy: { - to: "http://127.0.0.1:8888/graphql", - forwardHeaders: ["accept"], +export default defineConfig(({ mode, command }) => { + const env = loadEnv(mode, process.cwd()); + return { + plugins: [ + solidStart(), + nitro({ + routeRules: { + "/graphql": { + proxy: { + to: `${env.VITE_BACKEND_URL}/graphql`, + forwardHeaders: ["accept"], + }, }, }, + }), + relay({ codegen: command !== "build" }), + { + ...cjsInterop({ dependencies: ["relay-runtime"] }), + applyToEnvironment: (environment) => environment.name === "ssr", }, - }), - relay({ codegen: command !== "build" }), - { - ...cjsInterop({ dependencies: ["relay-runtime"] }), - applyToEnvironment: (environment) => environment.name === "ssr", - }, - ], -})); + ], + }; +});