@powersync/service-core 0.8.8 → 0.9.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 (372) hide show
  1. package/CHANGELOG.md +31 -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/auth-index.d.ts +0 -1
  23. package/dist/auth/auth-index.js +0 -1
  24. package/dist/auth/auth-index.js.map +1 -1
  25. package/dist/db/mongo.js +5 -3
  26. package/dist/db/mongo.js.map +1 -1
  27. package/dist/entry/cli-entry.js +3 -2
  28. package/dist/entry/cli-entry.js.map +1 -1
  29. package/dist/entry/commands/compact-action.js +90 -14
  30. package/dist/entry/commands/compact-action.js.map +1 -1
  31. package/dist/entry/commands/migrate-action.js +4 -5
  32. package/dist/entry/commands/migrate-action.js.map +1 -1
  33. package/dist/entry/commands/teardown-action.js +2 -2
  34. package/dist/entry/commands/teardown-action.js.map +1 -1
  35. package/dist/index.d.ts +4 -2
  36. package/dist/index.js +4 -2
  37. package/dist/index.js.map +1 -1
  38. package/dist/locks/MongoLocks.js.map +1 -1
  39. package/dist/metrics/Metrics.d.ts +2 -2
  40. package/dist/metrics/Metrics.js +5 -13
  41. package/dist/metrics/Metrics.js.map +1 -1
  42. package/dist/migrations/db/migrations/1684951997326-init.d.ts +2 -2
  43. package/dist/migrations/db/migrations/1684951997326-init.js +4 -2
  44. package/dist/migrations/db/migrations/1684951997326-init.js.map +1 -1
  45. package/dist/migrations/db/migrations/1702295701188-sync-rule-state.d.ts +2 -2
  46. package/dist/migrations/db/migrations/1702295701188-sync-rule-state.js +4 -2
  47. package/dist/migrations/db/migrations/1702295701188-sync-rule-state.js.map +1 -1
  48. package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.d.ts +2 -2
  49. package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.js +4 -2
  50. package/dist/migrations/db/migrations/1711543888062-write-checkpoint-index.js.map +1 -1
  51. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.d.ts +3 -0
  52. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.js +31 -0
  53. package/dist/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.js.map +1 -0
  54. package/dist/migrations/executor.js.map +1 -1
  55. package/dist/migrations/migrations.d.ts +8 -0
  56. package/dist/migrations/migrations.js +19 -7
  57. package/dist/migrations/migrations.js.map +1 -1
  58. package/dist/migrations/store/migration-store.js.map +1 -1
  59. package/dist/modules/AbstractModule.d.ts +26 -0
  60. package/dist/modules/AbstractModule.js +11 -0
  61. package/dist/modules/AbstractModule.js.map +1 -0
  62. package/dist/modules/ModuleManager.d.ts +11 -0
  63. package/dist/modules/ModuleManager.js +32 -0
  64. package/dist/modules/ModuleManager.js.map +1 -0
  65. package/dist/modules/modules-index.d.ts +2 -0
  66. package/dist/modules/modules-index.js +3 -0
  67. package/dist/modules/modules-index.js.map +1 -0
  68. package/dist/replication/AbstractReplicationJob.d.ts +37 -0
  69. package/dist/replication/AbstractReplicationJob.js +51 -0
  70. package/dist/replication/AbstractReplicationJob.js.map +1 -0
  71. package/dist/replication/AbstractReplicator.d.ts +53 -0
  72. package/dist/replication/AbstractReplicator.js +250 -0
  73. package/dist/replication/AbstractReplicator.js.map +1 -0
  74. package/dist/replication/ErrorRateLimiter.d.ts +0 -10
  75. package/dist/replication/ErrorRateLimiter.js +1 -42
  76. package/dist/replication/ErrorRateLimiter.js.map +1 -1
  77. package/dist/replication/ReplicationEngine.d.ts +18 -0
  78. package/dist/replication/ReplicationEngine.js +41 -0
  79. package/dist/replication/ReplicationEngine.js.map +1 -0
  80. package/dist/replication/ReplicationModule.d.ts +51 -0
  81. package/dist/replication/ReplicationModule.js +68 -0
  82. package/dist/replication/ReplicationModule.js.map +1 -0
  83. package/dist/replication/replication-index.d.ts +4 -6
  84. package/dist/replication/replication-index.js +4 -6
  85. package/dist/replication/replication-index.js.map +1 -1
  86. package/dist/routes/RouterEngine.d.ts +42 -0
  87. package/dist/routes/RouterEngine.js +80 -0
  88. package/dist/routes/RouterEngine.js.map +1 -0
  89. package/dist/routes/auth.d.ts +2 -2
  90. package/dist/routes/auth.js +11 -11
  91. package/dist/routes/auth.js.map +1 -1
  92. package/dist/routes/configure-fastify.d.ts +37 -23
  93. package/dist/routes/configure-fastify.js +18 -18
  94. package/dist/routes/configure-fastify.js.map +1 -1
  95. package/dist/routes/configure-rsocket.d.ts +3 -4
  96. package/dist/routes/configure-rsocket.js +7 -4
  97. package/dist/routes/configure-rsocket.js.map +1 -1
  98. package/dist/routes/endpoints/admin.d.ts +30 -0
  99. package/dist/routes/endpoints/admin.js +46 -67
  100. package/dist/routes/endpoints/admin.js.map +1 -1
  101. package/dist/routes/endpoints/checkpointing.js +103 -15
  102. package/dist/routes/endpoints/checkpointing.js.map +1 -1
  103. package/dist/routes/endpoints/socket-route.js +8 -6
  104. package/dist/routes/endpoints/socket-route.js.map +1 -1
  105. package/dist/routes/endpoints/sync-rules.d.ts +1 -1
  106. package/dist/routes/endpoints/sync-rules.js +32 -23
  107. package/dist/routes/endpoints/sync-rules.js.map +1 -1
  108. package/dist/routes/endpoints/sync-stream.d.ts +0 -1
  109. package/dist/routes/endpoints/sync-stream.js +8 -8
  110. package/dist/routes/endpoints/sync-stream.js.map +1 -1
  111. package/dist/routes/hooks.js.map +1 -1
  112. package/dist/routes/route-register.js.map +1 -1
  113. package/dist/routes/router.d.ts +9 -2
  114. package/dist/routes/router.js.map +1 -1
  115. package/dist/routes/routes-index.d.ts +1 -0
  116. package/dist/routes/routes-index.js +1 -0
  117. package/dist/routes/routes-index.js.map +1 -1
  118. package/dist/runner/teardown.js +109 -76
  119. package/dist/runner/teardown.js.map +1 -1
  120. package/dist/storage/BucketStorage.d.ts +86 -36
  121. package/dist/storage/BucketStorage.js +6 -10
  122. package/dist/storage/BucketStorage.js.map +1 -1
  123. package/dist/storage/ChecksumCache.js.map +1 -1
  124. package/dist/storage/MongoBucketStorage.d.ts +7 -11
  125. package/dist/storage/MongoBucketStorage.js +48 -41
  126. package/dist/storage/MongoBucketStorage.js.map +1 -1
  127. package/dist/storage/ReplicationEventPayload.d.ts +14 -0
  128. package/dist/storage/ReplicationEventPayload.js +2 -0
  129. package/dist/storage/ReplicationEventPayload.js.map +1 -0
  130. package/dist/storage/SourceEntity.d.ts +20 -0
  131. package/dist/storage/SourceEntity.js +2 -0
  132. package/dist/storage/SourceEntity.js.map +1 -0
  133. package/dist/storage/SourceTable.d.ts +12 -5
  134. package/dist/storage/SourceTable.js +12 -5
  135. package/dist/storage/SourceTable.js.map +1 -1
  136. package/dist/storage/StorageEngine.d.ts +28 -0
  137. package/dist/storage/StorageEngine.js +45 -0
  138. package/dist/storage/StorageEngine.js.map +1 -0
  139. package/dist/storage/StorageProvider.d.ts +21 -0
  140. package/dist/storage/StorageProvider.js +2 -0
  141. package/dist/storage/StorageProvider.js.map +1 -0
  142. package/dist/storage/WriteCheckpointAPI.d.ts +74 -0
  143. package/dist/storage/WriteCheckpointAPI.js +16 -0
  144. package/dist/storage/WriteCheckpointAPI.js.map +1 -0
  145. package/dist/storage/mongo/MongoBucketBatch.d.ts +24 -5
  146. package/dist/storage/mongo/MongoBucketBatch.js +119 -62
  147. package/dist/storage/mongo/MongoBucketBatch.js.map +1 -1
  148. package/dist/storage/mongo/MongoCompactor.js +20 -3
  149. package/dist/storage/mongo/MongoCompactor.js.map +1 -1
  150. package/dist/storage/mongo/MongoIdSequence.js.map +1 -1
  151. package/dist/storage/mongo/MongoPersistedSyncRulesContent.d.ts +2 -2
  152. package/dist/storage/mongo/MongoPersistedSyncRulesContent.js +2 -2
  153. package/dist/storage/mongo/MongoPersistedSyncRulesContent.js.map +1 -1
  154. package/dist/storage/mongo/MongoStorageProvider.d.ts +5 -0
  155. package/dist/storage/mongo/MongoStorageProvider.js +26 -0
  156. package/dist/storage/mongo/MongoStorageProvider.js.map +1 -0
  157. package/dist/storage/mongo/MongoSyncBucketStorage.d.ts +18 -10
  158. package/dist/storage/mongo/MongoSyncBucketStorage.js +140 -25
  159. package/dist/storage/mongo/MongoSyncBucketStorage.js.map +1 -1
  160. package/dist/storage/mongo/MongoSyncRulesLock.js +1 -1
  161. package/dist/storage/mongo/MongoSyncRulesLock.js.map +1 -1
  162. package/dist/storage/mongo/MongoWriteCheckpointAPI.d.ts +20 -0
  163. package/dist/storage/mongo/MongoWriteCheckpointAPI.js +103 -0
  164. package/dist/storage/mongo/MongoWriteCheckpointAPI.js.map +1 -0
  165. package/dist/storage/mongo/OperationBatch.d.ts +13 -4
  166. package/dist/storage/mongo/OperationBatch.js +25 -7
  167. package/dist/storage/mongo/OperationBatch.js.map +1 -1
  168. package/dist/storage/mongo/PersistedBatch.d.ts +3 -3
  169. package/dist/storage/mongo/PersistedBatch.js +2 -2
  170. package/dist/storage/mongo/PersistedBatch.js.map +1 -1
  171. package/dist/storage/mongo/config.d.ts +19 -0
  172. package/dist/storage/mongo/config.js +26 -0
  173. package/dist/storage/mongo/config.js.map +1 -0
  174. package/dist/storage/mongo/db.d.ts +3 -2
  175. package/dist/storage/mongo/db.js +1 -0
  176. package/dist/storage/mongo/db.js.map +1 -1
  177. package/dist/storage/mongo/models.d.ts +20 -5
  178. package/dist/storage/mongo/models.js.map +1 -1
  179. package/dist/storage/mongo/util.d.ts +12 -1
  180. package/dist/storage/mongo/util.js +50 -2
  181. package/dist/storage/mongo/util.js.map +1 -1
  182. package/dist/storage/storage-index.d.ts +8 -2
  183. package/dist/storage/storage-index.js +8 -2
  184. package/dist/storage/storage-index.js.map +1 -1
  185. package/dist/sync/BroadcastIterable.d.ts +0 -1
  186. package/dist/sync/BroadcastIterable.js.map +1 -1
  187. package/dist/sync/LastValueSink.d.ts +0 -1
  188. package/dist/sync/LastValueSink.js.map +1 -1
  189. package/dist/sync/merge.d.ts +0 -1
  190. package/dist/sync/merge.js.map +1 -1
  191. package/dist/sync/safeRace.js.map +1 -1
  192. package/dist/sync/sync.d.ts +1 -1
  193. package/dist/sync/sync.js +5 -5
  194. package/dist/sync/sync.js.map +1 -1
  195. package/dist/sync/util.d.ts +0 -2
  196. package/dist/sync/util.js.map +1 -1
  197. package/dist/system/ServiceContext.d.ts +37 -0
  198. package/dist/system/ServiceContext.js +48 -0
  199. package/dist/system/ServiceContext.js.map +1 -0
  200. package/dist/system/system-index.d.ts +1 -1
  201. package/dist/system/system-index.js +1 -1
  202. package/dist/system/system-index.js.map +1 -1
  203. package/dist/util/Mutex.js.map +1 -1
  204. package/dist/util/config/collectors/config-collector.js.map +1 -1
  205. package/dist/util/config/collectors/impl/base64-config-collector.js.map +1 -1
  206. package/dist/util/config/collectors/impl/filesystem-config-collector.js.map +1 -1
  207. package/dist/util/config/compound-config-collector.d.ts +9 -2
  208. package/dist/util/config/compound-config-collector.js +16 -24
  209. package/dist/util/config/compound-config-collector.js.map +1 -1
  210. package/dist/util/config/sync-rules/impl/base64-sync-rules-collector.js.map +1 -1
  211. package/dist/util/config/sync-rules/impl/filesystem-sync-rules-collector.js.map +1 -1
  212. package/dist/util/config/sync-rules/impl/inline-sync-rules-collector.js.map +1 -1
  213. package/dist/util/config/sync-rules/sync-rules-provider.d.ts +9 -0
  214. package/dist/util/config/sync-rules/sync-rules-provider.js +15 -0
  215. package/dist/util/config/sync-rules/sync-rules-provider.js.map +1 -0
  216. package/dist/util/config/types.d.ts +7 -4
  217. package/dist/util/config/types.js.map +1 -1
  218. package/dist/util/config.d.ts +3 -4
  219. package/dist/util/config.js +5 -20
  220. package/dist/util/config.js.map +1 -1
  221. package/dist/util/memory-tracking.js.map +1 -1
  222. package/dist/util/secs.js.map +1 -1
  223. package/dist/util/util-index.d.ts +3 -6
  224. package/dist/util/util-index.js +3 -6
  225. package/dist/util/util-index.js.map +1 -1
  226. package/dist/util/utils.d.ts +10 -7
  227. package/dist/util/utils.js +36 -25
  228. package/dist/util/utils.js.map +1 -1
  229. package/package.json +8 -12
  230. package/src/api/RouteAPI.ts +78 -0
  231. package/src/api/api-index.ts +1 -0
  232. package/src/api/diagnostics.ts +18 -70
  233. package/src/api/schema.ts +18 -90
  234. package/src/auth/KeyStore.ts +9 -6
  235. package/src/auth/RemoteJWKSCollector.ts +4 -1
  236. package/src/auth/auth-index.ts +0 -1
  237. package/src/db/mongo.ts +5 -3
  238. package/src/entry/cli-entry.ts +3 -2
  239. package/src/entry/commands/compact-action.ts +24 -12
  240. package/src/entry/commands/migrate-action.ts +5 -8
  241. package/src/entry/commands/teardown-action.ts +2 -2
  242. package/src/index.ts +5 -2
  243. package/src/metrics/Metrics.ts +6 -16
  244. package/src/migrations/db/migrations/1684951997326-init.ts +9 -4
  245. package/src/migrations/db/migrations/1702295701188-sync-rule-state.ts +7 -4
  246. package/src/migrations/db/migrations/1711543888062-write-checkpoint-index.ts +6 -4
  247. package/src/migrations/db/migrations/1727099539247-custom-write-checkpoint-index.ts +37 -0
  248. package/src/migrations/migrations.ts +24 -8
  249. package/src/modules/AbstractModule.ts +37 -0
  250. package/src/modules/ModuleManager.ts +34 -0
  251. package/src/modules/modules-index.ts +2 -0
  252. package/src/replication/AbstractReplicationJob.ts +79 -0
  253. package/src/replication/AbstractReplicator.ts +228 -0
  254. package/src/replication/ErrorRateLimiter.ts +0 -44
  255. package/src/replication/ReplicationEngine.ts +43 -0
  256. package/src/replication/ReplicationModule.ts +122 -0
  257. package/src/replication/replication-index.ts +4 -6
  258. package/src/routes/RouterEngine.ts +120 -0
  259. package/src/routes/auth.ts +21 -12
  260. package/src/routes/configure-fastify.ts +26 -27
  261. package/src/routes/configure-rsocket.ts +13 -8
  262. package/src/routes/endpoints/admin.ts +72 -76
  263. package/src/routes/endpoints/checkpointing.ts +51 -11
  264. package/src/routes/endpoints/socket-route.ts +10 -6
  265. package/src/routes/endpoints/sync-rules.ts +41 -25
  266. package/src/routes/endpoints/sync-stream.ts +8 -8
  267. package/src/routes/router.ts +8 -3
  268. package/src/routes/routes-index.ts +1 -0
  269. package/src/runner/teardown.ts +50 -88
  270. package/src/storage/BucketStorage.ts +103 -41
  271. package/src/storage/MongoBucketStorage.ts +65 -53
  272. package/src/storage/ReplicationEventPayload.ts +16 -0
  273. package/src/storage/SourceEntity.ts +22 -0
  274. package/src/storage/SourceTable.ts +14 -7
  275. package/src/storage/StorageEngine.ts +62 -0
  276. package/src/storage/StorageProvider.ts +27 -0
  277. package/src/storage/WriteCheckpointAPI.ts +85 -0
  278. package/src/storage/mongo/MongoBucketBatch.ts +164 -84
  279. package/src/storage/mongo/MongoCompactor.ts +25 -4
  280. package/src/storage/mongo/MongoPersistedSyncRulesContent.ts +7 -4
  281. package/src/storage/mongo/MongoStorageProvider.ts +31 -0
  282. package/src/storage/mongo/MongoSyncBucketStorage.ts +118 -41
  283. package/src/storage/mongo/MongoSyncRulesLock.ts +7 -3
  284. package/src/storage/mongo/MongoWriteCheckpointAPI.ts +151 -0
  285. package/src/storage/mongo/OperationBatch.ts +28 -12
  286. package/src/storage/mongo/PersistedBatch.ts +10 -6
  287. package/src/storage/mongo/config.ts +40 -0
  288. package/src/storage/mongo/db.ts +4 -1
  289. package/src/storage/mongo/models.ts +21 -5
  290. package/src/storage/mongo/util.ts +48 -3
  291. package/src/storage/storage-index.ts +8 -2
  292. package/src/sync/sync.ts +7 -4
  293. package/src/sync/util.ts +0 -1
  294. package/src/system/ServiceContext.ts +68 -0
  295. package/src/system/system-index.ts +1 -1
  296. package/src/util/config/compound-config-collector.ts +31 -31
  297. package/src/util/config/sync-rules/sync-rules-provider.ts +18 -0
  298. package/src/util/config/types.ts +7 -5
  299. package/src/util/config.ts +6 -23
  300. package/src/util/util-index.ts +3 -6
  301. package/src/util/utils.ts +48 -41
  302. package/test/src/__snapshots__/sync.test.ts.snap +14 -14
  303. package/test/src/auth.test.ts +7 -7
  304. package/test/src/broadcast_iterable.test.ts +1 -1
  305. package/test/src/compacting.test.ts +50 -40
  306. package/test/src/data_storage.test.ts +382 -202
  307. package/test/src/env.ts +1 -3
  308. package/test/src/merge_iterable.test.ts +1 -6
  309. package/test/src/routes/probes.integration.test.ts +34 -30
  310. package/test/src/setup.ts +1 -1
  311. package/test/src/stream_utils.ts +42 -0
  312. package/test/src/sync.test.ts +115 -39
  313. package/test/src/util.ts +48 -51
  314. package/test/tsconfig.json +1 -1
  315. package/tsconfig.tsbuildinfo +1 -1
  316. package/vitest.config.ts +7 -1
  317. package/dist/auth/SupabaseKeyCollector.d.ts +0 -22
  318. package/dist/auth/SupabaseKeyCollector.js +0 -61
  319. package/dist/auth/SupabaseKeyCollector.js.map +0 -1
  320. package/dist/replication/PgRelation.d.ts +0 -16
  321. package/dist/replication/PgRelation.js +0 -26
  322. package/dist/replication/PgRelation.js.map +0 -1
  323. package/dist/replication/WalConnection.d.ts +0 -34
  324. package/dist/replication/WalConnection.js +0 -190
  325. package/dist/replication/WalConnection.js.map +0 -1
  326. package/dist/replication/WalStream.d.ts +0 -57
  327. package/dist/replication/WalStream.js +0 -519
  328. package/dist/replication/WalStream.js.map +0 -1
  329. package/dist/replication/WalStreamManager.d.ts +0 -30
  330. package/dist/replication/WalStreamManager.js +0 -198
  331. package/dist/replication/WalStreamManager.js.map +0 -1
  332. package/dist/replication/WalStreamRunner.d.ts +0 -38
  333. package/dist/replication/WalStreamRunner.js +0 -155
  334. package/dist/replication/WalStreamRunner.js.map +0 -1
  335. package/dist/replication/util.d.ts +0 -9
  336. package/dist/replication/util.js +0 -62
  337. package/dist/replication/util.js.map +0 -1
  338. package/dist/system/CorePowerSyncSystem.d.ts +0 -23
  339. package/dist/system/CorePowerSyncSystem.js +0 -52
  340. package/dist/system/CorePowerSyncSystem.js.map +0 -1
  341. package/dist/util/PgManager.d.ts +0 -24
  342. package/dist/util/PgManager.js +0 -55
  343. package/dist/util/PgManager.js.map +0 -1
  344. package/dist/util/migration_lib.d.ts +0 -11
  345. package/dist/util/migration_lib.js +0 -64
  346. package/dist/util/migration_lib.js.map +0 -1
  347. package/dist/util/pgwire_utils.d.ts +0 -24
  348. package/dist/util/pgwire_utils.js +0 -117
  349. package/dist/util/pgwire_utils.js.map +0 -1
  350. package/dist/util/populate_test_data.d.ts +0 -8
  351. package/dist/util/populate_test_data.js +0 -65
  352. package/dist/util/populate_test_data.js.map +0 -1
  353. package/src/auth/SupabaseKeyCollector.ts +0 -67
  354. package/src/replication/PgRelation.ts +0 -42
  355. package/src/replication/WalConnection.ts +0 -227
  356. package/src/replication/WalStream.ts +0 -631
  357. package/src/replication/WalStreamManager.ts +0 -213
  358. package/src/replication/WalStreamRunner.ts +0 -180
  359. package/src/replication/util.ts +0 -76
  360. package/src/system/CorePowerSyncSystem.ts +0 -64
  361. package/src/util/PgManager.ts +0 -64
  362. package/src/util/migration_lib.ts +0 -79
  363. package/src/util/pgwire_utils.ts +0 -139
  364. package/src/util/populate_test_data.ts +0 -78
  365. package/test/src/__snapshots__/pg_test.test.ts.snap +0 -256
  366. package/test/src/large_batch.test.ts +0 -194
  367. package/test/src/pg_test.test.ts +0 -450
  368. package/test/src/schema_changes.test.ts +0 -545
  369. package/test/src/slow_tests.test.ts +0 -338
  370. package/test/src/validation.test.ts +0 -63
  371. package/test/src/wal_stream.test.ts +0 -319
  372. package/test/src/wal_stream_utils.ts +0 -156
package/CHANGELOG.md CHANGED
@@ -1,5 +1,36 @@
1
1
  # @powersync/service-core
2
2
 
3
+ ## 0.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 57bd18b: Added ability to emit data replication events
8
+ - 57bd18b: Introduced alpha support for MySQL as a datasource for replication.
9
+ Bunch of cleanup
10
+ - 57bd18b: Moved Write Checkpoint APIs to SyncBucketStorage
11
+ - 57bd18b: - Introduced modules to the powersync service architecture
12
+ - Core functionality has been moved to "engine" classes. Modules can register additional functionality with these engines.
13
+ - The sync API functionality used by the routes has been abstracted to an interface. API routes are now managed by the RouterEngine.
14
+ - Replication is managed by the ReplicationEngine and new replication data sources can be registered to the engine by modules.
15
+ - Refactored existing Postgres replication as a module.
16
+ - Removed Postgres specific code from the core service packages.
17
+
18
+ ### Patch Changes
19
+
20
+ - 57bd18b: Improved sync rules storage cached parsed sync rules, accommodating different parsing options where necessary.
21
+ - 57bd18b: Moved tag variable initialization in diagnostics route to ensure it is initialized before usage
22
+ - Updated dependencies [57bd18b]
23
+ - Updated dependencies [57bd18b]
24
+ - Updated dependencies [57bd18b]
25
+ - Updated dependencies [57bd18b]
26
+ - Updated dependencies [57bd18b]
27
+ - Updated dependencies [57bd18b]
28
+ - Updated dependencies [57bd18b]
29
+ - @powersync/lib-services-framework@0.2.0
30
+ - @powersync/service-sync-rules@0.21.0
31
+ - @powersync/service-rsocket-router@0.0.14
32
+ - @powersync/service-types@0.3.0
33
+
3
34
  ## 0.8.8
4
35
 
5
36
  ### Patch Changes
@@ -0,0 +1,67 @@
1
+ import { SqlSyncRules, TablePattern } from '@powersync/service-sync-rules';
2
+ import * as types from '@powersync/service-types';
3
+ import { ParseSyncRulesOptions, SyncRulesBucketStorage } from '../storage/BucketStorage.js';
4
+ export interface PatternResult {
5
+ schema: string;
6
+ pattern: string;
7
+ wildcard: boolean;
8
+ tables?: types.TableInfo[];
9
+ table?: types.TableInfo;
10
+ }
11
+ export interface ReplicationLagOptions {
12
+ bucketStorage: SyncRulesBucketStorage;
13
+ }
14
+ /**
15
+ * Describes all the methods currently required to service the sync API endpoints.
16
+ */
17
+ export interface RouteAPI {
18
+ /**
19
+ * @returns basic identification of the connection
20
+ */
21
+ getSourceConfig(): Promise<types.configFile.ResolvedDataSourceConfig>;
22
+ /**
23
+ * Checks the current connection status of the data source.
24
+ * This is usually some test query to verify the source can be reached.
25
+ */
26
+ getConnectionStatus(): Promise<types.ConnectionStatusV2>;
27
+ /**
28
+ * Generates replication table information from a given pattern of tables.
29
+ *
30
+ * @param tablePatterns A set of table patterns which typically come from
31
+ * the tables listed in sync rules definitions.
32
+ *
33
+ * @param sqlSyncRules
34
+ * @returns A result of all the tables and columns which should be replicated
35
+ * based off the input patterns. Certain tests are executed on the
36
+ * tables to ensure syncing should function according to the input
37
+ * pattern. Debug errors and warnings are reported per table.
38
+ */
39
+ getDebugTablesInfo(tablePatterns: TablePattern[], sqlSyncRules: SqlSyncRules): Promise<PatternResult[]>;
40
+ /**
41
+ * @returns The replication lag: that is the amount of data which has not been
42
+ * replicated yet, in bytes.
43
+ */
44
+ getReplicationLag(options: ReplicationLagOptions): Promise<number | undefined>;
45
+ /**
46
+ * Get the current LSN or equivalent replication HEAD position identifier
47
+ */
48
+ getReplicationHead(): Promise<string>;
49
+ /**
50
+ * @returns The schema for tables inside the connected database. This is typically
51
+ * used to validate sync rules.
52
+ */
53
+ getConnectionSchema(): Promise<types.DatabaseSchema[]>;
54
+ /**
55
+ * Executes a query and return the result from the data source. This is currently used in the
56
+ * admin API which is exposed in Collide.
57
+ */
58
+ executeQuery(query: string, params: any[]): Promise<types.internal_routes.ExecuteSqlResponse>;
59
+ /**
60
+ * Close any resources that need graceful termination.
61
+ */
62
+ shutdown(): Promise<void>;
63
+ /**
64
+ * Get the default schema (or database) when only a table name is specified in sync rules.
65
+ */
66
+ getParseSyncRulesOptions(): ParseSyncRulesOptions;
67
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=RouteAPI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteAPI.js","sourceRoot":"","sources":["../../src/api/RouteAPI.ts"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
1
  export * from './diagnostics.js';
2
+ export * from './RouteAPI.js';
2
3
  export * from './schema.js';
@@ -1,3 +1,4 @@
1
1
  export * from './diagnostics.js';
2
+ export * from './RouteAPI.js';
2
3
  export * from './schema.js';
3
4
  //# sourceMappingURL=api-index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-index.js","sourceRoot":"","sources":["../../src/api/api-index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"api-index.js","sourceRoot":"","sources":["../../src/api/api-index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -1,7 +1,6 @@
1
- import { ConnectionStatus, SyncRulesStatus } from '@powersync/service-types';
1
+ import { SyncRulesStatus } from '@powersync/service-types';
2
2
  import * as storage from '../storage/storage-index.js';
3
- import { CorePowerSyncSystem } from '../system/CorePowerSyncSystem.js';
4
- export declare function getConnectionStatus(system: CorePowerSyncSystem): Promise<ConnectionStatus | null>;
3
+ import { RouteAPI } from './RouteAPI.js';
5
4
  export interface DiagnosticsOptions {
6
5
  /**
7
6
  * Include sync rules content in response.
@@ -18,4 +17,5 @@ export interface DiagnosticsOptions {
18
17
  */
19
18
  check_connection: boolean;
20
19
  }
21
- export declare function getSyncRulesStatus(sync_rules: storage.PersistedSyncRulesContent | null, system: CorePowerSyncSystem, options: DiagnosticsOptions): Promise<SyncRulesStatus | undefined>;
20
+ export declare const DEFAULT_DATASOURCE_ID = "default";
21
+ export declare function getSyncRulesStatus(bucketStorage: storage.BucketStorageFactory, apiHandler: RouteAPI, sync_rules: storage.PersistedSyncRulesContent | null, options: DiagnosticsOptions): Promise<SyncRulesStatus | undefined>;
@@ -1,171 +1,183 @@
1
- import { DEFAULT_TAG } from '@powersync/service-sync-rules';
2
- import { pgwireRows } from '@powersync/service-jpgwire';
3
- import { baseUri } from '@powersync/service-types';
4
- import * as replication from '../replication/replication-index.js';
5
- import * as util from '../util/util-index.js';
6
- import { logger } from '@powersync/lib-services-framework';
7
- export async function getConnectionStatus(system) {
8
- if (system.pgwire_pool == null) {
9
- return null;
10
- }
11
- const pool = system.requirePgPool();
12
- const base = {
13
- id: system.config.connection.id,
14
- postgres_uri: baseUri(system.config.connection)
15
- };
16
- try {
17
- await util.retriedQuery(pool, `SELECT 'PowerSync connection test'`);
18
- }
19
- catch (e) {
20
- return {
21
- ...base,
22
- connected: false,
23
- errors: [{ level: 'fatal', message: e.message }]
24
- };
25
- }
26
- try {
27
- await replication.checkSourceConfiguration(pool);
1
+ var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
2
+ if (value !== null && value !== void 0) {
3
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
4
+ var dispose, inner;
5
+ if (async) {
6
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
7
+ dispose = value[Symbol.asyncDispose];
8
+ }
9
+ if (dispose === void 0) {
10
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
11
+ dispose = value[Symbol.dispose];
12
+ if (async) inner = dispose;
13
+ }
14
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
15
+ if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
16
+ env.stack.push({ value: value, dispose: dispose, async: async });
28
17
  }
29
- catch (e) {
30
- return {
31
- ...base,
32
- connected: true,
33
- errors: [{ level: 'fatal', message: e.message }]
34
- };
18
+ else if (async) {
19
+ env.stack.push({ async: true });
35
20
  }
36
- return {
37
- ...base,
38
- connected: true,
39
- errors: []
21
+ return value;
22
+ };
23
+ var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
24
+ return function (env) {
25
+ function fail(e) {
26
+ env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
27
+ env.hasError = true;
28
+ }
29
+ var r, s = 0;
30
+ function next() {
31
+ while (r = env.stack.pop()) {
32
+ try {
33
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
34
+ if (r.dispose) {
35
+ var result = r.dispose.call(r.value);
36
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
37
+ }
38
+ else s |= 1;
39
+ }
40
+ catch (e) {
41
+ fail(e);
42
+ }
43
+ }
44
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
45
+ if (env.hasError) throw env.error;
46
+ }
47
+ return next();
40
48
  };
41
- }
42
- export async function getSyncRulesStatus(sync_rules, system, options) {
43
- if (sync_rules == null) {
44
- return undefined;
45
- }
46
- const include_content = options.include_content ?? false;
47
- const live_status = options.live_status ?? false;
48
- const check_connection = options.check_connection ?? false;
49
- let rules;
50
- let persisted;
49
+ })(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
50
+ var e = new Error(message);
51
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
+ });
53
+ import { logger } from '@powersync/lib-services-framework';
54
+ import { DEFAULT_TAG } from '@powersync/service-sync-rules';
55
+ export const DEFAULT_DATASOURCE_ID = 'default';
56
+ export async function getSyncRulesStatus(bucketStorage, apiHandler, sync_rules, options) {
57
+ const env_1 = { stack: [], error: void 0, hasError: false };
51
58
  try {
52
- persisted = sync_rules.parsed();
53
- rules = persisted.sync_rules;
54
- }
55
- catch (e) {
56
- return {
57
- content: include_content ? sync_rules.sync_rules_content : undefined,
58
- connections: [],
59
- errors: [{ level: 'fatal', message: e.message }]
60
- };
61
- }
62
- const systemStorage = live_status ? await system.storage.getInstance(persisted) : undefined;
63
- const status = await systemStorage?.getStatus();
64
- let replication_lag_bytes = undefined;
65
- let tables_flat = [];
66
- if (check_connection) {
67
- const pool = system.requirePgPool();
68
- const source_table_patterns = rules.getSourceTables();
69
- const wc = new replication.WalConnection({
70
- db: pool,
71
- sync_rules: rules
72
- });
73
- const resolved_tables = await wc.getDebugTablesInfo(source_table_patterns);
74
- tables_flat = resolved_tables.flatMap((info) => {
75
- if (info.table) {
76
- return [info.table];
77
- }
78
- else if (info.tables) {
79
- return info.tables;
80
- }
81
- else {
82
- return [];
83
- }
84
- });
85
- if (systemStorage) {
86
- try {
87
- const results = await util.retriedQuery(pool, {
88
- statement: `SELECT
89
- slot_name,
90
- confirmed_flush_lsn,
91
- pg_current_wal_lsn(),
92
- (pg_current_wal_lsn() - confirmed_flush_lsn) AS lsn_distance
93
- FROM pg_replication_slots WHERE slot_name = $1 LIMIT 1;`,
94
- params: [{ type: 'varchar', value: systemStorage.slot_name }]
95
- });
96
- const [row] = pgwireRows(results);
97
- if (row) {
98
- replication_lag_bytes = Number(row.lsn_distance);
59
+ if (sync_rules == null) {
60
+ return undefined;
61
+ }
62
+ const include_content = options.include_content ?? false;
63
+ const live_status = options.live_status ?? false;
64
+ const check_connection = options.check_connection ?? false;
65
+ let rules;
66
+ let persisted;
67
+ try {
68
+ persisted = sync_rules.parsed(apiHandler.getParseSyncRulesOptions());
69
+ rules = persisted.sync_rules;
70
+ }
71
+ catch (e) {
72
+ return {
73
+ content: include_content ? sync_rules.sync_rules_content : undefined,
74
+ connections: [],
75
+ errors: [{ level: 'fatal', message: e.message }]
76
+ };
77
+ }
78
+ const sourceConfig = await apiHandler.getSourceConfig();
79
+ // This method can run under some situations if no connection is configured yet.
80
+ // It will return a default tag in such a case. This default tag is not module specific.
81
+ const tag = sourceConfig.tag ?? DEFAULT_TAG;
82
+ const systemStorage = __addDisposableResource(env_1, live_status ? bucketStorage.getInstance(sync_rules) : undefined, false);
83
+ const status = await systemStorage?.getStatus();
84
+ let replication_lag_bytes = undefined;
85
+ let tables_flat = [];
86
+ if (check_connection) {
87
+ const source_table_patterns = rules.getSourceTables();
88
+ const resolved_tables = await apiHandler.getDebugTablesInfo(source_table_patterns, rules);
89
+ tables_flat = resolved_tables.flatMap((info) => {
90
+ if (info.table) {
91
+ return [info.table];
92
+ }
93
+ else if (info.tables) {
94
+ return info.tables;
95
+ }
96
+ else {
97
+ return [];
98
+ }
99
+ });
100
+ if (systemStorage) {
101
+ try {
102
+ replication_lag_bytes = await apiHandler.getReplicationLag({
103
+ bucketStorage: systemStorage
104
+ });
105
+ }
106
+ catch (e) {
107
+ // Ignore
108
+ logger.warn(`Unable to get replication lag`, e);
99
109
  }
100
110
  }
101
- catch (e) {
102
- // Ignore
103
- logger.warn(`Unable to get replication lag`, e);
104
- }
105
111
  }
112
+ else {
113
+ const source_table_patterns = rules.getSourceTables();
114
+ tables_flat = source_table_patterns.map((pattern) => {
115
+ if (pattern.isWildcard) {
116
+ return {
117
+ schema: pattern.schema,
118
+ name: pattern.tablePrefix,
119
+ pattern: pattern.isWildcard ? pattern.tablePattern : undefined,
120
+ data_queries: false,
121
+ parameter_queries: false,
122
+ replication_id: [],
123
+ errors: [{ level: 'fatal', message: 'connection failed' }]
124
+ };
125
+ }
126
+ else {
127
+ const source = {
128
+ connectionTag: tag,
129
+ schema: pattern.schema,
130
+ table: pattern.tablePattern
131
+ };
132
+ const syncData = rules.tableSyncsData(source);
133
+ const syncParameters = rules.tableSyncsParameters(source);
134
+ return {
135
+ schema: pattern.schema,
136
+ name: pattern.name,
137
+ data_queries: syncData,
138
+ parameter_queries: syncParameters,
139
+ replication_id: [],
140
+ errors: [{ level: 'fatal', message: 'connection failed' }]
141
+ };
142
+ }
143
+ });
144
+ }
145
+ const errors = tables_flat.flatMap((info) => info.errors);
146
+ if (sync_rules.last_fatal_error) {
147
+ errors.push({ level: 'fatal', message: sync_rules.last_fatal_error });
148
+ }
149
+ errors.push(...rules.errors.map((e) => {
150
+ return {
151
+ level: e.type,
152
+ message: e.message
153
+ };
154
+ }));
155
+ return {
156
+ content: include_content ? sync_rules.sync_rules_content : undefined,
157
+ connections: [
158
+ {
159
+ id: sourceConfig.id ?? DEFAULT_DATASOURCE_ID,
160
+ tag: tag,
161
+ slot_name: sync_rules.slot_name,
162
+ initial_replication_done: status?.snapshot_done ?? false,
163
+ // TODO: Rename?
164
+ last_lsn: status?.checkpoint_lsn ?? undefined,
165
+ last_checkpoint_ts: sync_rules.last_checkpoint_ts?.toISOString(),
166
+ last_keepalive_ts: sync_rules.last_keepalive_ts?.toISOString(),
167
+ replication_lag_bytes: replication_lag_bytes,
168
+ tables: tables_flat
169
+ }
170
+ ],
171
+ errors: deduplicate(errors)
172
+ };
106
173
  }
107
- else {
108
- const source_table_patterns = rules.getSourceTables();
109
- const tag = system.config.connection.tag ?? DEFAULT_TAG;
110
- tables_flat = source_table_patterns.map((pattern) => {
111
- if (pattern.isWildcard) {
112
- return {
113
- schema: pattern.schema,
114
- name: pattern.tablePrefix,
115
- pattern: pattern.isWildcard ? pattern.tablePattern : undefined,
116
- data_queries: false,
117
- parameter_queries: false,
118
- replication_id: [],
119
- errors: [{ level: 'fatal', message: 'connection failed' }]
120
- };
121
- }
122
- else {
123
- const source = {
124
- connectionTag: tag,
125
- schema: pattern.schema,
126
- table: pattern.tablePattern
127
- };
128
- const syncData = rules.tableSyncsData(source);
129
- const syncParameters = rules.tableSyncsParameters(source);
130
- return {
131
- schema: pattern.schema,
132
- name: pattern.name,
133
- data_queries: syncData,
134
- parameter_queries: syncParameters,
135
- replication_id: [],
136
- errors: [{ level: 'fatal', message: 'connection failed' }]
137
- };
138
- }
139
- });
174
+ catch (e_1) {
175
+ env_1.error = e_1;
176
+ env_1.hasError = true;
140
177
  }
141
- const errors = tables_flat.flatMap((info) => info.errors);
142
- if (sync_rules.last_fatal_error) {
143
- errors.push({ level: 'fatal', message: sync_rules.last_fatal_error });
178
+ finally {
179
+ __disposeResources(env_1);
144
180
  }
145
- errors.push(...rules.errors.map((e) => {
146
- return {
147
- level: e.type,
148
- message: e.message
149
- };
150
- }));
151
- return {
152
- content: include_content ? sync_rules.sync_rules_content : undefined,
153
- connections: [
154
- {
155
- id: system.config.connection.id,
156
- tag: system.config.connection.tag ?? DEFAULT_TAG,
157
- slot_name: sync_rules.slot_name,
158
- initial_replication_done: status?.snapshot_done ?? false,
159
- // TODO: Rename?
160
- last_lsn: status?.checkpoint_lsn ?? undefined,
161
- last_checkpoint_ts: sync_rules.last_checkpoint_ts?.toISOString(),
162
- last_keepalive_ts: sync_rules.last_keepalive_ts?.toISOString(),
163
- replication_lag_bytes: replication_lag_bytes,
164
- tables: tables_flat
165
- }
166
- ],
167
- errors: deduplicate(errors)
168
- };
169
181
  }
170
182
  function deduplicate(errors) {
171
183
  let seen = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/api/diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/api/diagnostics.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAsC,MAAM,+BAA+B,CAAC;AAyBhG,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,aAA2C,EAC3C,UAAoB,EACpB,UAAoD,EACpD,OAA2B;;;QAE3B,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,KAAK,CAAC;QACzD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;QACjD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC;QAE3D,IAAI,KAAmB,CAAC;QACxB,IAAI,SAAqC,CAAC;QAC1C,IAAI,CAAC;YACH,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAAC;YACrE,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;gBACL,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;gBACpE,WAAW,EAAE,EAAE;gBACf,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;aACjD,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC;QACxD,gFAAgF;QAChF,wFAAwF;QACxF,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,IAAI,WAAW,CAAC;QAC5C,MAAM,aAAa,kCAAG,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,QAAA,CAAC;QACtF,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,SAAS,EAAE,CAAC;QAChD,IAAI,qBAAqB,GAAuB,SAAS,CAAC;QAE1D,IAAI,WAAW,GAAgB,EAAE,CAAC;QAElC,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,qBAAqB,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;YACtD,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;YAC1F,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC7C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACvB,OAAO,IAAI,CAAC,MAAM,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC;oBACH,qBAAqB,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC;wBACzD,aAAa,EAAE,aAAa;qBAC7B,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,SAAS;oBACT,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,qBAAqB,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;YAEtD,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAa,EAAE;gBAC7D,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBACvB,OAAO;wBACL,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,IAAI,EAAE,OAAO,CAAC,WAAW;wBACzB,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;wBAE9D,YAAY,EAAE,KAAK;wBACnB,iBAAiB,EAAE,KAAK;wBACxB,cAAc,EAAE,EAAE;wBAClB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;qBAC3D,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GAAyB;wBACnC,aAAa,EAAE,GAAG;wBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,KAAK,EAAE,OAAO,CAAC,YAAY;qBAC5B,CAAC;oBACF,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBAC9C,MAAM,cAAc,GAAG,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;oBAC1D,OAAO;wBACL,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,YAAY,EAAE,QAAQ;wBACtB,iBAAiB,EAAE,cAAc;wBACjC,cAAc,EAAE,EAAE;wBAClB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;qBAC3D,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,CAAC,IAAI,CACT,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACxB,OAAO;gBACL,KAAK,EAAE,CAAC,CAAC,IAAI;gBACb,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;YACpE,WAAW,EAAE;gBACX;oBACE,EAAE,EAAE,YAAY,CAAC,EAAE,IAAI,qBAAqB;oBAC5C,GAAG,EAAE,GAAG;oBACR,SAAS,EAAE,UAAU,CAAC,SAAS;oBAC/B,wBAAwB,EAAE,MAAM,EAAE,aAAa,IAAI,KAAK;oBACxD,gBAAgB;oBAChB,QAAQ,EAAE,MAAM,EAAE,cAAc,IAAI,SAAS;oBAC7C,kBAAkB,EAAE,UAAU,CAAC,kBAAkB,EAAE,WAAW,EAAE;oBAChE,iBAAiB,EAAE,UAAU,CAAC,iBAAiB,EAAE,WAAW,EAAE;oBAC9D,qBAAqB,EAAE,qBAAqB;oBAC5C,MAAM,EAAE,WAAW;iBACpB;aACF;YACD,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;SAC5B,CAAC;;;;;;;;;CACH;AAED,SAAS,WAAW,CAAC,MAAyD;IAC5E,IAAI,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC7B,IAAI,MAAM,GAAsD,EAAE,CAAC;IACnE,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,5 +1,3 @@
1
- import type * as pgwire from '@powersync/service-jpgwire';
2
- import { DatabaseSchema, internal_routes } from '@powersync/service-types';
3
- import { CorePowerSyncSystem } from '../system/CorePowerSyncSystem.js';
4
- export declare function getConnectionsSchema(system: CorePowerSyncSystem): Promise<internal_routes.GetSchemaResponse>;
5
- export declare function getConnectionSchema(db: pgwire.PgClient): Promise<DatabaseSchema[]>;
1
+ import { internal_routes } from '@powersync/service-types';
2
+ import * as api from '../api/api-index.js';
3
+ export declare function getConnectionsSchema(api: api.RouteAPI): Promise<internal_routes.GetSchemaResponse>;
@@ -1,88 +1,22 @@
1
- import { pgwireRows } from '@powersync/service-jpgwire';
2
- import * as util from '../util/util-index.js';
3
- export async function getConnectionsSchema(system) {
4
- if (system.config.connection == null) {
5
- return { connections: [] };
1
+ export async function getConnectionsSchema(api) {
2
+ if (!api) {
3
+ return {
4
+ connections: [],
5
+ defaultConnectionTag: 'default',
6
+ defaultSchema: ''
7
+ };
6
8
  }
7
- const schemas = await getConnectionSchema(system.requirePgPool());
9
+ const baseConfig = await api.getSourceConfig();
8
10
  return {
9
11
  connections: [
10
12
  {
11
- schemas,
12
- tag: system.config.connection.tag,
13
- id: system.config.connection.id
13
+ id: baseConfig.id,
14
+ tag: baseConfig.tag,
15
+ schemas: await api.getConnectionSchema()
14
16
  }
15
- ]
17
+ ],
18
+ defaultConnectionTag: baseConfig.tag,
19
+ defaultSchema: api.getParseSyncRulesOptions().defaultSchema
16
20
  };
17
21
  }
18
- export async function getConnectionSchema(db) {
19
- var _a;
20
- // https://github.com/Borvik/vscode-postgres/blob/88ec5ed061a0c9bced6c5d4ec122d0759c3f3247/src/language/server.ts
21
- const results = await util.retriedQuery(db, `SELECT
22
- tbl.schemaname,
23
- tbl.tablename,
24
- tbl.quoted_name,
25
- json_agg(a ORDER BY attnum) as columns
26
- FROM
27
- (
28
- SELECT
29
- n.nspname as schemaname,
30
- c.relname as tablename,
31
- (quote_ident(n.nspname) || '.' || quote_ident(c.relname)) as quoted_name
32
- FROM
33
- pg_catalog.pg_class c
34
- JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
35
- WHERE
36
- c.relkind = 'r'
37
- AND n.nspname not in ('information_schema', 'pg_catalog', 'pg_toast')
38
- AND n.nspname not like 'pg_temp_%'
39
- AND n.nspname not like 'pg_toast_temp_%'
40
- AND c.relnatts > 0
41
- AND has_schema_privilege(n.oid, 'USAGE') = true
42
- AND has_table_privilege(quote_ident(n.nspname) || '.' || quote_ident(c.relname), 'SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER') = true
43
- ) as tbl
44
- LEFT JOIN (
45
- SELECT
46
- attrelid,
47
- attname,
48
- format_type(atttypid, atttypmod) as data_type,
49
- (SELECT typname FROM pg_catalog.pg_type WHERE oid = atttypid) as pg_type,
50
- attnum,
51
- attisdropped
52
- FROM
53
- pg_attribute
54
- ) as a ON (
55
- a.attrelid = tbl.quoted_name::regclass
56
- AND a.attnum > 0
57
- AND NOT a.attisdropped
58
- AND has_column_privilege(tbl.quoted_name, a.attname, 'SELECT, INSERT, UPDATE, REFERENCES')
59
- )
60
- GROUP BY schemaname, tablename, quoted_name`);
61
- const rows = pgwireRows(results);
62
- let schemas = {};
63
- for (let row of rows) {
64
- const schema = (schemas[_a = row.schemaname] ?? (schemas[_a] = {
65
- name: row.schemaname,
66
- tables: []
67
- }));
68
- const table = {
69
- name: row.tablename,
70
- columns: []
71
- };
72
- schema.tables.push(table);
73
- const columnInfo = JSON.parse(row.columns);
74
- for (let column of columnInfo) {
75
- let pg_type = column.pg_type;
76
- if (pg_type.startsWith('_')) {
77
- pg_type = `${pg_type.substring(1)}[]`;
78
- }
79
- table.columns.push({
80
- name: column.attname,
81
- type: column.data_type,
82
- pg_type: pg_type
83
- });
84
- }
85
- }
86
- return Object.values(schemas);
87
- }
88
22
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/api/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAG9C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAA2B;IACpE,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE;QACpC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;KAC5B;IACD,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IAClE,OAAO;QACL,WAAW,EAAE;YACX;gBACE,OAAO;gBACP,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,UAAW,CAAC,GAAG;gBAClC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,UAAW,CAAC,EAAE;aACjC;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,EAAmB;;IAC3D,iHAAiH;IACjH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CACrC,EAAE,EACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAuCwC,CACzC,CAAC;IACF,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAEjC,IAAI,OAAO,GAAwB,EAAE,CAAC;IAEtC,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;QACpB,MAAM,MAAM,GAAG,CAAC,OAAO,MAAC,GAAG,CAAC,UAAU,MAAtB,OAAO,OAAqB;YAC1C,IAAI,EAAE,GAAG,CAAC,UAAU;YACpB,MAAM,EAAE,EAAE;SACX,EAAC,CAAC;QACH,MAAM,KAAK,GAAG;YACZ,IAAI,EAAE,GAAG,CAAC,SAAS;YACnB,OAAO,EAAE,EAAW;SACrB,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,IAAI,MAAM,IAAI,UAAU,EAAE;YAC7B,IAAI,OAAO,GAAG,MAAM,CAAC,OAAiB,CAAC;YACvC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC3B,OAAO,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;aACvC;YACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,MAAM,CAAC,OAAO;gBACpB,IAAI,EAAE,MAAM,CAAC,SAAS;gBACtB,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;SACJ;KACF;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/api/schema.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAiB;IAC1D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO;YACL,WAAW,EAAE,EAAE;YACf,oBAAoB,EAAE,SAAS;YAC/B,aAAa,EAAE,EAAE;SAClB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC;IAE/C,OAAO;QACL,WAAW,EAAE;YACX;gBACE,EAAE,EAAE,UAAU,CAAC,EAAE;gBACjB,GAAG,EAAE,UAAU,CAAC,GAAG;gBACnB,OAAO,EAAE,MAAM,GAAG,CAAC,mBAAmB,EAAE;aACzC;SACF;QACD,oBAAoB,EAAE,UAAU,CAAC,GAAI;QACrC,aAAa,EAAE,GAAG,CAAC,wBAAwB,EAAE,CAAC,aAAa;KAC5D,CAAC;AACJ,CAAC"}