oidc-spa 4.4.1 → 4.5.0

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 CHANGED
@@ -45,9 +45,12 @@ We utilize `oidc-client-ts` internally but abstract away most of its intricacies
45
45
 
46
46
  ### [react-oidc-context](https://github.com/authts/react-oidc-context)
47
47
 
48
- Our library takes a modular approach to OIDC and React, treating them as separate concerns that don't necessarily have to be intertwined.
49
- 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.
50
- Additionally, we provide adapters for React and starter projects for integration with `react-router-dom` or `@tanstack/react-router`.
48
+ `react-oidc-context` is a React wrapper around `oidc-client-ts`.
49
+ `oidc-spa` also feature a carefully crafted React API that comes with example
50
+ integration with:
51
+
52
+ - [`@tanstack/react-router`](https://docs.oidc-spa.dev/example-setups/tanstack-router)
53
+ - [`react-router-dom`](https://docs.oidc-spa.dev/example-setups/react-router)
51
54
 
52
55
  ### [keycloak-js](https://www.npmjs.com/package/keycloak-js)
53
56
 
@@ -59,7 +62,7 @@ Heads over to [the documentation website](https://docs.oidc-spa.dev) 📘!
59
62
 
60
63
  ## Showcases
61
64
 
62
- This library is powers the authentication of the following platforms:
65
+ This library powers the authentication of the following platforms:
63
66
 
64
67
  ### Onyxia
65
68
 
@@ -0,0 +1 @@
1
+ export * from "./oidc";
package/mock/index.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./oidc"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/mock/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB"}
package/mock/oidc.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import type { Oidc } from "../oidc";
2
+ export type ParamsOfCreateMockOidc<DecodedIdToken extends Record<string, unknown> = Record<string, unknown>> = {
3
+ isUserInitiallyLoggedIn: boolean;
4
+ mockedParams?: Partial<Oidc["params"]>;
5
+ mockedTokens?: Partial<Oidc.Tokens<DecodedIdToken>>;
6
+ };
7
+ export declare function createMockOidc<DecodedIdToken extends Record<string, unknown> = Record<string, unknown>>(params: ParamsOfCreateMockOidc<DecodedIdToken>): Oidc<DecodedIdToken>;
package/mock/oidc.js ADDED
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.createMockOidc = void 0;
51
+ var urlQueryParams_1 = require("../tools/urlQueryParams");
52
+ var id_1 = require("tsafe/id");
53
+ var createObjectThatThrowsIfAccessed_1 = require("../tools/createObjectThatThrowsIfAccessed");
54
+ var urlParamName = "isUserLoggedIn";
55
+ function createMockOidc(params) {
56
+ var _this = this;
57
+ var _a, _b;
58
+ var isUserInitiallyLoggedIn = params.isUserInitiallyLoggedIn, _c = params.mockedParams, mockedParams = _c === void 0 ? {} : _c, _d = params.mockedTokens, mockedTokens = _d === void 0 ? {} : _d;
59
+ var isUserLoggedIn = (function () {
60
+ var result = (0, urlQueryParams_1.retrieveQueryParamFromUrl)({
61
+ "url": window.location.href,
62
+ "name": urlParamName
63
+ });
64
+ if (!result.wasPresent) {
65
+ return isUserInitiallyLoggedIn;
66
+ }
67
+ window.history.replaceState({}, "", result.newUrl);
68
+ return result.value === "true";
69
+ })();
70
+ var common = {
71
+ "params": {
72
+ "clientId": (_a = mockedParams.clientId) !== null && _a !== void 0 ? _a : "mymockclient",
73
+ "issuerUri": (_b = mockedParams.issuerUri) !== null && _b !== void 0 ? _b : "https://my-mock-oidc-server.net/realms/mymockrealm"
74
+ }
75
+ };
76
+ if (!isUserLoggedIn) {
77
+ return (0, id_1.id)(__assign(__assign({}, common), { "isUserLoggedIn": false, "login": function () { return __awaiter(_this, void 0, void 0, function () {
78
+ var newUrl;
79
+ return __generator(this, function (_a) {
80
+ newUrl = (0, urlQueryParams_1.addQueryParamToUrl)({
81
+ "url": window.location.href,
82
+ "name": urlParamName,
83
+ "value": "true"
84
+ }).newUrl;
85
+ window.location.href = newUrl;
86
+ return [2 /*return*/, new Promise(function () { })];
87
+ });
88
+ }); }, "initializationError": undefined }));
89
+ }
90
+ return (0, id_1.id)(__assign(__assign({}, common), { "isUserLoggedIn": true, "renewTokens": function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
91
+ return [2 /*return*/];
92
+ }); }); }, "getTokens": (function () {
93
+ var _a, _b, _c, _d, _e, _f;
94
+ var tokens = {
95
+ "accessToken": (_a = mockedTokens.accessToken) !== null && _a !== void 0 ? _a : "mocked-access-token",
96
+ "accessTokenExpirationTime": (_b = mockedTokens.accessTokenExpirationTime) !== null && _b !== void 0 ? _b : Infinity,
97
+ "idToken": (_c = mockedTokens.idToken) !== null && _c !== void 0 ? _c : "mocked-id-token",
98
+ "refreshToken": (_d = mockedTokens.refreshToken) !== null && _d !== void 0 ? _d : "mocked-refresh-token",
99
+ "refreshTokenExpirationTime": (_e = mockedTokens.refreshTokenExpirationTime) !== null && _e !== void 0 ? _e : Infinity,
100
+ "decodedIdToken": (_f = mockedTokens.decodedIdToken) !== null && _f !== void 0 ? _f : (0, createObjectThatThrowsIfAccessed_1.createObjectThatThrowsIfAccessed)({
101
+ "debugMessage": [
102
+ "You haven't provided a mocked decodedIdToken",
103
+ "See https://docs.oidc-spa.dev/documentation/mock"
104
+ ].join("\n")
105
+ })
106
+ };
107
+ return function () { return tokens; };
108
+ })(), "subscribeToTokensChange": function () { return ({
109
+ "unsubscribe": function () { }
110
+ }); }, "logout": function () {
111
+ var newUrl = (0, urlQueryParams_1.addQueryParamToUrl)({
112
+ "url": window.location.href,
113
+ "name": urlParamName,
114
+ "value": "false"
115
+ }).newUrl;
116
+ window.location.href = newUrl;
117
+ return new Promise(function () { });
118
+ }, "subscribeToAutoLogoutCountdown": function () { return ({
119
+ "unsubscribeFromAutoLogoutCountdown": function () { }
120
+ }); }, "loginScenario": isUserInitiallyLoggedIn ? "silentSignin" : "backFromLoginPages" }));
121
+ }
122
+ exports.createMockOidc = createMockOidc;
123
+ //# sourceMappingURL=oidc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oidc.js","sourceRoot":"","sources":["../src/mock/oidc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ import { type ParamsOfCreateMockOidc } from "./oidc";
3
+ export declare function createMockReactOidc<DecodedIdToken extends Record<string, unknown> = Record<string, unknown>>(params: ParamsOfCreateMockOidc<DecodedIdToken>): {
4
+ OidcProvider: (props: {
5
+ fallback?: import("react").ReactNode;
6
+ children: import("react").ReactNode;
7
+ }) => import("react/jsx-runtime").JSX.Element;
8
+ useOidc: {
9
+ (params?: {
10
+ assertUserLoggedIn: false;
11
+ } | undefined): import("../react/react").OidcReact<DecodedIdToken>;
12
+ (params: {
13
+ assertUserLoggedIn: true;
14
+ }): import("../react/react").OidcReact.LoggedIn<DecodedIdToken>;
15
+ };
16
+ prOidc: Promise<import("..").Oidc<DecodedIdToken>>;
17
+ };
package/mock/react.js ADDED
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMockReactOidc = void 0;
4
+ var react_1 = require("../react/react");
5
+ var oidc_1 = require("./oidc");
6
+ function createMockReactOidc(params) {
7
+ return (0, react_1.createReactOidc_dependencyInjection)(params, oidc_1.createMockOidc);
8
+ }
9
+ exports.createMockReactOidc = createMockReactOidc;
10
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/mock/react.tsx"],"names":[],"mappings":";;;AAAA,wCAAqE;AACrE,+BAAqE;AAErE,SAAgB,mBAAmB,CAEjC,MAA8C;IAC5C,OAAO,IAAA,2CAAmC,EAAC,MAAM,EAAE,qBAAc,CAAC,CAAC;AACvE,CAAC;AAJD,kDAIC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oidc-spa",
3
- "version": "4.4.1",
3
+ "version": "4.5.0",
4
4
  "description": "Openidconnect client for Single Page Applications",
5
5
  "repository": {
6
6
  "type": "git",
@@ -11,20 +11,28 @@
11
11
  "exports": {
12
12
  ".": "./index.js",
13
13
  "./index": "./index.js",
14
+ "./mock/index": "./mock/index.js",
15
+ "./mock/oidc": "./mock/oidc.js",
16
+ "./mock/react": "./mock/react.js",
14
17
  "./oidc": "./oidc.js",
15
- "./react": "./react.js",
18
+ "./react/index": "./react/index.js",
19
+ "./react/react": "./react/react.js",
16
20
  "./tools/createIsUserActive": "./tools/createIsUserActive.js",
21
+ "./tools/createObjectThatThrowsIfAccessed": "./tools/createObjectThatThrowsIfAccessed.js",
17
22
  "./tools/decodeJwt": "./tools/decodeJwt.js",
18
23
  "./tools/Deferred": "./tools/Deferred.js",
19
24
  "./tools/fnv1aHashToHex": "./tools/fnv1aHashToHex.js",
20
25
  "./tools/getDownlinkAndRtt": "./tools/getDownlinkAndRtt.js",
21
26
  "./tools/getPrUserInteraction": "./tools/getPrUserInteraction.js",
22
27
  "./tools/powerhooks/useGuaranteedMemo": "./tools/powerhooks/useGuaranteedMemo.js",
28
+ "./tools/PromiseOrNot": "./tools/PromiseOrNot.js",
23
29
  "./tools/readExpirationTimeInJwt": "./tools/readExpirationTimeInJwt.js",
24
30
  "./tools/startCountdown": "./tools/startCountdown.js",
25
31
  "./tools/StatefulObservable": "./tools/StatefulObservable.js",
26
32
  "./tools/subscribeToUserInteraction": "./tools/subscribeToUserInteraction.js",
27
- "./tools/urlQueryParams": "./tools/urlQueryParams.js"
33
+ "./tools/urlQueryParams": "./tools/urlQueryParams.js",
34
+ "./mock": "./mock/index.js",
35
+ "./react": "./react/index.js"
28
36
  },
29
37
  "lint-staged": {
30
38
  "*.{ts,tsx,json,md}": [
@@ -40,11 +48,17 @@
40
48
  "license": "MIT",
41
49
  "files": [
42
50
  "./src/index.ts",
51
+ "./src/mock/index.ts",
52
+ "./src/mock/oidc.ts",
53
+ "./src/mock/react.tsx",
43
54
  "./src/oidc.ts",
44
- "./src/react.tsx",
55
+ "./src/react/index.ts",
56
+ "./src/react/react.tsx",
45
57
  "./src/tools/Deferred.ts",
58
+ "./src/tools/PromiseOrNot.ts",
46
59
  "./src/tools/StatefulObservable.ts",
47
60
  "./src/tools/createIsUserActive.ts",
61
+ "./src/tools/createObjectThatThrowsIfAccessed.ts",
48
62
  "./src/tools/decodeJwt.ts",
49
63
  "./src/tools/fnv1aHashToHex.ts",
50
64
  "./src/tools/getDownlinkAndRtt.ts",
@@ -57,21 +71,39 @@
57
71
  "./index.d.ts",
58
72
  "./index.js",
59
73
  "./index.js.map",
74
+ "./mock/index.d.ts",
75
+ "./mock/index.js",
76
+ "./mock/index.js.map",
77
+ "./mock/oidc.d.ts",
78
+ "./mock/oidc.js",
79
+ "./mock/oidc.js.map",
80
+ "./mock/react.d.ts",
81
+ "./mock/react.js",
82
+ "./mock/react.js.map",
60
83
  "./oidc.d.ts",
61
84
  "./oidc.js",
62
85
  "./oidc.js.map",
63
- "./react.d.ts",
64
- "./react.js",
65
- "./react.js.map",
86
+ "./react/index.d.ts",
87
+ "./react/index.js",
88
+ "./react/index.js.map",
89
+ "./react/react.d.ts",
90
+ "./react/react.js",
91
+ "./react/react.js.map",
66
92
  "./tools/Deferred.d.ts",
67
93
  "./tools/Deferred.js",
68
94
  "./tools/Deferred.js.map",
95
+ "./tools/PromiseOrNot.d.ts",
96
+ "./tools/PromiseOrNot.js",
97
+ "./tools/PromiseOrNot.js.map",
69
98
  "./tools/StatefulObservable.d.ts",
70
99
  "./tools/StatefulObservable.js",
71
100
  "./tools/StatefulObservable.js.map",
72
101
  "./tools/createIsUserActive.d.ts",
73
102
  "./tools/createIsUserActive.js",
74
103
  "./tools/createIsUserActive.js.map",
104
+ "./tools/createObjectThatThrowsIfAccessed.d.ts",
105
+ "./tools/createObjectThatThrowsIfAccessed.js",
106
+ "./tools/createObjectThatThrowsIfAccessed.js.map",
75
107
  "./tools/decodeJwt.d.ts",
76
108
  "./tools/decodeJwt.js",
77
109
  "./tools/decodeJwt.js.map",
@@ -0,0 +1 @@
1
+ export { type OidcReact, createReactOidc } from "./react";
package/react/index.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createReactOidc = void 0;
4
+ var react_1 = require("./react");
5
+ Object.defineProperty(exports, "createReactOidc", { enumerable: true, get: function () { return react_1.createReactOidc; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/react/index.ts"],"names":[],"mappings":";;;AAAA,iCAA0D;AAAjC,wGAAA,eAAe,OAAA"}
@@ -1,5 +1,6 @@
1
1
  import { type ReactNode } from "react";
2
- import { type ParamsOfCreateOidc, type Oidc, type OidcInitializationError } from "./oidc";
2
+ import { type ParamsOfCreateOidc, type Oidc, type OidcInitializationError } from "../oidc";
3
+ import type { PromiseOrNot } from "../tools/PromiseOrNot";
3
4
  export type OidcReact<DecodedIdToken extends Record<string, unknown>> = OidcReact.NotLoggedIn | OidcReact.LoggedIn<DecodedIdToken>;
4
5
  export declare namespace OidcReact {
5
6
  type Common = Oidc.Common;
@@ -25,6 +26,25 @@ export declare namespace OidcReact {
25
26
  initializationError?: never;
26
27
  };
27
28
  }
29
+ export declare function createReactOidc_dependencyInjection<DecodedIdToken extends Record<string, unknown>, ParamsOfCreateOidc extends {
30
+ decodedIdTokenSchema: {
31
+ parse: (data: unknown) => DecodedIdToken;
32
+ } | undefined;
33
+ } | {}>(params: ParamsOfCreateOidc, createOidc: (params: ParamsOfCreateOidc) => PromiseOrNot<Oidc<DecodedIdToken>>): {
34
+ OidcProvider: (props: {
35
+ fallback?: ReactNode;
36
+ children: ReactNode;
37
+ }) => import("react/jsx-runtime").JSX.Element;
38
+ useOidc: {
39
+ (params?: {
40
+ assertUserLoggedIn: false;
41
+ }): OidcReact<DecodedIdToken>;
42
+ (params: {
43
+ assertUserLoggedIn: true;
44
+ }): OidcReact.LoggedIn<DecodedIdToken>;
45
+ };
46
+ prOidc: Promise<Oidc<DecodedIdToken>>;
47
+ };
28
48
  /** @see: https://github.com/garronej/oidc-spa#option-2-usage-directly-within-react */
29
49
  export declare function createReactOidc<DecodedIdToken extends Record<string, unknown> = Record<string, unknown>>(params: ParamsOfCreateOidc<DecodedIdToken>): {
30
50
  OidcProvider: (props: {
@@ -34,7 +54,7 @@ export declare function createReactOidc<DecodedIdToken extends Record<string, un
34
54
  useOidc: {
35
55
  (params?: {
36
56
  assertUserLoggedIn: false;
37
- }): OidcReact<DecodedIdToken>;
57
+ } | undefined): OidcReact<DecodedIdToken>;
38
58
  (params: {
39
59
  assertUserLoggedIn: true;
40
60
  }): OidcReact.LoggedIn<DecodedIdToken>;
@@ -27,18 +27,17 @@ var __read = (this && this.__read) || function (o, n) {
27
27
  return ar;
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.createReactOidc = void 0;
30
+ exports.createReactOidc = exports.createReactOidc_dependencyInjection = void 0;
31
31
  var jsx_runtime_1 = require("react/jsx-runtime");
32
32
  var react_1 = require("react");
33
- var oidc_1 = require("./oidc");
33
+ var oidc_1 = require("../oidc");
34
34
  var assert_1 = require("tsafe/assert");
35
35
  var id_1 = require("tsafe/id");
36
- var useGuaranteedMemo_1 = require("./tools/powerhooks/useGuaranteedMemo");
36
+ var useGuaranteedMemo_1 = require("../tools/powerhooks/useGuaranteedMemo");
37
37
  var oidcContext = (0, react_1.createContext)(undefined);
38
- /** @see: https://github.com/garronej/oidc-spa#option-2-usage-directly-within-react */
39
- function createReactOidc(params) {
40
- var prOidc = (0, oidc_1.createOidc)(params);
41
- var decodedIdTokenSchema = params.decodedIdTokenSchema;
38
+ function createReactOidc_dependencyInjection(params, createOidc) {
39
+ var prOidc = Promise.resolve(createOidc(params));
40
+ var decodedIdTokenSchema = ("decodedIdTokenSchema" in params ? params : { "decodedIdTokenSchema": undefined }).decodedIdTokenSchema;
42
41
  function OidcProvider(props) {
43
42
  var children = props.children, fallback = props.fallback;
44
43
  var _a = __read((0, react_1.useState)(undefined), 2), oidc = _a[0], setOidc = _a[1];
@@ -116,5 +115,10 @@ function createReactOidc(params) {
116
115
  }
117
116
  return { OidcProvider: OidcProvider, useOidc: useOidc, prOidc: prOidc };
118
117
  }
118
+ exports.createReactOidc_dependencyInjection = createReactOidc_dependencyInjection;
119
+ /** @see: https://github.com/garronej/oidc-spa#option-2-usage-directly-within-react */
120
+ function createReactOidc(params) {
121
+ return createReactOidc_dependencyInjection(params, oidc_1.createOidc);
122
+ }
119
123
  exports.createReactOidc = createReactOidc;
120
124
  //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react/react.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./oidc";
@@ -0,0 +1,104 @@
1
+ import type { Oidc } from "../oidc";
2
+ import { retrieveQueryParamFromUrl, addQueryParamToUrl } from "../tools/urlQueryParams";
3
+ import { id } from "tsafe/id";
4
+ import { createObjectThatThrowsIfAccessed } from "../tools/createObjectThatThrowsIfAccessed";
5
+
6
+ export type ParamsOfCreateMockOidc<
7
+ DecodedIdToken extends Record<string, unknown> = Record<string, unknown>
8
+ > = {
9
+ isUserInitiallyLoggedIn: boolean;
10
+ mockedParams?: Partial<Oidc["params"]>;
11
+ mockedTokens?: Partial<Oidc.Tokens<DecodedIdToken>>;
12
+ };
13
+
14
+ const urlParamName = "isUserLoggedIn";
15
+
16
+ export function createMockOidc<DecodedIdToken extends Record<string, unknown> = Record<string, unknown>>(
17
+ params: ParamsOfCreateMockOidc<DecodedIdToken>
18
+ ): Oidc<DecodedIdToken> {
19
+ const { isUserInitiallyLoggedIn, mockedParams = {}, mockedTokens = {} } = params;
20
+
21
+ const isUserLoggedIn = (() => {
22
+ const result = retrieveQueryParamFromUrl({
23
+ "url": window.location.href,
24
+ "name": urlParamName
25
+ });
26
+
27
+ if (!result.wasPresent) {
28
+ return isUserInitiallyLoggedIn;
29
+ }
30
+
31
+ window.history.replaceState({}, "", result.newUrl);
32
+
33
+ return result.value === "true";
34
+ })();
35
+
36
+ const common: Oidc.Common = {
37
+ "params": {
38
+ "clientId": mockedParams.clientId ?? "mymockclient",
39
+ "issuerUri": mockedParams.issuerUri ?? "https://my-mock-oidc-server.net/realms/mymockrealm"
40
+ }
41
+ };
42
+
43
+ if (!isUserLoggedIn) {
44
+ return id<Oidc.NotLoggedIn>({
45
+ ...common,
46
+ "isUserLoggedIn": false,
47
+ "login": async () => {
48
+ const { newUrl } = addQueryParamToUrl({
49
+ "url": window.location.href,
50
+ "name": urlParamName,
51
+ "value": "true"
52
+ });
53
+
54
+ window.location.href = newUrl;
55
+
56
+ return new Promise<never>(() => {});
57
+ },
58
+ "initializationError": undefined
59
+ });
60
+ }
61
+
62
+ return id<Oidc.LoggedIn<DecodedIdToken>>({
63
+ ...common,
64
+ "isUserLoggedIn": true,
65
+ "renewTokens": async () => {},
66
+ "getTokens": (() => {
67
+ const tokens: Oidc.Tokens<DecodedIdToken> = {
68
+ "accessToken": mockedTokens.accessToken ?? "mocked-access-token",
69
+ "accessTokenExpirationTime": mockedTokens.accessTokenExpirationTime ?? Infinity,
70
+ "idToken": mockedTokens.idToken ?? "mocked-id-token",
71
+ "refreshToken": mockedTokens.refreshToken ?? "mocked-refresh-token",
72
+ "refreshTokenExpirationTime": mockedTokens.refreshTokenExpirationTime ?? Infinity,
73
+ "decodedIdToken":
74
+ mockedTokens.decodedIdToken ??
75
+ createObjectThatThrowsIfAccessed<DecodedIdToken>({
76
+ "debugMessage": [
77
+ "You haven't provided a mocked decodedIdToken",
78
+ "See https://docs.oidc-spa.dev/documentation/mock"
79
+ ].join("\n")
80
+ })
81
+ };
82
+
83
+ return () => tokens;
84
+ })(),
85
+ "subscribeToTokensChange": () => ({
86
+ "unsubscribe": () => {}
87
+ }),
88
+ "logout": () => {
89
+ const { newUrl } = addQueryParamToUrl({
90
+ "url": window.location.href,
91
+ "name": urlParamName,
92
+ "value": "false"
93
+ });
94
+
95
+ window.location.href = newUrl;
96
+
97
+ return new Promise<never>(() => {});
98
+ },
99
+ "subscribeToAutoLogoutCountdown": () => ({
100
+ "unsubscribeFromAutoLogoutCountdown": () => {}
101
+ }),
102
+ "loginScenario": isUserInitiallyLoggedIn ? "silentSignin" : "backFromLoginPages"
103
+ });
104
+ }
@@ -0,0 +1,8 @@
1
+ import { createReactOidc_dependencyInjection } from "../react/react";
2
+ import { createMockOidc, type ParamsOfCreateMockOidc } from "./oidc";
3
+
4
+ export function createMockReactOidc<
5
+ DecodedIdToken extends Record<string, unknown> = Record<string, unknown>
6
+ >(params: ParamsOfCreateMockOidc<DecodedIdToken>) {
7
+ return createReactOidc_dependencyInjection(params, createMockOidc);
8
+ }
@@ -0,0 +1 @@
1
+ export { type OidcReact, createReactOidc } from "./react";
@@ -1,8 +1,9 @@
1
1
  import { useEffect, useState, createContext, useContext, useReducer, type ReactNode } from "react";
2
- import { createOidc, type ParamsOfCreateOidc, type Oidc, type OidcInitializationError } from "./oidc";
2
+ import { createOidc, type ParamsOfCreateOidc, type Oidc, type OidcInitializationError } from "../oidc";
3
3
  import { assert } from "tsafe/assert";
4
4
  import { id } from "tsafe/id";
5
- import { useGuaranteedMemo } from "./tools/powerhooks/useGuaranteedMemo";
5
+ import { useGuaranteedMemo } from "../tools/powerhooks/useGuaranteedMemo";
6
+ import type { PromiseOrNot } from "../tools/PromiseOrNot";
6
7
 
7
8
  export type OidcReact<DecodedIdToken extends Record<string, unknown>> =
8
9
  | OidcReact.NotLoggedIn
@@ -38,18 +39,24 @@ export namespace OidcReact {
38
39
  const oidcContext = createContext<
39
40
  | {
40
41
  oidc: Oidc;
41
- decodedIdTokenSchema: ParamsOfCreateOidc["decodedIdTokenSchema"];
42
+ decodedIdTokenSchema: { parse: (data: unknown) => Record<string, unknown> } | undefined;
42
43
  }
43
44
  | undefined
44
45
  >(undefined);
45
46
 
46
- /** @see: https://github.com/garronej/oidc-spa#option-2-usage-directly-within-react */
47
- export function createReactOidc<
48
- DecodedIdToken extends Record<string, unknown> = Record<string, unknown>
49
- >(params: ParamsOfCreateOidc<DecodedIdToken>) {
50
- const prOidc = createOidc(params);
47
+ export function createReactOidc_dependencyInjection<
48
+ DecodedIdToken extends Record<string, unknown>,
49
+ ParamsOfCreateOidc extends
50
+ | { decodedIdTokenSchema: { parse: (data: unknown) => DecodedIdToken } | undefined }
51
+ | {}
52
+ >(
53
+ params: ParamsOfCreateOidc,
54
+ createOidc: (params: ParamsOfCreateOidc) => PromiseOrNot<Oidc<DecodedIdToken>>
55
+ ) {
56
+ const prOidc = Promise.resolve(createOidc(params));
51
57
 
52
- const { decodedIdTokenSchema } = params;
58
+ const { decodedIdTokenSchema } =
59
+ "decodedIdTokenSchema" in params ? params : { "decodedIdTokenSchema": undefined };
53
60
 
54
61
  function OidcProvider(props: { fallback?: ReactNode; children: ReactNode }) {
55
62
  const { children, fallback } = props;
@@ -180,3 +187,10 @@ export function createReactOidc<
180
187
 
181
188
  return { OidcProvider, useOidc, prOidc };
182
189
  }
190
+
191
+ /** @see: https://github.com/garronej/oidc-spa#option-2-usage-directly-within-react */
192
+ export function createReactOidc<
193
+ DecodedIdToken extends Record<string, unknown> = Record<string, unknown>
194
+ >(params: ParamsOfCreateOidc<DecodedIdToken>) {
195
+ return createReactOidc_dependencyInjection(params, createOidc);
196
+ }
@@ -0,0 +1 @@
1
+ export type PromiseOrNot<T> = Promise<T> | T;
@@ -0,0 +1,40 @@
1
+ const keyIsTrapped = "isTrapped_zSskDe9d";
2
+
3
+ export class AccessError extends Error {
4
+ constructor(message: string) {
5
+ super(message);
6
+ Object.setPrototypeOf(this, new.target.prototype);
7
+ }
8
+ }
9
+
10
+ export function createObjectThatThrowsIfAccessed<T extends object>(params?: {
11
+ debugMessage?: string;
12
+ isPropertyWhitelisted?: (prop: string | number | symbol) => boolean;
13
+ }): T {
14
+ const { debugMessage = "", isPropertyWhitelisted = () => false } = params ?? {};
15
+
16
+ const get: NonNullable<ProxyHandler<T>["get"]> = (...args) => {
17
+ const [, prop] = args;
18
+
19
+ if (isPropertyWhitelisted(prop)) {
20
+ return Reflect.get(...args);
21
+ }
22
+
23
+ if (prop === keyIsTrapped) {
24
+ return true;
25
+ }
26
+
27
+ throw new AccessError(`Cannot access ${String(prop)} yet ${debugMessage}`);
28
+ };
29
+
30
+ const trappedObject = new Proxy<T>({} as any, {
31
+ get,
32
+ "set": get
33
+ });
34
+
35
+ return trappedObject;
36
+ }
37
+
38
+ export function isObjectThatThrowIfAccessed(obj: object) {
39
+ return (obj as any)[keyIsTrapped] === true;
40
+ }
@@ -0,0 +1 @@
1
+ export type PromiseOrNot<T> = Promise<T> | T;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=PromiseOrNot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromiseOrNot.js","sourceRoot":"","sources":["../src/tools/PromiseOrNot.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ export declare class AccessError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare function createObjectThatThrowsIfAccessed<T extends object>(params?: {
5
+ debugMessage?: string;
6
+ isPropertyWhitelisted?: (prop: string | number | symbol) => boolean;
7
+ }): T;
8
+ export declare function isObjectThatThrowIfAccessed(obj: object): boolean;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __read = (this && this.__read) || function (o, n) {
18
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
19
+ if (!m) return o;
20
+ var i = m.call(o), r, ar = [], e;
21
+ try {
22
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
23
+ }
24
+ catch (error) { e = { error: error }; }
25
+ finally {
26
+ try {
27
+ if (r && !r.done && (m = i["return"])) m.call(i);
28
+ }
29
+ finally { if (e) throw e.error; }
30
+ }
31
+ return ar;
32
+ };
33
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
34
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
35
+ if (ar || !(i in from)) {
36
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
37
+ ar[i] = from[i];
38
+ }
39
+ }
40
+ return to.concat(ar || Array.prototype.slice.call(from));
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.isObjectThatThrowIfAccessed = exports.createObjectThatThrowsIfAccessed = exports.AccessError = void 0;
44
+ var keyIsTrapped = "isTrapped_zSskDe9d";
45
+ var AccessError = /** @class */ (function (_super) {
46
+ __extends(AccessError, _super);
47
+ function AccessError(message) {
48
+ var _newTarget = this.constructor;
49
+ var _this = _super.call(this, message) || this;
50
+ Object.setPrototypeOf(_this, _newTarget.prototype);
51
+ return _this;
52
+ }
53
+ return AccessError;
54
+ }(Error));
55
+ exports.AccessError = AccessError;
56
+ function createObjectThatThrowsIfAccessed(params) {
57
+ var _a = params !== null && params !== void 0 ? params : {}, _b = _a.debugMessage, debugMessage = _b === void 0 ? "" : _b, _c = _a.isPropertyWhitelisted, isPropertyWhitelisted = _c === void 0 ? function () { return false; } : _c;
58
+ var get = function () {
59
+ var args = [];
60
+ for (var _i = 0; _i < arguments.length; _i++) {
61
+ args[_i] = arguments[_i];
62
+ }
63
+ var _a = __read(args, 2), prop = _a[1];
64
+ if (isPropertyWhitelisted(prop)) {
65
+ return Reflect.get.apply(Reflect, __spreadArray([], __read(args), false));
66
+ }
67
+ if (prop === keyIsTrapped) {
68
+ return true;
69
+ }
70
+ throw new AccessError("Cannot access ".concat(String(prop), " yet ").concat(debugMessage));
71
+ };
72
+ var trappedObject = new Proxy({}, {
73
+ get: get,
74
+ "set": get
75
+ });
76
+ return trappedObject;
77
+ }
78
+ exports.createObjectThatThrowsIfAccessed = createObjectThatThrowsIfAccessed;
79
+ function isObjectThatThrowIfAccessed(obj) {
80
+ return obj[keyIsTrapped] === true;
81
+ }
82
+ exports.isObjectThatThrowIfAccessed = isObjectThatThrowIfAccessed;
83
+ //# sourceMappingURL=createObjectThatThrowsIfAccessed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createObjectThatThrowsIfAccessed.js","sourceRoot":"","sources":["../src/tools/createObjectThatThrowsIfAccessed.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAM,YAAY,GAAG,oBAAoB,CAAC;AAE1C;IAAiC,+BAAK;IAClC,qBAAY,OAAe;;QACvB,YAAA,MAAK,YAAC,OAAO,CAAC,SAAC;QACf,MAAM,CAAC,cAAc,CAAC,KAAI,EAAE,WAAW,SAAS,CAAC,CAAC;;IACtD,CAAC;IACL,kBAAC;AAAD,CAAC,AALD,CAAiC,KAAK,GAKrC;AALY,kCAAW;AAOxB,SAAgB,gCAAgC,CAAmB,MAGlE;IACS,IAAA,KAA6D,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,EAAvE,oBAAiB,EAAjB,YAAY,mBAAG,EAAE,KAAA,EAAE,6BAAmC,EAAnC,qBAAqB,mBAAG,cAAM,OAAA,KAAK,EAAL,CAAK,KAAiB,CAAC;IAEhF,IAAM,GAAG,GAAwC;QAAC,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QAC/C,IAAA,KAAA,OAAW,IAAI,IAAA,EAAZ,IAAI,QAAQ,CAAC;QAEtB,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC,GAAG,OAAX,OAAO,2BAAQ,IAAI,WAAE;QAChC,CAAC;QAED,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,WAAW,CAAC,wBAAiB,MAAM,CAAC,IAAI,CAAC,kBAAQ,YAAY,CAAE,CAAC,CAAC;IAC/E,CAAC,CAAC;IAEF,IAAM,aAAa,GAAG,IAAI,KAAK,CAAI,EAAS,EAAE;QAC1C,GAAG,KAAA;QACH,KAAK,EAAE,GAAG;KACb,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC;AACzB,CAAC;AA1BD,4EA0BC;AAED,SAAgB,2BAA2B,CAAC,GAAW;IACnD,OAAQ,GAAW,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;AAC/C,CAAC;AAFD,kEAEC"}
package/react.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["src/react.tsx"],"names":[],"mappings":"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"}