oidc-spa 0.1.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/oidc.js ADDED
@@ -0,0 +1,440 @@
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
+ var __read = (this && this.__read) || function (o, n) {
50
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
51
+ if (!m) return o;
52
+ var i = m.call(o), r, ar = [], e;
53
+ try {
54
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
55
+ }
56
+ catch (error) { e = { error: error }; }
57
+ finally {
58
+ try {
59
+ if (r && !r.done && (m = i["return"])) m.call(i);
60
+ }
61
+ finally { if (e) throw e.error; }
62
+ }
63
+ return ar;
64
+ };
65
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
66
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
67
+ if (ar || !(i in from)) {
68
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
69
+ ar[i] = from[i];
70
+ }
71
+ }
72
+ return to.concat(ar || Array.prototype.slice.call(from));
73
+ };
74
+ var __values = (this && this.__values) || function(o) {
75
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
76
+ if (m) return m.call(o);
77
+ if (o && typeof o.length === "number") return {
78
+ next: function () {
79
+ if (o && i >= o.length) o = void 0;
80
+ return { value: o && o[i++], done: !o };
81
+ }
82
+ };
83
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
84
+ };
85
+ Object.defineProperty(exports, "__esModule", { value: true });
86
+ exports.createOidc = void 0;
87
+ var oidc_client_ts_1 = require("oidc-client-ts");
88
+ var id_1 = require("tsafe/id");
89
+ var readExpirationTimeInJwt_1 = require("./tools/readExpirationTimeInJwt");
90
+ var assert_1 = require("tsafe/assert");
91
+ var urlSearchParams_1 = require("./tools/urlSearchParams");
92
+ var fnv1aHashToHex_1 = require("./tools/fnv1aHashToHex");
93
+ var Deferred_1 = require("./tools/Deferred");
94
+ var paramsToRetrieveFromSuccessfulLogin = ["code", "state", "session_state"];
95
+ function createOidc(params) {
96
+ return __awaiter(this, void 0, void 0, function () {
97
+ var issuerUri, clientId, _a, silentSsoUrl, _b, transformUrlBeforeRedirect, configHash, configHashKey, userManager, login, currentTokens, common, oidc;
98
+ var _this = this;
99
+ return __generator(this, function (_c) {
100
+ switch (_c.label) {
101
+ case 0:
102
+ issuerUri = params.issuerUri, clientId = params.clientId, _a = params.silentSsoUrl, silentSsoUrl = _a === void 0 ? "".concat(window.location.origin, "/silent-sso.html") : _a, _b = params.transformUrlBeforeRedirect, transformUrlBeforeRedirect = _b === void 0 ? function (url) { return url; } : _b;
103
+ configHash = (0, fnv1aHashToHex_1.fnv1aHashToHex)("".concat(issuerUri, " ").concat(clientId));
104
+ configHashKey = "configHash";
105
+ userManager = new oidc_client_ts_1.UserManager({
106
+ "authority": issuerUri,
107
+ "client_id": clientId,
108
+ "redirect_uri": "" /* provided when calling login */,
109
+ "response_type": "code",
110
+ "scope": "openid profile",
111
+ "automaticSilentRenew": false,
112
+ "silent_redirect_uri": "".concat(silentSsoUrl, "?").concat(configHashKey, "=").concat(configHash)
113
+ });
114
+ login = function (_a) {
115
+ var doesCurrentHrefRequiresAuth = _a.doesCurrentHrefRequiresAuth;
116
+ return __awaiter(_this, void 0, void 0, function () {
117
+ function URL() {
118
+ var args = [];
119
+ for (var _i = 0; _i < arguments.length; _i++) {
120
+ args[_i] = arguments[_i];
121
+ }
122
+ var urlInstance = new (URL_real.bind.apply(URL_real, __spreadArray([void 0], __read(args), false)))();
123
+ return new Proxy(urlInstance, {
124
+ "get": function (target, prop) {
125
+ if (prop === "href") {
126
+ return transformUrlBeforeRedirect(urlInstance.href);
127
+ }
128
+ //@ts-expect-error
129
+ return target[prop];
130
+ }
131
+ });
132
+ }
133
+ var URL_real, redirect_uri;
134
+ return __generator(this, function (_b) {
135
+ switch (_b.label) {
136
+ case 0:
137
+ URL_real = window.URL;
138
+ Object.defineProperty(window, "URL", { "value": URL });
139
+ redirect_uri = (0, urlSearchParams_1.addParamToUrl)({
140
+ "url": window.location.href,
141
+ "name": configHashKey,
142
+ "value": configHash
143
+ }).newUrl;
144
+ return [4 /*yield*/, userManager.signinRedirect({
145
+ redirect_uri: redirect_uri,
146
+ "redirectMethod": doesCurrentHrefRequiresAuth ? "replace" : "assign"
147
+ })];
148
+ case 1:
149
+ _b.sent();
150
+ return [2 /*return*/, new Promise(function () { })];
151
+ }
152
+ });
153
+ });
154
+ };
155
+ return [4 /*yield*/, (function getUser() {
156
+ return __awaiter(this, void 0, void 0, function () {
157
+ var url, result, result, loginSuccessUrl, paramsToRetrieveFromSuccessfulLogin_1, paramsToRetrieveFromSuccessfulLogin_1_1, name_1, result, user, _a, user, _b, dLoginSuccessUrl_1, timeout_1, listener_1, loginSuccessUrl, user;
158
+ var e_1, _c;
159
+ return __generator(this, function (_d) {
160
+ switch (_d.label) {
161
+ case 0:
162
+ url = window.location.href;
163
+ {
164
+ result = (0, urlSearchParams_1.retrieveParamFromUrl)({ "name": configHashKey, url: url });
165
+ if (!result.wasPresent || result.value !== configHash) {
166
+ return [3 /*break*/, 5];
167
+ }
168
+ url = result.newUrl;
169
+ }
170
+ {
171
+ result = (0, urlSearchParams_1.retrieveParamFromUrl)({ "name": "error", url: url });
172
+ if (result.wasPresent) {
173
+ throw new Error("OIDC error: ".concat(result.value));
174
+ }
175
+ }
176
+ loginSuccessUrl = "https://dummy.com";
177
+ try {
178
+ for (paramsToRetrieveFromSuccessfulLogin_1 = __values(paramsToRetrieveFromSuccessfulLogin), paramsToRetrieveFromSuccessfulLogin_1_1 = paramsToRetrieveFromSuccessfulLogin_1.next(); !paramsToRetrieveFromSuccessfulLogin_1_1.done; paramsToRetrieveFromSuccessfulLogin_1_1 = paramsToRetrieveFromSuccessfulLogin_1.next()) {
179
+ name_1 = paramsToRetrieveFromSuccessfulLogin_1_1.value;
180
+ result = (0, urlSearchParams_1.retrieveParamFromUrl)({ name: name_1, url: url });
181
+ (0, assert_1.assert)(result.wasPresent);
182
+ loginSuccessUrl = (0, urlSearchParams_1.addParamToUrl)({
183
+ "url": loginSuccessUrl,
184
+ "name": name_1,
185
+ "value": result.value
186
+ }).newUrl;
187
+ url = result.newUrl;
188
+ }
189
+ }
190
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
191
+ finally {
192
+ try {
193
+ if (paramsToRetrieveFromSuccessfulLogin_1_1 && !paramsToRetrieveFromSuccessfulLogin_1_1.done && (_c = paramsToRetrieveFromSuccessfulLogin_1.return)) _c.call(paramsToRetrieveFromSuccessfulLogin_1);
194
+ }
195
+ finally { if (e_1) throw e_1.error; }
196
+ }
197
+ window.history.pushState(null, "", url);
198
+ user = undefined;
199
+ _d.label = 1;
200
+ case 1:
201
+ _d.trys.push([1, 3, , 4]);
202
+ return [4 /*yield*/, userManager.signinRedirectCallback(loginSuccessUrl)];
203
+ case 2:
204
+ user = _d.sent();
205
+ return [3 /*break*/, 4];
206
+ case 3:
207
+ _a = _d.sent();
208
+ //NOTE: The user has likely pressed the back button just after logging in.
209
+ return [2 /*return*/, undefined];
210
+ case 4: return [2 /*return*/, user];
211
+ case 5: return [4 /*yield*/, userManager.getUser()];
212
+ case 6:
213
+ user = _d.sent();
214
+ if (user === null) {
215
+ return [3 /*break*/, 11];
216
+ }
217
+ _d.label = 7;
218
+ case 7:
219
+ _d.trys.push([7, 9, , 10]);
220
+ return [4 /*yield*/, userManager.signinSilent()];
221
+ case 8:
222
+ _d.sent();
223
+ return [3 /*break*/, 10];
224
+ case 9:
225
+ _b = _d.sent();
226
+ return [2 /*return*/, undefined];
227
+ case 10: return [2 /*return*/, user];
228
+ case 11:
229
+ dLoginSuccessUrl_1 = new Deferred_1.Deferred();
230
+ timeout_1 = setTimeout(function () {
231
+ return dLoginSuccessUrl_1.reject(new Error("SSO silent login timeout with clientId: ".concat(clientId)));
232
+ }, 5000);
233
+ listener_1 = function (event) {
234
+ var e_2, _a;
235
+ if (event.origin !== window.location.origin || typeof event.data !== "string") {
236
+ return;
237
+ }
238
+ var url = event.data;
239
+ {
240
+ var result = void 0;
241
+ try {
242
+ result = (0, urlSearchParams_1.retrieveParamFromUrl)({ "name": configHashKey, url: url });
243
+ }
244
+ catch (_b) {
245
+ // This could possibly happen if url is not a valid url.
246
+ return;
247
+ }
248
+ if (!result.wasPresent || result.value !== configHash) {
249
+ return;
250
+ }
251
+ }
252
+ clearTimeout(timeout_1);
253
+ window.removeEventListener("message", listener_1);
254
+ {
255
+ var result = (0, urlSearchParams_1.retrieveParamFromUrl)({ "name": "error", url: url });
256
+ if (result.wasPresent) {
257
+ dLoginSuccessUrl_1.resolve(undefined);
258
+ return;
259
+ }
260
+ }
261
+ var loginSuccessUrl = "https://dummy.com";
262
+ try {
263
+ for (var paramsToRetrieveFromSuccessfulLogin_2 = __values(paramsToRetrieveFromSuccessfulLogin), paramsToRetrieveFromSuccessfulLogin_2_1 = paramsToRetrieveFromSuccessfulLogin_2.next(); !paramsToRetrieveFromSuccessfulLogin_2_1.done; paramsToRetrieveFromSuccessfulLogin_2_1 = paramsToRetrieveFromSuccessfulLogin_2.next()) {
264
+ var name_2 = paramsToRetrieveFromSuccessfulLogin_2_1.value;
265
+ var result = (0, urlSearchParams_1.retrieveParamFromUrl)({ name: name_2, url: url });
266
+ (0, assert_1.assert)(result.wasPresent);
267
+ loginSuccessUrl = (0, urlSearchParams_1.addParamToUrl)({
268
+ "url": loginSuccessUrl,
269
+ "name": name_2,
270
+ "value": result.value
271
+ }).newUrl;
272
+ }
273
+ }
274
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
275
+ finally {
276
+ try {
277
+ if (paramsToRetrieveFromSuccessfulLogin_2_1 && !paramsToRetrieveFromSuccessfulLogin_2_1.done && (_a = paramsToRetrieveFromSuccessfulLogin_2.return)) _a.call(paramsToRetrieveFromSuccessfulLogin_2);
278
+ }
279
+ finally { if (e_2) throw e_2.error; }
280
+ }
281
+ dLoginSuccessUrl_1.resolve(loginSuccessUrl);
282
+ };
283
+ window.addEventListener("message", listener_1, false);
284
+ userManager.signinSilent({ "silentRequestTimeoutInSeconds": 1 }).catch(function () {
285
+ /* error expected */
286
+ });
287
+ return [4 /*yield*/, dLoginSuccessUrl_1.pr];
288
+ case 12:
289
+ loginSuccessUrl = _d.sent();
290
+ if (loginSuccessUrl === undefined) {
291
+ return [3 /*break*/, 14];
292
+ }
293
+ return [4 /*yield*/, userManager.signinRedirectCallback(loginSuccessUrl)];
294
+ case 13:
295
+ user = _d.sent();
296
+ return [2 /*return*/, user];
297
+ case 14: return [2 /*return*/, undefined];
298
+ }
299
+ });
300
+ });
301
+ })().then(function (user) {
302
+ if (user === undefined) {
303
+ return undefined;
304
+ }
305
+ var tokens = userToTokens(user);
306
+ if (tokens.refreshTokenExpirationTime < tokens.accessTokenExpirationTime) {
307
+ console.warn([
308
+ "The OIDC refresh token shorter than the one of the access token.",
309
+ "This is very unusual and probably a misconfiguration.",
310
+ "Check your oidc server configuration for ".concat(clientId, " ").concat(issuerUri)
311
+ ].join(" "));
312
+ }
313
+ return tokens;
314
+ })];
315
+ case 1:
316
+ currentTokens = _c.sent();
317
+ common = {
318
+ "params": {
319
+ issuerUri: issuerUri,
320
+ clientId: clientId
321
+ }
322
+ };
323
+ if (currentTokens === undefined) {
324
+ return [2 /*return*/, (0, id_1.id)(__assign(__assign({}, common), { "isUserLoggedIn": false, login: login }))];
325
+ }
326
+ oidc = (0, id_1.id)(__assign(__assign({}, common), { "isUserLoggedIn": true, "getTokens": function () { return ({
327
+ "accessToken": currentTokens.accessToken,
328
+ "idToken": currentTokens.idToken,
329
+ "refreshToken": currentTokens.refreshToken,
330
+ "refreshTokenExpirationTime": currentTokens.refreshTokenExpirationTime,
331
+ "accessTokenExpirationTime": currentTokens.accessTokenExpirationTime
332
+ }); }, "logout": function (_a) {
333
+ var redirectTo = _a.redirectTo;
334
+ return __awaiter(_this, void 0, void 0, function () {
335
+ return __generator(this, function (_b) {
336
+ switch (_b.label) {
337
+ case 0: return [4 /*yield*/, userManager.signoutRedirect({
338
+ "post_logout_redirect_uri": (function () {
339
+ switch (redirectTo) {
340
+ case "current page":
341
+ return window.location.href;
342
+ case "home":
343
+ return window.location.origin;
344
+ }
345
+ })()
346
+ })];
347
+ case 1:
348
+ _b.sent();
349
+ return [2 /*return*/, new Promise(function () { })];
350
+ }
351
+ });
352
+ });
353
+ }, "renewTokens": function () { return __awaiter(_this, void 0, void 0, function () {
354
+ var user;
355
+ return __generator(this, function (_a) {
356
+ switch (_a.label) {
357
+ case 0: return [4 /*yield*/, userManager.signinSilent()];
358
+ case 1:
359
+ user = _a.sent();
360
+ (0, assert_1.assert)(user !== null);
361
+ Object.assign(currentTokens, userToTokens(user));
362
+ return [2 /*return*/];
363
+ }
364
+ });
365
+ }); } }));
366
+ (function scheduleAutomaticRenew() {
367
+ var _this = this;
368
+ var msBeforeExpiration = Math.min(currentTokens.accessTokenExpirationTime, currentTokens.refreshTokenExpirationTime) -
369
+ Date.now();
370
+ setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
371
+ var _a;
372
+ return __generator(this, function (_b) {
373
+ switch (_b.label) {
374
+ case 0:
375
+ _b.trys.push([0, 2, , 4]);
376
+ return [4 /*yield*/, oidc.renewTokens()];
377
+ case 1:
378
+ _b.sent();
379
+ return [3 /*break*/, 4];
380
+ case 2:
381
+ _a = _b.sent();
382
+ return [4 /*yield*/, login({ "doesCurrentHrefRequiresAuth": true })];
383
+ case 3:
384
+ _b.sent();
385
+ return [3 /*break*/, 4];
386
+ case 4:
387
+ scheduleAutomaticRenew();
388
+ return [2 /*return*/];
389
+ }
390
+ });
391
+ }); }, msBeforeExpiration - /* min validity in seconds */ 25 * 1000);
392
+ })();
393
+ return [2 /*return*/, oidc];
394
+ }
395
+ });
396
+ });
397
+ }
398
+ exports.createOidc = createOidc;
399
+ function userToTokens(user) {
400
+ var accessToken = user.access_token;
401
+ var accessTokenExpirationTime = (function () {
402
+ read_from_metadata: {
403
+ var expires_at = user.expires_at;
404
+ if (expires_at === undefined) {
405
+ break read_from_metadata;
406
+ }
407
+ return expires_at * 1000;
408
+ }
409
+ read_from_jwt: {
410
+ var expirationTime = (0, readExpirationTimeInJwt_1.readExpirationTimeInJwt)(accessToken);
411
+ if (expirationTime === undefined) {
412
+ break read_from_jwt;
413
+ }
414
+ return expirationTime;
415
+ }
416
+ (0, assert_1.assert)(false, "Failed to get access token expiration time");
417
+ })();
418
+ var refreshToken = user.refresh_token;
419
+ (0, assert_1.assert)(refreshToken !== undefined, "No refresh token provided by the oidc server");
420
+ var refreshTokenExpirationTime = (function () {
421
+ read_from_jwt: {
422
+ var expirationTime = (0, readExpirationTimeInJwt_1.readExpirationTimeInJwt)(refreshToken);
423
+ if (expirationTime === undefined) {
424
+ break read_from_jwt;
425
+ }
426
+ return expirationTime;
427
+ }
428
+ (0, assert_1.assert)(false, "Failed to get refresh token expiration time");
429
+ })();
430
+ var idToken = user.id_token;
431
+ (0, assert_1.assert)(idToken !== undefined, "No id token provided by the oidc server");
432
+ return {
433
+ accessToken: accessToken,
434
+ accessTokenExpirationTime: accessTokenExpirationTime,
435
+ refreshToken: refreshToken,
436
+ refreshTokenExpirationTime: refreshTokenExpirationTime,
437
+ idToken: idToken
438
+ };
439
+ }
440
+ //# sourceMappingURL=oidc.js.map
package/oidc.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oidc.js","sourceRoot":"","sources":["src/oidc.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,83 @@
1
+ {
2
+ "name": "oidc-spa",
3
+ "version": "0.1.0",
4
+ "description": "Openidconnect client for Single Page Applications",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git://github.com/garronej/oidc-spa.git"
8
+ },
9
+ "main": "./index.js",
10
+ "types": "./index.d.ts",
11
+ "exports": {
12
+ ".": "./index.js",
13
+ "./index": "./index.js",
14
+ "./oidc": "./oidc.js",
15
+ "./react": "./react.js",
16
+ "./tools/Deferred": "./tools/Deferred.js",
17
+ "./tools/fnv1aHashToHex": "./tools/fnv1aHashToHex.js",
18
+ "./tools/readExpirationTimeInJwt": "./tools/readExpirationTimeInJwt.js",
19
+ "./tools/urlSearchParams": "./tools/urlSearchParams.js"
20
+ },
21
+ "lint-staged": {
22
+ "*.{ts,tsx,json,md}": [
23
+ "prettier --write"
24
+ ]
25
+ },
26
+ "husky": {
27
+ "hooks": {
28
+ "pre-commit": "lint-staged -v"
29
+ }
30
+ },
31
+ "author": "u/garronej",
32
+ "license": "MIT",
33
+ "files": [
34
+ "./src/index.ts",
35
+ "./src/oidc.ts",
36
+ "./src/react.tsx",
37
+ "./src/tools/Deferred.ts",
38
+ "./src/tools/fnv1aHashToHex.ts",
39
+ "./src/tools/readExpirationTimeInJwt.ts",
40
+ "./src/tools/urlSearchParams.ts",
41
+ "./index.d.ts",
42
+ "./index.js",
43
+ "./index.js.map",
44
+ "./oidc.d.ts",
45
+ "./oidc.js",
46
+ "./oidc.js.map",
47
+ "./react.d.ts",
48
+ "./react.js",
49
+ "./react.js.map",
50
+ "./tools/Deferred.d.ts",
51
+ "./tools/Deferred.js",
52
+ "./tools/Deferred.js.map",
53
+ "./tools/fnv1aHashToHex.d.ts",
54
+ "./tools/fnv1aHashToHex.js",
55
+ "./tools/fnv1aHashToHex.js.map",
56
+ "./tools/readExpirationTimeInJwt.d.ts",
57
+ "./tools/readExpirationTimeInJwt.js",
58
+ "./tools/readExpirationTimeInJwt.js.map",
59
+ "./tools/urlSearchParams.d.ts",
60
+ "./tools/urlSearchParams.js",
61
+ "./tools/urlSearchParams.js.map"
62
+ ],
63
+ "keywords": [],
64
+ "homepage": "https://github.com/garronej/oidc-spa",
65
+ "devDependencies": {
66
+ "@types/node": "^20.2.1",
67
+ "@types/react": "^18.2.6",
68
+ "husky": "^4.3.8",
69
+ "lint-staged": "^11.1.1",
70
+ "prettier": "^2.8.8",
71
+ "react": "^18.2.0",
72
+ "ts-node": "^10.9.1",
73
+ "typescript": "^5.0.4"
74
+ },
75
+ "publishConfig": {
76
+ "access": "public"
77
+ },
78
+ "dependencies": {
79
+ "jwt-decode": "^3.1.2",
80
+ "oidc-client-ts": "^2.3.0",
81
+ "tsafe": "^1.6.5"
82
+ }
83
+ }
package/react.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import { type ReactNode } from "react";
2
+ import { createOidc, type Oidc } from "./oidc";
3
+ export declare function createOidcClientProvider(params: Parameters<typeof createOidc>[0]): {
4
+ OidcClientProvider: (props: {
5
+ fallback?: ReactNode;
6
+ children: ReactNode;
7
+ }) => import("react/jsx-runtime").JSX.Element;
8
+ };
9
+ export declare function useOidc(): {
10
+ oidc: Oidc;
11
+ };
package/react.js ADDED
@@ -0,0 +1,58 @@
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 __read = (this && this.__read) || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o), r, ar = [], e;
17
+ try {
18
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
+ }
20
+ catch (error) { e = { error: error }; }
21
+ finally {
22
+ try {
23
+ if (r && !r.done && (m = i["return"])) m.call(i);
24
+ }
25
+ finally { if (e) throw e.error; }
26
+ }
27
+ return ar;
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.useOidc = exports.createOidcClientProvider = void 0;
31
+ var jsx_runtime_1 = require("react/jsx-runtime");
32
+ var react_1 = require("react");
33
+ var oidc_1 = require("./oidc");
34
+ var assert_1 = require("tsafe/assert");
35
+ var oidcClientContext = (0, react_1.createContext)(undefined);
36
+ function createOidcClientProvider(params) {
37
+ var prOidc = (0, oidc_1.createOidc)(params);
38
+ function OidcClientProvider(props) {
39
+ var children = props.children, fallback = props.fallback;
40
+ var _a = __read((0, react_1.useState)(undefined), 2), oidcClient = _a[0], setOidcClient = _a[1];
41
+ (0, react_1.useEffect)(function () {
42
+ prOidc.then(setOidcClient);
43
+ }, []);
44
+ if (oidcClient === undefined) {
45
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: fallback === undefined ? null : fallback });
46
+ }
47
+ return (0, jsx_runtime_1.jsx)(oidcClientContext.Provider, __assign({ value: oidcClient }, { children: children }));
48
+ }
49
+ return { OidcClientProvider: OidcClientProvider };
50
+ }
51
+ exports.createOidcClientProvider = createOidcClientProvider;
52
+ function useOidc() {
53
+ var oidc = (0, react_1.useContext)(oidcClientContext);
54
+ (0, assert_1.assert)(oidc !== undefined, "You must use useOidc inside a OidcClientProvider");
55
+ return { oidc: oidc };
56
+ }
57
+ exports.useOidc = useOidc;
58
+ //# sourceMappingURL=react.js.map
package/react.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["src/react.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAuF;AACvF,+BAA+C;AAC/C,uCAAsC;AAEtC,IAAM,iBAAiB,GAAG,IAAA,qBAAa,EAAmB,SAAS,CAAC,CAAC;AAErE,SAAgB,wBAAwB,CAAC,MAAwC;IAC7E,IAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,MAAM,CAAC,CAAC;IAElC,SAAS,kBAAkB,CAAC,KAAoD;QACpE,IAAA,QAAQ,GAAe,KAAK,SAApB,EAAE,QAAQ,GAAK,KAAK,SAAV,CAAW;QAE/B,IAAA,KAAA,OAA8B,IAAA,gBAAQ,EAAmB,SAAS,CAAC,IAAA,EAAlE,UAAU,QAAA,EAAE,aAAa,QAAyC,CAAC;QAE1E,IAAA,iBAAS,EAAC;YACN,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,UAAU,KAAK,SAAS,EAAE;YAC1B,OAAO,2DAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAI,CAAC;SAC1D;QAED,OAAO,uBAAC,iBAAiB,CAAC,QAAQ,aAAC,KAAK,EAAE,UAAU,gBAAG,QAAQ,IAA8B,CAAC;IAClG,CAAC;IAED,OAAO,EAAE,kBAAkB,oBAAA,EAAE,CAAC;AAClC,CAAC;AApBD,4DAoBC;AAED,SAAgB,OAAO;IACnB,IAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,iBAAiB,CAAC,CAAC;IAC3C,IAAA,eAAM,EAAC,IAAI,KAAK,SAAS,EAAE,kDAAkD,CAAC,CAAC;IAC/E,OAAO,EAAE,IAAI,MAAA,EAAE,CAAC;AACpB,CAAC;AAJD,0BAIC"}
package/src/index.ts ADDED
@@ -0,0 +1,4 @@
1
+ export { createOidc } from "./oidc";
2
+ export type { Oidc } from "./oidc";
3
+ import decodeJwt from "jwt-decode";
4
+ export { decodeJwt };