Skip to content

Port the GraphQL HTTP runtime and observability to Node.js #349

Description

@dahlia

Problem

The standalone API uses Fetch-compatible application libraries, but its entry point, connection metadata, environment access, file I/O, and Sentry setup still assume Deno. The port must preserve proxy handling, request cancellation, federation routing, user attribution, and error reporting.

Tasks

  • Expose a runtime-neutral request handler from explicit application resources.
  • Add a Node.js HTTP adapter for GraphQL, uploads, static association files, and federation endpoints.
  • Replace Deno-specific connection types with an application-owned representation.
  • Port environment and file access to the shared configuration and resource factories.
  • Replace @sentry/deno with the Node.js SDK and revalidate request isolation, user attribution, unhandled rejections, LogTape integration, and redaction.
  • Preserve forwarded-request handling and abort behavior.
  • Add startup, shutdown, health-check, and production-like integration tests.

Acceptance criteria

  • The full API and federation HTTP surface runs on the pinned Node.js version.
  • GraphQL, uploads, well-known endpoints, WebFinger, NodeInfo, inbox, outbox, and object routes behave as before.
  • Graceful shutdown closes HTTP, database, KV, storage, email, and observability resources.
  • Sentry events and structured logs retain their current context and redaction guarantees.

AI assistance: This issue was drafted and organized with Codex after a maintainer-led code audit.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfederationActivityPub federationgraphqlGraphQL API server

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions