@paroicms/server
Version:
The ParoiCMS server
73 lines (72 loc) • 2.63 kB
TypeScript
import type { SiteAccessValue } from "@paroicms/internal-anywhere-lib";
import type { AppLogger } from "@paroicms/internal-server-lib";
import type { HomeRoutingCluster, ThemeConf } from "@paroicms/public-anywhere-lib";
import type { BackendHookHandler, HeadTagsHandler, RegisteredSite, RenderingHookHandler, SimpleTranslator } from "@paroicms/public-server-lib";
import type { MediaStorage } from "@paroicms/server-database-media-storage";
import type { ImageCacheEngine } from "@paroicms/server-image-cache-engine";
import type { TextCacheSystem } from "@paroicms/server-text-cache-system";
import type { Knex } from "knex";
import type { Liquid } from "liquidjs";
import type { SitePlugin } from "../connector/plugin-loader/plugin-types.js";
import type { PublicSiteContext } from "../connector/public-site-context-types.js";
import type { SiteConfiguration } from "../connector/site-schema/site-configuration.js";
export interface SiteContext extends PublicSiteContext {
status: "ready";
regSite: RegisteredSite;
logger: AppLogger;
cn: Knex;
siteConfiguration: SiteConfiguration;
siteNodeId: string;
homeRoutingCluster: HomeRoutingCluster;
liquidEngine: Liquid;
mediaStorage: MediaStorage;
imageCache: ImageCacheEngine;
textCache: TextCacheSystem;
themeTranslator: SimpleTranslator;
plugins: Map<string, SitePlugin>;
pluginsBySlug: Map<string, SitePlugin>;
headTagsHandlers: HeadTagsHandler[];
logNextQuery: (count?: number) => void;
hooks: Map<string, PluginHookHandler[]>;
renderingHooks: Map<string, PluginRenderingHookHandler[]>;
access: SiteAccessValue;
requestTracker: RequestTracker;
}
export interface RequestTracker {
pendingRequests: Set<string>;
requestQueue: Array<{
resolve: () => void;
reject: (error: Error) => void;
timeout: NodeJS.Timeout;
}>;
state: "normal" | "gracefulShutdown" | "backupMode";
}
export interface PluginRenderingHookHandler {
handler: RenderingHookHandler;
plugin: SitePlugin;
}
export interface PluginHookHandler {
handler: BackendHookHandler;
plugin: SitePlugin;
}
export interface MigrationSiteContext {
status: "migration";
fqdn: string;
siteName: string;
version?: string;
siteDir: string;
themeDir: string;
dataDir: string;
cacheDir: string;
backupDir: string;
siteUrl: string;
themeConf: ThemeConf;
regSite: RegisteredSite;
logger: AppLogger;
cn: Knex;
deprecatedSiteSchema: {
ParoiCMSSiteSchemaFormatVersion: string;
languages: string[];
oldSchema: unknown;
};
}