-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update Cache Interface types #2554
Conversation
This pull request is automatically built and testable in CodeSandbox. To see build info of the built libraries, click here or the icon next to each commit SHA. Latest deployment of this branch, based on commit b58d4a0:
|
I also just noticed that the docs are incorrect as well and list the type of interface Cache<Data> {
get(key: string): Data | undefined
set(key: string, value: Data): void
delete(key: string): void
keys(): IterableIterator<string>
} |
Thanks for the PR ! I think we should take the alternative approach here. |
Awesome - I'll be happy to make those changes and get them pushed up tomorrow or sunday. |
Changes have been made, take a look when you have the chance @promer94 🚀 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [swr](https://swr.vercel.app) ([source](https://togithub.com/vercel/swr)) | [`2.1.2` -> `2.1.3`](https://renovatebot.com/diffs/npm/swr/2.1.2/2.1.3) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vercel/swr</summary> ### [`v2.1.3`](https://togithub.com/vercel/swr/releases/tag/v2.1.3) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.2...v2.1.3) #### What's Changed - Fix [#​2548](https://togithub.com/vercel/swr/issues/2548): pass origin key to subcription callback by [@​Zheaoli](https://togithub.com/Zheaoli) in [https://github.com/vercel/swr/pull/2550](https://togithub.com/vercel/swr/pull/2550) - Examples: fix type in axios-typescript example by [@​daochouwangu](https://togithub.com/daochouwangu) in [https://github.com/vercel/swr/pull/2552](https://togithub.com/vercel/swr/pull/2552) - Update Cache Interface types by [@​dmmulroy](https://togithub.com/dmmulroy) in [https://github.com/vercel/swr/pull/2554](https://togithub.com/vercel/swr/pull/2554) - fix: data passed to refreshInterval function is not latest by [@​hong24](https://togithub.com/hong24) in [https://github.com/vercel/swr/pull/2354](https://togithub.com/vercel/swr/pull/2354) - types: allow passing function as `Data` for `useSWRSubscriptionOptions` by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2551](https://togithub.com/vercel/swr/pull/2551) #### New Contributors - [@​Zheaoli](https://togithub.com/Zheaoli) made their first contribution in [https://github.com/vercel/swr/pull/2550](https://togithub.com/vercel/swr/pull/2550) - [@​daochouwangu](https://togithub.com/daochouwangu) made their first contribution in [https://github.com/vercel/swr/pull/2552](https://togithub.com/vercel/swr/pull/2552) - [@​dmmulroy](https://togithub.com/dmmulroy) made their first contribution in [https://github.com/vercel/swr/pull/2554](https://togithub.com/vercel/swr/pull/2554) **Full Changelog**: vercel/swr@v2.1.2...v2.1.3 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/kula-app/OnLaunch). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS40MC4wIiwidXBkYXRlZEluVmVyIjoiMzUuNDAuMCJ9-->
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [swr](https://swr.vercel.app) ([source](https://togithub.com/vercel/swr)) | [`2.1.2` -> `2.1.3`](https://renovatebot.com/diffs/npm/swr/2.1.2/2.1.3) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vercel/swr</summary> ### [`v2.1.3`](https://togithub.com/vercel/swr/releases/tag/v2.1.3) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.2...v2.1.3) #### What's Changed - Fix [#​2548](https://togithub.com/vercel/swr/issues/2548): pass origin key to subcription callback by [@​Zheaoli](https://togithub.com/Zheaoli) in [https://github.com/vercel/swr/pull/2550](https://togithub.com/vercel/swr/pull/2550) - Examples: fix type in axios-typescript example by [@​daochouwangu](https://togithub.com/daochouwangu) in [https://github.com/vercel/swr/pull/2552](https://togithub.com/vercel/swr/pull/2552) - Update Cache Interface types by [@​dmmulroy](https://togithub.com/dmmulroy) in [https://github.com/vercel/swr/pull/2554](https://togithub.com/vercel/swr/pull/2554) - fix: data passed to refreshInterval function is not latest by [@​hong24](https://togithub.com/hong24) in [https://github.com/vercel/swr/pull/2354](https://togithub.com/vercel/swr/pull/2354) - types: allow passing function as `Data` for `useSWRSubscriptionOptions` by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2551](https://togithub.com/vercel/swr/pull/2551) #### New Contributors - [@​Zheaoli](https://togithub.com/Zheaoli) made their first contribution in [https://github.com/vercel/swr/pull/2550](https://togithub.com/vercel/swr/pull/2550) - [@​daochouwangu](https://togithub.com/daochouwangu) made their first contribution in [https://github.com/vercel/swr/pull/2552](https://togithub.com/vercel/swr/pull/2552) - [@​dmmulroy](https://togithub.com/dmmulroy) made their first contribution in [https://github.com/vercel/swr/pull/2554](https://togithub.com/vercel/swr/pull/2554) **Full Changelog**: vercel/swr@v2.1.2...v2.1.3 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/David-Duefrene/dataviewer). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS40MC4wIiwidXBkYXRlZEluVmVyIjoiMzUuNDAuMCJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [swr](https://swr.vercel.app) ([source](https://togithub.com/vercel/swr)) | [`2.1.2` -> `2.1.5`](https://renovatebot.com/diffs/npm/swr/2.1.2/2.1.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vercel/swr</summary> ### [`v2.1.5`](https://togithub.com/vercel/swr/releases/tag/v2.1.5) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.4...v2.1.5) #### What's Changed - fix: missing interop helpers in bundle by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2582](https://togithub.com/vercel/swr/pull/2582) **Full Changelog**: vercel/swr@v2.1.4...v2.1.5 ### [`v2.1.4`](https://togithub.com/vercel/swr/releases/tag/v2.1.4) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.3...v2.1.4) #### What's Changed - Upgrade bundler by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2557](https://togithub.com/vercel/swr/pull/2557) - examples: fix invalid links by [@​fxOne](https://togithub.com/fxOne) in [https://github.com/vercel/swr/pull/2559](https://togithub.com/vercel/swr/pull/2559) - types: Allow auto-import by improving generated types by [@​oosawy](https://togithub.com/oosawy) in [https://github.com/vercel/swr/pull/2563](https://togithub.com/vercel/swr/pull/2563) - fix: pass serialized args to preload fetcher by [@​oosawy](https://togithub.com/oosawy) in [https://github.com/vercel/swr/pull/2564](https://togithub.com/vercel/swr/pull/2564) - chore: use provenance for release by [@​HerringtonDarkholme](https://togithub.com/HerringtonDarkholme) in [https://github.com/vercel/swr/pull/2571](https://togithub.com/vercel/swr/pull/2571) - deps: update [@​testing-library/react](https://togithub.com/testing-library/react) to v14 by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2578](https://togithub.com/vercel/swr/pull/2578) - fix: Fix dependency tracking and useSES bug by [@​shuding](https://togithub.com/shuding) and [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2576](https://togithub.com/vercel/swr/pull/2576) #### New Contributors - [@​fxOne](https://togithub.com/fxOne) made their first contribution in [https://github.com/vercel/swr/pull/2559](https://togithub.com/vercel/swr/pull/2559) - [@​oosawy](https://togithub.com/oosawy) made their first contribution in [https://github.com/vercel/swr/pull/2563](https://togithub.com/vercel/swr/pull/2563) - [@​HerringtonDarkholme](https://togithub.com/HerringtonDarkholme) made their first contribution in [https://github.com/vercel/swr/pull/2571](https://togithub.com/vercel/swr/pull/2571) **Full Changelog**: vercel/swr@v2.1.3...v2.1.4 ### [`v2.1.3`](https://togithub.com/vercel/swr/releases/tag/v2.1.3) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.2...v2.1.3) #### What's Changed - Fix [#​2548](https://togithub.com/vercel/swr/issues/2548): pass origin key to subcription callback by [@​Zheaoli](https://togithub.com/Zheaoli) in [https://github.com/vercel/swr/pull/2550](https://togithub.com/vercel/swr/pull/2550) - Examples: fix type in axios-typescript example by [@​daochouwangu](https://togithub.com/daochouwangu) in [https://github.com/vercel/swr/pull/2552](https://togithub.com/vercel/swr/pull/2552) - Update Cache Interface types by [@​dmmulroy](https://togithub.com/dmmulroy) in [https://github.com/vercel/swr/pull/2554](https://togithub.com/vercel/swr/pull/2554) - fix: data passed to refreshInterval function is not latest by [@​hong24](https://togithub.com/hong24) in [https://github.com/vercel/swr/pull/2354](https://togithub.com/vercel/swr/pull/2354) - types: allow passing function as `Data` for `useSWRSubscriptionOptions` by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2551](https://togithub.com/vercel/swr/pull/2551) #### New Contributors - [@​Zheaoli](https://togithub.com/Zheaoli) made their first contribution in [https://github.com/vercel/swr/pull/2550](https://togithub.com/vercel/swr/pull/2550) - [@​daochouwangu](https://togithub.com/daochouwangu) made their first contribution in [https://github.com/vercel/swr/pull/2552](https://togithub.com/vercel/swr/pull/2552) - [@​dmmulroy](https://togithub.com/dmmulroy) made their first contribution in [https://github.com/vercel/swr/pull/2554](https://togithub.com/vercel/swr/pull/2554) **Full Changelog**: vercel/swr@v2.1.2...v2.1.3 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/sebald/pattern-analyzer). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS40MC4wIiwidXBkYXRlZEluVmVyIjoiMzUuNjYuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [swr](https://swr.vercel.app) ([source](https://togithub.com/vercel/swr)) | [`2.0.4` -> `2.1.5`](https://renovatebot.com/diffs/npm/swr/2.0.4/2.1.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>vercel/swr</summary> ### [`v2.1.5`](https://togithub.com/vercel/swr/releases/tag/v2.1.5) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.4...v2.1.5) #### What's Changed - fix: missing interop helpers in bundle by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2582](https://togithub.com/vercel/swr/pull/2582) **Full Changelog**: vercel/swr@v2.1.4...v2.1.5 ### [`v2.1.4`](https://togithub.com/vercel/swr/releases/tag/v2.1.4) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.3...v2.1.4) #### What's Changed - Upgrade bundler by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2557](https://togithub.com/vercel/swr/pull/2557) - examples: fix invalid links by [@​fxOne](https://togithub.com/fxOne) in [https://github.com/vercel/swr/pull/2559](https://togithub.com/vercel/swr/pull/2559) - types: Allow auto-import by improving generated types by [@​oosawy](https://togithub.com/oosawy) in [https://github.com/vercel/swr/pull/2563](https://togithub.com/vercel/swr/pull/2563) - fix: pass serialized args to preload fetcher by [@​oosawy](https://togithub.com/oosawy) in [https://github.com/vercel/swr/pull/2564](https://togithub.com/vercel/swr/pull/2564) - chore: use provenance for release by [@​HerringtonDarkholme](https://togithub.com/HerringtonDarkholme) in [https://github.com/vercel/swr/pull/2571](https://togithub.com/vercel/swr/pull/2571) - deps: update [@​testing-library/react](https://togithub.com/testing-library/react) to v14 by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2578](https://togithub.com/vercel/swr/pull/2578) - fix: Fix dependency tracking and useSES bug by [@​shuding](https://togithub.com/shuding) and [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2576](https://togithub.com/vercel/swr/pull/2576) #### New Contributors - [@​fxOne](https://togithub.com/fxOne) made their first contribution in [https://github.com/vercel/swr/pull/2559](https://togithub.com/vercel/swr/pull/2559) - [@​oosawy](https://togithub.com/oosawy) made their first contribution in [https://github.com/vercel/swr/pull/2563](https://togithub.com/vercel/swr/pull/2563) - [@​HerringtonDarkholme](https://togithub.com/HerringtonDarkholme) made their first contribution in [https://github.com/vercel/swr/pull/2571](https://togithub.com/vercel/swr/pull/2571) **Full Changelog**: vercel/swr@v2.1.3...v2.1.4 ### [`v2.1.3`](https://togithub.com/vercel/swr/releases/tag/v2.1.3) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.2...v2.1.3) #### What's Changed - Fix [#​2548](https://togithub.com/vercel/swr/issues/2548): pass origin key to subcription callback by [@​Zheaoli](https://togithub.com/Zheaoli) in [https://github.com/vercel/swr/pull/2550](https://togithub.com/vercel/swr/pull/2550) - Examples: fix type in axios-typescript example by [@​daochouwangu](https://togithub.com/daochouwangu) in [https://github.com/vercel/swr/pull/2552](https://togithub.com/vercel/swr/pull/2552) - Update Cache Interface types by [@​dmmulroy](https://togithub.com/dmmulroy) in [https://github.com/vercel/swr/pull/2554](https://togithub.com/vercel/swr/pull/2554) - fix: data passed to refreshInterval function is not latest by [@​hong24](https://togithub.com/hong24) in [https://github.com/vercel/swr/pull/2354](https://togithub.com/vercel/swr/pull/2354) - types: allow passing function as `Data` for `useSWRSubscriptionOptions` by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2551](https://togithub.com/vercel/swr/pull/2551) #### New Contributors - [@​Zheaoli](https://togithub.com/Zheaoli) made their first contribution in [https://github.com/vercel/swr/pull/2550](https://togithub.com/vercel/swr/pull/2550) - [@​daochouwangu](https://togithub.com/daochouwangu) made their first contribution in [https://github.com/vercel/swr/pull/2552](https://togithub.com/vercel/swr/pull/2552) - [@​dmmulroy](https://togithub.com/dmmulroy) made their first contribution in [https://github.com/vercel/swr/pull/2554](https://togithub.com/vercel/swr/pull/2554) **Full Changelog**: vercel/swr@v2.1.2...v2.1.3 ### [`v2.1.2`](https://togithub.com/vercel/swr/releases/tag/v2.1.2) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.1...v2.1.2) ##### Patches - Improved type inferring for `swr/subscription` - Adding `SWRSubscriptionOptions` type for `swr/subscription` #### Changes - test: add typing test for empty config by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2521](https://togithub.com/vercel/swr/pull/2521) - test: fix syntax error in Equal type alias implementation by [@​SACHINnANYAKKARA](https://togithub.com/SACHINnANYAKKARA) in [https://github.com/vercel/swr/pull/2517](https://togithub.com/vercel/swr/pull/2517) - chore: remove engines by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2536](https://togithub.com/vercel/swr/pull/2536) - types: improve `useSWRSubscription` types by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2535](https://togithub.com/vercel/swr/pull/2535) - Rename subscription types by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2537](https://togithub.com/vercel/swr/pull/2537) #### New Contributors - [@​SACHINnANYAKKARA](https://togithub.com/SACHINnANYAKKARA) made their first contribution in [https://github.com/vercel/swr/pull/2517](https://togithub.com/vercel/swr/pull/2517) **Full Changelog**: vercel/swr@v2.1.1...v2.1.2 ### [`v2.1.1`](https://togithub.com/vercel/swr/releases/tag/v2.1.1) [Compare Source](https://togithub.com/vercel/swr/compare/v2.1.0...v2.1.1) #### Patches - refactor: remove useless dataRef, always compare cached data by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2431](https://togithub.com/vercel/swr/pull/2431) - fix: swr infers incorrect `data` type for default `SWRConfig` generic type by [@​connorch](https://togithub.com/connorch) in [https://github.com/vercel/swr/pull/2506](https://togithub.com/vercel/swr/pull/2506) #### Documentation - docs: update subscription example by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2499](https://togithub.com/vercel/swr/pull/2499) #### New Contributors - [@​connorch](https://togithub.com/connorch) made their first contribution in [https://github.com/vercel/swr/pull/2506](https://togithub.com/vercel/swr/pull/2506) **Full Changelog**: vercel/swr@v2.1.0...v2.1.1 ### [`v2.1.0`](https://togithub.com/vercel/swr/releases/tag/v2.1.0) [Compare Source](https://togithub.com/vercel/swr/compare/v2.0.4...v2.1.0) #### Feature - Subscription mode by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/1263](https://togithub.com/vercel/swr/pull/1263) - parallel option for useSWRInfinite by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2404](https://togithub.com/vercel/swr/pull/2404) Checkout [subscription docs](https://swr.vercel.app/docs/subscription) and [useSWRInfinite parallel fetching docs](https://swr.vercel.app/docs/pagination#parallel-fetching-mode) for more details #### Patches - fix: use the latest config in useSWRMutation by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2468](https://togithub.com/vercel/swr/pull/2468) - Fix: type support for suspense and fallbackData([#​2396](https://togithub.com/vercel/swr/issues/2396)) by [@​taro-28](https://togithub.com/taro-28) in [https://github.com/vercel/swr/pull/2452](https://togithub.com/vercel/swr/pull/2452) - Error should be reset when new data comes by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2472](https://togithub.com/vercel/swr/pull/2472) - fix: avoid creating new snapshot if cache is not updated at client during streaming by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2475](https://togithub.com/vercel/swr/pull/2475) - refactor: initialize the cache only on first access by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2479](https://togithub.com/vercel/swr/pull/2479) #### Misc - ci: fix publish workflow by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2453](https://togithub.com/vercel/swr/pull/2453) - ci: faster e2e test by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2428](https://togithub.com/vercel/swr/pull/2428) - test: add a test for keepPreviousData without changing key by [@​koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2470](https://togithub.com/vercel/swr/pull/2470) - Always assume subscriptions will return sub count from current key by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2460](https://togithub.com/vercel/swr/pull/2460) - test: Fix flaky e2e test by [@​promer94](https://togithub.com/promer94) in [https://github.com/vercel/swr/pull/2476](https://togithub.com/vercel/swr/pull/2476) - chore: Add subscription example by [@​huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2480](https://togithub.com/vercel/swr/pull/2480) #### New Contributors - [@​taro-28](https://togithub.com/taro-28) made their first contribution in [https://github.com/vercel/swr/pull/2452](https://togithub.com/vercel/swr/pull/2452) **Full Changelog**: vercel/swr@v2.0.4...v2.1.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/Unleash/unleash). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS42OS4zIiwidXBkYXRlZEluVmVyIjoiMzUuNjkuMyIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Update Cache Interface types
Update 04/08/23
Per discussion with @promer94, the solution outlined in An Alternative Approach has been implemented rather than updating the
keys
interface.Motivation & Background
As it's currently typed, the
Cache
interface that is required for users to create and provide their own cache implementations mandates that thekeys
method return anIterableIterator<string>
. I believe this to be incorrectly typed, or at the very least, inconveniently typed and a burden for consumers. I think that the correct type should beIterableIterator<Key>
given that theget
,set
, anddelete
methods all require aKey
as input.Consider the default implementation provided by
swr
:This is effectively the same as:
Which results in a type error:
This puts a burden on users/consumers of
swr
when implementing their own cache, especially if the underlying data structure is aMap
.My use case is creating a custom LRU Cache to back
swr
, see the following gist for its implementation: https://gist.github.com/dmmulroy/33c31bef81554b099726b3a680dad974Because
keys
is typed asIterableIterator<string>
I have to cast.An Alternative Approach
An alternative approach would be to update the
Cache
interface to the following:This actually may be more accurate and reflect what occurs at run time. As far as I can tell, any time the cache is accessed by
swr
internally thekey
is always serialized into astring
via theserialize
1 function prior to access.You can see that any time the cache is accessed2, it's accessed via callbacks returned from
createCacheHelper
3 in which theSWRGlobalState
is referenced/retrieved and used get to thesetter
callback frominitCache
4 which is stored in global state. In all instances (you can search by reference to confirm), theGetter
andSetter
callbacks are passedstring
keys which have been serialized.In addition, I believe this may actually be worth considering because
unstable_serialize
5 is publicly exported. I assume this is to aid consumers/users if they choose to directly access/mutate the cache (despite explicitly being called out in the docs as anti pattern6) as seen in #2216.Footnotes
https://github.com/vercel/swr/blob/main/_internal/utils/serialize.ts#L6 ↩
Getter Callback, Setter Callback, Previous value in Setter, Setter Callback from SWRGlobalState ↩
https://github.com/vercel/swr/blob/main/_internal/utils/helper.ts#L32 ↩
https://github.com/vercel/swr/blob/main/_internal/utils/cache.ts#L26 ↩
https://github.com/vercel/swr/blob/main/core/use-swr.ts#L679 ↩
https://swr.vercel.app/docs/advanced/cache#modify-the-cache-data ↩