ordinality
Version:
Universal migrations tools
87 lines (86 loc) • 5.06 kB
TypeScript
/// <reference types="node" />
/// <reference types="node" />
import { z } from 'zod';
import { MigrationContext } from '../Migration';
import type { MigrationStorage } from './MigrationStorage';
export type Codec<T> = {
encode: (data: T) => Buffer;
decode: (buffer: Buffer) => T;
};
export type State<M = void> = {
migrations: {
name: string;
meta: M;
}[];
};
export declare class MigrationFileStorage<C extends MigrationContext<any, any>> implements MigrationStorage<C> {
private readonly filename;
private readonly options;
constructor(filename: string, options?: {
/**
* Scheme validator for a migration meta
*/
metaScheme?: C['meta'] extends z.TypeOf<infer X> ? X : never;
/**
* Custom logic to encode/decode data
*
* By default data will be encoded as JSON string
*/
codec?: Codec<State<C['meta']>>;
});
protected getCodec(): Codec<State<C['meta']>>;
protected getMigrationScheme(): z.ZodObject<{
name: z.ZodString;
meta: (C["meta"] extends z.TypeOf<infer X extends z.ZodType<any, any, any>> ? X : never) | z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodVoid>>>;
}, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
name: z.ZodString;
meta: (C["meta"] extends z.TypeOf<infer X extends z.ZodType<any, any, any>> ? X : never) | z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodVoid>>>;
}>, any> extends infer T ? { [k in keyof T]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
name: z.ZodString;
meta: (C["meta"] extends z.TypeOf<infer X extends z.ZodType<any, any, any>> ? X : never) | z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodVoid>>>;
}>, any>[k]; } : never, z.baseObjectInputType<{
name: z.ZodString;
meta: (C["meta"] extends z.TypeOf<infer X extends z.ZodType<any, any, any>> ? X : never) | z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodVoid>>>;
}> extends infer T_1 ? { [k_1 in keyof T_1]: z.baseObjectInputType<{
name: z.ZodString;
meta: (C["meta"] extends z.TypeOf<infer X extends z.ZodType<any, any, any>> ? X : never) | z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodVoid>>>;
}>[k_1]; } : never>;
protected getStorageScheme(): z.ZodObject<{
migrations: z.ZodArray<z.ZodObject<{
name: z.ZodString;
meta: (C["meta"] extends z.TypeOf<infer X extends z.ZodType<any, any, any>> ? X : never) | z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodVoid>>>;
}, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
name: z.ZodString;
meta: (C["meta"] extends z.TypeOf<infer X extends z.ZodType<any, any, any>> ? X : never) | z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodVoid>>>;
}>, any> extends infer T ? { [k in keyof T]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
name: z.ZodString;
meta: (C["meta"] extends z.TypeOf<infer X extends z.ZodType<any, any, any>> ? X : never) | z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodVoid>>>;
}>, any>[k]; } : never, z.baseObjectInputType<{
name: z.ZodString;
meta: (C["meta"] extends z.TypeOf<infer X extends z.ZodType<any, any, any>> ? X : never) | z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodVoid>>>;
}> extends infer T_1 ? { [k_1 in keyof T_1]: z.baseObjectInputType<{
name: z.ZodString;
meta: (C["meta"] extends z.TypeOf<infer X extends z.ZodType<any, any, any>> ? X : never) | z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodVoid>>>;
}>[k_1]; } : never>, "many">;
}, "strip", z.ZodTypeAny, {
migrations: (z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
name: z.ZodString;
meta: (C["meta"] extends z.TypeOf<infer X extends z.ZodType<any, any, any>> ? X : never) | z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodVoid>>>;
}>, any> extends infer T ? { [k in keyof T]: z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
name: z.ZodString;
meta: (C["meta"] extends z.TypeOf<infer X extends z.ZodType<any, any, any>> ? X : never) | z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodVoid>>>;
}>, any>[k]; } : never)[];
}, {
migrations: (z.baseObjectInputType<{
name: z.ZodString;
meta: (C["meta"] extends z.TypeOf<infer X extends z.ZodType<any, any, any>> ? X : never) | z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodVoid>>>;
}> extends infer T_1 ? { [k_1 in keyof T_1]: z.baseObjectInputType<{
name: z.ZodString;
meta: (C["meta"] extends z.TypeOf<infer X extends z.ZodType<any, any, any>> ? X : never) | z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodVoid>>>;
}>[k_1]; } : never)[];
}>;
protected fetchState(): Promise<State<C["meta"]>>;
list(): Promise<string[]>;
log(uid: string, context: C): Promise<void>;
unlog(uid: string): Promise<void>;
}