captainduckduck
Version:
CLI tool for CaptainDuckDuck. See CaptainDuckDuck.com for more details.
93 lines (77 loc) • 2.06 kB
text/typescript
//COPIED FROM BACKEND CODE
interface IHashMapGeneric<T> {
[id: string]: T;
}
type IAllAppDefinitions = IHashMapGeneric<IAppDef>;
export interface IAppEnvVar {
key: string;
value: string;
}
interface IAppVolume {
containerPath: string;
volumeName?: string;
hostPath?: string;
}
interface IAppPort {
containerPort: number;
hostPort: number;
protocol?: "udp" | "tcp";
publishMode?: "ingress" | "host";
}
export interface RepoInfo {
repo: string;
branch: string;
user: string;
password: string;
}
interface RepoInfoEncrypted {
repo: string;
branch: string;
user: string;
passwordEncrypted: string;
}
export interface IAppVersion {
version: number;
deployedImageName?: string; // empty if the deploy is not completed
timeStamp: string;
gitHash: string | undefined;
}
interface IAppCustomDomain {
publicDomain: string;
hasSsl: boolean;
}
interface IAppDefinitionBase {
deployedVersion: number;
notExposeAsWebApp: boolean;
hasPersistentData: boolean;
hasDefaultSubDomainSsl: boolean;
forceSsl: boolean;
nodeId?: string;
instanceCount: number;
preDeployFunction?: string;
customNginxConfig?: string;
networks: string[];
customDomain: IAppCustomDomain[];
ports: IAppPort[];
volumes: IAppVolume[];
envVars: IAppEnvVar[];
versions: IAppVersion[];
}
export interface IAppDef extends IAppDefinitionBase {
appPushWebhook?: {
repoInfo: RepoInfo;
tokenVersion?: string; // On FrontEnd, these values are null, until they are assigned.
pushWebhookToken?: string; // On FrontEnd, these values are null, until they are assigned.
};
appName?: string;
isAppBuilding?: boolean;
}
interface IAppDefSaved extends IAppDefinitionBase {
appPushWebhook:
| {
tokenVersion: string;
repoInfo: RepoInfoEncrypted;
pushWebhookToken: string;
}
| undefined;
}