Socket
Socket
Sign inDemoInstall

oidc-react

Package Overview
Dependencies
Maintainers
1
Versions
39
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

oidc-react - npm Package Compare versions

Comparing version 1.6.0-alpha to 2.0.0

9

build/src/AuthContext.d.ts

@@ -1,8 +0,7 @@

import React, { FC } from 'react';
import { UserManager } from 'oidc-client';
import React, { FC, PropsWithChildren } from 'react';
import { UserManager } from 'oidc-client-ts';
import { Location, AuthProviderProps, AuthContextProps } from './AuthContextInterface';
export declare const defaultAuthContext: AuthContextProps;
export declare const AuthContext: React.Context<AuthContextProps>;
export declare const AuthContext: React.Context<AuthContextProps | undefined>;
export declare const hasCodeInUrl: (location: Location) => boolean;
export declare const initUserManager: (props: AuthProviderProps) => UserManager;
export declare const AuthProvider: FC<AuthProviderProps>;
export declare const AuthProvider: FC<PropsWithChildren<AuthProviderProps>>;
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {

@@ -17,3 +21,3 @@ if (k2 === undefined) k2 = k;

var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);

@@ -31,2 +35,29 @@ return result;

};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
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;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __rest = (this && this.__rest) || function (s, e) {

@@ -44,18 +75,9 @@ var t = {};

Object.defineProperty(exports, "__esModule", { value: true });
exports.AuthProvider = exports.initUserManager = exports.hasCodeInUrl = exports.AuthContext = exports.defaultAuthContext = void 0;
const react_1 = __importStar(require("react"));
const oidc_client_1 = require("oidc-client");
exports.defaultAuthContext = {
signIn: () => Promise.reject(new Error('AuthContext not loaded yet.')),
signInPopup: () => Promise.reject(new Error('AuthContext not loaded yet.')),
signOut: () => Promise.reject(new Error('AuthContext not loaded yet.')),
signOutRedirect: () => Promise.reject(new Error('AuthContext not loaded yet.')),
userManager: {},
userData: null,
isLoading: true,
};
exports.AuthContext = react_1.default.createContext(exports.defaultAuthContext);
exports.hasCodeInUrl = (location) => {
const searchParams = new URLSearchParams(location.search);
const hashParams = new URLSearchParams(location.hash.replace('#', '?'));
exports.AuthProvider = exports.initUserManager = exports.hasCodeInUrl = exports.AuthContext = void 0;
var react_1 = __importStar(require("react"));
var oidc_client_ts_1 = require("oidc-client-ts");
exports.AuthContext = react_1.default.createContext(undefined);
var hasCodeInUrl = function (location) {
var searchParams = new URLSearchParams(location.search);
var hashParams = new URLSearchParams(location.hash.replace('#', '?'));
return Boolean(searchParams.get('code') ||

@@ -68,11 +90,12 @@ searchParams.get('id_token') ||

};
exports.initUserManager = (props) => {
exports.hasCodeInUrl = hasCodeInUrl;
var initUserManager = function (props) {
if (props.userManager)
return props.userManager;
const { authority, clientId, clientSecret, redirectUri, silentRedirectUri, postLogoutRedirectUri, responseType, scope, automaticSilentRenew, loadUserInfo, popupWindowFeatures, popupRedirectUri, popupWindowTarget, } = props;
return new oidc_client_1.UserManager({
authority,
client_id: clientId,
var authority = props.authority, clientId = props.clientId, clientSecret = props.clientSecret, redirectUri = props.redirectUri, silentRedirectUri = props.silentRedirectUri, postLogoutRedirectUri = props.postLogoutRedirectUri, responseType = props.responseType, scope = props.scope, automaticSilentRenew = props.automaticSilentRenew, loadUserInfo = props.loadUserInfo, popupWindowFeatures = props.popupWindowFeatures, popupRedirectUri = props.popupRedirectUri, popupWindowTarget = props.popupWindowTarget;
return new oidc_client_ts_1.UserManager({
authority: authority || '',
client_id: clientId || '',
client_secret: clientSecret,
redirect_uri: redirectUri,
redirect_uri: redirectUri || '',
silent_redirect_uri: silentRedirectUri || redirectUri,

@@ -86,75 +109,139 @@ post_logout_redirect_uri: postLogoutRedirectUri || redirectUri,

popupWindowTarget: popupWindowTarget,
automaticSilentRenew,
automaticSilentRenew: automaticSilentRenew,
});
};
exports.AuthProvider = (_a) => {
var { children, autoSignIn = true, onBeforeSignIn, onSignIn, onSignOut, location = window.location } = _a, props = __rest(_a, ["children", "autoSignIn", "onBeforeSignIn", "onSignIn", "onSignOut", "location"]);
const [isLoading, setIsLoading] = react_1.useState(true);
const [userData, setUserData] = react_1.useState(null);
const [userManager] = react_1.useState(exports.initUserManager(props));
const signOutHooks = () => __awaiter(void 0, void 0, void 0, function* () {
setUserData(null);
onSignOut && onSignOut();
});
const signInPopupHooks = () => __awaiter(void 0, void 0, void 0, function* () {
const userFromPopup = yield userManager.signinPopup();
setUserData(userFromPopup);
onSignIn && onSignIn(userFromPopup);
yield userManager.signinPopupCallback();
});
const isMountedRef = react_1.useRef(true);
react_1.useEffect(() => {
return () => {
exports.initUserManager = initUserManager;
var AuthProvider = function (_a) {
var children = _a.children, _b = _a.autoSignIn, autoSignIn = _b === void 0 ? true : _b, onBeforeSignIn = _a.onBeforeSignIn, onSignIn = _a.onSignIn, onSignOut = _a.onSignOut, _c = _a.location, location = _c === void 0 ? window.location : _c, props = __rest(_a, ["children", "autoSignIn", "onBeforeSignIn", "onSignIn", "onSignOut", "location"]);
var _d = (0, react_1.useState)(true), isLoading = _d[0], setIsLoading = _d[1];
var _e = (0, react_1.useState)(null), userData = _e[0], setUserData = _e[1];
var userManager = (0, react_1.useState)(function () { return (0, exports.initUserManager)(props); })[0];
var signOutHooks = function () { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
setUserData(null);
onSignOut && onSignOut();
return [2];
});
}); };
var signInPopupHooks = function () { return __awaiter(void 0, void 0, void 0, function () {
var userFromPopup;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, userManager.signinPopup()];
case 1:
userFromPopup = _a.sent();
setUserData(userFromPopup);
onSignIn && onSignIn(userFromPopup);
return [4, userManager.signinPopupCallback()];
case 2:
_a.sent();
return [2];
}
});
}); };
var isMountedRef = (0, react_1.useRef)(true);
(0, react_1.useEffect)(function () {
return function () {
isMountedRef.current = false;
};
}, []);
react_1.useEffect(() => {
const getUser = () => __awaiter(void 0, void 0, void 0, function* () {
if (exports.hasCodeInUrl(location)) {
const user = yield userManager.signinCallback();
setUserData(user);
setIsLoading(false);
onSignIn && onSignIn(user);
return;
}
const user = yield userManager.getUser();
if ((!user || user.expired) && autoSignIn) {
onBeforeSignIn && onBeforeSignIn();
userManager.signinRedirect();
}
else if (isMountedRef.current) {
setUserData(user);
setIsLoading(false);
}
return;
});
(0, react_1.useEffect)(function () {
var getUser = function () { return __awaiter(void 0, void 0, void 0, function () {
var user_1, user;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!(0, exports.hasCodeInUrl)(location)) return [3, 2];
return [4, userManager.signinCallback()];
case 1:
user_1 = _a.sent();
setUserData(user_1);
setIsLoading(false);
onSignIn && onSignIn(user_1);
return [2];
case 2: return [4, userManager.getUser()];
case 3:
user = _a.sent();
if ((!user || user.expired) && autoSignIn) {
onBeforeSignIn && onBeforeSignIn();
userManager.signinRedirect();
}
else if (isMountedRef.current) {
setUserData(user);
setIsLoading(false);
}
return [2];
}
});
}); };
getUser();
}, [location, userManager, autoSignIn, onBeforeSignIn, onSignIn]);
react_1.useEffect(() => {
const updateUserData = () => __awaiter(void 0, void 0, void 0, function* () {
const user = yield userManager.getUser();
isMountedRef.current && setUserData(user);
});
(0, react_1.useEffect)(function () {
var updateUserData = function () { return __awaiter(void 0, void 0, void 0, function () {
var user;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, userManager.getUser()];
case 1:
user = _a.sent();
isMountedRef.current && setUserData(user);
return [2];
}
});
}); };
userManager.events.addUserLoaded(updateUserData);
return () => userManager.events.removeUserLoaded(updateUserData);
return function () { return userManager.events.removeUserLoaded(updateUserData); };
}, [userManager]);
return (react_1.default.createElement(exports.AuthContext.Provider, { value: {
signIn: (args) => __awaiter(void 0, void 0, void 0, function* () {
yield userManager.signinRedirect(args);
}),
signInPopup: () => __awaiter(void 0, void 0, void 0, function* () {
yield signInPopupHooks();
}),
signOut: () => __awaiter(void 0, void 0, void 0, function* () {
yield userManager.removeUser();
yield signOutHooks();
}),
signOutRedirect: (args) => __awaiter(void 0, void 0, void 0, function* () {
yield userManager.signoutRedirect(args);
yield signOutHooks();
}),
userManager,
userData,
isLoading,
signIn: function (args) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, userManager.signinRedirect(args)];
case 1:
_a.sent();
return [2];
}
});
}); },
signInPopup: function () { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, signInPopupHooks()];
case 1:
_a.sent();
return [2];
}
});
}); },
signOut: function () { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, userManager.removeUser()];
case 1:
_a.sent();
return [4, signOutHooks()];
case 2:
_a.sent();
return [2];
}
});
}); },
signOutRedirect: function (args) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, userManager.signoutRedirect(args)];
case 1:
_a.sent();
return [4, signOutHooks()];
case 2:
_a.sent();
return [2];
}
});
}); },
userManager: userManager,
userData: userData,
isLoading: isLoading,
} }, children));
};
exports.AuthProvider = AuthProvider;

@@ -1,2 +0,2 @@

import { UserManager, User } from 'oidc-client';
import { UserManager, User, PopupWindowFeatures } from 'oidc-client-ts';
export interface Location {

@@ -23,3 +23,3 @@ search: string;

loadUserInfo?: boolean;
popupWindowFeatures?: string;
popupWindowFeatures?: PopupWindowFeatures;
popupRedirectUri?: string;

@@ -26,0 +26,0 @@ popupWindowTarget?: string;

@@ -5,2 +5,2 @@ export * from './useAuth';

export * from './AuthContextInterface';
export { User, UserManager, Log } from 'oidc-client';
export { User, UserManager, Log } from 'oidc-client-ts';
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {

@@ -10,5 +14,6 @@ if (k2 === undefined) k2 = k;

var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Log = exports.UserManager = exports.User = void 0;
__exportStar(require("./useAuth"), exports);

@@ -18,5 +23,5 @@ __exportStar(require("./withAuth"), exports);

__exportStar(require("./AuthContextInterface"), exports);
var oidc_client_1 = require("oidc-client");
Object.defineProperty(exports, "User", { enumerable: true, get: function () { return oidc_client_1.User; } });
Object.defineProperty(exports, "UserManager", { enumerable: true, get: function () { return oidc_client_1.UserManager; } });
Object.defineProperty(exports, "Log", { enumerable: true, get: function () { return oidc_client_1.Log; } });
var oidc_client_ts_1 = require("oidc-client-ts");
Object.defineProperty(exports, "User", { enumerable: true, get: function () { return oidc_client_ts_1.User; } });
Object.defineProperty(exports, "UserManager", { enumerable: true, get: function () { return oidc_client_ts_1.UserManager; } });
Object.defineProperty(exports, "Log", { enumerable: true, get: function () { return oidc_client_ts_1.Log; } });
import { AuthContextProps } from './AuthContextInterface';
export declare const useAuth: (ssr?: boolean | undefined) => AuthContextProps;
export declare const useAuth: () => AuthContextProps;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.useAuth = void 0;
const react_1 = require("react");
const AuthContext_1 = require("./AuthContext");
exports.useAuth = (ssr) => {
const context = react_1.useContext(AuthContext_1.AuthContext);
if (!ssr && context === AuthContext_1.defaultAuthContext) {
var react_1 = require("react");
var AuthContext_1 = require("./AuthContext");
var useAuth = function () {
var context = (0, react_1.useContext)(AuthContext_1.AuthContext);
if (!context) {
throw new Error('AuthProvider context is undefined, please verify you are calling useAuth() as child of a <AuthProvider> component.');

@@ -13,1 +13,2 @@ }

};
exports.useAuth = useAuth;
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -7,9 +18,9 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

exports.withAuth = void 0;
const useAuth_1 = require("./useAuth");
const react_1 = __importDefault(require("react"));
var useAuth_1 = require("./useAuth");
var react_1 = __importDefault(require("react"));
function withAuth(Component) {
const displayName = `withAuth(${Component.displayName || Component.name})`;
const C = (props) => {
const auth = useAuth_1.useAuth();
return react_1.default.createElement(Component, Object.assign({}, props, auth));
var displayName = "withAuth(".concat(Component.displayName || Component.name, ")");
var C = function (props) {
var auth = (0, useAuth_1.useAuth)();
return react_1.default.createElement(Component, __assign({}, props, auth));
};

@@ -16,0 +27,0 @@ C.displayName = displayName;

@@ -6,2 +6,33 @@ # Changelog

## [2.0.0](https://github.com/bjerkio/oidc-react/compare/v1.5.1...v2.0.0) (2022-07-25)
### ⚠ BREAKING CHANGES
* replace oidc-client-js with oidc-client-ts (#860)
* migrate to react 18 (#827)
### Features
* create ES5 output for IE11 compatibility. ([#696](https://github.com/bjerkio/oidc-react/issues/696)) ([4d9712c](https://github.com/bjerkio/oidc-react/commit/4d9712c1882384cc89311c16a56bc6b091a53b0c))
* migrate to react 18 ([#827](https://github.com/bjerkio/oidc-react/issues/827)) ([28e998a](https://github.com/bjerkio/oidc-react/commit/28e998a1c56c8fd32ef15143ae4d31993f8d22d5))
### Bug Fixes
* initUserManager in AuthContext called every render call ([#764](https://github.com/bjerkio/oidc-react/issues/764)) ([2cef6c7](https://github.com/bjerkio/oidc-react/commit/2cef6c748be19f278ba49900025f92dbd392885e))
* move release-please to after checkout ([9b70ccf](https://github.com/bjerkio/oidc-react/commit/9b70ccf581e8844d63717a17797790a0c0419443))
### Code Refactoring
* replace oidc-client-js with oidc-client-ts ([#860](https://github.com/bjerkio/oidc-react/issues/860)) ([a07bb70](https://github.com/bjerkio/oidc-react/commit/a07bb705d4cd6d4074a055f46b83b2b4053fed1b))
## [1.6.0](https://github.com/bjerkio/oidc-react/compare/v1.5.1...v1.6.0) (2022-07-15)
### Features
* Change dependency from no longer maintained [oidc-client-js](https://github.com/IdentityModel/oidc-client-js) to its official successor [oidc-client-ts](https://github.com/authts/oidc-client-ts)
## [1.5.1](https://github.com/bjerkio/oidc-react/compare/v1.5.0...v1.5.1) (2021-04-11)

@@ -8,0 +39,0 @@

{
"name": "oidc-react",
"version": "1.6.0-alpha",
"version": "2.0.0",
"private": false,
"description": "",
"repository": "github:bjerkio/oidc-react",
"license": "MIT",
"author": "",
"main": "build/src/index.js",

@@ -16,12 +19,26 @@ "files": [

"lint": "eslint . --ext .ts,.tsx",
"generate-docs": "typedoc --out docs src"
"generate-docs": "typedoc --out docs src",
"bundlewatch": "bundlewatch --config .bundlewatch.config.json"
},
"repository": {
"type": "git",
"url": "git+https://github.com/bjerkio/oidc-react.git"
"jest": {
"coveragePathIgnorePatterns": [
"/node_modules/"
],
"coverageThreshold": {
"global": {
"branches": 80,
"functions": 80,
"lines": 80,
"statements": -10
}
},
"preset": "ts-jest",
"testPathIgnorePatterns": [
"/node_modules/",
"/__fixtures__/",
"<rootDir>/build"
]
},
"author": "",
"license": "MIT",
"bugs": {
"url": "https://github.com/bjerkio/oidc-react/issues"
"dependencies": {
"oidc-client-ts": "^2.0.5"
},

@@ -33,6 +50,8 @@ "devDependencies": {

"@types/jest": "^26.0.10",
"@types/node": "^14.14.41",
"@types/react": "^17.0.3",
"@types/node": "^17.0.29",
"@types/react": "^18.0.8",
"@typescript-eslint/eslint-plugin": "^4.2.0",
"@typescript-eslint/parser": "^4.2.0",
"bundlesize": "^0.18.1",
"bundlewatch": "^0.3.2",
"eslint": "^7.9.0",

@@ -47,4 +66,4 @@ "eslint-config-airbnb-base": "^14.1.0",

"jest-cli": "^26.0.1",
"react": "^17.0.0",
"react-dom": "^17.0.0",
"react": "^18.1.0",
"react-dom": "^18.1.0",
"ts-jest": "^25.3.1",

@@ -54,31 +73,8 @@ "ts-node-dev": "^1.0.0-pre.40",

"typedoc-plugin-markdown": "^3.0.3",
"typescript": "^3.5.3"
"typescript": "^4.6.3"
},
"jest": {
"preset": "ts-jest",
"testPathIgnorePatterns": [
"/node_modules/",
"/__fixtures__/",
"<rootDir>/build"
],
"coveragePathIgnorePatterns": [
"/node_modules/"
],
"coverageThreshold": {
"global": {
"branches": 80,
"functions": 80,
"lines": 80,
"statements": -10
}
}
},
"homepage": "https://github.com/bjerkio/oidc-react#readme",
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0",
"react-dom": "^16.8.0 || ^17.0.0"
},
"dependencies": {
"oidc-client": "^1.11.5"
"react": "^16.8.0 || ^18.1.0",
"react-dom": "^16.8.0 || ^18.1.0"
}
}

@@ -19,3 +19,3 @@ # OIDC React

Based on [oidc-client-js](https://github.com/IdentityModel/oidc-client-js).
Based on [oidc-client-ts](https://github.com/authts/oidc-client-ts).

@@ -64,3 +64,3 @@ ## Quickstart

- [Example repository](https://github.com/cobraz/example-react-oidc)
- [oidc-client-js Documentation](https://github.com/IdentityModel/oidc-client-js/wiki)
- [oidc-client-ts Documentation](https://authts.github.io/oidc-client-ts/)

@@ -67,0 +67,0 @@ ## Contribute & Disclaimer

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc