oidc-spa 7.1.2 → 7.1.4
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/core/createOidc.js +1 -1
- package/mock/react.d.ts +3 -0
- package/package.json +8 -3
- package/react/react.d.ts +3 -0
- package/react/react.js +43 -18
- package/react/react.js.map +1 -1
- package/react/tools/NoSsr.d.ts +14 -0
- package/react/tools/NoSsr.js +43 -0
- package/react/tools/NoSsr.js.map +1 -0
- package/src/react/react.tsx +33 -10
- package/src/react/tools/NoSsr.tsx +26 -0
package/core/createOidc.js
CHANGED
|
@@ -125,7 +125,7 @@ var trustedFetch_1 = require("./trustedFetch");
|
|
|
125
125
|
var getIsOnline_1 = require("../tools/getIsOnline");
|
|
126
126
|
(0, handleOidcCallback_1.handleOidcCallback)();
|
|
127
127
|
// NOTE: Replaced at build time
|
|
128
|
-
var VERSION = "7.1.
|
|
128
|
+
var VERSION = "7.1.4";
|
|
129
129
|
var globalContext = {
|
|
130
130
|
prOidcByConfigId: new Map(),
|
|
131
131
|
hasLogoutBeenCalled: (0, tsafe_1.id)(false),
|
package/mock/react.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oidc-spa",
|
|
3
|
-
"version": "7.1.
|
|
3
|
+
"version": "7.1.4",
|
|
4
4
|
"description": "Openidconnect client for Single Page Applications",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
".": "./index.js",
|
|
13
13
|
"./mock": "./mock/index.js",
|
|
14
14
|
"./react": "./react/index.js",
|
|
15
|
+
"./react/tools/NoSsr": "./react/tools/NoSsr.js",
|
|
15
16
|
"./mock/react": "./mock/react.js",
|
|
16
17
|
"./entrypoint": "./entrypoint.js",
|
|
17
18
|
"./backend": "./backend.js",
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
"./src/mock/react.tsx",
|
|
60
61
|
"./src/react/index.ts",
|
|
61
62
|
"./src/react/react.tsx",
|
|
63
|
+
"./src/react/tools/NoSsr.tsx",
|
|
62
64
|
"./src/tools/Deferred.ts",
|
|
63
65
|
"./src/tools/EphemeralSessionStorage.ts",
|
|
64
66
|
"./src/tools/Evt.ts",
|
|
@@ -176,6 +178,9 @@
|
|
|
176
178
|
"./react/react.d.ts",
|
|
177
179
|
"./react/react.js",
|
|
178
180
|
"./react/react.js.map",
|
|
181
|
+
"./react/tools/NoSsr.d.ts",
|
|
182
|
+
"./react/tools/NoSsr.js",
|
|
183
|
+
"./react/tools/NoSsr.js.map",
|
|
179
184
|
"./tools/Deferred.d.ts",
|
|
180
185
|
"./tools/Deferred.js",
|
|
181
186
|
"./tools/Deferred.js.map",
|
|
@@ -289,7 +294,7 @@
|
|
|
289
294
|
"@types/node": "^20.2.1",
|
|
290
295
|
"@types/node-fetch": "2.6.11",
|
|
291
296
|
"@types/node-jose": "1.1.13",
|
|
292
|
-
"@types/react": "19.
|
|
297
|
+
"@types/react": "19.1.10",
|
|
293
298
|
"babel-loader": "9.1.3",
|
|
294
299
|
"evt": "^2.5.7",
|
|
295
300
|
"husky": "^4.3.8",
|
|
@@ -302,7 +307,7 @@
|
|
|
302
307
|
"patch-package": "^8.0.0",
|
|
303
308
|
"prettier": "^2.8.8",
|
|
304
309
|
"punycode": "^2.3.1",
|
|
305
|
-
"react": "19.
|
|
310
|
+
"react": "19.1.1",
|
|
306
311
|
"ts-node": "^10.9.1",
|
|
307
312
|
"tsafe": "^1.8.5",
|
|
308
313
|
"tsx": "^4.15.5",
|
package/react/react.d.ts
CHANGED
|
@@ -81,6 +81,9 @@ type OidcReactApi<DecodedIdToken extends Record<string, unknown>, AutoLogin exte
|
|
|
81
81
|
url?: string;
|
|
82
82
|
};
|
|
83
83
|
cause?: "preload" | string;
|
|
84
|
+
location?: {
|
|
85
|
+
href?: string;
|
|
86
|
+
};
|
|
84
87
|
}) => Promise<void | never>;
|
|
85
88
|
});
|
|
86
89
|
export declare function createOidcReactApi_dependencyInjection<DecodedIdToken extends Record<string, unknown>, ParamsOfCreateOidc extends {
|
package/react/react.js
CHANGED
|
@@ -82,6 +82,7 @@ var core_1 = require("../core");
|
|
|
82
82
|
var tsafe_1 = require("../vendor/frontend/tsafe");
|
|
83
83
|
var tsafe_2 = require("../vendor/frontend/tsafe");
|
|
84
84
|
var Deferred_1 = require("../tools/Deferred");
|
|
85
|
+
var toFullyQualifiedUrl_1 = require("../tools/toFullyQualifiedUrl");
|
|
85
86
|
{
|
|
86
87
|
(0, tsafe_1.assert)();
|
|
87
88
|
}
|
|
@@ -257,42 +258,66 @@ function createOidcReactApi_dependencyInjection(paramsOrGetParams, createOidc) {
|
|
|
257
258
|
}
|
|
258
259
|
function enforceLogin(loaderParams) {
|
|
259
260
|
return __awaiter(this, void 0, void 0, function () {
|
|
260
|
-
var cause, redirectUrl, oidc;
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
switch (_c.label) {
|
|
261
|
+
var cause, redirectUrl, oidc, doesCurrentHrefRequiresAuth;
|
|
262
|
+
return __generator(this, function (_a) {
|
|
263
|
+
switch (_a.label) {
|
|
264
264
|
case 0:
|
|
265
265
|
cause = loaderParams.cause;
|
|
266
|
-
redirectUrl = (
|
|
266
|
+
redirectUrl = (function () {
|
|
267
|
+
var _a, _b;
|
|
268
|
+
if (((_a = loaderParams.request) === null || _a === void 0 ? void 0 : _a.url) !== undefined) {
|
|
269
|
+
return (0, toFullyQualifiedUrl_1.toFullyQualifiedUrl)({
|
|
270
|
+
urlish: loaderParams.request.url,
|
|
271
|
+
doAssertNoQueryParams: false
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
if (((_b = loaderParams.location) === null || _b === void 0 ? void 0 : _b.href) !== undefined) {
|
|
275
|
+
return (0, toFullyQualifiedUrl_1.toFullyQualifiedUrl)({
|
|
276
|
+
urlish: loaderParams.location.href,
|
|
277
|
+
doAssertNoQueryParams: false
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
return location.href;
|
|
281
|
+
})();
|
|
267
282
|
return [4 /*yield*/, getOidc()];
|
|
268
283
|
case 1:
|
|
269
|
-
oidc =
|
|
284
|
+
oidc = _a.sent();
|
|
270
285
|
if (!!oidc.isUserLoggedIn) return [3 /*break*/, 3];
|
|
271
286
|
if (cause === "preload") {
|
|
272
287
|
throw new Error("oidc-spa: User is not yet logged in. This is an expected error, nothing to be addressed.");
|
|
273
288
|
}
|
|
289
|
+
doesCurrentHrefRequiresAuth = location.href.replace(/\/$/, "") === redirectUrl.replace(/\/$/, "");
|
|
274
290
|
return [4 /*yield*/, oidc.login({
|
|
275
291
|
redirectUrl: redirectUrl,
|
|
276
|
-
doesCurrentHrefRequiresAuth:
|
|
292
|
+
doesCurrentHrefRequiresAuth: doesCurrentHrefRequiresAuth
|
|
277
293
|
})];
|
|
278
294
|
case 2:
|
|
279
|
-
|
|
280
|
-
|
|
295
|
+
_a.sent();
|
|
296
|
+
_a.label = 3;
|
|
281
297
|
case 3: return [2 /*return*/];
|
|
282
298
|
}
|
|
283
299
|
});
|
|
284
300
|
});
|
|
285
301
|
}
|
|
286
|
-
var prOidc = prOidcOrInitializationError.then(function (oidcOrInitializationError) {
|
|
287
|
-
if (oidcOrInitializationError instanceof core_1.OidcInitializationError) {
|
|
288
|
-
return new Promise(function () { });
|
|
289
|
-
}
|
|
290
|
-
var oidc = oidcOrInitializationError;
|
|
291
|
-
return oidc;
|
|
292
|
-
});
|
|
293
302
|
function getOidc() {
|
|
294
|
-
|
|
295
|
-
|
|
303
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
304
|
+
var oidcOrInitializationError, error, oidc;
|
|
305
|
+
return __generator(this, function (_a) {
|
|
306
|
+
switch (_a.label) {
|
|
307
|
+
case 0:
|
|
308
|
+
dReadyToCreate.resolve();
|
|
309
|
+
return [4 /*yield*/, prOidcOrInitializationError];
|
|
310
|
+
case 1:
|
|
311
|
+
oidcOrInitializationError = _a.sent();
|
|
312
|
+
if (oidcOrInitializationError instanceof core_1.OidcInitializationError) {
|
|
313
|
+
error = oidcOrInitializationError;
|
|
314
|
+
throw error;
|
|
315
|
+
}
|
|
316
|
+
oidc = oidcOrInitializationError;
|
|
317
|
+
return [2 /*return*/, oidc];
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
});
|
|
296
321
|
}
|
|
297
322
|
var oidcReact = {
|
|
298
323
|
OidcProvider: OidcProvider,
|
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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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* There is nothing specific to OIDC with this component.
|
|
3
|
+
* This is provided purely for convenance, feel free to use your own
|
|
4
|
+
* tooling.
|
|
5
|
+
*
|
|
6
|
+
* This is a trivial implementation of a No Server Side Rendering
|
|
7
|
+
* boundary.
|
|
8
|
+
* The children will only be rendered in the client side.
|
|
9
|
+
* You can optionally provide a fallback that will be rendered by the server.
|
|
10
|
+
*/
|
|
11
|
+
export declare function NoSsr(props: {
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
fallback?: React.ReactNode;
|
|
14
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
+
if (!m) return o;
|
|
5
|
+
var i = m.call(o), r, ar = [], e;
|
|
6
|
+
try {
|
|
7
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
+
}
|
|
9
|
+
catch (error) { e = { error: error }; }
|
|
10
|
+
finally {
|
|
11
|
+
try {
|
|
12
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
+
}
|
|
14
|
+
finally { if (e) throw e.error; }
|
|
15
|
+
}
|
|
16
|
+
return ar;
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.NoSsr = NoSsr;
|
|
20
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
21
|
+
var react_1 = require("react");
|
|
22
|
+
/**
|
|
23
|
+
* There is nothing specific to OIDC with this component.
|
|
24
|
+
* This is provided purely for convenance, feel free to use your own
|
|
25
|
+
* tooling.
|
|
26
|
+
*
|
|
27
|
+
* This is a trivial implementation of a No Server Side Rendering
|
|
28
|
+
* boundary.
|
|
29
|
+
* The children will only be rendered in the client side.
|
|
30
|
+
* You can optionally provide a fallback that will be rendered by the server.
|
|
31
|
+
*/
|
|
32
|
+
function NoSsr(props) {
|
|
33
|
+
var children = props.children, fallback = props.fallback;
|
|
34
|
+
var _a = __read((0, react_1.useState)(false), 2), isHydrated = _a[0], setIsHydrated = _a[1];
|
|
35
|
+
(0, react_1.useEffect)(function () {
|
|
36
|
+
setIsHydrated(true);
|
|
37
|
+
}, []);
|
|
38
|
+
if (!isHydrated) {
|
|
39
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: fallback !== null && fallback !== void 0 ? fallback : null });
|
|
40
|
+
}
|
|
41
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=NoSsr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoSsr.js","sourceRoot":"","sources":["../../src/react/tools/NoSsr.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAYA,sBAaC;;AAzBD,+BAA4C;AAE5C;;;;;;;;;GASG;AACH,SAAgB,KAAK,CAAC,KAAgE;IAC1E,IAAA,QAAQ,GAAe,KAAK,SAApB,EAAE,QAAQ,GAAK,KAAK,SAAV,CAAW;IAE/B,IAAA,KAAA,OAA8B,IAAA,gBAAQ,EAAC,KAAK,CAAC,IAAA,EAA5C,UAAU,QAAA,EAAE,aAAa,QAAmB,CAAC;IACpD,IAAA,iBAAS,EAAC;QACN,aAAa,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,2DAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,IAAI,GAAI,CAAC;IACnC,CAAC;IAED,OAAO,2DAAG,QAAQ,GAAI,CAAC;AAC3B,CAAC"}
|
package/src/react/react.tsx
CHANGED
|
@@ -13,6 +13,7 @@ import { assert, type Equals, type Param0 } from "../vendor/frontend/tsafe";
|
|
|
13
13
|
import { id } from "../vendor/frontend/tsafe";
|
|
14
14
|
import type { ValueOrAsyncGetter } from "../tools/ValueOrAsyncGetter";
|
|
15
15
|
import { Deferred } from "../tools/Deferred";
|
|
16
|
+
import { toFullyQualifiedUrl } from "../tools/toFullyQualifiedUrl";
|
|
16
17
|
|
|
17
18
|
export type OidcReact<DecodedIdToken extends Record<string, unknown>> =
|
|
18
19
|
| OidcReact.NotLoggedIn
|
|
@@ -107,6 +108,9 @@ type OidcReactApi<DecodedIdToken extends Record<string, unknown>, AutoLogin exte
|
|
|
107
108
|
enforceLogin: (loaderParams: {
|
|
108
109
|
request?: { url?: string };
|
|
109
110
|
cause?: "preload" | string;
|
|
111
|
+
location?: {
|
|
112
|
+
href?: string;
|
|
113
|
+
};
|
|
110
114
|
}) => Promise<void | never>;
|
|
111
115
|
});
|
|
112
116
|
|
|
@@ -380,9 +384,27 @@ export function createOidcReactApi_dependencyInjection<
|
|
|
380
384
|
async function enforceLogin(loaderParams: {
|
|
381
385
|
request?: { url?: string };
|
|
382
386
|
cause?: "preload" | string;
|
|
387
|
+
location?: { href?: string };
|
|
383
388
|
}): Promise<void | never> {
|
|
384
389
|
const { cause } = loaderParams;
|
|
385
|
-
|
|
390
|
+
|
|
391
|
+
const redirectUrl = (() => {
|
|
392
|
+
if (loaderParams.request?.url !== undefined) {
|
|
393
|
+
return toFullyQualifiedUrl({
|
|
394
|
+
urlish: loaderParams.request.url,
|
|
395
|
+
doAssertNoQueryParams: false
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
if (loaderParams.location?.href !== undefined) {
|
|
400
|
+
return toFullyQualifiedUrl({
|
|
401
|
+
urlish: loaderParams.location.href,
|
|
402
|
+
doAssertNoQueryParams: false
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
return location.href;
|
|
407
|
+
})();
|
|
386
408
|
|
|
387
409
|
const oidc = await getOidc();
|
|
388
410
|
|
|
@@ -392,28 +414,29 @@ export function createOidcReactApi_dependencyInjection<
|
|
|
392
414
|
"oidc-spa: User is not yet logged in. This is an expected error, nothing to be addressed."
|
|
393
415
|
);
|
|
394
416
|
}
|
|
417
|
+
const doesCurrentHrefRequiresAuth =
|
|
418
|
+
location.href.replace(/\/$/, "") === redirectUrl.replace(/\/$/, "");
|
|
395
419
|
|
|
396
420
|
await oidc.login({
|
|
397
421
|
redirectUrl,
|
|
398
|
-
doesCurrentHrefRequiresAuth
|
|
422
|
+
doesCurrentHrefRequiresAuth
|
|
399
423
|
});
|
|
400
424
|
}
|
|
401
425
|
}
|
|
402
426
|
|
|
403
|
-
|
|
427
|
+
async function getOidc(): Promise<Oidc<DecodedIdToken>> {
|
|
428
|
+
dReadyToCreate.resolve();
|
|
429
|
+
|
|
430
|
+
const oidcOrInitializationError = await prOidcOrInitializationError;
|
|
431
|
+
|
|
404
432
|
if (oidcOrInitializationError instanceof OidcInitializationError) {
|
|
405
|
-
|
|
433
|
+
const error = oidcOrInitializationError;
|
|
434
|
+
throw error;
|
|
406
435
|
}
|
|
407
436
|
|
|
408
437
|
const oidc = oidcOrInitializationError;
|
|
409
438
|
|
|
410
439
|
return oidc;
|
|
411
|
-
});
|
|
412
|
-
|
|
413
|
-
function getOidc(): Promise<Oidc<DecodedIdToken>> {
|
|
414
|
-
dReadyToCreate.resolve();
|
|
415
|
-
|
|
416
|
-
return prOidc;
|
|
417
440
|
}
|
|
418
441
|
|
|
419
442
|
const oidcReact: OidcReactApi<DecodedIdToken, false> = {
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useState, useEffect } from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* There is nothing specific to OIDC with this component.
|
|
5
|
+
* This is provided purely for convenance, feel free to use your own
|
|
6
|
+
* tooling.
|
|
7
|
+
*
|
|
8
|
+
* This is a trivial implementation of a No Server Side Rendering
|
|
9
|
+
* boundary.
|
|
10
|
+
* The children will only be rendered in the client side.
|
|
11
|
+
* You can optionally provide a fallback that will be rendered by the server.
|
|
12
|
+
*/
|
|
13
|
+
export function NoSsr(props: { children: React.ReactNode; fallback?: React.ReactNode }) {
|
|
14
|
+
const { children, fallback } = props;
|
|
15
|
+
|
|
16
|
+
const [isHydrated, setIsHydrated] = useState(false);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
setIsHydrated(true);
|
|
19
|
+
}, []);
|
|
20
|
+
|
|
21
|
+
if (!isHydrated) {
|
|
22
|
+
return <>{fallback ?? null}</>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return <>{children}</>;
|
|
26
|
+
}
|