@syncular/tauri 0.30.7 → 0.30.9

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.
package/README.md CHANGED
@@ -173,3 +173,16 @@ The snapshot API revision removes the individual `schemaFloor`, `leaseState`,
173
173
  `await client.statusSnapshot()`. Collection and outcome reads remain methods.
174
174
  React accepts the bridge directly. See the
175
175
  [client migration](https://syncular.dev/platform-web/#snapshot-api-migration).
176
+
177
+
178
+ ## Atomic sparse writes and retained conflicts
179
+
180
+ The native client accepts mixed `patch`, `upsert` and `delete` operations in one
181
+ `mutate` call. Sparse patches include the primary key and supplied columns.
182
+ Omitted encrypted columns require no key and retain their ciphertext.
183
+
184
+ Set `retainFailedCommits: true` to preserve rejected aggregate intent across
185
+ pulls and restart. `commitOutcome(id).retainedRows` exposes intended rows and the
186
+ latest authorized server base. Resolve with `resolved_keep_server`, or create a
187
+ reviewed replacement and link it with `superseded`. Scope revocation and local
188
+ security purge remove whole retained aggregates.
package/dist/index.d.ts CHANGED
@@ -68,6 +68,7 @@ export interface TauriSyncClientConfig {
68
68
  * connected instead of falling back to HTTP.
69
69
  */
70
70
  readonly realtimePolicy?: SyncClientConfig['realtimePolicy'];
71
+ readonly retainFailedCommits?: boolean;
71
72
  /**
72
73
  * Portable E2EE keys and declarative per-row key-id columns. Raw keys are
73
74
  * encoded into the native command envelope and never sent to the server.
package/dist/index.js CHANGED
@@ -722,6 +722,9 @@ export async function createTauriSyncClient(config) {
722
722
  ...(config.database !== undefined ? { database: config.database } : {}),
723
723
  schema: config.schema,
724
724
  ...(config.limits !== undefined ? { limits: config.limits } : {}),
725
+ ...(config.retainFailedCommits !== undefined
726
+ ? { retainFailedCommits: config.retainFailedCommits }
727
+ : {}),
725
728
  ...(config.realtimePolicy !== undefined
726
729
  ? { realtimePolicy: config.realtimePolicy }
727
730
  : {}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syncular/tauri",
3
- "version": "0.30.7",
3
+ "version": "0.30.9",
4
4
  "description": "Tauri integration for the Syncular client",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Benjamin Kniffler",
@@ -48,12 +48,12 @@
48
48
  "test": "bun test"
49
49
  },
50
50
  "dependencies": {
51
- "@syncular/client": "0.30.7"
51
+ "@syncular/client": "0.30.9"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "@tauri-apps/api": ">=2.0.0"
55
55
  },
56
56
  "devDependencies": {
57
- "@syncular/react": "0.30.7"
57
+ "@syncular/react": "0.30.9"
58
58
  }
59
59
  }
package/src/index.ts CHANGED
@@ -133,6 +133,7 @@ export interface TauriSyncClientConfig {
133
133
  * connected instead of falling back to HTTP.
134
134
  */
135
135
  readonly realtimePolicy?: SyncClientConfig['realtimePolicy'];
136
+ readonly retainFailedCommits?: boolean;
136
137
  /**
137
138
  * Portable E2EE keys and declarative per-row key-id columns. Raw keys are
138
139
  * encoded into the native command envelope and never sent to the server.
@@ -1093,6 +1094,9 @@ export async function createTauriSyncClient(
1093
1094
  ...(config.database !== undefined ? { database: config.database } : {}),
1094
1095
  schema: config.schema,
1095
1096
  ...(config.limits !== undefined ? { limits: config.limits } : {}),
1097
+ ...(config.retainFailedCommits !== undefined
1098
+ ? { retainFailedCommits: config.retainFailedCommits }
1099
+ : {}),
1096
1100
  ...(config.realtimePolicy !== undefined
1097
1101
  ? { realtimePolicy: config.realtimePolicy }
1098
1102
  : {}),