From d0d55f58a6e60dfa21bc6b47e45a6469b51a3d8c Mon Sep 17 00:00:00 2001 From: geoffsee <> Date: Tue, 27 May 2025 15:01:48 -0400 Subject: [PATCH] Refactor context handling and migrate Wrangler config format. Replaces `createServerContext` with `createRequestContext` for clarity and consistency across the application. Migrates `wrangler.toml` to `wrangler.jsonc` for improved configuration management and compatibility. Updates related files to align with the new context model and configuration structure. --- .../site/{context.ts => RequestContext.ts} | 14 ++--- workers/site/api-router.ts | 18 +++---- wrangler.jsonc | 54 +++++++++++++++++++ wrangler.toml | 17 ------ 4 files changed, 70 insertions(+), 33 deletions(-) rename workers/site/{context.ts => RequestContext.ts} (88%) create mode 100644 wrangler.jsonc delete mode 100644 wrangler.toml diff --git a/workers/site/context.ts b/workers/site/RequestContext.ts similarity index 88% rename from workers/site/context.ts rename to workers/site/RequestContext.ts index c86dc5d..740e856 100644 --- a/workers/site/context.ts +++ b/workers/site/RequestContext.ts @@ -6,8 +6,8 @@ import ChatService from "./services/ChatService"; import TransactionService from "./services/TransactionService"; import FeedbackService from "./services/FeedbackService"; -const Context = types - .model("ApplicationContext", { +const RequestContext = types + .model("RequestContext", { chatService: ChatService, contactService: types.optional(ContactService, {}), assetService: types.optional(AssetService, {}), @@ -36,10 +36,10 @@ const Context = types }; }); -export type IRootStore = Instance; +export type IRootStore = Instance; -const createServerContext = (env, ctx) => { - const instance = Context.create({ +const createRequestContext = (env, ctx) => { + const instance = RequestContext.create({ contactService: ContactService.create({}), assetService: AssetService.create({}), transactionService: TransactionService.create({}), @@ -61,6 +61,6 @@ const createServerContext = (env, ctx) => { return instance; }; -export { createServerContext }; +export { createRequestContext }; -export default Context; +export default RequestContext; diff --git a/workers/site/api-router.ts b/workers/site/api-router.ts index 7cc04d3..3db389f 100644 --- a/workers/site/api-router.ts +++ b/workers/site/api-router.ts @@ -1,21 +1,21 @@ import { Router, withParams } from "itty-router"; -import { createServerContext } from "./context"; +import { createRequestContext } from "./RequestContext"; export function createRouter() { return ( Router() .get("/assets/*", (r, e, c) => { - const { assetService } = createServerContext(e, c); + const { assetService } = createRequestContext(e, c); return assetService.handleStaticAssets(r, e, c); }) .post("/api/contact", (r, e, c) => { - const { contactService } = createServerContext(e, c); + const { contactService } = createRequestContext(e, c); return contactService.handleContact(r); }) .post("/api/chat", (r, e, c) => { - const { chatService } = createServerContext(e, c); + const { chatService } = createRequestContext(e, c); return chatService.handleChatRequest(r); }) @@ -23,18 +23,18 @@ export function createRouter() { "/api/streams/:streamId", withParams, async ({ streamId }, env, ctx) => { - const { chatService } = createServerContext(env, ctx); + const { chatService } = createRequestContext(env, ctx); return chatService.handleSseStream(streamId); // Handles SSE for streamId }, ) .post("/api/feedback", async (r, e, c) => { - const { feedbackService } = createServerContext(e, c); + const { feedbackService } = createRequestContext(e, c); return feedbackService.handleFeedback(r); }) .post("/api/tx", async (r, e, c) => { - const { transactionService } = createServerContext(e, c); + const { transactionService } = createRequestContext(e, c); return transactionService.handleTransact(r); }) @@ -50,12 +50,12 @@ export function createRouter() { // }) .all("/api/metrics/*", async (r, e, c) => { - const { metricsService } = createServerContext(e, c); + const { metricsService } = createRequestContext(e, c); return metricsService.handleMetricsRequest(r); }) .get("*", async (r, e, c) => { - const { assetService } = createServerContext(e, c); + const { assetService } = createRequestContext(e, c); console.log("Request received:", { url: r.url, headers: r.headers }); diff --git a/wrangler.jsonc b/wrangler.jsonc new file mode 100644 index 0000000..9b5b244 --- /dev/null +++ b/wrangler.jsonc @@ -0,0 +1,54 @@ +{ + "name": "open-gsio", + "assets": { + "binding": "ASSETS", + "directory": "./dist/client" + }, + "dev": { + "ip": "localhost", + "port": 3001 + }, + "compatibility_date": "2025-04-04", + "compatibility_flags": [ + "nodejs_compat" + ], + "main": "./workers/site/worker.ts", + "preview_urls": false, + "workers_dev": false, + "kv_namespaces": [ + { + "binding": "KV_STORAGE", + // $ npx wrangler kv namespace create open-gsio + "id": "placeholderId", + // $ npx wrangler kv namespace create open-gsio --preview + "preview_id": "placeholderIdPreview" + } + ], + "migrations": [ + { + "new_classes": [ + "SiteCoordinator" + ], + "tag": "v1" + } + ], + "services": [ + { + "binding": "EMAIL_SERVICE", + "service": "email-service-rpc" + } + ], + + "durable_objects": { + "bindings": [ + { + "class_name": "SiteCoordinator", + "name": "SITE_COORDINATOR", + "script_name": "open-gsio" + } + ] + }, + "observability": { + "enabled": true + } +} \ No newline at end of file diff --git a/wrangler.toml b/wrangler.toml deleted file mode 100644 index bb4001a..0000000 --- a/wrangler.toml +++ /dev/null @@ -1,17 +0,0 @@ -main="./workers/site/worker.ts" -name = "geoff-seemueller-io" -compatibility_date = "2025-04-04" -workers_dev = false -dev.port = 3001 -dev.ip = "localhost" -observability.enabled = true -compatibility_flags = ["nodejs_compat"] -assets = { directory = "./dist/client", binding = "ASSETS" } -preview_urls = false -# wrangler.toml (wrangler v3.78.6^) - -# Dev configuration (local) -durable_objects.bindings = [{name = "SITE_COORDINATOR", class_name = "SiteCoordinator", script_name = "geoff-seemueller-io"}] -migrations = [{tag = "v1", new_classes = ["SiteCoordinator"]}] -kv_namespaces = [{binding = "KV_STORAGE", id = "placeholderId", preview_id = "placeholderIdPreview"}] -services = [{binding = "EMAIL_SERVICE", service = "email-service-rpc"}] \ No newline at end of file