mirror of https://github.com/requarks/wiki
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.4 KiB
70 lines
2.4 KiB
/**
|
|
* Ambient declarations for the `WIKI` global singleton.
|
|
*
|
|
* `WIKI` is assembled in `backend/index.ts` (and a minimal subset in `backend/worker.ts`) and is
|
|
* reachable from every module without importing it. Members that come from typed dependencies are
|
|
* typed properly here; the ones backed by our own not-yet-converted modules are left loose and
|
|
* should be replaced with `typeof import('...')` as each module moves to TypeScript.
|
|
*/
|
|
|
|
import type { FastifyInstance } from 'fastify'
|
|
import type gracefulServer from '@gquittet/graceful-server'
|
|
import type Emittery from 'emittery'
|
|
import type NodeCache from 'node-cache'
|
|
|
|
declare global {
|
|
interface WikiGlobal {
|
|
IS_DEBUG: boolean
|
|
ROOTPATH: string
|
|
SERVERPATH: string
|
|
INSTANCE_ID: string
|
|
startedAt: Temporal.Instant
|
|
version: string
|
|
releaseDate: string
|
|
devMode: boolean
|
|
|
|
app: FastifyInstance
|
|
server: ReturnType<typeof gracefulServer>
|
|
cache: NodeCache
|
|
/**
|
|
* HA propagation buses. Event names are dynamic (they travel over postgres NOTIFY), so the
|
|
* event map is left open — `Record<string, any>` is also what makes dataless `emit(name)`
|
|
* calls legal, since Emittery's default `unknown` payload forbids them.
|
|
*/
|
|
events: {
|
|
inbound: Emittery<Record<string, any>>
|
|
outbound: Emittery<Record<string, any>>
|
|
}
|
|
|
|
auth: {
|
|
groups: Record<string, unknown>
|
|
strategies: Record<string, unknown>
|
|
}
|
|
|
|
/**
|
|
* Merged config.yml + base.yml defaults + the `settings` DB table. Assembled at runtime from
|
|
* YAML and JSONB, so it stays intentionally untyped.
|
|
*/
|
|
config: any
|
|
/** Contents of `base.yml` — set by configSvc.init(), not by index.ts */
|
|
data: any
|
|
|
|
collab: typeof import('../core/collab.ts').default
|
|
configSvc: typeof import('../core/config.ts').default
|
|
db: import('../core/db.ts').WikiDb
|
|
dbManager: typeof import('../core/db.ts').default
|
|
logger: ReturnType<typeof import('../core/logger.ts').default.init>
|
|
scheduler: typeof import('../core/scheduler.ts').default
|
|
models: typeof import('../models/index.ts').default
|
|
|
|
// TODO: infer from the `sites` table once db/schema.ts is converted
|
|
sites: Record<string, any>
|
|
sitesMappings: Record<string, string>
|
|
|
|
/** Only present in worker threads (see worker.ts) */
|
|
ensureDb?: () => Promise<boolean | void>
|
|
}
|
|
|
|
var WIKI: WikiGlobal
|
|
}
|