{"version":3,"sources":["../src/index.ts","../src/error.ts"],"names":[],"mappings":";AAOA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,kBAAkB;;;ACVpB,IAAM,4BAAN,cAAwC,MAAM;AAAA,EAC5C,YACE,MACP,SACA;AACA,UAAM,0BAA0B,IAAI,MAAM,OAAO,EAAE;AAH5C;AAIP,SAAK,OAAO;AAAA,EACd;AACF;;;ADUA,IAAM,wBAAN,cAAoC,gBAAgB;AAAA,EAApD;AAAA;AAGE;AAAA;AAAA,SAAiB,4BAA4B;AAAA;AAAA,EAC7C,IAAW,2BAAoC;AAC7C,WAAO,KAAK;AAAA,EACd;AACF;AAEA,IAAM,wBAAN,cAAoC,gBAAmC;AAAA,EACrE,YAAoB,QAAqC;AACvD,UAAM,MAAM;AADM;AAAA,EAEpB;AAAA,EAEA,gBAAgC;AAC9B,WAAO,IAAI,sBAAsB;AAAA,EACnC;AAAA,EAEA,eAAuB;AACrB,WAAO,IAAI,yBAAyB,KAAK,MAAM;AAAA,EACjD;AACF;AAEA,IAAM,2BAAN,cAAuC,eAAe;AAAA;AAAA;AAAA,EAGpD,MAAM,oBAAiD;AACrD,UAAM,aAAa,MAAM,MAAM,kBAAkB;AACjD,WAAO,IAAI,MAAM,YAAY;AAAA,MAC3B,IAAI,QAAQ,GAAG;AACb,cAAM,WAAW,OAAO,CAA6B;AACrD,YAAI,MAAM,iBAAiB,OAAO,aAAa,YAAY;AACzD,gBAAM,IAAI;AAAA,YACR;AAAA,YACA;AAAA,UACF;AAAA,QACF;AACA,YAAI,OAAO,aAAa,YAAY;AAClC,iBAAO,SAAS,KAAK,MAAM;AAAA,QAC7B;AACA,eAAO;AAAA,MACT;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,mBAAkC;AAChC,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,oBAAmC;AACjC,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,sBAAqC;AACnC,UAAM,IAAI;AAAA,MACR;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,aACd,YACA,cACW;AACX,SAAO,IAAI,OAAU;AAAA,IACnB,GAAG;AAAA,IACH,SAAS,IAAI,sBAAsB;AAAA,MACjC,GAAG;AAAA,MACH,MAAM,WAAW,UAAU;AAAA,IAC7B,CAAC;AAAA,EACH,CAAC;AACH","sourcesContent":["import type {\n  DatabaseConnection,\n  Dialect,\n  DialectAdapter,\n  Driver,\n  KyselyConfig,\n} from 'kysely';\nimport {\n  PostgresDialect,\n  PostgresDriver,\n  Kysely,\n  PostgresAdapter,\n} from 'kysely';\nimport type { Pool } from '@neondatabase/serverless';\nimport { createPool } from '@vercel/postgres';\nimport type { VercelPostgresPoolConfig } from '@vercel/postgres';\nimport { VercelPostgresKyselyError } from './error';\n\ntype VercelPostgresDialectConfig = VercelPostgresPoolConfig & {\n  pool: Pool;\n};\n\nclass VercelPostgresAdapter extends PostgresAdapter {\n  // represented as readonly property to satisfy eslint rule:\n  // typescript-eslint/class-literal-property-style\n  private readonly _supportsTransactionalDdl = false;\n  public get supportsTransactionalDdl(): boolean {\n    return this._supportsTransactionalDdl;\n  }\n}\n\nclass VercelPostgresDialect extends PostgresDialect implements Dialect {\n  constructor(private config: VercelPostgresDialectConfig) {\n    super(config);\n  }\n\n  createAdapter(): DialectAdapter {\n    return new VercelPostgresAdapter();\n  }\n\n  createDriver(): Driver {\n    return new VercelPostgresPoolDriver(this.config);\n  }\n}\n\nclass VercelPostgresPoolDriver extends PostgresDriver {\n  // Rather than trying to rebuild a perfectly good connection pool,\n  // we can just use a proxy to throw if the user tries to stream.\n  async acquireConnection(): Promise<DatabaseConnection> {\n    const connection = await super.acquireConnection();\n    return new Proxy(connection, {\n      get(target, p) {\n        const original = target[p as keyof DatabaseConnection];\n        if (p === 'streamQuery' && typeof original === 'function') {\n          throw new VercelPostgresKyselyError(\n            'kysely_streaming_not_supported',\n            'Streaming is not supported yet.',\n          );\n        }\n        if (typeof original === 'function') {\n          return original.bind(target);\n        }\n        return original;\n      },\n    });\n  }\n\n  beginTransaction(): Promise<void> {\n    throw new VercelPostgresKyselyError(\n      'kysely_transactions_not_supported',\n      'Transactions are not supported yet.',\n    );\n  }\n\n  commitTransaction(): Promise<void> {\n    throw new VercelPostgresKyselyError(\n      'kysely_transactions_not_supported',\n      'Transactions are not supported yet.',\n    );\n  }\n\n  rollbackTransaction(): Promise<void> {\n    throw new VercelPostgresKyselyError(\n      'kysely_transactions_not_supported',\n      'Transactions are not supported yet.',\n    );\n  }\n}\n\nexport function createKysely<T>(\n  poolConfig?: VercelPostgresPoolConfig,\n  kyselyConfig?: Partial<KyselyConfig>,\n): Kysely<T> {\n  return new Kysely<T>({\n    ...kyselyConfig,\n    dialect: new VercelPostgresDialect({\n      ...poolConfig,\n      pool: createPool(poolConfig),\n    }),\n  });\n}\n","type VercelPostgresKyselyErrorCode =\n  | 'kysely_transactions_not_supported'\n  | 'kysely_streaming_not_supported';\n\nexport class VercelPostgresKyselyError extends Error {\n  public constructor(\n    public code: VercelPostgresKyselyErrorCode,\n    message: string,\n  ) {\n    super(`VercelPostgresError - '${code}': ${message}`);\n    this.name = 'VercelPostgresError';\n  }\n}\n"]}