UNPKG

everything-dev

Version:

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

1 lines 4.23 kB
{"version":3,"file":"db.cjs","names":[],"sources":["../src/db.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\n\nexport interface MigrationStorage {\n schema: string;\n table: string;\n slug: string;\n}\n\nfunction normalizeSlug(name: string): string {\n const basename = name.split(\"/\").pop() ?? name;\n return basename\n .replace(/^@/, \"\")\n .replace(/[^a-zA-Z0-9_-]/g, \"_\")\n .replace(/-plugin$/i, \"\")\n .replace(/-/g, \"_\")\n .toLowerCase();\n}\n\nexport function getMigrationSlug(dir?: string): string {\n if (!dir) return normalizeSlug(process.env.npm_package_name ?? \"unknown\");\n let current = dirname(dir);\n for (let i = 0; i < 10; i++) {\n const pkgPath = join(current, \"package.json\");\n if (existsSync(pkgPath)) {\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\")) as { name?: string };\n return normalizeSlug(pkg.name ?? current);\n } catch {\n return normalizeSlug(current);\n }\n }\n const parent = dirname(current);\n if (parent === current) break;\n current = parent;\n }\n return normalizeSlug(dir);\n}\n\nexport function getMigrationStorage(dir?: string): MigrationStorage {\n return {\n schema: \"drizzle\",\n table: `__drizzle_migrations_${getMigrationSlug(dir)}`,\n slug: getMigrationSlug(dir),\n };\n}\n\nexport function getLegacyCandidates(): { schema: string; table: string }[] {\n return [\n { schema: \"drizzle\", table: \"__drizzle_migrations\" },\n { schema: \"public\", table: \"drizzle_migrations\" },\n ];\n}\n\nexport function migrateSql(storage: MigrationStorage): MigrationStorage & { qualified: string } {\n return { ...storage, qualified: `\"${storage.schema}\".\"${storage.table}\"` };\n}\n\nexport function pluginMigrationSlug(key: string): string {\n const basename = key.split(\"/\").pop() ?? key;\n return basename\n .replace(/^@/, \"\")\n .replace(/[^a-zA-Z0-9_-]/g, \"_\")\n .replace(/-plugin$/i, \"\")\n .replace(/-/g, \"_\")\n .toLowerCase();\n}\n\nexport function getDatabaseUrlSecretName(slug: string): string {\n return `${slug.toUpperCase().replace(/-/g, \"_\")}_DATABASE_URL`;\n}\n\nexport function extractExpectedTables(migrations: { sql: string[] }[]): string[] {\n const tables = new Set<string>();\n const re = /CREATE\\s+TABLE\\s+(?:IF\\s+NOT\\s+EXISTS\\s+)?(?:\"([^\"]+)\"\\.)?\"([^\"]+)\"/gi;\n for (const migration of migrations) {\n for (const stmt of migration.sql) {\n for (const match of stmt.matchAll(re)) {\n const schemaName = match[1];\n const tableName = match[2];\n if (schemaName) {\n tables.add(schemaName);\n } else if (tableName) {\n tables.add(tableName);\n }\n }\n }\n }\n return [...tables];\n}\n"],"mappings":";;;;;;AASA,SAAS,cAAc,MAAsB;AAE3C,SADiB,KAAK,MAAM,IAAI,CAAC,KAAK,IAAI,MAEvC,QAAQ,MAAM,GAAG,CACjB,QAAQ,mBAAmB,IAAI,CAC/B,QAAQ,aAAa,GAAG,CACxB,QAAQ,MAAM,IAAI,CAClB,aAAa;;AAGlB,SAAgB,iBAAiB,KAAsB;AACrD,KAAI,CAAC,IAAK,QAAO,cAAc,QAAQ,IAAI,oBAAoB,UAAU;CACzE,IAAI,iCAAkB,IAAI;AAC1B,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,KAAK;EAC3B,MAAM,8BAAe,SAAS,eAAe;AAC7C,8BAAe,QAAQ,CACrB,KAAI;AAEF,UAAO,cADK,KAAK,gCAAmB,SAAS,QAAQ,CAC7B,CAAC,QAAQ,QAAQ;UACnC;AACN,UAAO,cAAc,QAAQ;;EAGjC,MAAM,gCAAiB,QAAQ;AAC/B,MAAI,WAAW,QAAS;AACxB,YAAU;;AAEZ,QAAO,cAAc,IAAI;;AAG3B,SAAgB,oBAAoB,KAAgC;AAClE,QAAO;EACL,QAAQ;EACR,OAAO,wBAAwB,iBAAiB,IAAI;EACpD,MAAM,iBAAiB,IAAI;EAC5B;;AAGH,SAAgB,sBAA2D;AACzE,QAAO,CACL;EAAE,QAAQ;EAAW,OAAO;EAAwB,EACpD;EAAE,QAAQ;EAAU,OAAO;EAAsB,CAClD;;AAGH,SAAgB,WAAW,SAAqE;AAC9F,QAAO;EAAE,GAAG;EAAS,WAAW,IAAI,QAAQ,OAAO,KAAK,QAAQ,MAAM;EAAI;;AAG5E,SAAgB,oBAAoB,KAAqB;AAEvD,SADiB,IAAI,MAAM,IAAI,CAAC,KAAK,IAAI,KAEtC,QAAQ,MAAM,GAAG,CACjB,QAAQ,mBAAmB,IAAI,CAC/B,QAAQ,aAAa,GAAG,CACxB,QAAQ,MAAM,IAAI,CAClB,aAAa;;AAGlB,SAAgB,yBAAyB,MAAsB;AAC7D,QAAO,GAAG,KAAK,aAAa,CAAC,QAAQ,MAAM,IAAI,CAAC;;AAGlD,SAAgB,sBAAsB,YAA2C;CAC/E,MAAM,yBAAS,IAAI,KAAa;CAChC,MAAM,KAAK;AACX,MAAK,MAAM,aAAa,WACtB,MAAK,MAAM,QAAQ,UAAU,IAC3B,MAAK,MAAM,SAAS,KAAK,SAAS,GAAG,EAAE;EACrC,MAAM,aAAa,MAAM;EACzB,MAAM,YAAY,MAAM;AACxB,MAAI,WACF,QAAO,IAAI,WAAW;WACb,UACT,QAAO,IAAI,UAAU;;AAK7B,QAAO,CAAC,GAAG,OAAO"}