@syncular/testkit 0.0.4-25 → 0.0.6-100
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/fixtures.d.ts +8 -4
- package/dist/fixtures.d.ts.map +1 -1
- package/dist/fixtures.js +35 -18
- package/dist/fixtures.js.map +1 -1
- package/dist/http-fixtures.d.ts +10 -6
- package/dist/http-fixtures.d.ts.map +1 -1
- package/dist/http-fixtures.js +88 -18
- package/dist/http-fixtures.js.map +1 -1
- package/dist/scenario-flow.d.ts +2 -2
- package/dist/scenario-flow.d.ts.map +1 -1
- package/package.json +14 -14
- package/src/fixtures.ts +40 -19
- package/src/http-fixtures.ts +121 -26
- package/src/scenario-flow.ts +2 -2
package/dist/fixtures.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { type ClientHandlerCollection, enqueueOutboxCommit, type SyncClientDb, type SyncClientPlugin, SyncEngine, type SyncOnceOptions, type SyncOnceResult, type SyncPullOnceOptions, type SyncPullResponse, type SyncPushOnceOptions, type SyncPushOnceResult } from '@syncular/client';
|
|
2
2
|
import { type SyncSubscriptionRequest, type SyncTransport } from '@syncular/core';
|
|
3
|
-
import { type ServerSyncDialect, type SyncCoreDb
|
|
3
|
+
import { type ServerHandlerCollection, type ServerSyncDialect, type SyncCoreDb } from '@syncular/server';
|
|
4
4
|
import type { Kysely } from 'kysely';
|
|
5
5
|
export type ServerDialect = 'sqlite' | 'pglite';
|
|
6
6
|
export type ClientDialect = 'bun-sqlite' | 'pglite';
|
|
@@ -24,17 +24,20 @@ export interface TasksClientDb extends SyncClientDb {
|
|
|
24
24
|
server_version: number;
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
|
+
type TestAuth = {
|
|
28
|
+
actorId: string;
|
|
29
|
+
};
|
|
27
30
|
export interface TestServer {
|
|
28
31
|
db: Kysely<TasksServerDb>;
|
|
29
32
|
dialect: ServerSyncDialect;
|
|
30
|
-
handlers:
|
|
33
|
+
handlers: ServerHandlerCollection<TasksServerDb, TestAuth>;
|
|
31
34
|
destroy: () => Promise<void>;
|
|
32
35
|
}
|
|
33
36
|
export interface TestClient {
|
|
34
37
|
mode: 'raw';
|
|
35
38
|
db: Kysely<TasksClientDb>;
|
|
36
39
|
transport: SyncTransport;
|
|
37
|
-
handlers:
|
|
40
|
+
handlers: ClientHandlerCollection<TasksClientDb>;
|
|
38
41
|
actorId: string;
|
|
39
42
|
clientId: string;
|
|
40
43
|
enqueue: (args: Parameters<typeof enqueueOutboxCommit<TasksClientDb>>[1]) => Promise<{
|
|
@@ -97,4 +100,5 @@ export declare function seedServerData(server: TestServer, options: {
|
|
|
97
100
|
}): Promise<void>;
|
|
98
101
|
export declare function destroyTestClient(client: Pick<TestClient, 'destroy'> | Pick<EngineTestClient, 'destroy'>): Promise<void>;
|
|
99
102
|
export declare function destroyTestServer(server: Pick<TestServer, 'destroy'>): Promise<void>;
|
|
103
|
+
export {};
|
|
100
104
|
//# sourceMappingURL=fixtures.d.ts.map
|
package/dist/fixtures.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"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"}
|
package/dist/fixtures.js
CHANGED
|
@@ -1,20 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isRecord, } from '@syncular/core';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { ensureSyncSchema, pull, pushCommit, readSnapshotChunk, recordClientCursor,
|
|
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
8
|
import { createPostgresServerDialect } from '@syncular/server-dialect-postgres';
|
|
9
9
|
import { createSqliteServerDialect } from '@syncular/server-dialect-sqlite';
|
|
10
10
|
function createTestSqliteDb(dialect, options = {}) {
|
|
11
11
|
if (dialect === 'bun-sqlite') {
|
|
12
|
-
return
|
|
12
|
+
return createDatabase({
|
|
13
|
+
dialect: createBunSqliteDialect({ path: options.path ?? ':memory:' }),
|
|
14
|
+
family: 'sqlite',
|
|
15
|
+
});
|
|
13
16
|
}
|
|
14
17
|
if (dialect === 'sqlite3') {
|
|
15
|
-
return
|
|
18
|
+
return createDatabase({
|
|
19
|
+
dialect: createSqlite3Dialect({ path: options.path ?? ':memory:' }),
|
|
20
|
+
family: 'sqlite',
|
|
21
|
+
});
|
|
16
22
|
}
|
|
17
|
-
return
|
|
23
|
+
return createDatabase({
|
|
24
|
+
dialect: createLibsqlDialect({ url: options.url ?? ':memory:' }),
|
|
25
|
+
family: 'sqlite',
|
|
26
|
+
});
|
|
18
27
|
}
|
|
19
28
|
function parseTaskPayload(payload) {
|
|
20
29
|
if (!isRecord(payload)) {
|
|
@@ -305,8 +314,9 @@ async function setupTestServer(db, dialect) {
|
|
|
305
314
|
.addColumn('user_id', 'text', (col) => col.notNull())
|
|
306
315
|
.addColumn('server_version', 'integer', (col) => col.notNull().defaultTo(1))
|
|
307
316
|
.execute();
|
|
308
|
-
const handlers =
|
|
309
|
-
|
|
317
|
+
const handlers = createServerHandlerCollection([
|
|
318
|
+
tasksServerHandler,
|
|
319
|
+
]);
|
|
310
320
|
return {
|
|
311
321
|
db,
|
|
312
322
|
dialect,
|
|
@@ -353,7 +363,7 @@ function createInProcessTransport(server, actorId) {
|
|
|
353
363
|
db: server.db,
|
|
354
364
|
dialect: server.dialect,
|
|
355
365
|
handlers: server.handlers,
|
|
356
|
-
actorId,
|
|
366
|
+
auth: { actorId },
|
|
357
367
|
request: {
|
|
358
368
|
clientId: request.clientId,
|
|
359
369
|
clientCommitId: request.push.clientCommitId,
|
|
@@ -368,7 +378,7 @@ function createInProcessTransport(server, actorId) {
|
|
|
368
378
|
db: server.db,
|
|
369
379
|
dialect: server.dialect,
|
|
370
380
|
handlers: server.handlers,
|
|
371
|
-
actorId,
|
|
381
|
+
auth: { actorId },
|
|
372
382
|
request: {
|
|
373
383
|
clientId: request.clientId,
|
|
374
384
|
...request.pull,
|
|
@@ -398,7 +408,10 @@ function defaultSubscriptions(actorId) {
|
|
|
398
408
|
}
|
|
399
409
|
export async function createTestServer(serverDialect) {
|
|
400
410
|
if (serverDialect === 'pglite') {
|
|
401
|
-
return setupTestServer(
|
|
411
|
+
return setupTestServer(createDatabase({
|
|
412
|
+
dialect: createPgliteDialect(),
|
|
413
|
+
family: 'postgres',
|
|
414
|
+
}), createPostgresServerDialect());
|
|
402
415
|
}
|
|
403
416
|
return setupTestServer(createTestSqliteDb('bun-sqlite'), createSqliteServerDialect());
|
|
404
417
|
}
|
|
@@ -407,7 +420,10 @@ export async function createTestSqliteServer(dialect) {
|
|
|
407
420
|
}
|
|
408
421
|
export async function createTestClient(clientDialect, server, options) {
|
|
409
422
|
const db = clientDialect === 'pglite'
|
|
410
|
-
?
|
|
423
|
+
? createDatabase({
|
|
424
|
+
dialect: createPgliteDialect(),
|
|
425
|
+
family: 'postgres',
|
|
426
|
+
})
|
|
411
427
|
: createTestSqliteDb(clientDialect);
|
|
412
428
|
await ensureClientSyncSchema(db);
|
|
413
429
|
await db.schema
|
|
@@ -419,8 +435,9 @@ export async function createTestClient(clientDialect, server, options) {
|
|
|
419
435
|
.addColumn('user_id', 'text', (col) => col.notNull())
|
|
420
436
|
.addColumn('server_version', 'integer', (col) => col.notNull().defaultTo(0))
|
|
421
437
|
.execute();
|
|
422
|
-
const handlers =
|
|
423
|
-
|
|
438
|
+
const handlers = [
|
|
439
|
+
createTasksClientHandler(),
|
|
440
|
+
];
|
|
424
441
|
const transport = createInProcessTransport(server, options.actorId);
|
|
425
442
|
return {
|
|
426
443
|
mode: 'raw',
|
package/dist/fixtures.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"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"}
|
package/dist/http-fixtures.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type
|
|
1
|
+
import { type ClientHandlerCollection, enqueueOutboxCommit, type SyncClientDb, type SyncOnceOptions, type SyncOnceResult, type SyncPullOnceOptions, type SyncPullResponse, type SyncPushOnceOptions, type SyncPushOnceResult } from '@syncular/client';
|
|
2
|
+
import { type SyncTransport } from '@syncular/core';
|
|
3
3
|
import { type ServerSyncDialect, type ServerTableHandler, type SyncCoreDb } from '@syncular/server';
|
|
4
4
|
import { type CreateSyncRoutesOptions } from '@syncular/server-hono';
|
|
5
5
|
import { Hono } from 'hono';
|
|
@@ -19,8 +19,12 @@ export interface CreateHttpServerFixtureOptions<DB extends SyncCoreDb> {
|
|
|
19
19
|
serverDialect: HttpServerDialect;
|
|
20
20
|
createTables: (db: Kysely<DB>) => Promise<void>;
|
|
21
21
|
handlers: ServerTableHandler<DB>[];
|
|
22
|
-
authenticate: CreateSyncRoutesOptions<DB
|
|
23
|
-
|
|
22
|
+
authenticate: CreateSyncRoutesOptions<DB, {
|
|
23
|
+
actorId: string;
|
|
24
|
+
}>['authenticate'];
|
|
25
|
+
sync?: CreateSyncRoutesOptions<DB, {
|
|
26
|
+
actorId: string;
|
|
27
|
+
}>['sync'];
|
|
24
28
|
routePath?: string;
|
|
25
29
|
cors?: boolean;
|
|
26
30
|
corsAllowMethods?: string;
|
|
@@ -30,7 +34,7 @@ export interface CreateHttpServerFixtureOptions<DB extends SyncCoreDb> {
|
|
|
30
34
|
export interface HttpClientFixture<DB extends SyncClientDb> {
|
|
31
35
|
db: Kysely<DB>;
|
|
32
36
|
transport: SyncTransport;
|
|
33
|
-
handlers:
|
|
37
|
+
handlers: ClientHandlerCollection<DB>;
|
|
34
38
|
actorId: string;
|
|
35
39
|
clientId: string;
|
|
36
40
|
enqueue: (args: Parameters<typeof enqueueOutboxCommit<DB>>[1]) => Promise<{
|
|
@@ -48,7 +52,7 @@ export interface CreateHttpClientFixtureOptions<DB extends SyncClientDb> {
|
|
|
48
52
|
actorId: string;
|
|
49
53
|
clientId: string;
|
|
50
54
|
createTables: (db: Kysely<DB>) => Promise<void>;
|
|
51
|
-
registerHandlers: (handlers:
|
|
55
|
+
registerHandlers: (handlers: ClientHandlerCollection<DB>) => void;
|
|
52
56
|
fetch?: typeof globalThis.fetch;
|
|
53
57
|
getHeaders?: () => Record<string, string>;
|
|
54
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-fixtures.d.ts","sourceRoot":"","sources":["../src/http-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"http-fixtures.d.ts","sourceRoot":"","sources":["../src/http-fixtures.ts"],"names":[],"mappings":"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"}
|
package/dist/http-fixtures.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { enqueueOutboxCommit, ensureClientSyncSchema, syncOnce, syncPullOnce, syncPushOnce, } from '@syncular/client';
|
|
2
|
+
import { createDatabase } from '@syncular/core';
|
|
3
|
+
import { createBunSqliteDialect } from '@syncular/dialect-bun-sqlite';
|
|
4
|
+
import { createPgliteDialect } from '@syncular/dialect-pglite';
|
|
4
5
|
import { ensureSyncSchema, } from '@syncular/server';
|
|
5
6
|
import { createPostgresServerDialect } from '@syncular/server-dialect-postgres';
|
|
6
7
|
import { createSqliteServerDialect } from '@syncular/server-dialect-sqlite';
|
|
@@ -8,18 +9,67 @@ import { createSyncRoutes, } from '@syncular/server-hono';
|
|
|
8
9
|
import { createHttpTransport } from '@syncular/transport-http';
|
|
9
10
|
import { Hono } from 'hono';
|
|
10
11
|
import { createNodeHonoServer } from './hono-node-server.js';
|
|
12
|
+
const PGLITE_INIT_ATTEMPTS = 3;
|
|
13
|
+
function isTransientPgliteInitError(error) {
|
|
14
|
+
return (error.message.includes('access to a null reference') ||
|
|
15
|
+
error.message.includes('_pgl_initdb'));
|
|
16
|
+
}
|
|
17
|
+
function isServerNotRunningError(error) {
|
|
18
|
+
return (error !== null && 'code' in error && error.code === 'ERR_SERVER_NOT_RUNNING');
|
|
19
|
+
}
|
|
20
|
+
async function delay(ms) {
|
|
21
|
+
await new Promise((resolve) => {
|
|
22
|
+
setTimeout(resolve, ms);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
async function withPgliteInitRetry(useRetries, create) {
|
|
26
|
+
const maxAttempts = useRetries ? PGLITE_INIT_ATTEMPTS : 1;
|
|
27
|
+
let lastError = null;
|
|
28
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
|
|
29
|
+
try {
|
|
30
|
+
return await create();
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
const candidate = error instanceof Error ? error : new Error(String(error));
|
|
34
|
+
lastError = candidate;
|
|
35
|
+
const isRetryable = useRetries &&
|
|
36
|
+
attempt < maxAttempts &&
|
|
37
|
+
isTransientPgliteInitError(candidate);
|
|
38
|
+
if (!isRetryable) {
|
|
39
|
+
throw candidate;
|
|
40
|
+
}
|
|
41
|
+
await delay(25 * attempt);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
throw lastError ?? new Error('PGLite initialization failed');
|
|
45
|
+
}
|
|
11
46
|
export async function createHttpServerFixture(options) {
|
|
12
|
-
const db = options.serverDialect === 'pglite'
|
|
13
|
-
? createPgliteDb()
|
|
14
|
-
: createBunSqliteDb({ path: ':memory:' });
|
|
15
47
|
const dialect = options.serverDialect === 'pglite'
|
|
16
48
|
? createPostgresServerDialect()
|
|
17
49
|
: createSqliteServerDialect();
|
|
18
|
-
await
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
50
|
+
const db = await withPgliteInitRetry(options.serverDialect === 'pglite', async () => {
|
|
51
|
+
const candidateDb = options.serverDialect === 'pglite'
|
|
52
|
+
? createDatabase({
|
|
53
|
+
dialect: createPgliteDialect(),
|
|
54
|
+
family: 'postgres',
|
|
55
|
+
})
|
|
56
|
+
: createDatabase({
|
|
57
|
+
dialect: createBunSqliteDialect({ path: ':memory:' }),
|
|
58
|
+
family: 'sqlite',
|
|
59
|
+
});
|
|
60
|
+
try {
|
|
61
|
+
await ensureSyncSchema(candidateDb, dialect);
|
|
62
|
+
if (dialect.ensureConsoleSchema) {
|
|
63
|
+
await dialect.ensureConsoleSchema(candidateDb);
|
|
64
|
+
}
|
|
65
|
+
await options.createTables(candidateDb);
|
|
66
|
+
return candidateDb;
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
await candidateDb.destroy();
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
23
73
|
const app = new Hono();
|
|
24
74
|
const routePath = options.routePath ?? '/sync';
|
|
25
75
|
const syncRoutes = createSyncRoutes({
|
|
@@ -41,6 +91,7 @@ export async function createHttpServerFixture(options) {
|
|
|
41
91
|
});
|
|
42
92
|
const address = httpServer.address();
|
|
43
93
|
const port = typeof address === 'object' && address ? address.port : 0;
|
|
94
|
+
let destroyed = false;
|
|
44
95
|
return {
|
|
45
96
|
db,
|
|
46
97
|
dialect,
|
|
@@ -48,9 +99,13 @@ export async function createHttpServerFixture(options) {
|
|
|
48
99
|
httpServer,
|
|
49
100
|
baseUrl: `http://localhost:${port}`,
|
|
50
101
|
destroy: async () => {
|
|
102
|
+
if (destroyed) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
destroyed = true;
|
|
51
106
|
await new Promise((resolve, reject) => {
|
|
52
107
|
httpServer.close((err) => {
|
|
53
|
-
if (err) {
|
|
108
|
+
if (err && !isServerNotRunningError(err)) {
|
|
54
109
|
reject(err);
|
|
55
110
|
return;
|
|
56
111
|
}
|
|
@@ -62,12 +117,27 @@ export async function createHttpServerFixture(options) {
|
|
|
62
117
|
};
|
|
63
118
|
}
|
|
64
119
|
export async function createHttpClientFixture(options) {
|
|
65
|
-
const db = options.clientDialect === 'pglite'
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
120
|
+
const db = await withPgliteInitRetry(options.clientDialect === 'pglite', async () => {
|
|
121
|
+
const candidateDb = options.clientDialect === 'pglite'
|
|
122
|
+
? createDatabase({
|
|
123
|
+
dialect: createPgliteDialect(),
|
|
124
|
+
family: 'postgres',
|
|
125
|
+
})
|
|
126
|
+
: createDatabase({
|
|
127
|
+
dialect: createBunSqliteDialect({ path: ':memory:' }),
|
|
128
|
+
family: 'sqlite',
|
|
129
|
+
});
|
|
130
|
+
try {
|
|
131
|
+
await ensureClientSyncSchema(candidateDb);
|
|
132
|
+
await options.createTables(candidateDb);
|
|
133
|
+
return candidateDb;
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
await candidateDb.destroy();
|
|
137
|
+
throw error;
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
const handlers = [];
|
|
71
141
|
options.registerHandlers(handlers);
|
|
72
142
|
const transport = createHttpTransport({
|
|
73
143
|
baseUrl: options.baseUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-fixtures.js","sourceRoot":"","sources":["../src/http-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"http-fixtures.js","sourceRoot":"","sources":["../src/http-fixtures.ts"],"names":[],"mappings":"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"}
|
package/dist/scenario-flow.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ClientHandlerCollection, enqueueOutboxCommit, type SyncClientDb, type SyncOnceOptions, type SyncOnceResult, type SyncPullOnceOptions, type SyncPullResponse, type SyncPushOnceOptions, type SyncPushOnceResult } from '@syncular/client';
|
|
2
2
|
import type { SyncCombinedRequest, SyncCombinedResponse, SyncTransport } from '@syncular/core';
|
|
3
3
|
import type { Kysely } from 'kysely';
|
|
4
4
|
export interface ScenarioFlowClient<DB extends SyncClientDb> {
|
|
5
5
|
db: Kysely<DB>;
|
|
6
6
|
transport: SyncTransport;
|
|
7
|
-
handlers:
|
|
7
|
+
handlers: ClientHandlerCollection<DB>;
|
|
8
8
|
clientId: string;
|
|
9
9
|
actorId?: string;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario-flow.d.ts","sourceRoot":"","sources":["../src/scenario-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,
|
|
1
|
+
{"version":3,"file":"scenario-flow.d.ts","sourceRoot":"","sources":["../src/scenario-flow.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@syncular/testkit",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6-100",
|
|
4
4
|
"description": "Testing fixtures and utilities for Syncular",
|
|
5
|
-
"license": "
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
6
|
"author": "Benjamin Kniffler",
|
|
7
7
|
"homepage": "https://syncular.dev",
|
|
8
8
|
"repository": {
|
|
@@ -41,18 +41,18 @@
|
|
|
41
41
|
"release": "bunx syncular-publish"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@syncular/client": "0.0.
|
|
45
|
-
"@syncular/core": "0.0.
|
|
46
|
-
"@syncular/dialect-bun-sqlite": "0.0.
|
|
47
|
-
"@syncular/dialect-libsql": "0.0.
|
|
48
|
-
"@syncular/dialect-pglite": "0.0.
|
|
49
|
-
"@syncular/dialect-sqlite3": "0.0.
|
|
50
|
-
"@syncular/server": "0.0.
|
|
51
|
-
"@syncular/server-dialect-postgres": "0.0.
|
|
52
|
-
"@syncular/server-dialect-sqlite": "0.0.
|
|
53
|
-
"@syncular/server-hono": "0.0.
|
|
54
|
-
"@syncular/transport-http": "0.0.
|
|
55
|
-
"hono": "^4.
|
|
44
|
+
"@syncular/client": "0.0.6-100",
|
|
45
|
+
"@syncular/core": "0.0.6-100",
|
|
46
|
+
"@syncular/dialect-bun-sqlite": "0.0.6-100",
|
|
47
|
+
"@syncular/dialect-libsql": "0.0.6-100",
|
|
48
|
+
"@syncular/dialect-pglite": "0.0.6-100",
|
|
49
|
+
"@syncular/dialect-sqlite3": "0.0.6-100",
|
|
50
|
+
"@syncular/server": "0.0.6-100",
|
|
51
|
+
"@syncular/server-dialect-postgres": "0.0.6-100",
|
|
52
|
+
"@syncular/server-dialect-sqlite": "0.0.6-100",
|
|
53
|
+
"@syncular/server-hono": "0.0.6-100",
|
|
54
|
+
"@syncular/transport-http": "0.0.6-100",
|
|
55
|
+
"hono": "^4.12.3"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@syncular/config": "0.0.0",
|
package/src/fixtures.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
type ClientClearContext,
|
|
3
|
+
type ClientHandlerCollection,
|
|
3
4
|
type ClientSnapshotHookContext,
|
|
4
5
|
type ClientTableHandler,
|
|
5
|
-
ClientTableRegistry,
|
|
6
6
|
enqueueOutboxCommit,
|
|
7
7
|
ensureClientSyncSchema,
|
|
8
8
|
type SyncClientDb,
|
|
@@ -19,28 +19,30 @@ import {
|
|
|
19
19
|
syncPushOnce,
|
|
20
20
|
} from '@syncular/client';
|
|
21
21
|
import {
|
|
22
|
+
createDatabase,
|
|
22
23
|
isRecord,
|
|
23
24
|
type SyncCombinedResponse,
|
|
24
25
|
type SyncOperation,
|
|
25
26
|
type SyncSubscriptionRequest,
|
|
26
27
|
type SyncTransport,
|
|
27
28
|
} from '@syncular/core';
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
29
|
+
import { createBunSqliteDialect } from '@syncular/dialect-bun-sqlite';
|
|
30
|
+
import { createLibsqlDialect } from '@syncular/dialect-libsql';
|
|
31
|
+
import { createPgliteDialect } from '@syncular/dialect-pglite';
|
|
32
|
+
import { createSqlite3Dialect } from '@syncular/dialect-sqlite3';
|
|
32
33
|
import {
|
|
33
34
|
type ApplyOperationResult,
|
|
35
|
+
createServerHandlerCollection,
|
|
34
36
|
type EmittedChange,
|
|
35
37
|
ensureSyncSchema,
|
|
36
38
|
pull,
|
|
37
39
|
pushCommit,
|
|
38
40
|
readSnapshotChunk,
|
|
39
41
|
recordClientCursor,
|
|
42
|
+
type ServerHandlerCollection,
|
|
40
43
|
type ServerSyncDialect,
|
|
41
44
|
type ServerTableHandler,
|
|
42
45
|
type SyncCoreDb,
|
|
43
|
-
TableRegistry,
|
|
44
46
|
} from '@syncular/server';
|
|
45
47
|
import { createPostgresServerDialect } from '@syncular/server-dialect-postgres';
|
|
46
48
|
import { createSqliteServerDialect } from '@syncular/server-dialect-sqlite';
|
|
@@ -72,10 +74,12 @@ export interface TasksClientDb extends SyncClientDb {
|
|
|
72
74
|
};
|
|
73
75
|
}
|
|
74
76
|
|
|
77
|
+
type TestAuth = { actorId: string };
|
|
78
|
+
|
|
75
79
|
export interface TestServer {
|
|
76
80
|
db: Kysely<TasksServerDb>;
|
|
77
81
|
dialect: ServerSyncDialect;
|
|
78
|
-
handlers:
|
|
82
|
+
handlers: ServerHandlerCollection<TasksServerDb, TestAuth>;
|
|
79
83
|
destroy: () => Promise<void>;
|
|
80
84
|
}
|
|
81
85
|
|
|
@@ -83,7 +87,7 @@ export interface TestClient {
|
|
|
83
87
|
mode: 'raw';
|
|
84
88
|
db: Kysely<TasksClientDb>;
|
|
85
89
|
transport: SyncTransport;
|
|
86
|
-
handlers:
|
|
90
|
+
handlers: ClientHandlerCollection<TasksClientDb>;
|
|
87
91
|
actorId: string;
|
|
88
92
|
clientId: string;
|
|
89
93
|
enqueue: (
|
|
@@ -158,14 +162,23 @@ function createTestSqliteDb<T>(
|
|
|
158
162
|
options: { path?: string; url?: string } = {}
|
|
159
163
|
): Kysely<T> {
|
|
160
164
|
if (dialect === 'bun-sqlite') {
|
|
161
|
-
return
|
|
165
|
+
return createDatabase<T>({
|
|
166
|
+
dialect: createBunSqliteDialect({ path: options.path ?? ':memory:' }),
|
|
167
|
+
family: 'sqlite',
|
|
168
|
+
});
|
|
162
169
|
}
|
|
163
170
|
|
|
164
171
|
if (dialect === 'sqlite3') {
|
|
165
|
-
return
|
|
172
|
+
return createDatabase<T>({
|
|
173
|
+
dialect: createSqlite3Dialect({ path: options.path ?? ':memory:' }),
|
|
174
|
+
family: 'sqlite',
|
|
175
|
+
});
|
|
166
176
|
}
|
|
167
177
|
|
|
168
|
-
return
|
|
178
|
+
return createDatabase<T>({
|
|
179
|
+
dialect: createLibsqlDialect({ url: options.url ?? ':memory:' }),
|
|
180
|
+
family: 'sqlite',
|
|
181
|
+
});
|
|
169
182
|
}
|
|
170
183
|
|
|
171
184
|
function parseTaskPayload(payload: SyncOperation['payload']): {
|
|
@@ -527,8 +540,9 @@ async function setupTestServer(
|
|
|
527
540
|
.addColumn('server_version', 'integer', (col) => col.notNull().defaultTo(1))
|
|
528
541
|
.execute();
|
|
529
542
|
|
|
530
|
-
const handlers =
|
|
531
|
-
|
|
543
|
+
const handlers = createServerHandlerCollection<TasksServerDb, TestAuth>([
|
|
544
|
+
tasksServerHandler,
|
|
545
|
+
]);
|
|
532
546
|
|
|
533
547
|
return {
|
|
534
548
|
db,
|
|
@@ -582,7 +596,7 @@ function createInProcessTransport(
|
|
|
582
596
|
db: server.db,
|
|
583
597
|
dialect: server.dialect,
|
|
584
598
|
handlers: server.handlers,
|
|
585
|
-
actorId,
|
|
599
|
+
auth: { actorId },
|
|
586
600
|
request: {
|
|
587
601
|
clientId: request.clientId,
|
|
588
602
|
clientCommitId: request.push.clientCommitId,
|
|
@@ -598,7 +612,7 @@ function createInProcessTransport(
|
|
|
598
612
|
db: server.db,
|
|
599
613
|
dialect: server.dialect,
|
|
600
614
|
handlers: server.handlers,
|
|
601
|
-
actorId,
|
|
615
|
+
auth: { actorId },
|
|
602
616
|
request: {
|
|
603
617
|
clientId: request.clientId,
|
|
604
618
|
...request.pull,
|
|
@@ -639,7 +653,10 @@ export async function createTestServer(
|
|
|
639
653
|
): Promise<TestServer> {
|
|
640
654
|
if (serverDialect === 'pglite') {
|
|
641
655
|
return setupTestServer(
|
|
642
|
-
|
|
656
|
+
createDatabase<TasksServerDb>({
|
|
657
|
+
dialect: createPgliteDialect(),
|
|
658
|
+
family: 'postgres',
|
|
659
|
+
}),
|
|
643
660
|
createPostgresServerDialect()
|
|
644
661
|
);
|
|
645
662
|
}
|
|
@@ -666,7 +683,10 @@ export async function createTestClient(
|
|
|
666
683
|
): Promise<TestClient> {
|
|
667
684
|
const db =
|
|
668
685
|
clientDialect === 'pglite'
|
|
669
|
-
?
|
|
686
|
+
? createDatabase<TasksClientDb>({
|
|
687
|
+
dialect: createPgliteDialect(),
|
|
688
|
+
family: 'postgres',
|
|
689
|
+
})
|
|
670
690
|
: createTestSqliteDb<TasksClientDb>(clientDialect);
|
|
671
691
|
|
|
672
692
|
await ensureClientSyncSchema(db);
|
|
@@ -681,8 +701,9 @@ export async function createTestClient(
|
|
|
681
701
|
.addColumn('server_version', 'integer', (col) => col.notNull().defaultTo(0))
|
|
682
702
|
.execute();
|
|
683
703
|
|
|
684
|
-
const handlers
|
|
685
|
-
|
|
704
|
+
const handlers: ClientHandlerCollection<TasksClientDb> = [
|
|
705
|
+
createTasksClientHandler(),
|
|
706
|
+
];
|
|
686
707
|
|
|
687
708
|
const transport = createInProcessTransport(server, options.actorId);
|
|
688
709
|
|
package/src/http-fixtures.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
type ClientHandlerCollection,
|
|
3
3
|
enqueueOutboxCommit,
|
|
4
4
|
ensureClientSyncSchema,
|
|
5
5
|
type SyncClientDb,
|
|
@@ -13,9 +13,9 @@ import {
|
|
|
13
13
|
syncPullOnce,
|
|
14
14
|
syncPushOnce,
|
|
15
15
|
} from '@syncular/client';
|
|
16
|
-
import type
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
16
|
+
import { createDatabase, type SyncTransport } from '@syncular/core';
|
|
17
|
+
import { createBunSqliteDialect } from '@syncular/dialect-bun-sqlite';
|
|
18
|
+
import { createPgliteDialect } from '@syncular/dialect-pglite';
|
|
19
19
|
import {
|
|
20
20
|
ensureSyncSchema,
|
|
21
21
|
type ServerSyncDialect,
|
|
@@ -49,8 +49,11 @@ export interface CreateHttpServerFixtureOptions<DB extends SyncCoreDb> {
|
|
|
49
49
|
serverDialect: HttpServerDialect;
|
|
50
50
|
createTables: (db: Kysely<DB>) => Promise<void>;
|
|
51
51
|
handlers: ServerTableHandler<DB>[];
|
|
52
|
-
authenticate: CreateSyncRoutesOptions<
|
|
53
|
-
|
|
52
|
+
authenticate: CreateSyncRoutesOptions<
|
|
53
|
+
DB,
|
|
54
|
+
{ actorId: string }
|
|
55
|
+
>['authenticate'];
|
|
56
|
+
sync?: CreateSyncRoutesOptions<DB, { actorId: string }>['sync'];
|
|
54
57
|
routePath?: string;
|
|
55
58
|
cors?: boolean;
|
|
56
59
|
corsAllowMethods?: string;
|
|
@@ -61,7 +64,7 @@ export interface CreateHttpServerFixtureOptions<DB extends SyncCoreDb> {
|
|
|
61
64
|
export interface HttpClientFixture<DB extends SyncClientDb> {
|
|
62
65
|
db: Kysely<DB>;
|
|
63
66
|
transport: SyncTransport;
|
|
64
|
-
handlers:
|
|
67
|
+
handlers: ClientHandlerCollection<DB>;
|
|
65
68
|
actorId: string;
|
|
66
69
|
clientId: string;
|
|
67
70
|
enqueue: (
|
|
@@ -85,29 +88,97 @@ export interface CreateHttpClientFixtureOptions<DB extends SyncClientDb> {
|
|
|
85
88
|
actorId: string;
|
|
86
89
|
clientId: string;
|
|
87
90
|
createTables: (db: Kysely<DB>) => Promise<void>;
|
|
88
|
-
registerHandlers: (handlers:
|
|
91
|
+
registerHandlers: (handlers: ClientHandlerCollection<DB>) => void;
|
|
89
92
|
fetch?: typeof globalThis.fetch;
|
|
90
93
|
getHeaders?: () => Record<string, string>;
|
|
91
94
|
}
|
|
92
95
|
|
|
96
|
+
const PGLITE_INIT_ATTEMPTS = 3;
|
|
97
|
+
|
|
98
|
+
function isTransientPgliteInitError(error: Error): boolean {
|
|
99
|
+
return (
|
|
100
|
+
error.message.includes('access to a null reference') ||
|
|
101
|
+
error.message.includes('_pgl_initdb')
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function isServerNotRunningError(error: Error | null): boolean {
|
|
106
|
+
return (
|
|
107
|
+
error !== null && 'code' in error && error.code === 'ERR_SERVER_NOT_RUNNING'
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
async function delay(ms: number): Promise<void> {
|
|
112
|
+
await new Promise<void>((resolve) => {
|
|
113
|
+
setTimeout(resolve, ms);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async function withPgliteInitRetry<T>(
|
|
118
|
+
useRetries: boolean,
|
|
119
|
+
create: () => Promise<T>
|
|
120
|
+
): Promise<T> {
|
|
121
|
+
const maxAttempts = useRetries ? PGLITE_INIT_ATTEMPTS : 1;
|
|
122
|
+
let lastError: Error | null = null;
|
|
123
|
+
|
|
124
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
|
|
125
|
+
try {
|
|
126
|
+
return await create();
|
|
127
|
+
} catch (error) {
|
|
128
|
+
const candidate =
|
|
129
|
+
error instanceof Error ? error : new Error(String(error));
|
|
130
|
+
lastError = candidate;
|
|
131
|
+
|
|
132
|
+
const isRetryable =
|
|
133
|
+
useRetries &&
|
|
134
|
+
attempt < maxAttempts &&
|
|
135
|
+
isTransientPgliteInitError(candidate);
|
|
136
|
+
if (!isRetryable) {
|
|
137
|
+
throw candidate;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
await delay(25 * attempt);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
throw lastError ?? new Error('PGLite initialization failed');
|
|
145
|
+
}
|
|
146
|
+
|
|
93
147
|
export async function createHttpServerFixture<DB extends SyncCoreDb>(
|
|
94
148
|
options: CreateHttpServerFixtureOptions<DB>
|
|
95
149
|
): Promise<HttpServerFixture<DB>> {
|
|
96
|
-
const db =
|
|
97
|
-
options.serverDialect === 'pglite'
|
|
98
|
-
? createPgliteDb<DB>()
|
|
99
|
-
: createBunSqliteDb<DB>({ path: ':memory:' });
|
|
100
|
-
|
|
101
150
|
const dialect =
|
|
102
151
|
options.serverDialect === 'pglite'
|
|
103
152
|
? createPostgresServerDialect()
|
|
104
153
|
: createSqliteServerDialect();
|
|
105
154
|
|
|
106
|
-
await
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
155
|
+
const db = await withPgliteInitRetry(
|
|
156
|
+
options.serverDialect === 'pglite',
|
|
157
|
+
async () => {
|
|
158
|
+
const candidateDb =
|
|
159
|
+
options.serverDialect === 'pglite'
|
|
160
|
+
? createDatabase<DB>({
|
|
161
|
+
dialect: createPgliteDialect(),
|
|
162
|
+
family: 'postgres',
|
|
163
|
+
})
|
|
164
|
+
: createDatabase<DB>({
|
|
165
|
+
dialect: createBunSqliteDialect({ path: ':memory:' }),
|
|
166
|
+
family: 'sqlite',
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
try {
|
|
170
|
+
await ensureSyncSchema(candidateDb, dialect);
|
|
171
|
+
if (dialect.ensureConsoleSchema) {
|
|
172
|
+
await dialect.ensureConsoleSchema(candidateDb);
|
|
173
|
+
}
|
|
174
|
+
await options.createTables(candidateDb);
|
|
175
|
+
return candidateDb;
|
|
176
|
+
} catch (error) {
|
|
177
|
+
await candidateDb.destroy();
|
|
178
|
+
throw error;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
);
|
|
111
182
|
|
|
112
183
|
const app = new Hono();
|
|
113
184
|
const routePath = options.routePath ?? '/sync';
|
|
@@ -136,6 +207,8 @@ export async function createHttpServerFixture<DB extends SyncCoreDb>(
|
|
|
136
207
|
const address = httpServer.address();
|
|
137
208
|
const port = typeof address === 'object' && address ? address.port : 0;
|
|
138
209
|
|
|
210
|
+
let destroyed = false;
|
|
211
|
+
|
|
139
212
|
return {
|
|
140
213
|
db,
|
|
141
214
|
dialect,
|
|
@@ -143,9 +216,14 @@ export async function createHttpServerFixture<DB extends SyncCoreDb>(
|
|
|
143
216
|
httpServer,
|
|
144
217
|
baseUrl: `http://localhost:${port}`,
|
|
145
218
|
destroy: async () => {
|
|
219
|
+
if (destroyed) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
destroyed = true;
|
|
223
|
+
|
|
146
224
|
await new Promise<void>((resolve, reject) => {
|
|
147
225
|
httpServer.close((err) => {
|
|
148
|
-
if (err) {
|
|
226
|
+
if (err && !isServerNotRunningError(err)) {
|
|
149
227
|
reject(err);
|
|
150
228
|
return;
|
|
151
229
|
}
|
|
@@ -160,15 +238,32 @@ export async function createHttpServerFixture<DB extends SyncCoreDb>(
|
|
|
160
238
|
export async function createHttpClientFixture<DB extends SyncClientDb>(
|
|
161
239
|
options: CreateHttpClientFixtureOptions<DB>
|
|
162
240
|
): Promise<HttpClientFixture<DB>> {
|
|
163
|
-
const db =
|
|
164
|
-
options.clientDialect === 'pglite'
|
|
165
|
-
|
|
166
|
-
|
|
241
|
+
const db = await withPgliteInitRetry(
|
|
242
|
+
options.clientDialect === 'pglite',
|
|
243
|
+
async () => {
|
|
244
|
+
const candidateDb =
|
|
245
|
+
options.clientDialect === 'pglite'
|
|
246
|
+
? createDatabase<DB>({
|
|
247
|
+
dialect: createPgliteDialect(),
|
|
248
|
+
family: 'postgres',
|
|
249
|
+
})
|
|
250
|
+
: createDatabase<DB>({
|
|
251
|
+
dialect: createBunSqliteDialect({ path: ':memory:' }),
|
|
252
|
+
family: 'sqlite',
|
|
253
|
+
});
|
|
167
254
|
|
|
168
|
-
|
|
169
|
-
|
|
255
|
+
try {
|
|
256
|
+
await ensureClientSyncSchema(candidateDb);
|
|
257
|
+
await options.createTables(candidateDb);
|
|
258
|
+
return candidateDb;
|
|
259
|
+
} catch (error) {
|
|
260
|
+
await candidateDb.destroy();
|
|
261
|
+
throw error;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
);
|
|
170
265
|
|
|
171
|
-
const handlers
|
|
266
|
+
const handlers: ClientHandlerCollection<DB> = [];
|
|
172
267
|
options.registerHandlers(handlers);
|
|
173
268
|
|
|
174
269
|
const transport = createHttpTransport({
|
package/src/scenario-flow.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
type
|
|
2
|
+
type ClientHandlerCollection,
|
|
3
3
|
enqueueOutboxCommit,
|
|
4
4
|
type SyncClientDb,
|
|
5
5
|
type SyncOnceOptions,
|
|
@@ -22,7 +22,7 @@ import type { Kysely } from 'kysely';
|
|
|
22
22
|
export interface ScenarioFlowClient<DB extends SyncClientDb> {
|
|
23
23
|
db: Kysely<DB>;
|
|
24
24
|
transport: SyncTransport;
|
|
25
|
-
handlers:
|
|
25
|
+
handlers: ClientHandlerCollection<DB>;
|
|
26
26
|
clientId: string;
|
|
27
27
|
actorId?: string;
|
|
28
28
|
}
|