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
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
import { createBuilder } from "@rocicorp/zero";
|
|
2
|
+
import { asQueryInternals } from "@rocicorp/zero/bindings";
|
|
3
|
+
function _type_of(obj) {
|
|
4
|
+
"@swc/helpers - typeof";
|
|
5
|
+
|
|
6
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
7
|
+
}
|
|
8
|
+
function createSQLiteDatabase(options) {
|
|
9
|
+
return {
|
|
10
|
+
async transaction(callback, input) {
|
|
11
|
+
var committedLedgers = /* @__PURE__ */new Set();
|
|
12
|
+
var value = await options.transactionProvider(async function (executor) {
|
|
13
|
+
var attemptLedgers = /* @__PURE__ */new Set();
|
|
14
|
+
var ensureLedger = async function (upstreamSchema) {
|
|
15
|
+
var tables = options.ledgerTables(upstreamSchema);
|
|
16
|
+
var key2 = ledgerKey(tables);
|
|
17
|
+
if (options.initializedLedgers.has(key2) || attemptLedgers.has(key2)) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
await createLedgerTables(executor, tables);
|
|
21
|
+
attemptLedgers.add(key2);
|
|
22
|
+
};
|
|
23
|
+
var transaction = createZeroSQLiteTransaction(options, executor, input);
|
|
24
|
+
var result = await callback(transaction, createLedgerHooks(options, executor, ensureLedger, input));
|
|
25
|
+
committedLedgers = attemptLedgers;
|
|
26
|
+
return result;
|
|
27
|
+
});
|
|
28
|
+
var _iteratorNormalCompletion = true,
|
|
29
|
+
_didIteratorError = false,
|
|
30
|
+
_iteratorError = void 0;
|
|
31
|
+
try {
|
|
32
|
+
for (var _iterator = committedLedgers[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
33
|
+
var key = _step.value;
|
|
34
|
+
options.initializedLedgers.add(key);
|
|
35
|
+
}
|
|
36
|
+
} catch (err) {
|
|
37
|
+
_didIteratorError = true;
|
|
38
|
+
_iteratorError = err;
|
|
39
|
+
} finally {
|
|
40
|
+
try {
|
|
41
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
42
|
+
_iterator.return();
|
|
43
|
+
}
|
|
44
|
+
} finally {
|
|
45
|
+
if (_didIteratorError) {
|
|
46
|
+
throw _iteratorError;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function createZeroSQLiteTransaction(options, executor, input) {
|
|
55
|
+
var _options_encodeValue;
|
|
56
|
+
var transactionOptions = {
|
|
57
|
+
encodeValue: (_options_encodeValue = options.encodeValue) !== null && _options_encodeValue !== void 0 ? _options_encodeValue : encodeSQLiteValue,
|
|
58
|
+
schema: options.schema
|
|
59
|
+
};
|
|
60
|
+
var _input_clientID;
|
|
61
|
+
var clientID = (_input_clientID = input === null || input === void 0 ? void 0 : input.clientID) !== null && _input_clientID !== void 0 ? _input_clientID : "";
|
|
62
|
+
var _input_mutationID;
|
|
63
|
+
var mutationID = (_input_mutationID = input === null || input === void 0 ? void 0 : input.mutationID) !== null && _input_mutationID !== void 0 ? _input_mutationID : 0;
|
|
64
|
+
var mutate = new Proxy({}, {
|
|
65
|
+
get(_target, tableKey) {
|
|
66
|
+
var tableName = String(tableKey);
|
|
67
|
+
if (!options.schema.tables[tableName]) {
|
|
68
|
+
throw new Error(`unknown SQLite mutation table ${tableName}`);
|
|
69
|
+
}
|
|
70
|
+
return new Proxy({}, {
|
|
71
|
+
get(_innerTarget, kindKey) {
|
|
72
|
+
var kind = String(kindKey);
|
|
73
|
+
if (!isCrudKind(kind)) return;
|
|
74
|
+
return function (value) {
|
|
75
|
+
return executeCrud(transactionOptions, executor, tableName, kind, value);
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
var runQuery = function (ast, format, queryName) {
|
|
82
|
+
return Promise.resolve(executor.queryAst(ast, format, queryName));
|
|
83
|
+
};
|
|
84
|
+
var dbTransaction = {
|
|
85
|
+
wrappedTransaction: executor,
|
|
86
|
+
query: function (sql, args) {
|
|
87
|
+
return executor.query(sql, args);
|
|
88
|
+
},
|
|
89
|
+
runQuery
|
|
90
|
+
};
|
|
91
|
+
return {
|
|
92
|
+
clientID,
|
|
93
|
+
dbTransaction,
|
|
94
|
+
location: "server",
|
|
95
|
+
mutate,
|
|
96
|
+
mutationID,
|
|
97
|
+
query: transactionOptions.schema.enableLegacyQueries ? createLegacyQueryBuilder(transactionOptions.schema, function (query) {
|
|
98
|
+
var _internals_customQueryID;
|
|
99
|
+
var internals = asQueryInternals(query);
|
|
100
|
+
return runQuery(internals.ast, internals.format, (_internals_customQueryID = internals.customQueryID) === null || _internals_customQueryID === void 0 ? void 0 : _internals_customQueryID.name);
|
|
101
|
+
}) : void 0,
|
|
102
|
+
reason: "authoritative",
|
|
103
|
+
async run(query) {
|
|
104
|
+
var _internals_customQueryID;
|
|
105
|
+
var internals = asQueryInternals(query);
|
|
106
|
+
return runQuery(internals.ast, internals.format, (_internals_customQueryID = internals.customQueryID) === null || _internals_customQueryID === void 0 ? void 0 : _internals_customQueryID.name);
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
function isCrudKind(value) {
|
|
111
|
+
return value === "delete" || value === "insert" || value === "update" || value === "upsert";
|
|
112
|
+
}
|
|
113
|
+
async function executeCrud(options, executor, tableName, kind, raw) {
|
|
114
|
+
if (!raw || (typeof raw === "undefined" ? "undefined" : _type_of(raw)) !== "object" || Array.isArray(raw)) {
|
|
115
|
+
throw new Error(`${tableName}.${kind} expects an object`);
|
|
116
|
+
}
|
|
117
|
+
var table = options.schema.tables[tableName];
|
|
118
|
+
var values = Object.fromEntries(Object.entries(raw).filter(function (param) {
|
|
119
|
+
var [, value] = param;
|
|
120
|
+
return value !== void 0;
|
|
121
|
+
}));
|
|
122
|
+
var _iteratorNormalCompletion = true,
|
|
123
|
+
_didIteratorError = false,
|
|
124
|
+
_iteratorError = void 0;
|
|
125
|
+
try {
|
|
126
|
+
for (var _iterator = Object.keys(values)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
127
|
+
var columnName = _step.value;
|
|
128
|
+
if (!table.columns[columnName]) {
|
|
129
|
+
throw new Error(`unknown SQLite column ${tableName}.${columnName}`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
} catch (err) {
|
|
133
|
+
_didIteratorError = true;
|
|
134
|
+
_iteratorError = err;
|
|
135
|
+
} finally {
|
|
136
|
+
try {
|
|
137
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
138
|
+
_iterator.return();
|
|
139
|
+
}
|
|
140
|
+
} finally {
|
|
141
|
+
if (_didIteratorError) {
|
|
142
|
+
throw _iteratorError;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
var primaryValues = table.primaryKey.map(function (columnName2) {
|
|
147
|
+
if (!(columnName2 in values)) {
|
|
148
|
+
throw new Error(`${tableName}.${kind} is missing primary key ${columnName2}`);
|
|
149
|
+
}
|
|
150
|
+
return encodeColumn(options, tableName, columnName2, values[columnName2]);
|
|
151
|
+
});
|
|
152
|
+
var primaryWhere = table.primaryKey.map(function (columnName2) {
|
|
153
|
+
return `${quoteSQLiteIdentifier(serverColumn(table, columnName2))} = ?`;
|
|
154
|
+
}).join(" AND ");
|
|
155
|
+
var _table_serverName;
|
|
156
|
+
var serverTableName = quoteSQLiteIdentifier((_table_serverName = table.serverName) !== null && _table_serverName !== void 0 ? _table_serverName : table.name);
|
|
157
|
+
if (kind === "delete") {
|
|
158
|
+
var _table_serverName1;
|
|
159
|
+
await executor.exec(`DELETE FROM ${serverTableName} WHERE ${primaryWhere}`, primaryValues, {
|
|
160
|
+
table: (_table_serverName1 = table.serverName) !== null && _table_serverName1 !== void 0 ? _table_serverName1 : table.name,
|
|
161
|
+
publicTable: tableName,
|
|
162
|
+
kind
|
|
163
|
+
});
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
var columnNames = Object.keys(values);
|
|
167
|
+
if (columnNames.length === 0) {
|
|
168
|
+
throw new Error(`${tableName}.${kind} has no values`);
|
|
169
|
+
}
|
|
170
|
+
var serverColumns = columnNames.map(function (columnName2) {
|
|
171
|
+
return quoteSQLiteIdentifier(serverColumn(table, columnName2));
|
|
172
|
+
});
|
|
173
|
+
var params = columnNames.map(function (columnName2) {
|
|
174
|
+
return encodeColumn(options, tableName, columnName2, values[columnName2]);
|
|
175
|
+
});
|
|
176
|
+
var insert = `INSERT INTO ${serverTableName} (${serverColumns.join(", ")}) VALUES (${columnNames.map(function () {
|
|
177
|
+
return "?";
|
|
178
|
+
}).join(", ")})`;
|
|
179
|
+
if (kind === "insert") {
|
|
180
|
+
var _table_serverName2;
|
|
181
|
+
await executor.exec(insert, params, {
|
|
182
|
+
table: (_table_serverName2 = table.serverName) !== null && _table_serverName2 !== void 0 ? _table_serverName2 : table.name,
|
|
183
|
+
publicTable: tableName,
|
|
184
|
+
kind
|
|
185
|
+
});
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
if (kind === "upsert") {
|
|
189
|
+
var mutableColumns = columnNames.filter(function (columnName2) {
|
|
190
|
+
return !table.primaryKey.includes(columnName2);
|
|
191
|
+
});
|
|
192
|
+
var conflictColumns = table.primaryKey.map(function (columnName2) {
|
|
193
|
+
return quoteSQLiteIdentifier(serverColumn(table, columnName2));
|
|
194
|
+
}).join(", ");
|
|
195
|
+
var conflictAction = mutableColumns.length === 0 ? "DO NOTHING" : `DO UPDATE SET ${mutableColumns.map(function (columnName2) {
|
|
196
|
+
var column = quoteSQLiteIdentifier(serverColumn(table, columnName2));
|
|
197
|
+
return `${column} = excluded.${column}`;
|
|
198
|
+
}).join(", ")}`;
|
|
199
|
+
var _table_serverName3;
|
|
200
|
+
await executor.exec(`${insert} ON CONFLICT (${conflictColumns}) ${conflictAction}`, params, {
|
|
201
|
+
table: (_table_serverName3 = table.serverName) !== null && _table_serverName3 !== void 0 ? _table_serverName3 : table.name,
|
|
202
|
+
publicTable: tableName,
|
|
203
|
+
kind
|
|
204
|
+
});
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
var mutableColumns1 = columnNames.filter(function (columnName2) {
|
|
208
|
+
return !table.primaryKey.includes(columnName2);
|
|
209
|
+
});
|
|
210
|
+
if (mutableColumns1.length === 0) return;
|
|
211
|
+
var _table_serverName4;
|
|
212
|
+
await executor.exec(`UPDATE ${serverTableName} SET ${mutableColumns1.map(function (columnName2) {
|
|
213
|
+
return `${quoteSQLiteIdentifier(serverColumn(table, columnName2))} = ?`;
|
|
214
|
+
}).join(", ")} WHERE ${primaryWhere}`, [...mutableColumns1.map(function (columnName2) {
|
|
215
|
+
return encodeColumn(options, tableName, columnName2, values[columnName2]);
|
|
216
|
+
}), ...primaryValues], {
|
|
217
|
+
table: (_table_serverName4 = table.serverName) !== null && _table_serverName4 !== void 0 ? _table_serverName4 : table.name,
|
|
218
|
+
publicTable: tableName,
|
|
219
|
+
kind
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
function serverColumn(table, columnName) {
|
|
223
|
+
var column = table.columns[columnName];
|
|
224
|
+
if (!column) throw new Error(`unknown SQLite column ${table.name}.${columnName}`);
|
|
225
|
+
var _column_serverName;
|
|
226
|
+
return (_column_serverName = column.serverName) !== null && _column_serverName !== void 0 ? _column_serverName : columnName;
|
|
227
|
+
}
|
|
228
|
+
function encodeColumn(options, tableName, columnName, value) {
|
|
229
|
+
return options.encodeValue(value, {
|
|
230
|
+
column: options.schema.tables[tableName].columns[columnName],
|
|
231
|
+
columnName,
|
|
232
|
+
tableName
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
function createLegacyQueryBuilder(schema, run) {
|
|
236
|
+
var builder = createBuilder(schema);
|
|
237
|
+
return new Proxy(builder, {
|
|
238
|
+
get(target, property) {
|
|
239
|
+
return makeRunnableQuery(Reflect.get(target, property, target), run);
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
function makeRunnableQuery(query, run) {
|
|
244
|
+
if (!isQueryBuilder(query)) return query;
|
|
245
|
+
return new Proxy(query, {
|
|
246
|
+
get(target, property) {
|
|
247
|
+
if (property === "run") return function () {
|
|
248
|
+
return run(target);
|
|
249
|
+
};
|
|
250
|
+
if (property === "materialize" || property === "preload") {
|
|
251
|
+
return function () {
|
|
252
|
+
throw new Error(`${String(property)}() is not supported in server transactions`);
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
var value = Reflect.get(target, property, target);
|
|
256
|
+
if (typeof value !== "function") return value;
|
|
257
|
+
return function () {
|
|
258
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
259
|
+
args[_key] = arguments[_key];
|
|
260
|
+
}
|
|
261
|
+
return makeRunnableQuery(Reflect.apply(value, target, args), run);
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
function isQueryBuilder(value) {
|
|
267
|
+
if (!value || (typeof value === "undefined" ? "undefined" : _type_of(value)) !== "object") return false;
|
|
268
|
+
try {
|
|
269
|
+
asQueryInternals(value);
|
|
270
|
+
return true;
|
|
271
|
+
} catch (e) {
|
|
272
|
+
return false;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
function createLedgerHooks(options, executor, ensureLedger, input) {
|
|
276
|
+
var _input_upstreamSchema;
|
|
277
|
+
var upstreamSchema = (_input_upstreamSchema = input === null || input === void 0 ? void 0 : input.upstreamSchema) !== null && _input_upstreamSchema !== void 0 ? _input_upstreamSchema : "";
|
|
278
|
+
var _input_clientGroupID;
|
|
279
|
+
var clientGroupID = (_input_clientGroupID = input === null || input === void 0 ? void 0 : input.clientGroupID) !== null && _input_clientGroupID !== void 0 ? _input_clientGroupID : "";
|
|
280
|
+
var _input_clientID;
|
|
281
|
+
var clientID = (_input_clientID = input === null || input === void 0 ? void 0 : input.clientID) !== null && _input_clientID !== void 0 ? _input_clientID : "";
|
|
282
|
+
var tables = options.ledgerTables(upstreamSchema);
|
|
283
|
+
var clientsTable = quoteSQLiteIdentifier(tables.clients);
|
|
284
|
+
var mutationsTable = quoteSQLiteIdentifier(tables.mutations);
|
|
285
|
+
return {
|
|
286
|
+
async updateClientMutationID() {
|
|
287
|
+
var _rows_;
|
|
288
|
+
await ensureLedger(upstreamSchema);
|
|
289
|
+
var rows = await executor.query(`INSERT INTO ${clientsTable}
|
|
290
|
+
(clientGroupID, clientID, lastMutationID)
|
|
291
|
+
VALUES (?, ?, 1)
|
|
292
|
+
ON CONFLICT (clientGroupID, clientID)
|
|
293
|
+
DO UPDATE SET lastMutationID = lastMutationID + 1
|
|
294
|
+
RETURNING lastMutationID`, [clientGroupID, clientID]);
|
|
295
|
+
var lastMutationID = (_rows_ = rows[0]) === null || _rows_ === void 0 ? void 0 : _rows_.lastMutationID;
|
|
296
|
+
if (typeof lastMutationID !== "number" && (typeof lastMutationID === "undefined" ? "undefined" : _type_of(lastMutationID)) !== "bigint") {
|
|
297
|
+
throw new Error("SQLite mutation ledger returned no lastMutationID");
|
|
298
|
+
}
|
|
299
|
+
return {
|
|
300
|
+
lastMutationID
|
|
301
|
+
};
|
|
302
|
+
},
|
|
303
|
+
async writeMutationResult(result) {
|
|
304
|
+
await ensureLedger(upstreamSchema);
|
|
305
|
+
await executor.exec(`INSERT INTO ${mutationsTable}
|
|
306
|
+
(clientGroupID, clientID, mutationID, result)
|
|
307
|
+
VALUES (?, ?, ?, ?)`, [clientGroupID, result.id.clientID, result.id.id, JSON.stringify(result.result)]);
|
|
308
|
+
},
|
|
309
|
+
async deleteMutationResults(args) {
|
|
310
|
+
await ensureLedger(upstreamSchema);
|
|
311
|
+
if ("type" in args && args.type === "bulk") {
|
|
312
|
+
if (args.clientIDs.length === 0) return;
|
|
313
|
+
await executor.exec(`DELETE FROM ${mutationsTable}
|
|
314
|
+
WHERE clientGroupID = ?
|
|
315
|
+
AND clientID IN (${args.clientIDs.map(function () {
|
|
316
|
+
return "?";
|
|
317
|
+
}).join(", ")})`, [args.clientGroupID, ...args.clientIDs]);
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
await executor.exec(`DELETE FROM ${mutationsTable}
|
|
321
|
+
WHERE clientGroupID = ?
|
|
322
|
+
AND clientID = ?
|
|
323
|
+
AND mutationID <= ?`, [args.clientGroupID, args.clientID, args.upToMutationID]);
|
|
324
|
+
}
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
async function persistAlreadyProcessedMutationResults(options, param) {
|
|
328
|
+
var {
|
|
329
|
+
clientGroupID,
|
|
330
|
+
mutations,
|
|
331
|
+
upstreamSchema
|
|
332
|
+
} = param;
|
|
333
|
+
var tables = options.ledgerTables(upstreamSchema);
|
|
334
|
+
var table = quoteSQLiteIdentifier(tables.mutations);
|
|
335
|
+
var key = ledgerKey(tables);
|
|
336
|
+
await options.transactionProvider(async function (executor) {
|
|
337
|
+
if (!options.initializedLedgers.has(key)) {
|
|
338
|
+
await createLedgerTables(executor, tables);
|
|
339
|
+
}
|
|
340
|
+
var _iteratorNormalCompletion = true,
|
|
341
|
+
_didIteratorError = false,
|
|
342
|
+
_iteratorError = void 0;
|
|
343
|
+
try {
|
|
344
|
+
for (var _iterator = mutations[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
345
|
+
var mutation = _step.value;
|
|
346
|
+
await executor.exec(`INSERT INTO ${table}
|
|
347
|
+
(clientGroupID, clientID, mutationID, result)
|
|
348
|
+
VALUES (?, ?, ?, ?)
|
|
349
|
+
ON CONFLICT (clientGroupID, clientID, mutationID) DO NOTHING`, [clientGroupID, mutation.id.clientID, mutation.id.id, JSON.stringify(mutation.result)]);
|
|
350
|
+
}
|
|
351
|
+
} catch (err) {
|
|
352
|
+
_didIteratorError = true;
|
|
353
|
+
_iteratorError = err;
|
|
354
|
+
} finally {
|
|
355
|
+
try {
|
|
356
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
357
|
+
_iterator.return();
|
|
358
|
+
}
|
|
359
|
+
} finally {
|
|
360
|
+
if (_didIteratorError) {
|
|
361
|
+
throw _iteratorError;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
options.initializedLedgers.add(key);
|
|
367
|
+
}
|
|
368
|
+
async function createLedgerTables(executor, tables) {
|
|
369
|
+
await executor.exec(`CREATE TABLE IF NOT EXISTS ${quoteSQLiteIdentifier(tables.clients)} (
|
|
370
|
+
clientGroupID TEXT NOT NULL,
|
|
371
|
+
clientID TEXT NOT NULL,
|
|
372
|
+
lastMutationID INTEGER NOT NULL,
|
|
373
|
+
PRIMARY KEY (clientGroupID, clientID)
|
|
374
|
+
)`);
|
|
375
|
+
await executor.exec(`CREATE TABLE IF NOT EXISTS ${quoteSQLiteIdentifier(tables.mutations)} (
|
|
376
|
+
clientGroupID TEXT NOT NULL,
|
|
377
|
+
clientID TEXT NOT NULL,
|
|
378
|
+
mutationID INTEGER NOT NULL,
|
|
379
|
+
result TEXT NOT NULL,
|
|
380
|
+
PRIMARY KEY (clientGroupID, clientID, mutationID)
|
|
381
|
+
)`);
|
|
382
|
+
}
|
|
383
|
+
function ledgerKey(tables) {
|
|
384
|
+
return `${tables.clients}\0${tables.mutations}`;
|
|
385
|
+
}
|
|
386
|
+
function defaultLedgerTables(upstreamSchema) {
|
|
387
|
+
var prefix = upstreamSchema ? `${upstreamSchema}_` : "";
|
|
388
|
+
return {
|
|
389
|
+
clients: `${prefix}clients`,
|
|
390
|
+
mutations: `${prefix}mutations`
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
function encodeSQLiteValue(value, param) {
|
|
394
|
+
var {
|
|
395
|
+
column
|
|
396
|
+
} = param;
|
|
397
|
+
if (value === null) return null;
|
|
398
|
+
if (column.type === "boolean") return value ? 1 : 0;
|
|
399
|
+
if (column.type === "json") return JSON.stringify(value);
|
|
400
|
+
return value;
|
|
401
|
+
}
|
|
402
|
+
function quoteSQLiteIdentifier(value) {
|
|
403
|
+
return `"${value.replaceAll('"', '""')}"`;
|
|
404
|
+
}
|
|
405
|
+
export { createSQLiteDatabase, createZeroSQLiteTransaction, defaultLedgerTables, encodeSQLiteValue, persistAlreadyProcessedMutationResults };
|
|
406
|
+
//# sourceMappingURL=sqliteRuntime.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createBuilder","asQueryInternals","_type_of","obj","Symbol","constructor","createSQLiteDatabase","options","transaction","callback","input","committedLedgers","Set","value","transactionProvider","executor","attemptLedgers","ensureLedger","upstreamSchema","tables","ledgerTables","key2","ledgerKey","initializedLedgers","has","createLedgerTables","add","createZeroSQLiteTransaction","result","createLedgerHooks","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","key","err","return","_options_encodeValue","transactionOptions","encodeValue","encodeSQLiteValue","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","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","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":"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","ignoreList":[]}
|
package/dist/esm/syncHost.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { asQueryInternals } from "@rocicorp/zero/bindings";
|
|
2
2
|
import { createPermissions } from "./createPermissions.mjs";
|
|
3
|
-
import { resolveServerQuery } from "./
|
|
4
|
-
import {
|
|
3
|
+
import { createZeroDirectServer, resolveServerQuery } from "./createZeroDirectServer.mjs";
|
|
4
|
+
import { createSQLiteDatabase, createZeroSQLiteTransaction, defaultLedgerTables, encodeSQLiteValue } from "./sqliteRuntime.mjs";
|
|
5
5
|
import { createMutators } from "./helpers/createMutators.mjs";
|
|
6
6
|
import { runWithAuthScope } from "./helpers/mutatorContext.mjs";
|
|
7
7
|
import { runWithQueryContext } from "./helpers/queryContext.mjs";
|
|
@@ -35,9 +35,14 @@ function createZeroSyncHostAdapter({
|
|
|
35
35
|
for (const mutatorName of Object.keys(model.mutate ?? {})) {
|
|
36
36
|
mutators[`${modelName}|${mutatorName}`] = async (executor, args, context) => {
|
|
37
37
|
const authData = mapAuthData(context.claims);
|
|
38
|
-
const
|
|
38
|
+
const asyncTaskEntries = [];
|
|
39
39
|
const modelMutators = createMutators({
|
|
40
|
-
|
|
40
|
+
enqueueTask(task, opts) {
|
|
41
|
+
asyncTaskEntries.push({
|
|
42
|
+
task,
|
|
43
|
+
barrier: opts?.barrier === true
|
|
44
|
+
});
|
|
45
|
+
},
|
|
41
46
|
authData,
|
|
42
47
|
can: permissions.can,
|
|
43
48
|
createServerActions: options.createServerActions,
|
|
@@ -60,17 +65,26 @@ function createZeroSyncHostAdapter({
|
|
|
60
65
|
} catch (error) {
|
|
61
66
|
throw asMutationApplicationError(error);
|
|
62
67
|
}
|
|
63
|
-
for (const
|
|
68
|
+
for (const {
|
|
69
|
+
task
|
|
70
|
+
} of asyncTaskEntries) {
|
|
64
71
|
context.defer(() => runWithAuthScope(authData, task));
|
|
65
72
|
}
|
|
66
73
|
};
|
|
67
74
|
}
|
|
68
75
|
}
|
|
69
76
|
mutators._zero_cleanupResults = async () => {};
|
|
70
|
-
const
|
|
77
|
+
const transactionProvider = work => transaction(executor => work(toSQLiteExecutor(executor)));
|
|
78
|
+
const directDatabaseOptions = {
|
|
79
|
+
encodeValue: encodeValue ?? encodeSQLiteValue,
|
|
80
|
+
initializedLedgers: /* @__PURE__ */new Set(),
|
|
81
|
+
ledgerTables: defaultLedgerTables,
|
|
82
|
+
schema: options.schema,
|
|
83
|
+
transactionProvider
|
|
84
|
+
};
|
|
85
|
+
const direct = createZeroDirectServer({
|
|
71
86
|
...options,
|
|
72
|
-
|
|
73
|
-
transactionProvider: work => transaction(executor => work(toSQLiteExecutor(executor)))
|
|
87
|
+
createDatabase: () => createSQLiteDatabase(directDatabaseOptions)
|
|
74
88
|
});
|
|
75
89
|
return {
|
|
76
90
|
mutators: Object.freeze(mutators),
|
|
@@ -106,8 +120,8 @@ function defaultMapAuthData(claims) {
|
|
|
106
120
|
}
|
|
107
121
|
function toSQLiteExecutor(executor) {
|
|
108
122
|
return {
|
|
109
|
-
exec(sql, params) {
|
|
110
|
-
return executor.exec(sql, params);
|
|
123
|
+
exec(sql, params, metadata) {
|
|
124
|
+
return executor.exec(sql, params, metadata);
|
|
111
125
|
},
|
|
112
126
|
query(sql, params) {
|
|
113
127
|
return executor.query(sql, params);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["asQueryInternals","createPermissions","resolveServerQuery","
|
|
1
|
+
{"version":3,"names":["asQueryInternals","createPermissions","createZeroDirectServer","resolveServerQuery","createSQLiteDatabase","createZeroSQLiteTransaction","defaultLedgerTables","encodeSQLiteValue","createMutators","runWithAuthScope","runWithQueryContext","setEnvironment","setSchema","MutationApplicationError","Error","constructor","details","message","name","createZeroSyncHostAdapter","encodeValue","mapAuthData","defaultMapAuthData","transaction","options","schema","permissions","environment","adminRoleMode","defaultAllowAdminRole","transactionOptions","mutators","modelName","model","Object","entries","models","mutatorName","keys","mutate","executor","args","context","authData","claims","asyncTaskEntries","modelMutators","enqueueTask","task","opts","push","barrier","can","createServerActions","mutationValidators","mutations","validateMutation","mutation","mutationID","numericMutationID","onZeroTransaction","toSQLiteExecutor","clientGroupID","clientID","upstreamSchema","error","asMutationApplicationError","defer","_zero_cleanupResults","transactionProvider","work","directDatabaseOptions","initializedLedgers","Set","ledgerTables","direct","createDatabase","freeze","resolveQuery","queries","query","validateQuery","ast","server","id","userID","exec","sql","params","metadata","queryAst","format","queryName","value","numeric","Number","isSafeInteger","TypeError","String","applicationError","stack"],"sources":["../../src/syncHost.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { asQueryInternals } from "@rocicorp/zero/bindings";
|
|
2
2
|
import { createPermissions } from "./createPermissions.native.js";
|
|
3
|
-
import { resolveServerQuery } from "./
|
|
4
|
-
import {
|
|
3
|
+
import { createZeroDirectServer, resolveServerQuery } from "./createZeroDirectServer.native.js";
|
|
4
|
+
import { createSQLiteDatabase, createZeroSQLiteTransaction, defaultLedgerTables, encodeSQLiteValue } from "./sqliteRuntime.native.js";
|
|
5
5
|
import { createMutators } from "./helpers/createMutators.native.js";
|
|
6
6
|
import { runWithAuthScope } from "./helpers/mutatorContext.native.js";
|
|
7
7
|
import { runWithQueryContext } from "./helpers/queryContext.native.js";
|
|
@@ -180,9 +180,14 @@ function createZeroSyncHostAdapter(param) {
|
|
|
180
180
|
mutators[`${modelName}|${mutatorName}`] = async function (executor, args, context) {
|
|
181
181
|
var _modelMutators_modelName;
|
|
182
182
|
var authData = mapAuthData(context.claims);
|
|
183
|
-
var
|
|
183
|
+
var asyncTaskEntries = [];
|
|
184
184
|
var modelMutators = createMutators({
|
|
185
|
-
|
|
185
|
+
enqueueTask(task, opts) {
|
|
186
|
+
asyncTaskEntries.push({
|
|
187
|
+
task,
|
|
188
|
+
barrier: (opts === null || opts === void 0 ? void 0 : opts.barrier) === true
|
|
189
|
+
});
|
|
190
|
+
},
|
|
186
191
|
authData,
|
|
187
192
|
can: permissions.can,
|
|
188
193
|
createServerActions: options.createServerActions,
|
|
@@ -211,12 +216,14 @@ function createZeroSyncHostAdapter(param) {
|
|
|
211
216
|
_iteratorError3 = void 0;
|
|
212
217
|
try {
|
|
213
218
|
var _loop3 = function () {
|
|
214
|
-
var
|
|
219
|
+
var {
|
|
220
|
+
task
|
|
221
|
+
} = _step2.value;
|
|
215
222
|
context.defer(function () {
|
|
216
223
|
return runWithAuthScope(authData, task);
|
|
217
224
|
});
|
|
218
225
|
};
|
|
219
|
-
for (var _iterator3 =
|
|
226
|
+
for (var _iterator3 = asyncTaskEntries[Symbol.iterator](), _step2; !(_iteratorNormalCompletion3 = (_step2 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) _loop3();
|
|
220
227
|
} catch (err) {
|
|
221
228
|
_didIteratorError3 = true;
|
|
222
229
|
_iteratorError3 = err;
|
|
@@ -265,13 +272,22 @@ function createZeroSyncHostAdapter(param) {
|
|
|
265
272
|
}
|
|
266
273
|
}
|
|
267
274
|
mutators._zero_cleanupResults = async function () {};
|
|
268
|
-
var
|
|
275
|
+
var transactionProvider = function (work) {
|
|
276
|
+
return transaction(function (executor) {
|
|
277
|
+
return work(toSQLiteExecutor(executor));
|
|
278
|
+
});
|
|
279
|
+
};
|
|
280
|
+
var directDatabaseOptions = {
|
|
281
|
+
encodeValue: encodeValue !== null && encodeValue !== void 0 ? encodeValue : encodeSQLiteValue,
|
|
282
|
+
initializedLedgers: /* @__PURE__ */new Set(),
|
|
283
|
+
ledgerTables: defaultLedgerTables,
|
|
284
|
+
schema: options.schema,
|
|
285
|
+
transactionProvider
|
|
286
|
+
};
|
|
287
|
+
var direct = createZeroDirectServer({
|
|
269
288
|
...options,
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
return transaction(function (executor) {
|
|
273
|
-
return work(toSQLiteExecutor(executor));
|
|
274
|
-
});
|
|
289
|
+
createDatabase: function () {
|
|
290
|
+
return createSQLiteDatabase(directDatabaseOptions);
|
|
275
291
|
}
|
|
276
292
|
});
|
|
277
293
|
return {
|
|
@@ -310,8 +326,8 @@ function defaultMapAuthData(claims) {
|
|
|
310
326
|
}
|
|
311
327
|
function toSQLiteExecutor(executor) {
|
|
312
328
|
return {
|
|
313
|
-
exec(sql, params) {
|
|
314
|
-
return executor.exec(sql, params);
|
|
329
|
+
exec(sql, params, metadata) {
|
|
330
|
+
return executor.exec(sql, params, metadata);
|
|
315
331
|
},
|
|
316
332
|
query(sql, params) {
|
|
317
333
|
return executor.query(sql, params);
|