@syncular/client 0.0.6-96 → 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,11 @@
1
+ import { type SyncAuthLeaseIssueRequest } from '@syncular/core';
2
+ import type { SyncularAppSchema, SyncularAuthHeaders, SyncularAuthLeaseRecord } from './types';
3
+ export declare function issueSyncularAuthLease(args: {
4
+ baseUrl: string;
5
+ headers: SyncularAuthHeaders;
6
+ request: SyncAuthLeaseIssueRequest;
7
+ appSchema?: SyncularAppSchema;
8
+ fetchImpl?: typeof fetch;
9
+ nowMs?: number;
10
+ }): Promise<SyncularAuthLeaseRecord>;
11
+ //# sourceMappingURL=auth-leases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-leases.d.ts","sourceRoot":"","sources":["../src/auth-leases.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,yBAAyB,EAE/B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,SAAS,CAAC;AAEjB,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,yBAAyB,CAAC;IACnC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAiCnC"}
@@ -0,0 +1,140 @@
1
+ import { resolveUrlFromBase, } from '@syncular/core';
2
+ export async function issueSyncularAuthLease(args) {
3
+ if (args.appSchema) {
4
+ validateSyncularAuthLeaseIssueRequestAgainstAppSchema(args.request, args.appSchema);
5
+ }
6
+ const fetchImpl = args.fetchImpl ?? fetch;
7
+ const headers = new Headers(args.headers);
8
+ headers.set('accept', 'application/json');
9
+ headers.set('content-type', 'application/json');
10
+ const response = await fetchImpl(resolveUrlFromBase(args.baseUrl, 'auth-leases/issue'), {
11
+ method: 'POST',
12
+ headers,
13
+ body: JSON.stringify(args.request),
14
+ });
15
+ if (!response.ok) {
16
+ throw await authLeaseIssueHttpError(response);
17
+ }
18
+ const issueResponse = assertAuthLeaseIssueResponse(await response.json());
19
+ if (args.appSchema) {
20
+ validateSyncularAuthLeaseIssueResponseAgainstAppSchema(issueResponse, args.request.schemaVersion, args.appSchema);
21
+ }
22
+ return syncularAuthLeaseRecordFromIssueResponse(issueResponse, args.nowMs);
23
+ }
24
+ function validateSyncularAuthLeaseIssueRequestAgainstAppSchema(request, appSchema) {
25
+ validateSyncularAuthLeaseSchemaVersion(request.schemaVersion, appSchema, 'auth lease request');
26
+ if (request.ttlMs != null && request.ttlMs <= 0) {
27
+ throw new Error('auth lease request ttlMs must be positive');
28
+ }
29
+ validateSyncularAuthLeaseScopesAgainstAppSchema(request.scopes, appSchema, 'auth lease request');
30
+ }
31
+ function validateSyncularAuthLeaseIssueResponseAgainstAppSchema(response, requestSchemaVersion, appSchema) {
32
+ if (response.payload.schemaVersion !== requestSchemaVersion) {
33
+ throw new Error(`auth lease response schemaVersion ${response.payload.schemaVersion} does not match request schemaVersion ${requestSchemaVersion}`);
34
+ }
35
+ validateSyncularAuthLeaseSchemaVersion(response.payload.schemaVersion, appSchema, 'auth lease payload');
36
+ validateSyncularAuthLeaseScopesAgainstAppSchema(response.payload.scopes, appSchema, 'auth lease payload');
37
+ }
38
+ function validateSyncularAuthLeaseSchemaVersion(schemaVersion, appSchema, source) {
39
+ if (schemaVersion === appSchema.schemaVersion)
40
+ return;
41
+ throw new Error(`${source} schemaVersion ${schemaVersion} does not match generated app schema version ${appSchema.schemaVersion}`);
42
+ }
43
+ function validateSyncularAuthLeaseScopesAgainstAppSchema(scopes, appSchema, source) {
44
+ if (scopes.length === 0) {
45
+ throw new Error(`${source} must contain at least one generated table scope`);
46
+ }
47
+ for (const scope of scopes) {
48
+ validateSyncularAuthLeaseScopeAgainstAppSchema(scope, appSchema, source);
49
+ }
50
+ }
51
+ function validateSyncularAuthLeaseScopeAgainstAppSchema(scope, appSchema, source) {
52
+ if (scope.subscriptionId.trim() === '') {
53
+ throw new Error(`${source} scope subscriptionId must not be empty`);
54
+ }
55
+ const tableName = scope.table.trim();
56
+ if (tableName === '') {
57
+ throw new Error(`${source} scope table must not be empty`);
58
+ }
59
+ const table = appSchema.tables.find((table) => table.name === tableName);
60
+ if (!table) {
61
+ throw new Error(`${source} scope references unknown generated table ${tableName}`);
62
+ }
63
+ if (scope.operations.length === 0) {
64
+ throw new Error(`${source} scope for table ${tableName} must include at least one operation`);
65
+ }
66
+ for (const operation of scope.operations) {
67
+ const operationName = operation;
68
+ if (operationName !== 'upsert' && operationName !== 'delete') {
69
+ throw new Error(`${source} scope for table ${tableName} references unsupported operation ${operationName}`);
70
+ }
71
+ }
72
+ const scopeKeys = new Set(table.scopes.map((scope) => scope.name));
73
+ for (const key of Object.keys(scope.values)) {
74
+ if (!scopeKeys.has(key)) {
75
+ throw new Error(`${source} scope for table ${tableName} references unknown generated scope ${key}`);
76
+ }
77
+ }
78
+ for (const generatedScope of table.scopes) {
79
+ if (generatedScope.required && !(generatedScope.name in scope.values)) {
80
+ throw new Error(`${source} scope for table ${tableName} is missing required generated scope ${generatedScope.name}`);
81
+ }
82
+ }
83
+ for (const [key, value] of Object.entries(scope.values)) {
84
+ validateSyncularAuthLeaseScopeValue(source, tableName, key, value);
85
+ }
86
+ }
87
+ function validateSyncularAuthLeaseScopeValue(source, table, key, value) {
88
+ if (typeof value === 'string' && value.length > 0)
89
+ return;
90
+ if (Array.isArray(value) &&
91
+ value.length > 0 &&
92
+ value.every((entry) => typeof entry === 'string' && entry.length > 0)) {
93
+ return;
94
+ }
95
+ throw new Error(`${source} scope ${table}.${key} must be a non-empty string or non-empty string array`);
96
+ }
97
+ function syncularAuthLeaseRecordFromIssueResponse(response, nowMs = Date.now()) {
98
+ return {
99
+ leaseId: response.payload.leaseId,
100
+ kid: response.protectedHeader.kid,
101
+ actorId: response.payload.actorId,
102
+ issuedAtMs: response.payload.issuedAtMs,
103
+ notBeforeMs: response.payload.notBeforeMs,
104
+ expiresAtMs: response.payload.expiresAtMs,
105
+ schemaVersion: response.payload.schemaVersion,
106
+ payloadJson: JSON.stringify(response.payload),
107
+ token: response.token,
108
+ status: 'active',
109
+ lastValidationError: null,
110
+ createdAtMs: response.payload.issuedAtMs,
111
+ updatedAtMs: Math.trunc(nowMs),
112
+ };
113
+ }
114
+ async function authLeaseIssueHttpError(response) {
115
+ const body = await response.text().catch(() => '');
116
+ return new Error(`Syncular auth lease issue failed with HTTP ${response.status}: ${body}`);
117
+ }
118
+ function assertAuthLeaseIssueResponse(value) {
119
+ if (!value || typeof value !== 'object') {
120
+ throw new Error('Syncular auth lease issue returned invalid JSON');
121
+ }
122
+ const response = value;
123
+ const payload = response.payload;
124
+ const protectedHeader = response.protectedHeader;
125
+ if (response.ok !== true ||
126
+ typeof response.token !== 'string' ||
127
+ !payload ||
128
+ typeof payload.leaseId !== 'string' ||
129
+ typeof payload.actorId !== 'string' ||
130
+ typeof payload.issuedAtMs !== 'number' ||
131
+ typeof payload.notBeforeMs !== 'number' ||
132
+ typeof payload.expiresAtMs !== 'number' ||
133
+ typeof payload.schemaVersion !== 'number' ||
134
+ !protectedHeader ||
135
+ typeof protectedHeader.kid !== 'string') {
136
+ throw new Error('Syncular auth lease issue returned an invalid lease');
137
+ }
138
+ return response;
139
+ }
140
+ //# sourceMappingURL=auth-leases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-leases.js","sourceRoot":"","sources":["../src/auth-leases.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { SyncularBlobLimits, SyncularBlobStoreOptions, SyncularDiagnosticSink } from './types';
2
+ export declare const DEFAULT_SYNCULAR_BROWSER_MAX_BLOB_PAYLOAD_BYTES: number;
3
+ export type SyncularBlobLimitOperation = 'store' | 'retrieve';
4
+ export type SyncularBlobLimitInput = Blob | File | Uint8Array;
5
+ export declare function resolveSyncularBlobLimits(limits: SyncularBlobLimits | undefined): Required<SyncularBlobLimits>;
6
+ export declare function syncularBlobInputSize(data: SyncularBlobLimitInput): number;
7
+ export declare function assertSyncularBlobPayloadLimit(args: {
8
+ operation: SyncularBlobLimitOperation;
9
+ size: number;
10
+ limits: SyncularBlobLimits | undefined;
11
+ options?: SyncularBlobStoreOptions;
12
+ refHash?: string;
13
+ diagnostics?: SyncularDiagnosticSink;
14
+ }): void;
15
+ //# sourceMappingURL=blob-limits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob-limits.d.ts","sourceRoot":"","sources":["../src/blob-limits.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EAExB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,+CAA+C,QAAmB,CAAC;AAEhF,MAAM,MAAM,0BAA0B,GAAG,OAAO,GAAG,UAAU,CAAC;AAE9D,MAAM,MAAM,sBAAsB,GAAG,IAAI,GAAG,IAAI,GAAG,UAAU,CAAC;AAE9D,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GACrC,QAAQ,CAAC,kBAAkB,CAAC,CAO9B;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAI1E;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACnD,SAAS,EAAE,0BAA0B,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACvC,OAAO,CAAC,EAAE,wBAAwB,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC,GAAG,IAAI,CAYP"}
@@ -0,0 +1,66 @@
1
+ import { SYNCULAR_ERROR_DEFINITIONS } from '@syncular/core';
2
+ import { SyncularClientError } from './errors';
3
+ export const DEFAULT_SYNCULAR_BROWSER_MAX_BLOB_PAYLOAD_BYTES = 64 * 1024 * 1024;
4
+ export function resolveSyncularBlobLimits(limits) {
5
+ return {
6
+ maxPayloadBytes: normalizeLimit(limits?.maxPayloadBytes, DEFAULT_SYNCULAR_BROWSER_MAX_BLOB_PAYLOAD_BYTES),
7
+ };
8
+ }
9
+ export function syncularBlobInputSize(data) {
10
+ if (data instanceof Uint8Array)
11
+ return data.byteLength;
12
+ const maybeSized = data;
13
+ return typeof maybeSized.size === 'number' ? maybeSized.size : 0;
14
+ }
15
+ export function assertSyncularBlobPayloadLimit(args) {
16
+ const limits = resolveSyncularBlobLimits(args.limits);
17
+ if (args.size <= limits.maxPayloadBytes)
18
+ return;
19
+ const error = createSyncularBlobTooLargeError({
20
+ operation: args.operation,
21
+ size: args.size,
22
+ maxPayloadBytes: limits.maxPayloadBytes,
23
+ options: args.options,
24
+ refHash: args.refHash,
25
+ });
26
+ args.diagnostics?.(createSyncularBlobLimitDiagnostic(error));
27
+ throw error;
28
+ }
29
+ function createSyncularBlobTooLargeError(args) {
30
+ const definition = SYNCULAR_ERROR_DEFINITIONS['blob.too_large'];
31
+ return new SyncularClientError({
32
+ code: 'blob.too_large',
33
+ category: definition.category,
34
+ retryable: definition.retryable,
35
+ recommendedAction: definition.recommendedAction,
36
+ message: `Syncular blob ${args.operation} payload is ${args.size} bytes; max is ${args.maxPayloadBytes} bytes.`,
37
+ details: {
38
+ operation: args.operation,
39
+ size: args.size,
40
+ maxPayloadBytes: args.maxPayloadBytes,
41
+ ...(args.refHash ? { hash: args.refHash } : {}),
42
+ ...(args.options?.mimeType ? { mimeType: args.options.mimeType } : {}),
43
+ ...(args.options?.immediate !== undefined
44
+ ? { immediate: args.options.immediate }
45
+ : {}),
46
+ },
47
+ });
48
+ }
49
+ function createSyncularBlobLimitDiagnostic(error) {
50
+ return {
51
+ at: Date.now(),
52
+ level: 'warn',
53
+ source: 'blob',
54
+ code: error.code,
55
+ message: error.message,
56
+ details: error.details,
57
+ };
58
+ }
59
+ function normalizeLimit(value, fallback) {
60
+ if (value === undefined)
61
+ return fallback;
62
+ if (!Number.isFinite(value) || value < 0)
63
+ return fallback;
64
+ return Math.floor(value);
65
+ }
66
+ //# sourceMappingURL=blob-limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob-limits.js","sourceRoot":"","sources":["../src/blob-limits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import { type SyncAuthLeaseIssueRequest, type SyncOperation } from '@syncular/core';
2
+ import { type Dialect } from 'kysely';
3
+ import type { SyncularBlobClientLike, SyncularClientLike } from './client';
4
+ import { type MutationReceipt } from './mutations';
5
+ import type { SyncularAuthLeaseRecord, SyncularClientEventSink, SyncularClientEventType, SyncularConflictResolution, SyncularConflictStats, SyncularConflictSummary, SyncularConnectionState, SyncularDiagnosticSnapshot, SyncularLifecycleState, SyncularOutboxStats, SyncularPresenceEntry, SyncularPresenceSink, SyncularSubscriptionSpec, SyncularSyncRequestOptions, SyncularSyncResult } from './types';
6
+ export interface SyncularBridgeQueryRequest {
7
+ sql: string;
8
+ parameters: readonly unknown[];
9
+ }
10
+ export interface SyncularBridgeQueryResult<Row extends Record<string, unknown> = Record<string, unknown>> {
11
+ rows: Row[];
12
+ numAffectedRows?: bigint | number | string;
13
+ insertId?: bigint | number | string | null;
14
+ }
15
+ export interface SyncularBridgeMutationBatch {
16
+ operations: SyncOperation[];
17
+ }
18
+ export interface SyncularBridgeStatus {
19
+ lifecycle?: SyncularLifecycleState;
20
+ connection?: SyncularConnectionState;
21
+ outbox?: SyncularOutboxStats | null;
22
+ conflicts?: SyncularConflictStats | null;
23
+ }
24
+ export interface SyncularBridgePresence {
25
+ get<TMetadata = Record<string, unknown>>(scopeKey: string): SyncularPresenceEntry<TMetadata>[];
26
+ join(scopeKey: string, metadata?: Record<string, unknown>): void;
27
+ leave(scopeKey: string): void;
28
+ updateMetadata(scopeKey: string, metadata: Record<string, unknown>): void;
29
+ onChange<TMetadata = Record<string, unknown>>(listener: SyncularPresenceSink<TMetadata>): () => void;
30
+ }
31
+ export interface SyncularBridgeConflicts {
32
+ list(): Promise<SyncularConflictSummary[]>;
33
+ retryKeepLocal(id: string): Promise<string>;
34
+ resolve(id: string, resolution: SyncularConflictResolution): Promise<void>;
35
+ }
36
+ export interface SyncularBridge {
37
+ open?(): Promise<void> | void;
38
+ close?(): Promise<void> | void;
39
+ executeSql<Row extends Record<string, unknown> = Record<string, unknown>>(request: SyncularBridgeQueryRequest): Promise<SyncularBridgeQueryResult<Row>> | SyncularBridgeQueryResult<Row>;
40
+ applyMutationsCommit(batch: SyncularBridgeMutationBatch): Promise<string | MutationReceipt> | string | MutationReceipt;
41
+ applyLeasedMutationsCommit?(batch: SyncularBridgeMutationBatch): Promise<string | MutationReceipt> | string | MutationReceipt;
42
+ sync?(): Promise<SyncularSyncResult>;
43
+ resumeFromBackground?(options?: SyncularSyncRequestOptions): Promise<SyncularSyncResult>;
44
+ start?(): Promise<void>;
45
+ stop?(): Promise<void>;
46
+ setSubscriptions?(subscriptions: readonly SyncularSubscriptionSpec[]): Promise<void>;
47
+ getStatus?(): Promise<SyncularBridgeStatus> | SyncularBridgeStatus;
48
+ issueAuthLease?(request: SyncAuthLeaseIssueRequest): Promise<SyncularAuthLeaseRecord>;
49
+ upsertAuthLease?(lease: SyncularAuthLeaseRecord): Promise<void>;
50
+ authLease?(leaseId: string): Promise<SyncularAuthLeaseRecord | null>;
51
+ activeAuthLeases?(actorId?: string | null, nowMs?: number): Promise<SyncularAuthLeaseRecord[]>;
52
+ diagnosticSnapshot?(): Promise<SyncularDiagnosticSnapshot>;
53
+ on?<T extends SyncularClientEventType>(event: T, listener: SyncularClientEventSink<T>): () => void;
54
+ presence?: SyncularBridgePresence;
55
+ conflicts?: SyncularBridgeConflicts;
56
+ blobs?: Partial<SyncularBlobClientLike>;
57
+ }
58
+ export interface CreateSyncularBridgeClientOptions {
59
+ bridge: SyncularBridge;
60
+ sync?: {
61
+ autoSyncAfterMutation?: boolean;
62
+ };
63
+ idColumn?: string;
64
+ versionColumn?: string | null;
65
+ omitColumns?: readonly string[];
66
+ }
67
+ export declare function createSyncularBridgeDialect(bridge: SyncularBridge): Dialect;
68
+ export declare function createSyncularBridgeClient<DB>(options: CreateSyncularBridgeClientOptions): Promise<SyncularClientLike<DB>>;
69
+ //# sourceMappingURL=bridge-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-client.d.ts","sourceRoot":"","sources":["../src/bridge-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,282 @@
1
+ import { randomId, } from '@syncular/core';
2
+ import { Kysely, } from 'kysely';
3
+ import { BaseSqliteDialect, BaseSqliteDriver } from 'kysely-generic-sqlite';
4
+ import { createMutationsApi, } from './mutations';
5
+ import { assertSyncularReadonlySql } from './sql-safety';
6
+ export function createSyncularBridgeDialect(bridge) {
7
+ return new BaseSqliteDialect(() => new SyncularBridgeDriver(bridge));
8
+ }
9
+ export async function createSyncularBridgeClient(options) {
10
+ await options.bridge.open?.();
11
+ const dialect = createSyncularBridgeDialect(options.bridge);
12
+ const db = new Kysely({ dialect });
13
+ let closed = false;
14
+ const syncAfterMutation = options.sync?.autoSyncAfterMutation !== false;
15
+ const client = {
16
+ db,
17
+ dialect,
18
+ mutations: createSyncularBridgeMutations(options, async () => {
19
+ if (syncAfterMutation)
20
+ await client.sync().catch(() => undefined);
21
+ }),
22
+ leasedMutations: createSyncularBridgeMutations(options, async () => {
23
+ if (syncAfterMutation)
24
+ await client.sync().catch(() => undefined);
25
+ }, { leased: true }),
26
+ blobs: createBridgeBlobs(options.bridge),
27
+ on: (event, listener) => options.bridge.on?.(event, listener) ?? noop,
28
+ getStatus: () => resolveBridgeStatusSnapshot(options.bridge),
29
+ setSubscriptions: async (subscriptions) => {
30
+ await options.bridge.setSubscriptions?.(subscriptions);
31
+ },
32
+ resumeFromBackground: (syncOptions) => requireBridgeMethod(options.bridge.resumeFromBackground, 'resumeFromBackground')(syncOptions),
33
+ issueAuthLease: (request) => requireBridgeMethod(options.bridge.issueAuthLease, 'issueAuthLease')(request),
34
+ upsertAuthLease: (lease) => requireBridgeMethod(options.bridge.upsertAuthLease, 'upsertAuthLease')(lease),
35
+ authLease: (leaseId) => requireBridgeMethod(options.bridge.authLease, 'authLease')(leaseId),
36
+ activeAuthLeases: (actorId, nowMs) => requireBridgeMethod(options.bridge.activeAuthLeases, 'activeAuthLeases')(actorId, nowMs),
37
+ diagnosticSnapshot: () => requireBridgeMethod(options.bridge.diagnosticSnapshot, 'diagnosticSnapshot')(),
38
+ presence: createBridgePresence(options.bridge),
39
+ conflicts: createBridgeConflicts(options.bridge),
40
+ start: async () => {
41
+ await options.bridge.start?.();
42
+ },
43
+ stop: async () => {
44
+ await options.bridge.stop?.();
45
+ },
46
+ sync: async () => {
47
+ if (!options.bridge.sync) {
48
+ throw new Error('Syncular bridge does not implement sync().');
49
+ }
50
+ return await options.bridge.sync();
51
+ },
52
+ async close() {
53
+ if (closed)
54
+ return;
55
+ closed = true;
56
+ await options.bridge.stop?.();
57
+ await db.destroy();
58
+ await options.bridge.close?.();
59
+ },
60
+ };
61
+ return client;
62
+ }
63
+ function createSyncularBridgeMutations(options, afterCommit, mode = {}) {
64
+ const commit = createSyncularBridgeCommit(options, afterCommit, mode);
65
+ return createMutationsApi(commit);
66
+ }
67
+ function createSyncularBridgeCommit(options, afterCommit, mode = {}) {
68
+ const idColumn = options.idColumn ?? 'id';
69
+ const versionColumn = options.versionColumn ?? 'server_version';
70
+ const omitColumns = options.omitColumns ?? [];
71
+ return async (fn) => {
72
+ const operations = [];
73
+ const makeTxTable = (table) => ({
74
+ async insert(values) {
75
+ const raw = objectRecord(values);
76
+ const id = typeof raw[idColumn] === 'string' && raw[idColumn]
77
+ ? raw[idColumn]
78
+ : randomId();
79
+ operations.push({
80
+ table,
81
+ row_id: id,
82
+ op: 'upsert',
83
+ payload: sanitizeOperationPayload({ ...raw, [idColumn]: id }, [
84
+ idColumn,
85
+ ...(versionColumn ? [versionColumn] : []),
86
+ ...omitColumns,
87
+ ]),
88
+ base_version: null,
89
+ });
90
+ return id;
91
+ },
92
+ async insertMany(rows) {
93
+ const ids = [];
94
+ for (const row of rows)
95
+ ids.push(await this.insert(row));
96
+ return ids;
97
+ },
98
+ async update(id, patch, opts) {
99
+ operations.push(upsertOperation(table, id, patch, opts));
100
+ },
101
+ async delete(id, opts) {
102
+ operations.push({
103
+ table,
104
+ row_id: id,
105
+ op: 'delete',
106
+ payload: null,
107
+ base_version: opts?.baseVersion ?? null,
108
+ });
109
+ },
110
+ async upsert(id, patch, opts) {
111
+ operations.push(upsertOperation(table, id, patch, opts));
112
+ },
113
+ });
114
+ const tx = new Proxy({}, {
115
+ get(_target, prop) {
116
+ if (prop === 'then')
117
+ return undefined;
118
+ return typeof prop === 'string' ? makeTxTable(prop) : undefined;
119
+ },
120
+ });
121
+ const result = await fn(tx);
122
+ if (operations.length === 0)
123
+ throw new Error('No mutations were enqueued');
124
+ const commitFn = mode.leased
125
+ ? requireBridgeMethod(options.bridge.applyLeasedMutationsCommit, 'applyLeasedMutationsCommit')
126
+ : options.bridge.applyMutationsCommit.bind(options.bridge);
127
+ const receipt = normalizeMutationReceipt(await commitFn({ operations }));
128
+ await afterCommit();
129
+ return { result, receipt, meta: { operations } };
130
+ };
131
+ function upsertOperation(table, id, patch, opts) {
132
+ return {
133
+ table,
134
+ row_id: id,
135
+ op: 'upsert',
136
+ payload: sanitizeOperationPayload(objectRecord(patch), [
137
+ idColumn,
138
+ ...(versionColumn ? [versionColumn] : []),
139
+ ...omitColumns,
140
+ ]),
141
+ base_version: opts?.baseVersion ?? null,
142
+ };
143
+ }
144
+ }
145
+ class SyncularBridgeDriver extends BaseSqliteDriver {
146
+ constructor(bridge) {
147
+ super(async () => {
148
+ this.conn = new SyncularBridgeConnection(bridge);
149
+ });
150
+ }
151
+ async destroy() {
152
+ this.conn = undefined;
153
+ }
154
+ }
155
+ class SyncularBridgeConnection {
156
+ bridge;
157
+ constructor(bridge) {
158
+ this.bridge = bridge;
159
+ }
160
+ async executeQuery(compiledQuery) {
161
+ assertSyncularReadonlySql(compiledQuery.sql);
162
+ const result = await this.bridge.executeSql({
163
+ sql: compiledQuery.sql,
164
+ parameters: compiledQuery.parameters,
165
+ });
166
+ return {
167
+ rows: result.rows,
168
+ numAffectedRows: result.numAffectedRows == null
169
+ ? undefined
170
+ : BigInt(result.numAffectedRows),
171
+ insertId: result.insertId == null ? undefined : BigInt(result.insertId),
172
+ };
173
+ }
174
+ streamQuery(_compiledQuery, _chunkSize) {
175
+ throw new Error('Syncular bridge dialect does not support streaming.');
176
+ }
177
+ }
178
+ function createBridgePresence(bridge) {
179
+ return (bridge.presence ?? {
180
+ get: () => [],
181
+ join: unsupportedFn('presence.join'),
182
+ leave: unsupportedFn('presence.leave'),
183
+ updateMetadata: unsupportedFn('presence.updateMetadata'),
184
+ onChange: () => noop,
185
+ });
186
+ }
187
+ function createBridgeConflicts(bridge) {
188
+ return (bridge.conflicts ?? {
189
+ list: async () => [],
190
+ retryKeepLocal: unsupportedFn('conflicts.retryKeepLocal'),
191
+ resolve: unsupportedFn('conflicts.resolve'),
192
+ });
193
+ }
194
+ function createBridgeBlobs(bridge) {
195
+ return {
196
+ getUploadQueueStats: async () => bridge.blobs?.getUploadQueueStats?.() ?? {
197
+ pending: 0,
198
+ uploading: 0,
199
+ failed: 0,
200
+ },
201
+ processUploadQueue: async (options) => bridge.blobs?.processUploadQueue?.(options) ?? { uploaded: 0, failed: 0 },
202
+ retrieve: bridge.blobs?.retrieve ??
203
+ (async () => {
204
+ throw new Error('Syncular bridge does not implement blob retrieval.');
205
+ }),
206
+ };
207
+ }
208
+ function resolveBridgeStatusSnapshot(bridge) {
209
+ const snapshot = readSynchronousStatus(bridge);
210
+ const connection = snapshot.connection ?? {
211
+ closed: false,
212
+ pendingRequests: 0,
213
+ realtime: 'disconnected',
214
+ };
215
+ const lifecycle = snapshot.lifecycle ?? {
216
+ phase: connection.closed ? 'closed' : 'offline',
217
+ realtime: connection.realtime,
218
+ online: connection.realtime === 'connected',
219
+ requiresAction: false,
220
+ pendingRequests: connection.pendingRequests,
221
+ ...(snapshot.outbox ? { outbox: snapshot.outbox } : {}),
222
+ ...(snapshot.conflicts ? { conflicts: snapshot.conflicts } : {}),
223
+ };
224
+ const outbox = snapshot.outbox ?? lifecycle.outbox ?? null;
225
+ const conflicts = snapshot.conflicts ?? lifecycle.conflicts ?? null;
226
+ return {
227
+ lifecycle,
228
+ connection,
229
+ outbox,
230
+ conflicts,
231
+ isConnected: connection.realtime === 'connected' && !connection.closed,
232
+ isSyncing: lifecycle.phase === 'syncing' || lifecycle.phase === 'recovering',
233
+ hasPendingMutations: (outbox?.pending ?? 0) + (outbox?.sending ?? 0) > 0,
234
+ hasConflicts: (conflicts?.unresolved ?? 0) > 0,
235
+ requiresAction: lifecycle.requiresAction,
236
+ };
237
+ }
238
+ function readSynchronousStatus(bridge) {
239
+ if (!bridge.getStatus)
240
+ return {};
241
+ const snapshot = bridge.getStatus();
242
+ if (isPromiseLike(snapshot)) {
243
+ throw new Error('Syncular bridge getStatus() must be synchronous for React snapshots.');
244
+ }
245
+ return snapshot;
246
+ }
247
+ function normalizeMutationReceipt(value) {
248
+ if (typeof value === 'string')
249
+ return { commitId: value, clientCommitId: value };
250
+ return value;
251
+ }
252
+ function sanitizeOperationPayload(payload, omitColumns) {
253
+ const omit = new Set(omitColumns);
254
+ const out = {};
255
+ for (const [key, value] of Object.entries(payload)) {
256
+ if (!omit.has(key))
257
+ out[key] = value;
258
+ }
259
+ return out;
260
+ }
261
+ function objectRecord(value) {
262
+ return value && typeof value === 'object' && !Array.isArray(value)
263
+ ? { ...value }
264
+ : {};
265
+ }
266
+ function unsupportedFn(method) {
267
+ return () => {
268
+ throw new Error(`Syncular bridge does not implement ${method}.`);
269
+ };
270
+ }
271
+ function requireBridgeMethod(fn, method) {
272
+ if (typeof fn === 'function')
273
+ return fn;
274
+ return unsupportedFn(method);
275
+ }
276
+ function isPromiseLike(value) {
277
+ return (value != null &&
278
+ typeof value === 'object' &&
279
+ typeof value.then === 'function');
280
+ }
281
+ function noop() { }
282
+ //# sourceMappingURL=bridge-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-client.js","sourceRoot":"","sources":["../src/bridge-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ResolvedSyncularClientConfig, SyncularClientConfig } from './types';
2
+ export declare const SYNCULAR_DEFAULT_STORAGE = "opfsSahPool";
3
+ export declare const SYNCULAR_LOCAL_DISABLED_BASE_URL = "syncular-local://disabled";
4
+ export declare function resolveSyncularClientConfig(config: SyncularClientConfig): ResolvedSyncularClientConfig;
5
+ export declare function isSyncularRemoteMode(config: Pick<ResolvedSyncularClientConfig, 'mode'>): boolean;
6
+ //# sourceMappingURL=client-config.d.ts.map