@okta/okta-auth-js 6.5.3 → 6.6.2

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 (153) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/cjs/OktaAuth.js +23 -21
  3. package/cjs/OktaAuth.js.map +1 -1
  4. package/cjs/OktaUserAgent.js +2 -2
  5. package/cjs/ServiceManager.js +9 -9
  6. package/cjs/ServiceManager.js.map +1 -1
  7. package/cjs/TokenManager.js +6 -0
  8. package/cjs/TokenManager.js.map +1 -1
  9. package/cjs/errors/index.js +5 -0
  10. package/cjs/errors/index.js.map +1 -1
  11. package/cjs/http/request.js.map +1 -1
  12. package/cjs/idx/authenticate.js.map +1 -1
  13. package/cjs/idx/cancel.js.map +1 -1
  14. package/cjs/idx/emailVerify.js.map +1 -1
  15. package/cjs/idx/flow/FlowSpecification.js.map +1 -1
  16. package/cjs/idx/idxState/index.js +1 -1
  17. package/cjs/idx/idxState/index.js.map +1 -1
  18. package/cjs/idx/idxState/v1/generateIdxAction.js +2 -4
  19. package/cjs/idx/idxState/v1/generateIdxAction.js.map +1 -1
  20. package/cjs/idx/idxState/v1/idxResponseParser.js.map +1 -1
  21. package/cjs/idx/idxState/v1/makeIdxState.js.map +1 -1
  22. package/cjs/idx/idxState/v1/remediationParser.js.map +1 -1
  23. package/cjs/idx/interact.js +1 -3
  24. package/cjs/idx/interact.js.map +1 -1
  25. package/cjs/idx/introspect.js.map +1 -1
  26. package/cjs/idx/poll.js.map +1 -1
  27. package/cjs/idx/proceed.js.map +1 -1
  28. package/cjs/idx/recoverPassword.js.map +1 -1
  29. package/cjs/idx/register.js.map +1 -1
  30. package/cjs/idx/remediate.js +8 -12
  31. package/cjs/idx/remediate.js.map +1 -1
  32. package/cjs/idx/remediators/Base/AuthenticatorData.js.map +1 -1
  33. package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
  34. package/cjs/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
  35. package/cjs/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
  36. package/cjs/idx/remediators/EnrollPoll.js.map +1 -1
  37. package/cjs/idx/remediators/EnrollmentChannelData.js.map +1 -1
  38. package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js +1 -3
  39. package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js.map +1 -1
  40. package/cjs/idx/remediators/GenericRemediator/util.js +7 -1
  41. package/cjs/idx/remediators/GenericRemediator/util.js.map +1 -1
  42. package/cjs/idx/remediators/SelectEnrollmentChannel.js.map +1 -1
  43. package/cjs/idx/run.js +8 -10
  44. package/cjs/idx/run.js.map +1 -1
  45. package/cjs/idx/startTransaction.js.map +1 -1
  46. package/cjs/idx/transactionMeta.js.map +1 -1
  47. package/cjs/idx/types/api.js.map +1 -1
  48. package/cjs/idx/unlockAccount.js.map +1 -1
  49. package/cjs/idx/util.js +22 -27
  50. package/cjs/idx/util.js.map +1 -1
  51. package/cjs/oidc/endpoints/token.js.map +1 -1
  52. package/cjs/oidc/endpoints/well-known.js.map +1 -1
  53. package/cjs/oidc/exchangeCodeForTokens.js.map +1 -1
  54. package/cjs/oidc/getToken.js.map +1 -1
  55. package/cjs/oidc/getUserInfo.js.map +1 -1
  56. package/cjs/oidc/getWithPopup.js.map +1 -1
  57. package/cjs/oidc/getWithRedirect.js.map +1 -1
  58. package/cjs/oidc/getWithoutPrompt.js.map +1 -1
  59. package/cjs/oidc/handleOAuthResponse.js +1 -3
  60. package/cjs/oidc/handleOAuthResponse.js.map +1 -1
  61. package/cjs/oidc/renewToken.js.map +1 -1
  62. package/cjs/oidc/renewTokensWithRefresh.js +26 -15
  63. package/cjs/oidc/renewTokensWithRefresh.js.map +1 -1
  64. package/cjs/oidc/revokeToken.js.map +1 -1
  65. package/cjs/oidc/util/browser.js.map +1 -1
  66. package/cjs/oidc/util/defaultTokenParams.js.map +1 -1
  67. package/cjs/oidc/util/errors.js +8 -0
  68. package/cjs/oidc/util/errors.js.map +1 -1
  69. package/cjs/oidc/util/loginRedirect.js.map +1 -1
  70. package/cjs/oidc/util/oauth.js.map +1 -1
  71. package/cjs/oidc/util/oauthMeta.js.map +1 -1
  72. package/cjs/oidc/util/prepareTokenParams.js.map +1 -1
  73. package/cjs/oidc/util/validateClaims.js.map +1 -1
  74. package/cjs/oidc/verifyToken.js.map +1 -1
  75. package/cjs/options/index.js +5 -2
  76. package/cjs/options/index.js.map +1 -1
  77. package/cjs/tx/AuthTransaction.js +1 -1
  78. package/cjs/tx/AuthTransaction.js.map +1 -1
  79. package/cjs/tx/api.js +3 -5
  80. package/cjs/tx/api.js.map +1 -1
  81. package/cjs/tx/poll.js +1 -3
  82. package/cjs/tx/poll.js.map +1 -1
  83. package/dist/okta-auth-js.min.js +1 -1
  84. package/dist/okta-auth-js.min.js.map +1 -1
  85. package/dist/okta-auth-js.umd.js +1 -1
  86. package/dist/okta-auth-js.umd.js.map +1 -1
  87. package/esm/esm.browser.js +577 -446
  88. package/esm/esm.browser.js.map +1 -1
  89. package/esm/esm.node.mjs +577 -446
  90. package/esm/esm.node.mjs.map +1 -1
  91. package/lib/OktaAuth.d.ts +4 -4
  92. package/lib/ServiceManager.d.ts +2 -2
  93. package/lib/TokenManager.d.ts +1 -0
  94. package/lib/errors/index.d.ts +2 -1
  95. package/lib/http/request.d.ts +4 -4
  96. package/lib/idx/authenticate.d.ts +2 -2
  97. package/lib/idx/cancel.d.ts +2 -2
  98. package/lib/idx/emailVerify.d.ts +2 -2
  99. package/lib/idx/flow/FlowSpecification.d.ts +2 -2
  100. package/lib/idx/idxState/index.d.ts +3 -3
  101. package/lib/idx/idxState/v1/generateIdxAction.d.ts +2 -2
  102. package/lib/idx/idxState/v1/idxResponseParser.d.ts +3 -3
  103. package/lib/idx/idxState/v1/makeIdxState.d.ts +3 -3
  104. package/lib/idx/idxState/v1/remediationParser.d.ts +2 -2
  105. package/lib/idx/interact.d.ts +2 -2
  106. package/lib/idx/introspect.d.ts +2 -2
  107. package/lib/idx/poll.d.ts +2 -2
  108. package/lib/idx/proceed.d.ts +3 -3
  109. package/lib/idx/recoverPassword.d.ts +2 -2
  110. package/lib/idx/register.d.ts +2 -2
  111. package/lib/idx/remediate.d.ts +2 -2
  112. package/lib/idx/remediators/Base/AuthenticatorData.d.ts +2 -2
  113. package/lib/idx/remediators/Base/Remediator.d.ts +2 -2
  114. package/lib/idx/remediators/Base/SelectAuthenticator.d.ts +2 -2
  115. package/lib/idx/remediators/Base/VerifyAuthenticator.d.ts +2 -2
  116. package/lib/idx/remediators/EnrollPoll.d.ts +2 -2
  117. package/lib/idx/remediators/EnrollmentChannelData.d.ts +2 -2
  118. package/lib/idx/remediators/GenericRemediator/GenericRemediator.d.ts +2 -2
  119. package/lib/idx/remediators/SelectEnrollmentChannel.d.ts +2 -2
  120. package/lib/idx/run.d.ts +2 -2
  121. package/lib/idx/startTransaction.d.ts +2 -2
  122. package/lib/idx/transactionMeta.d.ts +7 -7
  123. package/lib/idx/types/api.d.ts +0 -1
  124. package/lib/idx/unlockAccount.d.ts +2 -2
  125. package/lib/idx/util.d.ts +6 -6
  126. package/lib/oidc/endpoints/token.d.ts +2 -2
  127. package/lib/oidc/endpoints/well-known.d.ts +3 -3
  128. package/lib/oidc/exchangeCodeForTokens.d.ts +2 -2
  129. package/lib/oidc/getToken.d.ts +2 -2
  130. package/lib/oidc/getUserInfo.d.ts +2 -2
  131. package/lib/oidc/getWithPopup.d.ts +2 -2
  132. package/lib/oidc/getWithRedirect.d.ts +2 -2
  133. package/lib/oidc/getWithoutPrompt.d.ts +2 -2
  134. package/lib/oidc/handleOAuthResponse.d.ts +2 -2
  135. package/lib/oidc/renewToken.d.ts +2 -2
  136. package/lib/oidc/renewTokensWithRefresh.d.ts +2 -2
  137. package/lib/oidc/revokeToken.d.ts +2 -2
  138. package/lib/oidc/util/browser.d.ts +2 -2
  139. package/lib/oidc/util/defaultTokenParams.d.ts +2 -2
  140. package/lib/oidc/util/errors.d.ts +3 -2
  141. package/lib/oidc/util/loginRedirect.d.ts +4 -4
  142. package/lib/oidc/util/oauth.d.ts +4 -4
  143. package/lib/oidc/util/oauthMeta.d.ts +2 -2
  144. package/lib/oidc/util/prepareTokenParams.d.ts +5 -5
  145. package/lib/oidc/util/validateClaims.d.ts +2 -2
  146. package/lib/oidc/verifyToken.d.ts +2 -2
  147. package/lib/tx/api.d.ts +2 -3
  148. package/lib/types/OktaAuthOptions.d.ts +2 -2
  149. package/lib/types/Service.d.ts +2 -2
  150. package/lib/types/TokenManager.d.ts +1 -0
  151. package/lib/types/UserClaims.d.ts +4 -1
  152. package/lib/types/api.d.ts +28 -8
  153. package/package.json +13 -23
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/idx/proceed.ts"],"names":["canProceed","authClient","options","meta","stateHandle","proceed","AuthSdkError","flow","state"],"mappings":";;;;;AAkBA;;AACA;;AACA;;AApBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYO,SAASA,UAAT,CAAoBC,UAApB,EAAmDC,OAAuB,GAAG,EAA7E,EAA0F;AAC/F,QAAMC,IAAI,GAAG,8CAAwBF,UAAxB,EAAoCC,OAApC,CAAb;AACA,SAAO,CAAC,EAAEC,IAAI,IAAID,OAAO,CAACE,WAAlB,CAAR;AACD;;AAEM,eAAeC,OAAf,CACLJ,UADK,EAELC,OAAuB,GAAG,EAFrB,EAGoB;AAEzB,MAAI,CAACF,UAAU,CAACC,UAAD,EAAaC,OAAb,CAAf,EAAsC;AACpC,UAAM,IAAII,oBAAJ,CAAiB,0DAAjB,CAAN;AACD;;AAED,MAAI;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAkBN,OAAtB;;AACA,MAAI,CAACK,IAAL,EAAW;AACT,UAAMJ,IAAI,GAAG,8CAAwBF,UAAxB,EAAoC;AAAEO,MAAAA;AAAF,KAApC,CAAb;AACAD,IAAAA,IAAI,GAAGJ,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEI,IAAb;AACD;;AAED,SAAO,cAAIN,UAAJ,EAAgB,EACrB,GAAGC,OADkB;AAErBK,IAAAA;AAFqB,GAAhB,CAAP;AAID","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 OktaAuthInterface,\n IdxTransaction,\n ProceedOptions,\n} from '../types';\nimport { run } from './run';\nimport { getSavedTransactionMeta } from './transactionMeta';\nimport { AuthSdkError } from '../errors';\n\nexport function canProceed(authClient: OktaAuthInterface, options: ProceedOptions = {}): boolean {\n const meta = getSavedTransactionMeta(authClient, options);\n return !!(meta || options.stateHandle);\n}\n\nexport async function proceed(\n authClient: OktaAuthInterface,\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"],"file":"proceed.js"}
1
+ {"version":3,"sources":["../../../lib/idx/proceed.ts"],"names":["canProceed","authClient","options","meta","stateHandle","proceed","AuthSdkError","flow","state"],"mappings":";;;;;AAkBA;;AACA;;AACA;;AApBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYO,SAASA,UAAT,CAAoBC,UAApB,EAAsDC,OAAuB,GAAG,EAAhF,EAA6F;AAClG,QAAMC,IAAI,GAAG,8CAAwBF,UAAxB,EAAoCC,OAApC,CAAb;AACA,SAAO,CAAC,EAAEC,IAAI,IAAID,OAAO,CAACE,WAAlB,CAAR;AACD;;AAEM,eAAeC,OAAf,CACLJ,UADK,EAELC,OAAuB,GAAG,EAFrB,EAGoB;AAEzB,MAAI,CAACF,UAAU,CAACC,UAAD,EAAaC,OAAb,CAAf,EAAsC;AACpC,UAAM,IAAII,oBAAJ,CAAiB,0DAAjB,CAAN;AACD;;AAED,MAAI;AAAEC,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAkBN,OAAtB;;AACA,MAAI,CAACK,IAAL,EAAW;AACT,UAAMJ,IAAI,GAAG,8CAAwBF,UAAxB,EAAoC;AAAEO,MAAAA;AAAF,KAApC,CAAb;AACAD,IAAAA,IAAI,GAAGJ,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEI,IAAb;AACD;;AAED,SAAO,cAAIN,UAAJ,EAAgB,EACrB,GAAGC,OADkB;AAErBK,IAAAA;AAFqB,GAAhB,CAAP;AAID","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"],"file":"proceed.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/idx/recoverPassword.ts"],"names":["recoverPassword","authClient","options","flowSpec"],"mappings":";;;;AAaA;;AACA;;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWO,eAAeA,eAAf,CACLC,UADK,EAC0BC,OAAgC,GAAG,EAD7D,EAEoB;AACzB,QAAMC,QAAQ,GAAG,gCAAqBF,UAArB,EAAiC,iBAAjC,CAAjB;AACA,SAAO,cACLA,UADK,EAEL,EACE,GAAGC,OADL;AAEE,OAAGC;AAFL,GAFK,CAAP;AAOD","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 { run } from './run';\nimport { getFlowSpecification } from './flow';\nimport { \n OktaAuthInterface, \n PasswordRecoveryOptions, \n IdxTransaction,\n} from '../types';\n\nexport async function recoverPassword(\n authClient: OktaAuthInterface, options: PasswordRecoveryOptions = {}\n): Promise<IdxTransaction> {\n const flowSpec = getFlowSpecification(authClient, 'recoverPassword');\n return run(\n authClient, \n { \n ...options,\n ...flowSpec,\n }\n );\n}\n"],"file":"recoverPassword.js"}
1
+ {"version":3,"sources":["../../../lib/idx/recoverPassword.ts"],"names":["recoverPassword","authClient","options","flowSpec"],"mappings":";;;;AAaA;;AACA;;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWO,eAAeA,eAAf,CACLC,UADK,EAC6BC,OAAgC,GAAG,EADhE,EAEoB;AACzB,QAAMC,QAAQ,GAAG,gCAAqBF,UAArB,EAAiC,iBAAjC,CAAjB;AACA,SAAO,cACLA,UADK,EAEL,EACE,GAAGC,OADL;AAEE,OAAGC;AAFL,GAFK,CAAP;AAOD","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 { run } from './run';\nimport { getFlowSpecification } from './flow';\nimport { \n OktaAuthIdxInterface, \n PasswordRecoveryOptions, \n IdxTransaction,\n} from '../types';\n\nexport async function recoverPassword(\n authClient: OktaAuthIdxInterface, options: PasswordRecoveryOptions = {}\n): Promise<IdxTransaction> {\n const flowSpec = getFlowSpecification(authClient, 'recoverPassword');\n return run(\n authClient, \n { \n ...options,\n ...flowSpec,\n }\n );\n}\n"],"file":"recoverPassword.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/idx/register.ts"],"names":["register","authClient","options","enabledFeatures","availableSteps","flow","autoRemediate","activationToken","IdxFeature","REGISTRATION","error","AuthSdkError","some","name"],"mappings":";;;;;;;;AAaA;;AACA;;AACA;;AACA;;AACA;;AAjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAcO,eAAeA,QAAf,CACLC,UADK,EAC0BC,OAA4B,GAAG,EADzD,EAEoB;AAEzB;AACA,MAAI,CAAC,gDAA0BD,UAA1B,CAAL,EAA4C;AAC1C,UAAM;AAAEE,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QAAsC,MAAM,wCAAiBH,UAAjB,EAA6B,EAC7E,GAAGC,OAD0E;AAE7EG,MAAAA,IAAI,EAAE,UAFuE;AAG7EC,MAAAA,aAAa,EAAE;AAH8D,KAA7B,CAAlD;;AAKA,QAAI,CAACJ,OAAO,CAACK,eAAT,IAA4BJ,eAA5B,IAA+C,CAAC,uBAAAA,eAAe,MAAf,CAAAA,eAAe,EAAUK,kBAAWC,YAArB,CAAnE,EAAuG;AACrG,YAAMC,KAAK,GAAG,IAAIC,oBAAJ,CAAiB,wEAAjB,CAAd;AACA,YAAMD,KAAN,CAFqG,CAGvG;AACC;;AACD,QAAIR,OAAO,CAACK,eAAR,IAA2BH,cAA3B,aAA2BA,cAA3B,eAA2BA,cAAc,CAAEQ,IAAhB,CAAqB,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,UAA5C,CAA/B,EAAwF;AACtF,YAAMH,KAAK,GAAG,IAAIC,oBAAJ,CAAiB,2EAAjB,CAAd;AACA,YAAMD,KAAN,CAFsF,CAGxF;AACC;AACF;;AAED,SAAO,cAAIT,UAAJ,EAAgB,EACrB,GAAGC,OADkB;AAErBG,IAAAA,IAAI,EAAE;AAFe,GAAhB,CAAP;AAID","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 { run } from './run';\nimport { hasSavedInteractionHandle } from './transactionMeta';\nimport { startTransaction } from './startTransaction';\nimport { AuthSdkError } from '../errors';\nimport { \n RegistrationOptions, \n IdxTransaction, \n OktaAuthInterface, \n IdxFeature,\n} from '../types';\n\nexport async function register(\n authClient: OktaAuthInterface, options: RegistrationOptions = {}\n): Promise<IdxTransaction> {\n\n // Only check at the beginning of the transaction\n if (!hasSavedInteractionHandle(authClient)) {\n const { enabledFeatures, availableSteps } = await startTransaction(authClient, {\n ...options,\n flow: 'register',\n autoRemediate: false\n });\n if (!options.activationToken && enabledFeatures && !enabledFeatures.includes(IdxFeature.REGISTRATION)) {\n const error = new AuthSdkError('Registration is not supported based on your current org configuration.');\n throw error;\n // return { status: IdxStatus.FAILURE, error } as unknown as IdxTransaction; // TODO: wny not just throw the error?\n }\n if (options.activationToken && availableSteps?.some(({ name }) => name === 'identify')) {\n const error = new AuthSdkError('activationToken is not supported based on your current org configuration.');\n throw error;\n // return { status: IdxStatus.FAILURE, error } as unknown as IdxTransaction; // TODO: wny not just throw the error?\n }\n }\n\n return run(authClient, {\n ...options,\n flow: 'register'\n });\n}\n"],"file":"register.js"}
1
+ {"version":3,"sources":["../../../lib/idx/register.ts"],"names":["register","authClient","options","enabledFeatures","availableSteps","flow","autoRemediate","activationToken","IdxFeature","REGISTRATION","error","AuthSdkError","some","name"],"mappings":";;;;;;;;AAaA;;AACA;;AACA;;AACA;;AACA;;AAjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAcO,eAAeA,QAAf,CACLC,UADK,EAC6BC,OAA4B,GAAG,EAD5D,EAEoB;AAEzB;AACA,MAAI,CAAC,gDAA0BD,UAA1B,CAAL,EAA4C;AAC1C,UAAM;AAAEE,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QAAsC,MAAM,wCAAiBH,UAAjB,EAA6B,EAC7E,GAAGC,OAD0E;AAE7EG,MAAAA,IAAI,EAAE,UAFuE;AAG7EC,MAAAA,aAAa,EAAE;AAH8D,KAA7B,CAAlD;;AAKA,QAAI,CAACJ,OAAO,CAACK,eAAT,IAA4BJ,eAA5B,IAA+C,CAAC,uBAAAA,eAAe,MAAf,CAAAA,eAAe,EAAUK,kBAAWC,YAArB,CAAnE,EAAuG;AACrG,YAAMC,KAAK,GAAG,IAAIC,oBAAJ,CAAiB,wEAAjB,CAAd;AACA,YAAMD,KAAN,CAFqG,CAGvG;AACC;;AACD,QAAIR,OAAO,CAACK,eAAR,IAA2BH,cAA3B,aAA2BA,cAA3B,eAA2BA,cAAc,CAAEQ,IAAhB,CAAqB,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,UAA5C,CAA/B,EAAwF;AACtF,YAAMH,KAAK,GAAG,IAAIC,oBAAJ,CAAiB,2EAAjB,CAAd;AACA,YAAMD,KAAN,CAFsF,CAGxF;AACC;AACF;;AAED,SAAO,cAAIT,UAAJ,EAAgB,EACrB,GAAGC,OADkB;AAErBG,IAAAA,IAAI,EAAE;AAFe,GAAhB,CAAP;AAID","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 { run } from './run';\nimport { hasSavedInteractionHandle } from './transactionMeta';\nimport { startTransaction } from './startTransaction';\nimport { AuthSdkError } from '../errors';\nimport { \n RegistrationOptions, \n IdxTransaction, \n OktaAuthIdxInterface, \n IdxFeature,\n} from '../types';\n\nexport async function register(\n authClient: OktaAuthIdxInterface, options: RegistrationOptions = {}\n): Promise<IdxTransaction> {\n\n // Only check at the beginning of the transaction\n if (!hasSavedInteractionHandle(authClient)) {\n const { enabledFeatures, availableSteps } = await startTransaction(authClient, {\n ...options,\n flow: 'register',\n autoRemediate: false\n });\n if (!options.activationToken && enabledFeatures && !enabledFeatures.includes(IdxFeature.REGISTRATION)) {\n const error = new AuthSdkError('Registration is not supported based on your current org configuration.');\n throw error;\n // return { status: IdxStatus.FAILURE, error } as unknown as IdxTransaction; // TODO: wny not just throw the error?\n }\n if (options.activationToken && availableSteps?.some(({ name }) => name === 'identify')) {\n const error = new AuthSdkError('activationToken is not supported based on your current org configuration.');\n throw error;\n // return { status: IdxStatus.FAILURE, error } as unknown as IdxTransaction; // TODO: wny not just throw the error?\n }\n }\n\n return run(authClient, {\n ...options,\n flow: 'register'\n });\n}\n"],"file":"register.js"}
@@ -101,7 +101,7 @@ async function remediate(authClient, idxResponse, values, options) {
101
101
  requestDidSucceed: true
102
102
  };
103
103
  } catch (e) {
104
- return (0, _util.handleIdxError)(authClient, e, remediator);
104
+ return (0, _util.handleIdxError)(authClient, e, options);
105
105
  }
106
106
 
107
107
  if (action === 'cancel') {
@@ -126,7 +126,7 @@ async function remediate(authClient, idxResponse, values, options) {
126
126
  requestDidSucceed: true
127
127
  };
128
128
  } catch (e) {
129
- return (0, _util.handleIdxError)(authClient, e, remediator);
129
+ return (0, _util.handleIdxError)(authClient, e, options);
130
130
  }
131
131
 
132
132
  return remediate(authClient, idxResponse, values, optionsWithoutExecutedAction); // recursive call
@@ -136,13 +136,11 @@ async function remediate(authClient, idxResponse, values, options) {
136
136
 
137
137
 
138
138
  const terminal = (0, _util.isTerminalResponse)(idxResponse);
139
- const messages = (0, _util.getMessagesFromResponse)(idxResponse);
140
139
 
141
140
  if (terminal) {
142
141
  return {
143
142
  idxResponse,
144
- terminal,
145
- messages
143
+ terminal
146
144
  };
147
145
  }
148
146
 
@@ -159,7 +157,7 @@ async function remediate(authClient, idxResponse, values, options) {
159
157
  idxResponse
160
158
  };
161
159
  } catch (e) {
162
- return (0, _util.handleIdxError)(authClient, e);
160
+ return (0, _util.handleIdxError)(authClient, e, options);
163
161
  }
164
162
  }
165
163
 
@@ -180,8 +178,7 @@ async function remediate(authClient, idxResponse, values, options) {
180
178
  const nextStep = (0, _util.getNextStep)(authClient, remediator, idxResponse);
181
179
  return {
182
180
  idxResponse,
183
- nextStep,
184
- messages: messages.length ? messages : undefined
181
+ nextStep
185
182
  };
186
183
  }
187
184
 
@@ -202,20 +199,19 @@ async function remediate(authClient, idxResponse, values, options) {
202
199
  // generic remediator should not auto proceed in pending status
203
200
  // return nextStep directly
204
201
 
205
- if (options.useGenericRemediator && !idxResponse.interactionCode) {
202
+ if (options.useGenericRemediator && !idxResponse.interactionCode && !(0, _util.isTerminalResponse)(idxResponse)) {
206
203
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
207
204
  const gr = (0, _util.getRemediator)(idxResponse.neededToProceed, values, options);
208
205
  const nextStep = (0, _util.getNextStep)(authClient, gr, idxResponse);
209
206
  return {
210
207
  idxResponse,
211
- nextStep,
212
- messages: messages.length ? messages : undefined
208
+ nextStep
213
209
  };
214
210
  }
215
211
 
216
212
  return remediate(authClient, idxResponse, values, options); // recursive call
217
213
  } catch (e) {
218
- return (0, _util.handleIdxError)(authClient, e, remediator);
214
+ return (0, _util.handleIdxError)(authClient, e, options);
219
215
  }
220
216
  }
221
217
  //# sourceMappingURL=remediate.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/idx/remediate.ts"],"names":["getActionFromValues","values","idxResponse","actions","action","resend","removeActionFromValues","undefined","removeActionFromOptions","options","actionName","entry","name","remediate","authClient","neededToProceed","interactionCode","flow","remediator","actionFromValues","actionFromOptions","params","valuesWithoutExecutedAction","optionsWithoutExecutedAction","requestDidSucceed","e","canceled","remediationAction","proceed","terminal","messages","step","AuthSdkError","acc","curr","canRemediate","nextStep","length","getName","data","getData","getValuesAfterProceed","useGenericRemediator","gr"],"mappings":";;;;;;;;;;;;;;;;AAeA;;AAOA;;AAtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AA0BA,SAASA,mBAAT,CAA6BC,MAA7B,EAAwDC,WAAxD,EAAsG;AAAA;;AACpG;AACA,SAAO,iDAAYA,WAAW,CAACC,OAAxB,kBAAsCC,MAAM,IAAI,CAAC,CAACH,MAAM,CAACI,MAAT,IAAmB,uBAAAD,MAAM,MAAN,CAAAA,MAAM,EAAU,SAAV,CAAzE,CAAP;AACD;;AAED,SAASE,sBAAT,CAAgCL,MAAhC,EAA8E;AAC5E;AACA,SAAO,EACL,GAAGA,MADE;AAELI,IAAAA,MAAM,EAAEE;AAFH,GAAP;AAID;;AAED,SAASC,uBAAT,CAAiCC,OAAjC,EAA4DC,UAA5D,EAAkG;AAChG,MAAIP,OAAO,GAAGM,OAAO,CAACN,OAAR,IAAmB,EAAjC;AACAA,EAAAA,OAAO,GAAG,qBAAAA,OAAO,MAAP,CAAAA,OAAO,EAAQQ,KAAK,IAAI;AAChC,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B,aAAOA,KAAK,KAAKD,UAAjB;AACD;;AACD,WAAOC,KAAK,CAACC,IAAN,KAAeF,UAAtB;AACD,GALgB,CAAjB;AAOA,SAAO,EAAE,GAAGD,OAAL;AAAcN,IAAAA;AAAd,GAAP;AACD,C,CAED;;;AACO,eAAeU,SAAf,CACLC,UADK,EAELZ,WAFK,EAGLD,MAHK,EAILQ,OAJK,EAKyB;AAC9B,MAAI;AAAEM,IAAAA,eAAF;AAAmBC,IAAAA;AAAnB,MAAuCd,WAA3C;AACA,QAAM;AAAEe,IAAAA;AAAF,MAAWR,OAAjB,CAF8B,CAI9B;;AACA,MAAIO,eAAJ,EAAqB;AACnB,WAAO;AAAEd,MAAAA;AAAF,KAAP;AACD;;AAED,QAAMgB,UAAU,GAAG,yBAAcH,eAAd,EAA+Bd,MAA/B,EAAuCQ,OAAvC,CAAnB,CAT8B,CAW9B;;AACA,QAAMU,gBAAgB,GAAGnB,mBAAmB,CAACC,MAAD,EAASC,WAAT,CAA5C;AACA,QAAMkB,iBAAiB,GAAGX,OAAO,CAACN,OAAR,IAAmB,EAA7C;AACA,QAAMA,OAAO,GAAG,CACd,GAAGiB,iBADW,EAEd,IAAID,gBAAgB,IAAI,CAACA,gBAAD,CAApB,IAA0C,EAA9C,CAFc,CAAhB;;AAIA,MAAIhB,OAAJ,EAAa;AACX,SAAK,IAAIC,MAAT,IAAmBD,OAAnB,EAA4B;AAC1B;AACA,UAAIkB,MAAuB,GAAG,EAA9B;;AACA,UAAI,OAAOjB,MAAP,KAAkB,QAAtB,EAAgC;AAC9BiB,QAAAA,MAAM,GAAGjB,MAAM,CAACiB,MAAP,IAAiB,EAA1B;AACAjB,QAAAA,MAAM,GAAGA,MAAM,CAACQ,IAAhB;AACD;;AACD,UAAIU,2BAA2B,GAAGhB,sBAAsB,CAACL,MAAD,CAAxD;AACA,UAAIsB,4BAA4B,GAAGf,uBAAuB,CAACC,OAAD,EAAUL,MAAV,CAA1D;;AAEA,UAAI,OAAOF,WAAW,CAACC,OAAZ,CAAoBC,MAApB,CAAP,KAAuC,UAA3C,EAAuD;AACrD,YAAI;AACFF,UAAAA,WAAW,GAAG,MAAMA,WAAW,CAACC,OAAZ,CAAoBC,MAApB,EAA4BiB,MAA5B,CAApB;AACAnB,UAAAA,WAAW,GAAG,EAAE,GAAGA,WAAL;AAAkBsB,YAAAA,iBAAiB,EAAE;AAArC,WAAd;AACD,SAHD,CAGE,OAAOC,CAAP,EAAU;AACV,iBAAO,0BAAeX,UAAf,EAA2BW,CAA3B,EAA8BP,UAA9B,CAAP;AACD;;AACD,YAAId,MAAM,KAAK,QAAf,EAAyB;AACvB,iBAAO;AAAEF,YAAAA,WAAF;AAAewB,YAAAA,QAAQ,EAAE;AAAzB,WAAP;AACD;;AACD,eAAOb,SAAS,CACdC,UADc,EAEdZ,WAFc,EAGdoB,2BAHc,EAIdC,4BAJc,CAAhB,CAVqD,CAelD;AACJ,OA1ByB,CA4B1B;;;AACA,YAAMI,iBAAiB,GAAG,mBAAAZ,eAAe,MAAf,CAAAA,eAAe,EAAM,CAAC;AAAEH,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAKR,MAA7B,CAAzC;;AACA,UAAIuB,iBAAJ,EAAuB;AACrB,YAAI;AACFzB,UAAAA,WAAW,GAAG,MAAMA,WAAW,CAAC0B,OAAZ,CAAoBxB,MAApB,EAA4BiB,MAA5B,CAApB;AACAnB,UAAAA,WAAW,GAAG,EAAE,GAAGA,WAAL;AAAkBsB,YAAAA,iBAAiB,EAAE;AAArC,WAAd;AACD,SAHD,CAIA,OAAOC,CAAP,EAAU;AACR,iBAAO,0BAAeX,UAAf,EAA2BW,CAA3B,EAA8BP,UAA9B,CAAP;AACD;;AAED,eAAOL,SAAS,CAACC,UAAD,EAAaZ,WAAb,EAA0BD,MAA1B,EAAkCsB,4BAAlC,CAAhB,CATqB,CAS4D;AAClF;AACF;AACF,GA7D6B,CA+D9B;;;AACA,QAAMM,QAAQ,GAAG,8BAAmB3B,WAAnB,CAAjB;AACA,QAAM4B,QAAQ,GAAG,mCAAwB5B,WAAxB,CAAjB;;AACA,MAAI2B,QAAJ,EAAc;AACZ,WAAO;AAAE3B,MAAAA,WAAF;AAAe2B,MAAAA,QAAf;AAAyBC,MAAAA;AAAzB,KAAP;AACD;;AAED,MAAI,CAACZ,UAAL,EAAiB;AACf,QAAIT,OAAO,CAACsB,IAAZ,EAAkB;AAChB9B,MAAAA,MAAM,GAAG,sCAA2BC,WAA3B,EAAwCO,OAAO,CAACsB,IAAhD,EAAsD9B,MAAtD,CAAT,CADgB,CACwD;;AACxE,UAAI;AACFC,QAAAA,WAAW,GAAG,MAAMA,WAAW,CAAC0B,OAAZ,CAAoBnB,OAAO,CAACsB,IAA5B,EAAkC9B,MAAlC,CAApB;AACAC,QAAAA,WAAW,GAAG,EAAE,GAAGA,WAAL;AAAkBsB,UAAAA,iBAAiB,EAAE;AAArC,SAAd;AACA,eAAO;AAAEtB,UAAAA;AAAF,SAAP;AACD,OAJD,CAIE,OAAMuB,CAAN,EAAS;AACT,eAAO,0BAAeX,UAAf,EAA2BW,CAA3B,CAAP;AACD;AACF;;AACD,QAAIR,IAAI,KAAK,SAAb,EAAwB;AACtB,aAAO;AAAEf,QAAAA;AAAF,OAAP;AACD;;AACD,UAAM,IAAI8B,oBAAJ,CAAkB;AAC5B;AACA,uBAAuB,qBAAAjB,eAAe,MAAf,CAAAA,eAAe,EAAQ,CAACkB,GAAD,EAAMC,IAAN,KAAeD,GAAG,GAAGA,GAAG,GAAG,IAAN,GAAaC,IAAI,CAACtB,IAArB,GAA4BsB,IAAI,CAACtB,IAA3D,EAAiE,EAAjE,CAAqE;AAC3G,KAHU,CAAN;AAID,GAxF6B,CA0F9B;;;AACA,MAAI,CAACM,UAAU,CAACiB,YAAX,EAAL,EAAgC;AAC9B,UAAMC,QAAQ,GAAG,uBAAYtB,UAAZ,EAAwBI,UAAxB,EAAoChB,WAApC,CAAjB;AACA,WAAO;AACLA,MAAAA,WADK;AAELkC,MAAAA,QAFK;AAGLN,MAAAA,QAAQ,EAAEA,QAAQ,CAACO,MAAT,GAAkBP,QAAlB,GAA4BvB;AAHjC,KAAP;AAKD;;AAED,QAAMK,IAAI,GAAGM,UAAU,CAACoB,OAAX,EAAb;AACA,QAAMC,IAAI,GAAGrB,UAAU,CAACsB,OAAX,EAAb;;AACA,MAAI;AACFtC,IAAAA,WAAW,GAAG,MAAMA,WAAW,CAAC0B,OAAZ,CAAoBhB,IAApB,EAA0B2B,IAA1B,CAApB;AACArC,IAAAA,WAAW,GAAG,EAAE,GAAGA,WAAL;AAAkBsB,MAAAA,iBAAiB,EAAE;AAArC,KAAd,CAFE,CAGF;AACA;;AACAvB,IAAAA,MAAM,GAAGiB,UAAU,CAACuB,qBAAX,EAAT;AACAhC,IAAAA,OAAO,GAAG,EAAE,GAAGA,OAAL;AAAcsB,MAAAA,IAAI,EAAExB;AAApB,KAAV,CANE,CAMyC;AAE3C;AACA;;AACA,QAAIE,OAAO,CAACiC,oBAAR,IAAgC,CAACxC,WAAW,CAACc,eAAjD,EAAkE;AAChE;AACA,YAAM2B,EAAE,GAAG,yBAAczC,WAAW,CAACa,eAA1B,EAA2Cd,MAA3C,EAAmDQ,OAAnD,CAAX;AACA,YAAM2B,QAAQ,GAAG,uBAAYtB,UAAZ,EAAwB6B,EAAxB,EAA4BzC,WAA5B,CAAjB;AACA,aAAO;AACLA,QAAAA,WADK;AAELkC,QAAAA,QAFK;AAGLN,QAAAA,QAAQ,EAAEA,QAAQ,CAACO,MAAT,GAAkBP,QAAlB,GAA4BvB;AAHjC,OAAP;AAKD;;AAED,WAAOM,SAAS,CAACC,UAAD,EAAaZ,WAAb,EAA0BD,MAA1B,EAAkCQ,OAAlC,CAAhB,CArBE,CAqB0D;AAC7D,GAtBD,CAsBE,OAAOgB,CAAP,EAAU;AACV,WAAO,0BAAeX,UAAf,EAA2BW,CAA3B,EAA8BP,UAA9B,CAAP;AACD;AACF","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\n/* eslint-disable max-statements, max-depth, complexity */\nimport { OktaAuthInterface } from '../types';\nimport { AuthSdkError } from '../errors';\nimport { RemediationValues } from './remediators';\nimport { RemediateOptions, RemediationResponse } from './types';\nimport { \n IdxResponse,\n IdxActionParams, \n} from './types/idx-js';\nimport {\n getMessagesFromResponse,\n isTerminalResponse,\n filterValuesForRemediation,\n getRemediator,\n getNextStep,\n handleIdxError\n} from './util';\n\nexport interface RemediateActionWithOptionalParams {\n name: string;\n params?: IdxActionParams;\n}\n\nexport type RemediateAction = string | RemediateActionWithOptionalParams;\n\n\nfunction getActionFromValues(values: RemediationValues, idxResponse: IdxResponse): string | undefined {\n // Currently support resend actions only\n return Object.keys(idxResponse.actions).find(action => !!values.resend && action.includes('-resend'));\n}\n\nfunction removeActionFromValues(values: RemediationValues): RemediationValues {\n // Currently support resend actions only\n return {\n ...values,\n resend: undefined\n };\n}\n\nfunction removeActionFromOptions(options: RemediateOptions, actionName: string): RemediateOptions {\n let actions = options.actions || [];\n actions = actions.filter(entry => {\n if (typeof entry === 'string') {\n return entry !== actionName;\n }\n return entry.name !== actionName;\n });\n\n return { ...options, actions };\n}\n\n// This function is called recursively until it reaches success or cannot be remediated\nexport async function remediate(\n authClient: OktaAuthInterface,\n idxResponse: IdxResponse,\n values: RemediationValues,\n options: RemediateOptions\n): Promise<RemediationResponse> {\n let { neededToProceed, interactionCode } = idxResponse;\n const { flow } = options;\n\n // If the response contains an interaction code, there is no need to remediate\n if (interactionCode) {\n return { idxResponse };\n }\n\n const remediator = getRemediator(neededToProceed, values, options);\n\n // Try actions in idxResponse first\n const actionFromValues = getActionFromValues(values, idxResponse);\n const actionFromOptions = options.actions || [];\n const actions = [\n ...actionFromOptions,\n ...(actionFromValues && [actionFromValues] || []),\n ];\n if (actions) {\n for (let action of actions) {\n // Action can either be specified as a string, or as an object with name and optional params\n let params: IdxActionParams = {};\n if (typeof action !== 'string') {\n params = action.params || {};\n action = action.name;\n }\n let valuesWithoutExecutedAction = removeActionFromValues(values);\n let optionsWithoutExecutedAction = removeActionFromOptions(options, action);\n\n if (typeof idxResponse.actions[action] === 'function') {\n try {\n idxResponse = await idxResponse.actions[action](params);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n } catch (e) {\n return handleIdxError(authClient, e, remediator);\n }\n if (action === 'cancel') {\n return { idxResponse, canceled: true };\n }\n return remediate(\n authClient, \n idxResponse, \n valuesWithoutExecutedAction, \n optionsWithoutExecutedAction\n ); // recursive call\n }\n\n // search for action in remediation list\n const remediationAction = neededToProceed.find(({ name }) => name === action);\n if (remediationAction) {\n try {\n idxResponse = await idxResponse.proceed(action, params);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n }\n catch (e) {\n return handleIdxError(authClient, e, remediator);\n }\n\n return remediate(authClient, idxResponse, values, optionsWithoutExecutedAction); // recursive call\n }\n }\n }\n\n // Do not attempt to remediate if response is in terminal state\n const terminal = isTerminalResponse(idxResponse);\n const messages = getMessagesFromResponse(idxResponse);\n if (terminal) {\n return { idxResponse, terminal, messages };\n }\n\n if (!remediator) {\n if (options.step) {\n values = filterValuesForRemediation(idxResponse, options.step, values); // include only requested values\n try {\n idxResponse = await idxResponse.proceed(options.step, values);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n return { idxResponse };\n } catch(e) {\n return handleIdxError(authClient, e);\n }\n }\n if (flow === 'default') {\n return { idxResponse };\n }\n throw new AuthSdkError(`\n No remediation can match current flow, check policy settings in your org.\n Remediations: [${neededToProceed.reduce((acc, curr) => acc ? acc + ' ,' + curr.name : curr.name, '')}]\n `);\n }\n\n // Return next step to the caller\n if (!remediator.canRemediate()) {\n const nextStep = getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n nextStep,\n messages: messages.length ? messages: undefined\n };\n }\n\n const name = remediator.getName();\n const data = remediator.getData();\n try {\n idxResponse = await idxResponse.proceed(name, data);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n // We may want to trim the values bag for the next remediation\n // Let the remediator decide what the values should be (default to current values)\n values = remediator.getValuesAfterProceed();\n options = { ...options, step: undefined }; // do not re-use the step\n\n // generic remediator should not auto proceed in pending status\n // return nextStep directly\n if (options.useGenericRemediator && !idxResponse.interactionCode) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const gr = getRemediator(idxResponse.neededToProceed, values, options)!;\n const nextStep = getNextStep(authClient, gr, idxResponse);\n return {\n idxResponse,\n nextStep,\n messages: messages.length ? messages: undefined\n };\n }\n \n return remediate(authClient, idxResponse, values, options); // recursive call\n } catch (e) {\n return handleIdxError(authClient, e, remediator);\n }\n}\n"],"file":"remediate.js"}
1
+ {"version":3,"sources":["../../../lib/idx/remediate.ts"],"names":["getActionFromValues","values","idxResponse","actions","action","resend","removeActionFromValues","undefined","removeActionFromOptions","options","actionName","entry","name","remediate","authClient","neededToProceed","interactionCode","flow","remediator","actionFromValues","actionFromOptions","params","valuesWithoutExecutedAction","optionsWithoutExecutedAction","requestDidSucceed","e","canceled","remediationAction","proceed","terminal","step","AuthSdkError","acc","curr","canRemediate","nextStep","getName","data","getData","getValuesAfterProceed","useGenericRemediator","gr"],"mappings":";;;;;;;;;;;;;;;;AAeA;;AAOA;;AAtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AAyBA,SAASA,mBAAT,CAA6BC,MAA7B,EAAwDC,WAAxD,EAAsG;AAAA;;AACpG;AACA,SAAO,iDAAYA,WAAW,CAACC,OAAxB,kBAAsCC,MAAM,IAAI,CAAC,CAACH,MAAM,CAACI,MAAT,IAAmB,uBAAAD,MAAM,MAAN,CAAAA,MAAM,EAAU,SAAV,CAAzE,CAAP;AACD;;AAED,SAASE,sBAAT,CAAgCL,MAAhC,EAA8E;AAC5E;AACA,SAAO,EACL,GAAGA,MADE;AAELI,IAAAA,MAAM,EAAEE;AAFH,GAAP;AAID;;AAED,SAASC,uBAAT,CAAiCC,OAAjC,EAA4DC,UAA5D,EAAkG;AAChG,MAAIP,OAAO,GAAGM,OAAO,CAACN,OAAR,IAAmB,EAAjC;AACAA,EAAAA,OAAO,GAAG,qBAAAA,OAAO,MAAP,CAAAA,OAAO,EAAQQ,KAAK,IAAI;AAChC,QAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;AAC7B,aAAOA,KAAK,KAAKD,UAAjB;AACD;;AACD,WAAOC,KAAK,CAACC,IAAN,KAAeF,UAAtB;AACD,GALgB,CAAjB;AAOA,SAAO,EAAE,GAAGD,OAAL;AAAcN,IAAAA;AAAd,GAAP;AACD,C,CAED;;;AACO,eAAeU,SAAf,CACLC,UADK,EAELZ,WAFK,EAGLD,MAHK,EAILQ,OAJK,EAKyB;AAC9B,MAAI;AAAEM,IAAAA,eAAF;AAAmBC,IAAAA;AAAnB,MAAuCd,WAA3C;AACA,QAAM;AAAEe,IAAAA;AAAF,MAAWR,OAAjB,CAF8B,CAI9B;;AACA,MAAIO,eAAJ,EAAqB;AACnB,WAAO;AAAEd,MAAAA;AAAF,KAAP;AACD;;AAED,QAAMgB,UAAU,GAAG,yBAAcH,eAAd,EAA+Bd,MAA/B,EAAuCQ,OAAvC,CAAnB,CAT8B,CAW9B;;AACA,QAAMU,gBAAgB,GAAGnB,mBAAmB,CAACC,MAAD,EAASC,WAAT,CAA5C;AACA,QAAMkB,iBAAiB,GAAGX,OAAO,CAACN,OAAR,IAAmB,EAA7C;AACA,QAAMA,OAAO,GAAG,CACd,GAAGiB,iBADW,EAEd,IAAID,gBAAgB,IAAI,CAACA,gBAAD,CAApB,IAA0C,EAA9C,CAFc,CAAhB;;AAIA,MAAIhB,OAAJ,EAAa;AACX,SAAK,IAAIC,MAAT,IAAmBD,OAAnB,EAA4B;AAC1B;AACA,UAAIkB,MAAuB,GAAG,EAA9B;;AACA,UAAI,OAAOjB,MAAP,KAAkB,QAAtB,EAAgC;AAC9BiB,QAAAA,MAAM,GAAGjB,MAAM,CAACiB,MAAP,IAAiB,EAA1B;AACAjB,QAAAA,MAAM,GAAGA,MAAM,CAACQ,IAAhB;AACD;;AACD,UAAIU,2BAA2B,GAAGhB,sBAAsB,CAACL,MAAD,CAAxD;AACA,UAAIsB,4BAA4B,GAAGf,uBAAuB,CAACC,OAAD,EAAUL,MAAV,CAA1D;;AAEA,UAAI,OAAOF,WAAW,CAACC,OAAZ,CAAoBC,MAApB,CAAP,KAAuC,UAA3C,EAAuD;AACrD,YAAI;AACFF,UAAAA,WAAW,GAAG,MAAMA,WAAW,CAACC,OAAZ,CAAoBC,MAApB,EAA4BiB,MAA5B,CAApB;AACAnB,UAAAA,WAAW,GAAG,EAAE,GAAGA,WAAL;AAAkBsB,YAAAA,iBAAiB,EAAE;AAArC,WAAd;AACD,SAHD,CAGE,OAAOC,CAAP,EAAU;AACV,iBAAO,0BAAeX,UAAf,EAA2BW,CAA3B,EAA8BhB,OAA9B,CAAP;AACD;;AACD,YAAIL,MAAM,KAAK,QAAf,EAAyB;AACvB,iBAAO;AAAEF,YAAAA,WAAF;AAAewB,YAAAA,QAAQ,EAAE;AAAzB,WAAP;AACD;;AACD,eAAOb,SAAS,CACdC,UADc,EAEdZ,WAFc,EAGdoB,2BAHc,EAIdC,4BAJc,CAAhB,CAVqD,CAelD;AACJ,OA1ByB,CA4B1B;;;AACA,YAAMI,iBAAiB,GAAG,mBAAAZ,eAAe,MAAf,CAAAA,eAAe,EAAM,CAAC;AAAEH,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAKR,MAA7B,CAAzC;;AACA,UAAIuB,iBAAJ,EAAuB;AACrB,YAAI;AACFzB,UAAAA,WAAW,GAAG,MAAMA,WAAW,CAAC0B,OAAZ,CAAoBxB,MAApB,EAA4BiB,MAA5B,CAApB;AACAnB,UAAAA,WAAW,GAAG,EAAE,GAAGA,WAAL;AAAkBsB,YAAAA,iBAAiB,EAAE;AAArC,WAAd;AACD,SAHD,CAIA,OAAOC,CAAP,EAAU;AACR,iBAAO,0BAAeX,UAAf,EAA2BW,CAA3B,EAA8BhB,OAA9B,CAAP;AACD;;AAED,eAAOI,SAAS,CAACC,UAAD,EAAaZ,WAAb,EAA0BD,MAA1B,EAAkCsB,4BAAlC,CAAhB,CATqB,CAS4D;AAClF;AACF;AACF,GA7D6B,CA+D9B;;;AACA,QAAMM,QAAQ,GAAG,8BAAmB3B,WAAnB,CAAjB;;AACA,MAAI2B,QAAJ,EAAc;AACZ,WAAO;AAAE3B,MAAAA,WAAF;AAAe2B,MAAAA;AAAf,KAAP;AACD;;AAED,MAAI,CAACX,UAAL,EAAiB;AACf,QAAIT,OAAO,CAACqB,IAAZ,EAAkB;AAChB7B,MAAAA,MAAM,GAAG,sCAA2BC,WAA3B,EAAwCO,OAAO,CAACqB,IAAhD,EAAsD7B,MAAtD,CAAT,CADgB,CACwD;;AACxE,UAAI;AACFC,QAAAA,WAAW,GAAG,MAAMA,WAAW,CAAC0B,OAAZ,CAAoBnB,OAAO,CAACqB,IAA5B,EAAkC7B,MAAlC,CAApB;AACAC,QAAAA,WAAW,GAAG,EAAE,GAAGA,WAAL;AAAkBsB,UAAAA,iBAAiB,EAAE;AAArC,SAAd;AACA,eAAO;AAAEtB,UAAAA;AAAF,SAAP;AACD,OAJD,CAIE,OAAMuB,CAAN,EAAS;AACT,eAAO,0BAAeX,UAAf,EAA2BW,CAA3B,EAA8BhB,OAA9B,CAAP;AACD;AACF;;AACD,QAAIQ,IAAI,KAAK,SAAb,EAAwB;AACtB,aAAO;AAAEf,QAAAA;AAAF,OAAP;AACD;;AACD,UAAM,IAAI6B,oBAAJ,CAAkB;AAC5B;AACA,uBAAuB,qBAAAhB,eAAe,MAAf,CAAAA,eAAe,EAAQ,CAACiB,GAAD,EAAMC,IAAN,KAAeD,GAAG,GAAGA,GAAG,GAAG,IAAN,GAAaC,IAAI,CAACrB,IAArB,GAA4BqB,IAAI,CAACrB,IAA3D,EAAiE,EAAjE,CAAqE;AAC3G,KAHU,CAAN;AAID,GAvF6B,CAyF9B;;;AACA,MAAI,CAACM,UAAU,CAACgB,YAAX,EAAL,EAAgC;AAC9B,UAAMC,QAAQ,GAAG,uBAAYrB,UAAZ,EAAwBI,UAAxB,EAAoChB,WAApC,CAAjB;AACA,WAAO;AACLA,MAAAA,WADK;AAELiC,MAAAA;AAFK,KAAP;AAID;;AAED,QAAMvB,IAAI,GAAGM,UAAU,CAACkB,OAAX,EAAb;AACA,QAAMC,IAAI,GAAGnB,UAAU,CAACoB,OAAX,EAAb;;AACA,MAAI;AACFpC,IAAAA,WAAW,GAAG,MAAMA,WAAW,CAAC0B,OAAZ,CAAoBhB,IAApB,EAA0ByB,IAA1B,CAApB;AACAnC,IAAAA,WAAW,GAAG,EAAE,GAAGA,WAAL;AAAkBsB,MAAAA,iBAAiB,EAAE;AAArC,KAAd,CAFE,CAGF;AACA;;AACAvB,IAAAA,MAAM,GAAGiB,UAAU,CAACqB,qBAAX,EAAT;AACA9B,IAAAA,OAAO,GAAG,EAAE,GAAGA,OAAL;AAAcqB,MAAAA,IAAI,EAAEvB;AAApB,KAAV,CANE,CAMyC;AAE3C;AACA;;AACA,QAAIE,OAAO,CAAC+B,oBAAR,IAAgC,CAACtC,WAAW,CAACc,eAA7C,IAAgE,CAAC,8BAAmBd,WAAnB,CAArE,EAAsG;AACpG;AACA,YAAMuC,EAAE,GAAG,yBAAcvC,WAAW,CAACa,eAA1B,EAA2Cd,MAA3C,EAAmDQ,OAAnD,CAAX;AACA,YAAM0B,QAAQ,GAAG,uBAAYrB,UAAZ,EAAwB2B,EAAxB,EAA4BvC,WAA5B,CAAjB;AACA,aAAO;AACLA,QAAAA,WADK;AAELiC,QAAAA;AAFK,OAAP;AAID;;AAED,WAAOtB,SAAS,CAACC,UAAD,EAAaZ,WAAb,EAA0BD,MAA1B,EAAkCQ,OAAlC,CAAhB,CApBE,CAoB0D;AAC7D,GArBD,CAqBE,OAAOgB,CAAP,EAAU;AACV,WAAO,0BAAeX,UAAf,EAA2BW,CAA3B,EAA8BhB,OAA9B,CAAP;AACD;AACF","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\n/* eslint-disable max-statements, max-depth, complexity */\nimport { OktaAuthIdxInterface } from '../types';\nimport { AuthSdkError } from '../errors';\nimport { RemediationValues } from './remediators';\nimport { RemediateOptions, RemediationResponse } from './types';\nimport { \n IdxResponse,\n IdxActionParams, \n} from './types/idx-js';\nimport {\n isTerminalResponse,\n filterValuesForRemediation,\n getRemediator,\n getNextStep,\n handleIdxError\n} from './util';\n\nexport interface RemediateActionWithOptionalParams {\n name: string;\n params?: IdxActionParams;\n}\n\nexport type RemediateAction = string | RemediateActionWithOptionalParams;\n\n\nfunction getActionFromValues(values: RemediationValues, idxResponse: IdxResponse): string | undefined {\n // Currently support resend actions only\n return Object.keys(idxResponse.actions).find(action => !!values.resend && action.includes('-resend'));\n}\n\nfunction removeActionFromValues(values: RemediationValues): RemediationValues {\n // Currently support resend actions only\n return {\n ...values,\n resend: undefined\n };\n}\n\nfunction removeActionFromOptions(options: RemediateOptions, actionName: string): RemediateOptions {\n let actions = options.actions || [];\n actions = actions.filter(entry => {\n if (typeof entry === 'string') {\n return entry !== actionName;\n }\n return entry.name !== actionName;\n });\n\n return { ...options, actions };\n}\n\n// This function is called recursively until it reaches success or cannot be remediated\nexport async function remediate(\n authClient: OktaAuthIdxInterface,\n idxResponse: IdxResponse,\n values: RemediationValues,\n options: RemediateOptions\n): Promise<RemediationResponse> {\n let { neededToProceed, interactionCode } = idxResponse;\n const { flow } = options;\n\n // If the response contains an interaction code, there is no need to remediate\n if (interactionCode) {\n return { idxResponse };\n }\n\n const remediator = getRemediator(neededToProceed, values, options);\n\n // Try actions in idxResponse first\n const actionFromValues = getActionFromValues(values, idxResponse);\n const actionFromOptions = options.actions || [];\n const actions = [\n ...actionFromOptions,\n ...(actionFromValues && [actionFromValues] || []),\n ];\n if (actions) {\n for (let action of actions) {\n // Action can either be specified as a string, or as an object with name and optional params\n let params: IdxActionParams = {};\n if (typeof action !== 'string') {\n params = action.params || {};\n action = action.name;\n }\n let valuesWithoutExecutedAction = removeActionFromValues(values);\n let optionsWithoutExecutedAction = removeActionFromOptions(options, action);\n\n if (typeof idxResponse.actions[action] === 'function') {\n try {\n idxResponse = await idxResponse.actions[action](params);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n } catch (e) {\n return handleIdxError(authClient, e, options);\n }\n if (action === 'cancel') {\n return { idxResponse, canceled: true };\n }\n return remediate(\n authClient, \n idxResponse, \n valuesWithoutExecutedAction, \n optionsWithoutExecutedAction\n ); // recursive call\n }\n\n // search for action in remediation list\n const remediationAction = neededToProceed.find(({ name }) => name === action);\n if (remediationAction) {\n try {\n idxResponse = await idxResponse.proceed(action, params);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n }\n catch (e) {\n return handleIdxError(authClient, e, options);\n }\n\n return remediate(authClient, idxResponse, values, optionsWithoutExecutedAction); // recursive call\n }\n }\n }\n\n // Do not attempt to remediate if response is in terminal state\n const terminal = isTerminalResponse(idxResponse);\n if (terminal) {\n return { idxResponse, terminal };\n }\n\n if (!remediator) {\n if (options.step) {\n values = filterValuesForRemediation(idxResponse, options.step, values); // include only requested values\n try {\n idxResponse = await idxResponse.proceed(options.step, values);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n return { idxResponse };\n } catch(e) {\n return handleIdxError(authClient, e, options);\n }\n }\n if (flow === 'default') {\n return { idxResponse };\n }\n throw new AuthSdkError(`\n No remediation can match current flow, check policy settings in your org.\n Remediations: [${neededToProceed.reduce((acc, curr) => acc ? acc + ' ,' + curr.name : curr.name, '')}]\n `);\n }\n\n // Return next step to the caller\n if (!remediator.canRemediate()) {\n const nextStep = getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n nextStep,\n };\n }\n\n const name = remediator.getName();\n const data = remediator.getData();\n try {\n idxResponse = await idxResponse.proceed(name, data);\n idxResponse = { ...idxResponse, requestDidSucceed: true };\n // We may want to trim the values bag for the next remediation\n // Let the remediator decide what the values should be (default to current values)\n values = remediator.getValuesAfterProceed();\n options = { ...options, step: undefined }; // do not re-use the step\n\n // generic remediator should not auto proceed in pending status\n // return nextStep directly\n if (options.useGenericRemediator && !idxResponse.interactionCode && !isTerminalResponse(idxResponse)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const gr = getRemediator(idxResponse.neededToProceed, values, options)!;\n const nextStep = getNextStep(authClient, gr, idxResponse);\n return {\n idxResponse,\n nextStep,\n };\n }\n \n return remediate(authClient, idxResponse, values, options); // recursive call\n } catch (e) {\n return handleIdxError(authClient, e, options);\n }\n}\n"],"file":"remediate.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/Base/AuthenticatorData.ts"],"names":["AuthenticatorData","Remediator","constructor","remediation","values","authenticator","getAuthenticator","formatAuthenticatorData","authenticatorData","getAuthenticatorData","authenticatorsData","data","mapAuthenticatorDataFromValues","push","canRemediate","some","getNextStep","authClient","common","options","getMethodTypes","methodType","id","enrollmentId","getAuthenticatorFromRemediation","value","name","form","getValuesAfterProceed"],"mappings":"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","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\nimport { Remediator, RemediationValues } from './Remediator';\nimport { IdxRemediationValue, IdxOption, IdxRemediation, IdxAuthenticator } from '../../types/idx-js';\nimport { isAuthenticator } from '../../types';\nimport { compareAuthenticators } from '../../authenticator/util';\nimport { OktaAuthInterface } from '../../../types';\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 // TODO: remove this override method in the next major version - OKTA-491236\n getNextStep(authClient: OktaAuthInterface) {\n const common = super.getNextStep(authClient);\n const options = this.getMethodTypes();\n return { \n ...common, \n ...(options && { options }) \n };\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 private getMethodTypes(): IdxOption[] {\n const authenticator: IdxRemediationValue = this.getAuthenticatorFromRemediation();\n return authenticator.form!.value.find(({ name }) => name === 'methodType')?.options as IdxOption[];\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"],"file":"AuthenticatorData.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/remediators/Base/AuthenticatorData.ts"],"names":["AuthenticatorData","Remediator","constructor","remediation","values","authenticator","getAuthenticator","formatAuthenticatorData","authenticatorData","getAuthenticatorData","authenticatorsData","data","mapAuthenticatorDataFromValues","push","canRemediate","some","getNextStep","authClient","common","options","getMethodTypes","methodType","id","enrollmentId","getAuthenticatorFromRemediation","value","name","form","getValuesAfterProceed"],"mappings":"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","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\nimport { Remediator, RemediationValues } from './Remediator';\nimport { IdxRemediationValue, IdxOption, IdxRemediation, IdxAuthenticator } from '../../types/idx-js';\nimport { isAuthenticator } from '../../types';\nimport { compareAuthenticators } from '../../authenticator/util';\nimport { OktaAuthIdxInterface } from '../../../types';\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 // TODO: remove this override method in the next major version - OKTA-491236\n getNextStep(authClient: OktaAuthIdxInterface) {\n const common = super.getNextStep(authClient);\n const options = this.getMethodTypes();\n return { \n ...common, \n ...(options && { options }) \n };\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 private getMethodTypes(): IdxOption[] {\n const authenticator: IdxRemediationValue = this.getAuthenticatorFromRemediation();\n return authenticator.form!.value.find(({ name }) => name === 'methodType')?.options as IdxOption[];\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"],"file":"AuthenticatorData.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/Base/Remediator.ts"],"names":["Remediator","constructor","remediation","values","options","formatAuthenticators","authenticators","authenticator","hasAuthenticatorInList","some","existing","push","authenticatorsData","acc","length","getName","name","canRemediate","required","needed","key","hasData","getData","allValues","res","data","val","value","entry","i","getNextStep","_authClient","_context","inputs","getInputs","getAuthenticator","type","inputsFromRemediation","forEach","inputFromRemediation","input","visible","messages","alias","aliases","Array","isArray","getMessages","form","field","getValuesAfterProceed","inputsFromRemediator","relatesTo","authenticatorFromRemediation","id","enrollmentId"],"mappings":"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","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 { 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';\nimport { OktaAuthInterface } from '../../../types';\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 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(): 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\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: OktaAuthInterface, _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"],"file":"Remediator.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/remediators/Base/Remediator.ts"],"names":["Remediator","constructor","remediation","values","options","formatAuthenticators","authenticators","authenticator","hasAuthenticatorInList","some","existing","push","authenticatorsData","acc","length","getName","name","canRemediate","required","needed","key","hasData","getData","allValues","res","data","val","value","entry","i","getNextStep","_authClient","_context","inputs","getInputs","getAuthenticator","type","inputsFromRemediation","forEach","inputFromRemediation","input","visible","messages","alias","aliases","Array","isArray","getMessages","form","field","getValuesAfterProceed","inputsFromRemediator","relatesTo","authenticatorFromRemediation","id","enrollmentId"],"mappings":"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","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 { 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';\nimport { OktaAuthIdxInterface } from '../../../types';\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 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(): 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\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"],"file":"Remediator.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/Base/SelectAuthenticator.ts"],"names":["SelectAuthenticator","Remediator","findMatchedOption","authenticators","options","option","authenticator","relatesTo","key","canRemediate","authenticatorFromRemediation","remediation","length","id","matchedOption","getNextStep","authClient","common","label","value","mapAuthenticator","remediationValue","selectedAuthenticator","selectedOption","form","name","getInputAuthenticator","type","getValuesAfterProceed","values"],"mappings":"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","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\nimport { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticatorFromRemediation } from '../util';\nimport { IdxOption, IdxRemediationValue } from '../../types/idx-js';\nimport { Authenticator, isAuthenticator } from '../../types';\nimport { compareAuthenticators, findMatchedOption} from '../../authenticator/util';\nimport { OktaAuthInterface } from '../../../types';\n\nexport type SelectAuthenticatorValues = RemediationValues & {\n authenticator?: string | Authenticator;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class SelectAuthenticator<T extends SelectAuthenticatorValues = SelectAuthenticatorValues>\n extends Remediator<T> {\n selectedAuthenticator?: Authenticator;\n selectedOption?: any;\n\n // Find matched authenticator in provided order\n findMatchedOption(authenticators, options) {\n let option;\n for (let authenticator of authenticators) {\n option = options\n .find(({ relatesTo }) => relatesTo.key === authenticator.key);\n if (option) {\n break;\n }\n }\n return option;\n }\n\n canRemediate() {\n const { authenticators, authenticator } = this.values;\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const { options } = authenticatorFromRemediation;\n // Let users select authenticator if no input is provided\n if (!authenticators || !authenticators.length) {\n return false;\n }\n\n // Authenticator is explicitly specified by id\n if (isAuthenticator(authenticator) && authenticator.id) {\n return true;\n }\n\n // Proceed with provided authenticators\n const matchedOption = this.findMatchedOption(authenticators, options);\n if (matchedOption) {\n return true;\n }\n \n return false;\n }\n\n // TODO: remove this override method in the next major version - OKTA-491236\n getNextStep(authClient: OktaAuthInterface) {\n const common = super.getNextStep(authClient);\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const options = authenticatorFromRemediation.options!.map(option => {\n const { \n label, \n relatesTo\n } = option as IdxOption;\n const key = relatesTo!.key!;\n return { label, value: key };\n });\n return { ...common, options };\n }\n\n mapAuthenticator(remediationValue: IdxRemediationValue) {\n const { authenticators, authenticator } = this.values;\n\n // Authenticator is explicitly specified by id\n if (isAuthenticator(authenticator) && authenticator.id) {\n this.selectedAuthenticator = authenticator; // track the selected authenticator\n return authenticator;\n }\n\n const { options } = remediationValue;\n const selectedOption = findMatchedOption(authenticators, options);\n this.selectedAuthenticator = selectedOption.relatesTo; // track the selected authenticator\n this.selectedOption = selectedOption;\n return {\n id: selectedOption?.value.form.value.find(({ name }) => name === 'id').value\n };\n }\n\n getInputAuthenticator(remediation) {\n const options = remediation.options.map(({ label, relatesTo }) => {\n return {\n label,\n value: relatesTo.key\n };\n });\n return { name: 'authenticator', type: 'string', options };\n }\n\n getValuesAfterProceed(): T {\n this.values = super.getValuesAfterProceed();\n // remove used authenticators\n const authenticators = (this.values.authenticators as Authenticator[])\n .filter(authenticator => {\n return compareAuthenticators(authenticator, this.selectedAuthenticator) !== true;\n });\n return { ...this.values, authenticators };\n }\n\n}\n"],"file":"SelectAuthenticator.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/remediators/Base/SelectAuthenticator.ts"],"names":["SelectAuthenticator","Remediator","findMatchedOption","authenticators","options","option","authenticator","relatesTo","key","canRemediate","authenticatorFromRemediation","remediation","length","id","matchedOption","getNextStep","authClient","common","label","value","mapAuthenticator","remediationValue","selectedAuthenticator","selectedOption","form","name","getInputAuthenticator","type","getValuesAfterProceed","values"],"mappings":"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","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\nimport { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticatorFromRemediation } from '../util';\nimport { IdxOption, IdxRemediationValue } from '../../types/idx-js';\nimport { Authenticator, isAuthenticator } from '../../types';\nimport { compareAuthenticators, findMatchedOption} from '../../authenticator/util';\nimport { OktaAuthIdxInterface } from '../../../types';\n\nexport type SelectAuthenticatorValues = RemediationValues & {\n authenticator?: string | Authenticator;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class SelectAuthenticator<T extends SelectAuthenticatorValues = SelectAuthenticatorValues>\n extends Remediator<T> {\n selectedAuthenticator?: Authenticator;\n selectedOption?: any;\n\n // Find matched authenticator in provided order\n findMatchedOption(authenticators, options) {\n let option;\n for (let authenticator of authenticators) {\n option = options\n .find(({ relatesTo }) => relatesTo.key === authenticator.key);\n if (option) {\n break;\n }\n }\n return option;\n }\n\n canRemediate() {\n const { authenticators, authenticator } = this.values;\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const { options } = authenticatorFromRemediation;\n // Let users select authenticator if no input is provided\n if (!authenticators || !authenticators.length) {\n return false;\n }\n\n // Authenticator is explicitly specified by id\n if (isAuthenticator(authenticator) && authenticator.id) {\n return true;\n }\n\n // Proceed with provided authenticators\n const matchedOption = this.findMatchedOption(authenticators, options);\n if (matchedOption) {\n return true;\n }\n \n return false;\n }\n\n // TODO: remove this override method in the next major version - OKTA-491236\n getNextStep(authClient: OktaAuthIdxInterface) {\n const common = super.getNextStep(authClient);\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation);\n const options = authenticatorFromRemediation.options!.map(option => {\n const { \n label, \n relatesTo\n } = option as IdxOption;\n const key = relatesTo!.key!;\n return { label, value: key };\n });\n return { ...common, options };\n }\n\n mapAuthenticator(remediationValue: IdxRemediationValue) {\n const { authenticators, authenticator } = this.values;\n\n // Authenticator is explicitly specified by id\n if (isAuthenticator(authenticator) && authenticator.id) {\n this.selectedAuthenticator = authenticator; // track the selected authenticator\n return authenticator;\n }\n\n const { options } = remediationValue;\n const selectedOption = findMatchedOption(authenticators, options);\n this.selectedAuthenticator = selectedOption.relatesTo; // track the selected authenticator\n this.selectedOption = selectedOption;\n return {\n id: selectedOption?.value.form.value.find(({ name }) => name === 'id').value\n };\n }\n\n getInputAuthenticator(remediation) {\n const options = remediation.options.map(({ label, relatesTo }) => {\n return {\n label,\n value: relatesTo.key\n };\n });\n return { name: 'authenticator', type: 'string', options };\n }\n\n getValuesAfterProceed(): T {\n this.values = super.getValuesAfterProceed();\n // remove used authenticators\n const authenticators = (this.values.authenticators as Authenticator[])\n .filter(authenticator => {\n return compareAuthenticators(authenticator, this.selectedAuthenticator) !== true;\n });\n return { ...this.values, authenticators };\n }\n\n}\n"],"file":"SelectAuthenticator.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/Base/VerifyAuthenticator.ts"],"names":["VerifyAuthenticator","Remediator","constructor","remediation","values","authenticator","getNextStep","authClient","context","nextStep","authenticatorEnrollments","value","canRemediate","canVerify","mapCredentials","getInputCredentials","input","getInputs","getValuesAfterProceed","trimmedValues","valueKey"],"mappings":";;;;;;;;;;;;;;AAaA;;AACA;;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AACO,MAAMA,mBAAN,SACGC,sBADH,CACiB;AAItBC,EAAAA,WAAW,CAACC,WAAD,EAA8BC,MAAS,GAAG,EAA1C,EAAmD;AAC5D,UAAMD,WAAN,EAAmBC,MAAnB;AACA,SAAKC,aAAL,GAAqB,qCAAiBF,WAAjB,CAArB;AACD;;AAEDG,EAAAA,WAAW,CAACC,UAAD,EAAgCC,OAAhC,EAAgE;AAAA;;AACzE,UAAMC,QAAQ,GAAG,MAAMH,WAAN,CAAkBC,UAAlB,EAA8BC,OAA9B,CAAjB;AACA,UAAME,wBAAwB,GAAGF,OAAH,aAAGA,OAAH,gDAAGA,OAAO,CAAEE,wBAAZ,0DAAG,sBAAmCC,KAApE;AAEA,WAAO,EACL,GAAGF,QADE;AAELC,MAAAA;AAFK,KAAP;AAID;;AAEDE,EAAAA,YAAY,GAAG;AACb,WAAO,KAAKP,aAAL,CAAmBQ,SAAnB,sBAA6B,IAA7B,EAAP;AACD;;AAEDC,EAAAA,cAAc,GAAG;AACf,WAAO,KAAKT,aAAL,CAAmBS,cAAnB,sBAAkC,IAAlC,EAAP;AACD;;AAEDC,EAAAA,mBAAmB,CAACC,KAAD,EAAQ;AACzB,WAAO,KAAKX,aAAL,CAAmBY,SAAnB,CAA6BD,KAA7B,CAAP;AACD;;AAEDE,EAAAA,qBAAqB,GAAM;AAAA;;AACzB,SAAKd,MAAL,GAAc,MAAMc,qBAAN,EAAd;AACA,QAAIC,aAAa,GAAG,wEAAY,IAAZ,mBAAgCC,QAAQ,IAAIA,QAAQ,KAAK,aAAzD,CAApB;AACA,WAAO,qBAAAD,aAAa,MAAb,CAAAA,aAAa,EAAQ,CAACf,MAAD,EAASgB,QAAT,MAAuB,EAAC,GAAGhB,MAAJ;AAAY,OAACgB,QAAD,GAAY,2BAAYA,QAAZ;AAAxB,KAAvB,CAAR,EAAgF,EAAhF,CAApB;AACD;;AAnCqB","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 { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticator, Authenticator, AuthenticatorValues } from '../../authenticator';\nimport { IdxRemediation, IdxContext } from '../../types/idx-js';\nimport { NextStep } from '../../types';\nimport { OktaAuthInterface } from '../../../types';\n\nexport type VerifyAuthenticatorValues = AuthenticatorValues & RemediationValues;\n\n// Base class - DO NOT expose static remediationName\nexport class VerifyAuthenticator<T extends VerifyAuthenticatorValues = VerifyAuthenticatorValues>\n extends Remediator<T> {\n\n authenticator: Authenticator<VerifyAuthenticatorValues>;\n\n constructor(remediation: IdxRemediation, values: T = {} as T) {\n super(remediation, values);\n this.authenticator = getAuthenticator(remediation);\n }\n\n getNextStep(authClient: OktaAuthInterface, context?: IdxContext): NextStep {\n const nextStep = super.getNextStep(authClient, context);\n const authenticatorEnrollments = context?.authenticatorEnrollments?.value;\n\n return {\n ...nextStep,\n authenticatorEnrollments\n };\n }\n\n canRemediate() {\n return this.authenticator.canVerify(this.values);\n }\n\n mapCredentials() {\n return this.authenticator.mapCredentials(this.values);\n }\n\n getInputCredentials(input) {\n return this.authenticator.getInputs(input);\n }\n\n getValuesAfterProceed(): T {\n this.values = super.getValuesAfterProceed();\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'credentials');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {} as T);\n }\n}\n"],"file":"VerifyAuthenticator.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/remediators/Base/VerifyAuthenticator.ts"],"names":["VerifyAuthenticator","Remediator","constructor","remediation","values","authenticator","getNextStep","authClient","context","nextStep","authenticatorEnrollments","value","canRemediate","canVerify","mapCredentials","getInputCredentials","input","getInputs","getValuesAfterProceed","trimmedValues","valueKey"],"mappings":";;;;;;;;;;;;;;AAaA;;AACA;;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;AACO,MAAMA,mBAAN,SACGC,sBADH,CACiB;AAItBC,EAAAA,WAAW,CAACC,WAAD,EAA8BC,MAAS,GAAG,EAA1C,EAAmD;AAC5D,UAAMD,WAAN,EAAmBC,MAAnB;AACA,SAAKC,aAAL,GAAqB,qCAAiBF,WAAjB,CAArB;AACD;;AAEDG,EAAAA,WAAW,CAACC,UAAD,EAAmCC,OAAnC,EAAmE;AAAA;;AAC5E,UAAMC,QAAQ,GAAG,MAAMH,WAAN,CAAkBC,UAAlB,EAA8BC,OAA9B,CAAjB;AACA,UAAME,wBAAwB,GAAGF,OAAH,aAAGA,OAAH,gDAAGA,OAAO,CAAEE,wBAAZ,0DAAG,sBAAmCC,KAApE;AAEA,WAAO,EACL,GAAGF,QADE;AAELC,MAAAA;AAFK,KAAP;AAID;;AAEDE,EAAAA,YAAY,GAAG;AACb,WAAO,KAAKP,aAAL,CAAmBQ,SAAnB,sBAA6B,IAA7B,EAAP;AACD;;AAEDC,EAAAA,cAAc,GAAG;AACf,WAAO,KAAKT,aAAL,CAAmBS,cAAnB,sBAAkC,IAAlC,EAAP;AACD;;AAEDC,EAAAA,mBAAmB,CAACC,KAAD,EAAQ;AACzB,WAAO,KAAKX,aAAL,CAAmBY,SAAnB,CAA6BD,KAA7B,CAAP;AACD;;AAEDE,EAAAA,qBAAqB,GAAM;AAAA;;AACzB,SAAKd,MAAL,GAAc,MAAMc,qBAAN,EAAd;AACA,QAAIC,aAAa,GAAG,wEAAY,IAAZ,mBAAgCC,QAAQ,IAAIA,QAAQ,KAAK,aAAzD,CAApB;AACA,WAAO,qBAAAD,aAAa,MAAb,CAAAA,aAAa,EAAQ,CAACf,MAAD,EAASgB,QAAT,MAAuB,EAAC,GAAGhB,MAAJ;AAAY,OAACgB,QAAD,GAAY,2BAAYA,QAAZ;AAAxB,KAAvB,CAAR,EAAgF,EAAhF,CAApB;AACD;;AAnCqB","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 { Remediator, RemediationValues } from './Remediator';\nimport { getAuthenticator, Authenticator, AuthenticatorValues } from '../../authenticator';\nimport { IdxRemediation, IdxContext } from '../../types/idx-js';\nimport { NextStep } from '../../types';\nimport { OktaAuthIdxInterface } from '../../../types';\n\nexport type VerifyAuthenticatorValues = AuthenticatorValues & RemediationValues;\n\n// Base class - DO NOT expose static remediationName\nexport class VerifyAuthenticator<T extends VerifyAuthenticatorValues = VerifyAuthenticatorValues>\n extends Remediator<T> {\n\n authenticator: Authenticator<VerifyAuthenticatorValues>;\n\n constructor(remediation: IdxRemediation, values: T = {} as T) {\n super(remediation, values);\n this.authenticator = getAuthenticator(remediation);\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context?: IdxContext): NextStep {\n const nextStep = super.getNextStep(authClient, context);\n const authenticatorEnrollments = context?.authenticatorEnrollments?.value;\n\n return {\n ...nextStep,\n authenticatorEnrollments\n };\n }\n\n canRemediate() {\n return this.authenticator.canVerify(this.values);\n }\n\n mapCredentials() {\n return this.authenticator.mapCredentials(this.values);\n }\n\n getInputCredentials(input) {\n return this.authenticator.getInputs(input);\n }\n\n getValuesAfterProceed(): T {\n this.values = super.getValuesAfterProceed();\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'credentials');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {} as T);\n }\n}\n"],"file":"VerifyAuthenticator.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../lib/idx/remediators/EnrollPoll.ts"],"names":["EnrollPoll","Remediator","canRemediate","startPolling","options","step","getNextStep","authClient","context","common","authenticator","getAuthenticator","currentAuthenticator","value","poll","required","refresh","remediation","getValuesAfterProceed","trimmedValues","valueKey","values"],"mappings":";;;;;;;;;;;;;;;;AAaA;;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWO,MAAMA,UAAN,SAAyBC,sBAAzB,CAAsD;AAG3DC,EAAAA,YAAY,GAAG;AACb,WAAO,CAAC,CAAC,2BAAYC,YAAd,IAA8B,KAAKC,OAAL,CAAaC,IAAb,KAAsB,aAA3D;AACD;;AAEDC,EAAAA,WAAW,CAACC,UAAD,EAAgCC,OAAhC,EAAgE;AACzE,UAAMC,MAAM,GAAG,MAAMH,WAAN,CAAkBC,UAAlB,EAA8BC,OAA9B,CAAf;AACA,QAAIE,aAAa,GAAG,KAAKC,gBAAL,EAApB;;AACA,QAAI,CAACD,aAAD,IAAkBF,OAAlB,aAAkBA,OAAlB,eAAkBA,OAAO,CAAEI,oBAA/B,EAAqD;AACnDF,MAAAA,aAAa,GAAGF,OAAO,CAACI,oBAAR,CAA6BC,KAA7C;AACD;;AACD,WAAO,EACL,GAAGJ,MADE;AAELC,MAAAA,aAFK;AAGLI,MAAAA,IAAI,EAAE;AACJC,QAAAA,QAAQ,EAAE,IADN;AAEJC,QAAAA,OAAO,EAAE,KAAKC,WAAL,CAAiBD;AAFtB;AAHD,KAAP;AAQD;;AAEDE,EAAAA,qBAAqB,GAAqB;AAAA;;AACxC,QAAIC,aAAa,GAAG,wEAAY,IAAZ,mBAAgCC,QAAQ,IAAIA,QAAQ,KAAK,cAAzD,CAApB;AACA,WAAO,qBAAAD,aAAa,MAAb,CAAAA,aAAa,EAAQ,CAACE,MAAD,EAASD,QAAT,MAAuB,EAAC,GAAGC,MAAJ;AAAY,OAACD,QAAD,GAAY,2BAAYA,QAAZ;AAAxB,KAAvB,CAAR,EAAgF,EAAhF,CAApB;AACD;;AA1B0D;;;8BAAhDpB,U,qBACc,a","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 { Remediator, RemediationValues } from './Base/Remediator';\nimport { NextStep, OktaAuthInterface } from '../../types';\nimport { IdxContext } from '../types/idx-js';\n\nexport interface EnrollPollValues extends RemediationValues {\n startPolling?: boolean;\n}\n\nexport class EnrollPoll extends Remediator<EnrollPollValues> {\n static remediationName = 'enroll-poll';\n\n canRemediate() {\n return !!this.values.startPolling || this.options.step === 'enroll-poll';\n }\n\n getNextStep(authClient: OktaAuthInterface, context?: IdxContext): NextStep {\n const common = super.getNextStep(authClient, context);\n let authenticator = this.getAuthenticator();\n if (!authenticator && context?.currentAuthenticator) {\n authenticator = context.currentAuthenticator.value;\n }\n return {\n ...common,\n authenticator,\n poll: {\n required: true,\n refresh: this.remediation.refresh\n },\n };\n }\n\n getValuesAfterProceed(): EnrollPollValues {\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'startPolling');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n"],"file":"EnrollPoll.js"}
1
+ {"version":3,"sources":["../../../../lib/idx/remediators/EnrollPoll.ts"],"names":["EnrollPoll","Remediator","canRemediate","startPolling","options","step","getNextStep","authClient","context","common","authenticator","getAuthenticator","currentAuthenticator","value","poll","required","refresh","remediation","getValuesAfterProceed","trimmedValues","valueKey","values"],"mappings":";;;;;;;;;;;;;;;;AAaA;;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWO,MAAMA,UAAN,SAAyBC,sBAAzB,CAAsD;AAG3DC,EAAAA,YAAY,GAAG;AACb,WAAO,CAAC,CAAC,2BAAYC,YAAd,IAA8B,KAAKC,OAAL,CAAaC,IAAb,KAAsB,aAA3D;AACD;;AAEDC,EAAAA,WAAW,CAACC,UAAD,EAAmCC,OAAnC,EAAmE;AAC5E,UAAMC,MAAM,GAAG,MAAMH,WAAN,CAAkBC,UAAlB,EAA8BC,OAA9B,CAAf;AACA,QAAIE,aAAa,GAAG,KAAKC,gBAAL,EAApB;;AACA,QAAI,CAACD,aAAD,IAAkBF,OAAlB,aAAkBA,OAAlB,eAAkBA,OAAO,CAAEI,oBAA/B,EAAqD;AACnDF,MAAAA,aAAa,GAAGF,OAAO,CAACI,oBAAR,CAA6BC,KAA7C;AACD;;AACD,WAAO,EACL,GAAGJ,MADE;AAELC,MAAAA,aAFK;AAGLI,MAAAA,IAAI,EAAE;AACJC,QAAAA,QAAQ,EAAE,IADN;AAEJC,QAAAA,OAAO,EAAE,KAAKC,WAAL,CAAiBD;AAFtB;AAHD,KAAP;AAQD;;AAEDE,EAAAA,qBAAqB,GAAqB;AAAA;;AACxC,QAAIC,aAAa,GAAG,wEAAY,IAAZ,mBAAgCC,QAAQ,IAAIA,QAAQ,KAAK,cAAzD,CAApB;AACA,WAAO,qBAAAD,aAAa,MAAb,CAAAA,aAAa,EAAQ,CAACE,MAAD,EAASD,QAAT,MAAuB,EAAC,GAAGC,MAAJ;AAAY,OAACD,QAAD,GAAY,2BAAYA,QAAZ;AAAxB,KAAvB,CAAR,EAAgF,EAAhF,CAApB;AACD;;AA1B0D;;;8BAAhDpB,U,qBACc,a","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 { Remediator, RemediationValues } from './Base/Remediator';\nimport { NextStep, OktaAuthIdxInterface } from '../../types';\nimport { IdxContext } from '../types/idx-js';\n\nexport interface EnrollPollValues extends RemediationValues {\n startPolling?: boolean;\n}\n\nexport class EnrollPoll extends Remediator<EnrollPollValues> {\n static remediationName = 'enroll-poll';\n\n canRemediate() {\n return !!this.values.startPolling || this.options.step === 'enroll-poll';\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context?: IdxContext): NextStep {\n const common = super.getNextStep(authClient, context);\n let authenticator = this.getAuthenticator();\n if (!authenticator && context?.currentAuthenticator) {\n authenticator = context.currentAuthenticator.value;\n }\n return {\n ...common,\n authenticator,\n poll: {\n required: true,\n refresh: this.remediation.refresh\n },\n };\n }\n\n getValuesAfterProceed(): EnrollPollValues {\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'startPolling');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n"],"file":"EnrollPoll.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../lib/idx/remediators/EnrollmentChannelData.ts"],"names":["EnrollmentChannelData","Remediator","getInputEmail","name","type","required","label","getInputPhoneNumber","canRemediate","Boolean","email","phoneNumber","getNextStep","authClient","context","common","authenticator","currentAuthenticator","value","getData","stateHandle","getValuesAfterProceed","trimmedValues","valueKey","values"],"mappings":";;;;;;;;;;;;;;;;;;AAaA;;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAaO,MAAMA,qBAAN,SAAoCC,sBAApC,CAA4E;AAGjFC,EAAAA,aAAa,GAAG;AACd,WAAO,CACL;AAAEC,MAAAA,IAAI,EAAE,OAAR;AAAiBC,MAAAA,IAAI,EAAE,QAAvB;AAAiCC,MAAAA,QAAQ,EAAE,IAA3C;AAAiDC,MAAAA,KAAK,EAAE;AAAxD,KADK,CAAP;AAGD;;AAEDC,EAAAA,mBAAmB,GAAG;AACpB,WAAO,CACL;AAAEJ,MAAAA,IAAI,EAAE,aAAR;AAAuBC,MAAAA,IAAI,EAAE,QAA7B;AAAuCC,MAAAA,QAAQ,EAAE,IAAjD;AAAuDC,MAAAA,KAAK,EAAE;AAA9D,KADK,CAAP;AAGD;;AAEDE,EAAAA,YAAY,GAAG;AACb,WAAOC,OAAO,CAAC,2BAAYC,KAAZ,IAAqB,2BAAYC,WAAlC,CAAd;AACD;;AAEDC,EAAAA,WAAW,CAACC,UAAD,EAAgCC,OAAhC,EAAqD;AAC9D,UAAMC,MAAM,GAAG,MAAMH,WAAN,CAAkBC,UAAlB,EAA8BC,OAA9B,CAAf;AACA,UAAME,aAAa,GAAGF,OAAO,CAACG,oBAAR,CAA6BC,KAAnD;AACA,WAAO,EACL,GAAGH,MADE;AAELC,MAAAA;AAFK,KAAP;AAID;;AAEDG,EAAAA,OAAO,GAAG;AACR,WAAO;AACLC,MAAAA,WAAW,EAAE,2BAAYA,WADpB;AAELV,MAAAA,KAAK,EAAE,2BAAYA,KAFd;AAGLC,MAAAA,WAAW,EAAE,2BAAYA;AAHpB,KAAP;AAKD;;AAEDU,EAAAA,qBAAqB,GAAgC;AAAA;;AACnD,QAAIC,aAAa,GAAG,wEAAY,IAAZ,mBAAgCC,QAAQ;AAAA;;AAAA,aAAI,CAAC,oCAAC,OAAD,EAAU,aAAV,mBAAkCA,QAAlC,CAAL;AAAA,KAAxC,CAApB;AACA,WAAO,qBAAAD,aAAa,MAAb,CAAAA,aAAa,EAAQ,CAACE,MAAD,EAASD,QAAT,MAAuB,EAAC,GAAGC,MAAJ;AAAY,OAACD,QAAD,GAAY,2BAAYA,QAAZ;AAAxB,KAAvB,CAAR,EAAgF,EAAhF,CAApB;AACD;;AAvCgF;;;8BAAtEvB,qB,qBACc,yB","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\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { IdxContext } from '../types/idx-js';\nimport { OktaAuthInterface } from '../../types';\n\n\nexport type EnrollmentChannelDataValues = RemediationValues & {\n email?: string;\n phoneNumber?: string;\n};\n\nexport class EnrollmentChannelData extends Remediator<EnrollmentChannelDataValues> {\n static remediationName = 'enrollment-channel-data';\n\n getInputEmail() {\n return [\n { name: 'email', type: 'string', required: true, label: 'Email' },\n ];\n }\n\n getInputPhoneNumber() {\n return [\n { name: 'phoneNumber', type: 'string', required: true, label: 'Phone Number' },\n ];\n }\n\n canRemediate() {\n return Boolean(this.values.email || this.values.phoneNumber);\n }\n\n getNextStep(authClient: OktaAuthInterface, context: IdxContext) {\n const common = super.getNextStep(authClient, context);\n const authenticator = context.currentAuthenticator.value;\n return {\n ...common,\n authenticator,\n };\n }\n\n getData() {\n return {\n stateHandle: this.values.stateHandle,\n email: this.values.email,\n phoneNumber: this.values.phoneNumber\n };\n }\n\n getValuesAfterProceed(): EnrollmentChannelDataValues {\n let trimmedValues = Object.keys(this.values).filter(valueKey => !['email', 'phoneNumber'].includes(valueKey));\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n"],"file":"EnrollmentChannelData.js"}
1
+ {"version":3,"sources":["../../../../lib/idx/remediators/EnrollmentChannelData.ts"],"names":["EnrollmentChannelData","Remediator","getInputEmail","name","type","required","label","getInputPhoneNumber","canRemediate","Boolean","email","phoneNumber","getNextStep","authClient","context","common","authenticator","currentAuthenticator","value","getData","stateHandle","getValuesAfterProceed","trimmedValues","valueKey","values"],"mappings":";;;;;;;;;;;;;;;;;;AAaA;;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAaO,MAAMA,qBAAN,SAAoCC,sBAApC,CAA4E;AAGjFC,EAAAA,aAAa,GAAG;AACd,WAAO,CACL;AAAEC,MAAAA,IAAI,EAAE,OAAR;AAAiBC,MAAAA,IAAI,EAAE,QAAvB;AAAiCC,MAAAA,QAAQ,EAAE,IAA3C;AAAiDC,MAAAA,KAAK,EAAE;AAAxD,KADK,CAAP;AAGD;;AAEDC,EAAAA,mBAAmB,GAAG;AACpB,WAAO,CACL;AAAEJ,MAAAA,IAAI,EAAE,aAAR;AAAuBC,MAAAA,IAAI,EAAE,QAA7B;AAAuCC,MAAAA,QAAQ,EAAE,IAAjD;AAAuDC,MAAAA,KAAK,EAAE;AAA9D,KADK,CAAP;AAGD;;AAEDE,EAAAA,YAAY,GAAG;AACb,WAAOC,OAAO,CAAC,2BAAYC,KAAZ,IAAqB,2BAAYC,WAAlC,CAAd;AACD;;AAEDC,EAAAA,WAAW,CAACC,UAAD,EAAmCC,OAAnC,EAAwD;AACjE,UAAMC,MAAM,GAAG,MAAMH,WAAN,CAAkBC,UAAlB,EAA8BC,OAA9B,CAAf;AACA,UAAME,aAAa,GAAGF,OAAO,CAACG,oBAAR,CAA6BC,KAAnD;AACA,WAAO,EACL,GAAGH,MADE;AAELC,MAAAA;AAFK,KAAP;AAID;;AAEDG,EAAAA,OAAO,GAAG;AACR,WAAO;AACLC,MAAAA,WAAW,EAAE,2BAAYA,WADpB;AAELV,MAAAA,KAAK,EAAE,2BAAYA,KAFd;AAGLC,MAAAA,WAAW,EAAE,2BAAYA;AAHpB,KAAP;AAKD;;AAEDU,EAAAA,qBAAqB,GAAgC;AAAA;;AACnD,QAAIC,aAAa,GAAG,wEAAY,IAAZ,mBAAgCC,QAAQ;AAAA;;AAAA,aAAI,CAAC,oCAAC,OAAD,EAAU,aAAV,mBAAkCA,QAAlC,CAAL;AAAA,KAAxC,CAApB;AACA,WAAO,qBAAAD,aAAa,MAAb,CAAAA,aAAa,EAAQ,CAACE,MAAD,EAASD,QAAT,MAAuB,EAAC,GAAGC,MAAJ;AAAY,OAACD,QAAD,GAAY,2BAAYA,QAAZ;AAAxB,KAAvB,CAAR,EAAgF,EAAhF,CAApB;AACD;;AAvCgF;;;8BAAtEvB,qB,qBACc,yB","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\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { IdxContext } from '../types/idx-js';\nimport { OktaAuthIdxInterface } from '../../types';\n\n\nexport type EnrollmentChannelDataValues = RemediationValues & {\n email?: string;\n phoneNumber?: string;\n};\n\nexport class EnrollmentChannelData extends Remediator<EnrollmentChannelDataValues> {\n static remediationName = 'enrollment-channel-data';\n\n getInputEmail() {\n return [\n { name: 'email', type: 'string', required: true, label: 'Email' },\n ];\n }\n\n getInputPhoneNumber() {\n return [\n { name: 'phoneNumber', type: 'string', required: true, label: 'Phone Number' },\n ];\n }\n\n canRemediate() {\n return Boolean(this.values.email || this.values.phoneNumber);\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context: IdxContext) {\n const common = super.getNextStep(authClient, context);\n const authenticator = context.currentAuthenticator.value;\n return {\n ...common,\n authenticator,\n };\n }\n\n getData() {\n return {\n stateHandle: this.values.stateHandle,\n email: this.values.email,\n phoneNumber: this.values.phoneNumber\n };\n }\n\n getValuesAfterProceed(): EnrollmentChannelDataValues {\n let trimmedValues = Object.keys(this.values).filter(valueKey => !['email', 'phoneNumber'].includes(valueKey));\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n"],"file":"EnrollmentChannelData.js"}
@@ -16,8 +16,6 @@ var _Remediator = require("../Base/Remediator");
16
16
 
17
17
  var _util = require("./util");
18
18
 
19
- var _proceed = require("../../proceed");
20
-
21
19
  class GenericRemediator extends _Remediator.Remediator {
22
20
  canRemediate() {
23
21
  // only handle remediations that are able to submit form (xhr)
@@ -72,7 +70,7 @@ class GenericRemediator extends _Remediator.Remediator {
72
70
  inputs
73
71
  }),
74
72
  action: async params => {
75
- return (0, _proceed.proceed)(authClient, {
73
+ return authClient.idx.proceed({
76
74
  step: name,
77
75
  ...params
78
76
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/GenericRemediator/GenericRemediator.ts"],"names":["GenericRemediator","Remediator","canRemediate","remediation","action","inputs","getInputs","res","acc","input","getData","data","name","getNextStep","authClient","_context","getName","href","method","rel","accepts","produces","value","rest","length","params","step","unwrapFormValue","type"],"mappings":";;;;;;;;;;;;;;AACA;;AACA;;AACA;;AAGO,MAAMA,iBAAN,SAAgCC,sBAAhC,CAA2C;AAChDC,EAAAA,YAAY,GAAY;AACtB;AACA,QAAI,OAAO,KAAKC,WAAL,CAAiBC,MAAxB,KAAmC,UAAvC,EAAmD;AACjD,aAAO,KAAP;AACD;;AAED,UAAMC,MAAM,GAAG,KAAKC,SAAL,EAAf;AACA,UAAMC,GAAG,GAAG,qBAAAF,MAAM,MAAN,CAAAA,MAAM,EAAQ,CAACG,GAAD,EAAMC,KAAN,KAAgB;AACxC,aAAOD,GAAG,IAAI,8BAAmBC,KAAnB,uBAA0B,IAA1B,EAAd;AACD,KAFiB,EAEf,IAFe,CAAlB;AAGA,WAAOF,GAAP;AACD;;AAEDG,EAAAA,OAAO,GAAG;AAAA;;AACR,UAAMC,IAAI,GAAG,sCAAKL,SAAL,oBAAwB,CAACE,GAAD,EAAM;AAAEI,MAAAA;AAAF,KAAN,KAAmB;AACtDJ,MAAAA,GAAG,CAACI,IAAD,CAAH,GAAY,2BAAYA,IAAZ,CAAZ;AACA,aAAOJ,GAAP;AACD,KAHY,EAGV,EAHU,CAAb;AAIA,WAAOG,IAAP;AACD;;AAEDE,EAAAA,WAAW,CAACC,UAAD,EAAgCC,QAAhC,EAAiE;AAC1E,UAAMH,IAAI,GAAG,KAAKI,OAAL,EAAb;AACA,UAAMX,MAAM,GAAG,KAAKC,SAAL,EAAf;AAEA;AACA;;AACA,UAAM;AACJ;AACAW,MAAAA,IAFI;AAGJC,MAAAA,MAHI;AAIJC,MAAAA,GAJI;AAKJC,MAAAA,OALI;AAMJC,MAAAA,QANI;AAOJ;AACAC,MAAAA,KARI;AASJ;AACAlB,MAAAA,MAVI;AAWJ,SAAGmB;AAXC,QAYF,KAAKpB,WAZT;AAaA;AAEA;;AACA,QAAIC,MAAJ,EAAY;AACV,aAAO,EACL,GAAGmB,IADE;AAEL,YAAI,CAAC,CAAClB,MAAM,CAACmB,MAAT,IAAmB;AAAEnB,UAAAA;AAAF,SAAvB,CAFK;AAGLD,QAAAA,MAAM,EAAE,MAAOqB,MAAP,IAAmB;AACzB,iBAAO,sBAAQX,UAAR,EAAoB;AACzBY,YAAAA,IAAI,EAAEd,IADmB;AAEzB,eAAGa;AAFsB,WAApB,CAAP;AAID;AARI,OAAP;AAUD,KAjCyE,CAmC1E;;;AACA,WAAO,EAAE,GAAG,KAAKtB;AAAV,KAAP;AAED;;AAEDG,EAAAA,SAAS,GAAY;AAAA;;AACnB,WAAO,6FAAC,KAAKH,WAAL,CAAiBmB,KAAjB,IAA0B,EAA3B,kBACG,CAAC;AAAEV,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,aAD1B,mBAEAe,qBAFA,mBAGAlB,KAAK,IAAI;AACZ;AACAA,MAAAA,KAAK,CAACmB,IAAN,GAAanB,KAAK,CAACmB,IAAN,IAAc,QAA3B;AACA,aAAOnB,KAAP;AACD,KAPI,CAAP;AAQD;;AAvE+C","sourcesContent":["import { IdxContext, NextStep, Input } from '../../types';\nimport { Remediator } from '../Base/Remediator';\nimport { unwrapFormValue, hasValidInputValue } from './util';\nimport { proceed } from '../../proceed';\nimport { OktaAuthInterface } from '../../../types';\n\nexport class GenericRemediator extends Remediator {\n canRemediate(): boolean {\n // only handle remediations that are able to submit form (xhr)\n if (typeof this.remediation.action !== 'function') {\n return false;\n }\n\n const inputs = this.getInputs();\n const res = inputs.reduce((acc, input) => {\n return acc && hasValidInputValue(input, this.values);\n }, true);\n return res;\n }\n\n getData() {\n const data = this.getInputs().reduce((acc, { name }) => {\n acc[name] = this.values[name];\n return acc;\n }, {});\n return data;\n }\n\n getNextStep(authClient: OktaAuthInterface, _context?: IdxContext): NextStep {\n const name = this.getName();\n const inputs = this.getInputs();\n \n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n // excludes transformed fields\n const { \n // http metas have been transformed to action\n href, \n method, \n rel, \n accepts, \n produces, \n // value has been transform to inputs\n value,\n // will be transformed to a function that resolves IdxTransaction\n action,\n ...rest \n } = this.remediation;\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n\n // step to handle form submission\n if (action) {\n return { \n ...rest,\n ...(!!inputs.length && { inputs }),\n action: async (params?) => {\n return proceed(authClient, {\n step: name,\n ...params\n });\n }\n };\n }\n\n // return whole remediation data for other steps, eg \"redirect-idp\"\n return { ...this.remediation } as NextStep;\n \n }\n\n getInputs(): Input[] {\n return (this.remediation.value || [])\n .filter(({ name }) => name !== 'stateHandle')\n .map(unwrapFormValue)\n .map(input => {\n // use string as default input type\n input.type = input.type || 'string';\n return input;\n });\n }\n\n}\n"],"file":"GenericRemediator.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/remediators/GenericRemediator/GenericRemediator.ts"],"names":["GenericRemediator","Remediator","canRemediate","remediation","action","inputs","getInputs","res","acc","input","getData","data","name","getNextStep","authClient","_context","getName","href","method","rel","accepts","produces","value","rest","length","params","idx","proceed","step","unwrapFormValue","type"],"mappings":";;;;;;;;;;;;;;AACA;;AACA;;AAGO,MAAMA,iBAAN,SAAgCC,sBAAhC,CAA2C;AAChDC,EAAAA,YAAY,GAAY;AACtB;AACA,QAAI,OAAO,KAAKC,WAAL,CAAiBC,MAAxB,KAAmC,UAAvC,EAAmD;AACjD,aAAO,KAAP;AACD;;AAED,UAAMC,MAAM,GAAG,KAAKC,SAAL,EAAf;AACA,UAAMC,GAAG,GAAG,qBAAAF,MAAM,MAAN,CAAAA,MAAM,EAAQ,CAACG,GAAD,EAAMC,KAAN,KAAgB;AACxC,aAAOD,GAAG,IAAI,8BAAmBC,KAAnB,uBAA0B,IAA1B,EAAd;AACD,KAFiB,EAEf,IAFe,CAAlB;AAGA,WAAOF,GAAP;AACD;;AAEDG,EAAAA,OAAO,GAAG;AAAA;;AACR,UAAMC,IAAI,GAAG,sCAAKL,SAAL,oBAAwB,CAACE,GAAD,EAAM;AAAEI,MAAAA;AAAF,KAAN,KAAmB;AACtDJ,MAAAA,GAAG,CAACI,IAAD,CAAH,GAAY,2BAAYA,IAAZ,CAAZ;AACA,aAAOJ,GAAP;AACD,KAHY,EAGV,EAHU,CAAb;AAIA,WAAOG,IAAP;AACD;;AAEDE,EAAAA,WAAW,CAACC,UAAD,EAAmCC,QAAnC,EAAoE;AAC7E,UAAMH,IAAI,GAAG,KAAKI,OAAL,EAAb;AACA,UAAMX,MAAM,GAAG,KAAKC,SAAL,EAAf;AAEA;AACA;;AACA,UAAM;AACJ;AACAW,MAAAA,IAFI;AAGJC,MAAAA,MAHI;AAIJC,MAAAA,GAJI;AAKJC,MAAAA,OALI;AAMJC,MAAAA,QANI;AAOJ;AACAC,MAAAA,KARI;AASJ;AACAlB,MAAAA,MAVI;AAWJ,SAAGmB;AAXC,QAYF,KAAKpB,WAZT;AAaA;AAEA;;AACA,QAAIC,MAAJ,EAAY;AACV,aAAO,EACL,GAAGmB,IADE;AAEL,YAAI,CAAC,CAAClB,MAAM,CAACmB,MAAT,IAAmB;AAAEnB,UAAAA;AAAF,SAAvB,CAFK;AAGLD,QAAAA,MAAM,EAAE,MAAOqB,MAAP,IAAmB;AACzB,iBAAOX,UAAU,CAACY,GAAX,CAAeC,OAAf,CAAuB;AAC5BC,YAAAA,IAAI,EAAEhB,IADsB;AAE5B,eAAGa;AAFyB,WAAvB,CAAP;AAID;AARI,OAAP;AAUD,KAjC4E,CAmC7E;;;AACA,WAAO,EAAE,GAAG,KAAKtB;AAAV,KAAP;AAED;;AAEDG,EAAAA,SAAS,GAAY;AAAA;;AACnB,WAAO,6FAAC,KAAKH,WAAL,CAAiBmB,KAAjB,IAA0B,EAA3B,kBACG,CAAC;AAAEV,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,aAD1B,mBAEAiB,qBAFA,mBAGApB,KAAK,IAAI;AACZ;AACAA,MAAAA,KAAK,CAACqB,IAAN,GAAarB,KAAK,CAACqB,IAAN,IAAc,QAA3B;AACA,aAAOrB,KAAP;AACD,KAPI,CAAP;AAQD;;AAvE+C","sourcesContent":["import { IdxContext, NextStep, Input } from '../../types';\nimport { Remediator } from '../Base/Remediator';\nimport { unwrapFormValue, hasValidInputValue } from './util';\nimport { OktaAuthIdxInterface } from '../../../types';\n\nexport class GenericRemediator extends Remediator {\n canRemediate(): boolean {\n // only handle remediations that are able to submit form (xhr)\n if (typeof this.remediation.action !== 'function') {\n return false;\n }\n\n const inputs = this.getInputs();\n const res = inputs.reduce((acc, input) => {\n return acc && hasValidInputValue(input, this.values);\n }, true);\n return res;\n }\n\n getData() {\n const data = this.getInputs().reduce((acc, { name }) => {\n acc[name] = this.values[name];\n return acc;\n }, {});\n return data;\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, _context?: IdxContext): NextStep {\n const name = this.getName();\n const inputs = this.getInputs();\n \n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n // excludes transformed fields\n const { \n // http metas have been transformed to action\n href, \n method, \n rel, \n accepts, \n produces, \n // value has been transform to inputs\n value,\n // will be transformed to a function that resolves IdxTransaction\n action,\n ...rest \n } = this.remediation;\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n\n // step to handle form submission\n if (action) {\n return { \n ...rest,\n ...(!!inputs.length && { inputs }),\n action: async (params?) => {\n return authClient.idx.proceed({\n step: name,\n ...params\n });\n }\n };\n }\n\n // return whole remediation data for other steps, eg \"redirect-idp\"\n return { ...this.remediation } as NextStep;\n \n }\n\n getInputs(): Input[] {\n return (this.remediation.value || [])\n .filter(({ name }) => name !== 'stateHandle')\n .map(unwrapFormValue)\n .map(input => {\n // use string as default input type\n input.type = input.type || 'string';\n return input;\n });\n }\n\n}\n"],"file":"GenericRemediator.js"}
@@ -79,6 +79,7 @@ function hasValidInputValue(input, values) {
79
79
  } // handle options field
80
80
  // 1. object type options - check if each object field is required and value can be found from the selectedOption
81
81
  // 2. primitive options - required field is avaiable from top level
82
+ // 3. unknown format - pass to backend for validation
82
83
 
83
84
 
84
85
  if (options) {
@@ -88,10 +89,15 @@ function hasValidInputValue(input, values) {
88
89
 
89
90
  const selectedOption = values[name];
90
91
 
91
- if (!(selectedOption !== null && selectedOption !== void 0 && selectedOption.id)) {
92
+ if (!selectedOption) {
92
93
  return false;
93
94
  }
94
95
 
96
+ if (!selectedOption.id) {
97
+ // unknown option format, pass to backend for validation
98
+ return true;
99
+ }
100
+
95
101
  const optionSchema = (0, _find.default)(options).call(options, option => {
96
102
  var _context3;
97
103
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/GenericRemediator/util.ts"],"names":["unwrapFormValue","remediation","res","key","value","Array","isArray","formKeys","length","unwrappedForm","forEach","hasValidInputValue","input","values","fn","requiredTracker","name","type","options","required","isRequired","acc","item","selectedOption","id","optionSchema","option","idSchema","AuthSdkError"],"mappings":"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","sourcesContent":["/* eslint-disable complexity */\nimport { AuthSdkError } from '../../../errors';\nimport { Input } from '../../types';\n\nexport function unwrapFormValue(remediation): Input { \n const res = {};\n for (const [key, value] of Object.entries(remediation)) {\n if (value === null || typeof value === 'undefined') {\n continue;\n }\n\n if (Array.isArray(value)) {\n res[key] = value.map(unwrapFormValue);\n } else if (typeof value === 'object') {\n const formKeys = Object.keys(value as object);\n // detect patterns like:\n // value -> form -> value | form -> value\n if (['value', 'form'].includes(key) \n && formKeys.length === 1 \n && ['value', 'form'].includes(formKeys[0])\n ) {\n // unwrap nested form\n const unwrappedForm = unwrapFormValue(value);\n Object.entries(unwrappedForm).forEach(([key, value]) => {\n res[key] = value;\n });\n } else {\n // dfs\n res[key] = unwrapFormValue(value);\n }\n } else {\n // handle primitive value\n res[key] = value;\n }\n }\n\n return res as Input;\n}\n\n// only check if value is required for now\n// TODO: support SDK layer type based input validation\nexport function hasValidInputValue(input, values) {\n const fn = (input, values, requiredTracker) => {\n const { name, value, type, options, required } = input;\n const isRequired = required || requiredTracker;\n\n // handle nested value - all required fields should be avaiable in values \n if (Array.isArray(value)) {\n return value.reduce((acc, item) => {\n return acc && fn(item, values[name], isRequired); // recursive call\n }, true);\n }\n\n // handle options field\n // 1. object type options - check if each object field is required and value can be found from the selectedOption\n // 2. primitive options - required field is avaiable from top level\n if (options) {\n // object type options\n if (type === 'object') {\n const selectedOption = values[name];\n if (!selectedOption?.id) {\n return false;\n }\n const optionSchema = options.find((option) => {\n const idSchema = option.value.find(({ name }) => name === 'id' );\n return idSchema.value === selectedOption.id;\n });\n if (!optionSchema) {\n return false;\n }\n return optionSchema.value\n .filter(({ required }) => !!required)\n .reduce((acc, { name }) => {\n return acc && !!selectedOption[name];\n }, true);\n }\n\n // primitive options, not required - always valid\n if (required === false) {\n return true;\n }\n\n // primitive options, required - check if value is available\n if (required === true) {\n return !!values[name];\n }\n\n // unknown options, throw\n throw new AuthSdkError(`Unknown options type, ${JSON.stringify(input)}`);\n }\n\n // base case\n if (!isRequired) {\n return true;\n }\n \n return !!(values && values[name]);\n };\n\n return fn(input, values, false);\n}\n"],"file":"util.js"}
1
+ {"version":3,"sources":["../../../../../lib/idx/remediators/GenericRemediator/util.ts"],"names":["unwrapFormValue","remediation","res","key","value","Array","isArray","formKeys","length","unwrappedForm","forEach","hasValidInputValue","input","values","fn","requiredTracker","name","type","options","required","isRequired","acc","item","selectedOption","id","optionSchema","option","idSchema","AuthSdkError"],"mappings":"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","sourcesContent":["/* eslint-disable complexity */\nimport { AuthSdkError } from '../../../errors';\nimport { Input } from '../../types';\n\nexport function unwrapFormValue(remediation): Input { \n const res = {};\n for (const [key, value] of Object.entries(remediation)) {\n if (value === null || typeof value === 'undefined') {\n continue;\n }\n\n if (Array.isArray(value)) {\n res[key] = value.map(unwrapFormValue);\n } else if (typeof value === 'object') {\n const formKeys = Object.keys(value as object);\n // detect patterns like:\n // value -> form -> value | form -> value\n if (['value', 'form'].includes(key) \n && formKeys.length === 1 \n && ['value', 'form'].includes(formKeys[0])\n ) {\n // unwrap nested form\n const unwrappedForm = unwrapFormValue(value);\n Object.entries(unwrappedForm).forEach(([key, value]) => {\n res[key] = value;\n });\n } else {\n // dfs\n res[key] = unwrapFormValue(value);\n }\n } else {\n // handle primitive value\n res[key] = value;\n }\n }\n\n return res as Input;\n}\n\n// only check if value is required for now\n// TODO: support SDK layer type based input validation\nexport function hasValidInputValue(input, values) {\n const fn = (input, values, requiredTracker) => {\n const { name, value, type, options, required } = input;\n const isRequired = required || requiredTracker;\n\n // handle nested value - all required fields should be avaiable in values \n if (Array.isArray(value)) {\n return value.reduce((acc, item) => {\n return acc && fn(item, values[name], isRequired); // recursive call\n }, true);\n }\n\n // handle options field\n // 1. object type options - check if each object field is required and value can be found from the selectedOption\n // 2. primitive options - required field is avaiable from top level\n // 3. unknown format - pass to backend for validation\n if (options) {\n // object type options\n if (type === 'object') {\n const selectedOption = values[name];\n if (!selectedOption) {\n return false;\n }\n if (!selectedOption.id) {\n // unknown option format, pass to backend for validation\n return true;\n }\n const optionSchema = options.find((option) => {\n const idSchema = option.value.find(({ name }) => name === 'id' );\n return idSchema.value === selectedOption.id;\n });\n if (!optionSchema) {\n return false;\n }\n return optionSchema.value\n .filter(({ required }) => !!required)\n .reduce((acc, { name }) => {\n return acc && !!selectedOption[name];\n }, true);\n }\n\n // primitive options, not required - always valid\n if (required === false) {\n return true;\n }\n\n // primitive options, required - check if value is available\n if (required === true) {\n return !!values[name];\n }\n\n // unknown options, throw\n throw new AuthSdkError(`Unknown options type, ${JSON.stringify(input)}`);\n }\n\n // base case\n if (!isRequired) {\n return true;\n }\n \n return !!(values && values[name]);\n };\n\n return fn(input, values, false);\n}\n"],"file":"util.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../lib/idx/remediators/SelectEnrollmentChannel.ts"],"names":["SelectEnrollmentChannel","Remediator","canRemediate","Boolean","channel","getNextStep","authClient","context","common","options","getChannels","authenticator","currentAuthenticator","value","remediation","remediationValue","form","name","getData","id","stateHandle","getValuesAfterProceed","trimmedValues","valueKey","values"],"mappings":";;;;;;;;;;;;;;;;;;AAaA;;AAEA;;AAfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAaO,MAAMA,uBAAN,SAAsCC,sBAAtC,CAAgF;AAGrFC,EAAAA,YAAY,GAAG;AACb,WAAOC,OAAO,CAAC,2BAAYC,OAAb,CAAd;AACD;;AAEDC,EAAAA,WAAW,CAACC,UAAD,EAAgCC,OAAhC,EAAqD;AAC9D,UAAMC,MAAM,GAAG,MAAMH,WAAN,CAAkBC,UAAlB,EAA8BC,OAA9B,CAAf;AACA,UAAME,OAAO,GAAG,KAAKC,WAAL,EAAhB;AACA,UAAMC,aAAa,GAAGJ,OAAO,CAACK,oBAAR,CAA6BC,KAAnD;AACA,WAAO,EACL,GAAGL,MADE;AAEL;AACA,UAAIC,OAAO,IAAI;AAAEA,QAAAA;AAAF,OAAf,CAHK;AAILE,MAAAA;AAJK,KAAP;AAMD;;AAEOD,EAAAA,WAAW,GAA4B;AAAA;;AAC7C,UAAMC,aAAkC,GAAG,2CAAgC,KAAKG,WAArC,CAA3C;AACA,UAAMC,gBAAgB,GAAGJ,aAAa,CAACE,KAAvC;AACA,oCAAO,8BAAAE,gBAAgB,CAACC,IAAjB,CAAsBH,KAAtB,iBAAiC,CAAC;AAAEI,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,SAAxD,CAAP,0DAAO,sBAAoER,OAA3E;AACD;;AAEDS,EAAAA,OAAO,GAAG;AACR;AACA,UAAMH,gBAAgB,GAAG,KAAKD,WAAL,CAAkBD,KAAlB,CAAyB,CAAzB,EAA4BA,KAArD;AACA,WAAO;AACLF,MAAAA,aAAa,EAAE;AACbQ,QAAAA,EAAE,EAAEJ,gBAAgB,CAACC,IAAjB,CAAsBH,KAAtB,CAA4B,CAA5B,EAA+BA,KADtB;AAEbT,QAAAA,OAAO,EAAE,2BAAYA;AAFR,OADV;AAKLgB,MAAAA,WAAW,EAAE,2BAAYA;AALpB,KAAP;AAQD;;AAEDC,EAAAA,qBAAqB,GAAkC;AAAA;;AACrD,QAAIC,aAAa,GAAG,yEAAY,IAAZ,oBAAgCC,QAAQ,IAAIA,QAAQ,KAAK,SAAzD,CAApB;AACA,WAAO,qBAAAD,aAAa,MAAb,CAAAA,aAAa,EAAQ,CAACE,MAAD,EAASD,QAAT,MAAuB,EAAC,GAAGC,MAAJ;AAAY,OAACD,QAAD,GAAY,2BAAYA,QAAZ;AAAxB,KAAvB,CAAR,EAAgF,EAAhF,CAApB;AACD;;AAzCoF;;;8BAA1EvB,uB,qBACc,2B","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\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { IdxRemediationValueForm, IdxOption, IdxRemediationValue, IdxContext } from '../types/idx-js';\nimport { getAuthenticatorFromRemediation } from './util';\nimport { OktaAuthInterface } from '../../types';\n\n\nexport type SelectEnrollmentChannelValues = RemediationValues & {\n channel?: string;\n};\n\nexport class SelectEnrollmentChannel extends Remediator<SelectEnrollmentChannelValues> {\n static remediationName = 'select-enrollment-channel';\n\n canRemediate() {\n return Boolean(this.values.channel);\n }\n\n getNextStep(authClient: OktaAuthInterface, context: IdxContext) {\n const common = super.getNextStep(authClient, context);\n const options = this.getChannels();\n const authenticator = context.currentAuthenticator.value;\n return {\n ...common,\n // TODO: remove options field in the next major version - OKTA-491236\n ...(options && { options }),\n authenticator,\n };\n }\n\n private getChannels(): IdxOption[] | undefined {\n const authenticator: IdxRemediationValue = getAuthenticatorFromRemediation(this.remediation);\n const remediationValue = authenticator.value as IdxRemediationValueForm;\n return remediationValue.form.value.find(({ name }) => name === 'channel')?.options;\n }\n\n getData() {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediationValue = this.remediation!.value![0].value as IdxRemediationValueForm;\n return {\n authenticator: {\n id: remediationValue.form.value[0].value,\n channel: this.values.channel,\n },\n stateHandle: this.values.stateHandle,\n\n };\n }\n\n getValuesAfterProceed(): SelectEnrollmentChannelValues {\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'channel');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n"],"file":"SelectEnrollmentChannel.js"}
1
+ {"version":3,"sources":["../../../../lib/idx/remediators/SelectEnrollmentChannel.ts"],"names":["SelectEnrollmentChannel","Remediator","canRemediate","Boolean","channel","getNextStep","authClient","context","common","options","getChannels","authenticator","currentAuthenticator","value","remediation","remediationValue","form","name","getData","id","stateHandle","getValuesAfterProceed","trimmedValues","valueKey","values"],"mappings":";;;;;;;;;;;;;;;;;;AAaA;;AAEA;;AAfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAaO,MAAMA,uBAAN,SAAsCC,sBAAtC,CAAgF;AAGrFC,EAAAA,YAAY,GAAG;AACb,WAAOC,OAAO,CAAC,2BAAYC,OAAb,CAAd;AACD;;AAEDC,EAAAA,WAAW,CAACC,UAAD,EAAmCC,OAAnC,EAAwD;AACjE,UAAMC,MAAM,GAAG,MAAMH,WAAN,CAAkBC,UAAlB,EAA8BC,OAA9B,CAAf;AACA,UAAME,OAAO,GAAG,KAAKC,WAAL,EAAhB;AACA,UAAMC,aAAa,GAAGJ,OAAO,CAACK,oBAAR,CAA6BC,KAAnD;AACA,WAAO,EACL,GAAGL,MADE;AAEL;AACA,UAAIC,OAAO,IAAI;AAAEA,QAAAA;AAAF,OAAf,CAHK;AAILE,MAAAA;AAJK,KAAP;AAMD;;AAEOD,EAAAA,WAAW,GAA4B;AAAA;;AAC7C,UAAMC,aAAkC,GAAG,2CAAgC,KAAKG,WAArC,CAA3C;AACA,UAAMC,gBAAgB,GAAGJ,aAAa,CAACE,KAAvC;AACA,oCAAO,8BAAAE,gBAAgB,CAACC,IAAjB,CAAsBH,KAAtB,iBAAiC,CAAC;AAAEI,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,SAAxD,CAAP,0DAAO,sBAAoER,OAA3E;AACD;;AAEDS,EAAAA,OAAO,GAAG;AACR;AACA,UAAMH,gBAAgB,GAAG,KAAKD,WAAL,CAAkBD,KAAlB,CAAyB,CAAzB,EAA4BA,KAArD;AACA,WAAO;AACLF,MAAAA,aAAa,EAAE;AACbQ,QAAAA,EAAE,EAAEJ,gBAAgB,CAACC,IAAjB,CAAsBH,KAAtB,CAA4B,CAA5B,EAA+BA,KADtB;AAEbT,QAAAA,OAAO,EAAE,2BAAYA;AAFR,OADV;AAKLgB,MAAAA,WAAW,EAAE,2BAAYA;AALpB,KAAP;AAQD;;AAEDC,EAAAA,qBAAqB,GAAkC;AAAA;;AACrD,QAAIC,aAAa,GAAG,yEAAY,IAAZ,oBAAgCC,QAAQ,IAAIA,QAAQ,KAAK,SAAzD,CAApB;AACA,WAAO,qBAAAD,aAAa,MAAb,CAAAA,aAAa,EAAQ,CAACE,MAAD,EAASD,QAAT,MAAuB,EAAC,GAAGC,MAAJ;AAAY,OAACD,QAAD,GAAY,2BAAYA,QAAZ;AAAxB,KAAvB,CAAR,EAAgF,EAAhF,CAApB;AACD;;AAzCoF;;;8BAA1EvB,uB,qBACc,2B","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\nimport { Remediator, RemediationValues } from './Base/Remediator';\nimport { IdxRemediationValueForm, IdxOption, IdxRemediationValue, IdxContext } from '../types/idx-js';\nimport { getAuthenticatorFromRemediation } from './util';\nimport { OktaAuthIdxInterface } from '../../types';\n\n\nexport type SelectEnrollmentChannelValues = RemediationValues & {\n channel?: string;\n};\n\nexport class SelectEnrollmentChannel extends Remediator<SelectEnrollmentChannelValues> {\n static remediationName = 'select-enrollment-channel';\n\n canRemediate() {\n return Boolean(this.values.channel);\n }\n\n getNextStep(authClient: OktaAuthIdxInterface, context: IdxContext) {\n const common = super.getNextStep(authClient, context);\n const options = this.getChannels();\n const authenticator = context.currentAuthenticator.value;\n return {\n ...common,\n // TODO: remove options field in the next major version - OKTA-491236\n ...(options && { options }),\n authenticator,\n };\n }\n\n private getChannels(): IdxOption[] | undefined {\n const authenticator: IdxRemediationValue = getAuthenticatorFromRemediation(this.remediation);\n const remediationValue = authenticator.value as IdxRemediationValueForm;\n return remediationValue.form.value.find(({ name }) => name === 'channel')?.options;\n }\n\n getData() {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediationValue = this.remediation!.value![0].value as IdxRemediationValueForm;\n return {\n authenticator: {\n id: remediationValue.form.value[0].value,\n channel: this.values.channel,\n },\n stateHandle: this.values.stateHandle,\n\n };\n }\n\n getValuesAfterProceed(): SelectEnrollmentChannelValues {\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'channel');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n"],"file":"SelectEnrollmentChannel.js"}