@okta/okta-auth-js 6.0.0 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +58 -27
  3. package/cjs/AuthStateManager.js +21 -7
  4. package/cjs/AuthStateManager.js.map +1 -1
  5. package/cjs/OktaAuth.js +96 -40
  6. package/cjs/OktaAuth.js.map +1 -1
  7. package/cjs/OktaUserAgent.js +2 -2
  8. package/cjs/PromiseQueue.js +14 -3
  9. package/cjs/PromiseQueue.js.map +1 -1
  10. package/cjs/SavedObject.js +4 -2
  11. package/cjs/SavedObject.js.map +1 -1
  12. package/cjs/ServiceManager.js +195 -0
  13. package/cjs/ServiceManager.js.map +1 -0
  14. package/cjs/StorageManager.js +13 -8
  15. package/cjs/StorageManager.js.map +1 -1
  16. package/cjs/TokenManager.js +34 -32
  17. package/cjs/TokenManager.js.map +1 -1
  18. package/cjs/TransactionManager.js +17 -5
  19. package/cjs/TransactionManager.js.map +1 -1
  20. package/cjs/browser/browserStorage.js +48 -33
  21. package/cjs/browser/browserStorage.js.map +1 -1
  22. package/cjs/browser/fingerprint.js +9 -3
  23. package/cjs/browser/fingerprint.js.map +1 -1
  24. package/cjs/builderUtil.js +4 -2
  25. package/cjs/builderUtil.js.map +1 -1
  26. package/cjs/clock.js +5 -1
  27. package/cjs/clock.js.map +1 -1
  28. package/cjs/crypto/base64.js +18 -0
  29. package/cjs/crypto/base64.js.map +1 -1
  30. package/cjs/crypto/index.js +6 -4
  31. package/cjs/crypto/index.js.map +1 -1
  32. package/cjs/crypto/node.js +19 -13
  33. package/cjs/crypto/node.js.map +1 -1
  34. package/cjs/crypto/oidcHash.js +5 -1
  35. package/cjs/crypto/oidcHash.js.map +1 -1
  36. package/cjs/crypto/webauthn.js +101 -0
  37. package/cjs/crypto/webauthn.js.map +1 -0
  38. package/cjs/crypto/webcrypto.js +3 -1
  39. package/cjs/crypto/webcrypto.js.map +1 -1
  40. package/cjs/errors/AuthApiError.js +1 -1
  41. package/cjs/errors/AuthPollStopError.js +1 -1
  42. package/cjs/errors/AuthSdkError.js +1 -1
  43. package/cjs/errors/CustomError.js +5 -1
  44. package/cjs/errors/CustomError.js.map +1 -1
  45. package/cjs/errors/OAuthError.js +1 -1
  46. package/cjs/errors/index.js +1 -1
  47. package/cjs/fetch/fetchRequest.js +18 -6
  48. package/cjs/fetch/fetchRequest.js.map +1 -1
  49. package/cjs/http/headers.js.map +1 -1
  50. package/cjs/http/index.js +4 -2
  51. package/cjs/http/index.js.map +1 -1
  52. package/cjs/http/request.js +9 -5
  53. package/cjs/http/request.js.map +1 -1
  54. package/cjs/idx/authenticate.js.map +1 -1
  55. package/cjs/idx/authenticator/Authenticator.js.map +1 -1
  56. package/cjs/idx/authenticator/OktaPassword.js +12 -3
  57. package/cjs/idx/authenticator/OktaPassword.js.map +1 -1
  58. package/cjs/idx/authenticator/OktaVerifyTotp.js +9 -1
  59. package/cjs/idx/authenticator/OktaVerifyTotp.js.map +1 -1
  60. package/cjs/idx/authenticator/SecurityQuestionEnrollment.js +15 -2
  61. package/cjs/idx/authenticator/SecurityQuestionEnrollment.js.map +1 -1
  62. package/cjs/idx/authenticator/SecurityQuestionVerification.js +10 -2
  63. package/cjs/idx/authenticator/SecurityQuestionVerification.js.map +1 -1
  64. package/cjs/idx/authenticator/VerificationCodeAuthenticator.js +13 -3
  65. package/cjs/idx/authenticator/VerificationCodeAuthenticator.js.map +1 -1
  66. package/cjs/idx/authenticator/WebauthnEnrollment.js +51 -0
  67. package/cjs/idx/authenticator/WebauthnEnrollment.js.map +1 -0
  68. package/cjs/idx/authenticator/WebauthnVerification.js +60 -0
  69. package/cjs/idx/authenticator/WebauthnVerification.js.map +1 -0
  70. package/cjs/idx/authenticator/getAuthenticator.js +13 -1
  71. package/cjs/idx/authenticator/getAuthenticator.js.map +1 -1
  72. package/cjs/idx/authenticator/index.js +34 -6
  73. package/cjs/idx/authenticator/index.js.map +1 -1
  74. package/cjs/idx/authenticator/util.js +64 -0
  75. package/cjs/idx/authenticator/util.js.map +1 -0
  76. package/cjs/idx/cancel.js.map +1 -1
  77. package/cjs/idx/emailVerify.js +1 -1
  78. package/cjs/idx/emailVerify.js.map +1 -1
  79. package/cjs/idx/flow/AccountUnlockFlow.js +30 -0
  80. package/cjs/idx/flow/AccountUnlockFlow.js.map +1 -0
  81. package/cjs/idx/flow/FlowSpecification.js +8 -0
  82. package/cjs/idx/flow/FlowSpecification.js.map +1 -1
  83. package/cjs/idx/flow/PasswordRecoveryFlow.js +4 -1
  84. package/cjs/idx/flow/PasswordRecoveryFlow.js.map +1 -1
  85. package/cjs/idx/flow/index.js +20 -5
  86. package/cjs/idx/flow/index.js.map +1 -1
  87. package/cjs/idx/handleInteractionCodeRedirect.js +5 -1
  88. package/cjs/idx/handleInteractionCodeRedirect.js.map +1 -1
  89. package/cjs/idx/headers.js +21 -5
  90. package/cjs/idx/headers.js.map +1 -1
  91. package/cjs/idx/idx-js/client.js +91 -0
  92. package/cjs/idx/idx-js/client.js.map +1 -0
  93. package/cjs/idx/idx-js/index.js +40 -0
  94. package/cjs/idx/idx-js/index.js.map +1 -0
  95. package/cjs/idx/idx-js/interact.js +83 -0
  96. package/cjs/idx/idx-js/interact.js.map +1 -0
  97. package/cjs/idx/idx-js/introspect.js +62 -0
  98. package/cjs/idx/idx-js/introspect.js.map +1 -0
  99. package/cjs/idx/idx-js/parsers.js +41 -0
  100. package/cjs/idx/idx-js/parsers.js.map +1 -0
  101. package/cjs/idx/idx-js/util.js +34 -0
  102. package/cjs/idx/idx-js/util.js.map +1 -0
  103. package/cjs/idx/idx-js/v1/actionParser.js +90 -0
  104. package/cjs/idx/idx-js/v1/actionParser.js.map +1 -0
  105. package/cjs/idx/idx-js/v1/generateIdxAction.js +111 -0
  106. package/cjs/idx/idx-js/v1/generateIdxAction.js.map +1 -0
  107. package/cjs/idx/idx-js/v1/idxResponseParser.js +137 -0
  108. package/cjs/idx/idx-js/v1/idxResponseParser.js.map +1 -0
  109. package/cjs/idx/idx-js/v1/makeIdxState.js +65 -0
  110. package/cjs/idx/idx-js/v1/makeIdxState.js.map +1 -0
  111. package/cjs/idx/idx-js/v1/parsers.js +24 -0
  112. package/cjs/idx/idx-js/v1/parsers.js.map +1 -0
  113. package/cjs/idx/idx-js/v1/remediationParser.js +32 -0
  114. package/cjs/idx/idx-js/v1/remediationParser.js.map +1 -0
  115. package/cjs/idx/index.js +120 -121
  116. package/cjs/idx/index.js.map +1 -1
  117. package/cjs/idx/interact.js +9 -4
  118. package/cjs/idx/interact.js.map +1 -1
  119. package/cjs/idx/introspect.js +19 -9
  120. package/cjs/idx/introspect.js.map +1 -1
  121. package/cjs/idx/poll.js +13 -3
  122. package/cjs/idx/poll.js.map +1 -1
  123. package/cjs/idx/proceed.js +14 -11
  124. package/cjs/idx/proceed.js.map +1 -1
  125. package/cjs/idx/recoverPassword.js.map +1 -1
  126. package/cjs/idx/register.js +5 -1
  127. package/cjs/idx/register.js.map +1 -1
  128. package/cjs/idx/remediate.js +112 -88
  129. package/cjs/idx/remediate.js.map +1 -1
  130. package/cjs/idx/remediators/AuthenticatorEnrollmentData.js +16 -6
  131. package/cjs/idx/remediators/AuthenticatorEnrollmentData.js.map +1 -1
  132. package/cjs/idx/remediators/AuthenticatorVerificationData.js +61 -16
  133. package/cjs/idx/remediators/AuthenticatorVerificationData.js.map +1 -1
  134. package/cjs/idx/remediators/Base/AuthenticatorData.js +44 -20
  135. package/cjs/idx/remediators/Base/AuthenticatorData.js.map +1 -1
  136. package/cjs/idx/remediators/Base/Remediator.js +116 -82
  137. package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
  138. package/cjs/idx/remediators/Base/SelectAuthenticator.js +58 -34
  139. package/cjs/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
  140. package/cjs/idx/remediators/Base/VerifyAuthenticator.js +30 -7
  141. package/cjs/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
  142. package/cjs/idx/remediators/ChallengeAuthenticator.js +2 -2
  143. package/cjs/idx/remediators/ChallengePoll.js +10 -3
  144. package/cjs/idx/remediators/ChallengePoll.js.map +1 -1
  145. package/cjs/idx/remediators/EnrollAuthenticator.js +2 -2
  146. package/cjs/idx/remediators/EnrollPoll.js +16 -6
  147. package/cjs/idx/remediators/EnrollPoll.js.map +1 -1
  148. package/cjs/idx/remediators/EnrollProfile.js +34 -16
  149. package/cjs/idx/remediators/EnrollProfile.js.map +1 -1
  150. package/cjs/idx/remediators/EnrollmentChannelData.js +25 -17
  151. package/cjs/idx/remediators/EnrollmentChannelData.js.map +1 -1
  152. package/cjs/idx/remediators/Identify.js +16 -7
  153. package/cjs/idx/remediators/Identify.js.map +1 -1
  154. package/cjs/idx/remediators/ReEnrollAuthenticator.js +13 -10
  155. package/cjs/idx/remediators/ReEnrollAuthenticator.js.map +1 -1
  156. package/cjs/idx/remediators/RedirectIdp.js +2 -2
  157. package/cjs/idx/remediators/ResetAuthenticator.js +2 -2
  158. package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js +9 -6
  159. package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js.map +1 -1
  160. package/cjs/idx/remediators/SelectAuthenticatorEnroll.js +2 -2
  161. package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js +71 -0
  162. package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js.map +1 -0
  163. package/cjs/idx/remediators/SelectEnrollProfile.js +2 -2
  164. package/cjs/idx/remediators/SelectEnrollmentChannel.js +22 -10
  165. package/cjs/idx/remediators/SelectEnrollmentChannel.js.map +1 -1
  166. package/cjs/idx/remediators/Skip.js +5 -10
  167. package/cjs/idx/remediators/Skip.js.map +1 -1
  168. package/cjs/idx/remediators/index.js +33 -18
  169. package/cjs/idx/remediators/index.js.map +1 -1
  170. package/cjs/idx/remediators/util.js +13 -3
  171. package/cjs/idx/remediators/util.js.map +1 -1
  172. package/cjs/idx/run.js +276 -177
  173. package/cjs/idx/run.js.map +1 -1
  174. package/cjs/idx/startTransaction.js.map +1 -1
  175. package/cjs/idx/transactionMeta.js.map +1 -1
  176. package/cjs/idx/types/idx-js.js.map +1 -1
  177. package/cjs/idx/types/index.js +82 -9
  178. package/cjs/idx/types/index.js.map +1 -1
  179. package/cjs/idx/unlockAccount.js +48 -0
  180. package/cjs/idx/unlockAccount.js.map +1 -0
  181. package/cjs/idx/util.js +198 -0
  182. package/cjs/idx/util.js.map +1 -0
  183. package/cjs/index.js +20 -14
  184. package/cjs/index.js.map +1 -1
  185. package/cjs/oidc/endpoints/authorize.js +8 -2
  186. package/cjs/oidc/endpoints/authorize.js.map +1 -1
  187. package/cjs/oidc/endpoints/index.js +5 -3
  188. package/cjs/oidc/endpoints/index.js.map +1 -1
  189. package/cjs/oidc/endpoints/token.js +15 -3
  190. package/cjs/oidc/endpoints/token.js.map +1 -1
  191. package/cjs/oidc/endpoints/well-known.js +7 -3
  192. package/cjs/oidc/endpoints/well-known.js.map +1 -1
  193. package/cjs/oidc/exchangeCodeForTokens.js +10 -2
  194. package/cjs/oidc/exchangeCodeForTokens.js.map +1 -1
  195. package/cjs/oidc/getToken.js +9 -5
  196. package/cjs/oidc/getToken.js.map +1 -1
  197. package/cjs/oidc/getUserInfo.js +7 -3
  198. package/cjs/oidc/getUserInfo.js.map +1 -1
  199. package/cjs/oidc/getWithPopup.js +8 -2
  200. package/cjs/oidc/getWithPopup.js.map +1 -1
  201. package/cjs/oidc/getWithRedirect.js +5 -1
  202. package/cjs/oidc/getWithRedirect.js.map +1 -1
  203. package/cjs/oidc/getWithoutPrompt.js +8 -2
  204. package/cjs/oidc/getWithoutPrompt.js.map +1 -1
  205. package/cjs/oidc/handleOAuthResponse.js +9 -3
  206. package/cjs/oidc/handleOAuthResponse.js.map +1 -1
  207. package/cjs/oidc/index.js +4 -2
  208. package/cjs/oidc/index.js.map +1 -1
  209. package/cjs/oidc/parseFromUrl.js +9 -3
  210. package/cjs/oidc/parseFromUrl.js.map +1 -1
  211. package/cjs/oidc/renewToken.js.map +1 -1
  212. package/cjs/oidc/renewTokens.js +5 -1
  213. package/cjs/oidc/renewTokens.js.map +1 -1
  214. package/cjs/oidc/renewTokensWithRefresh.js +5 -1
  215. package/cjs/oidc/renewTokensWithRefresh.js.map +1 -1
  216. package/cjs/oidc/revokeToken.js +7 -3
  217. package/cjs/oidc/revokeToken.js.map +1 -1
  218. package/cjs/oidc/util/browser.js +5 -1
  219. package/cjs/oidc/util/browser.js.map +1 -1
  220. package/cjs/oidc/util/defaultTokenParams.js.map +1 -1
  221. package/cjs/oidc/util/errors.js.map +1 -1
  222. package/cjs/oidc/util/index.js +14 -12
  223. package/cjs/oidc/util/index.js.map +1 -1
  224. package/cjs/oidc/util/loginRedirect.js +5 -1
  225. package/cjs/oidc/util/loginRedirect.js.map +1 -1
  226. package/cjs/oidc/util/oauth.js +4 -2
  227. package/cjs/oidc/util/oauth.js.map +1 -1
  228. package/cjs/oidc/util/oauthMeta.js.map +1 -1
  229. package/cjs/oidc/util/pkce.js +11 -3
  230. package/cjs/oidc/util/pkce.js.map +1 -1
  231. package/cjs/oidc/util/prepareTokenParams.js +7 -5
  232. package/cjs/oidc/util/prepareTokenParams.js.map +1 -1
  233. package/cjs/oidc/util/validateClaims.js +1 -1
  234. package/cjs/oidc/util/validateClaims.js.map +1 -1
  235. package/cjs/oidc/verifyToken.js +11 -3
  236. package/cjs/oidc/verifyToken.js.map +1 -1
  237. package/cjs/options/browser.js +86 -0
  238. package/cjs/options/browser.js.map +1 -0
  239. package/cjs/options/index.js +94 -0
  240. package/cjs/options/index.js.map +1 -0
  241. package/cjs/options/node.js +45 -0
  242. package/cjs/options/node.js.map +1 -0
  243. package/cjs/options.js +17 -5
  244. package/cjs/options.js.map +1 -1
  245. package/cjs/server/serverStorage.js +8 -4
  246. package/cjs/server/serverStorage.js.map +1 -1
  247. package/cjs/services/AutoRenewService.js +94 -0
  248. package/cjs/services/AutoRenewService.js.map +1 -0
  249. package/cjs/services/SyncStorageService.js +93 -0
  250. package/cjs/services/SyncStorageService.js.map +1 -0
  251. package/cjs/services/index.js +30 -0
  252. package/cjs/services/index.js.map +1 -0
  253. package/cjs/tx/AuthTransaction.js +15 -9
  254. package/cjs/tx/AuthTransaction.js.map +1 -1
  255. package/cjs/tx/api.js +8 -4
  256. package/cjs/tx/api.js.map +1 -1
  257. package/cjs/tx/index.js +7 -5
  258. package/cjs/tx/index.js.map +1 -1
  259. package/cjs/tx/poll.js +6 -4
  260. package/cjs/tx/poll.js.map +1 -1
  261. package/cjs/tx/util.js +5 -1
  262. package/cjs/tx/util.js.map +1 -1
  263. package/cjs/types/Service.js +2 -0
  264. package/cjs/types/Service.js.map +1 -0
  265. package/cjs/types/Transaction.js +10 -2
  266. package/cjs/types/Transaction.js.map +1 -1
  267. package/cjs/types/index.js +29 -14
  268. package/cjs/types/index.js.map +1 -1
  269. package/cjs/util/index.js +7 -5
  270. package/cjs/util/index.js.map +1 -1
  271. package/cjs/util/misc.js +5 -1
  272. package/cjs/util/misc.js.map +1 -1
  273. package/cjs/util/object.js +16 -6
  274. package/cjs/util/object.js.map +1 -1
  275. package/cjs/util/sharedStorage.js +5 -1
  276. package/cjs/util/sharedStorage.js.map +1 -1
  277. package/dist/okta-auth-js.min.js +1 -1
  278. package/dist/okta-auth-js.min.js.LICENSE.txt +0 -20
  279. package/dist/okta-auth-js.min.js.map +1 -1
  280. package/dist/okta-auth-js.polyfill.js +1 -1
  281. package/dist/okta-auth-js.polyfill.js.map +1 -1
  282. package/dist/okta-auth-js.umd.js +1 -1
  283. package/dist/okta-auth-js.umd.js.LICENSE.txt +1 -19
  284. package/dist/okta-auth-js.umd.js.map +1 -1
  285. package/esm/{index.js → esm.browser.js} +2978 -2585
  286. package/esm/esm.browser.js.map +1 -0
  287. package/esm/esm.node.mjs +9595 -0
  288. package/esm/esm.node.mjs.map +1 -0
  289. package/lib/AuthStateManager.d.ts +3 -3
  290. package/lib/OktaAuth.d.ts +10 -6
  291. package/lib/PromiseQueue.d.ts +6 -2
  292. package/lib/ServiceManager.d.ts +38 -0
  293. package/lib/StorageManager.d.ts +1 -1
  294. package/lib/TokenManager.d.ts +2 -3
  295. package/lib/TransactionManager.d.ts +4 -5
  296. package/lib/browser/fingerprint.d.ts +2 -3
  297. package/lib/crypto/base64.d.ts +2 -0
  298. package/lib/crypto/webauthn.d.ts +25 -0
  299. package/lib/http/headers.d.ts +2 -2
  300. package/lib/http/request.d.ts +4 -4
  301. package/lib/idx/authenticate.d.ts +2 -2
  302. package/lib/idx/authenticator/Authenticator.d.ts +4 -5
  303. package/lib/idx/authenticator/OktaPassword.d.ts +8 -9
  304. package/lib/idx/authenticator/OktaVerifyTotp.d.ts +1 -1
  305. package/lib/idx/authenticator/SecurityQuestionEnrollment.d.ts +11 -12
  306. package/lib/idx/authenticator/SecurityQuestionVerification.d.ts +7 -7
  307. package/lib/idx/authenticator/VerificationCodeAuthenticator.d.ts +8 -3
  308. package/lib/idx/authenticator/WebauthnEnrollment.d.ts +16 -0
  309. package/lib/idx/authenticator/WebauthnVerification.d.ts +17 -0
  310. package/lib/idx/authenticator/getAuthenticator.d.ts +1 -1
  311. package/lib/idx/authenticator/index.d.ts +9 -0
  312. package/lib/idx/authenticator/util.d.ts +4 -0
  313. package/lib/idx/cancel.d.ts +2 -2
  314. package/lib/idx/emailVerify.d.ts +2 -2
  315. package/lib/idx/flow/AccountUnlockFlow.d.ts +13 -0
  316. package/lib/idx/flow/FlowSpecification.d.ts +2 -2
  317. package/lib/idx/flow/index.d.ts +1 -0
  318. package/lib/idx/headers.d.ts +3 -2
  319. package/lib/idx/idx-js/client.d.ts +36 -0
  320. package/lib/idx/idx-js/index.d.ts +35 -0
  321. package/lib/idx/idx-js/interact.d.ts +25 -0
  322. package/lib/idx/idx-js/introspect.d.ts +21 -0
  323. package/lib/idx/idx-js/parsers.d.ts +15 -0
  324. package/lib/idx/idx-js/util.d.ts +12 -0
  325. package/lib/idx/idx-js/v1/actionParser.d.ts +16 -0
  326. package/lib/idx/idx-js/v1/generateIdxAction.d.ts +13 -0
  327. package/lib/idx/idx-js/v1/idxResponseParser.d.ts +20 -0
  328. package/lib/idx/idx-js/v1/makeIdxState.d.ts +13 -0
  329. package/lib/idx/idx-js/v1/parsers.d.ts +16 -0
  330. package/lib/idx/idx-js/v1/remediationParser.d.ts +12 -0
  331. package/lib/idx/index.d.ts +12 -11
  332. package/lib/idx/interact.d.ts +3 -2
  333. package/lib/idx/introspect.d.ts +2 -2
  334. package/lib/idx/poll.d.ts +2 -2
  335. package/lib/idx/proceed.d.ts +5 -6
  336. package/lib/idx/recoverPassword.d.ts +2 -2
  337. package/lib/idx/register.d.ts +2 -2
  338. package/lib/idx/remediate.d.ts +2 -2
  339. package/lib/idx/remediators/AuthenticatorVerificationData.d.ts +6 -5
  340. package/lib/idx/remediators/Base/AuthenticatorData.d.ts +5 -8
  341. package/lib/idx/remediators/Base/Remediator.d.ts +6 -5
  342. package/lib/idx/remediators/Base/SelectAuthenticator.d.ts +9 -8
  343. package/lib/idx/remediators/Base/VerifyAuthenticator.d.ts +9 -16
  344. package/lib/idx/remediators/ChallengePoll.d.ts +1 -0
  345. package/lib/idx/remediators/EnrollProfile.d.ts +0 -3
  346. package/lib/idx/remediators/EnrollmentChannelData.d.ts +1 -4
  347. package/lib/idx/remediators/Identify.d.ts +3 -5
  348. package/lib/idx/remediators/ReEnrollAuthenticator.d.ts +2 -5
  349. package/lib/idx/remediators/SelectAuthenticatorAuthenticate.d.ts +2 -1
  350. package/lib/idx/remediators/SelectAuthenticatorUnlockAccount.d.ts +37 -0
  351. package/lib/idx/remediators/SelectEnrollmentChannel.d.ts +1 -0
  352. package/lib/idx/remediators/Skip.d.ts +0 -3
  353. package/lib/idx/remediators/index.d.ts +1 -0
  354. package/lib/idx/run.d.ts +2 -2
  355. package/lib/idx/startTransaction.d.ts +2 -2
  356. package/lib/idx/transactionMeta.d.ts +7 -7
  357. package/lib/idx/types/FlowIdentifier.d.ts +1 -1
  358. package/lib/idx/types/idx-js.d.ts +41 -1
  359. package/lib/idx/types/index.d.ts +27 -7
  360. package/lib/idx/unlockAccount.d.ts +15 -0
  361. package/lib/idx/util.d.ts +11 -0
  362. package/lib/oidc/endpoints/well-known.d.ts +3 -3
  363. package/lib/oidc/exchangeCodeForTokens.d.ts +2 -2
  364. package/lib/oidc/getToken.d.ts +2 -2
  365. package/lib/oidc/getWithPopup.d.ts +2 -2
  366. package/lib/oidc/getWithRedirect.d.ts +2 -2
  367. package/lib/oidc/getWithoutPrompt.d.ts +2 -2
  368. package/lib/oidc/handleOAuthResponse.d.ts +2 -2
  369. package/lib/oidc/renewToken.d.ts +2 -2
  370. package/lib/oidc/renewTokensWithRefresh.d.ts +2 -2
  371. package/lib/oidc/revokeToken.d.ts +2 -2
  372. package/lib/oidc/util/browser.d.ts +2 -2
  373. package/lib/oidc/util/defaultTokenParams.d.ts +2 -2
  374. package/lib/oidc/util/errors.d.ts +2 -2
  375. package/lib/oidc/util/loginRedirect.d.ts +4 -4
  376. package/lib/oidc/util/oauth.d.ts +4 -4
  377. package/lib/oidc/util/oauthMeta.d.ts +2 -2
  378. package/lib/oidc/util/prepareTokenParams.d.ts +5 -5
  379. package/lib/oidc/util/validateClaims.d.ts +2 -2
  380. package/lib/oidc/verifyToken.d.ts +2 -2
  381. package/lib/options/browser.d.ts +16 -0
  382. package/lib/options/index.d.ts +14 -0
  383. package/lib/options/node.d.ts +16 -0
  384. package/lib/services/AutoRenewService.d.ts +27 -0
  385. package/lib/services/{TokenService.d.ts → SyncStorageService.d.ts} +8 -5
  386. package/lib/services/index.d.ts +13 -0
  387. package/lib/types/OktaAuthOptions.d.ts +6 -2
  388. package/lib/types/Service.d.ts +23 -0
  389. package/lib/types/Storage.d.ts +7 -5
  390. package/lib/types/Transaction.d.ts +2 -10
  391. package/lib/types/api.d.ts +23 -10
  392. package/lib/types/index.d.ts +1 -1
  393. package/lib/util/sharedStorage.d.ts +1 -1
  394. package/package.json +32 -14
  395. package/polyfill/index.js +1 -0
  396. package/cjs/services/TokenService.js +0 -111
  397. package/cjs/services/TokenService.js.map +0 -1
  398. package/esm/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/idx/remediate.ts"],"names":["getRemediator","idxRemediations","values","options","remediators","remediator","step","remediation","find","name","T","remediatorCandidates","isRemeditionInFlow","Object","keys","includes","canRemediate","push","isTerminalResponse","idxResponse","neededToProceed","interactionCode","length","canSkipFn","some","canResendFn","actions","actionName","getIdxMessages","messages","rawIdxState","globalMessages","value","map","message","fieldMessages","Remediator","getMessages","getNextStep","nextStep","context","canSkip","canResend","handleIdxError","e","idxState","terminal","getActionFromValues","action","resend","removeActionFromValues","undefined","remediate","flow","AuthSdkError","reduce","acc","curr","actionFromValues","valuesWithoutExecutedAction","canceled","getName","data","getData","proceed","getValuesAfterProceed"],"mappings":"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","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 { AuthSdkError } from '../errors';\nimport { Remediator, RemediationValues } from './remediators';\nimport { NextStep, IdxMessage, FlowIdentifier } from './types';\nimport { RemediationFlow } from './flow';\nimport { \n IdxResponse, \n IdxRemediation,\n isIdxResponse, \n} from './types/idx-js';\n\ninterface RemediationResponse {\n idxResponse?: IdxResponse;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n terminal?: boolean;\n canceled?: boolean;\n}\nexport interface RemediateOptions {\n remediators?: RemediationFlow;\n actions?: string[];\n flow?: FlowIdentifier;\n step?: string;\n}\n\n// Return first match idxRemediation in allowed remediators\nexport function getRemediator(\n idxRemediations: IdxRemediation[],\n values: RemediationValues,\n options: RemediateOptions,\n): Remediator {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediators = options.remediators!;\n\n let remediator;\n // remediation name specified by caller - fast-track remediator lookup \n if (options.step) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediation = idxRemediations.find(({ name }) => name === options.step)!;\n const T = remediators[remediation.name];\n return new T(remediation, values);\n }\n\n const remediatorCandidates = [];\n for (let remediation of idxRemediations) {\n const isRemeditionInFlow = Object.keys(remediators as object).includes(remediation.name);\n if (!isRemeditionInFlow) {\n continue;\n }\n\n const T = remediators[remediation.name];\n remediator = new T(remediation, values);\n if (remediator.canRemediate()) {\n // found the remediator\n return remediator;\n }\n // remediator cannot handle the current values\n // maybe return for next step\n remediatorCandidates.push(remediator as never); \n }\n \n return remediatorCandidates[0];\n}\n\nfunction isTerminalResponse(idxResponse: IdxResponse) {\n const { neededToProceed, interactionCode } = idxResponse;\n return !neededToProceed.length && !interactionCode;\n}\n\nfunction canSkipFn(idxResponse: IdxResponse) {\n return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nfunction canResendFn(idxResponse: IdxResponse) {\n return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nfunction getIdxMessages(idxResponse: IdxResponse): IdxMessage[] {\n let messages = [];\n const { rawIdxState, neededToProceed } = idxResponse;\n\n // Handle global messages\n const globalMessages = rawIdxState.messages?.value.map(message => message);\n if (globalMessages) {\n messages = [...messages, ...globalMessages] as never;\n }\n\n // Handle field messages for current flow\n for (let remediation of neededToProceed) {\n const fieldMessages = Remediator.getMessages(remediation);\n if (fieldMessages) {\n messages = [...messages, ...fieldMessages] as never;\n }\n }\n\n return messages;\n}\n\nfunction getNextStep(\n remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep(idxResponse.context);\n const canSkip = canSkipFn(idxResponse);\n const canResend = canResendFn(idxResponse);\n return {\n ...nextStep,\n ...(canSkip && {canSkip}),\n ...(canResend && {canResend}),\n };\n}\n\nfunction handleIdxError(e, remediator?) {\n // Handle idx messages\n const idxState = isIdxResponse(e) ? e : null;\n if (!idxState) {\n // Thrown error terminates the interaction with idx\n throw e;\n }\n const terminal = isTerminalResponse(idxState);\n const messages = getIdxMessages(idxState);\n if (terminal) {\n return { terminal, messages };\n } else {\n const nextStep = remediator && getNextStep(remediator, idxState);\n return { \n messages, \n ...(nextStep && { nextStep }) \n };\n }\n}\n\nfunction getActionFromValues(values, 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) {\n // Currently support resend actions only\n values.resend = undefined;\n return values;\n}\n\n// This function is called recursively until it reaches success or cannot be remediated\nexport async function remediate(\n idxResponse: IdxResponse,\n values: RemediationValues,\n options: RemediateOptions\n): Promise<RemediationResponse> {\n let { neededToProceed, interactionCode } = idxResponse;\n const { remediators, 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 // Reach to terminal state\n const terminal = isTerminalResponse(idxResponse);\n const messages = getIdxMessages(idxResponse);\n if (terminal) {\n return { terminal, messages };\n }\n\n const remediator = getRemediator(neededToProceed, values, options);\n if (!remediator && flow === 'default') {\n return { idxResponse };\n }\n \n if (!remediator) {\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 if (messages.length) {\n const nextStep = getNextStep(remediator, idxResponse);\n return { nextStep, messages };\n }\n \n // Try actions in idxResponse first\n const actionFromValues = getActionFromValues(values, idxResponse);\n const actions = [\n ...options.actions || [],\n ...(actionFromValues && [actionFromValues] || []),\n ];\n if (actions) {\n for (let action of actions) {\n let valuesWithoutExecutedAction = removeActionFromValues(values);\n if (typeof idxResponse.actions[action] === 'function') {\n try {\n idxResponse = await idxResponse.actions[action]();\n } catch (e) {\n return handleIdxError(e, remediators);\n }\n if (action === 'cancel') {\n return { canceled: true };\n }\n return remediate(idxResponse, valuesWithoutExecutedAction, options); // recursive call\n }\n }\n }\n\n // Return next step to the caller\n if (!remediator.canRemediate()) {\n const nextStep = getNextStep(remediator, idxResponse);\n return { idxResponse, nextStep };\n }\n\n const name = remediator.getName();\n const data = remediator.getData();\n try {\n idxResponse = await idxResponse.proceed(name, data);\n\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 return remediate(idxResponse, values, options); // recursive call\n } catch (e) {\n return handleIdxError(e, remediator);\n }\n}\n"],"file":"remediate.js"}
1
+ {"version":3,"sources":["../../../lib/idx/remediate.ts"],"names":["getRemediator","idxRemediations","values","options","remediators","remediator","step","remediation","name","T","undefined","remediatorCandidates","isRemeditionInFlow","canRemediate","push","getNextStep","idxResponse","nextStep","context","canSkip","canResend","handleIdxError","e","requestDidSucceed","terminal","messages","getActionFromValues","actions","action","resend","removeActionFromValues","remediate","neededToProceed","interactionCode","flow","actionFromValues","actionFromOptions","valuesWithoutExecutedAction","optionsWithoutExecutedAction","entry","canceled","remediationAction","proceed","AuthSdkError","acc","curr","length","getName","data","getData","getValuesAfterProceed"],"mappings":"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","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 { AuthSdkError } from '../errors';\nimport { Remediator, RemediationValues } from './remediators';\nimport { NextStep, IdxMessage, FlowIdentifier } from './types';\nimport { RemediationFlow } from './flow';\nimport { \n IdxResponse, \n IdxRemediation,\n isIdxResponse, \n} from './types/idx-js';\nimport {\n canResendFn,\n canSkipFn,\n getMessagesFromResponse,\n isTerminalResponse,\n filterValuesForRemediation\n} from './util';\nimport { warn } from '../util';\n\ninterface RemediationResponse {\n idxResponse: IdxResponse;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n terminal?: boolean;\n canceled?: boolean;\n}\nexport interface RemediateOptions {\n remediators?: RemediationFlow;\n actions?: string[];\n flow?: FlowIdentifier;\n step?: string;\n}\n\n// Return first match idxRemediation in allowed remediators\nexport function getRemediator(\n idxRemediations: IdxRemediation[],\n values: RemediationValues,\n options: RemediateOptions,\n): Remediator | undefined {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediators = options.remediators!;\n\n let remediator;\n // remediation name specified by caller - fast-track remediator lookup \n if (options.step) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const remediation = idxRemediations.find(({ name }) => name === options.step)!;\n if (remediation) {\n const T = remediation ? remediators[remediation.name] : undefined;\n return T ? new T(remediation, values, options) : undefined;\n } else {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`step \"${options.step}\" did not match any remediations`);\n return;\n }\n }\n\n const remediatorCandidates = [];\n for (let remediation of idxRemediations) {\n const isRemeditionInFlow = Object.keys(remediators as object).includes(remediation.name);\n if (!isRemeditionInFlow) {\n continue;\n }\n\n const T = remediators[remediation.name];\n remediator = new T(remediation, values, options);\n if (remediator.canRemediate()) {\n // found the remediator\n return remediator;\n }\n // remediator cannot handle the current values\n // maybe return for next step\n remediatorCandidates.push(remediator as never); \n }\n \n return remediatorCandidates[0];\n}\n\nfunction getNextStep(\n remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep(idxResponse.context);\n const canSkip = canSkipFn(idxResponse);\n const canResend = canResendFn(idxResponse);\n return {\n ...nextStep,\n ...(canSkip && {canSkip}),\n ...(canResend && {canResend}),\n };\n}\n\nfunction handleIdxError(e, remediator?): RemediationResponse {\n // Handle idx messages\n const idxResponse = isIdxResponse(e) ? e : null;\n if (!idxResponse) {\n // Thrown error terminates the interaction with idx\n throw e;\n }\n idxResponse.requestDidSucceed = false;\n const terminal = isTerminalResponse(idxResponse);\n const messages = getMessagesFromResponse(idxResponse);\n if (terminal) {\n return { idxResponse, terminal, messages };\n } else {\n const nextStep = remediator && getNextStep(remediator, idxResponse);\n return { \n idxResponse,\n messages, \n ...(nextStep && { nextStep }) \n };\n }\n}\n\nfunction getActionFromValues(values, 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) {\n // Currently support resend actions only\n values.resend = undefined;\n return values;\n}\n\n// This function is called recursively until it reaches success or cannot be remediated\nexport async function remediate(\n idxResponse: IdxResponse,\n values: RemediationValues,\n options: RemediateOptions\n): Promise<RemediationResponse> {\n let { neededToProceed, interactionCode } = idxResponse;\n const { remediators, 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 // Reach to terminal state\n const terminal = isTerminalResponse(idxResponse);\n const messages = getMessagesFromResponse(idxResponse);\n if (terminal) {\n return { idxResponse, terminal, messages };\n }\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 let valuesWithoutExecutedAction = removeActionFromValues(values);\n let optionsWithoutExecutedAction = { ...options, actions: actionFromOptions.filter(entry => entry !== action) };\n if (typeof idxResponse.actions[action] === 'function') {\n try {\n idxResponse = await idxResponse.actions[action]();\n idxResponse.requestDidSucceed = true;\n } catch (e) {\n return handleIdxError(e, remediators);\n }\n if (action === 'cancel') {\n return { idxResponse, canceled: true };\n }\n return remediate(idxResponse, valuesWithoutExecutedAction, optionsWithoutExecutedAction); // 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, {});\n idxResponse.requestDidSucceed = true;\n }\n catch (e) {\n return handleIdxError(e, remediators);\n }\n\n return remediate(idxResponse, values, optionsWithoutExecutedAction); // recursive call\n }\n }\n }\n\n const remediator = getRemediator(neededToProceed, values, options);\n if (!remediator) {\n if (options.step) {\n values = filterValuesForRemediation(idxResponse, values); // include only requested values\n try {\n idxResponse = await idxResponse.proceed(options.step, values);\n idxResponse.requestDidSucceed = true;\n return { idxResponse };\n } catch(e) {\n return handleIdxError(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 if (messages.length) {\n const nextStep = getNextStep(remediator, idxResponse);\n return { idxResponse, nextStep, messages };\n }\n\n // Return next step to the caller\n if (!remediator.canRemediate()) {\n const nextStep = getNextStep(remediator, idxResponse);\n return { idxResponse, nextStep };\n }\n\n const name = remediator.getName();\n const data = remediator.getData();\n try {\n idxResponse = await idxResponse.proceed(name, data);\n 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 delete options.step; // do not re-use the step\n return remediate(idxResponse, values, options); // recursive call\n } catch (e) {\n return handleIdxError(e, remediator);\n }\n}\n"],"file":"remediate.js"}
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
4
 
5
5
  exports.AuthenticatorEnrollmentData = void 0;
6
6
 
7
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
8
+
9
+ var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/values"));
10
+
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
8
12
 
9
13
  var _AuthenticatorData = require("./Base/AuthenticatorData");
10
14
 
@@ -25,10 +29,12 @@ var _util = require("./util");
25
29
  */
26
30
  class AuthenticatorEnrollmentData extends _AuthenticatorData.AuthenticatorData {
27
31
  mapAuthenticator() {
32
+ var _context;
33
+
28
34
  const authenticatorData = this.getAuthenticatorData();
29
35
  const authenticatorFromRemediation = (0, _util.getAuthenticatorFromRemediation)(this.remediation);
30
36
  return {
31
- id: authenticatorFromRemediation.form.value.find(({
37
+ id: (0, _find.default)(_context = authenticatorFromRemediation.form.value).call(_context, ({
32
38
  name
33
39
  }) => name === 'id').value,
34
40
  methodType: authenticatorData.methodType,
@@ -55,13 +61,17 @@ class AuthenticatorEnrollmentData extends _AuthenticatorData.AuthenticatorData {
55
61
 
56
62
  const {
57
63
  phoneNumber
58
- } = this.values;
59
- data = { ...(data && data),
64
+ } = (0, _values.default)(this);
65
+
66
+ if (!data && !phoneNumber) {
67
+ return;
68
+ }
69
+
70
+ return { ...(data && data),
60
71
  ...(phoneNumber && {
61
72
  phoneNumber
62
73
  })
63
74
  };
64
- return data.phoneNumber && data.methodType ? data : null;
65
75
  }
66
76
 
67
77
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../lib/idx/remediators/AuthenticatorEnrollmentData.ts"],"names":["AuthenticatorEnrollmentData","AuthenticatorData","mapAuthenticator","authenticatorData","getAuthenticatorData","authenticatorFromRemediation","remediation","id","form","value","find","name","methodType","phoneNumber","getInputAuthenticator","type","required","label","mapAuthenticatorDataFromValues","data","values"],"mappings":";;;;;;;;AAcA;;AACA;;AAfA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUO,MAAMA,2BAAN,SAA0CC,oCAA1C,CAA4D;AAKjEC,EAAAA,gBAAgB,GAAG;AACjB,UAAMC,iBAAiB,GAAG,KAAKC,oBAAL,EAA1B;AACA,UAAMC,4BAA4B,GAAG,2CAAgC,KAAKC,WAArC,CAArC;AACA,WAAO;AACLC,MAAAA,EAAE,EAAEF,4BAA4B,CAACG,IAA7B,CAAmCC,KAAnC,CACDC,IADC,CACI,CAAC;AAAEC,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAK,IAD3B,EACkCF,KAFjC;AAGLG,MAAAA,UAAU,EAAET,iBAAiB,CAAES,UAH1B;AAILC,MAAAA,WAAW,EAAEV,iBAAiB,CAAEU;AAJ3B,KAAP;AAMD;;AAEDC,EAAAA,qBAAqB,GAAG;AACtB,WAAO,CACL;AAAEH,MAAAA,IAAI,EAAE,YAAR;AAAsBI,MAAAA,IAAI,EAAE,QAA5B;AAAsCC,MAAAA,QAAQ,EAAE;AAAhD,KADK,EAEL;AAAEL,MAAAA,IAAI,EAAE,aAAR;AAAuBI,MAAAA,IAAI,EAAE,QAA7B;AAAuCC,MAAAA,QAAQ,EAAE,IAAjD;AAAuDC,MAAAA,KAAK,EAAE;AAA9D,KAFK,CAAP;AAID;;AAESC,EAAAA,8BAA8B,CAACC,IAAD,EAAQ;AAC9C;AACAA,IAAAA,IAAI,GAAG,MAAMD,8BAAN,CAAqCC,IAArC,CAAP,CAF8C,CAG9C;;AACA,UAAM;AAAEN,MAAAA;AAAF,QAAkB,KAAKO,MAA7B;AACAD,IAAAA,IAAI,GAAG,EACL,IAAIA,IAAI,IAAIA,IAAZ,CADK;AAEL,UAAIN,WAAW,IAAI;AAAEA,QAAAA;AAAF,OAAnB;AAFK,KAAP;AAKA,WAAQM,IAAI,CAACN,WAAL,IAAoBM,IAAI,CAACP,UAA1B,GAAwCO,IAAxC,GAA+C,IAAtD;AACD;;AAlCgE;;;8BAAtDnB,2B,qBACc,+B","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 { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\nimport { getAuthenticatorFromRemediation } from './util';\n\nexport type AuthenticatorEnrollmentDataValues = AuthenticatorDataValues & {\n phoneNumber?: string;\n resend?: boolean; // resend is not a remediator value - revise when IdxResponse structure is updated\n}\nexport class AuthenticatorEnrollmentData extends AuthenticatorData {\n static remediationName = 'authenticator-enrollment-data';\n\n values!: AuthenticatorEnrollmentDataValues;\n\n mapAuthenticator() {\n const authenticatorData = this.getAuthenticatorData();\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation)!;\n return { \n id: authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'id')!.value,\n methodType: authenticatorData!.methodType,\n phoneNumber: authenticatorData!.phoneNumber,\n };\n }\n\n getInputAuthenticator() {\n return [\n { name: 'methodType', type: 'string', required: true },\n { name: 'phoneNumber', type: 'string', required: true, label: 'Phone Number' },\n ];\n }\n\n protected mapAuthenticatorDataFromValues(data?) {\n // get mapped authenticator from base class\n data = super.mapAuthenticatorDataFromValues(data);\n // add phoneNumber to authenticator if it exists in values\n const { phoneNumber } = this.values;\n data = { \n ...(data && data), \n ...(phoneNumber && { phoneNumber }) \n };\n\n return (data.phoneNumber && data.methodType) ? data : null;\n }\n\n}\n"],"file":"AuthenticatorEnrollmentData.js"}
1
+ {"version":3,"sources":["../../../../lib/idx/remediators/AuthenticatorEnrollmentData.ts"],"names":["AuthenticatorEnrollmentData","AuthenticatorData","mapAuthenticator","authenticatorData","getAuthenticatorData","authenticatorFromRemediation","remediation","id","form","value","name","methodType","phoneNumber","getInputAuthenticator","type","required","label","mapAuthenticatorDataFromValues","data"],"mappings":";;;;;;;;;;;;AAcA;;AACA;;AAfA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUO,MAAMA,2BAAN,SAA0CC,oCAA1C,CAA4D;AAKjEC,EAAAA,gBAAgB,GAAG;AAAA;;AACjB,UAAMC,iBAAiB,GAAG,KAAKC,oBAAL,EAA1B;AACA,UAAMC,4BAA4B,GAAG,2CAAgC,KAAKC,WAArC,CAArC;AACA,WAAO;AACLC,MAAAA,EAAE,EAAE,8BAAAF,4BAA4B,CAACG,IAA7B,CAAmCC,KAAnC,iBACI,CAAC;AAAEC,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAK,IAD3B,EACkCD,KAFjC;AAGLE,MAAAA,UAAU,EAAER,iBAAiB,CAAEQ,UAH1B;AAILC,MAAAA,WAAW,EAAET,iBAAiB,CAAES;AAJ3B,KAAP;AAMD;;AAEDC,EAAAA,qBAAqB,GAAG;AACtB,WAAO,CACL;AAAEH,MAAAA,IAAI,EAAE,YAAR;AAAsBI,MAAAA,IAAI,EAAE,QAA5B;AAAsCC,MAAAA,QAAQ,EAAE;AAAhD,KADK,EAEL;AAAEL,MAAAA,IAAI,EAAE,aAAR;AAAuBI,MAAAA,IAAI,EAAE,QAA7B;AAAuCC,MAAAA,QAAQ,EAAE,IAAjD;AAAuDC,MAAAA,KAAK,EAAE;AAA9D,KAFK,CAAP;AAID;;AAESC,EAAAA,8BAA8B,CAACC,IAAD,EAAQ;AAC9C;AACAA,IAAAA,IAAI,GAAG,MAAMD,8BAAN,CAAqCC,IAArC,CAAP,CAF8C,CAG9C;;AACA,UAAM;AAAEN,MAAAA;AAAF,6BAAkB,IAAlB,CAAN;;AACA,QAAI,CAACM,IAAD,IAAS,CAACN,WAAd,EAA2B;AACzB;AACD;;AAED,WAAO,EACL,IAAIM,IAAI,IAAIA,IAAZ,CADK;AAEL,UAAIN,WAAW,IAAI;AAAEA,QAAAA;AAAF,OAAnB;AAFK,KAAP;AAID;;AApCgE;;;8BAAtDZ,2B,qBACc,+B","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 { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\nimport { getAuthenticatorFromRemediation } from './util';\n\nexport type AuthenticatorEnrollmentDataValues = AuthenticatorDataValues & {\n phoneNumber?: string;\n resend?: boolean; // resend is not a remediator value - revise when IdxResponse structure is updated\n}\nexport class AuthenticatorEnrollmentData extends AuthenticatorData {\n static remediationName = 'authenticator-enrollment-data';\n\n values!: AuthenticatorEnrollmentDataValues;\n\n mapAuthenticator() {\n const authenticatorData = this.getAuthenticatorData();\n const authenticatorFromRemediation = getAuthenticatorFromRemediation(this.remediation)!;\n return { \n id: authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'id')!.value,\n methodType: authenticatorData!.methodType,\n phoneNumber: authenticatorData!.phoneNumber,\n };\n }\n\n getInputAuthenticator() {\n return [\n { name: 'methodType', type: 'string', required: true },\n { name: 'phoneNumber', type: 'string', required: true, label: 'Phone Number' },\n ];\n }\n\n protected mapAuthenticatorDataFromValues(data?) {\n // get mapped authenticator from base class\n data = super.mapAuthenticatorDataFromValues(data);\n // add phoneNumber to authenticator if it exists in values\n const { phoneNumber } = this.values;\n if (!data && !phoneNumber) {\n return;\n }\n\n return { \n ...(data && data), \n ...(phoneNumber && { phoneNumber }) \n };\n }\n\n}\n"],"file":"AuthenticatorEnrollmentData.js"}
@@ -1,10 +1,22 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
4
 
5
5
  exports.AuthenticatorVerificationData = void 0;
6
6
 
7
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
8
+
9
+ var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
10
+
11
+ var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
12
+
13
+ var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
14
+
15
+ var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/values"));
16
+
17
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
18
+
19
+ var _errors = require("../../errors");
8
20
 
9
21
  var _AuthenticatorData = require("./Base/AuthenticatorData");
10
22
 
@@ -22,25 +34,48 @@ var _AuthenticatorData = require("./Base/AuthenticatorData");
22
34
  * See the License for the specific language governing permissions and limitations under the License.
23
35
  */
24
36
  class AuthenticatorVerificationData extends _AuthenticatorData.AuthenticatorData {
37
+ constructor(remediation, values = {}) {
38
+ super(remediation, values); // TODO: extend this feature to all authenticators
39
+
40
+ this.shouldProceedWithEmailAuthenticator = this.authenticator.methods.length === 1 && this.authenticator.methods[0].type === 'email';
41
+ }
42
+
43
+ canRemediate() {
44
+ // auto proceed if there is only one method
45
+ if (this.shouldProceedWithEmailAuthenticator) {
46
+ return true;
47
+ }
48
+
49
+ return super.canRemediate();
50
+ }
51
+
25
52
  mapAuthenticator() {
26
- var _value$find;
27
-
28
- const authenticatorData = this.getAuthenticatorData();
29
- const authenticatorFromRemediation = this.getAuthenticatorFromRemediation();
30
- return {
31
- id: authenticatorFromRemediation.form.value.find(({
32
- name
33
- }) => name === 'id').value,
34
- enrollmentId: (_value$find = authenticatorFromRemediation.form.value.find(({
35
- name
36
- }) => name === 'enrollmentId')) === null || _value$find === void 0 ? void 0 : _value$find.value,
37
- methodType: authenticatorData.methodType
38
- };
53
+ // auto proceed with the only methodType option
54
+ if (this.shouldProceedWithEmailAuthenticator) {
55
+ var _authenticatorFromRem, _context;
56
+
57
+ const authenticatorFromRemediation = this.getAuthenticatorFromRemediation();
58
+ return (_authenticatorFromRem = authenticatorFromRemediation.form) === null || _authenticatorFromRem === void 0 ? void 0 : (0, _reduce.default)(_context = _authenticatorFromRem.value).call(_context, (acc, curr) => {
59
+ if (curr.value) {
60
+ acc[curr.name] = curr.value;
61
+ } else if (curr.options) {
62
+ acc[curr.name] = curr.options[0].value;
63
+ } else {
64
+ throw new _errors.AuthSdkError(`Unsupported authenticator data type: ${curr}`);
65
+ }
66
+
67
+ return acc;
68
+ }, {});
69
+ }
70
+
71
+ return this.getAuthenticatorData();
39
72
  }
40
73
 
41
74
  getInputAuthenticator() {
75
+ var _context2;
76
+
42
77
  const authenticator = this.getAuthenticatorFromRemediation();
43
- const methodType = authenticator.form.value.find(({
78
+ const methodType = (0, _find.default)(_context2 = authenticator.form.value).call(_context2, ({
44
79
  name
45
80
  }) => name === 'methodType'); // if has methodType in form, let user select the methodType
46
81
 
@@ -57,6 +92,16 @@ class AuthenticatorVerificationData extends _AuthenticatorData.AuthenticatorData
57
92
  return inputs;
58
93
  }
59
94
 
95
+ getValuesAfterProceed() {
96
+ var _context3;
97
+
98
+ this.values = super.getValuesAfterProceed();
99
+ let trimmedValues = (0, _filter.default)(_context3 = (0, _keys.default)((0, _values.default)(this))).call(_context3, valueKey => valueKey !== 'authenticator');
100
+ return (0, _reduce.default)(trimmedValues).call(trimmedValues, (values, valueKey) => ({ ...values,
101
+ [valueKey]: (0, _values.default)(this)[valueKey]
102
+ }), {});
103
+ }
104
+
60
105
  }
61
106
 
62
107
  exports.AuthenticatorVerificationData = AuthenticatorVerificationData;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../lib/idx/remediators/AuthenticatorVerificationData.ts"],"names":["AuthenticatorVerificationData","AuthenticatorData","mapAuthenticator","authenticatorData","getAuthenticatorData","authenticatorFromRemediation","getAuthenticatorFromRemediation","id","form","value","find","name","enrollmentId","methodType","getInputAuthenticator","authenticator","options","type","required","inputs"],"mappings":";;;;;;;;AAcA;;AAdA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOO,MAAMA,6BAAN,SAA4CC,oCAA5C,CAA8D;AAKnEC,EAAAA,gBAAgB,GAAG;AAAA;;AACjB,UAAMC,iBAAiB,GAAG,KAAKC,oBAAL,EAA1B;AACA,UAAMC,4BAA4B,GAAG,KAAKC,+BAAL,EAArC;AACA,WAAO;AACLC,MAAAA,EAAE,EAAEF,4BAA4B,CAACG,IAA7B,CAAmCC,KAAnC,CACDC,IADC,CACI,CAAC;AAAEC,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAK,IAD3B,EACkCF,KAFjC;AAGLG,MAAAA,YAAY,iBAAEP,4BAA4B,CAACG,IAA7B,CAAmCC,KAAnC,CACXC,IADW,CACN,CAAC;AAAEC,QAAAA;AAAF,OAAD,KAAcA,IAAI,KAAK,cADjB,CAAF,gDAAE,YACkCF,KAJ3C;AAKLI,MAAAA,UAAU,EAAEV,iBAAiB,CAAEU;AAL1B,KAAP;AAOD;;AAEDC,EAAAA,qBAAqB,GAAG;AACtB,UAAMC,aAAa,GAAG,KAAKT,+BAAL,EAAtB;AACA,UAAMO,UAAU,GAAGE,aAAa,CAACP,IAAd,CAAoBC,KAApB,CAA0BC,IAA1B,CAA+B,CAAC;AAAEC,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,YAAtD,CAAnB,CAFsB,CAGtB;;AACA,QAAIE,UAAU,IAAIA,UAAU,CAACG,OAA7B,EAAsC;AACpC,aAAO;AAAEL,QAAAA,IAAI,EAAE,YAAR;AAAsBM,QAAAA,IAAI,EAAE,QAA5B;AAAsCC,QAAAA,QAAQ,EAAE;AAAhD,OAAP;AACD,KANqB,CAOtB;;;AACA,UAAMC,MAAM,GAAG,CAAC,GAAGJ,aAAa,CAACP,IAAd,CAAoBC,KAAxB,CAAf;AACA,WAAOU,MAAP;AACD;;AA3BkE;;;8BAAxDnB,6B,qBACc,iC","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 { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\n\nexport type AuthenticatorVerificationDataValues = AuthenticatorDataValues;\n\nexport class AuthenticatorVerificationData extends AuthenticatorData {\n static remediationName = 'authenticator-verification-data';\n\n values!: AuthenticatorVerificationDataValues;\n\n mapAuthenticator() {\n const authenticatorData = this.getAuthenticatorData();\n const authenticatorFromRemediation = this.getAuthenticatorFromRemediation();\n return { \n id: authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'id')!.value,\n enrollmentId: authenticatorFromRemediation.form!.value\n .find(({ name }) => name === 'enrollmentId')?.value,\n methodType: authenticatorData!.methodType,\n };\n }\n\n getInputAuthenticator() {\n const authenticator = this.getAuthenticatorFromRemediation();\n const methodType = authenticator.form!.value.find(({ name }) => name === 'methodType');\n // if has methodType in form, let user select the methodType\n if (methodType && methodType.options) {\n return { name: 'methodType', type: 'string', required: true };\n }\n // no methodType, then return form values\n const inputs = [...authenticator.form!.value];\n return inputs;\n }\n\n}\n"],"file":"AuthenticatorVerificationData.js"}
1
+ {"version":3,"sources":["../../../../lib/idx/remediators/AuthenticatorVerificationData.ts"],"names":["AuthenticatorVerificationData","AuthenticatorData","constructor","remediation","values","shouldProceedWithEmailAuthenticator","authenticator","methods","length","type","canRemediate","mapAuthenticator","authenticatorFromRemediation","getAuthenticatorFromRemediation","form","value","acc","curr","name","options","AuthSdkError","getAuthenticatorData","getInputAuthenticator","methodType","required","inputs","getValuesAfterProceed","trimmedValues","valueKey"],"mappings":";;;;;;;;;;;;;;;;;;AAcA;;AACA;;AAfA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASO,MAAMA,6BAAN,SAA4CC,oCAA5C,CAA8D;AAMnEC,EAAAA,WAAW,CAACC,WAAD,EAA8BC,MAA+B,GAAG,EAAhE,EAAoE;AAC7E,UAAMD,WAAN,EAAmBC,MAAnB,EAD6E,CAG7E;;AACA,SAAKC,mCAAL,GAA2C,KAAKC,aAAL,CAAmBC,OAAnB,CAA2BC,MAA3B,KAAsC,CAAtC,IACtC,KAAKF,aAAL,CAAmBC,OAAnB,CAA2B,CAA3B,EAA8BE,IAA9B,KAAuC,OAD5C;AAED;;AAEDC,EAAAA,YAAY,GAAG;AACb;AACA,QAAI,KAAKL,mCAAT,EAA8C;AAC5C,aAAO,IAAP;AACD;;AACD,WAAO,MAAMK,YAAN,EAAP;AACD;;AAEDC,EAAAA,gBAAgB,GAAG;AACjB;AACA,QAAI,KAAKN,mCAAT,EAA8C;AAAA;;AAC5C,YAAMO,4BAA4B,GAAG,KAAKC,+BAAL,EAArC;AACA,sCAAOD,4BAA4B,CAACE,IAApC,0DAAO,sDAAmCC,KAAnC,iBAAgD,CAACC,GAAD,EAAMC,IAAN,KAAe;AACpE,YAAIA,IAAI,CAACF,KAAT,EAAgB;AACdC,UAAAA,GAAG,CAACC,IAAI,CAACC,IAAN,CAAH,GAAiBD,IAAI,CAACF,KAAtB;AACD,SAFD,MAEO,IAAIE,IAAI,CAACE,OAAT,EAAkB;AACvBH,UAAAA,GAAG,CAACC,IAAI,CAACC,IAAN,CAAH,GAAiBD,IAAI,CAACE,OAAL,CAAc,CAAd,EAAiBJ,KAAlC;AACD,SAFM,MAEA;AACL,gBAAM,IAAIK,oBAAJ,CAAkB,wCAAuCH,IAAK,EAA9D,CAAN;AACD;;AACD,eAAOD,GAAP;AACD,OATM,EASJ,EATI,CAAP;AAUD;;AAED,WAAO,KAAKK,oBAAL,EAAP;AACD;;AAEDC,EAAAA,qBAAqB,GAAG;AAAA;;AACtB,UAAMhB,aAAa,GAAG,KAAKO,+BAAL,EAAtB;AACA,UAAMU,UAAU,GAAG,+BAAAjB,aAAa,CAACQ,IAAd,CAAoBC,KAApB,kBAA+B,CAAC;AAAEG,MAAAA;AAAF,KAAD,KAAcA,IAAI,KAAK,YAAtD,CAAnB,CAFsB,CAGtB;;AACA,QAAIK,UAAU,IAAIA,UAAU,CAACJ,OAA7B,EAAsC;AACpC,aAAO;AAAED,QAAAA,IAAI,EAAE,YAAR;AAAsBT,QAAAA,IAAI,EAAE,QAA5B;AAAsCe,QAAAA,QAAQ,EAAE;AAAhD,OAAP;AACD,KANqB,CAOtB;;;AACA,UAAMC,MAAM,GAAG,CAAC,GAAGnB,aAAa,CAACQ,IAAd,CAAoBC,KAAxB,CAAf;AACA,WAAOU,MAAP;AACD;;AAEDC,EAAAA,qBAAqB,GAAwC;AAAA;;AAC3D,SAAKtB,MAAL,GAAc,MAAMsB,qBAAN,EAAd;AACA,QAAIC,aAAa,GAAG,yEAAY,IAAZ,oBAAgCC,QAAQ,IAAIA,QAAQ,KAAK,eAAzD,CAApB;AACA,WAAO,qBAAAD,aAAa,MAAb,CAAAA,aAAa,EAAQ,CAACvB,MAAD,EAASwB,QAAT,MAAuB,EAAC,GAAGxB,MAAJ;AAAY,OAACwB,QAAD,GAAY,2BAAYA,QAAZ;AAAxB,KAAvB,CAAR,EAAgF,EAAhF,CAApB;AACD;;AAzDkE;;;8BAAxD5B,6B,qBACc,iC","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 { AuthSdkError } from '../../errors';\nimport { AuthenticatorData, AuthenticatorDataValues } from './Base/AuthenticatorData';\nimport { IdxRemediation } from '../types/idx-js';\n\nexport type AuthenticatorVerificationDataValues = AuthenticatorDataValues;\n\nexport class AuthenticatorVerificationData extends AuthenticatorData {\n static remediationName = 'authenticator-verification-data';\n\n values!: AuthenticatorVerificationDataValues;\n shouldProceedWithEmailAuthenticator: boolean;\n\n constructor(remediation: IdxRemediation, values: AuthenticatorDataValues = {}) {\n super(remediation, values);\n\n // TODO: extend this feature to all authenticators\n this.shouldProceedWithEmailAuthenticator = this.authenticator.methods.length === 1 \n && this.authenticator.methods[0].type === 'email';\n }\n\n canRemediate() {\n // auto proceed if there is only one method\n if (this.shouldProceedWithEmailAuthenticator) {\n return true;\n }\n return super.canRemediate();\n }\n\n mapAuthenticator() {\n // auto proceed with the only methodType option\n if (this.shouldProceedWithEmailAuthenticator) {\n const authenticatorFromRemediation = this.getAuthenticatorFromRemediation();\n return authenticatorFromRemediation.form?.value.reduce((acc, curr) => {\n if (curr.value) {\n acc[curr.name] = curr.value;\n } else if (curr.options) {\n acc[curr.name] = curr.options![0].value;\n } else {\n throw new AuthSdkError(`Unsupported authenticator data type: ${curr}`);\n }\n return acc;\n }, {});\n }\n\n return this.getAuthenticatorData();\n }\n\n getInputAuthenticator() {\n const authenticator = this.getAuthenticatorFromRemediation();\n const methodType = authenticator.form!.value.find(({ name }) => name === 'methodType');\n // if has methodType in form, let user select the methodType\n if (methodType && methodType.options) {\n return { name: 'methodType', type: 'string', required: true };\n }\n // no methodType, then return form values\n const inputs = [...authenticator.form!.value];\n return inputs;\n }\n\n getValuesAfterProceed(): AuthenticatorVerificationDataValues {\n this.values = super.getValuesAfterProceed();\n let trimmedValues = Object.keys(this.values).filter(valueKey => valueKey !== 'authenticator');\n return trimmedValues.reduce((values, valueKey) => ({...values, [valueKey]: this.values[valueKey]}), {});\n }\n}\n"],"file":"AuthenticatorVerificationData.js"}
@@ -1,13 +1,23 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
4
 
5
5
  exports.AuthenticatorData = void 0;
6
6
 
7
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
+ var _values = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/values"));
8
+
9
+ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
10
+
11
+ var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
12
+
13
+ var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
8
14
 
9
15
  var _Remediator = require("./Remediator");
10
16
 
17
+ var _types = require("../../types");
18
+
19
+ var _util = require("../../authenticator/util");
20
+
11
21
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
12
22
 
13
23
  /*!
@@ -26,9 +36,6 @@ class AuthenticatorData extends _Remediator.Remediator {
26
36
  constructor(remediation, values = {}) {
27
37
  super(remediation, values); // set before other data calculation
28
38
 
29
- (0, _defineProperty2.default)(this, "map", {
30
- 'authenticator': []
31
- });
32
39
  this.authenticator = this.getAuthenticator();
33
40
  this.formatAuthenticatorData();
34
41
  }
@@ -37,8 +44,10 @@ class AuthenticatorData extends _Remediator.Remediator {
37
44
  const authenticatorData = this.getAuthenticatorData();
38
45
 
39
46
  if (authenticatorData) {
40
- this.values.authenticatorsData = this.values.authenticatorsData.map(data => {
41
- if (data.key === this.authenticator.key) {
47
+ var _context;
48
+
49
+ (0, _values.default)(this).authenticatorsData = (0, _map.default)(_context = (0, _values.default)(this).authenticatorsData).call(_context, data => {
50
+ if ((0, _util.compareAuthenticators)(this.authenticator, data)) {
42
51
  return this.mapAuthenticatorDataFromValues(data);
43
52
  }
44
53
 
@@ -48,19 +57,19 @@ class AuthenticatorData extends _Remediator.Remediator {
48
57
  const data = this.mapAuthenticatorDataFromValues();
49
58
 
50
59
  if (data) {
51
- this.values.authenticatorsData.push(data);
60
+ (0, _values.default)(this).authenticatorsData.push(data);
52
61
  }
53
62
  }
54
63
  }
55
64
 
56
65
  getAuthenticatorData() {
57
- return this.values.authenticatorsData.find(({
58
- key
59
- }) => key === this.authenticator.key);
66
+ var _context2;
67
+
68
+ return (0, _find.default)(_context2 = (0, _values.default)(this).authenticatorsData).call(_context2, data => (0, _util.compareAuthenticators)(this.authenticator, data));
60
69
  }
61
70
 
62
71
  canRemediate() {
63
- return this.values.authenticatorsData.some(data => data.key === this.authenticator.key);
72
+ return (0, _values.default)(this).authenticatorsData.some(data => (0, _util.compareAuthenticators)(this.authenticator, data));
64
73
  }
65
74
 
66
75
  getNextStep() {
@@ -75,11 +84,22 @@ class AuthenticatorData extends _Remediator.Remediator {
75
84
 
76
85
  mapAuthenticatorDataFromValues(authenticatorData) {
77
86
  // add methodType to authenticatorData if it exists in values
87
+ let {
88
+ methodType,
89
+ authenticator
90
+ } = (0, _values.default)(this);
91
+
92
+ if (!methodType && (0, _types.isAuthenticator)(authenticator)) {
93
+ methodType = authenticator === null || authenticator === void 0 ? void 0 : authenticator.methodType;
94
+ }
95
+
78
96
  const {
79
- methodType
80
- } = this.values;
97
+ id,
98
+ enrollmentId
99
+ } = this.authenticator;
81
100
  const data = {
82
- key: this.authenticator.key,
101
+ id,
102
+ enrollmentId,
83
103
  ...(authenticatorData && authenticatorData),
84
104
  ...(methodType && {
85
105
  methodType
@@ -89,26 +109,30 @@ class AuthenticatorData extends _Remediator.Remediator {
89
109
  }
90
110
 
91
111
  getAuthenticatorFromRemediation() {
92
- const authenticator = this.remediation.value.find(({
112
+ var _context3;
113
+
114
+ const authenticator = (0, _find.default)(_context3 = this.remediation.value).call(_context3, ({
93
115
  name
94
116
  }) => name === 'authenticator');
95
117
  return authenticator;
96
118
  }
97
119
 
98
120
  getMethodTypes() {
99
- var _value$find;
121
+ var _value$find, _context4;
100
122
 
101
123
  const authenticator = this.getAuthenticatorFromRemediation();
102
- return (_value$find = authenticator.form.value.find(({
124
+ return (_value$find = (0, _find.default)(_context4 = authenticator.form.value).call(_context4, ({
103
125
  name
104
126
  }) => name === 'methodType')) === null || _value$find === void 0 ? void 0 : _value$find.options;
105
127
  }
106
128
 
107
129
  getValuesAfterProceed() {
130
+ var _context5;
131
+
108
132
  this.values = super.getValuesAfterProceed(); // remove used authenticatorData
109
133
 
110
- const authenticatorsData = this.values.authenticatorsData.filter(data => data.key !== this.authenticator.key);
111
- return { ...this.values,
134
+ const authenticatorsData = (0, _filter.default)(_context5 = (0, _values.default)(this).authenticatorsData).call(_context5, data => (0, _util.compareAuthenticators)(this.authenticator, data) !== true);
135
+ return { ...(0, _values.default)(this),
112
136
  authenticatorsData
113
137
  };
114
138
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../lib/idx/remediators/Base/AuthenticatorData.ts"],"names":["AuthenticatorData","Remediator","constructor","remediation","values","authenticator","getAuthenticator","formatAuthenticatorData","authenticatorData","getAuthenticatorData","authenticatorsData","map","data","key","mapAuthenticatorDataFromValues","push","find","canRemediate","some","getNextStep","common","options","getMethodTypes","methodType","getAuthenticatorFromRemediation","value","name","form","getValuesAfterProceed","filter"],"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 } from '../../types/idx-js';\nimport { Authenticator } from '../../types';\n\nexport type AuthenticatorDataValues = RemediationValues & {\n methodType?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class AuthenticatorData extends Remediator {\n\n map = {\n 'authenticator': []\n };\n\n values!: AuthenticatorDataValues;\n authenticator: Authenticator;\n\n constructor(remediation: IdxRemediation, values: AuthenticatorDataValues = {}) {\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 (data.key === this.authenticator.key) {\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(({ key }) => key === this.authenticator.key);\n }\n\n canRemediate() {\n return this.values.authenticatorsData!\n .some(data => data.key === this.authenticator.key);\n }\n\n getNextStep() {\n const common = super.getNextStep();\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 const { methodType } = this.values;\n const data = { \n key: this.authenticator.key, \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(): RemediationValues {\n this.values = super.getValuesAfterProceed();\n // remove used authenticatorData\n const authenticatorsData = this.values.authenticatorsData!\n .filter(data => data.key !== this.authenticator.key);\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","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';\n\nexport type AuthenticatorDataValues = RemediationValues & {\n methodType?: string;\n};\n\n// Base class - DO NOT expose static remediationName\nexport class AuthenticatorData extends Remediator {\n values!: AuthenticatorDataValues;\n authenticator: IdxAuthenticator;\n\n constructor(remediation: IdxRemediation, values: AuthenticatorDataValues = {}) {\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 getNextStep() {\n const common = super.getNextStep();\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(): RemediationValues {\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"}