{"version":3,"file":"utils.cjs","names":["durableObjectNamespaceIdFromName"],"sources":["../src/utils.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { dirname, join, relative } from 'node:path';\nimport promptSync from 'prompt-sync';\nimport { unstable_readConfig } from 'wrangler/wrangler-dist/cli';\nimport { durableObjectNamespaceIdFromName } from './hash';\nimport type { MinimalD1Database, WranglerMinimalConfig } from './types';\n\nexport function confirmSync(message: string): boolean {\n  const prompt = promptSync();\n  const answer = prompt(`${message} (y/N): `);\n  return answer?.toLowerCase() === 'y';\n}\n\nexport interface GetD1BindingInfoOptions {\n  binding?: string;\n  configPath?: string;\n  persistTo?: string;\n  environment?: string;\n}\n\nexport interface D1DatabaseInfo {\n  id: string;\n  filename: string;\n  exists: boolean;\n}\n\nexport interface GetD1BindingInfoResult {\n  configPath: string;\n  binding?: string;\n  databaseName?: string;\n  database?: D1DatabaseInfo;\n  previewDatabase?: D1DatabaseInfo;\n  migrationsDir?: string;\n  migrationsTable?: string;\n  remote?: boolean;\n}\n\nexport function getD1BindingInfo({\n  binding,\n  environment,\n  persistTo,\n  configPath: wranglerConfigPath,\n}: GetD1BindingInfoOptions = {}): GetD1BindingInfoResult {\n  const { d1_databases, configPath } = unstable_readConfig({ env: environment, config: wranglerConfigPath }) as WranglerMinimalConfig;\n  if (typeof configPath !== 'string') {\n    throw new Error('Failed to get wrangler config path');\n  }\n  if (!d1_databases || d1_databases.length === 0) {\n    throw new Error('No D1 binding exists in the config');\n  }\n  if (d1_databases.length > 1 && !binding) {\n    throw new Error(\"Argument 'binding' is required when more than one D1 bindings exist in the config\");\n  }\n  let bindingConfig: MinimalD1Database | undefined;\n  if (binding) {\n    bindingConfig = d1_databases.find((d1) => d1.binding === binding);\n    if (!bindingConfig) {\n      throw new Error(`Could not find D1 binding '${binding}' in config`);\n    }\n  } else {\n    bindingConfig = d1_databases[0];\n  }\n\n  if (!bindingConfig.database_id && !bindingConfig.preview_database_id) {\n    throw new Error(`Neither 'database_id' nor 'preview_database_id' is set for D1 binding '${bindingConfig.binding}'`);\n  }\n\n  const wranglerConfigDir = configPath ? dirname(configPath) : undefined;\n  const wranglerStateDir = persistTo ?? relative('.', join(wranglerConfigDir ?? '', '.wrangler/state/v3'));\n\n  const [database, previewDatabase] = [bindingConfig.database_id, bindingConfig.preview_database_id].map((databaseId) => {\n    if (!databaseId) {\n      return null;\n    }\n    const uniqueKey = 'miniflare-D1DatabaseObject';\n    const miniflarePath = `${wranglerStateDir}/d1/${uniqueKey}`;\n    const hash = durableObjectNamespaceIdFromName(uniqueKey, databaseId);\n    const filename = join(miniflarePath, `${hash}.sqlite`);\n    return {\n      id: databaseId,\n      filename,\n      exists: existsSync(filename),\n    };\n  });\n\n  return {\n    configPath,\n    binding: bindingConfig.binding,\n    databaseName: bindingConfig.database_name,\n    database: database ?? undefined,\n    previewDatabase: previewDatabase ?? undefined,\n    migrationsDir: bindingConfig.migrations_dir,\n    migrationsTable: bindingConfig.migrations_table,\n    remote: bindingConfig.remote,\n  };\n}\n"],"mappings":";;;;;;;;;AAOA,SAAgB,YAAY,SAA0B;CAEpD,MAAM,UAAA,GAAA,YAAA,UADqB,CACL,GAAG,QAAQ,UAAU;AAC3C,SAAA,WAAA,QAAA,WAAA,KAAA,IAAA,KAAA,IAAO,OAAQ,aAAa,MAAK;;AA2BnC,SAAgB,iBAAiB,EAC/B,SACA,aACA,WACA,YAAY,uBACe,EAAE,EAA0B;CACvD,MAAM,EAAE,cAAc,gBAAA,GAAA,2BAAA,qBAAmC;EAAE,KAAK;EAAa,QAAQ;EAAoB,CAAC;AAC1G,KAAI,OAAO,eAAe,SACxB,OAAM,IAAI,MAAM,qCAAqC;AAEvD,KAAI,CAAC,gBAAgB,aAAa,WAAW,EAC3C,OAAM,IAAI,MAAM,qCAAqC;AAEvD,KAAI,aAAa,SAAS,KAAK,CAAC,QAC9B,OAAM,IAAI,MAAM,oFAAoF;CAEtG,IAAI;AACJ,KAAI,SAAS;AACX,kBAAgB,aAAa,MAAM,OAAO,GAAG,YAAY,QAAQ;AACjE,MAAI,CAAC,cACH,OAAM,IAAI,MAAM,8BAA8B,QAAQ,aAAa;OAGrE,iBAAgB,aAAa;AAG/B,KAAI,CAAC,cAAc,eAAe,CAAC,cAAc,oBAC/C,OAAM,IAAI,MAAM,0EAA0E,cAAc,QAAQ,GAAG;CAGrH,MAAM,oBAAoB,cAAA,GAAA,UAAA,SAAqB,WAAW,GAAG,KAAA;CAC7D,MAAM,mBAAmB,cAAA,QAAA,cAAA,KAAA,IAAA,aAAA,GAAA,UAAA,UAAsB,MAAA,GAAA,UAAA,MAAU,sBAAA,QAAA,sBAAA,KAAA,IAAA,oBAAqB,IAAI,qBAAqB,CAAC;CAExG,MAAM,CAAC,UAAU,mBAAmB,CAAC,cAAc,aAAa,cAAc,oBAAoB,CAAC,KAAK,eAAe;AACrH,MAAI,CAAC,WACH,QAAO;EAET,MAAM,YAAY;EAGlB,MAAM,YAAA,GAAA,UAAA,MAFgB,GAAG,iBAAiB,MAAM,aAEX,GADxBA,aAAAA,iCAAiC,WAAW,WAAW,CACvB,SAAS;AACtD,SAAO;GACL,IAAI;GACJ;GACA,SAAA,GAAA,QAAA,YAAmB,SAAS;GAC7B;GACD;AAEF,QAAO;EACL;EACA,SAAS,cAAc;EACvB,cAAc,cAAc;EAC5B,UAAU,aAAA,QAAA,aAAA,KAAA,IAAA,WAAY,KAAA;EACtB,iBAAiB,oBAAA,QAAA,oBAAA,KAAA,IAAA,kBAAmB,KAAA;EACpC,eAAe,cAAc;EAC7B,iBAAiB,cAAc;EAC/B,QAAQ,cAAc;EACvB"}