@schemavaults/auth-react-provider 0.9.9 → 0.9.10
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/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-auto-reacquire-default-access-tokens.d.ts +2 -0
- package/dist/hooks/use-auto-reacquire-default-access-tokens.js +60 -0
- package/dist/hooks/use-auto-reacquire-default-access-tokens.js.map +1 -0
- package/package.json +1 -1
package/dist/hooks/index.d.ts
CHANGED
|
@@ -21,3 +21,4 @@ export type * from "./use-start-register-oauth-pkce-flow";
|
|
|
21
21
|
export { useAppId } from "./use-app-id";
|
|
22
22
|
export { useIsAuthServer } from "./use-is-auth-server";
|
|
23
23
|
export { useDefaultAccessTokenAudiences } from "./use-default-access-token-audiences";
|
|
24
|
+
export { useAutoReacquireDefaultAccessTokens } from "./use-auto-reacquire-default-access-tokens";
|
package/dist/hooks/index.js
CHANGED
|
@@ -11,4 +11,5 @@ export { useStartRegisterOauthPKCEFlow } from "./use-start-register-oauth-pkce-f
|
|
|
11
11
|
export { useAppId } from "./use-app-id";
|
|
12
12
|
export { useIsAuthServer } from "./use-is-auth-server";
|
|
13
13
|
export { useDefaultAccessTokenAudiences } from "./use-default-access-token-audiences";
|
|
14
|
+
export { useAutoReacquireDefaultAccessTokens } from "./use-auto-reacquire-default-access-tokens";
|
|
14
15
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,wCAAwC,EAAE,MAAM,2CAA2C,CAAC;AAGrG,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAG5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAG/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAGrF,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,wCAAwC,EAAE,MAAM,2CAA2C,CAAC;AAGrG,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAG5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAG/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAGrF,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAEtF,OAAO,EAAE,mCAAmC,EAAE,MAAM,4CAA4C,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { accessTokenExpiry } from "@schemavaults/auth-common";
|
|
3
|
+
import { useEffect } from "react";
|
|
4
|
+
import useAuth from "./use-auth";
|
|
5
|
+
import useDefaultAccessTokenAudiences from "./use-default-access-token-audiences";
|
|
6
|
+
const ACCESS_TOKEN_VALID_DURATION = accessTokenExpiry;
|
|
7
|
+
const REACQUIRE_INTERVAL = ACCESS_TOKEN_VALID_DURATION / 10;
|
|
8
|
+
// when 30% left in duration or less, reqacuire
|
|
9
|
+
const REACQUIRE_THRESHOLD = ACCESS_TOKEN_VALID_DURATION * 0.3;
|
|
10
|
+
export function useAutoReacquireDefaultAccessTokens() {
|
|
11
|
+
const authContext = useAuth();
|
|
12
|
+
const defaultAccessTokenAudiences = useDefaultAccessTokenAudiences();
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (typeof defaultAccessTokenAudiences === "undefined" ||
|
|
15
|
+
!Array.isArray(defaultAccessTokenAudiences)) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (!authContext.ready || !authContext.client.current) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const auth = authContext.client.current;
|
|
22
|
+
async function reacquireAccessTokenIfNearExpiry(audience) {
|
|
23
|
+
const existingAccessToken = auth.getAccessTokenFromCache(audience);
|
|
24
|
+
if (!existingAccessToken) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const timeUntilExpiry = existingAccessToken.exp - Date.now();
|
|
28
|
+
if (timeUntilExpiry <= 0) {
|
|
29
|
+
// expired
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
if (timeUntilExpiry < REACQUIRE_THRESHOLD) {
|
|
33
|
+
return await auth.acquireAccessToken({
|
|
34
|
+
audience,
|
|
35
|
+
ensure_fresh: true,
|
|
36
|
+
dont_cache: false,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async function onTimer() {
|
|
44
|
+
if (!auth.isAuthenticated) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (typeof defaultAccessTokenAudiences === "undefined") {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
await Promise.all(defaultAccessTokenAudiences.map((audience) => reacquireAccessTokenIfNearExpiry(audience)));
|
|
51
|
+
}
|
|
52
|
+
const reacquire_timer = setInterval(onTimer, REACQUIRE_INTERVAL);
|
|
53
|
+
return function unsubscribe() {
|
|
54
|
+
clearInterval(reacquire_timer);
|
|
55
|
+
return;
|
|
56
|
+
};
|
|
57
|
+
}, [authContext]);
|
|
58
|
+
}
|
|
59
|
+
export default useAutoReacquireDefaultAccessTokens;
|
|
60
|
+
//# sourceMappingURL=use-auto-reacquire-default-access-tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-auto-reacquire-default-access-tokens.js","sourceRoot":"","sources":["../../src/hooks/use-auto-reacquire-default-access-tokens.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAe,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,OAAO,8BAA8B,MAAM,sCAAsC,CAAC;AAGlF,MAAM,2BAA2B,GAAW,iBAAiB,CAAC;AAC9D,MAAM,kBAAkB,GAAW,2BAA2B,GAAG,EAAE,CAAC;AACpE,+CAA+C;AAC/C,MAAM,mBAAmB,GAAW,2BAA2B,GAAG,GAAG,CAAC;AAEtE,MAAM,UAAU,mCAAmC;IACjD,MAAM,WAAW,GAAG,OAAO,EAAE,CAAC;IAC9B,MAAM,2BAA2B,GAAG,8BAA8B,EAAE,CAAC;IAErE,SAAS,CAAC,GAAG,EAAE;QACb,IACE,OAAO,2BAA2B,KAAK,WAAW;YAClD,CAAC,KAAK,CAAC,OAAO,CAAC,2BAA2B,CAAC,EAC3C,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAA4B,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;QAEjE,KAAK,UAAU,gCAAgC,CAC7C,QAAqB;YAErB,MAAM,mBAAmB,GACvB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,eAAe,GAAW,mBAAmB,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrE,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;gBACzB,UAAU;gBACV,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,eAAe,GAAG,mBAAmB,EAAE,CAAC;gBAC1C,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC;oBACnC,QAAQ;oBACR,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,KAAK,UAAU,OAAO;YACpB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,IAAI,OAAO,2BAA2B,KAAK,WAAW,EAAE,CAAC;gBACvD,OAAO;YACT,CAAC;YACD,MAAM,OAAO,CAAC,GAAG,CACf,2BAA2B,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC3C,gCAAgC,CAAC,QAAQ,CAAC,CAC3C,CACF,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAEjE,OAAO,SAAS,WAAW;YACzB,aAAa,CAAC,eAAe,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,eAAe,mCAAmC,CAAC"}
|
package/package.json
CHANGED