{"version":3,"file":"driver.cjs","names":["SQLiteAsyncDatabase","entityKind","SQLiteDialect","DefaultLogger","BetterSQLiteSession","Client"],"sources":["../../src/better-sqlite3/driver.ts"],"sourcesContent":["import Client, { type Database, type Options } from 'better-sqlite3';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { SQLiteAsyncDatabase } from '~/sqlite-core/async/db.ts';\nimport { SQLiteDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleSQLiteConfig } from '~/sqlite-core/utils.ts';\nimport { jitCompatCheck } from '~/utils.ts';\nimport { type BetterSQLite3RunResult, BetterSQLiteSession } from './session.ts';\n\nexport type DrizzleBetterSQLite3DatabaseConfig =\n\t| ({\n\t\tsource?:\n\t\t\t| string\n\t\t\t| Buffer;\n\t} & Options)\n\t| string\n\t| undefined;\n\nexport class BetterSQLite3Database<TRelations extends AnyRelations = EmptyRelations>\n\textends SQLiteAsyncDatabase<'sync', BetterSQLite3RunResult, TRelations>\n{\n\tstatic override readonly [entityKind]: string = 'BetterSQLite3Database';\n}\n\nfunction construct<TRelations extends AnyRelations = EmptyRelations>(\n\tclient: Database,\n\tconfig: Omit<DrizzleSQLiteConfig<TRelations>, 'cache'> = {},\n): BetterSQLite3Database<TRelations> & {\n\t$client: Database;\n} {\n\tconst dialect = new SQLiteDialect({\n\t\tuseJitMappers: jitCompatCheck(config.jit),\n\t});\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new BetterSQLiteSession(\n\t\tclient,\n\t\tdialect,\n\t\trelations,\n\t\t{\n\t\t\tlogger,\n\t\t},\n\t);\n\tconst db = new BetterSQLite3Database('sync', dialect, session, relations);\n\t(<any> db).$client = client;\n\t// (<any> db).$cache = config.cache;\n\t// if ((<any> db).$cache) {\n\t// \t(<any> db).$cache['invalidate'] = config.cache?.onMutate;\n\t// }\n\n\treturn db as any;\n}\n\nexport function drizzle<TRelations extends AnyRelations = EmptyRelations>(\n\t...params:\n\t\t| []\n\t\t| [\n\t\t\tstring,\n\t\t]\n\t\t| [\n\t\t\tstring,\n\t\t\tDrizzleSQLiteConfig<TRelations>,\n\t\t]\n\t\t| [\n\t\t\t(\n\t\t\t\t& DrizzleSQLiteConfig<TRelations>\n\t\t\t\t& ({\n\t\t\t\t\tconnection?: DrizzleBetterSQLite3DatabaseConfig;\n\t\t\t\t} | {\n\t\t\t\t\tclient: Database;\n\t\t\t\t})\n\t\t\t),\n\t\t]\n): BetterSQLite3Database<TRelations> & {\n\t$client: Database;\n} {\n\tif (params[0] === undefined || typeof params[0] === 'string') {\n\t\tconst instance = params[0] === undefined ? new Client() : new Client(params[0]);\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tconst { connection, client, ...DrizzleSQLiteConfig } = params[0] as\n\t\t& {\n\t\t\tconnection?: DrizzleBetterSQLite3DatabaseConfig;\n\t\t\tclient?: Database;\n\t\t}\n\t\t& DrizzleSQLiteConfig<TRelations>;\n\n\tif (client) return construct(client, DrizzleSQLiteConfig) as any;\n\n\tif (typeof connection === 'object') {\n\t\tconst { source, ...options } = connection;\n\n\t\tconst instance = new Client(source, options);\n\n\t\treturn construct(instance, DrizzleSQLiteConfig) as any;\n\t}\n\n\tconst instance = new Client(connection);\n\n\treturn construct(instance, DrizzleSQLiteConfig) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<TRelations extends AnyRelations = EmptyRelations>(\n\t\tconfig?: DrizzleSQLiteConfig<TRelations>,\n\t): BetterSQLite3Database<TRelations> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;AAmBA,IAAa,wBAAb,cACSA,8CACT;CACC,QAA0BC,0BAAsB;;AAGjD,SAAS,UACR,QACA,SAAyD,EAAE,EAG1D;CACD,MAAM,UAAU,IAAIC,uCAAc,EACjC,8CAA8B,OAAO,IAAI,EACzC,CAAC;CACF,IAAI;AACJ,KAAI,OAAO,WAAW,KACrB,UAAS,IAAIC,2BAAe;UAClB,OAAO,WAAW,MAC5B,UAAS,OAAO;CAGjB,MAAM,YAAY,OAAO,aAAa,EAAE;CASxC,MAAM,KAAK,IAAI,sBAAsB,QAAQ,SAR7B,IAAIC,mDACnB,QACA,SACA,WACA,EACC,QACA,CACD,EAC8D,UAAU;AACzE,CAAO,GAAI,UAAU;AAMrB,QAAO;;AAGR,SAAgB,QACf,GAAG,QAqBF;AACD,KAAI,OAAO,OAAO,UAAa,OAAO,OAAO,OAAO,SAGnD,QAAO,UAFU,OAAO,OAAO,SAAY,IAAIC,wBAAQ,GAAG,IAAIA,uBAAO,OAAO,GAAG,EAEpD,OAAO,GAAG;CAGtC,MAAM,EAAE,YAAY,QAAQ,GAAG,wBAAwB,OAAO;AAO9D,KAAI,OAAQ,QAAO,UAAU,QAAQ,oBAAoB;AAEzD,KAAI,OAAO,eAAe,UAAU;EACnC,MAAM,EAAE,QAAQ,GAAG,YAAY;AAI/B,SAAO,UAFU,IAAIA,uBAAO,QAAQ,QAAQ,EAEjB,oBAAoB;;AAKhD,QAAO,UAFU,IAAIA,uBAAO,WAAW,EAEZ,oBAAoB;;;CAIxC,SAAS,KACf,QAGC;AACD,SAAO,UAAU,EAAE,EAAS,OAAO"}