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.
- package/dist/cjs/asyncTasks.cjs +51 -0
- package/dist/cjs/asyncTasks.native.js +84 -0
- package/dist/cjs/asyncTasks.native.js.map +1 -0
- package/dist/cjs/cli.cjs +8 -1
- package/dist/cjs/cli.native.js +8 -1
- package/dist/cjs/cli.native.js.map +1 -1
- package/dist/cjs/createSchemaFromDrizzle.cjs +4 -4
- package/dist/cjs/createSchemaFromDrizzle.native.js +4 -4
- package/dist/cjs/createSchemaFromDrizzle.native.js.map +1 -1
- package/dist/cjs/createZeroDirectServer.cjs +269 -0
- package/dist/cjs/createZeroDirectServer.native.js +287 -0
- package/dist/cjs/createZeroDirectServer.native.js.map +1 -0
- package/dist/cjs/createZeroSQLiteServer.cjs +8 -277
- package/dist/cjs/createZeroSQLiteServer.native.js +8 -390
- package/dist/cjs/createZeroSQLiteServer.native.js.map +1 -1
- package/dist/cjs/createZeroSQLiteServer.test.cjs +36 -9
- package/dist/cjs/createZeroSQLiteServer.test.native.js +37 -9
- package/dist/cjs/createZeroSQLiteServer.test.native.js.map +1 -1
- package/dist/cjs/createZeroServer.test.cjs +79 -1
- package/dist/cjs/createZeroServer.test.native.js +85 -1
- package/dist/cjs/createZeroServer.test.native.js.map +1 -1
- package/dist/cjs/createZeroServerCore.cjs +28 -208
- package/dist/cjs/createZeroServerCore.native.js +33 -218
- package/dist/cjs/createZeroServerCore.native.js.map +1 -1
- package/dist/cjs/generate.cjs +15 -5
- package/dist/cjs/generate.native.js +15 -5
- package/dist/cjs/generate.native.js.map +1 -1
- package/dist/cjs/generate.test.cjs +55 -0
- package/dist/cjs/generate.test.native.js +55 -0
- package/dist/cjs/generate.test.native.js.map +1 -1
- package/dist/cjs/helpers/createMutators.cjs +2 -2
- package/dist/cjs/helpers/createMutators.native.js +2 -2
- package/dist/cjs/helpers/createMutators.native.js.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.native.js +1 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/server.cjs +2 -1
- package/dist/cjs/sqliteRuntime.cjs +318 -0
- package/dist/cjs/sqliteRuntime.native.js +438 -0
- package/dist/cjs/sqliteRuntime.native.js.map +1 -0
- package/dist/cjs/syncHost.cjs +26 -12
- package/dist/cjs/syncHost.native.js +32 -16
- package/dist/cjs/syncHost.native.js.map +1 -1
- package/dist/cjs/syncHost.test.cjs +15 -4
- package/dist/cjs/syncHost.test.native.js +16 -4
- package/dist/cjs/syncHost.test.native.js.map +1 -1
- package/dist/cjs/vite-plugin.cjs +2 -1
- package/dist/cjs/vite-plugin.native.js +2 -1
- package/dist/cjs/vite-plugin.native.js.map +1 -1
- package/dist/esm/asyncTasks.mjs +26 -0
- package/dist/esm/asyncTasks.mjs.map +1 -0
- package/dist/esm/asyncTasks.native.js +56 -0
- package/dist/esm/asyncTasks.native.js.map +1 -0
- package/dist/esm/cli.mjs +8 -1
- package/dist/esm/cli.mjs.map +1 -1
- package/dist/esm/cli.native.js +8 -1
- package/dist/esm/cli.native.js.map +1 -1
- package/dist/esm/createSchemaFromDrizzle.mjs +2 -2
- package/dist/esm/createSchemaFromDrizzle.native.js +2 -2
- package/dist/esm/createZeroDirectServer.mjs +241 -0
- package/dist/esm/createZeroDirectServer.mjs.map +1 -0
- package/dist/esm/createZeroDirectServer.native.js +256 -0
- package/dist/esm/createZeroDirectServer.native.js.map +1 -0
- package/dist/esm/createZeroSQLiteServer.mjs +3 -272
- package/dist/esm/createZeroSQLiteServer.mjs.map +1 -1
- package/dist/esm/createZeroSQLiteServer.native.js +3 -385
- package/dist/esm/createZeroSQLiteServer.native.js.map +1 -1
- package/dist/esm/createZeroSQLiteServer.test.mjs +36 -9
- package/dist/esm/createZeroSQLiteServer.test.mjs.map +1 -1
- package/dist/esm/createZeroSQLiteServer.test.native.js +37 -9
- package/dist/esm/createZeroSQLiteServer.test.native.js.map +1 -1
- package/dist/esm/createZeroServer.test.mjs +80 -2
- package/dist/esm/createZeroServer.test.mjs.map +1 -1
- package/dist/esm/createZeroServer.test.native.js +86 -2
- package/dist/esm/createZeroServer.test.native.js.map +1 -1
- package/dist/esm/createZeroServerCore.mjs +26 -205
- package/dist/esm/createZeroServerCore.mjs.map +1 -1
- package/dist/esm/createZeroServerCore.native.js +32 -216
- package/dist/esm/createZeroServerCore.native.js.map +1 -1
- package/dist/esm/generate.mjs +15 -5
- package/dist/esm/generate.mjs.map +1 -1
- package/dist/esm/generate.native.js +15 -5
- package/dist/esm/generate.native.js.map +1 -1
- package/dist/esm/generate.test.mjs +55 -1
- package/dist/esm/generate.test.mjs.map +1 -1
- package/dist/esm/generate.test.native.js +55 -1
- package/dist/esm/generate.test.native.js.map +1 -1
- package/dist/esm/helpers/createMutators.mjs +2 -2
- package/dist/esm/helpers/createMutators.mjs.map +1 -1
- package/dist/esm/helpers/createMutators.native.js +2 -2
- package/dist/esm/helpers/createMutators.native.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +1 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +1 -0
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/server.mjs +1 -0
- package/dist/esm/server.mjs.map +1 -1
- package/dist/esm/sqliteRuntime.mjs +289 -0
- package/dist/esm/sqliteRuntime.mjs.map +1 -0
- package/dist/esm/sqliteRuntime.native.js +406 -0
- package/dist/esm/sqliteRuntime.native.js.map +1 -0
- package/dist/esm/syncHost.mjs +24 -10
- package/dist/esm/syncHost.mjs.map +1 -1
- package/dist/esm/syncHost.native.js +30 -14
- package/dist/esm/syncHost.native.js.map +1 -1
- package/dist/esm/syncHost.test.mjs +15 -4
- package/dist/esm/syncHost.test.mjs.map +1 -1
- package/dist/esm/syncHost.test.native.js +16 -4
- package/dist/esm/syncHost.test.native.js.map +1 -1
- package/dist/esm/vite-plugin.mjs +2 -1
- package/dist/esm/vite-plugin.mjs.map +1 -1
- package/dist/esm/vite-plugin.native.js +2 -1
- package/dist/esm/vite-plugin.native.js.map +1 -1
- package/lint/ssr-guards.js +8 -7
- package/package.json +5 -6
- package/readme.md +13 -4
- package/src/asyncTasks.ts +33 -0
- package/src/cli.ts +7 -1
- package/src/createSchemaFromDrizzle.ts +2 -2
- package/src/createZeroDirectServer.ts +411 -0
- package/src/createZeroSQLiteServer.test.ts +28 -12
- package/src/createZeroSQLiteServer.ts +14 -481
- package/src/createZeroServer.test.ts +86 -2
- package/src/createZeroServerCore.ts +39 -343
- package/src/generate.test.ts +75 -1
- package/src/generate.ts +30 -4
- package/src/helpers/createMutators.ts +3 -3
- package/src/helpers/mutatorContext.ts +1 -1
- package/src/index.ts +1 -0
- package/src/server.ts +2 -0
- package/src/sqliteRuntime.ts +512 -0
- package/src/syncHost.test.ts +12 -5
- package/src/syncHost.ts +55 -16
- package/src/types.ts +21 -3
- package/src/vite-plugin.ts +1 -0
- package/test-fixtures/server-return-types.ts +20 -2
- package/types/asyncTasks.d.ts +7 -0
- package/types/asyncTasks.d.ts.map +1 -0
- package/types/createSchemaFromDrizzle.d.ts +2 -2
- package/types/createSchemaFromDrizzle.d.ts.map +1 -1
- package/types/createZeroDirectServer.d.ts +80 -0
- package/types/createZeroDirectServer.d.ts.map +1 -0
- package/types/createZeroSQLiteServer.d.ts +5 -30
- package/types/createZeroSQLiteServer.d.ts.map +1 -1
- package/types/createZeroServerCore.d.ts +30 -87
- package/types/createZeroServerCore.d.ts.map +1 -1
- package/types/generate.d.ts +2 -0
- package/types/generate.d.ts.map +1 -1
- package/types/helpers/createMutators.d.ts +3 -3
- package/types/helpers/createMutators.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/server.d.ts +2 -0
- package/types/server.d.ts.map +1 -1
- package/types/sqliteRuntime.d.ts +71 -0
- package/types/sqliteRuntime.d.ts.map +1 -0
- package/types/syncHost.d.ts +10 -19
- package/types/syncHost.d.ts.map +1 -1
- package/types/types.d.ts +18 -2
- package/types/types.d.ts.map +1 -1
- package/types/vite-plugin.d.ts.map +1 -1
|
@@ -19,27 +19,22 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
19
19
|
}
|
|
20
20
|
return to;
|
|
21
21
|
};
|
|
22
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
22
23
|
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
23
24
|
value: true
|
|
24
25
|
}), mod);
|
|
25
26
|
var createZeroSQLiteServer_exports = {};
|
|
26
27
|
__export(createZeroSQLiteServer_exports, {
|
|
27
|
-
createZeroSQLiteServer: () => createZeroSQLiteServer
|
|
28
|
-
createZeroSQLiteTransaction: () => createZeroSQLiteTransaction
|
|
28
|
+
createZeroSQLiteServer: () => createZeroSQLiteServer
|
|
29
29
|
});
|
|
30
30
|
module.exports = __toCommonJS(createZeroSQLiteServer_exports);
|
|
31
|
-
var import_zero = require("@rocicorp/zero");
|
|
32
|
-
var import_bindings = require("@rocicorp/zero/bindings");
|
|
33
31
|
var import_createZeroServerCore = require("./createZeroServerCore.native.js");
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
38
|
-
}
|
|
32
|
+
var import_sqliteRuntime = require("./sqliteRuntime.native.js");
|
|
33
|
+
__reExport(createZeroSQLiteServer_exports, require("./sqliteRuntime.native.js"), module.exports);
|
|
39
34
|
function createZeroSQLiteServer(param) {
|
|
40
35
|
var {
|
|
41
|
-
encodeValue = encodeSQLiteValue,
|
|
42
|
-
ledgerTables = defaultLedgerTables,
|
|
36
|
+
encodeValue = import_sqliteRuntime.encodeSQLiteValue,
|
|
37
|
+
ledgerTables = import_sqliteRuntime.defaultLedgerTables,
|
|
43
38
|
transactionProvider,
|
|
44
39
|
...options
|
|
45
40
|
} = param;
|
|
@@ -53,388 +48,11 @@ function createZeroSQLiteServer(param) {
|
|
|
53
48
|
return (0, import_createZeroServerCore.createZeroServerCore)({
|
|
54
49
|
...options,
|
|
55
50
|
createDatabase: function () {
|
|
56
|
-
return createSQLiteDatabase(databaseOptions);
|
|
51
|
+
return (0, import_sqliteRuntime.createSQLiteDatabase)(databaseOptions);
|
|
57
52
|
},
|
|
58
53
|
persistAlreadyProcessed: function (args) {
|
|
59
|
-
return persistAlreadyProcessedMutationResults(databaseOptions, args);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
function createSQLiteDatabase(options) {
|
|
64
|
-
return {
|
|
65
|
-
async transaction(callback, input) {
|
|
66
|
-
var committedLedgers = /* @__PURE__ */new Set();
|
|
67
|
-
var value = await options.transactionProvider(async function (executor) {
|
|
68
|
-
var attemptLedgers = /* @__PURE__ */new Set();
|
|
69
|
-
var ensureLedger = async function (upstreamSchema) {
|
|
70
|
-
var tables = options.ledgerTables(upstreamSchema);
|
|
71
|
-
var key2 = ledgerKey(tables);
|
|
72
|
-
if (options.initializedLedgers.has(key2) || attemptLedgers.has(key2)) {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
await createLedgerTables(executor, tables);
|
|
76
|
-
attemptLedgers.add(key2);
|
|
77
|
-
};
|
|
78
|
-
var transaction = createZeroSQLiteTransaction(options, executor, input);
|
|
79
|
-
var result = await callback(transaction, createLedgerHooks(options, executor, ensureLedger, input));
|
|
80
|
-
committedLedgers = attemptLedgers;
|
|
81
|
-
return result;
|
|
82
|
-
});
|
|
83
|
-
var _iteratorNormalCompletion = true,
|
|
84
|
-
_didIteratorError = false,
|
|
85
|
-
_iteratorError = void 0;
|
|
86
|
-
try {
|
|
87
|
-
for (var _iterator = committedLedgers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
88
|
-
var key = _step.value;
|
|
89
|
-
options.initializedLedgers.add(key);
|
|
90
|
-
}
|
|
91
|
-
} catch (err) {
|
|
92
|
-
_didIteratorError = true;
|
|
93
|
-
_iteratorError = err;
|
|
94
|
-
} finally {
|
|
95
|
-
try {
|
|
96
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
97
|
-
_iterator.return();
|
|
98
|
-
}
|
|
99
|
-
} finally {
|
|
100
|
-
if (_didIteratorError) {
|
|
101
|
-
throw _iteratorError;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return value;
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
function createZeroSQLiteTransaction(options, executor, input) {
|
|
110
|
-
var _options_encodeValue;
|
|
111
|
-
var transactionOptions = {
|
|
112
|
-
encodeValue: (_options_encodeValue = options.encodeValue) !== null && _options_encodeValue !== void 0 ? _options_encodeValue : encodeSQLiteValue,
|
|
113
|
-
schema: options.schema
|
|
114
|
-
};
|
|
115
|
-
var _input_clientID;
|
|
116
|
-
var clientID = (_input_clientID = input === null || input === void 0 ? void 0 : input.clientID) !== null && _input_clientID !== void 0 ? _input_clientID : "";
|
|
117
|
-
var _input_mutationID;
|
|
118
|
-
var mutationID = (_input_mutationID = input === null || input === void 0 ? void 0 : input.mutationID) !== null && _input_mutationID !== void 0 ? _input_mutationID : 0;
|
|
119
|
-
var mutate = new Proxy({}, {
|
|
120
|
-
get(_target, tableKey) {
|
|
121
|
-
var tableName = String(tableKey);
|
|
122
|
-
if (!options.schema.tables[tableName]) {
|
|
123
|
-
throw new Error(`unknown SQLite mutation table ${tableName}`);
|
|
124
|
-
}
|
|
125
|
-
return new Proxy({}, {
|
|
126
|
-
get(_innerTarget, kindKey) {
|
|
127
|
-
var kind = String(kindKey);
|
|
128
|
-
if (!isCrudKind(kind)) return;
|
|
129
|
-
return function (value) {
|
|
130
|
-
return executeCrud(transactionOptions, executor, tableName, kind, value);
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
var runQuery = function (ast, format, queryName) {
|
|
137
|
-
return Promise.resolve(executor.queryAst(ast, format, queryName));
|
|
138
|
-
};
|
|
139
|
-
var dbTransaction = {
|
|
140
|
-
wrappedTransaction: executor,
|
|
141
|
-
query: function (sql, args) {
|
|
142
|
-
return executor.query(sql, args);
|
|
143
|
-
},
|
|
144
|
-
runQuery
|
|
145
|
-
};
|
|
146
|
-
return {
|
|
147
|
-
clientID,
|
|
148
|
-
dbTransaction,
|
|
149
|
-
location: "server",
|
|
150
|
-
mutate,
|
|
151
|
-
mutationID,
|
|
152
|
-
query: transactionOptions.schema.enableLegacyQueries ? createLegacyQueryBuilder(transactionOptions.schema, function (query) {
|
|
153
|
-
var _internals_customQueryID;
|
|
154
|
-
var internals = (0, import_bindings.asQueryInternals)(query);
|
|
155
|
-
return runQuery(internals.ast, internals.format, (_internals_customQueryID = internals.customQueryID) === null || _internals_customQueryID === void 0 ? void 0 : _internals_customQueryID.name);
|
|
156
|
-
}) : void 0,
|
|
157
|
-
reason: "authoritative",
|
|
158
|
-
async run(query) {
|
|
159
|
-
var _internals_customQueryID;
|
|
160
|
-
var internals = (0, import_bindings.asQueryInternals)(query);
|
|
161
|
-
return runQuery(internals.ast, internals.format, (_internals_customQueryID = internals.customQueryID) === null || _internals_customQueryID === void 0 ? void 0 : _internals_customQueryID.name);
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
function isCrudKind(value) {
|
|
166
|
-
return value === "delete" || value === "insert" || value === "update" || value === "upsert";
|
|
167
|
-
}
|
|
168
|
-
async function executeCrud(options, executor, tableName, kind, raw) {
|
|
169
|
-
if (!raw || (typeof raw === "undefined" ? "undefined" : _type_of(raw)) !== "object" || Array.isArray(raw)) {
|
|
170
|
-
throw new Error(`${tableName}.${kind} expects an object`);
|
|
171
|
-
}
|
|
172
|
-
var table = options.schema.tables[tableName];
|
|
173
|
-
var values = Object.fromEntries(Object.entries(raw).filter(function (param) {
|
|
174
|
-
var [, value] = param;
|
|
175
|
-
return value !== void 0;
|
|
176
|
-
}));
|
|
177
|
-
var _iteratorNormalCompletion = true,
|
|
178
|
-
_didIteratorError = false,
|
|
179
|
-
_iteratorError = void 0;
|
|
180
|
-
try {
|
|
181
|
-
for (var _iterator = Object.keys(values)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
182
|
-
var columnName = _step.value;
|
|
183
|
-
if (!table.columns[columnName]) {
|
|
184
|
-
throw new Error(`unknown SQLite column ${tableName}.${columnName}`);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
} catch (err) {
|
|
188
|
-
_didIteratorError = true;
|
|
189
|
-
_iteratorError = err;
|
|
190
|
-
} finally {
|
|
191
|
-
try {
|
|
192
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
193
|
-
_iterator.return();
|
|
194
|
-
}
|
|
195
|
-
} finally {
|
|
196
|
-
if (_didIteratorError) {
|
|
197
|
-
throw _iteratorError;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
var primaryValues = table.primaryKey.map(function (columnName2) {
|
|
202
|
-
if (!(columnName2 in values)) {
|
|
203
|
-
throw new Error(`${tableName}.${kind} is missing primary key ${columnName2}`);
|
|
204
|
-
}
|
|
205
|
-
return encodeColumn(options, tableName, columnName2, values[columnName2]);
|
|
206
|
-
});
|
|
207
|
-
var primaryWhere = table.primaryKey.map(function (columnName2) {
|
|
208
|
-
return `${quoteSQLiteIdentifier(serverColumn(table, columnName2))} = ?`;
|
|
209
|
-
}).join(" AND ");
|
|
210
|
-
var _table_serverName;
|
|
211
|
-
var serverTableName = quoteSQLiteIdentifier((_table_serverName = table.serverName) !== null && _table_serverName !== void 0 ? _table_serverName : table.name);
|
|
212
|
-
if (kind === "delete") {
|
|
213
|
-
await executor.exec(`DELETE FROM ${serverTableName} WHERE ${primaryWhere}`, primaryValues);
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
var columnNames = Object.keys(values);
|
|
217
|
-
if (columnNames.length === 0) {
|
|
218
|
-
throw new Error(`${tableName}.${kind} has no values`);
|
|
219
|
-
}
|
|
220
|
-
var serverColumns = columnNames.map(function (columnName2) {
|
|
221
|
-
return quoteSQLiteIdentifier(serverColumn(table, columnName2));
|
|
222
|
-
});
|
|
223
|
-
var params = columnNames.map(function (columnName2) {
|
|
224
|
-
return encodeColumn(options, tableName, columnName2, values[columnName2]);
|
|
225
|
-
});
|
|
226
|
-
var insert = `INSERT INTO ${serverTableName} (${serverColumns.join(", ")}) VALUES (${columnNames.map(function () {
|
|
227
|
-
return "?";
|
|
228
|
-
}).join(", ")})`;
|
|
229
|
-
if (kind === "insert") {
|
|
230
|
-
await executor.exec(insert, params);
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
if (kind === "upsert") {
|
|
234
|
-
var mutableColumns = columnNames.filter(function (columnName2) {
|
|
235
|
-
return !table.primaryKey.includes(columnName2);
|
|
236
|
-
});
|
|
237
|
-
var conflictColumns = table.primaryKey.map(function (columnName2) {
|
|
238
|
-
return quoteSQLiteIdentifier(serverColumn(table, columnName2));
|
|
239
|
-
}).join(", ");
|
|
240
|
-
var conflictAction = mutableColumns.length === 0 ? "DO NOTHING" : `DO UPDATE SET ${mutableColumns.map(function (columnName2) {
|
|
241
|
-
var column = quoteSQLiteIdentifier(serverColumn(table, columnName2));
|
|
242
|
-
return `${column} = excluded.${column}`;
|
|
243
|
-
}).join(", ")}`;
|
|
244
|
-
await executor.exec(`${insert} ON CONFLICT (${conflictColumns}) ${conflictAction}`, params);
|
|
245
|
-
return;
|
|
246
|
-
}
|
|
247
|
-
var mutableColumns1 = columnNames.filter(function (columnName2) {
|
|
248
|
-
return !table.primaryKey.includes(columnName2);
|
|
249
|
-
});
|
|
250
|
-
if (mutableColumns1.length === 0) return;
|
|
251
|
-
await executor.exec(`UPDATE ${serverTableName} SET ${mutableColumns1.map(function (columnName2) {
|
|
252
|
-
return `${quoteSQLiteIdentifier(serverColumn(table, columnName2))} = ?`;
|
|
253
|
-
}).join(", ")} WHERE ${primaryWhere}`, [...mutableColumns1.map(function (columnName2) {
|
|
254
|
-
return encodeColumn(options, tableName, columnName2, values[columnName2]);
|
|
255
|
-
}), ...primaryValues]);
|
|
256
|
-
}
|
|
257
|
-
function serverColumn(table, columnName) {
|
|
258
|
-
var column = table.columns[columnName];
|
|
259
|
-
if (!column) throw new Error(`unknown SQLite column ${table.name}.${columnName}`);
|
|
260
|
-
var _column_serverName;
|
|
261
|
-
return (_column_serverName = column.serverName) !== null && _column_serverName !== void 0 ? _column_serverName : columnName;
|
|
262
|
-
}
|
|
263
|
-
function encodeColumn(options, tableName, columnName, value) {
|
|
264
|
-
return options.encodeValue(value, {
|
|
265
|
-
column: options.schema.tables[tableName].columns[columnName],
|
|
266
|
-
columnName,
|
|
267
|
-
tableName
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
function createLegacyQueryBuilder(schema, run) {
|
|
271
|
-
var builder = (0, import_zero.createBuilder)(schema);
|
|
272
|
-
return new Proxy(builder, {
|
|
273
|
-
get(target, property) {
|
|
274
|
-
return makeRunnableQuery(Reflect.get(target, property, target), run);
|
|
275
|
-
}
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
function makeRunnableQuery(query, run) {
|
|
279
|
-
if (!isQueryBuilder(query)) return query;
|
|
280
|
-
return new Proxy(query, {
|
|
281
|
-
get(target, property) {
|
|
282
|
-
if (property === "run") return function () {
|
|
283
|
-
return run(target);
|
|
284
|
-
};
|
|
285
|
-
if (property === "materialize" || property === "preload") {
|
|
286
|
-
return function () {
|
|
287
|
-
throw new Error(`${String(property)}() is not supported in server transactions`);
|
|
288
|
-
};
|
|
289
|
-
}
|
|
290
|
-
var value = Reflect.get(target, property, target);
|
|
291
|
-
if (typeof value !== "function") return value;
|
|
292
|
-
return function () {
|
|
293
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
294
|
-
args[_key] = arguments[_key];
|
|
295
|
-
}
|
|
296
|
-
return makeRunnableQuery(Reflect.apply(value, target, args), run);
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
|
-
function isQueryBuilder(value) {
|
|
302
|
-
if (!value || (typeof value === "undefined" ? "undefined" : _type_of(value)) !== "object") return false;
|
|
303
|
-
try {
|
|
304
|
-
(0, import_bindings.asQueryInternals)(value);
|
|
305
|
-
return true;
|
|
306
|
-
} catch (e) {
|
|
307
|
-
return false;
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
function createLedgerHooks(options, executor, ensureLedger, input) {
|
|
311
|
-
var _input_upstreamSchema;
|
|
312
|
-
var upstreamSchema = (_input_upstreamSchema = input === null || input === void 0 ? void 0 : input.upstreamSchema) !== null && _input_upstreamSchema !== void 0 ? _input_upstreamSchema : "";
|
|
313
|
-
var _input_clientGroupID;
|
|
314
|
-
var clientGroupID = (_input_clientGroupID = input === null || input === void 0 ? void 0 : input.clientGroupID) !== null && _input_clientGroupID !== void 0 ? _input_clientGroupID : "";
|
|
315
|
-
var _input_clientID;
|
|
316
|
-
var clientID = (_input_clientID = input === null || input === void 0 ? void 0 : input.clientID) !== null && _input_clientID !== void 0 ? _input_clientID : "";
|
|
317
|
-
var tables = options.ledgerTables(upstreamSchema);
|
|
318
|
-
var clientsTable = quoteSQLiteIdentifier(tables.clients);
|
|
319
|
-
var mutationsTable = quoteSQLiteIdentifier(tables.mutations);
|
|
320
|
-
return {
|
|
321
|
-
async updateClientMutationID() {
|
|
322
|
-
var _rows_;
|
|
323
|
-
await ensureLedger(upstreamSchema);
|
|
324
|
-
var rows = await executor.query(`INSERT INTO ${clientsTable}
|
|
325
|
-
(clientGroupID, clientID, lastMutationID)
|
|
326
|
-
VALUES (?, ?, 1)
|
|
327
|
-
ON CONFLICT (clientGroupID, clientID)
|
|
328
|
-
DO UPDATE SET lastMutationID = lastMutationID + 1
|
|
329
|
-
RETURNING lastMutationID`, [clientGroupID, clientID]);
|
|
330
|
-
var lastMutationID = (_rows_ = rows[0]) === null || _rows_ === void 0 ? void 0 : _rows_.lastMutationID;
|
|
331
|
-
if (typeof lastMutationID !== "number" && (typeof lastMutationID === "undefined" ? "undefined" : _type_of(lastMutationID)) !== "bigint") {
|
|
332
|
-
throw new Error("SQLite mutation ledger returned no lastMutationID");
|
|
333
|
-
}
|
|
334
|
-
return {
|
|
335
|
-
lastMutationID
|
|
336
|
-
};
|
|
337
|
-
},
|
|
338
|
-
async writeMutationResult(result) {
|
|
339
|
-
await ensureLedger(upstreamSchema);
|
|
340
|
-
await executor.exec(`INSERT INTO ${mutationsTable}
|
|
341
|
-
(clientGroupID, clientID, mutationID, result)
|
|
342
|
-
VALUES (?, ?, ?, ?)`, [clientGroupID, result.id.clientID, result.id.id, JSON.stringify(result.result)]);
|
|
343
|
-
},
|
|
344
|
-
async deleteMutationResults(args) {
|
|
345
|
-
await ensureLedger(upstreamSchema);
|
|
346
|
-
if ("type" in args && args.type === "bulk") {
|
|
347
|
-
if (args.clientIDs.length === 0) return;
|
|
348
|
-
await executor.exec(`DELETE FROM ${mutationsTable}
|
|
349
|
-
WHERE clientGroupID = ?
|
|
350
|
-
AND clientID IN (${args.clientIDs.map(function () {
|
|
351
|
-
return "?";
|
|
352
|
-
}).join(", ")})`, [args.clientGroupID, ...args.clientIDs]);
|
|
353
|
-
return;
|
|
354
|
-
}
|
|
355
|
-
await executor.exec(`DELETE FROM ${mutationsTable}
|
|
356
|
-
WHERE clientGroupID = ?
|
|
357
|
-
AND clientID = ?
|
|
358
|
-
AND mutationID <= ?`, [args.clientGroupID, args.clientID, args.upToMutationID]);
|
|
359
|
-
}
|
|
360
|
-
};
|
|
361
|
-
}
|
|
362
|
-
async function persistAlreadyProcessedMutationResults(options, param) {
|
|
363
|
-
var {
|
|
364
|
-
clientGroupID,
|
|
365
|
-
mutations,
|
|
366
|
-
upstreamSchema
|
|
367
|
-
} = param;
|
|
368
|
-
var tables = options.ledgerTables(upstreamSchema);
|
|
369
|
-
var table = quoteSQLiteIdentifier(tables.mutations);
|
|
370
|
-
var key = ledgerKey(tables);
|
|
371
|
-
await options.transactionProvider(async function (executor) {
|
|
372
|
-
if (!options.initializedLedgers.has(key)) {
|
|
373
|
-
await createLedgerTables(executor, tables);
|
|
374
|
-
}
|
|
375
|
-
var _iteratorNormalCompletion = true,
|
|
376
|
-
_didIteratorError = false,
|
|
377
|
-
_iteratorError = void 0;
|
|
378
|
-
try {
|
|
379
|
-
for (var _iterator = mutations[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
380
|
-
var mutation = _step.value;
|
|
381
|
-
await executor.exec(`INSERT INTO ${table}
|
|
382
|
-
(clientGroupID, clientID, mutationID, result)
|
|
383
|
-
VALUES (?, ?, ?, ?)
|
|
384
|
-
ON CONFLICT (clientGroupID, clientID, mutationID) DO NOTHING`, [clientGroupID, mutation.id.clientID, mutation.id.id, JSON.stringify(mutation.result)]);
|
|
385
|
-
}
|
|
386
|
-
} catch (err) {
|
|
387
|
-
_didIteratorError = true;
|
|
388
|
-
_iteratorError = err;
|
|
389
|
-
} finally {
|
|
390
|
-
try {
|
|
391
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
392
|
-
_iterator.return();
|
|
393
|
-
}
|
|
394
|
-
} finally {
|
|
395
|
-
if (_didIteratorError) {
|
|
396
|
-
throw _iteratorError;
|
|
397
|
-
}
|
|
398
|
-
}
|
|
54
|
+
return (0, import_sqliteRuntime.persistAlreadyProcessedMutationResults)(databaseOptions, args);
|
|
399
55
|
}
|
|
400
56
|
});
|
|
401
|
-
options.initializedLedgers.add(key);
|
|
402
|
-
}
|
|
403
|
-
async function createLedgerTables(executor, tables) {
|
|
404
|
-
await executor.exec(`CREATE TABLE IF NOT EXISTS ${quoteSQLiteIdentifier(tables.clients)} (
|
|
405
|
-
clientGroupID TEXT NOT NULL,
|
|
406
|
-
clientID TEXT NOT NULL,
|
|
407
|
-
lastMutationID INTEGER NOT NULL,
|
|
408
|
-
PRIMARY KEY (clientGroupID, clientID)
|
|
409
|
-
)`);
|
|
410
|
-
await executor.exec(`CREATE TABLE IF NOT EXISTS ${quoteSQLiteIdentifier(tables.mutations)} (
|
|
411
|
-
clientGroupID TEXT NOT NULL,
|
|
412
|
-
clientID TEXT NOT NULL,
|
|
413
|
-
mutationID INTEGER NOT NULL,
|
|
414
|
-
result TEXT NOT NULL,
|
|
415
|
-
PRIMARY KEY (clientGroupID, clientID, mutationID)
|
|
416
|
-
)`);
|
|
417
|
-
}
|
|
418
|
-
function ledgerKey(tables) {
|
|
419
|
-
return `${tables.clients}\0${tables.mutations}`;
|
|
420
|
-
}
|
|
421
|
-
function defaultLedgerTables(upstreamSchema) {
|
|
422
|
-
var prefix = upstreamSchema ? `${upstreamSchema}_` : "";
|
|
423
|
-
return {
|
|
424
|
-
clients: `${prefix}clients`,
|
|
425
|
-
mutations: `${prefix}mutations`
|
|
426
|
-
};
|
|
427
|
-
}
|
|
428
|
-
function encodeSQLiteValue(value, param) {
|
|
429
|
-
var {
|
|
430
|
-
column
|
|
431
|
-
} = param;
|
|
432
|
-
if (value === null) return null;
|
|
433
|
-
if (column.type === "boolean") return value ? 1 : 0;
|
|
434
|
-
if (column.type === "json") return JSON.stringify(value);
|
|
435
|
-
return value;
|
|
436
|
-
}
|
|
437
|
-
function quoteSQLiteIdentifier(value) {
|
|
438
|
-
return `"${value.replaceAll('"', '""')}"`;
|
|
439
57
|
}
|
|
440
58
|
//# sourceMappingURL=createZeroSQLiteServer.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createZeroSQLiteServer_exports","__export","createZeroSQLiteServer","createZeroSQLiteTransaction","module","exports","import_zero","require","import_bindings","import_createZeroServerCore","_type_of","obj","Symbol","constructor","param","encodeValue","encodeSQLiteValue","ledgerTables","defaultLedgerTables","transactionProvider","options","databaseOptions","initializedLedgers","Set","schema","createZeroServerCore","createDatabase","createSQLiteDatabase","persistAlreadyProcessed","args","persistAlreadyProcessedMutationResults","transaction","callback","input","committedLedgers","executor","attemptLedgers","ensureLedger","upstreamSchema","tables","key2","ledgerKey","has","createLedgerTables","add","result","createLedgerHooks","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","key","err","return","_options_encodeValue","transactionOptions","_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","location","enableLegacyQueries","createLegacyQueryBuilder","_internals_customQueryID","internals","asQueryInternals","customQueryID","name","reason","run","raw","Array","isArray","table","values","Object","fromEntries","entries","filter","keys","columnName","columns","primaryValues","primaryKey","map","columnName2","encodeColumn","primaryWhere","quoteSQLiteIdentifier","serverColumn","join","_table_serverName","serverTableName","serverName","exec","columnNames","length","serverColumns","params","insert","mutableColumns","includes","conflictColumns","conflictAction","column","mutableColumns1","_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","upToMutationID"],"sources":["../../src/createZeroSQLiteServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createZeroSQLiteServer_exports","__export","createZeroSQLiteServer","module","exports","import_createZeroServerCore","require","import_sqliteRuntime","__reExport","param","encodeValue","encodeSQLiteValue","ledgerTables","defaultLedgerTables","transactionProvider","options","databaseOptions","initializedLedgers","Set","schema","createZeroServerCore","createDatabase","createSQLiteDatabase","persistAlreadyProcessed","args","persistAlreadyProcessedMutationResults"],"sources":["../../src/createZeroSQLiteServer.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,8BAAA;AAAAC,QAAA,CAAAD,8BAAA;EAAAE,sBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAA,CAAAK,8BAAqC;AACrC,IAAAK,2BAQO,GAAAC,OAAA;AA8CP,IAAAC,oBAAA,GAAAD,OAAA,4BAAc;AA9BPE,UAAS,CAAAR,8BAId,EAAAM,OAAA,+BAAAH,MAAA,CAAAC,OAAA;AAAA,SACAF,sBAAcA,CAAAO,KAAA;EACd;IAAAC,WAAe,GAAAH,oBAAA,CAAAI,iBAAA;IAAAC,YAAA,GAAAL,oBAAA,CAAAM,mBAAA;IAAAC,mBAAA;IAAA,GAAAC;EAAA,IAAAN,KAAA;EACf,IAAAO,eAAA;IACAN,WAAG;IAKHO,kBAAA,qBAAAC,GAAA;IACAN,YAAM;IACJO,MAAA,EAAAJ,OAAA,CAAAI,MAAA;IACAL;EAAoC;EACpC,OACA,IAAQT,2BAAQ,CAAAe,oBAAA;IAChB,GAAAL,OAAA;IACFM,cAAA,WAAAA,CAAA;MAEA,OAAO,IAAAd,oBAAA,CAAAe,oBAAA,EAAAN,eAAqB;IAC1B;IACAO,uBAAgB,WAAAA,CAAMC,IAAA;MACtB,WAAAjB,oBAA0B,CAAAkB,sCACxB,EAAAT,eAAA,EAAAQ,IAAA;IACH;EACH","ignoreList":[]}
|
|
@@ -94,13 +94,19 @@ function cleanupRequest() {
|
|
|
94
94
|
let db;
|
|
95
95
|
let retryNextTransaction;
|
|
96
96
|
let transactionProvider;
|
|
97
|
+
let statements;
|
|
97
98
|
(0, import_vitest.beforeEach)(() => {
|
|
98
99
|
db = new import_node_sqlite.DatabaseSync(":memory:");
|
|
99
100
|
db.exec(["CREATE TABLE project (id TEXT PRIMARY KEY, ownerId TEXT NOT NULL, name TEXT NOT NULL);", "CREATE TABLE note_records (note_id TEXT PRIMARY KEY, done INTEGER NOT NULL, data TEXT);"].join("\n"));
|
|
100
101
|
retryNextTransaction = false;
|
|
102
|
+
statements = [];
|
|
101
103
|
const executor = {
|
|
102
|
-
async exec(sql, params = []) {
|
|
103
|
-
|
|
104
|
+
async exec(sql, params = [], metadata) {
|
|
105
|
+
if (metadata) statements.push(metadata);
|
|
106
|
+
const result = db.prepare(sql).run(...params);
|
|
107
|
+
return {
|
|
108
|
+
changes: Number(result.changes)
|
|
109
|
+
};
|
|
104
110
|
},
|
|
105
111
|
async query(sql, params = []) {
|
|
106
112
|
return db.prepare(sql).all(...params);
|
|
@@ -168,12 +174,11 @@ function cleanupRequest() {
|
|
|
168
174
|
server: server2
|
|
169
175
|
}, value) => {
|
|
170
176
|
await tx.mutate.project.insert(value);
|
|
171
|
-
server2?.
|
|
172
|
-
(0, import_vitest.expect)(server2?.asyncTasks).toHaveLength(1);
|
|
173
|
-
server2?.asyncTasks.splice(0, 1, async () => {});
|
|
174
|
-
server2.asyncTasks[0] = async () => {
|
|
177
|
+
server2?.enqueueTask(async () => {
|
|
175
178
|
effectRuns++;
|
|
176
|
-
}
|
|
179
|
+
}, {
|
|
180
|
+
barrier: true
|
|
181
|
+
});
|
|
177
182
|
}
|
|
178
183
|
}
|
|
179
184
|
}
|
|
@@ -203,7 +208,8 @@ function cleanupRequest() {
|
|
|
203
208
|
lastMutationID: 1
|
|
204
209
|
}]);
|
|
205
210
|
(0, import_vitest.expect)(result.asyncTasks).toHaveLength(1);
|
|
206
|
-
|
|
211
|
+
(0, import_vitest.expect)(result.asyncTasks[0].barrier).toBe(true);
|
|
212
|
+
await result.asyncTasks[0].task();
|
|
207
213
|
(0, import_vitest.expect)(effectRuns).toBe(1);
|
|
208
214
|
});
|
|
209
215
|
(0, import_vitest.test)("rolls back row writes and persists an application error with its LMID", async () => {
|
|
@@ -378,6 +384,23 @@ function cleanupRequest() {
|
|
|
378
384
|
id: "n1"
|
|
379
385
|
});
|
|
380
386
|
(0, import_vitest.expect)(db.prepare("SELECT * FROM note_records").all()).toEqual([]);
|
|
387
|
+
(0, import_vitest.expect)(statements).toEqual([{
|
|
388
|
+
table: "note_records",
|
|
389
|
+
publicTable: "note",
|
|
390
|
+
kind: "insert"
|
|
391
|
+
}, {
|
|
392
|
+
table: "note_records",
|
|
393
|
+
publicTable: "note",
|
|
394
|
+
kind: "upsert"
|
|
395
|
+
}, {
|
|
396
|
+
table: "note_records",
|
|
397
|
+
publicTable: "note",
|
|
398
|
+
kind: "update"
|
|
399
|
+
}, {
|
|
400
|
+
table: "note_records",
|
|
401
|
+
publicTable: "note",
|
|
402
|
+
kind: "delete"
|
|
403
|
+
}]);
|
|
381
404
|
});
|
|
382
405
|
(0, import_vitest.test)("decodes destination rows through a hidden two-hop junction", async () => {
|
|
383
406
|
const server = (0, import_createZeroSQLiteServer.createZeroSQLiteServer)({
|
|
@@ -407,7 +430,11 @@ function cleanupRequest() {
|
|
|
407
430
|
};
|
|
408
431
|
let receivedQueryName;
|
|
409
432
|
const hydratedExecutor = {
|
|
410
|
-
async exec() {
|
|
433
|
+
async exec() {
|
|
434
|
+
return {
|
|
435
|
+
changes: 0
|
|
436
|
+
};
|
|
437
|
+
},
|
|
411
438
|
async query() {
|
|
412
439
|
return [];
|
|
413
440
|
},
|
|
@@ -99,14 +99,21 @@ function cleanupRequest() {
|
|
|
99
99
|
var db;
|
|
100
100
|
var retryNextTransaction;
|
|
101
101
|
var transactionProvider;
|
|
102
|
+
var statements;
|
|
102
103
|
(0, import_vitest.beforeEach)(function () {
|
|
103
104
|
db = new import_node_sqlite.DatabaseSync(":memory:");
|
|
104
105
|
db.exec(["CREATE TABLE project (id TEXT PRIMARY KEY, ownerId TEXT NOT NULL, name TEXT NOT NULL);", "CREATE TABLE note_records (note_id TEXT PRIMARY KEY, done INTEGER NOT NULL, data TEXT);"].join("\n"));
|
|
105
106
|
retryNextTransaction = false;
|
|
107
|
+
statements = [];
|
|
106
108
|
var executor = {
|
|
107
109
|
async exec(sql) {
|
|
108
|
-
var params = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : []
|
|
109
|
-
|
|
110
|
+
var params = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [],
|
|
111
|
+
metadata = arguments.length > 2 ? arguments[2] : void 0;
|
|
112
|
+
if (metadata) statements.push(metadata);
|
|
113
|
+
var result = db.prepare(sql).run(...params);
|
|
114
|
+
return {
|
|
115
|
+
changes: Number(result.changes)
|
|
116
|
+
};
|
|
110
117
|
},
|
|
111
118
|
async query(sql) {
|
|
112
119
|
var params = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
|
|
@@ -178,12 +185,11 @@ function cleanupRequest() {
|
|
|
178
185
|
server: server2
|
|
179
186
|
} = param;
|
|
180
187
|
await tx.mutate.project.insert(value);
|
|
181
|
-
server2 === null || server2 === void 0 ? void 0 : server2.
|
|
182
|
-
(0, import_vitest.expect)(server2 === null || server2 === void 0 ? void 0 : server2.asyncTasks).toHaveLength(1);
|
|
183
|
-
server2 === null || server2 === void 0 ? void 0 : server2.asyncTasks.splice(0, 1, async function () {});
|
|
184
|
-
server2.asyncTasks[0] = async function () {
|
|
188
|
+
server2 === null || server2 === void 0 ? void 0 : server2.enqueueTask(async function () {
|
|
185
189
|
effectRuns++;
|
|
186
|
-
}
|
|
190
|
+
}, {
|
|
191
|
+
barrier: true
|
|
192
|
+
});
|
|
187
193
|
}
|
|
188
194
|
}
|
|
189
195
|
}
|
|
@@ -215,7 +221,8 @@ function cleanupRequest() {
|
|
|
215
221
|
lastMutationID: 1
|
|
216
222
|
}]);
|
|
217
223
|
(0, import_vitest.expect)(result.asyncTasks).toHaveLength(1);
|
|
218
|
-
|
|
224
|
+
(0, import_vitest.expect)(result.asyncTasks[0].barrier).toBe(true);
|
|
225
|
+
await result.asyncTasks[0].task();
|
|
219
226
|
(0, import_vitest.expect)(effectRuns).toBe(1);
|
|
220
227
|
});
|
|
221
228
|
(0, import_vitest.test)("rolls back row writes and persists an application error with its LMID", async function () {
|
|
@@ -404,6 +411,23 @@ function cleanupRequest() {
|
|
|
404
411
|
id: "n1"
|
|
405
412
|
});
|
|
406
413
|
(0, import_vitest.expect)(db.prepare("SELECT * FROM note_records").all()).toEqual([]);
|
|
414
|
+
(0, import_vitest.expect)(statements).toEqual([{
|
|
415
|
+
table: "note_records",
|
|
416
|
+
publicTable: "note",
|
|
417
|
+
kind: "insert"
|
|
418
|
+
}, {
|
|
419
|
+
table: "note_records",
|
|
420
|
+
publicTable: "note",
|
|
421
|
+
kind: "upsert"
|
|
422
|
+
}, {
|
|
423
|
+
table: "note_records",
|
|
424
|
+
publicTable: "note",
|
|
425
|
+
kind: "update"
|
|
426
|
+
}, {
|
|
427
|
+
table: "note_records",
|
|
428
|
+
publicTable: "note",
|
|
429
|
+
kind: "delete"
|
|
430
|
+
}]);
|
|
407
431
|
});
|
|
408
432
|
(0, import_vitest.test)("decodes destination rows through a hidden two-hop junction", async function () {
|
|
409
433
|
var server = (0, import_createZeroSQLiteServer.createZeroSQLiteServer)({
|
|
@@ -437,7 +461,11 @@ function cleanupRequest() {
|
|
|
437
461
|
};
|
|
438
462
|
var receivedQueryName;
|
|
439
463
|
var hydratedExecutor = {
|
|
440
|
-
async exec() {
|
|
464
|
+
async exec() {
|
|
465
|
+
return {
|
|
466
|
+
changes: 0
|
|
467
|
+
};
|
|
468
|
+
},
|
|
441
469
|
async query() {
|
|
442
470
|
return [];
|
|
443
471
|
},
|