oidc-spa 2.3.1 → 2.3.2
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/README.md +2 -0
- package/oidc.d.ts +3 -0
- package/oidc.js +11 -2
- package/oidc.js.map +1 -1
- package/package.json +1 -1
- package/react.d.ts +8 -2
- package/react.js +17 -10
- package/react.js.map +1 -1
- package/src/oidc.ts +14 -0
- package/src/react.tsx +24 -15
package/README.md
CHANGED
|
@@ -194,6 +194,8 @@ function useUser() {
|
|
|
194
194
|
throw new Error("This hook should be used only on authenticated routes");
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
+
// NOTE: When idToken changes, the component get re-rendered
|
|
198
|
+
// so idToken can be used in dependency arrays. ✅
|
|
197
199
|
const { idToken } = oidc.getTokens();
|
|
198
200
|
|
|
199
201
|
const user = useMemo(
|
package/oidc.d.ts
CHANGED
|
@@ -17,6 +17,9 @@ export declare namespace Oidc {
|
|
|
17
17
|
isUserLoggedIn: true;
|
|
18
18
|
renewTokens(): Promise<void>;
|
|
19
19
|
getTokens: () => Tokens;
|
|
20
|
+
subscribeToTokensChange: (onTokenChange: () => void) => {
|
|
21
|
+
unsubscribe: () => void;
|
|
22
|
+
};
|
|
20
23
|
logout: (params: {
|
|
21
24
|
redirectTo: "home" | "current page";
|
|
22
25
|
} | {
|
package/oidc.js
CHANGED
|
@@ -95,7 +95,7 @@ var paramsToRetrieveFromSuccessfulLogin = ["code", "state", "session_state"];
|
|
|
95
95
|
/** @see: https://github.com/garronej/oidc-spa#option-1-usage-without-involving-the-ui-framework */
|
|
96
96
|
function createOidc(params) {
|
|
97
97
|
return __awaiter(this, void 0, void 0, function () {
|
|
98
|
-
var issuerUri, clientId, _a, transformUrlBeforeRedirect, getExtraQueryParams, publicUrl_params, publicUrl, configHash, configHashKey, userManager, lastPublicRoute, realPushState_1, login, currentTokens, common, error, oidc;
|
|
98
|
+
var issuerUri, clientId, _a, transformUrlBeforeRedirect, getExtraQueryParams, publicUrl_params, publicUrl, configHash, configHashKey, userManager, lastPublicRoute, realPushState_1, login, currentTokens, common, error, onTokenChanges, oidc;
|
|
99
99
|
var _this = this;
|
|
100
100
|
return __generator(this, function (_b) {
|
|
101
101
|
switch (_b.label) {
|
|
@@ -384,6 +384,7 @@ function createOidc(params) {
|
|
|
384
384
|
if (currentTokens === undefined) {
|
|
385
385
|
return [2 /*return*/, (0, id_1.id)(__assign(__assign({}, common), { "isUserLoggedIn": false, login: login }))];
|
|
386
386
|
}
|
|
387
|
+
onTokenChanges = new Set();
|
|
387
388
|
oidc = (0, id_1.id)(__assign(__assign({}, common), { "isUserLoggedIn": true, "getTokens": function () { return ({
|
|
388
389
|
"accessToken": currentTokens.accessToken,
|
|
389
390
|
"idToken": currentTokens.idToken,
|
|
@@ -420,10 +421,18 @@ function createOidc(params) {
|
|
|
420
421
|
user = _a.sent();
|
|
421
422
|
(0, assert_1.assert)(user !== null);
|
|
422
423
|
Object.assign(currentTokens, userToTokens(user));
|
|
424
|
+
onTokenChanges.forEach(function (onTokenChange) { return onTokenChange(); });
|
|
423
425
|
return [2 /*return*/];
|
|
424
426
|
}
|
|
425
427
|
});
|
|
426
|
-
}); }
|
|
428
|
+
}); }, "subscribeToTokensChange": function (onTokenChange) {
|
|
429
|
+
onTokenChanges.add(onTokenChange);
|
|
430
|
+
return {
|
|
431
|
+
"unsubscribe": function () {
|
|
432
|
+
onTokenChanges.delete(onTokenChange);
|
|
433
|
+
}
|
|
434
|
+
};
|
|
435
|
+
} }));
|
|
427
436
|
(function scheduleAutomaticRenew() {
|
|
428
437
|
var _this = this;
|
|
429
438
|
var msBeforeExpiration = Math.min(currentTokens.accessTokenExpirationTime, currentTokens.refreshTokenExpirationTime) -
|
package/oidc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oidc.js","sourceRoot":"","sources":["src/oidc.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAwD;AACxD,+BAA8B;AAC9B,2EAA0E;AAC1E,uCAAmD;AACnD,yDAAuF;AACvF,yDAAwD;AACxD,6CAA4C;
|
|
1
|
+
{"version":3,"file":"oidc.js","sourceRoot":"","sources":["src/oidc.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/react.d.ts
CHANGED
|
@@ -6,10 +6,16 @@ export declare function createOidcProvider(params: Parameters<typeof createOidc>
|
|
|
6
6
|
fallback?: ReactNode;
|
|
7
7
|
children: ReactNode;
|
|
8
8
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
getOidc: () => Oidc;
|
|
10
9
|
prOidc: Promise<Oidc>;
|
|
11
10
|
};
|
|
12
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* @see: https://github.com/garronej/oidc-spa#option-2-usage-directly-within-react
|
|
13
|
+
*
|
|
14
|
+
* Note that when the tokens changes the component will rerender automatically so
|
|
15
|
+
* you can safely use the returned values of getTokens() as state variables.
|
|
16
|
+
* In other terms you can use accessToken and idToken as dependencies of useEffect() or useMemo().
|
|
17
|
+
*
|
|
18
|
+
* */
|
|
13
19
|
export declare function useOidc(): {
|
|
14
20
|
oidc: Oidc;
|
|
15
21
|
};
|
package/react.js
CHANGED
|
@@ -47,21 +47,28 @@ function createOidcProvider(params) {
|
|
|
47
47
|
}
|
|
48
48
|
return (0, jsx_runtime_1.jsx)(oidcContext.Provider, __assign({ value: oidc }, { children: children }));
|
|
49
49
|
}
|
|
50
|
-
|
|
51
|
-
prOidc.then(function (oidc_) {
|
|
52
|
-
oidc = oidc_;
|
|
53
|
-
});
|
|
54
|
-
function getOidc() {
|
|
55
|
-
(0, assert_1.assert)(oidc !== undefined, "oidc not ready yet");
|
|
56
|
-
return oidc;
|
|
57
|
-
}
|
|
58
|
-
return { OidcProvider: OidcProvider, getOidc: getOidc, prOidc: prOidc };
|
|
50
|
+
return { OidcProvider: OidcProvider, prOidc: prOidc };
|
|
59
51
|
}
|
|
60
52
|
exports.createOidcProvider = createOidcProvider;
|
|
61
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* @see: https://github.com/garronej/oidc-spa#option-2-usage-directly-within-react
|
|
55
|
+
*
|
|
56
|
+
* Note that when the tokens changes the component will rerender automatically so
|
|
57
|
+
* you can safely use the returned values of getTokens() as state variables.
|
|
58
|
+
* In other terms you can use accessToken and idToken as dependencies of useEffect() or useMemo().
|
|
59
|
+
*
|
|
60
|
+
* */
|
|
62
61
|
function useOidc() {
|
|
63
62
|
var oidc = (0, react_1.useContext)(oidcContext);
|
|
64
63
|
(0, assert_1.assert)(oidc !== undefined, "You must use useOidc inside a OidcProvider");
|
|
64
|
+
var _a = __read((0, react_1.useReducer)(function () { return []; }, []), 2), forceUpdate = _a[1];
|
|
65
|
+
(0, react_1.useEffect)(function () {
|
|
66
|
+
if (!oidc.isUserLoggedIn) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
var unsubscribe = oidc.subscribeToTokensChange(forceUpdate).unsubscribe;
|
|
70
|
+
return unsubscribe;
|
|
71
|
+
}, [oidc]);
|
|
65
72
|
return { oidc: oidc };
|
|
66
73
|
}
|
|
67
74
|
exports.useOidc = useOidc;
|
package/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["src/react.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["src/react.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAmG;AACnG,+BAA+C;AAC/C,uCAAsC;AAEtC,IAAM,WAAW,GAAG,IAAA,qBAAa,EAAmB,SAAS,CAAC,CAAC;AAE/D,sFAAsF;AACtF,SAAgB,kBAAkB,CAAC,MAAwC;IACvE,IAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,MAAM,CAAC,CAAC;IAElC,SAAS,YAAY,CAAC,KAAoD;QAC9D,IAAA,QAAQ,GAAe,KAAK,SAApB,EAAE,QAAQ,GAAK,KAAK,SAAV,CAAW;QAE/B,IAAA,KAAA,OAAkB,IAAA,gBAAQ,EAAmB,SAAS,CAAC,IAAA,EAAtD,IAAI,QAAA,EAAE,OAAO,QAAyC,CAAC;QAE9D,IAAA,iBAAS,EAAC;YACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,OAAO,2DAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAI,CAAC;SAC1D;QAED,OAAO,uBAAC,WAAW,CAAC,QAAQ,aAAC,KAAK,EAAE,IAAI,gBAAG,QAAQ,IAAwB,CAAC;IAChF,CAAC;IAED,OAAO,EAAE,YAAY,cAAA,EAAE,MAAM,QAAA,EAAE,CAAC;AACpC,CAAC;AApBD,gDAoBC;AAED;;;;;;;KAOK;AACL,SAAgB,OAAO;IACnB,IAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,WAAW,CAAC,CAAC;IAErC,IAAA,eAAM,EAAC,IAAI,KAAK,SAAS,EAAE,4CAA4C,CAAC,CAAC;IAEnE,IAAA,KAAA,OAAkB,IAAA,kBAAU,EAAC,cAAM,OAAA,EAAE,EAAF,CAAE,EAAE,EAAE,CAAC,IAAA,EAAvC,WAAW,QAA4B,CAAC;IAEjD,IAAA,iBAAS,EAAC;QACN,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,OAAO;SACV;QAEO,IAAA,WAAW,GAAK,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,YAA9C,CAA+C;QAElE,OAAO,WAAW,CAAC;IACvB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,EAAE,IAAI,MAAA,EAAE,CAAC;AACpB,CAAC;AAlBD,0BAkBC"}
|
package/src/oidc.ts
CHANGED
|
@@ -28,6 +28,7 @@ export declare namespace Oidc {
|
|
|
28
28
|
isUserLoggedIn: true;
|
|
29
29
|
renewTokens(): Promise<void>;
|
|
30
30
|
getTokens: () => Tokens;
|
|
31
|
+
subscribeToTokensChange: (onTokenChange: () => void) => { unsubscribe: () => void };
|
|
31
32
|
logout: (
|
|
32
33
|
params: { redirectTo: "home" | "current page" } | { redirectTo: "specific url"; url: string }
|
|
33
34
|
) => Promise<never>;
|
|
@@ -389,6 +390,8 @@ export async function createOidc(params: {
|
|
|
389
390
|
});
|
|
390
391
|
}
|
|
391
392
|
|
|
393
|
+
const onTokenChanges = new Set<() => void>();
|
|
394
|
+
|
|
392
395
|
const oidc = id<Oidc.LoggedIn>({
|
|
393
396
|
...common,
|
|
394
397
|
"isUserLoggedIn": true,
|
|
@@ -421,6 +424,17 @@ export async function createOidc(params: {
|
|
|
421
424
|
assert(user !== null);
|
|
422
425
|
|
|
423
426
|
Object.assign(currentTokens, userToTokens(user));
|
|
427
|
+
|
|
428
|
+
onTokenChanges.forEach(onTokenChange => onTokenChange());
|
|
429
|
+
},
|
|
430
|
+
"subscribeToTokensChange": onTokenChange => {
|
|
431
|
+
onTokenChanges.add(onTokenChange);
|
|
432
|
+
|
|
433
|
+
return {
|
|
434
|
+
"unsubscribe": () => {
|
|
435
|
+
onTokenChanges.delete(onTokenChange);
|
|
436
|
+
}
|
|
437
|
+
};
|
|
424
438
|
}
|
|
425
439
|
});
|
|
426
440
|
|
package/src/react.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useEffect, useState, createContext, useContext, type ReactNode } from "react";
|
|
1
|
+
import { useEffect, useState, createContext, useContext, useReducer, type ReactNode } from "react";
|
|
2
2
|
import { createOidc, type Oidc } from "./oidc";
|
|
3
3
|
import { assert } from "tsafe/assert";
|
|
4
4
|
|
|
@@ -24,24 +24,33 @@ export function createOidcProvider(params: Parameters<typeof createOidc>[0]) {
|
|
|
24
24
|
return <oidcContext.Provider value={oidc}>{children}</oidcContext.Provider>;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
prOidc.then(oidc_ => {
|
|
30
|
-
oidc = oidc_;
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
function getOidc() {
|
|
34
|
-
assert(oidc !== undefined, "oidc not ready yet");
|
|
35
|
-
|
|
36
|
-
return oidc;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
return { OidcProvider, getOidc, prOidc };
|
|
27
|
+
return { OidcProvider, prOidc };
|
|
40
28
|
}
|
|
41
29
|
|
|
42
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* @see: https://github.com/garronej/oidc-spa#option-2-usage-directly-within-react
|
|
32
|
+
*
|
|
33
|
+
* Note that when the tokens changes the component will rerender automatically so
|
|
34
|
+
* you can safely use the returned values of getTokens() as state variables.
|
|
35
|
+
* In other terms you can use accessToken and idToken as dependencies of useEffect() or useMemo().
|
|
36
|
+
*
|
|
37
|
+
* */
|
|
43
38
|
export function useOidc() {
|
|
44
39
|
const oidc = useContext(oidcContext);
|
|
40
|
+
|
|
45
41
|
assert(oidc !== undefined, "You must use useOidc inside a OidcProvider");
|
|
42
|
+
|
|
43
|
+
const [, forceUpdate] = useReducer(() => [], []);
|
|
44
|
+
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
if (!oidc.isUserLoggedIn) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const { unsubscribe } = oidc.subscribeToTokensChange(forceUpdate);
|
|
51
|
+
|
|
52
|
+
return unsubscribe;
|
|
53
|
+
}, [oidc]);
|
|
54
|
+
|
|
46
55
|
return { oidc };
|
|
47
56
|
}
|