@syncular/testkit 0.0.6-96 → 0.1.1

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 (68) hide show
  1. package/dist/audit.d.ts +22 -0
  2. package/dist/audit.d.ts.map +1 -0
  3. package/dist/audit.js +40 -0
  4. package/dist/audit.js.map +1 -0
  5. package/dist/client-bridge.d.ts +77 -0
  6. package/dist/client-bridge.d.ts.map +1 -0
  7. package/dist/client-bridge.js +540 -0
  8. package/dist/client-bridge.js.map +1 -0
  9. package/dist/deterministic.js.map +1 -1
  10. package/dist/disposable.js.map +1 -1
  11. package/dist/faults.d.ts +14 -2
  12. package/dist/faults.d.ts.map +1 -1
  13. package/dist/faults.js +104 -42
  14. package/dist/faults.js.map +1 -1
  15. package/dist/hono-node-server.js +1 -1
  16. package/dist/hono-node-server.js.map +1 -1
  17. package/dist/http-fixtures.d.ts +1 -30
  18. package/dist/http-fixtures.d.ts.map +1 -1
  19. package/dist/http-fixtures.js +5 -65
  20. package/dist/http-fixtures.js.map +1 -1
  21. package/dist/index.d.ts +2 -4
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -4
  24. package/dist/index.js.map +1 -1
  25. package/dist/project-scoped-tasks.d.ts.map +1 -1
  26. package/dist/project-scoped-tasks.js +6 -4
  27. package/dist/project-scoped-tasks.js.map +1 -1
  28. package/dist/realtime-ws.js.map +1 -1
  29. package/dist/runtime-process.js.map +1 -1
  30. package/dist/sync-builders.d.ts +5 -3
  31. package/dist/sync-builders.d.ts.map +1 -1
  32. package/dist/sync-builders.js +9 -3
  33. package/dist/sync-builders.js.map +1 -1
  34. package/dist/sync-http.js.map +1 -1
  35. package/dist/sync-parse.js.map +1 -1
  36. package/dist/sync-response.d.ts +3 -4
  37. package/dist/sync-response.d.ts.map +1 -1
  38. package/dist/sync-response.js.map +1 -1
  39. package/package.json +14 -15
  40. package/src/audit.ts +74 -0
  41. package/src/client-bridge.ts +841 -0
  42. package/src/faults.ts +178 -55
  43. package/src/hono-node-server.ts +1 -1
  44. package/src/http-fixtures.ts +6 -127
  45. package/src/index.ts +2 -4
  46. package/src/project-scoped-tasks.ts +6 -4
  47. package/src/sync-builders.ts +14 -6
  48. package/src/sync-response.ts +3 -5
  49. package/dist/assertions.d.ts +0 -61
  50. package/dist/assertions.d.ts.map +0 -1
  51. package/dist/assertions.js +0 -239
  52. package/dist/assertions.js.map +0 -1
  53. package/dist/fixtures.d.ts +0 -104
  54. package/dist/fixtures.d.ts.map +0 -1
  55. package/dist/fixtures.js +0 -558
  56. package/dist/fixtures.js.map +0 -1
  57. package/dist/resources.d.ts +0 -25
  58. package/dist/resources.d.ts.map +0 -1
  59. package/dist/resources.js +0 -64
  60. package/dist/resources.js.map +0 -1
  61. package/dist/scenario-flow.d.ts +0 -39
  62. package/dist/scenario-flow.d.ts.map +0 -1
  63. package/dist/scenario-flow.js +0 -41
  64. package/dist/scenario-flow.js.map +0 -1
  65. package/src/assertions.ts +0 -432
  66. package/src/fixtures.ts +0 -867
  67. package/src/resources.ts +0 -186
  68. package/src/scenario-flow.ts +0 -143
package/dist/fixtures.js DELETED
@@ -1,558 +0,0 @@
1
- import { enqueueOutboxCommit, ensureClientSyncSchema, SyncEngine, syncOnce, syncPullOnce, syncPushOnce, } from '@syncular/client';
2
- import { createDatabase, isRecord, } from '@syncular/core';
3
- import { createBunSqliteDialect } from '@syncular/dialect-bun-sqlite';
4
- import { createLibsqlDialect } from '@syncular/dialect-libsql';
5
- import { createPgliteDialect } from '@syncular/dialect-pglite';
6
- import { createSqlite3Dialect } from '@syncular/dialect-sqlite3';
7
- import { createServerHandlerCollection, ensureSyncSchema, pull, pushCommit, readSnapshotChunk, recordClientCursor, } from '@syncular/server';
8
- import { createPostgresServerDialect } from '@syncular/server-dialect-postgres';
9
- import { createSqliteServerDialect } from '@syncular/server-dialect-sqlite';
10
- function createTestSqliteDb(dialect, options = {}) {
11
- if (dialect === 'bun-sqlite') {
12
- return createDatabase({
13
- dialect: createBunSqliteDialect({ path: options.path ?? ':memory:' }),
14
- family: 'sqlite',
15
- });
16
- }
17
- if (dialect === 'sqlite3') {
18
- return createDatabase({
19
- dialect: createSqlite3Dialect({ path: options.path ?? ':memory:' }),
20
- family: 'sqlite',
21
- });
22
- }
23
- return createDatabase({
24
- dialect: createLibsqlDialect({ url: options.url ?? ':memory:' }),
25
- family: 'sqlite',
26
- });
27
- }
28
- function parseTaskPayload(payload) {
29
- if (!isRecord(payload)) {
30
- return {};
31
- }
32
- return {
33
- title: typeof payload.title === 'string' ? payload.title : undefined,
34
- completed: typeof payload.completed === 'number' ? payload.completed : undefined,
35
- };
36
- }
37
- const tasksServerHandler = {
38
- table: 'tasks',
39
- scopePatterns: ['user:{user_id}'],
40
- async resolveScopes(ctx) {
41
- return { user_id: ctx.actorId };
42
- },
43
- extractScopes(row) {
44
- return { user_id: String(row.user_id ?? '') };
45
- },
46
- async snapshot(ctx) {
47
- const userIdValue = ctx.scopeValues.user_id;
48
- const userId = Array.isArray(userIdValue) ? userIdValue[0] : userIdValue;
49
- if (!userId || userId !== ctx.actorId) {
50
- return { rows: [], nextCursor: null };
51
- }
52
- const query = ctx.db
53
- .selectFrom('tasks')
54
- .select(['id', 'title', 'completed', 'user_id', 'server_version'])
55
- .where('user_id', '=', userId);
56
- const pageSize = Math.max(1, Math.min(10_000, ctx.limit));
57
- const cursor = ctx.cursor;
58
- const rows = await (cursor ? query.where('id', '>', cursor) : query)
59
- .orderBy('id', 'asc')
60
- .limit(pageSize + 1)
61
- .execute();
62
- const hasMore = rows.length > pageSize;
63
- const pageRows = hasMore ? rows.slice(0, pageSize) : rows;
64
- const nextCursor = hasMore
65
- ? (pageRows[pageRows.length - 1]?.id ?? null)
66
- : null;
67
- return {
68
- rows: pageRows,
69
- nextCursor: typeof nextCursor === 'string' && nextCursor.length > 0
70
- ? nextCursor
71
- : null,
72
- };
73
- },
74
- async applyOperation(ctx, op, opIndex) {
75
- const db = ctx.trx;
76
- if (op.table !== 'tasks') {
77
- return {
78
- result: {
79
- opIndex,
80
- status: 'error',
81
- error: `UNKNOWN_TABLE:${op.table}`,
82
- code: 'UNKNOWN_TABLE',
83
- retriable: false,
84
- },
85
- emittedChanges: [],
86
- };
87
- }
88
- if (op.op === 'delete') {
89
- const existing = await db
90
- .selectFrom('tasks')
91
- .select(['id'])
92
- .where('id', '=', op.row_id)
93
- .where('user_id', '=', ctx.actorId)
94
- .executeTakeFirst();
95
- if (!existing) {
96
- return { result: { opIndex, status: 'applied' }, emittedChanges: [] };
97
- }
98
- await db
99
- .deleteFrom('tasks')
100
- .where('id', '=', op.row_id)
101
- .where('user_id', '=', ctx.actorId)
102
- .execute();
103
- const emitted = {
104
- table: 'tasks',
105
- row_id: op.row_id,
106
- op: 'delete',
107
- row_json: null,
108
- row_version: null,
109
- scopes: { user_id: ctx.actorId },
110
- };
111
- return {
112
- result: { opIndex, status: 'applied' },
113
- emittedChanges: [emitted],
114
- };
115
- }
116
- const payload = parseTaskPayload(op.payload);
117
- const existing = await db
118
- .selectFrom('tasks')
119
- .select(['id', 'title', 'completed', 'server_version'])
120
- .where('id', '=', op.row_id)
121
- .where('user_id', '=', ctx.actorId)
122
- .executeTakeFirst();
123
- if (existing &&
124
- op.base_version != null &&
125
- existing.server_version !== op.base_version) {
126
- return {
127
- result: {
128
- opIndex,
129
- status: 'conflict',
130
- message: `Version conflict: server=${existing.server_version}, base=${op.base_version}`,
131
- server_version: existing.server_version,
132
- server_row: {
133
- id: existing.id,
134
- title: existing.title,
135
- completed: existing.completed,
136
- user_id: ctx.actorId,
137
- server_version: existing.server_version,
138
- },
139
- },
140
- emittedChanges: [],
141
- };
142
- }
143
- if (existing) {
144
- const nextVersion = existing.server_version + 1;
145
- await db
146
- .updateTable('tasks')
147
- .set({
148
- title: payload.title ?? existing.title,
149
- completed: payload.completed ?? existing.completed,
150
- server_version: nextVersion,
151
- })
152
- .where('id', '=', op.row_id)
153
- .where('user_id', '=', ctx.actorId)
154
- .execute();
155
- }
156
- else {
157
- await db
158
- .insertInto('tasks')
159
- .values({
160
- id: op.row_id,
161
- title: payload.title ?? '',
162
- completed: payload.completed ?? 0,
163
- user_id: ctx.actorId,
164
- server_version: 1,
165
- })
166
- .execute();
167
- }
168
- const updated = await db
169
- .selectFrom('tasks')
170
- .select(['id', 'title', 'completed', 'user_id', 'server_version'])
171
- .where('id', '=', op.row_id)
172
- .where('user_id', '=', ctx.actorId)
173
- .executeTakeFirst();
174
- if (!updated) {
175
- throw new Error('TASK_NOT_FOUND_AFTER_UPSERT');
176
- }
177
- const emitted = {
178
- table: 'tasks',
179
- row_id: op.row_id,
180
- op: 'upsert',
181
- row_json: {
182
- id: updated.id,
183
- title: updated.title,
184
- completed: updated.completed,
185
- user_id: updated.user_id,
186
- server_version: updated.server_version,
187
- },
188
- row_version: updated.server_version,
189
- scopes: { user_id: ctx.actorId },
190
- };
191
- return {
192
- result: {
193
- opIndex,
194
- status: 'applied',
195
- },
196
- emittedChanges: [emitted],
197
- };
198
- },
199
- };
200
- function parseTaskSnapshotRow(value) {
201
- if (!isRecord(value)) {
202
- return null;
203
- }
204
- const id = typeof value.id === 'string' ? value.id : null;
205
- const title = typeof value.title === 'string' ? value.title : null;
206
- const completed = typeof value.completed === 'number' ? value.completed : null;
207
- const userId = typeof value.user_id === 'string' ? value.user_id : null;
208
- const serverVersion = typeof value.server_version === 'number' ? value.server_version : null;
209
- if (id === null ||
210
- title === null ||
211
- completed === null ||
212
- userId === null ||
213
- serverVersion === null) {
214
- return null;
215
- }
216
- return {
217
- id,
218
- title,
219
- completed,
220
- user_id: userId,
221
- server_version: serverVersion,
222
- };
223
- }
224
- function createTasksClientHandler() {
225
- return {
226
- table: 'tasks',
227
- async onSnapshotStart(ctx) {
228
- const userIdValue = ctx.scopes.user_id;
229
- const userId = Array.isArray(userIdValue) ? userIdValue[0] : userIdValue;
230
- if (userId) {
231
- await ctx.trx
232
- .deleteFrom('tasks')
233
- .where('user_id', '=', userId)
234
- .execute();
235
- }
236
- },
237
- async applySnapshot(ctx, snapshot) {
238
- const rows = [];
239
- for (const row of snapshot.rows ?? []) {
240
- const parsed = parseTaskSnapshotRow(row);
241
- if (parsed) {
242
- rows.push(parsed);
243
- }
244
- }
245
- if (rows.length === 0)
246
- return;
247
- await ctx.trx
248
- .insertInto('tasks')
249
- .values(rows)
250
- .onConflict((oc) => oc.column('id').doUpdateSet({
251
- title: (eb) => eb.ref('excluded.title'),
252
- completed: (eb) => eb.ref('excluded.completed'),
253
- user_id: (eb) => eb.ref('excluded.user_id'),
254
- server_version: (eb) => eb.ref('excluded.server_version'),
255
- }))
256
- .execute();
257
- },
258
- async clearAll(ctx) {
259
- const userIdValue = ctx.scopes?.user_id;
260
- const userId = Array.isArray(userIdValue) ? userIdValue[0] : userIdValue;
261
- if (userId) {
262
- await ctx.trx
263
- .deleteFrom('tasks')
264
- .where('user_id', '=', userId)
265
- .execute();
266
- return;
267
- }
268
- await ctx.trx.deleteFrom('tasks').execute();
269
- },
270
- async applyChange(ctx, change) {
271
- if (change.op === 'delete') {
272
- await ctx.trx
273
- .deleteFrom('tasks')
274
- .where('id', '=', change.row_id)
275
- .execute();
276
- return;
277
- }
278
- const parsed = parseTaskSnapshotRow(change.row_json);
279
- const row = parsed ??
280
- {
281
- id: change.row_id,
282
- title: '',
283
- completed: 0,
284
- user_id: '',
285
- server_version: change.row_version ?? 0,
286
- };
287
- await ctx.trx
288
- .insertInto('tasks')
289
- .values({
290
- id: change.row_id,
291
- title: row.title,
292
- completed: row.completed,
293
- user_id: row.user_id,
294
- server_version: change.row_version ?? row.server_version,
295
- })
296
- .onConflict((oc) => oc.column('id').doUpdateSet({
297
- title: (eb) => eb.ref('excluded.title'),
298
- completed: (eb) => eb.ref('excluded.completed'),
299
- user_id: (eb) => eb.ref('excluded.user_id'),
300
- server_version: (eb) => eb.ref('excluded.server_version'),
301
- }))
302
- .execute();
303
- },
304
- };
305
- }
306
- async function setupTestServer(db, dialect) {
307
- await ensureSyncSchema(db, dialect);
308
- await db.schema
309
- .createTable('tasks')
310
- .ifNotExists()
311
- .addColumn('id', 'text', (col) => col.primaryKey())
312
- .addColumn('title', 'text', (col) => col.notNull())
313
- .addColumn('completed', 'integer', (col) => col.notNull().defaultTo(0))
314
- .addColumn('user_id', 'text', (col) => col.notNull())
315
- .addColumn('server_version', 'integer', (col) => col.notNull().defaultTo(1))
316
- .execute();
317
- const handlers = createServerHandlerCollection([
318
- tasksServerHandler,
319
- ]);
320
- return {
321
- db,
322
- dialect,
323
- handlers,
324
- destroy: async () => {
325
- await db.destroy();
326
- },
327
- };
328
- }
329
- function createInProcessTransport(server, actorId) {
330
- const toBytes = async (body) => {
331
- if (body instanceof Uint8Array)
332
- return body;
333
- const reader = body.getReader();
334
- try {
335
- const chunks = [];
336
- let total = 0;
337
- while (true) {
338
- const { done, value } = await reader.read();
339
- if (done)
340
- break;
341
- if (!value)
342
- continue;
343
- chunks.push(value);
344
- total += value.length;
345
- }
346
- const out = new Uint8Array(total);
347
- let offset = 0;
348
- for (const chunk of chunks) {
349
- out.set(chunk, offset);
350
- offset += chunk.length;
351
- }
352
- return out;
353
- }
354
- finally {
355
- reader.releaseLock();
356
- }
357
- };
358
- return {
359
- async sync(request) {
360
- const result = { ok: true };
361
- if (request.push) {
362
- const pushed = await pushCommit({
363
- db: server.db,
364
- dialect: server.dialect,
365
- handlers: server.handlers,
366
- auth: { actorId },
367
- request: {
368
- clientId: request.clientId,
369
- clientCommitId: request.push.clientCommitId,
370
- operations: request.push.operations,
371
- schemaVersion: request.push.schemaVersion,
372
- },
373
- });
374
- result.push = pushed.response;
375
- }
376
- if (request.pull) {
377
- const pulled = await pull({
378
- db: server.db,
379
- dialect: server.dialect,
380
- handlers: server.handlers,
381
- auth: { actorId },
382
- request: {
383
- clientId: request.clientId,
384
- ...request.pull,
385
- },
386
- });
387
- recordClientCursor(server.db, server.dialect, {
388
- clientId: request.clientId,
389
- actorId,
390
- cursor: pulled.clientCursor,
391
- effectiveScopes: pulled.effectiveScopes,
392
- }).catch(() => { });
393
- result.pull = pulled.response;
394
- }
395
- return result;
396
- },
397
- async fetchSnapshotChunk(request) {
398
- const chunk = await readSnapshotChunk(server.db, request.chunkId);
399
- if (!chunk) {
400
- throw new Error(`Chunk not found: ${request.chunkId}`);
401
- }
402
- return toBytes(chunk.body);
403
- },
404
- };
405
- }
406
- function defaultSubscriptions(actorId) {
407
- return [{ id: 'my-tasks', table: 'tasks', scopes: { user_id: actorId } }];
408
- }
409
- export async function createTestServer(serverDialect) {
410
- if (serverDialect === 'pglite') {
411
- return setupTestServer(createDatabase({
412
- dialect: createPgliteDialect(),
413
- family: 'postgres',
414
- }), createPostgresServerDialect());
415
- }
416
- return setupTestServer(createTestSqliteDb('bun-sqlite'), createSqliteServerDialect());
417
- }
418
- export async function createTestSqliteServer(dialect) {
419
- return setupTestServer(createTestSqliteDb(dialect), createSqliteServerDialect());
420
- }
421
- export async function createTestClient(clientDialect, server, options) {
422
- const db = clientDialect === 'pglite'
423
- ? createDatabase({
424
- dialect: createPgliteDialect(),
425
- family: 'postgres',
426
- })
427
- : createTestSqliteDb(clientDialect);
428
- await ensureClientSyncSchema(db);
429
- await db.schema
430
- .createTable('tasks')
431
- .ifNotExists()
432
- .addColumn('id', 'text', (col) => col.primaryKey())
433
- .addColumn('title', 'text', (col) => col.notNull())
434
- .addColumn('completed', 'integer', (col) => col.notNull().defaultTo(0))
435
- .addColumn('user_id', 'text', (col) => col.notNull())
436
- .addColumn('server_version', 'integer', (col) => col.notNull().defaultTo(0))
437
- .execute();
438
- const handlers = [
439
- createTasksClientHandler(),
440
- ];
441
- const transport = createInProcessTransport(server, options.actorId);
442
- return {
443
- mode: 'raw',
444
- db,
445
- transport,
446
- handlers,
447
- actorId: options.actorId,
448
- clientId: options.clientId,
449
- enqueue: (args) => enqueueOutboxCommit(db, args),
450
- push: (pushOptions) => syncPushOnce(db, transport, {
451
- clientId: options.clientId,
452
- actorId: options.actorId,
453
- plugins: pushOptions?.plugins,
454
- }),
455
- pull: (pullOptions) => syncPullOnce(db, transport, handlers, {
456
- ...pullOptions,
457
- clientId: options.clientId,
458
- actorId: options.actorId,
459
- }),
460
- syncOnce: (syncOptions) => syncOnce(db, transport, handlers, {
461
- ...syncOptions,
462
- clientId: options.clientId,
463
- actorId: options.actorId,
464
- }),
465
- destroy: async () => {
466
- await db.destroy();
467
- },
468
- };
469
- }
470
- export async function createEngineTestClient(server, options) {
471
- const rawClient = await createTestClient(options.clientDialect ?? 'bun-sqlite', server, {
472
- actorId: options.actorId,
473
- clientId: options.clientId,
474
- });
475
- const subscriptions = options.subscriptions ?? defaultSubscriptions(options.actorId);
476
- const engine = new SyncEngine({
477
- db: rawClient.db,
478
- transport: rawClient.transport,
479
- handlers: rawClient.handlers,
480
- actorId: options.actorId,
481
- clientId: options.clientId,
482
- subscriptions,
483
- pollIntervalMs: options.pollIntervalMs ?? 999999,
484
- realtimeEnabled: options.realtimeEnabled ?? false,
485
- plugins: options.plugins,
486
- });
487
- return {
488
- ...rawClient,
489
- mode: 'engine',
490
- engine,
491
- startEngine: () => engine.start(),
492
- stopEngine: () => {
493
- engine.destroy();
494
- },
495
- syncEngine: () => engine.sync(),
496
- refreshOutboxStats: () => engine.refreshOutboxStats(),
497
- destroy: async () => {
498
- engine.destroy();
499
- await rawClient.db.destroy();
500
- },
501
- };
502
- }
503
- export async function createSyncFixture(options) {
504
- const server = await createTestServer(options.serverDialect);
505
- const createdClients = [];
506
- const createClient = async (clientOptions) => {
507
- const mode = clientOptions.mode ?? options.defaultMode ?? 'raw';
508
- if (mode === 'engine') {
509
- const client = await createEngineTestClient(server, {
510
- actorId: clientOptions.actorId,
511
- clientId: clientOptions.clientId,
512
- clientDialect: clientOptions.clientDialect ?? options.defaultClientDialect,
513
- plugins: clientOptions.plugins,
514
- subscriptions: clientOptions.subscriptions ?? options.defaultSubscriptions,
515
- pollIntervalMs: options.pollIntervalMs,
516
- realtimeEnabled: options.realtimeEnabled,
517
- });
518
- createdClients.push(client);
519
- return client;
520
- }
521
- const client = await createTestClient(clientOptions.clientDialect ??
522
- options.defaultClientDialect ??
523
- 'bun-sqlite', server, {
524
- actorId: clientOptions.actorId,
525
- clientId: clientOptions.clientId,
526
- });
527
- createdClients.push(client);
528
- return client;
529
- };
530
- const destroyAll = async () => {
531
- for (const client of createdClients) {
532
- await client.destroy();
533
- }
534
- await server.destroy();
535
- };
536
- return { server, createClient, destroyAll };
537
- }
538
- export async function seedServerData(server, options) {
539
- const rows = Array.from({ length: options.count }, (_, i) => ({
540
- id: `task-${i + 1}`,
541
- title: `Task ${i + 1}`,
542
- completed: 0,
543
- user_id: options.userId,
544
- server_version: 1,
545
- }));
546
- const batchSize = 1000;
547
- for (let i = 0; i < rows.length; i += batchSize) {
548
- const batch = rows.slice(i, i + batchSize);
549
- await server.db.insertInto('tasks').values(batch).execute();
550
- }
551
- }
552
- export async function destroyTestClient(client) {
553
- await client.destroy();
554
- }
555
- export async function destroyTestServer(server) {
556
- await server.destroy();
557
- }
558
- //# sourceMappingURL=fixtures.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import type { SyncClientDb } from '@syncular/client';
2
- import type { SyncCoreDb } from '@syncular/server';
3
- import { type AsyncDisposableResource, type ResourceRunner } from './disposable';
4
- import { type CreateEngineTestClientOptions, type CreateSyncFixtureOptions, type CreateTestClientOptions, type EngineTestClient, type ServerDialect, type SyncFixture, type TestClient, type TestClientDialect, type TestServer, type TestSqliteDbDialect } from './fixtures';
5
- import { type CreateHttpClientFixtureOptions, type CreateHttpServerFixtureOptions, type HttpClientFixture, type HttpServerFixture } from './http-fixtures';
6
- export declare function createTestServerResource(serverDialect: ServerDialect): Promise<AsyncDisposableResource<TestServer>>;
7
- export declare function withTestServer<TResult>(serverDialect: ServerDialect, run: ResourceRunner<TestServer, TResult>): Promise<TResult>;
8
- export declare function createTestSqliteServerResource(dialect: TestSqliteDbDialect): Promise<AsyncDisposableResource<TestServer>>;
9
- export declare function withTestSqliteServer<TResult>(dialect: TestSqliteDbDialect, run: ResourceRunner<TestServer, TResult>): Promise<TResult>;
10
- export declare function createTestClientResource(clientDialect: TestClientDialect, server: TestServer, options: CreateTestClientOptions): Promise<AsyncDisposableResource<TestClient>>;
11
- export declare function withTestClient<TResult>(clientDialect: TestClientDialect, server: TestServer, options: CreateTestClientOptions, run: ResourceRunner<TestClient, TResult>): Promise<TResult>;
12
- export declare function createEngineTestClientResource(server: TestServer, options: CreateEngineTestClientOptions): Promise<AsyncDisposableResource<EngineTestClient>>;
13
- export declare function withEngineTestClient<TResult>(server: TestServer, options: CreateEngineTestClientOptions, run: ResourceRunner<EngineTestClient, TResult>): Promise<TResult>;
14
- export declare function createSyncFixtureResource(options: CreateSyncFixtureOptions): Promise<AsyncDisposableResource<SyncFixture>>;
15
- export declare function withSyncFixture<TResult>(options: CreateSyncFixtureOptions, run: ResourceRunner<SyncFixture, TResult>): Promise<TResult>;
16
- export declare function createHttpServerFixtureResource<DB extends SyncCoreDb>(options: CreateHttpServerFixtureOptions<DB>): Promise<AsyncDisposableResource<HttpServerFixture<DB>>>;
17
- export declare function withHttpServerFixture<DB extends SyncCoreDb, TResult>(options: CreateHttpServerFixtureOptions<DB>, run: ResourceRunner<HttpServerFixture<DB>, TResult>): Promise<TResult>;
18
- export declare function createHttpClientFixtureResource<DB extends SyncClientDb>(options: CreateHttpClientFixtureOptions<DB>): Promise<AsyncDisposableResource<HttpClientFixture<DB>>>;
19
- export declare function withHttpClientFixture<DB extends SyncClientDb, TResult>(options: CreateHttpClientFixtureOptions<DB>, run: ResourceRunner<HttpClientFixture<DB>, TResult>): Promise<TResult>;
20
- export interface EngineSessionResourceOptions {
21
- start?: boolean;
22
- }
23
- export declare function createEngineSessionResource(client: EngineTestClient, options?: EngineSessionResourceOptions): Promise<AsyncDisposableResource<EngineTestClient>>;
24
- export declare function withEngineSession<TResult>(client: EngineTestClient, run: ResourceRunner<EngineTestClient, TResult>, options?: EngineSessionResourceOptions): Promise<TResult>;
25
- //# sourceMappingURL=resources.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}