72 lines
2.3 KiB
TypeScript
72 lines
2.3 KiB
TypeScript
export type MigrationInput = {
|
|||
|
|
schemaVersion: 1;
|
||
|
|
executionId: string;
|
||
|
|
exportId: string;
|
||
|
|
ports: {
|
||
|
|
name: string;
|
||
|
|
binding: string;
|
||
|
|
view: "old" | "new";
|
||
|
|
access: ("read" | "write" | "create" | "edge")[];
|
||
|
|
atomId?: string;
|
||
|
|
attachedAtomId?: string;
|
||
|
|
defaultValue?: unknown;
|
||
|
|
states?: {
|
||
|
|
objectId: string;
|
||
|
|
value: unknown;
|
||
|
|
}[];
|
||
|
|
edges?: MigrationEdge[];
|
||
|
|
}[];
|
||
|
|
};
|
||
|
|
export type MigrationEdge = {
|
||
|
|
id: string;
|
||
|
|
edgeTypeId: string;
|
||
|
|
firstObjectId: string;
|
||
|
|
secondObjectId: string;
|
||
|
|
firstProjectionId: string;
|
||
|
|
secondProjectionId: string;
|
||
|
|
firstOrdinal?: number;
|
||
|
|
secondOrdinal?: number;
|
||
|
|
firstKeyJson?: string;
|
||
|
|
secondKeyJson?: string;
|
||
|
|
};
|
||
|
|
export type MigrationOutput = {
|
||
|
|
schemaVersion: 1;
|
||
|
|
executionId: string;
|
||
|
|
writes: {
|
||
|
|
port: string;
|
||
|
|
objectId: string;
|
||
|
|
value: unknown;
|
||
|
|
}[];
|
||
|
|
creates: {
|
||
|
|
port: string;
|
||
|
|
logicalKey: string;
|
||
|
|
objectId: string;
|
||
|
|
}[];
|
||
|
|
edgeReplacements: {
|
||
|
|
port: string;
|
||
|
|
edges: MigrationEdge[];
|
||
|
|
}[];
|
||
|
|
};
|
||
|
|
export type MigrationContext = {
|
||
|
|
enumerate(port: string): {
|
||
|
|
objectId: string;
|
||
|
|
value: unknown;
|
||
|
|
}[];
|
||
|
|
read(port: string, objectId: string): unknown;
|
||
|
|
write(port: string, objectId: string, value: unknown): void;
|
||
|
|
create(port: string, logicalKey: string): string;
|
||
|
|
edges(port: string): MigrationEdge[];
|
||
|
|
replaceEdges(port: string, edges: MigrationEdge[]): void;
|
||
|
|
};
|
||
|
|
export declare const migrationObjectId: (executionId: string, port: string, logicalKey: string) => string;
|
||
|
|
/** No ordinary RuntimeContext or network/database clients are supplied here.
|
||
|
|
* Process isolation belongs to the host, not this convenience API. */
|
||
|
|
export declare const createMigrationContext: (input: MigrationInput) => {
|
||
|
|
context: MigrationContext;
|
||
|
|
result: () => MigrationOutput;
|
||
|
|
};
|
||
|
|
/** Entrypoint for an immutable package's dedicated bin/migrate executable.
|
||
|
|
* stdout is protocol-only; send diagnostics to stderr. The host independently
|
||
|
|
* validates every write, helper identity, contract, and completion receipt. */
|
||
|
|
export declare const serveMigration: (exports: Record<string, (context: MigrationContext) => void | Promise<void>>) => Promise<void>;
|
||
|
|
//# sourceMappingURL=migration.d.ts.map
|