drizzle-orm 1.0.0-beta.1-fd8bfcc → 1.0.0-beta.1-17c242e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/bun-sql/driver.cjs +35 -75
  2. package/bun-sql/driver.cjs.map +1 -1
  3. package/bun-sql/driver.d.cts +69 -10
  4. package/bun-sql/driver.d.ts +69 -10
  5. package/bun-sql/driver.js +35 -64
  6. package/bun-sql/driver.js.map +1 -1
  7. package/bun-sql/migrator.cjs +18 -3
  8. package/bun-sql/migrator.cjs.map +1 -1
  9. package/bun-sql/migrator.d.cts +8 -1
  10. package/bun-sql/migrator.d.ts +8 -1
  11. package/bun-sql/migrator.js +18 -3
  12. package/bun-sql/migrator.js.map +1 -1
  13. package/bun-sql/mysql/driver.cjs +117 -0
  14. package/bun-sql/mysql/driver.cjs.map +1 -0
  15. package/bun-sql/mysql/driver.d.cts +38 -0
  16. package/bun-sql/mysql/driver.d.ts +38 -0
  17. package/bun-sql/mysql/driver.js +82 -0
  18. package/bun-sql/mysql/driver.js.map +1 -0
  19. package/bun-sql/mysql/index.cjs +25 -0
  20. package/bun-sql/mysql/index.cjs.map +1 -0
  21. package/bun-sql/mysql/index.d.cts +2 -0
  22. package/bun-sql/mysql/index.d.ts +2 -0
  23. package/bun-sql/mysql/index.js +3 -0
  24. package/bun-sql/mysql/index.js.map +1 -0
  25. package/bun-sql/mysql/migrator.cjs +33 -0
  26. package/bun-sql/mysql/migrator.cjs.map +1 -0
  27. package/bun-sql/mysql/migrator.d.cts +4 -0
  28. package/bun-sql/mysql/migrator.d.ts +4 -0
  29. package/bun-sql/mysql/migrator.js +9 -0
  30. package/bun-sql/mysql/migrator.js.map +1 -0
  31. package/bun-sql/mysql/session.cjs +244 -0
  32. package/bun-sql/mysql/session.cjs.map +1 -0
  33. package/bun-sql/mysql/session.d.cts +65 -0
  34. package/bun-sql/mysql/session.d.ts +65 -0
  35. package/bun-sql/mysql/session.js +222 -0
  36. package/bun-sql/mysql/session.js.map +1 -0
  37. package/bun-sql/postgres/driver.cjs +110 -0
  38. package/bun-sql/postgres/driver.cjs.map +1 -0
  39. package/bun-sql/postgres/driver.d.cts +30 -0
  40. package/bun-sql/postgres/driver.d.ts +30 -0
  41. package/bun-sql/postgres/driver.js +75 -0
  42. package/bun-sql/postgres/driver.js.map +1 -0
  43. package/bun-sql/postgres/index.cjs +25 -0
  44. package/bun-sql/postgres/index.cjs.map +1 -0
  45. package/bun-sql/postgres/index.d.cts +2 -0
  46. package/bun-sql/postgres/index.d.ts +2 -0
  47. package/bun-sql/postgres/index.js +3 -0
  48. package/bun-sql/postgres/index.js.map +1 -0
  49. package/bun-sql/postgres/migrator.cjs +33 -0
  50. package/bun-sql/postgres/migrator.cjs.map +1 -0
  51. package/bun-sql/postgres/migrator.d.cts +4 -0
  52. package/bun-sql/postgres/migrator.d.ts +4 -0
  53. package/bun-sql/postgres/migrator.js +9 -0
  54. package/bun-sql/postgres/migrator.js.map +1 -0
  55. package/bun-sql/postgres/session.cjs +220 -0
  56. package/bun-sql/postgres/session.cjs.map +1 -0
  57. package/bun-sql/postgres/session.d.cts +65 -0
  58. package/bun-sql/postgres/session.d.ts +65 -0
  59. package/bun-sql/postgres/session.js +194 -0
  60. package/bun-sql/postgres/session.js.map +1 -0
  61. package/bun-sql/session.cjs +3 -200
  62. package/bun-sql/session.cjs.map +1 -1
  63. package/bun-sql/session.d.cts +1 -65
  64. package/bun-sql/session.d.ts +1 -65
  65. package/bun-sql/session.js +1 -193
  66. package/bun-sql/session.js.map +1 -1
  67. package/bun-sql/sqlite/driver.cjs +110 -0
  68. package/bun-sql/sqlite/driver.cjs.map +1 -0
  69. package/bun-sql/sqlite/driver.d.cts +30 -0
  70. package/bun-sql/sqlite/driver.d.ts +30 -0
  71. package/bun-sql/sqlite/driver.js +75 -0
  72. package/bun-sql/sqlite/driver.js.map +1 -0
  73. package/bun-sql/sqlite/index.cjs +25 -0
  74. package/bun-sql/sqlite/index.cjs.map +1 -0
  75. package/bun-sql/sqlite/index.d.cts +2 -0
  76. package/bun-sql/sqlite/index.d.ts +2 -0
  77. package/bun-sql/sqlite/index.js +3 -0
  78. package/bun-sql/sqlite/index.js.map +1 -0
  79. package/bun-sql/sqlite/migrator.cjs +33 -0
  80. package/bun-sql/sqlite/migrator.cjs.map +1 -0
  81. package/bun-sql/sqlite/migrator.d.cts +4 -0
  82. package/bun-sql/sqlite/migrator.d.ts +4 -0
  83. package/bun-sql/sqlite/migrator.js +9 -0
  84. package/bun-sql/sqlite/migrator.js.map +1 -0
  85. package/bun-sql/sqlite/session.cjs +225 -0
  86. package/bun-sql/sqlite/session.cjs.map +1 -0
  87. package/bun-sql/sqlite/session.d.cts +67 -0
  88. package/bun-sql/sqlite/session.d.ts +67 -0
  89. package/bun-sql/sqlite/session.js +199 -0
  90. package/bun-sql/sqlite/session.js.map +1 -0
  91. package/bun-sqlite/driver.cjs +5 -5
  92. package/bun-sqlite/driver.cjs.map +1 -1
  93. package/bun-sqlite/driver.d.cts +5 -5
  94. package/bun-sqlite/driver.d.ts +5 -5
  95. package/bun-sqlite/driver.js +4 -4
  96. package/bun-sqlite/driver.js.map +1 -1
  97. package/bun-sqlite/migrator.cjs.map +1 -1
  98. package/bun-sqlite/migrator.d.cts +2 -2
  99. package/bun-sqlite/migrator.d.ts +2 -2
  100. package/bun-sqlite/migrator.js.map +1 -1
  101. package/cache/core/cache.cjs.map +1 -1
  102. package/cache/core/cache.d.cts +1 -1
  103. package/cache/core/cache.d.ts +1 -1
  104. package/cache/core/cache.js.map +1 -1
  105. package/cache/upstash/cache.cjs +2 -2
  106. package/cache/upstash/cache.cjs.map +1 -1
  107. package/cache/upstash/cache.js +1 -1
  108. package/cache/upstash/cache.js.map +1 -1
  109. package/mysql-core/columns/bigint.cjs +4 -0
  110. package/mysql-core/columns/bigint.cjs.map +1 -1
  111. package/mysql-core/columns/bigint.d.cts +2 -1
  112. package/mysql-core/columns/bigint.d.ts +2 -1
  113. package/mysql-core/columns/bigint.js +4 -0
  114. package/mysql-core/columns/bigint.js.map +1 -1
  115. package/mysql-core/columns/custom.cjs +1 -3
  116. package/mysql-core/columns/custom.cjs.map +1 -1
  117. package/mysql-core/columns/custom.js +1 -3
  118. package/mysql-core/columns/custom.js.map +1 -1
  119. package/mysql-core/columns/date.cjs +4 -0
  120. package/mysql-core/columns/date.cjs.map +1 -1
  121. package/mysql-core/columns/date.d.cts +1 -0
  122. package/mysql-core/columns/date.d.ts +1 -0
  123. package/mysql-core/columns/date.js +4 -0
  124. package/mysql-core/columns/date.js.map +1 -1
  125. package/mysql-core/columns/datetime.cjs +6 -1
  126. package/mysql-core/columns/datetime.cjs.map +1 -1
  127. package/mysql-core/columns/datetime.d.cts +2 -1
  128. package/mysql-core/columns/datetime.d.ts +2 -1
  129. package/mysql-core/columns/datetime.js +6 -1
  130. package/mysql-core/columns/datetime.js.map +1 -1
  131. package/mysql-core/columns/time.cjs +4 -0
  132. package/mysql-core/columns/time.cjs.map +1 -1
  133. package/mysql-core/columns/time.d.cts +1 -0
  134. package/mysql-core/columns/time.d.ts +1 -0
  135. package/mysql-core/columns/time.js +4 -0
  136. package/mysql-core/columns/time.js.map +1 -1
  137. package/mysql-core/columns/timestamp.cjs +8 -1
  138. package/mysql-core/columns/timestamp.cjs.map +1 -1
  139. package/mysql-core/columns/timestamp.d.cts +2 -1
  140. package/mysql-core/columns/timestamp.d.ts +2 -1
  141. package/mysql-core/columns/timestamp.js +8 -1
  142. package/mysql-core/columns/timestamp.js.map +1 -1
  143. package/mysql-core/columns/varchar.cjs.map +1 -1
  144. package/mysql-core/columns/varchar.js.map +1 -1
  145. package/mysql-core/columns/year.cjs +4 -0
  146. package/mysql-core/columns/year.cjs.map +1 -1
  147. package/mysql-core/columns/year.d.cts +1 -0
  148. package/mysql-core/columns/year.d.ts +1 -0
  149. package/mysql-core/columns/year.js +4 -0
  150. package/mysql-core/columns/year.js.map +1 -1
  151. package/mysql-core/utils.cjs +2 -2
  152. package/mysql-core/utils.cjs.map +1 -1
  153. package/mysql-core/utils.d.cts +2 -2
  154. package/mysql-core/utils.d.ts +2 -2
  155. package/mysql-core/utils.js +1 -1
  156. package/mysql-core/utils.js.map +1 -1
  157. package/package.json +149 -5
  158. package/relations.cjs +4 -1
  159. package/relations.cjs.map +1 -1
  160. package/relations.js +4 -1
  161. package/relations.js.map +1 -1
  162. package/session.cjs.map +1 -1
  163. package/session.d.cts +1 -1
  164. package/session.d.ts +1 -1
  165. package/sqlite-core/columns/blob.cjs.map +1 -1
  166. package/sqlite-core/columns/blob.js.map +1 -1
  167. package/version.cjs +1 -1
  168. package/version.d.cts +1 -1
  169. package/version.d.ts +1 -1
  170. package/version.js +1 -1
@@ -0,0 +1,199 @@
1
+ import { NoopCache } from "../../cache/core/index.js";
2
+ import { entityKind } from "../../entity.js";
3
+ import { DrizzleError } from "../../errors.js";
4
+ import { NoopLogger } from "../../logger.js";
5
+ import { fillPlaceholders } from "../../sql/sql.js";
6
+ import { SQLiteTransaction } from "../../sqlite-core/index.js";
7
+ import { SQLitePreparedQuery, SQLiteSession } from "../../sqlite-core/session.js";
8
+ import { mapResultRow } from "../../utils.js";
9
+ class BunSQLiteSession extends SQLiteSession {
10
+ constructor(client, dialect, relations, schema, options) {
11
+ super(dialect);
12
+ this.client = client;
13
+ this.relations = relations;
14
+ this.schema = schema;
15
+ this.options = options;
16
+ this.logger = options.logger ?? new NoopLogger();
17
+ this.cache = options.cache ?? new NoopCache();
18
+ }
19
+ static [entityKind] = "BunSQLiteSession";
20
+ logger;
21
+ cache;
22
+ prepareQuery(query, fields, executeMethod, isResponseInArrayMode, customResultMapper, queryMetadata, cacheConfig) {
23
+ return new BunSQLitePreparedQuery(
24
+ this.client,
25
+ query,
26
+ this.logger,
27
+ this.cache,
28
+ queryMetadata,
29
+ cacheConfig,
30
+ fields,
31
+ executeMethod,
32
+ isResponseInArrayMode,
33
+ customResultMapper
34
+ );
35
+ }
36
+ prepareRelationalQuery(query, fields, executeMethod, customResultMapper) {
37
+ return new BunSQLitePreparedQuery(
38
+ this.client,
39
+ query,
40
+ this.logger,
41
+ this.cache,
42
+ void 0,
43
+ void 0,
44
+ fields,
45
+ executeMethod,
46
+ false,
47
+ customResultMapper,
48
+ true
49
+ );
50
+ }
51
+ async run(query) {
52
+ const staticQuery = this.dialect.sqlToQuery(query);
53
+ try {
54
+ return await this.prepareOneTimeQuery(staticQuery, void 0, "run", false).run();
55
+ } catch (err) {
56
+ throw new DrizzleError({ cause: err, message: `Failed to run the query '${staticQuery.sql}'` });
57
+ }
58
+ }
59
+ async transaction(transaction, config) {
60
+ return this.client.begin(config?.behavior ?? "", async (client) => {
61
+ const session = new BunSQLiteSession(
62
+ client,
63
+ this.dialect,
64
+ this.relations,
65
+ this.schema,
66
+ this.options
67
+ );
68
+ const tx = new BunSQLiteTransaction(
69
+ "async",
70
+ this.dialect,
71
+ session,
72
+ this.relations,
73
+ this.schema
74
+ );
75
+ return await transaction(tx);
76
+ });
77
+ }
78
+ }
79
+ class BunSQLiteTransaction extends SQLiteTransaction {
80
+ static [entityKind] = "BunSQLiteTransaction";
81
+ async transaction(transaction) {
82
+ return this.session.client.savepoint(
83
+ async (client) => {
84
+ const session = new BunSQLiteSession(
85
+ client,
86
+ this.session.dialect,
87
+ this.relations,
88
+ this.schema,
89
+ this.session.options
90
+ );
91
+ const tx = new BunSQLiteTransaction(
92
+ "async",
93
+ this.dialect,
94
+ session,
95
+ this.relations,
96
+ this.schema,
97
+ this.nestedIndex + 1
98
+ );
99
+ return await transaction(tx);
100
+ }
101
+ );
102
+ }
103
+ }
104
+ class BunSQLitePreparedQuery extends SQLitePreparedQuery {
105
+ constructor(client, query, logger, cache, queryMetadata, cacheConfig, fields, executeMethod, _isResponseInArrayMode, customResultMapper, isRqbV2Query) {
106
+ super("async", executeMethod, query, cache, queryMetadata, cacheConfig);
107
+ this.client = client;
108
+ this.logger = logger;
109
+ this.fields = fields;
110
+ this._isResponseInArrayMode = _isResponseInArrayMode;
111
+ this.customResultMapper = customResultMapper;
112
+ this.isRqbV2Query = isRqbV2Query;
113
+ this.customResultMapper = customResultMapper;
114
+ this.fields = fields;
115
+ }
116
+ static [entityKind] = "BunSQLitePreparedQuery";
117
+ async run(placeholderValues = {}) {
118
+ const { logger, query, client } = this;
119
+ const params = fillPlaceholders(query.params, placeholderValues);
120
+ logger.logQuery(query.sql, params);
121
+ return await this.queryWithCache(query.sql, params, async () => {
122
+ return await client.unsafe(query.sql, params);
123
+ });
124
+ }
125
+ async all(placeholderValues = {}) {
126
+ if (this.isRqbV2Query) return this.allRqbV2(placeholderValues);
127
+ const { logger, query, fields, joinsNotNullableMap, customResultMapper, client } = this;
128
+ if (!fields && !customResultMapper) {
129
+ const params = fillPlaceholders(query.params, placeholderValues);
130
+ logger.logQuery(query.sql, params);
131
+ return await this.queryWithCache(query.sql, params, async () => {
132
+ const res = await client.unsafe(query.sql, params);
133
+ return res;
134
+ });
135
+ }
136
+ const rows = await this.values(placeholderValues);
137
+ if (customResultMapper) {
138
+ return customResultMapper(rows);
139
+ }
140
+ return rows.map((row) => mapResultRow(fields, row, joinsNotNullableMap));
141
+ }
142
+ async allRqbV2(placeholderValues = {}) {
143
+ const { logger, query, customResultMapper, client } = this;
144
+ const params = fillPlaceholders(query.params, placeholderValues);
145
+ logger.logQuery(query.sql, params);
146
+ const rows = await client.unsafe(query.sql, params);
147
+ return customResultMapper(rows);
148
+ }
149
+ async get(placeholderValues = {}) {
150
+ if (this.isRqbV2Query) return this.getRqbV2(placeholderValues);
151
+ const { logger, query, fields, joinsNotNullableMap, customResultMapper, client } = this;
152
+ if (!fields && !customResultMapper) {
153
+ const params = fillPlaceholders(query.params, placeholderValues);
154
+ logger.logQuery(query.sql, params);
155
+ return await this.queryWithCache(query.sql, params, async () => {
156
+ const rows2 = await client.unsafe(query.sql, params);
157
+ return rows2[0];
158
+ });
159
+ }
160
+ const rows = await this.values(placeholderValues);
161
+ const row = rows[0];
162
+ if (customResultMapper) {
163
+ return customResultMapper(rows);
164
+ }
165
+ if (row === void 0) return row;
166
+ return mapResultRow(fields, row, joinsNotNullableMap);
167
+ }
168
+ async getRqbV2(placeholderValues = {}) {
169
+ const { logger, query, customResultMapper, client } = this;
170
+ const params = fillPlaceholders(query.params, placeholderValues);
171
+ logger.logQuery(query.sql, params);
172
+ const rows = await client.unsafe(query.sql, params);
173
+ const row = rows[0];
174
+ if (row === void 0) return row;
175
+ return customResultMapper([row]);
176
+ }
177
+ async values(placeholderValues = {}) {
178
+ const {
179
+ client,
180
+ logger,
181
+ query
182
+ } = this;
183
+ const params = fillPlaceholders(query.params, placeholderValues);
184
+ logger.logQuery(query.sql, params);
185
+ return await this.queryWithCache(query.sql, params, async () => {
186
+ return await client.unsafe(query.sql, params).values();
187
+ });
188
+ }
189
+ /** @internal */
190
+ isResponseInArrayMode() {
191
+ return this._isResponseInArrayMode;
192
+ }
193
+ }
194
+ export {
195
+ BunSQLitePreparedQuery,
196
+ BunSQLiteSession,
197
+ BunSQLiteTransaction
198
+ };
199
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/bun-sql/sqlite/session.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { SavepointSQL, SQL as BunSQL, TransactionSQL } from 'bun';\nimport type * as V1 from '~/_relations.ts';\nimport { type Cache, NoopCache } from '~/cache/core/index.ts';\nimport type { WithCacheConfig } from '~/cache/core/types.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DrizzleError } from '~/errors.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { AnyRelations } from '~/relations.ts';\nimport { fillPlaceholders, type Query, type SQL } from '~/sql/sql.ts';\nimport type { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport { SQLiteTransaction } from '~/sqlite-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/sqlite-core/query-builders/select.types.ts';\nimport type {\n\tPreparedQueryConfig as PreparedQueryConfigBase,\n\tResult,\n\tSQLiteExecuteMethod,\n\tSQLiteTransactionConfig,\n} from '~/sqlite-core/session.ts';\nimport { SQLitePreparedQuery, SQLiteSession } from '~/sqlite-core/session.ts';\nimport { mapResultRow } from '~/utils.ts';\n\nexport interface BunSQLiteSessionOptions {\n\tlogger?: Logger;\n\tcache?: Cache;\n}\n\nexport type BunSQLiteRunResult = Record<string, unknown>[] & Record<string, unknown>;\n\ntype PreparedQueryConfig = Omit<PreparedQueryConfigBase, 'statement' | 'run'>;\n\nexport class BunSQLiteSession<\n\tTSQL extends BunSQL,\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteSession<'async', BunSQLiteRunResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLiteSession';\n\n\tprivate logger: Logger;\n\tprivate cache: Cache;\n\n\tconstructor(\n\t\treadonly client: TSQL,\n\t\tdialect: SQLiteAsyncDialect,\n\t\tprivate relations: TRelations,\n\t\tprivate schema: V1.RelationalSchemaConfig<TSchema> | undefined,\n\t\treadonly options: BunSQLiteSessionOptions,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t\tthis.cache = options.cache ?? new NoopCache();\n\t}\n\n\tprepareQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => unknown,\n\t\tqueryMetadata?: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t},\n\t\tcacheConfig?: WithCacheConfig,\n\t): BunSQLitePreparedQuery<T> {\n\t\treturn new BunSQLitePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tqueryMetadata,\n\t\t\tcacheConfig,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tprepareRelationalQuery<T extends Omit<PreparedQueryConfig, 'run'>>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tcustomResultMapper: (rows: Record<string, unknown>[]) => unknown,\n\t): BunSQLitePreparedQuery<T, true> {\n\t\treturn new BunSQLitePreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery,\n\t\t\tthis.logger,\n\t\t\tthis.cache,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfields,\n\t\t\texecuteMethod,\n\t\t\tfalse,\n\t\t\tcustomResultMapper,\n\t\t\ttrue,\n\t\t);\n\t}\n\n\toverride async run(query: SQL): Result<'async', BunSQLiteRunResult> {\n\t\tconst staticQuery = this.dialect.sqlToQuery(query);\n\t\ttry {\n\t\t\treturn await this.prepareOneTimeQuery(staticQuery, undefined, 'run', false).run() as Result<\n\t\t\t\t'async',\n\t\t\t\tBunSQLiteRunResult\n\t\t\t>;\n\t\t} catch (err) {\n\t\t\tthrow new DrizzleError({ cause: err, message: `Failed to run the query '${staticQuery.sql}'` });\n\t\t}\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (db: BunSQLiteTransaction<TFullSchema, TRelations, TSchema>) => T | Promise<T>,\n\t\tconfig?: SQLiteTransactionConfig,\n\t): Promise<T> {\n\t\treturn this.client.begin(config?.behavior ?? '', async (client) => {\n\t\t\tconst session = new BunSQLiteSession<SavepointSQL, TFullSchema, TRelations, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLiteTransaction<TFullSchema, TRelations, TSchema>(\n\t\t\t\t'async',\n\t\t\t\tthis.dialect,\n\t\t\t\tsession,\n\t\t\t\tthis.relations,\n\t\t\t\tthis.schema,\n\t\t\t);\n\n\t\t\treturn await transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport class BunSQLiteTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTRelations extends AnyRelations,\n\tTSchema extends V1.TablesRelationalConfig,\n> extends SQLiteTransaction<'async', BunSQLiteRunResult, TFullSchema, TRelations, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLiteTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: BunSQLiteTransaction<TFullSchema, TRelations, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\treturn (<BunSQLiteSession<TransactionSQL, any, any, any>> <unknown> this.session).client.savepoint(\n\t\t\tasync (client) => {\n\t\t\t\tconst session = new BunSQLiteSession<SavepointSQL, TFullSchema, TRelations, TSchema>(\n\t\t\t\t\tclient,\n\t\t\t\t\tthis.session.dialect,\n\t\t\t\t\tthis.relations,\n\t\t\t\t\tthis.schema,\n\t\t\t\t\t(<BunSQLiteSession<TransactionSQL, any, any, any>> <unknown> this.session).options,\n\t\t\t\t);\n\t\t\t\tconst tx = new BunSQLiteTransaction(\n\t\t\t\t\t'async',\n\t\t\t\t\tthis.dialect,\n\t\t\t\t\tsession,\n\t\t\t\t\tthis.relations,\n\t\t\t\t\tthis.schema,\n\t\t\t\t\tthis.nestedIndex + 1,\n\t\t\t\t);\n\t\t\t\treturn await transaction(tx);\n\t\t\t},\n\t\t);\n\t}\n}\n\nexport class BunSQLitePreparedQuery<\n\tT extends PreparedQueryConfig = PreparedQueryConfig,\n\tTIsRqbV2 extends boolean = false,\n> extends SQLitePreparedQuery<\n\t{\n\t\ttype: 'async';\n\t\trun: BunSQLiteRunResult;\n\t\tall: T['all'];\n\t\tget: T['get'];\n\t\tvalues: T['values'];\n\t\texecute: T['execute'];\n\t}\n> {\n\tstatic override readonly [entityKind]: string = 'BunSQLitePreparedQuery';\n\n\tconstructor(\n\t\tprivate client: BunSQL,\n\t\tquery: Query,\n\t\tprivate logger: Logger,\n\t\tcache: Cache,\n\t\tqueryMetadata: {\n\t\t\ttype: 'select' | 'update' | 'delete' | 'insert';\n\t\t\ttables: string[];\n\t\t} | undefined,\n\t\tcacheConfig: WithCacheConfig | undefined,\n\t\t/** @internal */ public fields: SelectedFieldsOrdered | undefined,\n\t\texecuteMethod: SQLiteExecuteMethod,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (\n\t\t\trows: TIsRqbV2 extends true ? Record<string, unknown>[] : unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown,\n\t\tprivate isRqbV2Query?: TIsRqbV2,\n\t) {\n\t\tsuper('async', executeMethod, query, cache, queryMetadata, cacheConfig);\n\t\tthis.customResultMapper = customResultMapper;\n\t\tthis.fields = fields;\n\t}\n\n\tasync run(placeholderValues: Record<string, unknown> = {}): Promise<BunSQLiteRunResult> {\n\t\tconst { logger, query, client } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues);\n\t\tlogger.logQuery(query.sql, params);\n\n\t\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\treturn await client.unsafe(query.sql, params);\n\t\t});\n\t}\n\n\tasync all(placeholderValues: Record<string, unknown> = {}): Promise<T['all']> {\n\t\tif (this.isRqbV2Query) return this.allRqbV2(placeholderValues);\n\t\tconst { logger, query, fields, joinsNotNullableMap, customResultMapper, client } = this;\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues);\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\tconst res = await client.unsafe(query.sql, params);\n\t\t\t\treturn res;\n\t\t\t});\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(rows);\n\t\t}\n\n\t\treturn rows.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tprivate async allRqbV2(placeholderValues: Record<string, unknown> = {}): Promise<T['all']> {\n\t\tconst { logger, query, customResultMapper, client } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues);\n\t\tlogger.logQuery(query.sql, params);\n\n\t\tconst rows = await client.unsafe(query.sql, params);\n\n\t\treturn (customResultMapper as (\n\t\t\trows: unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)(rows);\n\t}\n\n\tasync get(placeholderValues: Record<string, unknown> = {}): Promise<T['get']> {\n\t\tif (this.isRqbV2Query) return this.getRqbV2(placeholderValues);\n\n\t\tconst { logger, query, fields, joinsNotNullableMap, customResultMapper, client } = this;\n\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst params = fillPlaceholders(query.params, placeholderValues);\n\t\t\tlogger.logQuery(query.sql, params);\n\t\t\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\t\tconst rows = await client.unsafe(query.sql, params);\n\t\t\t\treturn rows[0];\n\t\t\t});\n\t\t}\n\n\t\tconst rows = await this.values(placeholderValues) as unknown[][];\n\t\tconst row = rows[0];\n\n\t\tif (customResultMapper) {\n\t\t\treturn (customResultMapper as (\n\t\t\t\trows: unknown[][],\n\t\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t\t) => unknown)(rows);\n\t\t}\n\n\t\tif (row === undefined) return row;\n\t\treturn mapResultRow(fields!, row, joinsNotNullableMap);\n\t}\n\n\tprivate async getRqbV2(placeholderValues: Record<string, unknown> = {}) {\n\t\tconst { logger, query, customResultMapper, client } = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues);\n\n\t\tlogger.logQuery(query.sql, params);\n\t\tconst rows = await client.unsafe(query.sql, params);\n\t\tconst row = rows[0];\n\n\t\tif (row === undefined) return row;\n\n\t\treturn (customResultMapper as (\n\t\t\trows: unknown[][],\n\t\t\tmapColumnValue?: (value: unknown) => unknown,\n\t\t) => unknown)([row]);\n\t}\n\n\tasync values(placeholderValues: Record<string, unknown> = {}): Promise<T['values']> {\n\t\tconst {\n\t\t\tclient,\n\t\t\tlogger,\n\t\t\tquery,\n\t\t} = this;\n\t\tconst params = fillPlaceholders(query.params, placeholderValues);\n\n\t\tlogger.logQuery(query.sql, params);\n\t\treturn await this.queryWithCache(query.sql, params, async () => {\n\t\t\treturn await client.unsafe(query.sql, params).values();\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n"],"mappings":"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","names":["rows"]}
@@ -28,7 +28,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var driver_exports = {};
30
30
  __export(driver_exports, {
31
- BunSQLiteDatabase: () => BunSQLiteDatabase,
31
+ SQLiteBunDatabase: () => SQLiteBunDatabase,
32
32
  drizzle: () => drizzle
33
33
  });
34
34
  module.exports = __toCommonJS(driver_exports);
@@ -40,8 +40,8 @@ var import_db = require("../sqlite-core/db.cjs");
40
40
  var import_dialect = require("../sqlite-core/dialect.cjs");
41
41
  var import_utils = require("../utils.cjs");
42
42
  var import_session = require("./session.cjs");
43
- class BunSQLiteDatabase extends import_db.BaseSQLiteDatabase {
44
- static [import_entity.entityKind] = "BunSQLiteDatabase";
43
+ class SQLiteBunDatabase extends import_db.BaseSQLiteDatabase {
44
+ static [import_entity.entityKind] = "SQLiteBunDatabase";
45
45
  }
46
46
  function construct(client, config = {}) {
47
47
  const dialect = new import_dialect.SQLiteSyncDialect({ casing: config.casing });
@@ -65,7 +65,7 @@ function construct(client, config = {}) {
65
65
  }
66
66
  const relations = config.relations ?? {};
67
67
  const session = new import_session.SQLiteBunSession(client, dialect, relations, schema, { logger });
68
- const db = new BunSQLiteDatabase(
68
+ const db = new SQLiteBunDatabase(
69
69
  "sync",
70
70
  dialect,
71
71
  session,
@@ -102,7 +102,7 @@ function drizzle(...params) {
102
102
  })(drizzle || (drizzle = {}));
103
103
  // Annotate the CommonJS export names for ESM import in node:
104
104
  0 && (module.exports = {
105
- BunSQLiteDatabase,
105
+ SQLiteBunDatabase,
106
106
  drizzle
107
107
  });
108
108
  //# sourceMappingURL=driver.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bun-sqlite/driver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport { Database } from 'bun:sqlite';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport { SQLiteBunSession } from './session.ts';\n\nexport class BunSQLiteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends BaseSQLiteDatabase<'sync', void, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BunSQLiteDatabase';\n}\n\ntype DrizzleBunSqliteDatabaseOptions = {\n\t/**\n\t * Open the database as read-only (no write operations, no create).\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_READONLY}\n\t */\n\treadonly?: boolean;\n\t/**\n\t * Allow creating a new database\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_CREATE}\n\t */\n\tcreate?: boolean;\n\t/**\n\t * Open the database as read-write\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_READWRITE}\n\t */\n\treadwrite?: boolean;\n};\n\nexport type DrizzleBunSqliteDatabaseConfig =\n\t| ({\n\t\tsource?: string;\n\t} & DrizzleBunSqliteDatabaseOptions)\n\t| string\n\t| undefined;\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: Database,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): BunSQLiteDatabase<TSchema, TRelations> & {\n\t$client: Database;\n} {\n\tconst dialect = new SQLiteSyncDialect({ casing: config.casing });\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\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new SQLiteBunSession<\n\t\tTSchema,\n\t\tTRelations,\n\t\tV1.ExtractTablesWithRelations<TSchema>\n\t>(client, dialect, relations, schema as V1.RelationalSchemaConfig<any>, { logger });\n\tconst db = new BunSQLiteDatabase(\n\t\t'sync',\n\t\tdialect,\n\t\tsession,\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t) as BunSQLiteDatabase<\n\t\tTSchema,\n\t\tTRelations\n\t>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends Database = Database,\n>(\n\t...params:\n\t\t| []\n\t\t| [\n\t\t\tTClient | string,\n\t\t]\n\t\t| [\n\t\t\tTClient | string,\n\t\t\tDrizzleConfig<TSchema, TRelations>,\n\t\t]\n\t\t| [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t\t& ({\n\t\t\t\t\tconnection?: DrizzleBunSqliteDatabaseConfig;\n\t\t\t\t} | {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t})\n\t\t\t),\n\t\t]\n): BunSQLiteDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif (params[0] === undefined || typeof params[0] === 'string') {\n\t\tconst instance = params[0] === undefined ? new Database() : new Database(params[0]);\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& ({\n\t\t\t\tconnection?: DrizzleBunSqliteDatabaseConfig | string;\n\t\t\t\tclient?: TClient;\n\t\t\t})\n\t\t\t& DrizzleConfig<TSchema, TRelations>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tif (typeof connection === 'object') {\n\t\t\tconst { source, ...opts } = connection;\n\n\t\t\tconst options = Object.values(opts).filter((v) => v !== undefined).length ? opts : undefined;\n\n\t\t\tconst instance = new Database(source, options);\n\n\t\t\treturn construct(instance, drizzleConfig) as any;\n\t\t}\n\n\t\tconst instance = new Database(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as Database, params[1] as DrizzleConfig<TSchema, TRelations> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzleConfig<TSchema, TRelations>,\n\t): BunSQLiteDatabase<TSchema, 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,wBAAyB;AACzB,SAAoB;AACpB,oBAA2B;AAC3B,oBAA8B;AAE9B,gBAAmC;AACnC,qBAAkC;AAClC,mBAA6C;AAC7C,qBAAiC;AAE1B,MAAM,0BAGH,6BAAsD;AAAA,EAC/D,QAA0B,wBAAU,IAAY;AACjD;AA8BA,SAAS,UAIR,QACA,SAA6C,CAAC,GAG7C;AACD,QAAM,UAAU,IAAI,iCAAkB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC/D,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe,GAAG;AAAA,MACvB,OAAO;AAAA,MACP,GAAG;AAAA,IACJ;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,YAAY,OAAO,aAAa,CAAC;AACvC,QAAM,UAAU,IAAI,gCAIlB,QAAQ,SAAS,WAAW,QAA0C,EAAE,OAAO,CAAC;AAClF,QAAM,KAAK,IAAI;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAIA,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAKZ,QAqBF;AACD,MAAI,OAAO,CAAC,MAAM,UAAa,OAAO,OAAO,CAAC,MAAM,UAAU;AAC7D,UAAM,WAAW,OAAO,CAAC,MAAM,SAAY,IAAI,2BAAS,IAAI,IAAI,2BAAS,OAAO,CAAC,CAAC;AAElF,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,UAAI,uBAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAOzD,QAAI,OAAQ,QAAO,UAAU,QAAQ,aAAa;AAElD,QAAI,OAAO,eAAe,UAAU;AACnC,YAAM,EAAE,QAAQ,GAAG,KAAK,IAAI;AAE5B,YAAM,UAAU,OAAO,OAAO,IAAI,EAAE,OAAO,CAAC,MAAM,MAAM,MAAS,EAAE,SAAS,OAAO;AAEnF,YAAMA,YAAW,IAAI,2BAAS,QAAQ,OAAO;AAE7C,aAAO,UAAUA,WAAU,aAAa;AAAA,IACzC;AAEA,UAAM,WAAW,IAAI,2BAAS,UAAU;AAExC,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAe,OAAO,CAAC,CAAmD;AACpG;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KAIf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AATO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}
1
+ {"version":3,"sources":["../../src/bun-sqlite/driver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport { Database } from 'bun:sqlite';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport { SQLiteBunSession } from './session.ts';\n\nexport class SQLiteBunDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends BaseSQLiteDatabase<'sync', void, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBunDatabase';\n}\n\ntype DrizzleSqliteBunDatabaseOptions = {\n\t/**\n\t * Open the database as read-only (no write operations, no create).\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_READONLY}\n\t */\n\treadonly?: boolean;\n\t/**\n\t * Allow creating a new database\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_CREATE}\n\t */\n\tcreate?: boolean;\n\t/**\n\t * Open the database as read-write\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_READWRITE}\n\t */\n\treadwrite?: boolean;\n};\n\nexport type DrizzleBunSqliteDatabaseConfig =\n\t| ({\n\t\tsource?: string;\n\t} & DrizzleSqliteBunDatabaseOptions)\n\t| string\n\t| undefined;\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: Database,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): SQLiteBunDatabase<TSchema, TRelations> & {\n\t$client: Database;\n} {\n\tconst dialect = new SQLiteSyncDialect({ casing: config.casing });\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\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new SQLiteBunSession<\n\t\tTSchema,\n\t\tTRelations,\n\t\tV1.ExtractTablesWithRelations<TSchema>\n\t>(client, dialect, relations, schema as V1.RelationalSchemaConfig<any>, { logger });\n\tconst db = new SQLiteBunDatabase(\n\t\t'sync',\n\t\tdialect,\n\t\tsession,\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t) as SQLiteBunDatabase<\n\t\tTSchema,\n\t\tTRelations\n\t>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends Database = Database,\n>(\n\t...params:\n\t\t| []\n\t\t| [\n\t\t\tTClient | string,\n\t\t]\n\t\t| [\n\t\t\tTClient | string,\n\t\t\tDrizzleConfig<TSchema, TRelations>,\n\t\t]\n\t\t| [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t\t& ({\n\t\t\t\t\tconnection?: DrizzleBunSqliteDatabaseConfig;\n\t\t\t\t} | {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t})\n\t\t\t),\n\t\t]\n): SQLiteBunDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif (params[0] === undefined || typeof params[0] === 'string') {\n\t\tconst instance = params[0] === undefined ? new Database() : new Database(params[0]);\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& ({\n\t\t\t\tconnection?: DrizzleBunSqliteDatabaseConfig | string;\n\t\t\t\tclient?: TClient;\n\t\t\t})\n\t\t\t& DrizzleConfig<TSchema, TRelations>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tif (typeof connection === 'object') {\n\t\t\tconst { source, ...opts } = connection;\n\n\t\t\tconst options = Object.values(opts).filter((v) => v !== undefined).length ? opts : undefined;\n\n\t\t\tconst instance = new Database(source, options);\n\n\t\t\treturn construct(instance, drizzleConfig) as any;\n\t\t}\n\n\t\tconst instance = new Database(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as Database, params[1] as DrizzleConfig<TSchema, TRelations> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzleConfig<TSchema, TRelations>,\n\t): SQLiteBunDatabase<TSchema, 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,wBAAyB;AACzB,SAAoB;AACpB,oBAA2B;AAC3B,oBAA8B;AAE9B,gBAAmC;AACnC,qBAAkC;AAClC,mBAA6C;AAC7C,qBAAiC;AAE1B,MAAM,0BAGH,6BAAsD;AAAA,EAC/D,QAA0B,wBAAU,IAAY;AACjD;AA8BA,SAAS,UAIR,QACA,SAA6C,CAAC,GAG7C;AACD,QAAM,UAAU,IAAI,iCAAkB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC/D,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe,GAAG;AAAA,MACvB,OAAO;AAAA,MACP,GAAG;AAAA,IACJ;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,YAAY,OAAO,aAAa,CAAC;AACvC,QAAM,UAAU,IAAI,gCAIlB,QAAQ,SAAS,WAAW,QAA0C,EAAE,OAAO,CAAC;AAClF,QAAM,KAAK,IAAI;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAIA,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAKZ,QAqBF;AACD,MAAI,OAAO,CAAC,MAAM,UAAa,OAAO,OAAO,CAAC,MAAM,UAAU;AAC7D,UAAM,WAAW,OAAO,CAAC,MAAM,SAAY,IAAI,2BAAS,IAAI,IAAI,2BAAS,OAAO,CAAC,CAAC;AAElF,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,UAAI,uBAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAOzD,QAAI,OAAQ,QAAO,UAAU,QAAQ,aAAa;AAElD,QAAI,OAAO,eAAe,UAAU;AACnC,YAAM,EAAE,QAAQ,GAAG,KAAK,IAAI;AAE5B,YAAM,UAAU,OAAO,OAAO,IAAI,EAAE,OAAO,CAAC,MAAM,MAAM,MAAS,EAAE,SAAS,OAAO;AAEnF,YAAMA,YAAW,IAAI,2BAAS,QAAQ,OAAO;AAE7C,aAAO,UAAUA,WAAU,aAAa;AAAA,IACzC;AAEA,UAAM,WAAW,IAAI,2BAAS,UAAU;AAExC,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAe,OAAO,CAAC,CAAmD;AACpG;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KAIf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AATO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}
@@ -3,10 +3,10 @@ import { entityKind } from "../entity.cjs";
3
3
  import type { AnyRelations, EmptyRelations } from "../relations.cjs";
4
4
  import { BaseSQLiteDatabase } from "../sqlite-core/db.cjs";
5
5
  import { type DrizzleConfig } from "../utils.cjs";
6
- export declare class BunSQLiteDatabase<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations> extends BaseSQLiteDatabase<'sync', void, TSchema, TRelations> {
6
+ export declare class SQLiteBunDatabase<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations> extends BaseSQLiteDatabase<'sync', void, TSchema, TRelations> {
7
7
  static readonly [entityKind]: string;
8
8
  }
9
- type DrizzleBunSqliteDatabaseOptions = {
9
+ type DrizzleSqliteBunDatabaseOptions = {
10
10
  /**
11
11
  * Open the database as read-only (no write operations, no create).
12
12
  *
@@ -28,7 +28,7 @@ type DrizzleBunSqliteDatabaseOptions = {
28
28
  };
29
29
  export type DrizzleBunSqliteDatabaseConfig = ({
30
30
  source?: string;
31
- } & DrizzleBunSqliteDatabaseOptions) | string | undefined;
31
+ } & DrizzleSqliteBunDatabaseOptions) | string | undefined;
32
32
  export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations, TClient extends Database = Database>(...params: [] | [
33
33
  TClient | string
34
34
  ] | [
@@ -40,11 +40,11 @@ export declare function drizzle<TSchema extends Record<string, unknown> = Record
40
40
  } | {
41
41
  client: TClient;
42
42
  }))
43
- ]): BunSQLiteDatabase<TSchema, TRelations> & {
43
+ ]): SQLiteBunDatabase<TSchema, TRelations> & {
44
44
  $client: TClient;
45
45
  };
46
46
  export declare namespace drizzle {
47
- function mock<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations>(config?: DrizzleConfig<TSchema, TRelations>): BunSQLiteDatabase<TSchema, TRelations> & {
47
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations>(config?: DrizzleConfig<TSchema, TRelations>): SQLiteBunDatabase<TSchema, TRelations> & {
48
48
  $client: '$client is not available on drizzle.mock()';
49
49
  };
50
50
  }
@@ -3,10 +3,10 @@ import { entityKind } from "../entity.js";
3
3
  import type { AnyRelations, EmptyRelations } from "../relations.js";
4
4
  import { BaseSQLiteDatabase } from "../sqlite-core/db.js";
5
5
  import { type DrizzleConfig } from "../utils.js";
6
- export declare class BunSQLiteDatabase<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations> extends BaseSQLiteDatabase<'sync', void, TSchema, TRelations> {
6
+ export declare class SQLiteBunDatabase<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations> extends BaseSQLiteDatabase<'sync', void, TSchema, TRelations> {
7
7
  static readonly [entityKind]: string;
8
8
  }
9
- type DrizzleBunSqliteDatabaseOptions = {
9
+ type DrizzleSqliteBunDatabaseOptions = {
10
10
  /**
11
11
  * Open the database as read-only (no write operations, no create).
12
12
  *
@@ -28,7 +28,7 @@ type DrizzleBunSqliteDatabaseOptions = {
28
28
  };
29
29
  export type DrizzleBunSqliteDatabaseConfig = ({
30
30
  source?: string;
31
- } & DrizzleBunSqliteDatabaseOptions) | string | undefined;
31
+ } & DrizzleSqliteBunDatabaseOptions) | string | undefined;
32
32
  export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations, TClient extends Database = Database>(...params: [] | [
33
33
  TClient | string
34
34
  ] | [
@@ -40,11 +40,11 @@ export declare function drizzle<TSchema extends Record<string, unknown> = Record
40
40
  } | {
41
41
  client: TClient;
42
42
  }))
43
- ]): BunSQLiteDatabase<TSchema, TRelations> & {
43
+ ]): SQLiteBunDatabase<TSchema, TRelations> & {
44
44
  $client: TClient;
45
45
  };
46
46
  export declare namespace drizzle {
47
- function mock<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations>(config?: DrizzleConfig<TSchema, TRelations>): BunSQLiteDatabase<TSchema, TRelations> & {
47
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>, TRelations extends AnyRelations = EmptyRelations>(config?: DrizzleConfig<TSchema, TRelations>): SQLiteBunDatabase<TSchema, TRelations> & {
48
48
  $client: '$client is not available on drizzle.mock()';
49
49
  };
50
50
  }
@@ -6,8 +6,8 @@ import { BaseSQLiteDatabase } from "../sqlite-core/db.js";
6
6
  import { SQLiteSyncDialect } from "../sqlite-core/dialect.js";
7
7
  import { isConfig } from "../utils.js";
8
8
  import { SQLiteBunSession } from "./session.js";
9
- class BunSQLiteDatabase extends BaseSQLiteDatabase {
10
- static [entityKind] = "BunSQLiteDatabase";
9
+ class SQLiteBunDatabase extends BaseSQLiteDatabase {
10
+ static [entityKind] = "SQLiteBunDatabase";
11
11
  }
12
12
  function construct(client, config = {}) {
13
13
  const dialect = new SQLiteSyncDialect({ casing: config.casing });
@@ -31,7 +31,7 @@ function construct(client, config = {}) {
31
31
  }
32
32
  const relations = config.relations ?? {};
33
33
  const session = new SQLiteBunSession(client, dialect, relations, schema, { logger });
34
- const db = new BunSQLiteDatabase(
34
+ const db = new SQLiteBunDatabase(
35
35
  "sync",
36
36
  dialect,
37
37
  session,
@@ -67,7 +67,7 @@ function drizzle(...params) {
67
67
  drizzle2.mock = mock;
68
68
  })(drizzle || (drizzle = {}));
69
69
  export {
70
- BunSQLiteDatabase,
70
+ SQLiteBunDatabase,
71
71
  drizzle
72
72
  };
73
73
  //# sourceMappingURL=driver.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bun-sqlite/driver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport { Database } from 'bun:sqlite';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport { SQLiteBunSession } from './session.ts';\n\nexport class BunSQLiteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends BaseSQLiteDatabase<'sync', void, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'BunSQLiteDatabase';\n}\n\ntype DrizzleBunSqliteDatabaseOptions = {\n\t/**\n\t * Open the database as read-only (no write operations, no create).\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_READONLY}\n\t */\n\treadonly?: boolean;\n\t/**\n\t * Allow creating a new database\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_CREATE}\n\t */\n\tcreate?: boolean;\n\t/**\n\t * Open the database as read-write\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_READWRITE}\n\t */\n\treadwrite?: boolean;\n};\n\nexport type DrizzleBunSqliteDatabaseConfig =\n\t| ({\n\t\tsource?: string;\n\t} & DrizzleBunSqliteDatabaseOptions)\n\t| string\n\t| undefined;\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: Database,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): BunSQLiteDatabase<TSchema, TRelations> & {\n\t$client: Database;\n} {\n\tconst dialect = new SQLiteSyncDialect({ casing: config.casing });\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\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new SQLiteBunSession<\n\t\tTSchema,\n\t\tTRelations,\n\t\tV1.ExtractTablesWithRelations<TSchema>\n\t>(client, dialect, relations, schema as V1.RelationalSchemaConfig<any>, { logger });\n\tconst db = new BunSQLiteDatabase(\n\t\t'sync',\n\t\tdialect,\n\t\tsession,\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t) as BunSQLiteDatabase<\n\t\tTSchema,\n\t\tTRelations\n\t>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends Database = Database,\n>(\n\t...params:\n\t\t| []\n\t\t| [\n\t\t\tTClient | string,\n\t\t]\n\t\t| [\n\t\t\tTClient | string,\n\t\t\tDrizzleConfig<TSchema, TRelations>,\n\t\t]\n\t\t| [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t\t& ({\n\t\t\t\t\tconnection?: DrizzleBunSqliteDatabaseConfig;\n\t\t\t\t} | {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t})\n\t\t\t),\n\t\t]\n): BunSQLiteDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif (params[0] === undefined || typeof params[0] === 'string') {\n\t\tconst instance = params[0] === undefined ? new Database() : new Database(params[0]);\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& ({\n\t\t\t\tconnection?: DrizzleBunSqliteDatabaseConfig | string;\n\t\t\t\tclient?: TClient;\n\t\t\t})\n\t\t\t& DrizzleConfig<TSchema, TRelations>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tif (typeof connection === 'object') {\n\t\t\tconst { source, ...opts } = connection;\n\n\t\t\tconst options = Object.values(opts).filter((v) => v !== undefined).length ? opts : undefined;\n\n\t\t\tconst instance = new Database(source, options);\n\n\t\t\treturn construct(instance, drizzleConfig) as any;\n\t\t}\n\n\t\tconst instance = new Database(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as Database, params[1] as DrizzleConfig<TSchema, TRelations> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzleConfig<TSchema, TRelations>,\n\t): BunSQLiteDatabase<TSchema, 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":"AAEA,SAAS,gBAAgB;AACzB,YAAY,QAAQ;AACpB,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAE9B,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAClC,SAA6B,gBAAgB;AAC7C,SAAS,wBAAwB;AAE1B,MAAM,0BAGH,mBAAsD;AAAA,EAC/D,QAA0B,UAAU,IAAY;AACjD;AA8BA,SAAS,UAIR,QACA,SAA6C,CAAC,GAG7C;AACD,QAAM,UAAU,IAAI,kBAAkB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC/D,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe,GAAG;AAAA,MACvB,OAAO;AAAA,MACP,GAAG;AAAA,IACJ;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,YAAY,OAAO,aAAa,CAAC;AACvC,QAAM,UAAU,IAAI,iBAIlB,QAAQ,SAAS,WAAW,QAA0C,EAAE,OAAO,CAAC;AAClF,QAAM,KAAK,IAAI;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAIA,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAKZ,QAqBF;AACD,MAAI,OAAO,CAAC,MAAM,UAAa,OAAO,OAAO,CAAC,MAAM,UAAU;AAC7D,UAAM,WAAW,OAAO,CAAC,MAAM,SAAY,IAAI,SAAS,IAAI,IAAI,SAAS,OAAO,CAAC,CAAC;AAElF,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,MAAI,SAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAOzD,QAAI,OAAQ,QAAO,UAAU,QAAQ,aAAa;AAElD,QAAI,OAAO,eAAe,UAAU;AACnC,YAAM,EAAE,QAAQ,GAAG,KAAK,IAAI;AAE5B,YAAM,UAAU,OAAO,OAAO,IAAI,EAAE,OAAO,CAAC,MAAM,MAAM,MAAS,EAAE,SAAS,OAAO;AAEnF,YAAMA,YAAW,IAAI,SAAS,QAAQ,OAAO;AAE7C,aAAO,UAAUA,WAAU,aAAa;AAAA,IACzC;AAEA,UAAM,WAAW,IAAI,SAAS,UAAU;AAExC,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAe,OAAO,CAAC,CAAmD;AACpG;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KAIf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AATO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}
1
+ {"version":3,"sources":["../../src/bun-sqlite/driver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport { Database } from 'bun:sqlite';\nimport * as V1 from '~/_relations.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport { SQLiteBunSession } from './session.ts';\n\nexport class SQLiteBunDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n> extends BaseSQLiteDatabase<'sync', void, TSchema, TRelations> {\n\tstatic override readonly [entityKind]: string = 'SQLiteBunDatabase';\n}\n\ntype DrizzleSqliteBunDatabaseOptions = {\n\t/**\n\t * Open the database as read-only (no write operations, no create).\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_READONLY}\n\t */\n\treadonly?: boolean;\n\t/**\n\t * Allow creating a new database\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_CREATE}\n\t */\n\tcreate?: boolean;\n\t/**\n\t * Open the database as read-write\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_READWRITE}\n\t */\n\treadwrite?: boolean;\n};\n\nexport type DrizzleBunSqliteDatabaseConfig =\n\t| ({\n\t\tsource?: string;\n\t} & DrizzleSqliteBunDatabaseOptions)\n\t| string\n\t| undefined;\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n>(\n\tclient: Database,\n\tconfig: DrizzleConfig<TSchema, TRelations> = {},\n): SQLiteBunDatabase<TSchema, TRelations> & {\n\t$client: Database;\n} {\n\tconst dialect = new SQLiteSyncDialect({ casing: config.casing });\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\tlet schema: V1.RelationalSchemaConfig<V1.TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = V1.extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tV1.createTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst relations = config.relations ?? {} as TRelations;\n\tconst session = new SQLiteBunSession<\n\t\tTSchema,\n\t\tTRelations,\n\t\tV1.ExtractTablesWithRelations<TSchema>\n\t>(client, dialect, relations, schema as V1.RelationalSchemaConfig<any>, { logger });\n\tconst db = new SQLiteBunDatabase(\n\t\t'sync',\n\t\tdialect,\n\t\tsession,\n\t\trelations,\n\t\tschema as V1.RelationalSchemaConfig<any>,\n\t) as SQLiteBunDatabase<\n\t\tTSchema,\n\t\tTRelations\n\t>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTRelations extends AnyRelations = EmptyRelations,\n\tTClient extends Database = Database,\n>(\n\t...params:\n\t\t| []\n\t\t| [\n\t\t\tTClient | string,\n\t\t]\n\t\t| [\n\t\t\tTClient | string,\n\t\t\tDrizzleConfig<TSchema, TRelations>,\n\t\t]\n\t\t| [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema, TRelations>\n\t\t\t\t& ({\n\t\t\t\t\tconnection?: DrizzleBunSqliteDatabaseConfig;\n\t\t\t\t} | {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t})\n\t\t\t),\n\t\t]\n): SQLiteBunDatabase<TSchema, TRelations> & {\n\t$client: TClient;\n} {\n\tif (params[0] === undefined || typeof params[0] === 'string') {\n\t\tconst instance = params[0] === undefined ? new Database() : new Database(params[0]);\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& ({\n\t\t\t\tconnection?: DrizzleBunSqliteDatabaseConfig | string;\n\t\t\t\tclient?: TClient;\n\t\t\t})\n\t\t\t& DrizzleConfig<TSchema, TRelations>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tif (typeof connection === 'object') {\n\t\t\tconst { source, ...opts } = connection;\n\n\t\t\tconst options = Object.values(opts).filter((v) => v !== undefined).length ? opts : undefined;\n\n\t\t\tconst instance = new Database(source, options);\n\n\t\t\treturn construct(instance, drizzleConfig) as any;\n\t\t}\n\n\t\tconst instance = new Database(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as Database, params[1] as DrizzleConfig<TSchema, TRelations> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<\n\t\tTSchema extends Record<string, unknown> = Record<string, never>,\n\t\tTRelations extends AnyRelations = EmptyRelations,\n\t>(\n\t\tconfig?: DrizzleConfig<TSchema, TRelations>,\n\t): SQLiteBunDatabase<TSchema, 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":"AAEA,SAAS,gBAAgB;AACzB,YAAY,QAAQ;AACpB,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAE9B,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAClC,SAA6B,gBAAgB;AAC7C,SAAS,wBAAwB;AAE1B,MAAM,0BAGH,mBAAsD;AAAA,EAC/D,QAA0B,UAAU,IAAY;AACjD;AA8BA,SAAS,UAIR,QACA,SAA6C,CAAC,GAG7C;AACD,QAAM,UAAU,IAAI,kBAAkB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC/D,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe,GAAG;AAAA,MACvB,OAAO;AAAA,MACP,GAAG;AAAA,IACJ;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,YAAY,OAAO,aAAa,CAAC;AACvC,QAAM,UAAU,IAAI,iBAIlB,QAAQ,SAAS,WAAW,QAA0C,EAAE,OAAO,CAAC;AAClF,QAAM,KAAK,IAAI;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAIA,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAKZ,QAqBF;AACD,MAAI,OAAO,CAAC,MAAM,UAAa,OAAO,OAAO,CAAC,MAAM,UAAU;AAC7D,UAAM,WAAW,OAAO,CAAC,MAAM,SAAY,IAAI,SAAS,IAAI,IAAI,SAAS,OAAO,CAAC,CAAC;AAElF,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,MAAI,SAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAOzD,QAAI,OAAQ,QAAO,UAAU,QAAQ,aAAa;AAElD,QAAI,OAAO,eAAe,UAAU;AACnC,YAAM,EAAE,QAAQ,GAAG,KAAK,IAAI;AAE5B,YAAM,UAAU,OAAO,OAAO,IAAI,EAAE,OAAO,CAAC,MAAM,MAAM,MAAS,EAAE,SAAS,OAAO;AAEnF,YAAMA,YAAW,IAAI,SAAS,QAAQ,OAAO;AAE7C,aAAO,UAAUA,WAAU,aAAa;AAAA,IACzC;AAEA,UAAM,WAAW,IAAI,SAAS,UAAU;AAExC,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAe,OAAO,CAAC,CAAmD;AACpG;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KAIf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AATO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bun-sqlite/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport type { BunSQLiteDatabase } from './driver.ts';\n\nexport function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations = EmptyRelations>(\n\tdb: BunSQLiteDatabase<TSchema, TRelations>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tdb.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAmC;AAI5B,SAAS,QACf,IACA,QACC;AACD,QAAM,iBAAa,oCAAmB,MAAM;AAC5C,KAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AAClD;","names":[]}
1
+ {"version":3,"sources":["../../src/bun-sqlite/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport type { SQLiteBunDatabase } from './driver.ts';\n\nexport function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations = EmptyRelations>(\n\tdb: SQLiteBunDatabase<TSchema, TRelations>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tdb.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAmC;AAI5B,SAAS,QACf,IACA,QACC;AACD,QAAM,iBAAa,oCAAmB,MAAM;AAC5C,KAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AAClD;","names":[]}
@@ -1,4 +1,4 @@
1
1
  import type { MigrationConfig } from "../migrator.cjs";
2
2
  import type { AnyRelations, EmptyRelations } from "../relations.cjs";
3
- import type { BunSQLiteDatabase } from "./driver.cjs";
4
- export declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations = EmptyRelations>(db: BunSQLiteDatabase<TSchema, TRelations>, config: MigrationConfig): void;
3
+ import type { SQLiteBunDatabase } from "./driver.cjs";
4
+ export declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations = EmptyRelations>(db: SQLiteBunDatabase<TSchema, TRelations>, config: MigrationConfig): void;
@@ -1,4 +1,4 @@
1
1
  import type { MigrationConfig } from "../migrator.js";
2
2
  import type { AnyRelations, EmptyRelations } from "../relations.js";
3
- import type { BunSQLiteDatabase } from "./driver.js";
4
- export declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations = EmptyRelations>(db: BunSQLiteDatabase<TSchema, TRelations>, config: MigrationConfig): void;
3
+ import type { SQLiteBunDatabase } from "./driver.js";
4
+ export declare function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations = EmptyRelations>(db: SQLiteBunDatabase<TSchema, TRelations>, config: MigrationConfig): void;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bun-sqlite/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport type { BunSQLiteDatabase } from './driver.ts';\n\nexport function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations = EmptyRelations>(\n\tdb: BunSQLiteDatabase<TSchema, TRelations>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tdb.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":"AACA,SAAS,0BAA0B;AAI5B,SAAS,QACf,IACA,QACC;AACD,QAAM,aAAa,mBAAmB,MAAM;AAC5C,KAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AAClD;","names":[]}
1
+ {"version":3,"sources":["../../src/bun-sqlite/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { AnyRelations, EmptyRelations } from '~/relations.ts';\nimport type { SQLiteBunDatabase } from './driver.ts';\n\nexport function migrate<TSchema extends Record<string, unknown>, TRelations extends AnyRelations = EmptyRelations>(\n\tdb: SQLiteBunDatabase<TSchema, TRelations>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tdb.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":"AACA,SAAS,0BAA0B;AAI5B,SAAS,QACf,IACA,QACC;AACD,QAAM,aAAa,mBAAmB,MAAM;AAC5C,KAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AAClD;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cache/core/cache.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Table } from '~/index.ts';\nimport type { CacheConfig } from './types.ts';\n\nexport abstract class Cache {\n\tstatic readonly [entityKind]: string = 'Cache';\n\n\tabstract strategy(): 'explicit' | 'all';\n\n\t/**\n\t * Invoked if we should check cache for cached response\n\t * @param sql\n\t * @param tables\n\t */\n\tabstract get(\n\t\tkey: string,\n\t\ttables: string[],\n\t\tisTag: boolean,\n\t\tisAutoInvalidate?: boolean,\n\t): Promise<any[] | undefined>;\n\n\t/**\n\t * Invoked if new query should be inserted to cache\n\t * @param sql\n\t * @param tables\n\t */\n\tabstract put(\n\t\thashedQuery: string,\n\t\tresponse: any,\n\t\ttables: string[],\n\t\tisTag: boolean,\n\t\tconfig?: CacheConfig,\n\t): Promise<void>;\n\n\t/**\n\t * Invoked if insert, update, delete was invoked\n\t * @param tables\n\t */\n\tabstract onMutate(\n\t\tparams: MutationOption,\n\t): Promise<void>;\n}\n\nexport class NoopCache extends Cache {\n\toverride strategy() {\n\t\treturn 'all' as const;\n\t}\n\n\tstatic override readonly [entityKind]: string = 'NoopCache';\n\n\toverride async get(_key: string): Promise<any[] | undefined> {\n\t\treturn undefined;\n\t}\n\toverride async put(\n\t\t_hashedQuery: string,\n\t\t_response: any,\n\t\t_tables: string[],\n\t\t_config?: any,\n\t): Promise<void> {\n\t\t// noop\n\t}\n\toverride async onMutate(_params: MutationOption): Promise<void> {\n\t\t// noop\n\t}\n}\n\nexport type MutationOption = { tags?: string | string[]; tables?: Table<any> | Table<any>[] | string | string[] };\n\nexport async function hashQuery(sql: string, params?: any[]) {\n\tconst dataToHash = `${sql}-${JSON.stringify(params)}`;\n\tconst encoder = new TextEncoder();\n\tconst data = encoder.encode(dataToHash);\n\tconst hashBuffer = await crypto.subtle.digest('SHA-256', data);\n\tconst hashArray = [...new Uint8Array(hashBuffer)];\n\tconst hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\n\n\treturn hashHex;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAIpB,MAAe,MAAM;AAAA,EAC3B,QAAiB,wBAAU,IAAY;AAoCxC;AAEO,MAAM,kBAAkB,MAAM;AAAA,EAC3B,WAAW;AACnB,WAAO;AAAA,EACR;AAAA,EAEA,QAA0B,wBAAU,IAAY;AAAA,EAEhD,MAAe,IAAI,MAA0C;AAC5D,WAAO;AAAA,EACR;AAAA,EACA,MAAe,IACd,cACA,WACA,SACA,SACgB;AAAA,EAEjB;AAAA,EACA,MAAe,SAAS,SAAwC;AAAA,EAEhE;AACD;AAIA,eAAsB,UAAU,KAAa,QAAgB;AAC5D,QAAM,aAAa,GAAG,GAAG,IAAI,KAAK,UAAU,MAAM,CAAC;AACnD,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,OAAO,QAAQ,OAAO,UAAU;AACtC,QAAM,aAAa,MAAM,OAAO,OAAO,OAAO,WAAW,IAAI;AAC7D,QAAM,YAAY,CAAC,GAAG,IAAI,WAAW,UAAU,CAAC;AAChD,QAAM,UAAU,UAAU,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAE7E,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../../src/cache/core/cache.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Table } from '~/table.ts';\nimport type { CacheConfig } from './types.ts';\n\nexport abstract class Cache {\n\tstatic readonly [entityKind]: string = 'Cache';\n\n\tabstract strategy(): 'explicit' | 'all';\n\n\t/**\n\t * Invoked if we should check cache for cached response\n\t * @param sql\n\t * @param tables\n\t */\n\tabstract get(\n\t\tkey: string,\n\t\ttables: string[],\n\t\tisTag: boolean,\n\t\tisAutoInvalidate?: boolean,\n\t): Promise<any[] | undefined>;\n\n\t/**\n\t * Invoked if new query should be inserted to cache\n\t * @param sql\n\t * @param tables\n\t */\n\tabstract put(\n\t\thashedQuery: string,\n\t\tresponse: any,\n\t\ttables: string[],\n\t\tisTag: boolean,\n\t\tconfig?: CacheConfig,\n\t): Promise<void>;\n\n\t/**\n\t * Invoked if insert, update, delete was invoked\n\t * @param tables\n\t */\n\tabstract onMutate(\n\t\tparams: MutationOption,\n\t): Promise<void>;\n}\n\nexport class NoopCache extends Cache {\n\toverride strategy() {\n\t\treturn 'all' as const;\n\t}\n\n\tstatic override readonly [entityKind]: string = 'NoopCache';\n\n\toverride async get(_key: string): Promise<any[] | undefined> {\n\t\treturn undefined;\n\t}\n\toverride async put(\n\t\t_hashedQuery: string,\n\t\t_response: any,\n\t\t_tables: string[],\n\t\t_config?: any,\n\t): Promise<void> {\n\t\t// noop\n\t}\n\toverride async onMutate(_params: MutationOption): Promise<void> {\n\t\t// noop\n\t}\n}\n\nexport type MutationOption = { tags?: string | string[]; tables?: Table<any> | Table<any>[] | string | string[] };\n\nexport async function hashQuery(sql: string, params?: any[]) {\n\tconst dataToHash = `${sql}-${JSON.stringify(params)}`;\n\tconst encoder = new TextEncoder();\n\tconst data = encoder.encode(dataToHash);\n\tconst hashBuffer = await crypto.subtle.digest('SHA-256', data);\n\tconst hashArray = [...new Uint8Array(hashBuffer)];\n\tconst hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\n\n\treturn hashHex;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAIpB,MAAe,MAAM;AAAA,EAC3B,QAAiB,wBAAU,IAAY;AAoCxC;AAEO,MAAM,kBAAkB,MAAM;AAAA,EAC3B,WAAW;AACnB,WAAO;AAAA,EACR;AAAA,EAEA,QAA0B,wBAAU,IAAY;AAAA,EAEhD,MAAe,IAAI,MAA0C;AAC5D,WAAO;AAAA,EACR;AAAA,EACA,MAAe,IACd,cACA,WACA,SACA,SACgB;AAAA,EAEjB;AAAA,EACA,MAAe,SAAS,SAAwC;AAAA,EAEhE;AACD;AAIA,eAAsB,UAAU,KAAa,QAAgB;AAC5D,QAAM,aAAa,GAAG,GAAG,IAAI,KAAK,UAAU,MAAM,CAAC;AACnD,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,OAAO,QAAQ,OAAO,UAAU;AACtC,QAAM,aAAa,MAAM,OAAO,OAAO,OAAO,WAAW,IAAI;AAC7D,QAAM,YAAY,CAAC,GAAG,IAAI,WAAW,UAAU,CAAC;AAChD,QAAM,UAAU,UAAU,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAE7E,SAAO;AACR;","names":[]}
@@ -1,5 +1,5 @@
1
1
  import { entityKind } from "../../entity.cjs";
2
- import type { Table } from "../../index.cjs";
2
+ import type { Table } from "../../table.cjs";
3
3
  import type { CacheConfig } from "./types.cjs";
4
4
  export declare abstract class Cache {
5
5
  static readonly [entityKind]: string;
@@ -1,5 +1,5 @@
1
1
  import { entityKind } from "../../entity.js";
2
- import type { Table } from "../../index.js";
2
+ import type { Table } from "../../table.js";
3
3
  import type { CacheConfig } from "./types.js";
4
4
  export declare abstract class Cache {
5
5
  static readonly [entityKind]: string;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cache/core/cache.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Table } from '~/index.ts';\nimport type { CacheConfig } from './types.ts';\n\nexport abstract class Cache {\n\tstatic readonly [entityKind]: string = 'Cache';\n\n\tabstract strategy(): 'explicit' | 'all';\n\n\t/**\n\t * Invoked if we should check cache for cached response\n\t * @param sql\n\t * @param tables\n\t */\n\tabstract get(\n\t\tkey: string,\n\t\ttables: string[],\n\t\tisTag: boolean,\n\t\tisAutoInvalidate?: boolean,\n\t): Promise<any[] | undefined>;\n\n\t/**\n\t * Invoked if new query should be inserted to cache\n\t * @param sql\n\t * @param tables\n\t */\n\tabstract put(\n\t\thashedQuery: string,\n\t\tresponse: any,\n\t\ttables: string[],\n\t\tisTag: boolean,\n\t\tconfig?: CacheConfig,\n\t): Promise<void>;\n\n\t/**\n\t * Invoked if insert, update, delete was invoked\n\t * @param tables\n\t */\n\tabstract onMutate(\n\t\tparams: MutationOption,\n\t): Promise<void>;\n}\n\nexport class NoopCache extends Cache {\n\toverride strategy() {\n\t\treturn 'all' as const;\n\t}\n\n\tstatic override readonly [entityKind]: string = 'NoopCache';\n\n\toverride async get(_key: string): Promise<any[] | undefined> {\n\t\treturn undefined;\n\t}\n\toverride async put(\n\t\t_hashedQuery: string,\n\t\t_response: any,\n\t\t_tables: string[],\n\t\t_config?: any,\n\t): Promise<void> {\n\t\t// noop\n\t}\n\toverride async onMutate(_params: MutationOption): Promise<void> {\n\t\t// noop\n\t}\n}\n\nexport type MutationOption = { tags?: string | string[]; tables?: Table<any> | Table<any>[] | string | string[] };\n\nexport async function hashQuery(sql: string, params?: any[]) {\n\tconst dataToHash = `${sql}-${JSON.stringify(params)}`;\n\tconst encoder = new TextEncoder();\n\tconst data = encoder.encode(dataToHash);\n\tconst hashBuffer = await crypto.subtle.digest('SHA-256', data);\n\tconst hashArray = [...new Uint8Array(hashBuffer)];\n\tconst hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\n\n\treturn hashHex;\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAIpB,MAAe,MAAM;AAAA,EAC3B,QAAiB,UAAU,IAAY;AAoCxC;AAEO,MAAM,kBAAkB,MAAM;AAAA,EAC3B,WAAW;AACnB,WAAO;AAAA,EACR;AAAA,EAEA,QAA0B,UAAU,IAAY;AAAA,EAEhD,MAAe,IAAI,MAA0C;AAC5D,WAAO;AAAA,EACR;AAAA,EACA,MAAe,IACd,cACA,WACA,SACA,SACgB;AAAA,EAEjB;AAAA,EACA,MAAe,SAAS,SAAwC;AAAA,EAEhE;AACD;AAIA,eAAsB,UAAU,KAAa,QAAgB;AAC5D,QAAM,aAAa,GAAG,GAAG,IAAI,KAAK,UAAU,MAAM,CAAC;AACnD,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,OAAO,QAAQ,OAAO,UAAU;AACtC,QAAM,aAAa,MAAM,OAAO,OAAO,OAAO,WAAW,IAAI;AAC7D,QAAM,YAAY,CAAC,GAAG,IAAI,WAAW,UAAU,CAAC;AAChD,QAAM,UAAU,UAAU,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAE7E,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../../src/cache/core/cache.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Table } from '~/table.ts';\nimport type { CacheConfig } from './types.ts';\n\nexport abstract class Cache {\n\tstatic readonly [entityKind]: string = 'Cache';\n\n\tabstract strategy(): 'explicit' | 'all';\n\n\t/**\n\t * Invoked if we should check cache for cached response\n\t * @param sql\n\t * @param tables\n\t */\n\tabstract get(\n\t\tkey: string,\n\t\ttables: string[],\n\t\tisTag: boolean,\n\t\tisAutoInvalidate?: boolean,\n\t): Promise<any[] | undefined>;\n\n\t/**\n\t * Invoked if new query should be inserted to cache\n\t * @param sql\n\t * @param tables\n\t */\n\tabstract put(\n\t\thashedQuery: string,\n\t\tresponse: any,\n\t\ttables: string[],\n\t\tisTag: boolean,\n\t\tconfig?: CacheConfig,\n\t): Promise<void>;\n\n\t/**\n\t * Invoked if insert, update, delete was invoked\n\t * @param tables\n\t */\n\tabstract onMutate(\n\t\tparams: MutationOption,\n\t): Promise<void>;\n}\n\nexport class NoopCache extends Cache {\n\toverride strategy() {\n\t\treturn 'all' as const;\n\t}\n\n\tstatic override readonly [entityKind]: string = 'NoopCache';\n\n\toverride async get(_key: string): Promise<any[] | undefined> {\n\t\treturn undefined;\n\t}\n\toverride async put(\n\t\t_hashedQuery: string,\n\t\t_response: any,\n\t\t_tables: string[],\n\t\t_config?: any,\n\t): Promise<void> {\n\t\t// noop\n\t}\n\toverride async onMutate(_params: MutationOption): Promise<void> {\n\t\t// noop\n\t}\n}\n\nexport type MutationOption = { tags?: string | string[]; tables?: Table<any> | Table<any>[] | string | string[] };\n\nexport async function hashQuery(sql: string, params?: any[]) {\n\tconst dataToHash = `${sql}-${JSON.stringify(params)}`;\n\tconst encoder = new TextEncoder();\n\tconst data = encoder.encode(dataToHash);\n\tconst hashBuffer = await crypto.subtle.digest('SHA-256', data);\n\tconst hashArray = [...new Uint8Array(hashBuffer)];\n\tconst hashHex = hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\n\n\treturn hashHex;\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAIpB,MAAe,MAAM;AAAA,EAC3B,QAAiB,UAAU,IAAY;AAoCxC;AAEO,MAAM,kBAAkB,MAAM;AAAA,EAC3B,WAAW;AACnB,WAAO;AAAA,EACR;AAAA,EAEA,QAA0B,UAAU,IAAY;AAAA,EAEhD,MAAe,IAAI,MAA0C;AAC5D,WAAO;AAAA,EACR;AAAA,EACA,MAAe,IACd,cACA,WACA,SACA,SACgB;AAAA,EAEjB;AAAA,EACA,MAAe,SAAS,SAAwC;AAAA,EAEhE;AACD;AAIA,eAAsB,UAAU,KAAa,QAAgB;AAC5D,QAAM,aAAa,GAAG,GAAG,IAAI,KAAK,UAAU,MAAM,CAAC;AACnD,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,OAAO,QAAQ,OAAO,UAAU;AACtC,QAAM,aAAa,MAAM,OAAO,OAAO,OAAO,WAAW,IAAI;AAC7D,QAAM,YAAY,CAAC,GAAG,IAAI,WAAW,UAAU,CAAC;AAChD,QAAM,UAAU,UAAU,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAE7E,SAAO;AACR;","names":[]}
@@ -25,7 +25,7 @@ module.exports = __toCommonJS(cache_exports);
25
25
  var import_redis = require("@upstash/redis");
26
26
  var import_core = require("../core/index.cjs");
27
27
  var import_entity = require("../../entity.cjs");
28
- var import__ = require("../../index.cjs");
28
+ var import_table = require("../../table.cjs");
29
29
  const getByTagScript = `
30
30
  local tagsMapKey = KEYS[1] -- tags map key
31
31
  local tag = ARGV[1] -- tag
@@ -173,7 +173,7 @@ class UpstashCache extends import_core.Cache {
173
173
  async onMutate(params) {
174
174
  const tags = Array.isArray(params.tags) ? params.tags : params.tags ? [params.tags] : [];
175
175
  const tables = Array.isArray(params.tables) ? params.tables : params.tables ? [params.tables] : [];
176
- const tableNames = tables.map((table) => (0, import_entity.is)(table, import__.Table) ? table[import__.OriginalName] : table);
176
+ const tableNames = tables.map((table) => (0, import_entity.is)(table, import_table.Table) ? table[import_table.OriginalName] : table);
177
177
  const compositeTableSets = tableNames.map((table) => this.addTablePrefix(table));
178
178
  await this.luaScripts.onMutateScript.exec([UpstashCache.tagsMapKey, ...compositeTableSets], tags);
179
179
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cache/upstash/cache.ts"],"sourcesContent":["import { Redis } from '@upstash/redis';\nimport type { MutationOption } from '~/cache/core/index.ts';\nimport { Cache } from '~/cache/core/index.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { OriginalName, Table } from '~/index.ts';\nimport type { CacheConfig } from '../core/types.ts';\n\nconst getByTagScript = `\nlocal tagsMapKey = KEYS[1] -- tags map key\nlocal tag = ARGV[1] -- tag\n\nlocal compositeTableName = redis.call('HGET', tagsMapKey, tag)\nif not compositeTableName then\n return nil\nend\n\nlocal value = redis.call('HGET', compositeTableName, tag)\nreturn value\n`;\n\nconst onMutateScript = `\nlocal tagsMapKey = KEYS[1] -- tags map key\nlocal tables = {} -- initialize tables array\nlocal tags = ARGV -- tags array\n\nfor i = 2, #KEYS do\n tables[#tables + 1] = KEYS[i] -- add all keys except the first one to tables\nend\n\nif #tags > 0 then\n for _, tag in ipairs(tags) do\n if tag ~= nil and tag ~= '' then\n local compositeTableName = redis.call('HGET', tagsMapKey, tag)\n if compositeTableName then\n redis.call('HDEL', compositeTableName, tag)\n end\n end\n end\n redis.call('HDEL', tagsMapKey, unpack(tags))\nend\n\nlocal keysToDelete = {}\n\nif #tables > 0 then\n local compositeTableNames = redis.call('SUNION', unpack(tables))\n for _, compositeTableName in ipairs(compositeTableNames) do\n keysToDelete[#keysToDelete + 1] = compositeTableName\n end\n for _, table in ipairs(tables) do\n keysToDelete[#keysToDelete + 1] = table\n end\n redis.call('DEL', unpack(keysToDelete))\nend\n`;\n\ntype Script = ReturnType<Redis['createScript']>;\n\ntype ExpireOptions = 'NX' | 'nx' | 'XX' | 'xx' | 'GT' | 'gt' | 'LT' | 'lt';\n\nexport class UpstashCache extends Cache {\n\tstatic override readonly [entityKind]: string = 'UpstashCache';\n\t/**\n\t * Prefix for sets which denote the composite table names for each unique table\n\t *\n\t * Example: In the composite table set of \"table1\", you may find\n\t * `${compositeTablePrefix}table1,table2` and `${compositeTablePrefix}table1,table3`\n\t */\n\tprivate static compositeTableSetPrefix = '__CTS__';\n\t/**\n\t * Prefix for hashes which map hash or tags to cache values\n\t */\n\tprivate static compositeTablePrefix = '__CT__';\n\t/**\n\t * Key which holds the mapping of tags to composite table names\n\t *\n\t * Using this tagsMapKey, you can find the composite table name for a given tag\n\t * and get the cache value for that tag:\n\t *\n\t * ```ts\n\t * const compositeTable = redis.hget(tagsMapKey, 'tag1')\n\t * console.log(compositeTable) // `${compositeTablePrefix}table1,table2`\n\t *\n\t * const cachevalue = redis.hget(compositeTable, 'tag1')\n\t */\n\tprivate static tagsMapKey = '__tagsMap__';\n\t/**\n\t * Queries whose auto invalidation is false aren't stored in their respective\n\t * composite table hashes because those hashes are deleted when a mutation\n\t * occurs on related tables.\n\t *\n\t * Instead, they are stored in a separate hash with the prefix\n\t * `__nonAutoInvalidate__` to prevent them from being deleted when a mutation\n\t */\n\tprivate static nonAutoInvalidateTablePrefix = '__nonAutoInvalidate__';\n\n\tprivate luaScripts: {\n\t\tgetByTagScript: Script;\n\t\tonMutateScript: Script;\n\t};\n\n\tprivate internalConfig: { seconds: number; hexOptions?: ExpireOptions };\n\n\tconstructor(public redis: Redis, config?: CacheConfig, protected useGlobally?: boolean) {\n\t\tsuper();\n\t\tthis.internalConfig = this.toInternalConfig(config);\n\t\tthis.luaScripts = {\n\t\t\tgetByTagScript: this.redis.createScript(getByTagScript, { readonly: true }),\n\t\t\tonMutateScript: this.redis.createScript(onMutateScript),\n\t\t};\n\t}\n\n\tpublic strategy() {\n\t\treturn this.useGlobally ? 'all' : 'explicit';\n\t}\n\n\tprivate toInternalConfig(config?: CacheConfig): { seconds: number; hexOptions?: ExpireOptions } {\n\t\treturn config\n\t\t\t? {\n\t\t\t\tseconds: config.ex!,\n\t\t\t\thexOptions: config.hexOptions,\n\t\t\t}\n\t\t\t: {\n\t\t\t\tseconds: 1,\n\t\t\t};\n\t}\n\n\toverride async get(\n\t\tkey: string,\n\t\ttables: string[],\n\t\tisTag: boolean = false,\n\t\tisAutoInvalidate?: boolean,\n\t): Promise<any[] | undefined> {\n\t\tif (!isAutoInvalidate) {\n\t\t\tconst result = await this.redis.hget(UpstashCache.nonAutoInvalidateTablePrefix, key);\n\t\t\treturn result === null ? undefined : result as any[];\n\t\t}\n\n\t\tif (isTag) {\n\t\t\tconst result = await this.luaScripts.getByTagScript.exec([UpstashCache.tagsMapKey], [key]);\n\t\t\treturn result === null ? undefined : result as any[];\n\t\t}\n\n\t\t// Normal cache lookup for the composite key\n\t\tconst compositeKey = this.getCompositeKey(tables);\n\t\tconst result = await this.redis.hget(compositeKey, key) ?? undefined; // Retrieve result for normal query\n\t\treturn result === null ? undefined : result as any[];\n\t}\n\n\toverride async put(\n\t\tkey: string,\n\t\tresponse: any,\n\t\ttables: string[],\n\t\tisTag: boolean = false,\n\t\tconfig?: CacheConfig,\n\t): Promise<void> {\n\t\tconst isAutoInvalidate = tables.length !== 0;\n\n\t\tconst pipeline = this.redis.pipeline();\n\t\tconst ttlSeconds = config && config.ex ? config.ex : this.internalConfig.seconds;\n\t\tconst hexOptions = config && config.hexOptions ? config.hexOptions : this.internalConfig?.hexOptions;\n\n\t\tif (!isAutoInvalidate) {\n\t\t\tif (isTag) {\n\t\t\t\tpipeline.hset(UpstashCache.tagsMapKey, { [key]: UpstashCache.nonAutoInvalidateTablePrefix });\n\t\t\t\tpipeline.hexpire(UpstashCache.tagsMapKey, key, ttlSeconds, hexOptions);\n\t\t\t}\n\n\t\t\tpipeline.hset(UpstashCache.nonAutoInvalidateTablePrefix, { [key]: response });\n\t\t\tpipeline.hexpire(UpstashCache.nonAutoInvalidateTablePrefix, key, ttlSeconds, hexOptions);\n\t\t\tawait pipeline.exec();\n\t\t\treturn;\n\t\t}\n\n\t\tconst compositeKey = this.getCompositeKey(tables);\n\n\t\tpipeline.hset(compositeKey, { [key]: response }); // Store the result with the tag under the composite key\n\t\tpipeline.hexpire(compositeKey, key, ttlSeconds, hexOptions); // Set expiration for the composite key\n\n\t\tif (isTag) {\n\t\t\tpipeline.hset(UpstashCache.tagsMapKey, { [key]: compositeKey }); // Store the tag and its composite key in the map\n\t\t\tpipeline.hexpire(UpstashCache.tagsMapKey, key, ttlSeconds, hexOptions); // Set expiration for the tag\n\t\t}\n\n\t\tfor (const table of tables) {\n\t\t\tpipeline.sadd(this.addTablePrefix(table), compositeKey);\n\t\t}\n\n\t\tawait pipeline.exec();\n\t}\n\n\toverride async onMutate(params: MutationOption) {\n\t\tconst tags = Array.isArray(params.tags) ? params.tags : params.tags ? [params.tags] : [];\n\t\tconst tables = Array.isArray(params.tables) ? params.tables : params.tables ? [params.tables] : [];\n\t\tconst tableNames: string[] = tables.map((table) => is(table, Table) ? table[OriginalName] : table as string);\n\n\t\tconst compositeTableSets = tableNames.map((table) => this.addTablePrefix(table));\n\t\tawait this.luaScripts.onMutateScript.exec([UpstashCache.tagsMapKey, ...compositeTableSets], tags);\n\t}\n\n\tprivate addTablePrefix = (table: string) => `${UpstashCache.compositeTableSetPrefix}${table}`;\n\tprivate getCompositeKey = (tables: string[]) => `${UpstashCache.compositeTablePrefix}${tables.sort().join(',')}`;\n}\n\nexport function upstashCache(\n\t{ url, token, config, global = false }: { url: string; token: string; config?: CacheConfig; global?: boolean },\n): UpstashCache {\n\tconst redis = new Redis({\n\t\turl,\n\t\ttoken,\n\t});\n\n\treturn new UpstashCache(redis, config, global);\n}\n"],"mappings":"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","names":["result"]}
1
+ {"version":3,"sources":["../../../src/cache/upstash/cache.ts"],"sourcesContent":["import { Redis } from '@upstash/redis';\nimport type { MutationOption } from '~/cache/core/index.ts';\nimport { Cache } from '~/cache/core/index.ts';\nimport { entityKind, is } from '~/entity.ts';\nimport { OriginalName, Table } from '~/table.ts';\nimport type { CacheConfig } from '../core/types.ts';\n\nconst getByTagScript = `\nlocal tagsMapKey = KEYS[1] -- tags map key\nlocal tag = ARGV[1] -- tag\n\nlocal compositeTableName = redis.call('HGET', tagsMapKey, tag)\nif not compositeTableName then\n return nil\nend\n\nlocal value = redis.call('HGET', compositeTableName, tag)\nreturn value\n`;\n\nconst onMutateScript = `\nlocal tagsMapKey = KEYS[1] -- tags map key\nlocal tables = {} -- initialize tables array\nlocal tags = ARGV -- tags array\n\nfor i = 2, #KEYS do\n tables[#tables + 1] = KEYS[i] -- add all keys except the first one to tables\nend\n\nif #tags > 0 then\n for _, tag in ipairs(tags) do\n if tag ~= nil and tag ~= '' then\n local compositeTableName = redis.call('HGET', tagsMapKey, tag)\n if compositeTableName then\n redis.call('HDEL', compositeTableName, tag)\n end\n end\n end\n redis.call('HDEL', tagsMapKey, unpack(tags))\nend\n\nlocal keysToDelete = {}\n\nif #tables > 0 then\n local compositeTableNames = redis.call('SUNION', unpack(tables))\n for _, compositeTableName in ipairs(compositeTableNames) do\n keysToDelete[#keysToDelete + 1] = compositeTableName\n end\n for _, table in ipairs(tables) do\n keysToDelete[#keysToDelete + 1] = table\n end\n redis.call('DEL', unpack(keysToDelete))\nend\n`;\n\ntype Script = ReturnType<Redis['createScript']>;\n\ntype ExpireOptions = 'NX' | 'nx' | 'XX' | 'xx' | 'GT' | 'gt' | 'LT' | 'lt';\n\nexport class UpstashCache extends Cache {\n\tstatic override readonly [entityKind]: string = 'UpstashCache';\n\t/**\n\t * Prefix for sets which denote the composite table names for each unique table\n\t *\n\t * Example: In the composite table set of \"table1\", you may find\n\t * `${compositeTablePrefix}table1,table2` and `${compositeTablePrefix}table1,table3`\n\t */\n\tprivate static compositeTableSetPrefix = '__CTS__';\n\t/**\n\t * Prefix for hashes which map hash or tags to cache values\n\t */\n\tprivate static compositeTablePrefix = '__CT__';\n\t/**\n\t * Key which holds the mapping of tags to composite table names\n\t *\n\t * Using this tagsMapKey, you can find the composite table name for a given tag\n\t * and get the cache value for that tag:\n\t *\n\t * ```ts\n\t * const compositeTable = redis.hget(tagsMapKey, 'tag1')\n\t * console.log(compositeTable) // `${compositeTablePrefix}table1,table2`\n\t *\n\t * const cachevalue = redis.hget(compositeTable, 'tag1')\n\t */\n\tprivate static tagsMapKey = '__tagsMap__';\n\t/**\n\t * Queries whose auto invalidation is false aren't stored in their respective\n\t * composite table hashes because those hashes are deleted when a mutation\n\t * occurs on related tables.\n\t *\n\t * Instead, they are stored in a separate hash with the prefix\n\t * `__nonAutoInvalidate__` to prevent them from being deleted when a mutation\n\t */\n\tprivate static nonAutoInvalidateTablePrefix = '__nonAutoInvalidate__';\n\n\tprivate luaScripts: {\n\t\tgetByTagScript: Script;\n\t\tonMutateScript: Script;\n\t};\n\n\tprivate internalConfig: { seconds: number; hexOptions?: ExpireOptions };\n\n\tconstructor(public redis: Redis, config?: CacheConfig, protected useGlobally?: boolean) {\n\t\tsuper();\n\t\tthis.internalConfig = this.toInternalConfig(config);\n\t\tthis.luaScripts = {\n\t\t\tgetByTagScript: this.redis.createScript(getByTagScript, { readonly: true }),\n\t\t\tonMutateScript: this.redis.createScript(onMutateScript),\n\t\t};\n\t}\n\n\tpublic strategy() {\n\t\treturn this.useGlobally ? 'all' : 'explicit';\n\t}\n\n\tprivate toInternalConfig(config?: CacheConfig): { seconds: number; hexOptions?: ExpireOptions } {\n\t\treturn config\n\t\t\t? {\n\t\t\t\tseconds: config.ex!,\n\t\t\t\thexOptions: config.hexOptions,\n\t\t\t}\n\t\t\t: {\n\t\t\t\tseconds: 1,\n\t\t\t};\n\t}\n\n\toverride async get(\n\t\tkey: string,\n\t\ttables: string[],\n\t\tisTag: boolean = false,\n\t\tisAutoInvalidate?: boolean,\n\t): Promise<any[] | undefined> {\n\t\tif (!isAutoInvalidate) {\n\t\t\tconst result = await this.redis.hget(UpstashCache.nonAutoInvalidateTablePrefix, key);\n\t\t\treturn result === null ? undefined : result as any[];\n\t\t}\n\n\t\tif (isTag) {\n\t\t\tconst result = await this.luaScripts.getByTagScript.exec([UpstashCache.tagsMapKey], [key]);\n\t\t\treturn result === null ? undefined : result as any[];\n\t\t}\n\n\t\t// Normal cache lookup for the composite key\n\t\tconst compositeKey = this.getCompositeKey(tables);\n\t\tconst result = await this.redis.hget(compositeKey, key) ?? undefined; // Retrieve result for normal query\n\t\treturn result === null ? undefined : result as any[];\n\t}\n\n\toverride async put(\n\t\tkey: string,\n\t\tresponse: any,\n\t\ttables: string[],\n\t\tisTag: boolean = false,\n\t\tconfig?: CacheConfig,\n\t): Promise<void> {\n\t\tconst isAutoInvalidate = tables.length !== 0;\n\n\t\tconst pipeline = this.redis.pipeline();\n\t\tconst ttlSeconds = config && config.ex ? config.ex : this.internalConfig.seconds;\n\t\tconst hexOptions = config && config.hexOptions ? config.hexOptions : this.internalConfig?.hexOptions;\n\n\t\tif (!isAutoInvalidate) {\n\t\t\tif (isTag) {\n\t\t\t\tpipeline.hset(UpstashCache.tagsMapKey, { [key]: UpstashCache.nonAutoInvalidateTablePrefix });\n\t\t\t\tpipeline.hexpire(UpstashCache.tagsMapKey, key, ttlSeconds, hexOptions);\n\t\t\t}\n\n\t\t\tpipeline.hset(UpstashCache.nonAutoInvalidateTablePrefix, { [key]: response });\n\t\t\tpipeline.hexpire(UpstashCache.nonAutoInvalidateTablePrefix, key, ttlSeconds, hexOptions);\n\t\t\tawait pipeline.exec();\n\t\t\treturn;\n\t\t}\n\n\t\tconst compositeKey = this.getCompositeKey(tables);\n\n\t\tpipeline.hset(compositeKey, { [key]: response }); // Store the result with the tag under the composite key\n\t\tpipeline.hexpire(compositeKey, key, ttlSeconds, hexOptions); // Set expiration for the composite key\n\n\t\tif (isTag) {\n\t\t\tpipeline.hset(UpstashCache.tagsMapKey, { [key]: compositeKey }); // Store the tag and its composite key in the map\n\t\t\tpipeline.hexpire(UpstashCache.tagsMapKey, key, ttlSeconds, hexOptions); // Set expiration for the tag\n\t\t}\n\n\t\tfor (const table of tables) {\n\t\t\tpipeline.sadd(this.addTablePrefix(table), compositeKey);\n\t\t}\n\n\t\tawait pipeline.exec();\n\t}\n\n\toverride async onMutate(params: MutationOption) {\n\t\tconst tags = Array.isArray(params.tags) ? params.tags : params.tags ? [params.tags] : [];\n\t\tconst tables = Array.isArray(params.tables) ? params.tables : params.tables ? [params.tables] : [];\n\t\tconst tableNames: string[] = tables.map((table) => is(table, Table) ? table[OriginalName] : table as string);\n\n\t\tconst compositeTableSets = tableNames.map((table) => this.addTablePrefix(table));\n\t\tawait this.luaScripts.onMutateScript.exec([UpstashCache.tagsMapKey, ...compositeTableSets], tags);\n\t}\n\n\tprivate addTablePrefix = (table: string) => `${UpstashCache.compositeTableSetPrefix}${table}`;\n\tprivate getCompositeKey = (tables: string[]) => `${UpstashCache.compositeTablePrefix}${tables.sort().join(',')}`;\n}\n\nexport function upstashCache(\n\t{ url, token, config, global = false }: { url: string; token: string; config?: CacheConfig; global?: boolean },\n): UpstashCache {\n\tconst redis = new Redis({\n\t\turl,\n\t\ttoken,\n\t});\n\n\treturn new UpstashCache(redis, config, global);\n}\n"],"mappings":"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","names":["result"]}
@@ -1,7 +1,7 @@
1
1
  import { Redis } from "@upstash/redis";
2
2
  import { Cache } from "../core/index.js";
3
3
  import { entityKind, is } from "../../entity.js";
4
- import { OriginalName, Table } from "../../index.js";
4
+ import { OriginalName, Table } from "../../table.js";
5
5
  const getByTagScript = `
6
6
  local tagsMapKey = KEYS[1] -- tags map key
7
7
  local tag = ARGV[1] -- tag