@ethlete/query 6.0.0-next.4 → 6.0.0-next.5
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.
- package/CHANGELOG.md +6 -0
- package/fesm2022/ethlete-query.mjs +36 -5
- package/fesm2022/ethlete-query.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ethlete-query.d.ts +26 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @ethlete/query
|
|
2
2
|
|
|
3
|
+
## 6.0.0-next.5
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#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
|
|
8
|
+
|
|
3
9
|
## 6.0.0-next.4
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -5539,7 +5539,16 @@ const defaultExtractTokens = (response) => {
|
|
|
5539
5539
|
}
|
|
5540
5540
|
return { accessToken: response['accessToken'], refreshToken: response['refreshToken'] };
|
|
5541
5541
|
};
|
|
5542
|
-
const
|
|
5542
|
+
const deriveExecutionStateType = (builder, triggeredBy) => {
|
|
5543
|
+
if (triggeredBy === 'persistent-auth')
|
|
5544
|
+
return 'autoLogin';
|
|
5545
|
+
if (builder._type === 'tokenRefreshQuery')
|
|
5546
|
+
return 'tokenRefresh';
|
|
5547
|
+
if (triggeredBy === 'token-revocation')
|
|
5548
|
+
return 'revocation';
|
|
5549
|
+
return builder.key;
|
|
5550
|
+
};
|
|
5551
|
+
const setupBearerQueryRegistry = (builders, injector, latestExecutedQuery, latestNonInternalQuery, setTokens, executionState) => {
|
|
5543
5552
|
const queries = {};
|
|
5544
5553
|
const querySnapshots = new Map();
|
|
5545
5554
|
for (const builder of builders) {
|
|
@@ -5572,10 +5581,27 @@ const setupBearerQueryRegistry = (builders, injector, latestExecutedQuery, lates
|
|
|
5572
5581
|
});
|
|
5573
5582
|
query.execute({ args, options });
|
|
5574
5583
|
const snapshot = query.createSnapshot();
|
|
5575
|
-
|
|
5576
|
-
if (
|
|
5577
|
-
|
|
5584
|
+
const stateType = deriveExecutionStateType(builder, options?.triggeredBy);
|
|
5585
|
+
if (stateType !== 'revocation') {
|
|
5586
|
+
latestExecutedQuery.set({ key: builder.key, snapshot });
|
|
5587
|
+
if (!snapshot.triggeredBy()) {
|
|
5588
|
+
latestNonInternalQuery.set({ key: builder.key, snapshot });
|
|
5589
|
+
}
|
|
5578
5590
|
}
|
|
5591
|
+
executionState.set({ type: stateType, state: 'loading' });
|
|
5592
|
+
effect(() => {
|
|
5593
|
+
const response = snapshot.response();
|
|
5594
|
+
const loading = snapshot.loading();
|
|
5595
|
+
const error = snapshot.error();
|
|
5596
|
+
if (loading)
|
|
5597
|
+
return;
|
|
5598
|
+
if (error) {
|
|
5599
|
+
executionState.set({ type: stateType, state: 'error', error });
|
|
5600
|
+
}
|
|
5601
|
+
else if (response) {
|
|
5602
|
+
executionState.set({ type: stateType, state: 'success', response });
|
|
5603
|
+
}
|
|
5604
|
+
}, { injector });
|
|
5579
5605
|
querySnapshot.set(snapshot);
|
|
5580
5606
|
return snapshot;
|
|
5581
5607
|
};
|
|
@@ -5655,18 +5681,20 @@ const createBearerAuthProviderImpl = (config) => {
|
|
|
5655
5681
|
const isAuthenticated = computed(() => !!accessToken(), ...(ngDevMode ? [{ debugName: "isAuthenticated" }] : []));
|
|
5656
5682
|
const latestExecutedQuery = signal(null, ...(ngDevMode ? [{ debugName: "latestExecutedQuery" }] : []));
|
|
5657
5683
|
const latestNonInternalQuery = signal(null, ...(ngDevMode ? [{ debugName: "latestNonInternalQuery" }] : []));
|
|
5684
|
+
const executionState = signal(null, ...(ngDevMode ? [{ debugName: "executionState" }] : []));
|
|
5658
5685
|
const setTokens = (access, refresh) => {
|
|
5659
5686
|
accessToken.set(access);
|
|
5660
5687
|
refreshToken.set(refresh);
|
|
5661
5688
|
afterTokenRefresh$.next();
|
|
5662
5689
|
};
|
|
5663
|
-
const { queries } = setupBearerQueryRegistry(config.queries, injector, latestExecutedQuery, latestNonInternalQuery, setTokens);
|
|
5690
|
+
const { queries } = setupBearerQueryRegistry(config.queries, injector, latestExecutedQuery, latestNonInternalQuery, setTokens, executionState);
|
|
5664
5691
|
const logout = () => {
|
|
5665
5692
|
accessToken.set(null);
|
|
5666
5693
|
refreshToken.set(null);
|
|
5667
5694
|
queryClient.repository.unbindAllSecure();
|
|
5668
5695
|
latestExecutedQuery.set(null);
|
|
5669
5696
|
latestNonInternalQuery.set(null);
|
|
5697
|
+
executionState.set({ type: 'logout', state: 'success' });
|
|
5670
5698
|
};
|
|
5671
5699
|
const isLeader = createLeaderElection(config);
|
|
5672
5700
|
const querySetupContext = {
|
|
@@ -5694,6 +5722,7 @@ const createBearerAuthProviderImpl = (config) => {
|
|
|
5694
5722
|
leaderElection: isLeader.leaderElectionContext,
|
|
5695
5723
|
afterTokenRefresh$,
|
|
5696
5724
|
queries: queries,
|
|
5725
|
+
executionState,
|
|
5697
5726
|
};
|
|
5698
5727
|
const features = setupFeatures(config.features, featureSetupContext);
|
|
5699
5728
|
setupMultiTabSyncIfEnabled(config, accessToken, refreshToken, queryClient);
|
|
@@ -5706,6 +5735,7 @@ const createBearerAuthProviderImpl = (config) => {
|
|
|
5706
5735
|
isAuthenticated,
|
|
5707
5736
|
latestExecutedQuery: latestExecutedQuery.asReadonly(),
|
|
5708
5737
|
latestNonInternalQuery: latestNonInternalQuery.asReadonly(),
|
|
5738
|
+
executionState: executionState.asReadonly(),
|
|
5709
5739
|
logout,
|
|
5710
5740
|
afterTokenRefresh$,
|
|
5711
5741
|
};
|
|
@@ -6043,6 +6073,7 @@ const withTokenRevocation = (config) => {
|
|
|
6043
6073
|
return null;
|
|
6044
6074
|
}
|
|
6045
6075
|
const args = config.buildArgs({ accessToken, refreshToken });
|
|
6076
|
+
context.executionState.set({ type: 'revocation', state: 'loading' });
|
|
6046
6077
|
currentRevocationSnapshot = context.queries[config.queryKey].execute(args, {
|
|
6047
6078
|
triggeredBy: 'token-revocation',
|
|
6048
6079
|
});
|