@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
@@ -0,0 +1,70 @@
1
+ // @generated by packages/client/scripts/generate-wasm-bindings.ts
2
+ // Source: wasm-bindgen declarations in dist/wasm/syncular.d.ts
3
+ // biome-ignore-all lint/suspicious/noExplicitAny: wasm-bindgen emits any for JsValue boundaries.
4
+
5
+ export class SyncularRustOwnedSqliteClient {
6
+ private constructor();
7
+ free(): void;
8
+ [Symbol.dispose](): void;
9
+ activeAuthLeasesJson(actor_id: string | null | undefined, now_ms: bigint): string;
10
+ applyCrdtFieldTextJson(request_json: string): string;
11
+ applyCrdtFieldYjsUpdateJson(request_json: string): string;
12
+ applyLeasedMutationJson(operation_json: string, local_row_json?: string | null): Promise<string>;
13
+ applyLeasedMutationsCommitJson(operations_json: string): string;
14
+ applyMutationJson(operation_json: string, local_row_json?: string | null): Promise<string>;
15
+ applyMutationsBatchJson(operations_json: string): string;
16
+ applyMutationsCommitJson(operations_json: string): string;
17
+ applyRealtimeSyncPackBytes(bytes: Uint8Array): Promise<string>;
18
+ applyYjsEnvelopeToPayloadJson(args_json: string): string;
19
+ applyYjsTextUpdatesJson(args_json: string): string;
20
+ authLeaseJson(lease_id: string): string;
21
+ blobCacheStatsJson(): string;
22
+ blobUploadQueueStatsJson(): string;
23
+ buildYjsTextUpdateJson(args_json: string): string;
24
+ clearBlobCache(): void;
25
+ close(): void;
26
+ compactCrdtFieldJson(request_json: string): string;
27
+ compactStorageJson(options_json: string): string;
28
+ conflictSummariesJson(): Promise<string>;
29
+ crdtDocumentSnapshotJson(request_json: string): string;
30
+ crdtUpdateLogJson(request_json: string): string;
31
+ drainLiveQueryEventsJson(): string;
32
+ drainRowsChangedEventsJson(): string;
33
+ encryptionHelperJson(method: string, args_json: string): string;
34
+ executeSqlValue(sql: string, params: any): any;
35
+ executeUnsafeSqlValue(sql: string, params: any): any;
36
+ exportLocalSupportBundleJson(): Promise<string>;
37
+ forceSubscriptionsBootstrapJson(subscription_ids_json: string): Promise<string>;
38
+ generatedSchemaStateJson(): string;
39
+ importLocalSupportBundleJson(bundle_json: string): Promise<string>;
40
+ isBlobLocal(hash: string): boolean;
41
+ listTableJson(table: string): Promise<string>;
42
+ liveQueryDiagnosticsJson(): string;
43
+ localHealthCheckJson(): Promise<string>;
44
+ materializeCrdtFieldJson(request_json: string): string;
45
+ openCrdtFieldJson(request_json: string): string;
46
+ processBlobUploadQueueJson(retry_now?: boolean | null): Promise<string>;
47
+ pruneBlobCache(max_bytes: bigint): bigint;
48
+ recoverSyncPushErrorJson(error_message: string): void;
49
+ repairLocalHealthJson(request_json: string): Promise<string>;
50
+ resetLocalSyncStateJson(request_json: string): Promise<string>;
51
+ resetTransportStats(): void;
52
+ resolveConflict(id: string, resolution: string): Promise<void>;
53
+ retrieveBlob(ref_json: string): Promise<Uint8Array>;
54
+ retryConflictKeepLocal(id: string): Promise<string>;
55
+ setAbortSignal(signal: any): void;
56
+ setAuthHeadersJson(headers_json: string): void;
57
+ setBlobEncryptionJson(config_json: string): void;
58
+ setEncryptedCrdtJson(config_json: string): void;
59
+ setFieldEncryptionJson(config_json: string): void;
60
+ setSubscriptionsJson(subscriptions_json: string): void;
61
+ snapshotCrdtFieldStateVectorJson(request_json: string): string;
62
+ storeBlobJson(data: Uint8Array, options_json: string): Promise<string>;
63
+ subscribeQueryJson(sql: string, params_json: string, tables_json: string, hints_json: string): string;
64
+ syncOnceJson(): Promise<string>;
65
+ syncPullJson(): Promise<string>;
66
+ syncPushJson(): Promise<string>;
67
+ transportStatsJson(): string;
68
+ unsubscribeQuery(id: string): void;
69
+ upsertAuthLeaseJson(lease_json: string): void;
70
+ }
@@ -0,0 +1,158 @@
1
+ export type { SyncularRustOwnedSqliteClient } from './generated-wasm-bindings';
2
+
3
+ import type {
4
+ SyncularRuntimeArtifact,
5
+ SyncularRuntimeArtifactCandidate,
6
+ SyncularRuntimeArtifactCatalog,
7
+ } from '../types';
8
+
9
+ export const SYNCULAR_CLIENT_PACKAGE_NAME = '@syncular/client';
10
+ export const SYNCULAR_CLIENT_PACKAGE_VERSION = '0.1.0';
11
+ export const SYNCULAR_WASM_OUT_NAME = 'syncular';
12
+ export const SYNCULAR_WASM_GLUE_FILE = `${SYNCULAR_WASM_OUT_NAME}.js`;
13
+ export const SYNCULAR_WASM_BINARY_FILE = `${SYNCULAR_WASM_OUT_NAME}_bg.wasm`;
14
+ export const SYNCULAR_WASM_ARTIFACT_FILE = 'syncular-runtime-artifact.json';
15
+ export const SYNCULAR_WASM_ARTIFACT_CATALOG_FILE =
16
+ 'syncular-runtime-artifacts.json';
17
+ export const SYNCULAR_FULL_RUNTIME_FEATURES = [
18
+ 'web-owned-sqlite-core',
19
+ 'web-owned-sqlite',
20
+ 'blobs',
21
+ 'crdt-yjs',
22
+ 'e2ee',
23
+ ] as const;
24
+ export const SYNCULAR_CORE_RUNTIME_FEATURES = [
25
+ 'web-owned-sqlite-core',
26
+ ] as const;
27
+
28
+ export type SyncularWasmArtifactVariant = 'full' | 'full-perf' | 'core';
29
+
30
+ export function getSyncularWasmGlueUrl(): URL {
31
+ return resolveSyncularWasmAsset(SYNCULAR_WASM_GLUE_FILE);
32
+ }
33
+
34
+ export function getSyncularWasmUrl(): URL {
35
+ return resolveSyncularWasmAsset(SYNCULAR_WASM_BINARY_FILE);
36
+ }
37
+
38
+ export function getSyncularRuntimeArtifactCatalogUrl(): URL {
39
+ const runtimeUrl = new URL(import.meta.url);
40
+ const sourceRuntime = runtimeUrl.pathname.endsWith(
41
+ '/src/wasm-bindings/runtime-contract.ts'
42
+ );
43
+ return new URL(
44
+ sourceRuntime
45
+ ? `../../dist/${SYNCULAR_WASM_ARTIFACT_CATALOG_FILE}`
46
+ : `../${SYNCULAR_WASM_ARTIFACT_CATALOG_FILE}`,
47
+ runtimeUrl
48
+ );
49
+ }
50
+
51
+ export function getSyncularRuntimeArtifact(
52
+ variant: SyncularWasmArtifactVariant = 'full'
53
+ ): SyncularRuntimeArtifactCandidate {
54
+ const dir =
55
+ variant === 'core'
56
+ ? 'wasm-core'
57
+ : variant === 'full-perf'
58
+ ? 'wasm-perf'
59
+ : 'wasm';
60
+ const features =
61
+ variant === 'core'
62
+ ? SYNCULAR_CORE_RUNTIME_FEATURES
63
+ : SYNCULAR_FULL_RUNTIME_FEATURES;
64
+ return {
65
+ name: variant,
66
+ features,
67
+ wasmGlueUrl: resolveSyncularWasmAsset(SYNCULAR_WASM_GLUE_FILE, dir),
68
+ wasmUrl: resolveSyncularWasmAsset(SYNCULAR_WASM_BINARY_FILE, dir),
69
+ };
70
+ }
71
+
72
+ export function getSyncularPackagedRuntimeArtifacts(): readonly SyncularRuntimeArtifactCandidate[] {
73
+ return [
74
+ getSyncularRuntimeArtifact('core'),
75
+ getSyncularRuntimeArtifact('full'),
76
+ getSyncularRuntimeArtifact('full-perf'),
77
+ ];
78
+ }
79
+
80
+ export function resolveSyncularRuntimeArtifactCatalog(
81
+ catalog: SyncularRuntimeArtifactCatalog,
82
+ options: { baseUrl?: string | URL } = {}
83
+ ): readonly SyncularRuntimeArtifactCandidate[] {
84
+ const baseUrl = options.baseUrl ?? getSyncularRuntimeArtifactCatalogUrl();
85
+ return catalog.artifacts.map((artifact) => ({
86
+ name: artifact.name,
87
+ features: artifact.features,
88
+ wasmGlueUrl: resolveCatalogAssetUrl(artifact.wasmGlueUrl, baseUrl),
89
+ wasmUrl: resolveCatalogAssetUrl(artifact.wasmUrl, baseUrl),
90
+ }));
91
+ }
92
+
93
+ export function selectSyncularRuntimeArtifact(
94
+ requiredFeatures: readonly string[] = [],
95
+ artifacts: readonly SyncularRuntimeArtifactCandidate[] = [
96
+ getSyncularRuntimeArtifact('full'),
97
+ ]
98
+ ): SyncularRuntimeArtifact {
99
+ const required = new Set(requiredFeatures);
100
+ for (const artifact of artifacts) {
101
+ const available = new Set(artifact.features);
102
+ let compatible = true;
103
+ for (const feature of required) {
104
+ if (!available.has(feature)) {
105
+ compatible = false;
106
+ break;
107
+ }
108
+ }
109
+ if (compatible) {
110
+ return {
111
+ wasmGlueUrl: artifact.wasmGlueUrl,
112
+ wasmUrl: artifact.wasmUrl,
113
+ };
114
+ }
115
+ }
116
+
117
+ throw new Error(
118
+ `No Syncular Rust runtime artifact satisfies required features: ${[
119
+ ...required,
120
+ ].join(', ')}`
121
+ );
122
+ }
123
+
124
+ function resolveSyncularWasmAsset(fileName: string, dir = 'wasm'): URL {
125
+ const runtimeUrl = new URL(import.meta.url);
126
+ const sourceRuntime = runtimeUrl.pathname.endsWith(
127
+ '/src/wasm-bindings/runtime-contract.ts'
128
+ );
129
+ return new URL(
130
+ sourceRuntime ? `../../dist/${dir}/${fileName}` : `../${dir}/${fileName}`,
131
+ runtimeUrl
132
+ );
133
+ }
134
+
135
+ function resolveCatalogAssetUrl(
136
+ value: string,
137
+ baseUrl: string | URL
138
+ ): string | URL {
139
+ if (isAbsoluteAssetUrl(value)) return value;
140
+ if (baseUrl instanceof URL) {
141
+ return new URL(value, new URL('./', baseUrl));
142
+ }
143
+ if (hasUrlProtocol(baseUrl)) {
144
+ return new URL(value, new URL('./', baseUrl)).href;
145
+ }
146
+ const baseDir = baseUrl.endsWith('/')
147
+ ? baseUrl
148
+ : baseUrl.slice(0, Math.max(0, baseUrl.lastIndexOf('/') + 1));
149
+ return `${baseDir}${value}`;
150
+ }
151
+
152
+ function isAbsoluteAssetUrl(value: string): boolean {
153
+ return value.startsWith('/') || hasUrlProtocol(value);
154
+ }
155
+
156
+ function hasUrlProtocol(value: string): boolean {
157
+ return /^[a-z][a-z0-9+.-]*:/i.test(value);
158
+ }
@@ -0,0 +1,76 @@
1
+ import type {
2
+ ResolvedSyncularClientConfig,
3
+ SyncularRustRuntimeInfo,
4
+ } from './types';
5
+ import {
6
+ getSyncularWasmGlueUrl,
7
+ getSyncularWasmUrl,
8
+ type SyncularRustOwnedSqliteClient,
9
+ } from './wasm-bindings/runtime-contract';
10
+
11
+ export type {
12
+ SyncularRustOwnedSqliteClient,
13
+ SyncularWasmArtifactVariant,
14
+ } from './wasm-bindings/runtime-contract';
15
+ export {
16
+ getSyncularPackagedRuntimeArtifacts,
17
+ getSyncularRuntimeArtifact,
18
+ getSyncularRuntimeArtifactCatalogUrl,
19
+ getSyncularWasmGlueUrl,
20
+ getSyncularWasmUrl,
21
+ resolveSyncularRuntimeArtifactCatalog,
22
+ selectSyncularRuntimeArtifact,
23
+ } from './wasm-bindings/runtime-contract';
24
+
25
+ export interface SyncularWasmGlue {
26
+ default(moduleOrPath?: string | URL | Request): Promise<unknown>;
27
+ syncularRuntimeInfoJson(): string;
28
+ syncularBuildYjsTextUpdateJson(argsJson: string): string;
29
+ syncularApplyYjsTextUpdatesJson(argsJson: string): string;
30
+ syncularApplyYjsEnvelopeToPayloadJson(argsJson: string): string;
31
+ syncularMaterializeYjsRowJson(argsJson: string): string;
32
+ syncularEncryptionHelperJson(method: string, argsJson: string): string;
33
+ openSyncularRustOwnedSqliteClient(
34
+ config: ResolvedSyncularClientConfig
35
+ ): Promise<SyncularRustOwnedSqliteClient>;
36
+ }
37
+
38
+ let modulePromise: Promise<SyncularWasmGlue> | undefined;
39
+
40
+ export function loadSyncularWasmGlue(): Promise<SyncularWasmGlue> {
41
+ modulePromise ??= (
42
+ import(
43
+ /* @vite-ignore */ getSyncularWasmGlueUrl().href
44
+ ) as Promise<SyncularWasmGlue>
45
+ ).catch((error: unknown) => {
46
+ modulePromise = undefined;
47
+ const message = error instanceof Error ? error.message : String(error);
48
+ if (/cannot find module|failed to fetch|not found/i.test(message)) {
49
+ throw new Error(
50
+ `Syncular WASM runtime artifact is missing (${message}). ` +
51
+ 'In this repo, build it first: `bun run client:build:wasm` ' +
52
+ '(or `bun --cwd packages/client build:wasm:dev` for a fast dev ' +
53
+ 'build). In an app, ensure the @syncular/client dist/wasm assets ' +
54
+ 'are served.',
55
+ { cause: error }
56
+ );
57
+ }
58
+ throw error;
59
+ });
60
+ return modulePromise;
61
+ }
62
+
63
+ export async function getSyncularRustRuntimeInfo(
64
+ mod?: SyncularWasmGlue | Promise<SyncularWasmGlue>,
65
+ wasmUrl: string | URL | Request = getSyncularWasmUrl()
66
+ ): Promise<SyncularRustRuntimeInfo> {
67
+ const resolved = await (mod ?? loadSyncularWasmGlue());
68
+ await resolved.default(wasmUrl);
69
+ return readSyncularRustRuntimeInfo(resolved);
70
+ }
71
+
72
+ export function readSyncularRustRuntimeInfo(
73
+ mod: SyncularWasmGlue
74
+ ): SyncularRustRuntimeInfo {
75
+ return JSON.parse(mod.syncularRuntimeInfoJson()) as SyncularRustRuntimeInfo;
76
+ }