oidc-spa 3.0.0 → 3.0.1
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 +6 -11
- package/package.json +1 -1
- package/react.d.ts +1 -1
- package/react.js +3 -3
- package/react.js.map +1 -1
- package/src/react.tsx +4 -4
package/README.md
CHANGED
|
@@ -19,14 +19,12 @@
|
|
|
19
19
|
</a>
|
|
20
20
|
</p>
|
|
21
21
|
<p align="center">
|
|
22
|
-
<a href="https://github.com/garronej/oidc-spa">Home</a>
|
|
23
|
-
-
|
|
24
22
|
<a href="https://docs.oidc-spa.dev">Documentation</a>
|
|
25
23
|
</p>
|
|
26
24
|
|
|
27
|
-
An OIDC client
|
|
28
|
-
This is
|
|
29
|
-
oidc-spa
|
|
25
|
+
An OIDC client tailored for Single Page Applications, particularly suitable for [Vite](https://vitejs.dev/) projects.
|
|
26
|
+
This library is intended for scenarios such as integrating your application with Keycloak.
|
|
27
|
+
`oidc-spa` is designed to be **very easy to set up and use**, even for those who are not familiar with the OIDC protocol.
|
|
30
28
|
|
|
31
29
|
## Comparison with Existing Libraries
|
|
32
30
|
|
|
@@ -39,13 +37,12 @@ We utilize `oidc-client-ts` internally but abstract away most of its intricacies
|
|
|
39
37
|
### [react-oidc-context](https://github.com/authts/react-oidc-context)
|
|
40
38
|
|
|
41
39
|
Our library takes a modular approach to OIDC and React, treating them as separate concerns that don't necessarily have to be intertwined.
|
|
42
|
-
At
|
|
43
|
-
|
|
44
|
-
However we also provide adapters for React and starter project for integrating with react-router-dom or @tanstack/react-router.
|
|
40
|
+
At its core, `oidc-spa` is a straightforward adapter that isn't tied to any specific UI framework, making it suitable for projects that enforce a strict separation of concerns between the core logic of the application and the UI.
|
|
41
|
+
Additionally, we provide adapters for React and starter projects for integration with `react-router-dom` or `@tanstack/react-router`.
|
|
45
42
|
|
|
46
43
|
### [keycloak-js](https://www.npmjs.com/package/keycloak-js)
|
|
47
44
|
|
|
48
|
-
Beside the fact that this lib only works with Keycloak [it is also likely to be deprecated
|
|
45
|
+
Beside the fact that this lib only works with Keycloak [it is also likely to be deprecated](https://www.keycloak.org/2023/03/adapter-deprecation-update).
|
|
49
46
|
|
|
50
47
|
## 🚀 Quick start
|
|
51
48
|
|
|
@@ -53,8 +50,6 @@ Heads over to [the documentation website](https://docs.oidc-spa.dev) 📘!
|
|
|
53
50
|
|
|
54
51
|
## Showcases
|
|
55
52
|
|
|
56
|
-
`oidc-spa` is used at scale by important organization with thousand of users!
|
|
57
|
-
|
|
58
53
|
This library is powers the authentication of the following platforms:
|
|
59
54
|
|
|
60
55
|
### Onyxia
|
package/package.json
CHANGED
package/react.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export declare namespace ReactiveOidc {
|
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
export declare function createUseOidc<DecodedOidcIdToken extends Record<string, unknown> = Record<string, unknown>>(params?: {
|
|
31
|
-
|
|
31
|
+
decodedIdTokenSchema?: {
|
|
32
32
|
parse: (data: unknown) => DecodedOidcIdToken;
|
|
33
33
|
};
|
|
34
34
|
}): {
|
package/react.js
CHANGED
|
@@ -53,7 +53,7 @@ function createOidcProvider(params) {
|
|
|
53
53
|
}
|
|
54
54
|
exports.createOidcProvider = createOidcProvider;
|
|
55
55
|
function createUseOidc(params) {
|
|
56
|
-
var
|
|
56
|
+
var decodedIdTokenSchema = (params !== null && params !== void 0 ? params : {}).decodedIdTokenSchema;
|
|
57
57
|
function useOidc(params) {
|
|
58
58
|
var _a = (params !== null && params !== void 0 ? params : {}).assertUserLoggedIn, assertUserLoggedIn = _a === void 0 ? false : _a;
|
|
59
59
|
var oidc = (0, react_1.useContext)(oidcContext);
|
|
@@ -75,8 +75,8 @@ function createUseOidc(params) {
|
|
|
75
75
|
return undefined;
|
|
76
76
|
}
|
|
77
77
|
var decodedIdToken = (0, decodeJwt_1.decodeJwt)(tokens.idToken);
|
|
78
|
-
if (
|
|
79
|
-
|
|
78
|
+
if (decodedIdTokenSchema !== undefined) {
|
|
79
|
+
decodedIdTokenSchema.parse((0, decodeJwt_1.decodeJwt)(tokens.idToken));
|
|
80
80
|
}
|
|
81
81
|
return decodedIdToken;
|
|
82
82
|
}, [tokens === null || tokens === void 0 ? void 0 : tokens.idToken]);
|
package/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["src/react.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAQe;AACf,+BAA+C;AAC/C,uCAAsC;AACtC,+CAA8C;AAC9C,+BAA8B;AAE9B,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,CAAC;YACrB,OAAO,2DAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAI,CAAC;QAC3D,CAAC;QAED,OAAO,uBAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,YAAG,QAAQ,GAAwB,CAAC;IAChF,CAAC;IAED,OAAO,EAAE,YAAY,cAAA,EAAE,MAAM,QAAA,EAAE,CAAC;AACpC,CAAC;AApBD,gDAoBC;AA2BD,SAAgB,aAAa,CAE3B,
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["src/react.tsx"],"names":[],"mappings":"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"}
|
package/src/react.tsx
CHANGED
|
@@ -64,8 +64,8 @@ export namespace ReactiveOidc {
|
|
|
64
64
|
|
|
65
65
|
export function createUseOidc<
|
|
66
66
|
DecodedOidcIdToken extends Record<string, unknown> = Record<string, unknown>
|
|
67
|
-
>(params?: {
|
|
68
|
-
const {
|
|
67
|
+
>(params?: { decodedIdTokenSchema?: { parse: (data: unknown) => DecodedOidcIdToken } }) {
|
|
68
|
+
const { decodedIdTokenSchema } = params ?? {};
|
|
69
69
|
|
|
70
70
|
function useOidc(params?: { assertUserLoggedIn: false }): ReactiveOidc<DecodedOidcIdToken>;
|
|
71
71
|
function useOidc(params: { assertUserLoggedIn: true }): ReactiveOidc.LoggedIn<DecodedOidcIdToken>;
|
|
@@ -103,8 +103,8 @@ export function createUseOidc<
|
|
|
103
103
|
|
|
104
104
|
const decodedIdToken = decodeJwt(tokens.idToken) as DecodedOidcIdToken;
|
|
105
105
|
|
|
106
|
-
if (
|
|
107
|
-
|
|
106
|
+
if (decodedIdTokenSchema !== undefined) {
|
|
107
|
+
decodedIdTokenSchema.parse(decodeJwt(tokens.idToken));
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
return decodedIdToken;
|