{"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/db/dist/mod.cjs","../src/mod.ts","../src/utils.ts"],"names":[],"mappings":"AAAA;ACAA,6GAAmB;ADEnB;AACA;AEMO,SAAS,YAAA,CAAgB,IAAA,EAAuC;AACtE,EAAA,OACC,OAAO,KAAA,IAAS,SAAA,GAChB,KAAA,IAAS,KAAA,GACT,OAAA,GAAU,KAAA,GACV,OAAQ,IAAA,CAAoB,KAAA,IAAS,UAAA;AAEvC;AFTA;AACA;ACAO,SAAS,EAAA,CAAG;AAAA,EAClB;AACD,EAAA,EAA2B,CAAC,CAAA,EAAgC;AAC3D,EAAA,OAAO;AAAA,IACN,YAAA,EAAc,MAAA,CAAO,GAAA,EAAA,GAAQ;AAE5B,MAAA,GAAA,CAAI,CAAC,GAAA,CAAI,WAAA,EAAa;AACrB,QAAA,MAAM,IAAI,KAAA;AAAA,UACT;AAAA,QACD,CAAA;AAAA,MACD;AAEA,MAAA,MAAM,KAAA,EAAO,MAAM,GAAA,CAAI,WAAA,CAAY,CAAA;AAEnC,MAAA,GAAA,CAAI,CAAC,IAAA,EAAM;AACV,QAAA,MAAM,IAAI,KAAA;AAAA,UACT;AAAA,QACD,CAAA;AAAA,MACD;AAEA,MAAA,GAAA,CAAI,YAAA,CAAa,IAAI,CAAA,EAAG;AAGvB,QAAA,OAAO,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,EAAG,IAAA,EAAM;AAAA,UAC9B,OAAA,EAAS,MAAA,CAAO,KAAA,EAAA,GAAU,IAAA,EAAA,GAAS;AAClC,YAAA,OAAO,IAAA,CAAK,IAAA,CAAK,KAAA,EAAO,GAAG,IAAI,CAAA;AAAA,UAChC;AAAA,QACD,CAAqB,CAAA;AAAA,MACtB;AAEA,MAAA,MAAM,OAAA,EAAS,IAAI,4BAAA,CAAO,IAAc,CAAA;AACxC,MAAA,OAAO,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,EAAG,MAAA,EAAQ;AAAA,QAChC,OAAA,EAAS,MAAA,CAAO,KAAA,EAAA,GAAU,IAAA,EAAA,GAAS;AAClC,UAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,GAAA,CAAI,GAAG,IAAI,CAAA;AAAA,QACzC;AAAA,MACD,CAAqB,CAAA;AAAA,IACtB,CAAA;AAAA,IACA,SAAA,EAAW,MAAA,CAAO,MAAA,EAAA,GAAW;AAE5B,MAAA,GAAA,CAAI,SAAA,EAAW;AACd,QAAA,MAAM,SAAA,CAAU,MAAM,CAAA;AAAA,MACvB;AAAA,IACD;AAAA,EACD,CAAA;AACD;ADNA;AACE;AACF,gBAAC","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/db/dist/mod.cjs","sourcesContent":[null,"import SQLite from \"better-sqlite3\";\nimport type { DatabaseProvider, RawAccess } from \"./config\";\nimport { isSQLiteShim, type SQLiteShim } from \"./utils\";\n\ninterface DatabaseFactoryConfig {\n\tonMigrate?: (db: RawAccess) => Promise<void> | void;\n}\n\nexport function db({\n\tonMigrate,\n}: DatabaseFactoryConfig = {}): DatabaseProvider<RawAccess> {\n\treturn {\n\t\tcreateClient: async (ctx) => {\n\t\t\t// Create a database connection using the provided context\n\t\t\tif (!ctx.getDatabase) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"createDatabase method is not available in context.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst conn = await ctx.getDatabase();\n\n\t\t\tif (!conn) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Cannot create database connection, or database feature is not enabled.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (isSQLiteShim(conn)) {\n\t\t\t\t// If the connection is already an object with exec method, return it\n\t\t\t\t// i.e. in serverless environments (Cloudflare Workers)\n\t\t\t\treturn Object.assign({}, conn, {\n\t\t\t\t\texecute: async (query, ...args) => {\n\t\t\t\t\t\treturn conn.exec(query, ...args);\n\t\t\t\t\t},\n\t\t\t\t} satisfies RawAccess) as SQLiteShim & RawAccess;\n\t\t\t}\n\n\t\t\tconst client = new SQLite(conn as string);\n\t\t\treturn Object.assign({}, client, {\n\t\t\t\texecute: async (query, ...args) => {\n\t\t\t\t\treturn client.prepare(query).all(...args);\n\t\t\t\t},\n\t\t\t} satisfies RawAccess) as RawAccess;\n\t\t},\n\t\tonMigrate: async (client) => {\n\t\t\t// Run migrations if provided in the config\n\t\t\tif (onMigrate) {\n\t\t\t\tawait onMigrate(client);\n\t\t\t}\n\t\t},\n\t};\n}\n","/**\n * On serverless environments, we use a shim, as not all methods are available.\n * This is a minimal shim that only includes the `exec` method, which is used for\n * running raw SQL commands.\n */\nexport type SQLiteShim = {\n\texec: (query: string, ...args: unknown[]) => unknown[];\n};\n\nexport function isSQLiteShim<T>(conn: unknown): conn is SQLiteShim & T {\n\treturn (\n\t\ttypeof conn === \"object\" &&\n\t\tconn !== null &&\n\t\t\"exec\" in conn &&\n\t\ttypeof (conn as SQLiteShim).exec === \"function\"\n\t);\n}\n"]}