@factorialco/shadowdog
Version:
<img src="https://raw.githubusercontent.com/factorialco/shadowdog/refs/heads/main/logo.png" alt="drawing" width="100"/>
366 lines (365 loc) • 11.8 kB
TypeScript
import { z } from 'zod';
export declare const configSchema: z.ZodObject<{
$schema: z.ZodOptional<z.ZodString>;
debounceTime: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
defaultIgnoredFiles: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
plugins: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<"name", [z.ZodObject<{
name: z.ZodLiteral<"shadowdog-rake">;
options: z.ZodOptional<z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>>;
}, "strip", z.ZodTypeAny, {
name: "shadowdog-rake";
options?: {} | undefined;
}, {
name: "shadowdog-rake";
options?: {} | undefined;
}>, z.ZodObject<{
name: z.ZodLiteral<"shadowdog-local-cache">;
options: z.ZodDefault<z.ZodObject<{
path: z.ZodDefault<z.ZodString>;
read: z.ZodDefault<z.ZodBoolean>;
write: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
path: string;
read: boolean;
write: boolean;
}, {
path?: string | undefined;
read?: boolean | undefined;
write?: boolean | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
options: {
path: string;
read: boolean;
write: boolean;
};
name: "shadowdog-local-cache";
}, {
name: "shadowdog-local-cache";
options?: {
path?: string | undefined;
read?: boolean | undefined;
write?: boolean | undefined;
} | undefined;
}>, z.ZodObject<{
name: z.ZodLiteral<"shadowdog-remote-aws-s3-cache">;
options: z.ZodObject<{
path: z.ZodDefault<z.ZodString>;
bucketName: z.ZodString;
read: z.ZodDefault<z.ZodBoolean>;
write: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
path: string;
read: boolean;
write: boolean;
bucketName: string;
}, {
bucketName: string;
path?: string | undefined;
read?: boolean | undefined;
write?: boolean | undefined;
}>;
}, "strip", z.ZodTypeAny, {
options: {
path: string;
read: boolean;
write: boolean;
bucketName: string;
};
name: "shadowdog-remote-aws-s3-cache";
}, {
options: {
bucketName: string;
path?: string | undefined;
read?: boolean | undefined;
write?: boolean | undefined;
};
name: "shadowdog-remote-aws-s3-cache";
}>, z.ZodObject<{
name: z.ZodLiteral<"shadowdog-tag">;
options: z.ZodOptional<z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>>;
}, "strip", z.ZodTypeAny, {
name: "shadowdog-tag";
options?: {} | undefined;
}, {
name: "shadowdog-tag";
options?: {} | undefined;
}>, z.ZodObject<{
name: z.ZodLiteral<"shadowdog-tree">;
options: z.ZodOptional<z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>>;
}, "strip", z.ZodTypeAny, {
name: "shadowdog-tree";
options?: {} | undefined;
}, {
name: "shadowdog-tree";
options?: {} | undefined;
}>, z.ZodObject<{
name: z.ZodLiteral<"shadowdog-socket">;
options: z.ZodDefault<z.ZodObject<{
path: z.ZodDefault<z.ZodString>;
}, "strip", z.ZodTypeAny, {
path: string;
}, {
path?: string | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
options: {
path: string;
};
name: "shadowdog-socket";
}, {
name: "shadowdog-socket";
options?: {
path?: string | undefined;
} | undefined;
}>, z.ZodObject<{
name: z.ZodLiteral<"shadowdog-git">;
options: z.ZodOptional<z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>>;
}, "strip", z.ZodTypeAny, {
name: "shadowdog-git";
options?: {} | undefined;
}, {
name: "shadowdog-git";
options?: {} | undefined;
}>, z.ZodObject<{
name: z.ZodLiteral<"shadowdog-lock">;
options: z.ZodDefault<z.ZodObject<{
path: z.ZodDefault<z.ZodString>;
}, "strip", z.ZodTypeAny, {
path: string;
}, {
path?: string | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
options: {
path: string;
};
name: "shadowdog-lock";
}, {
name: "shadowdog-lock";
options?: {
path?: string | undefined;
} | undefined;
}>]>, "many">>>;
watchers: z.ZodArray<z.ZodObject<{
enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
files: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
invalidators: z.ZodDefault<z.ZodObject<{
files: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
environment: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
files: string[];
environment: string[];
}, {
files?: string[] | undefined;
environment?: string[] | undefined;
}>>;
ignored: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
label: z.ZodOptional<z.ZodString>;
commands: z.ZodArray<z.ZodObject<{
command: z.ZodString;
workingDirectory: z.ZodDefault<z.ZodString>;
tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
artifacts: z.ZodDefault<z.ZodArray<z.ZodObject<{
output: z.ZodString;
description: z.ZodOptional<z.ZodString>;
ignore: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
}, "strict", z.ZodTypeAny, {
output: string;
description?: string | undefined;
ignore?: string[] | undefined;
}, {
output: string;
description?: string | undefined;
ignore?: string[] | undefined;
}>, "many">>;
}, "strict", z.ZodTypeAny, {
command: string;
workingDirectory: string;
tags: string[];
artifacts: {
output: string;
description?: string | undefined;
ignore?: string[] | undefined;
}[];
}, {
command: string;
workingDirectory?: string | undefined;
tags?: string[] | undefined;
artifacts?: {
output: string;
description?: string | undefined;
ignore?: string[] | undefined;
}[] | undefined;
}>, "many">;
}, "strict", z.ZodTypeAny, {
enabled: boolean;
files: string[];
invalidators: {
files: string[];
environment: string[];
};
ignored: string[];
commands: {
command: string;
workingDirectory: string;
tags: string[];
artifacts: {
output: string;
description?: string | undefined;
ignore?: string[] | undefined;
}[];
}[];
label?: string | undefined;
}, {
commands: {
command: string;
workingDirectory?: string | undefined;
tags?: string[] | undefined;
artifacts?: {
output: string;
description?: string | undefined;
ignore?: string[] | undefined;
}[] | undefined;
}[];
enabled?: boolean | undefined;
files?: string[] | undefined;
invalidators?: {
files?: string[] | undefined;
environment?: string[] | undefined;
} | undefined;
ignored?: string[] | undefined;
label?: string | undefined;
}>, "many">;
}, "strict", z.ZodTypeAny, {
debounceTime: number;
defaultIgnoredFiles: string[];
plugins: ({
name: "shadowdog-rake";
options?: {} | undefined;
} | {
options: {
path: string;
read: boolean;
write: boolean;
};
name: "shadowdog-local-cache";
} | {
options: {
path: string;
read: boolean;
write: boolean;
bucketName: string;
};
name: "shadowdog-remote-aws-s3-cache";
} | {
name: "shadowdog-tag";
options?: {} | undefined;
} | {
name: "shadowdog-tree";
options?: {} | undefined;
} | {
options: {
path: string;
};
name: "shadowdog-socket";
} | {
name: "shadowdog-git";
options?: {} | undefined;
} | {
options: {
path: string;
};
name: "shadowdog-lock";
})[];
watchers: {
enabled: boolean;
files: string[];
invalidators: {
files: string[];
environment: string[];
};
ignored: string[];
commands: {
command: string;
workingDirectory: string;
tags: string[];
artifacts: {
output: string;
description?: string | undefined;
ignore?: string[] | undefined;
}[];
}[];
label?: string | undefined;
}[];
$schema?: string | undefined;
}, {
watchers: {
commands: {
command: string;
workingDirectory?: string | undefined;
tags?: string[] | undefined;
artifacts?: {
output: string;
description?: string | undefined;
ignore?: string[] | undefined;
}[] | undefined;
}[];
enabled?: boolean | undefined;
files?: string[] | undefined;
invalidators?: {
files?: string[] | undefined;
environment?: string[] | undefined;
} | undefined;
ignored?: string[] | undefined;
label?: string | undefined;
}[];
$schema?: string | undefined;
debounceTime?: number | undefined;
defaultIgnoredFiles?: string[] | undefined;
plugins?: ({
name: "shadowdog-rake";
options?: {} | undefined;
} | {
name: "shadowdog-local-cache";
options?: {
path?: string | undefined;
read?: boolean | undefined;
write?: boolean | undefined;
} | undefined;
} | {
options: {
bucketName: string;
path?: string | undefined;
read?: boolean | undefined;
write?: boolean | undefined;
};
name: "shadowdog-remote-aws-s3-cache";
} | {
name: "shadowdog-tag";
options?: {} | undefined;
} | {
name: "shadowdog-tree";
options?: {} | undefined;
} | {
name: "shadowdog-socket";
options?: {
path?: string | undefined;
} | undefined;
} | {
name: "shadowdog-git";
options?: {} | undefined;
} | {
name: "shadowdog-lock";
options?: {
path?: string | undefined;
} | undefined;
})[] | undefined;
}>;
export type ConfigFile = z.infer<typeof configSchema>;
export type WatcherConfig = ConfigFile['watchers'][number];
export type CommandConfig = WatcherConfig['commands'][number];
export type ArtifactConfig = NonNullable<CommandConfig['artifacts']>[number];
export type PluginsConfig = ConfigFile['plugins'];
export type InvalidatorConfig = WatcherConfig['invalidators'];
export declare const loadConfig: (configFilePath: string) => ConfigFile;