semgrator
Version:
Run migrations code based on semantic version rules
30 lines • 1.24 kB
TypeScript
/// <reference path="../src/lib/abstract-logging.d.ts" />
import { AbstractLogger } from 'abstract-logging';
export type Migration<Input, Output = Input> = {
version: string;
toVersion?: string;
up: (input: Input) => Promise<Output> | Output;
};
interface BaseSemgratorParams<Input> {
version: string;
input: Input;
logger?: AbstractLogger;
}
interface SemgratorParamsWithMigrations<Input, Output> extends BaseSemgratorParams<Input> {
migrations: Migration<Input, Output>[] | AsyncGenerator<Migration<Input, Output>>;
}
interface SemgratorParamsWithPath<Input> extends BaseSemgratorParams<Input> {
path: string;
}
interface SemgratorResult<Output> {
version: string;
changed: boolean;
result: Output;
}
interface ThenableAsyncIterator<T> extends PromiseLike<T> {
[Symbol.asyncIterator](): AsyncIterator<T, T>;
}
export declare function loadMigrationsFromPath<Input, Output = Input>(path: string): AsyncGenerator<Migration<Input, Output>>;
export declare function semgrator<Input = unknown, Output = unknown>(params: SemgratorParamsWithPath<Input> | SemgratorParamsWithMigrations<Input, Output>): ThenableAsyncIterator<SemgratorResult<Output>>;
export {};
//# sourceMappingURL=semgrator.d.ts.map