diff --git a/CHANGELOG.md b/CHANGELOG.md index d3492abed..49491a4ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ - [#1607](https://github.com/okta/okta-auth-js/pull/1607) bumps minimum node version to 20 +### Fixes + +- [#1608](https://github.com/okta/okta-auth-js/pull/1608) chore: upgrades `broadcast-channel` and other dependencies + # 7.14.0 ### Features diff --git a/babel.cjs.js b/babel.cjs.js index 621cea038..0fcc583f6 100644 --- a/babel.cjs.js +++ b/babel.cjs.js @@ -13,7 +13,6 @@ module.exports = { ]], 'plugins': [ '@babel/plugin-transform-typescript', - // '@babel/plugin-proposal-class-properties', // https://babeljs.io/docs/en/babel-plugin-transform-runtime#corejs '@babel/plugin-transform-runtime', ['@babel/plugin-transform-modules-commonjs', { diff --git a/package.json b/package.json index cbdecef64..491ae940f 100644 --- a/package.json +++ b/package.json @@ -164,7 +164,7 @@ "@peculiar/webcrypto": "^1.4.0", "Base64": "1.1.0", "atob": "^2.1.2", - "broadcast-channel": "~5.3.0", + "broadcast-channel": "~7.1.0", "btoa": "^1.2.1", "core-js": "^3.39.0", "cross-fetch": "^3.1.5", @@ -179,14 +179,13 @@ "devDependencies": { "@babel/cli": "^7.28.3", "@babel/core": "^7.28.4", - "@babel/plugin-proposal-class-properties": "^7.10.1", "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", "@babel/plugin-transform-modules-commonjs": "^7.27.1", "@babel/plugin-transform-runtime": "^7.28.3", "@babel/plugin-transform-typescript": "^7.28.0", "@babel/preset-env": "^7.28.3", "@babel/preset-typescript": "^7.27.1", - "@okta/okta-signin-widget": "6.0.0", + "@okta/okta-signin-widget": "^7.35.2", "@rollup/plugin-alias": "^3.1.8", "@rollup/plugin-babel": "^5.3.0", "@rollup/plugin-replace": "^3.0.0", @@ -233,7 +232,7 @@ "webpack": "^5.78.0", "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^4.10.0", - "webpack-dev-server": "^4.9.2" + "webpack-dev-server": "^5.2.2" }, "jest-junit": { "outputDirectory": "./build2/reports/unit/", @@ -245,7 +244,12 @@ "**/cacheable-request/http-cache-semantics": "^4.0.0", "**/has-ansi/ansi-regex": "^4.1.1", "**/strip-ansi/ansi-regex": "^3.0.1", - "**/download/got": "^11.8.5" + "**/download/got": "^11.8.5", + "**/form-data": "^4.0.4", + "**/tar-fs": "^3.1.1", + "**/@okta/okta-sdk-nodejs/njwt": "^2.0.1", + "**/brace-expansion": "^2.0.2", + "**/tmp": "^0.2.4" }, "workspaces": { "packages": [ diff --git a/samples/generated/express-embedded-auth-with-sdk/package.json b/samples/generated/express-embedded-auth-with-sdk/package.json index f5f4fed5d..1f18a534d 100644 --- a/samples/generated/express-embedded-auth-with-sdk/package.json +++ b/samples/generated/express-embedded-auth-with-sdk/package.json @@ -11,8 +11,8 @@ "dev": "nodemon ./web-server/server.js --watch web-server ../../../build/cjs" }, "dependencies": { - "express": "^4.17.1", - "express-session": "^1.17.1", + "express": "^4.21.2", + "express-session": "^1.18.2", "mustache-express": "^1.3.0", "cors": "^2.8.5", "js-yaml": "^4.1.0", diff --git a/samples/generated/express-embedded-sign-in-widget/package.json b/samples/generated/express-embedded-sign-in-widget/package.json index 2415c3621..5be5f26b9 100644 --- a/samples/generated/express-embedded-sign-in-widget/package.json +++ b/samples/generated/express-embedded-sign-in-widget/package.json @@ -7,18 +7,18 @@ "node": ">=14.0.0" }, "scripts": { - "start": "SIW_VERSION=${SIW_VERSION-7.2.1} node ./web-server/server.js", - "dev": "SIW_VERSION=${SIW_VERSION-7.2.1} nodemon ./web-server/server.js --watch ../../../build/cjs" + "start": "SIW_VERSION=${SIW_VERSION-7.35.2} node ./web-server/server.js", + "dev": "SIW_VERSION=${SIW_VERSION-7.35.2} nodemon ./web-server/server.js --watch ../../../build/cjs" }, "dependencies": { - "express": "^4.17.1", - "express-session": "^1.17.1", + "express": "^4.21.2", + "express-session": "^1.18.2", "mustache-express": "^1.3.0", "cors": "^2.8.5", "js-yaml": "^4.1.0", "dotenv": "^10.0.0", "@okta/okta-auth-js": "*", - "@okta/okta-signin-widget": "^7.2.1" + "@okta/okta-signin-widget": "^7.35.2" }, "devDependencies": { "nodemon": "^2.0.19", diff --git a/samples/generated/react-embedded-auth-with-sdk/package.json b/samples/generated/react-embedded-auth-with-sdk/package.json index e24ad1d6d..58d4d8e48 100644 --- a/samples/generated/react-embedded-auth-with-sdk/package.json +++ b/samples/generated/react-embedded-auth-with-sdk/package.json @@ -15,7 +15,7 @@ "react-router-dom": "^5.2.0", "@okta/okta-react": "^6.4.3", "@okta/odyssey-react": "0.10.0", - "@okta/okta-signin-widget": "^7.2.1", + "@okta/okta-signin-widget": "^7.35.2", "@okta/okta-auth-js": "*" }, "devDependencies": { diff --git a/samples/generated/webpack-spa/package.json b/samples/generated/webpack-spa/package.json index 4b8956777..00210cfc5 100644 --- a/samples/generated/webpack-spa/package.json +++ b/samples/generated/webpack-spa/package.json @@ -11,18 +11,18 @@ }, "dependencies": { "@okta/okta-auth-js": "*", - "@okta/okta-signin-widget": "^7.2.1" + "@okta/okta-signin-widget": "^7.35.2" }, "devDependencies": { - "@babel/core": "^7.8.0", - "@babel/plugin-transform-runtime": "^7.8.3", - "@babel/preset-env": "^7.8.2", + "@babel/core": "^7.28.4", + "@babel/plugin-transform-runtime": "^7.28.3", + "@babel/preset-env": "^7.28.3", "babel-loader": "^9.1.2", "express": "^4.17.1", "source-map-loader": "^4.0.1", "webpack": "^5.78.0", - "webpack-cli": "^4.10.0", + "webpack-cli": "^5.1.4", "webpack-dev-middleware": "^3.7.2", - "webpack-dev-server": "^4.9.2" + "webpack-dev-server": "^5.2.2" } } diff --git a/samples/generated/webpack-spa/src/index.js b/samples/generated/webpack-spa/src/index.js index 48932f7f8..65173298d 100644 --- a/samples/generated/webpack-spa/src/index.js +++ b/samples/generated/webpack-spa/src/index.js @@ -45,7 +45,7 @@ var config = { clientId: '', scopes: ['openid','email','offline_access'], storage: 'sessionStorage', - useInteractionCodeFlow: true, + useClassicEngine: false, requireUserSession: 'true', authMethod: 'form', startService: false, @@ -76,7 +76,7 @@ function loadConfig() { var startService; var requireUserSession; var scopes; - var useInteractionCodeFlow; + var useClassicEngine; var useDynamicForm; var idps; @@ -97,7 +97,7 @@ function loadConfig() { startService = state.startService; requireUserSession = state.requireUserSession; scopes = state.scopes; - useInteractionCodeFlow = state.useInteractionCodeFlow; + useClassicEngine = state.useClassicEngine; useDynamicForm = state.useDynamicForm; config.uniq = state.uniq; idps = state.idps; @@ -112,7 +112,7 @@ function loadConfig() { requireUserSession = url.searchParams.get('requireUserSession') ? url.searchParams.get('requireUserSession') === 'true' : config.requireUserSession; scopes = url.searchParams.get('scopes') ? url.searchParams.get('scopes').split(' ') : config.scopes; - useInteractionCodeFlow = url.searchParams.get('useInteractionCodeFlow') === 'true' || config.useInteractionCodeFlow; + useClassicEngine = url.searchParams.get('useClassicEngine') === 'true' || config.useClassicEngine; useDynamicForm = url.searchParams.get('useDynamicForm') === 'true' || config.useDynamicForm; idps = url.searchParams.get('idps') || config.idps; } @@ -125,7 +125,7 @@ function loadConfig() { authMethod, startService, scopes: scopes.join(' '), - useInteractionCodeFlow, + useClassicEngine, useDynamicForm, idps, }).map(([k, v]) => `${k}=${encodeURIComponent(v)}`).join('&'); @@ -139,7 +139,7 @@ function loadConfig() { authMethod, startService, scopes, - useInteractionCodeFlow, + useClassicEngine, useDynamicForm, idps, }; @@ -193,10 +193,10 @@ function showForm() { document.querySelector(`#storage [value="${config.storage || ''}"]`).selected = true; } catch (e) { showError(e); } - if (config.useInteractionCodeFlow) { - document.getElementById('useInteractionCodeFlow-on').checked = true; + if (config.useClassicEngine) { + document.getElementById('useClassicEngine-on').checked = true; } else { - document.getElementById('useInteractionCodeFlow-off').checked = true; + document.getElementById('useClassicEngine-off').checked = true; } if (config.useDynamicForm) { @@ -589,7 +589,7 @@ function showSigninWidget(options) { baseUrl: config.issuer.split('/oauth2')[0], clientId: config.clientId, redirectUri: config.redirectUri, - useInteractionCodeFlow: config.useInteractionCodeFlow, + useClassicEngine: config.useClassicEngine, state: JSON.stringify(config.state), authParams: { issuer: config.issuer @@ -621,7 +621,7 @@ function showSigninWidget(options) { document.getElementById('authMethod-widget').style.display = 'block'; // show login UI } function resumeTransaction(options) { - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { // Authn if (authClient.tx.exists()) { return authClient.tx.resume() @@ -643,7 +643,7 @@ function showSigninForm(options) { hideNewPasswordForm(); // Authn must use static login form - if (config.useDynamicForm === false || !config.useInteractionCodeFlow) { + if (config.useDynamicForm === false || config.useClassicEngine) { // Is there an existing transaction we can resume? If so, we will be in MFA flow if (resumeTransaction(options)) { return; @@ -670,7 +670,7 @@ function submitStaticSigninForm() { const username = document.querySelector('#static-signin-form input[name=username]').value; const password = document.querySelector('#static-signin-form input[name=password]').value; - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { // Authn return authClient.signIn({ username, password }) .then(handleTransaction) @@ -722,7 +722,7 @@ function submitDynamicSigninForm() { window._submitDynamicSigninForm = bindClick(submitDynamicSigninForm); function handleTransaction(transaction) { - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { // Authn return handleTransactionAuthn(transaction); } @@ -814,7 +814,7 @@ function hideMfa() { function showMfa() { document.getElementById('mfa').style.display = 'block'; - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { return showMfaAuthn(); } @@ -890,7 +890,7 @@ function hideCancelMfa() { } function cancelMfa() { hideMfa(); - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { // https://github.com/okta/okta-auth-js/blob/master/docs/authn.md#cancel return appState.transaction.cancel().finally(resetMfa); } @@ -910,7 +910,7 @@ function hidePrevMfa() { } function prevMfa() { hideMfa(); - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { // End current factor enrollment and return to MFA_ENROLL. // https://github.com/okta/okta-auth-js/blob/master/docs/authn.md#prev return appState.transaction.prev() @@ -932,7 +932,7 @@ function hideSubmitMfa() { document.getElementById('mfa-submit').style.display = 'none'; } function submitMfa() { - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { return submitMfaAuthn(); } @@ -972,7 +972,7 @@ function submitMfaAuthn() { function listMfaFactors() { const transaction = appState.transaction; - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { // Authn return transaction.factors.map(factor => factorName(factor)); } @@ -1021,7 +1021,7 @@ function hideMfaEnrollFactors() { function selectMfaFactorForEnrollment(index) { hideMfaEnroll(); // Authn - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { return selectMfaFactorForEnrollmentAuthn(index); } @@ -1247,7 +1247,7 @@ function hideMfaRequiredFactors() { function selectMfaFactorForVerification(index) { hideMfaRequired(); // Authn - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { return selectMfaFactorForVerificationAuthn(index); } @@ -1275,7 +1275,7 @@ function showMfaChallenge() { showPrevMfa(); // Authn - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { return showMfaChallengeAuthn(); } @@ -1372,7 +1372,7 @@ function submitChallengeAuthenticator() { function showRecoverPassword() { // Copy username from login form to recover password form let username; - if (config.useDynamicForm && config.useInteractionCodeFlow) { + if (config.useDynamicForm && !config.useClassicEngine) { username = document.querySelector('#dynamic-signin-form input[name=username]').value; } else { username = document.querySelector('#static-signin-form input[name=username]').value; @@ -1394,7 +1394,7 @@ function submitRecoverPasswordForm() { hideRecoverPassword(); // Authn - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { // Supported factor types are `SMS`, `EMAIL`, or `CALL`. This must be specified up-front. const factorType = 'email'; return authClient.forgotPassword({ username, factorType }) @@ -1536,7 +1536,7 @@ function submitChallengePhone() { hideMfa(); const passCode = document.querySelector('#mfa-challenge-phone input[name=passcode]').value; - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { // Authn return appState.transaction.verify({ passCode }) .then(handleTransaction) @@ -1604,7 +1604,7 @@ function enrollQuestion() { function getVerifyQuestionText() { // Authn - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { return appState.factor.profile.questionText; } // IDX @@ -1628,7 +1628,7 @@ function submitChallengeQuestion() { const answer = document.querySelector('#mfa-challenge-question input[name=answer]').value; // Authn - if (!config.useInteractionCodeFlow) { + if (config.useClassicEngine) { return appState.factor.verify({ answer }) diff --git a/samples/generated/webpack-spa/webpack.config.js b/samples/generated/webpack-spa/webpack.config.js index 7f7e44b92..c381168e6 100644 --- a/samples/generated/webpack-spa/webpack.config.js +++ b/samples/generated/webpack-spa/webpack.config.js @@ -41,10 +41,17 @@ module.exports = { SIW_DIR ], port: PORT, - onBeforeSetupMiddleware: function(devServer) { + // onBeforeSetupMiddleware: function(devServer) { + // devServer.app.get('/login/callback', redirectToOrigin); + // devServer.app.get('/login', redirectToOrigin); + // devServer.app.get('/profile', redirectToOrigin); + // }, + setupMiddlewares: (middlewares, devServer) => { devServer.app.get('/login/callback', redirectToOrigin); devServer.app.get('/login', redirectToOrigin); devServer.app.get('/profile', redirectToOrigin); + + return middlewares; } }, devtool: 'source-map', diff --git a/samples/templates/webpack-spa/package.json b/samples/templates/webpack-spa/package.json index 4b8d5cd79..a7b8f7796 100644 --- a/samples/templates/webpack-spa/package.json +++ b/samples/templates/webpack-spa/package.json @@ -14,15 +14,15 @@ "@okta/okta-signin-widget": "^{{ siwVersion }}" }, "devDependencies": { - "@babel/core": "^7.8.0", - "@babel/plugin-transform-runtime": "^7.8.3", - "@babel/preset-env": "^7.8.2", + "@babel/core": "^7.28.4", + "@babel/plugin-transform-runtime": "^7.28.3", + "@babel/preset-env": "^7.28.3", "babel-loader": "^9.1.2", "express": "^4.17.1", "source-map-loader": "^4.0.1", "webpack": "^5.78.0", "webpack-cli": "^4.10.0", "webpack-dev-middleware": "^3.7.2", - "webpack-dev-server": "^4.9.2" + "webpack-dev-server": "^5.2.2" } } diff --git a/samples/test/package.json b/samples/test/package.json index 118977d67..9b790f3d9 100644 --- a/samples/test/package.json +++ b/samples/test/package.json @@ -27,21 +27,21 @@ "totp-generator": "0.0.12", "pngjs": "6.0.0", "jsqr": "1.4.0", - "@babel/plugin-transform-async-to-generator": "^7.5.0", - "@wdio/cli": "^8.35.1", - "@wdio/cucumber-framework": "^8.35.0", - "@wdio/globals": "^8.35.1", - "@wdio/jasmine-framework": "^8.35.1", - "@wdio/junit-reporter": "^8.32.4", - "@wdio/local-runner": "^8.35.1", - "@wdio/sauce-service": "^8.35.1", - "@wdio/spec-reporter": "^8.32.4", + "@babel/plugin-transform-async-to-generator": "^7.27.1", + "@wdio/cli": "^8.46.0", + "@wdio/cucumber-framework": "^8.46.0", + "@wdio/globals": "^8.46.0", + "@wdio/jasmine-framework": "^8.46.0", + "@wdio/junit-reporter": "^8.43.0", + "@wdio/local-runner": "^8.46.0", + "@wdio/sauce-service": "^8.46.0", + "@wdio/spec-reporter": "^8.43.0", "ts-node": "^10.9.1", "wait-on": "^8.0.1", - "webdriverio": "^8.35.1", + "webdriverio": "^8.46.0", "junit-report-merger": "^3.0.5" }, "devDependencies": { - "@wdio/types": "^8.32.4" + "@wdio/types": "^8.41.0" } } diff --git a/test/apps/app/package.json b/test/apps/app/package.json index 0087352b8..adb0ddc52 100644 --- a/test/apps/app/package.json +++ b/test/apps/app/package.json @@ -17,9 +17,9 @@ "license": "Apache-2.0", "dependencies": { "@okta/okta-auth-js": "*", - "@babel/core": "^7.8.0", - "@babel/plugin-transform-runtime": "^7.8.3", - "@babel/preset-env": "^7.8.2", + "@babel/core": "^7.28.4", + "@babel/plugin-transform-runtime": "^7.28.3", + "@babel/preset-env": "^7.28.3", "babel-loader": "^9.1.2", "btoa": "^1.2.1", "express": "^4.17.1", @@ -27,16 +27,16 @@ "js-cookie": "2.2.1", "source-map-loader": "^4.0.1", "webpack": "^5.78.0", - "webpack-cli": "^4.10.0", + "webpack-cli": "^5.0.0", "webpack-dev-middleware": "^3.7.2", - "webpack-dev-server": "^4.9.2" + "webpack-dev-server": "^5.2.2" }, "devDependencies": { "@types/js-cookie": "^2.2.6", "typescript": "^4.2.3" }, "peerDependencies": { - "@okta/okta-signin-widget": "^6.0.0" + "@okta/okta-signin-widget": "^7.35.2" }, "resolutions": { "follow-redirects": "^1.14.9" diff --git a/test/apps/app/server/loginMiddleware.js b/test/apps/app/server/loginMiddleware.js index 6e706606d..c9fc885b8 100644 --- a/test/apps/app/server/loginMiddleware.js +++ b/test/apps/app/server/loginMiddleware.js @@ -28,7 +28,7 @@ module.exports = function loginMiddleware(req, res) { const scopes = config.scopes; const responseType = config.responseType; const clientSecret = config.clientSecret; - const useInteractionCodeFlow = config.useInteractionCodeFlow; + const useClassicEngine = config.useClassicEngine; let status = ''; let sessionToken = ''; @@ -47,7 +47,7 @@ module.exports = function loginMiddleware(req, res) { scopes, responseType, clientSecret, - useInteractionCodeFlow + useClassicEngine }); authClient.signIn({ username, password }) diff --git a/test/apps/app/server/renderWidget.js b/test/apps/app/server/renderWidget.js index 12861474d..4d2a93d35 100644 --- a/test/apps/app/server/renderWidget.js +++ b/test/apps/app/server/renderWidget.js @@ -24,7 +24,7 @@ module.exports = function widgetMiddleware(req, res) { const redirectUri = query.redirectUri; const scopes = query.scopes.split(','); const responseType = query.responseType; - const useInteractionCodeFlow = query.useInteractionCodeFlow; + const useClassicEngine = query.useClassicEngine; const clientSecret = query.clientSecret; const authClient = getAuthClient({ @@ -39,7 +39,7 @@ module.exports = function widgetMiddleware(req, res) { redirectUri, scopes, responseType, - useInteractionCodeFlow + useClassicEngine }); console.log('OPTIONS', authClient.options); diff --git a/test/apps/app/src/config.ts b/test/apps/app/src/config.ts index b775ac76e..91885844a 100644 --- a/test/apps/app/src/config.ts +++ b/test/apps/app/src/config.ts @@ -27,7 +27,7 @@ export interface Config extends OktaAuthOptions { idps: string; clientSecret: string; forceRedirect: boolean; - useInteractionCodeFlow: boolean; // widget option + useClassicEngine: boolean; // widget option enableSharedStorage: boolean; // TransactionManager isTokenRenewPage?: boolean; // special lite /renew page to test cross-tab token renew crossTabsCount?: number; @@ -43,7 +43,7 @@ export function getDefaultConfig(): Config { issuer: ISSUER, clientId: CLIENT_ID, redirectUri: REDIRECT_URI, - useInteractionCodeFlow: true, + useClassicEngine: false, responseType: ['token', 'id_token'], scopes: ['openid', 'email', 'offline_access'], pkce: true, @@ -83,7 +83,7 @@ export function getConfigFromUrl(): Config { const siwVersion = url.searchParams.get('siwVersion') || DEFAULT_SIW_VERSION; const siwAuthClient = url.searchParams.get('siwAuthClient') === 'true'; // off by default const idps = url.searchParams.get('idps') || ''; - const useInteractionCodeFlow = url.searchParams.get('useInteractionCodeFlow') === 'true'; // off by default + const useClassicEngine = url.searchParams.get('useClassicEngine') === 'true'; // off by default const forceRedirect = url.searchParams.get('forceRedirect') === 'true'; // off by default const enableSharedStorage = url.searchParams.get('enableSharedStorage') !== 'false'; // on by default const syncStorage = url.searchParams.get('syncStorage') !== 'false'; // on by default @@ -99,7 +99,7 @@ export function getConfigFromUrl(): Config { issuer, clientId, redirectUri, - useInteractionCodeFlow, + useClassicEngine, pkce, dpop, defaultScopes, diff --git a/test/apps/app/src/form.ts b/test/apps/app/src/form.ts index 6acf559ef..5a44f4ec3 100644 --- a/test/apps/app/src/form.ts +++ b/test/apps/app/src/form.ts @@ -33,9 +33,9 @@ const Form = `