on-zero 0.6.11 → 0.6.13

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 (131) hide show
  1. package/dist/cjs/createZeroSQLiteServer.cjs +319 -0
  2. package/dist/cjs/createZeroSQLiteServer.native.js +440 -0
  3. package/dist/cjs/createZeroSQLiteServer.native.js.map +1 -0
  4. package/dist/cjs/createZeroSQLiteServer.test.cjs +429 -0
  5. package/dist/cjs/createZeroSQLiteServer.test.native.js +466 -0
  6. package/dist/cjs/createZeroSQLiteServer.test.native.js.map +1 -0
  7. package/dist/cjs/createZeroServer.cjs +20 -234
  8. package/dist/cjs/createZeroServer.native.js +24 -250
  9. package/dist/cjs/createZeroServer.native.js.map +1 -1
  10. package/dist/cjs/createZeroServer.test.cjs +35 -1
  11. package/dist/cjs/createZeroServer.test.native.js +38 -1
  12. package/dist/cjs/createZeroServer.test.native.js.map +1 -1
  13. package/dist/cjs/createZeroServerCore.cjs +362 -0
  14. package/dist/cjs/createZeroServerCore.native.js +389 -0
  15. package/dist/cjs/createZeroServerCore.native.js.map +1 -0
  16. package/dist/cjs/generate-lite.cjs +1 -0
  17. package/dist/cjs/generate-lite.native.js +1 -0
  18. package/dist/cjs/generate-lite.native.js.map +1 -1
  19. package/dist/cjs/generate-lite.test.cjs +5 -1
  20. package/dist/cjs/generate-lite.test.native.js +5 -1
  21. package/dist/cjs/generate-lite.test.native.js.map +1 -1
  22. package/dist/cjs/generate.cjs +20 -11
  23. package/dist/cjs/generate.native.js +29 -21
  24. package/dist/cjs/generate.native.js.map +1 -1
  25. package/dist/cjs/generate.test.cjs +110 -0
  26. package/dist/cjs/generate.test.native.js +110 -0
  27. package/dist/cjs/generate.test.native.js.map +1 -1
  28. package/dist/cjs/httpPull/transport.test.cjs +44 -0
  29. package/dist/cjs/httpPull/transport.test.native.js +53 -0
  30. package/dist/cjs/httpPull/transport.test.native.js.map +1 -1
  31. package/dist/cjs/httpPullTransport.cjs +4 -1
  32. package/dist/cjs/httpPullTransport.native.js +5 -2
  33. package/dist/cjs/httpPullTransport.native.js.map +1 -1
  34. package/dist/cjs/server.cjs +2 -1
  35. package/dist/cjs/syncHost.cjs +164 -0
  36. package/dist/cjs/syncHost.native.js +371 -0
  37. package/dist/cjs/syncHost.native.js.map +1 -0
  38. package/dist/cjs/syncHost.test.cjs +229 -0
  39. package/dist/cjs/syncHost.test.native.js +278 -0
  40. package/dist/cjs/syncHost.test.native.js.map +1 -0
  41. package/dist/esm/createZeroSQLiteServer.mjs +293 -0
  42. package/dist/esm/createZeroSQLiteServer.mjs.map +1 -0
  43. package/dist/esm/createZeroSQLiteServer.native.js +411 -0
  44. package/dist/esm/createZeroSQLiteServer.native.js.map +1 -0
  45. package/dist/esm/createZeroSQLiteServer.test.mjs +430 -0
  46. package/dist/esm/createZeroSQLiteServer.test.mjs.map +1 -0
  47. package/dist/esm/createZeroSQLiteServer.test.native.js +464 -0
  48. package/dist/esm/createZeroSQLiteServer.test.native.js.map +1 -0
  49. package/dist/esm/createZeroServer.mjs +17 -231
  50. package/dist/esm/createZeroServer.mjs.map +1 -1
  51. package/dist/esm/createZeroServer.native.js +21 -247
  52. package/dist/esm/createZeroServer.native.js.map +1 -1
  53. package/dist/esm/createZeroServer.test.mjs +35 -1
  54. package/dist/esm/createZeroServer.test.mjs.map +1 -1
  55. package/dist/esm/createZeroServer.test.native.js +38 -1
  56. package/dist/esm/createZeroServer.test.native.js.map +1 -1
  57. package/dist/esm/createZeroServerCore.mjs +336 -0
  58. package/dist/esm/createZeroServerCore.mjs.map +1 -0
  59. package/dist/esm/createZeroServerCore.native.js +360 -0
  60. package/dist/esm/createZeroServerCore.native.js.map +1 -0
  61. package/dist/esm/generate-lite.mjs +1 -0
  62. package/dist/esm/generate-lite.mjs.map +1 -1
  63. package/dist/esm/generate-lite.native.js +1 -0
  64. package/dist/esm/generate-lite.native.js.map +1 -1
  65. package/dist/esm/generate-lite.test.mjs +5 -1
  66. package/dist/esm/generate-lite.test.mjs.map +1 -1
  67. package/dist/esm/generate-lite.test.native.js +5 -1
  68. package/dist/esm/generate-lite.test.native.js.map +1 -1
  69. package/dist/esm/generate.mjs +20 -11
  70. package/dist/esm/generate.mjs.map +1 -1
  71. package/dist/esm/generate.native.js +29 -21
  72. package/dist/esm/generate.native.js.map +1 -1
  73. package/dist/esm/generate.test.mjs +87 -1
  74. package/dist/esm/generate.test.mjs.map +1 -1
  75. package/dist/esm/generate.test.native.js +87 -1
  76. package/dist/esm/generate.test.native.js.map +1 -1
  77. package/dist/esm/httpPull/transport.test.mjs +44 -0
  78. package/dist/esm/httpPull/transport.test.mjs.map +1 -1
  79. package/dist/esm/httpPull/transport.test.native.js +53 -0
  80. package/dist/esm/httpPull/transport.test.native.js.map +1 -1
  81. package/dist/esm/httpPullTransport.mjs +4 -1
  82. package/dist/esm/httpPullTransport.mjs.map +1 -1
  83. package/dist/esm/httpPullTransport.native.js +5 -2
  84. package/dist/esm/httpPullTransport.native.js.map +1 -1
  85. package/dist/esm/server.mjs +1 -0
  86. package/dist/esm/server.mjs.map +1 -1
  87. package/dist/esm/syncHost.mjs +138 -0
  88. package/dist/esm/syncHost.mjs.map +1 -0
  89. package/dist/esm/syncHost.native.js +342 -0
  90. package/dist/esm/syncHost.native.js.map +1 -0
  91. package/dist/esm/syncHost.test.mjs +206 -0
  92. package/dist/esm/syncHost.test.mjs.map +1 -0
  93. package/dist/esm/syncHost.test.native.js +252 -0
  94. package/dist/esm/syncHost.test.native.js.map +1 -0
  95. package/package.json +19 -3
  96. package/readme.md +26 -0
  97. package/src/createZeroSQLiteServer.test.ts +461 -0
  98. package/src/createZeroSQLiteServer.ts +523 -0
  99. package/src/createZeroServer.test.ts +39 -1
  100. package/src/createZeroServer.ts +35 -428
  101. package/src/createZeroServerCore.ts +557 -0
  102. package/src/generate-lite.test.ts +4 -0
  103. package/src/generate-lite.ts +1 -0
  104. package/src/generate.test.ts +87 -1
  105. package/src/generate.ts +29 -20
  106. package/src/httpPull/transport.test.ts +47 -0
  107. package/src/httpPullTransport.ts +15 -1
  108. package/src/server.ts +1 -0
  109. package/src/syncHost.test.ts +216 -0
  110. package/src/syncHost.ts +255 -0
  111. package/test-fixtures/server-return-types.ts +50 -0
  112. package/test-fixtures/tsconfig.json +13 -0
  113. package/types/createZeroSQLiteServer.d.ts +37 -0
  114. package/types/createZeroSQLiteServer.d.ts.map +1 -0
  115. package/types/createZeroSQLiteServer.test.d.ts +2 -0
  116. package/types/createZeroSQLiteServer.test.d.ts.map +1 -0
  117. package/types/createZeroServer.d.ts +11 -293
  118. package/types/createZeroServer.d.ts.map +1 -1
  119. package/types/createZeroServerCore.d.ts +310 -0
  120. package/types/createZeroServerCore.d.ts.map +1 -0
  121. package/types/generate-lite.d.ts.map +1 -1
  122. package/types/generate.d.ts +2 -1
  123. package/types/generate.d.ts.map +1 -1
  124. package/types/httpPullTransport.d.ts +2 -0
  125. package/types/httpPullTransport.d.ts.map +1 -1
  126. package/types/server.d.ts +1 -0
  127. package/types/server.d.ts.map +1 -1
  128. package/types/syncHost.d.ts +51 -0
  129. package/types/syncHost.d.ts.map +1 -0
  130. package/types/syncHost.test.d.ts +2 -0
  131. package/types/syncHost.test.d.ts.map +1 -0
@@ -0,0 +1,466 @@
1
+ "use strict";
2
+
3
+ var import_node_sqlite = require("node:sqlite");
4
+ var import_zero = require("@rocicorp/zero");
5
+ var import_bindings = require("@rocicorp/zero/bindings");
6
+ var import_vitest = require("vitest");
7
+ var import_createZeroSQLiteServer = require("./createZeroSQLiteServer.native.js");
8
+ var import_fixtureSchema = require("./httpPull/fixtureSchema.native.js");
9
+ var note = (0, import_zero.table)("note").from("note_records").columns({
10
+ id: (0, import_zero.string)().from("note_id"),
11
+ done: (0, import_zero.boolean)(),
12
+ data: (0, import_zero.json)().optional()
13
+ }).primaryKey("id");
14
+ var sqliteTypesSchema = (0, import_zero.createSchema)({
15
+ tables: [note],
16
+ relationships: [],
17
+ enableLegacyQueries: true
18
+ });
19
+ var person = (0, import_zero.table)("person").columns({
20
+ id: (0, import_zero.string)()
21
+ }).primaryKey("id");
22
+ var membership = (0, import_zero.table)("membership").columns({
23
+ personId: (0, import_zero.string)(),
24
+ teamId: (0, import_zero.string)()
25
+ }).primaryKey("personId", "teamId");
26
+ var team = (0, import_zero.table)("team").from("team_records").columns({
27
+ id: (0, import_zero.string)().from("team_id"),
28
+ active: (0, import_zero.boolean)().from("is_active"),
29
+ metadata: (0, import_zero.json)().from("metadata_json")
30
+ }).primaryKey("id");
31
+ var twoHopSchema = (0, import_zero.createSchema)({
32
+ tables: [person, membership, team],
33
+ relationships: [(0, import_zero.relationships)(person, function (param) {
34
+ var {
35
+ many
36
+ } = param;
37
+ return {
38
+ teams: many({
39
+ sourceField: ["id"],
40
+ destSchema: membership,
41
+ destField: ["personId"]
42
+ }, {
43
+ sourceField: ["teamId"],
44
+ destSchema: team,
45
+ destField: ["id"]
46
+ })
47
+ };
48
+ })]
49
+ });
50
+ function pushRequest(id, name, args) {
51
+ return new Request("http://localhost/push?schema=zero_0&appID=zero", {
52
+ method: "POST",
53
+ headers: {
54
+ "content-type": "application/json"
55
+ },
56
+ body: JSON.stringify({
57
+ clientGroupID: "cg1",
58
+ mutations: [{
59
+ type: "custom",
60
+ id,
61
+ clientID: "client-a",
62
+ name,
63
+ args: [args],
64
+ timestamp: 1
65
+ }],
66
+ pushVersion: 1,
67
+ timestamp: 1,
68
+ requestID: "req-" + id
69
+ })
70
+ });
71
+ }
72
+ function cleanupRequest() {
73
+ return new Request("http://localhost/push?schema=zero_0&appID=zero", {
74
+ method: "POST",
75
+ headers: {
76
+ "content-type": "application/json"
77
+ },
78
+ body: JSON.stringify({
79
+ clientGroupID: "cg1",
80
+ mutations: [{
81
+ type: "custom",
82
+ id: 2,
83
+ clientID: "client-a",
84
+ name: "_zero_cleanupResults",
85
+ args: [{
86
+ clientGroupID: "cg1",
87
+ clientID: "client-a",
88
+ upToMutationID: 1
89
+ }],
90
+ timestamp: 1
91
+ }],
92
+ pushVersion: 1,
93
+ timestamp: 1,
94
+ requestID: "cleanup"
95
+ })
96
+ });
97
+ }
98
+ (0, import_vitest.describe)("createZeroSQLiteServer", function () {
99
+ var db;
100
+ var retryNextTransaction;
101
+ var transactionProvider;
102
+ (0, import_vitest.beforeEach)(function () {
103
+ db = new import_node_sqlite.DatabaseSync(":memory:");
104
+ 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
+ retryNextTransaction = false;
106
+ var executor = {
107
+ async exec(sql) {
108
+ var params = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
109
+ db.prepare(sql).run(...params);
110
+ },
111
+ async query(sql) {
112
+ var params = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
113
+ return db.prepare(sql).all(...params);
114
+ },
115
+ async queryAst(ast, format) {
116
+ var rows;
117
+ if (ast.table === "project") {
118
+ rows = db.prepare("SELECT * FROM project ORDER BY id").all();
119
+ } else if (ast.table === "note") {
120
+ rows = db.prepare("SELECT note_id, done, data FROM note_records ORDER BY note_id").all().map(function (row) {
121
+ return {
122
+ id: row.note_id,
123
+ done: row.done !== 0,
124
+ data: typeof row.data === "string" ? JSON.parse(row.data) : row.data
125
+ };
126
+ });
127
+ } else if (ast.table === "person") {
128
+ rows = [{
129
+ id: "p1",
130
+ teams: [{
131
+ id: "t1",
132
+ active: true,
133
+ metadata: {
134
+ label: "core"
135
+ }
136
+ }]
137
+ }];
138
+ } else {
139
+ throw new Error("unexpected table " + ast.table);
140
+ }
141
+ return format.singular ? rows[0] : rows;
142
+ }
143
+ };
144
+ var run = async function (callback) {
145
+ db.exec("BEGIN");
146
+ try {
147
+ var value = await callback(executor);
148
+ db.exec("COMMIT");
149
+ return value;
150
+ } catch (error) {
151
+ db.exec("ROLLBACK");
152
+ throw error;
153
+ }
154
+ };
155
+ transactionProvider = async function (callback) {
156
+ if (retryNextTransaction) {
157
+ retryNextTransaction = false;
158
+ db.exec("BEGIN");
159
+ await callback(executor);
160
+ db.exec("ROLLBACK");
161
+ }
162
+ return run(callback);
163
+ };
164
+ });
165
+ (0, import_vitest.afterEach)(function () {
166
+ db.close();
167
+ });
168
+ (0, import_vitest.test)("commits CRUD, the mutation ledger, and one retry-safe async task", async function () {
169
+ var effectRuns = 0;
170
+ var server = (0, import_createZeroSQLiteServer.createZeroSQLiteServer)({
171
+ schema: import_fixtureSchema.zeroHttpFixtureSchema,
172
+ models: {
173
+ project: {
174
+ mutate: {
175
+ create: async function (param, value) {
176
+ var {
177
+ tx,
178
+ server: server2
179
+ } = param;
180
+ await tx.mutate.project.insert(value);
181
+ server2 === null || server2 === void 0 ? void 0 : server2.asyncTasks.push(async function () {});
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 () {
185
+ effectRuns++;
186
+ };
187
+ }
188
+ }
189
+ }
190
+ },
191
+ createServerActions: function () {
192
+ return {};
193
+ },
194
+ transactionProvider
195
+ });
196
+ retryNextTransaction = true;
197
+ var result = await server.handleMutationRequest({
198
+ authData: null,
199
+ request: pushRequest(1, "project.create", {
200
+ id: "p1",
201
+ ownerId: "u1",
202
+ name: "first"
203
+ }),
204
+ skipAsyncTasks: true
205
+ });
206
+ (0, import_vitest.expect)(result.response.mutations[0].result).toEqual({});
207
+ (0, import_vitest.expect)(db.prepare("SELECT * FROM project").all()).toEqual([{
208
+ id: "p1",
209
+ ownerId: "u1",
210
+ name: "first"
211
+ }]);
212
+ (0, import_vitest.expect)(db.prepare("SELECT * FROM zero_0_clients").all()).toEqual([{
213
+ clientGroupID: "cg1",
214
+ clientID: "client-a",
215
+ lastMutationID: 1
216
+ }]);
217
+ (0, import_vitest.expect)(result.asyncTasks).toHaveLength(1);
218
+ await result.asyncTasks[0]();
219
+ (0, import_vitest.expect)(effectRuns).toBe(1);
220
+ });
221
+ (0, import_vitest.test)("rolls back row writes and persists an application error with its LMID", async function () {
222
+ var server = (0, import_createZeroSQLiteServer.createZeroSQLiteServer)({
223
+ schema: import_fixtureSchema.zeroHttpFixtureSchema,
224
+ models: {
225
+ project: {
226
+ mutate: {
227
+ fail: async function (param, value) {
228
+ var {
229
+ tx
230
+ } = param;
231
+ await tx.mutate.project.insert(value);
232
+ throw new Error("rejected");
233
+ }
234
+ }
235
+ }
236
+ },
237
+ createServerActions: function () {
238
+ return {};
239
+ },
240
+ transactionProvider
241
+ });
242
+ var result = await server.handleMutationRequest({
243
+ authData: null,
244
+ request: pushRequest(1, "project.fail", {
245
+ id: "p1",
246
+ ownerId: "u1",
247
+ name: "first"
248
+ })
249
+ });
250
+ (0, import_vitest.expect)(result.response.mutations[0].result).toMatchObject({
251
+ error: "app",
252
+ message: "rejected"
253
+ });
254
+ (0, import_vitest.expect)(db.prepare("SELECT * FROM project").all()).toEqual([]);
255
+ (0, import_vitest.expect)(db.prepare("SELECT lastMutationID FROM zero_0_clients").get()).toEqual({
256
+ lastMutationID: 1
257
+ });
258
+ var stored = db.prepare("SELECT result FROM zero_0_mutations").get();
259
+ (0, import_vitest.expect)(JSON.parse(stored.result)).toMatchObject({
260
+ error: "app",
261
+ message: "rejected"
262
+ });
263
+ });
264
+ (0, import_vitest.test)("recovers duplicate results and deletes them through the cleanup mutation", async function () {
265
+ var server = (0, import_createZeroSQLiteServer.createZeroSQLiteServer)({
266
+ schema: import_fixtureSchema.zeroHttpFixtureSchema,
267
+ models: {
268
+ project: {
269
+ mutate: {
270
+ create: async function (param, value2) {
271
+ var {
272
+ tx
273
+ } = param;
274
+ await tx.mutate.project.insert(value2);
275
+ }
276
+ }
277
+ }
278
+ },
279
+ createServerActions: function () {
280
+ return {};
281
+ },
282
+ transactionProvider
283
+ });
284
+ var value = {
285
+ id: "p1",
286
+ ownerId: "u1",
287
+ name: "first"
288
+ };
289
+ await server.handleMutationRequest({
290
+ authData: null,
291
+ request: pushRequest(1, "project.create", value)
292
+ });
293
+ var duplicate = await server.handleMutationRequest({
294
+ authData: null,
295
+ request: pushRequest(1, "project.create", value)
296
+ });
297
+ (0, import_vitest.expect)(duplicate.response.mutations[0].result).toMatchObject({
298
+ error: "alreadyProcessed"
299
+ });
300
+ (0, import_vitest.expect)(db.prepare("SELECT lastMutationID FROM zero_0_clients").get()).toEqual({
301
+ lastMutationID: 1
302
+ });
303
+ (0, import_vitest.expect)(db.prepare("SELECT COUNT(*) AS count FROM zero_0_mutations").get()).toEqual({
304
+ count: 1
305
+ });
306
+ await server.handleMutationRequest({
307
+ authData: null,
308
+ request: cleanupRequest()
309
+ });
310
+ (0, import_vitest.expect)(db.prepare("SELECT COUNT(*) AS count FROM zero_0_mutations").get()).toEqual({
311
+ count: 0
312
+ });
313
+ });
314
+ (0, import_vitest.test)("supports direct CRUD, server names, value codecs, and query AST execution", async function () {
315
+ var server = (0, import_createZeroSQLiteServer.createZeroSQLiteServer)({
316
+ schema: sqliteTypesSchema,
317
+ models: {
318
+ note: {
319
+ mutate: {
320
+ insert: async function (param, value) {
321
+ var {
322
+ tx
323
+ } = param;
324
+ await tx.mutate.note.insert(value);
325
+ },
326
+ upsert: async function (param, value) {
327
+ var {
328
+ tx
329
+ } = param;
330
+ await tx.mutate.note.upsert(value);
331
+ },
332
+ update: async function (param, value) {
333
+ var {
334
+ tx
335
+ } = param;
336
+ await tx.mutate.note.update(value);
337
+ },
338
+ delete: async function (param, value) {
339
+ var {
340
+ tx
341
+ } = param;
342
+ await tx.mutate.note.delete(value);
343
+ }
344
+ }
345
+ }
346
+ },
347
+ createServerActions: function () {
348
+ return {};
349
+ },
350
+ transactionProvider
351
+ });
352
+ await server.mutate.note.insert({
353
+ id: "n1",
354
+ done: false,
355
+ data: {
356
+ label: "first"
357
+ }
358
+ });
359
+ await server.mutate.note.upsert({
360
+ id: "n1",
361
+ done: true,
362
+ data: {
363
+ label: "second"
364
+ }
365
+ });
366
+ await server.mutate.note.update({
367
+ id: "n1",
368
+ done: false
369
+ });
370
+ (0, import_vitest.expect)(db.prepare("SELECT * FROM note_records").get()).toEqual({
371
+ note_id: "n1",
372
+ done: 0,
373
+ data: JSON.stringify({
374
+ label: "second"
375
+ })
376
+ });
377
+ await (0, import_vitest.expect)(server.query(function (q) {
378
+ return q.note;
379
+ })).resolves.toEqual([{
380
+ id: "n1",
381
+ done: false,
382
+ data: {
383
+ label: "second"
384
+ }
385
+ }]);
386
+ await server.transaction(async function (tx) {
387
+ if (tx.location !== "server") throw new Error("expected server transaction");
388
+ await (0, import_vitest.expect)(tx.query.note.one().run()).resolves.toEqual({
389
+ id: "n1",
390
+ done: false,
391
+ data: {
392
+ label: "second"
393
+ }
394
+ });
395
+ await (0, import_vitest.expect)(tx.dbTransaction.query("SELECT * FROM note_records", [])).resolves.toEqual([{
396
+ note_id: "n1",
397
+ done: 0,
398
+ data: JSON.stringify({
399
+ label: "second"
400
+ })
401
+ }]);
402
+ });
403
+ await server.mutate.note.delete({
404
+ id: "n1"
405
+ });
406
+ (0, import_vitest.expect)(db.prepare("SELECT * FROM note_records").all()).toEqual([]);
407
+ });
408
+ (0, import_vitest.test)("decodes destination rows through a hidden two-hop junction", async function () {
409
+ var server = (0, import_createZeroSQLiteServer.createZeroSQLiteServer)({
410
+ schema: twoHopSchema,
411
+ models: {},
412
+ createServerActions: function () {
413
+ return {};
414
+ },
415
+ transactionProvider
416
+ });
417
+ await (0, import_vitest.expect)(server.query(function (q) {
418
+ return q.person.related("teams");
419
+ })).resolves.toEqual([{
420
+ id: "p1",
421
+ teams: [{
422
+ id: "t1",
423
+ active: true,
424
+ metadata: {
425
+ label: "core"
426
+ }
427
+ }]
428
+ }]);
429
+ });
430
+ (0, import_vitest.test)("accepts a hydrated singular query result from the transaction executor", async function () {
431
+ var hydrated = {
432
+ id: "n1",
433
+ done: false,
434
+ data: {
435
+ label: "already decoded"
436
+ }
437
+ };
438
+ var receivedQueryName;
439
+ var hydratedExecutor = {
440
+ async exec() {},
441
+ async query() {
442
+ return [];
443
+ },
444
+ async queryAst(_ast, _format, queryName) {
445
+ receivedQueryName = queryName;
446
+ return hydrated;
447
+ }
448
+ };
449
+ var hydratedProvider = async function (callback) {
450
+ return callback(hydratedExecutor);
451
+ };
452
+ var server = (0, import_createZeroSQLiteServer.createZeroSQLiteServer)({
453
+ schema: sqliteTypesSchema,
454
+ models: {},
455
+ createServerActions: function () {
456
+ return {};
457
+ },
458
+ transactionProvider: hydratedProvider
459
+ });
460
+ await (0, import_vitest.expect)(server.query(function (q) {
461
+ return (0, import_bindings.asQueryInternals)(q.note.one()).nameAndArgs("noteByID", ["n1"]);
462
+ })).resolves.toEqual(hydrated);
463
+ (0, import_vitest.expect)(receivedQueryName).toBe("noteByID");
464
+ });
465
+ });
466
+ //# sourceMappingURL=createZeroSQLiteServer.test.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["import_node_sqlite","require","import_zero","import_bindings","import_vitest","import_createZeroSQLiteServer","import_fixtureSchema","note","table","from","columns","id","string","done","boolean","data","json","optional","primaryKey","sqliteTypesSchema","createSchema","tables","relationships","enableLegacyQueries","person","membership","personId","teamId","team","active","metadata","twoHopSchema","param","many","teams","sourceField","destSchema","destField","pushRequest","name","args","Request","method","headers","body","JSON","stringify","clientGroupID","mutations","type","clientID","timestamp","pushVersion","requestID","cleanupRequest","upToMutationID","describe","db","retryNextTransaction","transactionProvider","beforeEach","DatabaseSync","exec","join","executor","sql","params","arguments","length","prepare","run","query","all","queryAst","ast","format","rows","map","row","note_id","parse","label","Error","singular","callback","value","error","afterEach","close","test","effectRuns","server","createZeroSQLiteServer","schema","zeroHttpFixtureSchema","models","project","mutate","create","tx","server2","insert","asyncTasks","push","expect","toHaveLength","splice","createServerActions","result","handleMutationRequest","authData","request","ownerId","skipAsyncTasks","response","toEqual","lastMutationID","toBe","fail","toMatchObject","message","get","stored","value2","duplicate","count","upsert","update","delete","q","resolves","transaction","location","one"],"sources":["../../src/createZeroSQLiteServer.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}