diff --git a/.changeset/fix-array-iteration-proxy.md b/.changeset/fix-array-iteration-proxy.md deleted file mode 100644 index 34cdfa11b..000000000 --- a/.changeset/fix-array-iteration-proxy.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -"@tanstack/db": patch ---- - -Fix change tracking for array items accessed via iteration methods (find, forEach, for...of, etc.) - -Previously, modifications to array items retrieved via iteration methods were not tracked by the change proxy because these methods returned raw array elements instead of proxied versions. This caused `getChanges()` to return an empty object, which in turn caused `createOptimisticAction`'s `mutationFn` to never be called when using patterns like: - -```ts -collection.update(id, (draft) => { - const item = draft.items.find((x) => x.id === targetId) - if (item) { - item.value = newValue // This change was not tracked! - } -}) -``` - -The fix adds proxy handling for array iteration methods similar to how Map/Set iteration is already handled, ensuring that callbacks receive proxied elements and returned elements are properly proxied. - -Also refactors proxy.ts for improved readability by extracting helper functions and hoisting constants to module scope. diff --git a/examples/react/offline-transactions/package.json b/examples/react/offline-transactions/package.json index 4695b2cd9..01c66357c 100644 --- a/examples/react/offline-transactions/package.json +++ b/examples/react/offline-transactions/package.json @@ -11,7 +11,7 @@ "dependencies": { "@tanstack/offline-transactions": ">=1.0.0", "@tanstack/query-db-collection": ">=1.0.5", - "@tanstack/react-db": ">=0.1.50", + "@tanstack/react-db": ">=0.1.51", "@tanstack/react-query": "^5.90.10", "@tanstack/react-router": "^1.139.3", "@tanstack/react-router-devtools": "^1.139.3", diff --git a/examples/react/projects/package.json b/examples/react/projects/package.json index f5b9e47a5..d8bbda93a 100644 --- a/examples/react/projects/package.json +++ b/examples/react/projects/package.json @@ -18,7 +18,7 @@ "@tailwindcss/vite": "^4.1.17", "@tanstack/query-core": "^5.90.10", "@tanstack/query-db-collection": ">=1.0.5", - "@tanstack/react-db": ">=0.1.50", + "@tanstack/react-db": ">=0.1.51", "@tanstack/react-router": "^1.139.3", "@tanstack/react-router-devtools": "^1.139.3", "@tanstack/react-router-with-query": "^1.130.17", diff --git a/packages/angular-db/CHANGELOG.md b/packages/angular-db/CHANGELOG.md index 3a9982c49..9a97b9258 100644 --- a/packages/angular-db/CHANGELOG.md +++ b/packages/angular-db/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/angular-db +## 0.1.33 + +### Patch Changes + +- Updated dependencies [[`295cb45`](https://github.com/TanStack/db/commit/295cb45797572b232650eddd3d62ffa937fa2fd7)]: + - @tanstack/db@0.5.7 + ## 0.1.32 ### Patch Changes diff --git a/packages/angular-db/package.json b/packages/angular-db/package.json index f66bd7064..c437dd047 100644 --- a/packages/angular-db/package.json +++ b/packages/angular-db/package.json @@ -1,7 +1,7 @@ { "name": "@tanstack/angular-db", "description": "Angular integration for @tanstack/db", - "version": "0.1.32", + "version": "0.1.33", "author": "Ethan McDaniel", "license": "MIT", "repository": { diff --git a/packages/db-collection-e2e/CHANGELOG.md b/packages/db-collection-e2e/CHANGELOG.md index 857ffca89..a15e573ca 100644 --- a/packages/db-collection-e2e/CHANGELOG.md +++ b/packages/db-collection-e2e/CHANGELOG.md @@ -1,5 +1,14 @@ # @tanstack/db-collection-e2e +## 0.0.9 + +### Patch Changes + +- Updated dependencies [[`295cb45`](https://github.com/TanStack/db/commit/295cb45797572b232650eddd3d62ffa937fa2fd7)]: + - @tanstack/db@0.5.7 + - @tanstack/electric-db-collection@0.2.7 + - @tanstack/query-db-collection@1.0.5 + ## 0.0.8 ### Patch Changes diff --git a/packages/db-collection-e2e/package.json b/packages/db-collection-e2e/package.json index 936679975..64610fb8d 100644 --- a/packages/db-collection-e2e/package.json +++ b/packages/db-collection-e2e/package.json @@ -1,6 +1,6 @@ { "name": "@tanstack/db-collection-e2e", - "version": "0.0.8", + "version": "0.0.9", "private": true, "description": "End-to-end test suite for TanStack DB collections", "type": "module", diff --git a/packages/db/CHANGELOG.md b/packages/db/CHANGELOG.md index 6b69db4b9..d378f8737 100644 --- a/packages/db/CHANGELOG.md +++ b/packages/db/CHANGELOG.md @@ -1,5 +1,26 @@ # @tanstack/db +## 0.5.7 + +### Patch Changes + +- Fix change tracking for array items accessed via iteration methods (find, forEach, for...of, etc.) ([#910](https://github.com/TanStack/db/pull/910)) + + Previously, modifications to array items retrieved via iteration methods were not tracked by the change proxy because these methods returned raw array elements instead of proxied versions. This caused `getChanges()` to return an empty object, which in turn caused `createOptimisticAction`'s `mutationFn` to never be called when using patterns like: + + ```ts + collection.update(id, (draft) => { + const item = draft.items.find((x) => x.id === targetId) + if (item) { + item.value = newValue // This change was not tracked! + } + }) + ``` + + The fix adds proxy handling for array iteration methods similar to how Map/Set iteration is already handled, ensuring that callbacks receive proxied elements and returned elements are properly proxied. + + Also refactors proxy.ts for improved readability by extracting helper functions and hoisting constants to module scope. + ## 0.5.6 ### Patch Changes diff --git a/packages/db/package.json b/packages/db/package.json index d145c5b46..f45c74d17 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -1,7 +1,7 @@ { "name": "@tanstack/db", "description": "A reactive client store for building super fast apps on sync", - "version": "0.5.6", + "version": "0.5.7", "dependencies": { "@standard-schema/spec": "^1.0.0", "@tanstack/db-ivm": "workspace:*", diff --git a/packages/electric-db-collection/CHANGELOG.md b/packages/electric-db-collection/CHANGELOG.md index a2b0b12c8..2a0043eda 100644 --- a/packages/electric-db-collection/CHANGELOG.md +++ b/packages/electric-db-collection/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/electric-db-collection +## 0.2.7 + +### Patch Changes + +- Updated dependencies [[`295cb45`](https://github.com/TanStack/db/commit/295cb45797572b232650eddd3d62ffa937fa2fd7)]: + - @tanstack/db@0.5.7 + ## 0.2.6 ### Patch Changes diff --git a/packages/electric-db-collection/package.json b/packages/electric-db-collection/package.json index ed9727b34..60ecd1efb 100644 --- a/packages/electric-db-collection/package.json +++ b/packages/electric-db-collection/package.json @@ -1,7 +1,7 @@ { "name": "@tanstack/electric-db-collection", "description": "ElectricSQL collection for TanStack DB", - "version": "0.2.6", + "version": "0.2.7", "dependencies": { "@electric-sql/client": "^1.1.5", "@standard-schema/spec": "^1.0.0", diff --git a/packages/powersync-db-collection/CHANGELOG.md b/packages/powersync-db-collection/CHANGELOG.md index a0e61c739..7e890417e 100644 --- a/packages/powersync-db-collection/CHANGELOG.md +++ b/packages/powersync-db-collection/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/powersync-db-collection +## 0.1.11 + +### Patch Changes + +- Updated dependencies [[`295cb45`](https://github.com/TanStack/db/commit/295cb45797572b232650eddd3d62ffa937fa2fd7)]: + - @tanstack/db@0.5.7 + ## 0.1.10 ### Patch Changes diff --git a/packages/powersync-db-collection/package.json b/packages/powersync-db-collection/package.json index 2dac0ddc8..48700842b 100644 --- a/packages/powersync-db-collection/package.json +++ b/packages/powersync-db-collection/package.json @@ -1,7 +1,7 @@ { "name": "@tanstack/powersync-db-collection", "description": "PowerSync collection for TanStack DB", - "version": "0.1.10", + "version": "0.1.11", "dependencies": { "@standard-schema/spec": "^1.0.0", "@tanstack/db": "workspace:*", diff --git a/packages/react-db/CHANGELOG.md b/packages/react-db/CHANGELOG.md index 80b87433b..5ccc47b53 100644 --- a/packages/react-db/CHANGELOG.md +++ b/packages/react-db/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/react-db +## 0.1.51 + +### Patch Changes + +- Updated dependencies [[`295cb45`](https://github.com/TanStack/db/commit/295cb45797572b232650eddd3d62ffa937fa2fd7)]: + - @tanstack/db@0.5.7 + ## 0.1.50 ### Patch Changes diff --git a/packages/react-db/package.json b/packages/react-db/package.json index ea8885997..6bfb06814 100644 --- a/packages/react-db/package.json +++ b/packages/react-db/package.json @@ -1,7 +1,7 @@ { "name": "@tanstack/react-db", "description": "React integration for @tanstack/db", - "version": "0.1.50", + "version": "0.1.51", "author": "Kyle Mathews", "license": "MIT", "repository": { diff --git a/packages/rxdb-db-collection/CHANGELOG.md b/packages/rxdb-db-collection/CHANGELOG.md index 968d5f89f..55117ac00 100644 --- a/packages/rxdb-db-collection/CHANGELOG.md +++ b/packages/rxdb-db-collection/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/rxdb-db-collection +## 0.1.39 + +### Patch Changes + +- Updated dependencies [[`295cb45`](https://github.com/TanStack/db/commit/295cb45797572b232650eddd3d62ffa937fa2fd7)]: + - @tanstack/db@0.5.7 + ## 0.1.38 ### Patch Changes diff --git a/packages/rxdb-db-collection/package.json b/packages/rxdb-db-collection/package.json index 7f28f97ef..74455afd5 100644 --- a/packages/rxdb-db-collection/package.json +++ b/packages/rxdb-db-collection/package.json @@ -1,7 +1,7 @@ { "name": "@tanstack/rxdb-db-collection", "description": "RxDB collection for TanStack DB", - "version": "0.1.38", + "version": "0.1.39", "dependencies": { "rxdb": "16.20.0", "@standard-schema/spec": "^1.0.0", diff --git a/packages/solid-db/CHANGELOG.md b/packages/solid-db/CHANGELOG.md index 22e8654b6..6a5720be1 100644 --- a/packages/solid-db/CHANGELOG.md +++ b/packages/solid-db/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/react-db +## 0.1.50 + +### Patch Changes + +- Updated dependencies [[`295cb45`](https://github.com/TanStack/db/commit/295cb45797572b232650eddd3d62ffa937fa2fd7)]: + - @tanstack/db@0.5.7 + ## 0.1.49 ### Patch Changes diff --git a/packages/solid-db/package.json b/packages/solid-db/package.json index 17d6c369e..77c260d3a 100644 --- a/packages/solid-db/package.json +++ b/packages/solid-db/package.json @@ -1,7 +1,7 @@ { "name": "@tanstack/solid-db", "description": "Solid integration for @tanstack/db", - "version": "0.1.49", + "version": "0.1.50", "author": "Kyle Mathews", "license": "MIT", "repository": { diff --git a/packages/svelte-db/CHANGELOG.md b/packages/svelte-db/CHANGELOG.md index ad92e4c64..50fb84af1 100644 --- a/packages/svelte-db/CHANGELOG.md +++ b/packages/svelte-db/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/svelte-db +## 0.1.50 + +### Patch Changes + +- Updated dependencies [[`295cb45`](https://github.com/TanStack/db/commit/295cb45797572b232650eddd3d62ffa937fa2fd7)]: + - @tanstack/db@0.5.7 + ## 0.1.49 ### Patch Changes diff --git a/packages/svelte-db/package.json b/packages/svelte-db/package.json index b825904ee..216a94f35 100644 --- a/packages/svelte-db/package.json +++ b/packages/svelte-db/package.json @@ -1,7 +1,7 @@ { "name": "@tanstack/svelte-db", "description": "Svelte integration for @tanstack/db", - "version": "0.1.49", + "version": "0.1.50", "dependencies": { "@tanstack/db": "workspace:*" }, diff --git a/packages/trailbase-db-collection/CHANGELOG.md b/packages/trailbase-db-collection/CHANGELOG.md index 9236230e5..75db29147 100644 --- a/packages/trailbase-db-collection/CHANGELOG.md +++ b/packages/trailbase-db-collection/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/trailbase-db-collection +## 0.1.51 + +### Patch Changes + +- Updated dependencies [[`295cb45`](https://github.com/TanStack/db/commit/295cb45797572b232650eddd3d62ffa937fa2fd7)]: + - @tanstack/db@0.5.7 + ## 0.1.50 ### Patch Changes diff --git a/packages/trailbase-db-collection/package.json b/packages/trailbase-db-collection/package.json index 912d8fc0a..f96c2b54a 100644 --- a/packages/trailbase-db-collection/package.json +++ b/packages/trailbase-db-collection/package.json @@ -1,7 +1,7 @@ { "name": "@tanstack/trailbase-db-collection", "description": "TrailBase collection for TanStack DB", - "version": "0.1.50", + "version": "0.1.51", "dependencies": { "@standard-schema/spec": "^1.0.0", "@tanstack/db": "workspace:*", diff --git a/packages/vue-db/CHANGELOG.md b/packages/vue-db/CHANGELOG.md index 9e0f876ed..cb6033aaa 100644 --- a/packages/vue-db/CHANGELOG.md +++ b/packages/vue-db/CHANGELOG.md @@ -1,5 +1,12 @@ # @tanstack/vue-db +## 0.0.83 + +### Patch Changes + +- Updated dependencies [[`295cb45`](https://github.com/TanStack/db/commit/295cb45797572b232650eddd3d62ffa937fa2fd7)]: + - @tanstack/db@0.5.7 + ## 0.0.82 ### Patch Changes diff --git a/packages/vue-db/package.json b/packages/vue-db/package.json index c7bb57d75..771a493cc 100644 --- a/packages/vue-db/package.json +++ b/packages/vue-db/package.json @@ -1,7 +1,7 @@ { "name": "@tanstack/vue-db", "description": "Vue integration for @tanstack/db", - "version": "0.0.82", + "version": "0.0.83", "author": "Kyle Mathews", "license": "MIT", "repository": {