mirror of
https://github.com/djdevin/recflare.git
synced 2026-09-09 07:01:27 -07:00
32 lines
1.4 KiB
TypeScript
32 lines
1.4 KiB
TypeScript
import type { SharedHonoEnv, SharedHonoVariables } from '@repo/hono-helpers/src/types'
|
|
|
|
/**
|
|
* Union of every mounted worker's bindings.
|
|
*
|
|
* Because the split workers already share the same underlying resources — one
|
|
* `recflare` D1, one Secrets Store, the shared R2 buckets, the single KV namespace and
|
|
* the Notifications Durable Object — this is a de-duplicated union, not a migration.
|
|
* Each mounted app reads only the subset it needs; a superset `Env` is assignable to
|
|
* each app's narrower `Env`, so the sub-apps type-check unchanged.
|
|
*/
|
|
export type Env = SharedHonoEnv & {
|
|
// HS256 JWT signing key (shared Secrets Store). Tokens signed by `auth` verify everywhere.
|
|
JWT_SECRET: SecretsStoreSecret
|
|
// Meta (Oculus) app secret, from the same store. Read only by `auth`, to validate a
|
|
// headset login's nonce with Meta (see apps/auth/src/meta-nonce.ts).
|
|
META_APP_SECRET: SecretsStoreSecret
|
|
// Shared `recflare` database (accounts, auth, api, clubs, match, rooms, …).
|
|
DB: D1Database
|
|
// Image storage bucket (api, img).
|
|
IMAGES: R2Bucket
|
|
// Binary room-data CDN bucket (cdn, rooms, storage).
|
|
CDN_ASSETS: R2Bucket
|
|
// Per-player settings (playersettings).
|
|
RECFLARE_PLAYER_SETTINGS: KVNamespace
|
|
// Real-time notifications hub. The class is defined in `notify` and re-exported by
|
|
// this worker's entry so the binding resolves in-process (no `script_name`).
|
|
RECFLARE_NOTIFICATIONS_HUB: DurableObjectNamespace
|
|
}
|
|
|
|
export type Variables = SharedHonoVariables
|