@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
@@ -1,23 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  exports.TokenManager = void 0;
6
-
7
5
  var _util = require("../util");
8
-
9
6
  var _errors = require("../errors");
10
-
11
7
  var _util2 = require("../oidc/util");
12
-
13
8
  var _features = require("../features");
14
-
15
9
  var _clock = _interopRequireDefault(require("../clock"));
16
-
17
10
  var _types = require("./types");
18
-
19
11
  var _constants = require("../constants");
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.")
@@ -30,6 +21,7 @@ var _constants = require("../constants");
30
21
  * See the License for the specific language governing permissions and limitations under the License.
31
22
  *
32
23
  */
24
+
33
25
  const DEFAULT_OPTIONS = {
34
26
  // TODO: remove in next major version - OKTA-473815
35
27
  autoRenew: true,
@@ -42,14 +34,12 @@ const DEFAULT_OPTIONS = {
42
34
  expireEarlySeconds: 30,
43
35
  storageKey: _constants.TOKEN_STORAGE_NAME
44
36
  };
45
-
46
37
  function defaultState() {
47
38
  return {
48
39
  expireTimeouts: {},
49
40
  renewPromise: null
50
41
  };
51
42
  }
52
-
53
43
  class TokenManager {
54
44
  on(event, handler, context) {
55
45
  if (context) {
@@ -58,151 +48,127 @@ class TokenManager {
58
48
  this.emitter.on(event, handler);
59
49
  }
60
50
  }
61
-
62
51
  off(event, handler) {
63
52
  if (handler) {
64
53
  this.emitter.off(event, handler);
65
54
  } else {
66
55
  this.emitter.off(event);
67
56
  }
68
- } // eslint-disable-next-line complexity
69
-
57
+ }
70
58
 
59
+ // eslint-disable-next-line complexity
71
60
  constructor(sdk, options = {}) {
72
61
  this.sdk = sdk;
73
62
  this.emitter = sdk.emitter;
74
-
75
63
  if (!this.emitter) {
76
64
  throw new _errors.AuthSdkError('Emitter should be initialized before TokenManager');
77
65
  }
78
-
79
66
  options = Object.assign({}, DEFAULT_OPTIONS, (0, _util.removeNils)(options));
80
-
81
67
  if (!(0, _features.isLocalhost)()) {
82
68
  options.expireEarlySeconds = DEFAULT_OPTIONS.expireEarlySeconds;
83
69
  }
84
-
85
70
  this.options = options;
86
71
  const storageOptions = (0, _util.removeNils)({
87
72
  storageKey: options.storageKey,
88
73
  secure: options.secure
89
74
  });
90
-
91
75
  if (typeof options.storage === 'object') {
92
76
  // A custom storage provider must implement getItem(key) and setItem(key, val)
93
77
  storageOptions.storageProvider = options.storage;
94
78
  } else if (options.storage) {
95
79
  storageOptions.storageType = options.storage;
96
80
  }
97
-
98
- this.storage = sdk.storageManager.getTokenStorage({ ...storageOptions,
81
+ this.storage = sdk.storageManager.getTokenStorage({
82
+ ...storageOptions,
99
83
  useSeparateCookies: true
100
84
  });
101
85
  this.clock = _clock.default.create();
102
86
  this.state = defaultState();
103
87
  }
104
-
105
88
  start() {
106
89
  if (this.options.clearPendingRemoveTokens) {
107
90
  this.clearPendingRemoveTokens();
108
91
  }
109
-
110
92
  this.setExpireEventTimeoutAll();
111
93
  }
112
-
113
94
  stop() {
114
95
  this.clearExpireEventTimeoutAll();
115
96
  }
116
-
117
97
  getOptions() {
118
98
  return (0, _util.clone)(this.options);
119
99
  }
120
-
121
100
  getExpireTime(token) {
122
101
  const expireEarlySeconds = this.options.expireEarlySeconds || 0;
123
102
  var expireTime = token.expiresAt - expireEarlySeconds;
124
103
  return expireTime;
125
104
  }
126
-
127
105
  hasExpired(token) {
128
106
  var expireTime = this.getExpireTime(token);
129
107
  return expireTime <= this.clock.now();
130
108
  }
131
-
132
109
  emitExpired(key, token) {
133
110
  this.emitter.emit(_types.EVENT_EXPIRED, key, token);
134
111
  }
135
-
136
112
  emitRenewed(key, freshToken, oldToken) {
137
113
  this.emitter.emit(_types.EVENT_RENEWED, key, freshToken, oldToken);
138
114
  }
139
-
140
115
  emitAdded(key, token) {
141
116
  this.emitter.emit(_types.EVENT_ADDED, key, token);
142
117
  }
143
-
144
118
  emitRemoved(key, token) {
145
119
  this.emitter.emit(_types.EVENT_REMOVED, key, token);
146
120
  }
147
-
148
121
  emitError(error) {
149
122
  this.emitter.emit(_types.EVENT_ERROR, error);
150
123
  }
151
-
152
124
  clearExpireEventTimeout(key) {
153
125
  clearTimeout(this.state.expireTimeouts[key]);
154
- delete this.state.expireTimeouts[key]; // Remove the renew promise (if it exists)
126
+ delete this.state.expireTimeouts[key];
155
127
 
128
+ // Remove the renew promise (if it exists)
156
129
  this.state.renewPromise = null;
157
130
  }
158
-
159
131
  clearExpireEventTimeoutAll() {
160
132
  var expireTimeouts = this.state.expireTimeouts;
161
-
162
133
  for (var key in expireTimeouts) {
163
134
  if (!Object.prototype.hasOwnProperty.call(expireTimeouts, key)) {
164
135
  continue;
165
136
  }
166
-
167
137
  this.clearExpireEventTimeout(key);
168
138
  }
169
139
  }
170
-
171
140
  setExpireEventTimeout(key, token) {
172
141
  if ((0, _types.isRefreshToken)(token)) {
173
142
  return;
174
143
  }
175
-
176
144
  var expireTime = this.getExpireTime(token);
177
- var expireEventWait = Math.max(expireTime - this.clock.now(), 0) * 1000; // Clear any existing timeout
145
+ var expireEventWait = Math.max(expireTime - this.clock.now(), 0) * 1000;
178
146
 
147
+ // Clear any existing timeout
179
148
  this.clearExpireEventTimeout(key);
180
149
  var expireEventTimeout = setTimeout(() => {
181
150
  this.emitExpired(key, token);
182
- }, expireEventWait); // Add a new timeout
151
+ }, expireEventWait);
183
152
 
153
+ // Add a new timeout
184
154
  this.state.expireTimeouts[key] = expireEventTimeout;
185
155
  }
186
-
187
156
  setExpireEventTimeoutAll() {
188
157
  var tokenStorage = this.storage.getStorage();
189
-
190
158
  for (var key in tokenStorage) {
191
159
  if (!Object.prototype.hasOwnProperty.call(tokenStorage, key)) {
192
160
  continue;
193
161
  }
194
-
195
162
  var token = tokenStorage[key];
196
163
  this.setExpireEventTimeout(key, token);
197
164
  }
198
- } // reset timeouts to setup autoRenew for tokens from other document context (tabs)
199
-
165
+ }
200
166
 
167
+ // reset timeouts to setup autoRenew for tokens from other document context (tabs)
201
168
  resetExpireEventTimeoutAll() {
202
169
  this.clearExpireEventTimeoutAll();
203
170
  this.setExpireEventTimeoutAll();
204
171
  }
205
-
206
172
  add(key, token) {
207
173
  var tokenStorage = this.storage.getStorage();
208
174
  (0, _util2.validateToken)(token);
@@ -212,22 +178,18 @@ class TokenManager {
212
178
  this.emitAdded(key, token);
213
179
  this.setExpireEventTimeout(key, token);
214
180
  }
215
-
216
181
  getSync(key) {
217
182
  var tokenStorage = this.storage.getStorage();
218
183
  return tokenStorage[key];
219
184
  }
220
-
221
185
  async get(key) {
222
186
  return this.getSync(key);
223
187
  }
224
-
225
188
  getTokensSync() {
226
189
  const tokens = {};
227
190
  const tokenStorage = this.storage.getStorage();
228
191
  Object.keys(tokenStorage).forEach(key => {
229
192
  const token = tokenStorage[key];
230
-
231
193
  if ((0, _types.isAccessToken)(token)) {
232
194
  tokens.accessToken = token;
233
195
  } else if ((0, _types.isIDToken)(token)) {
@@ -238,11 +200,9 @@ class TokenManager {
238
200
  });
239
201
  return tokens;
240
202
  }
241
-
242
203
  async getTokens() {
243
204
  return this.getTokensSync();
244
205
  }
245
-
246
206
  getStorageKeyByType(type) {
247
207
  const tokenStorage = this.storage.getStorage();
248
208
  const key = Object.keys(tokenStorage).filter(key => {
@@ -251,41 +211,36 @@ class TokenManager {
251
211
  })[0];
252
212
  return key;
253
213
  }
254
-
255
214
  getTokenType(token) {
256
215
  if ((0, _types.isAccessToken)(token)) {
257
216
  return 'accessToken';
258
217
  }
259
-
260
218
  if ((0, _types.isIDToken)(token)) {
261
219
  return 'idToken';
262
220
  }
263
-
264
221
  if ((0, _types.isRefreshToken)(token)) {
265
222
  return 'refreshToken';
266
223
  }
267
-
268
224
  throw new _errors.AuthSdkError('Unknown token type');
269
- } // for synchronization of LocalStorage cross tabs for IE11
270
-
225
+ }
271
226
 
227
+ // for synchronization of LocalStorage cross tabs for IE11
272
228
  emitSetStorageEvent() {
273
229
  if ((0, _features.isIE11OrLess)()) {
274
230
  const storage = this.storage.getStorage();
275
231
  this.emitter.emit(_types.EVENT_SET_STORAGE, storage);
276
232
  }
277
- } // used in `SyncStorageService` for synchronization of LocalStorage cross tabs for IE11
278
-
233
+ }
279
234
 
235
+ // used in `SyncStorageService` for synchronization of LocalStorage cross tabs for IE11
280
236
  getStorage() {
281
237
  return this.storage;
282
238
  }
283
-
284
- setTokens(tokens, // TODO: callbacks can be removed in the next major version OKTA-407224
239
+ setTokens(tokens,
240
+ // TODO: callbacks can be removed in the next major version OKTA-407224
285
241
  accessTokenCb, idTokenCb, refreshTokenCb) {
286
242
  const handleTokenCallback = (key, token) => {
287
243
  const type = this.getTokenType(token);
288
-
289
244
  if (type === 'accessToken') {
290
245
  accessTokenCb && accessTokenCb(key, token);
291
246
  } else if (type === 'idToken') {
@@ -294,55 +249,50 @@ class TokenManager {
294
249
  refreshTokenCb && refreshTokenCb(key, token);
295
250
  }
296
251
  };
297
-
298
252
  const handleAdded = (key, token) => {
299
253
  this.emitAdded(key, token);
300
254
  this.setExpireEventTimeout(key, token);
301
255
  handleTokenCallback(key, token);
302
256
  };
303
-
304
257
  const handleRenewed = (key, token, oldToken) => {
305
258
  this.emitRenewed(key, token, oldToken);
306
259
  this.clearExpireEventTimeout(key);
307
260
  this.setExpireEventTimeout(key, token);
308
261
  handleTokenCallback(key, token);
309
262
  };
310
-
311
263
  const handleRemoved = (key, token) => {
312
264
  this.clearExpireEventTimeout(key);
313
265
  this.emitRemoved(key, token);
314
266
  handleTokenCallback(key, token);
315
267
  };
316
-
317
268
  const types = ['idToken', 'accessToken', 'refreshToken'];
318
- const existingTokens = this.getTokensSync(); // valid tokens
269
+ const existingTokens = this.getTokensSync();
319
270
 
271
+ // valid tokens
320
272
  types.forEach(type => {
321
273
  const token = tokens[type];
322
-
323
274
  if (token) {
324
275
  (0, _util2.validateToken)(token, type);
325
276
  }
326
- }); // add token to storage
277
+ });
327
278
 
279
+ // add token to storage
328
280
  const storage = types.reduce((storage, type) => {
329
281
  const token = tokens[type];
330
-
331
282
  if (token) {
332
283
  const storageKey = this.getStorageKeyByType(type) || type;
333
284
  storage[storageKey] = token;
334
285
  }
335
-
336
286
  return storage;
337
287
  }, {});
338
288
  this.storage.setStorage(storage);
339
- this.emitSetStorageEvent(); // emit event and start expiration timer
289
+ this.emitSetStorageEvent();
340
290
 
291
+ // emit event and start expiration timer
341
292
  types.forEach(type => {
342
293
  const newToken = tokens[type];
343
294
  const existingToken = existingTokens[type];
344
295
  const storageKey = this.getStorageKeyByType(type) || type;
345
-
346
296
  if (newToken && existingToken) {
347
297
  // renew
348
298
  // call handleRemoved first, since it clears timers
@@ -358,7 +308,6 @@ class TokenManager {
358
308
  }
359
309
  });
360
310
  }
361
-
362
311
  remove(key) {
363
312
  // Clear any listener for this token
364
313
  this.clearExpireEventTimeout(key);
@@ -368,44 +317,42 @@ class TokenManager {
368
317
  this.storage.setStorage(tokenStorage);
369
318
  this.emitSetStorageEvent();
370
319
  this.emitRemoved(key, removedToken);
371
- } // TODO: this methods is redundant and can be removed in the next major version OKTA-407224
372
-
320
+ }
373
321
 
322
+ // TODO: this methods is redundant and can be removed in the next major version OKTA-407224
374
323
  async renewToken(token) {
375
324
  var _this$sdk$token;
376
-
377
325
  return (_this$sdk$token = this.sdk.token) === null || _this$sdk$token === void 0 ? void 0 : _this$sdk$token.renew(token);
378
- } // TODO: this methods is redundant and can be removed in the next major version OKTA-407224
379
-
380
-
326
+ }
327
+ // TODO: this methods is redundant and can be removed in the next major version OKTA-407224
381
328
  validateToken(token) {
382
329
  return (0, _util2.validateToken)(token);
383
- } // TODO: renew method should take no param, change in the next major version OKTA-407224
384
-
330
+ }
385
331
 
332
+ // TODO: renew method should take no param, change in the next major version OKTA-407224
386
333
  renew(key) {
387
334
  // Multiple callers may receive the same promise. They will all resolve or reject from the same request.
388
335
  if (this.state.renewPromise) {
389
336
  return this.state.renewPromise;
390
337
  }
391
-
392
338
  try {
393
339
  var token = this.getSync(key);
394
-
395
340
  if (!token) {
396
341
  throw new _errors.AuthSdkError('The tokenManager has no token for the key: ' + key);
397
342
  }
398
343
  } catch (e) {
399
344
  return Promise.reject(e);
400
- } // Remove existing autoRenew timeout
345
+ }
401
346
 
347
+ // Remove existing autoRenew timeout
348
+ this.clearExpireEventTimeout(key);
402
349
 
403
- this.clearExpireEventTimeout(key); // A refresh token means a replace instead of renewal
350
+ // A refresh token means a replace instead of renewal
404
351
  // Store the renew promise state, to avoid renewing again
405
-
406
352
  const renewPromise = this.state.renewPromise = this.sdk.token.renewTokens().then(tokens => {
407
- this.setTokens(tokens); // resolve token based on the key
353
+ this.setTokens(tokens);
408
354
 
355
+ // resolve token based on the key
409
356
  const tokenType = this.getTokenType(token);
410
357
  return tokens[tokenType];
411
358
  }).catch(err => {
@@ -420,7 +367,6 @@ class TokenManager {
420
367
  });
421
368
  return renewPromise;
422
369
  }
423
-
424
370
  clear() {
425
371
  const tokens = this.getTokensSync();
426
372
  this.clearExpireEventTimeoutAll();
@@ -430,7 +376,6 @@ class TokenManager {
430
376
  this.emitRemoved(key, tokens[key]);
431
377
  });
432
378
  }
433
-
434
379
  clearPendingRemoveTokens() {
435
380
  const tokenStorage = this.storage.getStorage();
436
381
  const removedTokens = {};
@@ -447,24 +392,20 @@ class TokenManager {
447
392
  this.emitRemoved(key, removedTokens[key]);
448
393
  });
449
394
  }
450
-
451
395
  updateRefreshToken(token) {
452
- const key = this.getStorageKeyByType('refreshToken') || _constants.REFRESH_TOKEN_STORAGE_KEY; // do not emit any event
453
-
396
+ const key = this.getStorageKeyByType('refreshToken') || _constants.REFRESH_TOKEN_STORAGE_KEY;
454
397
 
398
+ // do not emit any event
455
399
  var tokenStorage = this.storage.getStorage();
456
400
  (0, _util2.validateToken)(token);
457
401
  tokenStorage[key] = token;
458
402
  this.storage.setStorage(tokenStorage);
459
403
  this.emitSetStorageEvent();
460
404
  }
461
-
462
405
  removeRefreshToken() {
463
406
  const key = this.getStorageKeyByType('refreshToken') || _constants.REFRESH_TOKEN_STORAGE_KEY;
464
-
465
407
  this.remove(key);
466
408
  }
467
-
468
409
  addPendingRemoveFlags() {
469
410
  const tokens = this.getTokensSync();
470
411
  Object.keys(tokens).forEach(key => {
@@ -472,8 +413,6 @@ class TokenManager {
472
413
  });
473
414
  this.setTokens(tokens);
474
415
  }
475
-
476
416
  }
477
-
478
417
  exports.TokenManager = TokenManager;
479
418
  //# sourceMappingURL=TokenManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TokenManager.js","names":["DEFAULT_OPTIONS","autoRenew","autoRemove","syncStorage","clearPendingRemoveTokens","storage","undefined","expireEarlySeconds","storageKey","TOKEN_STORAGE_NAME","defaultState","expireTimeouts","renewPromise","TokenManager","on","event","handler","context","emitter","off","constructor","sdk","options","AuthSdkError","Object","assign","removeNils","isLocalhost","storageOptions","secure","storageProvider","storageType","storageManager","getTokenStorage","useSeparateCookies","clock","SdkClock","create","state","start","setExpireEventTimeoutAll","stop","clearExpireEventTimeoutAll","getOptions","clone","getExpireTime","token","expireTime","expiresAt","hasExpired","now","emitExpired","key","emit","EVENT_EXPIRED","emitRenewed","freshToken","oldToken","EVENT_RENEWED","emitAdded","EVENT_ADDED","emitRemoved","EVENT_REMOVED","emitError","error","EVENT_ERROR","clearExpireEventTimeout","clearTimeout","prototype","hasOwnProperty","call","setExpireEventTimeout","isRefreshToken","expireEventWait","Math","max","expireEventTimeout","setTimeout","tokenStorage","getStorage","resetExpireEventTimeoutAll","add","validateToken","setStorage","emitSetStorageEvent","getSync","get","getTokensSync","tokens","keys","forEach","isAccessToken","accessToken","isIDToken","idToken","refreshToken","getTokens","getStorageKeyByType","type","filter","getTokenType","isIE11OrLess","EVENT_SET_STORAGE","setTokens","accessTokenCb","idTokenCb","refreshTokenCb","handleTokenCallback","handleAdded","handleRenewed","handleRemoved","types","existingTokens","reduce","newToken","existingToken","remove","removedToken","renewToken","renew","e","Promise","reject","renewTokens","then","tokenType","catch","err","tokenKey","finally","clear","clearStorage","removedTokens","pendingRemove","updateRefreshToken","REFRESH_TOKEN_STORAGE_KEY","removeRefreshToken","addPendingRemoveFlags"],"sources":["../../../lib/oidc/TokenManager.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 { removeNils, clone } from '../util';\nimport { AuthSdkError } from '../errors';\nimport { validateToken } from '../oidc/util';\nimport { isLocalhost, isIE11OrLess } from '../features';\nimport SdkClock from '../clock';\nimport {\n Token, \n Tokens, \n TokenType, \n TokenManagerOptions, \n isIDToken, \n isAccessToken,\n isRefreshToken,\n TokenManagerErrorEventHandler,\n TokenManagerSetStorageEventHandler,\n TokenManagerRenewEventHandler,\n TokenManagerEventHandler,\n TokenManagerInterface,\n RefreshToken,\n AccessTokenCallback,\n IDTokenCallback,\n RefreshTokenCallback,\n EVENT_RENEWED,\n EVENT_ADDED,\n EVENT_ERROR,\n EVENT_EXPIRED,\n EVENT_REMOVED,\n EVENT_SET_STORAGE,\n TokenManagerAnyEventHandler,\n TokenManagerAnyEvent,\n OktaAuthOAuthInterface\n} from './types';\nimport { REFRESH_TOKEN_STORAGE_KEY, TOKEN_STORAGE_NAME } from '../constants';\nimport { EventEmitter } from '../base/types';\nimport { StorageOptions, StorageProvider, StorageType } from '../storage/types';\n\nconst DEFAULT_OPTIONS = {\n // TODO: remove in next major version - OKTA-473815\n autoRenew: true,\n autoRemove: true,\n syncStorage: true,\n // --- //\n clearPendingRemoveTokens: true,\n storage: undefined, // will use value from storageManager config\n expireEarlySeconds: 30,\n storageKey: TOKEN_STORAGE_NAME\n};\n\ninterface TokenManagerState {\n expireTimeouts: Record<string, unknown>;\n renewPromise: Promise<Token | undefined> | null;\n}\nfunction defaultState(): TokenManagerState {\n return {\n expireTimeouts: {},\n renewPromise: null\n };\n}\nexport class TokenManager implements TokenManagerInterface {\n private sdk: OktaAuthOAuthInterface;\n private clock: SdkClock;\n private emitter: EventEmitter;\n private storage: StorageProvider;\n private state: TokenManagerState;\n private options: TokenManagerOptions;\n\n on(event: typeof EVENT_RENEWED, handler: TokenManagerRenewEventHandler, context?: object): void;\n on(event: typeof EVENT_ERROR, handler: TokenManagerErrorEventHandler, context?: object): void;\n on(event: typeof EVENT_SET_STORAGE, handler: TokenManagerSetStorageEventHandler, context?: object): void;\n on(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, \n handler: TokenManagerEventHandler, context?: object): void;\n on(event: TokenManagerAnyEvent, handler: TokenManagerAnyEventHandler, context?: object): void {\n if (context) {\n this.emitter.on(event, handler, context);\n } else {\n this.emitter.on(event, handler);\n }\n }\n\n off(event: typeof EVENT_RENEWED, handler?: TokenManagerRenewEventHandler): void;\n off(event: typeof EVENT_ERROR, handler?: TokenManagerErrorEventHandler): void;\n off(event: typeof EVENT_SET_STORAGE, handler?: TokenManagerSetStorageEventHandler): void;\n off(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, \n handler?: TokenManagerEventHandler): void;\n off(event: TokenManagerAnyEvent, handler?: TokenManagerAnyEventHandler): void {\n if (handler) {\n this.emitter.off(event, handler);\n } else {\n this.emitter.off(event);\n }\n }\n\n // eslint-disable-next-line complexity\n constructor(sdk: OktaAuthOAuthInterface, options: TokenManagerOptions = {}) {\n this.sdk = sdk;\n this.emitter = (sdk as any).emitter;\n if (!this.emitter) {\n throw new AuthSdkError('Emitter should be initialized before TokenManager');\n }\n \n options = Object.assign({}, DEFAULT_OPTIONS, removeNils(options));\n if (!isLocalhost()) {\n options.expireEarlySeconds = DEFAULT_OPTIONS.expireEarlySeconds;\n }\n\n this.options = options;\n\n const storageOptions: StorageOptions = removeNils({\n storageKey: options.storageKey,\n secure: options.secure,\n });\n if (typeof options.storage === 'object') {\n // A custom storage provider must implement getItem(key) and setItem(key, val)\n storageOptions.storageProvider = options.storage;\n } else if (options.storage) {\n storageOptions.storageType = options.storage as StorageType;\n }\n\n this.storage = sdk.storageManager.getTokenStorage({...storageOptions, useSeparateCookies: true});\n this.clock = SdkClock.create(/* sdk, options */);\n this.state = defaultState();\n }\n\n start() {\n if (this.options.clearPendingRemoveTokens) {\n this.clearPendingRemoveTokens();\n }\n this.setExpireEventTimeoutAll();\n }\n \n stop() {\n this.clearExpireEventTimeoutAll();\n }\n\n getOptions(): TokenManagerOptions {\n return clone(this.options);\n }\n \n getExpireTime(token) {\n const expireEarlySeconds = this.options.expireEarlySeconds || 0;\n var expireTime = token.expiresAt - expireEarlySeconds;\n return expireTime;\n }\n \n hasExpired(token) {\n var expireTime = this.getExpireTime(token);\n return expireTime <= this.clock.now();\n }\n \n emitExpired(key, token) {\n this.emitter.emit(EVENT_EXPIRED, key, token);\n }\n \n emitRenewed(key, freshToken, oldToken) {\n this.emitter.emit(EVENT_RENEWED, key, freshToken, oldToken);\n }\n \n emitAdded(key, token) {\n this.emitter.emit(EVENT_ADDED, key, token);\n }\n \n emitRemoved(key, token?) {\n this.emitter.emit(EVENT_REMOVED, key, token);\n }\n \n emitError(error) {\n this.emitter.emit(EVENT_ERROR, error);\n }\n \n clearExpireEventTimeout(key) {\n clearTimeout(this.state.expireTimeouts[key] as any);\n delete this.state.expireTimeouts[key];\n \n // Remove the renew promise (if it exists)\n this.state.renewPromise = null;\n }\n \n clearExpireEventTimeoutAll() {\n var expireTimeouts = this.state.expireTimeouts;\n for (var key in expireTimeouts) {\n if (!Object.prototype.hasOwnProperty.call(expireTimeouts, key)) {\n continue;\n }\n this.clearExpireEventTimeout(key);\n }\n }\n \n setExpireEventTimeout(key, token) {\n if (isRefreshToken(token)) {\n return;\n }\n\n var expireTime = this.getExpireTime(token);\n var expireEventWait = Math.max(expireTime - this.clock.now(), 0) * 1000;\n \n // Clear any existing timeout\n this.clearExpireEventTimeout(key);\n \n var expireEventTimeout = setTimeout(() => {\n this.emitExpired(key, token);\n }, expireEventWait);\n \n // Add a new timeout\n this.state.expireTimeouts[key] = expireEventTimeout;\n }\n \n setExpireEventTimeoutAll() {\n var tokenStorage = this.storage.getStorage();\n for(var key in tokenStorage) {\n if (!Object.prototype.hasOwnProperty.call(tokenStorage, key)) {\n continue;\n }\n var token = tokenStorage[key];\n this.setExpireEventTimeout(key, token);\n }\n }\n \n // reset timeouts to setup autoRenew for tokens from other document context (tabs)\n resetExpireEventTimeoutAll() {\n this.clearExpireEventTimeoutAll();\n this.setExpireEventTimeoutAll();\n }\n \n add(key, token: Token) {\n var tokenStorage = this.storage.getStorage();\n validateToken(token);\n tokenStorage[key] = token;\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n this.emitAdded(key, token);\n this.setExpireEventTimeout(key, token);\n }\n \n getSync(key): Token {\n var tokenStorage = this.storage.getStorage();\n return tokenStorage[key];\n }\n \n async get(key): Promise<Token> {\n return this.getSync(key);\n }\n \n getTokensSync(): Tokens {\n const tokens = {} as Tokens;\n const tokenStorage = this.storage.getStorage();\n Object.keys(tokenStorage).forEach(key => {\n const token = tokenStorage[key];\n if (isAccessToken(token)) {\n tokens.accessToken = token;\n } else if (isIDToken(token)) {\n tokens.idToken = token;\n } else if (isRefreshToken(token)) { \n tokens.refreshToken = token;\n }\n });\n return tokens;\n }\n \n async getTokens(): Promise<Tokens> {\n return this.getTokensSync();\n }\n\n getStorageKeyByType(type: TokenType): string {\n const tokenStorage = this.storage.getStorage();\n const key = Object.keys(tokenStorage).filter(key => {\n const token = tokenStorage[key];\n return (isAccessToken(token) && type === 'accessToken') \n || (isIDToken(token) && type === 'idToken')\n || (isRefreshToken(token) && type === 'refreshToken');\n })[0];\n return key;\n }\n\n private getTokenType(token: Token): TokenType {\n if (isAccessToken(token)) {\n return 'accessToken';\n }\n if (isIDToken(token)) {\n return 'idToken';\n }\n if(isRefreshToken(token)) {\n return 'refreshToken';\n }\n throw new AuthSdkError('Unknown token type');\n }\n\n // for synchronization of LocalStorage cross tabs for IE11\n private emitSetStorageEvent() {\n if (isIE11OrLess()) {\n const storage = this.storage.getStorage();\n this.emitter.emit(EVENT_SET_STORAGE, storage);\n }\n }\n\n // used in `SyncStorageService` for synchronization of LocalStorage cross tabs for IE11\n public getStorage() {\n return this.storage;\n }\n\n setTokens(\n tokens: Tokens,\n // TODO: callbacks can be removed in the next major version OKTA-407224\n accessTokenCb?: AccessTokenCallback, \n idTokenCb?: IDTokenCallback,\n refreshTokenCb?: RefreshTokenCallback\n ): void {\n const handleTokenCallback = (key, token) => {\n const type = this.getTokenType(token);\n if (type === 'accessToken') {\n accessTokenCb && accessTokenCb(key, token);\n } else if (type === 'idToken') {\n idTokenCb && idTokenCb(key, token);\n } else if (type === 'refreshToken') {\n refreshTokenCb && refreshTokenCb(key, token);\n }\n };\n const handleAdded = (key, token) => {\n this.emitAdded(key, token);\n this.setExpireEventTimeout(key, token);\n handleTokenCallback(key, token);\n };\n const handleRenewed = (key, token, oldToken) => {\n this.emitRenewed(key, token, oldToken);\n this.clearExpireEventTimeout(key);\n this.setExpireEventTimeout(key, token);\n handleTokenCallback(key, token);\n };\n const handleRemoved = (key, token) => {\n this.clearExpireEventTimeout(key);\n this.emitRemoved(key, token);\n handleTokenCallback(key, token);\n };\n \n const types: TokenType[] = ['idToken', 'accessToken', 'refreshToken'];\n const existingTokens = this.getTokensSync();\n\n // valid tokens\n types.forEach((type) => {\n const token = tokens[type];\n if (token) {\n validateToken(token, type);\n }\n });\n \n // add token to storage\n const storage = types.reduce((storage, type) => {\n const token = tokens[type];\n if (token) {\n const storageKey = this.getStorageKeyByType(type) || type;\n storage[storageKey] = token;\n }\n return storage;\n }, {});\n this.storage.setStorage(storage);\n this.emitSetStorageEvent();\n\n // emit event and start expiration timer\n types.forEach(type => {\n const newToken = tokens[type];\n const existingToken = existingTokens[type];\n const storageKey = this.getStorageKeyByType(type) || type;\n if (newToken && existingToken) { // renew\n // call handleRemoved first, since it clears timers\n handleRemoved(storageKey, existingToken);\n handleAdded(storageKey, newToken);\n handleRenewed(storageKey, newToken, existingToken);\n } else if (newToken) { // add\n handleAdded(storageKey, newToken);\n } else if (existingToken) { //remove\n handleRemoved(storageKey, existingToken);\n }\n });\n }\n \n remove(key) {\n // Clear any listener for this token\n this.clearExpireEventTimeout(key);\n \n var tokenStorage = this.storage.getStorage();\n var removedToken = tokenStorage[key];\n delete tokenStorage[key];\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n \n this.emitRemoved(key, removedToken);\n }\n \n // TODO: this methods is redundant and can be removed in the next major version OKTA-407224\n async renewToken(token) {\n return this.sdk.token?.renew(token);\n }\n // TODO: this methods is redundant and can be removed in the next major version OKTA-407224\n validateToken(token: Token) {\n return validateToken(token);\n }\n\n // TODO: renew method should take no param, change in the next major version OKTA-407224\n renew(key): Promise<Token | undefined> {\n // Multiple callers may receive the same promise. They will all resolve or reject from the same request.\n if (this.state.renewPromise) {\n return this.state.renewPromise;\n }\n \n try {\n var token = this.getSync(key);\n if (!token) {\n throw new AuthSdkError('The tokenManager has no token for the key: ' + key);\n }\n } catch (e) {\n return Promise.reject(e);\n }\n \n // Remove existing autoRenew timeout\n this.clearExpireEventTimeout(key);\n \n // A refresh token means a replace instead of renewal\n // Store the renew promise state, to avoid renewing again\n const renewPromise = this.state.renewPromise = this.sdk.token.renewTokens()\n .then(tokens => {\n this.setTokens(tokens);\n\n // resolve token based on the key\n const tokenType = this.getTokenType(token);\n return tokens[tokenType];\n })\n .catch(err => {\n // If renew fails, remove token from storage and emit error\n this.remove(key);\n err.tokenKey = key;\n this.emitError(err);\n throw err;\n })\n .finally(() => {\n // Remove existing promise key\n this.state.renewPromise = null;\n });\n \n return renewPromise;\n }\n \n clear() {\n const tokens = this.getTokensSync();\n this.clearExpireEventTimeoutAll();\n this.storage.clearStorage();\n this.emitSetStorageEvent();\n\n Object.keys(tokens).forEach(key => {\n this.emitRemoved(key, tokens[key]);\n });\n }\n\n clearPendingRemoveTokens() {\n const tokenStorage = this.storage.getStorage();\n const removedTokens = {};\n Object.keys(tokenStorage).forEach(key => {\n if (tokenStorage[key].pendingRemove) {\n removedTokens[key] = tokenStorage[key];\n delete tokenStorage[key];\n }\n });\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n Object.keys(removedTokens).forEach(key => {\n this.clearExpireEventTimeout(key);\n this.emitRemoved(key, removedTokens[key]);\n });\n }\n\n updateRefreshToken(token: RefreshToken) {\n const key = this.getStorageKeyByType('refreshToken') || REFRESH_TOKEN_STORAGE_KEY;\n\n // do not emit any event\n var tokenStorage = this.storage.getStorage();\n validateToken(token);\n tokenStorage[key] = token;\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n }\n\n removeRefreshToken () {\n const key = this.getStorageKeyByType('refreshToken') || REFRESH_TOKEN_STORAGE_KEY;\n this.remove(key);\n }\n\n addPendingRemoveFlags() {\n const tokens = this.getTokensSync();\n Object.keys(tokens).forEach(key => {\n tokens[key].pendingRemove = true;\n });\n this.setTokens(tokens);\n }\n \n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TokenManager.js","names":["DEFAULT_OPTIONS","autoRenew","autoRemove","syncStorage","clearPendingRemoveTokens","storage","undefined","expireEarlySeconds","storageKey","TOKEN_STORAGE_NAME","defaultState","expireTimeouts","renewPromise","TokenManager","on","event","handler","context","emitter","off","constructor","sdk","options","AuthSdkError","Object","assign","removeNils","isLocalhost","storageOptions","secure","storageProvider","storageType","storageManager","getTokenStorage","useSeparateCookies","clock","SdkClock","create","state","start","setExpireEventTimeoutAll","stop","clearExpireEventTimeoutAll","getOptions","clone","getExpireTime","token","expireTime","expiresAt","hasExpired","now","emitExpired","key","emit","EVENT_EXPIRED","emitRenewed","freshToken","oldToken","EVENT_RENEWED","emitAdded","EVENT_ADDED","emitRemoved","EVENT_REMOVED","emitError","error","EVENT_ERROR","clearExpireEventTimeout","clearTimeout","prototype","hasOwnProperty","call","setExpireEventTimeout","isRefreshToken","expireEventWait","Math","max","expireEventTimeout","setTimeout","tokenStorage","getStorage","resetExpireEventTimeoutAll","add","validateToken","setStorage","emitSetStorageEvent","getSync","get","getTokensSync","tokens","keys","forEach","isAccessToken","accessToken","isIDToken","idToken","refreshToken","getTokens","getStorageKeyByType","type","filter","getTokenType","isIE11OrLess","EVENT_SET_STORAGE","setTokens","accessTokenCb","idTokenCb","refreshTokenCb","handleTokenCallback","handleAdded","handleRenewed","handleRemoved","types","existingTokens","reduce","newToken","existingToken","remove","removedToken","renewToken","renew","e","Promise","reject","renewTokens","then","tokenType","catch","err","tokenKey","finally","clear","clearStorage","removedTokens","pendingRemove","updateRefreshToken","REFRESH_TOKEN_STORAGE_KEY","removeRefreshToken","addPendingRemoveFlags"],"sources":["../../../lib/oidc/TokenManager.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 { removeNils, clone } from '../util';\nimport { AuthSdkError } from '../errors';\nimport { validateToken } from '../oidc/util';\nimport { isLocalhost, isIE11OrLess } from '../features';\nimport SdkClock from '../clock';\nimport {\n Token, \n Tokens, \n TokenType, \n TokenManagerOptions, \n isIDToken, \n isAccessToken,\n isRefreshToken,\n TokenManagerErrorEventHandler,\n TokenManagerSetStorageEventHandler,\n TokenManagerRenewEventHandler,\n TokenManagerEventHandler,\n TokenManagerInterface,\n RefreshToken,\n AccessTokenCallback,\n IDTokenCallback,\n RefreshTokenCallback,\n EVENT_RENEWED,\n EVENT_ADDED,\n EVENT_ERROR,\n EVENT_EXPIRED,\n EVENT_REMOVED,\n EVENT_SET_STORAGE,\n TokenManagerAnyEventHandler,\n TokenManagerAnyEvent,\n OktaAuthOAuthInterface\n} from './types';\nimport { REFRESH_TOKEN_STORAGE_KEY, TOKEN_STORAGE_NAME } from '../constants';\nimport { EventEmitter } from '../base/types';\nimport { StorageOptions, StorageProvider, StorageType } from '../storage/types';\n\nconst DEFAULT_OPTIONS = {\n // TODO: remove in next major version - OKTA-473815\n autoRenew: true,\n autoRemove: true,\n syncStorage: true,\n // --- //\n clearPendingRemoveTokens: true,\n storage: undefined, // will use value from storageManager config\n expireEarlySeconds: 30,\n storageKey: TOKEN_STORAGE_NAME\n};\n\ninterface TokenManagerState {\n expireTimeouts: Record<string, unknown>;\n renewPromise: Promise<Token | undefined> | null;\n}\nfunction defaultState(): TokenManagerState {\n return {\n expireTimeouts: {},\n renewPromise: null\n };\n}\nexport class TokenManager implements TokenManagerInterface {\n private sdk: OktaAuthOAuthInterface;\n private clock: SdkClock;\n private emitter: EventEmitter;\n private storage: StorageProvider;\n private state: TokenManagerState;\n private options: TokenManagerOptions;\n\n on(event: typeof EVENT_RENEWED, handler: TokenManagerRenewEventHandler, context?: object): void;\n on(event: typeof EVENT_ERROR, handler: TokenManagerErrorEventHandler, context?: object): void;\n on(event: typeof EVENT_SET_STORAGE, handler: TokenManagerSetStorageEventHandler, context?: object): void;\n on(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, \n handler: TokenManagerEventHandler, context?: object): void;\n on(event: TokenManagerAnyEvent, handler: TokenManagerAnyEventHandler, context?: object): void {\n if (context) {\n this.emitter.on(event, handler, context);\n } else {\n this.emitter.on(event, handler);\n }\n }\n\n off(event: typeof EVENT_RENEWED, handler?: TokenManagerRenewEventHandler): void;\n off(event: typeof EVENT_ERROR, handler?: TokenManagerErrorEventHandler): void;\n off(event: typeof EVENT_SET_STORAGE, handler?: TokenManagerSetStorageEventHandler): void;\n off(event: typeof EVENT_EXPIRED | typeof EVENT_ADDED | typeof EVENT_REMOVED, \n handler?: TokenManagerEventHandler): void;\n off(event: TokenManagerAnyEvent, handler?: TokenManagerAnyEventHandler): void {\n if (handler) {\n this.emitter.off(event, handler);\n } else {\n this.emitter.off(event);\n }\n }\n\n // eslint-disable-next-line complexity\n constructor(sdk: OktaAuthOAuthInterface, options: TokenManagerOptions = {}) {\n this.sdk = sdk;\n this.emitter = (sdk as any).emitter;\n if (!this.emitter) {\n throw new AuthSdkError('Emitter should be initialized before TokenManager');\n }\n \n options = Object.assign({}, DEFAULT_OPTIONS, removeNils(options));\n if (!isLocalhost()) {\n options.expireEarlySeconds = DEFAULT_OPTIONS.expireEarlySeconds;\n }\n\n this.options = options;\n\n const storageOptions: StorageOptions = removeNils({\n storageKey: options.storageKey,\n secure: options.secure,\n });\n if (typeof options.storage === 'object') {\n // A custom storage provider must implement getItem(key) and setItem(key, val)\n storageOptions.storageProvider = options.storage;\n } else if (options.storage) {\n storageOptions.storageType = options.storage as StorageType;\n }\n\n this.storage = sdk.storageManager.getTokenStorage({...storageOptions, useSeparateCookies: true});\n this.clock = SdkClock.create(/* sdk, options */);\n this.state = defaultState();\n }\n\n start() {\n if (this.options.clearPendingRemoveTokens) {\n this.clearPendingRemoveTokens();\n }\n this.setExpireEventTimeoutAll();\n }\n \n stop() {\n this.clearExpireEventTimeoutAll();\n }\n\n getOptions(): TokenManagerOptions {\n return clone(this.options);\n }\n \n getExpireTime(token) {\n const expireEarlySeconds = this.options.expireEarlySeconds || 0;\n var expireTime = token.expiresAt - expireEarlySeconds;\n return expireTime;\n }\n \n hasExpired(token) {\n var expireTime = this.getExpireTime(token);\n return expireTime <= this.clock.now();\n }\n \n emitExpired(key, token) {\n this.emitter.emit(EVENT_EXPIRED, key, token);\n }\n \n emitRenewed(key, freshToken, oldToken) {\n this.emitter.emit(EVENT_RENEWED, key, freshToken, oldToken);\n }\n \n emitAdded(key, token) {\n this.emitter.emit(EVENT_ADDED, key, token);\n }\n \n emitRemoved(key, token?) {\n this.emitter.emit(EVENT_REMOVED, key, token);\n }\n \n emitError(error) {\n this.emitter.emit(EVENT_ERROR, error);\n }\n \n clearExpireEventTimeout(key) {\n clearTimeout(this.state.expireTimeouts[key] as any);\n delete this.state.expireTimeouts[key];\n \n // Remove the renew promise (if it exists)\n this.state.renewPromise = null;\n }\n \n clearExpireEventTimeoutAll() {\n var expireTimeouts = this.state.expireTimeouts;\n for (var key in expireTimeouts) {\n if (!Object.prototype.hasOwnProperty.call(expireTimeouts, key)) {\n continue;\n }\n this.clearExpireEventTimeout(key);\n }\n }\n \n setExpireEventTimeout(key, token) {\n if (isRefreshToken(token)) {\n return;\n }\n\n var expireTime = this.getExpireTime(token);\n var expireEventWait = Math.max(expireTime - this.clock.now(), 0) * 1000;\n \n // Clear any existing timeout\n this.clearExpireEventTimeout(key);\n \n var expireEventTimeout = setTimeout(() => {\n this.emitExpired(key, token);\n }, expireEventWait);\n \n // Add a new timeout\n this.state.expireTimeouts[key] = expireEventTimeout;\n }\n \n setExpireEventTimeoutAll() {\n var tokenStorage = this.storage.getStorage();\n for(var key in tokenStorage) {\n if (!Object.prototype.hasOwnProperty.call(tokenStorage, key)) {\n continue;\n }\n var token = tokenStorage[key];\n this.setExpireEventTimeout(key, token);\n }\n }\n \n // reset timeouts to setup autoRenew for tokens from other document context (tabs)\n resetExpireEventTimeoutAll() {\n this.clearExpireEventTimeoutAll();\n this.setExpireEventTimeoutAll();\n }\n \n add(key, token: Token) {\n var tokenStorage = this.storage.getStorage();\n validateToken(token);\n tokenStorage[key] = token;\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n this.emitAdded(key, token);\n this.setExpireEventTimeout(key, token);\n }\n \n getSync(key): Token {\n var tokenStorage = this.storage.getStorage();\n return tokenStorage[key];\n }\n \n async get(key): Promise<Token> {\n return this.getSync(key);\n }\n \n getTokensSync(): Tokens {\n const tokens = {} as Tokens;\n const tokenStorage = this.storage.getStorage();\n Object.keys(tokenStorage).forEach(key => {\n const token = tokenStorage[key];\n if (isAccessToken(token)) {\n tokens.accessToken = token;\n } else if (isIDToken(token)) {\n tokens.idToken = token;\n } else if (isRefreshToken(token)) { \n tokens.refreshToken = token;\n }\n });\n return tokens;\n }\n \n async getTokens(): Promise<Tokens> {\n return this.getTokensSync();\n }\n\n getStorageKeyByType(type: TokenType): string {\n const tokenStorage = this.storage.getStorage();\n const key = Object.keys(tokenStorage).filter(key => {\n const token = tokenStorage[key];\n return (isAccessToken(token) && type === 'accessToken') \n || (isIDToken(token) && type === 'idToken')\n || (isRefreshToken(token) && type === 'refreshToken');\n })[0];\n return key;\n }\n\n private getTokenType(token: Token): TokenType {\n if (isAccessToken(token)) {\n return 'accessToken';\n }\n if (isIDToken(token)) {\n return 'idToken';\n }\n if(isRefreshToken(token)) {\n return 'refreshToken';\n }\n throw new AuthSdkError('Unknown token type');\n }\n\n // for synchronization of LocalStorage cross tabs for IE11\n private emitSetStorageEvent() {\n if (isIE11OrLess()) {\n const storage = this.storage.getStorage();\n this.emitter.emit(EVENT_SET_STORAGE, storage);\n }\n }\n\n // used in `SyncStorageService` for synchronization of LocalStorage cross tabs for IE11\n public getStorage() {\n return this.storage;\n }\n\n setTokens(\n tokens: Tokens,\n // TODO: callbacks can be removed in the next major version OKTA-407224\n accessTokenCb?: AccessTokenCallback, \n idTokenCb?: IDTokenCallback,\n refreshTokenCb?: RefreshTokenCallback\n ): void {\n const handleTokenCallback = (key, token) => {\n const type = this.getTokenType(token);\n if (type === 'accessToken') {\n accessTokenCb && accessTokenCb(key, token);\n } else if (type === 'idToken') {\n idTokenCb && idTokenCb(key, token);\n } else if (type === 'refreshToken') {\n refreshTokenCb && refreshTokenCb(key, token);\n }\n };\n const handleAdded = (key, token) => {\n this.emitAdded(key, token);\n this.setExpireEventTimeout(key, token);\n handleTokenCallback(key, token);\n };\n const handleRenewed = (key, token, oldToken) => {\n this.emitRenewed(key, token, oldToken);\n this.clearExpireEventTimeout(key);\n this.setExpireEventTimeout(key, token);\n handleTokenCallback(key, token);\n };\n const handleRemoved = (key, token) => {\n this.clearExpireEventTimeout(key);\n this.emitRemoved(key, token);\n handleTokenCallback(key, token);\n };\n \n const types: TokenType[] = ['idToken', 'accessToken', 'refreshToken'];\n const existingTokens = this.getTokensSync();\n\n // valid tokens\n types.forEach((type) => {\n const token = tokens[type];\n if (token) {\n validateToken(token, type);\n }\n });\n \n // add token to storage\n const storage = types.reduce((storage, type) => {\n const token = tokens[type];\n if (token) {\n const storageKey = this.getStorageKeyByType(type) || type;\n storage[storageKey] = token;\n }\n return storage;\n }, {});\n this.storage.setStorage(storage);\n this.emitSetStorageEvent();\n\n // emit event and start expiration timer\n types.forEach(type => {\n const newToken = tokens[type];\n const existingToken = existingTokens[type];\n const storageKey = this.getStorageKeyByType(type) || type;\n if (newToken && existingToken) { // renew\n // call handleRemoved first, since it clears timers\n handleRemoved(storageKey, existingToken);\n handleAdded(storageKey, newToken);\n handleRenewed(storageKey, newToken, existingToken);\n } else if (newToken) { // add\n handleAdded(storageKey, newToken);\n } else if (existingToken) { //remove\n handleRemoved(storageKey, existingToken);\n }\n });\n }\n \n remove(key) {\n // Clear any listener for this token\n this.clearExpireEventTimeout(key);\n \n var tokenStorage = this.storage.getStorage();\n var removedToken = tokenStorage[key];\n delete tokenStorage[key];\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n \n this.emitRemoved(key, removedToken);\n }\n \n // TODO: this methods is redundant and can be removed in the next major version OKTA-407224\n async renewToken(token) {\n return this.sdk.token?.renew(token);\n }\n // TODO: this methods is redundant and can be removed in the next major version OKTA-407224\n validateToken(token: Token) {\n return validateToken(token);\n }\n\n // TODO: renew method should take no param, change in the next major version OKTA-407224\n renew(key): Promise<Token | undefined> {\n // Multiple callers may receive the same promise. They will all resolve or reject from the same request.\n if (this.state.renewPromise) {\n return this.state.renewPromise;\n }\n \n try {\n var token = this.getSync(key);\n if (!token) {\n throw new AuthSdkError('The tokenManager has no token for the key: ' + key);\n }\n } catch (e) {\n return Promise.reject(e);\n }\n \n // Remove existing autoRenew timeout\n this.clearExpireEventTimeout(key);\n \n // A refresh token means a replace instead of renewal\n // Store the renew promise state, to avoid renewing again\n const renewPromise = this.state.renewPromise = this.sdk.token.renewTokens()\n .then(tokens => {\n this.setTokens(tokens);\n\n // resolve token based on the key\n const tokenType = this.getTokenType(token);\n return tokens[tokenType];\n })\n .catch(err => {\n // If renew fails, remove token from storage and emit error\n this.remove(key);\n err.tokenKey = key;\n this.emitError(err);\n throw err;\n })\n .finally(() => {\n // Remove existing promise key\n this.state.renewPromise = null;\n });\n \n return renewPromise;\n }\n \n clear() {\n const tokens = this.getTokensSync();\n this.clearExpireEventTimeoutAll();\n this.storage.clearStorage();\n this.emitSetStorageEvent();\n\n Object.keys(tokens).forEach(key => {\n this.emitRemoved(key, tokens[key]);\n });\n }\n\n clearPendingRemoveTokens() {\n const tokenStorage = this.storage.getStorage();\n const removedTokens = {};\n Object.keys(tokenStorage).forEach(key => {\n if (tokenStorage[key].pendingRemove) {\n removedTokens[key] = tokenStorage[key];\n delete tokenStorage[key];\n }\n });\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n Object.keys(removedTokens).forEach(key => {\n this.clearExpireEventTimeout(key);\n this.emitRemoved(key, removedTokens[key]);\n });\n }\n\n updateRefreshToken(token: RefreshToken) {\n const key = this.getStorageKeyByType('refreshToken') || REFRESH_TOKEN_STORAGE_KEY;\n\n // do not emit any event\n var tokenStorage = this.storage.getStorage();\n validateToken(token);\n tokenStorage[key] = token;\n this.storage.setStorage(tokenStorage);\n this.emitSetStorageEvent();\n }\n\n removeRefreshToken () {\n const key = this.getStorageKeyByType('refreshToken') || REFRESH_TOKEN_STORAGE_KEY;\n this.remove(key);\n }\n\n addPendingRemoveFlags() {\n const tokens = this.getTokensSync();\n Object.keys(tokens).forEach(key => {\n tokens[key].pendingRemove = true;\n });\n this.setTokens(tokens);\n }\n \n}\n"],"mappings":"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"}