UNPKG

everything-dev

Version:

A consolidated product package for building Module Federation apps with oRPC APIs.

66 lines (64 loc) 2.19 kB
import { existsSync, readFileSync } from "node:fs"; import { dirname, join } from "node:path"; //#region src/db.ts function normalizeSlug(name) { return (name.split("/").pop() ?? name).replace(/^@/, "").replace(/[^a-zA-Z0-9_-]/g, "_").replace(/-plugin$/i, "").replace(/-/g, "_").toLowerCase(); } function getMigrationSlug(dir) { if (!dir) return normalizeSlug(process.env.npm_package_name ?? "unknown"); let current = dirname(dir); for (let i = 0; i < 10; i++) { const pkgPath = join(current, "package.json"); if (existsSync(pkgPath)) try { return normalizeSlug(JSON.parse(readFileSync(pkgPath, "utf-8")).name ?? current); } catch { return normalizeSlug(current); } const parent = dirname(current); if (parent === current) break; current = parent; } return normalizeSlug(dir); } function getMigrationStorage(dir) { return { schema: "drizzle", table: `__drizzle_migrations_${getMigrationSlug(dir)}`, slug: getMigrationSlug(dir) }; } function getLegacyCandidates() { return [{ schema: "drizzle", table: "__drizzle_migrations" }, { schema: "public", table: "drizzle_migrations" }]; } function migrateSql(storage) { return { ...storage, qualified: `"${storage.schema}"."${storage.table}"` }; } function pluginMigrationSlug(key) { return (key.split("/").pop() ?? key).replace(/^@/, "").replace(/[^a-zA-Z0-9_-]/g, "_").replace(/-plugin$/i, "").replace(/-/g, "_").toLowerCase(); } function getDatabaseUrlSecretName(slug) { return `${slug.toUpperCase().replace(/-/g, "_")}_DATABASE_URL`; } function extractExpectedTables(migrations) { const tables = /* @__PURE__ */ new Set(); const re = /CREATE\s+TABLE\s+(?:IF\s+NOT\s+EXISTS\s+)?(?:"([^"]+)"\.)?"([^"]+)"/gi; for (const migration of migrations) for (const stmt of migration.sql) for (const match of stmt.matchAll(re)) { const schemaName = match[1]; const tableName = match[2]; if (schemaName) tables.add(schemaName); else if (tableName) tables.add(tableName); } return [...tables]; } //#endregion export { extractExpectedTables, getDatabaseUrlSecretName, getLegacyCandidates, getMigrationSlug, getMigrationStorage, migrateSql, pluginMigrationSlug }; //# sourceMappingURL=db.mjs.map