Skip to content

Conversation

@KyleAMathews
Copy link
Collaborator

🎯 Changes

βœ… Checklist

  • I have followed the steps in the Contributing guide.
  • I have tested this code locally with pnpm test:pr.

πŸš€ Release Impact

  • This change affects published code, and I have generated a changeset.
  • This change is docs/CI/dev-only (no release).

- Add @fast-check/vitest and fast-check dependencies
- Add property-based tests for deepEquals (reflexivity, symmetry, transitivity)
- Add property-based tests for comparators (antisymmetry, transitivity, consistency)
- Add tests for normalizeValue and areValuesEqual utilities
- Document known edge case: deepEquals asymmetry between Date and Temporal.Duration
Previously, comparing values like `deepEquals(Date, Temporal.Duration)`
and `deepEquals(Temporal.Duration, Date)` could return different results
because special type checks (Date, RegExp, Map, Set, TypedArray, Temporal)
only checked if `a` was the special type, not if `b` was.

This fix adds symmetric checks after each special type handler:
- If `b` is Date but `a` is not, return false
- If `b` is RegExp but `a` is not, return false
- If `b` is Map but `a` is not, return false
- If `b` is Set but `a` is not, return false
- If `b` is TypedArray but `a` is not, return false
- If `b` is Temporal but `a` is not, return false
- If `b` is Array but `a` is not, return false

This ensures deepEquals is a proper equivalence relation where
`deepEquals(a, b) === deepEquals(b, a)` always holds.
@changeset-bot
Copy link

changeset-bot bot commented Dec 14, 2025

πŸ¦‹ Changeset detected

Latest commit: 515a6c8

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 12 packages
Name Type
@tanstack/db Patch
@tanstack/angular-db Patch
@tanstack/electric-db-collection Patch
@tanstack/offline-transactions Patch
@tanstack/powersync-db-collection Patch
@tanstack/query-db-collection Patch
@tanstack/react-db Patch
@tanstack/rxdb-db-collection Patch
@tanstack/solid-db Patch
@tanstack/svelte-db Patch
@tanstack/trailbase-db-collection Patch
@tanstack/vue-db Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@pkg-pr-new
Copy link

pkg-pr-new bot commented Dec 14, 2025

More templates

@tanstack/angular-db

npm i https://pkg.pr.new/@tanstack/angular-db@1018

@tanstack/db

npm i https://pkg.pr.new/@tanstack/db@1018

@tanstack/db-ivm

npm i https://pkg.pr.new/@tanstack/db-ivm@1018

@tanstack/electric-db-collection

npm i https://pkg.pr.new/@tanstack/electric-db-collection@1018

@tanstack/offline-transactions

npm i https://pkg.pr.new/@tanstack/offline-transactions@1018

@tanstack/powersync-db-collection

npm i https://pkg.pr.new/@tanstack/powersync-db-collection@1018

@tanstack/query-db-collection

npm i https://pkg.pr.new/@tanstack/query-db-collection@1018

@tanstack/react-db

npm i https://pkg.pr.new/@tanstack/react-db@1018

@tanstack/rxdb-db-collection

npm i https://pkg.pr.new/@tanstack/rxdb-db-collection@1018

@tanstack/solid-db

npm i https://pkg.pr.new/@tanstack/solid-db@1018

@tanstack/svelte-db

npm i https://pkg.pr.new/@tanstack/svelte-db@1018

@tanstack/trailbase-db-collection

npm i https://pkg.pr.new/@tanstack/trailbase-db-collection@1018

@tanstack/vue-db

npm i https://pkg.pr.new/@tanstack/vue-db@1018

commit: 515a6c8

@github-actions
Copy link
Contributor

github-actions bot commented Dec 14, 2025

Size Change: +43 B (+0.05%)

Total Size: 88.6 kB

Filename Size Change
./packages/db/dist/esm/utils.js 924 B +43 B (+4.88%) πŸ”
ℹ️ View Unchanged
Filename Size
./packages/db/dist/esm/collection/change-events.js 1.39 kB
./packages/db/dist/esm/collection/changes.js 977 B
./packages/db/dist/esm/collection/events.js 388 B
./packages/db/dist/esm/collection/index.js 3.24 kB
./packages/db/dist/esm/collection/indexes.js 1.1 kB
./packages/db/dist/esm/collection/lifecycle.js 1.67 kB
./packages/db/dist/esm/collection/mutations.js 2.34 kB
./packages/db/dist/esm/collection/state.js 3.46 kB
./packages/db/dist/esm/collection/subscription.js 2.78 kB
./packages/db/dist/esm/collection/sync.js 2.37 kB
./packages/db/dist/esm/deferred.js 207 B
./packages/db/dist/esm/errors.js 4.27 kB
./packages/db/dist/esm/event-emitter.js 748 B
./packages/db/dist/esm/index.js 2.68 kB
./packages/db/dist/esm/indexes/auto-index.js 742 B
./packages/db/dist/esm/indexes/base-index.js 766 B
./packages/db/dist/esm/indexes/btree-index.js 1.93 kB
./packages/db/dist/esm/indexes/lazy-index.js 1.1 kB
./packages/db/dist/esm/indexes/reverse-index.js 513 B
./packages/db/dist/esm/local-only.js 837 B
./packages/db/dist/esm/local-storage.js 2.1 kB
./packages/db/dist/esm/optimistic-action.js 359 B
./packages/db/dist/esm/paced-mutations.js 496 B
./packages/db/dist/esm/proxy.js 3.75 kB
./packages/db/dist/esm/query/builder/functions.js 733 B
./packages/db/dist/esm/query/builder/index.js 3.96 kB
./packages/db/dist/esm/query/builder/ref-proxy.js 917 B
./packages/db/dist/esm/query/compiler/evaluators.js 1.35 kB
./packages/db/dist/esm/query/compiler/expressions.js 430 B
./packages/db/dist/esm/query/compiler/group-by.js 1.8 kB
./packages/db/dist/esm/query/compiler/index.js 1.96 kB
./packages/db/dist/esm/query/compiler/joins.js 2 kB
./packages/db/dist/esm/query/compiler/order-by.js 1.46 kB
./packages/db/dist/esm/query/compiler/select.js 1.07 kB
./packages/db/dist/esm/query/expression-helpers.js 1.43 kB
./packages/db/dist/esm/query/ir.js 673 B
./packages/db/dist/esm/query/live-query-collection.js 360 B
./packages/db/dist/esm/query/live/collection-config-builder.js 5.33 kB
./packages/db/dist/esm/query/live/collection-registry.js 264 B
./packages/db/dist/esm/query/live/collection-subscriber.js 1.79 kB
./packages/db/dist/esm/query/live/internal.js 130 B
./packages/db/dist/esm/query/optimizer.js 2.56 kB
./packages/db/dist/esm/query/predicate-utils.js 2.97 kB
./packages/db/dist/esm/query/subset-dedupe.js 921 B
./packages/db/dist/esm/scheduler.js 1.3 kB
./packages/db/dist/esm/SortedMap.js 1.3 kB
./packages/db/dist/esm/strategies/debounceStrategy.js 247 B
./packages/db/dist/esm/strategies/queueStrategy.js 428 B
./packages/db/dist/esm/strategies/throttleStrategy.js 246 B
./packages/db/dist/esm/transactions.js 2.9 kB
./packages/db/dist/esm/utils/browser-polyfills.js 304 B
./packages/db/dist/esm/utils/btree.js 5.61 kB
./packages/db/dist/esm/utils/comparison.js 852 B
./packages/db/dist/esm/utils/cursor.js 457 B
./packages/db/dist/esm/utils/index-optimization.js 1.51 kB
./packages/db/dist/esm/utils/type-guards.js 157 B

compressed-size-action::db-package-size

@github-actions
Copy link
Contributor

github-actions bot commented Dec 14, 2025

Size Change: 0 B

Total Size: 3.35 kB

ℹ️ View Unchanged
Filename Size
./packages/react-db/dist/esm/index.js 225 B
./packages/react-db/dist/esm/useLiveInfiniteQuery.js 1.17 kB
./packages/react-db/dist/esm/useLiveQuery.js 1.12 kB
./packages/react-db/dist/esm/useLiveSuspenseQuery.js 431 B
./packages/react-db/dist/esm/usePacedMutations.js 401 B

compressed-size-action::react-db-package-size

claude and others added 3 commits December 14, 2025 21:49
Add fast-check property-based tests for additional modules:
- hash.property.test.ts: Tests determinism, structural equality, property
  order independence, number normalization, and type distinction
- cursor.property.test.ts: Tests empty input handling, single/multi-column
  cursor generation, operator consistency, and value preservation
- pg-serializer.property.test.ts: Tests serialization round-trips for
  strings, numbers, bigints, booleans, dates, and arrays
Fix TypeScript type errors in cursor.property.test.ts by adding explicit
type casts for nulls and stringSort parameters at usage sites.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants