feat: enhance deduplicateItems with cross-batch/execution tracking #144
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🎯 Changes
This PR enhances the
deduplicateItemsoption to support cross-batch/execution duplicate detection, simplifying the API by consolidating all deduplication functionality under a single option.What Changed
Batcher & Queuer Enhancements:
deduplicateItemsnow automatically tracksprocessedKeysacross batches/executionsmaxTrackedKeysoption (default: 1000) with FIFO evictiononDuplicatecallback withexistingItemparameter to distinguish duplicate types:existingItem === undefined: cross-batch/execution duplicate (already processed)existingItem !== undefined: in-batch/queue duplicateclearProcessedKeys()method for manual key managementUsage Example
Design Rationale
This follows the pattern of
RateLimiter'sexecutionTimestracking:Test Coverage
maxTrackedKeysFIFO eviction behaviorclearProcessedKeys()methodonDuplicatecallback invocationsDocumentation & Examples
examples/react/useBatcherDedupdemonstrating:processedKeysstate displaymaxTrackedKeysandclearProcessedKeys()usage✅ Checklist
pnpm run test:pr.🚀 Release Impact
Changeset:
.changeset/add-deduplication-feature.md