@arcote.tech/arc-host 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +9 -9
- package/dist/index.js.map +3 -3
- package/dist/src/create-server.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/create-server.ts +19 -11
package/dist/index.js
CHANGED
|
@@ -1490,6 +1490,14 @@ async function createArcServer(config) {
|
|
|
1490
1490
|
if (contentLength > maxRequestBodySize) {
|
|
1491
1491
|
return Response.json({ error: "Payload too large" }, { status: 413, headers: corsHeaders2 });
|
|
1492
1492
|
}
|
|
1493
|
+
if (url.pathname === "/ws" && req.headers.get("Upgrade") === "websocket") {
|
|
1494
|
+
if (server2.upgrade(req, { data: { clientId: "" } }))
|
|
1495
|
+
return;
|
|
1496
|
+
return new Response("WebSocket upgrade failed", {
|
|
1497
|
+
status: 500,
|
|
1498
|
+
headers: corsHeaders2
|
|
1499
|
+
});
|
|
1500
|
+
}
|
|
1493
1501
|
const authHeader = req.headers.get("Authorization");
|
|
1494
1502
|
let rawToken = authHeader?.replace("Bearer ", "") || null;
|
|
1495
1503
|
if (!rawToken && config.allowTokenInQuery) {
|
|
@@ -1507,14 +1515,6 @@ async function createArcServer(config) {
|
|
|
1507
1515
|
if (rawToken && !tokenPayload) {
|
|
1508
1516
|
return Response.json({ error: "Unauthorized" }, { status: 401, headers: corsHeaders2 });
|
|
1509
1517
|
}
|
|
1510
|
-
if (url.pathname === "/ws" && req.headers.get("Upgrade") === "websocket") {
|
|
1511
|
-
if (server2.upgrade(req, { data: { clientId: "" } }))
|
|
1512
|
-
return;
|
|
1513
|
-
return new Response("WebSocket upgrade failed", {
|
|
1514
|
-
status: 500,
|
|
1515
|
-
headers: corsHeaders2
|
|
1516
|
-
});
|
|
1517
|
-
}
|
|
1518
1518
|
const reqCtx = { rawToken, tokenPayload, corsHeaders: corsHeaders2 };
|
|
1519
1519
|
for (const handler of httpHandlers) {
|
|
1520
1520
|
const response = await handler(req, url, reqCtx);
|
|
@@ -1655,5 +1655,5 @@ export {
|
|
|
1655
1655
|
ConnectionManager
|
|
1656
1656
|
};
|
|
1657
1657
|
|
|
1658
|
-
//# debugId=
|
|
1658
|
+
//# debugId=056178319A91BC6964756E2164756E21
|
|
1659
1659
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
"/**\n * CronScheduler\n *\n * Discovers aggregate cron methods from context elements and schedules them\n * using node-cron. For each cron trigger, queries all instances of the aggregate\n * and executes the command for each instance.\n */\n\nimport type { ArcContextAny, AggregateCronMethodEntry } from \"@arcote.tech/arc\";\nimport { Cron } from \"croner\";\nimport type { ContextHandler } from \"./context-handler\";\n\ninterface CronJob {\n entry: AggregateCronMethodEntry;\n task: Cron;\n}\n\nexport class CronScheduler {\n private jobs: CronJob[] = [];\n private contextHandler: ContextHandler;\n\n constructor(contextHandler: ContextHandler) {\n this.contextHandler = contextHandler;\n }\n\n /**\n * Discover cron methods from all aggregates in the context and start scheduling.\n */\n start(): void {\n const context = this.contextHandler.context;\n const cronEntries = this.discoverCronMethods(context);\n\n if (cronEntries.length === 0) return;\n\n console.log(\n `[ARC:Cron] Discovered ${cronEntries.length} cron method(s):`,\n );\n\n for (const entry of cronEntries) {\n console.log(\n `[ARC:Cron] ${entry.aggregateName}.${entry.methodName} → \"${entry.cronExpression}\"`,\n );\n\n const task = new Cron(entry.cronExpression, async () => {\n await this.executeCronMethod(entry);\n });\n\n this.jobs.push({ entry, task });\n }\n }\n\n /**\n * Stop all cron jobs.\n */\n stop(): void {\n for (const job of this.jobs) {\n job.task.stop();\n }\n this.jobs = [];\n console.log(\"[ARC:Cron] All cron jobs stopped.\");\n }\n\n /**\n * Extract cron method entries from all aggregate context elements.\n */\n private discoverCronMethods(\n context: ArcContextAny,\n ): AggregateCronMethodEntry[] {\n const entries: AggregateCronMethodEntry[] = [];\n\n for (const element of context.elements) {\n const ctor = (element as any).ctor;\n if (ctor?.__aggregateCronMethods) {\n entries.push(...ctor.__aggregateCronMethods);\n }\n }\n\n return entries;\n }\n\n /**\n * Execute a cron method for all instances of the aggregate.\n */\n private async executeCronMethod(\n entry: AggregateCronMethodEntry,\n ): Promise<void> {\n const commandName = `${entry.aggregateName}.${entry.methodName}`;\n\n try {\n // Query all instances of this aggregate\n const dataStorage = this.contextHandler.getDataStorage();\n const store = dataStorage.getStore<any>(entry.aggregateName);\n const instances = await store.find({});\n\n if (instances.length === 0) {\n console.log(\n `[ARC:Cron] ${commandName}: no instances found, skipping.`,\n );\n return;\n }\n\n console.log(\n `[ARC:Cron] ${commandName}: executing for ${instances.length} instance(s)...`,\n );\n\n for (const instance of instances) {\n try {\n await this.contextHandler.executeCommand(\n commandName,\n { _id: instance._id },\n null,\n { internal: true },\n );\n } catch (error) {\n console.error(\n `[ARC:Cron] ${commandName} failed for instance ${instance._id}:`,\n error,\n );\n }\n }\n } catch (error) {\n console.error(`[ARC:Cron] ${commandName} failed:`, error);\n }\n }\n}\n",
|
|
10
10
|
"import type { ArcRouteAny } from \"@arcote.tech/arc\";\nimport { ArcValidationError, arcErrorStatus, ScopedModel } from \"@arcote.tech/arc\";\nimport type { ConnectionManager } from \"../connection-manager\";\nimport type { ContextHandler } from \"../context-handler\";\nimport type { ArcHttpHandler, ArcRequestContext } from \"./types\";\n\n// ---------------------------------------------------------------------------\n// Error → HTTP mapping\n//\n// Typed Arc errors map to 400/401/403 with safe bodies. Anything else is an\n// unexpected failure → 500 with a GENERIC message (never leak error.message\n// or stack to the client).\n// ---------------------------------------------------------------------------\n\nfunction errorBody(error: unknown): { status: number; body: Record<string, any> } {\n const status = arcErrorStatus(error) ?? 500;\n if (error instanceof ArcValidationError) {\n return { status, body: { error: \"Invalid parameters\", fields: error.fields } };\n }\n if (status === 401) return { status, body: { error: \"Unauthorized\" } };\n if (status === 403) return { status, body: { error: \"Forbidden\" } };\n return { status: 500, body: { error: \"Internal server error\" } };\n}\n\n// ---------------------------------------------------------------------------\n// Shared\n// ---------------------------------------------------------------------------\n\nasync function parseCommandParams(req: Request): Promise<any> {\n const contentType = req.headers.get(\"Content-Type\") || \"\";\n if (contentType.includes(\"multipart/form-data\")) {\n const formData = await req.formData();\n const params: Record<string, any> = {};\n for (const [key, value] of formData.entries()) {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"name\" in value &&\n \"size\" in value\n ) {\n params[key] = value;\n } else {\n try {\n params[key] = JSON.parse(value as string);\n } catch {\n params[key] = value;\n }\n }\n }\n return params;\n }\n return await req.json();\n}\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport function healthHandler(cm: ConnectionManager): ArcHttpHandler {\n return (_req, url, ctx) => {\n if (url.pathname !== \"/health\") return null;\n return Response.json(\n { status: \"ok\", clients: cm.clientCount },\n { headers: ctx.corsHeaders },\n );\n };\n}\n\n// ---------------------------------------------------------------------------\n// Command — POST /command/:name\n// ---------------------------------------------------------------------------\n\nexport function commandHandler(ch: ContextHandler): ArcHttpHandler {\n return async (req, url, ctx) => {\n if (!url.pathname.startsWith(\"/command/\") || req.method !== \"POST\")\n return null;\n\n const commandName = url.pathname.split(\"/command/\")[1];\n if (!commandName) {\n return new Response(\"Invalid command path\", {\n status: 400,\n headers: ctx.corsHeaders,\n });\n }\n\n try {\n const params = await parseCommandParams(req);\n const result = await ch.executeCommand(\n commandName,\n params,\n ctx.rawToken,\n );\n return Response.json(result ?? { success: true }, {\n headers: ctx.corsHeaders,\n });\n } catch (error) {\n const { status, body } = errorBody(error);\n if (status === 500) {\n console.error(`[ARC] Command '${commandName}' error:`, error);\n }\n return Response.json(body, { status, headers: ctx.corsHeaders });\n }\n };\n}\n\n// ---------------------------------------------------------------------------\n// Query — POST /query/:viewName\n// ---------------------------------------------------------------------------\n\nexport function queryHandler(ch: ContextHandler): ArcHttpHandler {\n return async (req, url, ctx) => {\n if (!url.pathname.startsWith(\"/query/\") || req.method !== \"POST\")\n return null;\n\n const viewName = url.pathname.split(\"/query/\")[1];\n if (!viewName) {\n return new Response(\"Invalid query path\", {\n status: 400,\n headers: ctx.corsHeaders,\n });\n }\n\n try {\n const params = await req.json();\n const viewElement = ch.getModel().context.get(viewName) as any;\n if (!viewElement?.queryContext) {\n return Response.json(\n { error: \"View not found\" },\n { status: 404, headers: ctx.corsHeaders },\n );\n }\n\n const scoped = new ScopedModel(ch.getModel(), \"request\");\n if (ctx.rawToken) scoped.setToken(ctx.rawToken);\n const queryCtx = viewElement.queryContext(scoped.getAdapters());\n const result = await queryCtx.find(params);\n\n return Response.json(result, { headers: ctx.corsHeaders });\n } catch (error) {\n const { status, body } = errorBody(error);\n if (status === 500) console.error(`[ARC] Query error:`, error);\n return Response.json(body, { status, headers: ctx.corsHeaders });\n }\n };\n}\n\n// ---------------------------------------------------------------------------\n// Event Sync — POST /sync/events\n// ---------------------------------------------------------------------------\n\nexport function eventSyncHandler(ch: ContextHandler): ArcHttpHandler {\n return async (req, url, ctx) => {\n if (url.pathname !== \"/sync/events\" || req.method !== \"POST\") return null;\n\n try {\n const body = await req.json();\n const events = body.events || [];\n const persisted = await ch.persistEvents(\n events.map((e: any) => ({\n localId: e.localId,\n type: e.type,\n payload: e.payload,\n createdAt: e.createdAt,\n })),\n \"http-sync\",\n ctx.tokenPayload,\n );\n return Response.json(\n { success: true, syncedIds: persisted.map((e) => e.localId) },\n { headers: ctx.corsHeaders },\n );\n } catch (error) {\n const { status, body } = errorBody(error);\n if (status === 500) console.error(`[ARC] Event sync error:`, error);\n return Response.json(\n { success: false, ...body },\n { status, headers: ctx.corsHeaders },\n );\n }\n };\n}\n\n// ---------------------------------------------------------------------------\n// Route — /route/*\n// ---------------------------------------------------------------------------\n\nexport function routeHandler(ch: ContextHandler): ArcHttpHandler {\n return async (req, url, ctx) => {\n if (!url.pathname.startsWith(\"/route/\")) return null;\n\n const method = req.method as \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\";\n const context = ch.getModel().context;\n let matchedRoute: ArcRouteAny | null = null;\n let routeParams: Record<string, string> = {};\n\n for (const element of context.elements) {\n if (element && typeof (element as any).matchesPath === \"function\") {\n const route = element as ArcRouteAny;\n const match = route.matchesPath(url.pathname);\n if (match.matches) {\n matchedRoute = route;\n routeParams = match.params;\n break;\n }\n }\n }\n\n if (!matchedRoute) {\n return Response.json(\n { error: \"Route not found\" },\n { status: 404, headers: ctx.corsHeaders },\n );\n }\n\n const handler = matchedRoute.getHandler(method);\n if (!handler) {\n return Response.json(\n { error: `Method ${method} not allowed` },\n { status: 405, headers: ctx.corsHeaders },\n );\n }\n\n // Protection checks\n if (!matchedRoute.isPublic && matchedRoute.hasProtections) {\n if (!ctx.tokenPayload) {\n return Response.json(\n { error: \"Unauthorized\" },\n { status: 401, headers: ctx.corsHeaders },\n );\n }\n let isAuthorized = false;\n for (const protection of matchedRoute.protections) {\n if (protection.token.name === ctx.tokenPayload.tokenType) {\n const mockTokenInstance = {\n params: ctx.tokenPayload.params,\n getTokenDefinition: () => protection.token,\n };\n const allowed = await protection.check(mockTokenInstance as any);\n if (allowed) {\n isAuthorized = true;\n break;\n }\n }\n }\n if (!isAuthorized) {\n return Response.json(\n { error: \"Forbidden\" },\n { status: 403, headers: ctx.corsHeaders },\n );\n }\n } else if (!matchedRoute.isPublic && !matchedRoute.hasProtections) {\n if (!ctx.tokenPayload) {\n return Response.json(\n { error: \"Unauthorized\" },\n { status: 401, headers: ctx.corsHeaders },\n );\n }\n }\n\n // Build route context with scoped auth\n const scoped = new ScopedModel(ch.getModel(), \"request\");\n if (ctx.rawToken) scoped.setToken(ctx.rawToken);\n\n const authParams = ctx.tokenPayload\n ? {\n params: ctx.tokenPayload.params,\n tokenName: ctx.tokenPayload.tokenType,\n }\n : undefined;\n\n const routeContext = matchedRoute.buildContext(\n scoped.getAdapters(),\n authParams,\n );\n\n try {\n const response = await handler(routeContext, req, routeParams, url);\n const newHeaders = new Headers(response.headers);\n for (const [key, value] of Object.entries(ctx.corsHeaders))\n newHeaders.set(key, value);\n const body =\n response.status >= 300 && response.status < 400\n ? null\n : response.body;\n return new Response(body, {\n status: response.status,\n statusText: response.statusText,\n headers: newHeaders,\n });\n } catch (error) {\n const { status, body: errBody } = errorBody(error);\n if (status === 500) console.error(`[ARC] Route error:`, error);\n return Response.json(errBody, { status, headers: ctx.corsHeaders });\n }\n };\n}\n\n// ---------------------------------------------------------------------------\n// Convenience: all Arc HTTP handlers\n// ---------------------------------------------------------------------------\n\nexport function arcHttpHandlers(\n ch: ContextHandler,\n cm: ConnectionManager,\n): ArcHttpHandler[] {\n return [\n healthHandler(cm),\n commandHandler(ch),\n queryHandler(ch),\n eventSyncHandler(ch),\n routeHandler(ch),\n ];\n}\n",
|
|
11
11
|
"import { applyQueryChanges, LiveQuery } from \"@arcote.tech/arc\";\nimport { filterEventsForTokens } from \"../event-auth\";\nimport type { ArcWsHandler } from \"./types\";\n\n// ---------------------------------------------------------------------------\n// Live query subscriptions\n//\n// One LiveQuery per (scope, descriptor, token) — clients subscribed to the\n// SAME query with the SAME token share a single server-side LiveQuery, so a\n// mutation triggers one re-execute + diff instead of one per subscriber\n// (packages/benchmarks/FINDINGS.md, F-08). The token is part of the key\n// because protectBy restrictions make results token-specific. ALL query\n// logic — execution, token restrictions, change detection, delta\n// computation — lives in core's LiveQuery (query layer); this module only\n// fans its updates out over WS.\n// ---------------------------------------------------------------------------\n\ninterface SharedQueryEntry {\n live: LiveQuery;\n /** clientId → subscriptionIds subscribed under this shared query. */\n subscribers: Map<string, Set<string>>;\n /**\n * Mirror of the current result — late joiners get their snapshot from it\n * without re-executing. Maintained by the same update stream the clients\n * receive, so it can't diverge from what they hold.\n */\n lastResult: unknown;\n /** start() resolved and the initial snapshot is trustworthy. */\n ready: boolean;\n}\n\n/** sharedKey → entry. */\nconst sharedQueries = new Map<string, SharedQueryEntry>();\n/** clientId → subscriptionId → sharedKey (reverse index for cleanup). */\nconst clientSubKeys = new Map<string, Map<string, string>>();\n\nfunction sharedKeyFor(\n descriptor: unknown,\n scope: string,\n rawToken: string | null,\n): string {\n // JSON tablicy = jednoznaczny klucz bez założeń o separatorach.\n return JSON.stringify([scope, rawToken, descriptor]);\n}\n\nfunction detachSub(\n clientId: string,\n subscriptionId: string,\n sharedKey: string,\n): void {\n const entry = sharedQueries.get(sharedKey);\n if (!entry) return;\n const subs = entry.subscribers.get(clientId);\n if (subs) {\n subs.delete(subscriptionId);\n if (subs.size === 0) entry.subscribers.delete(clientId);\n }\n if (entry.subscribers.size === 0) {\n entry.live.stop();\n sharedQueries.delete(sharedKey);\n }\n}\n\nexport function cleanupClientSubs(clientId: string): void {\n const keys = clientSubKeys.get(clientId);\n if (keys) {\n for (const [subscriptionId, sharedKey] of keys) {\n detachSub(clientId, subscriptionId, sharedKey);\n }\n clientSubKeys.delete(clientId);\n }\n}\n\n// ---------------------------------------------------------------------------\n// scope:auth\n// ---------------------------------------------------------------------------\n\nexport function scopeAuthHandler(): ArcWsHandler {\n return async (client, message, ctx) => {\n if (message.type !== \"scope:auth\") return false;\n const decoded = await ctx.verifyToken(message.token);\n if (decoded) {\n ctx.connectionManager.setScopeToken(\n client.id,\n message.scope,\n decoded,\n message.token,\n );\n }\n return true;\n };\n}\n\n// ---------------------------------------------------------------------------\n// sync-events — persist + broadcast\n// ---------------------------------------------------------------------------\n\nexport function syncEventsHandler(): ArcWsHandler {\n return async (client, message, ctx) => {\n if (message.type !== \"sync-events\") return false;\n\n // NOTE: sync-events alone does NOT mark the client as local-mode —\n // streaming clients also push their optimistic mutations through it.\n // Only request-sync (local-mode catch-up) sets `wantsEventSync`.\n\n const allTokens = ctx.connectionManager.getAllScopeTokens(client.id);\n const token = allTokens.length > 0 ? allTokens[0] : null;\n\n const persisted = await ctx.contextHandler.persistEvents(\n message.events,\n client.id,\n token,\n );\n if (persisted.length === 0) return true;\n\n // Broadcast to other authorized LOCAL-MODE clients\n for (const c of ctx.connectionManager.getAllClients()) {\n if (c.id === client.id) continue;\n if (!c.wantsEventSync) continue;\n const clientTokens = ctx.connectionManager.getAllScopeTokens(c.id);\n const authorized = filterEventsForTokens(\n clientTokens,\n persisted,\n ctx.contextHandler.getEventDefinitions(),\n );\n if (authorized.length > 0) {\n ctx.connectionManager.sendToClient(c.id, {\n type: \"events\",\n events: authorized,\n });\n }\n }\n\n const last = persisted[persisted.length - 1];\n ctx.connectionManager.updateLastSyncedEventId(client.id, last.hostId);\n ctx.connectionManager.sendToClient(client.id, {\n type: \"sync-complete\",\n lastHostEventId: last.hostId,\n });\n return true;\n };\n}\n\n// ---------------------------------------------------------------------------\n// request-sync — initial sync or catch-up\n// ---------------------------------------------------------------------------\n\nexport function requestSyncHandler(): ArcWsHandler {\n return async (client, message, ctx) => {\n if (message.type !== \"request-sync\") return false;\n\n // Only local-mode clients request the event log (streaming clients use\n // view replicas) — mark so domain-event broadcasts reach this client.\n client.wantsEventSync = true;\n\n const allTokens = ctx.connectionManager.getAllScopeTokens(client.id);\n const token = allTokens.length > 0 ? allTokens[0] : null;\n const events = await ctx.contextHandler.getEventsSince(\n message.lastHostEventId,\n token,\n );\n\n ctx.connectionManager.sendToClient(client.id, {\n type: \"events\",\n events,\n });\n\n if (events.length > 0) {\n const last = events[events.length - 1];\n ctx.connectionManager.updateLastSyncedEventId(client.id, last.hostId);\n ctx.connectionManager.sendToClient(client.id, {\n type: \"sync-complete\",\n lastHostEventId: last.hostId,\n });\n } else {\n ctx.connectionManager.sendToClient(client.id, {\n type: \"sync-complete\",\n lastHostEventId: message.lastHostEventId || \"\",\n });\n }\n return true;\n };\n}\n\n// ---------------------------------------------------------------------------\n// execute-command\n// ---------------------------------------------------------------------------\n\nexport function executeCommandHandler(): ArcWsHandler {\n return async (client, message, ctx) => {\n if (message.type !== \"execute-command\") return false;\n\n let rawToken: string | null = null;\n if (client.scopeTokens.size > 0) {\n rawToken = client.scopeTokens.values().next().value!.raw;\n }\n\n try {\n const result = await ctx.contextHandler.executeCommand(\n message.commandName,\n message.params,\n rawToken,\n );\n ctx.connectionManager.sendToClient(client.id, {\n type: \"command-result\",\n requestId: message.requestId,\n result,\n });\n } catch (error) {\n ctx.connectionManager.sendToClient(client.id, {\n type: \"command-result\",\n requestId: message.requestId,\n error: (error as Error).message,\n });\n }\n return true;\n };\n}\n\n// ---------------------------------------------------------------------------\n// subscribe-query / unsubscribe-query — live query subscriptions\n// ---------------------------------------------------------------------------\n\nexport function querySubscriptionHandler(): ArcWsHandler {\n return async (client, message, ctx) => {\n if (message.type === \"subscribe-query\") {\n const { subscriptionId, descriptor } = message;\n const scope: string = message.scope ?? \"default\";\n\n // Pick the token matching the requested scope\n const scopeToken = client.scopeTokens.get(scope) ?? null;\n let rawToken = scopeToken?.raw ?? null;\n\n // Fallback to first available token if no scope match\n if (!rawToken && client.scopeTokens.size > 0) {\n rawToken = client.scopeTokens.values().next().value!.raw;\n }\n\n // Re-subscribe with the same id (reconnect resend) — drop the old one\n const prevKey = clientSubKeys.get(client.id)?.get(subscriptionId);\n if (prevKey) detachSub(client.id, subscriptionId, prevKey);\n\n const sharedKey = sharedKeyFor(descriptor, scope, rawToken);\n const attach = (entry: SharedQueryEntry) => {\n if (!entry.subscribers.has(client.id)) {\n entry.subscribers.set(client.id, new Set());\n }\n entry.subscribers.get(client.id)!.add(subscriptionId);\n if (!clientSubKeys.has(client.id)) {\n clientSubKeys.set(client.id, new Map());\n }\n clientSubKeys.get(client.id)!.set(subscriptionId, sharedKey);\n };\n\n const existing = sharedQueries.get(sharedKey);\n if (existing && existing.ready) {\n // Late joiner — snapshot from the mirror, no re-execute.\n attach(existing);\n ctx.connectionManager.sendToClient(client.id, {\n type: \"query-snapshot\",\n subscriptionId,\n result: existing.lastResult ?? null,\n });\n return true;\n }\n if (existing) {\n // start() in flight (another subscriber won the race) — attach;\n // the starter's post-start broadcast covers this subscription too.\n attach(existing);\n return true;\n }\n\n const entry: SharedQueryEntry = {\n live: null as unknown as LiveQuery,\n subscribers: new Map(),\n lastResult: null,\n ready: false,\n };\n entry.live = new LiveQuery(\n ctx.contextHandler.getModel(),\n descriptor,\n scope,\n rawToken,\n (update) => {\n // Keep the mirror in the same sequence the clients apply.\n if (update.type === \"changes\") {\n if (Array.isArray(entry.lastResult)) {\n entry.lastResult = applyQueryChanges(\n entry.lastResult as Array<{ _id: string }>,\n update.changes,\n );\n }\n } else {\n entry.lastResult = update.result ?? null;\n }\n for (const [subClientId, subIds] of entry.subscribers) {\n for (const subId of subIds) {\n ctx.connectionManager.sendToClient(\n subClientId,\n update.type === \"changes\"\n ? {\n type: \"query-changes\",\n subscriptionId: subId,\n changes: update.changes,\n }\n : {\n type: \"query-snapshot\",\n subscriptionId: subId,\n result: update.result ?? null,\n },\n );\n }\n }\n },\n );\n sharedQueries.set(sharedKey, entry);\n attach(entry);\n\n try {\n const result = await entry.live.start();\n entry.lastResult = result ?? null;\n entry.ready = true;\n // Initial snapshot for EVERY subscription attached so far — the\n // starter and any joiners that raced into the start window.\n for (const [subClientId, subIds] of entry.subscribers) {\n for (const subId of subIds) {\n ctx.connectionManager.sendToClient(subClientId, {\n type: \"query-snapshot\",\n subscriptionId: subId,\n result: result ?? null,\n });\n }\n }\n // Catch-up pass AFTER the snapshot went out — diffs out any commit\n // that slipped into the initial-execute window.\n entry.live.flush();\n } catch (err) {\n entry.live.stop();\n sharedQueries.delete(sharedKey);\n for (const subClientId of entry.subscribers.keys()) {\n const keys = clientSubKeys.get(subClientId);\n if (keys) {\n for (const [subId, key] of keys) {\n if (key === sharedKey) keys.delete(subId);\n }\n }\n }\n console.error(\n `[Arc] Query subscription error (${descriptor?.element}.${descriptor?.method}):`,\n err,\n );\n ctx.connectionManager.sendToClient(client.id, {\n type: \"error\",\n message: `Failed to subscribe to query \"${descriptor?.element}.${descriptor?.method}\"`,\n });\n }\n return true;\n }\n\n if (message.type === \"unsubscribe-query\") {\n const key = clientSubKeys.get(client.id)?.get(message.subscriptionId);\n if (key) {\n detachSub(client.id, message.subscriptionId, key);\n clientSubKeys.get(client.id)?.delete(message.subscriptionId);\n }\n return true;\n }\n\n return false;\n };\n}\n\n// ---------------------------------------------------------------------------\n// Convenience: all Arc WS handlers\n// ---------------------------------------------------------------------------\n\nexport function arcWsHandlers(): ArcWsHandler[] {\n return [\n scopeAuthHandler(),\n syncEventsHandler(),\n requestSyncHandler(),\n executeCommandHandler(),\n querySubscriptionHandler(),\n ];\n}\n",
|
|
12
|
-
"import type { ArcContextAny, DatabaseAdapter } from \"@arcote.tech/arc\";\nimport type { ArcTelemetry, Span } from \"@arcote.tech/arc-otel\";\nimport type { Server } from \"bun\";\nimport { ConnectionManager } from \"./connection-manager\";\nimport { ContextHandler } from \"./context-handler\";\nimport { CronScheduler } from \"./cron-scheduler\";\nimport {\n arcHttpHandlers,\n arcWsHandlers,\n cleanupClientSubs,\n} from \"./middleware\";\nimport type {\n ArcHttpHandler,\n ArcRequestContext,\n ArcWsContext,\n ArcWsHandler,\n} from \"./middleware/types\";\nimport type { TokenPayload } from \"./types\";\n\ntype WebSocketData = { clientId: string };\n\nexport interface ArcServerConfig {\n context: ArcContextAny;\n dbAdapterFactory: (ctx: any) => Promise<DatabaseAdapter>;\n httpHandlers?: ArcHttpHandler[];\n wsHandlers?: ArcWsHandler[];\n port?: number;\n jwtSecret?: string;\n /** Extra callback when a WS client disconnects (e.g. to clean up platform state) */\n onWsClose?: (clientId: string) => void;\n /**\n * Cross-origin isolation policy. Default `\"unsafe-none\"` — pozwala apps\n * ładować cross-origin scripty/iframe'y (np. PayU Secure Form, Stripe Elements,\n * Google Maps) bez wymagania `Cross-Origin-Resource-Policy` po stronie ich CDN.\n *\n * Ustaw `\"require-corp\"` JEŚLI apps potrzebuje `SharedArrayBuffer` (SQLite WASM\n * persistent storage / OPFS, FFmpeg WASM, niektóre crypto libs). Wtedy KAŻDY\n * cross-origin resource musi mieć `Cross-Origin-Resource-Policy: cross-origin`\n * lub być załadowany przez `crossorigin=\"anonymous\"` z `Access-Control-Allow-Origin`\n * — co najczęściej wymaga proxy przez własny serwer.\n *\n * `\"credentialless\"` to middle ground (Chromium-only) — pozwala cross-origin\n * scripty bez CORP, jeśli request leci bez credentials.\n */\n coep?: \"unsafe-none\" | \"credentialless\" | \"require-corp\";\n /**\n * Allowlist of origins permitted for credentialed CORS. When set, only these\n * origins are reflected into `Access-Control-Allow-Origin` (with\n * `Allow-Credentials: true`). When unset, the server reflects the request\n * Origin but WITHOUT `Allow-Credentials` (no credentialed cross-origin reads).\n */\n corsOrigins?: string[];\n /**\n * Zgoda na Private Network Access (Chrome) — nagłówek\n * `Access-Control-Allow-Private-Network` na preflighcie. Default false.\n *\n * Ma sens WYŁĄCZNIE w dev: pozwala hostowanej stronie (https) sięgnąć do\n * serwera na localhoscie dewelopera. Na produkcji aplikacja nie jest zasobem\n * sieci prywatnej, więc zgoda jest bezprzedmiotowa — i lepiej jej nie\n * rozdawać odruchowo.\n */\n allowPrivateNetwork?: boolean;\n /** Max request body size in bytes (default 10 MB). Larger → 413. */\n maxRequestBodySize?: number;\n /** Extra security headers merged onto every response (override defaults). */\n securityHeaders?: Record<string, string>;\n /**\n * Accept the auth token from the `?token=` query string. Default false —\n * tokens in URLs leak to logs/Referer. Clients send tokens via the\n * `Authorization` header or (for WS) the `scope:auth` message.\n */\n allowTokenInQuery?: boolean;\n /** Optional OpenTelemetry instance. When provided, the HTTP fetch handler\n * and WS message dispatch are wrapped in spans, with parent context\n * extracted from `traceparent` (header / message field). All nested\n * handler code automatically attaches to the active span. */\n telemetry?: ArcTelemetry;\n}\n\nexport interface ArcServer {\n server: Server<WebSocketData>;\n contextHandler: ContextHandler;\n connectionManager: ConnectionManager;\n cronScheduler: CronScheduler;\n stop: () => void;\n}\n\n/**\n * Create an Arc server with composable HTTP + WS middleware.\n *\n * By default includes all Arc handlers (command, query, stream, route, eventSync, health,\n * scope:auth, sync-events, request-sync, execute-command, view subscriptions).\n * Platform servers add their own handlers on top.\n */\nexport async function createArcServer(\n config: ArcServerConfig,\n): Promise<ArcServer> {\n const port = config.port || 5005;\n\n // Init context handler — telemetry (if any) flows through so executeCommand\n // emits `command.<name>` spans parented to the active HTTP/WS span.\n // DB adapter wrapping (per-transaction spans) is the caller's\n // responsibility: pass an already-wrapped `dbAdapterFactory` if\n // db spans are wanted. We don't `import()` arc-otel from here because\n // doing so bundles its OTel SDK transitively into arc-host's dist,\n // which then duplicates the @opentelemetry/api singleton when the CLI\n // bundles arc-otel directly — leading to two global tracer providers\n // and silent span loss.\n const dbAdapter = config.dbAdapterFactory(config.context);\n const contextHandler = new ContextHandler(\n config.context,\n dbAdapter,\n config.telemetry,\n );\n await contextHandler.init();\n\n // Start cron scheduler\n const cronScheduler = new CronScheduler(contextHandler);\n cronScheduler.start();\n\n const connectionManager = new ConnectionManager();\n\n // Serializacja przetwarzania wiadomości WS PER-KLIENT. WebSocket dostarcza\n // wiadomości w kolejności, a klient wysyła `scope:auth` PRZED `subscribe-query`\n // (event-wire onopen), ale Bun woła `message()` współbieżnie — bez tego\n // `subscribe-query` (czyta token synchronicznie) wyprzedza jeszcze-trwający\n // `scope:auth` (`await verifyToken`), więc LiveQuery bindują się pod null\n // tokenem → `protectedBy` denied → query wisi (getMine po pełnym page-loadzie).\n // Łańcuch obietnic per client.id gwarantuje przetwarzanie W KOLEJNOŚCI.\n const messageChains = new Map<string, Promise<void>>();\n\n // Default unsafe-none — większość apps (bez SAB) korzysta z 3rd-party\n // widgetów (payment, maps, oauth iframes) które nie wysyłają CORP.\n // Apps z SQLite WASM/OPFS świadomie przełączają na require-corp przez\n // `coep` w ArcServerConfig.\n const coep = config.coep ?? \"unsafe-none\";\n const corsOrigins = config.corsOrigins;\n const allowPrivateNetwork = config.allowPrivateNetwork ?? false;\n const maxRequestBodySize = config.maxRequestBodySize ?? 10 * 1024 * 1024;\n const securityHeaders: Record<string, string> = {\n \"X-Content-Type-Options\": \"nosniff\",\n \"X-Frame-Options\": \"DENY\",\n \"Referrer-Policy\": \"no-referrer\",\n ...(config.securityHeaders ?? {}),\n };\n\n function buildCorsHeaders(req?: Request): Record<string, string> {\n const origin = req?.headers.get(\"Origin\") || null;\n const headers: Record<string, string> = {\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, DELETE, PATCH, OPTIONS\",\n // `X-Arc-Pairing-Token` — discovery woła HOST Z PRZEGLĄDARKI (cross-origin),\n // więc bez tego nagłówka na liście preflight blokuje żądanie i parowanie\n // wygląda jak „serwer nie odpowiada\". (Rejestracja jest server→server,\n // tam CORS nie obowiązuje.)\n \"Access-Control-Allow-Headers\":\n \"Content-Type, Authorization, X-Arc-Scope, X-Arc-Tokens, X-Arc-Pairing-Token\",\n // Cross-origin isolation — patrz `coep` w ArcServerConfig.\n \"Cross-Origin-Opener-Policy\": \"same-origin\",\n \"Cross-Origin-Embedder-Policy\": coep,\n \"Cross-Origin-Resource-Policy\": \"cross-origin\",\n ...securityHeaders,\n };\n\n if (corsOrigins && corsOrigins.length > 0) {\n // Allowlist mode: reflect only listed origins, with credentials.\n if (origin && corsOrigins.includes(origin)) {\n headers[\"Access-Control-Allow-Origin\"] = origin;\n headers[\"Access-Control-Allow-Credentials\"] = \"true\";\n headers[\"Vary\"] = \"Origin\";\n }\n // Origin not allowed → no ACAO header (browser blocks the read).\n } else {\n // No allowlist: reflect origin for convenience but WITHOUT credentials\n // (never combine an arbitrary reflected origin with Allow-Credentials).\n headers[\"Access-Control-Allow-Origin\"] = origin ?? \"*\";\n if (origin) headers[\"Vary\"] = \"Origin\";\n }\n return headers;\n }\n const corsHeaders = buildCorsHeaders();\n\n // JWT verification is owned by the ContextHandler (single, transport-agnostic\n // source — also used by in-process executeRoute). The HTTP boundary delegates.\n const verifyToken = (token: string): Promise<TokenPayload | null> =>\n contextHandler.verifyToken(token);\n\n // Build handler chains — Arc defaults + user-provided extras\n const defaultHttp = arcHttpHandlers(contextHandler, connectionManager);\n const defaultWs = arcWsHandlers();\n\n const httpHandlers = config.httpHandlers\n ? [...defaultHttp, ...config.httpHandlers]\n : defaultHttp;\n\n const wsHandlers = config.wsHandlers\n ? [...defaultWs, ...config.wsHandlers]\n : defaultWs;\n\n const wsCtx: ArcWsContext = {\n contextHandler,\n connectionManager,\n verifyToken,\n };\n\n const server = Bun.serve<WebSocketData>({\n port,\n idleTimeout: 255,\n\n async fetch(req, server) {\n const url = new URL(req.url);\n const corsHeaders = buildCorsHeaders(req);\n\n if (req.method === \"OPTIONS\") {\n // Private Network Access (Chrome): preflight public→local (hostowany\n // host federacji → localhost dewelopera) wymaga jawnej zgody. Tylko gdy\n // host o to poprosi (`allowPrivateNetwork`) — w prod bezprzedmiotowe.\n // Typ jawny: bez niego gałąź `{}` infekuje się jako\n // `{ \"Access-Control-Allow-Private-Network\"?: undefined }`, a spread\n // takiej unii nie pasuje do `HeadersInit` (błąd dopiero przy emisji\n // deklaracji, nie w `bun build`).\n const pna: Record<string, string> =\n allowPrivateNetwork &&\n req.headers.get(\"Access-Control-Request-Private-Network\")\n ? { \"Access-Control-Allow-Private-Network\": \"true\" }\n : {};\n return new Response(null, { headers: { ...corsHeaders, ...pna } });\n }\n\n // Inner request body — extracted so we can wrap it in an HTTP span\n // when telemetry is enabled. The wrap MUST set the active context\n // (via runWithExtractedContext + startSpan) so nested handlers'\n // spans attach to this one as parent.\n const handleRequest = async (span: Span | undefined): Promise<Response> => {\n // Reject oversized requests before reading the body (DoS guard).\n const contentLength = Number(req.headers.get(\"Content-Length\") ?? 0);\n if (contentLength > maxRequestBodySize) {\n return Response.json(\n { error: \"Payload too large\" },\n { status: 413, headers: corsHeaders },\n );\n }\n\n const authHeader = req.headers.get(\"Authorization\");\n let rawToken: string | null = authHeader?.replace(\"Bearer \", \"\") || null;\n\n // Token in query string is off by default (leaks to logs/Referer).\n if (!rawToken && config.allowTokenInQuery) {\n rawToken = url.searchParams.get(\"token\");\n }\n\n if (!rawToken) {\n const cookieHeader = req.headers.get(\"Cookie\");\n if (cookieHeader) {\n const match = cookieHeader.match(/arc_token=([^;]+)/);\n if (match) rawToken = decodeURIComponent(match[1]);\n }\n }\n const tokenPayload = rawToken ? await verifyToken(rawToken) : null;\n\n // A presented-but-invalid token (forged / wrong secret / expired) is\n // rejected globally — never silently downgraded to anonymous.\n if (rawToken && !tokenPayload) {\n return Response.json(\n { error: \"Unauthorized\" },\n { status: 401, headers: corsHeaders },\n );\n }\n\n if (\n url.pathname === \"/ws\" &&\n req.headers.get(\"Upgrade\") === \"websocket\"\n ) {\n if (server.upgrade(req, { data: { clientId: \"\" } })) return undefined as unknown as Response;\n return new Response(\"WebSocket upgrade failed\", {\n status: 500,\n headers: corsHeaders,\n });\n }\n\n const reqCtx: ArcRequestContext = { rawToken, tokenPayload, corsHeaders };\n for (const handler of httpHandlers) {\n const response = await handler(req, url, reqCtx);\n if (response) {\n span?.setAttribute(\"http.response.status_code\", response.status);\n return response;\n }\n }\n span?.setAttribute(\"http.response.status_code\", 404);\n return new Response(\"Not Found\", { status: 404, headers: corsHeaders });\n };\n\n const telemetry = config.telemetry;\n if (!telemetry) return handleRequest(undefined);\n\n return telemetry.runWithExtractedContext(req.headers, () =>\n telemetry.startSpan(\n `${req.method} ${url.pathname}`,\n (span) => handleRequest(span),\n {\n kind: 2 /* SpanKind.SERVER */,\n attributes: {\n \"http.request.method\": req.method,\n \"http.route\": url.pathname,\n \"url.scheme\": url.protocol.replace(\":\", \"\"),\n \"url.path\": url.pathname,\n \"server.address\": url.host,\n \"user_agent.original\": req.headers.get(\"user-agent\") ?? undefined,\n },\n },\n ),\n );\n },\n\n websocket: {\n open(ws) {\n connectionManager.addClient(ws as any);\n config.telemetry?.addUpDown(\"arc.ws.active_connections\", 1);\n },\n async message(ws, messageStr) {\n const client = connectionManager.getClientByWs(ws as any);\n if (!client) return;\n\n let message: any;\n try {\n message = JSON.parse(messageStr as string);\n } catch (error) {\n console.error(\"Failed to parse WS message:\", error);\n return;\n }\n // Message types are a fixed protocol enum — bounded label cardinality.\n config.telemetry?.incrementCounter(\"arc.ws.messages\", 1, {\n \"messaging.message.type\": String(message?.type ?? \"unknown\"),\n });\n\n const dispatch = async (): Promise<void> => {\n try {\n for (const handler of wsHandlers) {\n const handled = await handler(client, message, wsCtx);\n if (handled) break;\n }\n } catch (error) {\n console.error(\"WS handler error:\", error);\n }\n };\n\n const processMessage = async (): Promise<void> => {\n const telemetry = config.telemetry;\n if (!telemetry) {\n await dispatch();\n return;\n }\n // Parent context can travel inside the message under `traceparent`\n // (and optionally `tracestate`) so distributed traces from the\n // browser propagate over the persistent WS connection.\n const carrier: Record<string, string> = {};\n if (typeof message?.traceparent === \"string\") carrier.traceparent = message.traceparent;\n if (typeof message?.tracestate === \"string\") carrier.tracestate = message.tracestate;\n\n await telemetry.runWithExtractedContext(carrier, () =>\n telemetry.startSpan(\n `ws.${message?.type ?? \"message\"}`,\n () => dispatch(),\n {\n kind: 2 /* SpanKind.SERVER */,\n attributes: {\n \"messaging.system\": \"arc-ws\",\n \"messaging.operation\": \"process\",\n \"messaging.message.type\": message?.type,\n \"arc.ws.client_id\": client.id,\n },\n },\n ),\n );\n };\n\n // Przetwarzaj W KOLEJNOŚCI wysłania (per-klient) — łańcuch obietnic.\n // Chain-setup jest synchroniczny (get/set przed await), a `message()`\n // wołane jest w kolejności dostarczenia, więc porządek jest zachowany.\n // `.catch` trzyma łańcuch żywy mimo błędu (dispatch i tak łapie własne).\n const prev = messageChains.get(client.id) ?? Promise.resolve();\n const next = prev\n .then(processMessage, processMessage)\n .catch((error) => {\n console.error(\"WS message chain error:\", error);\n });\n messageChains.set(client.id, next);\n await next;\n },\n close(ws) {\n const client = connectionManager.getClientByWs(ws as any);\n if (client) {\n messageChains.delete(client.id);\n cleanupClientSubs(client.id);\n config.onWsClose?.(client.id);\n connectionManager.removeClient(client.id);\n config.telemetry?.addUpDown(\"arc.ws.active_connections\", -1);\n }\n },\n },\n });\n\n console.log(`Arc Server running on http://localhost:${port}`);\n\n return {\n server,\n contextHandler,\n connectionManager,\n cronScheduler,\n stop: () => {\n cronScheduler.stop();\n // force: graceful stop zostawia połączenia keep-alive przy życiu —\n // klienci pisaliby do porzuconego storage, gdy nowa instancja wstanie\n // na tym samym porcie (packages/benchmarks/FINDINGS.md, F-11).\n server.stop(true);\n },\n };\n}\n",
|
|
12
|
+
"import type { ArcContextAny, DatabaseAdapter } from \"@arcote.tech/arc\";\nimport type { ArcTelemetry, Span } from \"@arcote.tech/arc-otel\";\nimport type { Server } from \"bun\";\nimport { ConnectionManager } from \"./connection-manager\";\nimport { ContextHandler } from \"./context-handler\";\nimport { CronScheduler } from \"./cron-scheduler\";\nimport {\n arcHttpHandlers,\n arcWsHandlers,\n cleanupClientSubs,\n} from \"./middleware\";\nimport type {\n ArcHttpHandler,\n ArcRequestContext,\n ArcWsContext,\n ArcWsHandler,\n} from \"./middleware/types\";\nimport type { TokenPayload } from \"./types\";\n\ntype WebSocketData = { clientId: string };\n\nexport interface ArcServerConfig {\n context: ArcContextAny;\n dbAdapterFactory: (ctx: any) => Promise<DatabaseAdapter>;\n httpHandlers?: ArcHttpHandler[];\n wsHandlers?: ArcWsHandler[];\n port?: number;\n jwtSecret?: string;\n /** Extra callback when a WS client disconnects (e.g. to clean up platform state) */\n onWsClose?: (clientId: string) => void;\n /**\n * Cross-origin isolation policy. Default `\"unsafe-none\"` — pozwala apps\n * ładować cross-origin scripty/iframe'y (np. PayU Secure Form, Stripe Elements,\n * Google Maps) bez wymagania `Cross-Origin-Resource-Policy` po stronie ich CDN.\n *\n * Ustaw `\"require-corp\"` JEŚLI apps potrzebuje `SharedArrayBuffer` (SQLite WASM\n * persistent storage / OPFS, FFmpeg WASM, niektóre crypto libs). Wtedy KAŻDY\n * cross-origin resource musi mieć `Cross-Origin-Resource-Policy: cross-origin`\n * lub być załadowany przez `crossorigin=\"anonymous\"` z `Access-Control-Allow-Origin`\n * — co najczęściej wymaga proxy przez własny serwer.\n *\n * `\"credentialless\"` to middle ground (Chromium-only) — pozwala cross-origin\n * scripty bez CORP, jeśli request leci bez credentials.\n */\n coep?: \"unsafe-none\" | \"credentialless\" | \"require-corp\";\n /**\n * Allowlist of origins permitted for credentialed CORS. When set, only these\n * origins are reflected into `Access-Control-Allow-Origin` (with\n * `Allow-Credentials: true`). When unset, the server reflects the request\n * Origin but WITHOUT `Allow-Credentials` (no credentialed cross-origin reads).\n */\n corsOrigins?: string[];\n /**\n * Zgoda na Private Network Access (Chrome) — nagłówek\n * `Access-Control-Allow-Private-Network` na preflighcie. Default false.\n *\n * Ma sens WYŁĄCZNIE w dev: pozwala hostowanej stronie (https) sięgnąć do\n * serwera na localhoscie dewelopera. Na produkcji aplikacja nie jest zasobem\n * sieci prywatnej, więc zgoda jest bezprzedmiotowa — i lepiej jej nie\n * rozdawać odruchowo.\n */\n allowPrivateNetwork?: boolean;\n /** Max request body size in bytes (default 10 MB). Larger → 413. */\n maxRequestBodySize?: number;\n /** Extra security headers merged onto every response (override defaults). */\n securityHeaders?: Record<string, string>;\n /**\n * Accept the auth token from the `?token=` query string. Default false —\n * tokens in URLs leak to logs/Referer. Clients send tokens via the\n * `Authorization` header or (for WS) the `scope:auth` message.\n */\n allowTokenInQuery?: boolean;\n /** Optional OpenTelemetry instance. When provided, the HTTP fetch handler\n * and WS message dispatch are wrapped in spans, with parent context\n * extracted from `traceparent` (header / message field). All nested\n * handler code automatically attaches to the active span. */\n telemetry?: ArcTelemetry;\n}\n\nexport interface ArcServer {\n server: Server<WebSocketData>;\n contextHandler: ContextHandler;\n connectionManager: ConnectionManager;\n cronScheduler: CronScheduler;\n stop: () => void;\n}\n\n/**\n * Create an Arc server with composable HTTP + WS middleware.\n *\n * By default includes all Arc handlers (command, query, stream, route, eventSync, health,\n * scope:auth, sync-events, request-sync, execute-command, view subscriptions).\n * Platform servers add their own handlers on top.\n */\nexport async function createArcServer(\n config: ArcServerConfig,\n): Promise<ArcServer> {\n const port = config.port || 5005;\n\n // Init context handler — telemetry (if any) flows through so executeCommand\n // emits `command.<name>` spans parented to the active HTTP/WS span.\n // DB adapter wrapping (per-transaction spans) is the caller's\n // responsibility: pass an already-wrapped `dbAdapterFactory` if\n // db spans are wanted. We don't `import()` arc-otel from here because\n // doing so bundles its OTel SDK transitively into arc-host's dist,\n // which then duplicates the @opentelemetry/api singleton when the CLI\n // bundles arc-otel directly — leading to two global tracer providers\n // and silent span loss.\n const dbAdapter = config.dbAdapterFactory(config.context);\n const contextHandler = new ContextHandler(\n config.context,\n dbAdapter,\n config.telemetry,\n );\n await contextHandler.init();\n\n // Start cron scheduler\n const cronScheduler = new CronScheduler(contextHandler);\n cronScheduler.start();\n\n const connectionManager = new ConnectionManager();\n\n // Serializacja przetwarzania wiadomości WS PER-KLIENT. WebSocket dostarcza\n // wiadomości w kolejności, a klient wysyła `scope:auth` PRZED `subscribe-query`\n // (event-wire onopen), ale Bun woła `message()` współbieżnie — bez tego\n // `subscribe-query` (czyta token synchronicznie) wyprzedza jeszcze-trwający\n // `scope:auth` (`await verifyToken`), więc LiveQuery bindują się pod null\n // tokenem → `protectedBy` denied → query wisi (getMine po pełnym page-loadzie).\n // Łańcuch obietnic per client.id gwarantuje przetwarzanie W KOLEJNOŚCI.\n const messageChains = new Map<string, Promise<void>>();\n\n // Default unsafe-none — większość apps (bez SAB) korzysta z 3rd-party\n // widgetów (payment, maps, oauth iframes) które nie wysyłają CORP.\n // Apps z SQLite WASM/OPFS świadomie przełączają na require-corp przez\n // `coep` w ArcServerConfig.\n const coep = config.coep ?? \"unsafe-none\";\n const corsOrigins = config.corsOrigins;\n const allowPrivateNetwork = config.allowPrivateNetwork ?? false;\n const maxRequestBodySize = config.maxRequestBodySize ?? 10 * 1024 * 1024;\n const securityHeaders: Record<string, string> = {\n \"X-Content-Type-Options\": \"nosniff\",\n \"X-Frame-Options\": \"DENY\",\n \"Referrer-Policy\": \"no-referrer\",\n ...(config.securityHeaders ?? {}),\n };\n\n function buildCorsHeaders(req?: Request): Record<string, string> {\n const origin = req?.headers.get(\"Origin\") || null;\n const headers: Record<string, string> = {\n \"Access-Control-Allow-Methods\": \"GET, POST, PUT, DELETE, PATCH, OPTIONS\",\n // `X-Arc-Pairing-Token` — discovery woła HOST Z PRZEGLĄDARKI (cross-origin),\n // więc bez tego nagłówka na liście preflight blokuje żądanie i parowanie\n // wygląda jak „serwer nie odpowiada\". (Rejestracja jest server→server,\n // tam CORS nie obowiązuje.)\n \"Access-Control-Allow-Headers\":\n \"Content-Type, Authorization, X-Arc-Scope, X-Arc-Tokens, X-Arc-Pairing-Token\",\n // Cross-origin isolation — patrz `coep` w ArcServerConfig.\n \"Cross-Origin-Opener-Policy\": \"same-origin\",\n \"Cross-Origin-Embedder-Policy\": coep,\n \"Cross-Origin-Resource-Policy\": \"cross-origin\",\n ...securityHeaders,\n };\n\n if (corsOrigins && corsOrigins.length > 0) {\n // Allowlist mode: reflect only listed origins, with credentials.\n if (origin && corsOrigins.includes(origin)) {\n headers[\"Access-Control-Allow-Origin\"] = origin;\n headers[\"Access-Control-Allow-Credentials\"] = \"true\";\n headers[\"Vary\"] = \"Origin\";\n }\n // Origin not allowed → no ACAO header (browser blocks the read).\n } else {\n // No allowlist: reflect origin for convenience but WITHOUT credentials\n // (never combine an arbitrary reflected origin with Allow-Credentials).\n headers[\"Access-Control-Allow-Origin\"] = origin ?? \"*\";\n if (origin) headers[\"Vary\"] = \"Origin\";\n }\n return headers;\n }\n const corsHeaders = buildCorsHeaders();\n\n // JWT verification is owned by the ContextHandler (single, transport-agnostic\n // source — also used by in-process executeRoute). The HTTP boundary delegates.\n const verifyToken = (token: string): Promise<TokenPayload | null> =>\n contextHandler.verifyToken(token);\n\n // Build handler chains — Arc defaults + user-provided extras\n const defaultHttp = arcHttpHandlers(contextHandler, connectionManager);\n const defaultWs = arcWsHandlers();\n\n const httpHandlers = config.httpHandlers\n ? [...defaultHttp, ...config.httpHandlers]\n : defaultHttp;\n\n const wsHandlers = config.wsHandlers\n ? [...defaultWs, ...config.wsHandlers]\n : defaultWs;\n\n const wsCtx: ArcWsContext = {\n contextHandler,\n connectionManager,\n verifyToken,\n };\n\n const server = Bun.serve<WebSocketData>({\n port,\n idleTimeout: 255,\n\n async fetch(req, server) {\n const url = new URL(req.url);\n const corsHeaders = buildCorsHeaders(req);\n\n if (req.method === \"OPTIONS\") {\n // Private Network Access (Chrome): preflight public→local (hostowany\n // host federacji → localhost dewelopera) wymaga jawnej zgody. Tylko gdy\n // host o to poprosi (`allowPrivateNetwork`) — w prod bezprzedmiotowe.\n // Typ jawny: bez niego gałąź `{}` infekuje się jako\n // `{ \"Access-Control-Allow-Private-Network\"?: undefined }`, a spread\n // takiej unii nie pasuje do `HeadersInit` (błąd dopiero przy emisji\n // deklaracji, nie w `bun build`).\n const pna: Record<string, string> =\n allowPrivateNetwork &&\n req.headers.get(\"Access-Control-Request-Private-Network\")\n ? { \"Access-Control-Allow-Private-Network\": \"true\" }\n : {};\n return new Response(null, { headers: { ...corsHeaders, ...pna } });\n }\n\n // Inner request body — extracted so we can wrap it in an HTTP span\n // when telemetry is enabled. The wrap MUST set the active context\n // (via runWithExtractedContext + startSpan) so nested handlers'\n // spans attach to this one as parent.\n const handleRequest = async (span: Span | undefined): Promise<Response> => {\n // Reject oversized requests before reading the body (DoS guard).\n const contentLength = Number(req.headers.get(\"Content-Length\") ?? 0);\n if (contentLength > maxRequestBodySize) {\n return Response.json(\n { error: \"Payload too large\" },\n { status: 413, headers: corsHeaders },\n );\n }\n\n // WS handshake PRZED bramką tokenu HTTP. WebSocket uwierzytelnia się\n // OSOBNO — wiadomością `scope:auth` PO handshake (patrz EventWire) —\n // więc handshake nie może zależeć od `rawToken`. Inaczej federacja\n // cross-origin pada: na localhost cookie `arc_token` jest współdzielony\n // MIĘDZY PORTAMI (ignoruje port), więc BMF-owy token trafia w handshake\n // WS do partnera, nie przechodzi jego weryfikacji (inny sekret) → 401 →\n // WS zrywa się (1006) i moduł nie ładuje danych. Na prod domeny są różne,\n // ale bramkowanie handshake tokenem HTTP i tak jest niepoprawne.\n if (\n url.pathname === \"/ws\" &&\n req.headers.get(\"Upgrade\") === \"websocket\"\n ) {\n if (server.upgrade(req, { data: { clientId: \"\" } })) return undefined as unknown as Response;\n return new Response(\"WebSocket upgrade failed\", {\n status: 500,\n headers: corsHeaders,\n });\n }\n\n const authHeader = req.headers.get(\"Authorization\");\n let rawToken: string | null = authHeader?.replace(\"Bearer \", \"\") || null;\n\n // Token in query string is off by default (leaks to logs/Referer).\n if (!rawToken && config.allowTokenInQuery) {\n rawToken = url.searchParams.get(\"token\");\n }\n\n if (!rawToken) {\n const cookieHeader = req.headers.get(\"Cookie\");\n if (cookieHeader) {\n const match = cookieHeader.match(/arc_token=([^;]+)/);\n if (match) rawToken = decodeURIComponent(match[1]);\n }\n }\n const tokenPayload = rawToken ? await verifyToken(rawToken) : null;\n\n // A presented-but-invalid token (forged / wrong secret / expired) is\n // rejected globally — never silently downgraded to anonymous.\n if (rawToken && !tokenPayload) {\n return Response.json(\n { error: \"Unauthorized\" },\n { status: 401, headers: corsHeaders },\n );\n }\n\n const reqCtx: ArcRequestContext = { rawToken, tokenPayload, corsHeaders };\n for (const handler of httpHandlers) {\n const response = await handler(req, url, reqCtx);\n if (response) {\n span?.setAttribute(\"http.response.status_code\", response.status);\n return response;\n }\n }\n span?.setAttribute(\"http.response.status_code\", 404);\n return new Response(\"Not Found\", { status: 404, headers: corsHeaders });\n };\n\n const telemetry = config.telemetry;\n if (!telemetry) return handleRequest(undefined);\n\n return telemetry.runWithExtractedContext(req.headers, () =>\n telemetry.startSpan(\n `${req.method} ${url.pathname}`,\n (span) => handleRequest(span),\n {\n kind: 2 /* SpanKind.SERVER */,\n attributes: {\n \"http.request.method\": req.method,\n \"http.route\": url.pathname,\n \"url.scheme\": url.protocol.replace(\":\", \"\"),\n \"url.path\": url.pathname,\n \"server.address\": url.host,\n \"user_agent.original\": req.headers.get(\"user-agent\") ?? undefined,\n },\n },\n ),\n );\n },\n\n websocket: {\n open(ws) {\n connectionManager.addClient(ws as any);\n config.telemetry?.addUpDown(\"arc.ws.active_connections\", 1);\n },\n async message(ws, messageStr) {\n const client = connectionManager.getClientByWs(ws as any);\n if (!client) return;\n\n let message: any;\n try {\n message = JSON.parse(messageStr as string);\n } catch (error) {\n console.error(\"Failed to parse WS message:\", error);\n return;\n }\n // Message types are a fixed protocol enum — bounded label cardinality.\n config.telemetry?.incrementCounter(\"arc.ws.messages\", 1, {\n \"messaging.message.type\": String(message?.type ?? \"unknown\"),\n });\n\n const dispatch = async (): Promise<void> => {\n try {\n for (const handler of wsHandlers) {\n const handled = await handler(client, message, wsCtx);\n if (handled) break;\n }\n } catch (error) {\n console.error(\"WS handler error:\", error);\n }\n };\n\n const processMessage = async (): Promise<void> => {\n const telemetry = config.telemetry;\n if (!telemetry) {\n await dispatch();\n return;\n }\n // Parent context can travel inside the message under `traceparent`\n // (and optionally `tracestate`) so distributed traces from the\n // browser propagate over the persistent WS connection.\n const carrier: Record<string, string> = {};\n if (typeof message?.traceparent === \"string\") carrier.traceparent = message.traceparent;\n if (typeof message?.tracestate === \"string\") carrier.tracestate = message.tracestate;\n\n await telemetry.runWithExtractedContext(carrier, () =>\n telemetry.startSpan(\n `ws.${message?.type ?? \"message\"}`,\n () => dispatch(),\n {\n kind: 2 /* SpanKind.SERVER */,\n attributes: {\n \"messaging.system\": \"arc-ws\",\n \"messaging.operation\": \"process\",\n \"messaging.message.type\": message?.type,\n \"arc.ws.client_id\": client.id,\n },\n },\n ),\n );\n };\n\n // Przetwarzaj W KOLEJNOŚCI wysłania (per-klient) — łańcuch obietnic.\n // Chain-setup jest synchroniczny (get/set przed await), a `message()`\n // wołane jest w kolejności dostarczenia, więc porządek jest zachowany.\n // `.catch` trzyma łańcuch żywy mimo błędu (dispatch i tak łapie własne).\n const prev = messageChains.get(client.id) ?? Promise.resolve();\n const next = prev\n .then(processMessage, processMessage)\n .catch((error) => {\n console.error(\"WS message chain error:\", error);\n });\n messageChains.set(client.id, next);\n await next;\n },\n close(ws) {\n const client = connectionManager.getClientByWs(ws as any);\n if (client) {\n messageChains.delete(client.id);\n cleanupClientSubs(client.id);\n config.onWsClose?.(client.id);\n connectionManager.removeClient(client.id);\n config.telemetry?.addUpDown(\"arc.ws.active_connections\", -1);\n }\n },\n },\n });\n\n console.log(`Arc Server running on http://localhost:${port}`);\n\n return {\n server,\n contextHandler,\n connectionManager,\n cronScheduler,\n stop: () => {\n cronScheduler.stop();\n // force: graceful stop zostawia połączenia keep-alive przy życiu —\n // klienci pisaliby do porzuconego storage, gdy nowa instancja wstanie\n // na tym samym porcie (packages/benchmarks/FINDINGS.md, F-11).\n server.stop(true);\n },\n };\n}\n",
|
|
13
13
|
"// Re-export everything from src\nexport * from \"./src\";\n\n// Helper function to start host\nimport type { ArcContextAny, DBAdapterFactory } from \"@arcote.tech/arc\";\nimport { createArcServer } from \"./src/create-server\";\n\n/**\n * Start a host server for a context\n */\nexport function hostLiveModel<C extends ArcContextAny>(\n context: C,\n dbAdapterFactory: DBAdapterFactory,\n) {\n return createArcServer({\n context,\n dbAdapterFactory,\n });\n}\n"
|
|
14
14
|
],
|
|
15
|
-
"mappings": "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",
|
|
16
|
-
"debugId": "
|
|
15
|
+
"mappings": "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",
|
|
16
|
+
"debugId": "056178319A91BC6964756E2164756E21",
|
|
17
17
|
"names": []
|
|
18
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-server.d.ts","sourceRoot":"","sources":["../../src/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAQ,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD,OAAO,KAAK,EACV,cAAc,EAGd,YAAY,EACb,MAAM,oBAAoB,CAAC;AAG5B,KAAK,aAAa,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACzD,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,aAAa,GAAG,gBAAgB,GAAG,cAAc,CAAC;IACzD;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;kEAG8D;IAC9D,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;IAC7B,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"create-server.d.ts","sourceRoot":"","sources":["../../src/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAQ,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD,OAAO,KAAK,EACV,cAAc,EAGd,YAAY,EACb,MAAM,oBAAoB,CAAC;AAG5B,KAAK,aAAa,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACzD,YAAY,CAAC,EAAE,cAAc,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,aAAa,GAAG,gBAAgB,GAAG,cAAc,CAAC;IACzD;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;kEAG8D;IAC9D,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC;IAC7B,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,SAAS,CAAC,CAwUpB"}
|
package/package.json
CHANGED
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"version": "0.8.
|
|
7
|
+
"version": "0.8.2",
|
|
8
8
|
"private": false,
|
|
9
9
|
"author": "Przemysław Krasiński [arcote.tech]",
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@arcote.tech/arc-adapter-db-sqlite": "^0.8.
|
|
11
|
+
"@arcote.tech/arc-adapter-db-sqlite": "^0.8.2",
|
|
12
12
|
"croner": "^9.0.0",
|
|
13
13
|
"jsonwebtoken": "^9.0.2"
|
|
14
14
|
},
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"@types/bun": "^1.2.0"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
|
-
"@arcote.tech/arc": "^0.8.
|
|
28
|
-
"@arcote.tech/arc-otel": "^0.8.
|
|
27
|
+
"@arcote.tech/arc": "^0.8.2",
|
|
28
|
+
"@arcote.tech/arc-otel": "^0.8.2"
|
|
29
29
|
},
|
|
30
30
|
"peerDependenciesMeta": {
|
|
31
31
|
"@arcote.tech/arc-otel": {
|
package/src/create-server.ts
CHANGED
|
@@ -240,6 +240,25 @@ export async function createArcServer(
|
|
|
240
240
|
);
|
|
241
241
|
}
|
|
242
242
|
|
|
243
|
+
// WS handshake PRZED bramką tokenu HTTP. WebSocket uwierzytelnia się
|
|
244
|
+
// OSOBNO — wiadomością `scope:auth` PO handshake (patrz EventWire) —
|
|
245
|
+
// więc handshake nie może zależeć od `rawToken`. Inaczej federacja
|
|
246
|
+
// cross-origin pada: na localhost cookie `arc_token` jest współdzielony
|
|
247
|
+
// MIĘDZY PORTAMI (ignoruje port), więc BMF-owy token trafia w handshake
|
|
248
|
+
// WS do partnera, nie przechodzi jego weryfikacji (inny sekret) → 401 →
|
|
249
|
+
// WS zrywa się (1006) i moduł nie ładuje danych. Na prod domeny są różne,
|
|
250
|
+
// ale bramkowanie handshake tokenem HTTP i tak jest niepoprawne.
|
|
251
|
+
if (
|
|
252
|
+
url.pathname === "/ws" &&
|
|
253
|
+
req.headers.get("Upgrade") === "websocket"
|
|
254
|
+
) {
|
|
255
|
+
if (server.upgrade(req, { data: { clientId: "" } })) return undefined as unknown as Response;
|
|
256
|
+
return new Response("WebSocket upgrade failed", {
|
|
257
|
+
status: 500,
|
|
258
|
+
headers: corsHeaders,
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
|
|
243
262
|
const authHeader = req.headers.get("Authorization");
|
|
244
263
|
let rawToken: string | null = authHeader?.replace("Bearer ", "") || null;
|
|
245
264
|
|
|
@@ -266,17 +285,6 @@ export async function createArcServer(
|
|
|
266
285
|
);
|
|
267
286
|
}
|
|
268
287
|
|
|
269
|
-
if (
|
|
270
|
-
url.pathname === "/ws" &&
|
|
271
|
-
req.headers.get("Upgrade") === "websocket"
|
|
272
|
-
) {
|
|
273
|
-
if (server.upgrade(req, { data: { clientId: "" } })) return undefined as unknown as Response;
|
|
274
|
-
return new Response("WebSocket upgrade failed", {
|
|
275
|
-
status: 500,
|
|
276
|
-
headers: corsHeaders,
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
|
|
280
288
|
const reqCtx: ArcRequestContext = { rawToken, tokenPayload, corsHeaders };
|
|
281
289
|
for (const handler of httpHandlers) {
|
|
282
290
|
const response = await handler(req, url, reqCtx);
|