@syncular/server 0.0.1-60 → 0.0.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 (61) hide show
  1. package/dist/clients.d.ts +0 -1
  2. package/dist/clients.d.ts.map +1 -1
  3. package/dist/clients.js.map +1 -1
  4. package/dist/dialect/types.d.ts +4 -17
  5. package/dist/dialect/types.d.ts.map +1 -1
  6. package/dist/proxy/handler.d.ts.map +1 -1
  7. package/dist/proxy/handler.js +0 -1
  8. package/dist/proxy/handler.js.map +1 -1
  9. package/dist/proxy/index.d.ts +2 -2
  10. package/dist/proxy/index.d.ts.map +1 -1
  11. package/dist/proxy/index.js.map +1 -1
  12. package/dist/proxy/oplog.d.ts +0 -1
  13. package/dist/proxy/oplog.d.ts.map +1 -1
  14. package/dist/proxy/oplog.js +3 -9
  15. package/dist/proxy/oplog.js.map +1 -1
  16. package/dist/proxy/registry.d.ts +11 -0
  17. package/dist/proxy/registry.d.ts.map +1 -1
  18. package/dist/proxy/registry.js +24 -0
  19. package/dist/proxy/registry.js.map +1 -1
  20. package/dist/proxy/types.d.ts +0 -2
  21. package/dist/proxy/types.d.ts.map +1 -1
  22. package/dist/pull.d.ts +0 -1
  23. package/dist/pull.d.ts.map +1 -1
  24. package/dist/pull.js +5 -23
  25. package/dist/pull.js.map +1 -1
  26. package/dist/push.d.ts +1 -13
  27. package/dist/push.d.ts.map +1 -1
  28. package/dist/push.js +7 -54
  29. package/dist/push.js.map +1 -1
  30. package/dist/realtime/types.d.ts +0 -2
  31. package/dist/realtime/types.d.ts.map +1 -1
  32. package/dist/schema.d.ts +0 -10
  33. package/dist/schema.d.ts.map +1 -1
  34. package/dist/shapes/create-handler.d.ts.map +1 -1
  35. package/dist/shapes/create-handler.js +26 -86
  36. package/dist/shapes/create-handler.js.map +1 -1
  37. package/dist/snapshot-chunks/db-metadata.d.ts.map +1 -1
  38. package/dist/snapshot-chunks/db-metadata.js +0 -3
  39. package/dist/snapshot-chunks/db-metadata.js.map +1 -1
  40. package/dist/snapshot-chunks/types.d.ts +0 -2
  41. package/dist/snapshot-chunks/types.d.ts.map +1 -1
  42. package/dist/snapshot-chunks.d.ts +0 -3
  43. package/dist/snapshot-chunks.d.ts.map +1 -1
  44. package/dist/snapshot-chunks.js +1 -8
  45. package/dist/snapshot-chunks.js.map +1 -1
  46. package/package.json +7 -28
  47. package/src/clients.ts +0 -1
  48. package/src/dialect/types.ts +6 -27
  49. package/src/proxy/handler.ts +0 -1
  50. package/src/proxy/index.ts +1 -2
  51. package/src/proxy/oplog.ts +3 -10
  52. package/src/proxy/registry.ts +33 -0
  53. package/src/proxy/types.ts +0 -2
  54. package/src/pull.ts +5 -27
  55. package/src/push.ts +8 -77
  56. package/src/realtime/types.ts +0 -2
  57. package/src/schema.ts +0 -10
  58. package/src/shapes/create-handler.ts +43 -108
  59. package/src/snapshot-chunks/db-metadata.ts +0 -3
  60. package/src/snapshot-chunks/types.ts +0 -2
  61. package/src/snapshot-chunks.ts +1 -12
@@ -32,8 +32,7 @@ export async function readSnapshotChunkRefByPageKey(db, args) {
32
32
  select chunk_id, sha256, byte_length, encoding, compression
33
33
  from ${sql.table('sync_snapshot_chunks')}
34
34
  where
35
- partition_id = ${args.partitionId}
36
- and scope_key = ${args.scopeKey}
35
+ scope_key = ${args.scopeKey}
37
36
  and scope = ${args.scope}
38
37
  and as_of_commit_seq = ${args.asOfCommitSeq}
39
38
  and row_cursor = ${rowCursorKey}
@@ -68,7 +67,6 @@ export async function insertSnapshotChunk(db, args) {
68
67
  await sql `
69
68
  insert into ${sql.table('sync_snapshot_chunks')} (
70
69
  chunk_id,
71
- partition_id,
72
70
  scope_key,
73
71
  scope,
74
72
  as_of_commit_seq,
@@ -85,7 +83,6 @@ export async function insertSnapshotChunk(db, args) {
85
83
  )
86
84
  values (
87
85
  ${args.chunkId},
88
- ${args.partitionId},
89
86
  ${args.scopeKey},
90
87
  ${args.scope},
91
88
  ${args.asOfCommitSeq},
@@ -101,7 +98,6 @@ export async function insertSnapshotChunk(db, args) {
101
98
  ${args.expiresAt}
102
99
  )
103
100
  on conflict (
104
- partition_id,
105
101
  scope_key,
106
102
  scope,
107
103
  as_of_commit_seq,
@@ -115,7 +111,6 @@ export async function insertSnapshotChunk(db, args) {
115
111
  blob_hash = ${blobHash}
116
112
  `.execute(db);
117
113
  const ref = await readSnapshotChunkRefByPageKey(db, {
118
- partitionId: args.partitionId,
119
114
  scopeKey: args.scopeKey,
120
115
  scope: args.scope,
121
116
  asOfCommitSeq: args.asOfCommitSeq,
@@ -133,7 +128,6 @@ export async function readSnapshotChunk(db, chunkId, options) {
133
128
  const rowResult = await sql `
134
129
  select
135
130
  chunk_id,
136
- partition_id,
137
131
  scope_key,
138
132
  scope,
139
133
  as_of_commit_seq,
@@ -178,7 +172,6 @@ export async function readSnapshotChunk(db, chunkId, options) {
178
172
  }
179
173
  return {
180
174
  chunkId: row.chunk_id,
181
- partitionId: row.partition_id,
182
175
  scopeKey: row.scope_key,
183
176
  scope: row.scope,
184
177
  asOfCommitSeq: Number(row.as_of_commit_seq ?? 0),
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot-chunks.js","sourceRoot":"","sources":["../src/snapshot-chunks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshot-chunks.js","sourceRoot":"","sources":["../src/snapshot-chunks.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,25 +1,6 @@
1
1
  {
2
2
  "name": "@syncular/server",
3
- "version": "0.0.1-60",
4
- "description": "Server-side sync engine with push/pull, pruning, and snapshot support",
5
- "license": "MIT",
6
- "author": "Benjamin Kniffler",
7
- "homepage": "https://syncular.dev",
8
- "repository": {
9
- "type": "git",
10
- "url": "https://github.com/syncular/syncular.git",
11
- "directory": "packages/server"
12
- },
13
- "bugs": {
14
- "url": "https://github.com/syncular/syncular/issues"
15
- },
16
- "keywords": [
17
- "sync",
18
- "offline-first",
19
- "realtime",
20
- "database",
21
- "typescript"
22
- ],
3
+ "version": "0.0.1",
23
4
  "private": false,
24
5
  "publishConfig": {
25
6
  "access": "public"
@@ -58,20 +39,18 @@
58
39
  "scripts": {
59
40
  "test": "bun test --pass-with-no-tests",
60
41
  "tsgo": "tsgo --noEmit",
61
- "build": "rm -rf dist && tsgo",
62
- "release": "bun pm pack --destination . && npm publish ./*.tgz --tag latest && rm -f ./*.tgz"
42
+ "build": "rm -rf dist && tsgo"
63
43
  },
64
44
  "dependencies": {
65
- "@syncular/core": "0.0.1"
45
+ "@syncular/core": "workspace:*",
46
+ "zod": "^4.3.6"
66
47
  },
67
48
  "peerDependencies": {
68
- "kysely": "^0.28.0",
69
- "zod": "^4.0.0"
49
+ "kysely": "^0.28.0"
70
50
  },
71
51
  "devDependencies": {
72
- "@syncular/config": "0.0.0",
73
- "kysely": "*",
74
- "zod": "*"
52
+ "@syncular/config": "workspace:*",
53
+ "kysely": "*"
75
54
  },
76
55
  "files": [
77
56
  "dist",
package/src/clients.ts CHANGED
@@ -10,7 +10,6 @@ export async function recordClientCursor<DB extends SyncCoreDb>(
10
10
  db: DbExecutor<DB>,
11
11
  dialect: ServerSyncDialect,
12
12
  args: {
13
- partitionId?: string;
14
13
  clientId: string;
15
14
  actorId: string;
16
15
  cursor: number;
@@ -41,16 +41,10 @@ export interface ServerSyncDialect {
41
41
  setRepeatableRead<DB extends SyncCoreDb>(trx: DbExecutor<DB>): Promise<void>;
42
42
 
43
43
  /** Read the maximum committed commit_seq (0 if none) */
44
- readMaxCommitSeq<DB extends SyncCoreDb>(
45
- db: DbExecutor<DB>,
46
- options?: { partitionId?: string }
47
- ): Promise<number>;
44
+ readMaxCommitSeq<DB extends SyncCoreDb>(db: DbExecutor<DB>): Promise<number>;
48
45
 
49
46
  /** Read the minimum committed commit_seq (0 if none) */
50
- readMinCommitSeq<DB extends SyncCoreDb>(
51
- db: DbExecutor<DB>,
52
- options?: { partitionId?: string }
53
- ): Promise<number>;
47
+ readMinCommitSeq<DB extends SyncCoreDb>(db: DbExecutor<DB>): Promise<number>;
54
48
 
55
49
  /**
56
50
  * Read the next commit sequence numbers that have changes for the given tables.
@@ -58,19 +52,13 @@ export interface ServerSyncDialect {
58
52
  */
59
53
  readCommitSeqsForPull<DB extends SyncCoreDb>(
60
54
  db: DbExecutor<DB>,
61
- args: {
62
- cursor: number;
63
- limitCommits: number;
64
- tables: string[];
65
- partitionId?: string;
66
- }
55
+ args: { cursor: number; limitCommits: number; tables: string[] }
67
56
  ): Promise<number[]>;
68
57
 
69
58
  /** Read commit metadata for commit_seq values */
70
59
  readCommits<DB extends SyncCoreDb>(
71
60
  db: DbExecutor<DB>,
72
- commitSeqs: number[],
73
- options?: { partitionId?: string }
61
+ commitSeqs: number[]
74
62
  ): Promise<SyncCommitRow[]>;
75
63
 
76
64
  /**
@@ -79,12 +67,7 @@ export interface ServerSyncDialect {
79
67
  */
80
68
  readChangesForCommits<DB extends SyncCoreDb>(
81
69
  db: DbExecutor<DB>,
82
- args: {
83
- commitSeqs: number[];
84
- table: string;
85
- scopes: ScopeValues;
86
- partitionId?: string;
87
- }
70
+ args: { commitSeqs: number[]; table: string; scopes: ScopeValues }
88
71
  ): Promise<SyncChangeRow[]>;
89
72
 
90
73
  /**
@@ -100,7 +83,6 @@ export interface ServerSyncDialect {
100
83
  scopes: ScopeValues;
101
84
  cursor: number;
102
85
  limitCommits: number;
103
- partitionId?: string;
104
86
  }
105
87
  ): Promise<
106
88
  Array<{
@@ -130,7 +112,6 @@ export interface ServerSyncDialect {
130
112
  scopes: ScopeValues;
131
113
  cursor: number;
132
114
  limitCommits: number;
133
- partitionId?: string;
134
115
  }
135
116
  ): AsyncGenerator<{
136
117
  commit_seq: number;
@@ -162,7 +143,6 @@ export interface ServerSyncDialect {
162
143
  recordClientCursor<DB extends SyncCoreDb>(
163
144
  db: DbExecutor<DB>,
164
145
  args: {
165
- partitionId?: string;
166
146
  clientId: string;
167
147
  actorId: string;
168
148
  cursor: number;
@@ -202,8 +182,7 @@ export interface ServerSyncDialect {
202
182
  */
203
183
  readAffectedTablesFromChanges<DB extends SyncCoreDb>(
204
184
  db: DbExecutor<DB>,
205
- commitSeq: number,
206
- options?: { partitionId?: string }
185
+ commitSeq: number
207
186
  ): Promise<string[]>;
208
187
 
209
188
  /**
@@ -138,7 +138,6 @@ export async function executeProxyQuery<DB extends SyncCoreDb>(
138
138
  dialect,
139
139
  actorId: ctx.actorId,
140
140
  clientId: ctx.clientId,
141
- partitionId: ctx.partitionId,
142
141
  shape,
143
142
  operation: mutation.operation,
144
143
  rows: affectedRows,
@@ -6,12 +6,11 @@
6
6
 
7
7
  // Query execution
8
8
  export {
9
- type ExecuteProxyQueryArgs,
10
9
  type ExecuteProxyQueryResult,
11
10
  executeProxyQuery,
12
11
  } from './handler';
13
12
  // Mutation detection
14
- export { type DetectedMutation, detectMutation } from './mutation-detector';
13
+ export { detectMutation } from './mutation-detector';
15
14
  // Oplog creation
16
15
  // Registry
17
16
  export { ProxyTableRegistry } from './registry';
@@ -29,13 +29,11 @@ export async function createOplogEntries<DB extends SyncCoreDb>(args: {
29
29
  dialect: ServerSyncDialect;
30
30
  actorId: string;
31
31
  clientId: string;
32
- partitionId?: string;
33
32
  shape: ProxyTableHandler;
34
33
  operation: SyncOp;
35
34
  rows: Record<string, unknown>[];
36
35
  }): Promise<{ commitSeq: number; affectedTables: string[] }> {
37
36
  const { trx, dialect, actorId, clientId, shape, operation, rows } = args;
38
- const partitionId = args.partitionId ?? 'default';
39
37
 
40
38
  if (rows.length === 0) {
41
39
  return { commitSeq: 0, affectedTables: [] };
@@ -47,7 +45,6 @@ export async function createOplogEntries<DB extends SyncCoreDb>(args: {
47
45
  // Create commit record
48
46
  const commitResult = await sql<{ commit_seq: number }>`
49
47
  insert into ${sql.table('sync_commits')} (
50
- partition_id,
51
48
  actor_id,
52
49
  client_id,
53
50
  client_commit_id,
@@ -55,7 +52,6 @@ export async function createOplogEntries<DB extends SyncCoreDb>(args: {
55
52
  result_json
56
53
  )
57
54
  values (
58
- ${partitionId},
59
55
  ${actorId},
60
56
  ${clientId},
61
57
  ${`proxy:${generateId()}`},
@@ -80,7 +76,6 @@ export async function createOplogEntries<DB extends SyncCoreDb>(args: {
80
76
 
81
77
  return {
82
78
  commit_seq: commitSeq,
83
- partition_id: partitionId,
84
79
  table: shape.table,
85
80
  row_id: String(row[pk]),
86
81
  op: operation,
@@ -94,7 +89,6 @@ export async function createOplogEntries<DB extends SyncCoreDb>(args: {
94
89
  await sql`
95
90
  insert into ${sql.table('sync_changes')} (
96
91
  commit_seq,
97
- partition_id,
98
92
  "table",
99
93
  row_id,
100
94
  op,
@@ -106,7 +100,6 @@ export async function createOplogEntries<DB extends SyncCoreDb>(args: {
106
100
  changes.map(
107
101
  (c) => sql`(
108
102
  ${c.commit_seq},
109
- ${c.partition_id},
110
103
  ${c.table},
111
104
  ${c.row_id},
112
105
  ${c.op},
@@ -131,12 +124,12 @@ export async function createOplogEntries<DB extends SyncCoreDb>(args: {
131
124
  // Insert table commits for subscription filtering
132
125
  if (affectedTables.length > 0) {
133
126
  await sql`
134
- insert into ${sql.table('sync_table_commits')} (partition_id, "table", commit_seq)
127
+ insert into ${sql.table('sync_table_commits')} ("table", commit_seq)
135
128
  values ${sql.join(
136
- sortedAffectedTables.map((table) => sql`(${partitionId}, ${table}, ${commitSeq})`),
129
+ sortedAffectedTables.map((table) => sql`(${table}, ${commitSeq})`),
137
130
  sql`, `
138
131
  )}
139
- on conflict (partition_id, "table", commit_seq) do nothing
132
+ on conflict ("table", commit_seq) do nothing
140
133
  `.execute(trx);
141
134
  }
142
135
 
@@ -4,6 +4,7 @@
4
4
  * Registry for proxy table handlers.
5
5
  */
6
6
 
7
+ import type { TableRegistry } from '../shapes/registry';
7
8
  import type { ProxyTableHandler } from './types';
8
9
 
9
10
  /**
@@ -54,3 +55,35 @@ export class ProxyTableRegistry {
54
55
  return Array.from(this.handlers.values());
55
56
  }
56
57
  }
58
+
59
+ /**
60
+ * Create a ProxyTableRegistry from existing ServerTableHandlers.
61
+ *
62
+ * This helper extracts extractScopes from ServerTableHandlers that define it,
63
+ * avoiding duplication of scope extraction logic.
64
+ *
65
+ * @param tables - The existing table registry
66
+ * @param tableNameMap - Map from table name to database table name
67
+ */
68
+ export function createProxyRegistryFromTables(
69
+ tables: TableRegistry,
70
+ tableNameMap: Record<string, string>
71
+ ): ProxyTableRegistry {
72
+ const registry = new ProxyTableRegistry();
73
+
74
+ for (const [tableName, dbTableName] of Object.entries(tableNameMap)) {
75
+ const handler = tables.get(tableName);
76
+ if (
77
+ handler &&
78
+ 'extractScopes' in handler &&
79
+ typeof handler.extractScopes === 'function'
80
+ ) {
81
+ registry.register({
82
+ table: dbTableName,
83
+ computeScopes: handler.extractScopes,
84
+ });
85
+ }
86
+ }
87
+
88
+ return registry;
89
+ }
@@ -41,6 +41,4 @@ export interface ProxyQueryContext {
41
41
  actorId: string;
42
42
  /** Client ID for oplog tracking */
43
43
  clientId: string;
44
- /** Logical partition key (default: 'default') */
45
- partitionId?: string;
46
44
  }
package/src/pull.ts CHANGED
@@ -101,7 +101,6 @@ export async function pull<DB extends SyncCoreDb>(args: {
101
101
  dialect: ServerSyncDialect;
102
102
  shapes: TableRegistry<DB>;
103
103
  actorId: string;
104
- partitionId?: string;
105
104
  request: SyncPullRequest;
106
105
  /**
107
106
  * Optional snapshot chunk storage adapter.
@@ -112,7 +111,6 @@ export async function pull<DB extends SyncCoreDb>(args: {
112
111
  }): Promise<PullResult> {
113
112
  const { request, dialect } = args;
114
113
  const db = args.db;
115
- const partitionId = args.partitionId ?? 'default';
116
114
 
117
115
  // Validate and sanitize request limits
118
116
  const limitCommits = sanitizeLimit(request.limitCommits, 50, 1, 500);
@@ -136,8 +134,8 @@ export async function pull<DB extends SyncCoreDb>(args: {
136
134
  return dialect.executeInTransaction(db, async (trx) => {
137
135
  await dialect.setRepeatableRead(trx);
138
136
 
139
- const maxCommitSeq = await dialect.readMaxCommitSeq(trx, { partitionId });
140
- const minCommitSeq = await dialect.readMinCommitSeq(trx, { partitionId });
137
+ const maxCommitSeq = await dialect.readMaxCommitSeq(trx);
138
+ const minCommitSeq = await dialect.readMinCommitSeq(trx);
141
139
 
142
140
  const subResponses: SyncPullSubscriptionResponse[] = [];
143
141
  const activeSubscriptions: { scopes: ScopeValues }[] = [];
@@ -245,9 +243,8 @@ export async function pull<DB extends SyncCoreDb>(args: {
245
243
  const nowIso = new Date().toISOString();
246
244
 
247
245
  // Use scope hash for caching
248
- const cacheKey = `${partitionId}:${scopesToCacheKey(effectiveScopes)}`;
246
+ const cacheKey = scopesToCacheKey(effectiveScopes);
249
247
  const cached = await readSnapshotChunkRefByPageKey(trx, {
250
- partitionId,
251
248
  scopeKey: cacheKey,
252
249
  scope: nextTableName,
253
250
  asOfCommitSeq: effectiveState.asOfCommitSeq,
@@ -276,7 +273,6 @@ export async function pull<DB extends SyncCoreDb>(args: {
276
273
  // Use external chunk storage if available, otherwise fall back to inline
277
274
  if (args.chunkStorage) {
278
275
  chunkRef = await args.chunkStorage.storeChunk({
279
- partitionId,
280
276
  scopeKey: cacheKey,
281
277
  scope: nextTableName,
282
278
  asOfCommitSeq: effectiveState.asOfCommitSeq,
@@ -292,7 +288,6 @@ export async function pull<DB extends SyncCoreDb>(args: {
292
288
  const chunkId = randomUUID();
293
289
  chunkRef = await insertSnapshotChunk(trx, {
294
290
  chunkId,
295
- partitionId,
296
291
  scopeKey: cacheKey,
297
292
  scope: nextTableName,
298
293
  asOfCommitSeq: effectiveState.asOfCommitSeq,
@@ -348,23 +343,9 @@ export async function pull<DB extends SyncCoreDb>(args: {
348
343
  }
349
344
 
350
345
  // Incremental pull for this subscription
351
- // Read the commit window for this table up-front so the subscription cursor
352
- // can advance past commits that don't match the requested scopes.
353
- const scannedCommitSeqs = await dialect.readCommitSeqsForPull(trx, {
354
- partitionId,
355
- cursor,
356
- limitCommits,
357
- tables: [sub.shape],
358
- });
359
- const maxScannedCommitSeq =
360
- scannedCommitSeqs.length > 0
361
- ? scannedCommitSeqs[scannedCommitSeqs.length - 1]!
362
- : cursor;
363
-
364
346
  // Use streaming when available to reduce memory pressure for large pulls
365
347
  const pullRowStream = dialect.streamIncrementalPullRows
366
348
  ? dialect.streamIncrementalPullRows(trx, {
367
- partitionId,
368
349
  table: sub.shape,
369
350
  scopes: effectiveScopes,
370
351
  cursor,
@@ -397,7 +378,6 @@ export async function pull<DB extends SyncCoreDb>(args: {
397
378
  } else {
398
379
  // Non-streaming fallback: load all rows at once
399
380
  const rows = await dialect.readIncrementalPullRows(trx, {
400
- partitionId,
401
381
  table: sub.shape,
402
382
  scopes: effectiveScopes,
403
383
  cursor,
@@ -409,18 +389,16 @@ export async function pull<DB extends SyncCoreDb>(args: {
409
389
  }
410
390
  }
411
391
 
412
- nextCursor = Math.max(nextCursor, maxScannedCommitSeq);
413
-
414
392
  if (incrementalRows.length === 0) {
415
393
  subResponses.push({
416
394
  id: sub.id,
417
395
  status: 'active',
418
396
  scopes: effectiveScopes,
419
397
  bootstrap: false,
420
- nextCursor,
398
+ nextCursor: cursor,
421
399
  commits: [],
422
400
  });
423
- nextCursors.push(nextCursor);
401
+ nextCursors.push(cursor);
424
402
  continue;
425
403
  }
426
404