{"version":3,"file":"driver.cjs","names":["SQLiteAsyncDatabase","entityKind","DefaultLogger","SQLiteDialect","SQLiteRemoteSession"],"sources":["../../src/sqlite-proxy/driver.ts"],"sourcesContent":["import type { BatchItem, BatchResponse } from '~/batch.ts';\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 { SQLiteExecuteMethod } from '~/sqlite-core/session.ts';\nimport type { DrizzleSQLiteConfig } from '~/sqlite-core/utils.ts';\nimport { jitCompatCheck } from '~/utils.ts';\nimport { SQLiteRemoteSession } from './session.ts';\n\nexport interface SqliteRemoteResult<T = unknown> {\n\trows?: T[];\n}\n\nexport class SqliteRemoteDatabase<TRelations extends AnyRelations = EmptyRelations>\n\textends SQLiteAsyncDatabase<'async', SqliteRemoteResult, TRelations>\n{\n\tstatic override readonly [entityKind]: string = 'SqliteRemoteDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: SQLiteRemoteSession<TRelations>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\nexport type AsyncRemoteCallback = (\n\tsql: string,\n\tparams: any[],\n\tmethod: SQLiteExecuteMethod,\n) => Promise<{ rows: any[] }>;\n\nexport type AsyncBatchRemoteCallback = (batch: {\n\tsql: string;\n\tparams: any[];\n\tmethod: SQLiteExecuteMethod;\n}[]) => Promise<{ rows: any[] }[]>;\n\nexport type RemoteCallback = AsyncRemoteCallback;\n\nexport function drizzle<TRelations extends AnyRelations = EmptyRelations>(\n\tcallback: RemoteCallback,\n\tconfig?: DrizzleSQLiteConfig<TRelations>,\n): SqliteRemoteDatabase<TRelations>;\nexport function drizzle<TRelations extends AnyRelations = EmptyRelations>(\n\tcallback: RemoteCallback,\n\tbatchCallback?: AsyncBatchRemoteCallback,\n\tconfig?: DrizzleSQLiteConfig<TRelations>,\n): SqliteRemoteDatabase<TRelations>;\nexport function drizzle<TRelations extends AnyRelations = EmptyRelations>(\n\tcallback: RemoteCallback,\n\tbatchCallback?: AsyncBatchRemoteCallback | DrizzleSQLiteConfig<TRelations>,\n\tconfig?: DrizzleSQLiteConfig<TRelations>,\n): SqliteRemoteDatabase<TRelations> {\n\tlet logger;\n\tlet cache;\n\tlet _batchCallback: AsyncBatchRemoteCallback | undefined;\n\tlet _config: DrizzleSQLiteConfig<TRelations> = {};\n\n\tif (batchCallback) {\n\t\tif (typeof batchCallback === 'function') {\n\t\t\t_batchCallback = batchCallback as AsyncBatchRemoteCallback;\n\t\t\t_config = config ?? {};\n\t\t} else {\n\t\t\t_batchCallback = undefined;\n\t\t\t_config = batchCallback as DrizzleSQLiteConfig<TRelations>;\n\t\t}\n\n\t\tif (_config.logger === true) {\n\t\t\tlogger = new DefaultLogger();\n\t\t} else if (_config.logger !== false) {\n\t\t\tlogger = _config.logger;\n\t\t\tcache = _config.cache;\n\t\t}\n\t}\n\n\tconst dialect = new SQLiteDialect({\n\t\tuseJitMappers: jitCompatCheck(_config.jit),\n\t});\n\n\tconst relations = _config.relations ?? {} as TRelations;\n\tconst session = new SQLiteRemoteSession(callback, dialect, relations, _batchCallback, {\n\t\tlogger,\n\t\tcache,\n\t});\n\tconst db = new SqliteRemoteDatabase(\n\t\t'async',\n\t\tdialect,\n\t\tsession,\n\t\trelations,\n\t);\n\t(<any> db).$cache = cache;\n\tif ((<any> db).$cache) {\n\t\t(<any> db).$cache['invalidate'] = cache?.onMutate;\n\t}\n\treturn db;\n}\n"],"mappings":";;;;;;;;;;AAeA,IAAa,uBAAb,cACSA,8CACT;CACC,QAA0BC,0BAAsB;CAKhD,MAAM,MACL,OAC4B;AAC5B,SAAO,KAAK,QAAQ,MAAM,MAAM;;;AA2BlC,SAAgB,QACf,UACA,eACA,QACmC;CACnC,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI,UAA2C,EAAE;AAEjD,KAAI,eAAe;AAClB,MAAI,OAAO,kBAAkB,YAAY;AACxC,oBAAiB;AACjB,aAAU,UAAU,EAAE;SAChB;AACN,oBAAiB;AACjB,aAAU;;AAGX,MAAI,QAAQ,WAAW,KACtB,UAAS,IAAIC,2BAAe;WAClB,QAAQ,WAAW,OAAO;AACpC,YAAS,QAAQ;AACjB,WAAQ,QAAQ;;;CAIlB,MAAM,UAAU,IAAIC,uCAAc,EACjC,8CAA8B,QAAQ,IAAI,EAC1C,CAAC;CAEF,MAAM,YAAY,QAAQ,aAAa,EAAE;CAKzC,MAAM,KAAK,IAAI,qBACd,SACA,SANe,IAAIC,iDAAoB,UAAU,SAAS,WAAW,gBAAgB;EACrF;EACA;EACA,CAAC,EAKD,UACA;AACD,CAAO,GAAI,SAAS;AACpB,KAAW,GAAI,OACd,CAAO,GAAI,OAAO,gBAAgB,OAAO;AAE1C,QAAO"}