@syncular/server 0.0.6-143 → 0.0.6-152

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/index.d.ts CHANGED
@@ -16,6 +16,7 @@ export * from './handlers';
16
16
  export * from './helpers';
17
17
  export * from './migrate';
18
18
  export * from './notify';
19
+ export * from './plugins';
19
20
  export * from './proxy';
20
21
  export * from './prune';
21
22
  export * from './pull';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,gBAAgB,CAAC;AAE/B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,gBAAgB,CAAC;AAE/B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC"}
package/dist/index.js CHANGED
@@ -16,6 +16,7 @@ export * from './handlers/index.js';
16
16
  export * from './helpers/index.js';
17
17
  export * from './migrate.js';
18
18
  export * from './notify.js';
19
+ export * from './plugins/index.js';
19
20
  export * from './proxy/index.js';
20
21
  export * from './prune.js';
21
22
  export * from './pull.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,gBAAgB,CAAC;AAE/B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAElC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,gBAAgB,CAAC;AAE/B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAElC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './types.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,48 @@
1
+ import type { SyncOperation } from '@syncular/core';
2
+ import type { ApplyOperationResult, ServerApplyOperationContext, ServerTableHandler, SyncServerAuth } from '../handlers/types';
3
+ import type { SyncCoreDb } from '../schema';
4
+ /**
5
+ * Plugin priority levels for server push hooks.
6
+ * Lower numbers execute first.
7
+ */
8
+ export declare const ServerPushPluginPriority: {
9
+ /** CRDT payload transforms should run early. */
10
+ readonly CRDT: 40;
11
+ /** Default priority for general plugins. */
12
+ readonly DEFAULT: 50;
13
+ /** Logging/telemetry should run last. */
14
+ readonly TELEMETRY: 100;
15
+ };
16
+ export interface ServerPushPluginBeforeApplyArgs<DB extends SyncCoreDb = SyncCoreDb, Auth extends SyncServerAuth = SyncServerAuth> {
17
+ ctx: ServerApplyOperationContext<DB, Auth>;
18
+ tableHandler: ServerTableHandler<DB, Auth>;
19
+ op: SyncOperation;
20
+ opIndex: number;
21
+ }
22
+ export interface ServerPushPluginAfterApplyArgs<DB extends SyncCoreDb = SyncCoreDb, Auth extends SyncServerAuth = SyncServerAuth> {
23
+ ctx: ServerApplyOperationContext<DB, Auth>;
24
+ tableHandler: ServerTableHandler<DB, Auth>;
25
+ op: SyncOperation;
26
+ opIndex: number;
27
+ applied: ApplyOperationResult;
28
+ }
29
+ export interface SyncServerPushPlugin<DB extends SyncCoreDb = SyncCoreDb, Auth extends SyncServerAuth = SyncServerAuth> {
30
+ name: string;
31
+ /**
32
+ * Plugin priority for execution order. Lower numbers execute first.
33
+ * @default ServerPushPluginPriority.DEFAULT (50)
34
+ */
35
+ priority?: number;
36
+ /**
37
+ * Called right before a table handler applies an operation.
38
+ * Use this to transform payloads (for example CRDT envelopes).
39
+ */
40
+ beforeApplyOperation?(args: ServerPushPluginBeforeApplyArgs<DB, Auth>): Promise<SyncOperation> | SyncOperation;
41
+ /**
42
+ * Called after a table handler applies an operation.
43
+ * Use this to transform emitted changes / conflict rows.
44
+ */
45
+ afterApplyOperation?(args: ServerPushPluginAfterApplyArgs<DB, Auth>): Promise<ApplyOperationResult> | ApplyOperationResult;
46
+ }
47
+ export declare function sortServerPushPlugins<DB extends SyncCoreDb = SyncCoreDb, Auth extends SyncServerAuth = SyncServerAuth>(plugins: readonly SyncServerPushPlugin<DB, Auth>[] | undefined): SyncServerPushPlugin<DB, Auth>[];
48
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,kBAAkB,EAClB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,wBAAwB;IACnC,gDAAgD;;IAEhD,4CAA4C;;IAE5C,yCAAyC;;CAEjC,CAAC;AAEX,MAAM,WAAW,+BAA+B,CAC9C,EAAE,SAAS,UAAU,GAAG,UAAU,EAClC,IAAI,SAAS,cAAc,GAAG,cAAc;IAE5C,GAAG,EAAE,2BAA2B,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,YAAY,EAAE,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,EAAE,EAAE,aAAa,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,8BAA8B,CAC7C,EAAE,SAAS,UAAU,GAAG,UAAU,EAClC,IAAI,SAAS,cAAc,GAAG,cAAc;IAE5C,GAAG,EAAE,2BAA2B,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,YAAY,EAAE,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3C,EAAE,EAAE,aAAa,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,oBAAoB,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB,CACnC,EAAE,SAAS,UAAU,GAAG,UAAU,EAClC,IAAI,SAAS,cAAc,GAAG,cAAc;IAE5C,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,oBAAoB,CAAC,CACnB,IAAI,EAAE,+BAA+B,CAAC,EAAE,EAAE,IAAI,CAAC,GAC9C,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;IAE1C;;;OAGG;IACH,mBAAmB,CAAC,CAClB,IAAI,EAAE,8BAA8B,CAAC,EAAE,EAAE,IAAI,CAAC,GAC7C,OAAO,CAAC,oBAAoB,CAAC,GAAG,oBAAoB,CAAC;CACzD;AAED,wBAAgB,qBAAqB,CACnC,EAAE,SAAS,UAAU,GAAG,UAAU,EAClC,IAAI,SAAS,cAAc,GAAG,cAAc,EAE5C,OAAO,EAAE,SAAS,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,SAAS,GAC7D,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAYlC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Plugin priority levels for server push hooks.
3
+ * Lower numbers execute first.
4
+ */
5
+ export const ServerPushPluginPriority = {
6
+ /** CRDT payload transforms should run early. */
7
+ CRDT: 40,
8
+ /** Default priority for general plugins. */
9
+ DEFAULT: 50,
10
+ /** Logging/telemetry should run last. */
11
+ TELEMETRY: 100,
12
+ };
13
+ export function sortServerPushPlugins(plugins) {
14
+ if (!plugins || plugins.length === 0)
15
+ return [];
16
+ return plugins
17
+ .map((plugin, index) => ({ plugin, index }))
18
+ .sort((a, b) => {
19
+ const aPriority = a.plugin.priority ?? ServerPushPluginPriority.DEFAULT;
20
+ const bPriority = b.plugin.priority ?? ServerPushPluginPriority.DEFAULT;
21
+ if (aPriority !== bPriority)
22
+ return aPriority - bPriority;
23
+ return a.index - b.index;
24
+ })
25
+ .map((entry) => entry.plugin);
26
+ }
27
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,gDAAgD;IAChD,IAAI,EAAE,EAAE;IACR,4CAA4C;IAC5C,OAAO,EAAE,EAAE;IACX,yCAAyC;IACzC,SAAS,EAAE,GAAG;CACN,CAAC;AAoDX,MAAM,UAAU,qBAAqB,CAInC,OAA8D,EAC5B;IAClC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhD,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;SAC3C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,wBAAwB,CAAC,OAAO,CAAC;QACxE,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,wBAAwB,CAAC,OAAO,CAAC;QACxE,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,GAAG,SAAS,CAAC;QAC1D,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IAAA,CAC1B,CAAC;SACD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAAA,CACjC"}
package/dist/push.d.ts CHANGED
@@ -3,6 +3,7 @@ import type { Kysely } from 'kysely';
3
3
  import type { ServerSyncDialect } from './dialect/types';
4
4
  import { type ServerHandlerCollection } from './handlers/collection';
5
5
  import type { SyncServerAuth } from './handlers/types';
6
+ import { type SyncServerPushPlugin } from './plugins/types';
6
7
  import type { SyncCoreDb } from './schema';
7
8
  export interface PushCommitResult {
8
9
  response: SyncPushResponse;
@@ -37,6 +38,7 @@ export declare function pushCommit<DB extends SyncCoreDb, Auth extends SyncServe
37
38
  db: Kysely<DB>;
38
39
  dialect: ServerSyncDialect;
39
40
  handlers: ServerHandlerCollection<DB, Auth>;
41
+ plugins?: readonly SyncServerPushPlugin<DB, Auth>[];
40
42
  auth: Auth;
41
43
  request: SyncPushRequest;
42
44
  }): Promise<PushCommitResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAEtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAEV,MAAM,EAIP,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAK3C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B;;;OAGG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;;;OAIG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;OAGG;IACH,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B;;;OAGG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAyID,wBAAsB,UAAU,CAC9B,EAAE,SAAS,UAAU,EACrB,IAAI,SAAS,cAAc,EAC3B,IAAI,EAAE;IACN,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,eAAe,CAAC;CAC1B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAskB5B"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EAEtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAEV,MAAM,EAIP,MAAM,QAAQ,CAAC;AAEhB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAK3C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B;;;OAGG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;;;OAIG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;OAGG;IACH,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B;;;OAGG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;OAGG;IACH,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AA+JD,wBAAsB,UAAU,CAC9B,EAAE,SAAS,UAAU,EACrB,IAAI,SAAS,cAAc,EAC3B,IAAI,EAAE;IACN,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,SAAS,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;IACpD,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,eAAe,CAAC;CAC1B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAomB5B"}
package/dist/push.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { captureSyncException, countSyncMetric, distributionSyncMetric, startSyncSpan, } from '@syncular/core';
2
2
  import { sql } from 'kysely';
3
3
  import { getServerHandlerOrThrow, } from './handlers/collection.js';
4
+ import { sortServerPushPlugins, } from './plugins/types.js';
4
5
  class RejectCommitError extends Error {
5
6
  response;
6
7
  constructor(response) {
@@ -48,6 +49,17 @@ function isRecord(value) {
48
49
  function isSyncPushResponse(value) {
49
50
  return (isRecord(value) && value.ok === true && typeof value.status === 'string');
50
51
  }
52
+ function assertOperationIdentityUnchanged(pluginName, before, after) {
53
+ if (before.table !== after.table) {
54
+ throw new Error(`Server push plugin "${pluginName}" cannot change op.table (${before.table} -> ${after.table})`);
55
+ }
56
+ if (before.row_id !== after.row_id) {
57
+ throw new Error(`Server push plugin "${pluginName}" cannot change op.row_id (${before.row_id} -> ${after.row_id})`);
58
+ }
59
+ if (before.op !== after.op) {
60
+ throw new Error(`Server push plugin "${pluginName}" cannot change op.op (${before.op} -> ${after.op})`);
61
+ }
62
+ }
51
63
  async function readCommitAffectedTables(db, dialect, commitSeq, partitionId) {
52
64
  try {
53
65
  const commitsQ = db.selectFrom('sync_commits');
@@ -98,6 +110,7 @@ function recordPushMetrics(args) {
98
110
  }
99
111
  export async function pushCommit(args) {
100
112
  const { db, dialect, handlers, request } = args;
113
+ const pushPlugins = sortServerPushPlugins(args.plugins);
101
114
  const actorId = args.auth.actorId;
102
115
  const partitionId = args.auth.partitionId ?? 'default';
103
116
  const requestedOps = Array.isArray(request.operations)
@@ -356,9 +369,23 @@ export async function pushCommit(args) {
356
369
  commitId,
357
370
  schemaVersion: request.schemaVersion,
358
371
  };
372
+ let transformedOp = op;
373
+ for (const plugin of pushPlugins) {
374
+ if (!plugin.beforeApplyOperation)
375
+ continue;
376
+ const nextOp = await plugin.beforeApplyOperation({
377
+ ctx: operationCtx,
378
+ tableHandler: handler,
379
+ op: transformedOp,
380
+ opIndex: i,
381
+ });
382
+ assertOperationIdentityUnchanged(plugin.name, op, nextOp);
383
+ transformedOp = nextOp;
384
+ }
359
385
  let appliedBatch = null;
360
386
  let consumed = 1;
361
- if (handler.applyOperationBatch &&
387
+ if (pushPlugins.length === 0 &&
388
+ handler.applyOperationBatch &&
362
389
  dialect.supportsInsertReturning) {
363
390
  const batchInput = [];
364
391
  for (let j = i; j < ops.length; j++) {
@@ -373,9 +400,19 @@ export async function pushCommit(args) {
373
400
  }
374
401
  }
375
402
  if (!appliedBatch) {
376
- appliedBatch = [
377
- await handler.applyOperation(operationCtx, op, i),
378
- ];
403
+ let appliedSingle = await handler.applyOperation(operationCtx, transformedOp, i);
404
+ for (const plugin of pushPlugins) {
405
+ if (!plugin.afterApplyOperation)
406
+ continue;
407
+ appliedSingle = await plugin.afterApplyOperation({
408
+ ctx: operationCtx,
409
+ tableHandler: handler,
410
+ op: transformedOp,
411
+ opIndex: i,
412
+ applied: appliedSingle,
413
+ });
414
+ }
415
+ appliedBatch = [appliedSingle];
379
416
  }
380
417
  if (appliedBatch.length === 0) {
381
418
  throw new Error(`Handler "${op.table}" returned no results from applyOperationBatch`);
package/dist/push.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"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"}
package/dist/sync.d.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  import type { ColumnCodecDialect, ColumnCodecSource, ScopeDefinition } from '@syncular/core';
2
2
  import { type CreateServerHandlerOptions } from './handlers';
3
3
  import type { ServerTableHandler, SyncServerAuth } from './handlers/types';
4
+ import type { SyncServerPushPlugin } from './plugins/types';
4
5
  import type { SyncCoreDb } from './schema';
5
6
  type SharedTableName<ServerDB, ClientDB> = keyof ServerDB & keyof ClientDB & string;
6
7
  export type ServerSyncHandlerOptionsForTable<ServerDB extends SyncCoreDb, ClientDB, TableName extends SharedTableName<ServerDB, ClientDB>, Auth extends SyncServerAuth, ScopeDefs extends readonly ScopeDefinition[]> = Omit<CreateServerHandlerOptions<ServerDB, ClientDB, TableName, Auth, ScopeDefs>, 'codecs' | 'codecDialect'>;
7
8
  export interface ServerSyncConfig<ServerDB extends SyncCoreDb = SyncCoreDb, Auth extends SyncServerAuth = SyncServerAuth> {
8
9
  authenticate: (request: Request) => Promise<Auth | null> | Auth | null;
9
10
  handlers: ServerTableHandler<ServerDB, Auth>[];
11
+ plugins?: SyncServerPushPlugin<ServerDB, Auth>[];
10
12
  }
11
13
  export interface DefineServerSyncOptions<Auth extends SyncServerAuth> {
12
14
  authenticate: (request: Request) => Promise<Auth | null> | Auth | null;
@@ -15,6 +17,7 @@ export interface DefineServerSyncOptions<Auth extends SyncServerAuth> {
15
17
  }
16
18
  export interface ServerSyncBuilder<ServerDB extends SyncCoreDb, ClientDB, ScopeDefs extends readonly ScopeDefinition[], Auth extends SyncServerAuth> extends ServerSyncConfig<ServerDB, Auth> {
17
19
  addHandler<TableName extends SharedTableName<ServerDB, ClientDB>>(options: ServerSyncHandlerOptionsForTable<ServerDB, ClientDB, TableName, Auth, ScopeDefs>): this;
20
+ addPushPlugin(plugin: SyncServerPushPlugin<ServerDB, Auth>): this;
18
21
  }
19
22
  export declare function defineServerSync<ServerDB extends SyncCoreDb, ClientDB, ScopeDefs extends readonly ScopeDefinition[], Auth extends SyncServerAuth>(options: DefineServerSyncOptions<Auth>): ServerSyncBuilder<ServerDB, ClientDB, ScopeDefs, Auth>;
20
23
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,0BAA0B,EAEhC,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,KAAK,eAAe,CAAC,QAAQ,EAAE,QAAQ,IAAI,MAAM,QAAQ,GACvD,MAAM,QAAQ,GACd,MAAM,CAAC;AAET,MAAM,MAAM,gCAAgC,CAC1C,QAAQ,SAAS,UAAU,EAC3B,QAAQ,EACR,SAAS,SAAS,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACrD,IAAI,SAAS,cAAc,EAC3B,SAAS,SAAS,SAAS,eAAe,EAAE,IAC1C,IAAI,CACN,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,EAC1E,QAAQ,GAAG,cAAc,CAC1B,CAAC;AAEF,MAAM,WAAW,gBAAgB,CAC/B,QAAQ,SAAS,UAAU,GAAG,UAAU,EACxC,IAAI,SAAS,cAAc,GAAG,cAAc;IAE5C,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACvE,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,uBAAuB,CAAC,IAAI,SAAS,cAAc;IAClE,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACvE,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB,CAChC,QAAQ,SAAS,UAAU,EAC3B,QAAQ,EACR,SAAS,SAAS,SAAS,eAAe,EAAE,EAC5C,IAAI,SAAS,cAAc,CAC3B,SAAQ,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxC,UAAU,CAAC,SAAS,SAAS,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAC9D,OAAO,EAAE,gCAAgC,CACvC,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,SAAS,CACV,GACA,IAAI,CAAC;CACT;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,SAAS,UAAU,EAC3B,QAAQ,EACR,SAAS,SAAS,SAAS,eAAe,EAAE,EAC5C,IAAI,SAAS,cAAc,EAE3B,OAAO,EAAE,uBAAuB,CAAC,IAAI,CAAC,GACrC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAmCxD"}
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,KAAK,0BAA0B,EAEhC,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,KAAK,eAAe,CAAC,QAAQ,EAAE,QAAQ,IAAI,MAAM,QAAQ,GACvD,MAAM,QAAQ,GACd,MAAM,CAAC;AAET,MAAM,MAAM,gCAAgC,CAC1C,QAAQ,SAAS,UAAU,EAC3B,QAAQ,EACR,SAAS,SAAS,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACrD,IAAI,SAAS,cAAc,EAC3B,SAAS,SAAS,SAAS,eAAe,EAAE,IAC1C,IAAI,CACN,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,EAC1E,QAAQ,GAAG,cAAc,CAC1B,CAAC;AAEF,MAAM,WAAW,gBAAgB,CAC/B,QAAQ,SAAS,UAAU,GAAG,UAAU,EACxC,IAAI,SAAS,cAAc,GAAG,cAAc;IAE5C,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACvE,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;IAC/C,OAAO,CAAC,EAAE,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;CAClD;AAED,MAAM,WAAW,uBAAuB,CAAC,IAAI,SAAS,cAAc;IAClE,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACvE,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB,CAChC,QAAQ,SAAS,UAAU,EAC3B,QAAQ,EACR,SAAS,SAAS,SAAS,eAAe,EAAE,EAC5C,IAAI,SAAS,cAAc,CAC3B,SAAQ,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxC,UAAU,CAAC,SAAS,SAAS,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAC9D,OAAO,EAAE,gCAAgC,CACvC,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,SAAS,CACV,GACA,IAAI,CAAC;IAER,aAAa,CAAC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;CACnE;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,SAAS,UAAU,EAC3B,QAAQ,EACR,SAAS,SAAS,SAAS,eAAe,EAAE,EAC5C,IAAI,SAAS,cAAc,EAE3B,OAAO,EAAE,uBAAuB,CAAC,IAAI,CAAC,GACrC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAyCxD"}
package/dist/sync.js CHANGED
@@ -1,10 +1,12 @@
1
1
  import { createServerHandler, } from './handlers/index.js';
2
2
  export function defineServerSync(options) {
3
3
  const handlers = [];
4
+ const plugins = [];
4
5
  const registeredTables = new Set();
5
6
  const sync = {
6
7
  authenticate: options.authenticate,
7
8
  handlers,
9
+ plugins,
8
10
  addHandler(handlerOptions) {
9
11
  if (registeredTables.has(handlerOptions.table)) {
10
12
  throw new Error(`Server table handler already registered: ${handlerOptions.table}`);
@@ -17,6 +19,10 @@ export function defineServerSync(options) {
17
19
  registeredTables.add(handlerOptions.table);
18
20
  return sync;
19
21
  },
22
+ addPushPlugin(plugin) {
23
+ plugins.push(plugin);
24
+ return sync;
25
+ },
20
26
  };
21
27
  return sync;
22
28
  }
package/dist/sync.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAkDpB,MAAM,UAAU,gBAAgB,CAM9B,OAAsC,EACkB;IACxD,MAAM,QAAQ,GAAyC,EAAE,CAAC;IAC1D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE3C,MAAM,IAAI,GAA2D;QACnE,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,QAAQ;QACR,UAAU,CACR,cAMC,EACD;YACA,IAAI,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CACb,4CAA4C,cAAc,CAAC,KAAK,EAAE,CACnE,CAAC;YACJ,CAAC;YAED,QAAQ,CAAC,IAAI,CACX,mBAAmB,CAAC;gBAClB,GAAG,cAAc;gBACjB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC,CAAC,CACH,CAAC;YACF,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QAAA,CACb;KACF,CAAC;IAEF,OAAO,IAAI,CAAC;AAAA,CACb"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAsDpB,MAAM,UAAU,gBAAgB,CAM9B,OAAsC,EACkB;IACxD,MAAM,QAAQ,GAAyC,EAAE,CAAC;IAC1D,MAAM,OAAO,GAA2C,EAAE,CAAC;IAC3D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE3C,MAAM,IAAI,GAA2D;QACnE,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,QAAQ;QACR,OAAO;QACP,UAAU,CACR,cAMC,EACD;YACA,IAAI,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CACb,4CAA4C,cAAc,CAAC,KAAK,EAAE,CACnE,CAAC;YACJ,CAAC;YAED,QAAQ,CAAC,IAAI,CACX,mBAAmB,CAAC;gBAClB,GAAG,cAAc;gBACjB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC,CAAC,CACH,CAAC;YACF,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QAAA,CACb;QACD,aAAa,CAAC,MAA4C,EAAE;YAC1D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QAAA,CACb;KACF,CAAC;IAEF,OAAO,IAAI,CAAC;AAAA,CACb"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syncular/server",
3
- "version": "0.0.6-143",
3
+ "version": "0.0.6-152",
4
4
  "description": "Server-side sync engine with push/pull, pruning, and snapshot support",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Benjamin Kniffler",
@@ -62,7 +62,7 @@
62
62
  "release": "bunx syncular-publish"
63
63
  },
64
64
  "dependencies": {
65
- "@syncular/core": "0.0.6-143"
65
+ "@syncular/core": "0.0.6-152"
66
66
  },
67
67
  "peerDependencies": {
68
68
  "kysely": "^0.28.0",
package/src/index.ts CHANGED
@@ -17,6 +17,7 @@ export * from './handlers';
17
17
  export * from './helpers';
18
18
  export * from './migrate';
19
19
  export * from './notify';
20
+ export * from './plugins';
20
21
  export * from './proxy';
21
22
  export * from './prune';
22
23
  export * from './pull';
@@ -0,0 +1 @@
1
+ export * from './types';
@@ -0,0 +1,90 @@
1
+ import type { SyncOperation } from '@syncular/core';
2
+ import type {
3
+ ApplyOperationResult,
4
+ ServerApplyOperationContext,
5
+ ServerTableHandler,
6
+ SyncServerAuth,
7
+ } from '../handlers/types';
8
+ import type { SyncCoreDb } from '../schema';
9
+
10
+ /**
11
+ * Plugin priority levels for server push hooks.
12
+ * Lower numbers execute first.
13
+ */
14
+ export const ServerPushPluginPriority = {
15
+ /** CRDT payload transforms should run early. */
16
+ CRDT: 40,
17
+ /** Default priority for general plugins. */
18
+ DEFAULT: 50,
19
+ /** Logging/telemetry should run last. */
20
+ TELEMETRY: 100,
21
+ } as const;
22
+
23
+ export interface ServerPushPluginBeforeApplyArgs<
24
+ DB extends SyncCoreDb = SyncCoreDb,
25
+ Auth extends SyncServerAuth = SyncServerAuth,
26
+ > {
27
+ ctx: ServerApplyOperationContext<DB, Auth>;
28
+ tableHandler: ServerTableHandler<DB, Auth>;
29
+ op: SyncOperation;
30
+ opIndex: number;
31
+ }
32
+
33
+ export interface ServerPushPluginAfterApplyArgs<
34
+ DB extends SyncCoreDb = SyncCoreDb,
35
+ Auth extends SyncServerAuth = SyncServerAuth,
36
+ > {
37
+ ctx: ServerApplyOperationContext<DB, Auth>;
38
+ tableHandler: ServerTableHandler<DB, Auth>;
39
+ op: SyncOperation;
40
+ opIndex: number;
41
+ applied: ApplyOperationResult;
42
+ }
43
+
44
+ export interface SyncServerPushPlugin<
45
+ DB extends SyncCoreDb = SyncCoreDb,
46
+ Auth extends SyncServerAuth = SyncServerAuth,
47
+ > {
48
+ name: string;
49
+
50
+ /**
51
+ * Plugin priority for execution order. Lower numbers execute first.
52
+ * @default ServerPushPluginPriority.DEFAULT (50)
53
+ */
54
+ priority?: number;
55
+
56
+ /**
57
+ * Called right before a table handler applies an operation.
58
+ * Use this to transform payloads (for example CRDT envelopes).
59
+ */
60
+ beforeApplyOperation?(
61
+ args: ServerPushPluginBeforeApplyArgs<DB, Auth>
62
+ ): Promise<SyncOperation> | SyncOperation;
63
+
64
+ /**
65
+ * Called after a table handler applies an operation.
66
+ * Use this to transform emitted changes / conflict rows.
67
+ */
68
+ afterApplyOperation?(
69
+ args: ServerPushPluginAfterApplyArgs<DB, Auth>
70
+ ): Promise<ApplyOperationResult> | ApplyOperationResult;
71
+ }
72
+
73
+ export function sortServerPushPlugins<
74
+ DB extends SyncCoreDb = SyncCoreDb,
75
+ Auth extends SyncServerAuth = SyncServerAuth,
76
+ >(
77
+ plugins: readonly SyncServerPushPlugin<DB, Auth>[] | undefined
78
+ ): SyncServerPushPlugin<DB, Auth>[] {
79
+ if (!plugins || plugins.length === 0) return [];
80
+
81
+ return plugins
82
+ .map((plugin, index) => ({ plugin, index }))
83
+ .sort((a, b) => {
84
+ const aPriority = a.plugin.priority ?? ServerPushPluginPriority.DEFAULT;
85
+ const bPriority = b.plugin.priority ?? ServerPushPluginPriority.DEFAULT;
86
+ if (aPriority !== bPriority) return aPriority - bPriority;
87
+ return a.index - b.index;
88
+ })
89
+ .map((entry) => entry.plugin);
90
+ }
package/src/push.ts CHANGED
@@ -21,6 +21,10 @@ import {
21
21
  type ServerHandlerCollection,
22
22
  } from './handlers/collection';
23
23
  import type { SyncServerAuth } from './handlers/types';
24
+ import {
25
+ type SyncServerPushPlugin,
26
+ sortServerPushPlugins,
27
+ } from './plugins/types';
24
28
  import type { SyncCoreDb } from './schema';
25
29
 
26
30
  // biome-ignore lint/complexity/noBannedTypes: Kysely uses `{}` as the initial "no selected columns yet" marker.
@@ -107,6 +111,28 @@ function isSyncPushResponse(value: unknown): value is SyncPushResponse {
107
111
  );
108
112
  }
109
113
 
114
+ function assertOperationIdentityUnchanged(
115
+ pluginName: string,
116
+ before: SyncPushRequest['operations'][number],
117
+ after: SyncPushRequest['operations'][number]
118
+ ): void {
119
+ if (before.table !== after.table) {
120
+ throw new Error(
121
+ `Server push plugin "${pluginName}" cannot change op.table (${before.table} -> ${after.table})`
122
+ );
123
+ }
124
+ if (before.row_id !== after.row_id) {
125
+ throw new Error(
126
+ `Server push plugin "${pluginName}" cannot change op.row_id (${before.row_id} -> ${after.row_id})`
127
+ );
128
+ }
129
+ if (before.op !== after.op) {
130
+ throw new Error(
131
+ `Server push plugin "${pluginName}" cannot change op.op (${before.op} -> ${after.op})`
132
+ );
133
+ }
134
+ }
135
+
110
136
  async function readCommitAffectedTables<DB extends SyncCoreDb>(
111
137
  db: Kysely<DB>,
112
138
  dialect: ServerSyncDialect,
@@ -198,10 +224,12 @@ export async function pushCommit<
198
224
  db: Kysely<DB>;
199
225
  dialect: ServerSyncDialect;
200
226
  handlers: ServerHandlerCollection<DB, Auth>;
227
+ plugins?: readonly SyncServerPushPlugin<DB, Auth>[];
201
228
  auth: Auth;
202
229
  request: SyncPushRequest;
203
230
  }): Promise<PushCommitResult> {
204
231
  const { db, dialect, handlers, request } = args;
232
+ const pushPlugins = sortServerPushPlugins(args.plugins);
205
233
  const actorId = args.auth.actorId;
206
234
  const partitionId = args.auth.partitionId ?? 'default';
207
235
  const requestedOps = Array.isArray(request.operations)
@@ -545,12 +573,26 @@ export async function pushCommit<
545
573
  schemaVersion: request.schemaVersion,
546
574
  };
547
575
 
576
+ let transformedOp = op;
577
+ for (const plugin of pushPlugins) {
578
+ if (!plugin.beforeApplyOperation) continue;
579
+ const nextOp = await plugin.beforeApplyOperation({
580
+ ctx: operationCtx,
581
+ tableHandler: handler,
582
+ op: transformedOp,
583
+ opIndex: i,
584
+ });
585
+ assertOperationIdentityUnchanged(plugin.name, op, nextOp);
586
+ transformedOp = nextOp;
587
+ }
588
+
548
589
  let appliedBatch:
549
590
  | Awaited<ReturnType<typeof handler.applyOperation>>[]
550
591
  | null = null;
551
592
  let consumed = 1;
552
593
 
553
594
  if (
595
+ pushPlugins.length === 0 &&
554
596
  handler.applyOperationBatch &&
555
597
  dialect.supportsInsertReturning
556
598
  ) {
@@ -571,9 +613,24 @@ export async function pushCommit<
571
613
  }
572
614
 
573
615
  if (!appliedBatch) {
574
- appliedBatch = [
575
- await handler.applyOperation(operationCtx, op, i),
576
- ];
616
+ let appliedSingle = await handler.applyOperation(
617
+ operationCtx,
618
+ transformedOp,
619
+ i
620
+ );
621
+
622
+ for (const plugin of pushPlugins) {
623
+ if (!plugin.afterApplyOperation) continue;
624
+ appliedSingle = await plugin.afterApplyOperation({
625
+ ctx: operationCtx,
626
+ tableHandler: handler,
627
+ op: transformedOp,
628
+ opIndex: i,
629
+ applied: appliedSingle,
630
+ });
631
+ }
632
+
633
+ appliedBatch = [appliedSingle];
577
634
  }
578
635
  if (appliedBatch.length === 0) {
579
636
  throw new Error(
package/src/sync.ts CHANGED
@@ -8,6 +8,7 @@ import {
8
8
  createServerHandler,
9
9
  } from './handlers';
10
10
  import type { ServerTableHandler, SyncServerAuth } from './handlers/types';
11
+ import type { SyncServerPushPlugin } from './plugins/types';
11
12
  import type { SyncCoreDb } from './schema';
12
13
 
13
14
  type SharedTableName<ServerDB, ClientDB> = keyof ServerDB &
@@ -31,6 +32,7 @@ export interface ServerSyncConfig<
31
32
  > {
32
33
  authenticate: (request: Request) => Promise<Auth | null> | Auth | null;
33
34
  handlers: ServerTableHandler<ServerDB, Auth>[];
35
+ plugins?: SyncServerPushPlugin<ServerDB, Auth>[];
34
36
  }
35
37
 
36
38
  export interface DefineServerSyncOptions<Auth extends SyncServerAuth> {
@@ -54,6 +56,8 @@ export interface ServerSyncBuilder<
54
56
  ScopeDefs
55
57
  >
56
58
  ): this;
59
+
60
+ addPushPlugin(plugin: SyncServerPushPlugin<ServerDB, Auth>): this;
57
61
  }
58
62
 
59
63
  export function defineServerSync<
@@ -65,11 +69,13 @@ export function defineServerSync<
65
69
  options: DefineServerSyncOptions<Auth>
66
70
  ): ServerSyncBuilder<ServerDB, ClientDB, ScopeDefs, Auth> {
67
71
  const handlers: ServerTableHandler<ServerDB, Auth>[] = [];
72
+ const plugins: SyncServerPushPlugin<ServerDB, Auth>[] = [];
68
73
  const registeredTables = new Set<string>();
69
74
 
70
75
  const sync: ServerSyncBuilder<ServerDB, ClientDB, ScopeDefs, Auth> = {
71
76
  authenticate: options.authenticate,
72
77
  handlers,
78
+ plugins,
73
79
  addHandler<TableName extends SharedTableName<ServerDB, ClientDB>>(
74
80
  handlerOptions: ServerSyncHandlerOptionsForTable<
75
81
  ServerDB,
@@ -95,6 +101,10 @@ export function defineServerSync<
95
101
  registeredTables.add(handlerOptions.table);
96
102
  return sync;
97
103
  },
104
+ addPushPlugin(plugin: SyncServerPushPlugin<ServerDB, Auth>) {
105
+ plugins.push(plugin);
106
+ return sync;
107
+ },
98
108
  };
99
109
 
100
110
  return sync;