unleash-server
Version:
Unleash is an enterprise ready feature toggles service. It provides different strategies for handling feature toggles.
195 lines (194 loc) • 5.23 kB
TypeScript
/// <reference types="node" />
import EventEmitter from 'events';
import { LogLevel, LogProvider } from '../logger';
import { ILegacyApiTokenCreate } from './models/api-token';
import { IFlagResolver, IExperimentalOptions, IFlags } from './experimental';
import SMTPTransport from 'nodemailer/lib/smtp-transport';
export declare type EventHook = (eventName: string, data: object) => void;
export interface ISSLOption {
rejectUnauthorized: boolean;
ca?: string;
key?: string;
cert?: string;
}
export interface IDBOption {
user: string;
password: string;
host: string;
port: number;
database: string;
ssl?: ISSLOption | boolean;
driver: 'postgres';
version?: string;
acquireConnectionTimeout?: number;
pool?: {
min?: number;
max?: number;
idleTimeoutMillis?: number;
propagateCreateError?: boolean;
afterCreate?: (connection: any, callback: any) => void;
};
schema: string;
disableMigration: boolean;
applicationName?: string;
}
export interface ISessionOption {
ttlHours: number;
db: boolean;
clearSiteDataOnLogout: boolean;
cookieName: string;
}
export interface IVersionOption {
url?: string;
enable?: boolean;
}
export declare enum IAuthType {
OPEN_SOURCE = "open-source",
DEMO = "demo",
ENTERPRISE = "enterprise",
HOSTED = "hosted",
CUSTOM = "custom",
NONE = "none"
}
export interface IAuthOption {
enableApiToken: boolean;
type: IAuthType;
customAuthHandler?: Function;
createAdminUser: boolean;
initApiTokens: ILegacyApiTokenCreate[];
}
export interface IImportOption {
file: string;
keepExisting: boolean;
dropBeforeImport: boolean;
}
export interface IServerOption {
port?: number;
host?: string;
pipe?: string;
keepAliveTimeout: number;
headersTimeout: number;
baseUriPath: string;
cdnPrefix?: string;
unleashUrl: string;
serverMetrics: boolean;
enableHeapSnapshotEnpoint: boolean;
enableRequestLogger: boolean;
gracefulShutdownEnable: boolean;
gracefulShutdownTimeout: number;
secret: string;
}
export interface IClientCachingOption {
enabled: boolean;
maxAge: number;
}
export interface IUnleashOptions {
databaseUrl?: string;
databaseUrlFile?: string;
db?: Partial<IDBOption>;
session?: Partial<ISessionOption>;
getLogger?: LogProvider;
logLevel?: LogLevel;
server?: Partial<IServerOption>;
versionCheck?: Partial<IVersionOption>;
authentication?: Partial<IAuthOption>;
ui?: object;
frontendApi?: IFrontendApi;
import?: Partial<IImportOption>;
experimental?: Partial<IExperimentalOptions>;
email?: Partial<IEmailOption>;
secureHeaders?: boolean;
additionalCspAllowedDomains?: ICspDomainOptions;
frontendApiOrigins?: string[];
enableOAS?: boolean;
preHook?: Function;
preRouterHook?: Function;
eventHook?: EventHook;
enterpriseVersion?: string;
disableLegacyFeaturesApi?: boolean;
inlineSegmentConstraints?: boolean;
clientFeatureCaching?: Partial<IClientCachingOption>;
flagResolver?: IFlagResolver;
accessControlMaxAge?: number;
prometheusApi?: string;
}
export interface IEmailOption {
host?: string;
secure: boolean;
port: number;
sender: string;
smtpuser?: string;
smtppass?: string;
transportOptions?: SMTPTransport.Options;
}
export interface IListeningPipe {
path: string;
}
export interface IListeningHost {
host?: string;
port: number;
}
export interface IUIConfig {
environment?: string;
slogan?: string;
name?: string;
links?: [
{
value: string;
icon?: string;
href: string;
title: string;
}
];
flags?: IFlags;
}
export interface ICspDomainOptions {
defaultSrc?: string[];
fontSrc?: string[];
styleSrc?: string[];
scriptSrc?: string[];
imgSrc?: string[];
}
export interface ICspDomainConfig {
defaultSrc: string[];
fontSrc: string[];
styleSrc: string[];
scriptSrc: string[];
imgSrc: string[];
}
interface IFrontendApi {
refreshIntervalInMs: number;
}
export interface IUnleashConfig {
db: IDBOption;
session: ISessionOption;
getLogger: LogProvider;
server: IServerOption;
listen: IListeningHost | IListeningPipe;
versionCheck: IVersionOption;
authentication: IAuthOption;
ui: IUIConfig;
import: IImportOption;
experimental?: IExperimentalOptions;
flagResolver: IFlagResolver;
email: IEmailOption;
secureHeaders: boolean;
additionalCspAllowedDomains: ICspDomainConfig;
frontendApiOrigins: string[];
enableOAS: boolean;
preHook?: Function;
preRouterHook?: Function;
eventHook?: EventHook;
enterpriseVersion?: string;
eventBus: EventEmitter;
disableLegacyFeaturesApi?: boolean;
environmentEnableOverrides?: string[];
frontendApi: IFrontendApi;
inlineSegmentConstraints: boolean;
segmentValuesLimit: number;
strategySegmentsLimit: number;
clientFeatureCaching: IClientCachingOption;
accessControlMaxAge: number;
prometheusApi?: string;
}
export {};