@powersync/service-core 0.0.0-dev-20260602073133 → 0.0.0-dev-20260909133214

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 (230) hide show
  1. package/CHANGELOG.md +152 -4
  2. package/dist/api/RouteAPI.d.ts +42 -14
  3. package/dist/api/diagnostics.d.ts +12 -1
  4. package/dist/api/diagnostics.js +36 -22
  5. package/dist/api/diagnostics.js.map +1 -1
  6. package/dist/entry/commands/compact-action.js +30 -22
  7. package/dist/entry/commands/compact-action.js.map +1 -1
  8. package/dist/metrics/metrics-interfaces.d.ts +5 -1
  9. package/dist/metrics/metrics-interfaces.js.map +1 -1
  10. package/dist/metrics/open-telemetry/MetricAttributeFilteringExporter.d.ts +36 -0
  11. package/dist/metrics/open-telemetry/MetricAttributeFilteringExporter.js +70 -0
  12. package/dist/metrics/open-telemetry/MetricAttributeFilteringExporter.js.map +1 -0
  13. package/dist/metrics/open-telemetry/OpenTelemetryMetricsFactory.js +6 -1
  14. package/dist/metrics/open-telemetry/OpenTelemetryMetricsFactory.js.map +1 -1
  15. package/dist/metrics/open-telemetry/util.js +7 -3
  16. package/dist/metrics/open-telemetry/util.js.map +1 -1
  17. package/dist/modules/AbstractModule.d.ts +6 -2
  18. package/dist/modules/AbstractModule.js.map +1 -1
  19. package/dist/replication/AbstractReplicator.d.ts +31 -7
  20. package/dist/replication/AbstractReplicator.js +168 -74
  21. package/dist/replication/AbstractReplicator.js.map +1 -1
  22. package/dist/replication/ReplicationModule.d.ts +3 -3
  23. package/dist/replication/ReplicationModule.js.map +1 -1
  24. package/dist/routes/RouterEngine.d.ts +1 -0
  25. package/dist/routes/RouterEngine.js +6 -1
  26. package/dist/routes/RouterEngine.js.map +1 -1
  27. package/dist/routes/configure-fastify.d.ts +104 -56
  28. package/dist/routes/configure-fastify.js +15 -2
  29. package/dist/routes/configure-fastify.js.map +1 -1
  30. package/dist/routes/endpoints/admin.d.ts +42 -24
  31. package/dist/routes/endpoints/admin.js +49 -36
  32. package/dist/routes/endpoints/admin.js.map +1 -1
  33. package/dist/routes/endpoints/checkpointing.d.ts +62 -0
  34. package/dist/routes/endpoints/checkpointing.js +65 -7
  35. package/dist/routes/endpoints/checkpointing.js.map +1 -1
  36. package/dist/routes/endpoints/socket-route.js +3 -2
  37. package/dist/routes/endpoints/socket-route.js.map +1 -1
  38. package/dist/routes/endpoints/sync-rules.js +25 -14
  39. package/dist/routes/endpoints/sync-rules.js.map +1 -1
  40. package/dist/routes/endpoints/sync-stream.js +1 -1
  41. package/dist/routes/endpoints/sync-stream.js.map +1 -1
  42. package/dist/runner/teardown.js +8 -8
  43. package/dist/runner/teardown.js.map +1 -1
  44. package/dist/storage/BucketStorageBatch.d.ts +64 -17
  45. package/dist/storage/BucketStorageBatch.js.map +1 -1
  46. package/dist/storage/BucketStorageFactory.d.ts +50 -31
  47. package/dist/storage/BucketStorageFactory.js +10 -20
  48. package/dist/storage/BucketStorageFactory.js.map +1 -1
  49. package/dist/storage/CheckpointChecksumInvalidatedError.d.ts +12 -0
  50. package/dist/storage/CheckpointChecksumInvalidatedError.js +17 -0
  51. package/dist/storage/CheckpointChecksumInvalidatedError.js.map +1 -0
  52. package/dist/storage/ChecksumCache.d.ts +11 -6
  53. package/dist/storage/ChecksumCache.js +5 -4
  54. package/dist/storage/ChecksumCache.js.map +1 -1
  55. package/dist/storage/ParsedSyncConfigSet.d.ts +23 -0
  56. package/dist/storage/ParsedSyncConfigSet.js +2 -0
  57. package/dist/storage/ParsedSyncConfigSet.js.map +1 -0
  58. package/dist/storage/PersistedReplicationStream.d.ts +32 -0
  59. package/dist/storage/PersistedReplicationStream.js +26 -0
  60. package/dist/storage/PersistedReplicationStream.js.map +1 -0
  61. package/dist/storage/PersistedSyncConfigContent.d.ts +65 -0
  62. package/dist/storage/PersistedSyncConfigContent.js +138 -0
  63. package/dist/storage/PersistedSyncConfigContent.js.map +1 -0
  64. package/dist/storage/PersistedSyncConfigStatus.d.ts +13 -0
  65. package/dist/storage/PersistedSyncConfigStatus.js +2 -0
  66. package/dist/storage/PersistedSyncConfigStatus.js.map +1 -0
  67. package/dist/storage/ReplicationEventPayload.d.ts +6 -1
  68. package/dist/storage/SourceEntity.d.ts +13 -2
  69. package/dist/storage/SourceTable.d.ts +53 -4
  70. package/dist/storage/SourceTable.js +62 -7
  71. package/dist/storage/SourceTable.js.map +1 -1
  72. package/dist/storage/SourceTableReconciler.d.ts +83 -0
  73. package/dist/storage/SourceTableReconciler.js +95 -0
  74. package/dist/storage/SourceTableReconciler.js.map +1 -0
  75. package/dist/storage/StorageVersionConfig.d.ts +4 -0
  76. package/dist/storage/StorageVersionConfig.js +10 -1
  77. package/dist/storage/StorageVersionConfig.js.map +1 -1
  78. package/dist/storage/SyncRulesBucketStorage.d.ts +162 -26
  79. package/dist/storage/SyncRulesBucketStorage.js +3 -0
  80. package/dist/storage/SyncRulesBucketStorage.js.map +1 -1
  81. package/dist/storage/WriteCheckpointAPI.d.ts +85 -6
  82. package/dist/storage/WriteCheckpointAPI.js +33 -0
  83. package/dist/storage/WriteCheckpointAPI.js.map +1 -1
  84. package/dist/storage/implementation/BucketDefinitionMapping.d.ts +133 -0
  85. package/dist/storage/implementation/BucketDefinitionMapping.js +351 -0
  86. package/dist/storage/implementation/BucketDefinitionMapping.js.map +1 -0
  87. package/dist/storage/implementation/IncrementalReprocessingCompatibility.d.ts +6 -0
  88. package/dist/storage/implementation/IncrementalReprocessingCompatibility.js +31 -0
  89. package/dist/storage/implementation/IncrementalReprocessingCompatibility.js.map +1 -0
  90. package/dist/storage/implementation/IncrementalReprocessingSyncConfigLog.d.ts +17 -0
  91. package/dist/storage/implementation/IncrementalReprocessingSyncConfigLog.js +70 -0
  92. package/dist/storage/implementation/IncrementalReprocessingSyncConfigLog.js.map +1 -0
  93. package/dist/storage/implementation/ReplicationStreamStorageIds.d.ts +15 -0
  94. package/dist/storage/implementation/ReplicationStreamStorageIds.js +20 -0
  95. package/dist/storage/implementation/ReplicationStreamStorageIds.js.map +1 -0
  96. package/dist/storage/storage-index.d.ts +10 -1
  97. package/dist/storage/storage-index.js +10 -1
  98. package/dist/storage/storage-index.js.map +1 -1
  99. package/dist/storage/storage-metrics.js +120 -4
  100. package/dist/storage/storage-metrics.js.map +1 -1
  101. package/dist/sync/BucketChecksumState.d.ts +12 -2
  102. package/dist/sync/BucketChecksumState.js +69 -21
  103. package/dist/sync/BucketChecksumState.js.map +1 -1
  104. package/dist/sync/RequestTracker.d.ts +7 -0
  105. package/dist/sync/RequestTracker.js +12 -0
  106. package/dist/sync/RequestTracker.js.map +1 -1
  107. package/dist/sync/sync.js +184 -43
  108. package/dist/sync/sync.js.map +1 -1
  109. package/dist/sync/util.d.ts +5 -0
  110. package/dist/sync/util.js +19 -1
  111. package/dist/sync/util.js.map +1 -1
  112. package/dist/system/ServiceContext.d.ts +2 -0
  113. package/dist/system/ServiceContext.js +2 -0
  114. package/dist/system/ServiceContext.js.map +1 -1
  115. package/dist/tracing/PerformanceTracer.d.ts +23 -1
  116. package/dist/tracing/PerformanceTracer.js +11 -0
  117. package/dist/tracing/PerformanceTracer.js.map +1 -1
  118. package/dist/util/checkpointing.d.ts +4 -8
  119. package/dist/util/checkpointing.js +1 -16
  120. package/dist/util/checkpointing.js.map +1 -1
  121. package/dist/util/config/compound-config-collector.js +23 -2
  122. package/dist/util/config/compound-config-collector.js.map +1 -1
  123. package/dist/util/config/defaults.d.ts +2 -0
  124. package/dist/util/config/defaults.js +2 -0
  125. package/dist/util/config/defaults.js.map +1 -1
  126. package/dist/util/config/sync-rules/impl/base64-sync-rules-collector.js +1 -0
  127. package/dist/util/config/sync-rules/impl/base64-sync-rules-collector.js.map +1 -1
  128. package/dist/util/config/sync-rules/impl/filesystem-sync-rules-collector.js +1 -0
  129. package/dist/util/config/sync-rules/impl/filesystem-sync-rules-collector.js.map +1 -1
  130. package/dist/util/config/sync-rules/sync-rules-provider.d.ts +2 -0
  131. package/dist/util/config/sync-rules/sync-rules-provider.js +3 -0
  132. package/dist/util/config/sync-rules/sync-rules-provider.js.map +1 -1
  133. package/dist/util/config/types.d.ts +4 -1
  134. package/dist/util/lsn.d.ts +4 -0
  135. package/dist/util/lsn.js +10 -0
  136. package/dist/util/lsn.js.map +1 -1
  137. package/dist/util/protocol-types.d.ts +4 -4
  138. package/dist/util/protocol-types.js +3 -2
  139. package/dist/util/protocol-types.js.map +1 -1
  140. package/dist/util/util-index.d.ts +1 -0
  141. package/dist/util/util-index.js +1 -0
  142. package/dist/util/util-index.js.map +1 -1
  143. package/dist/util/utils.d.ts +3 -2
  144. package/dist/util/utils.js +17 -2
  145. package/dist/util/utils.js.map +1 -1
  146. package/dist/util/write-checkpoint-batcher.d.ts +19 -0
  147. package/dist/util/write-checkpoint-batcher.js +100 -0
  148. package/dist/util/write-checkpoint-batcher.js.map +1 -0
  149. package/package.json +7 -7
  150. package/src/api/RouteAPI.ts +43 -14
  151. package/src/api/diagnostics.ts +45 -26
  152. package/src/entry/commands/compact-action.ts +37 -23
  153. package/src/metrics/metrics-interfaces.ts +6 -1
  154. package/src/metrics/open-telemetry/MetricAttributeFilteringExporter.ts +85 -0
  155. package/src/metrics/open-telemetry/OpenTelemetryMetricsFactory.ts +7 -2
  156. package/src/metrics/open-telemetry/util.ts +7 -3
  157. package/src/modules/AbstractModule.ts +6 -2
  158. package/src/replication/AbstractReplicator.ts +212 -78
  159. package/src/replication/ReplicationModule.ts +2 -3
  160. package/src/routes/RouterEngine.ts +7 -1
  161. package/src/routes/configure-fastify.ts +25 -2
  162. package/src/routes/endpoints/admin.ts +75 -51
  163. package/src/routes/endpoints/checkpointing.ts +79 -8
  164. package/src/routes/endpoints/socket-route.ts +3 -2
  165. package/src/routes/endpoints/sync-rules.ts +26 -14
  166. package/src/routes/endpoints/sync-stream.ts +1 -1
  167. package/src/runner/teardown.ts +8 -8
  168. package/src/storage/BucketStorageBatch.ts +65 -18
  169. package/src/storage/BucketStorageFactory.ts +73 -46
  170. package/src/storage/CheckpointChecksumInvalidatedError.ts +17 -0
  171. package/src/storage/ChecksumCache.ts +27 -14
  172. package/src/storage/ParsedSyncConfigSet.ts +25 -0
  173. package/src/storage/PersistedReplicationStream.ts +55 -0
  174. package/src/storage/PersistedSyncConfigContent.ts +207 -0
  175. package/src/storage/PersistedSyncConfigStatus.ts +14 -0
  176. package/src/storage/ReplicationEventPayload.ts +6 -1
  177. package/src/storage/SourceEntity.ts +12 -2
  178. package/src/storage/SourceTable.ts +96 -8
  179. package/src/storage/SourceTableReconciler.ts +188 -0
  180. package/src/storage/StorageVersionConfig.ts +11 -1
  181. package/src/storage/SyncRulesBucketStorage.ts +189 -27
  182. package/src/storage/WriteCheckpointAPI.ts +140 -6
  183. package/src/storage/implementation/BucketDefinitionMapping.ts +539 -0
  184. package/src/storage/implementation/IncrementalReprocessingCompatibility.ts +41 -0
  185. package/src/storage/implementation/IncrementalReprocessingSyncConfigLog.ts +126 -0
  186. package/src/storage/implementation/ReplicationStreamStorageIds.ts +21 -0
  187. package/src/storage/storage-index.ts +11 -1
  188. package/src/storage/storage-metrics.ts +154 -8
  189. package/src/sync/BucketChecksumState.ts +105 -21
  190. package/src/sync/RequestTracker.ts +20 -0
  191. package/src/sync/sync.ts +214 -50
  192. package/src/sync/util.ts +33 -8
  193. package/src/system/ServiceContext.ts +7 -0
  194. package/src/tracing/PerformanceTracer.ts +41 -1
  195. package/src/util/checkpointing.ts +4 -22
  196. package/src/util/config/compound-config-collector.ts +31 -1
  197. package/src/util/config/defaults.ts +2 -0
  198. package/src/util/config/sync-rules/impl/base64-sync-rules-collector.ts +1 -0
  199. package/src/util/config/sync-rules/impl/filesystem-sync-rules-collector.ts +1 -0
  200. package/src/util/config/sync-rules/sync-rules-provider.ts +5 -0
  201. package/src/util/config/types.ts +4 -1
  202. package/src/util/lsn.ts +9 -0
  203. package/src/util/protocol-types.ts +3 -2
  204. package/src/util/util-index.ts +1 -0
  205. package/src/util/utils.ts +16 -2
  206. package/src/util/write-checkpoint-batcher.ts +142 -0
  207. package/test/src/AbstractReplicator.test.ts +177 -0
  208. package/test/src/MetricAttributeFilteringExporter.test.ts +96 -0
  209. package/test/src/PersistedSyncConfigContent.test.ts +152 -0
  210. package/test/src/checksum_cache.test.ts +22 -0
  211. package/test/src/config.test.ts +142 -0
  212. package/test/src/diagnostics.test.ts +87 -34
  213. package/test/src/module-loader.test.ts +33 -1
  214. package/test/src/routes/admin.test.ts +188 -18
  215. package/test/src/routes/checkpointing.test.ts +54 -0
  216. package/test/src/routes/mocks.ts +6 -2
  217. package/test/src/routes/stream.test.ts +123 -2
  218. package/test/src/source-table-reconciler.test.ts +244 -0
  219. package/test/src/storage/SourceTable.test.ts +92 -0
  220. package/test/src/storage-metrics.test.ts +148 -0
  221. package/test/src/sync/BucketChecksumState.test.ts +98 -12
  222. package/test/src/sync/util.test.ts +28 -1
  223. package/test/src/util/checkpointing.test.ts +249 -0
  224. package/test/src/util/utils.test.ts +23 -0
  225. package/tsconfig.json +1 -4
  226. package/tsconfig.tsbuildinfo +1 -1
  227. package/dist/storage/PersistedSyncRulesContent.d.ts +0 -59
  228. package/dist/storage/PersistedSyncRulesContent.js +0 -100
  229. package/dist/storage/PersistedSyncRulesContent.js.map +0 -1
  230. package/src/storage/PersistedSyncRulesContent.ts +0 -174
@@ -1,5 +1,5 @@
1
- import { DataSourceConfig } from '@powersync/service-types/dist/config/PowerSyncConfig.js';
2
1
  import * as t from 'ts-codec';
2
+ import * as types from '@powersync/service-types';
3
3
  import * as api from '../api/api-index.js';
4
4
  import * as modules from '../modules/modules-index.js';
5
5
  import * as system from '../system/system-index.js';
@@ -13,7 +13,7 @@ export interface ConnectionTestResult {
13
13
  /**
14
14
  * Provides a common interface for testing the connection to a DataSource.
15
15
  */
16
- export interface ConnectionTester<TConfig extends DataSourceConfig> {
16
+ export interface ConnectionTester<TConfig extends types.configFile.DataSourceConfig> {
17
17
  /**
18
18
  * Confirm if a connection can be established to the datasource for the provided datasource configuration
19
19
  * @param config
@@ -28,7 +28,7 @@ export interface ReplicationModuleOptions extends modules.AbstractModuleOptions
28
28
  * A replication module describes all the functionality that PowerSync requires to
29
29
  * replicate data from a DataSource. Whenever a new data source is added to powersync this class should be extended.
30
30
  */
31
- export declare abstract class ReplicationModule<TConfig extends DataSourceConfig> extends modules.AbstractModule implements ConnectionTester<TConfig> {
31
+ export declare abstract class ReplicationModule<TConfig extends types.configFile.DataSourceConfig> extends modules.AbstractModule implements ConnectionTester<TConfig> {
32
32
  protected type: string;
33
33
  protected configSchema: t.AnyCodec;
34
34
  protected decodedConfig: TConfig | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"ReplicationModule.js","sourceRoot":"","sources":["../../src/replication/ReplicationModule.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AA2BvD;;;GAGG;AACH,MAAM,OAAgB,iBACpB,SAAQ,OAAO,CAAC,cAAc;IAGpB,IAAI,CAAS;IACb,YAAY,CAAa;IACzB,aAAa,CAAsB;IAE7C;;;OAGG;IACH,YAAsB,OAAiC;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3C,CAAC;IAuBD;;OAEG;IACI,KAAK,CAAC,UAAU,CAAC,OAA8B;QACpD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YACvC,gEAAgE;YAChE,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/G,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YAC3B,6CAA6C;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,iCAAiC,IAAI,CAAC,IAAI,2DAA2D,CACtG,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAG,cAAc,CAAC,CAAC,CAAY,CAAC;QACxD,yEAAyE;QACzE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAEtC,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAEhE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAES,YAAY,CAAC,MAAe;QACpC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAEO,cAAc,CAAC,MAAe;QACpC,MAAM,SAAS,GAAG,MAAM;aACrB,eAAe;QACd,4DAA4D;QAC5D,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE;YACtC,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;SACvC,CAAC,CACH;aACA,SAAS,EAAE,CAAC;QAEf,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEzC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,IAAI,mBAAmB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAES,YAAY,CAAC,cAAsB;QAC3C,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;IAC1C,CAAC;CACF"}
1
+ {"version":3,"file":"ReplicationModule.js","sourceRoot":"","sources":["../../src/replication/ReplicationModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAC;AA2BvD;;;GAGG;AACH,MAAM,OAAgB,iBACpB,SAAQ,OAAO,CAAC,cAAc;IAGpB,IAAI,CAAS;IACb,YAAY,CAAa;IACzB,aAAa,CAAsB;IAE7C;;;OAGG;IACH,YAAsB,OAAiC;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3C,CAAC;IAuBD;;OAEG;IACI,KAAK,CAAC,UAAU,CAAC,OAA8B;QACpD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YACvC,gEAAgE;YAChE,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/G,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YAC3B,6CAA6C;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,CACjB,iCAAiC,IAAI,CAAC,IAAI,2DAA2D,CACtG,CAAC;QACJ,CAAC;QAED,MAAM,kBAAkB,GAAG,cAAc,CAAC,CAAC,CAAY,CAAC;QACxD,yEAAyE;QACzE,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAEtC,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAEhE,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAES,YAAY,CAAC,MAAe;QACpC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAEO,cAAc,CAAC,MAAe;QACpC,MAAM,SAAS,GAAG,MAAM;aACrB,eAAe;QACd,4DAA4D;QAC5D,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,EAAE;YACtC,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;SACvC,CAAC,CACH;aACA,SAAS,EAAE,CAAC;QAEf,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEzC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,IAAI,mBAAmB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAES,YAAY,CAAC,cAAsB;QAC3C,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;IAC1C,CAAC;CACF"}
@@ -6,6 +6,7 @@ export type RouterSetupResponse = {
6
6
  };
7
7
  export type RouterEngineRoutes = {
8
8
  api_routes: RouteDefinition[];
9
+ checkpointing_routes: RouteDefinition[];
9
10
  stream_routes: RouteDefinition[];
10
11
  socket_routes: SocketRouteGenerator[];
11
12
  };
@@ -19,17 +19,22 @@ export class RouterEngine {
19
19
  this.closed = false;
20
20
  this.routes = {
21
21
  api_routes: [],
22
+ checkpointing_routes: [],
22
23
  stream_routes: [],
23
24
  socket_routes: []
24
25
  };
25
26
  }
26
27
  registerRoutes(routes) {
27
28
  this.routes.api_routes.push(...(routes.api_routes ?? []));
29
+ this.routes.checkpointing_routes.push(...(routes.checkpointing_routes ?? []));
28
30
  this.routes.stream_routes.push(...(routes.stream_routes ?? []));
29
31
  this.routes.socket_routes.push(...(routes.socket_routes ?? []));
30
32
  }
31
33
  get hasRoutes() {
32
- return (this.routes.api_routes.length > 0 || this.routes.stream_routes.length > 0 || this.routes.socket_routes.length > 0);
34
+ return (this.routes.api_routes.length > 0 ||
35
+ this.routes.checkpointing_routes.length > 0 ||
36
+ this.routes.stream_routes.length > 0 ||
37
+ this.routes.socket_routes.length > 0);
33
38
  }
34
39
  registerAPI(api) {
35
40
  if (this.api) {
@@ -1 +1 @@
1
- {"version":3,"file":"RouterEngine.js","sourceRoot":"","sources":["../../src/routes/RouterEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RouterEngine.js","sourceRoot":"","sources":["../../src/routes/RouterEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAoB3D;;;GAGG;AACH,MAAM,OAAO,YAAY;IACvB,MAAM,CAAU;IAChB,MAAM,CAAqB;IAEjB,YAAY,CAAkB;IAExC;;OAEG;IACO,cAAc,CAA+B;IAE/C,GAAG,CAAsB;IAEjC;QACE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU,EAAE,EAAE;YACd,oBAAoB,EAAE,EAAE;YACxB,aAAa,EAAE,EAAE;YACjB,aAAa,EAAE,EAAE;SAClB,CAAC;IACJ,CAAC;IAEM,cAAc,CAAC,MAAmC;QACvD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,CACL,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CACrC,CAAC;IACJ,CAAC;IAEM,WAAW,CAAC,GAAiB;QAClC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;QAC5F,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,KAAkB;QAC5B,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAEzC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;YAC9F,OAAO;QACT,CAAC;QAED,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC9C,wEAAwE;QACxE,2GAA2G;QAC3G,kCAAkC;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,CAAC;QAC1D,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEhC,8BAA8B;QAC9B,MAAM,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAE9B,yBAAyB;QACzB,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,OAAmB;QAChC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;YACV,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC,CAAC;IACJ,CAAC;CACF"}
@@ -16,6 +16,7 @@ export type RouteRegistrationOptions = {
16
16
  */
17
17
  export type RouteDefinitions = {
18
18
  api?: Partial<RouteRegistrationOptions>;
19
+ checkpointing?: Partial<RouteRegistrationOptions>;
19
20
  sync_stream?: Partial<RouteRegistrationOptions>;
20
21
  };
21
22
  export type FastifyServerConfig = {
@@ -101,8 +102,8 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
101
102
  ts?: string | undefined;
102
103
  }[];
103
104
  id: string;
104
- postgres_uri: string;
105
105
  connected: boolean;
106
+ postgres_uri: string;
106
107
  }[];
107
108
  active_sync_rules?: {
108
109
  errors: {
@@ -144,6 +145,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
144
145
  safe_wal_size?: number | undefined;
145
146
  max_slot_wal_keep_size?: number | undefined;
146
147
  }[];
148
+ version_label?: string | null | undefined;
147
149
  content?: string | undefined;
148
150
  } | undefined;
149
151
  deploying_sync_rules?: {
@@ -186,6 +188,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
186
188
  safe_wal_size?: number | undefined;
187
189
  max_slot_wal_keep_size?: number | undefined;
188
190
  }[];
191
+ version_label?: string | null | undefined;
189
192
  content?: string | undefined;
190
193
  } | undefined;
191
194
  }, import("./router.js").Context, import("./router.js").RequestEndpointHandlerPayload<{
@@ -204,8 +207,8 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
204
207
  ts?: string | undefined;
205
208
  }[];
206
209
  id: string;
207
- postgres_uri: string;
208
210
  connected: boolean;
211
+ postgres_uri: string;
209
212
  }[];
210
213
  active_sync_rules?: {
211
214
  errors: {
@@ -247,6 +250,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
247
250
  safe_wal_size?: number | undefined;
248
251
  max_slot_wal_keep_size?: number | undefined;
249
252
  }[];
253
+ version_label?: string | null | undefined;
250
254
  content?: string | undefined;
251
255
  } | undefined;
252
256
  deploying_sync_rules?: {
@@ -289,6 +293,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
289
293
  safe_wal_size?: number | undefined;
290
294
  max_slot_wal_keep_size?: number | undefined;
291
295
  }[];
296
+ version_label?: string | null | undefined;
292
297
  content?: string | undefined;
293
298
  } | undefined;
294
299
  }>> & {
@@ -318,8 +323,8 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
318
323
  ts?: string | undefined;
319
324
  }[];
320
325
  id: string;
321
- postgres_uri: string;
322
326
  connected: boolean;
327
+ postgres_uri: string;
323
328
  }[];
324
329
  active_sync_rules?: {
325
330
  errors: {
@@ -361,6 +366,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
361
366
  safe_wal_size?: number | undefined;
362
367
  max_slot_wal_keep_size?: number | undefined;
363
368
  }[];
369
+ version_label?: string | null | undefined;
364
370
  content?: string | undefined;
365
371
  } | undefined;
366
372
  deploying_sync_rules?: {
@@ -403,6 +409,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
403
409
  safe_wal_size?: number | undefined;
404
410
  max_slot_wal_keep_size?: number | undefined;
405
411
  }[];
412
+ version_label?: string | null | undefined;
406
413
  content?: string | undefined;
407
414
  } | undefined;
408
415
  }>;
@@ -425,8 +432,8 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
425
432
  }[];
426
433
  id?: string | undefined;
427
434
  }[];
428
- defaultConnectionTag: string;
429
435
  defaultSchema: string;
436
+ defaultConnectionTag: string;
430
437
  }, import("./router.js").Context, import("./router.js").RequestEndpointHandlerPayload<{}, import("./router.js").Context, import("./router.js").BasicRouterRequest>, import("@powersync/lib-services-framework").EndpointHandler<import("./router.js").RequestEndpointHandlerPayload<{}, import("./router.js").Context, import("./router.js").BasicRouterRequest>, {
431
438
  connections: {
432
439
  tag: string;
@@ -446,8 +453,8 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
446
453
  }[];
447
454
  id?: string | undefined;
448
455
  }[];
449
- defaultConnectionTag: string;
450
456
  defaultSchema: string;
457
+ defaultConnectionTag: string;
451
458
  }>> & {
452
459
  path: string;
453
460
  method: import("@powersync/lib-services-framework").HTTPMethod.POST;
@@ -478,8 +485,8 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
478
485
  }[];
479
486
  id?: string | undefined;
480
487
  }[];
481
- defaultConnectionTag: string;
482
488
  defaultSchema: string;
489
+ defaultConnectionTag: string;
483
490
  }>;
484
491
  }) | (import("@powersync/lib-services-framework").Endpoint<{}, {
485
492
  connections: {
@@ -526,8 +533,6 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
526
533
  connections: {
527
534
  id: string;
528
535
  tag: string;
529
- slot_name: string;
530
- initial_replication_done: boolean;
531
536
  tables: {
532
537
  name: string;
533
538
  schema: string;
@@ -545,6 +550,8 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
545
550
  }[];
546
551
  pattern?: string | undefined;
547
552
  }[];
553
+ slot_name: string;
554
+ initial_replication_done: boolean;
548
555
  last_lsn?: string | undefined;
549
556
  last_keepalive_ts?: string | undefined;
550
557
  last_checkpoint_ts?: string | undefined;
@@ -553,6 +560,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
553
560
  safe_wal_size?: number | undefined;
554
561
  max_slot_wal_keep_size?: number | undefined;
555
562
  }[];
563
+ version_label?: string | null | undefined;
556
564
  content?: string | undefined;
557
565
  }, import("./router.js").Context, import("./router.js").RequestEndpointHandlerPayload<{
558
566
  sync_rules: string;
@@ -571,8 +579,6 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
571
579
  connections: {
572
580
  id: string;
573
581
  tag: string;
574
- slot_name: string;
575
- initial_replication_done: boolean;
576
582
  tables: {
577
583
  name: string;
578
584
  schema: string;
@@ -590,6 +596,8 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
590
596
  }[];
591
597
  pattern?: string | undefined;
592
598
  }[];
599
+ slot_name: string;
600
+ initial_replication_done: boolean;
593
601
  last_lsn?: string | undefined;
594
602
  last_keepalive_ts?: string | undefined;
595
603
  last_checkpoint_ts?: string | undefined;
@@ -598,6 +606,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
598
606
  safe_wal_size?: number | undefined;
599
607
  max_slot_wal_keep_size?: number | undefined;
600
608
  }[];
609
+ version_label?: string | null | undefined;
601
610
  content?: string | undefined;
602
611
  }>> & {
603
612
  path: string;
@@ -627,8 +636,6 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
627
636
  connections: {
628
637
  id: string;
629
638
  tag: string;
630
- slot_name: string;
631
- initial_replication_done: boolean;
632
639
  tables: {
633
640
  name: string;
634
641
  schema: string;
@@ -646,6 +653,8 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
646
653
  }[];
647
654
  pattern?: string | undefined;
648
655
  }[];
656
+ slot_name: string;
657
+ initial_replication_done: boolean;
649
658
  last_lsn?: string | undefined;
650
659
  last_keepalive_ts?: string | undefined;
651
660
  last_checkpoint_ts?: string | undefined;
@@ -654,52 +663,9 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
654
663
  safe_wal_size?: number | undefined;
655
664
  max_slot_wal_keep_size?: number | undefined;
656
665
  }[];
666
+ version_label?: string | null | undefined;
657
667
  content?: string | undefined;
658
668
  }>;
659
- }) | (import("@powersync/lib-services-framework").Endpoint<{
660
- client_id?: string | undefined;
661
- }, {
662
- checkpoint: bigint;
663
- }, import("./router.js").Context, import("./router.js").RequestEndpointHandlerPayload<{
664
- client_id?: string | undefined;
665
- }, import("./router.js").Context, import("./router.js").BasicRouterRequest>, import("@powersync/lib-services-framework").EndpointHandler<import("./router.js").RequestEndpointHandlerPayload<{
666
- client_id?: string | undefined;
667
- }, import("./router.js").Context, import("./router.js").BasicRouterRequest>, {
668
- checkpoint: bigint;
669
- }>> & {
670
- path: string;
671
- method: import("@powersync/lib-services-framework").HTTPMethod.GET;
672
- authorize: (payload: import("./router.js").RequestEndpointHandlerPayload) => Promise<import("@powersync/lib-services-framework").AuthorizationResponse>;
673
- validator: import("@powersync/lib-services-framework").MicroValidator<{
674
- client_id?: string | undefined;
675
- }, string[]>;
676
- handler: (payload: import("./router.js").RequestEndpointHandlerPayload<{
677
- client_id?: string | undefined;
678
- }, import("./router.js").Context, import("./router.js").BasicRouterRequest>) => Promise<{
679
- checkpoint: bigint;
680
- }>;
681
- }) | (import("@powersync/lib-services-framework").Endpoint<{
682
- client_id?: string | undefined;
683
- }, {
684
- write_checkpoint: string;
685
- }, import("./router.js").Context, import("./router.js").RequestEndpointHandlerPayload<{
686
- client_id?: string | undefined;
687
- }, import("./router.js").Context, import("./router.js").BasicRouterRequest>, import("@powersync/lib-services-framework").EndpointHandler<import("./router.js").RequestEndpointHandlerPayload<{
688
- client_id?: string | undefined;
689
- }, import("./router.js").Context, import("./router.js").BasicRouterRequest>, {
690
- write_checkpoint: string;
691
- }>> & {
692
- path: string;
693
- method: import("@powersync/lib-services-framework").HTTPMethod.GET;
694
- authorize: (payload: import("./router.js").RequestEndpointHandlerPayload) => Promise<import("@powersync/lib-services-framework").AuthorizationResponse>;
695
- validator: import("@powersync/lib-services-framework").MicroValidator<{
696
- client_id?: string | undefined;
697
- }, string[]>;
698
- handler: (payload: import("./router.js").RequestEndpointHandlerPayload<{
699
- client_id?: string | undefined;
700
- }, import("./router.js").Context, import("./router.js").BasicRouterRequest>) => Promise<{
701
- write_checkpoint: string;
702
- }>;
703
669
  }) | (import("@powersync/lib-services-framework").Endpoint<unknown, import("@powersync/lib-services-framework").RouterResponse<{
704
670
  ready: boolean;
705
671
  started: boolean;
@@ -805,6 +771,88 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
805
771
  max_queue_depth: number;
806
772
  };
807
773
  };
774
+ checkpointing: {
775
+ routes: ((import("@powersync/lib-services-framework").Endpoint<{
776
+ client_id?: string | undefined;
777
+ }, {
778
+ checkpoint: bigint;
779
+ }, import("./router.js").Context, import("./router.js").RequestEndpointHandlerPayload<{
780
+ client_id?: string | undefined;
781
+ }, import("./router.js").Context, import("./router.js").BasicRouterRequest>, import("@powersync/lib-services-framework").EndpointHandler<import("./router.js").RequestEndpointHandlerPayload<{
782
+ client_id?: string | undefined;
783
+ }, import("./router.js").Context, import("./router.js").BasicRouterRequest>, {
784
+ checkpoint: bigint;
785
+ }>> & {
786
+ path: string;
787
+ method: import("@powersync/lib-services-framework").HTTPMethod.GET;
788
+ authorize: (payload: import("./router.js").RequestEndpointHandlerPayload) => Promise<import("@powersync/lib-services-framework").AuthorizationResponse>;
789
+ validator: import("@powersync/lib-services-framework").MicroValidator<{
790
+ client_id?: string | undefined;
791
+ }, string[]>;
792
+ handler: (payload: import("./router.js").RequestEndpointHandlerPayload<{
793
+ client_id?: string | undefined;
794
+ }, import("./router.js").Context, import("./router.js").BasicRouterRequest>) => Promise<{
795
+ checkpoint: bigint;
796
+ }>;
797
+ }) | (import("@powersync/lib-services-framework").Endpoint<{
798
+ client_id?: string | undefined;
799
+ }, {
800
+ write_checkpoint: string;
801
+ }, import("./router.js").Context, import("./router.js").RequestEndpointHandlerPayload<{
802
+ client_id?: string | undefined;
803
+ }, import("./router.js").Context, import("./router.js").BasicRouterRequest>, import("@powersync/lib-services-framework").EndpointHandler<import("./router.js").RequestEndpointHandlerPayload<{
804
+ client_id?: string | undefined;
805
+ }, import("./router.js").Context, import("./router.js").BasicRouterRequest>, {
806
+ write_checkpoint: string;
807
+ }>> & {
808
+ path: string;
809
+ method: import("@powersync/lib-services-framework").HTTPMethod.GET;
810
+ authorize: (payload: import("./router.js").RequestEndpointHandlerPayload) => Promise<import("@powersync/lib-services-framework").AuthorizationResponse>;
811
+ validator: import("@powersync/lib-services-framework").MicroValidator<{
812
+ client_id?: string | undefined;
813
+ }, string[]>;
814
+ handler: (payload: import("./router.js").RequestEndpointHandlerPayload<{
815
+ client_id?: string | undefined;
816
+ }, import("./router.js").Context, import("./router.js").BasicRouterRequest>) => Promise<{
817
+ write_checkpoint: string;
818
+ }>;
819
+ }) | (import("@powersync/lib-services-framework").Endpoint<{
820
+ client_id: string;
821
+ checkpoint_request_id: string | number | bigint;
822
+ }, {
823
+ checkpoint_request_id: string;
824
+ }, import("./router.js").Context, import("./router.js").RequestEndpointHandlerPayload<{
825
+ client_id: string;
826
+ checkpoint_request_id: string | number | bigint;
827
+ }, import("./router.js").Context, import("./router.js").BasicRouterRequest>, import("@powersync/lib-services-framework").EndpointHandler<import("./router.js").RequestEndpointHandlerPayload<{
828
+ client_id: string;
829
+ checkpoint_request_id: string | number | bigint;
830
+ }, import("./router.js").Context, import("./router.js").BasicRouterRequest>, {
831
+ checkpoint_request_id: string;
832
+ }>> & {
833
+ path: string;
834
+ method: import("@powersync/lib-services-framework").HTTPMethod.POST;
835
+ authorize: (payload: import("./router.js").RequestEndpointHandlerPayload) => Promise<import("@powersync/lib-services-framework").AuthorizationResponse>;
836
+ validator: {
837
+ validate(params: {
838
+ client_id: string;
839
+ checkpoint_request_id: string | number | bigint;
840
+ }): import("@powersync/lib-services-framework").ValidationLeft<string[]> | {
841
+ valid: true;
842
+ };
843
+ };
844
+ handler: (request: import("./router.js").RequestEndpointHandlerPayload<{
845
+ client_id: string;
846
+ checkpoint_request_id: string | number | bigint;
847
+ }, import("./router.js").Context, import("./router.js").BasicRouterRequest>) => Promise<{
848
+ checkpoint_request_id: string;
849
+ }>;
850
+ }))[];
851
+ queue_options: {
852
+ concurrency: number;
853
+ max_queue_depth: number;
854
+ };
855
+ };
808
856
  sync_stream: {
809
857
  routes: (import("@powersync/lib-services-framework").Endpoint<{
810
858
  parameters?: Record<string, any> | undefined;
@@ -7,12 +7,20 @@ import { SYNC_STREAM_ROUTES } from './endpoints/sync-stream.js';
7
7
  import { createRequestQueueHook } from './hooks.js';
8
8
  export const DEFAULT_ROUTE_OPTIONS = {
9
9
  api: {
10
- routes: [...ADMIN_ROUTES, ...CHECKPOINT_ROUTES, ...SYNC_RULES_ROUTES, ...PROBES_ROUTES],
10
+ routes: [...ADMIN_ROUTES, ...SYNC_RULES_ROUTES, ...PROBES_ROUTES],
11
11
  queue_options: {
12
12
  concurrency: 10,
13
13
  max_queue_depth: 20
14
14
  }
15
15
  },
16
+ checkpointing: {
17
+ routes: [...CHECKPOINT_ROUTES],
18
+ queue_options: {
19
+ // Note that the values here has an effect on WriteCheckpointBatcher
20
+ concurrency: 100,
21
+ max_queue_depth: 100
22
+ }
23
+ },
16
24
  sync_stream: {
17
25
  routes: [...SYNC_STREAM_ROUTES],
18
26
  queue_options: {
@@ -35,6 +43,7 @@ export function configureFastifyServer(server, options) {
35
43
  };
36
44
  // Set on the outer server so both child scopes inherit.
37
45
  registerFastifyErrorHandler(server);
46
+ registerFastifyNotFoundHandler(server);
38
47
  /**
39
48
  * Fastify creates an encapsulated context for each `.register` call.
40
49
  * Creating a separate context here to separate the concurrency limits for Admin APIs
@@ -43,10 +52,14 @@ export function configureFastifyServer(server, options) {
43
52
  */
44
53
  server.register(async function (childContext) {
45
54
  registerFastifyRoutes(childContext, generateContext, routes.api?.routes ?? DEFAULT_ROUTE_OPTIONS.api.routes);
46
- registerFastifyNotFoundHandler(childContext);
47
55
  // Limit the active concurrent requests
48
56
  childContext.addHook('onRequest', createRequestQueueHook(routes.api?.queue_options ?? DEFAULT_ROUTE_OPTIONS.api.queue_options));
49
57
  });
58
+ server.register(async function (childContext) {
59
+ registerFastifyRoutes(childContext, generateContext, routes.checkpointing?.routes ?? DEFAULT_ROUTE_OPTIONS.checkpointing.routes);
60
+ // Limit the active concurrent requests
61
+ childContext.addHook('onRequest', createRequestQueueHook(routes.checkpointing?.queue_options ?? DEFAULT_ROUTE_OPTIONS.checkpointing.queue_options));
62
+ });
50
63
  // Create a separate context for concurrency queueing
51
64
  server.register(async function (childContext) {
52
65
  registerFastifyRoutes(childContext, generateContext, routes.sync_stream?.routes ?? DEFAULT_ROUTE_OPTIONS.sync_stream.routes);
@@ -1 +1 @@
1
- {"version":3,"file":"configure-fastify.js","sourceRoot":"","sources":["../../src/routes/configure-fastify.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAA4B,MAAM,YAAY,CAAC;AA0B9E,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,GAAG,EAAE;QACH,MAAM,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,GAAG,aAAa,CAAC;QACvF,aAAa,EAAE;YACb,WAAW,EAAE,EAAE;YACf,eAAe,EAAE,EAAE;SACpB;KACF;IACD,WAAW,EAAE;QACX,MAAM,EAAE,CAAC,GAAG,kBAAkB,CAAC;QAC/B,aAAa,EAAE;YACb,WAAW,EAAE,GAAG;YAChB,eAAe,EAAE,CAAC;SACnB;KACF;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAA+B,EAAE,OAA4B;IAClG,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,qBAAqB,EAAE,GAAG,OAAO,CAAC;IAEpE,MAAM,eAAe,GAAoB,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAClE,OAAO;YACL,eAAe,EAAE,eAAe;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;IACJ,CAAC,CAAC;IAEF,wDAAwD;IACxD,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAEpC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW,YAAY;QAC1C,qBAAqB,CAAC,YAAY,EAAE,eAAe,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,IAAI,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7G,8BAA8B,CAAC,YAAY,CAAC,CAAC;QAE7C,uCAAuC;QACvC,YAAY,CAAC,OAAO,CAClB,WAAW,EACX,sBAAsB,CAAC,MAAM,CAAC,GAAG,EAAE,aAAa,IAAI,qBAAqB,CAAC,GAAG,CAAC,aAAa,CAAC,CAC7F,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,qDAAqD;IACrD,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW,YAAY;QAC1C,qBAAqB,CACnB,YAAY,EACZ,eAAe,EACf,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,qBAAqB,CAAC,WAAW,CAAC,MAAM,CACvE,CAAC;QACF,uCAAuC;QACvC,YAAY,CAAC,OAAO,CAClB,WAAW,EACX,sBAAsB,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,IAAI,qBAAqB,CAAC,WAAW,CAAC,aAAa,CAAC,CAC7G,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"configure-fastify.js","sourceRoot":"","sources":["../../src/routes/configure-fastify.ts"],"names":[],"mappings":"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"}