{"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"}