on-zero 0.6.14 → 0.6.16

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 (163) hide show
  1. package/dist/cjs/asyncTasks.cjs +51 -0
  2. package/dist/cjs/asyncTasks.native.js +84 -0
  3. package/dist/cjs/asyncTasks.native.js.map +1 -0
  4. package/dist/cjs/cli.cjs +8 -1
  5. package/dist/cjs/cli.native.js +8 -1
  6. package/dist/cjs/cli.native.js.map +1 -1
  7. package/dist/cjs/createSchemaFromDrizzle.cjs +4 -4
  8. package/dist/cjs/createSchemaFromDrizzle.native.js +4 -4
  9. package/dist/cjs/createSchemaFromDrizzle.native.js.map +1 -1
  10. package/dist/cjs/createZeroDirectServer.cjs +269 -0
  11. package/dist/cjs/createZeroDirectServer.native.js +287 -0
  12. package/dist/cjs/createZeroDirectServer.native.js.map +1 -0
  13. package/dist/cjs/createZeroSQLiteServer.cjs +8 -277
  14. package/dist/cjs/createZeroSQLiteServer.native.js +8 -390
  15. package/dist/cjs/createZeroSQLiteServer.native.js.map +1 -1
  16. package/dist/cjs/createZeroSQLiteServer.test.cjs +36 -9
  17. package/dist/cjs/createZeroSQLiteServer.test.native.js +37 -9
  18. package/dist/cjs/createZeroSQLiteServer.test.native.js.map +1 -1
  19. package/dist/cjs/createZeroServer.test.cjs +79 -1
  20. package/dist/cjs/createZeroServer.test.native.js +85 -1
  21. package/dist/cjs/createZeroServer.test.native.js.map +1 -1
  22. package/dist/cjs/createZeroServerCore.cjs +28 -208
  23. package/dist/cjs/createZeroServerCore.native.js +33 -218
  24. package/dist/cjs/createZeroServerCore.native.js.map +1 -1
  25. package/dist/cjs/generate.cjs +15 -5
  26. package/dist/cjs/generate.native.js +15 -5
  27. package/dist/cjs/generate.native.js.map +1 -1
  28. package/dist/cjs/generate.test.cjs +55 -0
  29. package/dist/cjs/generate.test.native.js +55 -0
  30. package/dist/cjs/generate.test.native.js.map +1 -1
  31. package/dist/cjs/helpers/createMutators.cjs +2 -2
  32. package/dist/cjs/helpers/createMutators.native.js +2 -2
  33. package/dist/cjs/helpers/createMutators.native.js.map +1 -1
  34. package/dist/cjs/index.cjs +1 -0
  35. package/dist/cjs/index.native.js +1 -0
  36. package/dist/cjs/index.native.js.map +1 -1
  37. package/dist/cjs/server.cjs +2 -1
  38. package/dist/cjs/sqliteRuntime.cjs +318 -0
  39. package/dist/cjs/sqliteRuntime.native.js +438 -0
  40. package/dist/cjs/sqliteRuntime.native.js.map +1 -0
  41. package/dist/cjs/syncHost.cjs +26 -12
  42. package/dist/cjs/syncHost.native.js +32 -16
  43. package/dist/cjs/syncHost.native.js.map +1 -1
  44. package/dist/cjs/syncHost.test.cjs +15 -4
  45. package/dist/cjs/syncHost.test.native.js +16 -4
  46. package/dist/cjs/syncHost.test.native.js.map +1 -1
  47. package/dist/cjs/vite-plugin.cjs +2 -1
  48. package/dist/cjs/vite-plugin.native.js +2 -1
  49. package/dist/cjs/vite-plugin.native.js.map +1 -1
  50. package/dist/esm/asyncTasks.mjs +26 -0
  51. package/dist/esm/asyncTasks.mjs.map +1 -0
  52. package/dist/esm/asyncTasks.native.js +56 -0
  53. package/dist/esm/asyncTasks.native.js.map +1 -0
  54. package/dist/esm/cli.mjs +8 -1
  55. package/dist/esm/cli.mjs.map +1 -1
  56. package/dist/esm/cli.native.js +8 -1
  57. package/dist/esm/cli.native.js.map +1 -1
  58. package/dist/esm/createSchemaFromDrizzle.mjs +2 -2
  59. package/dist/esm/createSchemaFromDrizzle.native.js +2 -2
  60. package/dist/esm/createZeroDirectServer.mjs +241 -0
  61. package/dist/esm/createZeroDirectServer.mjs.map +1 -0
  62. package/dist/esm/createZeroDirectServer.native.js +256 -0
  63. package/dist/esm/createZeroDirectServer.native.js.map +1 -0
  64. package/dist/esm/createZeroSQLiteServer.mjs +3 -272
  65. package/dist/esm/createZeroSQLiteServer.mjs.map +1 -1
  66. package/dist/esm/createZeroSQLiteServer.native.js +3 -385
  67. package/dist/esm/createZeroSQLiteServer.native.js.map +1 -1
  68. package/dist/esm/createZeroSQLiteServer.test.mjs +36 -9
  69. package/dist/esm/createZeroSQLiteServer.test.mjs.map +1 -1
  70. package/dist/esm/createZeroSQLiteServer.test.native.js +37 -9
  71. package/dist/esm/createZeroSQLiteServer.test.native.js.map +1 -1
  72. package/dist/esm/createZeroServer.test.mjs +80 -2
  73. package/dist/esm/createZeroServer.test.mjs.map +1 -1
  74. package/dist/esm/createZeroServer.test.native.js +86 -2
  75. package/dist/esm/createZeroServer.test.native.js.map +1 -1
  76. package/dist/esm/createZeroServerCore.mjs +26 -205
  77. package/dist/esm/createZeroServerCore.mjs.map +1 -1
  78. package/dist/esm/createZeroServerCore.native.js +32 -216
  79. package/dist/esm/createZeroServerCore.native.js.map +1 -1
  80. package/dist/esm/generate.mjs +15 -5
  81. package/dist/esm/generate.mjs.map +1 -1
  82. package/dist/esm/generate.native.js +15 -5
  83. package/dist/esm/generate.native.js.map +1 -1
  84. package/dist/esm/generate.test.mjs +55 -1
  85. package/dist/esm/generate.test.mjs.map +1 -1
  86. package/dist/esm/generate.test.native.js +55 -1
  87. package/dist/esm/generate.test.native.js.map +1 -1
  88. package/dist/esm/helpers/createMutators.mjs +2 -2
  89. package/dist/esm/helpers/createMutators.mjs.map +1 -1
  90. package/dist/esm/helpers/createMutators.native.js +2 -2
  91. package/dist/esm/helpers/createMutators.native.js.map +1 -1
  92. package/dist/esm/index.js +1 -0
  93. package/dist/esm/index.js.map +1 -1
  94. package/dist/esm/index.mjs +1 -0
  95. package/dist/esm/index.mjs.map +1 -1
  96. package/dist/esm/index.native.js +1 -0
  97. package/dist/esm/index.native.js.map +1 -1
  98. package/dist/esm/server.mjs +1 -0
  99. package/dist/esm/server.mjs.map +1 -1
  100. package/dist/esm/sqliteRuntime.mjs +289 -0
  101. package/dist/esm/sqliteRuntime.mjs.map +1 -0
  102. package/dist/esm/sqliteRuntime.native.js +406 -0
  103. package/dist/esm/sqliteRuntime.native.js.map +1 -0
  104. package/dist/esm/syncHost.mjs +24 -10
  105. package/dist/esm/syncHost.mjs.map +1 -1
  106. package/dist/esm/syncHost.native.js +30 -14
  107. package/dist/esm/syncHost.native.js.map +1 -1
  108. package/dist/esm/syncHost.test.mjs +15 -4
  109. package/dist/esm/syncHost.test.mjs.map +1 -1
  110. package/dist/esm/syncHost.test.native.js +16 -4
  111. package/dist/esm/syncHost.test.native.js.map +1 -1
  112. package/dist/esm/vite-plugin.mjs +2 -1
  113. package/dist/esm/vite-plugin.mjs.map +1 -1
  114. package/dist/esm/vite-plugin.native.js +2 -1
  115. package/dist/esm/vite-plugin.native.js.map +1 -1
  116. package/lint/ssr-guards.js +8 -7
  117. package/package.json +5 -6
  118. package/readme.md +13 -4
  119. package/src/asyncTasks.ts +33 -0
  120. package/src/cli.ts +7 -1
  121. package/src/createSchemaFromDrizzle.ts +2 -2
  122. package/src/createZeroDirectServer.ts +411 -0
  123. package/src/createZeroSQLiteServer.test.ts +28 -12
  124. package/src/createZeroSQLiteServer.ts +14 -481
  125. package/src/createZeroServer.test.ts +86 -2
  126. package/src/createZeroServerCore.ts +39 -343
  127. package/src/generate.test.ts +75 -1
  128. package/src/generate.ts +30 -4
  129. package/src/helpers/createMutators.ts +3 -3
  130. package/src/helpers/mutatorContext.ts +1 -1
  131. package/src/index.ts +1 -0
  132. package/src/server.ts +2 -0
  133. package/src/sqliteRuntime.ts +512 -0
  134. package/src/syncHost.test.ts +12 -5
  135. package/src/syncHost.ts +55 -16
  136. package/src/types.ts +21 -3
  137. package/src/vite-plugin.ts +1 -0
  138. package/test-fixtures/server-return-types.ts +20 -2
  139. package/types/asyncTasks.d.ts +7 -0
  140. package/types/asyncTasks.d.ts.map +1 -0
  141. package/types/createSchemaFromDrizzle.d.ts +2 -2
  142. package/types/createSchemaFromDrizzle.d.ts.map +1 -1
  143. package/types/createZeroDirectServer.d.ts +80 -0
  144. package/types/createZeroDirectServer.d.ts.map +1 -0
  145. package/types/createZeroSQLiteServer.d.ts +5 -30
  146. package/types/createZeroSQLiteServer.d.ts.map +1 -1
  147. package/types/createZeroServerCore.d.ts +30 -87
  148. package/types/createZeroServerCore.d.ts.map +1 -1
  149. package/types/generate.d.ts +2 -0
  150. package/types/generate.d.ts.map +1 -1
  151. package/types/helpers/createMutators.d.ts +3 -3
  152. package/types/helpers/createMutators.d.ts.map +1 -1
  153. package/types/index.d.ts +1 -0
  154. package/types/index.d.ts.map +1 -1
  155. package/types/server.d.ts +2 -0
  156. package/types/server.d.ts.map +1 -1
  157. package/types/sqliteRuntime.d.ts +71 -0
  158. package/types/sqliteRuntime.d.ts.map +1 -0
  159. package/types/syncHost.d.ts +10 -19
  160. package/types/syncHost.d.ts.map +1 -1
  161. package/types/types.d.ts +18 -2
  162. package/types/types.d.ts.map +1 -1
  163. package/types/vite-plugin.d.ts.map +1 -1
@@ -0,0 +1,438 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var sqliteRuntime_exports = {};
26
+ __export(sqliteRuntime_exports, {
27
+ createSQLiteDatabase: () => createSQLiteDatabase,
28
+ createZeroSQLiteTransaction: () => createZeroSQLiteTransaction,
29
+ defaultLedgerTables: () => defaultLedgerTables,
30
+ encodeSQLiteValue: () => encodeSQLiteValue,
31
+ persistAlreadyProcessedMutationResults: () => persistAlreadyProcessedMutationResults
32
+ });
33
+ module.exports = __toCommonJS(sqliteRuntime_exports);
34
+ var import_zero = require("@rocicorp/zero");
35
+ var import_bindings = require("@rocicorp/zero/bindings");
36
+ function _type_of(obj) {
37
+ "@swc/helpers - typeof";
38
+
39
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
40
+ }
41
+ function createSQLiteDatabase(options) {
42
+ return {
43
+ async transaction(callback, input) {
44
+ var committedLedgers = /* @__PURE__ */new Set();
45
+ var value = await options.transactionProvider(async function (executor) {
46
+ var attemptLedgers = /* @__PURE__ */new Set();
47
+ var ensureLedger = async function (upstreamSchema) {
48
+ var tables = options.ledgerTables(upstreamSchema);
49
+ var key2 = ledgerKey(tables);
50
+ if (options.initializedLedgers.has(key2) || attemptLedgers.has(key2)) {
51
+ return;
52
+ }
53
+ await createLedgerTables(executor, tables);
54
+ attemptLedgers.add(key2);
55
+ };
56
+ var transaction = createZeroSQLiteTransaction(options, executor, input);
57
+ var result = await callback(transaction, createLedgerHooks(options, executor, ensureLedger, input));
58
+ committedLedgers = attemptLedgers;
59
+ return result;
60
+ });
61
+ var _iteratorNormalCompletion = true,
62
+ _didIteratorError = false,
63
+ _iteratorError = void 0;
64
+ try {
65
+ for (var _iterator = committedLedgers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
66
+ var key = _step.value;
67
+ options.initializedLedgers.add(key);
68
+ }
69
+ } catch (err) {
70
+ _didIteratorError = true;
71
+ _iteratorError = err;
72
+ } finally {
73
+ try {
74
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
75
+ _iterator.return();
76
+ }
77
+ } finally {
78
+ if (_didIteratorError) {
79
+ throw _iteratorError;
80
+ }
81
+ }
82
+ }
83
+ return value;
84
+ }
85
+ };
86
+ }
87
+ function createZeroSQLiteTransaction(options, executor, input) {
88
+ var _options_encodeValue;
89
+ var transactionOptions = {
90
+ encodeValue: (_options_encodeValue = options.encodeValue) !== null && _options_encodeValue !== void 0 ? _options_encodeValue : encodeSQLiteValue,
91
+ schema: options.schema
92
+ };
93
+ var _input_clientID;
94
+ var clientID = (_input_clientID = input === null || input === void 0 ? void 0 : input.clientID) !== null && _input_clientID !== void 0 ? _input_clientID : "";
95
+ var _input_mutationID;
96
+ var mutationID = (_input_mutationID = input === null || input === void 0 ? void 0 : input.mutationID) !== null && _input_mutationID !== void 0 ? _input_mutationID : 0;
97
+ var mutate = new Proxy({}, {
98
+ get(_target, tableKey) {
99
+ var tableName = String(tableKey);
100
+ if (!options.schema.tables[tableName]) {
101
+ throw new Error(`unknown SQLite mutation table ${tableName}`);
102
+ }
103
+ return new Proxy({}, {
104
+ get(_innerTarget, kindKey) {
105
+ var kind = String(kindKey);
106
+ if (!isCrudKind(kind)) return;
107
+ return function (value) {
108
+ return executeCrud(transactionOptions, executor, tableName, kind, value);
109
+ };
110
+ }
111
+ });
112
+ }
113
+ });
114
+ var runQuery = function (ast, format, queryName) {
115
+ return Promise.resolve(executor.queryAst(ast, format, queryName));
116
+ };
117
+ var dbTransaction = {
118
+ wrappedTransaction: executor,
119
+ query: function (sql, args) {
120
+ return executor.query(sql, args);
121
+ },
122
+ runQuery
123
+ };
124
+ return {
125
+ clientID,
126
+ dbTransaction,
127
+ location: "server",
128
+ mutate,
129
+ mutationID,
130
+ query: transactionOptions.schema.enableLegacyQueries ? createLegacyQueryBuilder(transactionOptions.schema, function (query) {
131
+ var _internals_customQueryID;
132
+ var internals = (0, import_bindings.asQueryInternals)(query);
133
+ return runQuery(internals.ast, internals.format, (_internals_customQueryID = internals.customQueryID) === null || _internals_customQueryID === void 0 ? void 0 : _internals_customQueryID.name);
134
+ }) : void 0,
135
+ reason: "authoritative",
136
+ async run(query) {
137
+ var _internals_customQueryID;
138
+ var internals = (0, import_bindings.asQueryInternals)(query);
139
+ return runQuery(internals.ast, internals.format, (_internals_customQueryID = internals.customQueryID) === null || _internals_customQueryID === void 0 ? void 0 : _internals_customQueryID.name);
140
+ }
141
+ };
142
+ }
143
+ function isCrudKind(value) {
144
+ return value === "delete" || value === "insert" || value === "update" || value === "upsert";
145
+ }
146
+ async function executeCrud(options, executor, tableName, kind, raw) {
147
+ if (!raw || (typeof raw === "undefined" ? "undefined" : _type_of(raw)) !== "object" || Array.isArray(raw)) {
148
+ throw new Error(`${tableName}.${kind} expects an object`);
149
+ }
150
+ var table = options.schema.tables[tableName];
151
+ var values = Object.fromEntries(Object.entries(raw).filter(function (param) {
152
+ var [, value] = param;
153
+ return value !== void 0;
154
+ }));
155
+ var _iteratorNormalCompletion = true,
156
+ _didIteratorError = false,
157
+ _iteratorError = void 0;
158
+ try {
159
+ for (var _iterator = Object.keys(values)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
160
+ var columnName = _step.value;
161
+ if (!table.columns[columnName]) {
162
+ throw new Error(`unknown SQLite column ${tableName}.${columnName}`);
163
+ }
164
+ }
165
+ } catch (err) {
166
+ _didIteratorError = true;
167
+ _iteratorError = err;
168
+ } finally {
169
+ try {
170
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
171
+ _iterator.return();
172
+ }
173
+ } finally {
174
+ if (_didIteratorError) {
175
+ throw _iteratorError;
176
+ }
177
+ }
178
+ }
179
+ var primaryValues = table.primaryKey.map(function (columnName2) {
180
+ if (!(columnName2 in values)) {
181
+ throw new Error(`${tableName}.${kind} is missing primary key ${columnName2}`);
182
+ }
183
+ return encodeColumn(options, tableName, columnName2, values[columnName2]);
184
+ });
185
+ var primaryWhere = table.primaryKey.map(function (columnName2) {
186
+ return `${quoteSQLiteIdentifier(serverColumn(table, columnName2))} = ?`;
187
+ }).join(" AND ");
188
+ var _table_serverName;
189
+ var serverTableName = quoteSQLiteIdentifier((_table_serverName = table.serverName) !== null && _table_serverName !== void 0 ? _table_serverName : table.name);
190
+ if (kind === "delete") {
191
+ var _table_serverName1;
192
+ await executor.exec(`DELETE FROM ${serverTableName} WHERE ${primaryWhere}`, primaryValues, {
193
+ table: (_table_serverName1 = table.serverName) !== null && _table_serverName1 !== void 0 ? _table_serverName1 : table.name,
194
+ publicTable: tableName,
195
+ kind
196
+ });
197
+ return;
198
+ }
199
+ var columnNames = Object.keys(values);
200
+ if (columnNames.length === 0) {
201
+ throw new Error(`${tableName}.${kind} has no values`);
202
+ }
203
+ var serverColumns = columnNames.map(function (columnName2) {
204
+ return quoteSQLiteIdentifier(serverColumn(table, columnName2));
205
+ });
206
+ var params = columnNames.map(function (columnName2) {
207
+ return encodeColumn(options, tableName, columnName2, values[columnName2]);
208
+ });
209
+ var insert = `INSERT INTO ${serverTableName} (${serverColumns.join(", ")}) VALUES (${columnNames.map(function () {
210
+ return "?";
211
+ }).join(", ")})`;
212
+ if (kind === "insert") {
213
+ var _table_serverName2;
214
+ await executor.exec(insert, params, {
215
+ table: (_table_serverName2 = table.serverName) !== null && _table_serverName2 !== void 0 ? _table_serverName2 : table.name,
216
+ publicTable: tableName,
217
+ kind
218
+ });
219
+ return;
220
+ }
221
+ if (kind === "upsert") {
222
+ var mutableColumns = columnNames.filter(function (columnName2) {
223
+ return !table.primaryKey.includes(columnName2);
224
+ });
225
+ var conflictColumns = table.primaryKey.map(function (columnName2) {
226
+ return quoteSQLiteIdentifier(serverColumn(table, columnName2));
227
+ }).join(", ");
228
+ var conflictAction = mutableColumns.length === 0 ? "DO NOTHING" : `DO UPDATE SET ${mutableColumns.map(function (columnName2) {
229
+ var column = quoteSQLiteIdentifier(serverColumn(table, columnName2));
230
+ return `${column} = excluded.${column}`;
231
+ }).join(", ")}`;
232
+ var _table_serverName3;
233
+ await executor.exec(`${insert} ON CONFLICT (${conflictColumns}) ${conflictAction}`, params, {
234
+ table: (_table_serverName3 = table.serverName) !== null && _table_serverName3 !== void 0 ? _table_serverName3 : table.name,
235
+ publicTable: tableName,
236
+ kind
237
+ });
238
+ return;
239
+ }
240
+ var mutableColumns1 = columnNames.filter(function (columnName2) {
241
+ return !table.primaryKey.includes(columnName2);
242
+ });
243
+ if (mutableColumns1.length === 0) return;
244
+ var _table_serverName4;
245
+ await executor.exec(`UPDATE ${serverTableName} SET ${mutableColumns1.map(function (columnName2) {
246
+ return `${quoteSQLiteIdentifier(serverColumn(table, columnName2))} = ?`;
247
+ }).join(", ")} WHERE ${primaryWhere}`, [...mutableColumns1.map(function (columnName2) {
248
+ return encodeColumn(options, tableName, columnName2, values[columnName2]);
249
+ }), ...primaryValues], {
250
+ table: (_table_serverName4 = table.serverName) !== null && _table_serverName4 !== void 0 ? _table_serverName4 : table.name,
251
+ publicTable: tableName,
252
+ kind
253
+ });
254
+ }
255
+ function serverColumn(table, columnName) {
256
+ var column = table.columns[columnName];
257
+ if (!column) throw new Error(`unknown SQLite column ${table.name}.${columnName}`);
258
+ var _column_serverName;
259
+ return (_column_serverName = column.serverName) !== null && _column_serverName !== void 0 ? _column_serverName : columnName;
260
+ }
261
+ function encodeColumn(options, tableName, columnName, value) {
262
+ return options.encodeValue(value, {
263
+ column: options.schema.tables[tableName].columns[columnName],
264
+ columnName,
265
+ tableName
266
+ });
267
+ }
268
+ function createLegacyQueryBuilder(schema, run) {
269
+ var builder = (0, import_zero.createBuilder)(schema);
270
+ return new Proxy(builder, {
271
+ get(target, property) {
272
+ return makeRunnableQuery(Reflect.get(target, property, target), run);
273
+ }
274
+ });
275
+ }
276
+ function makeRunnableQuery(query, run) {
277
+ if (!isQueryBuilder(query)) return query;
278
+ return new Proxy(query, {
279
+ get(target, property) {
280
+ if (property === "run") return function () {
281
+ return run(target);
282
+ };
283
+ if (property === "materialize" || property === "preload") {
284
+ return function () {
285
+ throw new Error(`${String(property)}() is not supported in server transactions`);
286
+ };
287
+ }
288
+ var value = Reflect.get(target, property, target);
289
+ if (typeof value !== "function") return value;
290
+ return function () {
291
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
292
+ args[_key] = arguments[_key];
293
+ }
294
+ return makeRunnableQuery(Reflect.apply(value, target, args), run);
295
+ };
296
+ }
297
+ });
298
+ }
299
+ function isQueryBuilder(value) {
300
+ if (!value || (typeof value === "undefined" ? "undefined" : _type_of(value)) !== "object") return false;
301
+ try {
302
+ (0, import_bindings.asQueryInternals)(value);
303
+ return true;
304
+ } catch (e) {
305
+ return false;
306
+ }
307
+ }
308
+ function createLedgerHooks(options, executor, ensureLedger, input) {
309
+ var _input_upstreamSchema;
310
+ var upstreamSchema = (_input_upstreamSchema = input === null || input === void 0 ? void 0 : input.upstreamSchema) !== null && _input_upstreamSchema !== void 0 ? _input_upstreamSchema : "";
311
+ var _input_clientGroupID;
312
+ var clientGroupID = (_input_clientGroupID = input === null || input === void 0 ? void 0 : input.clientGroupID) !== null && _input_clientGroupID !== void 0 ? _input_clientGroupID : "";
313
+ var _input_clientID;
314
+ var clientID = (_input_clientID = input === null || input === void 0 ? void 0 : input.clientID) !== null && _input_clientID !== void 0 ? _input_clientID : "";
315
+ var tables = options.ledgerTables(upstreamSchema);
316
+ var clientsTable = quoteSQLiteIdentifier(tables.clients);
317
+ var mutationsTable = quoteSQLiteIdentifier(tables.mutations);
318
+ return {
319
+ async updateClientMutationID() {
320
+ var _rows_;
321
+ await ensureLedger(upstreamSchema);
322
+ var rows = await executor.query(`INSERT INTO ${clientsTable}
323
+ (clientGroupID, clientID, lastMutationID)
324
+ VALUES (?, ?, 1)
325
+ ON CONFLICT (clientGroupID, clientID)
326
+ DO UPDATE SET lastMutationID = lastMutationID + 1
327
+ RETURNING lastMutationID`, [clientGroupID, clientID]);
328
+ var lastMutationID = (_rows_ = rows[0]) === null || _rows_ === void 0 ? void 0 : _rows_.lastMutationID;
329
+ if (typeof lastMutationID !== "number" && (typeof lastMutationID === "undefined" ? "undefined" : _type_of(lastMutationID)) !== "bigint") {
330
+ throw new Error("SQLite mutation ledger returned no lastMutationID");
331
+ }
332
+ return {
333
+ lastMutationID
334
+ };
335
+ },
336
+ async writeMutationResult(result) {
337
+ await ensureLedger(upstreamSchema);
338
+ await executor.exec(`INSERT INTO ${mutationsTable}
339
+ (clientGroupID, clientID, mutationID, result)
340
+ VALUES (?, ?, ?, ?)`, [clientGroupID, result.id.clientID, result.id.id, JSON.stringify(result.result)]);
341
+ },
342
+ async deleteMutationResults(args) {
343
+ await ensureLedger(upstreamSchema);
344
+ if ("type" in args && args.type === "bulk") {
345
+ if (args.clientIDs.length === 0) return;
346
+ await executor.exec(`DELETE FROM ${mutationsTable}
347
+ WHERE clientGroupID = ?
348
+ AND clientID IN (${args.clientIDs.map(function () {
349
+ return "?";
350
+ }).join(", ")})`, [args.clientGroupID, ...args.clientIDs]);
351
+ return;
352
+ }
353
+ await executor.exec(`DELETE FROM ${mutationsTable}
354
+ WHERE clientGroupID = ?
355
+ AND clientID = ?
356
+ AND mutationID <= ?`, [args.clientGroupID, args.clientID, args.upToMutationID]);
357
+ }
358
+ };
359
+ }
360
+ async function persistAlreadyProcessedMutationResults(options, param) {
361
+ var {
362
+ clientGroupID,
363
+ mutations,
364
+ upstreamSchema
365
+ } = param;
366
+ var tables = options.ledgerTables(upstreamSchema);
367
+ var table = quoteSQLiteIdentifier(tables.mutations);
368
+ var key = ledgerKey(tables);
369
+ await options.transactionProvider(async function (executor) {
370
+ if (!options.initializedLedgers.has(key)) {
371
+ await createLedgerTables(executor, tables);
372
+ }
373
+ var _iteratorNormalCompletion = true,
374
+ _didIteratorError = false,
375
+ _iteratorError = void 0;
376
+ try {
377
+ for (var _iterator = mutations[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
378
+ var mutation = _step.value;
379
+ await executor.exec(`INSERT INTO ${table}
380
+ (clientGroupID, clientID, mutationID, result)
381
+ VALUES (?, ?, ?, ?)
382
+ ON CONFLICT (clientGroupID, clientID, mutationID) DO NOTHING`, [clientGroupID, mutation.id.clientID, mutation.id.id, JSON.stringify(mutation.result)]);
383
+ }
384
+ } catch (err) {
385
+ _didIteratorError = true;
386
+ _iteratorError = err;
387
+ } finally {
388
+ try {
389
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
390
+ _iterator.return();
391
+ }
392
+ } finally {
393
+ if (_didIteratorError) {
394
+ throw _iteratorError;
395
+ }
396
+ }
397
+ }
398
+ });
399
+ options.initializedLedgers.add(key);
400
+ }
401
+ async function createLedgerTables(executor, tables) {
402
+ await executor.exec(`CREATE TABLE IF NOT EXISTS ${quoteSQLiteIdentifier(tables.clients)} (
403
+ clientGroupID TEXT NOT NULL,
404
+ clientID TEXT NOT NULL,
405
+ lastMutationID INTEGER NOT NULL,
406
+ PRIMARY KEY (clientGroupID, clientID)
407
+ )`);
408
+ await executor.exec(`CREATE TABLE IF NOT EXISTS ${quoteSQLiteIdentifier(tables.mutations)} (
409
+ clientGroupID TEXT NOT NULL,
410
+ clientID TEXT NOT NULL,
411
+ mutationID INTEGER NOT NULL,
412
+ result TEXT NOT NULL,
413
+ PRIMARY KEY (clientGroupID, clientID, mutationID)
414
+ )`);
415
+ }
416
+ function ledgerKey(tables) {
417
+ return `${tables.clients}\0${tables.mutations}`;
418
+ }
419
+ function defaultLedgerTables(upstreamSchema) {
420
+ var prefix = upstreamSchema ? `${upstreamSchema}_` : "";
421
+ return {
422
+ clients: `${prefix}clients`,
423
+ mutations: `${prefix}mutations`
424
+ };
425
+ }
426
+ function encodeSQLiteValue(value, param) {
427
+ var {
428
+ column
429
+ } = param;
430
+ if (value === null) return null;
431
+ if (column.type === "boolean") return value ? 1 : 0;
432
+ if (column.type === "json") return JSON.stringify(value);
433
+ return value;
434
+ }
435
+ function quoteSQLiteIdentifier(value) {
436
+ return `"${value.replaceAll('"', '""')}"`;
437
+ }
438
+ //# sourceMappingURL=sqliteRuntime.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","sqliteRuntime_exports","__export","createSQLiteDatabase","createZeroSQLiteTransaction","defaultLedgerTables","encodeSQLiteValue","persistAlreadyProcessedMutationResults","module","exports","import_zero","require","import_bindings","_type_of","obj","Symbol","constructor","options","transaction","callback","input","committedLedgers","Set","transactionProvider","executor","attemptLedgers","ensureLedger","upstreamSchema","tables","ledgerTables","key2","ledgerKey","initializedLedgers","has","createLedgerTables","add","result","createLedgerHooks","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","key","err","return","_options_encodeValue","transactionOptions","encodeValue","schema","_input_clientID","clientID","_input_mutationID","mutationID","mutate","Proxy","get","_target","tableKey","tableName","String","Error","_innerTarget","kindKey","kind","isCrudKind","executeCrud","runQuery","ast","format","queryName","Promise","resolve","queryAst","dbTransaction","wrappedTransaction","query","sql","args","location","enableLegacyQueries","createLegacyQueryBuilder","_internals_customQueryID","internals","asQueryInternals","customQueryID","name","reason","run","raw","Array","isArray","table","values","Object","fromEntries","entries","filter","param","keys","columnName","columns","primaryValues","primaryKey","map","columnName2","encodeColumn","primaryWhere","quoteSQLiteIdentifier","serverColumn","join","_table_serverName","serverTableName","serverName","_table_serverName1","exec","publicTable","columnNames","length","serverColumns","params","insert","_table_serverName2","mutableColumns","includes","conflictColumns","conflictAction","column","_table_serverName3","mutableColumns1","_table_serverName4","_column_serverName","builder","createBuilder","target","property","makeRunnableQuery","Reflect","isQueryBuilder","_len","arguments","_key","apply","e","_input_upstreamSchema","_input_clientGroupID","clientGroupID","clientsTable","clients","mutationsTable","mutations","updateClientMutationID","_rows_","rows","lastMutationID","writeMutationResult","id","JSON","stringify","deleteMutationResults","type","clientIDs"],"sources":["../../src/sqliteRuntime.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,qBAAA;AAAAC,QAAA,CAAAD,qBAAA;EAAAE,oBAAA,EAAAA,CAAA,KAAAA,oBAAA;EAAAC,2BAAA,EAAAA,CAAA,KAAAA,2BAAA;EAAAC,mBAAA,EAAAA,CAAA,KAAAA,mBAAA;EAAAC,iBAAA,EAAAA,CAAA,KAAAA,iBAAA;EAAAC,sCAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAb,YAA8B,CAAAK,qBAAA;AAC9B,IAAAS,WAAA,GAAAC,OAAiC;AA2F1B,IAAAC,eAAS,GAAAD,OAAA,CACd,yBACoB;AACpB,SAAOE,SAAAC,GAAA;EAAA,uBAEH;;EAMA,OAAAA,GAAI,WAAAC,MAAmB,oBAAID,GAAA,CAAYE,WAAA,KAAAD,MAAA,qBAAAD,GAAA;AACvC;AACE,SAAAX,oBAAMA,CAAAc,OAAiB;EACvB;IACE,MAAAC,WAAMA,CAAAC,QAAS,EAAAC,KAAQ;MACvB,IAAAC,gBAAY,kBAAgB,IAAAC,GAAA;MAC5B,IAAAtB,KAAI,SAAQiB,OAAA,CAAAM,mBAA0B,iBAAKC,QAAsB;QAC/D,IAAAC,cAAA,sBAAAH,GAAA;QAAA,IACFI,YAAA,kBAAAA,CAAAC,cAAA;UACA,IAAAC,MAAM,GAAAX,OAAA,CAAAY,YAAmB,CAAAF,cAAgB;UACzC,IAAAG,IAAA,GAAAC,SAAmB,CAAAH,MAAG;UACxB,IAAAX,OAAA,CAAAe,kBAAA,CAAAC,GAAA,CAAAH,IAAA,KAAAL,cAAA,CAAAQ,GAAA,CAAAH,IAAA;YACA;UACA;UACE,MAAAI,kBAAA,CAAAV,QAAA,EAAAI,MAAA;UACAH,cAAA,CAAAU,GAAkB,CAAAL,IAAA;QACpB;QACA,IAAAZ,WAAA,GAAAd,2BAAmB,CAAAa,OAAA,EAAAO,QAAA,EAAAJ,KAAA;QACnB,IAAAgB,MAAO,SAAAjB,QAAA,CAAAD,WAAA,EAAAmB,iBAAA,CAAApB,OAAA,EAAAO,QAAA,EAAAE,YAAA,EAAAN,KAAA;QACRC,gBAAA,GAAAI,cAAA;QACD,OAAAW,MAAW;MACX;MACF,IAAAE,yBAAA;QAAAC,iBAAA;QAAAC,cAAA;MACF;QACF,SAAAC,SAAA,GAAApB,gBAAA,CAAAN,MAAA,CAAA2B,QAAA,KAAAC,KAAA,IAAAL,yBAAA,IAAAK,KAAA,GAAAF,SAAA,CAAAG,IAAA,IAAAC,IAAA,GAAAP,yBAAA;UAEgB,IAAAQ,GAAA,GAAAH,KAAA,CAAA3C,KAAA;UAKRiB,OAAA,CAAAe,kBAAqB,CAAAG,GAAA,CAAAW,GAAA;QACzB;MACA,SAAQC,GAAA,EAAQ;QAClBR,iBAAA;QACMC,cAAW,GAAAO,GAAO;MACxB,UAAM;QACA;UACH,KAAAT,yBAAA,IAAAG,SAAA,CAAAO,MAAA;YACDP,SAAA,CAAAO,MAAA;UACM;QACF,UAAM;UACN,IAAKT,iBAAe;YAClB,MAAMC,cAAU;UAClB;QACA;MAAW;MACR,OACDxC,KAAA;IAAA;EAEI;AACA;AACA,SAAAI,2BACEA,CAAAa,OAAY,EAAAO,QAAA,EAAAJ,KAAA;EAAoD,IAAA6B,oBACpE;EAAA,IAAAC,kBACF;IAAAC,WACF,GAAAF,oBAAA,GAAAhC,OAAA,CAAAkC,WAAA,cAAAF,oBAAA,cAAAA,oBAAA,GAAA3C,iBAAA;IAAA8C,MACF,EAAAnC,OAAA,CAAAmC;EAAA;EAEJ,IAAAC,eAAA;EAEA,IAAAC,QAAM,IAAAD,eAGJ,GAAAjC,KAAA,SACqB,IAAAA,KAAQ,KAAQ,SAAS,SAASA,KAAK,CAAAkC,QAAQ,UAAU,IAAAD,eAAA,cAAAA,eAAA;EAChF,IAAAE,iBAAM;EAAgB,IACpBC,UAAA,IAAAD,iBAAoB,GAAAnC,KAAA,aAAAA,KAAA,uBAAAA,KAAA,CAAAoC,UAAA,cAAAD,iBAAA,cAAAA,iBAAA;EAAA,IACpBE,MAAQ,OAAaC,KAAA,EAAoB;IACzCC,IAAAC,OAAA,EAAAC,QAAA;MACF,IAAAC,SAAA,GAAAC,MAAA,CAAAF,QAAA;MAEA,IAAO,CAAA5C,OAAA,CAAAmC,MAAA,CAAAxB,MAAA,CAAAkC,SAAA;QACL,UAAAE,KAAA,kCAAAF,SAAA;MACA;MACA,WAAUJ,KAAA;QACVC,IAAAM,YAAA,EAAAC,OAAA;UACA,IAAAC,IAAA,GAAAJ,MAAA,CAAAG,OAAA;UACA,IAAO,CAAAE,UAAA,CAAAD,IAAmB;UAEpB,OAAM,UAAAnE,KAAY;YAClB,OAAOqE,WAAS,CAAAnB,kBAAyB,EAAA1B,QAAQ,EAAAsC,SAAU,EAAAK,IAAA,EAAAnE,KAAe,CAAI;UAEhF;QACJ;MACA;IACE;EACA;EAA8E,IAChFsE,QAAA,YAAAA,CAAAC,GAAA,EAAAC,MAAA,EAAAC,SAAA;IACF,OAAAC,OAAA,CAAAC,OAAA,CAAAnD,QAAA,CAAAoD,QAAA,CAAAL,GAAA,EAAAC,MAAA,EAAAC,SAAA;EACF;EAIA,IAAAI,aAAS,GAAW;IAClBC,kBACY,EAAAtD,QAAY;IAE1BuD,KAAA,WAAAA,CAAAC,GAAA,EAAAC,IAAA;MAEA,OAAAzD,QAAe,CAAAuD,KACb,CAAAC,GAAA,EAAAC,IACA;IAKA;IACEX;EACF;EAEA,OAAM;IACNhB,QAAM;IACJuB,aAAO;IAAwCK,QACzC,UAAW;IACjBzB,MAAA;IACFD,UAAA;IACAuB,KAAA,EAAA7B,kBAAyB,CAAAE,MAAO,CAAA+B,mBAAc,GAAAC,wBAAA,CAAAlC,kBAAA,CAAAE,MAAA,YAAA2B,KAAA;MAC5C,IAAKM,wBAAwB;MAC3B,IAAAC,SAAU,GAAM,IAAA1E,eAAA,CAAA2E,gBAAkC,EAAIR,KAAA;MACxD,OAAAT,QAAA,CAAAgB,SAAA,CAAAf,GAAA,EAAAe,SAAA,CAAAd,MAAA,GAAAa,wBAAA,GAAAC,SAAA,CAAAE,aAAA,cAAAH,wBAAA,uBAAAA,wBAAA,CAAAI,IAAA;IACF;IAEAC,MAAM,iBAAgB;IACpB,MAAMC,IAAAZ,KAAA;MACJ,IAAAM,wBAA4B;MAC9B,IAAAC,SAAA,OAAA1E,eAAA,CAAA2E,gBAAA,EAAAR,KAAA;MACA,OAAOT,QAAA,CAAAgB,SAAa,CAAAf,GAAS,EAAAe,SAAW,CAAAd,MAAA,GAAYa,wBAAkB,GAAAC,SAAA,CAAAE,aAAA,cAAAH,wBAAA,uBAAAA,wBAAA,CAAAI,IAAA;IACvE;EACD;AAGA;AAEA,SAAIrB,UAASA,CAAApE,KAAU;EACrB,OAAAA,KAAM,KAAS,YAAAA,KAAA,iBAAAA,KAAA,iBAAAA,KAAA;AAAA;AACuC,eACpDqE,YAAApD,OAAA,EAAAO,QAAA,EAAAsC,SAAA,EAAAK,IAAA,EAAAyB,GAAA;EAAA,IACA,CAAAA,GAAE,KAAO,OAAMA,GAAA,gBAAoB,cAAM,GAAA/E,QAAa,CAAA+E,GAAA,CAAW,MAAK,YAAAC,KAAA,CAAAC,OAAA,CAAAF,GAAA;IACxE,UAAA5B,KAAA,IAAAF,SAAA,IAAAK,IAAA;EACA;EACF,IAAA4B,KAAA,GAAA9E,OAAA,CAAAmC,MAAA,CAAAxB,MAAA,CAAAkC,SAAA;EAEA,IAAAkC,MAAM,GAAAC,MAAA,CAAcC,WAAO,CAAKD,MAAM,CAAAE,OAAA,CAAAP,GAAA,EAAAQ,MAAA,WAAAC,KAAA;IACtC,IAAI,GAAArG,KAAA,IAAYqG,KAAA;IACd,OAAMrG,KAAI,KAAM,KAAG;EACrB;EAEA,IAAAsC,yBAAsB,OAAY;IAAAC,iBAAA;IAAAC,cAAA;EAAA,IAAK;IAEvC,SAAAC,SAAA,GAAAwD,MAAA,CAAAK,IAAA,CAAAN,MAAA,EAAAjF,MAAA,CAAA2B,QAAA,KAAAC,KAAA,IAAAL,yBAAA,IAAAK,KAAA,GAAAF,SAAA,CAAAG,IAAA,IAAAC,IAAA,GAAAP,yBAAA;MACA,IAAMiE,UAAS,GAAA5D,KAAA,CAAY3C,KAAA;MAAK,KAAA+F,KAAA,CAAAS,OAC9B,CAAAD,UAAa;QACf,UAAAvC,KAAA,0BAAAF,SAAA,IAAAyC,UAAA;MACA;IACE;EACF,CAAC,QAAAxD,GAAA,EAAa;IAEdR,iBAAa,OAAU;IACrBC,cAAM,GAASO,GAAK;EAAgB,UAClC;IAAiC,IACjC;MACA,KAAAT,yBAAA,IAAAG,SAAA,CAAAO,MAAA;QACDP,SAAA,CAAAO,MAAA;MACD;IACF;MAEI,IAAAT,iBAAmB;QACrB,MAAMC,cAAiB;MACrB;IACF;EACA;EAGA,IAAAiE,aAAM,GAAAV,KACJ,CAAAW,UAAA,CAAAC,GAAA,CAAe,UAAAC,WACX;IAGI,MAAAA,WAAe,IAAAZ,MAAA;MACf,UAAUhC,KAAA,CAAM,GAAAF,SAAA,IAAeK,IAAA,2BAAMyC,WAAA;IACvC;IAER,OAAMC,YAAS,CAAA5F,OAAA,EAAA6C,SAAA,EAAA8C,WAAA,EAAAZ,MAAA,CAAAY,WAAA;EAAA;EAC+C,IAC5DE,YAAA,GAAAf,KAAA,CAAAW,UAAA,CAAAC,GAAA,WAAAC,WAAA;IAAA,OACE,GAAAG,qBAA2B,CAAAC,YAAY,CAAAjB,KAAA,EAAAa,WAAa,QAAW;EAAK,EACxE,CAAAK,IAAA;EACA,IAAAC,iBAAA;EACF,IAAAC,eAAA,GAAAJ,qBAAA,EAAAG,iBAAA,GAAAnB,KAAA,CAAAqB,UAAA,cAAAF,iBAAA,cAAAA,iBAAA,GAAAnB,KAAA,CAAAN,IAAA;EAEA,IAAAtB,IAAM,eAAiB;IACrB,IAACkD,kBAAgB;IACnB,MAAA7F,QAAA,CAAA8F,IAAA,gBAAAH,eAAA,UAAAL,YAAA,IAAAL,aAAA;MACIV,KAAA,GAAAsB,kBAA0B,GAAGtB,KAAA,CAAAqB,UAAA,cAAAC,kBAAA,cAAAA,kBAAA,GAAAtB,KAAA,CAAAN,IAAA;MACjC8B,WAAe,EAAAzD,SAAA;MACbK;IACG,EACC;IACF;EACiC;EACnC,IACEqD,WAAG,GAAAvB,MAAe,CAAAK,IAAA,CAAAN,MAAA;EAAA,IAAAwB,WAAK,CAAAC,MACrB;IAA+D,MACjE,IAAAzD,KAAA,IAAAF,SAAA,IAAAK,IAAA;EAAA;EACG,IACLuD,aAAA,GAAAF,WAAA,CAAAb,GAAA,WAAAC,WAAA;IACA,OAAEG,qBAAa,CAAcC,YAAY,CAAAjB,KAAA,EAAAa,WAAa;EACxD;EACF,IAAAe,MAAA,GAAAH,WAAA,CAAAb,GAAA,WAAAC,WAAA;IAEA,OAASC,YAAa,CAAA5F,OAAqC,EAAA6C,SAAoB,EAAA8C,WAAA,EAAAZ,MAAA,CAAAY,WAAA;EAC7E;EACA,IAAIgB,MAAC,GAAQ,eAAUT,eAAM,KAAAO,aAA+B,CAAAT,IAAI,KAAI,cAAYO,WAAA,CAAAb,GAAA;IAChF,OAAO;EACT,GAAAM,IAAA;EAEA,IAAA9C,IAAS,aACP;IAKA,IAAA0D,kBAAe;IACb,MAAArG,QAAQ,CAAA8F,IAAQ,CAAAM,MAAO,EAAAD,MAAO;MAC9B5B,KAAA,GAAA8B,kBAAA,GAAA9B,KAAA,CAAAqB,UAAA,cAAAS,kBAAA,cAAAA,kBAAA,GAAA9B,KAAA,CAAAN,IAAA;MACA8B,WAAA,EAAAzD,SAAA;MACDK;IACH;IAEA;EAIE;EACA,IAAAA,IAAO,KAAI,QAAM;IACf,IAAI2D,cAAQ,GAAAN,WAAU,CAAApB,MAAA,WAAAQ,WAAA;MACpB,OAAO,CAAAb,KAAA,CAAAW,UAAA,CAAkBqB,QAAQ,CAAAnB,WAAY;IAC/C;IACD,IAAAoB,eAAA,GAAAjC,KAAA,CAAAW,UAAA,CAAAC,GAAA,WAAAC,WAAA;MACH,OAAAG,qBAAA,CAAAC,YAAA,CAAAjB,KAAA,EAAAa,WAAA;IAEA,GAAAK,IAAS;IAIP,IAAKgB,cAAe,GAAAH,cAAe,CAAAL,MAAA,yCAAAK,cAAA,CAAAnB,GAAA,WAAAC,WAAA;MACnC,IAAOsB,MAAI,GAAMnB,qBAAiB,CAAAC,YAAA,CAAAjB,KAAA,EAAAa,WAAA;MAChC,OAAI,GAAQsB,MAAA,eAAUA,MAAA;IACpB,GAAAjB,IAAI;IACJ,IAAAkB,kBAAiB;IACf,MAAA3G,QAAO,CAAA8F,IAAM,IAAAM,MAAA,iBAAAI,eAAA,KAAAC,cAAA,IAAAN,MAAA;MACX5B,KAAA,GAAAoC,kBAAmB,GAAApC,KAAO,CAAAqB,UAAS,cAAAe,kBAAA,UAA4C,IAAAA,kBAAA,GAAApC,KAAA,CAAAN,IAAA;MAAA8B,WACjF,EAAAzD,SAAA;MACFK;IACA;IACA;EACA;EAC2D,IAC7DiE,eAAA,GAAAZ,WAAA,CAAApB,MAAA,WAAAQ,WAAA;IACD,QAAAb,KAAA,CAAAW,UAAA,CAAAqB,QAAA,CAAAnB,WAAA;EACH;EAEA,IAAAwB,eAAS,CAAAX,MAAe,KAAgB;EACtC,IAAIY,kBAAiB;EACrB,MAAI7G,QAAA,CAAA8F,IAAA,WAAAH,eAAA,QAAAiB,eAAA,CAAAzB,GAAA,WAAAC,WAAA;IACF,UAAAG,qBAAA,CAAAC,YAA+B,CAAAjB,KAAA,EAAAa,WAAA;EAC/B,GAAAK,IAAA,KAAO,WAAAH,YAAA,KACT,GAAAsB,eAAQ,CAAAzB,GAAA,WAAAC,WAAA;IACN,OAAOC,YAAA,CAAA5F,OAAA,EAAA6C,SAAA,EAAA8C,WAAA,EAAAZ,MAAA,CAAAY,WAAA;EACT,IACF,GAAAH,aAAA,CAEA;IAMEV,KAAM,GAAAsC,kBAAiB,GAAOtC,KAAA,CAAAqB,UAAA,MAAkB,QAAAiB,kBAAA,cAAAA,kBAAA,GAAAtC,KAAA,CAAAN,IAAA;IAChD8B,WAAM,EAAAzD,SAAgB;IACtBK;EACA;AACA;AACA,SAAM6C,aAAAjB,KAAiB,EAAAQ,UAAA;EAEvB,IAAA2B,MAAO,GAAAnC,KAAA,CAAAS,OAAA,CAAAD,UAAA;EAAA,IACL,CAAA2B,MAAM,YAAAlE,KAAA,0BAAyB+B,KAAA,CAAAN,IAAA,IAAAc,UAAA;EAC7B,IAAA+B,kBAAM;EACN,QAAAA,kBAAmB,GAAAJ,MAAS,CAAAd,UAAA,cAAAkB,kBAAA,cAAAA,kBAAA,GAAA/B,UAAA;AAAA;AACC,SAAAM,aAAA5F,OAAA,EAAA6C,SAAA,EAAAyC,UAAA,EAAAvG,KAAA;EAAA,OAAAiB,OAAA,CAAAkC,WAAA,CAAAnD,KAAA;IAAAkI,MAAA,EAAAjH,OAAA,CAAAmC,MAAA,CAAAxB,MAAA,CAAAkC,SAAA,EAAA0C,OAAA,CAAAD,UAAA;IAAAA,UAAA;IAAAzC;EAAA;AAMH;AAE1B,SAAAsB,wBAAuBA,CAAKhC,MAAI,EAAAuC,GAAA;EAChC,IAAA4C,OAAI,IAAO,GAAA7H,WAAA,CAAA8H,aAAmB,EAAApF,MAAY;EACxC,WAAAM,KAAU,CAAA6E,OAAM;IAAmD5E,GACrEA,CAAA8E,MAAA,EAAAC,QAAA;MACA,OAAOC,iBAAiB,CAAAC,OAAA,CAAAjF,GAAA,CAAA8E,MAAA,EAAAC,QAAA,EAAAD,MAAA,GAAA9C,GAAA;IAC1B;EAAA,EACA;AACE;AACA,SAAAgD,iBAAeA,CAAA5D,KAAA,EAAAY,GAAA;EAAA,KAAAkD,cACb,CAAA9D,KAAe,UAAcA,KAAA;EAAA,WAAArB,KAAA,CAAAqB,KAAA;IAAApB,IAAA8E,MAAA,EAAAC,QAAA;MAAA,IAG5BA,QAAA,UAAe,SAAU,YAAU;QACtC,OAAA/C,GAAA,CAAA8C,MAAA;MACF;MACA,IAAMC,QAAA,kBAAsB,IAAMA,QAAA;QAChC,OAAM,YAAa;UACf,UAAU1E,KAAA,IAAQD,MAAK,CAAA2E,QAAS,6CAAQ;QAC1C;MACA;MAAe,IACb1I,KAAA,GAAA4I,OAAe,CAAAjF,GAAA,CAAA8E,MAAA,EAAAC,QAAc,EAAAD,MAAA;MAAA,WAAAzI,KAAA,wBAAAA,KAAA;MAAA;QAEiC,KAC7D,IAAK8I,IAAA,GAAAC,SAAe,CAAGtB,MAAK,EAAAxC,IAAA,GAAS,IAAAY,KAAA,CAAAiD,IAAA,GAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;UACxC/D,IAAA,CAAA+D,IAAA,IAAAD,SAAA,CAAAC,IAAA;QACA;QACF,OAAAL,iBAAA,CAAAC,OAAA,CAAAK,KAAA,CAAAjJ,KAAA,EAAAyI,MAAA,EAAAxD,IAAA,GAAAU,GAAA;MACA;IAAe;EACgB;AAAA;AAAA,SAAAkD,eAAA7I,KAAA;EAAA,KAAAA,KAI5B,IAAK,QAAAA,KAAe,KAAK,WAAU,cAAK,GAAAa,QAAc,CAAAb,KAAA;EAAA,IACzD;IACF,IAAAY,eAAA,CAAA2E,gBAAA,EAAAvF,KAAA;IACF;EACF,SAAAkJ,CAAA;IAEA,YAAsB;EAIpB;AACA;AACA,SAAM7G,iBAAgBA,CAAApB,OAAM,EAAAO,QAAA,EAAAE,YAAA,EAAAN,KAAA;EAC5B,IAAA+H,qBAAc;EACZ,IAAAxH,cAAa,IAAAwH,qBAA0B,GAAG/H,KAAA,aAAAA,KAAA,uBAAAA,KAAA,CAAAO,cAAA,cAAAwH,qBAAA,cAAAA,qBAAA;EACxC,IAAAC,oBAAM;EAAmC,IAC3CC,aAAA,IAAAD,oBAAA,GAAAhI,KAAA,aAAAA,KAAA,uBAAAA,KAAA,CAAAiI,aAAA,cAAAD,oBAAA,cAAAA,oBAAA;EACA,IAAA/F,eAAW;EACT,IAAAC,QAAM,IAAAD,eAAS,GAAAjC,KAAA,aAAAA,KAAA,uBAAAA,KAAA,CAAAkC,QAAA,cAAAD,eAAA,cAAAA,eAAA;EAAA,IAAAzB,MACb,GAAAX,OAAA,CAAeY,YAAK,CAAAF,cAAA;EAAA,IAAA2H,YAAA,GAAAvC,qBAAA,CAAAnF,MAAA,CAAA2H,OAAA;EAAA,IAAAC,cAAA,GAAAzC,qBAAA,CAAAnF,MAAA,CAAA6H,SAAA;EAAA;IAAA,MAIpBC,uBAAA;MAAA,IACEC,MAAA;MAAA,MACAjI,YAAY,CAAAC,cAAA;MAAA,IACZiI,IAAA,SAAYpI,QAAA,CAAAuD,KAAA,gBAAAuE,YAAA;AAAA;AACkB;AAChC;AACF;AACF,kCACD,GACDD,aAAQ,EACV/F,QAAA,CAEA;MAIE,IAAMuG,cAAS,IAAAF,MAAA,GAAAC,IAAA,iBAAAD,MAAA,uBAAAA,MAAA,CAAAE,cAAA;MACb,WAAAA,cAAA,KAA8B,oBAAsBA,cAAc,KAAC,4BAAAhJ,QAAA,CAAAgJ,cAAA;QAAA,UAAA7F,KAAA;MAAA;MAAA;QAAA6F;MAAA;IAMrE;IACA,MAAMC,mBAASA,CAAA1H,MAAA;MACb,MAAAV,YAAA,CAAAC,cAA8B;MAAuC,MAAAH,QAAA,CAAA8F,IAAA,gBAAAkC,cAAA;AAAA;AAAA,gCAAAH,aAAA,EAAAjH,MAAA,CAAA2H,EAAA,CAAAzG,QAAA,EAAAlB,MAAA,CAAA2H,EAAA,CAAAA,EAAA,EAOvEC,IAAA,CAAAC,SAAA,CAAA7H,MAAA,CAAAA,MAAA,EACF;IAEA;IACE,MAAO8H,qBAAsBA,CAAAjF,IAAA,EAAO;MACtC,MAAAvD,YAAA,CAAAC,cAAA;MAEO,IAAS,UAAAsD,IAAA,IAAAA,IAAoB,CAAAkF,IAAA,WAA4C;QACxE,IAAAlF,IAAA,CAASmF,SAAA,CAAA3C,MAAA,KAAoB;QACnC,MAAOjG,QAAA,CAAA8F,IAAA,gBAAAkC,cAAA;AAAA;AACa,gCACEvE,IAAA,CAAAmF,SAAA,CAAAzD,GAAA;UACtB;QACF,GAAAM,IAAA,YAEgBhC,IAAA,CAAAoE,aAAkB,EAC5B,GAAApE,IAAU,CAAAmF,SAAM,CAChB;QACA;MACJ;MACF,MAAA5I,QAAA,CAAA8F,IAAA,gBAAAkC,cAAA;AAEA;AACE;AACF,kC","ignoreList":[]}
@@ -28,8 +28,8 @@ __export(syncHost_exports, {
28
28
  module.exports = __toCommonJS(syncHost_exports);
29
29
  var import_bindings = require("@rocicorp/zero/bindings");
30
30
  var import_createPermissions = require("./createPermissions.cjs");
31
- var import_createZeroServerCore = require("./createZeroServerCore.cjs");
32
- var import_createZeroSQLiteServer = require("./createZeroSQLiteServer.cjs");
31
+ var import_createZeroDirectServer = require("./createZeroDirectServer.cjs");
32
+ var import_sqliteRuntime = require("./sqliteRuntime.cjs");
33
33
  var import_createMutators = require("./helpers/createMutators.cjs");
34
34
  var import_mutatorContext = require("./helpers/mutatorContext.cjs");
35
35
  var import_queryContext = require("./helpers/queryContext.cjs");
@@ -63,9 +63,14 @@ function createZeroSyncHostAdapter({
63
63
  for (const mutatorName of Object.keys(model.mutate ?? {})) {
64
64
  mutators[`${modelName}|${mutatorName}`] = async (executor, args, context) => {
65
65
  const authData = mapAuthData(context.claims);
66
- const asyncTasks = [];
66
+ const asyncTaskEntries = [];
67
67
  const modelMutators = (0, import_createMutators.createMutators)({
68
- asyncTasks,
68
+ enqueueTask(task, opts) {
69
+ asyncTaskEntries.push({
70
+ task,
71
+ barrier: opts?.barrier === true
72
+ });
73
+ },
69
74
  authData,
70
75
  can: permissions.can,
71
76
  createServerActions: options.createServerActions,
@@ -77,7 +82,7 @@ function createZeroSyncHostAdapter({
77
82
  const mutation = modelMutators[modelName]?.[mutatorName];
78
83
  if (!mutation) throw new Error(`unknown on-zero mutator: ${modelName}|${mutatorName}`);
79
84
  const mutationID = numericMutationID(context.mutationID);
80
- const onZeroTransaction = (0, import_createZeroSQLiteServer.createZeroSQLiteTransaction)(transactionOptions, toSQLiteExecutor(executor), {
85
+ const onZeroTransaction = (0, import_sqliteRuntime.createZeroSQLiteTransaction)(transactionOptions, toSQLiteExecutor(executor), {
81
86
  clientGroupID: "orez-sync-host",
82
87
  clientID: context.clientID ?? "",
83
88
  mutationID,
@@ -88,17 +93,26 @@ function createZeroSyncHostAdapter({
88
93
  } catch (error) {
89
94
  throw asMutationApplicationError(error);
90
95
  }
91
- for (const task of asyncTasks) {
96
+ for (const {
97
+ task
98
+ } of asyncTaskEntries) {
92
99
  context.defer(() => (0, import_mutatorContext.runWithAuthScope)(authData, task));
93
100
  }
94
101
  };
95
102
  }
96
103
  }
97
104
  mutators._zero_cleanupResults = async () => {};
98
- const direct = (0, import_createZeroSQLiteServer.createZeroSQLiteServer)({
105
+ const transactionProvider = work => transaction(executor => work(toSQLiteExecutor(executor)));
106
+ const directDatabaseOptions = {
107
+ encodeValue: encodeValue ?? import_sqliteRuntime.encodeSQLiteValue,
108
+ initializedLedgers: /* @__PURE__ */new Set(),
109
+ ledgerTables: import_sqliteRuntime.defaultLedgerTables,
110
+ schema: options.schema,
111
+ transactionProvider
112
+ };
113
+ const direct = (0, import_createZeroDirectServer.createZeroDirectServer)({
99
114
  ...options,
100
- encodeValue,
101
- transactionProvider: work => transaction(executor => work(toSQLiteExecutor(executor)))
115
+ createDatabase: () => (0, import_sqliteRuntime.createSQLiteDatabase)(directDatabaseOptions)
102
116
  });
103
117
  return {
104
118
  mutators: Object.freeze(mutators),
@@ -109,7 +123,7 @@ function createZeroSyncHostAdapter({
109
123
  const authData = mapAuthData(claims);
110
124
  const query = await (0, import_queryContext.runWithQueryContext)({
111
125
  authData
112
- }, () => (0, import_createZeroServerCore.resolveServerQuery)({
126
+ }, () => (0, import_createZeroDirectServer.resolveServerQuery)({
113
127
  authData,
114
128
  args: args[0],
115
129
  name,
@@ -134,8 +148,8 @@ function defaultMapAuthData(claims) {
134
148
  }
135
149
  function toSQLiteExecutor(executor) {
136
150
  return {
137
- exec(sql, params) {
138
- return executor.exec(sql, params);
151
+ exec(sql, params, metadata) {
152
+ return executor.exec(sql, params, metadata);
139
153
  },
140
154
  query(sql, params) {
141
155
  return executor.query(sql, params);
@@ -30,8 +30,8 @@ __export(syncHost_exports, {
30
30
  module.exports = __toCommonJS(syncHost_exports);
31
31
  var import_bindings = require("@rocicorp/zero/bindings");
32
32
  var import_createPermissions = require("./createPermissions.native.js");
33
- var import_createZeroServerCore = require("./createZeroServerCore.native.js");
34
- var import_createZeroSQLiteServer = require("./createZeroSQLiteServer.native.js");
33
+ var import_createZeroDirectServer = require("./createZeroDirectServer.native.js");
34
+ var import_sqliteRuntime = require("./sqliteRuntime.native.js");
35
35
  var import_createMutators = require("./helpers/createMutators.native.js");
36
36
  var import_mutatorContext = require("./helpers/mutatorContext.native.js");
37
37
  var import_queryContext = require("./helpers/queryContext.native.js");
@@ -210,9 +210,14 @@ function createZeroSyncHostAdapter(param) {
210
210
  mutators[`${modelName}|${mutatorName}`] = async function (executor, args, context) {
211
211
  var _modelMutators_modelName;
212
212
  var authData = mapAuthData(context.claims);
213
- var asyncTasks = [];
213
+ var asyncTaskEntries = [];
214
214
  var modelMutators = (0, import_createMutators.createMutators)({
215
- asyncTasks,
215
+ enqueueTask(task, opts) {
216
+ asyncTaskEntries.push({
217
+ task,
218
+ barrier: (opts === null || opts === void 0 ? void 0 : opts.barrier) === true
219
+ });
220
+ },
216
221
  authData,
217
222
  can: permissions.can,
218
223
  createServerActions: options.createServerActions,
@@ -225,7 +230,7 @@ function createZeroSyncHostAdapter(param) {
225
230
  if (!mutation) throw new Error(`unknown on-zero mutator: ${modelName}|${mutatorName}`);
226
231
  var mutationID = numericMutationID(context.mutationID);
227
232
  var _context_clientID;
228
- var onZeroTransaction = (0, import_createZeroSQLiteServer.createZeroSQLiteTransaction)(transactionOptions, toSQLiteExecutor(executor), {
233
+ var onZeroTransaction = (0, import_sqliteRuntime.createZeroSQLiteTransaction)(transactionOptions, toSQLiteExecutor(executor), {
229
234
  clientGroupID: "orez-sync-host",
230
235
  clientID: (_context_clientID = context.clientID) !== null && _context_clientID !== void 0 ? _context_clientID : "",
231
236
  mutationID,
@@ -241,12 +246,14 @@ function createZeroSyncHostAdapter(param) {
241
246
  _iteratorError3 = void 0;
242
247
  try {
243
248
  var _loop3 = function () {
244
- var task = _step2.value;
249
+ var {
250
+ task
251
+ } = _step2.value;
245
252
  context.defer(function () {
246
253
  return (0, import_mutatorContext.runWithAuthScope)(authData, task);
247
254
  });
248
255
  };
249
- for (var _iterator3 = asyncTasks[Symbol.iterator](), _step2; !(_iteratorNormalCompletion3 = (_step2 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) _loop3();
256
+ for (var _iterator3 = asyncTaskEntries[Symbol.iterator](), _step2; !(_iteratorNormalCompletion3 = (_step2 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) _loop3();
250
257
  } catch (err) {
251
258
  _didIteratorError3 = true;
252
259
  _iteratorError3 = err;
@@ -295,13 +302,22 @@ function createZeroSyncHostAdapter(param) {
295
302
  }
296
303
  }
297
304
  mutators._zero_cleanupResults = async function () {};
298
- var direct = (0, import_createZeroSQLiteServer.createZeroSQLiteServer)({
305
+ var transactionProvider = function (work) {
306
+ return transaction(function (executor) {
307
+ return work(toSQLiteExecutor(executor));
308
+ });
309
+ };
310
+ var directDatabaseOptions = {
311
+ encodeValue: encodeValue !== null && encodeValue !== void 0 ? encodeValue : import_sqliteRuntime.encodeSQLiteValue,
312
+ initializedLedgers: /* @__PURE__ */new Set(),
313
+ ledgerTables: import_sqliteRuntime.defaultLedgerTables,
314
+ schema: options.schema,
315
+ transactionProvider
316
+ };
317
+ var direct = (0, import_createZeroDirectServer.createZeroDirectServer)({
299
318
  ...options,
300
- encodeValue,
301
- transactionProvider: function (work) {
302
- return transaction(function (executor) {
303
- return work(toSQLiteExecutor(executor));
304
- });
319
+ createDatabase: function () {
320
+ return (0, import_sqliteRuntime.createSQLiteDatabase)(directDatabaseOptions);
305
321
  }
306
322
  });
307
323
  return {
@@ -314,7 +330,7 @@ function createZeroSyncHostAdapter(param) {
314
330
  var query = await (0, import_queryContext.runWithQueryContext)({
315
331
  authData
316
332
  }, function () {
317
- return (0, import_createZeroServerCore.resolveServerQuery)({
333
+ return (0, import_createZeroDirectServer.resolveServerQuery)({
318
334
  authData,
319
335
  args: args[0],
320
336
  name,
@@ -340,8 +356,8 @@ function defaultMapAuthData(claims) {
340
356
  }
341
357
  function toSQLiteExecutor(executor) {
342
358
  return {
343
- exec(sql, params) {
344
- return executor.exec(sql, params);
359
+ exec(sql, params, metadata) {
360
+ return executor.exec(sql, params, metadata);
345
361
  },
346
362
  query(sql, params) {
347
363
  return executor.query(sql, params);