sidequest
Version:
Sidequest is a modern, scalable background job processor for Node.js applications.
52 lines (49 loc) • 1.91 kB
TypeScript
import { SQLDriverConfig } from '@sidequest/backend';
import { DashboardConfig } from '@sidequest/dashboard';
import { EngineConfig } from '@sidequest/engine';
/**
* Known backend driver identifiers
*/
type KnownSQLDrivers = "@sidequest/postgres-backend" | "@sidequest/mysql-backend" | "@sidequest/sqlite-backend";
/**
* Known MongoDB driver identifier
*/
type KnownMongoDriver = "@sidequest/mongo-backend";
/**
* All known backend driver identifiers
*/
type KnownDrivers = KnownSQLDrivers | KnownMongoDriver;
/**
* Strongly typed backend configuration that automatically infers config type based on driver
*/
type StronglyTypedBackendConfig<TDriver extends string = KnownDrivers> = TDriver extends KnownSQLDrivers ? {
/** SQL backend driver identifier */
driver: TDriver;
/** Database configuration - can be a connection string or detailed config object */
config: string | SQLDriverConfig;
} : TDriver extends KnownMongoDriver ? {
/** MongoDB backend driver identifier */
driver: TDriver;
/** MongoDB connection string */
config: string;
} : {
/** Custom backend driver identifier */
driver: TDriver;
/** Custom configuration - type is unknown for flexibility */
config: unknown;
};
/**
* Sidequest engine configuration with strongly typed backend
*/
type SidequestEngineConfig<TDriver extends string = KnownDrivers> = Omit<EngineConfig, "backend"> & {
/** Backend configuration with driver-specific typing */
backend: StronglyTypedBackendConfig<TDriver>;
};
/**
* Complete Sidequest configuration
*/
type SidequestConfig<TDriver extends string = KnownDrivers> = SidequestEngineConfig<TDriver> & {
/** Optional dashboard configuration */
dashboard?: Omit<DashboardConfig, "backendConfig">;
};
export type { KnownDrivers, KnownMongoDriver, KnownSQLDrivers, SidequestConfig, SidequestEngineConfig, StronglyTypedBackendConfig };