@ethlete/query 6.0.0-next.3 → 6.0.0-next.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/CHANGELOG.md +454 -0
  2. package/fesm2022/ethlete-query-testing.mjs +282 -5
  3. package/fesm2022/ethlete-query-testing.mjs.map +1 -1
  4. package/fesm2022/ethlete-query.mjs +9926 -5013
  5. package/fesm2022/ethlete-query.mjs.map +1 -1
  6. package/generators/deprecate-legacy-queries/migration.js +77 -0
  7. package/generators/deprecate-legacy-queries/schema.json +26 -0
  8. package/generators/generators.json +15 -0
  9. package/generators/migrate-query-client-features/migration.js +142 -0
  10. package/generators/migrate-query-client-features/report.js +136 -0
  11. package/generators/migrate-query-client-features/schema.json +26 -0
  12. package/generators/migrate-query-opt-in-features/migration.js +182 -0
  13. package/generators/migrate-query-opt-in-features/report.js +143 -0
  14. package/generators/migrate-query-opt-in-features/schema.json +31 -0
  15. package/generators/migrate-to-query-v3/auth-provider-scaffold.js +131 -0
  16. package/generators/migrate-to-query-v3/cleanup-migration.js +293 -0
  17. package/generators/migrate-to-query-v3/http-client-check.js +93 -0
  18. package/generators/migrate-to-query-v3/legacy-prepare-migration.js +865 -0
  19. package/generators/migrate-to-query-v3/legacy-query-creator-migration.js +608 -0
  20. package/generators/migrate-to-query-v3/migration-scope.js +41 -0
  21. package/generators/migrate-to-query-v3/migration.js +28 -2932
  22. package/generators/migrate-to-query-v3/module-graph.js +153 -0
  23. package/generators/migrate-to-query-v3/query-client-migration.js +526 -0
  24. package/generators/migrate-to-query-v3/rename-symbols.js +193 -0
  25. package/generators/migrate-to-query-v3/report.js +136 -0
  26. package/generators/migrate-to-query-v3/schema.json +12 -0
  27. package/generators/migrate-to-query-v3/shared.js +142 -0
  28. package/generators/prep-for-query-v3/migration.js +3 -3
  29. package/package.json +26 -13
  30. package/types/ethlete-query-testing.d.ts +141 -12
  31. package/types/ethlete-query.d.ts +6964 -3128
package/CHANGELOG.md CHANGED
@@ -1,5 +1,459 @@
1
1
  # @ethlete/query
2
2
 
3
+ ## 6.0.0-next.31
4
+
5
+ ### Minor Changes
6
+
7
+ - [`458f5b7`](https://github.com/ethlete-io/ethdk/commit/458f5b7ecfe9b4360fc220a8465d46833f831ffd) Thanks [@TomTomB](https://github.com/TomTomB)! - Add `buildArgs` to `withRefreshQuery`, so an API that does not name the refresh field `token` can be
8
+ refreshed at all.
9
+
10
+ ## 6.0.0-next.30
11
+
12
+ ### Minor Changes
13
+
14
+ - [`70a0602`](https://github.com/ethlete-io/ethdk/commit/70a06025c2f919bd1582b2d0adbf80b21a25696a) Thanks [@TomTomB](https://github.com/TomTomB)! - `withBearerAuthMultiTabSync` exposes `leadership` (`election` / `off` / `unsupported`), so a tab reading `isLeader: true` can tell a won election from one that never ran.
15
+
16
+ - [#3050](https://github.com/ethlete-io/ethdk/pull/3050) [`cab3d1a`](https://github.com/ethlete-io/ethdk/commit/cab3d1ae2f3ef37df63663b62edb842e8e4a8f9b) Thanks [@github-actions](https://github.com/apps/github-actions)! - Auth: add `createAuthGuard(providerRef, config)` - route guards that wait out a session restore, redirect to your login URL with the attempted URL attached, and navigate back afterwards.
17
+
18
+ - [`33e705b`](https://github.com/ethlete-io/ethdk/commit/33e705bfb989ec80e245b4bd9e2091c57cd337b8) Thanks [@TomTomB](https://github.com/TomTomB)! - Query devtools: **Forget** shows only while the **Gone** chip is lit, drops exactly the tombstones the list is showing, and is styled as the destructive action it is instead of as a filter clear. `clearQueryDevtoolsTombstones()` takes optional ids.
19
+
20
+ ### Patch Changes
21
+
22
+ - [#3050](https://github.com/ethlete-io/ethdk/pull/3050) [`e7ffcfc`](https://github.com/ethlete-io/ethdk/commit/e7ffcfc5049e81f27732bda7d71ba4e467778fed) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query persistence: a logout purge or `clearPersistedQueries()` can no longer be undone by a write that was already on its way to disk, and `maxEntries` is applied at startup as well.
23
+
24
+ - [`4b8499d`](https://github.com/ethlete-io/ethdk/commit/4b8499dbd099b81a593ced27bd6df63b4047e173) Thanks [@TomTomB](https://github.com/TomTomB)! - `validateWithQuery` no longer throws `ET100` when the creator's route is a function - its args reach
25
+ the query at execute time, which the created query now declares.
26
+
27
+ ## 6.0.0-next.29
28
+
29
+ ### Minor Changes
30
+
31
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`4c6c06f`](https://github.com/ethlete-io/ethdk/commit/4c6c06f072830999cf9f06730181833090db4537) Thanks [@github-actions](https://github.com/apps/github-actions)! - A refresh that fails for good now ends the session instead of leaving it looking valid - override with `onRefreshFailure`. A 401 in a follower tab asks the leader to refresh, and is no longer throttled by `minRefreshInterval`.
32
+
33
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`d17e79d`](https://github.com/ethlete-io/ethdk/commit/d17e79db20c93f3e04033feb8e88f0db9efce6b6) Thanks [@github-actions](https://github.com/apps/github-actions)! - The bearer auth provider now publishes `sessionStatus()` (`unknown | restoring | authenticated | anonymous`) and `sessionEndCause()`, and `logout()` takes a cause. Only the most recent token-issuing execution applies its tokens and writes `executionState()`, across registry keys.
34
+
35
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`86659a1`](https://github.com/ethlete-io/ethdk/commit/86659a1adc3f90c8d8ce4b76ceb955c55aa61b62) Thanks [@github-actions](https://github.com/apps/github-actions)! - Auth: a tab receiving synced tokens now retries its failed queries, a cross-tab logout is a real logout, and the remember-me cookie survives startup. Query devtools: a failed run keeps its status and body.
36
+
37
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`9fc5ec5`](https://github.com/ethlete-io/ethdk/commit/9fc5ec5ace959b50402c0688bebf721d69bd4945) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query devtools overrides: type a custom value or paste a copied subtree as a replayed rule, and presets (including the new long-word one) now generate a varied sample per arm instead of one frozen value.
38
+
39
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`1d181d7`](https://github.com/ethlete-io/ethdk/commit/1d181d7ecec575a2cae17f42f6914b70b4dd95ac) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query devtools: a destroyed query stays readable as a tombstone - a muted row the **Gone** chip narrows to - and the repository emits `entry-destroyed` so the panel can say why a cache entry disappeared.
40
+
41
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`7081567`](https://github.com/ethlete-io/ethdk/commit/7081567496b2a6416b6c1a74223a278c6a2a2c1d) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query devtools: pick both ends of a response diff instead of only comparing a run against its predecessor, and raise how many bodies are kept with `provideQueryDevtools({ responseHistory })`.
42
+
43
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`089d41b`](https://github.com/ethlete-io/ethdk/commit/089d41bc3180d09a0d8c0cc0da1be1ba0219cd1b) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query stack: a custom `transform` is now typed with the `null` responses it actually receives (a compile-time break for callbacks that assumed otherwise), and `lastQuery` no longer points at a query `maxQueries` just evicted.
44
+
45
+ ### Patch Changes
46
+
47
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`b31de2f`](https://github.com/ethlete-io/ethdk/commit/b31de2ff3fa0ceaea22b3f314ee4ba5ef44a6cd8) Thanks [@github-actions](https://github.com/apps/github-actions)! - Bearer auth multi-tab sync: the broadcast channel and the leader lock are namespaced by the provider's `name`, so two providers on one origin no longer share a token channel and one leader.
48
+
49
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`b31de2f`](https://github.com/ethlete-io/ethdk/commit/b31de2ff3fa0ceaea22b3f314ee4ba5ef44a6cd8) Thanks [@github-actions](https://github.com/apps/github-actions)! - Bearer auth: each registry key now reuses one query across executions, so logins and token refreshes stop leaking an injector, an effect and cached credentials per attempt.
50
+
51
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`16e2f77`](https://github.com/ethlete-io/ethdk/commit/16e2f77e9ae9c89bda41f744195c4233e62bc06d) Thanks [@github-actions](https://github.com/apps/github-actions)! - Bearer auth: a response the `extractTokens` step rejects now puts `executionState` into `error` instead of reporting a `success` that never authenticated the tab.
52
+
53
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`c984b8c`](https://github.com/ethlete-io/ethdk/commit/c984b8cc7e71596b0218763f90e1411d3afaf3e4) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query devtools: a `null`/`undefined` value can now be overridden instead of showing an empty menu, and **Reset** appears only where something is armed and clears the whole subtree.
54
+
55
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`089d41b`](https://github.com/ethlete-io/ethdk/commit/089d41bc3180d09a0d8c0cc0da1be1ba0219cd1b) Thanks [@github-actions](https://github.com/apps/github-actions)! - Paged query stack: `canFetchNextPage` / `canFetchPreviousPage` are now false while a page is loading, and `isFirstPageLoaded` reports whether page 1 is loaded instead of always being true.
56
+
57
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`69823ed`](https://github.com/ethlete-io/ethdk/commit/69823ed509254101c31df0ffd429171a40f7325b) Thanks [@github-actions](https://github.com/apps/github-actions)! - `defineQueryForm`: `isResetBy` resets now cascade transitively, so changing `country` clears `league` **and** the `team` that depends on it, in one committed change.
58
+
59
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`fd41d42`](https://github.com/ethlete-io/ethdk/commit/fd41d42d1f7c2858b7ea19e1936ec13ada4570bc) Thanks [@github-actions](https://github.com/apps/github-actions)! - `refreshQueriesInUse()` and `invalidateQueries()` now only re-fire reads, so a cached auth `POST` is never replayed. GraphQL queries over `POST` keep refreshing.
60
+
61
+ - [#3048](https://github.com/ethlete-io/ethdk/pull/3048) [`8847481`](https://github.com/ethlete-io/ethdk/commit/8847481e6ef505754c56b5c1ab9d3ca19ed4f784) Thanks [@github-actions](https://github.com/apps/github-actions)! - Web socket rooms: joins are counted, so one subscriber unmounting no longer leaves a room the others still hold - they used to silently stop receiving messages.
62
+
63
+ ## 6.0.0-next.28
64
+
65
+ ### Minor Changes
66
+
67
+ - [#3047](https://github.com/ethlete-io/ethdk/pull/3047) [`e266740`](https://github.com/ethlete-io/ethdk/commit/e266740c41f1eae06e2ddf16fae6cda29c6ed5a6) Thanks [@github-actions](https://github.com/apps/github-actions)! - The prerelease's `createQueryForm()` is now `defineQueryForm()` and returns a plain object rather than a class instance (`CreateQueryFormConfig` → `DefineQueryFormConfig`).
68
+
69
+ ### Patch Changes
70
+
71
+ - [`53cd2a5`](https://github.com/ethlete-io/ethdk/commit/53cd2a5d0a618c298bd9f631ea4dea32f6f9f590) Thanks [@TomTomB](https://github.com/TomTomB)! - Secure queries that outlive a logout now run again once the user logs back in, instead of staying idle for the rest of the page load.
72
+
73
+ ## 6.0.0-next.27
74
+
75
+ ### Patch Changes
76
+
77
+ - [#3046](https://github.com/ethlete-io/ethdk/pull/3046) [`291e8a9`](https://github.com/ethlete-io/ethdk/commit/291e8a9c6ecb9c51c191b4ed6e40d41465ff4cfa) Thanks [@github-actions](https://github.com/apps/github-actions)! - Secure queries executed after `setTokens()` (SSO/OIDC callbacks, native shells) no longer wait forever - they now also proceed once `executionState` reports a successful token seed.
78
+
79
+ ## 6.0.0-next.26
80
+
81
+ ### Minor Changes
82
+
83
+ - [#3045](https://github.com/ethlete-io/ethdk/pull/3045) [`b2ac74b`](https://github.com/ethlete-io/ethdk/commit/b2ac74b0fad22ba656d7b2028d19dd25f06e57d8) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query devtools: add a persistent, path-addressed response-override registry that replays edits (value presets, array/pagination duplication, resets) against a query's response on every fetch.
84
+
85
+ ### Patch Changes
86
+
87
+ - [#3045](https://github.com/ethlete-io/ethdk/pull/3045) [`5c676cf`](https://github.com/ethlete-io/ethdk/commit/5c676cf29dbe18d5ca81e8a5c45144a4ec93d712) Thanks [@github-actions](https://github.com/apps/github-actions)! - `BearerAuthProvider.setTokens()` now sets `executionState` to `{ type: 'tokenSeed', state: 'success' }`, so SSO/OIDC callback and native-shell logins work with the same `executionState`-driven redirect logic as a query-driven login.
88
+
89
+ - [#3045](https://github.com/ethlete-io/ethdk/pull/3045) [`321da6a`](https://github.com/ethlete-io/ethdk/commit/321da6a9d1b97dc34204011d1372fe1c7bfadb3d) Thanks [@github-actions](https://github.com/apps/github-actions)! - Internal: route-building and legacy query-state errors now throw `RuntimeError` (from `@ethlete/core`) instead of the ad hoc `QueryError` class, which is removed.
90
+
91
+ ## 6.0.0-next.25
92
+
93
+ ### Major Changes
94
+
95
+ - [`e9fbdab`](https://github.com/ethlete-io/ethdk/commit/e9fbdab00dfe50a20c1b7fe284ab29fd91a25e77) Thanks [@TomTomB](https://github.com/TomTomB)! - `createWebSocketClient` now takes socket.io's `io` as a required option, so `@ethlete/query` no longer
96
+ pulls `socket.io-client` (~13 kB gz) into apps that never open a socket. New:
97
+ `createWebSocketTestDouble()` in `@ethlete/query/testing`.
98
+
99
+ ### Minor Changes
100
+
101
+ - [`fb32936`](https://github.com/ethlete-io/ethdk/commit/fb32936caa749895fc77348a6213d0d3ab6bd056) Thanks [@TomTomB](https://github.com/TomTomB)! - Web socket devtools now record outgoing traffic and can emit test messages, and a request reports how long its last execution took via `subtle.lastDurationMs`.
102
+
103
+ ### Patch Changes
104
+
105
+ - [`a50a6a0`](https://github.com/ethlete-io/ethdk/commit/a50a6a01e722746cf74fe6181d2da301912528ab) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix `HttpRequestLoadingProgressState.speed`, which reported 1000x the actual rate (and
106
+ `Infinity` on a stalled or re-executed request), and show it in the query devtools.
107
+
108
+ ## 6.0.0-next.24
109
+
110
+ ### Minor Changes
111
+
112
+ - [`41354e7`](https://github.com/ethlete-io/ethdk/commit/41354e7c64ad713caa2393e6a3df592a410b53be) Thanks [@TomTomB](https://github.com/TomTomB)! - Legacy interop: containers accept `{ injector }` like `prepare()` does and default their cleanup by
113
+ request method again, and `provideLegacyPrepareFallback()` lets `prepare()` use the root injector instead
114
+ of throwing ET950 (browser only).
115
+
116
+ - [#3043](https://github.com/ethlete-io/ethdk/pull/3043) [`cf41b4e`](https://github.com/ethlete-io/ethdk/commit/cf41b4e64268eef05bbd69b501e9d08581d09697) Thanks [@github-actions](https://github.com/apps/github-actions)! - Mark every legacy (v2) query export as `@deprecated`, including the `createLegacyQueryCreator`
117
+ interop, and add `nx g @ethlete/query:deprecate-legacy-queries` to tag wrappers already in source.
118
+ Removal is v7.
119
+
120
+ - [#3043](https://github.com/ethlete-io/ethdk/pull/3043) [`156659d`](https://github.com/ethlete-io/ethdk/commit/156659de868ff8a66f9b0b6acbb59c637979500d) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query devtools: count what every query cost - how often it refreshed, how many refreshes reached
121
+ the network, and how much payload they moved - as activity tiles per query plus totals per client.
122
+
123
+ - [#3043](https://github.com/ethlete-io/ethdk/pull/3043) [`ebc94d4`](https://github.com/ethlete-io/ethdk/commit/ebc94d456176f350a02a29d8b23c1c6fbb573cd5) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query devtools: a new **Faults** tab arms real request failures per query client - latency before
124
+ every attempt, fail-the-next-N, fail-N%, and the response status - resolved per attempt inside the
125
+ pipeline, so the retry policy re-rolls it.
126
+
127
+ - [#3043](https://github.com/ethlete-io/ethdk/pull/3043) [`156659d`](https://github.com/ethlete-io/ethdk/commit/156659de868ff8a66f9b0b6acbb59c637979500d) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query devtools: list every query, auth and client feature with the options it was configured with,
128
+ not just its name.
129
+
130
+ - [`6c6213b`](https://github.com/ethlete-io/ethdk/commit/6c6213b48f8e5c5ccf0fcb526dd50884e768fb82) Thanks [@TomTomB](https://github.com/TomTomB)! - Query devtools: add a **Forms** tab covering `createQueryForm` - its fields, URL params and the query it drives - and log each invalidation with every query it refetched.
131
+
132
+ - [#3043](https://github.com/ethlete-io/ethdk/pull/3043) [`9f5f9ec`](https://github.com/ethlete-io/ethdk/commit/9f5f9ecc64a0290f753b9979e2667fbe3de238a0) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query devtools: the Insomnia export now includes the auth provider's token refresh, and secure
133
+ requests read their bearer token out of its response instead of shipping one that goes stale.
134
+
135
+ - [#3043](https://github.com/ethlete-io/ethdk/pull/3043) [`156659d`](https://github.com/ethlete-io/ethdk/commit/156659de868ff8a66f9b0b6acbb59c637979500d) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query devtools: list queries with their path params filled in from args (`/post/12` instead of
136
+ `/post/:param`), and export requests as an Insomnia v4 collection.
137
+
138
+ - [#3043](https://github.com/ethlete-io/ethdk/pull/3043) [`8b665a3`](https://github.com/ethlete-io/ethdk/commit/8b665a39bccf09e51fac34c6d05b9b9d2793d4e5) Thanks [@github-actions](https://github.com/apps/github-actions)! - Surface retries and transfer progress in the query devtools: `request.subtle.attempts()` and
139
+ `request.subtle.retryState()` report what a retry policy is doing, and the panel shows backoff
140
+ countdowns, attempt counts and a progress bar for `reportProgress` requests.
141
+
142
+ - [#3043](https://github.com/ethlete-io/ethdk/pull/3043) [`37a74ae`](https://github.com/ethlete-io/ethdk/commit/37a74aec9c149a00f493894a75499c7e86d83cf7) Thanks [@github-actions](https://github.com/apps/github-actions)! - Record what a query did per run: its last 25 runs land on the devtools stats handle, feeding a new
143
+ **Timeline** tab that draws every request on one axis and a **History** section that diffs responses.
144
+
145
+ ### Patch Changes
146
+
147
+ - [`41354e7`](https://github.com/ethlete-io/ethdk/commit/41354e7c64ad713caa2393e6a3df592a410b53be) Thanks [@TomTomB](https://github.com/TomTomB)! - Legacy interop fixes: `destroyOnResponse` no longer strands its watcher on an aborted query, an `entity`
148
+ config no longer syncs a `null` response on `prepare()`, and a falsy `body` is sent instead of dropped.
149
+
150
+ - [`41354e7`](https://github.com/ethlete-io/ethdk/commit/41354e7c64ad713caa2393e6a3df592a410b53be) Thanks [@TomTomB](https://github.com/TomTomB)! - `migrate-to-query-v3` now threads an injector into `prepare()` calls inside callbacks (`computed`,
151
+ `effect`, RxJS operators) and adds `destroyOnResponse` when the prepared query is discarded.
152
+
153
+ ## 6.0.0-next.23
154
+
155
+ ### Major Changes
156
+
157
+ - [#3041](https://github.com/ethlete-io/ethdk/pull/3041) [`53fcc97`](https://github.com/ethlete-io/ethdk/commit/53fcc97ef5b982fa8a3c5912c0800de1416feca6) Thanks [@github-actions](https://github.com/apps/github-actions)! - Bearer auth multi-tab sync and leader election are opt-in: `createBearerAuthProvider`'s `multiTabSync`
158
+ option is replaced by `withBearerAuthMultiTabSync()` in `features` (~1.4 kB gz off the secure entry
159
+ without it), read back as `provider.features.multiTabSync.isLeader()`. Election runs on the Web Locks
160
+ API now rather than a `localStorage` heartbeat, so a tab that closes or crashes hands over at once.
161
+ `setupAuthTest()` lost its `multiTabSync` option. Migrate with
162
+ `npx nx g @ethlete/query:migrate-query-opt-in-features`.
163
+
164
+ - [#3041](https://github.com/ethlete-io/ethdk/pull/3041) [`8b13854`](https://github.com/ethlete-io/ethdk/commit/8b13854aa079196c84fc08da0aee685f728a441d) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query client: multi-tab sync and response persistence are opt-in `features` instead of defaults - the
165
+ `multiTabSync` / `persistence` client options are gone and a client without the features ships neither
166
+ engine. Migrate with `nx g @ethlete/query:migrate-query-client-features`.
167
+
168
+ - `withMultiTabSync()` shares reads, polls a cache key in one tab for all of them and refreshes the
169
+ others after a mutation; per-query `multiTabSync: false` keeps a query tab-local.
170
+ - `withQueryPersistence()` keeps public reads in IndexedDB, so a reload renders the last known data
171
+ while it revalidates. Secure responses need an explicit opt-in and are removed on logout.
172
+ - `refreshQueriesInUse()` also refreshes GraphQL queries transported over POST; devtools gain Sync
173
+ and Disk columns.
174
+
175
+ - [#3041](https://github.com/ethlete-io/ethdk/pull/3041) [`53fcc97`](https://github.com/ethlete-io/ethdk/commit/53fcc97ef5b982fa8a3c5912c0800de1416feca6) Thanks [@github-actions](https://github.com/apps/github-actions)! - Error-response parsing and the default retry policy are opt-in query client features - without them a
176
+ client reads the plain `string` / `{ message }` / `{ detail }` / `string[]` ladder and retries
177
+ nothing, which takes ~1.4 kB gz out of an app that needs neither. Pick from `withHtmlErrorParsing()`,
178
+ `withSymfonyErrors()`, `withDefaultRetry()`, `withEthleteApiErrors()` (all three, the previous
179
+ behavior) and `registerQueryErrorParser()` for a body shape the SDK does not know. Run
180
+ `npx nx g @ethlete/query:migrate-query-opt-in-features` to keep the old behavior.
181
+
182
+ - [#3041](https://github.com/ethlete-io/ethdk/pull/3041) [`42ec970`](https://github.com/ethlete-io/ethdk/commit/42ec970d6963bb5a3aa3af4e207ef2cac801c915) Thanks [@github-actions](https://github.com/apps/github-actions)! - DI: `createProvider` / `createRootProvider` / `createStaticProvider` / `createStaticRootProvider` /
183
+ `createLabels` are replaced by `defineProvider` & co., which return a definition you read with
184
+ `toProvideFn` / `toInjectFn` / `toToken`; `createQueryClient`, `createBearerAuthProvider` and
185
+ `createWebSocketClient` return that definition instead of a tuple. Every `provideX` / `injectX` /
186
+ token export keeps its name - run `nx g @ethlete/core:migrate-provider-shape` for your own call sites.
187
+ Cuts the `@ethlete/components` import floor from 89.9 to 2.4 kB gz.
188
+
189
+ ### Minor Changes
190
+
191
+ - [#3041](https://github.com/ethlete-io/ethdk/pull/3041) [`e040432`](https://github.com/ethlete-io/ethdk/commit/e040432bdfdce6b46073589bc66fd3a8bdf66111) Thanks [@github-actions](https://github.com/apps/github-actions)! - New `client.invalidateQueries()` re-runs the queries this client has on screen whose data went stale -
192
+ after a mutation, or a push message saying something changed server-side - and tells the user's other
193
+ tabs to do the same. Narrow it with `url` (resolved against `baseUrl`, matched on path boundaries) and
194
+ `filter`, or keep it local with `otherTabs: false`; reaching other tabs needs `withMultiTabSync()`.
195
+ See [Invalidating after a change](https://ethlete-sdk-docs.web.app/query/caching#invalidating-after-a-change).
196
+
197
+ ### Patch Changes
198
+
199
+ - [#3041](https://github.com/ethlete-io/ethdk/pull/3041) [`a935328`](https://github.com/ethlete-io/ethdk/commit/a9353288d4e4ee41607005e8a1ab81921c21cf83) Thanks [@github-actions](https://github.com/apps/github-actions)! - `logout()` now abandons every unsaved-changes guard (`injectUnsavedChangesCoordinator().abandonAll('logout')`). Pressing logout with a dirty form used to leave a "discard your changes?" dialog floating over the login page the app had already redirected to, plus a tab still locked against closing - over edits that can no longer be saved. Guards created after a re-login work normally again.
200
+
201
+ - [#3041](https://github.com/ethlete-io/ethdk/pull/3041) [`353777b`](https://github.com/ethlete-io/ethdk/commit/353777bb56e42ad1c02058a2ccf694f69c94b025) Thanks [@github-actions](https://github.com/apps/github-actions)! - Mark build-tooling peer dependencies (`vite`, `typescript`, `ts-morph`, `@nx/devkit`, `@analogjs/*`) and feature-scoped runtime peers (`date-fns` in components) as optional via `peerDependenciesMeta`. They are only needed when running the Nx generators or using the date/time components - consumers no longer have to install them just to use the libraries.
202
+
203
+ - [#3041](https://github.com/ethlete-io/ethdk/pull/3041) [`53fcc97`](https://github.com/ethlete-io/ethdk/commit/53fcc97ef5b982fa8a3c5912c0800de1416feca6) Thanks [@github-actions](https://github.com/apps/github-actions)! - Devtools instrumentation is now registered through a hook that `provideQueryDevtools()` installs, so
204
+ an app without it drops the entry registry, the route stringifier and the client-name derivation
205
+ entirely - ~0.5 kB gz off every entry. No API change; `queryDevtoolsEntries` and the
206
+ `<et-query-devtools>` contract are unchanged.
207
+
208
+ - [#3041](https://github.com/ethlete-io/ethdk/pull/3041) [`42ec970`](https://github.com/ethlete-io/ethdk/commit/42ec970d6963bb5a3aa3af4e207ef2cac801c915) Thanks [@github-actions](https://github.com/apps/github-actions)! - Internal: the current generation no longer imports anything from the legacy V2 tree - `buildRoute`,
209
+ `buildQueryString`, `buildTimestampFromSeconds`, `decryptBearer`, `QueryError` and the query-string
210
+ types now live in `http/internal/request-route`, and `legacy` re-exports them. Every public name is
211
+ unchanged. Also closes the `http ↔ gql` cycle.
212
+
213
+ - [#3041](https://github.com/ethlete-io/ethdk/pull/3041) [`53fcc97`](https://github.com/ethlete-io/ethdk/commit/53fcc97ef5b982fa8a3c5912c0800de1416feca6) Thanks [@github-actions](https://github.com/apps/github-actions)! - `socket.io-client` is an optional peer dependency. It is only imported by `createWebSocketClient`,
214
+ and no non-`ws` public type surfaces it, so an app that does not use the realtime client no longer
215
+ has to install it.
216
+
217
+ - [#3041](https://github.com/ethlete-io/ethdk/pull/3041) [`353777b`](https://github.com/ethlete-io/ethdk/commit/353777bb56e42ad1c02058a2ccf694f69c94b025) Thanks [@github-actions](https://github.com/apps/github-actions)! - Adopt the `@ethlete/eslint-plugin` styleguide flat configs in `core`, `query`, `contentful` and
218
+ `types`, and apply the resulting auto-fixes. Runtime behavior is unchanged; three fixes are visible to
219
+ TypeScript consumers: exported `types` shapes are `type` aliases rather than `interface` declarations
220
+ (so they can no longer be extended by declaration merging), `core`'s `PropsDirective.destroyRef` and
221
+ `SeoDirective.parent` are `private`, and `ConsentHandler` is a `type`. The theme name registries stay
222
+ interfaces so consumers can keep augmenting them.
223
+
224
+ ## 6.0.0-next.22
225
+
226
+ ### Minor Changes
227
+
228
+ - [#3040](https://github.com/ethlete-io/ethdk/pull/3040) [`dcd8585`](https://github.com/ethlete-io/ethdk/commit/dcd8585423c4d0a66d968016a6e88b03c87b168a) Thanks [@github-actions](https://github.com/apps/github-actions)! - Error normalization: reduce an HTML error page (a proxy's `502`, a maintenance page) to its heading and message text instead of using the raw markup as the message. Exposes `isHtmlErrorPayload`, `htmlErrorPayload` and `extractHtmlErrorMessage`.
229
+
230
+ ### Patch Changes
231
+
232
+ - [#3040](https://github.com/ethlete-io/ethdk/pull/3040) [`bc8aca7`](https://github.com/ethlete-io/ethdk/commit/bc8aca76900a47a3faed4ad2be2ce2ab7b70b27d) Thanks [@github-actions](https://github.com/apps/github-actions)! - Filter overlay: new `provideFilterOverlay` / `injectFilterOverlay` - a filter panel that drafts the page's query
233
+ form, reports how many results the draft would return on its submit button, and applies on submit or discards on
234
+ dismiss. Replaces cdk's `FilterOverlayService`, rebuilt on signal forms and the current query client.
235
+
236
+ ## 6.0.0-next.21
237
+
238
+ ### Patch Changes
239
+
240
+ - [#3038](https://github.com/ethlete-io/ethdk/pull/3038) [`0be9397`](https://github.com/ethlete-io/ethdk/commit/0be939765c6074a518c5c05a7110513f1e3e8ef0) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix `ET301` on every legacy interop mutation. `LegacyQuery.execute()` translates v2's single `skipCache` into
241
+ `allowCache: options.skipCache !== true` for **every** method, so any `legacyPost*` / `legacyPut*` /
242
+ `legacyPatch*` / `legacyDelete*` executed without an explicit `skipCache: true` reached the repository with
243
+ `allowCache: true` and threw "This request is uncacheable, but allowCache is set to true".
244
+
245
+ `allowCache` is never read on the uncacheable path - there is no cache entry to reuse - so the throw was purely a
246
+ guard against a mistake in hand-written code. It stays for that, and gains a
247
+ `silenceUncacheableAllowCacheError` opt-out on `QueryConfig`, which `createLegacyQueryCreator` sets alongside the
248
+ `silenceMissingWithArgsFeatureError` it already passed. The cache-key guard is unaffected.
249
+
250
+ Note that dropping `allowCache: true` in the interop instead would have silently made every legacy `GET` refetch,
251
+ since an absent `allowCache` means "do not reuse the entry" rather than "use the default".
252
+
253
+ ## 6.0.0-next.20
254
+
255
+ ### Minor Changes
256
+
257
+ - [#3037](https://github.com/ethlete-io/ethdk/pull/3037) [`a83cfe4`](https://github.com/ethlete-io/ethdk/commit/a83cfe4b3e69c3e70ac20f81a5c287bdb6278a63) Thanks [@github-actions](https://github.com/apps/github-actions)! - Cache entries are now kept for `keepUnusedFor` (5 minutes by default) after their last consumer was destroyed, instead of being discarded immediately. A query that mounts again within that window - a list page reached via browser back navigation, for instance - binds to the existing entry and renders its previous response right away while revalidating in the background (`executionState()` reports `{ type: 'loading', hasCachedResponse: true }`).
258
+
259
+ - Configurable per client (`createQueryClient({ keepUnusedFor })`) and per query creator; `0` restores the previous release-immediately behavior.
260
+ - Independent of `cache-control`, so it also applies to private/authenticated responses.
261
+ - Only entries holding a response are kept - in-flight and errored ones are still aborted immediately. At most 50 unused entries per client are retained, and retention is disabled on the server.
262
+
263
+ - [#3037](https://github.com/ethlete-io/ethdk/pull/3037) [`7ae9eaa`](https://github.com/ethlete-io/ethdk/commit/7ae9eaa878c6c3bfa80876c67ac1f9360a1c24ec) Thanks [@github-actions](https://github.com/apps/github-actions)! - Close the gaps found while migrating a real workspace from the legacy client to v3:
264
+
265
+ - **Client-level headers.** `createQueryClient({ headers })` takes `HttpHeaders` or a function
266
+ re-read on every request, so a signal can drive it. Per-query `args.headers` merge on top and win
267
+ per name. `client.refreshQueriesInUse()` re-runs every bound `GET`/`HEAD`/`OPTIONS` (in-flight ones
268
+ included) - the replacement for v2's `setDefaultHeaders({ refreshQueriesInUse: true })`.
269
+ - **`provider.setTokens(access, refresh)`** on the public bearer auth provider, for tokens issued
270
+ outside it (SSO callbacks, native shells). Previously reachable only from inside a custom feature.
271
+ - **`logout()` now resets bound secure queries.** It already unbound their cache entries, but the
272
+ query objects kept their `response()`, so a component mounted across a logout went on rendering the
273
+ previous user until something called `reset()`.
274
+ - **Legacy `prepare()` failures are diagnosable.** Calling it without an injection context throws
275
+ `ET950` naming the creator instead of a bare `NG0203`; calling it with an already destroyed injector
276
+ returns an inert query and warns in dev mode instead of throwing `NG0205` from a view's cleanup
277
+ phase. `createLegacyQueryCreator` takes a `name` for those messages.
278
+ - **Query-collection consumers accept real legacy queries.** `AnyQueryCollection` no longer pins the
279
+ arguments type, so a `createQueryCollectionSignal` result is assignable to `*etQuery`,
280
+ `queryStateErrorSignal` and `switchQueryCollectionState` without a cast.
281
+ - **`queryErrorMessages(error)` / `queryErrorMessage(error)`** flatten a `QueryErrorResponse` into
282
+ displayable strings, and `emptyQueryArgs<TArgs>()` covers argless queries in generic code (auth
283
+ registry `execute()` now takes no argument either).
284
+ - **`BearerAuthProviderOf<typeof ref>`** derives the exact provider type; `AnyBearerAuthProvider` no
285
+ longer forces bracket access on `provider.queries` under `noPropertyAccessFromIndexSignature`.
286
+
287
+ `migrate-to-query-v3` got a precision pass:
288
+
289
+ - Renames are scoped to imports that actually resolve to the migrated symbol, so same-named type
290
+ members, config properties and exports from unrelated packages are left alone; import aliases are
291
+ preserved instead of dropped.
292
+ - `--projects` / `--include` migrate one app or library at a time.
293
+ - Unused imports (`def`, `AnyLegacyQuery*`, stale client symbols) are no longer left behind.
294
+ - Auth providers are scaffolded from the v2 `V2BearerAuthProvider` config instead of `queries: []`.
295
+ - Devtools are migrated rather than deleted: the per-client `provideQueryClientForDevtools` calls
296
+ collapse into one `provideQueryDevtools()`, `QueryDevtoolsComponent` is re-imported from
297
+ `@ethlete/components`, and `<et-query-devtools>` markup is left alone - both versions use that selector.
298
+ - New report tasks for dropped v2 client options, missing `provideHttpClient()`, `setDefaultHeaders`
299
+ call sites and the auth import-cycle layout.
300
+
301
+ - [#3037](https://github.com/ethlete-io/ethdk/pull/3037) [`0c30546`](https://github.com/ethlete-io/ethdk/commit/0c30546c220bc40f5a167c9d5cbad2757e9c7108) Thanks [@github-actions](https://github.com/apps/github-actions)! - Add a signals-first query form: `createQueryForm({ fields, queryParamPrefix? })` alongside field creators `queryField`, `searchQueryField`, `sortQueryField`, `stringArrayQueryField`, `numberArrayQueryField`, `booleanArrayQueryField`, `dateQueryField`, `dateArrayQueryField`.
302
+
303
+ Built on Angular signal forms, so each field is bindable to the SDK's own controls with `[formField]` (e.g. `<input etInput [formField]="qf.fields.search" />`). Fields commit as a debounced signal `value`, sync to the URL query params (default elision, `ET_NULL__` sentinel, `active:direction` sort format, prefix namespacing), reset dependents via the `isResetBy` graph, expose `activeFilterCount` as a signal, and support a detached `branch()` for edit-then-apply filter flows.
304
+
305
+ Also adds a `withPageResetOnError` query feature that resets the page (a signal or a query-form field) when the current page goes out of range (HTTP `416`, or a dev-mode `500` Pagerfanta out-of-range error), plus the exported `isPageOutOfRangeError` predicate.
306
+
307
+ The existing reactive-forms `QueryForm` is unchanged and remains available.
308
+
309
+ ## 6.0.0-next.19
310
+
311
+ ### Minor Changes
312
+
313
+ - [#3036](https://github.com/ethlete-io/ethdk/pull/3036) [`aa4bdde`](https://github.com/ethlete-io/ethdk/commit/aa4bdde586615ed13735ed9c970831b91323ebad) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query devtools: add `provideQueryDevtools()` and a registry that instruments
314
+ queries, query stacks, paged query stacks, `querySequence`, bearer auth providers
315
+ and web socket clients so they can be inspected by `<et-query-devtools>` (from
316
+ `@ethlete/components`). Instrumentation is a no-op unless the provider is added,
317
+ so there is no overhead when it is omitted.
318
+
319
+ Supporting devtools APIs added: `querySequence` exposes a `stepArgs` signal (the
320
+ resolved input args of each step); the query repository gains
321
+ `subtle.cacheEntries()` / `subtle.cacheVersion` / `subtle.evict()`; queries gain
322
+ `subtle.setLoading()` / `subtle.setError()` (force UI states for testing);
323
+ `HttpRequest` exposes `method`, `url` and `expiresAt`; `QueryClient` exposes its
324
+ `baseUrl`; `QuerySequence` exposes its step `queries`; and web socket clients
325
+ expose a devtools handle (connection state, rooms, recent messages).
326
+
327
+ ## 6.0.0-next.18
328
+
329
+ ### Minor Changes
330
+
331
+ - [`5685798`](https://github.com/ethlete-io/ethdk/commit/56857988a9fb579a791950cd85d015dfd36921a3) Thanks [@TomTomB](https://github.com/TomTomB)! - Add `querySequence` for imperative waterfalls of dependent queries - chain mutations with `.then()`, thread each response into the next, and `run()` to a typed, discriminated result that aborts on the first error. Exposes `status`/`running`/`currentStep`/`error` progress signals for driving UI.
332
+
333
+ ## 6.0.0-next.17
334
+
335
+ ### Minor Changes
336
+
337
+ - [#3030](https://github.com/ethlete-io/ethdk/pull/3030) [`47e4109`](https://github.com/ethlete-io/ethdk/commit/47e41097adf96788120840bdd03cad25306628f2) Thanks [@github-actions](https://github.com/apps/github-actions)! - Add `validateWithQuery` (v3) and `validateWithV2Query` (v2) - query-backed async
338
+ validators for Angular signal forms. They adapt an `@ethlete/query` query into
339
+ `validateAsync`, so server-side validation runs through the query client (auth,
340
+ base route, caching, error normalization) instead of a raw `httpResource`. A
341
+ `422 FormViolationListView` maps each violation onto its child field by
342
+ `propertyPath` (via `mapViolationsToFormErrors`); success reports no errors and
343
+ network/other errors surface as a form-level error.
344
+
345
+ ## 6.0.0-next.16
346
+
347
+ ### Minor Changes
348
+
349
+ - [`a41491d`](https://github.com/ethlete-io/ethdk/commit/a41491db447152e69902020d19bfc30bccf3b01d) Thanks [@TomTomB](https://github.com/TomTomB)! - Server violations → signal-forms bridge:
350
+ - `@ethlete/query`: `mapViolationsToFormErrors({ fieldTree, error, rewritePath?, onUnmappedViolation? })` maps an API error's violation list onto a signal form's fields (unmapped violations become form-level errors, violation-free failures degrade to a form-level `etServerError`), plus `extractFormViolations(error)`, `executeUntilSettled(query, executeArgs?)` for awaiting one execution as a settled snapshot, and the `isQueryErrorResponse` guard.
351
+ - `@ethlete/components`: `provideFormErrorMessageResolver(resolver)` lets apps centralize/localize the text `et-form-error` renders by error `kind`; the error's own `message` stays the default.
352
+
353
+ ## 6.0.0-next.15
354
+
355
+ ### Patch Changes
356
+
357
+ - [#3022](https://github.com/ethlete-io/ethdk/pull/3022) [`9431073`](https://github.com/ethlete-io/ethdk/commit/9431073bb693aa10bbb84d5196597cb2c4b7463f) Thanks [@github-actions](https://github.com/apps/github-actions)! - Overlays and menus now open on insecure origins (plain-HTTP pages on a LAN IP, not just `localhost`/HTTPS). Id generation used `crypto.randomUUID()`, which is `undefined` outside a secure context, so opening any dialog, sheet, anchored overlay or menu threw and only the backdrop appeared. A new `randomId()` helper in `@ethlete/core` uses `crypto.randomUUID()` when available and falls back to `getRandomValues` otherwise.
358
+
359
+ ## 6.0.0-next.14
360
+
361
+ ### Patch Changes
362
+
363
+ - [#3019](https://github.com/ethlete-io/ethdk/pull/3019) [`b5655a9`](https://github.com/ethlete-io/ethdk/commit/b5655a9124b2ffc4d6982ca20be360b227a37107) Thanks [@github-actions](https://github.com/apps/github-actions)! - Query cache: a cached request now correctly becomes stale once its freshness
364
+ window (from `cache-control` / `expires`) elapses, so `execute({ allowCache: true })`
365
+ refetches instead of serving the cached response forever.
366
+
367
+ ## 6.0.0-next.13
368
+
369
+ ### Patch Changes
370
+
371
+ - [`4e9f2b4`](https://github.com/ethlete-io/ethdk/commit/4e9f2b4d12335fafef192350aef8ffc584996a91) Thanks [@TomTomB](https://github.com/TomTomB)! - Remove the now-redundant `changeDetection: ChangeDetectionStrategy.OnPush` declaration (and its `ChangeDetectionStrategy` import) from all components. OnPush is the default change detection strategy since Angular 22, so this is a no-op cleanup with no behavioral change.
372
+
373
+ ## 6.0.0-next.12
374
+
375
+ ### Minor Changes
376
+
377
+ - [`edea44b`](https://github.com/ethlete-io/ethdk/commit/edea44bf1c494420f02b545202f4b24db9a6395c) Thanks [@TomTomB](https://github.com/TomTomB)! - Update to angular 22
378
+
379
+ ## 6.0.0-next.11
380
+
381
+ ### Patch Changes
382
+
383
+ - [#2995](https://github.com/ethlete-io/ethdk/pull/2995) [`9038da9`](https://github.com/ethlete-io/ethdk/commit/9038da9dba1af6597ce24056f45354b4073673aa) Thanks [@github-actions](https://github.com/apps/github-actions)! - Fix `withSuccessHandling`, `withErrorHandling` and `withLogging` callbacks sometimes being skipped when a query re-executes in quick succession (e.g. polling, auto-refresh, or fast repeated requests). Each execution's result now reliably triggers its handler.
384
+
385
+ - [#2995](https://github.com/ethlete-io/ethdk/pull/2995) [`24b4fd7`](https://github.com/ethlete-io/ethdk/commit/24b4fd7e1aebda8a4844d4a8ec9700aa1a89a0ee) Thanks [@github-actions](https://github.com/apps/github-actions)! - Fix secure queries intermittently throwing `tokensNotAvailableInsideAuthAndExec` when the auth query completes on a different reactive timeline than the access token is set on (e.g. a cross-client / secure login query whose token is populated by a separate effect). The secure execute factory now waits for the access token to be available before running the request instead of assuming it is set the moment the auth query has a response, and recovers automatically once the token arrives.
386
+
387
+ ## 6.0.0-next.10
388
+
389
+ ### Patch Changes
390
+
391
+ - [`256b1b0`](https://github.com/ethlete-io/ethdk/commit/256b1b02d7598a0a6540af55447799a8ced469c4) Thanks [@TomTomB](https://github.com/TomTomB)! - Bump only to implement fixes from 5.44.0
392
+
393
+ ## 5.44.0
394
+
395
+ ### Minor Changes
396
+
397
+ - [`8d2efef`](https://github.com/ethlete-io/ethdk/commit/8d2efef2a367db82d44977a3fdfe56396bb46515) Thanks [@TomTomB](https://github.com/TomTomB)! - Minor bump only
398
+
399
+ ## 5.43.2
400
+
401
+ ### Patch Changes
402
+
403
+ - [`830b987`](https://github.com/ethlete-io/ethdk/commit/830b987eba43a51252c3c55eee5590ceef8bf1cb) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix query v3 features not reacting to 204 responses due to null checks
404
+
405
+ ## 5.44.0
406
+
407
+ ### Minor Changes
408
+
409
+ - [`8d2efef`](https://github.com/ethlete-io/ethdk/commit/8d2efef2a367db82d44977a3fdfe56396bb46515) Thanks [@TomTomB](https://github.com/TomTomB)! - Minor bump only
410
+
411
+ ## 5.43.2
412
+
413
+ ### Patch Changes
414
+
415
+ - [`830b987`](https://github.com/ethlete-io/ethdk/commit/830b987eba43a51252c3c55eee5590ceef8bf1cb) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix query v3 features not reacting to 204 responses due to null checks
416
+
417
+ ## 6.0.0-next.9
418
+
419
+ ### Patch Changes
420
+
421
+ - [`b73a127`](https://github.com/ethlete-io/ethdk/commit/b73a127002a06e3aa0c4e7e977b1ad1f3e04e7e6) Thanks [@TomTomB](https://github.com/TomTomB)! - Bump yet again, final one for sure, pinky promise
422
+
423
+ ## 6.0.0-beta.8
424
+
425
+ ### Patch Changes
426
+
427
+ - [`ddb5d09`](https://github.com/ethlete-io/ethdk/commit/ddb5d09e4bc56e18cc8c228aa78a200441e7a766) Thanks [@TomTomB](https://github.com/TomTomB)! - Bump to beta
428
+
429
+ - Updated dependencies [[`ddb5d09`](https://github.com/ethlete-io/ethdk/commit/ddb5d09e4bc56e18cc8c228aa78a200441e7a766)]:
430
+ - @ethlete/types@2.0.0-beta.4
431
+ - @ethlete/core@5.0.0-beta.11
432
+
433
+ ## 6.0.0-next.7
434
+
435
+ ### Patch Changes
436
+
437
+ - [`a690217`](https://github.com/ethlete-io/ethdk/commit/a6902172efd9bd1956a16237e79acbfbd816d946) Thanks [@TomTomB](https://github.com/TomTomB)! - Version bump only
438
+
439
+ ## 6.0.0-next.6
440
+
441
+ ### Patch Changes
442
+
443
+ - [`8d31d0b`](https://github.com/ethlete-io/ethdk/commit/8d31d0b0ea523c6f79680e3a2cbf5ceba109f5d9) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix bearer token revocation not working
444
+
445
+ ## 6.0.0-next.5
446
+
447
+ ### Minor Changes
448
+
449
+ - [#2959](https://github.com/ethlete-io/ethdk/pull/2959) [`5423369`](https://github.com/ethlete-io/ethdk/commit/542336985297868592cdb6a9732c5d161160730f) Thanks [@github-actions](https://github.com/apps/github-actions)! - Add executionState signal to auth provider
450
+
451
+ ## 6.0.0-next.4
452
+
453
+ ### Patch Changes
454
+
455
+ - [#2958](https://github.com/ethlete-io/ethdk/pull/2958) [`8ecdfc0`](https://github.com/ethlete-io/ethdk/commit/8ecdfc00d785b0b535601b5d95ca7e2cd55455b6) Thanks [@github-actions](https://github.com/apps/github-actions)! - Update v3 migration to reflect latest api changes
456
+
3
457
  ## 6.0.0-next.3
4
458
 
5
459
  ### Patch Changes