@okta/okta-auth-js 7.5.0 → 7.6.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.
Files changed (174) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +27 -5
  3. package/cjs/browser/fingerprint.js +1 -2
  4. package/cjs/browser/fingerprint.js.map +1 -1
  5. package/cjs/core/ServiceManager/browser.js +13 -6
  6. package/cjs/core/ServiceManager/browser.js.map +1 -1
  7. package/cjs/core/types/Service.js.map +1 -1
  8. package/cjs/core/types/api.js.map +1 -1
  9. package/cjs/fetch/fetchRequest.js +1 -2
  10. package/cjs/fetch/fetchRequest.js.map +1 -1
  11. package/cjs/http/OktaUserAgent.js +2 -2
  12. package/cjs/http/request.js +11 -5
  13. package/cjs/http/request.js.map +1 -1
  14. package/cjs/idx/IdxTransactionManager.js +1 -1
  15. package/cjs/idx/IdxTransactionManager.js.map +1 -1
  16. package/cjs/idx/authenticator/Authenticator.js.map +1 -1
  17. package/cjs/idx/authenticator/OktaPassword.js +17 -6
  18. package/cjs/idx/authenticator/OktaPassword.js.map +1 -1
  19. package/cjs/idx/authenticator/VerificationCodeAuthenticator.js +1 -2
  20. package/cjs/idx/authenticator/VerificationCodeAuthenticator.js.map +1 -1
  21. package/cjs/idx/authenticator/getAuthenticator.js +3 -4
  22. package/cjs/idx/authenticator/getAuthenticator.js.map +1 -1
  23. package/cjs/idx/idxState/index.js +1 -1
  24. package/cjs/idx/idxState/index.js.map +1 -1
  25. package/cjs/idx/idxState/v1/generateIdxAction.js +2 -2
  26. package/cjs/idx/idxState/v1/generateIdxAction.js.map +1 -1
  27. package/cjs/idx/idxState/v1/idxResponseParser.js +2 -4
  28. package/cjs/idx/idxState/v1/idxResponseParser.js.map +1 -1
  29. package/cjs/idx/idxState/v1/makeIdxState.js +1 -2
  30. package/cjs/idx/idxState/v1/makeIdxState.js.map +1 -1
  31. package/cjs/idx/interact.js +1 -2
  32. package/cjs/idx/interact.js.map +1 -1
  33. package/cjs/idx/poll.js +3 -5
  34. package/cjs/idx/poll.js.map +1 -1
  35. package/cjs/idx/proceed.js +1 -1
  36. package/cjs/idx/proceed.js.map +1 -1
  37. package/cjs/idx/remediators/Base/AuthenticatorData.js +1 -1
  38. package/cjs/idx/remediators/Base/AuthenticatorData.js.map +1 -1
  39. package/cjs/idx/remediators/Base/Remediator.js +5 -7
  40. package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
  41. package/cjs/idx/remediators/Base/SelectAuthenticator.js +3 -4
  42. package/cjs/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
  43. package/cjs/idx/remediators/Base/VerifyAuthenticator.js +1 -2
  44. package/cjs/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
  45. package/cjs/idx/remediators/EnrollPoll.js +1 -1
  46. package/cjs/idx/remediators/EnrollPoll.js.map +1 -1
  47. package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js +2 -3
  48. package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js.map +1 -1
  49. package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js +2 -3
  50. package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js.map +1 -1
  51. package/cjs/idx/remediators/SelectEnrollmentChannel.js +1 -2
  52. package/cjs/idx/remediators/SelectEnrollmentChannel.js.map +1 -1
  53. package/cjs/idx/remediators/util.js +2 -4
  54. package/cjs/idx/remediators/util.js.map +1 -1
  55. package/cjs/idx/run.js +6 -10
  56. package/cjs/idx/run.js.map +1 -1
  57. package/cjs/idx/transactionMeta.js +1 -1
  58. package/cjs/idx/transactionMeta.js.map +1 -1
  59. package/cjs/idx/types/idx-js.js.map +1 -1
  60. package/cjs/idx/util.js +3 -6
  61. package/cjs/idx/util.js.map +1 -1
  62. package/cjs/myaccount/emailApi.js +1 -1
  63. package/cjs/myaccount/emailApi.js.map +1 -1
  64. package/cjs/myaccount/passwordApi.js +2 -2
  65. package/cjs/myaccount/passwordApi.js.map +1 -1
  66. package/cjs/myaccount/phoneApi.js +1 -1
  67. package/cjs/myaccount/phoneApi.js.map +1 -1
  68. package/cjs/myaccount/profileApi.js +2 -2
  69. package/cjs/myaccount/profileApi.js.map +1 -1
  70. package/cjs/myaccount/request.js +1 -1
  71. package/cjs/myaccount/request.js.map +1 -1
  72. package/cjs/oidc/TokenManager.js +18 -3
  73. package/cjs/oidc/TokenManager.js.map +1 -1
  74. package/cjs/oidc/TransactionManager.js +1 -1
  75. package/cjs/oidc/TransactionManager.js.map +1 -1
  76. package/cjs/oidc/getToken.js +1 -2
  77. package/cjs/oidc/getToken.js.map +1 -1
  78. package/cjs/oidc/introspect.js +3 -5
  79. package/cjs/oidc/introspect.js.map +1 -1
  80. package/cjs/oidc/mixin/index.js +18 -3
  81. package/cjs/oidc/mixin/index.js.map +1 -1
  82. package/cjs/oidc/options/OAuthOptionsConstructor.js +1 -1
  83. package/cjs/oidc/options/OAuthOptionsConstructor.js.map +1 -1
  84. package/cjs/oidc/renewTokens.js +1 -2
  85. package/cjs/oidc/renewTokens.js.map +1 -1
  86. package/cjs/oidc/types/api.js.map +1 -1
  87. package/cjs/oidc/util/errors.js +2 -2
  88. package/cjs/oidc/util/errors.js.map +1 -1
  89. package/cjs/oidc/util/validateClaims.js +1 -1
  90. package/cjs/oidc/util/validateClaims.js.map +1 -1
  91. package/cjs/oidc/verifyToken.js +1 -1
  92. package/cjs/oidc/verifyToken.js.map +1 -1
  93. package/cjs/services/LeaderElectionService.js +3 -6
  94. package/cjs/services/LeaderElectionService.js.map +1 -1
  95. package/cjs/services/RenewOnTabActivationService.js +64 -0
  96. package/cjs/services/RenewOnTabActivationService.js.map +1 -0
  97. package/cjs/services/SyncStorageService.js +6 -11
  98. package/cjs/services/SyncStorageService.js.map +1 -1
  99. package/cjs/services/index.js +11 -0
  100. package/cjs/services/index.js.map +1 -1
  101. package/dist/okta-auth-js.authn.min.analyzer.html +2 -2
  102. package/dist/okta-auth-js.authn.min.js +1 -1
  103. package/dist/okta-auth-js.authn.min.js.map +1 -1
  104. package/dist/okta-auth-js.core.min.analyzer.html +2 -2
  105. package/dist/okta-auth-js.core.min.js +1 -1
  106. package/dist/okta-auth-js.core.min.js.map +1 -1
  107. package/dist/okta-auth-js.idx.min.analyzer.html +2 -2
  108. package/dist/okta-auth-js.idx.min.js +1 -1
  109. package/dist/okta-auth-js.idx.min.js.map +1 -1
  110. package/dist/okta-auth-js.min.analyzer.html +2 -2
  111. package/dist/okta-auth-js.min.js +1 -1
  112. package/dist/okta-auth-js.min.js.map +1 -1
  113. package/dist/okta-auth-js.myaccount.min.analyzer.html +2 -2
  114. package/dist/okta-auth-js.myaccount.min.js +1 -1
  115. package/dist/okta-auth-js.myaccount.min.js.map +1 -1
  116. package/esm/browser/core/ServiceManager/browser.js +9 -2
  117. package/esm/browser/core/ServiceManager/browser.js.map +1 -1
  118. package/esm/browser/http/OktaUserAgent.js +2 -2
  119. package/esm/browser/http/request.js +7 -1
  120. package/esm/browser/http/request.js.map +1 -1
  121. package/esm/browser/idx/authenticator/Authenticator.js.map +1 -1
  122. package/esm/browser/idx/authenticator/OktaPassword.js +17 -4
  123. package/esm/browser/idx/authenticator/OktaPassword.js.map +1 -1
  124. package/esm/browser/idx/types/idx-js.js.map +1 -1
  125. package/esm/browser/oidc/TokenManager.js +12 -1
  126. package/esm/browser/oidc/TokenManager.js.map +1 -1
  127. package/esm/browser/oidc/introspect.js +1 -1
  128. package/esm/browser/oidc/introspect.js.map +1 -1
  129. package/esm/browser/oidc/mixin/index.js +16 -0
  130. package/esm/browser/oidc/mixin/index.js.map +1 -1
  131. package/esm/browser/oidc/options/OAuthOptionsConstructor.js +1 -1
  132. package/esm/browser/oidc/options/OAuthOptionsConstructor.js.map +1 -1
  133. package/esm/browser/oidc/util/validateClaims.js +2 -1
  134. package/esm/browser/oidc/util/validateClaims.js.map +1 -1
  135. package/esm/browser/package.json +1 -1
  136. package/esm/browser/services/RenewOnTabActivationService.js +67 -0
  137. package/esm/browser/services/RenewOnTabActivationService.js.map +1 -0
  138. package/esm/node/http/OktaUserAgent.js +2 -2
  139. package/esm/node/http/request.js +7 -1
  140. package/esm/node/http/request.js.map +1 -1
  141. package/esm/node/idx/authenticator/Authenticator.js.map +1 -1
  142. package/esm/node/idx/authenticator/OktaPassword.js +17 -4
  143. package/esm/node/idx/authenticator/OktaPassword.js.map +1 -1
  144. package/esm/node/idx/types/idx-js.js.map +1 -1
  145. package/esm/node/oidc/TokenManager.js +12 -1
  146. package/esm/node/oidc/TokenManager.js.map +1 -1
  147. package/esm/node/oidc/introspect.js +1 -1
  148. package/esm/node/oidc/introspect.js.map +1 -1
  149. package/esm/node/oidc/mixin/index.js +16 -0
  150. package/esm/node/oidc/mixin/index.js.map +1 -1
  151. package/esm/node/oidc/options/OAuthOptionsConstructor.js +1 -1
  152. package/esm/node/oidc/options/OAuthOptionsConstructor.js.map +1 -1
  153. package/esm/node/oidc/util/validateClaims.js +2 -1
  154. package/esm/node/oidc/util/validateClaims.js.map +1 -1
  155. package/esm/node/package.json +1 -1
  156. package/package.json +4 -6
  157. package/types/lib/core/types/Service.d.ts +7 -1
  158. package/types/lib/core/types/api.d.ts +1 -0
  159. package/types/lib/idx/authenticator/Authenticator.d.ts +1 -1
  160. package/types/lib/idx/authenticator/OktaPassword.d.ts +2 -1
  161. package/types/lib/idx/types/idx-js.d.ts +1 -0
  162. package/types/lib/oidc/types/api.d.ts +1 -0
  163. package/types/lib/services/RenewOnTabActivationService.d.ts +16 -0
  164. package/types/lib/services/index.d.ts +1 -0
  165. package/umd/authn.js +1 -1
  166. package/umd/authn.js.map +1 -1
  167. package/umd/core.js +1 -1
  168. package/umd/core.js.map +1 -1
  169. package/umd/default.js +1 -1
  170. package/umd/default.js.map +1 -1
  171. package/umd/idx.js +1 -1
  172. package/umd/idx.js.map +1 -1
  173. package/umd/myaccount.js +1 -1
  174. package/umd/myaccount.js.map +1 -1
@@ -11,14 +11,13 @@ var _WebauthnVerification = require("./WebauthnVerification");
11
11
  var _types = require("../types");
12
12
  /* eslint complexity:[0,8] */
13
13
  function getAuthenticator(remediation) {
14
- var _value$contextualData, _value$contextualData2;
15
14
  const relatesTo = remediation.relatesTo;
16
- const value = (relatesTo === null || relatesTo === void 0 ? void 0 : relatesTo.value) || {};
15
+ const value = relatesTo?.value || {};
17
16
  switch (value.key) {
18
17
  case _types.AuthenticatorKey.OKTA_PASSWORD:
19
18
  return new _OktaPassword.OktaPassword(value);
20
19
  case _types.AuthenticatorKey.SECURITY_QUESTION:
21
- if ((_value$contextualData = value.contextualData) !== null && _value$contextualData !== void 0 && _value$contextualData.enrolledQuestion) {
20
+ if (value.contextualData?.enrolledQuestion) {
22
21
  return new _SecurityQuestionVerification.SecurityQuestionVerification(value);
23
22
  } else {
24
23
  return new _SecurityQuestionEnrollment.SecurityQuestionEnrollment(value);
@@ -26,7 +25,7 @@ function getAuthenticator(remediation) {
26
25
  case _types.AuthenticatorKey.OKTA_VERIFY:
27
26
  return new _OktaVerifyTotp.OktaVerifyTotp(value);
28
27
  case _types.AuthenticatorKey.WEBAUTHN:
29
- if ((_value$contextualData2 = value.contextualData) !== null && _value$contextualData2 !== void 0 && _value$contextualData2.challengeData) {
28
+ if (value.contextualData?.challengeData) {
30
29
  return new _WebauthnVerification.WebauthnVerification(value);
31
30
  } else {
32
31
  return new _WebauthnEnrollment.WebauthnEnrollment(value);
@@ -1 +1 @@
1
- {"version":3,"file":"getAuthenticator.js","names":["getAuthenticator","remediation","relatesTo","value","key","AuthenticatorKey","OKTA_PASSWORD","OktaPassword","SECURITY_QUESTION","contextualData","enrolledQuestion","SecurityQuestionVerification","SecurityQuestionEnrollment","OKTA_VERIFY","OktaVerifyTotp","WEBAUTHN","challengeData","WebauthnVerification","WebauthnEnrollment","VerificationCodeAuthenticator"],"sources":["../../../../lib/idx/authenticator/getAuthenticator.ts"],"sourcesContent":["import { OktaVerifyTotp } from './OktaVerifyTotp';\nimport { Authenticator } from './Authenticator';\nimport { VerificationCodeAuthenticator } from './VerificationCodeAuthenticator';\nimport { OktaPassword } from './OktaPassword';\nimport { SecurityQuestionEnrollment } from './SecurityQuestionEnrollment';\nimport { SecurityQuestionVerification } from './SecurityQuestionVerification';\nimport { WebauthnEnrollment } from './WebauthnEnrollment';\nimport { WebauthnVerification } from './WebauthnVerification';\nimport { IdxAuthenticator, IdxRemediation } from '../types/idx-js';\nimport { AuthenticatorKey } from '../types';\n\n/* eslint complexity:[0,8] */\nexport function getAuthenticator(remediation: IdxRemediation): Authenticator<any> {\n const relatesTo = remediation.relatesTo;\n const value = relatesTo?.value || {} as IdxAuthenticator;\n switch (value.key) {\n case AuthenticatorKey.OKTA_PASSWORD:\n return new OktaPassword(value);\n case AuthenticatorKey.SECURITY_QUESTION:\n if (value.contextualData?.enrolledQuestion) {\n return new SecurityQuestionVerification(value);\n } else {\n return new SecurityQuestionEnrollment(value);\n }\n case AuthenticatorKey.OKTA_VERIFY:\n return new OktaVerifyTotp(value);\n case AuthenticatorKey.WEBAUTHN:\n if (value.contextualData?.challengeData) {\n return new WebauthnVerification(value);\n } else {\n return new WebauthnEnrollment(value);\n }\n default:\n return new VerificationCodeAuthenticator(value);\n }\n}\n"],"mappings":";;;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACO,SAASA,gBAAgB,CAACC,WAA2B,EAAsB;EAAA;EAChF,MAAMC,SAAS,GAAGD,WAAW,CAACC,SAAS;EACvC,MAAMC,KAAK,GAAG,CAAAD,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEC,KAAK,KAAI,CAAC,CAAqB;EACxD,QAAQA,KAAK,CAACC,GAAG;IACf,KAAKC,uBAAgB,CAACC,aAAa;MACjC,OAAO,IAAIC,0BAAY,CAACJ,KAAK,CAAC;IAChC,KAAKE,uBAAgB,CAACG,iBAAiB;MACrC,6BAAIL,KAAK,CAACM,cAAc,kDAApB,sBAAsBC,gBAAgB,EAAE;QAC1C,OAAO,IAAIC,0DAA4B,CAACR,KAAK,CAAC;MAChD,CAAC,MAAM;QACL,OAAO,IAAIS,sDAA0B,CAACT,KAAK,CAAC;MAC9C;IACF,KAAKE,uBAAgB,CAACQ,WAAW;MAC/B,OAAO,IAAIC,8BAAc,CAACX,KAAK,CAAC;IAClC,KAAKE,uBAAgB,CAACU,QAAQ;MAC5B,8BAAIZ,KAAK,CAACM,cAAc,mDAApB,uBAAsBO,aAAa,EAAE;QACvC,OAAO,IAAIC,0CAAoB,CAACd,KAAK,CAAC;MACxC,CAAC,MAAM;QACL,OAAO,IAAIe,sCAAkB,CAACf,KAAK,CAAC;MACtC;IACF;MACE,OAAO,IAAIgB,4DAA6B,CAAChB,KAAK,CAAC;EAAC;AAEtD"}
1
+ {"version":3,"file":"getAuthenticator.js","names":["getAuthenticator","remediation","relatesTo","value","key","AuthenticatorKey","OKTA_PASSWORD","OktaPassword","SECURITY_QUESTION","contextualData","enrolledQuestion","SecurityQuestionVerification","SecurityQuestionEnrollment","OKTA_VERIFY","OktaVerifyTotp","WEBAUTHN","challengeData","WebauthnVerification","WebauthnEnrollment","VerificationCodeAuthenticator"],"sources":["../../../../lib/idx/authenticator/getAuthenticator.ts"],"sourcesContent":["import { OktaVerifyTotp } from './OktaVerifyTotp';\nimport { Authenticator } from './Authenticator';\nimport { VerificationCodeAuthenticator } from './VerificationCodeAuthenticator';\nimport { OktaPassword } from './OktaPassword';\nimport { SecurityQuestionEnrollment } from './SecurityQuestionEnrollment';\nimport { SecurityQuestionVerification } from './SecurityQuestionVerification';\nimport { WebauthnEnrollment } from './WebauthnEnrollment';\nimport { WebauthnVerification } from './WebauthnVerification';\nimport { IdxAuthenticator, IdxRemediation } from '../types/idx-js';\nimport { AuthenticatorKey } from '../types';\n\n/* eslint complexity:[0,8] */\nexport function getAuthenticator(remediation: IdxRemediation): Authenticator<any> {\n const relatesTo = remediation.relatesTo;\n const value = relatesTo?.value || {} as IdxAuthenticator;\n switch (value.key) {\n case AuthenticatorKey.OKTA_PASSWORD:\n return new OktaPassword(value);\n case AuthenticatorKey.SECURITY_QUESTION:\n if (value.contextualData?.enrolledQuestion) {\n return new SecurityQuestionVerification(value);\n } else {\n return new SecurityQuestionEnrollment(value);\n }\n case AuthenticatorKey.OKTA_VERIFY:\n return new OktaVerifyTotp(value);\n case AuthenticatorKey.WEBAUTHN:\n if (value.contextualData?.challengeData) {\n return new WebauthnVerification(value);\n } else {\n return new WebauthnEnrollment(value);\n }\n default:\n return new VerificationCodeAuthenticator(value);\n }\n}\n"],"mappings":";;;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACO,SAASA,gBAAgB,CAACC,WAA2B,EAAsB;EAChF,MAAMC,SAAS,GAAGD,WAAW,CAACC,SAAS;EACvC,MAAMC,KAAK,GAAGD,SAAS,EAAEC,KAAK,IAAI,CAAC,CAAqB;EACxD,QAAQA,KAAK,CAACC,GAAG;IACf,KAAKC,uBAAgB,CAACC,aAAa;MACjC,OAAO,IAAIC,0BAAY,CAACJ,KAAK,CAAC;IAChC,KAAKE,uBAAgB,CAACG,iBAAiB;MACrC,IAAIL,KAAK,CAACM,cAAc,EAAEC,gBAAgB,EAAE;QAC1C,OAAO,IAAIC,0DAA4B,CAACR,KAAK,CAAC;MAChD,CAAC,MAAM;QACL,OAAO,IAAIS,sDAA0B,CAACT,KAAK,CAAC;MAC9C;IACF,KAAKE,uBAAgB,CAACQ,WAAW;MAC/B,OAAO,IAAIC,8BAAc,CAACX,KAAK,CAAC;IAClC,KAAKE,uBAAgB,CAACU,QAAQ;MAC5B,IAAIZ,KAAK,CAACM,cAAc,EAAEO,aAAa,EAAE;QACvC,OAAO,IAAIC,0CAAoB,CAACd,KAAK,CAAC;MACxC,CAAC,MAAM;QACL,OAAO,IAAIe,sCAAkB,CAACf,KAAK,CAAC;MACtC;IACF;MACE,OAAO,IAAIgB,4DAA6B,CAAChB,KAAK,CAAC;EAAC;AAEtD"}
@@ -33,7 +33,7 @@ function validateVersionConfig(version) {
33
33
  }
34
34
 
35
35
  function makeIdxState(authClient, rawIdxResponse, toPersist, requestDidSucceed) {
36
- const version = (rawIdxResponse === null || rawIdxResponse === void 0 ? void 0 : rawIdxResponse.version) ?? _constants.IDX_API_VERSION;
36
+ const version = rawIdxResponse?.version ?? _constants.IDX_API_VERSION;
37
37
  validateVersionConfig(version);
38
38
  const {
39
39
  makeIdxState
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["parsersForVersion","version","v1","undefined","Error","validateVersionConfig","cleanVersion","replace","makeIdxState","authClient","rawIdxResponse","toPersist","requestDidSucceed","IDX_API_VERSION"],"sources":["../../../../lib/idx/idxState/index.ts"],"sourcesContent":["import { OktaAuthIdxInterface } from '../types'; // auth-js/types\nimport { IdxResponse, IdxToPersist, RawIdxResponse } from '../types/idx-js'; // idx/types\nimport { IDX_API_VERSION } from '../../constants';\nimport v1 from './v1/parsers';\n\n\nexport const parsersForVersion = function parsersForVersion( version ) {\n switch (version) {\n case '1.0.0':\n return v1;\n case undefined:\n case null:\n throw new Error('Api version is required');\n default:\n throw new Error(`Unknown api version: ${version}. Use an exact semver version.`);\n }\n};\n\nexport function validateVersionConfig(version) {\n if ( !version ) {\n throw new Error('version is required');\n }\n\n const cleanVersion = (version ?? '').replace(/[^0-9a-zA-Z._-]/, '');\n if ( cleanVersion !== version || !version ) {\n throw new Error('invalid version supplied - version is required and uses semver syntax');\n }\n\n parsersForVersion(version); // will throw for invalid version\n}\n\nexport function makeIdxState ( \n authClient: OktaAuthIdxInterface,\n rawIdxResponse: RawIdxResponse,\n toPersist: IdxToPersist,\n requestDidSucceed: boolean,\n): IdxResponse {\n const version = rawIdxResponse?.version ?? IDX_API_VERSION;\n validateVersionConfig(version);\n \n const { makeIdxState } = parsersForVersion(version);\n return makeIdxState(authClient, rawIdxResponse, toPersist, requestDidSucceed);\n}\n"],"mappings":";;;;;;AAEA;AACA;AAHoD;AAC8B;;AAK3E,MAAMA,iBAAiB,GAAG,SAASA,iBAAiB,CAAEC,OAAO,EAAG;EACrE,QAAQA,OAAO;IACb,KAAK,OAAO;MACV,OAAOC,gBAAE;IACX,KAAKC,SAAS;IACd,KAAK,IAAI;MACP,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;IAC5C;MACE,MAAM,IAAIA,KAAK,CAAE,wBAAuBH,OAAQ,iCAAgC,CAAC;EAAC;AAExF,CAAC;AAAC;AAEK,SAASI,qBAAqB,CAACJ,OAAO,EAAE;EAC7C,IAAK,CAACA,OAAO,EAAG;IACd,MAAM,IAAIG,KAAK,CAAC,qBAAqB,CAAC;EACxC;EAEA,MAAME,YAAY,GAAG,CAACL,OAAO,IAAI,EAAE,EAAEM,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;EACnE,IAAKD,YAAY,KAAKL,OAAO,IAAI,CAACA,OAAO,EAAG;IAC1C,MAAM,IAAIG,KAAK,CAAC,uEAAuE,CAAC;EAC1F;EAEAJ,iBAAiB,CAACC,OAAO,CAAC,CAAC,CAAC;AAC9B;;AAEO,SAASO,YAAY,CAC1BC,UAAgC,EAChCC,cAA8B,EAC9BC,SAAuB,EACvBC,iBAA0B,EACb;EACb,MAAMX,OAAO,GAAG,CAAAS,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAET,OAAO,KAAIY,0BAAe;EAC1DR,qBAAqB,CAACJ,OAAO,CAAC;EAE9B,MAAM;IAAEO;EAAa,CAAC,GAAGR,iBAAiB,CAACC,OAAO,CAAC;EACnD,OAAOO,YAAY,CAACC,UAAU,EAAEC,cAAc,EAAEC,SAAS,EAAEC,iBAAiB,CAAC;AAC/E"}
1
+ {"version":3,"file":"index.js","names":["parsersForVersion","version","v1","undefined","Error","validateVersionConfig","cleanVersion","replace","makeIdxState","authClient","rawIdxResponse","toPersist","requestDidSucceed","IDX_API_VERSION"],"sources":["../../../../lib/idx/idxState/index.ts"],"sourcesContent":["import { OktaAuthIdxInterface } from '../types'; // auth-js/types\nimport { IdxResponse, IdxToPersist, RawIdxResponse } from '../types/idx-js'; // idx/types\nimport { IDX_API_VERSION } from '../../constants';\nimport v1 from './v1/parsers';\n\n\nexport const parsersForVersion = function parsersForVersion( version ) {\n switch (version) {\n case '1.0.0':\n return v1;\n case undefined:\n case null:\n throw new Error('Api version is required');\n default:\n throw new Error(`Unknown api version: ${version}. Use an exact semver version.`);\n }\n};\n\nexport function validateVersionConfig(version) {\n if ( !version ) {\n throw new Error('version is required');\n }\n\n const cleanVersion = (version ?? '').replace(/[^0-9a-zA-Z._-]/, '');\n if ( cleanVersion !== version || !version ) {\n throw new Error('invalid version supplied - version is required and uses semver syntax');\n }\n\n parsersForVersion(version); // will throw for invalid version\n}\n\nexport function makeIdxState ( \n authClient: OktaAuthIdxInterface,\n rawIdxResponse: RawIdxResponse,\n toPersist: IdxToPersist,\n requestDidSucceed: boolean,\n): IdxResponse {\n const version = rawIdxResponse?.version ?? IDX_API_VERSION;\n validateVersionConfig(version);\n \n const { makeIdxState } = parsersForVersion(version);\n return makeIdxState(authClient, rawIdxResponse, toPersist, requestDidSucceed);\n}\n"],"mappings":";;;;;;AAEA;AACA;AAHoD;AAC8B;;AAK3E,MAAMA,iBAAiB,GAAG,SAASA,iBAAiB,CAAEC,OAAO,EAAG;EACrE,QAAQA,OAAO;IACb,KAAK,OAAO;MACV,OAAOC,gBAAE;IACX,KAAKC,SAAS;IACd,KAAK,IAAI;MACP,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;IAC5C;MACE,MAAM,IAAIA,KAAK,CAAE,wBAAuBH,OAAQ,iCAAgC,CAAC;EAAC;AAExF,CAAC;AAAC;AAEK,SAASI,qBAAqB,CAACJ,OAAO,EAAE;EAC7C,IAAK,CAACA,OAAO,EAAG;IACd,MAAM,IAAIG,KAAK,CAAC,qBAAqB,CAAC;EACxC;EAEA,MAAME,YAAY,GAAG,CAACL,OAAO,IAAI,EAAE,EAAEM,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;EACnE,IAAKD,YAAY,KAAKL,OAAO,IAAI,CAACA,OAAO,EAAG;IAC1C,MAAM,IAAIG,KAAK,CAAC,uEAAuE,CAAC;EAC1F;EAEAJ,iBAAiB,CAACC,OAAO,CAAC,CAAC,CAAC;AAC9B;;AAEO,SAASO,YAAY,CAC1BC,UAAgC,EAChCC,cAA8B,EAC9BC,SAAuB,EACvBC,iBAA0B,EACb;EACb,MAAMX,OAAO,GAAGS,cAAc,EAAET,OAAO,IAAIY,0BAAe;EAC1DR,qBAAqB,CAACJ,OAAO,CAAC;EAE9B,MAAM;IAAEO;EAAa,CAAC,GAAGR,iBAAiB,CAACC,OAAO,CAAC;EACnD,OAAOO,YAAY,CAACC,UAAU,EAAEC,cAAc,EAAEC,SAAS,EAAEC,iBAAiB,CAAC;AAC/E"}
@@ -42,13 +42,13 @@ const generateDirectFetch = function generateDirectFetch(authClient, {
42
42
  method: actionDefinition.method,
43
43
  headers,
44
44
  args: body,
45
- withCredentials: (toPersist === null || toPersist === void 0 ? void 0 : toPersist.withCredentials) ?? true
45
+ withCredentials: toPersist?.withCredentials ?? true
46
46
  });
47
47
  return authClient.idx.makeIdxResponse({
48
48
  ...response
49
49
  }, toPersist, true);
50
50
  } catch (err) {
51
- if (!(err instanceof _AuthApiError.default) || !(err !== null && err !== void 0 && err.xhr)) {
51
+ if (!(err instanceof _AuthApiError.default) || !err?.xhr) {
52
52
  throw err;
53
53
  }
54
54
  const response = err.xhr;
@@ -1 +1 @@
1
- {"version":3,"file":"generateIdxAction.js","names":["generateDirectFetch","authClient","actionDefinition","defaultParamsForAction","immutableParamsForAction","toPersist","target","href","params","headers","accepts","body","JSON","stringify","response","httpRequest","url","method","args","withCredentials","idx","makeIdxResponse","err","AuthApiError","xhr","payload","responseJSON","parse","responseText","wwwAuthHeader","idxResponse","status","stepUp","generateIdxAction","generator","defaultParams","neededParams","immutableParams","divideActionParamsByMutability","action","name"],"sources":["../../../../../lib/idx/idxState/v1/generateIdxAction.ts"],"sourcesContent":["/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint-disable max-len, complexity */\nimport { httpRequest } from '../../../http';\nimport { OktaAuthIdxInterface } from '../../types'; // auth-js/types\nimport { IdxActionFunction, IdxActionParams, IdxResponse, IdxToPersist } from '../../types/idx-js';\nimport { divideActionParamsByMutability } from './actionParser';\nimport AuthApiError from '../../../errors/AuthApiError';\n\nconst generateDirectFetch = function generateDirectFetch(authClient: OktaAuthIdxInterface, { \n actionDefinition, \n defaultParamsForAction = {}, \n immutableParamsForAction = {}, \n toPersist = {} as IdxToPersist\n}): IdxActionFunction {\n const target = actionDefinition.href;\n return async function(params: IdxActionParams = {}): Promise<IdxResponse> {\n const headers = {\n 'Content-Type': 'application/json',\n 'Accept': actionDefinition.accepts || 'application/ion+json',\n };\n const body = JSON.stringify({\n ...defaultParamsForAction,\n ...params,\n ...immutableParamsForAction\n });\n\n try {\n const response = await httpRequest(authClient, {\n url: target,\n method: actionDefinition.method,\n headers,\n args: body,\n withCredentials: toPersist?.withCredentials ?? true\n });\n\n return authClient.idx.makeIdxResponse({ ...response }, toPersist, true);\n }\n catch (err) {\n if (!(err instanceof AuthApiError) || !err?.xhr) {\n throw err;\n }\n\n const response = err.xhr;\n const payload = response.responseJSON || JSON.parse(response.responseText);\n const wwwAuthHeader = response.headers['WWW-Authenticate'] || response.headers['www-authenticate'];\n\n const idxResponse = authClient.idx.makeIdxResponse({ ...payload }, toPersist, false);\n if (response.status === 401 && wwwAuthHeader === 'Oktadevicejwt realm=\"Okta Device\"') {\n // Okta server responds 401 status code with WWW-Authenticate header and new remediation\n // so that the iOS/MacOS credential SSO extension (Okta Verify) can intercept\n // the response reaches here when Okta Verify is not installed\n // set `stepUp` to true if flow should be continued without showing any errors\n idxResponse.stepUp = true;\n }\n\n return idxResponse;\n }\n };\n};\n\n// TODO: Resolve in M2: Either build the final polling solution or remove this code\n// const generatePollingFetch = function generatePollingFetch( { actionDefinition, defaultParamsForAction = {}, immutableParamsForAction = {} } ) {\n// // TODO: Discussions ongoing about when/how to terminate polling: OKTA-246581\n// const target = actionDefinition.href;\n// return async function(params) {\n// return fetch(target, {\n// method: actionDefinition.method,\n// headers: {\n// 'content-type': actionDefinition.accepts,\n// },\n// body: JSON.stringify({ ...defaultParamsForAction, ...params, ...immutableParamsForAction })\n// })\n// .then( response => response.ok ? response.json() : response.json().then( err => Promise.reject(err)) )\n// .then( idxResponse => makeIdxState(authClient, idxResponse) );\n// };\n// };\n\nconst generateIdxAction = function generateIdxAction( authClient: OktaAuthIdxInterface, actionDefinition, toPersist ): IdxActionFunction {\n // TODO: leaving this here to see where the polling is EXPECTED to drop into the code, but removing any accidental trigger of incomplete code\n // const generator = actionDefinition.refresh ? generatePollingFetch : generateDirectFetch;\n const generator = generateDirectFetch;\n const { defaultParams, neededParams, immutableParams } = divideActionParamsByMutability( actionDefinition );\n\n const action = generator(authClient, {\n actionDefinition,\n defaultParamsForAction: defaultParams[actionDefinition.name],\n immutableParamsForAction: immutableParams[actionDefinition.name],\n toPersist\n });\n action.neededParams = neededParams;\n return action;\n};\n\nexport default generateIdxAction;\n"],"mappings":";;;;AAaA;AAGA;AACA;AAjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAOA,MAAMA,mBAAmB,GAAG,SAASA,mBAAmB,CAACC,UAAgC,EAAE;EACzFC,gBAAgB;EAChBC,sBAAsB,GAAG,CAAC,CAAC;EAC3BC,wBAAwB,GAAG,CAAC,CAAC;EAC7BC,SAAS,GAAG,CAAC;AACf,CAAC,EAAqB;EACpB,MAAMC,MAAM,GAAGJ,gBAAgB,CAACK,IAAI;EACpC,OAAO,gBAAeC,MAAuB,GAAG,CAAC,CAAC,EAAwB;IACxE,MAAMC,OAAO,GAAG;MACd,cAAc,EAAE,kBAAkB;MAClC,QAAQ,EAAEP,gBAAgB,CAACQ,OAAO,IAAI;IACxC,CAAC;IACD,MAAMC,IAAI,GAAGC,IAAI,CAACC,SAAS,CAAC;MAC1B,GAAGV,sBAAsB;MACzB,GAAGK,MAAM;MACT,GAAGJ;IACL,CAAC,CAAC;IAEF,IAAI;MACF,MAAMU,QAAQ,GAAG,MAAM,IAAAC,iBAAW,EAACd,UAAU,EAAE;QAC7Ce,GAAG,EAAEV,MAAM;QACXW,MAAM,EAAEf,gBAAgB,CAACe,MAAM;QAC/BR,OAAO;QACPS,IAAI,EAAEP,IAAI;QACVQ,eAAe,EAAE,CAAAd,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEc,eAAe,KAAI;MACjD,CAAC,CAAC;MAEF,OAAOlB,UAAU,CAACmB,GAAG,CAACC,eAAe,CAAC;QAAE,GAAGP;MAAS,CAAC,EAAET,SAAS,EAAE,IAAI,CAAC;IACzE,CAAC,CACD,OAAOiB,GAAG,EAAE;MACV,IAAI,EAAEA,GAAG,YAAYC,qBAAY,CAAC,IAAI,EAACD,GAAG,aAAHA,GAAG,eAAHA,GAAG,CAAEE,GAAG,GAAE;QAC/C,MAAMF,GAAG;MACX;MAEA,MAAMR,QAAQ,GAAGQ,GAAG,CAACE,GAAG;MACxB,MAAMC,OAAO,GAAGX,QAAQ,CAACY,YAAY,IAAId,IAAI,CAACe,KAAK,CAACb,QAAQ,CAACc,YAAY,CAAC;MAC1E,MAAMC,aAAa,GAAGf,QAAQ,CAACL,OAAO,CAAC,kBAAkB,CAAC,IAAIK,QAAQ,CAACL,OAAO,CAAC,kBAAkB,CAAC;MAElG,MAAMqB,WAAW,GAAG7B,UAAU,CAACmB,GAAG,CAACC,eAAe,CAAC;QAAE,GAAGI;MAAQ,CAAC,EAAEpB,SAAS,EAAE,KAAK,CAAC;MACpF,IAAIS,QAAQ,CAACiB,MAAM,KAAK,GAAG,IAAIF,aAAa,KAAK,mCAAmC,EAAE;QACpF;QACA;QACA;QACA;QACAC,WAAW,CAACE,MAAM,GAAG,IAAI;MAC3B;MAEA,OAAOF,WAAW;IACpB;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMG,iBAAiB,GAAG,SAASA,iBAAiB,CAAEhC,UAAgC,EAAEC,gBAAgB,EAAEG,SAAS,EAAsB;EACvI;EACA;EACA,MAAM6B,SAAS,GAAGlC,mBAAmB;EACrC,MAAM;IAAEmC,aAAa;IAAEC,YAAY;IAAEC;EAAgB,CAAC,GAAG,IAAAC,4CAA8B,EAAEpC,gBAAgB,CAAE;EAE3G,MAAMqC,MAAM,GAAGL,SAAS,CAACjC,UAAU,EAAE;IACnCC,gBAAgB;IAChBC,sBAAsB,EAAEgC,aAAa,CAACjC,gBAAgB,CAACsC,IAAI,CAAC;IAC5DpC,wBAAwB,EAAEiC,eAAe,CAACnC,gBAAgB,CAACsC,IAAI,CAAC;IAChEnC;EACF,CAAC,CAAC;EACFkC,MAAM,CAACH,YAAY,GAAGA,YAAY;EAClC,OAAOG,MAAM;AACf,CAAC;AAAC,eAEaN,iBAAiB;AAAA;AAAA"}
1
+ {"version":3,"file":"generateIdxAction.js","names":["generateDirectFetch","authClient","actionDefinition","defaultParamsForAction","immutableParamsForAction","toPersist","target","href","params","headers","accepts","body","JSON","stringify","response","httpRequest","url","method","args","withCredentials","idx","makeIdxResponse","err","AuthApiError","xhr","payload","responseJSON","parse","responseText","wwwAuthHeader","idxResponse","status","stepUp","generateIdxAction","generator","defaultParams","neededParams","immutableParams","divideActionParamsByMutability","action","name"],"sources":["../../../../../lib/idx/idxState/v1/generateIdxAction.ts"],"sourcesContent":["/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint-disable max-len, complexity */\nimport { httpRequest } from '../../../http';\nimport { OktaAuthIdxInterface } from '../../types'; // auth-js/types\nimport { IdxActionFunction, IdxActionParams, IdxResponse, IdxToPersist } from '../../types/idx-js';\nimport { divideActionParamsByMutability } from './actionParser';\nimport AuthApiError from '../../../errors/AuthApiError';\n\nconst generateDirectFetch = function generateDirectFetch(authClient: OktaAuthIdxInterface, { \n actionDefinition, \n defaultParamsForAction = {}, \n immutableParamsForAction = {}, \n toPersist = {} as IdxToPersist\n}): IdxActionFunction {\n const target = actionDefinition.href;\n return async function(params: IdxActionParams = {}): Promise<IdxResponse> {\n const headers = {\n 'Content-Type': 'application/json',\n 'Accept': actionDefinition.accepts || 'application/ion+json',\n };\n const body = JSON.stringify({\n ...defaultParamsForAction,\n ...params,\n ...immutableParamsForAction\n });\n\n try {\n const response = await httpRequest(authClient, {\n url: target,\n method: actionDefinition.method,\n headers,\n args: body,\n withCredentials: toPersist?.withCredentials ?? true\n });\n\n return authClient.idx.makeIdxResponse({ ...response }, toPersist, true);\n }\n catch (err) {\n if (!(err instanceof AuthApiError) || !err?.xhr) {\n throw err;\n }\n\n const response = err.xhr;\n const payload = response.responseJSON || JSON.parse(response.responseText);\n const wwwAuthHeader = response.headers['WWW-Authenticate'] || response.headers['www-authenticate'];\n\n const idxResponse = authClient.idx.makeIdxResponse({ ...payload }, toPersist, false);\n if (response.status === 401 && wwwAuthHeader === 'Oktadevicejwt realm=\"Okta Device\"') {\n // Okta server responds 401 status code with WWW-Authenticate header and new remediation\n // so that the iOS/MacOS credential SSO extension (Okta Verify) can intercept\n // the response reaches here when Okta Verify is not installed\n // set `stepUp` to true if flow should be continued without showing any errors\n idxResponse.stepUp = true;\n }\n\n return idxResponse;\n }\n };\n};\n\n// TODO: Resolve in M2: Either build the final polling solution or remove this code\n// const generatePollingFetch = function generatePollingFetch( { actionDefinition, defaultParamsForAction = {}, immutableParamsForAction = {} } ) {\n// // TODO: Discussions ongoing about when/how to terminate polling: OKTA-246581\n// const target = actionDefinition.href;\n// return async function(params) {\n// return fetch(target, {\n// method: actionDefinition.method,\n// headers: {\n// 'content-type': actionDefinition.accepts,\n// },\n// body: JSON.stringify({ ...defaultParamsForAction, ...params, ...immutableParamsForAction })\n// })\n// .then( response => response.ok ? response.json() : response.json().then( err => Promise.reject(err)) )\n// .then( idxResponse => makeIdxState(authClient, idxResponse) );\n// };\n// };\n\nconst generateIdxAction = function generateIdxAction( authClient: OktaAuthIdxInterface, actionDefinition, toPersist ): IdxActionFunction {\n // TODO: leaving this here to see where the polling is EXPECTED to drop into the code, but removing any accidental trigger of incomplete code\n // const generator = actionDefinition.refresh ? generatePollingFetch : generateDirectFetch;\n const generator = generateDirectFetch;\n const { defaultParams, neededParams, immutableParams } = divideActionParamsByMutability( actionDefinition );\n\n const action = generator(authClient, {\n actionDefinition,\n defaultParamsForAction: defaultParams[actionDefinition.name],\n immutableParamsForAction: immutableParams[actionDefinition.name],\n toPersist\n });\n action.neededParams = neededParams;\n return action;\n};\n\nexport default generateIdxAction;\n"],"mappings":"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"}
@@ -115,12 +115,10 @@ const convertRemediationAction = (authClient, remediation, toPersist) => {
115
115
  return remediation;
116
116
  };
117
117
  const parseIdxResponse = function parseIdxResponse(authClient, idxResponse, toPersist = {}) {
118
- var _idxResponse$remediat;
119
- const remediationData = ((_idxResponse$remediat = idxResponse.remediation) === null || _idxResponse$remediat === void 0 ? void 0 : _idxResponse$remediat.value) || [];
118
+ const remediationData = idxResponse.remediation?.value || [];
120
119
  remediationData.forEach(remediation => {
121
- var _remediation$relatesT;
122
120
  // TODO: remove once IDX is fixed - OKTA-659181
123
- if (remediation.name === 'launch-authenticator' && (remediation === null || remediation === void 0 ? void 0 : (_remediation$relatesT = remediation.relatesTo) === null || _remediation$relatesT === void 0 ? void 0 : _remediation$relatesT[0]) === 'authenticatorChallenge' && !(idxResponse !== null && idxResponse !== void 0 && idxResponse.authenticatorChallenge)) {
121
+ if (remediation.name === 'launch-authenticator' && remediation?.relatesTo?.[0] === 'authenticatorChallenge' && !idxResponse?.authenticatorChallenge) {
124
122
  delete remediation.relatesTo;
125
123
  return;
126
124
  }
@@ -1 +1 @@
1
- {"version":3,"file":"idxResponseParser.js","names":["SKIP_FIELDS","parseNonRemediations","authClient","idxResponse","toPersist","actions","context","Object","keys","filter","field","forEach","fieldIsObject","rel","name","generateIdxAction","value","fieldValue","type","info","entries","subField","expandRelatesTo","k","query","Array","isArray","result","jsonpath","path","json","AuthSdkError","innerValue","convertRemediationAction","remediation","remediationActions","generateRemediationFunctions","actionFn","action","parseIdxResponse","remediationData","relatesTo","authenticatorChallenge","remediations","map"],"sources":["../../../../../lib/idx/idxState/v1/idxResponseParser.ts"],"sourcesContent":["/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint-disable max-len */\n\nimport { OktaAuthIdxInterface, IdxResponse, IdxRemediation, IdxContext } from '../../types'; // auth-js/types\nimport { IdxActions } from '../../types/idx-js';\nimport { generateRemediationFunctions } from './remediationParser';\nimport generateIdxAction from './generateIdxAction';\nimport { jsonpath } from '../../../util/jsonpath';\nimport { AuthSdkError } from '../../../errors';\n\nconst SKIP_FIELDS = {\n 'remediation': true, // remediations are put into proceed/neededToProceed\n 'context': true, // the API response of 'context' isn't externally useful. We ignore it and put all non-action (contextual) info into idxState.context\n};\n\nexport const parseNonRemediations = function parseNonRemediations( authClient: OktaAuthIdxInterface, idxResponse: IdxResponse, toPersist = {} ) {\n const actions = {};\n const context = {} as IdxContext;\n\n Object.keys(idxResponse)\n .filter( field => !SKIP_FIELDS[field])\n .forEach( field => {\n const fieldIsObject = typeof idxResponse[field] === 'object' && !!idxResponse[field];\n\n if ( !fieldIsObject ) {\n // simple fields are contextual info\n context[field] = idxResponse[field];\n return;\n }\n\n if ( idxResponse[field].rel ) {\n // top level actions\n actions[idxResponse[field].name] = generateIdxAction(authClient, idxResponse[field], toPersist);\n return;\n }\n\n const { value: fieldValue, type, ...info} = idxResponse[field];\n context[field] = { type, ...info}; // add the non-action parts as context\n\n if ( type !== 'object' ) {\n // only object values hold actions\n context[field].value = fieldValue;\n return;\n }\n\n // We are an object field containing an object value\n context[field].value = {};\n Object.entries<IdxRemediation>(fieldValue)\n .forEach( ([subField, value]) => {\n if (value.rel) { // is [field].value[subField] an action?\n // add any \"action\" value subfields to actions\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n actions[`${field}-${subField.name || subField}`] = generateIdxAction(authClient, value, toPersist);\n } else {\n // add non-action value subfields to context\n context[field].value[subField] = value;\n }\n });\n });\n\n return { context, actions };\n};\n\nconst expandRelatesTo = (idxResponse, value) => {\n Object.keys(value).forEach(k => {\n if (k === 'relatesTo') {\n const query = Array.isArray(value[k]) ? value[k][0] : value[k];\n if (typeof query === 'string') {\n const result = jsonpath({ path: query, json: idxResponse })[0];\n if (result) {\n value[k] = result;\n return;\n } else {\n throw new AuthSdkError(`Cannot resolve relatesTo: ${query}`);\n }\n }\n }\n if (Array.isArray(value[k])) {\n value[k].forEach(innerValue => expandRelatesTo(idxResponse, innerValue));\n }\n });\n};\n\nconst convertRemediationAction = (authClient: OktaAuthIdxInterface, remediation, toPersist) => {\n // Only remediation that has `rel` field (indicator for form submission) can have http action\n if (remediation.rel) {\n const remediationActions = generateRemediationFunctions( authClient, [remediation], toPersist );\n const actionFn = remediationActions[remediation.name];\n return {\n ...remediation,\n action: actionFn,\n };\n }\n\n return remediation;\n};\n\nexport const parseIdxResponse = function parseIdxResponse( authClient: OktaAuthIdxInterface, idxResponse, toPersist = {} ): {\n remediations: IdxRemediation[];\n context: IdxContext;\n actions: IdxActions;\n} {\n const remediationData = idxResponse.remediation?.value || [];\n\n remediationData.forEach(\n remediation => {\n // TODO: remove once IDX is fixed - OKTA-659181\n if (remediation.name === 'launch-authenticator' &&\n remediation?.relatesTo?.[0] === 'authenticatorChallenge' &&\n !idxResponse?.authenticatorChallenge\n ) {\n delete remediation.relatesTo;\n return;\n }\n\n return expandRelatesTo(idxResponse, remediation);\n }\n );\n\n const remediations = remediationData.map(remediation => convertRemediationAction( authClient, remediation, toPersist ));\n\n const { context, actions } = parseNonRemediations( authClient, idxResponse, toPersist );\n\n return {\n remediations,\n context,\n actions,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"idxResponseParser.js","names":["SKIP_FIELDS","parseNonRemediations","authClient","idxResponse","toPersist","actions","context","Object","keys","filter","field","forEach","fieldIsObject","rel","name","generateIdxAction","value","fieldValue","type","info","entries","subField","expandRelatesTo","k","query","Array","isArray","result","jsonpath","path","json","AuthSdkError","innerValue","convertRemediationAction","remediation","remediationActions","generateRemediationFunctions","actionFn","action","parseIdxResponse","remediationData","relatesTo","authenticatorChallenge","remediations","map"],"sources":["../../../../../lib/idx/idxState/v1/idxResponseParser.ts"],"sourcesContent":["/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n/* eslint-disable max-len */\n\nimport { OktaAuthIdxInterface, IdxResponse, IdxRemediation, IdxContext } from '../../types'; // auth-js/types\nimport { IdxActions } from '../../types/idx-js';\nimport { generateRemediationFunctions } from './remediationParser';\nimport generateIdxAction from './generateIdxAction';\nimport { jsonpath } from '../../../util/jsonpath';\nimport { AuthSdkError } from '../../../errors';\n\nconst SKIP_FIELDS = {\n 'remediation': true, // remediations are put into proceed/neededToProceed\n 'context': true, // the API response of 'context' isn't externally useful. We ignore it and put all non-action (contextual) info into idxState.context\n};\n\nexport const parseNonRemediations = function parseNonRemediations( authClient: OktaAuthIdxInterface, idxResponse: IdxResponse, toPersist = {} ) {\n const actions = {};\n const context = {} as IdxContext;\n\n Object.keys(idxResponse)\n .filter( field => !SKIP_FIELDS[field])\n .forEach( field => {\n const fieldIsObject = typeof idxResponse[field] === 'object' && !!idxResponse[field];\n\n if ( !fieldIsObject ) {\n // simple fields are contextual info\n context[field] = idxResponse[field];\n return;\n }\n\n if ( idxResponse[field].rel ) {\n // top level actions\n actions[idxResponse[field].name] = generateIdxAction(authClient, idxResponse[field], toPersist);\n return;\n }\n\n const { value: fieldValue, type, ...info} = idxResponse[field];\n context[field] = { type, ...info}; // add the non-action parts as context\n\n if ( type !== 'object' ) {\n // only object values hold actions\n context[field].value = fieldValue;\n return;\n }\n\n // We are an object field containing an object value\n context[field].value = {};\n Object.entries<IdxRemediation>(fieldValue)\n .forEach( ([subField, value]) => {\n if (value.rel) { // is [field].value[subField] an action?\n // add any \"action\" value subfields to actions\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n actions[`${field}-${subField.name || subField}`] = generateIdxAction(authClient, value, toPersist);\n } else {\n // add non-action value subfields to context\n context[field].value[subField] = value;\n }\n });\n });\n\n return { context, actions };\n};\n\nconst expandRelatesTo = (idxResponse, value) => {\n Object.keys(value).forEach(k => {\n if (k === 'relatesTo') {\n const query = Array.isArray(value[k]) ? value[k][0] : value[k];\n if (typeof query === 'string') {\n const result = jsonpath({ path: query, json: idxResponse })[0];\n if (result) {\n value[k] = result;\n return;\n } else {\n throw new AuthSdkError(`Cannot resolve relatesTo: ${query}`);\n }\n }\n }\n if (Array.isArray(value[k])) {\n value[k].forEach(innerValue => expandRelatesTo(idxResponse, innerValue));\n }\n });\n};\n\nconst convertRemediationAction = (authClient: OktaAuthIdxInterface, remediation, toPersist) => {\n // Only remediation that has `rel` field (indicator for form submission) can have http action\n if (remediation.rel) {\n const remediationActions = generateRemediationFunctions( authClient, [remediation], toPersist );\n const actionFn = remediationActions[remediation.name];\n return {\n ...remediation,\n action: actionFn,\n };\n }\n\n return remediation;\n};\n\nexport const parseIdxResponse = function parseIdxResponse( authClient: OktaAuthIdxInterface, idxResponse, toPersist = {} ): {\n remediations: IdxRemediation[];\n context: IdxContext;\n actions: IdxActions;\n} {\n const remediationData = idxResponse.remediation?.value || [];\n\n remediationData.forEach(\n remediation => {\n // TODO: remove once IDX is fixed - OKTA-659181\n if (remediation.name === 'launch-authenticator' &&\n remediation?.relatesTo?.[0] === 'authenticatorChallenge' &&\n !idxResponse?.authenticatorChallenge\n ) {\n delete remediation.relatesTo;\n return;\n }\n\n return expandRelatesTo(idxResponse, remediation);\n }\n );\n\n const remediations = remediationData.map(remediation => convertRemediationAction( authClient, remediation, toPersist ));\n\n const { context, actions } = parseNonRemediations( authClient, idxResponse, toPersist );\n\n return {\n remediations,\n context,\n actions,\n };\n};\n"],"mappings":"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"}
@@ -17,7 +17,6 @@ var _idxResponseParser = require("./idxResponseParser");
17
17
  // auth-js/types
18
18
 
19
19
  function makeIdxState(authClient, idxResponse, toPersist, requestDidSucceed) {
20
- var _rawIdxResponse$succe, _rawIdxResponse$succe2, _rawIdxResponse$succe3;
21
20
  const rawIdxResponse = idxResponse;
22
21
  const {
23
22
  remediations,
@@ -43,7 +42,7 @@ function makeIdxState(authClient, idxResponse, toPersist, requestDidSucceed) {
43
42
  return remediationChoiceObject.action(paramsFromUser);
44
43
  };
45
44
  const findCode = item => item.name === 'interaction_code';
46
- const interactionCode = (_rawIdxResponse$succe = rawIdxResponse.successWithInteractionCode) === null || _rawIdxResponse$succe === void 0 ? void 0 : (_rawIdxResponse$succe2 = _rawIdxResponse$succe.value) === null || _rawIdxResponse$succe2 === void 0 ? void 0 : (_rawIdxResponse$succe3 = _rawIdxResponse$succe2.find(findCode)) === null || _rawIdxResponse$succe3 === void 0 ? void 0 : _rawIdxResponse$succe3.value;
45
+ const interactionCode = rawIdxResponse.successWithInteractionCode?.value?.find(findCode)?.value;
47
46
  return {
48
47
  proceed,
49
48
  neededToProceed,
@@ -1 +1 @@
1
- {"version":3,"file":"makeIdxState.js","names":["makeIdxState","authClient","idxResponse","toPersist","requestDidSucceed","rawIdxResponse","remediations","context","actions","parseIdxResponse","neededToProceed","proceed","remediationChoice","paramsFromUser","remediationChoiceObject","find","remediation","name","Promise","reject","actionFn","action","findCode","item","interactionCode","successWithInteractionCode","value","rawIdxState"],"sources":["../../../../../lib/idx/idxState/v1/makeIdxState.ts"],"sourcesContent":["/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { IdxResponse, IdxToPersist, IdxActionParams } from '../../types/idx-js';\nimport { OktaAuthIdxInterface, RawIdxResponse } from '../../types'; // auth-js/types\nimport { parseIdxResponse } from './idxResponseParser';\n\nexport function makeIdxState( \n authClient: OktaAuthIdxInterface,\n idxResponse: RawIdxResponse,\n toPersist: IdxToPersist,\n requestDidSucceed: boolean\n): IdxResponse {\n const rawIdxResponse = idxResponse;\n const { remediations, context, actions } = parseIdxResponse( authClient, idxResponse, toPersist );\n const neededToProceed = [...remediations];\n\n const proceed: IdxResponse['proceed'] = async function( remediationChoice, paramsFromUser = {} ) {\n /*\n remediationChoice is the name attribute on each form\n name should remain unique for items inside the remediation that are considered forms(identify, select-factor)\n name can be duplicate for items like redirect where its not considered a form(redirect)\n when names are not unique its a redirect to a href, so widget wont POST to idx-js layer.\n */\n const remediationChoiceObject = remediations.find((remediation) => remediation.name === remediationChoice);\n if ( !remediationChoiceObject ) {\n return Promise.reject(`Unknown remediation choice: [${remediationChoice}]`);\n }\n\n const actionFn = remediationChoiceObject.action;\n if (typeof actionFn !== 'function') {\n return Promise.reject(`Current remediation cannot make form submit action: [${remediationChoice}]`);\n }\n\n return remediationChoiceObject.action!(paramsFromUser as IdxActionParams);\n };\n\n const findCode = item => item.name === 'interaction_code';\n const interactionCode = rawIdxResponse.successWithInteractionCode?.value?.find( findCode )?.value as string;\n\n return {\n proceed,\n neededToProceed,\n actions,\n context,\n rawIdxState: rawIdxResponse,\n interactionCode,\n toPersist,\n requestDidSucceed,\n };\n}\n"],"mappings":";;;AAcA;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGuE;;AAGhE,SAASA,YAAY,CAC1BC,UAAgC,EAChCC,WAA2B,EAC3BC,SAAuB,EACvBC,iBAA0B,EACb;EAAA;EACb,MAAMC,cAAc,GAAIH,WAAW;EACnC,MAAM;IAAEI,YAAY;IAAEC,OAAO;IAAEC;EAAQ,CAAC,GAAG,IAAAC,mCAAgB,EAAER,UAAU,EAAEC,WAAW,EAAEC,SAAS,CAAE;EACjG,MAAMO,eAAe,GAAG,CAAC,GAAGJ,YAAY,CAAC;EAEzC,MAAMK,OAA+B,GAAG,gBAAgBC,iBAAiB,EAAEC,cAAc,GAAG,CAAC,CAAC,EAAG;IAC/F;AACJ;AACA;AACA;AACA;AACA;IACI,MAAMC,uBAAuB,GAAGR,YAAY,CAACS,IAAI,CAAEC,WAAW,IAAKA,WAAW,CAACC,IAAI,KAAKL,iBAAiB,CAAC;IAC1G,IAAK,CAACE,uBAAuB,EAAG;MAC9B,OAAOI,OAAO,CAACC,MAAM,CAAE,gCAA+BP,iBAAkB,GAAE,CAAC;IAC7E;IAEA,MAAMQ,QAAQ,GAAGN,uBAAuB,CAACO,MAAM;IAC/C,IAAI,OAAOD,QAAQ,KAAK,UAAU,EAAE;MAClC,OAAOF,OAAO,CAACC,MAAM,CAAE,wDAAuDP,iBAAkB,GAAE,CAAC;IACrG;IAEA,OAAOE,uBAAuB,CAACO,MAAM,CAAER,cAAc,CAAoB;EAC3E,CAAC;EAED,MAAMS,QAAQ,GAAGC,IAAI,IAAIA,IAAI,CAACN,IAAI,KAAK,kBAAkB;EACzD,MAAMO,eAAe,4BAAGnB,cAAc,CAACoB,0BAA0B,oFAAzC,sBAA2CC,KAAK,qFAAhD,uBAAkDX,IAAI,CAAEO,QAAQ,CAAE,2DAAlE,uBAAoEI,KAAe;EAE3G,OAAO;IACLf,OAAO;IACPD,eAAe;IACfF,OAAO;IACPD,OAAO;IACPoB,WAAW,EAAEtB,cAAc;IAC3BmB,eAAe;IACfrB,SAAS;IACTC;EACF,CAAC;AACH"}
1
+ {"version":3,"file":"makeIdxState.js","names":["makeIdxState","authClient","idxResponse","toPersist","requestDidSucceed","rawIdxResponse","remediations","context","actions","parseIdxResponse","neededToProceed","proceed","remediationChoice","paramsFromUser","remediationChoiceObject","find","remediation","name","Promise","reject","actionFn","action","findCode","item","interactionCode","successWithInteractionCode","value","rawIdxState"],"sources":["../../../../../lib/idx/idxState/v1/makeIdxState.ts"],"sourcesContent":["/*!\n * Copyright (c) 2021-Present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { IdxResponse, IdxToPersist, IdxActionParams } from '../../types/idx-js';\nimport { OktaAuthIdxInterface, RawIdxResponse } from '../../types'; // auth-js/types\nimport { parseIdxResponse } from './idxResponseParser';\n\nexport function makeIdxState( \n authClient: OktaAuthIdxInterface,\n idxResponse: RawIdxResponse,\n toPersist: IdxToPersist,\n requestDidSucceed: boolean\n): IdxResponse {\n const rawIdxResponse = idxResponse;\n const { remediations, context, actions } = parseIdxResponse( authClient, idxResponse, toPersist );\n const neededToProceed = [...remediations];\n\n const proceed: IdxResponse['proceed'] = async function( remediationChoice, paramsFromUser = {} ) {\n /*\n remediationChoice is the name attribute on each form\n name should remain unique for items inside the remediation that are considered forms(identify, select-factor)\n name can be duplicate for items like redirect where its not considered a form(redirect)\n when names are not unique its a redirect to a href, so widget wont POST to idx-js layer.\n */\n const remediationChoiceObject = remediations.find((remediation) => remediation.name === remediationChoice);\n if ( !remediationChoiceObject ) {\n return Promise.reject(`Unknown remediation choice: [${remediationChoice}]`);\n }\n\n const actionFn = remediationChoiceObject.action;\n if (typeof actionFn !== 'function') {\n return Promise.reject(`Current remediation cannot make form submit action: [${remediationChoice}]`);\n }\n\n return remediationChoiceObject.action!(paramsFromUser as IdxActionParams);\n };\n\n const findCode = item => item.name === 'interaction_code';\n const interactionCode = rawIdxResponse.successWithInteractionCode?.value?.find( findCode )?.value as string;\n\n return {\n proceed,\n neededToProceed,\n actions,\n context,\n rawIdxState: rawIdxResponse,\n interactionCode,\n toPersist,\n requestDidSucceed,\n };\n}\n"],"mappings":";;;AAcA;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGuE;;AAGhE,SAASA,YAAY,CAC1BC,UAAgC,EAChCC,WAA2B,EAC3BC,SAAuB,EACvBC,iBAA0B,EACb;EACb,MAAMC,cAAc,GAAIH,WAAW;EACnC,MAAM;IAAEI,YAAY;IAAEC,OAAO;IAAEC;EAAQ,CAAC,GAAG,IAAAC,mCAAgB,EAAER,UAAU,EAAEC,WAAW,EAAEC,SAAS,CAAE;EACjG,MAAMO,eAAe,GAAG,CAAC,GAAGJ,YAAY,CAAC;EAEzC,MAAMK,OAA+B,GAAG,gBAAgBC,iBAAiB,EAAEC,cAAc,GAAG,CAAC,CAAC,EAAG;IAC/F;AACJ;AACA;AACA;AACA;AACA;IACI,MAAMC,uBAAuB,GAAGR,YAAY,CAACS,IAAI,CAAEC,WAAW,IAAKA,WAAW,CAACC,IAAI,KAAKL,iBAAiB,CAAC;IAC1G,IAAK,CAACE,uBAAuB,EAAG;MAC9B,OAAOI,OAAO,CAACC,MAAM,CAAE,gCAA+BP,iBAAkB,GAAE,CAAC;IAC7E;IAEA,MAAMQ,QAAQ,GAAGN,uBAAuB,CAACO,MAAM;IAC/C,IAAI,OAAOD,QAAQ,KAAK,UAAU,EAAE;MAClC,OAAOF,OAAO,CAACC,MAAM,CAAE,wDAAuDP,iBAAkB,GAAE,CAAC;IACrG;IAEA,OAAOE,uBAAuB,CAACO,MAAM,CAAER,cAAc,CAAoB;EAC3E,CAAC;EAED,MAAMS,QAAQ,GAAGC,IAAI,IAAIA,IAAI,CAACN,IAAI,KAAK,kBAAkB;EACzD,MAAMO,eAAe,GAAGnB,cAAc,CAACoB,0BAA0B,EAAEC,KAAK,EAAEX,IAAI,CAAEO,QAAQ,CAAE,EAAEI,KAAe;EAE3G,OAAO;IACLf,OAAO;IACPD,eAAe;IACfF,OAAO;IACPD,OAAO;IACPoB,WAAW,EAAEtB,cAAc;IAC3BmB,eAAe;IACfrB,SAAS;IACTC;EACF,CAAC;AACH"}
@@ -31,12 +31,11 @@ function getResponse(meta) {
31
31
 
32
32
  // Begin or resume a transaction. Returns an interaction handle
33
33
  async function interact(authClient, options = {}) {
34
- var _meta;
35
34
  options = (0, _util.removeNils)(options);
36
35
  let meta = (0, _transactionMeta.getSavedTransactionMeta)(authClient, options);
37
36
  // If meta exists, it has been validated against all options
38
37
 
39
- if ((_meta = meta) !== null && _meta !== void 0 && _meta.interactionHandle) {
38
+ if (meta?.interactionHandle) {
40
39
  return getResponse(meta); // Saved transaction, return meta
41
40
  }
42
41
 
@@ -1 +1 @@
1
- {"version":3,"file":"interact.js","names":["getResponse","meta","interactionHandle","state","interact","authClient","options","removeNils","getSavedTransactionMeta","createTransactionMeta","baseUrl","getOAuthBaseUrl","clientId","redirectUri","scopes","withCredentials","codeChallenge","codeChallengeMethod","activationToken","recoveryToken","maxAge","acrValues","nonce","clientSecret","url","params","client_id","scope","join","redirect_uri","code_challenge","code_challenge_method","activation_token","recovery_token","client_secret","max_age","acr_values","headers","resp","httpRequest","method","args","interaction_handle","newMeta","saveTransactionMeta"],"sources":["../../../lib/idx/interact.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n/* eslint complexity:[0,8] */\nimport { OktaAuthIdxInterface, IdxTransactionMeta, InteractOptions, InteractResponse } from './types';\nimport { getSavedTransactionMeta, saveTransactionMeta, createTransactionMeta } from './transactionMeta';\nimport { getOAuthBaseUrl } from '../oidc';\nimport { removeNils } from '../util';\nimport { httpRequest } from '../http';\n\n\n/* eslint-disable camelcase */\nexport interface InteractParams {\n client_id: string;\n scope: string;\n redirect_uri: string;\n code_challenge: string;\n code_challenge_method: string;\n state: string;\n activation_token?: string;\n recovery_token?: string;\n client_secret?: string;\n max_age?: string | number;\n acr_values?: string;\n nonce?: string;\n}\n/* eslint-enable camelcase */\n\nfunction getResponse(meta: IdxTransactionMeta): InteractResponse {\n return {\n meta,\n interactionHandle: meta.interactionHandle!,\n state: meta.state\n };\n}\n\n// Begin or resume a transaction. Returns an interaction handle\nexport async function interact (\n authClient: OktaAuthIdxInterface, \n options: InteractOptions = {}\n): Promise<InteractResponse> {\n options = removeNils(options);\n\n let meta = getSavedTransactionMeta(authClient, options);\n // If meta exists, it has been validated against all options\n\n if (meta?.interactionHandle) {\n return getResponse(meta); // Saved transaction, return meta\n }\n\n // Create new meta, respecting previous meta if it has been set and is not overridden\n meta = await createTransactionMeta(authClient, { ...meta, ...options });\n const baseUrl = getOAuthBaseUrl(authClient);\n let {\n clientId,\n redirectUri,\n state,\n scopes,\n withCredentials,\n codeChallenge,\n codeChallengeMethod,\n activationToken,\n recoveryToken,\n maxAge,\n acrValues,\n nonce\n } = meta as IdxTransactionMeta;\n const clientSecret = options.clientSecret || authClient.options.clientSecret;\n withCredentials = withCredentials ?? true;\n\n /* eslint-disable camelcase */\n const url = `${baseUrl}/v1/interact`;\n const params = {\n client_id: clientId,\n scope: scopes!.join(' '),\n redirect_uri: redirectUri,\n code_challenge: codeChallenge,\n code_challenge_method: codeChallengeMethod,\n state,\n ...(activationToken && { activation_token: activationToken }),\n ...(recoveryToken && { recovery_token: recoveryToken }),\n // X-Device-Token header need to pair with `client_secret`\n // eslint-disable-next-line max-len\n // https://oktawiki.atlassian.net/wiki/spaces/eng/pages/2445902453/Support+Device+Binding+in+interact#Scenario-1%3A-Non-User-Agent-with-Confidential-Client-(top-priority)\n ...(clientSecret && { client_secret: clientSecret }),\n ...(maxAge && { max_age: maxAge }),\n ...(acrValues && { acr_values: acrValues }),\n ...(nonce && { nonce }),\n } as InteractParams;\n /* eslint-enable camelcase */\n\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n };\n\n const resp = await httpRequest(authClient, {\n method: 'POST',\n url,\n headers,\n withCredentials,\n args: params\n });\n const interactionHandle = resp.interaction_handle;\n\n const newMeta = {\n ...meta,\n interactionHandle,\n \n // Options which can be passed into interact() should be saved in the meta\n withCredentials,\n state,\n scopes,\n recoveryToken,\n activationToken\n };\n // Save transaction meta so it can be resumed\n saveTransactionMeta(authClient, newMeta);\n\n return getResponse(newMeta);\n}\n"],"mappings":";;;AAcA;AACA;AACA;AACA;AAjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAuBA;;AAEA,SAASA,WAAW,CAACC,IAAwB,EAAoB;EAC/D,OAAO;IACLA,IAAI;IACJC,iBAAiB,EAAED,IAAI,CAACC,iBAAkB;IAC1CC,KAAK,EAAEF,IAAI,CAACE;EACd,CAAC;AACH;;AAEA;AACO,eAAeC,QAAQ,CAC5BC,UAAgC,EAChCC,OAAwB,GAAG,CAAC,CAAC,EACF;EAAA;EAC3BA,OAAO,GAAG,IAAAC,gBAAU,EAACD,OAAO,CAAC;EAE7B,IAAIL,IAAI,GAAG,IAAAO,wCAAuB,EAACH,UAAU,EAAEC,OAAO,CAAC;EACvD;;EAEA,aAAIL,IAAI,kCAAJ,MAAMC,iBAAiB,EAAE;IAC3B,OAAOF,WAAW,CAACC,IAAI,CAAC,CAAC,CAAC;EAC5B;;EAEA;EACAA,IAAI,GAAG,MAAM,IAAAQ,sCAAqB,EAACJ,UAAU,EAAE;IAAE,GAAGJ,IAAI;IAAE,GAAGK;EAAQ,CAAC,CAAC;EACvE,MAAMI,OAAO,GAAG,IAAAC,qBAAe,EAACN,UAAU,CAAC;EAC3C,IAAI;IACFO,QAAQ;IACRC,WAAW;IACXV,KAAK;IACLW,MAAM;IACNC,eAAe;IACfC,aAAa;IACbC,mBAAmB;IACnBC,eAAe;IACfC,aAAa;IACbC,MAAM;IACNC,SAAS;IACTC;EACF,CAAC,GAAGrB,IAA0B;EAC9B,MAAMsB,YAAY,GAAGjB,OAAO,CAACiB,YAAY,IAAIlB,UAAU,CAACC,OAAO,CAACiB,YAAY;EAC5ER,eAAe,GAAGA,eAAe,IAAI,IAAI;;EAEzC;EACA,MAAMS,GAAG,GAAI,GAAEd,OAAQ,cAAa;EACpC,MAAMe,MAAM,GAAG;IACbC,SAAS,EAAEd,QAAQ;IACnBe,KAAK,EAAEb,MAAM,CAAEc,IAAI,CAAC,GAAG,CAAC;IACxBC,YAAY,EAAEhB,WAAW;IACzBiB,cAAc,EAAEd,aAAa;IAC7Be,qBAAqB,EAAEd,mBAAmB;IAC1Cd,KAAK;IACL,IAAIe,eAAe,IAAI;MAAEc,gBAAgB,EAAEd;IAAgB,CAAC,CAAC;IAC7D,IAAIC,aAAa,IAAI;MAAEc,cAAc,EAAEd;IAAc,CAAC,CAAC;IACvD;IACA;IACA;IACA,IAAII,YAAY,IAAI;MAAEW,aAAa,EAAEX;IAAa,CAAC,CAAC;IACpD,IAAIH,MAAM,IAAI;MAAEe,OAAO,EAAEf;IAAO,CAAC,CAAC;IAClC,IAAIC,SAAS,IAAI;MAAEe,UAAU,EAAEf;IAAU,CAAC,CAAC;IAC3C,IAAIC,KAAK,IAAI;MAAEA;IAAM,CAAC;EACxB,CAAmB;EACnB;;EAEA,MAAMe,OAAO,GAAG;IACd,cAAc,EAAE;EAClB,CAAC;EAED,MAAMC,IAAI,GAAG,MAAM,IAAAC,iBAAW,EAAClC,UAAU,EAAE;IACzCmC,MAAM,EAAE,MAAM;IACdhB,GAAG;IACHa,OAAO;IACPtB,eAAe;IACf0B,IAAI,EAAEhB;EACR,CAAC,CAAC;EACF,MAAMvB,iBAAiB,GAAGoC,IAAI,CAACI,kBAAkB;EAEjD,MAAMC,OAAO,GAAG;IACd,GAAG1C,IAAI;IACPC,iBAAiB;IAEjB;IACAa,eAAe;IACfZ,KAAK;IACLW,MAAM;IACNK,aAAa;IACbD;EACF,CAAC;EACD;EACA,IAAA0B,oCAAmB,EAACvC,UAAU,EAAEsC,OAAO,CAAC;EAExC,OAAO3C,WAAW,CAAC2C,OAAO,CAAC;AAC7B"}
1
+ {"version":3,"file":"interact.js","names":["getResponse","meta","interactionHandle","state","interact","authClient","options","removeNils","getSavedTransactionMeta","createTransactionMeta","baseUrl","getOAuthBaseUrl","clientId","redirectUri","scopes","withCredentials","codeChallenge","codeChallengeMethod","activationToken","recoveryToken","maxAge","acrValues","nonce","clientSecret","url","params","client_id","scope","join","redirect_uri","code_challenge","code_challenge_method","activation_token","recovery_token","client_secret","max_age","acr_values","headers","resp","httpRequest","method","args","interaction_handle","newMeta","saveTransactionMeta"],"sources":["../../../lib/idx/interact.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2021, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n/* eslint complexity:[0,8] */\nimport { OktaAuthIdxInterface, IdxTransactionMeta, InteractOptions, InteractResponse } from './types';\nimport { getSavedTransactionMeta, saveTransactionMeta, createTransactionMeta } from './transactionMeta';\nimport { getOAuthBaseUrl } from '../oidc';\nimport { removeNils } from '../util';\nimport { httpRequest } from '../http';\n\n\n/* eslint-disable camelcase */\nexport interface InteractParams {\n client_id: string;\n scope: string;\n redirect_uri: string;\n code_challenge: string;\n code_challenge_method: string;\n state: string;\n activation_token?: string;\n recovery_token?: string;\n client_secret?: string;\n max_age?: string | number;\n acr_values?: string;\n nonce?: string;\n}\n/* eslint-enable camelcase */\n\nfunction getResponse(meta: IdxTransactionMeta): InteractResponse {\n return {\n meta,\n interactionHandle: meta.interactionHandle!,\n state: meta.state\n };\n}\n\n// Begin or resume a transaction. Returns an interaction handle\nexport async function interact (\n authClient: OktaAuthIdxInterface, \n options: InteractOptions = {}\n): Promise<InteractResponse> {\n options = removeNils(options);\n\n let meta = getSavedTransactionMeta(authClient, options);\n // If meta exists, it has been validated against all options\n\n if (meta?.interactionHandle) {\n return getResponse(meta); // Saved transaction, return meta\n }\n\n // Create new meta, respecting previous meta if it has been set and is not overridden\n meta = await createTransactionMeta(authClient, { ...meta, ...options });\n const baseUrl = getOAuthBaseUrl(authClient);\n let {\n clientId,\n redirectUri,\n state,\n scopes,\n withCredentials,\n codeChallenge,\n codeChallengeMethod,\n activationToken,\n recoveryToken,\n maxAge,\n acrValues,\n nonce\n } = meta as IdxTransactionMeta;\n const clientSecret = options.clientSecret || authClient.options.clientSecret;\n withCredentials = withCredentials ?? true;\n\n /* eslint-disable camelcase */\n const url = `${baseUrl}/v1/interact`;\n const params = {\n client_id: clientId,\n scope: scopes!.join(' '),\n redirect_uri: redirectUri,\n code_challenge: codeChallenge,\n code_challenge_method: codeChallengeMethod,\n state,\n ...(activationToken && { activation_token: activationToken }),\n ...(recoveryToken && { recovery_token: recoveryToken }),\n // X-Device-Token header need to pair with `client_secret`\n // eslint-disable-next-line max-len\n // https://oktawiki.atlassian.net/wiki/spaces/eng/pages/2445902453/Support+Device+Binding+in+interact#Scenario-1%3A-Non-User-Agent-with-Confidential-Client-(top-priority)\n ...(clientSecret && { client_secret: clientSecret }),\n ...(maxAge && { max_age: maxAge }),\n ...(acrValues && { acr_values: acrValues }),\n ...(nonce && { nonce }),\n } as InteractParams;\n /* eslint-enable camelcase */\n\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n };\n\n const resp = await httpRequest(authClient, {\n method: 'POST',\n url,\n headers,\n withCredentials,\n args: params\n });\n const interactionHandle = resp.interaction_handle;\n\n const newMeta = {\n ...meta,\n interactionHandle,\n \n // Options which can be passed into interact() should be saved in the meta\n withCredentials,\n state,\n scopes,\n recoveryToken,\n activationToken\n };\n // Save transaction meta so it can be resumed\n saveTransactionMeta(authClient, newMeta);\n\n return getResponse(newMeta);\n}\n"],"mappings":";;;AAcA;AACA;AACA;AACA;AAjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAuBA;;AAEA,SAASA,WAAW,CAACC,IAAwB,EAAoB;EAC/D,OAAO;IACLA,IAAI;IACJC,iBAAiB,EAAED,IAAI,CAACC,iBAAkB;IAC1CC,KAAK,EAAEF,IAAI,CAACE;EACd,CAAC;AACH;;AAEA;AACO,eAAeC,QAAQ,CAC5BC,UAAgC,EAChCC,OAAwB,GAAG,CAAC,CAAC,EACF;EAC3BA,OAAO,GAAG,IAAAC,gBAAU,EAACD,OAAO,CAAC;EAE7B,IAAIL,IAAI,GAAG,IAAAO,wCAAuB,EAACH,UAAU,EAAEC,OAAO,CAAC;EACvD;;EAEA,IAAIL,IAAI,EAAEC,iBAAiB,EAAE;IAC3B,OAAOF,WAAW,CAACC,IAAI,CAAC,CAAC,CAAC;EAC5B;;EAEA;EACAA,IAAI,GAAG,MAAM,IAAAQ,sCAAqB,EAACJ,UAAU,EAAE;IAAE,GAAGJ,IAAI;IAAE,GAAGK;EAAQ,CAAC,CAAC;EACvE,MAAMI,OAAO,GAAG,IAAAC,qBAAe,EAACN,UAAU,CAAC;EAC3C,IAAI;IACFO,QAAQ;IACRC,WAAW;IACXV,KAAK;IACLW,MAAM;IACNC,eAAe;IACfC,aAAa;IACbC,mBAAmB;IACnBC,eAAe;IACfC,aAAa;IACbC,MAAM;IACNC,SAAS;IACTC;EACF,CAAC,GAAGrB,IAA0B;EAC9B,MAAMsB,YAAY,GAAGjB,OAAO,CAACiB,YAAY,IAAIlB,UAAU,CAACC,OAAO,CAACiB,YAAY;EAC5ER,eAAe,GAAGA,eAAe,IAAI,IAAI;;EAEzC;EACA,MAAMS,GAAG,GAAI,GAAEd,OAAQ,cAAa;EACpC,MAAMe,MAAM,GAAG;IACbC,SAAS,EAAEd,QAAQ;IACnBe,KAAK,EAAEb,MAAM,CAAEc,IAAI,CAAC,GAAG,CAAC;IACxBC,YAAY,EAAEhB,WAAW;IACzBiB,cAAc,EAAEd,aAAa;IAC7Be,qBAAqB,EAAEd,mBAAmB;IAC1Cd,KAAK;IACL,IAAIe,eAAe,IAAI;MAAEc,gBAAgB,EAAEd;IAAgB,CAAC,CAAC;IAC7D,IAAIC,aAAa,IAAI;MAAEc,cAAc,EAAEd;IAAc,CAAC,CAAC;IACvD;IACA;IACA;IACA,IAAII,YAAY,IAAI;MAAEW,aAAa,EAAEX;IAAa,CAAC,CAAC;IACpD,IAAIH,MAAM,IAAI;MAAEe,OAAO,EAAEf;IAAO,CAAC,CAAC;IAClC,IAAIC,SAAS,IAAI;MAAEe,UAAU,EAAEf;IAAU,CAAC,CAAC;IAC3C,IAAIC,KAAK,IAAI;MAAEA;IAAM,CAAC;EACxB,CAAmB;EACnB;;EAEA,MAAMe,OAAO,GAAG;IACd,cAAc,EAAE;EAClB,CAAC;EAED,MAAMC,IAAI,GAAG,MAAM,IAAAC,iBAAW,EAAClC,UAAU,EAAE;IACzCmC,MAAM,EAAE,MAAM;IACdhB,GAAG;IACHa,OAAO;IACPtB,eAAe;IACf0B,IAAI,EAAEhB;EACR,CAAC,CAAC;EACF,MAAMvB,iBAAiB,GAAGoC,IAAI,CAACI,kBAAkB;EAEjD,MAAMC,OAAO,GAAG;IACd,GAAG1C,IAAI;IACPC,iBAAiB;IAEjB;IACAa,eAAe;IACfZ,KAAK;IACLW,MAAM;IACNK,aAAa;IACbD;EACF,CAAC;EACD;EACA,IAAA0B,oCAAmB,EAACvC,UAAU,EAAEsC,OAAO,CAAC;EAExC,OAAO3C,WAAW,CAAC2C,OAAO,CAAC;AAC7B"}
package/cjs/idx/poll.js CHANGED
@@ -17,21 +17,19 @@ var _util = require("../util");
17
17
  */
18
18
 
19
19
  async function poll(authClient, options = {}) {
20
- var _meta$remediations;
21
20
  let transaction = await (0, _proceed.proceed)(authClient, {
22
21
  startPolling: true
23
22
  });
24
23
  const meta = (0, _transactionMeta.getSavedTransactionMeta)(authClient);
25
- let availablePollingRemeditaions = meta === null || meta === void 0 ? void 0 : (_meta$remediations = meta.remediations) === null || _meta$remediations === void 0 ? void 0 : _meta$remediations.find(remediation => remediation.includes('poll'));
26
- if (!(availablePollingRemeditaions !== null && availablePollingRemeditaions !== void 0 && availablePollingRemeditaions.length)) {
24
+ let availablePollingRemeditaions = meta?.remediations?.find(remediation => remediation.includes('poll'));
25
+ if (!availablePollingRemeditaions?.length) {
27
26
  (0, _util.warn)('No polling remediations available at the current IDX flow stage');
28
27
  }
29
28
  if (Number.isInteger(options.refresh)) {
30
29
  return new Promise(function (resolve, reject) {
31
30
  setTimeout(async function () {
32
31
  try {
33
- var _transaction$nextStep, _transaction$nextStep2;
34
- const refresh = (_transaction$nextStep = transaction.nextStep) === null || _transaction$nextStep === void 0 ? void 0 : (_transaction$nextStep2 = _transaction$nextStep.poll) === null || _transaction$nextStep2 === void 0 ? void 0 : _transaction$nextStep2.refresh;
32
+ const refresh = transaction.nextStep?.poll?.refresh;
35
33
  if (refresh) {
36
34
  resolve(poll(authClient, {
37
35
  refresh
@@ -1 +1 @@
1
- {"version":3,"file":"poll.js","names":["poll","authClient","options","transaction","proceed","startPolling","meta","getSavedTransactionMeta","availablePollingRemeditaions","remediations","find","remediation","includes","length","warn","Number","isInteger","refresh","Promise","resolve","reject","setTimeout","nextStep","err"],"sources":["../../../lib/idx/poll.ts"],"sourcesContent":["/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { proceed } from './proceed';\n\nimport { \n IdxPollOptions,\n IdxTransaction,\n OktaAuthIdxInterface,\n} from './types';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { warn } from '../util';\n\nexport async function poll(authClient: OktaAuthIdxInterface, options: IdxPollOptions = {}): Promise<IdxTransaction> {\n let transaction = await proceed(authClient, {\n startPolling: true\n });\n\n const meta = getSavedTransactionMeta(authClient);\n let availablePollingRemeditaions = meta?.remediations?.find(remediation => remediation.includes('poll'));\n if (!availablePollingRemeditaions?.length) {\n warn('No polling remediations available at the current IDX flow stage');\n }\n\n if (Number.isInteger(options.refresh)) {\n return new Promise(function (resolve, reject) {\n setTimeout(async function () {\n try {\n const refresh = transaction.nextStep?.poll?.refresh;\n if (refresh) {\n resolve(poll(authClient, {\n refresh\n }));\n } else {\n resolve(transaction);\n }\n } catch (err) {\n reject(err);\n }\n }, options.refresh);\n });\n }\n\n return transaction;\n}\n"],"mappings":";;;AAYA;AAOA;AACA;AApBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYO,eAAeA,IAAI,CAACC,UAAgC,EAAEC,OAAuB,GAAG,CAAC,CAAC,EAA2B;EAAA;EAClH,IAAIC,WAAW,GAAG,MAAM,IAAAC,gBAAO,EAACH,UAAU,EAAE;IAC1CI,YAAY,EAAE;EAChB,CAAC,CAAC;EAEF,MAAMC,IAAI,GAAG,IAAAC,wCAAuB,EAACN,UAAU,CAAC;EAChD,IAAIO,4BAA4B,GAAGF,IAAI,aAAJA,IAAI,6CAAJA,IAAI,CAAEG,YAAY,uDAAlB,mBAAoBC,IAAI,CAACC,WAAW,IAAIA,WAAW,CAACC,QAAQ,CAAC,MAAM,CAAC,CAAC;EACxG,IAAI,EAACJ,4BAA4B,aAA5BA,4BAA4B,eAA5BA,4BAA4B,CAAEK,MAAM,GAAE;IACzC,IAAAC,UAAI,EAAC,iEAAiE,CAAC;EACzE;EAEA,IAAIC,MAAM,CAACC,SAAS,CAACd,OAAO,CAACe,OAAO,CAAC,EAAE;IACrC,OAAO,IAAIC,OAAO,CAAC,UAAUC,OAAO,EAAEC,MAAM,EAAE;MAC5CC,UAAU,CAAC,kBAAkB;QAC3B,IAAI;UAAA;UACF,MAAMJ,OAAO,4BAAGd,WAAW,CAACmB,QAAQ,oFAApB,sBAAsBtB,IAAI,2DAA1B,uBAA4BiB,OAAO;UACnD,IAAIA,OAAO,EAAE;YACXE,OAAO,CAACnB,IAAI,CAACC,UAAU,EAAE;cACvBgB;YACF,CAAC,CAAC,CAAC;UACL,CAAC,MAAM;YACLE,OAAO,CAAChB,WAAW,CAAC;UACtB;QACF,CAAC,CAAC,OAAOoB,GAAG,EAAE;UACZH,MAAM,CAACG,GAAG,CAAC;QACb;MACF,CAAC,EAAErB,OAAO,CAACe,OAAO,CAAC;IACrB,CAAC,CAAC;EACJ;EAEA,OAAOd,WAAW;AACpB"}
1
+ {"version":3,"file":"poll.js","names":["poll","authClient","options","transaction","proceed","startPolling","meta","getSavedTransactionMeta","availablePollingRemeditaions","remediations","find","remediation","includes","length","warn","Number","isInteger","refresh","Promise","resolve","reject","setTimeout","nextStep","err"],"sources":["../../../lib/idx/poll.ts"],"sourcesContent":["/*!\n * Copyright (c) 2021-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { proceed } from './proceed';\n\nimport { \n IdxPollOptions,\n IdxTransaction,\n OktaAuthIdxInterface,\n} from './types';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { warn } from '../util';\n\nexport async function poll(authClient: OktaAuthIdxInterface, options: IdxPollOptions = {}): Promise<IdxTransaction> {\n let transaction = await proceed(authClient, {\n startPolling: true\n });\n\n const meta = getSavedTransactionMeta(authClient);\n let availablePollingRemeditaions = meta?.remediations?.find(remediation => remediation.includes('poll'));\n if (!availablePollingRemeditaions?.length) {\n warn('No polling remediations available at the current IDX flow stage');\n }\n\n if (Number.isInteger(options.refresh)) {\n return new Promise(function (resolve, reject) {\n setTimeout(async function () {\n try {\n const refresh = transaction.nextStep?.poll?.refresh;\n if (refresh) {\n resolve(poll(authClient, {\n refresh\n }));\n } else {\n resolve(transaction);\n }\n } catch (err) {\n reject(err);\n }\n }, options.refresh);\n });\n }\n\n return transaction;\n}\n"],"mappings":";;;AAYA;AAOA;AACA;AApBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYO,eAAeA,IAAI,CAACC,UAAgC,EAAEC,OAAuB,GAAG,CAAC,CAAC,EAA2B;EAClH,IAAIC,WAAW,GAAG,MAAM,IAAAC,gBAAO,EAACH,UAAU,EAAE;IAC1CI,YAAY,EAAE;EAChB,CAAC,CAAC;EAEF,MAAMC,IAAI,GAAG,IAAAC,wCAAuB,EAACN,UAAU,CAAC;EAChD,IAAIO,4BAA4B,GAAGF,IAAI,EAAEG,YAAY,EAAEC,IAAI,CAACC,WAAW,IAAIA,WAAW,CAACC,QAAQ,CAAC,MAAM,CAAC,CAAC;EACxG,IAAI,CAACJ,4BAA4B,EAAEK,MAAM,EAAE;IACzC,IAAAC,UAAI,EAAC,iEAAiE,CAAC;EACzE;EAEA,IAAIC,MAAM,CAACC,SAAS,CAACd,OAAO,CAACe,OAAO,CAAC,EAAE;IACrC,OAAO,IAAIC,OAAO,CAAC,UAAUC,OAAO,EAAEC,MAAM,EAAE;MAC5CC,UAAU,CAAC,kBAAkB;QAC3B,IAAI;UACF,MAAMJ,OAAO,GAAGd,WAAW,CAACmB,QAAQ,EAAEtB,IAAI,EAAEiB,OAAO;UACnD,IAAIA,OAAO,EAAE;YACXE,OAAO,CAACnB,IAAI,CAACC,UAAU,EAAE;cACvBgB;YACF,CAAC,CAAC,CAAC;UACL,CAAC,MAAM;YACLE,OAAO,CAAChB,WAAW,CAAC;UACtB;QACF,CAAC,CAAC,OAAOoB,GAAG,EAAE;UACZH,MAAM,CAACG,GAAG,CAAC;QACb;MACF,CAAC,EAAErB,OAAO,CAACe,OAAO,CAAC;IACrB,CAAC,CAAC;EACJ;EAEA,OAAOd,WAAW;AACpB"}
@@ -33,7 +33,7 @@ async function proceed(authClient, options = {}) {
33
33
  const meta = (0, _transactionMeta.getSavedTransactionMeta)(authClient, {
34
34
  state
35
35
  });
36
- flow = meta === null || meta === void 0 ? void 0 : meta.flow;
36
+ flow = meta?.flow;
37
37
  }
38
38
  return (0, _run.run)(authClient, {
39
39
  ...options,
@@ -1 +1 @@
1
- {"version":3,"file":"proceed.js","names":["canProceed","authClient","options","meta","getSavedTransactionMeta","stateHandle","proceed","AuthSdkError","flow","state","run"],"sources":["../../../lib/idx/proceed.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { \n OktaAuthIdxInterface,\n IdxTransaction,\n ProceedOptions,\n} from './types';\nimport { run } from './run';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { AuthSdkError } from '../errors';\n\nexport function canProceed(authClient: OktaAuthIdxInterface, options: ProceedOptions = {}): boolean {\n const meta = getSavedTransactionMeta(authClient, options);\n return !!(meta || options.stateHandle);\n}\n\nexport async function proceed(\n authClient: OktaAuthIdxInterface,\n options: ProceedOptions = {}\n): Promise<IdxTransaction> {\n\n if (!canProceed(authClient, options)) {\n throw new AuthSdkError('Unable to proceed: saved transaction could not be loaded');\n }\n\n let { flow, state } = options;\n if (!flow) {\n const meta = getSavedTransactionMeta(authClient, { state });\n flow = meta?.flow;\n }\n\n return run(authClient, { \n ...options, \n flow\n });\n}\n"],"mappings":";;;;AAkBA;AACA;AACA;AApBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYO,SAASA,UAAU,CAACC,UAAgC,EAAEC,OAAuB,GAAG,CAAC,CAAC,EAAW;EAClG,MAAMC,IAAI,GAAG,IAAAC,wCAAuB,EAACH,UAAU,EAAEC,OAAO,CAAC;EACzD,OAAO,CAAC,EAAEC,IAAI,IAAID,OAAO,CAACG,WAAW,CAAC;AACxC;AAEO,eAAeC,OAAO,CAC3BL,UAAgC,EAChCC,OAAuB,GAAG,CAAC,CAAC,EACH;EAEzB,IAAI,CAACF,UAAU,CAACC,UAAU,EAAEC,OAAO,CAAC,EAAE;IACpC,MAAM,IAAIK,oBAAY,CAAC,0DAA0D,CAAC;EACpF;EAEA,IAAI;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAGP,OAAO;EAC7B,IAAI,CAACM,IAAI,EAAE;IACT,MAAML,IAAI,GAAG,IAAAC,wCAAuB,EAACH,UAAU,EAAE;MAAEQ;IAAM,CAAC,CAAC;IAC3DD,IAAI,GAAGL,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEK,IAAI;EACnB;EAEA,OAAO,IAAAE,QAAG,EAACT,UAAU,EAAE;IACrB,GAAGC,OAAO;IACVM;EACF,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"proceed.js","names":["canProceed","authClient","options","meta","getSavedTransactionMeta","stateHandle","proceed","AuthSdkError","flow","state","run"],"sources":["../../../lib/idx/proceed.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { \n OktaAuthIdxInterface,\n IdxTransaction,\n ProceedOptions,\n} from './types';\nimport { run } from './run';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { AuthSdkError } from '../errors';\n\nexport function canProceed(authClient: OktaAuthIdxInterface, options: ProceedOptions = {}): boolean {\n const meta = getSavedTransactionMeta(authClient, options);\n return !!(meta || options.stateHandle);\n}\n\nexport async function proceed(\n authClient: OktaAuthIdxInterface,\n options: ProceedOptions = {}\n): Promise<IdxTransaction> {\n\n if (!canProceed(authClient, options)) {\n throw new AuthSdkError('Unable to proceed: saved transaction could not be loaded');\n }\n\n let { flow, state } = options;\n if (!flow) {\n const meta = getSavedTransactionMeta(authClient, { state });\n flow = meta?.flow;\n }\n\n return run(authClient, { \n ...options, \n flow\n });\n}\n"],"mappings":";;;;AAkBA;AACA;AACA;AApBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAYO,SAASA,UAAU,CAACC,UAAgC,EAAEC,OAAuB,GAAG,CAAC,CAAC,EAAW;EAClG,MAAMC,IAAI,GAAG,IAAAC,wCAAuB,EAACH,UAAU,EAAEC,OAAO,CAAC;EACzD,OAAO,CAAC,EAAEC,IAAI,IAAID,OAAO,CAACG,WAAW,CAAC;AACxC;AAEO,eAAeC,OAAO,CAC3BL,UAAgC,EAChCC,OAAuB,GAAG,CAAC,CAAC,EACH;EAEzB,IAAI,CAACF,UAAU,CAACC,UAAU,EAAEC,OAAO,CAAC,EAAE;IACpC,MAAM,IAAIK,oBAAY,CAAC,0DAA0D,CAAC;EACpF;EAEA,IAAI;IAAEC,IAAI;IAAEC;EAAM,CAAC,GAAGP,OAAO;EAC7B,IAAI,CAACM,IAAI,EAAE;IACT,MAAML,IAAI,GAAG,IAAAC,wCAAuB,EAACH,UAAU,EAAE;MAAEQ;IAAM,CAAC,CAAC;IAC3DD,IAAI,GAAGL,IAAI,EAAEK,IAAI;EACnB;EAEA,OAAO,IAAAE,QAAG,EAACT,UAAU,EAAE;IACrB,GAAGC,OAAO;IACVM;EACF,CAAC,CAAC;AACJ"}
@@ -55,7 +55,7 @@ class AuthenticatorData extends _Remediator.Remediator {
55
55
  authenticator
56
56
  } = this.values;
57
57
  if (!methodType && (0, _api.isAuthenticator)(authenticator)) {
58
- methodType = authenticator === null || authenticator === void 0 ? void 0 : authenticator.methodType;
58
+ methodType = authenticator?.methodType;
59
59
  }
60
60
  const {
61
61
  id,
@@ -1 +1 @@
1
- {"version":3,"file":"AuthenticatorData.js","names":["AuthenticatorData","Remediator","constructor","remediation","values","authenticator","getAuthenticator","formatAuthenticatorData","authenticatorData","getAuthenticatorData","authenticatorsData","map","data","compareAuthenticators","mapAuthenticatorDataFromValues","push","find","canRemediate","some","methodType","isAuthenticator","id","enrollmentId","getAuthenticatorFromRemediation","value","name","getValuesAfterProceed","filter"],"sources":["../../../../../lib/idx/remediators/Base/AuthenticatorData.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { IdxRemediationValue, IdxRemediation, IdxAuthenticator } from '../../types/idx-js';\nimport { isAuthenticator } from '../../types/api';\nimport { compareAuthenticators } from '../../authenticator/util';\n\nexport type AuthenticatorDataValues = RemediationValues & {\n methodType?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class AuthenticatorData<T extends AuthenticatorDataValues = AuthenticatorDataValues> extends Remediator<T> {\n authenticator: IdxAuthenticator;\n\n constructor(remediation: IdxRemediation, values: T = {} as T) {\n super(remediation, values);\n\n // set before other data calculation\n this.authenticator = this.getAuthenticator()!;\n\n this.formatAuthenticatorData();\n }\n\n protected formatAuthenticatorData() {\n const authenticatorData = this.getAuthenticatorData();\n if (authenticatorData) {\n this.values.authenticatorsData = this.values.authenticatorsData!.map(data => {\n if (compareAuthenticators(this.authenticator, data)) {\n return this.mapAuthenticatorDataFromValues(data);\n }\n return data;\n });\n } else {\n const data = this.mapAuthenticatorDataFromValues();\n if (data) {\n this.values.authenticatorsData!.push(data);\n }\n }\n }\n\n protected getAuthenticatorData() {\n return this.values.authenticatorsData!\n .find((data) => compareAuthenticators(this.authenticator, data));\n }\n\n canRemediate() {\n return this.values.authenticatorsData!\n .some(data => compareAuthenticators(this.authenticator, data));\n }\n\n protected mapAuthenticatorDataFromValues(authenticatorData?) {\n // add methodType to authenticatorData if it exists in values\n let { methodType, authenticator } = this.values;\n if (!methodType && isAuthenticator(authenticator)) {\n methodType = authenticator?.methodType;\n }\n \n const { id, enrollmentId } = this.authenticator;\n const data = { \n id,\n enrollmentId,\n ...(authenticatorData && authenticatorData),\n ...(methodType && { methodType }) \n };\n\n return data.methodType ? data : null;\n }\n\n protected getAuthenticatorFromRemediation(): IdxRemediationValue {\n const authenticator = this.remediation.value!\n .find(({ name }) => name === 'authenticator') as IdxRemediationValue;\n return authenticator;\n }\n\n getValuesAfterProceed(): T {\n this.values = super.getValuesAfterProceed();\n // remove used authenticatorData\n const authenticatorsData = this.values.authenticatorsData!\n .filter(data => compareAuthenticators(this.authenticator, data) !== true);\n return { ...this.values, authenticatorsData };\n }\n}\n"],"mappings":";;;AAaA;AAEA;AACA;AAhBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA;AACO,MAAMA,iBAAiB,SAAsEC,sBAAU,CAAI;EAGhHC,WAAW,CAACC,WAA2B,EAAEC,MAAS,GAAG,CAAC,CAAM,EAAE;IAC5D,KAAK,CAACD,WAAW,EAAEC,MAAM,CAAC;;IAE1B;IACA,IAAI,CAACC,aAAa,GAAG,IAAI,CAACC,gBAAgB,EAAG;IAE7C,IAAI,CAACC,uBAAuB,EAAE;EAChC;EAEUA,uBAAuB,GAAG;IAClC,MAAMC,iBAAiB,GAAG,IAAI,CAACC,oBAAoB,EAAE;IACrD,IAAID,iBAAiB,EAAE;MACrB,IAAI,CAACJ,MAAM,CAACM,kBAAkB,GAAG,IAAI,CAACN,MAAM,CAACM,kBAAkB,CAAEC,GAAG,CAACC,IAAI,IAAI;QAC3E,IAAI,IAAAC,2BAAqB,EAAC,IAAI,CAACR,aAAa,EAAEO,IAAI,CAAC,EAAE;UACnD,OAAO,IAAI,CAACE,8BAA8B,CAACF,IAAI,CAAC;QAClD;QACA,OAAOA,IAAI;MACb,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,MAAMA,IAAI,GAAG,IAAI,CAACE,8BAA8B,EAAE;MAClD,IAAIF,IAAI,EAAE;QACR,IAAI,CAACR,MAAM,CAACM,kBAAkB,CAAEK,IAAI,CAACH,IAAI,CAAC;MAC5C;IACF;EACF;EAEUH,oBAAoB,GAAG;IAC/B,OAAO,IAAI,CAACL,MAAM,CAACM,kBAAkB,CAClCM,IAAI,CAAEJ,IAAI,IAAK,IAAAC,2BAAqB,EAAC,IAAI,CAACR,aAAa,EAAEO,IAAI,CAAC,CAAC;EACpE;EAEAK,YAAY,GAAG;IACb,OAAO,IAAI,CAACb,MAAM,CAACM,kBAAkB,CAClCQ,IAAI,CAACN,IAAI,IAAI,IAAAC,2BAAqB,EAAC,IAAI,CAACR,aAAa,EAAEO,IAAI,CAAC,CAAC;EAClE;EAEUE,8BAA8B,CAACN,iBAAkB,EAAE;IAC3D;IACA,IAAI;MAAEW,UAAU;MAAEd;IAAc,CAAC,GAAG,IAAI,CAACD,MAAM;IAC/C,IAAI,CAACe,UAAU,IAAI,IAAAC,oBAAe,EAACf,aAAa,CAAC,EAAE;MAClDc,UAAU,GAAGd,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEc,UAAU;IACvC;IAEA,MAAM;MAAEE,EAAE;MAAEC;IAAa,CAAC,GAAG,IAAI,CAACjB,aAAa;IAC/C,MAAMO,IAAI,GAAG;MACXS,EAAE;MACFC,YAAY;MACZ,IAAId,iBAAiB,IAAIA,iBAAiB,CAAC;MAC3C,IAAIW,UAAU,IAAI;QAAEA;MAAW,CAAC;IAClC,CAAC;IAED,OAAOP,IAAI,CAACO,UAAU,GAAGP,IAAI,GAAG,IAAI;EACtC;EAEUW,+BAA+B,GAAwB;IAC/D,MAAMlB,aAAa,GAAG,IAAI,CAACF,WAAW,CAACqB,KAAK,CACzCR,IAAI,CAAC,CAAC;MAAES;IAAK,CAAC,KAAKA,IAAI,KAAK,eAAe,CAAwB;IACtE,OAAOpB,aAAa;EACtB;EAEAqB,qBAAqB,GAAM;IACzB,IAAI,CAACtB,MAAM,GAAG,KAAK,CAACsB,qBAAqB,EAAE;IAC3C;IACA,MAAMhB,kBAAkB,GAAG,IAAI,CAACN,MAAM,CAACM,kBAAkB,CACtDiB,MAAM,CAACf,IAAI,IAAI,IAAAC,2BAAqB,EAAC,IAAI,CAACR,aAAa,EAAEO,IAAI,CAAC,KAAK,IAAI,CAAC;IAC3E,OAAO;MAAE,GAAG,IAAI,CAACR,MAAM;MAAEM;IAAmB,CAAC;EAC/C;AACF;AAAC"}
1
+ {"version":3,"file":"AuthenticatorData.js","names":["AuthenticatorData","Remediator","constructor","remediation","values","authenticator","getAuthenticator","formatAuthenticatorData","authenticatorData","getAuthenticatorData","authenticatorsData","map","data","compareAuthenticators","mapAuthenticatorDataFromValues","push","find","canRemediate","some","methodType","isAuthenticator","id","enrollmentId","getAuthenticatorFromRemediation","value","name","getValuesAfterProceed","filter"],"sources":["../../../../../lib/idx/remediators/Base/AuthenticatorData.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Remediator, RemediationValues } from './Remediator';\nimport { IdxRemediationValue, IdxRemediation, IdxAuthenticator } from '../../types/idx-js';\nimport { isAuthenticator } from '../../types/api';\nimport { compareAuthenticators } from '../../authenticator/util';\n\nexport type AuthenticatorDataValues = RemediationValues & {\n methodType?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class AuthenticatorData<T extends AuthenticatorDataValues = AuthenticatorDataValues> extends Remediator<T> {\n authenticator: IdxAuthenticator;\n\n constructor(remediation: IdxRemediation, values: T = {} as T) {\n super(remediation, values);\n\n // set before other data calculation\n this.authenticator = this.getAuthenticator()!;\n\n this.formatAuthenticatorData();\n }\n\n protected formatAuthenticatorData() {\n const authenticatorData = this.getAuthenticatorData();\n if (authenticatorData) {\n this.values.authenticatorsData = this.values.authenticatorsData!.map(data => {\n if (compareAuthenticators(this.authenticator, data)) {\n return this.mapAuthenticatorDataFromValues(data);\n }\n return data;\n });\n } else {\n const data = this.mapAuthenticatorDataFromValues();\n if (data) {\n this.values.authenticatorsData!.push(data);\n }\n }\n }\n\n protected getAuthenticatorData() {\n return this.values.authenticatorsData!\n .find((data) => compareAuthenticators(this.authenticator, data));\n }\n\n canRemediate() {\n return this.values.authenticatorsData!\n .some(data => compareAuthenticators(this.authenticator, data));\n }\n\n protected mapAuthenticatorDataFromValues(authenticatorData?) {\n // add methodType to authenticatorData if it exists in values\n let { methodType, authenticator } = this.values;\n if (!methodType && isAuthenticator(authenticator)) {\n methodType = authenticator?.methodType;\n }\n \n const { id, enrollmentId } = this.authenticator;\n const data = { \n id,\n enrollmentId,\n ...(authenticatorData && authenticatorData),\n ...(methodType && { methodType }) \n };\n\n return data.methodType ? data : null;\n }\n\n protected getAuthenticatorFromRemediation(): IdxRemediationValue {\n const authenticator = this.remediation.value!\n .find(({ name }) => name === 'authenticator') as IdxRemediationValue;\n return authenticator;\n }\n\n getValuesAfterProceed(): T {\n this.values = super.getValuesAfterProceed();\n // remove used authenticatorData\n const authenticatorsData = this.values.authenticatorsData!\n .filter(data => compareAuthenticators(this.authenticator, data) !== true);\n return { ...this.values, authenticatorsData };\n }\n}\n"],"mappings":";;;AAaA;AAEA;AACA;AAhBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA;AACO,MAAMA,iBAAiB,SAAsEC,sBAAU,CAAI;EAGhHC,WAAW,CAACC,WAA2B,EAAEC,MAAS,GAAG,CAAC,CAAM,EAAE;IAC5D,KAAK,CAACD,WAAW,EAAEC,MAAM,CAAC;;IAE1B;IACA,IAAI,CAACC,aAAa,GAAG,IAAI,CAACC,gBAAgB,EAAG;IAE7C,IAAI,CAACC,uBAAuB,EAAE;EAChC;EAEUA,uBAAuB,GAAG;IAClC,MAAMC,iBAAiB,GAAG,IAAI,CAACC,oBAAoB,EAAE;IACrD,IAAID,iBAAiB,EAAE;MACrB,IAAI,CAACJ,MAAM,CAACM,kBAAkB,GAAG,IAAI,CAACN,MAAM,CAACM,kBAAkB,CAAEC,GAAG,CAACC,IAAI,IAAI;QAC3E,IAAI,IAAAC,2BAAqB,EAAC,IAAI,CAACR,aAAa,EAAEO,IAAI,CAAC,EAAE;UACnD,OAAO,IAAI,CAACE,8BAA8B,CAACF,IAAI,CAAC;QAClD;QACA,OAAOA,IAAI;MACb,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,MAAMA,IAAI,GAAG,IAAI,CAACE,8BAA8B,EAAE;MAClD,IAAIF,IAAI,EAAE;QACR,IAAI,CAACR,MAAM,CAACM,kBAAkB,CAAEK,IAAI,CAACH,IAAI,CAAC;MAC5C;IACF;EACF;EAEUH,oBAAoB,GAAG;IAC/B,OAAO,IAAI,CAACL,MAAM,CAACM,kBAAkB,CAClCM,IAAI,CAAEJ,IAAI,IAAK,IAAAC,2BAAqB,EAAC,IAAI,CAACR,aAAa,EAAEO,IAAI,CAAC,CAAC;EACpE;EAEAK,YAAY,GAAG;IACb,OAAO,IAAI,CAACb,MAAM,CAACM,kBAAkB,CAClCQ,IAAI,CAACN,IAAI,IAAI,IAAAC,2BAAqB,EAAC,IAAI,CAACR,aAAa,EAAEO,IAAI,CAAC,CAAC;EAClE;EAEUE,8BAA8B,CAACN,iBAAkB,EAAE;IAC3D;IACA,IAAI;MAAEW,UAAU;MAAEd;IAAc,CAAC,GAAG,IAAI,CAACD,MAAM;IAC/C,IAAI,CAACe,UAAU,IAAI,IAAAC,oBAAe,EAACf,aAAa,CAAC,EAAE;MAClDc,UAAU,GAAGd,aAAa,EAAEc,UAAU;IACvC;IAEA,MAAM;MAAEE,EAAE;MAAEC;IAAa,CAAC,GAAG,IAAI,CAACjB,aAAa;IAC/C,MAAMO,IAAI,GAAG;MACXS,EAAE;MACFC,YAAY;MACZ,IAAId,iBAAiB,IAAIA,iBAAiB,CAAC;MAC3C,IAAIW,UAAU,IAAI;QAAEA;MAAW,CAAC;IAClC,CAAC;IAED,OAAOP,IAAI,CAACO,UAAU,GAAGP,IAAI,GAAG,IAAI;EACtC;EAEUW,+BAA+B,GAAwB;IAC/D,MAAMlB,aAAa,GAAG,IAAI,CAACF,WAAW,CAACqB,KAAK,CACzCR,IAAI,CAAC,CAAC;MAAES;IAAK,CAAC,KAAKA,IAAI,KAAK,eAAe,CAAwB;IACtE,OAAOpB,aAAa;EACtB;EAEAqB,qBAAqB,GAAM;IACzB,IAAI,CAACtB,MAAM,GAAG,KAAK,CAACsB,qBAAqB,EAAE;IAC3C;IACA,MAAMhB,kBAAkB,GAAG,IAAI,CAACN,MAAM,CAACM,kBAAkB,CACtDiB,MAAM,CAACf,IAAI,IAAI,IAAAC,2BAAqB,EAAC,IAAI,CAACR,aAAa,EAAEO,IAAI,CAAC,KAAK,IAAI,CAAC;IAC3E,OAAO;MAAE,GAAG,IAAI,CAACR,MAAM;MAAEM;IAAmB,CAAC;EAC/C;AACF;AAAC"}
@@ -121,7 +121,7 @@ class Remediator {
121
121
  const authenticator = this.getAuthenticator();
122
122
  // TODO: remove type field in the next major version change
123
123
  // https://oktainc.atlassian.net/browse/OKTA-431749
124
- const type = authenticator === null || authenticator === void 0 ? void 0 : authenticator.type;
124
+ const type = authenticator?.type;
125
125
  return {
126
126
  name,
127
127
  inputs,
@@ -185,11 +185,10 @@ class Remediator {
185
185
  return inputs;
186
186
  }
187
187
  static getMessages(remediation) {
188
- var _remediation$value$, _remediation$value$$f;
189
188
  if (!remediation.value) {
190
189
  return;
191
190
  }
192
- return (_remediation$value$ = remediation.value[0]) === null || _remediation$value$ === void 0 ? void 0 : (_remediation$value$$f = _remediation$value$.form) === null || _remediation$value$$f === void 0 ? void 0 : _remediation$value$$f.value.reduce((messages, field) => {
191
+ return remediation.value[0]?.form?.value.reduce((messages, field) => {
193
192
  if (field.messages) {
194
193
  messages = [...messages, ...field.messages.value];
195
194
  }
@@ -211,9 +210,8 @@ class Remediator {
211
210
  return this.values;
212
211
  }
213
212
  getAuthenticator() {
214
- var _this$remediation$rel, _value$find;
215
213
  // relatesTo value may be an authenticator or an authenticatorEnrollment
216
- const relatesTo = (_this$remediation$rel = this.remediation.relatesTo) === null || _this$remediation$rel === void 0 ? void 0 : _this$remediation$rel.value;
214
+ const relatesTo = this.remediation.relatesTo?.value;
217
215
  if (!relatesTo) {
218
216
  return;
219
217
  }
@@ -228,9 +226,9 @@ class Remediator {
228
226
  const id = authenticatorFromRemediation.form.value.find(({
229
227
  name
230
228
  }) => name === 'id').value;
231
- const enrollmentId = (_value$find = authenticatorFromRemediation.form.value.find(({
229
+ const enrollmentId = authenticatorFromRemediation.form.value.find(({
232
230
  name
233
- }) => name === 'enrollmentId')) === null || _value$find === void 0 ? void 0 : _value$find.value;
231
+ }) => name === 'enrollmentId')?.value;
234
232
  return {
235
233
  ...relatesTo,
236
234
  id,
@@ -1 +1 @@
1
- {"version":3,"file":"Remediator.js","names":["Remediator","constructor","remediation","values","options","formatAuthenticators","authenticators","map","authenticator","formatAuthenticator","hasAuthenticatorInList","some","existing","compareAuthenticators","push","authenticatorsData","reduce","acc","Object","keys","length","getName","name","canRemediate","context","required","getRequiredValues","needed","find","key","hasData","getData","allValues","getAllValues","res","data","titleCase","val","value","entry","i","getNextStep","_authClient","_context","inputs","getInputs","getAuthenticator","type","inputsFromRemediation","forEach","inputFromRemediation","input","visible","messages","alias","aliases","includes","Array","isArray","getMessages","form","field","getValuesAfterProceed","inputsFromRemediator","relatesTo","authenticatorFromRemediation","getAuthenticatorFromRemediation","id","enrollmentId"],"sources":["../../../../../lib/idx/remediators/Base/Remediator.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable complexity */\nimport { OktaAuthIdxInterface, NextStep, IdxMessage, Authenticator, Input, RemediateOptions } from '../../types';\nimport { IdxAuthenticator, IdxRemediation, IdxContext } from '../../types/idx-js';\nimport { getAllValues, getRequiredValues, titleCase, getAuthenticatorFromRemediation } from '../util';\nimport { formatAuthenticator, compareAuthenticators } from '../../authenticator/util';\n\n// A map from IDX data values (server spec) to RemediationValues (client spec)\nexport type IdxToRemediationValueMap = Record<string, string[]>;\n\nexport interface RemediationValues {\n stateHandle?: string;\n authenticators?: (Authenticator | string)[];\n authenticator?: string | Authenticator;\n authenticatorsData?: Authenticator[];\n resend?: boolean;\n}\n\nexport interface RemediatorConstructor {\n remediationName: string;\n new<T extends RemediationValues>(\n remediation: IdxRemediation, \n values?: T, \n options?: RemediateOptions\n ): any;\n}\n\n// Base class - DO NOT expose static remediationName\nexport class Remediator<T extends RemediationValues = RemediationValues> {\n static remediationName: string;\n\n remediation: IdxRemediation;\n values: T;\n options: RemediateOptions;\n map?: IdxToRemediationValueMap;\n\n constructor(\n remediation: IdxRemediation, \n values: T = {} as T, \n options: RemediateOptions = {}\n ) {\n // assign fields to the instance\n this.values = { ...values };\n this.options = { ...options };\n this.formatAuthenticators();\n this.remediation = remediation;\n }\n\n private formatAuthenticators() {\n this.values.authenticators = (this.values.authenticators || []) as Authenticator[];\n\n // ensure authenticators are in the correct format\n this.values.authenticators = this.values.authenticators.map(authenticator => {\n return formatAuthenticator(authenticator);\n });\n\n // add authenticator (if any) to \"authenticators\"\n if (this.values.authenticator) {\n const authenticator = formatAuthenticator(this.values.authenticator);\n const hasAuthenticatorInList = this.values.authenticators.some(existing => {\n return compareAuthenticators(authenticator, existing);\n });\n if (!hasAuthenticatorInList) {\n this.values.authenticators.push(authenticator);\n }\n }\n\n // save non-key meta to \"authenticatorsData\" field\n // authenticators will be removed after selection to avoid select-authenticator loop\n this.values.authenticatorsData = this.values.authenticators.reduce((acc, authenticator) => {\n if (typeof authenticator === 'object' && Object.keys(authenticator).length > 1) {\n // save authenticator meta into authenticator data\n acc.push(authenticator);\n }\n return acc;\n }, this.values.authenticatorsData || []);\n }\n\n getName(): string {\n return this.remediation.name;\n }\n\n // Override this method to provide custom check\n /* eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars */\n canRemediate(context?: IdxContext): boolean {\n const required = getRequiredValues(this.remediation);\n const needed = required!.find((key) => !this.hasData(key));\n if (needed) {\n return false; // missing data for a required field\n }\n return true; // all required fields have available data\n }\n\n // returns an object for the entire remediation form, or just a part\n getData(key?: string) {\n if (!key) {\n let allValues = getAllValues(this.remediation);\n let res = allValues!.reduce((data, key) => {\n data[key] = this.getData(key); // recursive\n return data;\n }, {});\n return res;\n }\n\n // Map value by \"map${Property}\" function in each subClass\n if (typeof this[`map${titleCase(key)}`] === 'function') {\n const val = this[`map${titleCase(key)}`](\n this.remediation.value!.find(({name}) => name === key)\n );\n if (val) {\n return val;\n }\n }\n\n // If a map is defined for this key, return the first aliased property that returns a truthy value\n if (this.map && this.map[key]) {\n const entry = this.map[key];\n for (let i = 0; i < entry.length; i++) {\n let val = this.values[entry[i]];\n if (val) {\n return val;\n }\n }\n }\n\n // fallback: return the value by key\n return this.values[key];\n }\n\n hasData(\n key: string // idx name\n ): boolean \n {\n // no attempt to format, we want simple true/false\n return !!this.getData(key);\n }\n\n getNextStep(_authClient: OktaAuthIdxInterface, _context?: IdxContext): NextStep {\n const name = this.getName();\n const inputs = this.getInputs();\n const authenticator = this.getAuthenticator();\n // TODO: remove type field in the next major version change\n // https://oktainc.atlassian.net/browse/OKTA-431749\n const type = authenticator?.type;\n return { \n name, \n inputs, \n ...(type && { type }),\n ...(authenticator && { authenticator }),\n };\n }\n\n // Get inputs for the next step\n getInputs(): Input[] {\n const inputs: Input[] = [];\n const inputsFromRemediation = this.remediation.value || [];\n inputsFromRemediation.forEach(inputFromRemediation => {\n let input;\n let { name, type, visible, messages } = inputFromRemediation;\n if (visible === false) {\n return; // Filter out invisible inputs, like stateHandle\n }\n if (typeof this[`getInput${titleCase(name)}`] === 'function') {\n input = this[`getInput${titleCase(name)}`](inputFromRemediation);\n } else if (type !== 'object') {\n // handle general primitive types\n let alias;\n const aliases = (this.map ? this.map[name] : null) || [];\n if (aliases.length === 1) {\n alias = aliases[0];\n } else {\n // try find key from values\n alias = aliases.find(name => Object.keys(this.values).includes(name));\n }\n if (alias) {\n input = { ...inputFromRemediation, name: alias };\n }\n }\n if (!input) {\n input = inputFromRemediation;\n }\n if (Array.isArray(input)) {\n input.forEach(i => inputs.push(i));\n } else {\n // guarantees field-level messages are passed back\n if (messages) {\n input.messages = messages;\n }\n inputs.push(input);\n }\n });\n return inputs;\n }\n\n static getMessages(remediation: IdxRemediation): IdxMessage[] | undefined {\n if (!remediation.value) {\n return;\n }\n return remediation.value[0]?.form?.value.reduce((messages: IdxMessage[], field) => {\n if (field.messages) {\n messages = [...messages, ...field.messages.value];\n }\n return messages;\n }, []);\n }\n\n // Prepare values for the next remediation\n // In general, remove used values from inputs for the current remediation\n // Override this method if special cases need be handled\n getValuesAfterProceed(): T {\n const inputsFromRemediation = this.remediation.value || []; // \"raw\" inputs from server response\n const inputsFromRemediator = this.getInputs(); // \"aliased\" inputs from SDK remediator\n const inputs = [\n ...inputsFromRemediation,\n ...inputsFromRemediator\n ];\n // scrub all values related to this remediation\n for (const input of inputs) {\n delete this.values[input.name];\n }\n return this.values;\n }\n\n protected getAuthenticator(): IdxAuthenticator | undefined {\n // relatesTo value may be an authenticator or an authenticatorEnrollment\n const relatesTo = this.remediation.relatesTo?.value;\n if (!relatesTo) {\n return;\n }\n\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n if (!authenticatorFromRemediation) {\n // Hopefully value is an authenticator\n return relatesTo;\n }\n\n // If relatesTo is an authenticatorEnrollment, the id is actually the enrollmentId\n // Let's get the correct authenticator id from the form value\n const id = authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'id')!.value as string;\n const enrollmentId = authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'enrollmentId')?.value as string;\n\n return {\n ...relatesTo,\n id,\n enrollmentId\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Remediator.js","names":["Remediator","constructor","remediation","values","options","formatAuthenticators","authenticators","map","authenticator","formatAuthenticator","hasAuthenticatorInList","some","existing","compareAuthenticators","push","authenticatorsData","reduce","acc","Object","keys","length","getName","name","canRemediate","context","required","getRequiredValues","needed","find","key","hasData","getData","allValues","getAllValues","res","data","titleCase","val","value","entry","i","getNextStep","_authClient","_context","inputs","getInputs","getAuthenticator","type","inputsFromRemediation","forEach","inputFromRemediation","input","visible","messages","alias","aliases","includes","Array","isArray","getMessages","form","field","getValuesAfterProceed","inputsFromRemediator","relatesTo","authenticatorFromRemediation","getAuthenticatorFromRemediation","id","enrollmentId"],"sources":["../../../../../lib/idx/remediators/Base/Remediator.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable complexity */\nimport { OktaAuthIdxInterface, NextStep, IdxMessage, Authenticator, Input, RemediateOptions } from '../../types';\nimport { IdxAuthenticator, IdxRemediation, IdxContext } from '../../types/idx-js';\nimport { getAllValues, getRequiredValues, titleCase, getAuthenticatorFromRemediation } from '../util';\nimport { formatAuthenticator, compareAuthenticators } from '../../authenticator/util';\n\n// A map from IDX data values (server spec) to RemediationValues (client spec)\nexport type IdxToRemediationValueMap = Record<string, string[]>;\n\nexport interface RemediationValues {\n stateHandle?: string;\n authenticators?: (Authenticator | string)[];\n authenticator?: string | Authenticator;\n authenticatorsData?: Authenticator[];\n resend?: boolean;\n}\n\nexport interface RemediatorConstructor {\n remediationName: string;\n new<T extends RemediationValues>(\n remediation: IdxRemediation, \n values?: T, \n options?: RemediateOptions\n ): any;\n}\n\n// Base class - DO NOT expose static remediationName\nexport class Remediator<T extends RemediationValues = RemediationValues> {\n static remediationName: string;\n\n remediation: IdxRemediation;\n values: T;\n options: RemediateOptions;\n map?: IdxToRemediationValueMap;\n\n constructor(\n remediation: IdxRemediation, \n values: T = {} as T, \n options: RemediateOptions = {}\n ) {\n // assign fields to the instance\n this.values = { ...values };\n this.options = { ...options };\n this.formatAuthenticators();\n this.remediation = remediation;\n }\n\n private formatAuthenticators() {\n this.values.authenticators = (this.values.authenticators || []) as Authenticator[];\n\n // ensure authenticators are in the correct format\n this.values.authenticators = this.values.authenticators.map(authenticator => {\n return formatAuthenticator(authenticator);\n });\n\n // add authenticator (if any) to \"authenticators\"\n if (this.values.authenticator) {\n const authenticator = formatAuthenticator(this.values.authenticator);\n const hasAuthenticatorInList = this.values.authenticators.some(existing => {\n return compareAuthenticators(authenticator, existing);\n });\n if (!hasAuthenticatorInList) {\n this.values.authenticators.push(authenticator);\n }\n }\n\n // save non-key meta to \"authenticatorsData\" field\n // authenticators will be removed after selection to avoid select-authenticator loop\n this.values.authenticatorsData = this.values.authenticators.reduce((acc, authenticator) => {\n if (typeof authenticator === 'object' && Object.keys(authenticator).length > 1) {\n // save authenticator meta into authenticator data\n acc.push(authenticator);\n }\n return acc;\n }, this.values.authenticatorsData || []);\n }\n\n getName(): string {\n return this.remediation.name;\n }\n\n // Override this method to provide custom check\n /* eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars */\n canRemediate(context?: IdxContext): boolean {\n const required = getRequiredValues(this.remediation);\n const needed = required!.find((key) => !this.hasData(key));\n if (needed) {\n return false; // missing data for a required field\n }\n return true; // all required fields have available data\n }\n\n // returns an object for the entire remediation form, or just a part\n getData(key?: string) {\n if (!key) {\n let allValues = getAllValues(this.remediation);\n let res = allValues!.reduce((data, key) => {\n data[key] = this.getData(key); // recursive\n return data;\n }, {});\n return res;\n }\n\n // Map value by \"map${Property}\" function in each subClass\n if (typeof this[`map${titleCase(key)}`] === 'function') {\n const val = this[`map${titleCase(key)}`](\n this.remediation.value!.find(({name}) => name === key)\n );\n if (val) {\n return val;\n }\n }\n\n // If a map is defined for this key, return the first aliased property that returns a truthy value\n if (this.map && this.map[key]) {\n const entry = this.map[key];\n for (let i = 0; i < entry.length; i++) {\n let val = this.values[entry[i]];\n if (val) {\n return val;\n }\n }\n }\n\n // fallback: return the value by key\n return this.values[key];\n }\n\n hasData(\n key: string // idx name\n ): boolean \n {\n // no attempt to format, we want simple true/false\n return !!this.getData(key);\n }\n\n getNextStep(_authClient: OktaAuthIdxInterface, _context?: IdxContext): NextStep {\n const name = this.getName();\n const inputs = this.getInputs();\n const authenticator = this.getAuthenticator();\n // TODO: remove type field in the next major version change\n // https://oktainc.atlassian.net/browse/OKTA-431749\n const type = authenticator?.type;\n return { \n name, \n inputs, \n ...(type && { type }),\n ...(authenticator && { authenticator }),\n };\n }\n\n // Get inputs for the next step\n getInputs(): Input[] {\n const inputs: Input[] = [];\n const inputsFromRemediation = this.remediation.value || [];\n inputsFromRemediation.forEach(inputFromRemediation => {\n let input;\n let { name, type, visible, messages } = inputFromRemediation;\n if (visible === false) {\n return; // Filter out invisible inputs, like stateHandle\n }\n if (typeof this[`getInput${titleCase(name)}`] === 'function') {\n input = this[`getInput${titleCase(name)}`](inputFromRemediation);\n } else if (type !== 'object') {\n // handle general primitive types\n let alias;\n const aliases = (this.map ? this.map[name] : null) || [];\n if (aliases.length === 1) {\n alias = aliases[0];\n } else {\n // try find key from values\n alias = aliases.find(name => Object.keys(this.values).includes(name));\n }\n if (alias) {\n input = { ...inputFromRemediation, name: alias };\n }\n }\n if (!input) {\n input = inputFromRemediation;\n }\n if (Array.isArray(input)) {\n input.forEach(i => inputs.push(i));\n } else {\n // guarantees field-level messages are passed back\n if (messages) {\n input.messages = messages;\n }\n inputs.push(input);\n }\n });\n return inputs;\n }\n\n static getMessages(remediation: IdxRemediation): IdxMessage[] | undefined {\n if (!remediation.value) {\n return;\n }\n return remediation.value[0]?.form?.value.reduce((messages: IdxMessage[], field) => {\n if (field.messages) {\n messages = [...messages, ...field.messages.value];\n }\n return messages;\n }, []);\n }\n\n // Prepare values for the next remediation\n // In general, remove used values from inputs for the current remediation\n // Override this method if special cases need be handled\n getValuesAfterProceed(): T {\n const inputsFromRemediation = this.remediation.value || []; // \"raw\" inputs from server response\n const inputsFromRemediator = this.getInputs(); // \"aliased\" inputs from SDK remediator\n const inputs = [\n ...inputsFromRemediation,\n ...inputsFromRemediator\n ];\n // scrub all values related to this remediation\n for (const input of inputs) {\n delete this.values[input.name];\n }\n return this.values;\n }\n\n protected getAuthenticator(): IdxAuthenticator | undefined {\n // relatesTo value may be an authenticator or an authenticatorEnrollment\n const relatesTo = this.remediation.relatesTo?.value;\n if (!relatesTo) {\n return;\n }\n\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n if (!authenticatorFromRemediation) {\n // Hopefully value is an authenticator\n return relatesTo;\n }\n\n // If relatesTo is an authenticatorEnrollment, the id is actually the enrollmentId\n // Let's get the correct authenticator id from the form value\n const id = authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'id')!.value as string;\n const enrollmentId = authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'enrollmentId')?.value as string;\n\n return {\n ...relatesTo,\n id,\n enrollmentId\n };\n }\n}\n"],"mappings":"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"}
@@ -57,10 +57,9 @@ class SelectAuthenticator extends _Remediator.Remediator {
57
57
  // Proceed with provided authenticators
58
58
  const matchedOption = this.findMatchedOption(authenticators, options);
59
59
  if (matchedOption) {
60
- var _matchedOption$relate, _matchedOption$relate2;
61
60
  // Don't select current authenticator (OKTA-612939)
62
- const isCurrentAuthenticator = (context === null || context === void 0 ? void 0 : context.currentAuthenticator) && (context === null || context === void 0 ? void 0 : context.currentAuthenticator.value.id) === ((_matchedOption$relate = matchedOption.relatesTo) === null || _matchedOption$relate === void 0 ? void 0 : _matchedOption$relate.id);
63
- const isCurrentAuthenticatorEnrollment = (context === null || context === void 0 ? void 0 : context.currentAuthenticatorEnrollment) && (context === null || context === void 0 ? void 0 : context.currentAuthenticatorEnrollment.value.id) === ((_matchedOption$relate2 = matchedOption.relatesTo) === null || _matchedOption$relate2 === void 0 ? void 0 : _matchedOption$relate2.id);
61
+ const isCurrentAuthenticator = context?.currentAuthenticator && context?.currentAuthenticator.value.id === matchedOption.relatesTo?.id;
62
+ const isCurrentAuthenticatorEnrollment = context?.currentAuthenticatorEnrollment && context?.currentAuthenticatorEnrollment.value.id === matchedOption.relatesTo?.id;
64
63
  return !isCurrentAuthenticator && !isCurrentAuthenticatorEnrollment;
65
64
  }
66
65
  return false;
@@ -83,7 +82,7 @@ class SelectAuthenticator extends _Remediator.Remediator {
83
82
  this.selectedAuthenticator = selectedOption.relatesTo; // track the selected authenticator
84
83
  this.selectedOption = selectedOption;
85
84
  return {
86
- id: selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.value.form.value.find(({
85
+ id: selectedOption?.value.form.value.find(({
87
86
  name
88
87
  }) => name === 'id').value
89
88
  };