oidc-spa 7.1.3 → 7.1.5
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 -8
- package/react/react.d.ts +3 -0
- package/react/react.js +25 -9
- package/react/react.js.map +1 -1
- package/react/tools/ClientOnly.d.ts +13 -0
- package/react/tools/{NoSsr.js → ClientOnly.js} +9 -10
- package/react/tools/ClientOnly.js.map +1 -0
- package/src/react/react.tsx +26 -2
- package/src/react/tools/ClientOnly.tsx +25 -0
- package/react/tools/NoSsr.d.ts +0 -14
- package/react/tools/NoSsr.js.map +0 -1
- package/src/react/tools/NoSsr.tsx +0 -26
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.5";
|
|
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.5",
|
|
4
4
|
"description": "Openidconnect client for Single Page Applications",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
".": "./index.js",
|
|
13
13
|
"./mock": "./mock/index.js",
|
|
14
14
|
"./react": "./react/index.js",
|
|
15
|
-
"./react/tools/
|
|
15
|
+
"./react/tools/ClientOnly": "./react/tools/ClientOnly.js",
|
|
16
16
|
"./mock/react": "./mock/react.js",
|
|
17
17
|
"./entrypoint": "./entrypoint.js",
|
|
18
18
|
"./backend": "./backend.js",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"./src/mock/react.tsx",
|
|
61
61
|
"./src/react/index.ts",
|
|
62
62
|
"./src/react/react.tsx",
|
|
63
|
-
"./src/react/tools/
|
|
63
|
+
"./src/react/tools/ClientOnly.tsx",
|
|
64
64
|
"./src/tools/Deferred.ts",
|
|
65
65
|
"./src/tools/EphemeralSessionStorage.ts",
|
|
66
66
|
"./src/tools/Evt.ts",
|
|
@@ -178,9 +178,9 @@
|
|
|
178
178
|
"./react/react.d.ts",
|
|
179
179
|
"./react/react.js",
|
|
180
180
|
"./react/react.js.map",
|
|
181
|
-
"./react/tools/
|
|
182
|
-
"./react/tools/
|
|
183
|
-
"./react/tools/
|
|
181
|
+
"./react/tools/ClientOnly.d.ts",
|
|
182
|
+
"./react/tools/ClientOnly.js",
|
|
183
|
+
"./react/tools/ClientOnly.js.map",
|
|
184
184
|
"./tools/Deferred.d.ts",
|
|
185
185
|
"./tools/Deferred.js",
|
|
186
186
|
"./tools/Deferred.js.map",
|
|
@@ -294,7 +294,7 @@
|
|
|
294
294
|
"@types/node": "^20.2.1",
|
|
295
295
|
"@types/node-fetch": "2.6.11",
|
|
296
296
|
"@types/node-jose": "1.1.13",
|
|
297
|
-
"@types/react": "19.
|
|
297
|
+
"@types/react": "19.1.10",
|
|
298
298
|
"babel-loader": "9.1.3",
|
|
299
299
|
"evt": "^2.5.7",
|
|
300
300
|
"husky": "^4.3.8",
|
|
@@ -307,7 +307,7 @@
|
|
|
307
307
|
"patch-package": "^8.0.0",
|
|
308
308
|
"prettier": "^2.8.8",
|
|
309
309
|
"punycode": "^2.3.1",
|
|
310
|
-
"react": "19.
|
|
310
|
+
"react": "19.1.1",
|
|
311
311
|
"ts-node": "^10.9.1",
|
|
312
312
|
"tsafe": "^1.8.5",
|
|
313
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,27 +258,42 @@ 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
|
});
|
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,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic client-only rendering boundary (unrelated to OIDC).
|
|
3
|
+
*
|
|
4
|
+
* Children are rendered only after hydration on the client.
|
|
5
|
+
* During SSR, the optional `fallback` is shown instead.
|
|
6
|
+
*
|
|
7
|
+
* Provided here for convenience—you can replace it with your own
|
|
8
|
+
* implementation or existing tooling if you prefer.
|
|
9
|
+
*/
|
|
10
|
+
export declare function ClientOnly(props: {
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
fallback?: React.ReactNode;
|
|
13
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -16,20 +16,19 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
16
16
|
return ar;
|
|
17
17
|
};
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.
|
|
19
|
+
exports.ClientOnly = ClientOnly;
|
|
20
20
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
21
21
|
var react_1 = require("react");
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
24
|
-
* This is provided purely for convenance, feel free to use your own
|
|
25
|
-
* tooling.
|
|
23
|
+
* Generic client-only rendering boundary (unrelated to OIDC).
|
|
26
24
|
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
25
|
+
* Children are rendered only after hydration on the client.
|
|
26
|
+
* During SSR, the optional `fallback` is shown instead.
|
|
27
|
+
*
|
|
28
|
+
* Provided here for convenience—you can replace it with your own
|
|
29
|
+
* implementation or existing tooling if you prefer.
|
|
31
30
|
*/
|
|
32
|
-
function
|
|
31
|
+
function ClientOnly(props) {
|
|
33
32
|
var children = props.children, fallback = props.fallback;
|
|
34
33
|
var _a = __read((0, react_1.useState)(false), 2), isHydrated = _a[0], setIsHydrated = _a[1];
|
|
35
34
|
(0, react_1.useEffect)(function () {
|
|
@@ -40,4 +39,4 @@ function NoSsr(props) {
|
|
|
40
39
|
}
|
|
41
40
|
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
|
|
42
41
|
}
|
|
43
|
-
//# sourceMappingURL=
|
|
42
|
+
//# sourceMappingURL=ClientOnly.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientOnly.js","sourceRoot":"","sources":["../../src/react/tools/ClientOnly.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAWA,gCAaC;;AAxBD,+BAA4C;AAE5C;;;;;;;;GAQG;AACH,SAAgB,UAAU,CAAC,KAAgE;IAC/E,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,10 +414,12 @@ 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
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useState, useEffect } from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Generic client-only rendering boundary (unrelated to OIDC).
|
|
5
|
+
*
|
|
6
|
+
* Children are rendered only after hydration on the client.
|
|
7
|
+
* During SSR, the optional `fallback` is shown instead.
|
|
8
|
+
*
|
|
9
|
+
* Provided here for convenience—you can replace it with your own
|
|
10
|
+
* implementation or existing tooling if you prefer.
|
|
11
|
+
*/
|
|
12
|
+
export function ClientOnly(props: { children: React.ReactNode; fallback?: React.ReactNode }) {
|
|
13
|
+
const { children, fallback } = props;
|
|
14
|
+
|
|
15
|
+
const [isHydrated, setIsHydrated] = useState(false);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
setIsHydrated(true);
|
|
18
|
+
}, []);
|
|
19
|
+
|
|
20
|
+
if (!isHydrated) {
|
|
21
|
+
return <>{fallback ?? null}</>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return <>{children}</>;
|
|
25
|
+
}
|
package/react/tools/NoSsr.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
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;
|
package/react/tools/NoSsr.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
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
|
-
}
|