Skip to content

Conversation

@KyleAMathews
Copy link
Collaborator

This fixes a TypeScript error where queryCollectionOptions (and other collection options functions) produce Collections that TypeScript reports as missing the compareOptions property.

Reported on discord @ https://discord.com/channels/719702312431386674/1438802082382483496

The issue occurred because:

  1. The Collection interface extends CollectionImpl but didn't explicitly declare the compareOptions property
  2. CollectionImpl has a compareOptions getter, but TypeScript's Pick utility (used in CollectionLike) couldn't properly resolve it from the interface

The fix explicitly declares compareOptions as a readonly property in the Collection interface, making it properly accessible for type checking.

Fixes the issue reported in Discord where users get: "Type 'Collection<T, string, any, any, any>' is missing properties: comparisonOpts, compareOptions"

Related to PR #762 which added defaultStringCollation support.

🎯 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).

This fixes a TypeScript error where queryCollectionOptions (and other
collection options functions) produce Collections that TypeScript
reports as missing the compareOptions property.

The issue occurred because:
1. The Collection interface extends CollectionImpl but didn't explicitly
   declare the compareOptions property
2. CollectionImpl has a compareOptions getter, but TypeScript's Pick
   utility (used in CollectionLike) couldn't properly resolve it from
   the interface

The fix explicitly declares compareOptions as a readonly property in
the Collection interface, making it properly accessible for type
checking.

Fixes the issue reported in Discord where users get:
"Type 'Collection<T, string, any, any, any>' is missing properties:
comparisonOpts, compareOptions"

Related to PR #762 which added defaultStringCollation support.
@changeset-bot
Copy link

changeset-bot bot commented Nov 14, 2025

⚠️ No Changeset found

Latest commit: 2e4bced

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

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

@pkg-pr-new
Copy link

pkg-pr-new bot commented Nov 14, 2025

More templates

@tanstack/angular-db

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

@tanstack/db

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

@tanstack/db-ivm

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

@tanstack/electric-db-collection

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

@tanstack/offline-transactions

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

@tanstack/powersync-db-collection

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

@tanstack/query-db-collection

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

@tanstack/react-db

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

@tanstack/rxdb-db-collection

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

@tanstack/solid-db

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

@tanstack/svelte-db

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

@tanstack/trailbase-db-collection

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

@tanstack/vue-db

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

commit: 2e4bced

@github-actions
Copy link
Contributor

Size Change: 0 B

Total Size: 86 kB

ℹ️ View Unchanged
Filename Size
./packages/db/dist/esm/collection/change-events.js 1.38 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.26 kB
./packages/db/dist/esm/collection/state.js 3.43 kB
./packages/db/dist/esm/collection/subscription.js 2.42 kB
./packages/db/dist/esm/collection/sync.js 2.12 kB
./packages/db/dist/esm/deferred.js 207 B
./packages/db/dist/esm/errors.js 4.11 kB
./packages/db/dist/esm/event-emitter.js 748 B
./packages/db/dist/esm/index.js 2.63 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.87 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.04 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.22 kB
./packages/db/dist/esm/query/builder/functions.js 733 B
./packages/db/dist/esm/query/builder/index.js 3.84 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 691 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.25 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.26 kB
./packages/db/dist/esm/query/live/collection-registry.js 264 B
./packages/db/dist/esm/query/live/collection-subscriber.js 1.77 kB
./packages/db/dist/esm/query/live/internal.js 130 B
./packages/db/dist/esm/query/optimizer.js 2.6 kB
./packages/db/dist/esm/query/predicate-utils.js 2.88 kB
./packages/db/dist/esm/query/subset-dedupe.js 921 B
./packages/db/dist/esm/scheduler.js 1.21 kB
./packages/db/dist/esm/SortedMap.js 1.18 kB
./packages/db/dist/esm/strategies/debounceStrategy.js 237 B
./packages/db/dist/esm/strategies/queueStrategy.js 418 B
./packages/db/dist/esm/strategies/throttleStrategy.js 236 B
./packages/db/dist/esm/transactions.js 2.9 kB
./packages/db/dist/esm/utils.js 881 B
./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/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

Size Change: 0 B

Total Size: 3.34 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.11 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

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