@syncular/client 0.0.6-95 → 0.1.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 (356) hide show
  1. package/README.md +713 -11
  2. package/dist/auth-leases.d.ts +11 -0
  3. package/dist/auth-leases.d.ts.map +1 -0
  4. package/dist/auth-leases.js +140 -0
  5. package/dist/auth-leases.js.map +1 -0
  6. package/dist/blob-limits.d.ts +15 -0
  7. package/dist/blob-limits.d.ts.map +1 -0
  8. package/dist/blob-limits.js +66 -0
  9. package/dist/blob-limits.js.map +1 -0
  10. package/dist/bridge-client.d.ts +69 -0
  11. package/dist/bridge-client.d.ts.map +1 -0
  12. package/dist/bridge-client.js +282 -0
  13. package/dist/bridge-client.js.map +1 -0
  14. package/dist/client-config.d.ts +6 -0
  15. package/dist/client-config.d.ts.map +1 -0
  16. package/dist/client-config.js +18 -0
  17. package/dist/client-config.js.map +1 -0
  18. package/dist/client.d.ts +65 -397
  19. package/dist/client.d.ts.map +1 -1
  20. package/dist/client.js +150 -960
  21. package/dist/client.js.map +1 -1
  22. package/dist/command-history.d.ts +35 -0
  23. package/dist/command-history.d.ts.map +1 -0
  24. package/dist/command-history.js +378 -0
  25. package/dist/command-history.js.map +1 -0
  26. package/dist/console-diagnostics.d.ts +33 -0
  27. package/dist/console-diagnostics.d.ts.map +1 -0
  28. package/dist/console-diagnostics.js +496 -0
  29. package/dist/console-diagnostics.js.map +1 -0
  30. package/dist/crdt-yjs/index.d.ts +4 -0
  31. package/dist/crdt-yjs/index.d.ts.map +1 -0
  32. package/dist/crdt-yjs/index.js +4 -0
  33. package/dist/crdt-yjs/index.js.map +1 -0
  34. package/dist/crdt-yjs/webview-host-facade.d.ts +126 -0
  35. package/dist/crdt-yjs/webview-host-facade.d.ts.map +1 -0
  36. package/dist/crdt-yjs/webview-host-facade.js +284 -0
  37. package/dist/crdt-yjs/webview-host-facade.js.map +1 -0
  38. package/dist/crdt-yjs/yjs-document-field-adapter.d.ts +153 -0
  39. package/dist/crdt-yjs/yjs-document-field-adapter.d.ts.map +1 -0
  40. package/dist/crdt-yjs/yjs-document-field-adapter.js +406 -0
  41. package/dist/crdt-yjs/yjs-document-field-adapter.js.map +1 -0
  42. package/dist/crdt-yjs/yjs-prosemirror-bridge.d.ts +73 -0
  43. package/dist/crdt-yjs/yjs-prosemirror-bridge.d.ts.map +1 -0
  44. package/dist/crdt-yjs/yjs-prosemirror-bridge.js +169 -0
  45. package/dist/crdt-yjs/yjs-prosemirror-bridge.js.map +1 -0
  46. package/dist/database.d.ts +83 -0
  47. package/dist/database.d.ts.map +1 -0
  48. package/dist/database.js +916 -0
  49. package/dist/database.js.map +1 -0
  50. package/dist/diagnostics.d.ts +10 -0
  51. package/dist/diagnostics.d.ts.map +1 -0
  52. package/dist/diagnostics.js +83 -0
  53. package/dist/diagnostics.js.map +1 -0
  54. package/dist/errors.d.ts +24 -0
  55. package/dist/errors.d.ts.map +1 -0
  56. package/dist/errors.js +211 -0
  57. package/dist/errors.js.map +1 -0
  58. package/dist/generated-bridge.d.ts +365 -0
  59. package/dist/generated-bridge.d.ts.map +1 -0
  60. package/dist/generated-bridge.js +250 -0
  61. package/dist/generated-bridge.js.map +1 -0
  62. package/dist/index.d.ts +13 -23
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +14 -25
  65. package/dist/index.js.map +1 -1
  66. package/dist/mutations.d.ts +4 -72
  67. package/dist/mutations.d.ts.map +1 -1
  68. package/dist/mutations.js +2 -568
  69. package/dist/mutations.js.map +1 -1
  70. package/dist/network.d.ts +3 -0
  71. package/dist/network.d.ts.map +1 -0
  72. package/dist/network.js +17 -0
  73. package/dist/network.js.map +1 -0
  74. package/dist/react/index.d.ts +169 -0
  75. package/dist/react/index.d.ts.map +1 -0
  76. package/dist/react/index.js +628 -0
  77. package/dist/react/index.js.map +1 -0
  78. package/dist/react-native/index.d.ts +35 -0
  79. package/dist/react-native/index.d.ts.map +1 -0
  80. package/dist/react-native/index.js +49 -0
  81. package/dist/react-native/index.js.map +1 -0
  82. package/dist/runtime-contract.d.ts +13 -0
  83. package/dist/runtime-contract.d.ts.map +1 -0
  84. package/dist/runtime-contract.js +24 -0
  85. package/dist/runtime-contract.js.map +1 -0
  86. package/dist/rust-client.d.ts +106 -0
  87. package/dist/rust-client.d.ts.map +1 -0
  88. package/dist/rust-client.js +936 -0
  89. package/dist/rust-client.js.map +1 -0
  90. package/dist/sentry.d.ts +35 -0
  91. package/dist/sentry.d.ts.map +1 -0
  92. package/dist/sentry.js +155 -0
  93. package/dist/sentry.js.map +1 -0
  94. package/dist/sql-safety.d.ts +3 -0
  95. package/dist/sql-safety.d.ts.map +1 -0
  96. package/dist/sql-safety.js +62 -0
  97. package/dist/sql-safety.js.map +1 -0
  98. package/dist/syncular-runtime-artifacts.json +61 -0
  99. package/dist/tauri/index.d.ts +35 -0
  100. package/dist/tauri/index.d.ts.map +1 -0
  101. package/dist/tauri/index.js +114 -0
  102. package/dist/tauri/index.js.map +1 -0
  103. package/dist/types.d.ts +1059 -0
  104. package/dist/types.d.ts.map +1 -0
  105. package/dist/types.js +2 -0
  106. package/dist/types.js.map +1 -0
  107. package/dist/wasm/.syncular-wasm-profile +1 -0
  108. package/dist/wasm/syncular-runtime-artifact.json +21 -0
  109. package/dist/wasm/syncular.d.ts +207 -0
  110. package/dist/wasm/syncular.js +2341 -0
  111. package/dist/wasm/syncular_bg.wasm +0 -0
  112. package/dist/wasm/syncular_bg.wasm.d.ts +97 -0
  113. package/dist/wasm-bindings/runtime-contract.d.ts +22 -0
  114. package/dist/wasm-bindings/runtime-contract.d.ts.map +1 -0
  115. package/dist/wasm-bindings/runtime-contract.js +112 -0
  116. package/dist/wasm-bindings/runtime-contract.js.map +1 -0
  117. package/dist/wasm-core/.syncular-wasm-profile +1 -0
  118. package/dist/wasm-core/syncular-runtime-artifact.json +17 -0
  119. package/dist/wasm-core/syncular.d.ts +162 -0
  120. package/dist/wasm-core/syncular.js +1847 -0
  121. package/dist/wasm-core/syncular_bg.wasm +0 -0
  122. package/dist/wasm-core/syncular_bg.wasm.d.ts +77 -0
  123. package/dist/wasm-perf/.syncular-wasm-profile +1 -0
  124. package/dist/wasm-perf/syncular-runtime-artifact.json +21 -0
  125. package/dist/wasm-perf/syncular.d.ts +207 -0
  126. package/dist/wasm-perf/syncular.js +2341 -0
  127. package/dist/wasm-perf/syncular_bg.wasm +0 -0
  128. package/dist/wasm-perf/syncular_bg.wasm.d.ts +97 -0
  129. package/dist/wasm-runtime.d.ts +18 -0
  130. package/dist/wasm-runtime.d.ts.map +1 -0
  131. package/dist/wasm-runtime.js +28 -0
  132. package/dist/wasm-runtime.js.map +1 -0
  133. package/dist/worker-client.d.ts +123 -0
  134. package/dist/worker-client.d.ts.map +1 -0
  135. package/dist/worker-client.js +1686 -0
  136. package/dist/worker-client.js.map +1 -0
  137. package/dist/worker-entry.d.ts +2 -0
  138. package/dist/worker-entry.d.ts.map +1 -0
  139. package/dist/worker-entry.js +479 -0
  140. package/dist/worker-entry.js.map +1 -0
  141. package/dist/worker-protocol.d.ts +64 -0
  142. package/dist/worker-protocol.d.ts.map +1 -0
  143. package/dist/worker-protocol.js +16 -0
  144. package/dist/worker-protocol.js.map +1 -0
  145. package/dist/worker-realtime.d.ts +39 -0
  146. package/dist/worker-realtime.d.ts.map +1 -0
  147. package/dist/worker-realtime.js +677 -0
  148. package/dist/worker-realtime.js.map +1 -0
  149. package/package.json +124 -17
  150. package/src/auth-leases.ts +251 -0
  151. package/src/blob-limits.ts +98 -0
  152. package/src/bridge-client.ts +512 -0
  153. package/src/client-config.ts +29 -0
  154. package/src/client.ts +256 -1414
  155. package/src/command-history.ts +623 -0
  156. package/src/console-diagnostics.ts +617 -0
  157. package/src/crdt-yjs/index.ts +3 -0
  158. package/src/crdt-yjs/webview-host-facade.ts +477 -0
  159. package/src/crdt-yjs/yjs-document-field-adapter.ts +733 -0
  160. package/src/crdt-yjs/yjs-prosemirror-bridge.ts +272 -0
  161. package/src/database.ts +1342 -0
  162. package/src/diagnostics.ts +116 -0
  163. package/src/errors.ts +269 -0
  164. package/src/generated-bridge.ts +741 -0
  165. package/src/index.ts +21 -25
  166. package/src/mutations.ts +12 -821
  167. package/src/network.ts +32 -0
  168. package/src/react/index.ts +1036 -0
  169. package/src/react-native/index.ts +152 -0
  170. package/src/runtime-contract.ts +48 -0
  171. package/src/rust-client.ts +1488 -0
  172. package/src/sentry.ts +215 -0
  173. package/src/sql-safety.ts +61 -0
  174. package/src/tauri/index.ts +211 -0
  175. package/src/types.ts +1356 -0
  176. package/src/wasm-bindings/generated-wasm-bindings.d.ts +70 -0
  177. package/src/wasm-bindings/runtime-contract.ts +158 -0
  178. package/src/wasm-runtime.ts +76 -0
  179. package/src/worker-client.ts +2215 -0
  180. package/src/worker-entry.ts +584 -0
  181. package/src/worker-protocol.ts +109 -0
  182. package/src/worker-realtime.ts +843 -0
  183. package/dist/blobs/index.d.ts +0 -7
  184. package/dist/blobs/index.d.ts.map +0 -1
  185. package/dist/blobs/index.js +0 -7
  186. package/dist/blobs/index.js.map +0 -1
  187. package/dist/blobs/manager.d.ts +0 -345
  188. package/dist/blobs/manager.d.ts.map +0 -1
  189. package/dist/blobs/manager.js +0 -749
  190. package/dist/blobs/manager.js.map +0 -1
  191. package/dist/blobs/migrate.d.ts +0 -14
  192. package/dist/blobs/migrate.d.ts.map +0 -1
  193. package/dist/blobs/migrate.js +0 -59
  194. package/dist/blobs/migrate.js.map +0 -1
  195. package/dist/blobs/types.d.ts +0 -62
  196. package/dist/blobs/types.d.ts.map +0 -1
  197. package/dist/blobs/types.js +0 -5
  198. package/dist/blobs/types.js.map +0 -1
  199. package/dist/conflicts.d.ts +0 -31
  200. package/dist/conflicts.d.ts.map +0 -1
  201. package/dist/conflicts.js +0 -112
  202. package/dist/conflicts.js.map +0 -1
  203. package/dist/create-client.d.ts +0 -118
  204. package/dist/create-client.d.ts.map +0 -1
  205. package/dist/create-client.js +0 -178
  206. package/dist/create-client.js.map +0 -1
  207. package/dist/engine/SyncEngine.d.ts +0 -272
  208. package/dist/engine/SyncEngine.d.ts.map +0 -1
  209. package/dist/engine/SyncEngine.js +0 -1860
  210. package/dist/engine/SyncEngine.js.map +0 -1
  211. package/dist/engine/index.d.ts +0 -6
  212. package/dist/engine/index.d.ts.map +0 -1
  213. package/dist/engine/index.js +0 -6
  214. package/dist/engine/index.js.map +0 -1
  215. package/dist/engine/types.d.ts +0 -345
  216. package/dist/engine/types.d.ts.map +0 -1
  217. package/dist/engine/types.js +0 -7
  218. package/dist/engine/types.js.map +0 -1
  219. package/dist/handlers/collection.d.ts +0 -6
  220. package/dist/handlers/collection.d.ts.map +0 -1
  221. package/dist/handlers/collection.js +0 -21
  222. package/dist/handlers/collection.js.map +0 -1
  223. package/dist/handlers/create-handler.d.ts +0 -120
  224. package/dist/handlers/create-handler.d.ts.map +0 -1
  225. package/dist/handlers/create-handler.js +0 -145
  226. package/dist/handlers/create-handler.js.map +0 -1
  227. package/dist/handlers/types.d.ts +0 -83
  228. package/dist/handlers/types.d.ts.map +0 -1
  229. package/dist/handlers/types.js +0 -5
  230. package/dist/handlers/types.js.map +0 -1
  231. package/dist/migrate.d.ts +0 -19
  232. package/dist/migrate.d.ts.map +0 -1
  233. package/dist/migrate.js +0 -238
  234. package/dist/migrate.js.map +0 -1
  235. package/dist/outbox.d.ts +0 -112
  236. package/dist/outbox.d.ts.map +0 -1
  237. package/dist/outbox.js +0 -294
  238. package/dist/outbox.js.map +0 -1
  239. package/dist/plugins/incrementing-version.d.ts +0 -34
  240. package/dist/plugins/incrementing-version.d.ts.map +0 -1
  241. package/dist/plugins/incrementing-version.js +0 -83
  242. package/dist/plugins/incrementing-version.js.map +0 -1
  243. package/dist/plugins/index.d.ts +0 -3
  244. package/dist/plugins/index.d.ts.map +0 -1
  245. package/dist/plugins/index.js +0 -3
  246. package/dist/plugins/index.js.map +0 -1
  247. package/dist/plugins/types.d.ts +0 -49
  248. package/dist/plugins/types.d.ts.map +0 -1
  249. package/dist/plugins/types.js +0 -15
  250. package/dist/plugins/types.js.map +0 -1
  251. package/dist/proxy/connection.d.ts +0 -33
  252. package/dist/proxy/connection.d.ts.map +0 -1
  253. package/dist/proxy/connection.js +0 -153
  254. package/dist/proxy/connection.js.map +0 -1
  255. package/dist/proxy/dialect.d.ts +0 -46
  256. package/dist/proxy/dialect.d.ts.map +0 -1
  257. package/dist/proxy/dialect.js +0 -58
  258. package/dist/proxy/dialect.js.map +0 -1
  259. package/dist/proxy/driver.d.ts +0 -42
  260. package/dist/proxy/driver.d.ts.map +0 -1
  261. package/dist/proxy/driver.js +0 -78
  262. package/dist/proxy/driver.js.map +0 -1
  263. package/dist/proxy/index.d.ts +0 -10
  264. package/dist/proxy/index.d.ts.map +0 -1
  265. package/dist/proxy/index.js +0 -10
  266. package/dist/proxy/index.js.map +0 -1
  267. package/dist/proxy/mutations.d.ts +0 -9
  268. package/dist/proxy/mutations.d.ts.map +0 -1
  269. package/dist/proxy/mutations.js +0 -11
  270. package/dist/proxy/mutations.js.map +0 -1
  271. package/dist/pull-engine.d.ts +0 -48
  272. package/dist/pull-engine.d.ts.map +0 -1
  273. package/dist/pull-engine.js +0 -648
  274. package/dist/pull-engine.js.map +0 -1
  275. package/dist/push-engine.d.ts +0 -18
  276. package/dist/push-engine.d.ts.map +0 -1
  277. package/dist/push-engine.js +0 -167
  278. package/dist/push-engine.js.map +0 -1
  279. package/dist/query/FingerprintCollector.d.ts +0 -18
  280. package/dist/query/FingerprintCollector.d.ts.map +0 -1
  281. package/dist/query/FingerprintCollector.js +0 -28
  282. package/dist/query/FingerprintCollector.js.map +0 -1
  283. package/dist/query/QueryContext.d.ts +0 -33
  284. package/dist/query/QueryContext.d.ts.map +0 -1
  285. package/dist/query/QueryContext.js +0 -16
  286. package/dist/query/QueryContext.js.map +0 -1
  287. package/dist/query/fingerprint.d.ts +0 -61
  288. package/dist/query/fingerprint.d.ts.map +0 -1
  289. package/dist/query/fingerprint.js +0 -91
  290. package/dist/query/fingerprint.js.map +0 -1
  291. package/dist/query/index.d.ts +0 -7
  292. package/dist/query/index.d.ts.map +0 -1
  293. package/dist/query/index.js +0 -7
  294. package/dist/query/index.js.map +0 -1
  295. package/dist/query/tracked-select.d.ts +0 -18
  296. package/dist/query/tracked-select.d.ts.map +0 -1
  297. package/dist/query/tracked-select.js +0 -90
  298. package/dist/query/tracked-select.js.map +0 -1
  299. package/dist/schema.d.ts +0 -83
  300. package/dist/schema.d.ts.map +0 -1
  301. package/dist/schema.js +0 -7
  302. package/dist/schema.js.map +0 -1
  303. package/dist/subscription-state.d.ts +0 -46
  304. package/dist/subscription-state.d.ts.map +0 -1
  305. package/dist/subscription-state.js +0 -185
  306. package/dist/subscription-state.js.map +0 -1
  307. package/dist/sync-loop.d.ts +0 -34
  308. package/dist/sync-loop.d.ts.map +0 -1
  309. package/dist/sync-loop.js +0 -253
  310. package/dist/sync-loop.js.map +0 -1
  311. package/dist/sync.d.ts +0 -32
  312. package/dist/sync.d.ts.map +0 -1
  313. package/dist/sync.js +0 -55
  314. package/dist/sync.js.map +0 -1
  315. package/dist/utils/id.d.ts +0 -17
  316. package/dist/utils/id.d.ts.map +0 -1
  317. package/dist/utils/id.js +0 -46
  318. package/dist/utils/id.js.map +0 -1
  319. package/src/blobs/index.ts +0 -7
  320. package/src/blobs/manager.ts +0 -1027
  321. package/src/blobs/migrate.ts +0 -67
  322. package/src/blobs/types.ts +0 -84
  323. package/src/client.test.ts +0 -417
  324. package/src/conflicts.ts +0 -171
  325. package/src/create-client.test.ts +0 -83
  326. package/src/create-client.ts +0 -330
  327. package/src/engine/SyncEngine.test.ts +0 -254
  328. package/src/engine/SyncEngine.ts +0 -2375
  329. package/src/engine/index.ts +0 -6
  330. package/src/engine/types.ts +0 -419
  331. package/src/handlers/collection.ts +0 -36
  332. package/src/handlers/create-handler.ts +0 -330
  333. package/src/handlers/types.ts +0 -108
  334. package/src/migrate.ts +0 -318
  335. package/src/outbox.ts +0 -383
  336. package/src/plugins/incrementing-version.ts +0 -133
  337. package/src/plugins/index.ts +0 -2
  338. package/src/plugins/types.ts +0 -63
  339. package/src/proxy/connection.ts +0 -191
  340. package/src/proxy/dialect.ts +0 -76
  341. package/src/proxy/driver.ts +0 -126
  342. package/src/proxy/index.ts +0 -10
  343. package/src/proxy/mutations.ts +0 -18
  344. package/src/pull-engine.test.ts +0 -151
  345. package/src/pull-engine.ts +0 -855
  346. package/src/push-engine.ts +0 -216
  347. package/src/query/FingerprintCollector.ts +0 -29
  348. package/src/query/QueryContext.ts +0 -54
  349. package/src/query/fingerprint.ts +0 -109
  350. package/src/query/index.ts +0 -10
  351. package/src/query/tracked-select.ts +0 -139
  352. package/src/schema.ts +0 -94
  353. package/src/subscription-state.ts +0 -259
  354. package/src/sync-loop.ts +0 -379
  355. package/src/sync.ts +0 -170
  356. package/src/utils/id.ts +0 -55
@@ -1,178 +0,0 @@
1
- /**
2
- * Simplified client factory
3
- *
4
- * Breaking changes from legacy Client:
5
- * - handlers: plain array (no registry class)
6
- * - url: string instead of transport (transport auto-created)
7
- * - subscriptions: derived from handler.subscribe (no separate param)
8
- * - clientId: auto-generated (no longer required)
9
- */
10
- import { extractScopeVars } from '@syncular/core';
11
- import { createHttpTransport } from '@syncular/transport-http';
12
- import { Client } from './client.js';
13
- import { createClientHandlerCollection } from './handlers/collection.js';
14
- import { createClientHandler } from './handlers/create-handler.js';
15
- import { randomUUID } from './utils/id.js';
16
- function deriveDefaultSubscriptionScopes(args) {
17
- const patterns = args.handler.scopePatterns ?? [];
18
- const vars = new Set();
19
- for (const pattern of patterns) {
20
- for (const v of extractScopeVars(pattern)) {
21
- vars.add(v);
22
- }
23
- }
24
- const allVars = Array.from(vars);
25
- if (allVars.length !== 1) {
26
- throw new Error(`Handler "${args.handler.table}" has subscribe=true but no explicit subscription scopes. ` +
27
- 'Set subscribe: { scopes: { ... } } on the handler. ' +
28
- `(Cannot infer defaults from scopePatterns: ${patterns.length > 0 ? patterns.join(', ') : '(none)'})`);
29
- }
30
- const varName = allVars[0];
31
- return { [varName]: args.actorId };
32
- }
33
- /**
34
- * Auto-generate a simple handler for a table.
35
- * Uses 'id' as primary key and provided scopes.
36
- */
37
- function createAutoHandler(table, scopes, options) {
38
- return createClientHandler({
39
- table: table,
40
- scopes: scopes,
41
- codecs: options.codecs,
42
- codecDialect: options.codecDialect,
43
- });
44
- }
45
- function normalizeTransportBaseUrl(url) {
46
- const trimmed = url.trim().replace(/\/+$/, '');
47
- if (!trimmed.endsWith('/sync')) {
48
- return trimmed;
49
- }
50
- const baseUrl = trimmed.slice(0, -'/sync'.length);
51
- return baseUrl.length > 0 ? baseUrl : '/';
52
- }
53
- /**
54
- * Create a simplified sync client.
55
- *
56
- * Auto-generates clientId, creates transport from URL (default: '/api/sync'),
57
- * builds subscriptions from handlers.
58
- *
59
- * @example
60
- * ```typescript
61
- * // Auto-generate handlers for simple tables (default URL: '/api/sync')
62
- * const { client } = await createClient({
63
- * db,
64
- * actorId: 'user-123',
65
- * tables: ['tasks', 'notes'],
66
- * scopes: ['user:{user_id}'],
67
- * });
68
- *
69
- * // With custom handlers for advanced cases
70
- * const { client } = await createClient({
71
- * db,
72
- * actorId: 'user-123',
73
- * handlers: [
74
- * tasksHandler, // subscribe: true by default
75
- * notesHandler, // subscribe: true by default
76
- * draftsHandler, // subscribe: false (local-only)
77
- * ],
78
- * });
79
- *
80
- * // Listen for events
81
- * client.on('sync:error', (err) => console.error(err));
82
- * client.on('data:change', (scopes) => console.log('Data changed:', scopes));
83
- * ```
84
- */
85
- export async function createClient(options) {
86
- const { db, url = '/api/sync', handlers: providedHandlers, tables, scopes, actorId, clientId = randomUUID(), transport: customTransport, getHeaders, sync = {}, blobStorage, plugins, stateId, codecs, codecDialect, autoStart = true, } = options;
87
- // Validate options
88
- if (!providedHandlers && !tables) {
89
- throw new Error('Either handlers or tables must be provided');
90
- }
91
- if (tables && !scopes) {
92
- throw new Error('scopes is required when using tables option');
93
- }
94
- // Auto-generate handlers from tables if needed
95
- const handlers = providedHandlers ??
96
- tables.map((table) => createAutoHandler(table, scopes, {
97
- codecs,
98
- codecDialect,
99
- }));
100
- const tableHandlers = createClientHandlerCollection(handlers);
101
- // Create transport from URL if not provided
102
- let transport = customTransport;
103
- if (!transport && url) {
104
- transport = createHttpTransport({
105
- baseUrl: normalizeTransportBaseUrl(url),
106
- getHeaders,
107
- });
108
- }
109
- if (!transport) {
110
- throw new Error('Either url or transport must be provided');
111
- }
112
- // Build subscriptions from handlers
113
- const subscriptions = handlers
114
- .map((handler) => {
115
- const sub = handler.subscribe;
116
- // Skip handlers that are explicitly disabled
117
- if (sub === false)
118
- return null;
119
- if (sub === true || sub === undefined) {
120
- // Default: subscribe to the handler's single scope var using actorId.
121
- // This avoids sending `{}` which would be treated as revoked by the server.
122
- const scopes = deriveDefaultSubscriptionScopes({
123
- handler,
124
- actorId,
125
- });
126
- return {
127
- id: handler.table,
128
- table: handler.table,
129
- scopes,
130
- params: {},
131
- };
132
- }
133
- // Custom subscription config
134
- const scopes = {};
135
- for (const [scopeKey, scopeValue] of Object.entries(sub.scopes ?? {})) {
136
- if (scopeValue === undefined)
137
- continue;
138
- scopes[scopeKey] = scopeValue;
139
- }
140
- if (Object.keys(scopes).length === 0) {
141
- throw new Error(`Handler "${handler.table}" subscription scopes cannot be empty. ` +
142
- 'Set subscribe: false or provide subscribe.scopes.');
143
- }
144
- return {
145
- id: handler.table,
146
- table: handler.table,
147
- scopes,
148
- params: sub.params ?? {},
149
- };
150
- })
151
- .filter((sub) => sub !== null);
152
- // Create client
153
- const client = new Client({
154
- db,
155
- transport,
156
- tableHandlers,
157
- clientId,
158
- actorId,
159
- subscriptions,
160
- blobStorage,
161
- plugins,
162
- stateId,
163
- codecs,
164
- codecDialect,
165
- realtimeEnabled: sync.realtime ?? true,
166
- pollIntervalMs: sync.pollIntervalMs,
167
- });
168
- // Auto-start
169
- if (autoStart) {
170
- await client.start();
171
- }
172
- return {
173
- client,
174
- stop: () => client.stop(),
175
- destroy: () => client.destroy(),
176
- };
177
- }
178
- //# sourceMappingURL=create-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-client.js","sourceRoot":"","sources":["../src/create-client.ts"],"names":[],"mappings":"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"}
@@ -1,272 +0,0 @@
1
- /**
2
- * @syncular/client - Core sync engine
3
- *
4
- * Event-driven sync engine that manages push/pull cycles, connection state,
5
- * and provides a clean API for framework bindings to consume.
6
- */
7
- import { type SyncSubscriptionRequest } from '@syncular/core';
8
- import { type Kysely } from 'kysely';
9
- import type { SyncClientDb } from '../schema';
10
- import { type SubscriptionState } from '../subscription-state';
11
- import type { ConflictInfo, OutboxStats, PresenceEntry, SyncAwaitBootstrapOptions, SyncAwaitPhaseOptions, SyncDiagnostics, SyncEngineConfig, SyncEngineState, SyncEventListener, SyncEventType, SyncInspectorOptions, SyncInspectorSnapshot, SyncProgress, SyncRepairOptions, SyncResetOptions, SyncResetResult, SyncResult, TransportHealth } from './types';
12
- export declare class SyncEngine<DB extends SyncClientDb = SyncClientDb> {
13
- private config;
14
- private state;
15
- private listeners;
16
- private pollerId;
17
- private fallbackPollerId;
18
- private realtimeDisconnect;
19
- private realtimePresenceUnsub;
20
- private isDestroyed;
21
- private migrated;
22
- private syncPromise;
23
- private syncRequestedWhileRunning;
24
- private retryTimeoutId;
25
- private realtimeCatchupTimeoutId;
26
- private hasRealtimeConnectedOnce;
27
- private transportHealth;
28
- private activeBootstrapSubscriptions;
29
- private bootstrapStartedAt;
30
- private inspectorEvents;
31
- private nextInspectorEventId;
32
- /**
33
- * In-memory map tracking local mutation timestamps by rowId.
34
- * Used for efficient fingerprint-based rerender optimization.
35
- * Key format: `${table}:${rowId}`, Value: timestamp (Date.now())
36
- */
37
- private mutationTimestamps;
38
- /**
39
- * In-memory map tracking table-level mutation timestamps.
40
- * Used for coarse invalidation during large bootstrap snapshots to avoid
41
- * storing timestamps for every row.
42
- */
43
- private tableMutationTimestamps;
44
- /**
45
- * In-memory presence state by scope key.
46
- * Updated via realtime presence events.
47
- */
48
- private presenceByScopeKey;
49
- constructor(config: SyncEngineConfig<DB>);
50
- /**
51
- * Get mutation timestamp for a row (used by query hooks for fingerprinting).
52
- * Returns 0 if row has no recorded mutation timestamp.
53
- */
54
- getMutationTimestamp(table: string, rowId: string): number;
55
- /**
56
- * Get presence entries for a scope key.
57
- * Returns empty array if no presence data for the scope.
58
- */
59
- getPresence<TMetadata = Record<string, unknown>>(scopeKey: string): PresenceEntry<TMetadata>[];
60
- /**
61
- * Update presence for a scope key (called by realtime transport).
62
- * Emits presence:change event for listeners.
63
- */
64
- updatePresence(scopeKey: string, presence: PresenceEntry[]): void;
65
- /**
66
- * Join presence for a scope key.
67
- * Sends via transport (if available) and updates local state optimistically.
68
- */
69
- joinPresence(scopeKey: string, metadata?: Record<string, unknown>): void;
70
- /**
71
- * Leave presence for a scope key.
72
- */
73
- leavePresence(scopeKey: string): void;
74
- /**
75
- * Update presence metadata for a scope key.
76
- */
77
- updatePresenceMetadata(scopeKey: string, metadata: Record<string, unknown>): void;
78
- /**
79
- * Handle a single presence event (join/leave/update).
80
- * Updates the in-memory presence state and emits change event.
81
- */
82
- handlePresenceEvent(event: {
83
- action: 'join' | 'leave' | 'update';
84
- scopeKey: string;
85
- clientId: string;
86
- actorId: string;
87
- metadata?: Record<string, unknown>;
88
- }): void;
89
- private createInitialState;
90
- private isEnabled;
91
- private detectTransportMode;
92
- /**
93
- * Get current engine state.
94
- * Returns the same object reference to avoid useSyncExternalStore infinite loops.
95
- */
96
- getState(): Readonly<SyncEngineState>;
97
- /**
98
- * Get transport health details (realtime/polling/fallback).
99
- */
100
- getTransportHealth(): Readonly<TransportHealth>;
101
- /**
102
- * Get subscription state metadata for the current profile.
103
- */
104
- listSubscriptionStates(args?: {
105
- stateId?: string;
106
- table?: string;
107
- status?: 'active' | 'revoked';
108
- }): Promise<SubscriptionState[]>;
109
- /**
110
- * Get a single subscription state by id.
111
- */
112
- getSubscriptionState(subscriptionId: string, options?: {
113
- stateId?: string;
114
- }): Promise<SubscriptionState | null>;
115
- /**
116
- * Get normalized progress for all active subscriptions in this state profile.
117
- */
118
- getProgress(): Promise<SyncProgress>;
119
- /**
120
- * Wait until the channel reaches a target phase.
121
- */
122
- awaitPhase(phase: SyncProgress['channelPhase'], options?: SyncAwaitPhaseOptions): Promise<SyncProgress>;
123
- /**
124
- * Wait until bootstrap finishes for a state or a specific subscription.
125
- */
126
- awaitBootstrapComplete(options?: SyncAwaitBootstrapOptions): Promise<SyncProgress>;
127
- /**
128
- * Get a diagnostics snapshot suitable for debug UIs and bug reports.
129
- */
130
- getDiagnostics(): Promise<SyncDiagnostics>;
131
- /**
132
- * Get a serializable inspector snapshot for app debug UIs and support tooling.
133
- */
134
- getInspectorSnapshot(options?: SyncInspectorOptions): Promise<SyncInspectorSnapshot>;
135
- /**
136
- * Get database instance
137
- */
138
- getDb(): Kysely<DB>;
139
- /**
140
- * Get current actor id (sync scoping).
141
- */
142
- getActorId(): string | null | undefined;
143
- /**
144
- * Get current client id (device/app install id).
145
- */
146
- getClientId(): string | null | undefined;
147
- private getStateId;
148
- private makeBootstrapKey;
149
- private updateTransportHealth;
150
- private waitForProgressSignal;
151
- private mapSubscriptionToProgress;
152
- private resolveChannelPhase;
153
- private deriveProgressFromPullSubscription;
154
- private handleBootstrapLifecycle;
155
- private resolveResetTargets;
156
- private clearSyncedTablesForReset;
157
- reset(options: SyncResetOptions): Promise<SyncResetResult>;
158
- repair(options: SyncRepairOptions): Promise<SyncResetResult>;
159
- /**
160
- * Subscribe to sync events
161
- */
162
- on<T extends SyncEventType>(event: T, listener: SyncEventListener<T>): () => void;
163
- /**
164
- * Subscribe to any state change (for useSyncExternalStore)
165
- */
166
- subscribe(callback: () => void): () => void;
167
- private emit;
168
- private updateState;
169
- private setConnectionState;
170
- /**
171
- * Start the sync engine
172
- */
173
- start(): Promise<void>;
174
- /**
175
- * Stop the sync engine (cleanup without destroy)
176
- */
177
- stop(): void;
178
- /**
179
- * Destroy the engine (cannot be restarted)
180
- */
181
- destroy(): void;
182
- /**
183
- * Trigger a manual sync
184
- */
185
- sync(opts?: {
186
- trigger?: 'ws' | 'local' | 'poll';
187
- }): Promise<SyncResult>;
188
- private performSyncLoop;
189
- private performSyncOnce;
190
- private extractChangedTables;
191
- private applyWsDeliveredChanges;
192
- private handleWsDelivery;
193
- private timestampCounter;
194
- private nextPreciseTimestamp;
195
- private bumpMutationTimestamp;
196
- private bumpTableMutationTimestamp;
197
- /**
198
- * Record local mutations that were already applied to the DB.
199
- *
200
- * This updates in-memory mutation timestamps (for fingerprint-based rerenders),
201
- * and emits a single `data:change` event for the affected tables.
202
- *
203
- * This is intentionally separate from applyLocalMutation() so callers that
204
- * perform their own DB transactions (e.g. `useMutations`) can still keep UI
205
- * updates correct without double-writing.
206
- */
207
- recordLocalMutations(inputs: Array<{
208
- table: string;
209
- rowId: string;
210
- op: 'upsert' | 'delete';
211
- }>, now?: number): void;
212
- private recordMutationTimestampsFromPullResponse;
213
- private scheduleRetry;
214
- private handleError;
215
- private triggerSyncInBackground;
216
- private setupPolling;
217
- private stopPolling;
218
- private setupRealtime;
219
- private stopRealtime;
220
- private scheduleRealtimeReconnectCatchupSync;
221
- private startFallbackPolling;
222
- private stopFallbackPolling;
223
- /**
224
- * Clear all in-memory mutation state and emit data:change so UI re-renders.
225
- * Call this after deleting local data (e.g. reset flow) so that React hooks
226
- * recompute fingerprints from scratch instead of seeing stale timestamps.
227
- */
228
- resetLocalState(): void;
229
- /**
230
- * Reconnect
231
- */
232
- reconnect(): void;
233
- /**
234
- * Disconnect (pause syncing)
235
- */
236
- disconnect(): void;
237
- /**
238
- * Refresh outbox statistics
239
- */
240
- refreshOutboxStats(options?: {
241
- emit?: boolean;
242
- }): Promise<OutboxStats>;
243
- /**
244
- * Get pending conflicts with operation details from outbox
245
- */
246
- getConflicts(): Promise<ConflictInfo[]>;
247
- /**
248
- * Update subscriptions dynamically
249
- */
250
- updateSubscriptions(subscriptions: Array<Omit<SyncSubscriptionRequest, 'cursor'>>): void;
251
- /**
252
- * Apply local mutations immediately to the database and emit change events.
253
- * Used for instant UI updates before the sync cycle completes.
254
- */
255
- applyLocalMutation(inputs: Array<{
256
- table: string;
257
- rowId: string;
258
- op: 'upsert' | 'delete';
259
- payload?: Record<string, unknown> | null;
260
- }>): Promise<void>;
261
- /**
262
- * Clear failed commits from the outbox.
263
- * Use this to discard commits that keep failing (e.g., version conflicts).
264
- */
265
- clearFailedCommits(): Promise<number>;
266
- /**
267
- * Clear all pending and failed commits from the outbox.
268
- * Use this to reset the outbox completely (e.g., for testing).
269
- */
270
- clearAllCommits(): Promise<number>;
271
- }
272
- //# sourceMappingURL=SyncEngine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SyncEngine.d.ts","sourceRoot":"","sources":["../../src/engine/SyncEngine.ts"],"names":[],"mappings":"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"}