@powersync/service-core 0.8.8 → 0.10.0

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 (376) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/api/RouteAPI.d.ts +67 -0
  3. package/dist/api/RouteAPI.js +2 -0
  4. package/dist/api/RouteAPI.js.map +1 -0
  5. package/dist/api/api-index.d.ts +1 -0
  6. package/dist/api/api-index.js +1 -0
  7. package/dist/api/api-index.js.map +1 -1
  8. package/dist/api/diagnostics.d.ts +4 -4
  9. package/dist/api/diagnostics.js +170 -158
  10. package/dist/api/diagnostics.js.map +1 -1
  11. package/dist/api/schema.d.ts +3 -5
  12. package/dist/api/schema.js +14 -80
  13. package/dist/api/schema.js.map +1 -1
  14. package/dist/auth/CachedKeyCollector.js.map +1 -1
  15. package/dist/auth/KeySpec.js.map +1 -1
  16. package/dist/auth/KeyStore.d.ts +7 -4
  17. package/dist/auth/KeyStore.js +1 -1
  18. package/dist/auth/KeyStore.js.map +1 -1
  19. package/dist/auth/LeakyBucket.js.map +1 -1
  20. package/dist/auth/RemoteJWKSCollector.d.ts +0 -2
  21. package/dist/auth/RemoteJWKSCollector.js.map +1 -1
  22. package/dist/auth/StaticSupabaseKeyCollector.d.ts +19 -0
  23. package/dist/auth/StaticSupabaseKeyCollector.js +28 -0
  24. package/dist/auth/StaticSupabaseKeyCollector.js.map +1 -0
  25. package/dist/auth/auth-index.d.ts +1 -1
  26. package/dist/auth/auth-index.js +1 -1
  27. package/dist/auth/auth-index.js.map +1 -1
  28. package/dist/db/mongo.js +5 -3
  29. package/dist/db/mongo.js.map +1 -1
  30. package/dist/entry/cli-entry.js +3 -2
  31. package/dist/entry/cli-entry.js.map +1 -1
  32. package/dist/entry/commands/compact-action.js +90 -14
  33. package/dist/entry/commands/compact-action.js.map +1 -1
  34. package/dist/entry/commands/migrate-action.js +4 -5
  35. package/dist/entry/commands/migrate-action.js.map +1 -1
  36. package/dist/entry/commands/teardown-action.js +2 -2
  37. package/dist/entry/commands/teardown-action.js.map +1 -1
  38. package/dist/index.d.ts +4 -2
  39. package/dist/index.js +4 -2
  40. package/dist/index.js.map +1 -1
  41. package/dist/locks/MongoLocks.js.map +1 -1
  42. package/dist/metrics/Metrics.d.ts +2 -2
  43. package/dist/metrics/Metrics.js +5 -13
  44. package/dist/metrics/Metrics.js.map +1 -1
  45. package/dist/migrations/db/migrations/1684951997326-init.d.ts +2 -2
  46. package/dist/migrations/db/migrations/1684951997326-init.js +4 -2
  47. package/dist/migrations/db/migrations/1684951997326-init.js.map +1 -1
  48. package/dist/migrations/db/migrations/1702295701188-sync-rule-state.d.ts +2 -2
  49. package/dist/migrations/db/migrations/1702295701188-sync-rule-state.js +4 -2
  50. package/dist/migrations/db/migrations/1702295701188-sync-rule-state.js.map +1 -1
  51. package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.d.ts +2 -2
  52. package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.js +4 -2
  53. package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.js.map +1 -1
  54. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.d.ts +3 -0
  55. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.js +31 -0
  56. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.js.map +1 -0
  57. package/dist/migrations/executor.js.map +1 -1
  58. package/dist/migrations/migrations.d.ts +8 -0
  59. package/dist/migrations/migrations.js +19 -7
  60. package/dist/migrations/migrations.js.map +1 -1
  61. package/dist/migrations/store/migration-store.js.map +1 -1
  62. package/dist/modules/AbstractModule.d.ts +26 -0
  63. package/dist/modules/AbstractModule.js +11 -0
  64. package/dist/modules/AbstractModule.js.map +1 -0
  65. package/dist/modules/ModuleManager.d.ts +11 -0
  66. package/dist/modules/ModuleManager.js +32 -0
  67. package/dist/modules/ModuleManager.js.map +1 -0
  68. package/dist/modules/modules-index.d.ts +2 -0
  69. package/dist/modules/modules-index.js +3 -0
  70. package/dist/modules/modules-index.js.map +1 -0
  71. package/dist/replication/AbstractReplicationJob.d.ts +37 -0
  72. package/dist/replication/AbstractReplicationJob.js +51 -0
  73. package/dist/replication/AbstractReplicationJob.js.map +1 -0
  74. package/dist/replication/AbstractReplicator.d.ts +53 -0
  75. package/dist/replication/AbstractReplicator.js +250 -0
  76. package/dist/replication/AbstractReplicator.js.map +1 -0
  77. package/dist/replication/ErrorRateLimiter.d.ts +0 -10
  78. package/dist/replication/ErrorRateLimiter.js +1 -42
  79. package/dist/replication/ErrorRateLimiter.js.map +1 -1
  80. package/dist/replication/ReplicationEngine.d.ts +18 -0
  81. package/dist/replication/ReplicationEngine.js +41 -0
  82. package/dist/replication/ReplicationEngine.js.map +1 -0
  83. package/dist/replication/ReplicationModule.d.ts +51 -0
  84. package/dist/replication/ReplicationModule.js +68 -0
  85. package/dist/replication/ReplicationModule.js.map +1 -0
  86. package/dist/replication/replication-index.d.ts +4 -6
  87. package/dist/replication/replication-index.js +4 -6
  88. package/dist/replication/replication-index.js.map +1 -1
  89. package/dist/routes/RouterEngine.d.ts +42 -0
  90. package/dist/routes/RouterEngine.js +80 -0
  91. package/dist/routes/RouterEngine.js.map +1 -0
  92. package/dist/routes/auth.d.ts +2 -2
  93. package/dist/routes/auth.js +11 -11
  94. package/dist/routes/auth.js.map +1 -1
  95. package/dist/routes/configure-fastify.d.ts +37 -23
  96. package/dist/routes/configure-fastify.js +18 -18
  97. package/dist/routes/configure-fastify.js.map +1 -1
  98. package/dist/routes/configure-rsocket.d.ts +3 -4
  99. package/dist/routes/configure-rsocket.js +7 -4
  100. package/dist/routes/configure-rsocket.js.map +1 -1
  101. package/dist/routes/endpoints/admin.d.ts +30 -0
  102. package/dist/routes/endpoints/admin.js +46 -67
  103. package/dist/routes/endpoints/admin.js.map +1 -1
  104. package/dist/routes/endpoints/checkpointing.js +103 -15
  105. package/dist/routes/endpoints/checkpointing.js.map +1 -1
  106. package/dist/routes/endpoints/socket-route.js +8 -6
  107. package/dist/routes/endpoints/socket-route.js.map +1 -1
  108. package/dist/routes/endpoints/sync-rules.d.ts +1 -1
  109. package/dist/routes/endpoints/sync-rules.js +32 -23
  110. package/dist/routes/endpoints/sync-rules.js.map +1 -1
  111. package/dist/routes/endpoints/sync-stream.d.ts +0 -1
  112. package/dist/routes/endpoints/sync-stream.js +8 -8
  113. package/dist/routes/endpoints/sync-stream.js.map +1 -1
  114. package/dist/routes/hooks.js.map +1 -1
  115. package/dist/routes/route-register.js.map +1 -1
  116. package/dist/routes/router.d.ts +9 -2
  117. package/dist/routes/router.js.map +1 -1
  118. package/dist/routes/routes-index.d.ts +1 -0
  119. package/dist/routes/routes-index.js +1 -0
  120. package/dist/routes/routes-index.js.map +1 -1
  121. package/dist/runner/teardown.js +109 -76
  122. package/dist/runner/teardown.js.map +1 -1
  123. package/dist/storage/BucketStorage.d.ts +86 -36
  124. package/dist/storage/BucketStorage.js +6 -10
  125. package/dist/storage/BucketStorage.js.map +1 -1
  126. package/dist/storage/ChecksumCache.js.map +1 -1
  127. package/dist/storage/MongoBucketStorage.d.ts +7 -11
  128. package/dist/storage/MongoBucketStorage.js +48 -41
  129. package/dist/storage/MongoBucketStorage.js.map +1 -1
  130. package/dist/storage/ReplicationEventPayload.d.ts +14 -0
  131. package/dist/storage/ReplicationEventPayload.js +2 -0
  132. package/dist/storage/ReplicationEventPayload.js.map +1 -0
  133. package/dist/storage/SourceEntity.d.ts +20 -0
  134. package/dist/storage/SourceEntity.js +2 -0
  135. package/dist/storage/SourceEntity.js.map +1 -0
  136. package/dist/storage/SourceTable.d.ts +12 -5
  137. package/dist/storage/SourceTable.js +12 -5
  138. package/dist/storage/SourceTable.js.map +1 -1
  139. package/dist/storage/StorageEngine.d.ts +28 -0
  140. package/dist/storage/StorageEngine.js +45 -0
  141. package/dist/storage/StorageEngine.js.map +1 -0
  142. package/dist/storage/StorageProvider.d.ts +21 -0
  143. package/dist/storage/StorageProvider.js +2 -0
  144. package/dist/storage/StorageProvider.js.map +1 -0
  145. package/dist/storage/WriteCheckpointAPI.d.ts +74 -0
  146. package/dist/storage/WriteCheckpointAPI.js +16 -0
  147. package/dist/storage/WriteCheckpointAPI.js.map +1 -0
  148. package/dist/storage/mongo/MongoBucketBatch.d.ts +24 -5
  149. package/dist/storage/mongo/MongoBucketBatch.js +119 -62
  150. package/dist/storage/mongo/MongoBucketBatch.js.map +1 -1
  151. package/dist/storage/mongo/MongoCompactor.js +20 -3
  152. package/dist/storage/mongo/MongoCompactor.js.map +1 -1
  153. package/dist/storage/mongo/MongoIdSequence.js.map +1 -1
  154. package/dist/storage/mongo/MongoPersistedSyncRulesContent.d.ts +2 -2
  155. package/dist/storage/mongo/MongoPersistedSyncRulesContent.js +2 -2
  156. package/dist/storage/mongo/MongoPersistedSyncRulesContent.js.map +1 -1
  157. package/dist/storage/mongo/MongoStorageProvider.d.ts +5 -0
  158. package/dist/storage/mongo/MongoStorageProvider.js +26 -0
  159. package/dist/storage/mongo/MongoStorageProvider.js.map +1 -0
  160. package/dist/storage/mongo/MongoSyncBucketStorage.d.ts +18 -10
  161. package/dist/storage/mongo/MongoSyncBucketStorage.js +140 -25
  162. package/dist/storage/mongo/MongoSyncBucketStorage.js.map +1 -1
  163. package/dist/storage/mongo/MongoSyncRulesLock.js +1 -1
  164. package/dist/storage/mongo/MongoSyncRulesLock.js.map +1 -1
  165. package/dist/storage/mongo/MongoWriteCheckpointAPI.d.ts +20 -0
  166. package/dist/storage/mongo/MongoWriteCheckpointAPI.js +103 -0
  167. package/dist/storage/mongo/MongoWriteCheckpointAPI.js.map +1 -0
  168. package/dist/storage/mongo/OperationBatch.d.ts +13 -4
  169. package/dist/storage/mongo/OperationBatch.js +25 -7
  170. package/dist/storage/mongo/OperationBatch.js.map +1 -1
  171. package/dist/storage/mongo/PersistedBatch.d.ts +3 -3
  172. package/dist/storage/mongo/PersistedBatch.js +2 -2
  173. package/dist/storage/mongo/PersistedBatch.js.map +1 -1
  174. package/dist/storage/mongo/config.d.ts +19 -0
  175. package/dist/storage/mongo/config.js +26 -0
  176. package/dist/storage/mongo/config.js.map +1 -0
  177. package/dist/storage/mongo/db.d.ts +3 -2
  178. package/dist/storage/mongo/db.js +1 -0
  179. package/dist/storage/mongo/db.js.map +1 -1
  180. package/dist/storage/mongo/models.d.ts +20 -5
  181. package/dist/storage/mongo/models.js.map +1 -1
  182. package/dist/storage/mongo/util.d.ts +12 -1
  183. package/dist/storage/mongo/util.js +50 -2
  184. package/dist/storage/mongo/util.js.map +1 -1
  185. package/dist/storage/storage-index.d.ts +8 -2
  186. package/dist/storage/storage-index.js +8 -2
  187. package/dist/storage/storage-index.js.map +1 -1
  188. package/dist/sync/BroadcastIterable.d.ts +0 -1
  189. package/dist/sync/BroadcastIterable.js.map +1 -1
  190. package/dist/sync/LastValueSink.d.ts +0 -1
  191. package/dist/sync/LastValueSink.js.map +1 -1
  192. package/dist/sync/merge.d.ts +0 -1
  193. package/dist/sync/merge.js.map +1 -1
  194. package/dist/sync/safeRace.js.map +1 -1
  195. package/dist/sync/sync.d.ts +1 -1
  196. package/dist/sync/sync.js +5 -5
  197. package/dist/sync/sync.js.map +1 -1
  198. package/dist/sync/util.d.ts +0 -2
  199. package/dist/sync/util.js.map +1 -1
  200. package/dist/system/ServiceContext.d.ts +37 -0
  201. package/dist/system/ServiceContext.js +48 -0
  202. package/dist/system/ServiceContext.js.map +1 -0
  203. package/dist/system/system-index.d.ts +1 -1
  204. package/dist/system/system-index.js +1 -1
  205. package/dist/system/system-index.js.map +1 -1
  206. package/dist/util/Mutex.js.map +1 -1
  207. package/dist/util/config/collectors/config-collector.js.map +1 -1
  208. package/dist/util/config/collectors/impl/base64-config-collector.js.map +1 -1
  209. package/dist/util/config/collectors/impl/filesystem-config-collector.js.map +1 -1
  210. package/dist/util/config/compound-config-collector.d.ts +9 -2
  211. package/dist/util/config/compound-config-collector.js +31 -23
  212. package/dist/util/config/compound-config-collector.js.map +1 -1
  213. package/dist/util/config/sync-rules/impl/base64-sync-rules-collector.js.map +1 -1
  214. package/dist/util/config/sync-rules/impl/filesystem-sync-rules-collector.js.map +1 -1
  215. package/dist/util/config/sync-rules/impl/inline-sync-rules-collector.js.map +1 -1
  216. package/dist/util/config/sync-rules/sync-rules-provider.d.ts +9 -0
  217. package/dist/util/config/sync-rules/sync-rules-provider.js +15 -0
  218. package/dist/util/config/sync-rules/sync-rules-provider.js.map +1 -0
  219. package/dist/util/config/types.d.ts +7 -4
  220. package/dist/util/config/types.js.map +1 -1
  221. package/dist/util/config.d.ts +3 -4
  222. package/dist/util/config.js +5 -20
  223. package/dist/util/config.js.map +1 -1
  224. package/dist/util/memory-tracking.js.map +1 -1
  225. package/dist/util/secs.js.map +1 -1
  226. package/dist/util/util-index.d.ts +3 -6
  227. package/dist/util/util-index.js +3 -6
  228. package/dist/util/util-index.js.map +1 -1
  229. package/dist/util/utils.d.ts +10 -7
  230. package/dist/util/utils.js +36 -25
  231. package/dist/util/utils.js.map +1 -1
  232. package/package.json +8 -12
  233. package/src/api/RouteAPI.ts +78 -0
  234. package/src/api/api-index.ts +1 -0
  235. package/src/api/diagnostics.ts +18 -70
  236. package/src/api/schema.ts +18 -90
  237. package/src/auth/KeyStore.ts +9 -6
  238. package/src/auth/RemoteJWKSCollector.ts +4 -1
  239. package/src/auth/StaticSupabaseKeyCollector.ts +31 -0
  240. package/src/auth/auth-index.ts +1 -1
  241. package/src/db/mongo.ts +5 -3
  242. package/src/entry/cli-entry.ts +3 -2
  243. package/src/entry/commands/compact-action.ts +24 -12
  244. package/src/entry/commands/migrate-action.ts +5 -8
  245. package/src/entry/commands/teardown-action.ts +2 -2
  246. package/src/index.ts +5 -2
  247. package/src/metrics/Metrics.ts +6 -16
  248. package/src/migrations/db/migrations/1684951997326-init.ts +9 -4
  249. package/src/migrations/db/migrations/1702295701188-sync-rule-state.ts +7 -4
  250. package/src/migrations/db/migrations/1711543888062-write-checkpoint-index.ts +6 -4
  251. package/src/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.ts +37 -0
  252. package/src/migrations/migrations.ts +24 -8
  253. package/src/modules/AbstractModule.ts +37 -0
  254. package/src/modules/ModuleManager.ts +34 -0
  255. package/src/modules/modules-index.ts +2 -0
  256. package/src/replication/AbstractReplicationJob.ts +79 -0
  257. package/src/replication/AbstractReplicator.ts +228 -0
  258. package/src/replication/ErrorRateLimiter.ts +0 -44
  259. package/src/replication/ReplicationEngine.ts +43 -0
  260. package/src/replication/ReplicationModule.ts +122 -0
  261. package/src/replication/replication-index.ts +4 -6
  262. package/src/routes/RouterEngine.ts +120 -0
  263. package/src/routes/auth.ts +21 -12
  264. package/src/routes/configure-fastify.ts +26 -27
  265. package/src/routes/configure-rsocket.ts +13 -8
  266. package/src/routes/endpoints/admin.ts +72 -76
  267. package/src/routes/endpoints/checkpointing.ts +51 -11
  268. package/src/routes/endpoints/socket-route.ts +10 -6
  269. package/src/routes/endpoints/sync-rules.ts +41 -25
  270. package/src/routes/endpoints/sync-stream.ts +8 -8
  271. package/src/routes/router.ts +8 -3
  272. package/src/routes/routes-index.ts +1 -0
  273. package/src/runner/teardown.ts +50 -88
  274. package/src/storage/BucketStorage.ts +103 -41
  275. package/src/storage/MongoBucketStorage.ts +65 -53
  276. package/src/storage/ReplicationEventPayload.ts +16 -0
  277. package/src/storage/SourceEntity.ts +22 -0
  278. package/src/storage/SourceTable.ts +14 -7
  279. package/src/storage/StorageEngine.ts +62 -0
  280. package/src/storage/StorageProvider.ts +27 -0
  281. package/src/storage/WriteCheckpointAPI.ts +85 -0
  282. package/src/storage/mongo/MongoBucketBatch.ts +164 -84
  283. package/src/storage/mongo/MongoCompactor.ts +25 -4
  284. package/src/storage/mongo/MongoPersistedSyncRulesContent.ts +7 -4
  285. package/src/storage/mongo/MongoStorageProvider.ts +31 -0
  286. package/src/storage/mongo/MongoSyncBucketStorage.ts +118 -41
  287. package/src/storage/mongo/MongoSyncRulesLock.ts +7 -3
  288. package/src/storage/mongo/MongoWriteCheckpointAPI.ts +151 -0
  289. package/src/storage/mongo/OperationBatch.ts +28 -12
  290. package/src/storage/mongo/PersistedBatch.ts +10 -6
  291. package/src/storage/mongo/config.ts +40 -0
  292. package/src/storage/mongo/db.ts +4 -1
  293. package/src/storage/mongo/models.ts +21 -5
  294. package/src/storage/mongo/util.ts +48 -3
  295. package/src/storage/storage-index.ts +8 -2
  296. package/src/sync/sync.ts +7 -4
  297. package/src/sync/util.ts +0 -1
  298. package/src/system/ServiceContext.ts +68 -0
  299. package/src/system/system-index.ts +1 -1
  300. package/src/util/config/compound-config-collector.ts +48 -30
  301. package/src/util/config/sync-rules/sync-rules-provider.ts +18 -0
  302. package/src/util/config/types.ts +7 -5
  303. package/src/util/config.ts +6 -23
  304. package/src/util/util-index.ts +3 -6
  305. package/src/util/utils.ts +48 -41
  306. package/test/src/__snapshots__/sync.test.ts.snap +14 -14
  307. package/test/src/auth.test.ts +7 -7
  308. package/test/src/broadcast_iterable.test.ts +1 -1
  309. package/test/src/compacting.test.ts +50 -40
  310. package/test/src/data_storage.test.ts +382 -202
  311. package/test/src/env.ts +1 -3
  312. package/test/src/merge_iterable.test.ts +1 -6
  313. package/test/src/routes/probes.integration.test.ts +34 -30
  314. package/test/src/setup.ts +1 -1
  315. package/test/src/stream_utils.ts +42 -0
  316. package/test/src/sync.test.ts +115 -39
  317. package/test/src/util.ts +48 -51
  318. package/test/tsconfig.json +1 -1
  319. package/tsconfig.tsbuildinfo +1 -1
  320. package/vitest.config.ts +7 -1
  321. package/dist/auth/SupabaseKeyCollector.d.ts +0 -22
  322. package/dist/auth/SupabaseKeyCollector.js +0 -61
  323. package/dist/auth/SupabaseKeyCollector.js.map +0 -1
  324. package/dist/replication/PgRelation.d.ts +0 -16
  325. package/dist/replication/PgRelation.js +0 -26
  326. package/dist/replication/PgRelation.js.map +0 -1
  327. package/dist/replication/WalConnection.d.ts +0 -34
  328. package/dist/replication/WalConnection.js +0 -190
  329. package/dist/replication/WalConnection.js.map +0 -1
  330. package/dist/replication/WalStream.d.ts +0 -57
  331. package/dist/replication/WalStream.js +0 -519
  332. package/dist/replication/WalStream.js.map +0 -1
  333. package/dist/replication/WalStreamManager.d.ts +0 -30
  334. package/dist/replication/WalStreamManager.js +0 -198
  335. package/dist/replication/WalStreamManager.js.map +0 -1
  336. package/dist/replication/WalStreamRunner.d.ts +0 -38
  337. package/dist/replication/WalStreamRunner.js +0 -155
  338. package/dist/replication/WalStreamRunner.js.map +0 -1
  339. package/dist/replication/util.d.ts +0 -9
  340. package/dist/replication/util.js +0 -62
  341. package/dist/replication/util.js.map +0 -1
  342. package/dist/system/CorePowerSyncSystem.d.ts +0 -23
  343. package/dist/system/CorePowerSyncSystem.js +0 -52
  344. package/dist/system/CorePowerSyncSystem.js.map +0 -1
  345. package/dist/util/PgManager.d.ts +0 -24
  346. package/dist/util/PgManager.js +0 -55
  347. package/dist/util/PgManager.js.map +0 -1
  348. package/dist/util/migration_lib.d.ts +0 -11
  349. package/dist/util/migration_lib.js +0 -64
  350. package/dist/util/migration_lib.js.map +0 -1
  351. package/dist/util/pgwire_utils.d.ts +0 -24
  352. package/dist/util/pgwire_utils.js +0 -117
  353. package/dist/util/pgwire_utils.js.map +0 -1
  354. package/dist/util/populate_test_data.d.ts +0 -8
  355. package/dist/util/populate_test_data.js +0 -65
  356. package/dist/util/populate_test_data.js.map +0 -1
  357. package/src/auth/SupabaseKeyCollector.ts +0 -67
  358. package/src/replication/PgRelation.ts +0 -42
  359. package/src/replication/WalConnection.ts +0 -227
  360. package/src/replication/WalStream.ts +0 -631
  361. package/src/replication/WalStreamManager.ts +0 -213
  362. package/src/replication/WalStreamRunner.ts +0 -180
  363. package/src/replication/util.ts +0 -76
  364. package/src/system/CorePowerSyncSystem.ts +0 -64
  365. package/src/util/PgManager.ts +0 -64
  366. package/src/util/migration_lib.ts +0 -79
  367. package/src/util/pgwire_utils.ts +0 -139
  368. package/src/util/populate_test_data.ts +0 -78
  369. package/test/src/__snapshots__/pg_test.test.ts.snap +0 -256
  370. package/test/src/large_batch.test.ts +0 -194
  371. package/test/src/pg_test.test.ts +0 -450
  372. package/test/src/schema_changes.test.ts +0 -545
  373. package/test/src/slow_tests.test.ts +0 -338
  374. package/test/src/validation.test.ts +0 -63
  375. package/test/src/wal_stream.test.ts +0 -319
  376. package/test/src/wal_stream_utils.ts +0 -156
@@ -0,0 +1,80 @@
1
+ import { logger } from '@powersync/lib-services-framework';
2
+ import { ADMIN_ROUTES } from './endpoints/admin.js';
3
+ import { CHECKPOINT_ROUTES } from './endpoints/checkpointing.js';
4
+ import { syncStreamReactive } from './endpoints/socket-route.js';
5
+ import { SYNC_RULES_ROUTES } from './endpoints/sync-rules.js';
6
+ import { SYNC_STREAM_ROUTES } from './endpoints/sync-stream.js';
7
+ /**
8
+ * Serves as a registry from which SyncAPIs can be retrieved based on Replication DataSource type
9
+ * Initially only one SyncAPI per DataSource type is supported
10
+ */
11
+ export class RouterEngine {
12
+ constructor() {
13
+ this.api = null;
14
+ this.stopHandlers = new Set();
15
+ this.cleanupHandler = null;
16
+ this.closed = false;
17
+ // Default routes
18
+ this.routes = {
19
+ api_routes: [...ADMIN_ROUTES, ...CHECKPOINT_ROUTES, ...SYNC_RULES_ROUTES],
20
+ stream_routes: [...SYNC_STREAM_ROUTES],
21
+ socket_routes: [syncStreamReactive]
22
+ };
23
+ }
24
+ registerAPI(api) {
25
+ if (this.api) {
26
+ logger.warn('A RouteAPI has already been registered. Overriding existing implementation');
27
+ }
28
+ this.api = api;
29
+ }
30
+ getAPI() {
31
+ if (!this.api) {
32
+ throw new Error('No RouteAPI adapter has been registered yet.');
33
+ }
34
+ return this.api;
35
+ }
36
+ /**
37
+ * Starts the router given the configuration provided
38
+ */
39
+ async start(setup) {
40
+ logger.info('Starting Router Engine...');
41
+ const { onShutdown } = await setup(this.routes);
42
+ this.cleanupHandler = onShutdown;
43
+ logger.info('Successfully started Router Engine.');
44
+ }
45
+ /**
46
+ * Runs all stop handlers then final cleanup.
47
+ */
48
+ async shutDown() {
49
+ logger.info('Shutting down Router Engine...');
50
+ // Close open streams, so that they don't block the server from closing.
51
+ // Note: This does not work well when streaming requests are queued. In that case, the server still doesn't
52
+ // close in the 30-second timeout.
53
+ this.closed = true;
54
+ logger.info(`Closing ${this.stopHandlers.size} streams.`);
55
+ for (let handler of this.stopHandlers) {
56
+ handler();
57
+ }
58
+ logger.info(`Running cleanup.`);
59
+ // Typically closes the server
60
+ await this.cleanupHandler?.();
61
+ // Close the api handlers
62
+ await this.api?.shutdown();
63
+ logger.info('Successfully shut down Router Engine.');
64
+ }
65
+ /**
66
+ * Add a stop handler callback to be executed when the router engine is being
67
+ * shutdown.
68
+ */
69
+ addStopHandler(handler) {
70
+ if (this.closed) {
71
+ handler();
72
+ return () => { };
73
+ }
74
+ this.stopHandlers.add(handler);
75
+ return () => {
76
+ this.stopHandlers.delete(handler);
77
+ };
78
+ }
79
+ }
80
+ //# sourceMappingURL=RouterEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouterEngine.js","sourceRoot":"","sources":["../../src/routes/RouterEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAI3D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAgBhE;;;GAGG;AACH,MAAM,OAAO,YAAY;IAavB;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,iBAAiB;QACjB,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,iBAAiB,EAAE,GAAG,iBAAiB,CAAC;YACzE,aAAa,EAAE,CAAC,GAAG,kBAAkB,CAAC;YACtC,aAAa,EAAE,CAAC,kBAAkB,CAAC;SACpC,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;QACzC,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"}
@@ -1,7 +1,7 @@
1
1
  import * as auth from '../auth/auth-index.js';
2
+ import { ServiceContext } from '../system/ServiceContext.js';
2
3
  import * as util from '../util/util-index.js';
3
4
  import { BasicRouterRequest, Context, RequestEndpointHandlerPayload } from './router.js';
4
- import { CorePowerSyncSystem } from '../system/CorePowerSyncSystem.js';
5
5
  export declare function endpoint(req: BasicRouterRequest): string;
6
6
  /**
7
7
  * @deprecated
@@ -27,7 +27,7 @@ export declare function authorizeUser(context: Context, authHeader?: string): Pr
27
27
  authorized: boolean;
28
28
  errors?: undefined;
29
29
  }>;
30
- export declare function generateContext(system: CorePowerSyncSystem, token: string): Promise<{
30
+ export declare function generateContext(serviceContext: ServiceContext, token: string): Promise<{
31
31
  context: {
32
32
  user_id: string;
33
33
  token_payload: auth.JwtPayload;
@@ -81,7 +81,7 @@ export async function authorizeUser(context, authHeader = '') {
81
81
  errors: ['Authentication required']
82
82
  };
83
83
  }
84
- const { context: tokenContext, errors } = await generateContext(context.system, token);
84
+ const { context: tokenContext, errors } = await generateContext(context.service_context, token);
85
85
  if (!tokenContext) {
86
86
  return {
87
87
  authorized: false,
@@ -91,13 +91,13 @@ export async function authorizeUser(context, authHeader = '') {
91
91
  Object.assign(context, tokenContext);
92
92
  return { authorized: true };
93
93
  }
94
- export async function generateContext(system, token) {
95
- const config = system.config;
94
+ export async function generateContext(serviceContext, token) {
95
+ const { configuration } = serviceContext;
96
96
  let tokenPayload;
97
97
  try {
98
- const maxAge = config.token_max_expiration;
99
- tokenPayload = await system.client_keystore.verifyJwt(token, {
100
- defaultAudiences: config.jwt_audiences,
98
+ const maxAge = configuration.token_max_expiration;
99
+ tokenPayload = await configuration.client_keystore.verifyJwt(token, {
100
+ defaultAudiences: configuration.jwt_audiences,
101
101
  maxAge: maxAge
102
102
  });
103
103
  return {
@@ -118,9 +118,9 @@ export async function generateContext(system, token) {
118
118
  * @deprecated
119
119
  */
120
120
  export const authDevUser = async (payload) => {
121
- const context = payload.context;
121
+ const { context: { service_context: { configuration } } } = payload;
122
122
  const token = getTokenFromHeader(payload.request.headers.authorization);
123
- if (!context.system.config.dev.demo_auth) {
123
+ if (!configuration.dev.demo_auth) {
124
124
  return {
125
125
  authorized: false,
126
126
  errors: ['Authentication disabled']
@@ -137,7 +137,7 @@ export const authDevUser = async (payload) => {
137
137
  const audience = [devAudience(payload.request)];
138
138
  let tokenPayload;
139
139
  try {
140
- tokenPayload = await context.system.dev_client_keystore.verifyJwt(token, {
140
+ tokenPayload = await configuration.dev_client_keystore.verifyJwt(token, {
141
141
  defaultAudiences: audience,
142
142
  maxAge: '31d'
143
143
  });
@@ -152,8 +152,8 @@ export const authDevUser = async (payload) => {
152
152
  return { authorized: true };
153
153
  };
154
154
  export const authApi = (payload) => {
155
- const context = payload.context;
156
- const api_keys = context.system.config.api_tokens;
155
+ const { context: { service_context: { configuration } } } = payload;
156
+ const api_keys = configuration.api_tokens;
157
157
  if (api_keys.length == 0) {
158
158
  return {
159
159
  authorized: false,
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/routes/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/routes/auth.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import type fastify from 'fastify';
3
2
  import * as system from '../system/system-index.js';
4
3
  import { CreateRequestQueueParams } from './hooks.js';
@@ -9,7 +8,7 @@ import { RouteDefinition } from './router.js';
9
8
  */
10
9
  export type RouteRegistrationOptions = {
11
10
  routes: RouteDefinition[];
12
- queueOptions: CreateRequestQueueParams;
11
+ queue_options: CreateRequestQueueParams;
13
12
  };
14
13
  /**
15
14
  * HTTP routes separated by API and Sync stream categories.
@@ -17,10 +16,10 @@ export type RouteRegistrationOptions = {
17
16
  */
18
17
  export type RouteDefinitions = {
19
18
  api?: Partial<RouteRegistrationOptions>;
20
- syncStream?: Partial<RouteRegistrationOptions>;
19
+ sync_stream?: Partial<RouteRegistrationOptions>;
21
20
  };
22
21
  export type FastifyServerConfig = {
23
- system: system.CorePowerSyncSystem;
22
+ service_context: system.ServiceContext;
24
23
  routes?: RouteDefinitions;
25
24
  };
26
25
  export declare const DEFAULT_ROUTE_OPTIONS: {
@@ -324,12 +323,17 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
324
323
  columns: {
325
324
  type: string;
326
325
  name: string;
326
+ sqlite_type: number | import("@powersync/service-types").SqliteSchemaTypeText;
327
+ internal_type: string;
327
328
  pg_type: string;
329
+ description?: string | undefined;
328
330
  }[];
329
331
  }[];
330
332
  }[];
331
333
  id?: string | undefined;
332
334
  }[];
335
+ defaultConnectionTag: string;
336
+ defaultSchema: string;
333
337
  }, 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>, {
334
338
  connections: {
335
339
  tag: string;
@@ -340,12 +344,17 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
340
344
  columns: {
341
345
  type: string;
342
346
  name: string;
347
+ sqlite_type: number | import("@powersync/service-types").SqliteSchemaTypeText;
348
+ internal_type: string;
343
349
  pg_type: string;
350
+ description?: string | undefined;
344
351
  }[];
345
352
  }[];
346
353
  }[];
347
354
  id?: string | undefined;
348
355
  }[];
356
+ defaultConnectionTag: string;
357
+ defaultSchema: string;
349
358
  }>> & {
350
359
  path: string;
351
360
  method: import("@powersync/lib-services-framework").HTTPMethod.POST;
@@ -367,12 +376,17 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
367
376
  columns: {
368
377
  type: string;
369
378
  name: string;
379
+ sqlite_type: number | import("@powersync/service-types").SqliteSchemaTypeText;
380
+ internal_type: string;
370
381
  pg_type: string;
382
+ description?: string | undefined;
371
383
  }[];
372
384
  }[];
373
385
  }[];
374
386
  id?: string | undefined;
375
387
  }[];
388
+ defaultConnectionTag: string;
389
+ defaultSchema: string;
376
390
  }>;
377
391
  }) | (import("@powersync/lib-services-framework").Endpoint<{}, {
378
392
  connections: {
@@ -566,22 +580,6 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
566
580
  }, import("./router.js").Context, import("./router.js").BasicRouterRequest>) => Promise<{
567
581
  write_checkpoint: string;
568
582
  }>;
569
- }) | (import("@powersync/lib-services-framework").Endpoint<unknown, import("@powersync/lib-services-framework").RouterResponse<{
570
- ready: boolean;
571
- started: boolean;
572
- touched_at: Date;
573
- }>, import("./router.js").Context, import("./router.js").RequestEndpointHandlerPayload<unknown, import("./router.js").Context, import("./router.js").BasicRouterRequest>, import("@powersync/lib-services-framework").EndpointHandler<import("./router.js").RequestEndpointHandlerPayload<unknown, import("./router.js").Context, import("./router.js").BasicRouterRequest>, import("@powersync/lib-services-framework").RouterResponse<{
574
- ready: boolean;
575
- started: boolean;
576
- touched_at: Date;
577
- }>>> & {
578
- path: import("./endpoints/probes.js").ProbeRoutes;
579
- method: import("@powersync/lib-services-framework").HTTPMethod.GET;
580
- handler: () => Promise<import("@powersync/lib-services-framework").RouterResponse<{
581
- ready: boolean;
582
- started: boolean;
583
- touched_at: Date;
584
- }>>;
585
583
  }) | (import("@powersync/lib-services-framework").Endpoint<{
586
584
  content: string;
587
585
  }, {
@@ -665,13 +663,29 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
665
663
  handler: (payload: import("./router.js").RequestEndpointHandlerPayload<{}, import("./router.js").Context, import("./router.js").BasicRouterRequest>) => Promise<{
666
664
  slot_name: string;
667
665
  }>;
666
+ }) | (import("@powersync/lib-services-framework").Endpoint<unknown, import("@powersync/lib-services-framework").RouterResponse<{
667
+ ready: boolean;
668
+ started: boolean;
669
+ touched_at: Date;
670
+ }>, import("./router.js").Context, import("./router.js").RequestEndpointHandlerPayload<unknown, import("./router.js").Context, import("./router.js").BasicRouterRequest>, import("@powersync/lib-services-framework").EndpointHandler<import("./router.js").RequestEndpointHandlerPayload<unknown, import("./router.js").Context, import("./router.js").BasicRouterRequest>, import("@powersync/lib-services-framework").RouterResponse<{
671
+ ready: boolean;
672
+ started: boolean;
673
+ touched_at: Date;
674
+ }>>> & {
675
+ path: import("./endpoints/probes.js").ProbeRoutes;
676
+ method: import("@powersync/lib-services-framework").HTTPMethod.GET;
677
+ handler: () => Promise<import("@powersync/lib-services-framework").RouterResponse<{
678
+ ready: boolean;
679
+ started: boolean;
680
+ touched_at: Date;
681
+ }>>;
668
682
  }))[];
669
- queueOptions: {
683
+ queue_options: {
670
684
  concurrency: number;
671
685
  max_queue_depth: number;
672
686
  };
673
687
  };
674
- syncStream: {
688
+ sync_stream: {
675
689
  routes: (import("@powersync/lib-services-framework").Endpoint<{
676
690
  parameters?: Record<string, any> | undefined;
677
691
  buckets?: {
@@ -740,7 +754,7 @@ export declare const DEFAULT_ROUTE_OPTIONS: {
740
754
  client_id?: string | undefined;
741
755
  }, import("./router.js").Context, import("./router.js").BasicRouterRequest>) => Promise<import("@powersync/lib-services-framework").RouterResponse<import("stream").Readable> | undefined>;
742
756
  })[];
743
- queueOptions: {
757
+ queue_options: {
744
758
  concurrency: number;
745
759
  max_queue_depth: number;
746
760
  };
@@ -8,14 +8,14 @@ import { createRequestQueueHook } from './hooks.js';
8
8
  export const DEFAULT_ROUTE_OPTIONS = {
9
9
  api: {
10
10
  routes: [...ADMIN_ROUTES, ...CHECKPOINT_ROUTES, ...SYNC_RULES_ROUTES, ...PROBES_ROUTES],
11
- queueOptions: {
11
+ queue_options: {
12
12
  concurrency: 10,
13
13
  max_queue_depth: 20
14
14
  }
15
15
  },
16
- syncStream: {
16
+ sync_stream: {
17
17
  routes: [...SYNC_STREAM_ROUTES],
18
- queueOptions: {
18
+ queue_options: {
19
19
  concurrency: 200,
20
20
  max_queue_depth: 0
21
21
  }
@@ -26,7 +26,17 @@ export const DEFAULT_ROUTE_OPTIONS = {
26
26
  * concurrency queue limits or override routes.
27
27
  */
28
28
  export function configureFastifyServer(server, options) {
29
- const { system, routes = DEFAULT_ROUTE_OPTIONS } = options;
29
+ const { service_context, routes = DEFAULT_ROUTE_OPTIONS } = options;
30
+ const generateContext = async () => {
31
+ const { routerEngine } = service_context;
32
+ if (!routerEngine) {
33
+ throw new Error(`RouterEngine has not been registered`);
34
+ }
35
+ return {
36
+ user_id: undefined,
37
+ service_context: service_context
38
+ };
39
+ };
30
40
  /**
31
41
  * Fastify creates an encapsulated context for each `.register` call.
32
42
  * Creating a separate context here to separate the concurrency limits for Admin APIs
@@ -34,25 +44,15 @@ export function configureFastifyServer(server, options) {
34
44
  * https://github.com/fastify/fastify/blob/main/docs/Reference/Encapsulation.md
35
45
  */
36
46
  server.register(async function (childContext) {
37
- registerFastifyRoutes(childContext, async () => {
38
- return {
39
- user_id: undefined,
40
- system: system
41
- };
42
- }, routes.api?.routes ?? DEFAULT_ROUTE_OPTIONS.api.routes);
47
+ registerFastifyRoutes(childContext, generateContext, routes.api?.routes ?? DEFAULT_ROUTE_OPTIONS.api.routes);
43
48
  // Limit the active concurrent requests
44
- childContext.addHook('onRequest', createRequestQueueHook(routes.api?.queueOptions ?? DEFAULT_ROUTE_OPTIONS.api.queueOptions));
49
+ childContext.addHook('onRequest', createRequestQueueHook(routes.api?.queue_options ?? DEFAULT_ROUTE_OPTIONS.api.queue_options));
45
50
  });
46
51
  // Create a separate context for concurrency queueing
47
52
  server.register(async function (childContext) {
48
- registerFastifyRoutes(childContext, async () => {
49
- return {
50
- user_id: undefined,
51
- system: system
52
- };
53
- }, routes.syncStream?.routes ?? DEFAULT_ROUTE_OPTIONS.syncStream.routes);
53
+ registerFastifyRoutes(childContext, generateContext, routes.sync_stream?.routes ?? DEFAULT_ROUTE_OPTIONS.sync_stream.routes);
54
54
  // Limit the active concurrent requests
55
- childContext.addHook('onRequest', createRequestQueueHook(routes.syncStream?.queueOptions ?? DEFAULT_ROUTE_OPTIONS.syncStream.queueOptions));
55
+ childContext.addHook('onRequest', createRequestQueueHook(routes.sync_stream?.queue_options ?? DEFAULT_ROUTE_OPTIONS.sync_stream.queue_options));
56
56
  });
57
57
  }
58
58
  //# sourceMappingURL=configure-fastify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configure-fastify.js","sourceRoot":"","sources":["../../src/routes/configure-fastify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAI5D,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,YAAY,EAAE;YACZ,WAAW,EAAE,EAAE;YACf,eAAe,EAAE,EAAE;SACpB;KACF;IACD,UAAU,EAAE;QACV,MAAM,EAAE,CAAC,GAAG,kBAAkB,CAAC;QAC/B,YAAY,EAAE;YACZ,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,MAAM,EAAE,MAAM,GAAG,qBAAqB,EAAE,GAAG,OAAO,CAAC;IAC3D;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW,YAAY;QAC1C,qBAAqB,CACnB,YAAY,EACZ,KAAK,IAAI,EAAE;YACT,OAAO;gBACL,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,MAAM;aACf,CAAC;QACJ,CAAC,EACD,MAAM,CAAC,GAAG,EAAE,MAAM,IAAI,qBAAqB,CAAC,GAAG,CAAC,MAAM,CACvD,CAAC;QACF,uCAAuC;QACvC,YAAY,CAAC,OAAO,CAClB,WAAW,EACX,sBAAsB,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,IAAI,qBAAqB,CAAC,GAAG,CAAC,YAAY,CAAC,CAC3F,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,qDAAqD;IACrD,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW,YAAY;QAC1C,qBAAqB,CACnB,YAAY,EACZ,KAAK,IAAI,EAAE;YACT,OAAO;gBACL,OAAO,EAAE,SAAS;gBAClB,MAAM,EAAE,MAAM;aACf,CAAC;QACJ,CAAC,EACD,MAAM,CAAC,UAAU,EAAE,MAAM,IAAI,qBAAqB,CAAC,UAAU,CAAC,MAAM,CACrE,CAAC;QACF,uCAAuC;QACvC,YAAY,CAAC,OAAO,CAClB,WAAW,EACX,sBAAsB,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,IAAI,qBAAqB,CAAC,UAAU,CAAC,YAAY,CAAC,CACzG,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"configure-fastify.js","sourceRoot":"","sources":["../../src/routes/configure-fastify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAI5D,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,GAAG,KAAK,IAAI,EAAE;QACjC,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC;QACzC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO;YACL,OAAO,EAAE,SAAS;YAClB,eAAe,EAAE,eAAuC;SACzD,CAAC;IACJ,CAAC,CAAC;IAEF;;;;;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,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,13 +1,12 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import * as http from 'http';
3
2
  import { ReactiveSocketRouter } from '@powersync/service-rsocket-router';
4
- import { CorePowerSyncSystem } from '../system/CorePowerSyncSystem.js';
3
+ import { ServiceContext } from '../system/ServiceContext.js';
5
4
  import { SocketRouteGenerator } from './router-socket.js';
6
5
  import { Context } from './router.js';
7
6
  export type RSockerRouterConfig = {
8
- system: CorePowerSyncSystem;
7
+ service_context: ServiceContext;
9
8
  server: http.Server;
10
- routeGenerators?: SocketRouteGenerator[];
9
+ route_generators?: SocketRouteGenerator[];
11
10
  };
12
11
  export declare const DEFAULT_SOCKET_ROUTES: SocketRouteGenerator[];
13
12
  export declare function configureRSocket(router: ReactiveSocketRouter<Context>, options: RSockerRouterConfig): void;
@@ -6,7 +6,7 @@ import { syncStreamReactive } from './endpoints/socket-route.js';
6
6
  import { RSocketContextMeta } from './router-socket.js';
7
7
  export const DEFAULT_SOCKET_ROUTES = [syncStreamReactive];
8
8
  export function configureRSocket(router, options) {
9
- const { routeGenerators = DEFAULT_SOCKET_ROUTES, server, system } = options;
9
+ const { route_generators = DEFAULT_SOCKET_ROUTES, server, service_context } = options;
10
10
  router.applyWebSocketEndpoints(server, {
11
11
  contextProvider: async (data) => {
12
12
  const { token, user_agent } = RSocketContextMeta.decode(deserialize(data));
@@ -16,16 +16,19 @@ export function configureRSocket(router, options) {
16
16
  try {
17
17
  const extracted_token = getTokenFromHeader(token);
18
18
  if (extracted_token != null) {
19
- const { context, errors: token_errors } = await generateContext(system, extracted_token);
19
+ const { context, errors: token_errors } = await generateContext(options.service_context, extracted_token);
20
20
  if (context?.token_payload == null) {
21
21
  throw new errors.AuthorizationError(token_errors ?? 'Authentication required');
22
22
  }
23
+ if (!service_context.routerEngine) {
24
+ throw new Error(`RouterEngine has not been registered`);
25
+ }
23
26
  return {
24
27
  token,
25
28
  user_agent,
26
29
  ...context,
27
30
  token_errors: token_errors,
28
- system
31
+ service_context: service_context
29
32
  };
30
33
  }
31
34
  else {
@@ -37,7 +40,7 @@ export function configureRSocket(router, options) {
37
40
  throw ex;
38
41
  }
39
42
  },
40
- endpoints: routeGenerators.map((generator) => generator(router)),
43
+ endpoints: route_generators.map((generator) => generator(router)),
41
44
  metaDecoder: async (meta) => {
42
45
  return RSocketRequestMeta.decode(deserialize(meta));
43
46
  },
@@ -1 +1 @@
1
- {"version":3,"file":"configure-rsocket.js","sourceRoot":"","sources":["../../src/routes/configure-rsocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAwB,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAG7F,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAwB,MAAM,oBAAoB,CAAC;AAS9E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAE1D,MAAM,UAAU,gBAAgB,CAAC,MAAqC,EAAE,OAA4B;IAClG,MAAM,EAAE,eAAe,GAAG,qBAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE5E,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE;QACrC,eAAe,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YACtC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAQ,CAAC,CAAC;YAElF,IAAI,CAAC,KAAK,EAAE;gBACV,MAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;aAC1D;YAED,IAAI;gBACF,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAClD,IAAI,eAAe,IAAI,IAAI,EAAE;oBAC3B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;oBACzF,IAAI,OAAO,EAAE,aAAa,IAAI,IAAI,EAAE;wBAClC,MAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC,YAAY,IAAI,yBAAyB,CAAC,CAAC;qBAChF;oBACD,OAAO;wBACL,KAAK;wBACL,UAAU;wBACV,GAAG,OAAO;wBACV,YAAY,EAAE,YAAY;wBAC1B,MAAM;qBACP,CAAC;iBACH;qBAAM;oBACL,MAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;iBAC1D;aACF;YAAC,OAAO,EAAE,EAAE;gBACX,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACjB,MAAM,EAAE,CAAC;aACV;QACH,CAAC;QACD,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChE,WAAW,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YAClC,OAAO,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAQ,CAAC,CAAC;QAC7D,CAAC;QACD,cAAc,EAAE,KAAK,EAAE,OAAgB,EAAE,EAAE,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;KAC5E,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"configure-rsocket.js","sourceRoot":"","sources":["../../src/routes/configure-rsocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAGnC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAwB,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAG7F,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAwB,MAAM,oBAAoB,CAAC;AAS9E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAE1D,MAAM,UAAU,gBAAgB,CAAC,MAAqC,EAAE,OAA4B;IAClG,MAAM,EAAE,gBAAgB,GAAG,qBAAqB,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IAEtF,MAAM,CAAC,uBAAuB,CAAC,MAAM,EAAE;QACrC,eAAe,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YACtC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAQ,CAAC,CAAC;YAElF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;YAC3D,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAClD,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;oBAC5B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;oBAC1G,IAAI,OAAO,EAAE,aAAa,IAAI,IAAI,EAAE,CAAC;wBACnC,MAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC,YAAY,IAAI,yBAAyB,CAAC,CAAC;oBACjF,CAAC;oBAED,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;wBAClC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;oBAC1D,CAAC;oBAED,OAAO;wBACL,KAAK;wBACL,UAAU;wBACV,GAAG,OAAO;wBACV,YAAY,EAAE,YAAY;wBAC1B,eAAe,EAAE,eAAuC;qBACzD,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACjB,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC;QACD,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACjE,WAAW,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YAClC,OAAO,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAQ,CAAC,CAAC;QAC7D,CAAC;QACD,cAAc,EAAE,KAAK,EAAE,OAAgB,EAAE,EAAE,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC;KAC5E,CAAC,CAAC;AACL,CAAC"}
@@ -300,12 +300,17 @@ export declare const getSchema: router.Endpoint<{}, {
300
300
  columns: {
301
301
  type: string;
302
302
  name: string;
303
+ sqlite_type: number | import("@powersync/service-types").SqliteSchemaTypeText;
304
+ internal_type: string;
303
305
  pg_type: string;
306
+ description?: string | undefined;
304
307
  }[];
305
308
  }[];
306
309
  }[];
307
310
  id?: string | undefined;
308
311
  }[];
312
+ defaultConnectionTag: string;
313
+ defaultSchema: string;
309
314
  }, import("../router.js").Context, import("../router.js").RequestEndpointHandlerPayload<{}, import("../router.js").Context, import("../router.js").BasicRouterRequest>, router.EndpointHandler<import("../router.js").RequestEndpointHandlerPayload<{}, import("../router.js").Context, import("../router.js").BasicRouterRequest>, {
310
315
  connections: {
311
316
  tag: string;
@@ -316,12 +321,17 @@ export declare const getSchema: router.Endpoint<{}, {
316
321
  columns: {
317
322
  type: string;
318
323
  name: string;
324
+ sqlite_type: number | import("@powersync/service-types").SqliteSchemaTypeText;
325
+ internal_type: string;
319
326
  pg_type: string;
327
+ description?: string | undefined;
320
328
  }[];
321
329
  }[];
322
330
  }[];
323
331
  id?: string | undefined;
324
332
  }[];
333
+ defaultConnectionTag: string;
334
+ defaultSchema: string;
325
335
  }>> & {
326
336
  path: string;
327
337
  method: router.HTTPMethod.POST;
@@ -343,12 +353,17 @@ export declare const getSchema: router.Endpoint<{}, {
343
353
  columns: {
344
354
  type: string;
345
355
  name: string;
356
+ sqlite_type: number | import("@powersync/service-types").SqliteSchemaTypeText;
357
+ internal_type: string;
346
358
  pg_type: string;
359
+ description?: string | undefined;
347
360
  }[];
348
361
  }[];
349
362
  }[];
350
363
  id?: string | undefined;
351
364
  }[];
365
+ defaultConnectionTag: string;
366
+ defaultSchema: string;
352
367
  }>;
353
368
  };
354
369
  export declare const reprocess: router.Endpoint<{}, {
@@ -788,12 +803,17 @@ export declare const ADMIN_ROUTES: ((router.Endpoint<{
788
803
  columns: {
789
804
  type: string;
790
805
  name: string;
806
+ sqlite_type: number | import("@powersync/service-types").SqliteSchemaTypeText;
807
+ internal_type: string;
791
808
  pg_type: string;
809
+ description?: string | undefined;
792
810
  }[];
793
811
  }[];
794
812
  }[];
795
813
  id?: string | undefined;
796
814
  }[];
815
+ defaultConnectionTag: string;
816
+ defaultSchema: string;
797
817
  }, import("../router.js").Context, import("../router.js").RequestEndpointHandlerPayload<{}, import("../router.js").Context, import("../router.js").BasicRouterRequest>, router.EndpointHandler<import("../router.js").RequestEndpointHandlerPayload<{}, import("../router.js").Context, import("../router.js").BasicRouterRequest>, {
798
818
  connections: {
799
819
  tag: string;
@@ -804,12 +824,17 @@ export declare const ADMIN_ROUTES: ((router.Endpoint<{
804
824
  columns: {
805
825
  type: string;
806
826
  name: string;
827
+ sqlite_type: number | import("@powersync/service-types").SqliteSchemaTypeText;
828
+ internal_type: string;
807
829
  pg_type: string;
830
+ description?: string | undefined;
808
831
  }[];
809
832
  }[];
810
833
  }[];
811
834
  id?: string | undefined;
812
835
  }[];
836
+ defaultConnectionTag: string;
837
+ defaultSchema: string;
813
838
  }>> & {
814
839
  path: string;
815
840
  method: router.HTTPMethod.POST;
@@ -831,12 +856,17 @@ export declare const ADMIN_ROUTES: ((router.Endpoint<{
831
856
  columns: {
832
857
  type: string;
833
858
  name: string;
859
+ sqlite_type: number | import("@powersync/service-types").SqliteSchemaTypeText;
860
+ internal_type: string;
834
861
  pg_type: string;
862
+ description?: string | undefined;
835
863
  }[];
836
864
  }[];
837
865
  }[];
838
866
  id?: string | undefined;
839
867
  }[];
868
+ defaultConnectionTag: string;
869
+ defaultSchema: string;
840
870
  }>;
841
871
  }) | (router.Endpoint<{}, {
842
872
  connections: {