import emittery from 'emittery'; import * as errorCause from 'pony-cause'; import type { CommandLineParserOptions } from './cli'; import { UmzugCLI } from './cli'; import type { MigrateDownOptions, MigrateUpOptions, MigrationMeta, MigrationParams, Resolver, RunnableMigration, UmzugEvents, UmzugOptions } from './types'; type MigrationErrorParams = { direction: 'up' | 'down'; } & MigrationParams; export declare class MigrationError extends errorCause.ErrorWithCause { name: string; migration: MigrationErrorParams; jse_cause: unknown; constructor(migration: MigrationErrorParams, original: unknown); get info(): MigrationErrorParams; private static errorString; } export declare class Umzug extends emittery> { readonly options: UmzugOptions; private readonly storage; readonly migrations: (ctx: Ctx) => Promise>>; /** * Compile-time only property for type inference. After creating an Umzug instance, it can be used as type alias for * a user-defined migration. The function receives a migration name, path and the context for an umzug instance * @example * ``` * // migrator.ts * import { Umzug } from 'umzug' * * const umzug = new Umzug({...}) * export type Migration = typeof umzug._types.migration; * * umzug.up(); * ``` * ___ * * ``` * // migration-1.ts * import type { Migration } from '../migrator' * * // name and context will now be strongly-typed * export const up: Migration = ({name, context}) => context.query(...) * export const down: Migration = ({name, context}) => context.query(...) * ``` */ readonly _types: { migration: (params: MigrationParams) => Promise; context: Ctx; }; /** creates a new Umzug instance */ constructor(options: UmzugOptions); private logging; static defaultResolver: Resolver; /** * Get an UmzugCLI instance. This can be overriden in a subclass to add/remove commands - only use if you really know you need this, * and are OK to learn about/interact with the API of @rushstack/ts-command-line. */ protected getCli(options?: CommandLineParserOptions): UmzugCLI; /** * 'Run' an umzug instance as a CLI. This will read `process.argv`, execute commands based on that, and call * `process.exit` after running. If that isn't what you want, stick to the programmatic API. * You probably want to run only if a file is executed as the process's 'main' module with something like: * @example * if (require.main === module) { * myUmzugInstance.runAsCLI() * } */ runAsCLI(argv?: string[]): Promise; /** Get the list of migrations which have already been applied */ executed(): Promise; /** Get the list of migrations which have already been applied */ private _executed; /** Get the list of migrations which are yet to be applied */ pending(): Promise; private _pending; protected runCommand(command: string, cb: (commandParams: { context: Ctx; }) => Promise): Promise; /** * Apply migrations. By default, runs all pending migrations. * @see MigrateUpOptions for other use cases using `to`, `migrations` and `rerun`. */ up(options?: MigrateUpOptions): Promise; /** * Revert migrations. By default, the last executed migration is reverted. * @see MigrateDownOptions for other use cases using `to`, `migrations` and `rerun`. */ down(options?: MigrateDownOptions): Promise; create(options: { name: string; folder?: string; prefix?: 'TIMESTAMP' | 'DATE' | 'NONE'; allowExtension?: string; allowConfusingOrdering?: boolean; skipVerify?: boolean; /** Optionally define the content for the new file. If not set, the configured template will be used. */ content?: string; }): Promise; private static defaultCreationTemplate; private findNameIndex; private findMigrations; private getContext; /** helper for parsing input migrations into a callback returning a list of ready-to-run migrations */ private getMigrationsResolver; } export {};