Adds Core-owned identity contracts, a Core-owned Better Auth database schema (ekklesia_core_user/session/account/verification), a first-class Core-owned migration source that coexists with module-owned migrations under the exact existing migration system, and an explicit Better Auth construction boundary. No authentication endpoint or sign-in UI is exposed yet (ADR 0010). Co-Authored-By: Claude Sonnet 5 <[email protected]>
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import { readFile } from "node:fs/promises";
|
|
import path from "node:path";
|
|
import { discoverAllMigrations } from "../migrations/index.js";
|
|
import type { ModuleMigrationAggregate } from "../modules/index.js";
|
|
|
|
interface PackageVersion {
|
|
readonly version?: unknown;
|
|
}
|
|
|
|
async function readPackageVersion(packagePath: string): Promise<string> {
|
|
const packageData = JSON.parse(await readFile(packagePath, "utf8")) as PackageVersion;
|
|
if (typeof packageData.version !== "string") {
|
|
throw new TypeError("A required workspace package does not declare a version.");
|
|
}
|
|
return packageData.version;
|
|
}
|
|
|
|
export async function discoverRepositoryMigrations(
|
|
repositoryRoot = process.cwd(),
|
|
): Promise<ModuleMigrationAggregate> {
|
|
const [platformVersion, moduleSdkVersion] = await Promise.all([
|
|
readPackageVersion(path.join(repositoryRoot, "package.json")),
|
|
readPackageVersion(path.join(repositoryRoot, "packages/module-sdk/package.json")),
|
|
]);
|
|
|
|
return discoverAllMigrations({
|
|
coreMigrationsDirectory: path.join(repositoryRoot, "core", "drizzle"),
|
|
moduleDiscovery: {
|
|
moduleSdkVersion,
|
|
modulesDirectory: path.join(repositoryRoot, "modules"),
|
|
platformVersion,
|
|
},
|
|
});
|
|
}
|