mirror of
https://github.com/Start9Labs/start-sdk.git
synced 2026-03-26 02:11:56 +00:00
chore: Magic phantom types
This commit is contained in:
@@ -25,7 +25,7 @@ export function updateConfig<
|
||||
noRepeat?: NoRepeat<version, type>,
|
||||
noFail = false,
|
||||
): M.MigrationFn<version, type> {
|
||||
return async (effects: T.Effects) => {
|
||||
return M.migrationFn(async (effects: T.Effects) => {
|
||||
await noRepeatGuard(effects, noRepeat, async () => {
|
||||
let config = util.unwrapResultType(await getConfig({})(effects)).config;
|
||||
if (config) {
|
||||
@@ -42,7 +42,7 @@ export function updateConfig<
|
||||
}
|
||||
});
|
||||
return { configured };
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
export async function noRepeatGuard<
|
||||
|
||||
@@ -4,7 +4,15 @@ import { matches } from "./dependencies.ts";
|
||||
|
||||
export type MigrationFn<version extends string, type extends "up" | "down"> = (
|
||||
effects: T.Effects,
|
||||
) => Promise<T.MigrationRes>;
|
||||
) => Promise<T.MigrationRes> & { _type: type; _version: version };
|
||||
|
||||
export function migrationFn<version extends string, type extends "up" | "down">(
|
||||
fn: (
|
||||
effects: T.Effects,
|
||||
) => Promise<T.MigrationRes>,
|
||||
): MigrationFn<version, type> {
|
||||
return fn as MigrationFn<version, type>;
|
||||
}
|
||||
|
||||
export interface Migration<version extends string> {
|
||||
up: MigrationFn<version, "up">;
|
||||
@@ -34,8 +42,7 @@ export function fromMapping<versions extends string>(
|
||||
const current = EmVer.parse(currentVersion);
|
||||
const other = EmVer.parse(version);
|
||||
|
||||
const filteredMigrations =
|
||||
(Object.entries(migrations) as [
|
||||
const filteredMigrations = (Object.entries(migrations) as [
|
||||
keyof MigrationMapping<string>,
|
||||
Migration<string>,
|
||||
][])
|
||||
|
||||
Reference in New Issue
Block a user