oidc-spa 6.8.1 → 6.8.3
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 -2
- package/mock/react.d.ts +7 -2
- package/oidc/createOidc.js +1 -1
- package/package.json +1 -1
- package/react/react.d.ts +3 -2
- package/react/react.js +13 -9
- package/react/react.js.map +1 -1
- package/src/react/react.tsx +30 -23
package/README.md
CHANGED
|
@@ -55,11 +55,11 @@ Well, we needed a solution so we built one, `oidc-spa`!
|
|
|
55
55
|
|
|
56
56
|
- 🎓 **No OIDC/OAuth2 expertise required**: Easy to setup and use. We're here to help [on Discord](https://discord.gg/mJdYJSdcm4)!
|
|
57
57
|
- 🛠️ **Simple setup**: No need to define `/login` or `/logout` routes—token refreshing is automatic, it just works.
|
|
58
|
-
-
|
|
58
|
+
- ✨ **React integration**: Expose a framework agnostic API (`oidc-spa`) but also a React adapter `oidc-spa/react`.
|
|
59
|
+
- 🔥 **No limitation**- For example, everything you could do with `keycloak-js`, you can do with `oidc-spa`.
|
|
59
60
|
- 💬 **Detailed debug messages**: If your OIDC server is not properly configured, it tells you precisely what’s wrong and what you need to do to fix it.
|
|
60
61
|
- 🕣 **Auto logout with countdown**: "You will be logged out in 10... 9... 8..."—users see exactly when their session expires.
|
|
61
62
|
- 🚪 **Logout propagation**: Logging out in one tab logs out all others.
|
|
62
|
-
- ✨ **Framework-agnostic API**: Works with any UI framework (React, Angular, Vue, Svelte...) and includes an optional React adapter for convenience.
|
|
63
63
|
- 📖 **Comprehensive documentation**: Guides and examples for common scenarios.
|
|
64
64
|
- ✅ **Type safety**: Strong TypeScript support with optional [Zod](https://zod.dev/) integration validating the expected shape of the ID token.
|
|
65
65
|
- 🔒 **Security-first**: Uses **Authorization Code Flow + PKCE**—No token persistence in `localStorage` or `sessionStorage`.
|
package/mock/react.d.ts
CHANGED
|
@@ -38,7 +38,12 @@ export declare function createMockReactOidc<DecodedIdToken extends Record<string
|
|
|
38
38
|
} ? true : false : never : never) extends infer T_3 ? T_3 extends (ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> extends infer T ? T extends ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> ? T extends {
|
|
39
39
|
autoLogin?: true | undefined;
|
|
40
40
|
} ? true : false : never : never) ? T_3 extends true ? import("..").Oidc.LoggedIn<DecodedIdToken> : import("..").Oidc<DecodedIdToken> : never : never>;
|
|
41
|
-
|
|
41
|
+
} & ((ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> extends infer T_3 ? T_3 extends ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> ? T_3 extends {
|
|
42
|
+
autoLogin?: true | undefined;
|
|
43
|
+
} ? true : false : never : never) extends infer T_4 ? T_4 extends (ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> extends infer T_3 ? T_3 extends ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> ? T_3 extends {
|
|
44
|
+
autoLogin?: true | undefined;
|
|
45
|
+
} ? true : false : never : never) ? T_4 extends true ? {} : {
|
|
46
|
+
withLoginRequired: <Props extends Record<string, unknown>>(Component: import("react").ComponentType<Props>, params?: {
|
|
42
47
|
onRedirecting: () => import("react").JSX.Element | null;
|
|
43
48
|
}) => import("react").FC<Props>;
|
|
44
|
-
};
|
|
49
|
+
} : never : never);
|
package/oidc/createOidc.js
CHANGED
|
@@ -123,7 +123,7 @@ var EphemeralSessionStorage_1 = require("../tools/EphemeralSessionStorage");
|
|
|
123
123
|
var ongoingLoginOrRefreshProcesses_1 = require("./ongoingLoginOrRefreshProcesses");
|
|
124
124
|
(0, handleOidcCallback_1.handleOidcCallback)();
|
|
125
125
|
// NOTE: Replaced at build time
|
|
126
|
-
var VERSION = "6.8.
|
|
126
|
+
var VERSION = "6.8.3";
|
|
127
127
|
var GLOBAL_CONTEXT_KEY = "__oidc-spa.createOidc.globalContext";
|
|
128
128
|
(_a = window[GLOBAL_CONTEXT_KEY]) !== null && _a !== void 0 ? _a : (window[GLOBAL_CONTEXT_KEY] = {
|
|
129
129
|
prOidcByConfigId: new Map(),
|
package/package.json
CHANGED
package/react/react.d.ts
CHANGED
|
@@ -77,10 +77,11 @@ type OidcReactApi<DecodedIdToken extends Record<string, unknown>, AutoLogin exte
|
|
|
77
77
|
}): OidcReact.NotLoggedIn;
|
|
78
78
|
};
|
|
79
79
|
getOidc: () => Promise<AutoLogin extends true ? Oidc.LoggedIn<DecodedIdToken> : Oidc<DecodedIdToken>>;
|
|
80
|
-
|
|
80
|
+
} & (AutoLogin extends true ? {} : {
|
|
81
|
+
withLoginRequired: <Props extends Record<string, unknown>>(Component: ComponentType<Props>, params?: {
|
|
81
82
|
onRedirecting: () => JSX.Element | null;
|
|
82
83
|
}) => FC<Props>;
|
|
83
|
-
};
|
|
84
|
+
});
|
|
84
85
|
export declare function createOidcReactApi_dependencyInjection<DecodedIdToken extends Record<string, unknown>, ParamsOfCreateOidc extends {
|
|
85
86
|
autoLogin?: boolean;
|
|
86
87
|
} & ({
|
package/react/react.js
CHANGED
|
@@ -241,7 +241,7 @@ function createOidcReactApi_dependencyInjection(paramsOrGetParams, createOidc) {
|
|
|
241
241
|
}, logout: oidc.logout, renewTokens: oidc.renewTokens, subscribeToAutoLogoutCountdown: oidc.subscribeToAutoLogoutCountdown, goToAuthServer: oidc.goToAuthServer, isNewBrowserSession: oidc.isNewBrowserSession, backFromAuthServer: oidc.backFromAuthServer });
|
|
242
242
|
return oidcReact;
|
|
243
243
|
}
|
|
244
|
-
function
|
|
244
|
+
function withLoginRequired(Component, params) {
|
|
245
245
|
var onRedirecting = (params !== null && params !== void 0 ? params : {}).onRedirecting;
|
|
246
246
|
function ComponentWithAuthenticationRequired(props) {
|
|
247
247
|
var contextValue = (0, react_1.useContext)(oidcContext);
|
|
@@ -267,12 +267,8 @@ function createOidcReactApi_dependencyInjection(paramsOrGetParams, createOidc) {
|
|
|
267
267
|
var oidc = oidcOrInitializationError;
|
|
268
268
|
return oidc;
|
|
269
269
|
});
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
// @ts-expect-error: We know what we are doing
|
|
273
|
-
useOidc: useOidc,
|
|
274
|
-
// @ts-expect-error: We know what we are doing
|
|
275
|
-
getOidc: function () { return __awaiter(_this, void 0, void 0, function () {
|
|
270
|
+
function getOidc() {
|
|
271
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
276
272
|
var oidc;
|
|
277
273
|
return __generator(this, function (_a) {
|
|
278
274
|
switch (_a.label) {
|
|
@@ -289,9 +285,17 @@ function createOidcReactApi_dependencyInjection(paramsOrGetParams, createOidc) {
|
|
|
289
285
|
case 3: return [2 /*return*/, oidc];
|
|
290
286
|
}
|
|
291
287
|
});
|
|
292
|
-
});
|
|
293
|
-
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
var oidcReact = {
|
|
291
|
+
OidcProvider: OidcProvider,
|
|
292
|
+
// @ts-expect-error: We know what we are doing
|
|
293
|
+
useOidc: useOidc,
|
|
294
|
+
getOidc: getOidc,
|
|
295
|
+
withLoginRequired: withLoginRequired
|
|
294
296
|
};
|
|
297
|
+
// @ts-expect-error: We know what we are doing
|
|
298
|
+
return oidcReact;
|
|
295
299
|
}
|
|
296
300
|
/** @see: https://docs.oidc-spa.dev/v/v6/usage#react-api */
|
|
297
301
|
function createReactOidc(params) {
|
package/react/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react/react.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react/react.tsx"],"names":[],"mappings":"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"}
|
package/src/react/react.tsx
CHANGED
|
@@ -103,13 +103,16 @@ type OidcReactApi<DecodedIdToken extends Record<string, unknown>, AutoLogin exte
|
|
|
103
103
|
getOidc: () => Promise<
|
|
104
104
|
AutoLogin extends true ? Oidc.LoggedIn<DecodedIdToken> : Oidc<DecodedIdToken>
|
|
105
105
|
>;
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
106
|
+
} & (AutoLogin extends true
|
|
107
|
+
? {}
|
|
108
|
+
: {
|
|
109
|
+
withLoginRequired: <Props extends Record<string, unknown>>(
|
|
110
|
+
Component: ComponentType<Props>,
|
|
111
|
+
params?: {
|
|
112
|
+
onRedirecting: () => JSX.Element | null;
|
|
113
|
+
}
|
|
114
|
+
) => FC<Props>;
|
|
115
|
+
});
|
|
113
116
|
|
|
114
117
|
export function createOidcReactApi_dependencyInjection<
|
|
115
118
|
DecodedIdToken extends Record<string, unknown>,
|
|
@@ -345,7 +348,7 @@ export function createOidcReactApi_dependencyInjection<
|
|
|
345
348
|
return oidcReact;
|
|
346
349
|
}
|
|
347
350
|
|
|
348
|
-
function
|
|
351
|
+
function withLoginRequired<Props extends Record<string, unknown>>(
|
|
349
352
|
Component: ComponentType<Props>,
|
|
350
353
|
params?: {
|
|
351
354
|
onRedirecting?: () => JSX.Element | null;
|
|
@@ -388,25 +391,29 @@ export function createOidcReactApi_dependencyInjection<
|
|
|
388
391
|
return oidc;
|
|
389
392
|
});
|
|
390
393
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
// @ts-expect-error: We know what we are doing
|
|
394
|
-
useOidc,
|
|
395
|
-
// @ts-expect-error: We know what we are doing
|
|
396
|
-
getOidc: async () => {
|
|
397
|
-
dReadyToCreate.resolve();
|
|
394
|
+
async function getOidc(): Promise<Oidc<DecodedIdToken>> {
|
|
395
|
+
dReadyToCreate.resolve();
|
|
398
396
|
|
|
399
|
-
|
|
400
|
-
|
|
397
|
+
// TODO: Directly return oidc in next major version
|
|
398
|
+
const oidc = await prOidc;
|
|
401
399
|
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
400
|
+
if (oidc.isUserLoggedIn) {
|
|
401
|
+
await oidc.getTokens_next();
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
return oidc;
|
|
405
|
+
}
|
|
405
406
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
407
|
+
const oidcReact: OidcReactApi<DecodedIdToken, false> = {
|
|
408
|
+
OidcProvider,
|
|
409
|
+
// @ts-expect-error: We know what we are doing
|
|
410
|
+
useOidc,
|
|
411
|
+
getOidc,
|
|
412
|
+
withLoginRequired
|
|
409
413
|
};
|
|
414
|
+
|
|
415
|
+
// @ts-expect-error: We know what we are doing
|
|
416
|
+
return oidcReact;
|
|
410
417
|
}
|
|
411
418
|
|
|
412
419
|
/** @see: https://docs.oidc-spa.dev/v/v6/usage#react-api */
|