@okta/okta-auth-js 7.0.1 → 7.1.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 (568) hide show
  1. package/README.md +2 -0
  2. package/cjs/authn/AuthnTransactionImpl.js +6 -8
  3. package/cjs/authn/AuthnTransactionImpl.js.map +1 -1
  4. package/cjs/authn/api.js +3 -18
  5. package/cjs/authn/api.js.map +1 -1
  6. package/cjs/authn/factory.js +1 -7
  7. package/cjs/authn/factory.js.map +1 -1
  8. package/cjs/authn/index.js +0 -5
  9. package/cjs/authn/index.js.map +1 -1
  10. package/cjs/authn/mixin.js +14 -22
  11. package/cjs/authn/mixin.js.map +1 -1
  12. package/cjs/authn/util/flattenEmbedded.js +5 -12
  13. package/cjs/authn/util/flattenEmbedded.js.map +1 -1
  14. package/cjs/authn/util/link2fn.js +0 -22
  15. package/cjs/authn/util/link2fn.js.map +1 -1
  16. package/cjs/authn/util/links2fns.js +0 -12
  17. package/cjs/authn/util/links2fns.js.map +1 -1
  18. package/cjs/authn/util/poll.js +9 -27
  19. package/cjs/authn/util/poll.js.map +1 -1
  20. package/cjs/authn/util/stateToken.js +3 -4
  21. package/cjs/authn/util/stateToken.js.map +1 -1
  22. package/cjs/base/factory.js +6 -14
  23. package/cjs/base/factory.js.map +1 -1
  24. package/cjs/base/index.js +0 -5
  25. package/cjs/base/index.js.map +1 -1
  26. package/cjs/base/options.js +1 -2
  27. package/cjs/base/options.js.map +1 -1
  28. package/cjs/browser/browserStorage.js +15 -43
  29. package/cjs/browser/browserStorage.js.map +1 -1
  30. package/cjs/browser/fingerprint.js +3 -15
  31. package/cjs/browser/fingerprint.js.map +1 -1
  32. package/cjs/clock.js +5 -7
  33. package/cjs/clock.js.map +1 -1
  34. package/cjs/constants.js +4 -3
  35. package/cjs/constants.js.map +1 -1
  36. package/cjs/core/AuthStateManager.js +24 -48
  37. package/cjs/core/AuthStateManager.js.map +1 -1
  38. package/cjs/core/ServiceManager/browser.js +13 -33
  39. package/cjs/core/ServiceManager/browser.js.map +1 -1
  40. package/cjs/core/ServiceManager/index.js +0 -1
  41. package/cjs/core/ServiceManager/index.js.map +1 -1
  42. package/cjs/core/ServiceManager/node.js +3 -9
  43. package/cjs/core/ServiceManager/node.js.map +1 -1
  44. package/cjs/core/factory.js +0 -7
  45. package/cjs/core/factory.js.map +1 -1
  46. package/cjs/core/index.js +0 -13
  47. package/cjs/core/index.js.map +1 -1
  48. package/cjs/core/mixin.js +16 -20
  49. package/cjs/core/mixin.js.map +1 -1
  50. package/cjs/core/options.js +1 -3
  51. package/cjs/core/options.js.map +1 -1
  52. package/cjs/core/storage.js +0 -2
  53. package/cjs/core/storage.js.map +1 -1
  54. package/cjs/core/types/index.js +0 -5
  55. package/cjs/core/types/index.js.map +1 -1
  56. package/cjs/crypto/base64.js +9 -22
  57. package/cjs/crypto/base64.js.map +1 -1
  58. package/cjs/crypto/browser.js +0 -4
  59. package/cjs/crypto/browser.js.map +1 -1
  60. package/cjs/crypto/index.js +0 -9
  61. package/cjs/crypto/index.js.map +1 -1
  62. package/cjs/crypto/node.js +0 -13
  63. package/cjs/crypto/node.js.map +1 -1
  64. package/cjs/crypto/oidcHash.js +1 -4
  65. package/cjs/crypto/oidcHash.js.map +1 -1
  66. package/cjs/crypto/verifyToken.js +6 -7
  67. package/cjs/crypto/verifyToken.js.map +1 -1
  68. package/cjs/crypto/webcrypto.js +0 -1
  69. package/cjs/crypto/webcrypto.js.map +1 -1
  70. package/cjs/errors/AuthApiError.js +1 -7
  71. package/cjs/errors/AuthApiError.js.map +1 -1
  72. package/cjs/errors/AuthPollStopError.js +1 -5
  73. package/cjs/errors/AuthPollStopError.js.map +1 -1
  74. package/cjs/errors/AuthSdkError.js +1 -6
  75. package/cjs/errors/AuthSdkError.js.map +1 -1
  76. package/cjs/errors/CustomError.js +1 -4
  77. package/cjs/errors/CustomError.js.map +1 -1
  78. package/cjs/errors/OAuthError.js +4 -7
  79. package/cjs/errors/OAuthError.js.map +1 -1
  80. package/cjs/errors/index.js +1 -9
  81. package/cjs/errors/index.js.map +1 -1
  82. package/cjs/exports/authn.js +0 -9
  83. package/cjs/exports/authn.js.map +1 -1
  84. package/cjs/exports/cdn/authn.js +0 -2
  85. package/cjs/exports/cdn/authn.js.map +1 -1
  86. package/cjs/exports/cdn/core.js +0 -2
  87. package/cjs/exports/cdn/core.js.map +1 -1
  88. package/cjs/exports/cdn/default.js +0 -2
  89. package/cjs/exports/cdn/default.js.map +1 -1
  90. package/cjs/exports/cdn/idx.js +0 -2
  91. package/cjs/exports/cdn/idx.js.map +1 -1
  92. package/cjs/exports/cdn/myaccount.js +0 -2
  93. package/cjs/exports/cdn/myaccount.js.map +1 -1
  94. package/cjs/exports/common.js +0 -22
  95. package/cjs/exports/common.js.map +1 -1
  96. package/cjs/exports/core.js +0 -9
  97. package/cjs/exports/core.js.map +1 -1
  98. package/cjs/exports/default.js +2 -12
  99. package/cjs/exports/default.js.map +1 -1
  100. package/cjs/exports/idx.js +3 -7
  101. package/cjs/exports/idx.js.map +1 -1
  102. package/cjs/exports/myaccount.js +0 -9
  103. package/cjs/exports/myaccount.js.map +1 -1
  104. package/cjs/features.js +1 -18
  105. package/cjs/features.js.map +1 -1
  106. package/cjs/fetch/fetchRequest.js +6 -20
  107. package/cjs/fetch/fetchRequest.js.map +1 -1
  108. package/cjs/http/OktaUserAgent.js +3 -11
  109. package/cjs/http/OktaUserAgent.js.map +1 -1
  110. package/cjs/http/headers.js +1 -1
  111. package/cjs/http/headers.js.map +1 -1
  112. package/cjs/http/index.js +0 -11
  113. package/cjs/http/index.js.map +1 -1
  114. package/cjs/http/mixin.js +2 -10
  115. package/cjs/http/mixin.js.map +1 -1
  116. package/cjs/http/options.js +1 -5
  117. package/cjs/http/options.js.map +1 -1
  118. package/cjs/http/request.js +75 -57
  119. package/cjs/http/request.js.map +1 -1
  120. package/cjs/idx/IdxTransactionManager.js +2 -22
  121. package/cjs/idx/IdxTransactionManager.js.map +1 -1
  122. package/cjs/idx/authenticate.js +3 -5
  123. package/cjs/idx/authenticate.js.map +1 -1
  124. package/cjs/idx/authenticator/Authenticator.js +2 -4
  125. package/cjs/idx/authenticator/Authenticator.js.map +1 -1
  126. package/cjs/idx/authenticator/OktaPassword.js +2 -10
  127. package/cjs/idx/authenticator/OktaPassword.js.map +1 -1
  128. package/cjs/idx/authenticator/OktaVerifyTotp.js +0 -6
  129. package/cjs/idx/authenticator/OktaVerifyTotp.js.map +1 -1
  130. package/cjs/idx/authenticator/SecurityQuestionEnrollment.js +0 -10
  131. package/cjs/idx/authenticator/SecurityQuestionEnrollment.js.map +1 -1
  132. package/cjs/idx/authenticator/SecurityQuestionVerification.js +1 -10
  133. package/cjs/idx/authenticator/SecurityQuestionVerification.js.map +1 -1
  134. package/cjs/idx/authenticator/VerificationCodeAuthenticator.js +2 -10
  135. package/cjs/idx/authenticator/VerificationCodeAuthenticator.js.map +1 -1
  136. package/cjs/idx/authenticator/WebauthnEnrollment.js +0 -8
  137. package/cjs/idx/authenticator/WebauthnEnrollment.js.map +1 -1
  138. package/cjs/idx/authenticator/WebauthnVerification.js +0 -8
  139. package/cjs/idx/authenticator/WebauthnVerification.js.map +1 -1
  140. package/cjs/idx/authenticator/getAuthenticator.js +0 -15
  141. package/cjs/idx/authenticator/getAuthenticator.js.map +1 -1
  142. package/cjs/idx/authenticator/index.js +0 -15
  143. package/cjs/idx/authenticator/index.js.map +1 -1
  144. package/cjs/idx/authenticator/util.js +8 -18
  145. package/cjs/idx/authenticator/util.js.map +1 -1
  146. package/cjs/idx/cancel.js +3 -4
  147. package/cjs/idx/cancel.js.map +1 -1
  148. package/cjs/idx/emailVerify.js +5 -13
  149. package/cjs/idx/emailVerify.js.map +1 -1
  150. package/cjs/idx/factory/OktaAuthIdx.js +0 -3
  151. package/cjs/idx/factory/OktaAuthIdx.js.map +1 -1
  152. package/cjs/idx/factory/api.js +1 -17
  153. package/cjs/idx/factory/api.js.map +1 -1
  154. package/cjs/idx/factory/index.js +0 -3
  155. package/cjs/idx/factory/index.js.map +1 -1
  156. package/cjs/idx/flow/AccountUnlockFlow.js +1 -2
  157. package/cjs/idx/flow/AccountUnlockFlow.js.map +1 -1
  158. package/cjs/idx/flow/AuthenticationFlow.js +1 -2
  159. package/cjs/idx/flow/AuthenticationFlow.js.map +1 -1
  160. package/cjs/idx/flow/FlowSpecification.js +2 -13
  161. package/cjs/idx/flow/FlowSpecification.js.map +1 -1
  162. package/cjs/idx/flow/PasswordRecoveryFlow.js +1 -2
  163. package/cjs/idx/flow/PasswordRecoveryFlow.js.map +1 -1
  164. package/cjs/idx/flow/RegistrationFlow.js +1 -2
  165. package/cjs/idx/flow/RegistrationFlow.js.map +1 -1
  166. package/cjs/idx/flow/index.js +0 -11
  167. package/cjs/idx/flow/index.js.map +1 -1
  168. package/cjs/idx/handleInteractionCodeRedirect.js +7 -12
  169. package/cjs/idx/handleInteractionCodeRedirect.js.map +1 -1
  170. package/cjs/idx/idxState/index.js +1 -11
  171. package/cjs/idx/idxState/index.js.map +1 -1
  172. package/cjs/idx/idxState/v1/actionParser.js +1 -12
  173. package/cjs/idx/idxState/v1/actionParser.js.map +1 -1
  174. package/cjs/idx/idxState/v1/generateIdxAction.js +10 -15
  175. package/cjs/idx/idxState/v1/generateIdxAction.js.map +1 -1
  176. package/cjs/idx/idxState/v1/idxResponseParser.js +7 -23
  177. package/cjs/idx/idxState/v1/idxResponseParser.js.map +1 -1
  178. package/cjs/idx/idxState/v1/makeIdxState.js +2 -10
  179. package/cjs/idx/idxState/v1/makeIdxState.js.map +1 -1
  180. package/cjs/idx/idxState/v1/parsers.js +0 -2
  181. package/cjs/idx/idxState/v1/parsers.js.map +1 -1
  182. package/cjs/idx/idxState/v1/remediationParser.js +2 -4
  183. package/cjs/idx/idxState/v1/remediationParser.js.map +1 -1
  184. package/cjs/idx/index.js +0 -26
  185. package/cjs/idx/index.js.map +1 -1
  186. package/cjs/idx/interact.js +18 -18
  187. package/cjs/idx/interact.js.map +1 -1
  188. package/cjs/idx/introspect.js +5 -14
  189. package/cjs/idx/introspect.js.map +1 -1
  190. package/cjs/idx/mixin.js +0 -9
  191. package/cjs/idx/mixin.js.map +1 -1
  192. package/cjs/idx/options.js +2 -3
  193. package/cjs/idx/options.js.map +1 -1
  194. package/cjs/idx/poll.js +1 -10
  195. package/cjs/idx/poll.js.map +1 -1
  196. package/cjs/idx/proceed.js +3 -9
  197. package/cjs/idx/proceed.js.map +1 -1
  198. package/cjs/idx/recoverPassword.js +3 -4
  199. package/cjs/idx/recoverPassword.js.map +1 -1
  200. package/cjs/idx/register.js +5 -11
  201. package/cjs/idx/register.js.map +1 -1
  202. package/cjs/idx/remediate.js +24 -45
  203. package/cjs/idx/remediate.js.map +1 -1
  204. package/cjs/idx/remediators/AuthenticatorEnrollmentData.js +7 -16
  205. package/cjs/idx/remediators/AuthenticatorEnrollmentData.js.map +1 -1
  206. package/cjs/idx/remediators/AuthenticatorVerificationData.js +7 -15
  207. package/cjs/idx/remediators/AuthenticatorVerificationData.js.map +1 -1
  208. package/cjs/idx/remediators/Base/AuthenticatorData.js +7 -22
  209. package/cjs/idx/remediators/Base/AuthenticatorData.js.map +1 -1
  210. package/cjs/idx/remediators/Base/Remediator.js +38 -67
  211. package/cjs/idx/remediators/Base/Remediator.js.map +1 -1
  212. package/cjs/idx/remediators/Base/SelectAuthenticator.js +13 -30
  213. package/cjs/idx/remediators/Base/SelectAuthenticator.js.map +1 -1
  214. package/cjs/idx/remediators/Base/VerifyAuthenticator.js +5 -13
  215. package/cjs/idx/remediators/Base/VerifyAuthenticator.js.map +1 -1
  216. package/cjs/idx/remediators/ChallengeAuthenticator.js +1 -5
  217. package/cjs/idx/remediators/ChallengeAuthenticator.js.map +1 -1
  218. package/cjs/idx/remediators/ChallengePoll.js +1 -6
  219. package/cjs/idx/remediators/ChallengePoll.js.map +1 -1
  220. package/cjs/idx/remediators/EnrollAuthenticator.js +1 -5
  221. package/cjs/idx/remediators/EnrollAuthenticator.js.map +1 -1
  222. package/cjs/idx/remediators/EnrollPoll.js +5 -12
  223. package/cjs/idx/remediators/EnrollPoll.js.map +1 -1
  224. package/cjs/idx/remediators/EnrollProfile.js +8 -30
  225. package/cjs/idx/remediators/EnrollProfile.js.map +1 -1
  226. package/cjs/idx/remediators/EnrollmentChannelData.js +5 -13
  227. package/cjs/idx/remediators/EnrollmentChannelData.js.map +1 -1
  228. package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js +13 -19
  229. package/cjs/idx/remediators/GenericRemediator/GenericRemediator.js.map +1 -1
  230. package/cjs/idx/remediators/GenericRemediator/index.js +0 -1
  231. package/cjs/idx/remediators/GenericRemediator/index.js.map +1 -1
  232. package/cjs/idx/remediators/GenericRemediator/util.js +19 -31
  233. package/cjs/idx/remediators/GenericRemediator/util.js.map +1 -1
  234. package/cjs/idx/remediators/Identify.js +3 -12
  235. package/cjs/idx/remediators/Identify.js.map +1 -1
  236. package/cjs/idx/remediators/ReEnrollAuthenticator.js +3 -10
  237. package/cjs/idx/remediators/ReEnrollAuthenticator.js.map +1 -1
  238. package/cjs/idx/remediators/RedirectIdp.js +1 -7
  239. package/cjs/idx/remediators/RedirectIdp.js.map +1 -1
  240. package/cjs/idx/remediators/ResetAuthenticator.js +1 -5
  241. package/cjs/idx/remediators/ResetAuthenticator.js.map +1 -1
  242. package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js +3 -11
  243. package/cjs/idx/remediators/SelectAuthenticatorAuthenticate.js.map +1 -1
  244. package/cjs/idx/remediators/SelectAuthenticatorEnroll.js +1 -5
  245. package/cjs/idx/remediators/SelectAuthenticatorEnroll.js.map +1 -1
  246. package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js +6 -15
  247. package/cjs/idx/remediators/SelectAuthenticatorUnlockAccount.js.map +1 -1
  248. package/cjs/idx/remediators/SelectEnrollProfile.js +1 -6
  249. package/cjs/idx/remediators/SelectEnrollProfile.js.map +1 -1
  250. package/cjs/idx/remediators/SelectEnrollmentChannel.js +5 -16
  251. package/cjs/idx/remediators/SelectEnrollmentChannel.js.map +1 -1
  252. package/cjs/idx/remediators/Skip.js +1 -6
  253. package/cjs/idx/remediators/Skip.js.map +1 -1
  254. package/cjs/idx/remediators/index.js +0 -39
  255. package/cjs/idx/remediators/index.js.map +1 -1
  256. package/cjs/idx/remediators/util.js +1 -7
  257. package/cjs/idx/remediators/util.js.map +1 -1
  258. package/cjs/idx/run.js +37 -52
  259. package/cjs/idx/run.js.map +1 -1
  260. package/cjs/idx/startTransaction.js +1 -2
  261. package/cjs/idx/startTransaction.js.map +1 -1
  262. package/cjs/idx/storage.js +3 -22
  263. package/cjs/idx/storage.js.map +1 -1
  264. package/cjs/idx/transactionMeta.js +24 -42
  265. package/cjs/idx/transactionMeta.js.map +1 -1
  266. package/cjs/idx/types/api.js +1 -9
  267. package/cjs/idx/types/api.js.map +1 -1
  268. package/cjs/idx/types/idx-js.js +3 -3
  269. package/cjs/idx/types/idx-js.js.map +1 -1
  270. package/cjs/idx/types/index.js +0 -7
  271. package/cjs/idx/types/index.js.map +1 -1
  272. package/cjs/idx/types/meta.js.map +1 -1
  273. package/cjs/idx/types/options.js.map +1 -1
  274. package/cjs/idx/unlockAccount.js +7 -11
  275. package/cjs/idx/unlockAccount.js.map +1 -1
  276. package/cjs/idx/util.js +24 -76
  277. package/cjs/idx/util.js.map +1 -1
  278. package/cjs/idx/webauthn.js +13 -18
  279. package/cjs/idx/webauthn.js.map +1 -1
  280. package/cjs/myaccount/api.js +0 -5
  281. package/cjs/myaccount/api.js.map +1 -1
  282. package/cjs/myaccount/emailApi.js +6 -21
  283. package/cjs/myaccount/emailApi.js.map +1 -1
  284. package/cjs/myaccount/factory.js +0 -3
  285. package/cjs/myaccount/factory.js.map +1 -1
  286. package/cjs/myaccount/index.js +0 -7
  287. package/cjs/myaccount/index.js.map +1 -1
  288. package/cjs/myaccount/mixin.js +0 -5
  289. package/cjs/myaccount/mixin.js.map +1 -1
  290. package/cjs/myaccount/phoneApi.js +5 -18
  291. package/cjs/myaccount/phoneApi.js.map +1 -1
  292. package/cjs/myaccount/profileApi.js +2 -9
  293. package/cjs/myaccount/profileApi.js.map +1 -1
  294. package/cjs/myaccount/request.js +12 -78
  295. package/cjs/myaccount/request.js.map +1 -1
  296. package/cjs/myaccount/transactions/Base.js +5 -7
  297. package/cjs/myaccount/transactions/Base.js.map +1 -1
  298. package/cjs/myaccount/transactions/EmailChallengeTransaction.js +5 -10
  299. package/cjs/myaccount/transactions/EmailChallengeTransaction.js.map +1 -1
  300. package/cjs/myaccount/transactions/EmailStatusTransaction.js +2 -7
  301. package/cjs/myaccount/transactions/EmailStatusTransaction.js.map +1 -1
  302. package/cjs/myaccount/transactions/EmailTransaction.js +5 -13
  303. package/cjs/myaccount/transactions/EmailTransaction.js.map +1 -1
  304. package/cjs/myaccount/transactions/PhoneTransaction.js +5 -12
  305. package/cjs/myaccount/transactions/PhoneTransaction.js.map +1 -1
  306. package/cjs/myaccount/transactions/ProfileSchemaTransaction.js +0 -5
  307. package/cjs/myaccount/transactions/ProfileSchemaTransaction.js.map +1 -1
  308. package/cjs/myaccount/transactions/ProfileTransaction.js +0 -5
  309. package/cjs/myaccount/transactions/ProfileTransaction.js.map +1 -1
  310. package/cjs/myaccount/transactions/index.js +0 -8
  311. package/cjs/myaccount/transactions/index.js.map +1 -1
  312. package/cjs/myaccount/types.js +0 -5
  313. package/cjs/myaccount/types.js.map +1 -1
  314. package/cjs/oidc/TokenManager.js +39 -100
  315. package/cjs/oidc/TokenManager.js.map +1 -1
  316. package/cjs/oidc/TransactionManager.js +19 -26
  317. package/cjs/oidc/TransactionManager.js.map +1 -1
  318. package/cjs/oidc/decodeToken.js +1 -5
  319. package/cjs/oidc/decodeToken.js.map +1 -1
  320. package/cjs/oidc/endpoints/authorize.js +9 -13
  321. package/cjs/oidc/endpoints/authorize.js.map +1 -1
  322. package/cjs/oidc/endpoints/index.js +0 -5
  323. package/cjs/oidc/endpoints/index.js.map +1 -1
  324. package/cjs/oidc/endpoints/token.js +5 -17
  325. package/cjs/oidc/endpoints/token.js.map +1 -1
  326. package/cjs/oidc/endpoints/well-known.js +7 -14
  327. package/cjs/oidc/endpoints/well-known.js.map +1 -1
  328. package/cjs/oidc/exchangeCodeForTokens.js +7 -12
  329. package/cjs/oidc/exchangeCodeForTokens.js.map +1 -1
  330. package/cjs/oidc/factory/OktaAuthOAuth.js +0 -6
  331. package/cjs/oidc/factory/OktaAuthOAuth.js.map +1 -1
  332. package/cjs/oidc/factory/api.js +6 -20
  333. package/cjs/oidc/factory/api.js.map +1 -1
  334. package/cjs/oidc/factory/index.js +0 -3
  335. package/cjs/oidc/factory/index.js.map +1 -1
  336. package/cjs/oidc/getToken.js +18 -30
  337. package/cjs/oidc/getToken.js.map +1 -1
  338. package/cjs/oidc/getUserInfo.js +1 -15
  339. package/cjs/oidc/getUserInfo.js.map +1 -1
  340. package/cjs/oidc/getWithPopup.js +4 -8
  341. package/cjs/oidc/getWithPopup.js.map +1 -1
  342. package/cjs/oidc/getWithRedirect.js +1 -8
  343. package/cjs/oidc/getWithRedirect.js.map +1 -1
  344. package/cjs/oidc/getWithoutPrompt.js +1 -5
  345. package/cjs/oidc/getWithoutPrompt.js.map +1 -1
  346. package/cjs/oidc/handleOAuthResponse.js +23 -40
  347. package/cjs/oidc/handleOAuthResponse.js.map +1 -1
  348. package/cjs/oidc/index.js +0 -32
  349. package/cjs/oidc/index.js.map +1 -1
  350. package/cjs/oidc/mixin/browser.js +6 -18
  351. package/cjs/oidc/mixin/browser.js.map +1 -1
  352. package/cjs/oidc/mixin/index.js +37 -89
  353. package/cjs/oidc/mixin/index.js.map +1 -1
  354. package/cjs/oidc/mixin/node.js +2 -9
  355. package/cjs/oidc/mixin/node.js.map +1 -1
  356. package/cjs/oidc/options/OAuthOptionsConstructor.js +17 -24
  357. package/cjs/oidc/options/OAuthOptionsConstructor.js.map +1 -1
  358. package/cjs/oidc/options/browser.js.map +1 -1
  359. package/cjs/oidc/options/index.js +0 -1
  360. package/cjs/oidc/options/index.js.map +1 -1
  361. package/cjs/oidc/options/node.js.map +1 -1
  362. package/cjs/oidc/parseFromUrl.js +1 -32
  363. package/cjs/oidc/parseFromUrl.js.map +1 -1
  364. package/cjs/oidc/renewToken.js +5 -16
  365. package/cjs/oidc/renewToken.js.map +1 -1
  366. package/cjs/oidc/renewTokens.js +3 -15
  367. package/cjs/oidc/renewTokens.js.map +1 -1
  368. package/cjs/oidc/renewTokensWithRefresh.js +3 -13
  369. package/cjs/oidc/renewTokensWithRefresh.js.map +1 -1
  370. package/cjs/oidc/revokeToken.js +3 -14
  371. package/cjs/oidc/revokeToken.js.map +1 -1
  372. package/cjs/oidc/storage.js +0 -8
  373. package/cjs/oidc/storage.js.map +1 -1
  374. package/cjs/oidc/types/Token.js +1 -5
  375. package/cjs/oidc/types/Token.js.map +1 -1
  376. package/cjs/oidc/types/TokenManager.js +1 -1
  377. package/cjs/oidc/types/TokenManager.js.map +1 -1
  378. package/cjs/oidc/types/Transaction.js +1 -12
  379. package/cjs/oidc/types/Transaction.js.map +1 -1
  380. package/cjs/oidc/types/UserClaims.js.map +1 -1
  381. package/cjs/oidc/types/api.js.map +1 -1
  382. package/cjs/oidc/types/index.js +0 -21
  383. package/cjs/oidc/types/index.js.map +1 -1
  384. package/cjs/oidc/types/meta.js.map +1 -1
  385. package/cjs/oidc/types/options.js.map +1 -1
  386. package/cjs/oidc/types/proto.js.map +1 -1
  387. package/cjs/oidc/util/browser.js +4 -13
  388. package/cjs/oidc/util/browser.js.map +1 -1
  389. package/cjs/oidc/util/defaultTokenParams.js +5 -5
  390. package/cjs/oidc/util/defaultTokenParams.js.map +1 -1
  391. package/cjs/oidc/util/errors.js +3 -8
  392. package/cjs/oidc/util/errors.js.map +1 -1
  393. package/cjs/oidc/util/index.js +0 -24
  394. package/cjs/oidc/util/index.js.map +1 -1
  395. package/cjs/oidc/util/loginRedirect.js +11 -25
  396. package/cjs/oidc/util/loginRedirect.js.map +1 -1
  397. package/cjs/oidc/util/oauth.js +3 -12
  398. package/cjs/oidc/util/oauth.js.map +1 -1
  399. package/cjs/oidc/util/oauthMeta.js +5 -6
  400. package/cjs/oidc/util/oauthMeta.js.map +1 -1
  401. package/cjs/oidc/util/pkce.js +1 -12
  402. package/cjs/oidc/util/pkce.js.map +1 -1
  403. package/cjs/oidc/util/prepareTokenParams.js +13 -26
  404. package/cjs/oidc/util/prepareTokenParams.js.map +1 -1
  405. package/cjs/oidc/util/refreshToken.js +0 -7
  406. package/cjs/oidc/util/refreshToken.js.map +1 -1
  407. package/cjs/oidc/util/sharedStorage.js +0 -8
  408. package/cjs/oidc/util/sharedStorage.js.map +1 -1
  409. package/cjs/oidc/util/urlParams.js +9 -12
  410. package/cjs/oidc/util/urlParams.js.map +1 -1
  411. package/cjs/oidc/util/validateClaims.js +9 -17
  412. package/cjs/oidc/util/validateClaims.js.map +1 -1
  413. package/cjs/oidc/util/validateToken.js +1 -6
  414. package/cjs/oidc/util/validateToken.js.map +1 -1
  415. package/cjs/oidc/verifyToken.js +13 -23
  416. package/cjs/oidc/verifyToken.js.map +1 -1
  417. package/cjs/server/serverStorage.js +9 -27
  418. package/cjs/server/serverStorage.js.map +1 -1
  419. package/cjs/services/AutoRenewService.js +1 -17
  420. package/cjs/services/AutoRenewService.js.map +1 -1
  421. package/cjs/services/LeaderElectionService.js +1 -23
  422. package/cjs/services/LeaderElectionService.js.map +1 -1
  423. package/cjs/services/SyncStorageService.js +3 -37
  424. package/cjs/services/SyncStorageService.js.map +1 -1
  425. package/cjs/services/index.js +0 -5
  426. package/cjs/services/index.js.map +1 -1
  427. package/cjs/session/api.js +1 -12
  428. package/cjs/session/api.js.map +1 -1
  429. package/cjs/session/factory.js +0 -2
  430. package/cjs/session/factory.js.map +1 -1
  431. package/cjs/session/index.js +0 -7
  432. package/cjs/session/index.js.map +1 -1
  433. package/cjs/session/mixin.js +2 -6
  434. package/cjs/session/mixin.js.map +1 -1
  435. package/cjs/storage/BaseStorageManager.js +13 -25
  436. package/cjs/storage/BaseStorageManager.js.map +1 -1
  437. package/cjs/storage/SavedObject.js +7 -19
  438. package/cjs/storage/SavedObject.js.map +1 -1
  439. package/cjs/storage/index.js +0 -9
  440. package/cjs/storage/index.js.map +1 -1
  441. package/cjs/storage/mixin.js +2 -4
  442. package/cjs/storage/mixin.js.map +1 -1
  443. package/cjs/storage/options/StorageOptionsConstructor.js +3 -6
  444. package/cjs/storage/options/StorageOptionsConstructor.js.map +1 -1
  445. package/cjs/storage/options/browser.js +7 -15
  446. package/cjs/storage/options/browser.js.map +1 -1
  447. package/cjs/storage/options/node.js +3 -6
  448. package/cjs/storage/options/node.js.map +1 -1
  449. package/cjs/util/PromiseQueue.js +7 -15
  450. package/cjs/util/PromiseQueue.js.map +1 -1
  451. package/cjs/util/console.js +3 -7
  452. package/cjs/util/console.js.map +1 -1
  453. package/cjs/util/index.js +0 -11
  454. package/cjs/util/index.js.map +1 -1
  455. package/cjs/util/misc.js +3 -8
  456. package/cjs/util/misc.js.map +1 -1
  457. package/cjs/util/object.js +9 -23
  458. package/cjs/util/object.js.map +1 -1
  459. package/cjs/util/types.js +1 -5
  460. package/cjs/util/types.js.map +1 -1
  461. package/cjs/util/url.js +5 -14
  462. package/cjs/util/url.js.map +1 -1
  463. package/dist/okta-auth-js.authn.min.analyzer.html +3 -3
  464. package/dist/okta-auth-js.authn.min.js +1 -1
  465. package/dist/okta-auth-js.authn.min.js.LICENSE.txt +2 -0
  466. package/dist/okta-auth-js.authn.min.js.map +1 -1
  467. package/dist/okta-auth-js.core.min.analyzer.html +3 -3
  468. package/dist/okta-auth-js.core.min.js +1 -1
  469. package/dist/okta-auth-js.core.min.js.LICENSE.txt +2 -0
  470. package/dist/okta-auth-js.core.min.js.map +1 -1
  471. package/dist/okta-auth-js.idx.min.analyzer.html +3 -3
  472. package/dist/okta-auth-js.idx.min.js +1 -1
  473. package/dist/okta-auth-js.idx.min.js.LICENSE.txt +2 -0
  474. package/dist/okta-auth-js.idx.min.js.map +1 -1
  475. package/dist/okta-auth-js.min.analyzer.html +3 -3
  476. package/dist/okta-auth-js.min.js +1 -1
  477. package/dist/okta-auth-js.min.js.LICENSE.txt +2 -0
  478. package/dist/okta-auth-js.min.js.map +1 -1
  479. package/dist/okta-auth-js.myaccount.min.analyzer.html +3 -3
  480. package/dist/okta-auth-js.myaccount.min.js +1 -1
  481. package/dist/okta-auth-js.myaccount.min.js.LICENSE.txt +2 -0
  482. package/dist/okta-auth-js.myaccount.min.js.map +1 -1
  483. package/dist/okta-auth-js.polyfill.js +1 -1
  484. package/dist/okta-auth-js.polyfill.js.map +1 -1
  485. package/esm/browser/http/OktaUserAgent.js +2 -2
  486. package/esm/browser/http/request.js +56 -23
  487. package/esm/browser/http/request.js.map +1 -1
  488. package/esm/browser/idx/interact.js +2 -2
  489. package/esm/browser/idx/interact.js.map +1 -1
  490. package/esm/browser/idx/run.js +2 -1
  491. package/esm/browser/idx/run.js.map +1 -1
  492. package/esm/browser/idx/transactionMeta.js +3 -2
  493. package/esm/browser/idx/transactionMeta.js.map +1 -1
  494. package/esm/browser/myaccount/request.js +2 -43
  495. package/esm/browser/myaccount/request.js.map +1 -1
  496. package/esm/browser/oidc/endpoints/authorize.js +1 -0
  497. package/esm/browser/oidc/endpoints/authorize.js.map +1 -1
  498. package/esm/browser/oidc/exchangeCodeForTokens.js +2 -1
  499. package/esm/browser/oidc/exchangeCodeForTokens.js.map +1 -1
  500. package/esm/browser/oidc/handleOAuthResponse.js +17 -16
  501. package/esm/browser/oidc/handleOAuthResponse.js.map +1 -1
  502. package/esm/browser/oidc/options/OAuthOptionsConstructor.js +2 -0
  503. package/esm/browser/oidc/options/OAuthOptionsConstructor.js.map +1 -1
  504. package/esm/browser/oidc/util/defaultTokenParams.js +3 -1
  505. package/esm/browser/oidc/util/defaultTokenParams.js.map +1 -1
  506. package/esm/browser/oidc/util/oauthMeta.js +1 -0
  507. package/esm/browser/oidc/util/oauthMeta.js.map +1 -1
  508. package/esm/browser/oidc/util/validateClaims.js +9 -4
  509. package/esm/browser/oidc/util/validateClaims.js.map +1 -1
  510. package/esm/browser/oidc/verifyToken.js +2 -2
  511. package/esm/browser/oidc/verifyToken.js.map +1 -1
  512. package/esm/browser/package.json +1 -1
  513. package/esm/node/http/OktaUserAgent.js +2 -2
  514. package/esm/node/http/request.js +56 -23
  515. package/esm/node/http/request.js.map +1 -1
  516. package/esm/node/idx/interact.js +2 -2
  517. package/esm/node/idx/interact.js.map +1 -1
  518. package/esm/node/idx/run.js +2 -1
  519. package/esm/node/idx/run.js.map +1 -1
  520. package/esm/node/idx/transactionMeta.js +3 -2
  521. package/esm/node/idx/transactionMeta.js.map +1 -1
  522. package/esm/node/myaccount/request.js +2 -43
  523. package/esm/node/myaccount/request.js.map +1 -1
  524. package/esm/node/oidc/endpoints/authorize.js +1 -0
  525. package/esm/node/oidc/endpoints/authorize.js.map +1 -1
  526. package/esm/node/oidc/exchangeCodeForTokens.js +2 -1
  527. package/esm/node/oidc/exchangeCodeForTokens.js.map +1 -1
  528. package/esm/node/oidc/handleOAuthResponse.js +17 -16
  529. package/esm/node/oidc/handleOAuthResponse.js.map +1 -1
  530. package/esm/node/oidc/options/OAuthOptionsConstructor.js +2 -0
  531. package/esm/node/oidc/options/OAuthOptionsConstructor.js.map +1 -1
  532. package/esm/node/oidc/util/defaultTokenParams.js +3 -1
  533. package/esm/node/oidc/util/defaultTokenParams.js.map +1 -1
  534. package/esm/node/oidc/util/oauthMeta.js +1 -0
  535. package/esm/node/oidc/util/oauthMeta.js.map +1 -1
  536. package/esm/node/oidc/util/validateClaims.js +9 -4
  537. package/esm/node/oidc/util/validateClaims.js.map +1 -1
  538. package/esm/node/oidc/verifyToken.js +2 -2
  539. package/esm/node/oidc/verifyToken.js.map +1 -1
  540. package/esm/node/package.json +1 -1
  541. package/package.json +12 -13
  542. package/polyfill/index.js +8 -5
  543. package/types/lib/core/options.d.ts +2 -0
  544. package/types/lib/idx/interact.d.ts +1 -0
  545. package/types/lib/idx/options.d.ts +2 -0
  546. package/types/lib/idx/types/meta.d.ts +1 -0
  547. package/types/lib/idx/types/options.d.ts +1 -0
  548. package/types/lib/oidc/options/OAuthOptionsConstructor.d.ts +2 -0
  549. package/types/lib/oidc/types/UserClaims.d.ts +1 -0
  550. package/types/lib/oidc/types/api.d.ts +1 -0
  551. package/types/lib/oidc/types/meta.d.ts +1 -1
  552. package/types/lib/oidc/types/options.d.ts +2 -1
  553. package/types/lib/oidc/types/proto.d.ts +1 -0
  554. package/umd/authn.js +1 -1
  555. package/umd/authn.js.LICENSE.txt +2 -0
  556. package/umd/authn.js.map +1 -1
  557. package/umd/core.js +1 -1
  558. package/umd/core.js.LICENSE.txt +2 -0
  559. package/umd/core.js.map +1 -1
  560. package/umd/default.js +1 -1
  561. package/umd/default.js.LICENSE.txt +2 -0
  562. package/umd/default.js.map +1 -1
  563. package/umd/idx.js +1 -1
  564. package/umd/idx.js.LICENSE.txt +2 -0
  565. package/umd/idx.js.map +1 -1
  566. package/umd/myaccount.js +1 -1
  567. package/umd/myaccount.js.LICENSE.txt +2 -0
  568. package/umd/myaccount.js.map +1 -1
package/cjs/idx/run.js CHANGED
@@ -1,23 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  exports.run = run;
4
-
5
4
  var _interact = require("./interact");
6
-
7
5
  var _introspect = require("./introspect");
8
-
9
6
  var _remediate = require("./remediate");
10
-
11
7
  var _flow = require("./flow");
12
-
13
8
  var _types = require("./types");
14
-
15
9
  var _transactionMeta = require("./transactionMeta");
16
-
17
10
  var _util = require("./util");
18
-
19
11
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
20
-
21
12
  /*!
22
13
  * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.
23
14
  * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.")
@@ -31,22 +22,24 @@ var _util = require("./util");
31
22
  */
32
23
 
33
24
  /* eslint-disable max-statements, complexity, max-depth */
25
+
34
26
  function initializeValues(options) {
35
27
  // remove known options, everything else is assumed to be a value
36
28
  const knownOptions = ['flow', 'remediators', 'actions', 'withCredentials', 'step', 'useGenericRemediator', 'exchangeCodeForTokens'];
37
- const values = { ...options
29
+ const values = {
30
+ ...options
38
31
  };
39
32
  knownOptions.forEach(option => {
40
33
  delete values[option];
41
34
  });
42
35
  return values;
43
36
  }
44
-
45
37
  function initializeData(authClient, data) {
46
38
  let {
47
39
  options
48
40
  } = data;
49
- options = { ...authClient.options.idx,
41
+ options = {
42
+ ...authClient.options.idx,
50
43
  ...options
51
44
  };
52
45
  let {
@@ -55,21 +48,22 @@ function initializeData(authClient, data) {
55
48
  remediators,
56
49
  actions
57
50
  } = options;
58
- const status = _types.IdxStatus.PENDING; // certain options can be set by the flow specification
51
+ const status = _types.IdxStatus.PENDING;
59
52
 
53
+ // certain options can be set by the flow specification
60
54
  flow = flow || authClient.idx.getFlow() || 'default';
61
-
62
55
  if (flow) {
63
56
  authClient.idx.setFlow(flow);
64
- const flowSpec = (0, _flow.getFlowSpecification)(authClient, flow); // Favor option values over flow spec
65
-
57
+ const flowSpec = (0, _flow.getFlowSpecification)(authClient, flow);
58
+ // Favor option values over flow spec
66
59
  withCredentials = typeof withCredentials !== 'undefined' ? withCredentials : flowSpec.withCredentials;
67
60
  remediators = remediators || flowSpec.remediators;
68
61
  actions = actions || flowSpec.actions;
69
62
  }
70
-
71
- return { ...data,
72
- options: { ...options,
63
+ return {
64
+ ...data,
65
+ options: {
66
+ ...options,
73
67
  flow,
74
68
  withCredentials,
75
69
  remediators,
@@ -78,7 +72,6 @@ function initializeData(authClient, data) {
78
72
  status
79
73
  };
80
74
  }
81
-
82
75
  async function getDataFromIntrospect(authClient, data) {
83
76
  const {
84
77
  options
@@ -92,6 +85,7 @@ async function getDataFromIntrospect(authClient, data) {
92
85
  recoveryToken,
93
86
  activationToken,
94
87
  maxAge,
88
+ acrValues,
95
89
  nonce
96
90
  } = options;
97
91
  let idxResponse;
@@ -109,9 +103,7 @@ async function getDataFromIntrospect(authClient, data) {
109
103
  });
110
104
  } else {
111
105
  var _meta;
112
-
113
106
  let interactionHandle = (_meta = meta) === null || _meta === void 0 ? void 0 : _meta.interactionHandle; // may be undefined
114
-
115
107
  if (!interactionHandle) {
116
108
  // start a new transaction
117
109
  authClient.transactionManager.clear();
@@ -122,26 +114,26 @@ async function getDataFromIntrospect(authClient, data) {
122
114
  activationToken,
123
115
  recoveryToken,
124
116
  maxAge,
117
+ acrValues,
125
118
  nonce
126
119
  });
127
120
  interactionHandle = interactResponse.interactionHandle;
128
121
  meta = interactResponse.meta;
129
- } // Introspect to get idx response
130
-
122
+ }
131
123
 
124
+ // Introspect to get idx response
132
125
  idxResponse = await (0, _introspect.introspect)(authClient, {
133
126
  withCredentials,
134
127
  version,
135
128
  interactionHandle
136
129
  });
137
130
  }
138
-
139
- return { ...data,
131
+ return {
132
+ ...data,
140
133
  idxResponse,
141
134
  meta
142
135
  };
143
136
  }
144
-
145
137
  async function getDataFromRemediate(authClient, data) {
146
138
  let {
147
139
  idxResponse,
@@ -157,15 +149,15 @@ async function getDataFromRemediate(authClient, data) {
157
149
  useGenericRemediator
158
150
  } = options;
159
151
  const shouldRemediate = autoRemediate !== false && (remediators || actions || step);
160
-
161
152
  if (!shouldRemediate) {
162
153
  return data;
163
154
  }
164
-
165
- values = { ...values,
155
+ values = {
156
+ ...values,
166
157
  stateHandle: idxResponse.rawIdxState.stateHandle
167
- }; // Can we handle the remediations?
158
+ };
168
159
 
160
+ // Can we handle the remediations?
169
161
  const {
170
162
  idxResponse: idxResponseFromRemediation,
171
163
  nextStep,
@@ -178,13 +170,13 @@ async function getDataFromRemediate(authClient, data) {
178
170
  useGenericRemediator
179
171
  });
180
172
  idxResponse = idxResponseFromRemediation;
181
- return { ...data,
173
+ return {
174
+ ...data,
182
175
  idxResponse,
183
176
  nextStep,
184
177
  canceled
185
178
  };
186
179
  }
187
-
188
180
  async function getTokens(authClient, data) {
189
181
  let {
190
182
  meta,
@@ -211,7 +203,6 @@ async function getTokens(authClient, data) {
211
203
  }, urls);
212
204
  return tokenResponse.tokens;
213
205
  }
214
-
215
206
  async function finalizeData(authClient, data) {
216
207
  let {
217
208
  options,
@@ -231,7 +222,6 @@ async function finalizeData(authClient, data) {
231
222
  let availableSteps;
232
223
  let messages;
233
224
  let terminal;
234
-
235
225
  if (idxResponse) {
236
226
  shouldSaveResponse = !!(idxResponse.requestDidSucceed || idxResponse.stepUp);
237
227
  enabledFeatures = (0, _util.getEnabledFeatures)(idxResponse);
@@ -239,32 +229,29 @@ async function finalizeData(authClient, data) {
239
229
  messages = (0, _util.getMessagesFromResponse)(idxResponse, options);
240
230
  terminal = (0, _util.isTerminalResponse)(idxResponse);
241
231
  }
242
-
243
232
  if (terminal) {
244
- status = _types.IdxStatus.TERMINAL; // In most cases a terminal response should not clear transaction data. The user should cancel or skip to continue.
233
+ status = _types.IdxStatus.TERMINAL;
234
+
235
+ // In most cases a terminal response should not clear transaction data. The user should cancel or skip to continue.
245
236
  // A terminal "success" is a non-error response with no further actions available.
246
237
  // In these narrow cases, saved transaction data should be cleared.
247
238
  // One example of a terminal success is when the email verify flow is continued in another tab
248
-
249
239
  const hasActions = Object.keys(idxResponse.actions).length > 0;
250
240
  const hasErrors = !!messages.find(msg => msg.class === 'ERROR');
251
241
  const isTerminalSuccess = !hasActions && !hasErrors && idxResponse.requestDidSucceed === true;
252
-
253
242
  if (isTerminalSuccess) {
254
243
  shouldClearTransaction = true;
255
244
  } else {
256
245
  // save response if there are actions available (ignore messages)
257
246
  shouldSaveResponse = !!hasActions;
258
- } // leave shared storage intact so the transaction can be continued in another tab
259
-
260
-
247
+ }
248
+ // leave shared storage intact so the transaction can be continued in another tab
261
249
  clearSharedStorage = false;
262
250
  } else if (canceled) {
263
251
  status = _types.IdxStatus.CANCELED;
264
252
  shouldClearTransaction = true;
265
253
  } else if (idxResponse !== null && idxResponse !== void 0 && idxResponse.interactionCode) {
266
254
  interactionCode = idxResponse.interactionCode;
267
-
268
255
  if (exchangeCodeForTokens === false) {
269
256
  status = _types.IdxStatus.SUCCESS;
270
257
  shouldClearTransaction = false;
@@ -274,8 +261,8 @@ async function finalizeData(authClient, data) {
274
261
  shouldClearTransaction = true;
275
262
  }
276
263
  }
277
-
278
- return { ...data,
264
+ return {
265
+ ...data,
279
266
  status,
280
267
  interactionCode,
281
268
  tokens,
@@ -288,7 +275,6 @@ async function finalizeData(authClient, data) {
288
275
  terminal
289
276
  };
290
277
  }
291
-
292
278
  async function run(authClient, options = {}) {
293
279
  let data = {
294
280
  options,
@@ -313,19 +299,17 @@ async function run(authClient, options = {}) {
313
299
  error,
314
300
  interactionCode
315
301
  } = data;
316
-
317
302
  if (shouldClearTransaction) {
318
303
  authClient.transactionManager.clear({
319
304
  clearSharedStorage
320
305
  });
321
306
  } else {
322
307
  // ensures state is saved to sessionStorage
323
- (0, _transactionMeta.saveTransactionMeta)(authClient, { ...meta
308
+ (0, _transactionMeta.saveTransactionMeta)(authClient, {
309
+ ...meta
324
310
  });
325
-
326
311
  if (shouldSaveResponse) {
327
312
  var _context;
328
-
329
313
  // Save intermediate idx response in storage to reduce introspect call
330
314
  const {
331
315
  rawIdxState: rawIdxResponse,
@@ -338,9 +322,9 @@ async function run(authClient, options = {}) {
338
322
  interactionHandle: meta === null || meta === void 0 ? void 0 : meta.interactionHandle
339
323
  });
340
324
  }
341
- } // copy all fields from idxResponse which are needed by the widget
342
-
325
+ }
343
326
 
327
+ // copy all fields from idxResponse which are needed by the widget
344
328
  const {
345
329
  actions,
346
330
  context,
@@ -378,6 +362,7 @@ async function run(authClient, options = {}) {
378
362
  }),
379
363
  interactionCode,
380
364
  // if options.exchangeCodeForTokens is false
365
+
381
366
  // from idx-js
382
367
  actions: actions,
383
368
  context: context,
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","names":["initializeValues","options","knownOptions","values","forEach","option","initializeData","authClient","data","idx","flow","withCredentials","remediators","actions","status","IdxStatus","PENDING","getFlow","setFlow","flowSpec","getFlowSpecification","getDataFromIntrospect","stateHandle","version","state","scopes","recoveryToken","activationToken","maxAge","nonce","idxResponse","meta","getSavedTransactionMeta","introspect","interactionHandle","transactionManager","clear","interactResponse","interact","getDataFromRemediate","autoRemediate","step","useGenericRemediator","shouldRemediate","rawIdxState","idxResponseFromRemediation","nextStep","canceled","remediate","getTokens","interactionCode","clientId","codeVerifier","ignoreSignature","redirectUri","urls","tokenResponse","token","exchangeCodeForTokens","tokens","finalizeData","shouldSaveResponse","shouldClearTransaction","clearSharedStorage","enabledFeatures","availableSteps","messages","terminal","requestDidSucceed","stepUp","getEnabledFeatures","getAvailableSteps","getMessagesFromResponse","isTerminalResponse","TERMINAL","hasActions","Object","keys","length","hasErrors","find","msg","class","isTerminalSuccess","CANCELED","SUCCESS","run","error","saveTransactionMeta","rawIdxResponse","saveIdxResponse","context","neededToProceed","proceed"],"sources":["../../../lib/idx/run.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable max-statements, complexity, max-depth */\nimport { interact } from './interact';\nimport { introspect } from './introspect';\nimport { remediate } from './remediate';\nimport { getFlowSpecification } from './flow';\nimport * as remediators from './remediators';\nimport { \n OktaAuthIdxInterface,\n IdxStatus,\n IdxTransaction,\n IdxFeature,\n NextStep,\n RunOptions,\n IdxTransactionMeta,\n} from './types';\nimport { IdxMessage, IdxResponse } from './types/idx-js';\nimport { getSavedTransactionMeta, saveTransactionMeta } from './transactionMeta';\nimport { getAvailableSteps, getEnabledFeatures, getMessagesFromResponse, isTerminalResponse } from './util';\nimport { Tokens } from '../oidc/types';\nimport { APIError } from '../errors/types';\ndeclare interface RunData {\n options: RunOptions;\n values: remediators.RemediationValues;\n status?: IdxStatus;\n tokens?: Tokens;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n error?: APIError | IdxResponse;\n meta?: IdxTransactionMeta;\n enabledFeatures?: IdxFeature[];\n availableSteps?: NextStep[];\n idxResponse?: IdxResponse;\n canceled?: boolean;\n interactionCode?: string;\n shouldSaveResponse?: boolean;\n shouldClearTransaction?: boolean;\n clearSharedStorage?: boolean;\n terminal?: boolean;\n}\n\nfunction initializeValues(options: RunOptions) {\n // remove known options, everything else is assumed to be a value\n const knownOptions = [\n 'flow', \n 'remediators', \n 'actions', \n 'withCredentials', \n 'step',\n 'useGenericRemediator',\n 'exchangeCodeForTokens',\n ];\n const values = { ...options };\n knownOptions.forEach(option => {\n delete values[option];\n });\n return values;\n}\n\nfunction initializeData(authClient, data: RunData): RunData {\n let { options } = data;\n options = {\n ...authClient.options.idx,\n ...options\n };\n let {\n flow,\n withCredentials,\n remediators,\n actions,\n } = options;\n\n const status = IdxStatus.PENDING;\n\n // certain options can be set by the flow specification\n flow = flow || authClient.idx.getFlow() || 'default';\n if (flow) {\n authClient.idx.setFlow(flow);\n const flowSpec = getFlowSpecification(authClient, flow);\n // Favor option values over flow spec\n withCredentials = (typeof withCredentials !== 'undefined') ? withCredentials : flowSpec.withCredentials;\n remediators = remediators || flowSpec.remediators;\n actions = actions || flowSpec.actions;\n }\n\n return { \n ...data,\n options: { \n ...options, \n flow, \n withCredentials, \n remediators, \n actions,\n },\n status\n };\n}\n\nasync function getDataFromIntrospect(authClient, data: RunData): Promise<RunData> {\n const { options } = data;\n const {\n stateHandle,\n withCredentials,\n version,\n state,\n scopes,\n recoveryToken,\n activationToken,\n maxAge,\n nonce,\n } = options;\n\n let idxResponse;\n let meta = getSavedTransactionMeta(authClient, { state, recoveryToken, activationToken }); // may be undefined\n\n if (stateHandle) {\n idxResponse = await introspect(authClient, { withCredentials, version, stateHandle });\n } else {\n let interactionHandle = meta?.interactionHandle; // may be undefined\n if (!interactionHandle) {\n // start a new transaction\n authClient.transactionManager.clear();\n const interactResponse = await interact(authClient, {\n withCredentials,\n state,\n scopes,\n activationToken,\n recoveryToken,\n maxAge,\n nonce,\n }); \n interactionHandle = interactResponse.interactionHandle;\n meta = interactResponse.meta;\n }\n \n // Introspect to get idx response\n idxResponse = await introspect(authClient, { withCredentials, version, interactionHandle });\n }\n return { ...data, idxResponse, meta };\n}\n\nasync function getDataFromRemediate(authClient, data: RunData): Promise<RunData> {\n let {\n idxResponse,\n options,\n values\n } = data;\n\n const {\n autoRemediate,\n remediators,\n actions,\n flow,\n step,\n useGenericRemediator,\n } = options;\n \n const shouldRemediate = (autoRemediate !== false && (remediators || actions || step));\n if (!shouldRemediate) {\n return data;\n }\n\n values = { \n ...values, \n stateHandle: idxResponse!.rawIdxState.stateHandle \n };\n\n // Can we handle the remediations?\n const { \n idxResponse: idxResponseFromRemediation, \n nextStep,\n canceled,\n } = await remediate(\n authClient,\n idxResponse!, \n values, \n {\n remediators,\n actions,\n flow,\n step,\n useGenericRemediator,\n }\n );\n idxResponse = idxResponseFromRemediation;\n\n return { ...data, idxResponse, nextStep, canceled };\n}\n\nasync function getTokens(authClient, data: RunData): Promise<Tokens> {\n let { meta, idxResponse } = data;\n const { interactionCode } = idxResponse as IdxResponse;\n const {\n clientId,\n codeVerifier,\n ignoreSignature,\n redirectUri,\n urls,\n scopes,\n } = meta as IdxTransactionMeta;\n const tokenResponse = await authClient.token.exchangeCodeForTokens({\n interactionCode,\n clientId,\n codeVerifier,\n ignoreSignature,\n redirectUri,\n scopes\n }, urls);\n return tokenResponse.tokens;\n}\n\nasync function finalizeData(authClient, data: RunData): Promise<RunData> {\n let {\n options,\n idxResponse,\n canceled,\n status,\n } = data;\n const { exchangeCodeForTokens } = options;\n let shouldSaveResponse = false;\n let shouldClearTransaction = false;\n let clearSharedStorage = true;\n let interactionCode;\n let tokens;\n let enabledFeatures;\n let availableSteps;\n let messages;\n let terminal;\n\n if (idxResponse) {\n shouldSaveResponse = !!(idxResponse.requestDidSucceed || idxResponse.stepUp);\n enabledFeatures = getEnabledFeatures(idxResponse);\n availableSteps = getAvailableSteps(authClient, idxResponse, options.useGenericRemediator);\n messages = getMessagesFromResponse(idxResponse, options);\n terminal = isTerminalResponse(idxResponse);\n }\n\n if (terminal) {\n status = IdxStatus.TERMINAL;\n\n // In most cases a terminal response should not clear transaction data. The user should cancel or skip to continue.\n // A terminal \"success\" is a non-error response with no further actions available.\n // In these narrow cases, saved transaction data should be cleared.\n // One example of a terminal success is when the email verify flow is continued in another tab\n const hasActions = Object.keys(idxResponse!.actions).length > 0;\n const hasErrors = !!messages.find(msg => msg.class === 'ERROR');\n const isTerminalSuccess = !hasActions && !hasErrors && idxResponse!.requestDidSucceed === true;\n if (isTerminalSuccess) {\n shouldClearTransaction = true;\n } else {\n // save response if there are actions available (ignore messages)\n shouldSaveResponse = !!hasActions;\n }\n // leave shared storage intact so the transaction can be continued in another tab\n clearSharedStorage = false;\n } else if (canceled) {\n status = IdxStatus.CANCELED;\n shouldClearTransaction = true;\n } else if (idxResponse?.interactionCode) { \n interactionCode = idxResponse.interactionCode;\n if (exchangeCodeForTokens === false) {\n status = IdxStatus.SUCCESS;\n shouldClearTransaction = false;\n } else {\n tokens = await getTokens(authClient, data);\n status = IdxStatus.SUCCESS;\n shouldClearTransaction = true;\n }\n }\n return {\n ...data,\n status,\n interactionCode,\n tokens,\n shouldSaveResponse,\n shouldClearTransaction,\n clearSharedStorage,\n enabledFeatures,\n availableSteps,\n messages,\n terminal\n };\n}\n\nexport async function run(\n authClient: OktaAuthIdxInterface, \n options: RunOptions = {},\n): Promise<IdxTransaction> {\n let data: RunData = {\n options,\n values: initializeValues(options)\n };\n\n data = initializeData(authClient, data);\n data = await getDataFromIntrospect(authClient, data);\n data = await getDataFromRemediate(authClient, data);\n data = await finalizeData(authClient, data);\n\n const {\n idxResponse,\n meta,\n shouldSaveResponse,\n shouldClearTransaction,\n clearSharedStorage,\n status,\n enabledFeatures,\n availableSteps,\n tokens,\n nextStep,\n messages,\n error,\n interactionCode\n } = data;\n\n if (shouldClearTransaction) {\n authClient.transactionManager.clear({ clearSharedStorage });\n }\n else {\n // ensures state is saved to sessionStorage\n saveTransactionMeta(authClient, { ...meta });\n\n if (shouldSaveResponse) {\n // Save intermediate idx response in storage to reduce introspect call\n const { rawIdxState: rawIdxResponse, requestDidSucceed } = idxResponse!;\n authClient.transactionManager.saveIdxResponse({\n rawIdxResponse,\n requestDidSucceed,\n stateHandle: idxResponse!.context?.stateHandle,\n interactionHandle: meta?.interactionHandle\n });\n }\n }\n \n // copy all fields from idxResponse which are needed by the widget\n const { actions, context, neededToProceed, proceed, rawIdxState, requestDidSucceed, stepUp } = idxResponse || {};\n return {\n status: status!,\n ...(meta && { meta }),\n ...(enabledFeatures && { enabledFeatures }),\n ...(availableSteps && { availableSteps }),\n ...(tokens && { tokens }),\n ...(nextStep && { nextStep }),\n ...(messages && messages.length && { messages }),\n ...(error && { error }),\n ...(stepUp && { stepUp }),\n interactionCode, // if options.exchangeCodeForTokens is false\n\n // from idx-js\n actions: actions!,\n context: context!,\n neededToProceed: neededToProceed!,\n proceed: proceed!,\n rawIdxState: rawIdxState!,\n requestDidSucceed\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"run.js","names":["initializeValues","options","knownOptions","values","forEach","option","initializeData","authClient","data","idx","flow","withCredentials","remediators","actions","status","IdxStatus","PENDING","getFlow","setFlow","flowSpec","getFlowSpecification","getDataFromIntrospect","stateHandle","version","state","scopes","recoveryToken","activationToken","maxAge","acrValues","nonce","idxResponse","meta","getSavedTransactionMeta","introspect","interactionHandle","transactionManager","clear","interactResponse","interact","getDataFromRemediate","autoRemediate","step","useGenericRemediator","shouldRemediate","rawIdxState","idxResponseFromRemediation","nextStep","canceled","remediate","getTokens","interactionCode","clientId","codeVerifier","ignoreSignature","redirectUri","urls","tokenResponse","token","exchangeCodeForTokens","tokens","finalizeData","shouldSaveResponse","shouldClearTransaction","clearSharedStorage","enabledFeatures","availableSteps","messages","terminal","requestDidSucceed","stepUp","getEnabledFeatures","getAvailableSteps","getMessagesFromResponse","isTerminalResponse","TERMINAL","hasActions","Object","keys","length","hasErrors","find","msg","class","isTerminalSuccess","CANCELED","SUCCESS","run","error","saveTransactionMeta","rawIdxResponse","saveIdxResponse","context","neededToProceed","proceed"],"sources":["../../../lib/idx/run.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\n/* eslint-disable max-statements, complexity, max-depth */\nimport { interact } from './interact';\nimport { introspect } from './introspect';\nimport { remediate } from './remediate';\nimport { getFlowSpecification } from './flow';\nimport * as remediators from './remediators';\nimport { \n OktaAuthIdxInterface,\n IdxStatus,\n IdxTransaction,\n IdxFeature,\n NextStep,\n RunOptions,\n IdxTransactionMeta,\n} from './types';\nimport { IdxMessage, IdxResponse } from './types/idx-js';\nimport { getSavedTransactionMeta, saveTransactionMeta } from './transactionMeta';\nimport { getAvailableSteps, getEnabledFeatures, getMessagesFromResponse, isTerminalResponse } from './util';\nimport { Tokens } from '../oidc/types';\nimport { APIError } from '../errors/types';\ndeclare interface RunData {\n options: RunOptions;\n values: remediators.RemediationValues;\n status?: IdxStatus;\n tokens?: Tokens;\n nextStep?: NextStep;\n messages?: IdxMessage[];\n error?: APIError | IdxResponse;\n meta?: IdxTransactionMeta;\n enabledFeatures?: IdxFeature[];\n availableSteps?: NextStep[];\n idxResponse?: IdxResponse;\n canceled?: boolean;\n interactionCode?: string;\n shouldSaveResponse?: boolean;\n shouldClearTransaction?: boolean;\n clearSharedStorage?: boolean;\n terminal?: boolean;\n}\n\nfunction initializeValues(options: RunOptions) {\n // remove known options, everything else is assumed to be a value\n const knownOptions = [\n 'flow', \n 'remediators', \n 'actions', \n 'withCredentials', \n 'step',\n 'useGenericRemediator',\n 'exchangeCodeForTokens',\n ];\n const values = { ...options };\n knownOptions.forEach(option => {\n delete values[option];\n });\n return values;\n}\n\nfunction initializeData(authClient, data: RunData): RunData {\n let { options } = data;\n options = {\n ...authClient.options.idx,\n ...options\n };\n let {\n flow,\n withCredentials,\n remediators,\n actions,\n } = options;\n\n const status = IdxStatus.PENDING;\n\n // certain options can be set by the flow specification\n flow = flow || authClient.idx.getFlow() || 'default';\n if (flow) {\n authClient.idx.setFlow(flow);\n const flowSpec = getFlowSpecification(authClient, flow);\n // Favor option values over flow spec\n withCredentials = (typeof withCredentials !== 'undefined') ? withCredentials : flowSpec.withCredentials;\n remediators = remediators || flowSpec.remediators;\n actions = actions || flowSpec.actions;\n }\n\n return { \n ...data,\n options: { \n ...options, \n flow, \n withCredentials, \n remediators, \n actions,\n },\n status\n };\n}\n\nasync function getDataFromIntrospect(authClient, data: RunData): Promise<RunData> {\n const { options } = data;\n const {\n stateHandle,\n withCredentials,\n version,\n state,\n scopes,\n recoveryToken,\n activationToken,\n maxAge,\n acrValues,\n nonce,\n } = options;\n\n let idxResponse;\n let meta = getSavedTransactionMeta(authClient, { state, recoveryToken, activationToken }); // may be undefined\n\n if (stateHandle) {\n idxResponse = await introspect(authClient, { withCredentials, version, stateHandle });\n } else {\n let interactionHandle = meta?.interactionHandle; // may be undefined\n if (!interactionHandle) {\n // start a new transaction\n authClient.transactionManager.clear();\n const interactResponse = await interact(authClient, {\n withCredentials,\n state,\n scopes,\n activationToken,\n recoveryToken,\n maxAge,\n acrValues,\n nonce,\n }); \n interactionHandle = interactResponse.interactionHandle;\n meta = interactResponse.meta;\n }\n \n // Introspect to get idx response\n idxResponse = await introspect(authClient, { withCredentials, version, interactionHandle });\n }\n return { ...data, idxResponse, meta };\n}\n\nasync function getDataFromRemediate(authClient, data: RunData): Promise<RunData> {\n let {\n idxResponse,\n options,\n values\n } = data;\n\n const {\n autoRemediate,\n remediators,\n actions,\n flow,\n step,\n useGenericRemediator,\n } = options;\n \n const shouldRemediate = (autoRemediate !== false && (remediators || actions || step));\n if (!shouldRemediate) {\n return data;\n }\n\n values = { \n ...values, \n stateHandle: idxResponse!.rawIdxState.stateHandle \n };\n\n // Can we handle the remediations?\n const { \n idxResponse: idxResponseFromRemediation, \n nextStep,\n canceled,\n } = await remediate(\n authClient,\n idxResponse!, \n values, \n {\n remediators,\n actions,\n flow,\n step,\n useGenericRemediator,\n }\n );\n idxResponse = idxResponseFromRemediation;\n\n return { ...data, idxResponse, nextStep, canceled };\n}\n\nasync function getTokens(authClient, data: RunData): Promise<Tokens> {\n let { meta, idxResponse } = data;\n const { interactionCode } = idxResponse as IdxResponse;\n const {\n clientId,\n codeVerifier,\n ignoreSignature,\n redirectUri,\n urls,\n scopes,\n } = meta as IdxTransactionMeta;\n const tokenResponse = await authClient.token.exchangeCodeForTokens({\n interactionCode,\n clientId,\n codeVerifier,\n ignoreSignature,\n redirectUri,\n scopes\n }, urls);\n return tokenResponse.tokens;\n}\n\nasync function finalizeData(authClient, data: RunData): Promise<RunData> {\n let {\n options,\n idxResponse,\n canceled,\n status,\n } = data;\n const { exchangeCodeForTokens } = options;\n let shouldSaveResponse = false;\n let shouldClearTransaction = false;\n let clearSharedStorage = true;\n let interactionCode;\n let tokens;\n let enabledFeatures;\n let availableSteps;\n let messages;\n let terminal;\n\n if (idxResponse) {\n shouldSaveResponse = !!(idxResponse.requestDidSucceed || idxResponse.stepUp);\n enabledFeatures = getEnabledFeatures(idxResponse);\n availableSteps = getAvailableSteps(authClient, idxResponse, options.useGenericRemediator);\n messages = getMessagesFromResponse(idxResponse, options);\n terminal = isTerminalResponse(idxResponse);\n }\n\n if (terminal) {\n status = IdxStatus.TERMINAL;\n\n // In most cases a terminal response should not clear transaction data. The user should cancel or skip to continue.\n // A terminal \"success\" is a non-error response with no further actions available.\n // In these narrow cases, saved transaction data should be cleared.\n // One example of a terminal success is when the email verify flow is continued in another tab\n const hasActions = Object.keys(idxResponse!.actions).length > 0;\n const hasErrors = !!messages.find(msg => msg.class === 'ERROR');\n const isTerminalSuccess = !hasActions && !hasErrors && idxResponse!.requestDidSucceed === true;\n if (isTerminalSuccess) {\n shouldClearTransaction = true;\n } else {\n // save response if there are actions available (ignore messages)\n shouldSaveResponse = !!hasActions;\n }\n // leave shared storage intact so the transaction can be continued in another tab\n clearSharedStorage = false;\n } else if (canceled) {\n status = IdxStatus.CANCELED;\n shouldClearTransaction = true;\n } else if (idxResponse?.interactionCode) { \n interactionCode = idxResponse.interactionCode;\n if (exchangeCodeForTokens === false) {\n status = IdxStatus.SUCCESS;\n shouldClearTransaction = false;\n } else {\n tokens = await getTokens(authClient, data);\n status = IdxStatus.SUCCESS;\n shouldClearTransaction = true;\n }\n }\n return {\n ...data,\n status,\n interactionCode,\n tokens,\n shouldSaveResponse,\n shouldClearTransaction,\n clearSharedStorage,\n enabledFeatures,\n availableSteps,\n messages,\n terminal\n };\n}\n\nexport async function run(\n authClient: OktaAuthIdxInterface, \n options: RunOptions = {},\n): Promise<IdxTransaction> {\n let data: RunData = {\n options,\n values: initializeValues(options)\n };\n\n data = initializeData(authClient, data);\n data = await getDataFromIntrospect(authClient, data);\n data = await getDataFromRemediate(authClient, data);\n data = await finalizeData(authClient, data);\n\n const {\n idxResponse,\n meta,\n shouldSaveResponse,\n shouldClearTransaction,\n clearSharedStorage,\n status,\n enabledFeatures,\n availableSteps,\n tokens,\n nextStep,\n messages,\n error,\n interactionCode\n } = data;\n\n if (shouldClearTransaction) {\n authClient.transactionManager.clear({ clearSharedStorage });\n }\n else {\n // ensures state is saved to sessionStorage\n saveTransactionMeta(authClient, { ...meta });\n\n if (shouldSaveResponse) {\n // Save intermediate idx response in storage to reduce introspect call\n const { rawIdxState: rawIdxResponse, requestDidSucceed } = idxResponse!;\n authClient.transactionManager.saveIdxResponse({\n rawIdxResponse,\n requestDidSucceed,\n stateHandle: idxResponse!.context?.stateHandle,\n interactionHandle: meta?.interactionHandle\n });\n }\n }\n \n // copy all fields from idxResponse which are needed by the widget\n const { actions, context, neededToProceed, proceed, rawIdxState, requestDidSucceed, stepUp } = idxResponse || {};\n return {\n status: status!,\n ...(meta && { meta }),\n ...(enabledFeatures && { enabledFeatures }),\n ...(availableSteps && { availableSteps }),\n ...(tokens && { tokens }),\n ...(nextStep && { nextStep }),\n ...(messages && messages.length && { messages }),\n ...(error && { error }),\n ...(stepUp && { stepUp }),\n interactionCode, // if options.exchangeCodeForTokens is false\n\n // from idx-js\n actions: actions!,\n context: context!,\n neededToProceed: neededToProceed!,\n proceed: proceed!,\n rawIdxState: rawIdxState!,\n requestDidSucceed\n };\n}\n"],"mappings":"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"}
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  exports.startTransaction = startTransaction;
4
-
5
4
  var _run = require("./run");
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 _run = require("./run");
15
13
  *
16
14
  * See the License for the specific language governing permissions and limitations under the License.
17
15
  */
16
+
18
17
  async function startTransaction(authClient, options = {}) {
19
18
  // Clear IDX response cache and saved transaction meta (if any)
20
19
  authClient.transactionManager.clear();
@@ -1 +1 @@
1
- {"version":3,"file":"startTransaction.js","names":["startTransaction","authClient","options","transactionManager","clear","run","exchangeCodeForTokens"],"sources":["../../../lib/idx/startTransaction.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { OktaAuthIdxInterface, IdxTransaction, StartOptions } from './types';\n\nexport async function startTransaction(\n authClient: OktaAuthIdxInterface, \n options: StartOptions = {}\n): Promise<IdxTransaction> {\n // Clear IDX response cache and saved transaction meta (if any)\n authClient.transactionManager.clear();\n\n return run(authClient, {\n exchangeCodeForTokens: false,\n ...options\n });\n}\n"],"mappings":";;;;AAaA;;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMO,eAAeA,gBAAf,CACLC,UADK,EAELC,OAAqB,GAAG,EAFnB,EAGoB;EACzB;EACAD,UAAU,CAACE,kBAAX,CAA8BC,KAA9B;EAEA,OAAO,IAAAC,QAAA,EAAIJ,UAAJ,EAAgB;IACrBK,qBAAqB,EAAE,KADF;IAErB,GAAGJ;EAFkB,CAAhB,CAAP;AAID"}
1
+ {"version":3,"file":"startTransaction.js","names":["startTransaction","authClient","options","transactionManager","clear","run","exchangeCodeForTokens"],"sources":["../../../lib/idx/startTransaction.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * \n * See the License for the specific language governing permissions and limitations under the License.\n */\n\n\nimport { run } from './run';\nimport { OktaAuthIdxInterface, IdxTransaction, StartOptions } from './types';\n\nexport async function startTransaction(\n authClient: OktaAuthIdxInterface, \n options: StartOptions = {}\n): Promise<IdxTransaction> {\n // Clear IDX response cache and saved transaction meta (if any)\n authClient.transactionManager.clear();\n\n return run(authClient, {\n exchangeCodeForTokens: false,\n ...options\n });\n}\n"],"mappings":";;;AAaA;AAbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMO,eAAeA,gBAAgB,CACpCC,UAAgC,EAChCC,OAAqB,GAAG,CAAC,CAAC,EACD;EACzB;EACAD,UAAU,CAACE,kBAAkB,CAACC,KAAK,EAAE;EAErC,OAAO,IAAAC,QAAG,EAACJ,UAAU,EAAE;IACrBK,qBAAqB,EAAE,KAAK;IAC5B,GAAGJ;EACL,CAAC,CAAC;AACJ"}
@@ -1,34 +1,25 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  exports.createIdxStorageManager = createIdxStorageManager;
6
-
7
5
  var _storage = require("../storage");
8
-
9
6
  var _constants = require("../constants");
10
-
11
7
  var _storage2 = require("../core/storage");
12
-
13
8
  var _features = require("../features");
14
-
15
9
  var _util = require("../util");
16
-
17
10
  var _AuthSdkError = _interopRequireDefault(require("../errors/AuthSdkError"));
18
-
19
11
  function createIdxStorageManager() {
20
12
  const CoreStorageManager = (0, _storage2.createCoreStorageManager)();
21
13
  return class IdxStorageManager extends CoreStorageManager {
22
14
  constructor(storageManagerOptions, cookieOptions, storageUtil) {
23
15
  super(storageManagerOptions, cookieOptions, storageUtil);
24
- } // intermediate idxResponse
16
+ }
17
+
18
+ // intermediate idxResponse
25
19
  // store for network traffic optimazation purpose
26
20
  // TODO: revisit in auth-js 6.0 epic JIRA: OKTA-399791
27
-
28
-
29
21
  getIdxResponseStorage(options) {
30
22
  let storage;
31
-
32
23
  if ((0, _features.isBrowser)()) {
33
24
  // on browser side only use memory storage
34
25
  try {
@@ -41,49 +32,39 @@ function createIdxStorageManager() {
41
32
  } else {
42
33
  // on server side re-use transaction custom storage
43
34
  const transactionStorage = this.getTransactionStorage(options);
44
-
45
35
  if (transactionStorage) {
46
36
  storage = {
47
37
  getItem: key => {
48
38
  const transaction = transactionStorage.getStorage();
49
-
50
39
  if (transaction && transaction[key]) {
51
40
  return transaction[key];
52
41
  }
53
-
54
42
  return null;
55
43
  },
56
44
  setItem: (key, val) => {
57
45
  const transaction = transactionStorage.getStorage();
58
-
59
46
  if (!transaction) {
60
47
  throw new _AuthSdkError.default('Transaction has been cleared, failed to save idxState');
61
48
  }
62
-
63
49
  transaction[key] = val;
64
50
  transactionStorage.setStorage(transaction);
65
51
  },
66
52
  removeItem: key => {
67
53
  const transaction = transactionStorage.getStorage();
68
-
69
54
  if (!transaction) {
70
55
  return;
71
56
  }
72
-
73
57
  delete transaction[key];
74
58
  transactionStorage.setStorage(transaction);
75
59
  }
76
60
  };
77
61
  }
78
62
  }
79
-
80
63
  if (!storage) {
81
64
  return null;
82
65
  }
83
-
84
66
  return new _storage.SavedObject(storage, _constants.IDX_RESPONSE_STORAGE_NAME);
85
67
  }
86
-
87
68
  };
88
69
  }
89
70
  //# sourceMappingURL=storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","names":["createIdxStorageManager","CoreStorageManager","createCoreStorageManager","IdxStorageManager","constructor","storageManagerOptions","cookieOptions","storageUtil","getIdxResponseStorage","options","storage","isBrowser","getStorageByType","e","warn","transactionStorage","getTransactionStorage","getItem","key","transaction","getStorage","setItem","val","AuthSdkError","setStorage","removeItem","SavedObject","IDX_RESPONSE_STORAGE_NAME"],"sources":["../../../lib/idx/storage.ts"],"sourcesContent":["import { CookieOptions, StorageManagerOptions, StorageOptions, StorageUtil } from '../storage/types';\nimport { IdxTransactionMeta } from './types';\nimport { SavedObject } from '../storage';\nimport { IDX_RESPONSE_STORAGE_NAME } from '../constants';\nimport { createCoreStorageManager } from '../core/storage';\nimport { IdxResponseStorage } from './types/storage';\nimport { isBrowser } from '../features';\nimport { warn } from '../util';\nimport AuthSdkError from '../errors/AuthSdkError';\n\nexport function createIdxStorageManager<M extends IdxTransactionMeta>()\n{\n const CoreStorageManager = createCoreStorageManager<M>();\n return class IdxStorageManager extends CoreStorageManager\n {\n constructor(storageManagerOptions: StorageManagerOptions, cookieOptions: CookieOptions, storageUtil: StorageUtil) {\n super(storageManagerOptions, cookieOptions, storageUtil);\n }\n\n // intermediate idxResponse\n // store for network traffic optimazation purpose\n // TODO: revisit in auth-js 6.0 epic JIRA: OKTA-399791\n getIdxResponseStorage(options?: StorageOptions): IdxResponseStorage | null {\n let storage;\n if (isBrowser()) {\n // on browser side only use memory storage \n try {\n storage = this.storageUtil.getStorageByType('memory', options);\n } catch (e) {\n // it's ok to miss response storage\n // eslint-disable-next-line max-len\n warn('No response storage found, you may want to provide custom implementation for intermediate idx responses to optimize the network traffic');\n }\n } else {\n // on server side re-use transaction custom storage\n const transactionStorage = this.getTransactionStorage(options);\n if (transactionStorage) {\n storage = {\n getItem: (key) => {\n const transaction = transactionStorage.getStorage();\n if (transaction && transaction[key]) {\n return transaction[key];\n }\n return null;\n },\n setItem: (key, val) => {\n const transaction = transactionStorage.getStorage();\n if (!transaction) {\n throw new AuthSdkError('Transaction has been cleared, failed to save idxState');\n }\n transaction[key] = val;\n transactionStorage.setStorage(transaction);\n },\n removeItem: (key) => {\n const transaction = transactionStorage.getStorage();\n if (!transaction) {\n return;\n }\n delete transaction[key];\n transactionStorage.setStorage(transaction);\n }\n };\n }\n }\n\n if (!storage) {\n return null;\n }\n\n return new SavedObject(storage, IDX_RESPONSE_STORAGE_NAME);\n }\n };\n}\n"],"mappings":";;;;;;AAEA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEO,SAASA,uBAAT,GACP;EACE,MAAMC,kBAAkB,GAAG,IAAAC,kCAAA,GAA3B;EACA,OAAO,MAAMC,iBAAN,SAAgCF,kBAAhC,CACP;IACEG,WAAW,CAACC,qBAAD,EAA+CC,aAA/C,EAA6EC,WAA7E,EAAuG;MAChH,MAAMF,qBAAN,EAA6BC,aAA7B,EAA4CC,WAA5C;IACD,CAHH,CAKE;IACA;IACA;;;IACAC,qBAAqB,CAACC,OAAD,EAAsD;MACzE,IAAIC,OAAJ;;MACA,IAAI,IAAAC,mBAAA,GAAJ,EAAiB;QACf;QACA,IAAI;UACFD,OAAO,GAAG,KAAKH,WAAL,CAAiBK,gBAAjB,CAAkC,QAAlC,EAA4CH,OAA5C,CAAV;QACD,CAFD,CAEE,OAAOI,CAAP,EAAU;UACV;UACA;UACA,IAAAC,UAAA,EAAK,yIAAL;QACD;MACF,CATD,MASO;QACL;QACA,MAAMC,kBAAkB,GAAG,KAAKC,qBAAL,CAA2BP,OAA3B,CAA3B;;QACA,IAAIM,kBAAJ,EAAwB;UACtBL,OAAO,GAAG;YACRO,OAAO,EAAGC,GAAD,IAAS;cAChB,MAAMC,WAAW,GAAGJ,kBAAkB,CAACK,UAAnB,EAApB;;cACA,IAAID,WAAW,IAAIA,WAAW,CAACD,GAAD,CAA9B,EAAqC;gBACnC,OAAOC,WAAW,CAACD,GAAD,CAAlB;cACD;;cACD,OAAO,IAAP;YACD,CAPO;YAQRG,OAAO,EAAE,CAACH,GAAD,EAAMI,GAAN,KAAc;cACrB,MAAMH,WAAW,GAAGJ,kBAAkB,CAACK,UAAnB,EAApB;;cACA,IAAI,CAACD,WAAL,EAAkB;gBAChB,MAAM,IAAII,qBAAJ,CAAiB,uDAAjB,CAAN;cACD;;cACDJ,WAAW,CAACD,GAAD,CAAX,GAAmBI,GAAnB;cACAP,kBAAkB,CAACS,UAAnB,CAA8BL,WAA9B;YACD,CAfO;YAgBRM,UAAU,EAAGP,GAAD,IAAS;cACnB,MAAMC,WAAW,GAAGJ,kBAAkB,CAACK,UAAnB,EAApB;;cACA,IAAI,CAACD,WAAL,EAAkB;gBAChB;cACD;;cACD,OAAOA,WAAW,CAACD,GAAD,CAAlB;cACAH,kBAAkB,CAACS,UAAnB,CAA8BL,WAA9B;YACD;UAvBO,CAAV;QAyBD;MACF;;MAED,IAAI,CAACT,OAAL,EAAc;QACZ,OAAO,IAAP;MACD;;MAED,OAAO,IAAIgB,oBAAJ,CAAgBhB,OAAhB,EAAyBiB,oCAAzB,CAAP;IACD;;EAxDH,CADA;AA2DD"}
1
+ {"version":3,"file":"storage.js","names":["createIdxStorageManager","CoreStorageManager","createCoreStorageManager","IdxStorageManager","constructor","storageManagerOptions","cookieOptions","storageUtil","getIdxResponseStorage","options","storage","isBrowser","getStorageByType","e","warn","transactionStorage","getTransactionStorage","getItem","key","transaction","getStorage","setItem","val","AuthSdkError","setStorage","removeItem","SavedObject","IDX_RESPONSE_STORAGE_NAME"],"sources":["../../../lib/idx/storage.ts"],"sourcesContent":["import { CookieOptions, StorageManagerOptions, StorageOptions, StorageUtil } from '../storage/types';\nimport { IdxTransactionMeta } from './types';\nimport { SavedObject } from '../storage';\nimport { IDX_RESPONSE_STORAGE_NAME } from '../constants';\nimport { createCoreStorageManager } from '../core/storage';\nimport { IdxResponseStorage } from './types/storage';\nimport { isBrowser } from '../features';\nimport { warn } from '../util';\nimport AuthSdkError from '../errors/AuthSdkError';\n\nexport function createIdxStorageManager<M extends IdxTransactionMeta>()\n{\n const CoreStorageManager = createCoreStorageManager<M>();\n return class IdxStorageManager extends CoreStorageManager\n {\n constructor(storageManagerOptions: StorageManagerOptions, cookieOptions: CookieOptions, storageUtil: StorageUtil) {\n super(storageManagerOptions, cookieOptions, storageUtil);\n }\n\n // intermediate idxResponse\n // store for network traffic optimazation purpose\n // TODO: revisit in auth-js 6.0 epic JIRA: OKTA-399791\n getIdxResponseStorage(options?: StorageOptions): IdxResponseStorage | null {\n let storage;\n if (isBrowser()) {\n // on browser side only use memory storage \n try {\n storage = this.storageUtil.getStorageByType('memory', options);\n } catch (e) {\n // it's ok to miss response storage\n // eslint-disable-next-line max-len\n warn('No response storage found, you may want to provide custom implementation for intermediate idx responses to optimize the network traffic');\n }\n } else {\n // on server side re-use transaction custom storage\n const transactionStorage = this.getTransactionStorage(options);\n if (transactionStorage) {\n storage = {\n getItem: (key) => {\n const transaction = transactionStorage.getStorage();\n if (transaction && transaction[key]) {\n return transaction[key];\n }\n return null;\n },\n setItem: (key, val) => {\n const transaction = transactionStorage.getStorage();\n if (!transaction) {\n throw new AuthSdkError('Transaction has been cleared, failed to save idxState');\n }\n transaction[key] = val;\n transactionStorage.setStorage(transaction);\n },\n removeItem: (key) => {\n const transaction = transactionStorage.getStorage();\n if (!transaction) {\n return;\n }\n delete transaction[key];\n transactionStorage.setStorage(transaction);\n }\n };\n }\n }\n\n if (!storage) {\n return null;\n }\n\n return new SavedObject(storage, IDX_RESPONSE_STORAGE_NAME);\n }\n };\n}\n"],"mappings":";;;;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEO,SAASA,uBAAuB,GACvC;EACE,MAAMC,kBAAkB,GAAG,IAAAC,kCAAwB,GAAK;EACxD,OAAO,MAAMC,iBAAiB,SAASF,kBAAkB,CACzD;IACEG,WAAW,CAACC,qBAA4C,EAAEC,aAA4B,EAAEC,WAAwB,EAAE;MAChH,KAAK,CAACF,qBAAqB,EAAEC,aAAa,EAAEC,WAAW,CAAC;IAC1D;;IAEA;IACA;IACA;IACAC,qBAAqB,CAACC,OAAwB,EAA6B;MACzE,IAAIC,OAAO;MACX,IAAI,IAAAC,mBAAS,GAAE,EAAE;QACf;QACA,IAAI;UACFD,OAAO,GAAG,IAAI,CAACH,WAAW,CAACK,gBAAgB,CAAC,QAAQ,EAAEH,OAAO,CAAC;QAChE,CAAC,CAAC,OAAOI,CAAC,EAAE;UACV;UACA;UACA,IAAAC,UAAI,EAAC,yIAAyI,CAAC;QACjJ;MACF,CAAC,MAAM;QACL;QACA,MAAMC,kBAAkB,GAAG,IAAI,CAACC,qBAAqB,CAACP,OAAO,CAAC;QAC9D,IAAIM,kBAAkB,EAAE;UACtBL,OAAO,GAAG;YACRO,OAAO,EAAGC,GAAG,IAAK;cAChB,MAAMC,WAAW,GAAGJ,kBAAkB,CAACK,UAAU,EAAE;cACnD,IAAID,WAAW,IAAIA,WAAW,CAACD,GAAG,CAAC,EAAE;gBACnC,OAAOC,WAAW,CAACD,GAAG,CAAC;cACzB;cACA,OAAO,IAAI;YACb,CAAC;YACDG,OAAO,EAAE,CAACH,GAAG,EAAEI,GAAG,KAAK;cACrB,MAAMH,WAAW,GAAGJ,kBAAkB,CAACK,UAAU,EAAE;cACnD,IAAI,CAACD,WAAW,EAAE;gBAChB,MAAM,IAAII,qBAAY,CAAC,uDAAuD,CAAC;cACjF;cACAJ,WAAW,CAACD,GAAG,CAAC,GAAGI,GAAG;cACtBP,kBAAkB,CAACS,UAAU,CAACL,WAAW,CAAC;YAC5C,CAAC;YACDM,UAAU,EAAGP,GAAG,IAAK;cACnB,MAAMC,WAAW,GAAGJ,kBAAkB,CAACK,UAAU,EAAE;cACnD,IAAI,CAACD,WAAW,EAAE;gBAChB;cACF;cACA,OAAOA,WAAW,CAACD,GAAG,CAAC;cACvBH,kBAAkB,CAACS,UAAU,CAACL,WAAW,CAAC;YAC5C;UACF,CAAC;QACH;MACF;MAEA,IAAI,CAACT,OAAO,EAAE;QACZ,OAAO,IAAI;MACb;MAEA,OAAO,IAAIgB,oBAAW,CAAChB,OAAO,EAAEiB,oCAAyB,CAAC;IAC5D;EACF,CAAC;AACH"}