@okta/okta-auth-js 6.4.0 → 6.4.3

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.
Files changed (84) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/cjs/OktaAuth.js.map +1 -1
  3. package/cjs/OktaUserAgent.js +2 -2
  4. package/cjs/ServiceManager.js +1 -1
  5. package/cjs/ServiceManager.js.map +1 -1
  6. package/cjs/TransactionManager.js +25 -13
  7. package/cjs/TransactionManager.js.map +1 -1
  8. package/cjs/crypto/node.js +11 -16
  9. package/cjs/crypto/node.js.map +1 -1
  10. package/cjs/errors/AuthApiError.js.map +1 -1
  11. package/cjs/errors/AuthSdkError.js.map +1 -1
  12. package/cjs/idx/authenticate.js.map +1 -1
  13. package/cjs/idx/authenticator/SecurityQuestionEnrollment.js +1 -1
  14. package/cjs/idx/authenticator/SecurityQuestionEnrollment.js.map +1 -1
  15. package/cjs/idx/authenticator/SecurityQuestionVerification.js +12 -1
  16. package/cjs/idx/authenticator/SecurityQuestionVerification.js.map +1 -1
  17. package/cjs/idx/cancel.js.map +1 -1
  18. package/cjs/idx/idxState/v1/generateIdxAction.js +0 -2
  19. package/cjs/idx/idxState/v1/generateIdxAction.js.map +1 -1
  20. package/cjs/idx/interact.js.map +1 -1
  21. package/cjs/idx/introspect.js +1 -1
  22. package/cjs/idx/introspect.js.map +1 -1
  23. package/cjs/idx/proceed.js.map +1 -1
  24. package/cjs/idx/recoverPassword.js.map +1 -1
  25. package/cjs/idx/register.js.map +1 -1
  26. package/cjs/idx/remediate.js +12 -12
  27. package/cjs/idx/remediate.js.map +1 -1
  28. package/cjs/idx/remediators/AuthenticatorVerificationData.js.map +1 -1
  29. package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
  30. package/cjs/idx/remediators/EnrollmentChannelData.js.map +1 -1
  31. package/cjs/idx/remediators/SelectEnrollmentChannel.js.map +1 -1
  32. package/cjs/idx/run.js +33 -4
  33. package/cjs/idx/run.js.map +1 -1
  34. package/cjs/idx/startTransaction.js.map +1 -1
  35. package/cjs/idx/types/api.js +42 -0
  36. package/cjs/idx/types/api.js.map +1 -0
  37. package/cjs/idx/types/idx-js.js.map +1 -1
  38. package/cjs/idx/types/index.js +27 -51
  39. package/cjs/idx/types/index.js.map +1 -1
  40. package/cjs/idx/types/options.js +2 -0
  41. package/cjs/idx/types/options.js.map +1 -0
  42. package/cjs/idx/unlockAccount.js.map +1 -1
  43. package/cjs/oidc/exchangeCodeForTokens.js.map +1 -1
  44. package/cjs/types/Transaction.js.map +1 -1
  45. package/dist/okta-auth-js.min.js +1 -1
  46. package/dist/okta-auth-js.min.js.map +1 -1
  47. package/dist/okta-auth-js.umd.js +1 -1
  48. package/dist/okta-auth-js.umd.js.map +1 -1
  49. package/esm/esm.browser.js +93 -65
  50. package/esm/esm.browser.js.map +1 -1
  51. package/esm/esm.node.mjs +93 -65
  52. package/esm/esm.node.mjs.map +1 -1
  53. package/lib/OktaAuth.d.ts +2 -2
  54. package/lib/TransactionManager.d.ts +4 -3
  55. package/lib/errors/AuthApiError.d.ts +2 -2
  56. package/lib/errors/AuthSdkError.d.ts +2 -2
  57. package/lib/idx/authenticate.d.ts +1 -3
  58. package/lib/idx/authenticator/SecurityQuestionVerification.d.ts +1 -0
  59. package/lib/idx/cancel.d.ts +2 -3
  60. package/lib/idx/emailVerify.d.ts +1 -1
  61. package/lib/idx/idxState/v1/generateIdxAction.d.ts +2 -2
  62. package/lib/idx/interact.d.ts +1 -16
  63. package/lib/idx/introspect.d.ts +1 -7
  64. package/lib/idx/proceed.d.ts +1 -9
  65. package/lib/idx/recoverPassword.d.ts +1 -3
  66. package/lib/idx/register.d.ts +1 -3
  67. package/lib/idx/remediate.d.ts +1 -9
  68. package/lib/idx/remediators/AuthenticatorVerificationData.d.ts +1 -2
  69. package/lib/idx/remediators/Base/Remediator.d.ts +2 -2
  70. package/lib/idx/remediators/EnrollmentChannelData.d.ts +3 -3
  71. package/lib/idx/remediators/SelectEnrollmentChannel.d.ts +3 -3
  72. package/lib/idx/run.d.ts +1 -10
  73. package/lib/idx/startTransaction.d.ts +2 -3
  74. package/lib/idx/types/api.d.ts +98 -0
  75. package/lib/idx/types/idx-js.d.ts +10 -3
  76. package/lib/idx/types/index.d.ts +4 -110
  77. package/lib/idx/types/options.d.ts +44 -0
  78. package/lib/idx/unlockAccount.d.ts +1 -3
  79. package/lib/types/OAuth.d.ts +2 -0
  80. package/lib/types/OktaAuthOptions.d.ts +27 -11
  81. package/lib/types/Storage.d.ts +2 -1
  82. package/lib/types/Transaction.d.ts +8 -28
  83. package/lib/types/api.d.ts +12 -36
  84. package/package.json +4 -3
@@ -3531,7 +3531,7 @@ var ServiceManager = function () {
3531
3531
  key: "start",
3532
3532
  value: function start() {
3533
3533
  if (this.started) {
3534
- this.stop();
3534
+ return;
3535
3535
  }
3536
3536
  if (this.isLeaderRequired()) {
3537
3537
  this.startElector();
@@ -4233,13 +4233,15 @@ var TransactionManager = function () {
4233
4233
  var transactionStorage = this.storageManager.getTransactionStorage();
4234
4234
  var meta = transactionStorage.getStorage();
4235
4235
  transactionStorage.clearStorage();
4236
- this.clearIdxResponse();
4237
4236
  if (this.enableSharedStorage && options.clearSharedStorage !== false) {
4238
4237
  var state = options.state || (meta === null || meta === void 0 ? void 0 : meta.state);
4239
4238
  if (state) {
4240
4239
  clearTransactionFromSharedStorage(this.storageManager, state);
4241
4240
  }
4242
4241
  }
4242
+ if (options.clearIdxResponse !== false) {
4243
+ this.clearIdxResponse();
4244
+ }
4243
4245
  if (!this.legacyWidgetSupport) {
4244
4246
  return;
4245
4247
  }
@@ -4435,9 +4437,7 @@ var TransactionManager = function () {
4435
4437
  }
4436
4438
  }, {
4437
4439
  key: "saveIdxResponse",
4438
- value: function saveIdxResponse(_ref) {
4439
- var rawIdxResponse = _ref.rawIdxResponse,
4440
- requestDidSucceed = _ref.requestDidSucceed;
4440
+ value: function saveIdxResponse(data) {
4441
4441
  if (!this.saveLastResponse) {
4442
4442
  return;
4443
4443
  }
@@ -4445,14 +4445,11 @@ var TransactionManager = function () {
4445
4445
  if (!storage) {
4446
4446
  return;
4447
4447
  }
4448
- storage.setStorage({
4449
- rawIdxResponse: rawIdxResponse,
4450
- requestDidSucceed: requestDidSucceed
4451
- });
4448
+ storage.setStorage(data);
4452
4449
  }
4453
4450
  }, {
4454
4451
  key: "loadIdxResponse",
4455
- value: function loadIdxResponse() {
4452
+ value: function loadIdxResponse(options) {
4456
4453
  if (!this.saveLastResponse) {
4457
4454
  return null;
4458
4455
  }
@@ -4464,6 +4461,16 @@ var TransactionManager = function () {
4464
4461
  if (!storedValue || !isRawIdxResponse(storedValue.rawIdxResponse)) {
4465
4462
  return null;
4466
4463
  }
4464
+ if (options) {
4465
+ var stateHandle = options.stateHandle,
4466
+ interactionHandle = options.interactionHandle;
4467
+ if (stateHandle && storedValue.stateHandle !== stateHandle) {
4468
+ return null;
4469
+ }
4470
+ if (interactionHandle && storedValue.interactionHandle !== interactionHandle) {
4471
+ return null;
4472
+ }
4473
+ }
4467
4474
  return storedValue;
4468
4475
  }
4469
4476
  }, {
@@ -5312,7 +5319,7 @@ function _introspect() {
5312
5319
  switch (_context.prev = _context.next) {
5313
5320
  case 0:
5314
5321
  options = _args.length > 1 && _args[1] !== undefined ? _args[1] : {};
5315
- savedIdxResponse = authClient.transactionManager.loadIdxResponse();
5322
+ savedIdxResponse = authClient.transactionManager.loadIdxResponse(options);
5316
5323
  if (savedIdxResponse) {
5317
5324
  rawIdxResponse = savedIdxResponse.rawIdxResponse;
5318
5325
  requestDidSucceed = savedIdxResponse.requestDidSucceed;
@@ -5824,7 +5831,7 @@ var SecurityQuestionEnrollment = function (_Authenticator) {
5824
5831
  var questionKey = values.questionKey,
5825
5832
  question = values.question,
5826
5833
  answer = values.answer;
5827
- if (!questionKey && !question && !answer) {
5834
+ if (!answer || !questionKey && !question) {
5828
5835
  return;
5829
5836
  }
5830
5837
  return {
@@ -5867,7 +5874,12 @@ var SecurityQuestionVerification = function (_Authenticator) {
5867
5874
  _createClass(SecurityQuestionVerification, [{
5868
5875
  key: "canVerify",
5869
5876
  value: function canVerify(values) {
5870
- return !!values.answer;
5877
+ var credentials = values.credentials;
5878
+ if (credentials && credentials.answer) {
5879
+ return true;
5880
+ }
5881
+ var answer = values.answer;
5882
+ return !!answer;
5871
5883
  }
5872
5884
  }, {
5873
5885
  key: "mapCredentials",
@@ -7319,7 +7331,7 @@ function remediate(_x, _x2, _x3) {
7319
7331
  function _remediate() {
7320
7332
  _remediate = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(idxResponse, values, options) {
7321
7333
  var _context2;
7322
- var _idxResponse, neededToProceed, interactionCode, _options, flow, terminal, messages, remediator, actionFromValues, actionFromOptions, actions, _iterator, _step, _loop, _ret, nextStep, name, data;
7334
+ var _idxResponse, neededToProceed, interactionCode, _options, flow, remediator, actionFromValues, actionFromOptions, actions, _iterator, _step, _loop, _ret, terminal, messages, nextStep, name, data;
7323
7335
  return _regeneratorRuntime.wrap(function _callee$(_context4) {
7324
7336
  while (1) {
7325
7337
  switch (_context4.prev = _context4.next) {
@@ -7334,28 +7346,16 @@ function _remediate() {
7334
7346
  idxResponse: idxResponse
7335
7347
  });
7336
7348
  case 4:
7337
- terminal = isTerminalResponse(idxResponse);
7338
- messages = getMessagesFromResponse(idxResponse);
7339
- if (!terminal) {
7340
- _context4.next = 8;
7341
- break;
7342
- }
7343
- return _context4.abrupt("return", {
7344
- idxResponse: idxResponse,
7345
- terminal: terminal,
7346
- messages: messages
7347
- });
7348
- case 8:
7349
7349
  remediator = getRemediator(neededToProceed, values, options);
7350
7350
  actionFromValues = getActionFromValues(values, idxResponse);
7351
7351
  actionFromOptions = options.actions || [];
7352
7352
  actions = _concatInstanceProperty(_context2 = []).call(_context2, _toConsumableArray(actionFromOptions), _toConsumableArray(actionFromValues && [actionFromValues] || []));
7353
7353
  if (!actions) {
7354
- _context4.next = 32;
7354
+ _context4.next = 28;
7355
7355
  break;
7356
7356
  }
7357
7357
  _iterator = _createForOfIteratorHelper(actions);
7358
- _context4.prev = 14;
7358
+ _context4.prev = 10;
7359
7359
  _loop = _regeneratorRuntime.mark(function _loop() {
7360
7360
  var action, params, valuesWithoutExecutedAction, optionsWithoutExecutedAction, remediationAction;
7361
7361
  return _regeneratorRuntime.wrap(function _loop$(_context3) {
@@ -7442,33 +7442,45 @@ function _remediate() {
7442
7442
  }, _loop, null, [[6, 13], [21, 28]]);
7443
7443
  });
7444
7444
  _iterator.s();
7445
- case 17:
7445
+ case 13:
7446
7446
  if ((_step = _iterator.n()).done) {
7447
- _context4.next = 24;
7447
+ _context4.next = 20;
7448
7448
  break;
7449
7449
  }
7450
- return _context4.delegateYield(_loop(), "t0", 19);
7451
- case 19:
7450
+ return _context4.delegateYield(_loop(), "t0", 15);
7451
+ case 15:
7452
7452
  _ret = _context4.t0;
7453
7453
  if (!(_typeof(_ret) === "object")) {
7454
- _context4.next = 22;
7454
+ _context4.next = 18;
7455
7455
  break;
7456
7456
  }
7457
7457
  return _context4.abrupt("return", _ret.v);
7458
- case 22:
7459
- _context4.next = 17;
7458
+ case 18:
7459
+ _context4.next = 13;
7460
7460
  break;
7461
- case 24:
7462
- _context4.next = 29;
7461
+ case 20:
7462
+ _context4.next = 25;
7463
7463
  break;
7464
- case 26:
7465
- _context4.prev = 26;
7466
- _context4.t1 = _context4["catch"](14);
7464
+ case 22:
7465
+ _context4.prev = 22;
7466
+ _context4.t1 = _context4["catch"](10);
7467
7467
  _iterator.e(_context4.t1);
7468
- case 29:
7469
- _context4.prev = 29;
7468
+ case 25:
7469
+ _context4.prev = 25;
7470
7470
  _iterator.f();
7471
- return _context4.finish(29);
7471
+ return _context4.finish(25);
7472
+ case 28:
7473
+ terminal = isTerminalResponse(idxResponse);
7474
+ messages = getMessagesFromResponse(idxResponse);
7475
+ if (!terminal) {
7476
+ _context4.next = 32;
7477
+ break;
7478
+ }
7479
+ return _context4.abrupt("return", {
7480
+ idxResponse: idxResponse,
7481
+ terminal: terminal,
7482
+ messages: messages
7483
+ });
7472
7484
  case 32:
7473
7485
  if (remediator) {
7474
7486
  _context4.next = 49;
@@ -7542,7 +7554,7 @@ function _remediate() {
7542
7554
  return _context4.stop();
7543
7555
  }
7544
7556
  }
7545
- }, _callee, null, [[14, 26, 29, 32], [35, 43], [54, 64]]);
7557
+ }, _callee, null, [[10, 22, 25, 28], [35, 43], [54, 64]]);
7546
7558
  }));
7547
7559
  return _remediate.apply(this, arguments);
7548
7560
  }
@@ -7831,65 +7843,77 @@ function finalizeData(_x6, _x7) {
7831
7843
  }
7832
7844
  function _finalizeData() {
7833
7845
  _finalizeData = _asyncToGenerator( _regeneratorRuntime.mark(function _callee4(authClient, data) {
7834
- var options, idxResponse, canceled, status, exchangeCodeForTokens, shouldClearTransaction, clearSharedStorage, interactionCode, tokens, enabledFeatures, availableSteps, messages, terminal;
7846
+ var options, idxResponse, canceled, status, exchangeCodeForTokens, shouldSaveResponse, shouldClearTransaction, clearSharedStorage, interactionCode, tokens, enabledFeatures, availableSteps, messages, terminal, hasActions, hasErrors, isTerminalSuccess;
7835
7847
  return _regeneratorRuntime.wrap(function _callee4$(_context4) {
7836
7848
  while (1) {
7837
7849
  switch (_context4.prev = _context4.next) {
7838
7850
  case 0:
7839
7851
  options = data.options, idxResponse = data.idxResponse, canceled = data.canceled, status = data.status;
7840
7852
  exchangeCodeForTokens = options.exchangeCodeForTokens;
7853
+ shouldSaveResponse = false;
7841
7854
  shouldClearTransaction = false;
7842
7855
  clearSharedStorage = true;
7843
7856
  if (idxResponse) {
7857
+ shouldSaveResponse = !!(idxResponse.requestDidSucceed || idxResponse.stepUp);
7844
7858
  enabledFeatures = getEnabledFeatures(idxResponse);
7845
7859
  availableSteps = getAvailableSteps(idxResponse);
7846
7860
  messages = getMessagesFromResponse(idxResponse);
7847
7861
  terminal = isTerminalResponse(idxResponse);
7848
7862
  }
7849
7863
  if (!terminal) {
7850
- _context4.next = 11;
7864
+ _context4.next = 15;
7851
7865
  break;
7852
7866
  }
7853
7867
  status = IdxStatus.TERMINAL;
7854
- shouldClearTransaction = true;
7868
+ hasActions = _Object$keys(idxResponse.actions).length > 0;
7869
+ hasErrors = !!_findInstanceProperty(messages).call(messages, function (msg) {
7870
+ return msg.class === 'ERROR';
7871
+ });
7872
+ isTerminalSuccess = !hasActions && !hasErrors && idxResponse.requestDidSucceed === true;
7873
+ if (isTerminalSuccess) {
7874
+ shouldClearTransaction = true;
7875
+ } else {
7876
+ shouldSaveResponse = shouldSaveResponse && hasActions;
7877
+ }
7855
7878
  clearSharedStorage = false;
7856
- _context4.next = 28;
7879
+ _context4.next = 32;
7857
7880
  break;
7858
- case 11:
7881
+ case 15:
7859
7882
  if (!canceled) {
7860
- _context4.next = 16;
7883
+ _context4.next = 20;
7861
7884
  break;
7862
7885
  }
7863
7886
  status = IdxStatus.CANCELED;
7864
7887
  shouldClearTransaction = true;
7865
- _context4.next = 28;
7888
+ _context4.next = 32;
7866
7889
  break;
7867
- case 16:
7890
+ case 20:
7868
7891
  if (!(idxResponse === null || idxResponse === void 0 ? void 0 : idxResponse.interactionCode)) {
7869
- _context4.next = 28;
7892
+ _context4.next = 32;
7870
7893
  break;
7871
7894
  }
7872
7895
  interactionCode = idxResponse.interactionCode;
7873
7896
  if (!(exchangeCodeForTokens === false)) {
7874
- _context4.next = 23;
7897
+ _context4.next = 27;
7875
7898
  break;
7876
7899
  }
7877
7900
  status = IdxStatus.SUCCESS;
7878
7901
  shouldClearTransaction = false;
7879
- _context4.next = 28;
7902
+ _context4.next = 32;
7880
7903
  break;
7881
- case 23:
7882
- _context4.next = 25;
7904
+ case 27:
7905
+ _context4.next = 29;
7883
7906
  return getTokens(authClient, data);
7884
- case 25:
7907
+ case 29:
7885
7908
  tokens = _context4.sent;
7886
7909
  status = IdxStatus.SUCCESS;
7887
7910
  shouldClearTransaction = true;
7888
- case 28:
7911
+ case 32:
7889
7912
  return _context4.abrupt("return", _Object$assign(_Object$assign({}, data), {
7890
7913
  status: status,
7891
7914
  interactionCode: interactionCode,
7892
7915
  tokens: tokens,
7916
+ shouldSaveResponse: shouldSaveResponse,
7893
7917
  shouldClearTransaction: shouldClearTransaction,
7894
7918
  clearSharedStorage: clearSharedStorage,
7895
7919
  enabledFeatures: enabledFeatures,
@@ -7897,7 +7921,7 @@ function _finalizeData() {
7897
7921
  messages: messages,
7898
7922
  terminal: terminal
7899
7923
  }));
7900
- case 29:
7924
+ case 33:
7901
7925
  case "end":
7902
7926
  return _context4.stop();
7903
7927
  }
@@ -7929,10 +7953,12 @@ function run(_x8) {
7929
7953
  function _run() {
7930
7954
  _run = _asyncToGenerator( _regeneratorRuntime.mark(function _callee5(authClient) {
7931
7955
  var options,
7956
+ _a,
7932
7957
  data,
7933
7958
  _data,
7934
7959
  idxResponse,
7935
7960
  meta,
7961
+ shouldSaveResponse,
7936
7962
  shouldClearTransaction,
7937
7963
  clearSharedStorage,
7938
7964
  status,
@@ -7983,18 +8009,20 @@ function _run() {
7983
8009
  return finalizeData(authClient, data);
7984
8010
  case 17:
7985
8011
  data = _context5.sent;
7986
- _data = data, idxResponse = _data.idxResponse, meta = _data.meta, shouldClearTransaction = _data.shouldClearTransaction, clearSharedStorage = _data.clearSharedStorage, status = _data.status, enabledFeatures = _data.enabledFeatures, availableSteps = _data.availableSteps, tokens = _data.tokens, nextStep = _data.nextStep, messages = _data.messages, error = _data.error, interactionCode = _data.interactionCode;
8012
+ _data = data, idxResponse = _data.idxResponse, meta = _data.meta, shouldSaveResponse = _data.shouldSaveResponse, shouldClearTransaction = _data.shouldClearTransaction, clearSharedStorage = _data.clearSharedStorage, status = _data.status, enabledFeatures = _data.enabledFeatures, availableSteps = _data.availableSteps, tokens = _data.tokens, nextStep = _data.nextStep, messages = _data.messages, error = _data.error, interactionCode = _data.interactionCode;
7987
8013
  if (shouldClearTransaction) {
7988
8014
  authClient.transactionManager.clear({
7989
8015
  clearSharedStorage: clearSharedStorage
7990
8016
  });
7991
8017
  } else {
7992
8018
  saveTransactionMeta(authClient, _Object$assign({}, meta));
7993
- if (idxResponse) {
8019
+ if (shouldSaveResponse) {
7994
8020
  rawIdxResponse = idxResponse.rawIdxState, _requestDidSucceed = idxResponse.requestDidSucceed;
7995
8021
  authClient.transactionManager.saveIdxResponse({
7996
8022
  rawIdxResponse: rawIdxResponse,
7997
- requestDidSucceed: _requestDidSucceed
8023
+ requestDidSucceed: _requestDidSucceed,
8024
+ stateHandle: (_a = idxResponse.context) === null || _a === void 0 ? void 0 : _a.stateHandle,
8025
+ interactionHandle: meta === null || meta === void 0 ? void 0 : meta.interactionHandle
7998
8026
  });
7999
8027
  }
8000
8028
  }
@@ -8486,7 +8514,7 @@ function _unlockAccount() {
8486
8514
  var OktaUserAgent = function () {
8487
8515
  function OktaUserAgent() {
8488
8516
  _classCallCheck(this, OktaUserAgent);
8489
- this.environments = ["okta-auth-js/".concat("6.4.0")];
8517
+ this.environments = ["okta-auth-js/".concat("6.4.3")];
8490
8518
  }
8491
8519
  _createClass(OktaUserAgent, [{
8492
8520
  key: "addEnvironment",
@@ -8504,7 +8532,7 @@ var OktaUserAgent = function () {
8504
8532
  }, {
8505
8533
  key: "getVersion",
8506
8534
  value: function getVersion() {
8507
- return "6.4.0";
8535
+ return "6.4.3";
8508
8536
  }
8509
8537
  }, {
8510
8538
  key: "maybeAddNodeEnvironment",