@okta/okta-auth-js 7.0.2 → 7.1.1

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 (572) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +2 -0
  3. package/cjs/authn/AuthnTransactionImpl.js +6 -8
  4. package/cjs/authn/AuthnTransactionImpl.js.map +1 -1
  5. package/cjs/authn/api.js +3 -18
  6. package/cjs/authn/api.js.map +1 -1
  7. package/cjs/authn/factory.js +1 -7
  8. package/cjs/authn/factory.js.map +1 -1
  9. package/cjs/authn/index.js +0 -5
  10. package/cjs/authn/index.js.map +1 -1
  11. package/cjs/authn/mixin.js +14 -22
  12. package/cjs/authn/mixin.js.map +1 -1
  13. package/cjs/authn/util/flattenEmbedded.js +5 -12
  14. package/cjs/authn/util/flattenEmbedded.js.map +1 -1
  15. package/cjs/authn/util/link2fn.js +0 -22
  16. package/cjs/authn/util/link2fn.js.map +1 -1
  17. package/cjs/authn/util/links2fns.js +0 -12
  18. package/cjs/authn/util/links2fns.js.map +1 -1
  19. package/cjs/authn/util/poll.js +9 -27
  20. package/cjs/authn/util/poll.js.map +1 -1
  21. package/cjs/authn/util/stateToken.js +3 -4
  22. package/cjs/authn/util/stateToken.js.map +1 -1
  23. package/cjs/base/factory.js +6 -14
  24. package/cjs/base/factory.js.map +1 -1
  25. package/cjs/base/index.js +0 -5
  26. package/cjs/base/index.js.map +1 -1
  27. package/cjs/base/options.js +1 -2
  28. package/cjs/base/options.js.map +1 -1
  29. package/cjs/browser/browserStorage.js +15 -43
  30. package/cjs/browser/browserStorage.js.map +1 -1
  31. package/cjs/browser/fingerprint.js +3 -15
  32. package/cjs/browser/fingerprint.js.map +1 -1
  33. package/cjs/clock.js +5 -7
  34. package/cjs/clock.js.map +1 -1
  35. package/cjs/constants.js +4 -3
  36. package/cjs/constants.js.map +1 -1
  37. package/cjs/core/AuthStateManager.js +24 -48
  38. package/cjs/core/AuthStateManager.js.map +1 -1
  39. package/cjs/core/ServiceManager/browser.js +13 -33
  40. package/cjs/core/ServiceManager/browser.js.map +1 -1
  41. package/cjs/core/ServiceManager/index.js +0 -1
  42. package/cjs/core/ServiceManager/index.js.map +1 -1
  43. package/cjs/core/ServiceManager/node.js +3 -9
  44. package/cjs/core/ServiceManager/node.js.map +1 -1
  45. package/cjs/core/factory.js +0 -7
  46. package/cjs/core/factory.js.map +1 -1
  47. package/cjs/core/index.js +0 -13
  48. package/cjs/core/index.js.map +1 -1
  49. package/cjs/core/mixin.js +16 -20
  50. package/cjs/core/mixin.js.map +1 -1
  51. package/cjs/core/options.js +1 -3
  52. package/cjs/core/options.js.map +1 -1
  53. package/cjs/core/storage.js +0 -2
  54. package/cjs/core/storage.js.map +1 -1
  55. package/cjs/core/types/index.js +0 -5
  56. package/cjs/core/types/index.js.map +1 -1
  57. package/cjs/crypto/base64.js +9 -22
  58. package/cjs/crypto/base64.js.map +1 -1
  59. package/cjs/crypto/browser.js +0 -4
  60. package/cjs/crypto/browser.js.map +1 -1
  61. package/cjs/crypto/index.js +0 -9
  62. package/cjs/crypto/index.js.map +1 -1
  63. package/cjs/crypto/node.js +0 -13
  64. package/cjs/crypto/node.js.map +1 -1
  65. package/cjs/crypto/oidcHash.js +1 -4
  66. package/cjs/crypto/oidcHash.js.map +1 -1
  67. package/cjs/crypto/verifyToken.js +6 -7
  68. package/cjs/crypto/verifyToken.js.map +1 -1
  69. package/cjs/crypto/webcrypto.js +0 -1
  70. package/cjs/crypto/webcrypto.js.map +1 -1
  71. package/cjs/errors/AuthApiError.js +1 -7
  72. package/cjs/errors/AuthApiError.js.map +1 -1
  73. package/cjs/errors/AuthPollStopError.js +1 -5
  74. package/cjs/errors/AuthPollStopError.js.map +1 -1
  75. package/cjs/errors/AuthSdkError.js +1 -6
  76. package/cjs/errors/AuthSdkError.js.map +1 -1
  77. package/cjs/errors/CustomError.js +1 -4
  78. package/cjs/errors/CustomError.js.map +1 -1
  79. package/cjs/errors/OAuthError.js +4 -7
  80. package/cjs/errors/OAuthError.js.map +1 -1
  81. package/cjs/errors/index.js +1 -9
  82. package/cjs/errors/index.js.map +1 -1
  83. package/cjs/exports/authn.js +0 -9
  84. package/cjs/exports/authn.js.map +1 -1
  85. package/cjs/exports/cdn/authn.js +0 -2
  86. package/cjs/exports/cdn/authn.js.map +1 -1
  87. package/cjs/exports/cdn/core.js +0 -2
  88. package/cjs/exports/cdn/core.js.map +1 -1
  89. package/cjs/exports/cdn/default.js +0 -2
  90. package/cjs/exports/cdn/default.js.map +1 -1
  91. package/cjs/exports/cdn/idx.js +0 -2
  92. package/cjs/exports/cdn/idx.js.map +1 -1
  93. package/cjs/exports/cdn/myaccount.js +0 -2
  94. package/cjs/exports/cdn/myaccount.js.map +1 -1
  95. package/cjs/exports/common.js +0 -22
  96. package/cjs/exports/common.js.map +1 -1
  97. package/cjs/exports/core.js +0 -9
  98. package/cjs/exports/core.js.map +1 -1
  99. package/cjs/exports/default.js +2 -12
  100. package/cjs/exports/default.js.map +1 -1
  101. package/cjs/exports/idx.js +3 -7
  102. package/cjs/exports/idx.js.map +1 -1
  103. package/cjs/exports/myaccount.js +0 -9
  104. package/cjs/exports/myaccount.js.map +1 -1
  105. package/cjs/features.js +1 -18
  106. package/cjs/features.js.map +1 -1
  107. package/cjs/fetch/fetchRequest.js +6 -20
  108. package/cjs/fetch/fetchRequest.js.map +1 -1
  109. package/cjs/http/OktaUserAgent.js +3 -11
  110. package/cjs/http/OktaUserAgent.js.map +1 -1
  111. package/cjs/http/headers.js +1 -1
  112. package/cjs/http/headers.js.map +1 -1
  113. package/cjs/http/index.js +0 -11
  114. package/cjs/http/index.js.map +1 -1
  115. package/cjs/http/mixin.js +2 -10
  116. package/cjs/http/mixin.js.map +1 -1
  117. package/cjs/http/options.js +1 -5
  118. package/cjs/http/options.js.map +1 -1
  119. package/cjs/http/request.js +75 -57
  120. package/cjs/http/request.js.map +1 -1
  121. package/cjs/idx/IdxTransactionManager.js +2 -22
  122. package/cjs/idx/IdxTransactionManager.js.map +1 -1
  123. package/cjs/idx/authenticate.js +3 -5
  124. package/cjs/idx/authenticate.js.map +1 -1
  125. package/cjs/idx/authenticator/Authenticator.js +2 -4
  126. package/cjs/idx/authenticator/Authenticator.js.map +1 -1
  127. package/cjs/idx/authenticator/OktaPassword.js +2 -10
  128. package/cjs/idx/authenticator/OktaPassword.js.map +1 -1
  129. package/cjs/idx/authenticator/OktaVerifyTotp.js +0 -6
  130. package/cjs/idx/authenticator/OktaVerifyTotp.js.map +1 -1
  131. package/cjs/idx/authenticator/SecurityQuestionEnrollment.js +0 -10
  132. package/cjs/idx/authenticator/SecurityQuestionEnrollment.js.map +1 -1
  133. package/cjs/idx/authenticator/SecurityQuestionVerification.js +1 -10
  134. package/cjs/idx/authenticator/SecurityQuestionVerification.js.map +1 -1
  135. package/cjs/idx/authenticator/VerificationCodeAuthenticator.js +2 -10
  136. package/cjs/idx/authenticator/VerificationCodeAuthenticator.js.map +1 -1
  137. package/cjs/idx/authenticator/WebauthnEnrollment.js +0 -8
  138. package/cjs/idx/authenticator/WebauthnEnrollment.js.map +1 -1
  139. package/cjs/idx/authenticator/WebauthnVerification.js +0 -8
  140. package/cjs/idx/authenticator/WebauthnVerification.js.map +1 -1
  141. package/cjs/idx/authenticator/getAuthenticator.js +0 -15
  142. package/cjs/idx/authenticator/getAuthenticator.js.map +1 -1
  143. package/cjs/idx/authenticator/index.js +0 -15
  144. package/cjs/idx/authenticator/index.js.map +1 -1
  145. package/cjs/idx/authenticator/util.js +8 -18
  146. package/cjs/idx/authenticator/util.js.map +1 -1
  147. package/cjs/idx/cancel.js +3 -4
  148. package/cjs/idx/cancel.js.map +1 -1
  149. package/cjs/idx/emailVerify.js +5 -13
  150. package/cjs/idx/emailVerify.js.map +1 -1
  151. package/cjs/idx/factory/OktaAuthIdx.js +0 -3
  152. package/cjs/idx/factory/OktaAuthIdx.js.map +1 -1
  153. package/cjs/idx/factory/api.js +1 -17
  154. package/cjs/idx/factory/api.js.map +1 -1
  155. package/cjs/idx/factory/index.js +0 -3
  156. package/cjs/idx/factory/index.js.map +1 -1
  157. package/cjs/idx/flow/AccountUnlockFlow.js +1 -2
  158. package/cjs/idx/flow/AccountUnlockFlow.js.map +1 -1
  159. package/cjs/idx/flow/AuthenticationFlow.js +1 -2
  160. package/cjs/idx/flow/AuthenticationFlow.js.map +1 -1
  161. package/cjs/idx/flow/FlowSpecification.js +2 -13
  162. package/cjs/idx/flow/FlowSpecification.js.map +1 -1
  163. package/cjs/idx/flow/PasswordRecoveryFlow.js +1 -2
  164. package/cjs/idx/flow/PasswordRecoveryFlow.js.map +1 -1
  165. package/cjs/idx/flow/RegistrationFlow.js +1 -2
  166. package/cjs/idx/flow/RegistrationFlow.js.map +1 -1
  167. package/cjs/idx/flow/index.js +0 -11
  168. package/cjs/idx/flow/index.js.map +1 -1
  169. package/cjs/idx/handleInteractionCodeRedirect.js +7 -12
  170. package/cjs/idx/handleInteractionCodeRedirect.js.map +1 -1
  171. package/cjs/idx/idxState/index.js +1 -11
  172. package/cjs/idx/idxState/index.js.map +1 -1
  173. package/cjs/idx/idxState/v1/actionParser.js +1 -12
  174. package/cjs/idx/idxState/v1/actionParser.js.map +1 -1
  175. package/cjs/idx/idxState/v1/generateIdxAction.js +10 -15
  176. package/cjs/idx/idxState/v1/generateIdxAction.js.map +1 -1
  177. package/cjs/idx/idxState/v1/idxResponseParser.js +7 -23
  178. package/cjs/idx/idxState/v1/idxResponseParser.js.map +1 -1
  179. package/cjs/idx/idxState/v1/makeIdxState.js +2 -10
  180. package/cjs/idx/idxState/v1/makeIdxState.js.map +1 -1
  181. package/cjs/idx/idxState/v1/parsers.js +0 -2
  182. package/cjs/idx/idxState/v1/parsers.js.map +1 -1
  183. package/cjs/idx/idxState/v1/remediationParser.js +2 -4
  184. package/cjs/idx/idxState/v1/remediationParser.js.map +1 -1
  185. package/cjs/idx/index.js +0 -26
  186. package/cjs/idx/index.js.map +1 -1
  187. package/cjs/idx/interact.js +18 -18
  188. package/cjs/idx/interact.js.map +1 -1
  189. package/cjs/idx/introspect.js +5 -14
  190. package/cjs/idx/introspect.js.map +1 -1
  191. package/cjs/idx/mixin.js +0 -9
  192. package/cjs/idx/mixin.js.map +1 -1
  193. package/cjs/idx/options.js +2 -3
  194. package/cjs/idx/options.js.map +1 -1
  195. package/cjs/idx/poll.js +1 -10
  196. package/cjs/idx/poll.js.map +1 -1
  197. package/cjs/idx/proceed.js +3 -9
  198. package/cjs/idx/proceed.js.map +1 -1
  199. package/cjs/idx/recoverPassword.js +3 -4
  200. package/cjs/idx/recoverPassword.js.map +1 -1
  201. package/cjs/idx/register.js +5 -10
  202. package/cjs/idx/register.js.map +1 -1
  203. package/cjs/idx/remediate.js +24 -45
  204. package/cjs/idx/remediate.js.map +1 -1
  205. package/cjs/idx/remediators/AuthenticatorEnrollmentData.js +7 -16
  206. package/cjs/idx/remediators/AuthenticatorEnrollmentData.js.map +1 -1
  207. package/cjs/idx/remediators/AuthenticatorVerificationData.js +7 -15
  208. package/cjs/idx/remediators/AuthenticatorVerificationData.js.map +1 -1
  209. package/cjs/idx/remediators/Base/AuthenticatorData.js +7 -22
  210. package/cjs/idx/remediators/Base/AuthenticatorData.js.map +1 -1
  211. package/cjs/idx/remediators/Base/Remediator.js +38 -67
  212. package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
  213. package/cjs/idx/remediators/Base/SelectAuthenticator.js +13 -30
  214. package/cjs/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
  215. package/cjs/idx/remediators/Base/VerifyAuthenticator.js +5 -13
  216. package/cjs/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
  217. package/cjs/idx/remediators/ChallengeAuthenticator.js +1 -5
  218. package/cjs/idx/remediators/ChallengeAuthenticator.js.map +1 -1
  219. package/cjs/idx/remediators/ChallengePoll.js +1 -6
  220. package/cjs/idx/remediators/ChallengePoll.js.map +1 -1
  221. package/cjs/idx/remediators/EnrollAuthenticator.js +1 -5
  222. package/cjs/idx/remediators/EnrollAuthenticator.js.map +1 -1
  223. package/cjs/idx/remediators/EnrollPoll.js +5 -12
  224. package/cjs/idx/remediators/EnrollPoll.js.map +1 -1
  225. package/cjs/idx/remediators/EnrollProfile.js +8 -30
  226. package/cjs/idx/remediators/EnrollProfile.js.map +1 -1
  227. package/cjs/idx/remediators/EnrollmentChannelData.js +5 -13
  228. package/cjs/idx/remediators/EnrollmentChannelData.js.map +1 -1
  229. package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js +13 -19
  230. package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js.map +1 -1
  231. package/cjs/idx/remediators/GenericRemediator/index.js +0 -1
  232. package/cjs/idx/remediators/GenericRemediator/index.js.map +1 -1
  233. package/cjs/idx/remediators/GenericRemediator/util.js +19 -31
  234. package/cjs/idx/remediators/GenericRemediator/util.js.map +1 -1
  235. package/cjs/idx/remediators/Identify.js +3 -12
  236. package/cjs/idx/remediators/Identify.js.map +1 -1
  237. package/cjs/idx/remediators/ReEnrollAuthenticator.js +3 -10
  238. package/cjs/idx/remediators/ReEnrollAuthenticator.js.map +1 -1
  239. package/cjs/idx/remediators/RedirectIdp.js +1 -7
  240. package/cjs/idx/remediators/RedirectIdp.js.map +1 -1
  241. package/cjs/idx/remediators/ResetAuthenticator.js +1 -5
  242. package/cjs/idx/remediators/ResetAuthenticator.js.map +1 -1
  243. package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js +3 -11
  244. package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js.map +1 -1
  245. package/cjs/idx/remediators/SelectAuthenticatorEnroll.js +1 -5
  246. package/cjs/idx/remediators/SelectAuthenticatorEnroll.js.map +1 -1
  247. package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js +6 -15
  248. package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js.map +1 -1
  249. package/cjs/idx/remediators/SelectEnrollProfile.js +1 -6
  250. package/cjs/idx/remediators/SelectEnrollProfile.js.map +1 -1
  251. package/cjs/idx/remediators/SelectEnrollmentChannel.js +5 -16
  252. package/cjs/idx/remediators/SelectEnrollmentChannel.js.map +1 -1
  253. package/cjs/idx/remediators/Skip.js +1 -6
  254. package/cjs/idx/remediators/Skip.js.map +1 -1
  255. package/cjs/idx/remediators/index.js +0 -39
  256. package/cjs/idx/remediators/index.js.map +1 -1
  257. package/cjs/idx/remediators/util.js +1 -7
  258. package/cjs/idx/remediators/util.js.map +1 -1
  259. package/cjs/idx/run.js +37 -52
  260. package/cjs/idx/run.js.map +1 -1
  261. package/cjs/idx/startTransaction.js +1 -2
  262. package/cjs/idx/startTransaction.js.map +1 -1
  263. package/cjs/idx/storage.js +3 -22
  264. package/cjs/idx/storage.js.map +1 -1
  265. package/cjs/idx/transactionMeta.js +24 -42
  266. package/cjs/idx/transactionMeta.js.map +1 -1
  267. package/cjs/idx/types/api.js +1 -9
  268. package/cjs/idx/types/api.js.map +1 -1
  269. package/cjs/idx/types/idx-js.js +3 -3
  270. package/cjs/idx/types/idx-js.js.map +1 -1
  271. package/cjs/idx/types/index.js +0 -7
  272. package/cjs/idx/types/index.js.map +1 -1
  273. package/cjs/idx/types/meta.js.map +1 -1
  274. package/cjs/idx/types/options.js.map +1 -1
  275. package/cjs/idx/unlockAccount.js +7 -11
  276. package/cjs/idx/unlockAccount.js.map +1 -1
  277. package/cjs/idx/util.js +24 -76
  278. package/cjs/idx/util.js.map +1 -1
  279. package/cjs/idx/webauthn.js +13 -18
  280. package/cjs/idx/webauthn.js.map +1 -1
  281. package/cjs/myaccount/api.js +0 -5
  282. package/cjs/myaccount/api.js.map +1 -1
  283. package/cjs/myaccount/emailApi.js +6 -21
  284. package/cjs/myaccount/emailApi.js.map +1 -1
  285. package/cjs/myaccount/factory.js +0 -3
  286. package/cjs/myaccount/factory.js.map +1 -1
  287. package/cjs/myaccount/index.js +0 -7
  288. package/cjs/myaccount/index.js.map +1 -1
  289. package/cjs/myaccount/mixin.js +0 -5
  290. package/cjs/myaccount/mixin.js.map +1 -1
  291. package/cjs/myaccount/phoneApi.js +5 -18
  292. package/cjs/myaccount/phoneApi.js.map +1 -1
  293. package/cjs/myaccount/profileApi.js +2 -9
  294. package/cjs/myaccount/profileApi.js.map +1 -1
  295. package/cjs/myaccount/request.js +12 -78
  296. package/cjs/myaccount/request.js.map +1 -1
  297. package/cjs/myaccount/transactions/Base.js +5 -7
  298. package/cjs/myaccount/transactions/Base.js.map +1 -1
  299. package/cjs/myaccount/transactions/EmailChallengeTransaction.js +5 -10
  300. package/cjs/myaccount/transactions/EmailChallengeTransaction.js.map +1 -1
  301. package/cjs/myaccount/transactions/EmailStatusTransaction.js +2 -7
  302. package/cjs/myaccount/transactions/EmailStatusTransaction.js.map +1 -1
  303. package/cjs/myaccount/transactions/EmailTransaction.js +5 -13
  304. package/cjs/myaccount/transactions/EmailTransaction.js.map +1 -1
  305. package/cjs/myaccount/transactions/PhoneTransaction.js +5 -12
  306. package/cjs/myaccount/transactions/PhoneTransaction.js.map +1 -1
  307. package/cjs/myaccount/transactions/ProfileSchemaTransaction.js +0 -5
  308. package/cjs/myaccount/transactions/ProfileSchemaTransaction.js.map +1 -1
  309. package/cjs/myaccount/transactions/ProfileTransaction.js +0 -5
  310. package/cjs/myaccount/transactions/ProfileTransaction.js.map +1 -1
  311. package/cjs/myaccount/transactions/index.js +0 -8
  312. package/cjs/myaccount/transactions/index.js.map +1 -1
  313. package/cjs/myaccount/types.js +0 -5
  314. package/cjs/myaccount/types.js.map +1 -1
  315. package/cjs/oidc/TokenManager.js +39 -100
  316. package/cjs/oidc/TokenManager.js.map +1 -1
  317. package/cjs/oidc/TransactionManager.js +19 -26
  318. package/cjs/oidc/TransactionManager.js.map +1 -1
  319. package/cjs/oidc/decodeToken.js +1 -5
  320. package/cjs/oidc/decodeToken.js.map +1 -1
  321. package/cjs/oidc/endpoints/authorize.js +9 -13
  322. package/cjs/oidc/endpoints/authorize.js.map +1 -1
  323. package/cjs/oidc/endpoints/index.js +0 -5
  324. package/cjs/oidc/endpoints/index.js.map +1 -1
  325. package/cjs/oidc/endpoints/token.js +5 -17
  326. package/cjs/oidc/endpoints/token.js.map +1 -1
  327. package/cjs/oidc/endpoints/well-known.js +7 -14
  328. package/cjs/oidc/endpoints/well-known.js.map +1 -1
  329. package/cjs/oidc/exchangeCodeForTokens.js +7 -12
  330. package/cjs/oidc/exchangeCodeForTokens.js.map +1 -1
  331. package/cjs/oidc/factory/OktaAuthOAuth.js +0 -6
  332. package/cjs/oidc/factory/OktaAuthOAuth.js.map +1 -1
  333. package/cjs/oidc/factory/api.js +6 -20
  334. package/cjs/oidc/factory/api.js.map +1 -1
  335. package/cjs/oidc/factory/index.js +0 -3
  336. package/cjs/oidc/factory/index.js.map +1 -1
  337. package/cjs/oidc/getToken.js +18 -30
  338. package/cjs/oidc/getToken.js.map +1 -1
  339. package/cjs/oidc/getUserInfo.js +1 -15
  340. package/cjs/oidc/getUserInfo.js.map +1 -1
  341. package/cjs/oidc/getWithPopup.js +4 -8
  342. package/cjs/oidc/getWithPopup.js.map +1 -1
  343. package/cjs/oidc/getWithRedirect.js +1 -8
  344. package/cjs/oidc/getWithRedirect.js.map +1 -1
  345. package/cjs/oidc/getWithoutPrompt.js +1 -5
  346. package/cjs/oidc/getWithoutPrompt.js.map +1 -1
  347. package/cjs/oidc/handleOAuthResponse.js +23 -40
  348. package/cjs/oidc/handleOAuthResponse.js.map +1 -1
  349. package/cjs/oidc/index.js +0 -32
  350. package/cjs/oidc/index.js.map +1 -1
  351. package/cjs/oidc/mixin/browser.js +6 -18
  352. package/cjs/oidc/mixin/browser.js.map +1 -1
  353. package/cjs/oidc/mixin/index.js +37 -89
  354. package/cjs/oidc/mixin/index.js.map +1 -1
  355. package/cjs/oidc/mixin/node.js +2 -9
  356. package/cjs/oidc/mixin/node.js.map +1 -1
  357. package/cjs/oidc/options/OAuthOptionsConstructor.js +17 -24
  358. package/cjs/oidc/options/OAuthOptionsConstructor.js.map +1 -1
  359. package/cjs/oidc/options/browser.js.map +1 -1
  360. package/cjs/oidc/options/index.js +0 -1
  361. package/cjs/oidc/options/index.js.map +1 -1
  362. package/cjs/oidc/options/node.js.map +1 -1
  363. package/cjs/oidc/parseFromUrl.js +1 -32
  364. package/cjs/oidc/parseFromUrl.js.map +1 -1
  365. package/cjs/oidc/renewToken.js +5 -16
  366. package/cjs/oidc/renewToken.js.map +1 -1
  367. package/cjs/oidc/renewTokens.js +3 -15
  368. package/cjs/oidc/renewTokens.js.map +1 -1
  369. package/cjs/oidc/renewTokensWithRefresh.js +3 -13
  370. package/cjs/oidc/renewTokensWithRefresh.js.map +1 -1
  371. package/cjs/oidc/revokeToken.js +3 -14
  372. package/cjs/oidc/revokeToken.js.map +1 -1
  373. package/cjs/oidc/storage.js +0 -8
  374. package/cjs/oidc/storage.js.map +1 -1
  375. package/cjs/oidc/types/Token.js +1 -5
  376. package/cjs/oidc/types/Token.js.map +1 -1
  377. package/cjs/oidc/types/TokenManager.js +1 -1
  378. package/cjs/oidc/types/TokenManager.js.map +1 -1
  379. package/cjs/oidc/types/Transaction.js +1 -12
  380. package/cjs/oidc/types/Transaction.js.map +1 -1
  381. package/cjs/oidc/types/UserClaims.js.map +1 -1
  382. package/cjs/oidc/types/api.js.map +1 -1
  383. package/cjs/oidc/types/index.js +0 -21
  384. package/cjs/oidc/types/index.js.map +1 -1
  385. package/cjs/oidc/types/meta.js.map +1 -1
  386. package/cjs/oidc/types/options.js.map +1 -1
  387. package/cjs/oidc/types/proto.js.map +1 -1
  388. package/cjs/oidc/util/browser.js +4 -13
  389. package/cjs/oidc/util/browser.js.map +1 -1
  390. package/cjs/oidc/util/defaultTokenParams.js +5 -5
  391. package/cjs/oidc/util/defaultTokenParams.js.map +1 -1
  392. package/cjs/oidc/util/errors.js +3 -8
  393. package/cjs/oidc/util/errors.js.map +1 -1
  394. package/cjs/oidc/util/index.js +0 -24
  395. package/cjs/oidc/util/index.js.map +1 -1
  396. package/cjs/oidc/util/loginRedirect.js +11 -25
  397. package/cjs/oidc/util/loginRedirect.js.map +1 -1
  398. package/cjs/oidc/util/oauth.js +3 -12
  399. package/cjs/oidc/util/oauth.js.map +1 -1
  400. package/cjs/oidc/util/oauthMeta.js +5 -6
  401. package/cjs/oidc/util/oauthMeta.js.map +1 -1
  402. package/cjs/oidc/util/pkce.js +1 -12
  403. package/cjs/oidc/util/pkce.js.map +1 -1
  404. package/cjs/oidc/util/prepareTokenParams.js +13 -26
  405. package/cjs/oidc/util/prepareTokenParams.js.map +1 -1
  406. package/cjs/oidc/util/refreshToken.js +0 -7
  407. package/cjs/oidc/util/refreshToken.js.map +1 -1
  408. package/cjs/oidc/util/sharedStorage.js +0 -8
  409. package/cjs/oidc/util/sharedStorage.js.map +1 -1
  410. package/cjs/oidc/util/urlParams.js +9 -12
  411. package/cjs/oidc/util/urlParams.js.map +1 -1
  412. package/cjs/oidc/util/validateClaims.js +9 -17
  413. package/cjs/oidc/util/validateClaims.js.map +1 -1
  414. package/cjs/oidc/util/validateToken.js +1 -6
  415. package/cjs/oidc/util/validateToken.js.map +1 -1
  416. package/cjs/oidc/verifyToken.js +13 -23
  417. package/cjs/oidc/verifyToken.js.map +1 -1
  418. package/cjs/server/serverStorage.js +9 -27
  419. package/cjs/server/serverStorage.js.map +1 -1
  420. package/cjs/services/AutoRenewService.js +1 -17
  421. package/cjs/services/AutoRenewService.js.map +1 -1
  422. package/cjs/services/LeaderElectionService.js +1 -23
  423. package/cjs/services/LeaderElectionService.js.map +1 -1
  424. package/cjs/services/SyncStorageService.js +3 -37
  425. package/cjs/services/SyncStorageService.js.map +1 -1
  426. package/cjs/services/index.js +0 -5
  427. package/cjs/services/index.js.map +1 -1
  428. package/cjs/session/api.js +1 -12
  429. package/cjs/session/api.js.map +1 -1
  430. package/cjs/session/factory.js +0 -2
  431. package/cjs/session/factory.js.map +1 -1
  432. package/cjs/session/index.js +0 -7
  433. package/cjs/session/index.js.map +1 -1
  434. package/cjs/session/mixin.js +2 -6
  435. package/cjs/session/mixin.js.map +1 -1
  436. package/cjs/storage/BaseStorageManager.js +13 -25
  437. package/cjs/storage/BaseStorageManager.js.map +1 -1
  438. package/cjs/storage/SavedObject.js +7 -19
  439. package/cjs/storage/SavedObject.js.map +1 -1
  440. package/cjs/storage/index.js +0 -9
  441. package/cjs/storage/index.js.map +1 -1
  442. package/cjs/storage/mixin.js +2 -4
  443. package/cjs/storage/mixin.js.map +1 -1
  444. package/cjs/storage/options/StorageOptionsConstructor.js +3 -6
  445. package/cjs/storage/options/StorageOptionsConstructor.js.map +1 -1
  446. package/cjs/storage/options/browser.js +7 -15
  447. package/cjs/storage/options/browser.js.map +1 -1
  448. package/cjs/storage/options/node.js +3 -6
  449. package/cjs/storage/options/node.js.map +1 -1
  450. package/cjs/util/PromiseQueue.js +7 -15
  451. package/cjs/util/PromiseQueue.js.map +1 -1
  452. package/cjs/util/console.js +3 -7
  453. package/cjs/util/console.js.map +1 -1
  454. package/cjs/util/index.js +0 -11
  455. package/cjs/util/index.js.map +1 -1
  456. package/cjs/util/misc.js +3 -8
  457. package/cjs/util/misc.js.map +1 -1
  458. package/cjs/util/object.js +9 -23
  459. package/cjs/util/object.js.map +1 -1
  460. package/cjs/util/types.js +1 -5
  461. package/cjs/util/types.js.map +1 -1
  462. package/cjs/util/url.js +5 -14
  463. package/cjs/util/url.js.map +1 -1
  464. package/dist/okta-auth-js.authn.min.analyzer.html +3 -3
  465. package/dist/okta-auth-js.authn.min.js +1 -1
  466. package/dist/okta-auth-js.authn.min.js.LICENSE.txt +2 -0
  467. package/dist/okta-auth-js.authn.min.js.map +1 -1
  468. package/dist/okta-auth-js.core.min.analyzer.html +3 -3
  469. package/dist/okta-auth-js.core.min.js +1 -1
  470. package/dist/okta-auth-js.core.min.js.LICENSE.txt +2 -0
  471. package/dist/okta-auth-js.core.min.js.map +1 -1
  472. package/dist/okta-auth-js.idx.min.analyzer.html +3 -3
  473. package/dist/okta-auth-js.idx.min.js +1 -1
  474. package/dist/okta-auth-js.idx.min.js.LICENSE.txt +2 -0
  475. package/dist/okta-auth-js.idx.min.js.map +1 -1
  476. package/dist/okta-auth-js.min.analyzer.html +3 -3
  477. package/dist/okta-auth-js.min.js +1 -1
  478. package/dist/okta-auth-js.min.js.LICENSE.txt +2 -0
  479. package/dist/okta-auth-js.min.js.map +1 -1
  480. package/dist/okta-auth-js.myaccount.min.analyzer.html +3 -3
  481. package/dist/okta-auth-js.myaccount.min.js +1 -1
  482. package/dist/okta-auth-js.myaccount.min.js.LICENSE.txt +2 -0
  483. package/dist/okta-auth-js.myaccount.min.js.map +1 -1
  484. package/dist/okta-auth-js.polyfill.js +1 -1
  485. package/dist/okta-auth-js.polyfill.js.map +1 -1
  486. package/esm/browser/http/OktaUserAgent.js +2 -2
  487. package/esm/browser/http/request.js +56 -23
  488. package/esm/browser/http/request.js.map +1 -1
  489. package/esm/browser/idx/interact.js +2 -2
  490. package/esm/browser/idx/interact.js.map +1 -1
  491. package/esm/browser/idx/run.js +2 -1
  492. package/esm/browser/idx/run.js.map +1 -1
  493. package/esm/browser/idx/transactionMeta.js +3 -2
  494. package/esm/browser/idx/transactionMeta.js.map +1 -1
  495. package/esm/browser/idx/types/idx-js.js.map +1 -1
  496. package/esm/browser/myaccount/request.js +2 -43
  497. package/esm/browser/myaccount/request.js.map +1 -1
  498. package/esm/browser/oidc/endpoints/authorize.js +1 -0
  499. package/esm/browser/oidc/endpoints/authorize.js.map +1 -1
  500. package/esm/browser/oidc/exchangeCodeForTokens.js +2 -1
  501. package/esm/browser/oidc/exchangeCodeForTokens.js.map +1 -1
  502. package/esm/browser/oidc/handleOAuthResponse.js +17 -16
  503. package/esm/browser/oidc/handleOAuthResponse.js.map +1 -1
  504. package/esm/browser/oidc/options/OAuthOptionsConstructor.js +2 -0
  505. package/esm/browser/oidc/options/OAuthOptionsConstructor.js.map +1 -1
  506. package/esm/browser/oidc/util/defaultTokenParams.js +3 -1
  507. package/esm/browser/oidc/util/defaultTokenParams.js.map +1 -1
  508. package/esm/browser/oidc/util/oauthMeta.js +1 -0
  509. package/esm/browser/oidc/util/oauthMeta.js.map +1 -1
  510. package/esm/browser/oidc/util/validateClaims.js +9 -4
  511. package/esm/browser/oidc/util/validateClaims.js.map +1 -1
  512. package/esm/browser/oidc/verifyToken.js +2 -2
  513. package/esm/browser/oidc/verifyToken.js.map +1 -1
  514. package/esm/browser/package.json +1 -1
  515. package/esm/node/http/OktaUserAgent.js +2 -2
  516. package/esm/node/http/request.js +56 -23
  517. package/esm/node/http/request.js.map +1 -1
  518. package/esm/node/idx/interact.js +2 -2
  519. package/esm/node/idx/interact.js.map +1 -1
  520. package/esm/node/idx/run.js +2 -1
  521. package/esm/node/idx/run.js.map +1 -1
  522. package/esm/node/idx/transactionMeta.js +3 -2
  523. package/esm/node/idx/transactionMeta.js.map +1 -1
  524. package/esm/node/idx/types/idx-js.js.map +1 -1
  525. package/esm/node/myaccount/request.js +2 -43
  526. package/esm/node/myaccount/request.js.map +1 -1
  527. package/esm/node/oidc/endpoints/authorize.js +1 -0
  528. package/esm/node/oidc/endpoints/authorize.js.map +1 -1
  529. package/esm/node/oidc/exchangeCodeForTokens.js +2 -1
  530. package/esm/node/oidc/exchangeCodeForTokens.js.map +1 -1
  531. package/esm/node/oidc/handleOAuthResponse.js +17 -16
  532. package/esm/node/oidc/handleOAuthResponse.js.map +1 -1
  533. package/esm/node/oidc/options/OAuthOptionsConstructor.js +2 -0
  534. package/esm/node/oidc/options/OAuthOptionsConstructor.js.map +1 -1
  535. package/esm/node/oidc/util/defaultTokenParams.js +3 -1
  536. package/esm/node/oidc/util/defaultTokenParams.js.map +1 -1
  537. package/esm/node/oidc/util/oauthMeta.js +1 -0
  538. package/esm/node/oidc/util/oauthMeta.js.map +1 -1
  539. package/esm/node/oidc/util/validateClaims.js +9 -4
  540. package/esm/node/oidc/util/validateClaims.js.map +1 -1
  541. package/esm/node/oidc/verifyToken.js +2 -2
  542. package/esm/node/oidc/verifyToken.js.map +1 -1
  543. package/esm/node/package.json +1 -1
  544. package/package.json +12 -13
  545. package/polyfill/index.js +8 -5
  546. package/types/lib/core/options.d.ts +2 -0
  547. package/types/lib/idx/interact.d.ts +1 -0
  548. package/types/lib/idx/options.d.ts +2 -0
  549. package/types/lib/idx/types/idx-js.d.ts +4 -0
  550. package/types/lib/idx/types/meta.d.ts +1 -0
  551. package/types/lib/idx/types/options.d.ts +1 -0
  552. package/types/lib/oidc/options/OAuthOptionsConstructor.d.ts +2 -0
  553. package/types/lib/oidc/types/UserClaims.d.ts +1 -0
  554. package/types/lib/oidc/types/api.d.ts +1 -0
  555. package/types/lib/oidc/types/meta.d.ts +1 -1
  556. package/types/lib/oidc/types/options.d.ts +2 -1
  557. package/types/lib/oidc/types/proto.d.ts +1 -0
  558. package/umd/authn.js +1 -1
  559. package/umd/authn.js.LICENSE.txt +2 -0
  560. package/umd/authn.js.map +1 -1
  561. package/umd/core.js +1 -1
  562. package/umd/core.js.LICENSE.txt +2 -0
  563. package/umd/core.js.map +1 -1
  564. package/umd/default.js +1 -1
  565. package/umd/default.js.LICENSE.txt +2 -0
  566. package/umd/default.js.map +1 -1
  567. package/umd/idx.js +1 -1
  568. package/umd/idx.js.LICENSE.txt +2 -0
  569. package/umd/idx.js.map +1 -1
  570. package/umd/myaccount.js +1 -1
  571. package/umd/myaccount.js.LICENSE.txt +2 -0
  572. package/umd/myaccount.js.map +1 -1
package/cjs/idx/util.js CHANGED
@@ -11,19 +11,12 @@ exports.getNextStep = getNextStep;
11
11
  exports.getRemediator = getRemediator;
12
12
  exports.handleFailedResponse = handleFailedResponse;
13
13
  exports.isTerminalResponse = isTerminalResponse;
14
-
15
14
  var _util = require("../util");
16
-
17
15
  var remediators = _interopRequireWildcard(require("./remediators"));
18
-
19
16
  var _GenericRemediator = require("./remediators/GenericRemediator");
20
-
21
17
  var _types = require("./types");
22
-
23
18
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
-
25
19
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
26
-
27
20
  function isTerminalResponse(idxResponse) {
28
21
  const {
29
22
  neededToProceed,
@@ -31,127 +24,106 @@ function isTerminalResponse(idxResponse) {
31
24
  } = idxResponse;
32
25
  return !neededToProceed.length && !interactionCode;
33
26
  }
34
-
35
27
  function canSkipFn(idxResponse) {
36
28
  return idxResponse.neededToProceed.some(({
37
29
  name
38
30
  }) => name === 'skip');
39
31
  }
40
-
41
32
  function canResendFn(idxResponse) {
42
33
  return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));
43
34
  }
44
-
45
35
  function getMessagesFromIdxRemediationValue(value) {
46
36
  if (!value || !Array.isArray(value)) {
47
37
  return;
48
38
  }
49
-
50
39
  return value.reduce((messages, value) => {
51
40
  if (value.messages) {
52
41
  messages = [...messages, ...value.messages.value];
53
42
  }
54
-
55
43
  if (value.form) {
56
44
  const messagesFromForm = getMessagesFromIdxRemediationValue(value.form.value) || [];
57
45
  messages = [...messages, ...messagesFromForm];
58
46
  }
59
-
60
47
  if (value.options) {
61
48
  let optionValues = [];
62
49
  value.options.forEach(option => {
63
50
  if (!option.value || typeof option.value === 'string') {
64
51
  return;
65
52
  }
66
-
67
53
  optionValues = [...optionValues, option.value];
68
54
  });
69
55
  const messagesFromOptions = getMessagesFromIdxRemediationValue(optionValues) || [];
70
56
  messages = [...messages, ...messagesFromOptions];
71
57
  }
72
-
73
58
  return messages;
74
59
  }, []);
75
60
  }
76
-
77
61
  function getMessagesFromResponse(idxResponse, options) {
78
62
  var _rawIdxState$messages;
79
-
80
63
  let messages = [];
81
64
  const {
82
65
  rawIdxState,
83
66
  neededToProceed
84
- } = idxResponse; // Handle global messages
67
+ } = idxResponse;
85
68
 
69
+ // Handle global messages
86
70
  const globalMessages = (_rawIdxState$messages = rawIdxState.messages) === null || _rawIdxState$messages === void 0 ? void 0 : _rawIdxState$messages.value.map(message => message);
87
-
88
71
  if (globalMessages) {
89
72
  messages = [...messages, ...globalMessages];
90
- } // Handle field messages for current flow
73
+ }
74
+
75
+ // Handle field messages for current flow
91
76
  // Preserve existing logic for general cases, remove in the next major version
92
77
  // Follow ion response format for top level messages when useGenericRemediator is true
93
-
94
-
95
78
  if (!options.useGenericRemediator) {
96
79
  for (let remediation of neededToProceed) {
97
80
  const fieldMessages = getMessagesFromIdxRemediationValue(remediation.value);
98
-
99
81
  if (fieldMessages) {
100
82
  messages = [...messages, ...fieldMessages];
101
83
  }
102
84
  }
103
- } // API may return identical error on same field, filter by i18n key
104
-
85
+ }
105
86
 
87
+ // API may return identical error on same field, filter by i18n key
106
88
  const seen = {};
107
89
  messages = messages.reduce((filtered, message) => {
108
90
  var _message$i18n;
109
-
110
91
  const key = (_message$i18n = message.i18n) === null || _message$i18n === void 0 ? void 0 : _message$i18n.key;
111
-
112
92
  if (key && seen[key]) {
113
93
  return filtered;
114
94
  }
115
-
116
95
  seen[key] = message;
117
96
  filtered = [...filtered, message];
118
97
  return filtered;
119
98
  }, []);
120
99
  return messages;
121
100
  }
122
-
123
101
  function getEnabledFeatures(idxResponse) {
124
102
  const res = [];
125
103
  const {
126
104
  actions,
127
105
  neededToProceed
128
106
  } = idxResponse;
129
-
130
107
  if (actions['currentAuthenticator-recover']) {
131
108
  res.push(_types.IdxFeature.PASSWORD_RECOVERY);
132
109
  }
133
-
134
110
  if (neededToProceed.some(({
135
111
  name
136
112
  }) => name === 'select-enroll-profile')) {
137
113
  res.push(_types.IdxFeature.REGISTRATION);
138
114
  }
139
-
140
115
  if (neededToProceed.some(({
141
116
  name
142
117
  }) => name === 'redirect-idp')) {
143
118
  res.push(_types.IdxFeature.SOCIAL_IDP);
144
119
  }
145
-
146
120
  if (neededToProceed.some(({
147
121
  name
148
122
  }) => name === 'unlock-account')) {
149
123
  res.push(_types.IdxFeature.ACCOUNT_UNLOCK);
150
124
  }
151
-
152
125
  return res;
153
126
  }
154
-
155
127
  function getAvailableSteps(authClient, idxResponse, useGenericRemediator) {
156
128
  const res = [];
157
129
  const remediatorMap = Object.values(remediators).reduce((map, remediatorClass) => {
@@ -159,22 +131,18 @@ function getAvailableSteps(authClient, idxResponse, useGenericRemediator) {
159
131
  if (remediatorClass.remediationName) {
160
132
  map[remediatorClass.remediationName] = remediatorClass;
161
133
  }
162
-
163
134
  return map;
164
135
  }, {});
165
-
166
136
  for (let remediation of idxResponse.neededToProceed) {
167
137
  const T = getRemediatorClass(remediation, {
168
138
  useGenericRemediator,
169
139
  remediators: remediatorMap
170
140
  });
171
-
172
141
  if (T) {
173
142
  const remediator = new T(remediation);
174
143
  res.push(remediator.getNextStep(authClient, idxResponse.context));
175
144
  }
176
145
  }
177
-
178
146
  for (const [name] of Object.entries(idxResponse.actions || {})) {
179
147
  let stepObj = {
180
148
  name,
@@ -187,14 +155,11 @@ function getAvailableSteps(authClient, idxResponse, useGenericRemediator) {
187
155
  });
188
156
  }
189
157
  };
190
-
191
158
  if (name.startsWith('currentAuthenticator')) {
192
159
  var _actionObj$value;
193
-
194
160
  const [part1, part2] = (0, _util.split2)(name, '-');
195
161
  const actionObj = idxResponse.rawIdxState[part1].value[part2];
196
162
  /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */
197
-
198
163
  const {
199
164
  href,
200
165
  method,
@@ -204,39 +169,34 @@ function getAvailableSteps(authClient, idxResponse, useGenericRemediator) {
204
169
  ...rest
205
170
  } = actionObj;
206
171
  /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */
207
-
208
172
  const value = (_actionObj$value = actionObj.value) === null || _actionObj$value === void 0 ? void 0 : _actionObj$value.filter(item => item.name !== 'stateHandle');
209
- stepObj = { ...rest,
173
+ stepObj = {
174
+ ...rest,
210
175
  ...(value && {
211
176
  value
212
177
  }),
213
178
  ...stepObj
214
179
  };
215
180
  }
216
-
217
181
  res.push(stepObj);
218
182
  }
219
-
220
183
  return res;
221
184
  }
222
-
223
185
  function filterValuesForRemediation(idxResponse, remediationName, values) {
224
186
  const remediations = idxResponse.neededToProceed || [];
225
187
  const remediation = remediations.find(r => r.name === remediationName);
226
-
227
188
  if (!remediation) {
228
189
  // step was specified, but remediation was not found. This is unexpected!
229
190
  (0, _util.warn)(`filterValuesForRemediation: "${remediationName}" did not match any remediations`);
230
191
  return values;
231
- } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
232
-
192
+ }
233
193
 
194
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
234
195
  const valuesForRemediation = remediation.value.reduce((res, entry) => {
235
196
  const {
236
197
  name,
237
198
  value
238
199
  } = entry;
239
-
240
200
  if (name === 'stateHandle') {
241
201
  res[name] = value; // use the stateHandle value in the remediation
242
202
  } else {
@@ -247,39 +207,35 @@ function filterValuesForRemediation(idxResponse, remediationName, values) {
247
207
  }, {});
248
208
  return valuesForRemediation;
249
209
  }
250
-
251
210
  function getRemediatorClass(remediation, options) {
252
211
  const {
253
212
  useGenericRemediator,
254
213
  remediators
255
214
  } = options;
256
-
257
215
  if (!remediation) {
258
216
  return undefined;
259
217
  }
260
-
261
218
  if (useGenericRemediator) {
262
219
  return _GenericRemediator.GenericRemediator;
263
- } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
264
-
220
+ }
265
221
 
222
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
266
223
  return remediators[remediation.name];
267
- } // Return first match idxRemediation in allowed remediators
268
- // eslint-disable-next-line complexity
269
-
224
+ }
270
225
 
226
+ // Return first match idxRemediation in allowed remediators
227
+ // eslint-disable-next-line complexity
271
228
  function getRemediator(idxRemediations, values, options) {
272
229
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
273
230
  const remediators = options.remediators;
274
231
  const useGenericRemediator = options.useGenericRemediator;
275
- let remediator; // remediation name specified by caller - fast-track remediator lookup
276
-
232
+ let remediator;
233
+ // remediation name specified by caller - fast-track remediator lookup
277
234
  if (options.step) {
278
235
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
279
236
  const remediation = idxRemediations.find(({
280
237
  name
281
238
  }) => name === options.step);
282
-
283
239
  if (remediation) {
284
240
  const T = getRemediatorClass(remediation, options);
285
241
  return T ? new T(remediation, values, options) : undefined;
@@ -289,43 +245,37 @@ function getRemediator(idxRemediations, values, options) {
289
245
  return;
290
246
  }
291
247
  }
292
-
293
248
  const remediatorCandidates = [];
294
-
295
249
  if (useGenericRemediator) {
296
250
  // always pick the first remediation for when use GenericRemediator
297
251
  remediatorCandidates.push(new _GenericRemediator.GenericRemediator(idxRemediations[0], values, options));
298
252
  } else {
299
253
  for (let remediation of idxRemediations) {
300
254
  const isRemeditionInFlow = Object.keys(remediators).includes(remediation.name);
301
-
302
255
  if (!isRemeditionInFlow) {
303
256
  continue;
304
- } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
305
-
257
+ }
306
258
 
259
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
307
260
  const T = getRemediatorClass(remediation, options);
308
261
  remediator = new T(remediation, values, options);
309
-
310
262
  if (remediator.canRemediate()) {
311
263
  // found the remediator
312
264
  return remediator;
313
- } // remediator cannot handle the current values
265
+ }
266
+ // remediator cannot handle the current values
314
267
  // maybe return for next step
315
-
316
-
317
268
  remediatorCandidates.push(remediator);
318
269
  }
319
270
  }
320
-
321
271
  return remediatorCandidates[0];
322
272
  }
323
-
324
273
  function getNextStep(authClient, remediator, idxResponse) {
325
274
  const nextStep = remediator.getNextStep(authClient, idxResponse.context);
326
275
  const canSkip = canSkipFn(idxResponse);
327
276
  const canResend = canResendFn(idxResponse);
328
- return { ...nextStep,
277
+ return {
278
+ ...nextStep,
329
279
  ...(canSkip && {
330
280
  canSkip
331
281
  }),
@@ -334,11 +284,9 @@ function getNextStep(authClient, remediator, idxResponse) {
334
284
  })
335
285
  };
336
286
  }
337
-
338
287
  function handleFailedResponse(authClient, idxResponse, options = {}) {
339
288
  const terminal = isTerminalResponse(idxResponse);
340
289
  const messages = getMessagesFromResponse(idxResponse, options);
341
-
342
290
  if (terminal) {
343
291
  return {
344
292
  idxResponse,
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","names":["isTerminalResponse","idxResponse","neededToProceed","interactionCode","length","canSkipFn","some","name","canResendFn","Object","keys","actions","actionName","includes","getMessagesFromIdxRemediationValue","value","Array","isArray","reduce","messages","form","messagesFromForm","options","optionValues","forEach","option","messagesFromOptions","getMessagesFromResponse","rawIdxState","globalMessages","map","message","useGenericRemediator","remediation","fieldMessages","seen","filtered","key","i18n","getEnabledFeatures","res","push","IdxFeature","PASSWORD_RECOVERY","REGISTRATION","SOCIAL_IDP","ACCOUNT_UNLOCK","getAvailableSteps","authClient","remediatorMap","values","remediators","remediatorClass","remediationName","T","getRemediatorClass","remediator","getNextStep","context","entries","stepObj","action","params","idx","proceed","startsWith","part1","part2","split2","actionObj","href","method","rel","accepts","produces","rest","filter","item","filterValuesForRemediation","remediations","find","r","warn","valuesForRemediation","entry","undefined","GenericRemediator","getRemediator","idxRemediations","step","remediatorCandidates","isRemeditionInFlow","canRemediate","nextStep","canSkip","canResend","handleFailedResponse","terminal"],"sources":["../../../lib/idx/util.ts"],"sourcesContent":["import { warn, split2 } from '../util';\nimport * as remediators from './remediators';\nimport { RemediationValues, Remediator, RemediatorConstructor } from './remediators';\nimport { GenericRemediator } from './remediators/GenericRemediator';\nimport { OktaAuthIdxInterface, IdxFeature, NextStep, RemediateOptions, RemediationResponse, RunOptions } from './types';\nimport { IdxMessage, IdxRemediation, IdxRemediationValue, IdxResponse } from './types/idx-js';\n\nexport function isTerminalResponse(idxResponse: IdxResponse) {\n const { neededToProceed, interactionCode } = idxResponse;\n return !neededToProceed.length && !interactionCode;\n}\n\nexport function canSkipFn(idxResponse: IdxResponse) {\n return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nexport function canResendFn(idxResponse: IdxResponse) {\n return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nexport function getMessagesFromIdxRemediationValue(\n value?: IdxRemediationValue[]\n): IdxMessage[] | undefined {\n if (!value || !Array.isArray(value)) {\n return;\n }\n return value.reduce((messages, value) => {\n if (value.messages) {\n messages = [...messages, ...value.messages.value] as never;\n }\n if (value.form) {\n const messagesFromForm = getMessagesFromIdxRemediationValue(value.form.value) || [];\n messages = [...messages, ...messagesFromForm] as never;\n } \n if (value.options) {\n let optionValues = [];\n value.options.forEach(option => {\n if (!option.value || typeof option.value === 'string') {\n return;\n }\n optionValues = [...optionValues, option.value] as never;\n });\n const messagesFromOptions = getMessagesFromIdxRemediationValue(optionValues) || [];\n messages = [...messages, ...messagesFromOptions] as never;\n }\n return messages;\n }, []);\n}\n\nexport function getMessagesFromResponse(idxResponse: IdxResponse, options: RunOptions): IdxMessage[] {\n let messages: IdxMessage[] = [];\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 // Preserve existing logic for general cases, remove in the next major version\n // Follow ion response format for top level messages when useGenericRemediator is true\n if (!options.useGenericRemediator) {\n for (let remediation of neededToProceed) {\n const fieldMessages = getMessagesFromIdxRemediationValue(remediation.value);\n if (fieldMessages) {\n messages = [...messages, ...fieldMessages] as never;\n }\n }\n }\n\n // API may return identical error on same field, filter by i18n key\n const seen = {};\n messages = messages.reduce((filtered, message) => {\n const key = message.i18n?.key;\n if (key && seen[key]) {\n return filtered;\n }\n seen[key] = message;\n filtered = [...filtered, message] as never;\n return filtered;\n }, []);\n return messages;\n}\n\n\nexport function getEnabledFeatures(idxResponse: IdxResponse): IdxFeature[] {\n const res = [];\n const { actions, neededToProceed } = idxResponse;\n\n if (actions['currentAuthenticator-recover']) {\n res.push(IdxFeature.PASSWORD_RECOVERY as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'select-enroll-profile')) {\n res.push(IdxFeature.REGISTRATION as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'redirect-idp')) {\n res.push(IdxFeature.SOCIAL_IDP as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'unlock-account')) {\n res.push(IdxFeature.ACCOUNT_UNLOCK as never);\n }\n\n return res;\n}\n\nexport function getAvailableSteps(\n authClient: OktaAuthIdxInterface, \n idxResponse: IdxResponse, \n useGenericRemediator?: boolean\n): NextStep[] {\n const res: NextStep[] = [];\n\n const remediatorMap: Record<string, RemediatorConstructor> = Object.values(remediators)\n .reduce((map, remediatorClass) => {\n // Only add concrete subclasses to the map\n if (remediatorClass.remediationName) {\n map[remediatorClass.remediationName] = remediatorClass;\n }\n return map;\n }, {});\n\n for (let remediation of idxResponse.neededToProceed) {\n const T = getRemediatorClass(remediation, { useGenericRemediator, remediators: remediatorMap });\n if (T) {\n const remediator: Remediator = new T(remediation);\n res.push (remediator.getNextStep(authClient, idxResponse.context) as never);\n }\n }\n\n for (const [name] of Object.entries((idxResponse.actions || {}))) {\n let stepObj = {\n name, \n action: async (params?) => {\n return authClient.idx.proceed({ \n actions: [{ name, params }] \n });\n }\n };\n if (name.startsWith('currentAuthenticator')) {\n const [part1, part2] = split2(name, '-');\n const actionObj = idxResponse.rawIdxState[part1].value[part2];\n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n const {\n href, \n method, \n rel, \n accepts, \n produces, \n ...rest\n } = actionObj;\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n const value = actionObj.value?.filter(item => item.name !== 'stateHandle');\n stepObj = { \n ...rest, \n ...(value && { value }),\n ...stepObj,\n };\n }\n res.push(stepObj);\n }\n\n return res;\n}\n\nexport function filterValuesForRemediation(\n idxResponse: IdxResponse,\n remediationName: string,\n values: RemediationValues\n): RemediationValues {\n const remediations = idxResponse.neededToProceed || [];\n const remediation = remediations.find(r => r.name === remediationName);\n if (!remediation) {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`filterValuesForRemediation: \"${remediationName}\" did not match any remediations`);\n return values;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const valuesForRemediation = remediation.value!.reduce((res, entry) => {\n const { name, value } = entry;\n if (name === 'stateHandle') {\n res[name] = value; // use the stateHandle value in the remediation\n } else {\n res[name] = values[name]; // use the value provided by the caller\n }\n return res;\n }, {});\n return valuesForRemediation;\n}\n\nfunction getRemediatorClass(remediation: IdxRemediation, options: RemediateOptions) {\n const { useGenericRemediator, remediators } = options;\n \n if (!remediation) {\n return undefined;\n }\n\n if (useGenericRemediator) {\n return GenericRemediator;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return remediators![remediation.name];\n}\n\n// Return first match idxRemediation in allowed remediators\n// eslint-disable-next-line complexity\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 const useGenericRemediator = options.useGenericRemediator;\n\n let remediator: 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 = getRemediatorClass(remediation, options);\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: Remediator[] = [];\n if (useGenericRemediator) {\n // always pick the first remediation for when use GenericRemediator\n remediatorCandidates.push(new GenericRemediator(idxRemediations[0], values, options));\n } else {\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 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const T = getRemediatorClass(remediation, options)!;\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); \n }\n }\n \n return remediatorCandidates[0];\n}\n\n\nexport function getNextStep(\n authClient: OktaAuthIdxInterface, remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep(authClient, 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\nexport function handleFailedResponse(\n authClient: OktaAuthIdxInterface,\n idxResponse: IdxResponse,\n options = {}\n): RemediationResponse {\n const terminal = isTerminalResponse(idxResponse);\n const messages = getMessagesFromResponse(idxResponse, options);\n if (terminal) {\n return { idxResponse, terminal, messages };\n } else {\n const remediator = getRemediator(idxResponse.neededToProceed, {}, options);\n const nextStep = remediator && getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n messages,\n ...(nextStep && { nextStep }),\n };\n }\n \n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"util.js","names":["isTerminalResponse","idxResponse","neededToProceed","interactionCode","length","canSkipFn","some","name","canResendFn","Object","keys","actions","actionName","includes","getMessagesFromIdxRemediationValue","value","Array","isArray","reduce","messages","form","messagesFromForm","options","optionValues","forEach","option","messagesFromOptions","getMessagesFromResponse","rawIdxState","globalMessages","map","message","useGenericRemediator","remediation","fieldMessages","seen","filtered","key","i18n","getEnabledFeatures","res","push","IdxFeature","PASSWORD_RECOVERY","REGISTRATION","SOCIAL_IDP","ACCOUNT_UNLOCK","getAvailableSteps","authClient","remediatorMap","values","remediators","remediatorClass","remediationName","T","getRemediatorClass","remediator","getNextStep","context","entries","stepObj","action","params","idx","proceed","startsWith","part1","part2","split2","actionObj","href","method","rel","accepts","produces","rest","filter","item","filterValuesForRemediation","remediations","find","r","warn","valuesForRemediation","entry","undefined","GenericRemediator","getRemediator","idxRemediations","step","remediatorCandidates","isRemeditionInFlow","canRemediate","nextStep","canSkip","canResend","handleFailedResponse","terminal"],"sources":["../../../lib/idx/util.ts"],"sourcesContent":["import { warn, split2 } from '../util';\nimport * as remediators from './remediators';\nimport { RemediationValues, Remediator, RemediatorConstructor } from './remediators';\nimport { GenericRemediator } from './remediators/GenericRemediator';\nimport { OktaAuthIdxInterface, IdxFeature, NextStep, RemediateOptions, RemediationResponse, RunOptions } from './types';\nimport { IdxMessage, IdxRemediation, IdxRemediationValue, IdxResponse } from './types/idx-js';\n\nexport function isTerminalResponse(idxResponse: IdxResponse) {\n const { neededToProceed, interactionCode } = idxResponse;\n return !neededToProceed.length && !interactionCode;\n}\n\nexport function canSkipFn(idxResponse: IdxResponse) {\n return idxResponse.neededToProceed.some(({ name }) => name === 'skip');\n}\n\nexport function canResendFn(idxResponse: IdxResponse) {\n return Object.keys(idxResponse.actions).some(actionName => actionName.includes('resend'));\n}\n\nexport function getMessagesFromIdxRemediationValue(\n value?: IdxRemediationValue[]\n): IdxMessage[] | undefined {\n if (!value || !Array.isArray(value)) {\n return;\n }\n return value.reduce((messages, value) => {\n if (value.messages) {\n messages = [...messages, ...value.messages.value] as never;\n }\n if (value.form) {\n const messagesFromForm = getMessagesFromIdxRemediationValue(value.form.value) || [];\n messages = [...messages, ...messagesFromForm] as never;\n } \n if (value.options) {\n let optionValues = [];\n value.options.forEach(option => {\n if (!option.value || typeof option.value === 'string') {\n return;\n }\n optionValues = [...optionValues, option.value] as never;\n });\n const messagesFromOptions = getMessagesFromIdxRemediationValue(optionValues) || [];\n messages = [...messages, ...messagesFromOptions] as never;\n }\n return messages;\n }, []);\n}\n\nexport function getMessagesFromResponse(idxResponse: IdxResponse, options: RunOptions): IdxMessage[] {\n let messages: IdxMessage[] = [];\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 // Preserve existing logic for general cases, remove in the next major version\n // Follow ion response format for top level messages when useGenericRemediator is true\n if (!options.useGenericRemediator) {\n for (let remediation of neededToProceed) {\n const fieldMessages = getMessagesFromIdxRemediationValue(remediation.value);\n if (fieldMessages) {\n messages = [...messages, ...fieldMessages] as never;\n }\n }\n }\n\n // API may return identical error on same field, filter by i18n key\n const seen = {};\n messages = messages.reduce((filtered, message) => {\n const key = message.i18n?.key;\n if (key && seen[key]) {\n return filtered;\n }\n seen[key] = message;\n filtered = [...filtered, message] as never;\n return filtered;\n }, []);\n return messages;\n}\n\n\nexport function getEnabledFeatures(idxResponse: IdxResponse): IdxFeature[] {\n const res = [];\n const { actions, neededToProceed } = idxResponse;\n\n if (actions['currentAuthenticator-recover']) {\n res.push(IdxFeature.PASSWORD_RECOVERY as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'select-enroll-profile')) {\n res.push(IdxFeature.REGISTRATION as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'redirect-idp')) {\n res.push(IdxFeature.SOCIAL_IDP as never);\n }\n\n if (neededToProceed.some(({ name }) => name === 'unlock-account')) {\n res.push(IdxFeature.ACCOUNT_UNLOCK as never);\n }\n\n return res;\n}\n\nexport function getAvailableSteps(\n authClient: OktaAuthIdxInterface, \n idxResponse: IdxResponse, \n useGenericRemediator?: boolean\n): NextStep[] {\n const res: NextStep[] = [];\n\n const remediatorMap: Record<string, RemediatorConstructor> = Object.values(remediators)\n .reduce((map, remediatorClass) => {\n // Only add concrete subclasses to the map\n if (remediatorClass.remediationName) {\n map[remediatorClass.remediationName] = remediatorClass;\n }\n return map;\n }, {});\n\n for (let remediation of idxResponse.neededToProceed) {\n const T = getRemediatorClass(remediation, { useGenericRemediator, remediators: remediatorMap });\n if (T) {\n const remediator: Remediator = new T(remediation);\n res.push (remediator.getNextStep(authClient, idxResponse.context) as never);\n }\n }\n\n for (const [name] of Object.entries((idxResponse.actions || {}))) {\n let stepObj = {\n name, \n action: async (params?) => {\n return authClient.idx.proceed({ \n actions: [{ name, params }] \n });\n }\n };\n if (name.startsWith('currentAuthenticator')) {\n const [part1, part2] = split2(name, '-');\n const actionObj = idxResponse.rawIdxState[part1].value[part2];\n /* eslint-disable no-unused-vars, @typescript-eslint/no-unused-vars */\n const {\n href, \n method, \n rel, \n accepts, \n produces, \n ...rest\n } = actionObj;\n /* eslint-enable no-unused-vars, @typescript-eslint/no-unused-vars */\n const value = actionObj.value?.filter(item => item.name !== 'stateHandle');\n stepObj = { \n ...rest, \n ...(value && { value }),\n ...stepObj,\n };\n }\n res.push(stepObj);\n }\n\n return res;\n}\n\nexport function filterValuesForRemediation(\n idxResponse: IdxResponse,\n remediationName: string,\n values: RemediationValues\n): RemediationValues {\n const remediations = idxResponse.neededToProceed || [];\n const remediation = remediations.find(r => r.name === remediationName);\n if (!remediation) {\n // step was specified, but remediation was not found. This is unexpected!\n warn(`filterValuesForRemediation: \"${remediationName}\" did not match any remediations`);\n return values;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const valuesForRemediation = remediation.value!.reduce((res, entry) => {\n const { name, value } = entry;\n if (name === 'stateHandle') {\n res[name] = value; // use the stateHandle value in the remediation\n } else {\n res[name] = values[name]; // use the value provided by the caller\n }\n return res;\n }, {});\n return valuesForRemediation;\n}\n\nfunction getRemediatorClass(remediation: IdxRemediation, options: RemediateOptions) {\n const { useGenericRemediator, remediators } = options;\n \n if (!remediation) {\n return undefined;\n }\n\n if (useGenericRemediator) {\n return GenericRemediator;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return remediators![remediation.name];\n}\n\n// Return first match idxRemediation in allowed remediators\n// eslint-disable-next-line complexity\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 const useGenericRemediator = options.useGenericRemediator;\n\n let remediator: 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 = getRemediatorClass(remediation, options);\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: Remediator[] = [];\n if (useGenericRemediator) {\n // always pick the first remediation for when use GenericRemediator\n remediatorCandidates.push(new GenericRemediator(idxRemediations[0], values, options));\n } else {\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 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const T = getRemediatorClass(remediation, options)!;\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); \n }\n }\n \n return remediatorCandidates[0];\n}\n\n\nexport function getNextStep(\n authClient: OktaAuthIdxInterface, remediator: Remediator, idxResponse: IdxResponse\n): NextStep {\n const nextStep = remediator.getNextStep(authClient, 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\nexport function handleFailedResponse(\n authClient: OktaAuthIdxInterface,\n idxResponse: IdxResponse,\n options = {}\n): RemediationResponse {\n const terminal = isTerminalResponse(idxResponse);\n const messages = getMessagesFromResponse(idxResponse, options);\n if (terminal) {\n return { idxResponse, terminal, messages };\n } else {\n const remediator = getRemediator(idxResponse.neededToProceed, {}, options);\n const nextStep = remediator && getNextStep(authClient, remediator, idxResponse);\n return {\n idxResponse,\n messages,\n ...(nextStep && { nextStep }),\n };\n }\n \n}\n"],"mappings":"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"}
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  exports.getAttestation = exports.getAssertion = exports.buildCredentialRequestOptions = exports.buildCredentialCreationOptions = void 0;
4
-
5
4
  var _base = require("../crypto/base64");
6
-
7
5
  /*!
8
6
  * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.
9
7
  * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
@@ -15,6 +13,7 @@ var _base = require("../crypto/base64");
15
13
  *
16
14
  * See the License for the specific language governing permissions and limitations under the License.
17
15
  */
16
+
18
17
  // Get known credentials from list of enrolled authenticators
19
18
  const getEnrolledCredentials = (authenticatorEnrollments = []) => {
20
19
  const credentials = [];
@@ -27,10 +26,10 @@ const getEnrolledCredentials = (authenticatorEnrollments = []) => {
27
26
  }
28
27
  });
29
28
  return credentials;
30
- }; // Build options for navigator.credentials.create
31
- // https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/create
32
-
29
+ };
33
30
 
31
+ // Build options for navigator.credentials.create
32
+ // https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/create
34
33
  const buildCredentialCreationOptions = (activationData, authenticatorEnrollments) => {
35
34
  return {
36
35
  publicKey: {
@@ -47,12 +46,11 @@ const buildCredentialCreationOptions = (activationData, authenticatorEnrollments
47
46
  excludeCredentials: getEnrolledCredentials(authenticatorEnrollments)
48
47
  }
49
48
  };
50
- }; // Build options for navigator.credentials.get
51
- // https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/get
52
-
49
+ };
53
50
 
51
+ // Build options for navigator.credentials.get
52
+ // https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/get
54
53
  exports.buildCredentialCreationOptions = buildCredentialCreationOptions;
55
-
56
54
  const buildCredentialRequestOptions = (challengeData, authenticatorEnrollments) => {
57
55
  return {
58
56
  publicKey: {
@@ -61,12 +59,11 @@ const buildCredentialRequestOptions = (challengeData, authenticatorEnrollments)
61
59
  allowCredentials: getEnrolledCredentials(authenticatorEnrollments)
62
60
  }
63
61
  };
64
- }; // Build attestation for webauthn enroll
65
- // https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAttestationResponse
66
-
62
+ };
67
63
 
64
+ // Build attestation for webauthn enroll
65
+ // https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAttestationResponse
68
66
  exports.buildCredentialRequestOptions = buildCredentialRequestOptions;
69
-
70
67
  const getAttestation = credential => {
71
68
  const response = credential.response;
72
69
  const id = credential.id;
@@ -77,12 +74,11 @@ const getAttestation = credential => {
77
74
  clientData,
78
75
  attestation
79
76
  };
80
- }; // Build assertion for webauthn verification
81
- // https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse
82
-
77
+ };
83
78
 
79
+ // Build assertion for webauthn verification
80
+ // https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse
84
81
  exports.getAttestation = getAttestation;
85
-
86
82
  const getAssertion = credential => {
87
83
  const response = credential.response;
88
84
  const id = credential.id;
@@ -96,6 +92,5 @@ const getAssertion = credential => {
96
92
  signatureData
97
93
  };
98
94
  };
99
-
100
95
  exports.getAssertion = getAssertion;
101
96
  //# sourceMappingURL=webauthn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webauthn.js","names":["getEnrolledCredentials","authenticatorEnrollments","credentials","forEach","enrollement","key","push","type","id","base64UrlToBuffer","credentialId","buildCredentialCreationOptions","activationData","publicKey","rp","user","name","displayName","challenge","pubKeyCredParams","attestation","authenticatorSelection","excludeCredentials","buildCredentialRequestOptions","challengeData","userVerification","allowCredentials","getAttestation","credential","response","clientData","bufferToBase64Url","clientDataJSON","attestationObject","getAssertion","authenticatorData","signatureData","signature"],"sources":["../../../lib/idx/webauthn.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { base64UrlToBuffer, bufferToBase64Url } from '../crypto/base64';\nimport {\n ActivationData,\n ChallengeData,\n IdxAuthenticator,\n WebauthnEnrollValues,\n WebauthnVerificationValues\n} from './types';\n\n\nexport interface WebauthnAPI {\n getAssertion(credential: PublicKeyCredential): WebauthnVerificationValues;\n getAttestation(credential: PublicKeyCredential): WebauthnEnrollValues;\n buildCredentialRequestOptions(\n challengeData: ChallengeData, authenticatorEnrollments: IdxAuthenticator[]\n ): CredentialRequestOptions;\n buildCredentialCreationOptions(\n activationData: ActivationData, authenticatorEnrollments: IdxAuthenticator[]\n ): CredentialCreationOptions;\n}\n\n\n// Get known credentials from list of enrolled authenticators\nconst getEnrolledCredentials = (authenticatorEnrollments: IdxAuthenticator[] = []) => {\n const credentials: PublicKeyCredentialDescriptor[] = [];\n authenticatorEnrollments.forEach((enrollement) => {\n if (enrollement.key === 'webauthn') {\n credentials.push({\n type: 'public-key',\n id: base64UrlToBuffer(enrollement.credentialId),\n });\n }\n });\n return credentials;\n};\n\n// Build options for navigator.credentials.create\n// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/create\nexport const buildCredentialCreationOptions = (\n activationData: ActivationData, authenticatorEnrollments: IdxAuthenticator[]\n) => {\n return {\n publicKey: {\n rp: activationData.rp,\n user: {\n id: base64UrlToBuffer(activationData.user.id),\n name: activationData.user.name,\n displayName: activationData.user.displayName\n },\n challenge: base64UrlToBuffer(activationData.challenge),\n pubKeyCredParams: activationData.pubKeyCredParams,\n attestation: activationData.attestation,\n authenticatorSelection: activationData.authenticatorSelection,\n excludeCredentials: getEnrolledCredentials(authenticatorEnrollments),\n }\n } as CredentialCreationOptions;\n};\n\n\n// Build options for navigator.credentials.get\n// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/get\nexport const buildCredentialRequestOptions = (\n challengeData: ChallengeData, authenticatorEnrollments: IdxAuthenticator[]\n) => {\n return {\n publicKey: {\n challenge: base64UrlToBuffer(challengeData.challenge),\n userVerification: challengeData.userVerification,\n allowCredentials: getEnrolledCredentials(authenticatorEnrollments),\n }\n } as CredentialRequestOptions;\n};\n\n// Build attestation for webauthn enroll\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAttestationResponse\nexport const getAttestation = (credential: PublicKeyCredential) => {\n const response = credential.response as AuthenticatorAttestationResponse;\n const id = credential.id;\n const clientData = bufferToBase64Url(response.clientDataJSON);\n const attestation = bufferToBase64Url(response.attestationObject);\n return {\n id,\n clientData,\n attestation\n };\n};\n\n// Build assertion for webauthn verification\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse\nexport const getAssertion = (credential: PublicKeyCredential) => {\n const response = credential.response as AuthenticatorAssertionResponse;\n const id = credential.id;\n const clientData = bufferToBase64Url(response.clientDataJSON);\n const authenticatorData = bufferToBase64Url(response.authenticatorData);\n const signatureData = bufferToBase64Url(response.signature);\n return {\n id,\n clientData,\n authenticatorData,\n signatureData\n };\n};\n"],"mappings":";;;;AAYA;;AAZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAwBA;AACA,MAAMA,sBAAsB,GAAG,CAACC,wBAA4C,GAAG,EAAhD,KAAuD;EACpF,MAAMC,WAA4C,GAAG,EAArD;EACAD,wBAAwB,CAACE,OAAzB,CAAkCC,WAAD,IAAiB;IAChD,IAAIA,WAAW,CAACC,GAAZ,KAAoB,UAAxB,EAAoC;MAClCH,WAAW,CAACI,IAAZ,CAAiB;QACfC,IAAI,EAAE,YADS;QAEfC,EAAE,EAAE,IAAAC,uBAAA,EAAkBL,WAAW,CAACM,YAA9B;MAFW,CAAjB;IAID;EACF,CAPD;EAQA,OAAOR,WAAP;AACD,CAXD,C,CAaA;AACA;;;AACO,MAAMS,8BAA8B,GAAG,CAC5CC,cAD4C,EACZX,wBADY,KAEzC;EACH,OAAO;IACLY,SAAS,EAAE;MACTC,EAAE,EAAEF,cAAc,CAACE,EADV;MAETC,IAAI,EAAE;QACJP,EAAE,EAAE,IAAAC,uBAAA,EAAkBG,cAAc,CAACG,IAAf,CAAoBP,EAAtC,CADA;QAEJQ,IAAI,EAAEJ,cAAc,CAACG,IAAf,CAAoBC,IAFtB;QAGJC,WAAW,EAAEL,cAAc,CAACG,IAAf,CAAoBE;MAH7B,CAFG;MAOTC,SAAS,EAAE,IAAAT,uBAAA,EAAkBG,cAAc,CAACM,SAAjC,CAPF;MAQTC,gBAAgB,EAAEP,cAAc,CAACO,gBARxB;MASTC,WAAW,EAAER,cAAc,CAACQ,WATnB;MAUTC,sBAAsB,EAAET,cAAc,CAACS,sBAV9B;MAWTC,kBAAkB,EAAEtB,sBAAsB,CAACC,wBAAD;IAXjC;EADN,CAAP;AAeD,CAlBM,C,CAqBP;AACA;;;;;AACO,MAAMsB,6BAA6B,GAAG,CAC3CC,aAD2C,EACbvB,wBADa,KAExC;EACH,OAAO;IACLY,SAAS,EAAE;MACTK,SAAS,EAAE,IAAAT,uBAAA,EAAkBe,aAAa,CAACN,SAAhC,CADF;MAETO,gBAAgB,EAAED,aAAa,CAACC,gBAFvB;MAGTC,gBAAgB,EAAE1B,sBAAsB,CAACC,wBAAD;IAH/B;EADN,CAAP;AAOD,CAVM,C,CAYP;AACA;;;;;AACO,MAAM0B,cAAc,GAAIC,UAAD,IAAqC;EACjE,MAAMC,QAAQ,GAAGD,UAAU,CAACC,QAA5B;EACA,MAAMrB,EAAE,GAAGoB,UAAU,CAACpB,EAAtB;EACA,MAAMsB,UAAU,GAAG,IAAAC,uBAAA,EAAkBF,QAAQ,CAACG,cAA3B,CAAnB;EACA,MAAMZ,WAAW,GAAG,IAAAW,uBAAA,EAAkBF,QAAQ,CAACI,iBAA3B,CAApB;EACA,OAAO;IACLzB,EADK;IAELsB,UAFK;IAGLV;EAHK,CAAP;AAKD,CAVM,C,CAYP;AACA;;;;;AACO,MAAMc,YAAY,GAAIN,UAAD,IAAqC;EAC/D,MAAMC,QAAQ,GAAGD,UAAU,CAACC,QAA5B;EACA,MAAMrB,EAAE,GAAGoB,UAAU,CAACpB,EAAtB;EACA,MAAMsB,UAAU,GAAG,IAAAC,uBAAA,EAAkBF,QAAQ,CAACG,cAA3B,CAAnB;EACA,MAAMG,iBAAiB,GAAG,IAAAJ,uBAAA,EAAkBF,QAAQ,CAACM,iBAA3B,CAA1B;EACA,MAAMC,aAAa,GAAG,IAAAL,uBAAA,EAAkBF,QAAQ,CAACQ,SAA3B,CAAtB;EACA,OAAO;IACL7B,EADK;IAELsB,UAFK;IAGLK,iBAHK;IAILC;EAJK,CAAP;AAMD,CAZM"}
1
+ {"version":3,"file":"webauthn.js","names":["getEnrolledCredentials","authenticatorEnrollments","credentials","forEach","enrollement","key","push","type","id","base64UrlToBuffer","credentialId","buildCredentialCreationOptions","activationData","publicKey","rp","user","name","displayName","challenge","pubKeyCredParams","attestation","authenticatorSelection","excludeCredentials","buildCredentialRequestOptions","challengeData","userVerification","allowCredentials","getAttestation","credential","response","clientData","bufferToBase64Url","clientDataJSON","attestationObject","getAssertion","authenticatorData","signatureData","signature"],"sources":["../../../lib/idx/webauthn.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { base64UrlToBuffer, bufferToBase64Url } from '../crypto/base64';\nimport {\n ActivationData,\n ChallengeData,\n IdxAuthenticator,\n WebauthnEnrollValues,\n WebauthnVerificationValues\n} from './types';\n\n\nexport interface WebauthnAPI {\n getAssertion(credential: PublicKeyCredential): WebauthnVerificationValues;\n getAttestation(credential: PublicKeyCredential): WebauthnEnrollValues;\n buildCredentialRequestOptions(\n challengeData: ChallengeData, authenticatorEnrollments: IdxAuthenticator[]\n ): CredentialRequestOptions;\n buildCredentialCreationOptions(\n activationData: ActivationData, authenticatorEnrollments: IdxAuthenticator[]\n ): CredentialCreationOptions;\n}\n\n\n// Get known credentials from list of enrolled authenticators\nconst getEnrolledCredentials = (authenticatorEnrollments: IdxAuthenticator[] = []) => {\n const credentials: PublicKeyCredentialDescriptor[] = [];\n authenticatorEnrollments.forEach((enrollement) => {\n if (enrollement.key === 'webauthn') {\n credentials.push({\n type: 'public-key',\n id: base64UrlToBuffer(enrollement.credentialId),\n });\n }\n });\n return credentials;\n};\n\n// Build options for navigator.credentials.create\n// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/create\nexport const buildCredentialCreationOptions = (\n activationData: ActivationData, authenticatorEnrollments: IdxAuthenticator[]\n) => {\n return {\n publicKey: {\n rp: activationData.rp,\n user: {\n id: base64UrlToBuffer(activationData.user.id),\n name: activationData.user.name,\n displayName: activationData.user.displayName\n },\n challenge: base64UrlToBuffer(activationData.challenge),\n pubKeyCredParams: activationData.pubKeyCredParams,\n attestation: activationData.attestation,\n authenticatorSelection: activationData.authenticatorSelection,\n excludeCredentials: getEnrolledCredentials(authenticatorEnrollments),\n }\n } as CredentialCreationOptions;\n};\n\n\n// Build options for navigator.credentials.get\n// https://developer.mozilla.org/en-US/docs/Web/API/CredentialsContainer/get\nexport const buildCredentialRequestOptions = (\n challengeData: ChallengeData, authenticatorEnrollments: IdxAuthenticator[]\n) => {\n return {\n publicKey: {\n challenge: base64UrlToBuffer(challengeData.challenge),\n userVerification: challengeData.userVerification,\n allowCredentials: getEnrolledCredentials(authenticatorEnrollments),\n }\n } as CredentialRequestOptions;\n};\n\n// Build attestation for webauthn enroll\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAttestationResponse\nexport const getAttestation = (credential: PublicKeyCredential) => {\n const response = credential.response as AuthenticatorAttestationResponse;\n const id = credential.id;\n const clientData = bufferToBase64Url(response.clientDataJSON);\n const attestation = bufferToBase64Url(response.attestationObject);\n return {\n id,\n clientData,\n attestation\n };\n};\n\n// Build assertion for webauthn verification\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse\nexport const getAssertion = (credential: PublicKeyCredential) => {\n const response = credential.response as AuthenticatorAssertionResponse;\n const id = credential.id;\n const clientData = bufferToBase64Url(response.clientDataJSON);\n const authenticatorData = bufferToBase64Url(response.authenticatorData);\n const signatureData = bufferToBase64Url(response.signature);\n return {\n id,\n clientData,\n authenticatorData,\n signatureData\n };\n};\n"],"mappings":";;;AAYA;AAZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAwBA;AACA,MAAMA,sBAAsB,GAAG,CAACC,wBAA4C,GAAG,EAAE,KAAK;EACpF,MAAMC,WAA4C,GAAG,EAAE;EACvDD,wBAAwB,CAACE,OAAO,CAAEC,WAAW,IAAK;IAChD,IAAIA,WAAW,CAACC,GAAG,KAAK,UAAU,EAAE;MAClCH,WAAW,CAACI,IAAI,CAAC;QACfC,IAAI,EAAE,YAAY;QAClBC,EAAE,EAAE,IAAAC,uBAAiB,EAACL,WAAW,CAACM,YAAY;MAChD,CAAC,CAAC;IACJ;EACF,CAAC,CAAC;EACF,OAAOR,WAAW;AACpB,CAAC;;AAED;AACA;AACO,MAAMS,8BAA8B,GAAG,CAC5CC,cAA8B,EAAEX,wBAA4C,KACzE;EACH,OAAO;IACLY,SAAS,EAAE;MACTC,EAAE,EAAEF,cAAc,CAACE,EAAE;MACrBC,IAAI,EAAE;QACJP,EAAE,EAAE,IAAAC,uBAAiB,EAACG,cAAc,CAACG,IAAI,CAACP,EAAE,CAAC;QAC7CQ,IAAI,EAAEJ,cAAc,CAACG,IAAI,CAACC,IAAI;QAC9BC,WAAW,EAAEL,cAAc,CAACG,IAAI,CAACE;MACnC,CAAC;MACDC,SAAS,EAAE,IAAAT,uBAAiB,EAACG,cAAc,CAACM,SAAS,CAAC;MACtDC,gBAAgB,EAAEP,cAAc,CAACO,gBAAgB;MACjDC,WAAW,EAAER,cAAc,CAACQ,WAAW;MACvCC,sBAAsB,EAAET,cAAc,CAACS,sBAAsB;MAC7DC,kBAAkB,EAAEtB,sBAAsB,CAACC,wBAAwB;IACrE;EACF,CAAC;AACH,CAAC;;AAGD;AACA;AAAA;AACO,MAAMsB,6BAA6B,GAAG,CAC3CC,aAA4B,EAAEvB,wBAA4C,KACvE;EACH,OAAO;IACLY,SAAS,EAAE;MACTK,SAAS,EAAE,IAAAT,uBAAiB,EAACe,aAAa,CAACN,SAAS,CAAC;MACrDO,gBAAgB,EAAED,aAAa,CAACC,gBAAgB;MAChDC,gBAAgB,EAAE1B,sBAAsB,CAACC,wBAAwB;IACnE;EACF,CAAC;AACH,CAAC;;AAED;AACA;AAAA;AACO,MAAM0B,cAAc,GAAIC,UAA+B,IAAK;EACjE,MAAMC,QAAQ,GAAGD,UAAU,CAACC,QAA4C;EACxE,MAAMrB,EAAE,GAAGoB,UAAU,CAACpB,EAAE;EACxB,MAAMsB,UAAU,GAAG,IAAAC,uBAAiB,EAACF,QAAQ,CAACG,cAAc,CAAC;EAC7D,MAAMZ,WAAW,GAAG,IAAAW,uBAAiB,EAACF,QAAQ,CAACI,iBAAiB,CAAC;EACjE,OAAO;IACLzB,EAAE;IACFsB,UAAU;IACVV;EACF,CAAC;AACH,CAAC;;AAED;AACA;AAAA;AACO,MAAMc,YAAY,GAAIN,UAA+B,IAAK;EAC/D,MAAMC,QAAQ,GAAGD,UAAU,CAACC,QAA0C;EACtE,MAAMrB,EAAE,GAAGoB,UAAU,CAACpB,EAAE;EACxB,MAAMsB,UAAU,GAAG,IAAAC,uBAAiB,EAACF,QAAQ,CAACG,cAAc,CAAC;EAC7D,MAAMG,iBAAiB,GAAG,IAAAJ,uBAAiB,EAACF,QAAQ,CAACM,iBAAiB,CAAC;EACvE,MAAMC,aAAa,GAAG,IAAAL,uBAAiB,EAACF,QAAQ,CAACQ,SAAS,CAAC;EAC3D,OAAO;IACL7B,EAAE;IACFsB,UAAU;IACVK,iBAAiB;IACjBC;EACF,CAAC;AACH,CAAC;AAAC"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _profileApi = require("./profileApi");
4
-
5
4
  Object.keys(_profileApi).forEach(function (key) {
6
5
  if (key === "default" || key === "__esModule") return;
7
6
  if (key in exports && exports[key] === _profileApi[key]) return;
@@ -12,9 +11,7 @@ Object.keys(_profileApi).forEach(function (key) {
12
11
  }
13
12
  });
14
13
  });
15
-
16
14
  var _emailApi = require("./emailApi");
17
-
18
15
  Object.keys(_emailApi).forEach(function (key) {
19
16
  if (key === "default" || key === "__esModule") return;
20
17
  if (key in exports && exports[key] === _emailApi[key]) return;
@@ -25,9 +22,7 @@ Object.keys(_emailApi).forEach(function (key) {
25
22
  }
26
23
  });
27
24
  });
28
-
29
25
  var _phoneApi = require("./phoneApi");
30
-
31
26
  Object.keys(_phoneApi).forEach(function (key) {
32
27
  if (key === "default" || key === "__esModule") return;
33
28
  if (key in exports && exports[key] === _phoneApi[key]) return;
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","names":[],"sources":["../../../lib/myaccount/api.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n// exports all public methods from myaccount module\n\nexport * from './profileApi';\nexport * from './emailApi';\nexport * from './phoneApi';\n"],"mappings":";;AAeA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"api.js","names":[],"sources":["../../../lib/myaccount/api.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n// exports all public methods from myaccount module\n\nexport * from './profileApi';\nexport * from './emailApi';\nexport * from './phoneApi';\n"],"mappings":";;AAeA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}