ts-caddyfile
Version:
CaddyFile Parser and generator VERY WIP
72 lines (71 loc) • 1.88 kB
TypeScript
export interface CaddyFileType {
blocks: Block[];
}
export declare enum HTTPDirectiveTypes {
'basicauth' = "basicauth",
'proxy' = "proxy",
'tls' = "tls",
'gzip' = "gzip",
'bind' = "bind",
'expvar' = "expvar"
}
export declare type HTTPDirectiveTypesType = 'basicauth' | 'proxy' | 'tls' | 'gzip' | 'bind' | 'expvar' | HTTPDirectiveTypes;
export interface Block {
directives: DirectiveTypes[];
}
export declare type CaddyFile = {
[key: string]: Block;
};
export interface BasicAuthCoreDirective {
type: 'basicauth';
username: string;
password: string;
}
export interface BasicAuthPathDirective extends BasicAuthCoreDirective {
path: string;
}
export interface BasicAuthDirective extends BasicAuthCoreDirective {
realm: string;
files: string[];
}
export interface ProxyCoreDirective {
type: 'proxy';
from: string;
to: string;
}
export interface ProxyDirective extends ProxyCoreDirective {
websocket?: boolean;
}
export interface HTTPDirectives {
basicauth: BasicAuthDirective;
proxy: ProxyDirective;
}
export interface Directive {
type: DirectiveTypes;
}
export interface WebBlock {
server: string | string[];
}
export interface TLSCoreDirective {
type: 'tls';
certificate: string;
key: string;
}
export interface GZIPCoreDirective {
type: 'gzip';
}
export interface GZIPMainDirective extends GZIPCoreDirective {
level: number;
}
export declare type GZIPDirective = GZIPCoreDirective | GZIPMainDirective;
export interface TLSDirective extends TLSCoreDirective {
}
export interface BINDDirective {
type: 'bind';
host: string;
}
export interface EXPVarDirective {
type: 'expvar';
path?: string;
}
export declare type DirectiveTypes = BasicAuthDirective | ProxyDirective | BasicAuthPathDirective | TLSDirective | GZIPDirective | EXPVarDirective | BINDDirective;